2016-07-27 11 views
1

グローバル変数をdroolsルールファイル(mvel)に宣言したいと思います。これは、このグローバルがすべてのルールで別の関数のパラメータとして使用されるためです。関数を呼び出すたびにこの文字列を明示的に渡すことは簡単ですが、文字列が変更されると難しくなります。Drools:グローバルの宣言と割り当て方法

私は私が考えていた:

global String someStr = "some string"; 

しかし、コンパイルに、私が取得:

[11,31]: [ERR 107] Line 11:31 mismatched input '=' expecting one of the following tokens: '[package, import, global, declare, function, rule, query]'. 

ので、明らかに、私はそれをこのように割り当てることはできません。クラスを参照するためにそのクラスのクラスと文字列を宣言することもできないようです。

global String someStr; 
rule "Initialize" 
when 
then 
    someStr = "some string"; 
end 

これが動作するようだが、これはこのルールが一致一つ一つの時間を記録します(常に)ちょうど地球を割り当てるには:

は、だから、私はそうでし愚かなようで何かを発見しました。

もっと良い方法がありますか?

+0

Droolsマニュアルのセクション7.5.2、グローバルについてはどうですか?あなたの文脈で必要となるかもしれない他の細部があるかもしれないので、私はそれがドキュメントを読むことに価値があると思います。 – laune

+0

最初にマニュアルを読まずに投稿したと思いますか?いい加減にして。それをするばかげたやり方、真実として実行するルールは、マニュアルからまっすぐです! – RallyRabbit

+0

どのマニュアル、どのセクション?あなたは混乱している必要があります。 - 「これは毎回ログに記録されます」というステートメントは正しくありません。 – laune

答えて

-1

ので、 1よりも、この他を行うには、他の方法が表示されません)私の意見では(グローバルと常に真であるルールでそれを割り当てる悪いアイデアを宣言) 2)文字列を返す関数を作成し、必要なときはいつでもこれを呼び出してください。

種類が残念です。グローバルは本当に限られているようです。