2017-05-16 13 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

デシジョンテーブルパーサーは、括弧付きのパターンが、下の列の値が挿入される「ランドマーク」の一種であるヘッダーで、何を期待するかについて確かな仮定をします。

デシジョンテーブルのコンパイル結果をDSLエキスパンダーに渡すための標準的な手順はありませんが、DSLエキスパートの出力をキャッチして回避して、DSLRファイルとして使用することはできます。

DSLとデシジョン・テーブルを組み合わせるメリットはありません。デシジョン・テーブルは、プログラマ以外の人のためのルールオーサリングを容易にすることを目的としていますが、DSLアプローチは文法上の砂糖として提供されるのに対し、単純なルール(プログラマによって書かれたもの) DRLの構文を習得する必要なく、さまざまなルールを変更できます。

関連する問題