0

我对 WSO2 ESB 聚合器调解器有点困惑。

我需要通过 WebServices 将三个消息发送到不同的系统,但是三个系统具有不同的消息格式,所以我需要在验证 onComplete 表达式之前将每个响应转换为规范模型,我该如何实现呢?

谢谢你快速的回复!

我知道 XSLT 转换是我转换响应消息所需要的,但问题是我不知道把它放在哪里。我的理解是 onComplete 部分需要来自响应消息的 xpath 表达式,但是这三个消息具有不同的 xpath 值。

例如:

回应1:

<ns:getCustomerInfoResponse> <ns:Status> <ns1:Code>0</ns1:Code> <ns1:Desc>SUCCESS</ns1:Desc> </ns:Status> </ns:getCustomerInfoResponse>

回应 2:

<v1:findByIdResponse> <output> <StatusCode>0</StatusCode> <StatusDesc>OK</StatusDesc> </output> </v1:findByIdResponse>

我需要的是在验证 onComplete 表达式之前将两个(或三个)响应转换为独特的规范响应,例如:

<ns:response> <status> <code>0</code> <desc>SUCCESS</desc> </status> </ns:response>

谢谢。


感谢拉莎的回复。

考虑以下场景:

在银行中存在三种不同的系统:信用系统、CoreBanking 系统和 CRM 系统。

我需要做一些类似“从所有产品中获取所有余额”的操作,因此,请求是客户 ID,然后将客户 ID 发送到 CRM 以获取所有客户产品。根据产品(信用卡或储蓄账户)的不同,它需要将客户 ID 发送到 Credit System 或 CoreBanking。最后,每个系统都会响应,而 ESB 需要同时响应这两个余额。

希望你能帮助我解决这个用例!

问候。

4

4 回答 4

1

我认为在这里使用聚合调解器是不正确的,因为您从服务端点接收到不同的响应,这些响应无法使用 xpath 关联。聚合中介,可与克隆/迭代中介一起使用。克隆和迭代调解器用于将相同的请求发送到多个端点/类似场景。

我的问题;您是否向不同的端点发送相同的请求并且响应不同类型的响应?如果是这样,它看起来有点错误,你如何定义你的服务。

如果您发送不同的请求并获得不同的响应,并希望根据您从后端服务收到的响应进行聚合(或创建新的响应),它将属于服务链模式,您可以在 ESB 文档中找到. 希望这对你来说很清楚。

于 2013-05-20T17:20:34.470 回答
0

该博客还通过示例解释了您的场景...

于 2013-05-20T08:40:29.837 回答
0

如果我理解正确,您需要服务链、转换和迭代/聚合的组合。

因此,您首先将请求发送到 CRM 系统,然后它会响应不同的产品,细分为信用卡或储蓄账户。

然后,您可以使用两个迭代中介将响应拆分为两个端点的不同请求,并通过在响应序列中使用聚合或属性中介来收集响应。

现在您已经有了 Credit System 和 CoreBanking 服务的响应,您可以开始转换 (XSLT) 并将它们聚合到您的响应(余额)中。

在这里,您可以找到一个服务链示例和一些 XSLT 转换。

问候。

于 2013-05-22T05:35:17.827 回答
0

您可以使用 XSLT 中介将消息获取为统一格式。有关 XSLT 中介示例,请参阅 [1]。

[1]。http://wso2.org/project/esb/java/3.0.1/docs/mediators/xslt.html

谢谢你,达沙那。

于 2013-05-20T05:20:18.777 回答