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

Popular posts from this blog

Unable to remove the www from url on https using .htaccess -