2016-09-03 11 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

Вы должны определить простой класс Oracle, содержащий объект java.util.Random и использовать его nextDouble метод в методе можно назвать

boolean accept(double prob); 

Тогда вы сделаете этот объект виден как глобальный:

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 
} 

Вы должны, вероятно, один случайный объекта за такое решение, так как подпоследовательности псевдослучайных чисел могут проявлять определенные закономерности.

 Смежные вопросы

  • Нет связанных вопросов^_^