0

我最近开始使用 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 上的值时,我发现它为空:

-- 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;
4

1 回答 1

-1

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

CREATE FIELD OutputRoot.MRM.PARENT_NODE TYPE NameValue VALUE 'This is my TestCase';

于 2019-01-19T23:59:40.353 回答