Tibco JMS 队列请求程序”或 "JMS Queue Sender" 动态 JMS 属性映射
Tibco JMS Queue Requestor" or "JMS Queue Sender" Dinamic JMS properties mapping
我正在与 Tibco 合作 BW5.I JMS 选择器字符串如下所示:
SelectorString = "Name='Value' AND Name='Value' AND Name='Value' AND ...."
我需要在 "JMS Queue Requestor" 或 "JMS Queue Sender" 中使用此字符串作为 JMS 选择器。
解法:
为了将选择器设置为 "JMS Queue Requestor" 或 "JMS Queue Sender" 我在 "Input" 选项卡中使用 "DynamicProperties":
为了将 SelectorString 映射到 "DynamicProperties",我创建了 "Repeat-Until-True" 组,其中包含 MapData。
重复条件:
($i >= count(tib:tokenize($Start/root/SelectorString, "AND")))
我将 "name" 映射到:
tib:trim(tib:tokenize(tib:tokenize($Start/root/SelectorString, "AND")[$i], "=")[1])
我将 "value" 映射到:
substring-before(substring-after(tib:tokenize(tib:tokenize($Start/root/SelectorString, "AND")[$i], "=")[2], "'"), "'")
然后我将累积输出设置为"JMS Queue Requestor"动态属性。
请看截图:
有没有更优雅的方法来做到这一点?
看起来你对基于集合的数学没有太多经验......一个典型的"sequential programmer's approach to sets":-(
假设您有一个非分层语句(在名称值对之间仅包含 "AND"),您可以一次将“AND”翻译成单个 "special char"(如“¶”),将 for-each XML 元素与此 char 标记化的字符串一起使用,然后拆分并 trim for-each.
中的名称和值
Process with mapping
ActivityInput:
这是基于集合的方法,顺便说一下,它比迭代循环快得多(4 行简单的 XPath 代码)
我正在与 Tibco 合作 BW5.I JMS 选择器字符串如下所示:
SelectorString = "Name='Value' AND Name='Value' AND Name='Value' AND ...."
我需要在 "JMS Queue Requestor" 或 "JMS Queue Sender" 中使用此字符串作为 JMS 选择器。
解法:
为了将选择器设置为 "JMS Queue Requestor" 或 "JMS Queue Sender" 我在 "Input" 选项卡中使用 "DynamicProperties":
为了将 SelectorString 映射到 "DynamicProperties",我创建了 "Repeat-Until-True" 组,其中包含 MapData。
重复条件:
($i >= count(tib:tokenize($Start/root/SelectorString, "AND")))
我将 "name" 映射到:
tib:trim(tib:tokenize(tib:tokenize($Start/root/SelectorString, "AND")[$i], "=")[1])
我将 "value" 映射到:
substring-before(substring-after(tib:tokenize(tib:tokenize($Start/root/SelectorString, "AND")[$i], "=")[2], "'"), "'")
然后我将累积输出设置为"JMS Queue Requestor"动态属性。
请看截图:
有没有更优雅的方法来做到这一点?
看起来你对基于集合的数学没有太多经验......一个典型的"sequential programmer's approach to sets":-(
假设您有一个非分层语句(在名称值对之间仅包含 "AND"),您可以一次将“AND”翻译成单个 "special char"(如“¶”),将 for-each XML 元素与此 char 标记化的字符串一起使用,然后拆分并 trim for-each.
中的名称和值Process with mapping
ActivityInput:
这是基于集合的方法,顺便说一下,它比迭代循环快得多(4 行简单的 XPath 代码)