java - Drools : Setting a flag from within the drl file -
i testing conditions within drools drl file, , if of these conditions true, want set flag in calling program.
i tried doing in following manner :
--- drl file ----
//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)) isvalid=boolean.true; logger.info("valid order..." ); end
--- calling program bit ----
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 );
but when logger prints "valid order..." within drl file, calling program still prints isvalid false.
could please tell me doing wrong ?
thank :)
drools works "facts" not objects. fact object every object not fact. please think boolean.true represents.
then think following code:
when $orderstatus : orderstatus(...) modify ($orderstatus) { valid = boolean.true }
validity of orderstatus fact can mean 1 thing, boolean.true have broad meaning used fact.
Comments
Post a Comment