如何在DSL中为drools动态更改运算符

时间:2014-08-19 17:36:05

标签: java drools dsl

我正在流口水6.0.1最终版本,我正在编写一个DSL文件。我的问题是我希望用户在运行时选择运算符。我是否有办法在运行时更改运算符。例如,将有两个具有不同值的变量让我们说A和B.我希望条件类似于这个A {operator} B.我希望这个条件能够动态地改变。

1 个答案:

答案 0 :(得分:2)

DSL Basics section of the Drools manual描述了如何执行此操作。但是,这是一个摘要......

您还可以定义映射到运算符的多个DSL短语,例如:

[when][]is less than=<
[when][]is greater than=>
[when][]is equal to===
[when][]Given a person with=Person()
[when][]- {field:\w*} {operator} {value:\d*}={field} {operator} {value}

让你写:

Given a person with
   - age is less than 18

我在导向编辑器中为使生活更轻松而做的一些事情就是编写枚举和DSL,例如:

'InOrNotIn.options' : ['contains=in', 'not contains=not in']

[when][]Given a currency "{operator:ENUM:InOrNotIn.options}" the major currencies
              = $ccy : Currency(isoCode {operator} $majorCurrencies)