Отображение свойств Jam динамического JMS Tibco JMS Queue "или" Отправитель очереди JMS "
Я работаю с 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":
Для отображения SelectorString в "DynamicProperties" я создал группу "Repeat-Before-True" с MapData внутри.
Повторите условие:
($i >= count(tib:tokenize($Start/root/SelectorString, "AND")))
Я сопоставляю "имя" с:
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".
Пожалуйста, смотрите скриншот:
Есть ли более элегантный способ сделать это?
1 ответ
Похоже, у вас не так много опыта с математикой на основе множеств... типичный "подход последовательных программистов к множествам":-(
Предполагая, что у вас есть неиерархический оператор (содержащий ТОЛЬКО "И" между парами "имя-значение"), вы можете один раз перевести "И" в один "специальный символ" (например, "¶"), используйте элемент XML для каждого элемента с токенизированная строка это этим символом, а затем разделить и обрезать имя и значения внутри для каждого.
Это подход, основанный на множествах, который, между прочим, намного быстрее, чем цикл итерации (4 простые строки кода XPath)