控制同一包中 2 个 drools 文件的执行顺序

Control order of execution of 2 drools file in same package

我在同一个包中有 2 个 drools 文件 com.sample.order.rules orders.drl 和顺序-summary.drl。我想处理 orders.drl 中的所有订单,然后根据 order.drl 处理的结果,使用 order-summary.drl 创建订单摘要。我目前通过将 order-summary.drl 中的所有显着性设置为 -1 来控制执行顺序。是否有可能以任何其他方式解决此问题?问题是规则的数量在增加,并且按顺序向每个规则添加显着性-summary.drl 感觉不对。

可以使用属性 ruleflow-group 控制规则组的执行顺序,请参阅 docs 中的示例。一般来说,做法是:

  1. 使用 ruleflow-group 属性标记您的相关规则。
  2. 创建 BPMN 流(业务流程)
  3. 将您的每个 ruleflow-group 与业务流程任务相关联
  4. 在 jBPM 流程下触发您的规则

这允许您(可选)仅在满足上一个订单步骤中的某些条件时才触发摘要步骤。我建议查看 Drools Business Central Showcase Docker image. To set up the KIE Execution Server API to test your rules and processes iteratively, see the docker-compose set up here.

提供的 Mortgage_Process 示例

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