我对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>
感谢。
感谢Ratha的回复。
考虑以下情况:
在银行中有三种不同的系统:信用系统,CoreBanking系统和CRM系统。
我需要执行类似“从所有产品中获取所有余额”的操作,因此,请求是客户ID,然后将客户ID发送到CRM以获取所有客户产品。根据产品(信用卡或储蓄账户),它需要将客户ID发送到Credit System或CoreBanking。最后,每个系统都会响应,ESB需要对两个余额做出响应。
希望你能帮助我解决这个用例!
问候。
答案 0 :(得分:1)
我不认为在这里使用聚合中介是正确的,因为您从服务端点接收到不同的响应,这些响应无法使用xpath进行关联。 聚合中介,可与克隆/迭代中介一起使用。克隆和迭代中介用于将相同的请求发送到多个端点/类似场景。
我的问题; 您是否向不同的端点发送相同的请求,并且响应不同类型的响应?如果是这样,它看起来有点不对,你如何定义你的服务。
如果您要发送不同的请求并获得不同的响应,并希望根据您从后端服务收到的响应来聚合(或创建新的响应),它将属于服务链模式,您可以在ESB文档。 希望你清楚这一点。
答案 1 :(得分:0)
您可以使用XSLT介体将消息转换为统一格式。请参考[1]获取XSLT中介样本。
[1]。 http://wso2.org/project/esb/java/3.0.1/docs/mediators/xslt.html
谢谢你, Dharshana。
答案 2 :(得分:0)
This blog还通过示例解释了您的方案...
答案 3 :(得分:0)
如果我理解正确,您需要服务链,转换和迭代/聚合的组合。
因此,您首先将请求发送到CRM系统,然后它会回复不同的产品,再分为信用卡或储蓄账户。
然后,您可以使用两个迭代调解器将响应拆分为两个端点的不同请求,并通过在响应序列中使用聚合或属性介体来收集响应。
现在您已获得Credit System和CoreBanking服务的响应,您可以开始转换(XSLT)并将它们聚合到您的响应(余额)。
Here您可以找到服务链和一些XSLT转换的示例。
问候。