在流口水中,我们有when
和then
。如果条件满足,那么我们转到then
条件并更新状态,例如obj.setStatus("transaction success", "review required")
。
但是当when
条件不满足时,我想更新obj.setStatus("transaction Failed", "review not required")
。
在Drools中这怎么可能?
答案 0 :(得分:1)
最好的方法是将obj.status初始化为“失败”。在所有规则都被触发后,你仍然会有这个或更新后的状态显示“成功”。
如果您需要规则触发,您可以编写一条规则来捕捉未经修改的事实:
rule "catch failures"
salience -999999
when
$obj: MyFact( status == null ) // no initial value
then
modify( $obj ){ setStatus("transaction Failed", "review not required") }
end
答案 1 :(得分:0)
没有一条规则。如果我们这样做,那么我们的规则规模就会增加。
//FailureMessage :- Equipment breakdown coverage size is greater than 0
规则“CPP_ReviewLossControl” ruleflow-group“CPPReview” 锁定上活性 什么时候 $ commPolicy:CommlPolicyInfoBean(); $ STPRulesResponseBean:STPRulesResponseBean(); $ lobInfo:LOBInfoBean(“CPP”.equalsIgnoreCase(lob)&& losses.size()> = 3)来自$ commPolicy.getLobs(); 然后 System.out.println(“为AMR创建丢失历史记录任务”); 。$ STPRulesResponseBean.getResultMap()把( “CPP_ORD_LOSS_CNTRL”,真正的); 端
// FailureMessage: - 商业类别应为一般框架,窗户或窗户框架,灰泥和/或EIFS应用程序,包括砌体/干墙承包商。,屋面,外墙板/防水/填缝,任何其他外部装修工作。< / p>
规则“CPP_ReviewBusinessCategory” ruleflow-group“CPPReview” 锁定上活性 什么时候 $ STPRulesResponseBean:STPRulesResponseBean(); $ commlPolicyInfoBean:CommlPolicyInfoBean(); 来自$ commlPolicyInfoBean.getLobs()的$ lobInfo:LOBInfoBean(“CPP”.equalsIgnoreCase(lob)); AccountInfoBean(businessCategoryCode ==“23”&amp;&amp;(primaryActivities contains(“23813”)|| primaryActivities contains(“23831”)|| primaryActivities包含“23816”))来自$ commlPolicyInfoBean.getAccountInfo() 然后 System.out.println(“创建业务类别”); 。$ STPRulesResponseBean.getResultMap()把( “CPP_REV_SPL_RISK”,真正的); 端
还有setFocus。