Tibco JMS队列请求者"或者" JMS队列发件人" Dinamic JMS属性映射

时间:2018-04-24 18:16:16

标签: tibco tibco-business-works

我正在使用Tibco BW5。我有JMS选择器字符串,如下所示:

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

我需要在" JMS队列请求者"中使用此字符串。或者" JMS队列发件人"作为JMS选择器。

解决方案:

用于将选择器设置为" JMS队列请求者"或者" JMS队列发件人"我正在使用" DynamicProperties" in"输入"标签:

dynamic selectors

将SelectorString映射到" DynamicProperties"我创造了#34; Repeat-Until-True"内部有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队列请求者"动态属性。

请看截图:

Please see attached screenshot

有更优雅的方法吗?

1 个答案:

答案 0 :(得分:1)

您似乎对基于集合的数学没有太多的经验……一种典型的“顺序程序员的集合方法”:-(

假设您有一个非分层语句(名称值对之间仅包含“ AND”),则可以一次将“ AND”转换为单个“特殊字符”(如“¶”),使用for-each通过此char将带有标记化字符串的XML元素,然后在for-each内部拆分和修剪名称和值。

Process with mapping

ActivityInput

那是基于集合的方法,btw比迭代循环(XPath代码的4行简单代码)要快得多