我有5个规则组,每个规则组中有多个规则 .
rule "R1"
dialect "mvel"
ruleflow-group 'RG1'
lock-on-active true
rule "R2"
dialect "mvel"
ruleflow-group 'RG1'
lock-on-active true
rule "R3"
dialect "mvel"
ruleflow-group 'RG1'
lock-on-active true
rule "AR4"
dialect "mvel"
ruleflow-group 'ARG2'
lock-on-active true
rule "AR5"
dialect "mvel"
ruleflow-group 'ARG2'
lock-on-active true
我在kiesession中插入了多个相同类型的事实 . 其中20个 .
我在会话中运行fireallrules并正确评估所有事实 .
但是现在有一个新的要求,如果R1激发,那么我们必须跳过规则组RG1以获得该事实,然后转向ARG2规则 .
我尝试将激活组'ACTRG1'添加到规则流组'RG1'和激活组'ACTRG2'中的所有规则到规则流组'ARG2'中的所有规则,并且它没有触发任何规则 .
我正在使用DROOLS 6.0.0.Final .
任何帮助表示赞赏 . 如果您需要更多细节,我将很乐意为您提供 .
还有一件事是,如果我一次将一个事实插入kiesession,那么我可以使用drools.getWorkingMemory() . clearRuleFlowGroup("");它工作正常 .
但是如果我使用多个事实,那么它将停止处理会话中所有事实的规则流组 .
1 回答
除了纠缠于彼此争斗的各种规则属性之外,删除锁定活动并且不添加激活组,但考虑条件以使基本LHS逻辑执行要求所说的 .
如果您能够准确地说明要求,我们可以帮助您确定细节 . 您需要的是分别将R1与R2和R3分开的补充条件,以及满足使您添加锁定活动的要求的逻辑 .