Environment 树拥有它自己的相关名 Environment,您必须在引用或设置此树内容的所有 ESQL 语句中使用此相关名。
当为输入消息创建逻辑树时总是创建 Environment 树。但消息流既不会填充它也不使用它的内容。您可以出于您自己的目的使用此树,例如从一个节点传递信息到另一个。您可以使用整个树作为暂存器或工作区。
在 Environment 中创建您自己的数据的好处是此数据作为逻辑树的一部分被传播到消息流中的后继节点。如果您在 Compute 节点中创建新的输出消息,则也将 Environment 树从输入消息复制到新的输出消息。(这与 LocalEnvironment 树形成对比,后者只在明确请求时才会包含在输出消息中)。
在消息流持续时间中仅一个 Environment 树存在。您在一个节点中所在的任何数据更新或增补都将被保留,消息流中的所有节点都具有对此树最新副本的访问权。即使消息通过消息流流回(例如,当抛出异常或通过 FLowOrder 节点的第二个终端处理该消息时),也会保留最新状态。
这与 LocalEnvironment 树形成对比,如果消息通过消息流流回,该树将还原为它先前的状态。
SET Environment.Variables = ROW('granary' AS bread, 'reisling' AS wine, 'stilton' AS cheese); SET Environment.Variables.Colors[] = LIST{'yellow', 'green', 'blue', 'red', 'black'}; SET Environment.Variables.Country[] = LIST{ROW('UK' AS name, 'pound' AS currency), ROW('USA' AS name, 'dollar' AS currency)};
此信息现在对所有消息传播到的节点可用,而无论它们在消息流中的位置。
有关如何使用 Environment 存储消息流中其他节点所使用信息的另一个示例,请参阅 Airline 样本程序中的 Reservation 消息流。此消息中的 Compute 节点写信息到根据输入消息中的字段值已从数据库抽取的子树 Environment.Variables。