你能在Drools决策表中使用DSL吗?

你能在Drools决策表中使用DSL吗?,drools,Drools,我可以在Drools决策表(.xls文件)中使用域特定语言(DSL)吗 我为决策表创建了一个.dsl文件,但每当我尝试在决策表中使用“别名”时,就会出现Drools语法错误 # Simple DSL example file [keyword]avoid looping=no-loop true [when]There is a Customer=$c:Customer() [when]- with age between {low:\d*} and {high:\d*}=age &g

我可以在Drools决策表(.xls文件)中使用域特定语言(DSL)吗

我为决策表创建了一个.dsl文件,但每当我尝试在决策表中使用“别名”时,就会出现Drools语法错误

    # Simple DSL example file

[keyword]avoid looping=no-loop true
[when]There is a Customer=$c:Customer()
[when]- with age between {low:\d*} and {high:\d*}=age >= {low}, age <= {high}
[when]- who is older than {low:\d*}=age > {low}
[when]- without a Category set=category == Customer.Category.NA
[then]Set Customer Category to {category:\w*}=modify($c)\{setCategory(Customer.Category.{category})\};
这是不可能的

决策表解析器对标题中预期的内容做出了明确的假设,其中带括号的模式是一种“地标”,下面列中的值将被插入其中

没有将决策表编译的结果传递给DSL扩展器的标准过程,尽管您可以通过捕获前者的输出并将其用作DSLR文件来解决这一问题

我不认为将DSL与决策表结合有什么好处。虽然两者的目的都是让非程序员更容易编写规则,但决策表强调简单规则(由程序员编写)可以通过不同的文字日期重复,而DSL方法是作为一种语法糖提供的,用于编写大量不同的规则,而无需掌握DRL语法

Line 8:8 mismatched input 'is' in rule