IBM Integration Bus ESQL 对 OutputRoot 的引用不起作用

IBM Integration Bus ESQL Reference to OutputRoot not working

我最近开始使用 IBM Integration Bus v10.0.0.9,使用他们关于它如何工作的文档以及 ESQL 语法和提示。

根据 this they recommend using references to access message trees so as to not make so many navigations. They even show how to use reference variables here 的 OutputRoot 消息树。

知道这一点后,我一直在尝试在 ComputeNode 中执行以下操作:

-- ComputeNode MRM Writer
DECLARE refPointer REFERENCE TO OutputRoot.MRM.PARENT_NODE;
SET refPointer.CHILD_NODE = 'Some value';

理论上,这应该等同于:

SET OutputRoot.MRM.PARENT_NODE.CHILD_NODE = 'Some value';

但是,当我尝试在下一个 ComputeNode 上获取该值时,我发现它为空:

-- ComputeNode MRM Reader
DECLARE someValue CHARACTER InputRoot.MRM.PARENT_NODE.CHILD_NODE;

我尝试使用 CREATE LASTCHILD OF OutputRoot.MRM DOMAIN 'MRM' NAME 'PARENT_NODE'; 然后尝试引用,但仍然给出空值。而且我知道问题出在我使用存在值的完整路径时使用引用。我还知道引用确实有效,因为我正在使用引用变量从 InputRoot 消息树中获取值。

我该怎么做才能使参考有效?还是不能将它们用于某些域?如果可以,哪些是?

编辑

我注意到这个问题很普遍,即使使用常规 OutputRoot.XMLNSC 引用也会出现。所以问题不在于 MRM 域,而在于引用本身。 我还注意到,如果我将环境变量设置为引用,然后将 OutputRoot.MRM 设置为环境变量的值,它似乎可以解决问题,但这样做是多余的,并且由于某种原因有时会失败。

-- Redundant workaround:
SET Environment.Variables.Output = refPointer;
SET OutputRoot.MRM.PARENT_NODE = Environment.Variables.Output;
SET Environment.Variables.Output = NULL;

您需要在分配之前创建一个 child 属性:

创建字段OutputRoot.MRM.PARENT_NODE 类型名称值值'This is my TestCase';