我有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(“{agenda}”);它工作正常 但是如果我使用多个事实,那么它会停止处理会话中所有事实的规则流组。
答案 0 :(得分:1)
不要纠结于各种规则属性之间相互争斗,删除锁定活动而不添加激活组,但要考虑使基本LHS逻辑符合要求所说的条件。
如果您能够准确说明要求,我们可以帮助您确定详细信息。您需要的是分别将R1与R2和R3分开的补充条件,以及满足使您添加锁定活动的要求的逻辑。