Drools drl ファイル内のいくつかの条件をテストしています。これらの条件のいずれかが true の場合、呼び出しプログラムにフラグを設定したいと考えています。
私は次の方法でこれをやってみました:
--- drl ファイル ----
//created on: 28 Aug, 2013
package flowManagers
import flowHelper.OrderRelatedQueriesFlowHelper;
import entity.Order;
import org.apache.log4j.Logger;
global Logger logger;
global Boolean isValid;
rule "isValid"
no-loop
salience -1
activation-group "AC1"
when
$o : Order( OrderRelatedQueriesFlowHelper.isValid($o))
then
isValid=Boolean.TRUE;
logger.info("Valid order..." );
end
--- プログラム ビットの呼び出し ----
Boolean isValid=Boolean.FALSE;
String[] noHappyOrderFileList={"NoHappyOrder.drl"};
StatefulKnowledgeSession ksession = createKnowledgeSession( noHappyOrderFileList );
ksession.setGlobal("logger", logger);
ksession.setGlobal( "isValid", isValid);
for( Order fo : coll )
{
ksession.insert(fo);
}
ksession.fireAllRules();
logger.info("Valid?? : " + isValid );
しかし、ロガーが drl ファイル内に "Valid order..." を出力しても、呼び出し元のプログラムは依然として isValid を false として出力します。
誰かが私が間違っていることを教えてもらえますか?
ありがとうございました :)