生成多条输出消息

您可以通过使用 PROPAGATE 语句在 Compute 节点中生成多条输出消息。生成的输出消息可以有相同或不同的内容。您还可以将输出消息定向到 Compute 节点四个可选输出终端中的任何一个,或定向到 Label 节点。

例如,如果要为 Compute 节点收到的输入消息创建三个副本,更新开始一个发送到 Compute 节点的标准“Out”终端、一个发送到 Compute 节点的第一个可选“Out1”终端,还有一个发送到 Label 节点“ThirdCopy”,更新结束可编写以下 ESQL 代码:

SET OutputRoot = InputRoot;
PROPAGATE;
SET OutputRoot = InputRoot;
PROPAGATE更新开始 TO TERMINAL 'out1'更新结束;
SET OutputRoot = InputRoot;
PROPAGATETO LABEL 'ThirdCopy';
在上面的示例中,在每个 PROPAGATE 语句之前重新设置了 OutputRoot 的内容,这是因为在缺省情况下,当 PROPAGATE 语句完成时,节点将清除输出消息缓冲区并收回内存。备用方法是命令节点不要清除头两个 PROPAGATE 语句上的输出消息,这样消息就可以路由至下一个目标。执行此操作的代码是:更新开始
SET OutputRoot = InputRoot;
PROPAGATE DELETE NONE;
SET OutputRoot = InputRoot;
PROPAGATE TO TERMINAL 'out1' DELETE NONE;
SET OutputRoot = InputRoot;
PROPAGATE TO LABEL 'ThirdCopy';
更新结束

如果您没有初始化输出缓冲区,则会生成一条空的消息,消息流将检测到错误并抛出异常。

同时,请确保将所有必需的消息头复制到您传播的每条输出消息的输出消息缓冲区中。

如果您要在传播每条消息之前修改输出消息内容,请在对 PROPAGATE 语句进行编码之前对适当的 ESQL 进行编码以进行您需要的更改。

如果您设置了要生成的最后一条输出消息的内容,并将它作为 Compute 节点的最终操作进行传播,您不必包含最后一条 PROPAGATE 语句。Compute 节点的缺省操作为,当它终止时将传播输出缓冲区的内容。这是通过 RETURN TRUE 语句实现的,该语句作为最后一条语句包含在模块框架中。

例如,如果您要为输入消息生成三个副本,并且不执行任何进一步的操作,则可直接在 RETURN TRUE 语句前包含以下代码:

SET OutputRoot = InputRoot;
PROPAGATE DELETE NONE;
PROPAGATE DELETE NONE;

或者,您还可以通过将 RETURN TRUE 更改为 RETURN FALSE,修改该节点的缺省行为:

SET OutputRoot = InputRoot;
PROPAGATEDELETE NONE;
PROPAGATEDELETE NONE;
PROPAGATE;
RETURN FALSE;

三条 PROPAGATE 语句将生成三条输出消息。最后一条 RETURN FALSE 语句会使节点终止,但不传播最后一条输出消息。请注意,最后一条 PROPAGATE 语句不包含 DELETE NONE 子句,因为该节点必须在此阶段释放内存。

相关概念
消息流概述
ESQL 概述
消息建模
相关任务
设计消息流
定义消息流内容
访问属性树
管理 ESQL 文件
相关参考
Compute 节点
ESQL 引用
PROPAGATE 语句
RETURN 语句
SET 语句
相关信息
Compute 节点
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ac12370_