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

时间:2017-05-16 18:56:15

标签: 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 >= {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})\};

例如,如果我在决策表中使用别名“有一个客户”,我会得到:

Line 8:8 mismatched input 'is' in rule

1 个答案:

答案 0 :(得分:1)

这是不可能的。

决策表解析器对标题中的预期做出了明确的假设,其中带有括号的模式是一种&#34;具有里程碑意义的&#34;要插入以下列中的值。

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

我没有看到将DSL与决策表结合起来的好处。虽然两者的意图是使非程序员的规则创作更容易,但决策表强调了这样一种观点,即简单的规则(由程序员编写)可以通过改变文字日期来重复,而DSL方法作为写作的语法糖提供。多种不同的规则,无需掌握DRL语法。