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