PROPAGATE 语句将消息传播到下游节点中。
您可以在 Compute 和 Database 节点中使用 PROPAGATE 语句,但不能在 Filter 节点中使用。为此语句添加适当的内容有助于错误处理,请参阅编写 ESQL 代码以处理错误。
‘nowhere’ : no propagation ‘failure’ : Failure ‘out’ : Out ‘out1' : Out1 ‘out2' : Out2 ‘out3' : Out3 ‘out4’ : Out4
-2 : no propagation -1 : failure 0 : out 1 : out1 2 : out2 3 : out3 4 : out4
如果 TerminalExpression 的结果既不属于 CHARACTER 类型也不属于 INTEGER 类型,代理将抛出异常。
如果 TO TERMINAL 子句和 TO LABEL 子句都不存在,代理会将消息传播到“out”终端。
如果 LabelExpression 的结果是 NULL 或不属于 CHARACTER 类型,或者流中没有匹配的 Label 节点,代理将抛出异常。
如果 TO TERMINAL 子句和 TO LABEL 子句都不存在,代理会将消息传播到“out”终端。
MessageSources 子句选择要传播的消息树。该子句只适用于 Compute 节点(它在 Database 节点中不起作用)。
ENVIRONMENT : InputLocalEnvironment OutputLocalEnvironment Message : InputRoot OutputRoot ExceptionList : InputExceptionList OutputExceptionList
如果没有 MessageSources 子句,则使用节点的“compute mode”属性决定要传播的消息。
该子句只适用于 Compute 节点(它在 Database 节点中不起作用)。
如果 FINALIZE 设置为 DEFAULT,或者没有 FINALIZE 子句,则在传播输出消息(但不是 Environment、Local Environment 或 Exception List)前先对其进行最终化。
如果 FINALIZE 设置为 NONE,则不进行最终化。如果您要保留并允许通过消息流中的节点下游进行的整个输出消息树的更新,该选项则是必需的,并与
DELETE NONE 一起使用,如下一部分中所述。
DELETE 子句只适用于 Compute 节点(它在 Database 节点中不起作用)。
如果 DELETE 设置为 DEFAULT,或者没有 DELETE 子句,则在传播后立即清除所有输出本地环境、消息和异常列表并回收它们的内存。
如果 DELETE 设置为 NONE,则不清除任何内容。如果您希望下游节点能够看到输出本地环境消息的单个实例和异常列表树,则使用
DELETE NONE。每次传播都从上一次传播所创建的这些树的内容开始,而不是从空树开始。
如果您还希望这些节点更新输出树,则必须将 DELETE NONE 与上一部分中所述的 FINALIZE NONE 选项一起使用。
注意,无论传播哪些内容,输出树都会最终确定和清除。
传播是一个同步过程。即,直到下游节点中的所有消息都已处理完,才执行下一条语句。请注意,此过程可能会抛出异常,如果未捕获这些异常,它们将阻止执行 PROPAGATE 调用后面的语句。这可能就是您的流所需的逻辑,但如果不是,您可以使用处理程序来捕获异常并执行必需的操作。请注意,如果未捕获传播的下游抛出的异常,也会阻止执行 Compute 或 Database 节点的自动操作(例如,发出 COMMIT 事务集进行落实)。
DECLARE i INTEGER 1; DECLARE count INTEGER; SET count = CARDINALITY(InputRoot.XML.Invoice.Purchases."Item"[]) WHILE i <= count DO --use the default tooling-generated procedure for copying message headers CALL CopyMessageHeaders(); SET OutputRoot.XML.BookSold.Item = InputRoot.XML.Invoice.Purchases.Item[i]; PROPAGATE; SET i = i+1; END WHILE; RETURN FALSE;
下面是 PROPAGATE 语句在 OUT 终端上产生的消息:
<BookSold> <Item> <Title Category="Computer" Form="Paperback" Edition="2">The XML Companion </Title> <ISBN>0201674866</ISBN> <Author>Neil Bradley</Author> <Publisher>Addison-Wesley</Publisher> <PublishDate>October 1999</PublishDate> <UnitPrice>27.95</UnitPrice> <Quantity>2</Quantity> </Item> </BookSold>
<BookSold> <Item> <Title Category="Computer" Form="Paperback" Edition="2">A Complete Guide to DB2 Universal Database</Title> <ISBN>1558604820</ISBN> <Author>Don Chamberlin</Author> <Publisher>Morgan Kaufmann Publishers</Publisher> <PublishDate>April 1998</PublishDate> <UnitPrice>42.95</UnitPrice> <Quantity>1</Quantity> </Item> </BookSold>
<BookSold> <Item> <Title Category="Computer" Form="Hardcover" Edition="0">JAVA 2 Developers Handbook</Title> <ISBN>0782121799</ISBN> <Author>Phillip Heller, Simon Roberts </Author> <Publisher>Sybex, Inc.</Publisher> <PublishDate>September 1998</PublishDate> <UnitPrice>59.99</UnitPrice> <Quantity>1</Quantity> </Item> </BookSold>