消息流节点

消息流节点是消息流中的处理步骤。 它可以是内置节点、用户定义节点或子流节点。

消息流节点接收消息,针对此消息执行一组操作,并可以选择将原始消息、一条或多条其他消息传递到消息流中的下一个节点。

消息流节点具有固定数量的输入和输出点,即终端。 可以在终端之间建立连接来定义消息经过消息流的路径。 消息流节点显示在与消息流编辑器关联的节点选用板中。 该选用板按类别排列,这些类别将提供相关处理(例如转换)的节点分组在一起。

输入节点不具有输入终端。 从输入设备检索消息时,消息流将启动; 例如, IBM® MQ 队列。 当一个或多个输出节点未发送任何输出消息或已发送多条输出消息时,消息流将结束,并且控制会返回到输入节点。 输入节点落实或回滚事务。 输入和输出节点可以特定于协议,从而与特定系统(如 Web Service )进行交互。

大多数节点是处理节点,可以将其包含在输入和输出节点之间并连接在一起以定义控制流。 这些节点通常将消息从一种格式转换为另一种格式,或者沿特定路径路由消息,或者提供更复杂的选项(如聚集或过滤)。

您可以通过设置或更改节点的属性值来配置该节点。 一些节点具有强制属性,必须为这些属性设置值。 其他属性必须具有值,但是为其分配了可以保持不变的缺省值。 其余属性是可选属性;无需任何值。

开发消息流时,设置该流中节点的属性的方式会影响该流处理消息的方式。 例如,通过设置用于定义输入和输出 IBM MQ 队列名称的属性,可以确定消息流从何处接收消息以及从何处传递消息。

您还可以使用提升的属性来配置节点;提升一个或多个节点属性以使其成为包含这些节点的消息流的属性。 然后,可以在流级别更改这些属性,而不是必须更新一个或多个个别节点。 您还可以将来自多个节点的等效属性提升为同一消息流属性;例如,您可能会使用此方法在流级别设置消息流中的所有节点都必须连接到的数据库的名称。

部分节点属性是可配置属性;即,您可以在将消息流部署到集成节点以便执行时更改这些属性的值。 如果要将消息流部署到多个集成节点,并且希望它在各个集成节点上的行为略有不同,那么可能会发现此功能很有帮助。 例如,将消息流部署到测试集成节点时,可以设置可配置属性以强制该流与测试数据库进行交互。 将同一个消息流部署到生产集成节点时,可以将同一属性设置为生产数据库的值,而不必更新该消息流本身。

节点属性的另一个子集是操作属性;即,您可以使用策略来控制其值。 您可以使用策略来定义一种通用方法,以用于对消息流行为的特定方面以及诸如连接凭证之类的特定节点属性进行控制。 您可以在解决方案生命周期中随时创建和更新策略。 有关操作策略的更多信息,请参阅 使用策略在运行时覆盖属性

运行 IBM App Connect Enterprise方式 可能会影响您可以使用的节点类型; 请参阅 在每种操作方式下适用的限制

可以将三种类型的节点添加到消息流中:

内建节点
内置节点是由 IBM App Connect Enterprise提供的消息流节点。 内置节点提供输入和输出、操作和转换、作出决定、比较请求以及错误处理和报告功能。

有关 IBM App Connect Enterprise提供的所有内置节点的信息,请参阅 内置节点

有关可用于将 IBM App Connect Enterprise 连接到应用程序的节点的信息,请参阅 用于连接的节点

用户定义节点
用户定义节点是对集成节点的扩展,它提供了新的消息流节点,以便对产品随附的节点进行补充。 必须将用户定义节点写入 IBM App Connect Enterprise 针对 C 和 Java™ 语言提供的用户定义节点 API。
子流
子流是由消息流节点和连接器组成的定向图,并且设计为嵌套在消息流或另一个子流中。 要将子流连接到主流中的其他节点,可以将 输入输出 节点添加到子流。 您可以在两种资源类型之一(.subflow 文件或 .msgflow 文件中定义子流。 .subflow 文件中定义的子流可以部署为单个资源。 .msgflow 文件中定义的子流必须与嵌入该子流的主流一起部署。

消息由 输入 节点接收,并根据子流的定义进行处理。 该定义可能包括通过 数据库 节点进行存储,或者传递到另一个消息目标,例如通过 MQOutput 节点。 如果需要,可以通过 输出 节点将消息传递回主流以进行进一步处理。

当子流嵌入在主流中时,它由有一个唯一的图标的子流节点表示。 将显示该图标,其中包含表示子流定义中包含的 输入输出 节点的正确终端数。

子流最常见的用法是提供在消息流中的许多地方所需的处理,或者在多个消息流之间共享该子流。 例如,您可以在子流中编码一些错误处理,或创建子流来提供审计跟踪(存储整条消息并写跟踪条目)。

有关更多信息,请参阅 子流

节点并不总是为每个输出终端产生输出消息:它常常根据收到的消息或节点操作的结果为单个终端产生一个输出。 例如, 过滤器 节点通常在 True 终端或 False 终端上发送消息,但不能同时在这两个终端上发送消息。

如果已将多个终端连接到另一个节点,那么该节点中的处理会确定消息传播到与其连接的节点的顺序;您无法更改此顺序。 节点在每个终端上发送输出消息,但仅在当前终端的处理完成后才会在下一个终端上进行发送。

对消息的更新永远不会传播到先前已执行的节点上,而只会传播到其中已进行更新的节点后面的节点上。 将消息传播到不同输出终端的顺序由集成节点确定;您无法更改此顺序。 此规则的唯一例外是 FlowOrder 节点,在此节点中,终端指示将消息传播到每个节点的顺序。

所有内置节点在其处理过程中都包含错误处理。 如果在节点中检测到错误,那么消息将传播到 Failure 终端。 之后发生的情况取决于消息流的结构。 您只能使用集成节点提供的基本错误处理功能,或者通过添加错误处理节点和流对您的流进行增强,以提供更全面的故障处理功能。 有关这些选项的更多信息,请参阅 处理消息流中的错误

仅当所有通过消息流的路径(即,来自所有输出终端的所有已连接节点)都已完成,并且控制权已返回到用于落实或回滚事务的输入节点时,消息流才可接受新消息进行处理。