使用WSO2产品的价格比较引擎

时间:2012-09-06 15:47:56

标签: wso2 drools rule-engine business-rules wso2esb

我们正在将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引擎)用于此目的?

2 个答案:

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

过滤两个流入的定价值后,使用属性介体命名它们。然后,您可以再次过滤两个值以查找两者中的最小值。