我想在决策表

时间:2017-12-05 19:45:02

标签: drools

Drools 5 - 我想测试是否存在BLueReport对象和SSCData对象,如果两者都存在,则分配一些默认值。我尝试了很多条件,但没有运气。

6-------------------------------------------------------------------------------
 7| CONDITION           | CONDITION           | ACTION                          |
 8| exists BlueReport   | exists SSCData      | sscData.setORIG_LOC_CD($param); |
 9|                     |                     | Set Location Code               |
10|                     |                     | "SLR"                           |
11-------------------------------------------------------------------------------   

......我也尝试过这个:

     6-------------------------------------------------------------------------------
 7| CONDITION           | CONDITION           | ACTION                          |
 8| exists BlueReport   | exists SSCData      | sscData.setORIG_LOC_CD($param); |
 9| eval(true)          | eval(true)          | Set Location Code               |
10|                     |                     | "SLR"                           |
11-------------------------------------------------------------------------------

我有一个测试代理程序,它将Excel DT编译为DRL文件,并将其作为结果进行报告:

//generated from Decision Table
import mypackage.cost.model.*;
// rule values at A11, header at A6
rule "DIV 07"
    salience 65525
    when
    then
        sscData.setORIG_LOC_CD("SLR");
        sscData.setSERVICE_CD("SLIC");
        sscData.appendRuleAudit(drools.getRule().getName());
end

我已经到了这里,但不知道在第9行放什么: Not sure what to enter in Row9 (B9 and C9)

2 个答案:

答案 0 :(得分:0)

您需要一些绑定到变量的特定SSCData,否则您无法引用更改其字段的事实。这会修改工作记忆中的all SSCDat`:

rule x
when
  exists BlueReport()
  sscData: SSCDate()
then
    sscData.setORIG_LOC_CD("SLR");
    sscData.setSERVICE_CD("SLIC");
    sscData.appendRuleAudit(drools.getRule().getName());
end

您无法在exists之后绑定到模式,因为这对于任意正数匹配事实都会成功一次。

答案 1 :(得分:0)

以下是我为最终解决方案提出的建议: My solution: