[rules-users] Initialize Global

Joshua Undesser jundesse at cdmtech.com
Wed Oct 31 16:17:31 EDT 2007


I am doing something similar and having some issues.   I am physically
calling setGlobal, but it doesn't seem to be getting set....example....

global String USER_NAME;

rule "Initialize Globals"
	salience 100
	when
		eval(USRE_NAME == null )
	then
		String name = "Josh";
		drools.getWorkingMemory().setGlobal("USER_NAME", name);
		System.out.println("Local Name : " + name);
		System.out.println("Global Name : " + USER_NAME);
end


This produces

Josh
Null

Not sure I fully follow what is happening.....I am calling setGlobal, but
the value does not appear to get set, thus the null in the last output
statement.

Also any other rule I have set up that utilizes the USER_NAME global won't
fire, ie


rule "Second Rule to Fire"

	when
		eval(USER_NAME != null)
	then
		System.out.println("Fired Second Rule);
end

This rule never fires.

Can anyone explain this?  And just to clarify, yes, USER_NAME is going to be
immutable once set.

Thanks in advance!

Joshua





Kris Verlaenen wrote:
> 
> You can create a rule that initializes your global, preferrably with a
> high 
> salience so it gets executed first:
> 
> rule "InitializeGlobal" salience 100
>   when
>   then
>     ArrayList objectList = new ArrayList();
>     objectList.add("1");
>     objectList.add("2");
>     drools.getWorkingMemory().setGlobal("objectList", objectList);
> end
> 
> Kris
> 
> ----- Original Message ----- 
> From: "drools_user" <jkraemer at cs.tufts.edu>
> To: <rules-users at lists.jboss.org>
> Sent: Wednesday, October 24, 2007 7:35 PM
> Subject: [rules-users] Initialize Global
> 
> 
>>
>> How do I initialize a global fact in the drl file?  I want use the JSR94 
>> API
>> and avoid using the Drools API inside the Java code.  I would like to 
>> access
>> the same variable every execution of a stateful session without having to
>> reinstantiate the variable after each execution?
>>
>> Basically I want to define a global like this:
>> # Define global variable
>> global List objectList ;
>>
>> # Part that does not work
>> objectList = new ArrayList() ;
>> objectList.add("1");
>> objectList.add("2");
>>
>>
>> Thanks
>> -- 
>> View this message in context: 
>> http://www.nabble.com/Initialize-Global-tf4685186.html#a13388685
>> Sent from the drools - user mailing list archive at Nabble.com.
>>
>> _______________________________________________
>> 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
> 
> 

-- 
View this message in context: http://www.nabble.com/Initialize-Global-tf4685186.html#a13517718
Sent from the drools - user mailing list archive at Nabble.com.




More information about the rules-users mailing list