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