Контроль порядка выполнения файла 2 drools в одном пакете - PullRequest
0 голосов
/ 09 октября 2019

У меня есть 2 файла drools в одном пакете com.sample.order.rules orders.drl и order-summary.drl. Я хочу обработать все заказы в orders.drl, а затем по результатам обработки order.drl создать сводку заказов с помощью order-summary.drl. В настоящее время я контролирую порядок выполнения, установив все отличия в order-summary.drl в -1. Можно ли решить эту проблему другим способом? Проблема заключается в том, что количество правил увеличивается, и добавление значимости к каждому правилу в order-summary.drl просто кажется неправильным.

1 Ответ

0 голосов
/ 13 октября 2019

Можно управлять порядком выполнения групп правил с помощью атрибута ruleflow-group, см. Примеры из документов . В общем, подход такой:

  1. Пометьте связанные правила с атрибутом ruleflow-group.
  2. Создайте поток BPMN (бизнес-процесс)
  3. Свяжите каждыйиз ваших ruleflow-group s с задачей бизнес-процесса
  4. Запуск ваших правил в рамках процесса jBPM

Это позволяет (необязательно) запускать этапы сводки только в том случае, если впредыдущий шаг заказов был выполнен. Я бы посоветовал взглянуть на пример Mortgage_Process, предоставленный Drools Business Central Showcase Изображение Docker . Чтобы настроить API-интерфейс KIE Execution Server для итеративного тестирования ваших правил и процессов, см. Настройку docker-compose здесь .

Шаг 1

rule "order rule 1"
  ruleflow-group "orders"
when
  Order ( value > 10 )
then
  insert ( new Shipment () );
end
rule "summary rule 1"
  ruleflow-group "summary"
when
  Shipment ()
then
  // do stuff
end

Шаг 2 enter image description here

...