[rules-users] what is the difference between process variable & global variables?

Kris Verlaenen kris.verlaenen at cs.kuleuven.be
Wed Apr 13 10:56:16 EDT 2011


The most important difference is probably the scope.  Variables are 
scoped to one process instance (so each variable of a process instance 
can have it's own value, unique to that process instance), where a 
global is scoped to the session (so shared across all process instances 
in that session).

Kris

Esteban Aliverti wrote:
> These are some of the differences between variables and globals:
>
>     * You can make inference about your globals using rules
>     * Variables are persisted as part of the process instance info.
>       Globals are not.
>     * I didn't test it in every node type, but at least in Script
>       Tasks, you can access process variables using just its name. 
>
> Best Regards,
>
> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
>
> Esteban Aliverti
> - Developer @ http://www.plugtree.com <http://www.plugtree.com>
> - Blog @ http://ilesteban.wordpress.com
>
>
> On Wed, Apr 13, 2011 at 8:39 AM, gs76pl <gstasica at pacemetrics.com 
> <mailto:gstasica at pacemetrics.com>> wrote:
>
>     hi,
>
>     this seems like a basic question i should know the answer to after
>     reading
>     some documentation but unfortunately after doing some tests with
>     onExitActions there seems to be some discrepancy between what doc
>     reads and
>     how the process/action behaves. Could anyone verify my observations:
>
>     1. while documentation in "4.4. Data" reads "...Actions can access
>     variables
>     directly, simply by using the name of the variable as a parameter
>     name" in
>     fact this is INCORRECT as at that point actions expect a global
>     object to be
>     in the session!! e.g. below code in onExitAction throws an
>     exception if
>     tracker obj hasn't been defined as a global variable and entered
>     into the
>     session (it doesn't matter that the process has tracker variable
>     defined)
>
>     tracker.addVisitedNode("dasdf");
>
>     2. the only way of accessing process variables is via context
>     object as
>     below
>
>     context.getVariable("tracker")
>
>     3. inserting/updating object in the session can be done
>     a) context.getKnowledgeRuntime().insert("myFact");
>     b) insert("myFact");
>
>     looks like there is no difference here and the second one is simple a
>     shorter version of doing the same
>
>
>
>     --
>     View this message in context:
>     http://drools.46999.n3.nabble.com/what-is-the-difference-between-process-variable-global-variables-tp2815658p2815658.html
>     Sent from the Drools: User forum mailing list archive at Nabble.com.
>     _______________________________________________
>     rules-users mailing list
>     rules-users at lists.jboss.org <mailto: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
>   




More information about the rules-users mailing list