在WSO2 ESB中的序列之间传递值

时间:2013-06-21 11:04:44

标签: wso2 wso2esb

我想问一下如何在WSO2 ESB中的序列之间传递值。
例如: 我有2个序列:       
“getNumber”序列,它调用一个返回数字的类。       
“printNumber”序列,它打印一个sting并具有属性“number”

所以我想调用第一个返回数字的序列,而不是我希望将该数字传递给printNumber序列。我怎样才能在这里传递价值?

感谢您的帮助:)

3 个答案:

答案 0 :(得分:4)

您可以使用Property Mediator [1]来实现上述目的。所以你需要做的是,在第一个序列中设置这个属性(比如'numberToPrint')并按照[1]中的描述在第二个序列中检索它。如果第一个序列通过类中介[2]调用该类,则可以在类本身内设置该属性(messageContext.setProperty(key, value))。

[1] http://docs.wso2.org/wiki/display/ESB460/Property+Mediator

[2] http://docs.wso2.org/wiki/display/ESB460/Class+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]将帮助您更多地满足您的要求。

[1] wso2 esb Class Mediator