[rules-users] Modify a global variable with mvel dialect

Mark Proctor mproctor at codehaus.org
Tue Feb 5 03:49:36 EST 2008


same as with java:
drools.workingmemory.setGlobal( identifier, object );

Mark
Joshua Jackson wrote:
> Dear all,
>
> How do we modify a global variable with mvel dialect inside rules file
> without getting
> java.lang.UnsupportedOperationException: External Variable
> identifer='allowance' type='class java.lang.Double' is final, it
> cannot be set
>  [testng] 	at org.drools.base.mvel.DroolsMVELGlobalVariable.setValue(DroolsMVELGlobalVariable.java:37)
>    [testng] 	at
> org.drools.base.mvel.DroolsMVELFactory.createVariable(DroolsMVELFactory.java:199)
>    [testng] 	at
> org.mvel.ast.AssignmentNode.getReducedValueAccelerated(AssignmentNode.java:80)
>    [testng] 	at org.mvel.MVELRuntime.execute(MVELRuntime.java:88)
>    [testng] 	at
> org.mvel.CompiledExpression.getValue(CompiledExpression.java:108)
>    [testng] 	at org.mvel.MVEL.executeExpression(MVEL.java:230)
>    [testng] 	at
> org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:47)
>    [testng] 	at
> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:550)
>    [testng] 	at
> org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:514)
>    [testng] 	at
> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:462)
>    [testng] 	at
> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:424)
>
> This is how I did it:
> Java file:
> public void run(){
> 		Double allowance = new Double(0);
> 		workingMemory.setGlobal("allowance", allowance);
> 				
> 		workingMemory.fireAllRules();
> 	}
>
>
> Rules:
> global Double allowance
>
> dialect "mvel"
>
> rule "Has Wife"
> 	no-loop	
> 	salience 20
> 	when
> 		e: Employee()
> 		income:Income()
> 		eval( e.isWife() )
> 	then
> 		System.out.println("Has Wife");
> 		allowance = allowance + 5000;
> end
>
> This works if I use java as the dialect.
>
> Have I missed something?
>
> Thanks in advance,
>   




More information about the rules-users mailing list