[rules-users] Constaint evaluation

Malenfant, Andre andre.malenfant at cgi.com
Wed Jun 10 16:02:10 EDT 2009


Yes, it does answer my question. Thanks!

-----Original Message-----
From: Kris Verlaenen [mailto:Kris.Verlaenen at cs.kuleuven.be] 
Sent: Wednesday, June 10, 2009 3:54 PM
To: Malenfant, Andre
Cc: Rules Users List
Subject: RE: [rules-users] Constaint evaluation

Globals are mostly used to register a reference to some element so that
it can easily be references from inside rules.  For example, you could
register an element where you add results to in rule consequence, you
can add a reference to an external data service where data can be
retrieved, etc.

Globals are however considered immutable (for performance reasons, so we
do not need to re-evaluate rules that use a global constantly).  If you
have data that your rule conditions reason on and that cannot be
considered immutable, you should insert it as a fact in the session, as
that is just how the algorithm works, it expects data that it needs to
reason on and that is mutable to be in the working memory.

Hope this kinda answers your question.

Kris

Quoting "Malenfant, Andre" <andre.malenfant at cgi.com>:

> Thanks Kris,
> 
> I will try with code constraints.
> 
> But on the globals subject, I read in the documentation that one
> should not use a global in a rule. I have trouble understanding why.
> I don't think drools clones the global object (might not be possible
> anyway). If my rule consequences change the state of a global (this
> usage is considered valid as per the documentation as well) then what
> is the harm of using it in a condition? I could understand with
> immutable objects like String but...
> 
> I can change my code to insert that global in the working memory but
> I would like to understand why I should do so...
> And if I do and the state of that object is changed by a consequence
> of my rules, I have to call update? For the same reason? I guess I am
> trying to understand the underlying mechanism.
> 
> Thanks
> 
> 
> -----Original Message-----
> From: Kris Verlaenen [mailto:Kris.Verlaenen at cs.kuleuven.be] 
> Sent: Wednesday, June 10, 2009 11:38 AM
> To: Rules Users List; Malenfant, Andre
> Cc: Rules Users List
> Subject: Re: [rules-users] Constaint evaluation
> 
> It depends on what type of constraint you are using.
> 
> If you are using a rule constraint, that constraint will be
> evaluated
> just the same as normal rules.  This means that the constraints are
> evaluated when data is inserted / updated / removed.  Note that, if
> you
> want to make sure the engine is using up-to-date information, you
> must
> notify the engine (using update) when you change the data in the
> working
> memory.  Also note that globals are considered immutable.  You
> should
> never write rules that depend on the state of a global and where the
> global can be changed.
> 
> If you are using code constraints, the constraint is evaluated at
> the
> point the code constraint is reached.
> 
> Kris
> 
> Quoting "Malenfant, Andre" <andre.malenfant at cgi.com>:
> 
> > I have some trouble understanding how conditions and constraints
> are
> > evaluated:
> > 
> > I have a rule flow split node with constraints on a global object.
> > The split node always takes the same path like if the constraints
> are
> > evaluated at the beginning of the execution of the process and not
> > when the process flow reaches that split node. What I would expect
> is
> > that the split node constraints takes into account the state of
> the
> > global object as modified by previous rules in the flow.
> > 
> > Am I right to think that rules conditions and split nodes
> constraints
> > are evaluated only when inserting/updating objects in the working
> > memory? The documentation is not really useful (unless I haven't
> > found the appropriate one).
> > 
> > Thanks
> > 
> > André
> > 
> > -----Original Message-----
> > From: rules-users-bounces at lists.jboss.org
> > [mailto:rules-users-bounces at lists.jboss.org] On Behalf Of
> Malenfant,
> > Andre
> > Sent: Wednesday, June 10, 2009 11:07 AM
> > To: Kris Verlaenen
> > Cc: Rules Users List
> > Subject: RE: [rules-users] Globals in ruleflow
> > 
> > Thanks for trying this for me...
> > 
> > As it turns out, while I was creating a test sample for you I
> > realized
> > that my ruleflow was not loading properly and I forgot to check
> for
> > errors on the builder. Now it works.
> > 
> > Still, the behavior is strange. If my rule doesn't load and even
> > though
> > my DRL loaded, my globals were not available. Since the DRL
> declared
> > the
> > same globals it should not have given me that error.
> > 
> > Thanks
> > 
> > -----Original Message-----
> > From: Kris Verlaenen [mailto:Kris.Verlaenen at cs.kuleuven.be] 
> > Sent: Tuesday, June 09, 2009 5:51 PM
> > To: Rules Users List; Malenfant, Andre
> > Cc: Rules Users List
> > Subject: Re: [rules-users] Globals in ruleflow
> > 
> > Andre,
> > 
> > There should be no problem in using the same global in both your
> > rules
> > and processes.
> > 
> > I have tried a simple example as you described but have not been
> able
> > to
> > reproduce the problem.  Could you send me a self-contained example
> > that
> > shows the issue?
> > 
> > Kris
> > 
> > Quoting "Malenfant, Andre" <andre.malenfant at cgi.com>:
> > 
> > > I am experimenting with rule flows and I get the following
> error:
> > > 
> > > Unexpected global [myglobal]
> > > 
> > > When calling setGlobal on the session.
> > > 
> > > This code works without the workflow (globals declared in the
> drl)
> > > but
> > > fails when I include the rule flow. I declared the same globals
> in
> > > the
> > > rule flow in the header section.
> > > 
> > > _______________________________________________
> > > rules-users mailing list
> > > rules-users at lists.jboss.org
> > > https://lists.jboss.org/mailman/listinfo/rules-users
> > > 
> > 
> > 
> > 
> > 
> > Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
> > 
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> > 
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> > 
> 
> 
> 
> 
> Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
> 
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 




Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm




More information about the rules-users mailing list