Drools:使用相同的DSL定义两次使用变量会抛出重复的变量错误

时间:2015-01-22 22:11:51

标签: drools dsl rules

如果使用某些行定义DSL文件,并且其中一个使用变量,则不能在规则中使用两次,因为您将收到重复的变量错误。

避免这种情况的最佳方法是什么?理想情况下,我想避免创建DSL行的两个副本来更改变量名称。

即DSL线路:

[when][]For all qualifications of type Higher=$highers: Higher()

这不能在同一规则中使用两次,否则我们会得到一个重复的$ highers变量。

1 个答案:

答案 0 :(得分:1)

您可以像任何其他文本块一样合成绑定变量的名称:

[when][]there is a qualification of type {qualification}=
      ${qualification}: {qualification}()

但它会变得棘手,因为你也必须引用这个变量变量:

[then] print {qualification}=System.out.println( ${qualification} );

而不是直截了当的

[then] print qualification=System.out.println( $qualification );

潜在的危险是,作为“地标”的文本数量仍然存在。围绕宏变量减少,这可能导致多次匹配。