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

时间:2017-04-13 05:41:24

标签: drools

在流口水中,我们有whenthen。如果条件满足,那么我们转到then条件并更新状态,例如obj.setStatus("transaction success", "review required")

但是当when条件不满足时,我想更新obj.setStatus("transaction Failed", "review not required")

在Drools中这怎么可能?

2 个答案:

答案 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。