Отображение свойств Jam динамического JMS Tibco JMS Queue "или" Отправитель очереди JMS " - PullRequest
0 голосов
/ 24 апреля 2018

Я работаю с Tibco BW5.У меня есть строка селекторов JMS, которая выглядит следующим образом:

SelectorString = "Name='Value' AND Name='Value' AND Name='Value' AND ...." 

Мне нужно использовать эту строку в «JMS Queue Requestor» или «JMS Queue Sender» в качестве селекторов JMS.

Решение:

Для установки селекторов на «JMS Queue Requestor» или «JMS Queue Sender» Я использую «DynamicProperties» на вкладке «Input»:

dynamic selectors

Для сопоставления SelectorString с «DynamicProperties» я создал группу «Повторять до истины» с MapData внутри.

Условие повторения:

($i >= count(tib:tokenize($Start/root/SelectorString, "AND"))) 

Repeat

Я сопоставляю «имя» с:

tib:trim(tib:tokenize(tib:tokenize($Start/root/SelectorString, "AND")[$i], "=")[1])

Я сопоставляю «значение» с:

substring-before(substring-after(tib:tokenize(tib:tokenize($Start/root/SelectorString, "AND")[$i], "=")[2], "'"), "'")

Затем я установил накопленный вывод в динамические свойства "JMS Queue Requestor".

Пожалуйста, смотрите скриншот:

Please see attached screenshot

Есть ли более элегантный способ сделать это?

1 Ответ

0 голосов
/ 15 сентября 2018

Похоже, у вас мало опыта в математике на основе множеств ... типичный "последовательный подход программиста к множествам": - (

Предполагая, что у вас есть неиерархический оператор (содержащий ТОЛЬКО «И» между парами значений имени), вы можете один раз перевести «И» в один «специальный символ» (например, «¶»), использовать для каждого Элемент XML с токенизированной строкой, его этим символом, а затем разделяет и обрезает имя и значения внутри for-each.

Процесс с отображением

ActivityInput

Это подход на основе множеств, который, между прочим, намного быстрее, чем цикл итерации (4 простые строки кода XPath)

...