2016-12-01 9 views
1

Droolsルールで更新された整数値を返す方法はありますか?私は私のルールに文字列を渡しています。ルールが実行されているのが見えますが、更新されたグローバル変数の値は取得できません。 ) kcontext.getKieRuntime(setGlobal( "delayInSeconds"、10);:私もこれを試してみましたDroolsルールのグローバル変数

import com.MessageType; 

global java.lang.Integer delayInSeconds; 

rule "Delay for Update" 
when 
String(this == MessageType.UPDATE.getType()) 
then 
System.out.println("Running delay rule....."); 
delayInSeconds = 10; 
update(delayInSeconds); // This gives me runtime error. If I remove it I dont get error but dont get updated value. 
end 

:ここに私のDroolsのは、ファイルをルールです。しかし運:(

私は、だから私たちはグローバルな整数を使用して値を更新得ることができますによってどのような方法があるかどうかを確認したかった。私はPOJOに設定することで、この変数を渡すことができます知っていません。お勧めしてください。

答えて

2

グローバル変数を異なる種がありますが、それらを読むことができますが、昔ながらの変数のようにそれらをほとんど使用することができますが、。(!):。

グローバル変数の任意の更新は、APIメソッドKieRuntime.setGlobal()を介して行われなければならないで

あなたルールを使用することができます

drools.setGlobal(delayInSeconds, Integer.valueOf(10)); 

更新プログラムをグローバルで使用することはできません。事実ではありません。また、ルールはグローバルの変更に反応しません。これが必要な場合は、事実を使用してください。

+0

お返事ありがとうございます。私はちょうどこれを使用しました kcontext.getKnowledgeRuntime()。setGlobal( "delay、10"); 変数に直接アクセスしていました。私はkSession.getGlobal( "遅延")を使用しなければなりませんでした。 – rishi

関連する問題