Drools 指导决策中缺少变量绑定 table

Missing varibale binding in Drools guided decision table

我正在使用 kie workbench 的 6.2 指导决策 table,但我遇到了以下情况

我只想在根据规则中的某些值检查来自 EligibilityCriteria 的促销代码时才在促销中设置促销代码。如下所示 workbench 根据决策 table

生成的代码
//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

如果未在引导决策的文本框中为促销代码指定值 table,则生成的代码不会创建变量 $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 值列表的列中没有给出任何值,则您需要另一条规则,即右侧不能包含相同的语句序列。省略 RHS 操作的选择标记,以避免生成引用 $code 的语句,并提供通过访问事实获取 PromoCode 值的替代操作:

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

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