Well, in the second code snippet you are trying to set an unexistent variable called test2. For setting a global variable you need to define it first in the drl file. Greetings!
- CTO @ http://www.plugtree.com - MyJourney @ http://salaboy.wordpress.com - Co-Founder @ http://www.jbug.com.ar - Mauricio "Salaboy" Salatino - On Jun 22, 2010, at 4:32, Samuli Saarinen <samuli.saari...@remion.com> wrote: > Hello, > > I'm new to drools and have problems with globals or with the different > behaviour of drools depending on how the globals are specified. > > I have the following simple rule: > > global String test > > rule "Global" > when > then > System.out.println(test); > end > > If i run the rule with: > > KnowledgeBase kb = getKnowledgeBase("global.drl"); > StatelessKnowledgeSession ses = kb.newStatelessKnowledgeSession(); > ses.setGlobal("test2", "foo"); > ses.execute(""); > > I get the expected result of null printed > > but if I use commands: > > KnowledgeBase kb = getKnowledgeBase("global.drl"); > StatelessKnowledgeSession ses = kb.newStatelessKnowledgeSession(); > List<Command<?>> cmds = new ArrayList<Command<?>>(); > cmds.add(CommandFactory.newSetGlobal("test2", "bar")); > cmds.add(CommandFactory.newInsert("")); > ses.execute(CommandFactory.newBatchExecution(cmds)); > > I get java.lang.RuntimeException: Unexpected global [test2] > > Why is the behaviour different and which one is correct? > > Regards, > > Samuli > > > -- > Remion Oy Etävalvontajärjestelmät liiketoiminnan > Samuli Saarinen tehostamiseen > gsm +358 (0)50 3560075 > fax +358 (0)3 2125064 www.remion.com > _______________________________________________ > rules-users mailing list > rules-users@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/rules-users _______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users