控制同一包中 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 中的示例。一般来说,做法是:
- 使用
ruleflow-group
属性标记您的相关规则。
- 创建 BPMN 流(业务流程)
- 将您的每个
ruleflow-group
与业务流程任务相关联
- 在 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
我在同一个包中有 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 中的示例。一般来说,做法是:
- 使用
ruleflow-group
属性标记您的相关规则。 - 创建 BPMN 流(业务流程)
- 将您的每个
ruleflow-group
与业务流程任务相关联 - 在 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