Kris, thanks for your answer...<br><br>I've tried to access the variable in a split constraint (return count != 1;) with mvel dialect and I got this trace in runtime:<br><br><div style="margin-left: 40px;">Uncaught exception on client<br>
java.lang.RuntimeException: unable to execute ReturnValueEvaluator<br> at org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator.evaluate(ReturnValueConstraintEvaluator.java:124)<br> at org.drools.workflow.instance.node.SplitInstance.internalTrigger(SplitInstance.java:62)<br>
at org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:111)<br> at org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:141)<br> at org.drools.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:128)<br>
at org.drools.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerCompleted(ExtendedNodeInstanceImpl.java:37)<br> at org.drools.workflow.instance.node.EventBasedNodeInstance.triggerCompleted(EventBasedNodeInstance.java:96)<br>
at org.drools.workflow.instance.node.EventBasedNodeInstance.triggerCompleted(EventBasedNodeInstance.java:77)<br> at org.drools.workflow.instance.node.WorkItemNodeInstance.triggerCompleted(WorkItemNodeInstance.java:192)<br>
at org.drools.workflow.instance.node.HumanTaskNodeInstance.triggerCompleted(HumanTaskNodeInstance.java:74)<br> at org.drools.workflow.instance.node.WorkItemNodeInstance.workItemCompleted(WorkItemNodeInstance.java:246)<br>
at org.drools.workflow.instance.node.WorkItemNodeInstance.signalEvent(WorkItemNodeInstance.java:222)<br> at org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:258)<br>
at org.drools.process.instance.impl.DefaultWorkItemManager.completeWorkItem(DefaultWorkItemManager.java:96)<br> at org.drools.process.workitem.wsht.WSHumanTaskHandler$GetCompletedTaskResponseHandler.execute(WSHumanTaskHandler.java:282)<br>
at org.drools.task.service.TaskClientHandler.messageReceived(TaskClientHandler.java:67)<br> at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:752)<br> at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:414)<br>
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:49)<br> at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:832)<br>
at org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:379)<br> at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:173)<br>
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:414)<br> at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:49)<br>
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:832)<br> at org.apache.mina.core.filterchain.DefaultIoFilterChain$HeadFilter.messageReceived(DefaultIoFilterChain.java:616)<br>
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:414)<br> at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:408)<br>
at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:578)<br> at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:540)<br> at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:532)<br>
at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:58)<br> at org.apache.mina.core.polling.AbstractPollingIoProcessor$Worker.run(AbstractPollingIoProcessor.java:857)<br>
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)<br> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)<br> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)<br>
at java.lang.Thread.run(Thread.java:619)<br>Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String<br> at org.mvel2.math.MathProcessor.getInternalNumberFromType(MathProcessor.java:555)<br>
at org.mvel2.math.MathProcessor._doOperations(MathProcessor.java:155)<br> at org.mvel2.math.MathProcessor.doOperations(MathProcessor.java:79)<br> at org.mvel2.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:102)<br>
at org.mvel2.compiler.ExecutableAccessor.getValue(ExecutableAccessor.java:37)<br> at org.mvel2.ast.ReturnNode.getReducedValueAccelerated(ReturnNode.java:45)<br> at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)<br>
at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:107)<br> at org.mvel2.MVEL.executeExpression(MVEL.java:978)<br> at org.drools.base.mvel.MVELReturnValueEvaluator.evaluate(MVELReturnValueEvaluator.java:110)<br>
at org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator.evaluate(ReturnValueConstraintEvaluator.java:121)<br> ... 36 more<br></div><br clear="all">With Java dialect I got a problem when I add the rule flow to the KnowledgeBuilderFactory:<br>
<br><div style="margin-left: 40px;">java.lang.RuntimeException: Process Compilation error : org.drools.lang.descr.ProcessDescr@69695f<br> com/sample/Process_com_sample_0.java (9:387) : Incompatible operand types String and int<br>
<br> at com.sample.ProcessTest.readKnowledgeBase(ProcessTest.java:81)<br> at com.sample.ProcessTest.main(ProcessTest.java:30)<br><br></div><br>Using action node, I could get the variable process with mvel dialect in action just calling:<br>
<br><div style="margin-left: 40px;">System.out.println("The counting is: " + count);<br><br></div>If I use Java dialect with the same System.out, I got this problem after add the rule flow to the KnowledgeBuilderFactory:<br>
<br><div style="margin-left: 40px;">java.lang.RuntimeException: unable to execute Action<br> at org.drools.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:56)<br> at org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:111)<br>
at org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:141)<br> at org.drools.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:128)<br> at org.drools.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)<br>
at org.drools.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)<br> at org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:111)<br> at org.drools.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:16)<br>
at org.drools.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:185)<br> at org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:230)<br> at org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1639)<br>
at org.drools.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:272)<br> at com.sample.ProcessTest.main(ProcessTest.java:42)<br>Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String<br>
at com.sample.Process_com_sample_0Action0Invoker.execute(Process_com_sample_0Action0Invoker.java:18)<br> at org.drools.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:54)<br> ... 12 more<br>
<br></div><br>In this scenario, my doubts are:<br><div style="margin-left: 40px;">- It's necessary any configuration for the access in action/split nodes to process variables?<br>- How can I do that?<br><br></div><br>
Thanks in advance.<br><br>-- <br>Renato Herebia<br>