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

同一包中2个drools文件的执行控制顺序,drools,rules,Drools,Rules,我在同一个包com.sample.order.rules中有2个drools文件 orders.drl和order-summary.drl。我想处理orders.drl中的所有订单,然后根据order.drl处理的结果,使用order-summary.drl创建订单摘要。我目前通过将order-summary.drl中的所有saliences设置为-1来控制执行顺序。有没有其他方法可以解决这个问题?问题是规则的数量正在增加,并且在order-summary.drl中增加了每个规则的显著性。drl

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

可以使用属性
规则流组
控制规则组的执行顺序,请参见中的示例。一般来说,方法是:

  • 使用
    规则流组
    属性标记相关规则
  • 创建BPMN流(业务流程)
  • 将每个
    规则流组与业务流程任务关联
  • 在jBPM进程下触发您的规则
  • 这允许您(可选)仅在满足上一个订单步骤中的某些条件时触发摘要步骤。我建议看看Drools Business Central Showcase提供的抵押贷款流程示例。要设置KIE执行服务器API以迭代方式测试规则和流程,请参阅docker compose设置

    步骤1

    rule "order rule 1"
      ruleflow-group "orders"
    when
      Order ( value > 10 )
    then
      insert ( new Shipment () );
    end
    
    步骤2

    rule "summary rule 1"
      ruleflow-group "summary"
    when
      Shipment ()
    then
      // do stuff
    end