我们正在将WSO2 ESB用于聚合项目。我们使用来自六家供应商的SOAP获得某些产品的价格,响应格式已经在ESB中统一,每个响应包含5-10个产品。 以下是一些示例回复:
Vendor1的响应:
<Products Vendor="1stVendor">
<Product>
<Brand>Sony</Brand>
<Model>M5<Model>
<Price>800.00<Price>
<Product>
<Product>
<Brand>Dell</Brand>
<Model>B6<Model>
<Price>900.00<Price>
<Product>
<Product>
<Brand>IBM</Brand>
<Model>H9<Model>
<Price>950.00<Price>
<Product>
<Products>
Vendor2的回复:
<Products Vendor="2ndVendor">
<Product>
<Brand>Sony</Brand>
<Model>M5<Model>
<Price>720.00<Price>
<Product>
<Product>
<Brand>Dell</Brand>
<Model>B6<Model>
<Price>950.00<Price>
<Product>
<Product>
<Brand>IBM</Brand>
<Model>H9<Model>
<Price>940.00<Price>
<Product>
<Products>
现在我们需要比较每种产品的价格,找出每种产品最便宜的价格,并将最佳选择作为最终回复。
对于上面的示例,它应该如下所示:
<Products>
<Product CheapestVendor="2ndVendor">
<Brand>Sony</Brand>
<Model>M5<Model>
<Price>720.00<Price>
<Product>
<Product CheapestVendor="1stVendor">
<Brand>Dell</Brand>
<Model>B6<Model>
<Price>900.00<Price>
<Product>
<Product CheapestVendor="2ndVendor">
<Brand>IBM</Brand>
<Model>H9<Model>
<Price>940.00<Price>
<Product>
<Products>
关于以上细节:
1-实施此策略的最佳/最快策略是什么?
2-我们可以使用WSO2 BRS(业务规则服务器)作为价格比较引擎来实现这一目标吗?如果是,我们是否应将所有响应合并为一条消息并传递给BRS,否则消息必须单独发送。
3-我们是否需要WSO2 BPS(或任何BPEL引擎)用于此目的?
答案 0 :(得分:0)
最快和(对我来说)最简单的方法是让我在Esb中做到这一点。 如果你有很多复杂的业务逻辑/规则带来BRS 进入图片是有道理的。另一方面,如果你有 可能需要很长时间才能完成的工作流程等,这是BPS的用例。
答案 1 :(得分:0)
您可以使用WSO2 ESB来比较两个结果。 ESB包含多个可以帮助您的mediators。使用ESB,您可以使用过滤器介体获取流入和过滤值。
<filter source="//Product/Price" regex=".*/Price.*">
<then>
<send/>
</then>
<else>
<drop/>
</else>
</filter>
过滤两个流入的定价值后,使用属性介体命名它们。然后,您可以再次过滤两个值以查找两者中的最小值。