1

我们将 WSO2 ESB 用于聚合项目。我们正在从六个供应商处获取使用 SOAP 的某些产品的价格,响应格式已经在 ESB 中统一,每个响应包含 5-10 个产品。以下是一些示例响应:

供应商 1 的回应:

<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>


供应商 2 的回应:

<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 引擎)来实现此目的?

4

2 回答 2

0

最快和(对我来说)最简单的将是我在 Esb 中完成它。如果您有很多复杂的业务逻辑/规则,将 BRS 纳入图片是有道理的。另一方面,如果您有可能需要很长时间才能完成的工作流等,则它是 BPS 的用例。

于 2012-09-08T08:42:27.200 回答
0

You can use WSO2 ESB to compare the two results. ESB contains with several mediators that can help you. With ESB, you can get the inflow and filter values using filter mediator.

<filter source="//Product/Price" regex=".*/Price.*">
      <then>
          <send/>
      </then>
      <else>
          <drop/>
      </else>
</filter>

Once you filtered two inflow's Pricing values, name them using property mediator. Then you can filter again two values to find the smallest value of the two.

于 2014-06-15T11:41:57.313 回答