我想问一下如何在 WSO2 ESB 中的序列之间传递值。
例如:
我有 2 个序列:
“getNumber”序列调用了一个返回数字的类。
"printNumber" 序列,它打印一个字符串并具有一个属性 "number"
所以我想调用第一个返回数字的序列,而不是将那个数字传递给 printNumber 序列。我怎样才能在这里传递价值?
谢谢你的帮助 :)
您可以使用 Property Mediator [1] 来实现上述目的。所以你要做的是,在第一个序列中设置这个属性(比如说'numberToPrint')并在第二个序列中检索它,如 [1] 中所述。如果第一个序列通过类中介 [2] 调用类,您可以在类本身 ( messageContext.setProperty(key, value)
) 中设置属性。
[1] http://docs.wso2.org/wiki/display/ESB460/Property+Mediator
这是一个示例,我如何使用属性中介将值从一个序列传递到另一个序列。
我有一个像这样的 XML,它被传递到我的代理中。
<data>
<AccountID>124</AccountID>
</data>
我的属性调解器会将数据设置为我在下面定义的属性。
<property name="AccountID" expression="//data/AccountID/text()" scope="default" type="STRING" />
现在我可以访问其他序列中的属性。
<property name="******Account-ID*****" expression="$ctx:AccountID" />
这完全取决于您设置属性的范围,以便其他序列可以访问它。默认情况下,它设置在 Synapse 消息上下文中。
您可以通过 访问属性的值get-property('NAME_OF_PRO')
。例如,假设您在第一个序列中设置了一个名为“数字”的属性。现在在第二个序列中,您可以按如下方式记录属性的值。
<log level="custom">
<property name="Value_of_number" expression="get-property('number')"/>
</log>
注意:在第一个序列中,您必须将属性的范围设置为默认值 ( scope="default"
),这将使该属性在 Synapse 消息上下文中可用。
这 [1] 将帮助您更多地满足您的要求。
[1] wso2 esb 类中介