2016-09-03 7 views
1

アクション結果をランダムに決定できるルールを定義することは可能ですか?例えばDrools - ランダムアクション結果のルールを実行する能力?

rule "X" 

dialect "mvel" 

when 

    check : tRiskCheckData(riskValue <= 5 , Money <= 50000) 

then 

    %% this action is executed to accept the request 

    check.setReturnCode(0); 

しかし、ランダムに要求を受け入れることができ、ルールを定義することは可能でしょうか?

のような:

if rand < 0.5 
     check.setReturnCode(0); %%accept the request 
else 
     check.setReturnCode(1); %%refuse the request 

ありがとう!

答えて

1

あなたはjava.util.Randomのオブジェクトを含む単純なクラスのOracleを定義し、次にあなたがグローバルとしてこのオブジェクトが見えるよう

boolean accept(double prob); 

を呼ぶかもしれない方法でそのnextDoubleメソッドを使用する必要があります。

global Oracle pythia; 

設定し、それをあなたがfireAllRules呼び出す前:

kieSession.setGlobal("pythia", new Oracle()); 

と目にそれを使用します電子右側:擬似乱数のサブは、一定の規則性を示すことができるので、

if(pythia.accept(0.5)){ 
    check.setReturnCode(0); // accept the request 
} else { 
    check.setReturnCode(1); // refuse the request 
} 

あなたはおそらく、そのような決定につき1つのランダムオブジェクトを持つ必要があります。

関連する問題