基本上,我处于数十个议程组的情况,大多数议程组是彼此分开执行的,并且全部使用相同规则的不同子集。
我当前的设置只涉及很多规则的复制/粘贴:
agenda-group "agenda_group_1"
rule "Rule_A"
rule "Rule_B"
rule "Rule_C"
rule "Rule_D"
agenda-group "agenda_group_2"
rule "Rule_A"
rule "Rule_C"
rule "Rule_D"
rule "Rule_E"
...等等。
议程组的调用是通过另一个服务的列表来控制的,因此我试图在顶层将其保持不变。
我的想法是通过遵循“每个议程1-规则”模式来重复使用规则实现:
agenda-group "agenda_group_1"
rule "agenda_group_1"
when
x
then
WorkingMemory workingMemory = drools.getWorkingMemory();
workingMemory.setFocus("Rule_A");
workingMemory.setFocus("Rule_B");
workingMemory.setFocus("Rule_C");
workingMemory.setFocus("Rule_D");
end
agenda-group "agenda_group_2"
rule "agenda_group_2"
when
x
then
WorkingMemory workingMemory = drools.getWorkingMemory();
workingMemory.setFocus("Rule_A");
workingMemory.setFocus("Rule_C");
workingMemory.setFocus("Rule_D");
workingMemory.setFocus("Rule_E");
end
...并在自己的可重复使用的议程组文件中实施规则。
我想知道这种方法通常是否适合我的需求?我有很多规则(和很多重复使用),性能对我来说是重要的考虑因素。
如果有更好的方法来完成重用规则,那么如果有人可以指出相关的文档或示例,我将不会感到惊讶。
鉴于我收到了要运行的固定议程组列表,因此我的选择可能会受到限制。
谢谢