1

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

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

谢谢你的帮助 :)

4

3 回答 3

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

于 2013-06-21T12:02:51.633 回答
3

这是一个示例,我如何使用属性中介将值从一个序列传递到另一个序列。

我有一个像这样的 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 消息上下文中。

于 2013-06-21T16:05:54.507 回答
3

您可以通过 访问属性的值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 类中介

于 2013-06-22T15:12:19.150 回答