Механизм сравнения цен с использованием продуктов WSO2

Мы используем 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) для этой цели?


person centr    schedule 06.09.2012    source источник


Ответы (2)


Быстрее и (для меня) проще всего было бы мне это сделать в Esb. Если у вас много сложной бизнес-логики/правил, использование BRS имеет смысл. С другой стороны, если у вас есть рабочие процессы, выполнение которых может занять много времени и т. д., это вариант использования BPS.

person Ramith Jayasinghe    schedule 08.09.2012

Вы можете использовать WSO2 ESB для сравнения двух результатов. ESB содержит несколько посредников, которые могут вам помочь. С ESB вы можете получить значения притока и фильтрации, используя посредник фильтра.

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

После того как вы отфильтровали два значения ценообразования входящего потока, назовите их с помощью медиатора свойств. Затем вы можете снова отфильтровать два значения, чтобы найти наименьшее значение из двух.

person Marlio    schedule 15.06.2014