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@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(a)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(a)lists.jboss.org
[mailto:rules-users-bounces@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@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(a)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(a)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(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
Disclaimer:
http://www.kuleuven.be/cwis/email_disclaimer.htm