当drools中的“when”条件失败时,如何插入或更新状态?

当drools中的“when”条件失败时,如何插入或更新状态?,drools,Drools,我们时不时地流口水。如果满足一个条件,那么我们转到then条件并更新状态,如obj.setStatustransaction success,review required 但是当条件不满足时,我想更新obj.setStatustransaction失败,不需要复查 在Drools中如何实现这一点?最好的方法是将obj.status初始化为failed。在触发所有规则后,您仍将保持此状态或显示成功的更新状态 如果需要触发规则,可以编写捕获未修改事实的规则: rule "catch failure

我们时不时地流口水。如果满足一个条件,那么我们转到then条件并更新状态,如obj.setStatustransaction success,review required

但是当条件不满足时,我想更新obj.setStatustransaction失败,不需要复查


在Drools中如何实现这一点?

最好的方法是将obj.status初始化为failed。在触发所有规则后,您仍将保持此状态或显示成功的更新状态

如果需要触发规则,可以编写捕获未修改事实的规则:

rule "catch failures"
salience -999999
when
    $obj: MyFact( status == null ) // no initial value
then
    modify( $obj ){ setStatus("transaction Failed", "review not required") }
end

没有一条规则。如果我们这样做,那么我们的规则大小将增加

//FailureMessage :- Equipment breakdown coverage size is greater than 0
规则CPP_审查损失控制 规则流组审查 锁定活动 什么时候 $commPolicy:CommlPolicyInfoBean; $STPRulesResponseBean:STPRulesResponseBean; $lobInfo:LOBInfoBeanCPP.equalsIgnoreCaselob&&Loss.size>=3来自$commPolicy.getLobs; 然后 System.out.PrintLn为AMR创建损失历史任务; $STPRulesResponseBean.getResultMap.putCPP\u ORD\u LOSS\u CNTRL,true; 结束

//故障信息:-业务类别应为一般框架、窗户或窗框、灰泥和/或EIF应用,包括砌体/干墙承包商、屋顶、外墙/防水/嵌缝、任何其他外部饰面工程

规则CPP_审查业务类别 规则流组审查 锁定活动 什么时候 $STPRulesResponseBean:STPRulesResponseBean; $commlPolicyInfoBean:commlPolicyInfoBean; $lobInfo:LOBInfoBeanCPP.equalsIgnoreCaselob来自$commlPolicyInfoBean.getLobs; AccountInfoBeanbusinessCategoryCode==23&&primaryActivities包含23813 | | | primaryActivities包含23831 | | | primaryActivities包含$commlPolicyInfoBean.getAccountInfo中的23816 然后 System.out.println创建业务类别; $STPRulesResponseBean.getResultMap.putCPP\u REV\u SPL\u RISK,true; 结束

还有一个是setFocus