2017-05-16 61 views
0

我可以在Drools決策表(.xls文件)中使用域特定語言(DSL)嗎?你可以在Drools決策表中使用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

這是不可能的。

決策表分析器對標題中的內容做出了明確的假設,其中帶括號的模式是一種「地標」,將來自下列列的值插入其中。

雖然您可以通過捕獲前者的輸出並將其用作DSLR文件來解決該問題,但沒有將決策表編譯結果傳遞給DSL擴展器的標準過程。

我沒有看到將DSL與決策表相結合的好處。儘管兩者的意圖都是爲了使非程序員的規則編寫更容易,但決策表強調了簡單的規則(由程序員編寫)可以通過改變字面日期來重複的想法,而DSL方法作爲一種語法糖來提供,用於編寫多種不同的規則,而無需掌握DRL語法。

相關問題