在Drools指导决策表中缺少varibale绑定

时间:2015-07-02 10:47:48

标签: drools

我正在使用kie workbench的6.2指导决策表,我坚持以下方案

我想仅在根据规则中的某些值检查来自EligibilityCriteria的PromoCode时才在促销中设置promocode。如下所示,由workbench从决策表生成的代码

//from row number: 1
rule "Row 1 test"
dialect "mvel"
when
    $e : EligibilityCriteria( $code : PromoCode in ( "code1", "code2" ) , $make : vehMake == "BMW" )
then
    Promotion p = new Promotion();
    p.setPromoId("123");
    p.setPromoCode($code);
    insertLogical( p );
end

如果没有为引导决策表上的文本框中的promocode指定值,则生成的不会创建变量$ code,并且由于未创建$ code,代码将失败

//from row number: 1
rule "Row 1 test"
dialect "mvel"
when
    $e : EligibilityCriteria($make : vehMake == "BMW" )
then
    Promotion p = new Promotion();
    p.setPromoId("123");
    p.setPromoCode($code);
    insertLogical( p );
end

我只是想以某种方式表明promocode的规则字段是空的还是有一些值。

1 个答案:

答案 0 :(得分:0)

如果在提供PromoCode值列表的列中没有给出值,则需要另一个规则,即右侧不能包含相同的语句序列。省略RHS操作的选择标记,以避免生成引用$code的语句,并通过访问以下事实提供获取PromoCode值的替代操作:

p.setPromoCode($e.getPromoCode());

请注意,您可以在任何情况下使用此形式的代码 - 因此您可能只需使用一个操作列。