Tengo 2 archivos drools en el mismo paquete com.sample.order.rules orders.drl y order-summary.drl. Quiero procesar todos los pedidos en orders.drl y luego, a partir de los resultados del procesamiento de order.drl, crear un resumen de pedidos usando order-summary.drl. Actualmente controlo el orden de ejecución estableciendo todas las prominencias en order-summary.drl en -1. ¿Es posible solucionar este problema de otra forma? El problema es que la cantidad de reglas está aumentando y agregar prominencia a cada regla en order-summary.drl simplemente no se siente bien.

0
BreenDeen 9 oct. 2019 a las 22:00

1 respuesta

La mejor respuesta

Es posible controlar el orden de ejecución de grupos de reglas con el atributo ruleflow-group, ver ejemplos de docs. En general, el enfoque es:

  1. Etiquete sus reglas relacionadas con un atributo ruleflow-group.
  2. Crear un flujo BPMN (un proceso empresarial)
  3. Asocie cada uno de sus ruleflow-group s con una tarea de proceso empresarial
  4. Active sus reglas bajo un proceso jBPM

Esto le permite (opcionalmente) activar sus pasos de Resumen solo cuando se hayan cumplido algunas condiciones en el paso anterior de Órdenes. Sugeriría mirar el ejemplo de Mortgage_Process proporcionado por Drools Business Central Showcase imagen de Docker < / a>. Para configurar la API de KIE Execution Server para probar sus reglas y procesos de forma iterativa, consulte la configuración de docker-compose aquí.

Paso 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

Paso 2 ingrese la descripción de la imagen aquí

0
danialk 13 oct. 2019 a las 10:41