是否可以定义可以随机确定哪些动作结果的规则?
例如:
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
谢谢!
答案 0 :(得分:1)
你应该定义一个包含java.util.Random对象的简单类Oracle,并在你可能调用的方法中使用它的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
}
每个这样的决定你应该有一个随机对象,因为伪随机数的子序列可能表现出某些规律性。