Ссылка на IBM Integration Bus ESQL для OutputRoot не работает - PullRequest
0 голосов
/ 28 декабря 2018

Я начал совсем недавно работать с 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.

Что я могу сделать, чтобы ссылка работала?Или нельзя использовать их для некоторых доменов, и если да, то для каких?

EDIT

Я заметил, что эта проблема является общей и возникает даже при обычной ссылке OutputRoot.XMLNSC.Так что проблема на самом деле не в области MRM, а в самих ссылках.Я также отметил, что если я устанавливаю среду vatriable для ссылки, а затем устанавливаю OutputRoot.MRM в значение переменной среды, то это, кажется, сработает, но это довольно избыточно, и по некоторым причинам иногда происходит сбой.

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

1 Ответ

0 голосов
/ 20 января 2019

Вам нужно создать дочернее свойство перед назначением:

CREATE FIELD OutputRoot.MRM.PARENT_NODE TYPE NameValue VALUE 'Это мой TestCase';

...