Reference 对OutputRoot的IBM集成总线ESQL引用不起作用

Reference 对OutputRoot的IBM集成总线ESQL引用不起作用,reference,ibm-integration-bus,extended-sql,Reference,Ibm Integration Bus,Extended Sql,我最近开始使用IBM Integration Bus v10.0.0.9,使用了他们关于如何使用ESQL语法和技巧的文档 根据他们的观点,他们建议使用引用来访问消息树,这样就不会进行太多的导航。它们甚至展示了如何为OutputRoot消息树使用引用变量 知道这一点,我一直在尝试在ComputeNode中执行以下操作: -- ComputeNode MRM Writer DECLARE refPointer REFERENCE TO OutputRoot.MRM.PARENT_NODE; SET

我最近开始使用IBM Integration Bus v10.0.0.9,使用了他们关于如何使用ESQL语法和技巧的文档

根据他们的观点,他们建议使用引用来访问消息树,这样就不会进行太多的导航。它们甚至展示了如何为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上获取该值时,我发现它为null:

-- ComputeNode MRM Reader
DECLARE someValue CHARACTER InputRoot.MRM.PARENT_NODE.CHILD_NODE;
我尝试使用
创建OutputRoot.MRM域'MRM'名称'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;

在指定之前,您需要创建子属性:


创建字段OutputRoot.MRM.PARENT_节点类型NameValue值“这是我的测试用例”

第一个计算节点的模式是否设置为消息?您可以花点时间了解更多的情况。您不应该使用OutputRoot.MRM。在所有当前支持的IIB版本中,DFDL域是MRM域更好(更容易)的替代方案。@DanielSteinmann模式设置为消息。正如我所说的,只有当我使用引用而不是直接调用整个树字段时,问题才会出现。@kimbert我现在无法更改正在使用的结构,因此我必须保留OutputRoot.MRM设计。我只是在尝试优化计算代码,因为它有30多行使用完整路径。您需要在赋值之前创建一个子属性:CCREATE FIELD OutputRoot.MRM.PARENT_NODE TYPE name VALUE‘这是我的测试用例’;