I have moddeled a process that has a decision node in it. In the ActionHandler for the decision node, I use execution.leaveNode("transition") to leave the node. The problem is that although my process is followed and all the currect log statements are output (for debug) I get a delegation exception.
The process seams to work, and is followed, but the delegationexception happens after the process has enede. Below is the code for my simplified decision action handler: | package uk.co.ifdsgroup.bpm.node; | | import org.apache.log4j.Logger; | import org.jbpm.graph.def.ActionHandler; | import org.jbpm.graph.exe.ExecutionContext; | | import uk.co.ifdsgroup.bpm.domain.Deal; | | public class CheckFund implements ActionHandler | { | private static final long serialVersionUID = 4860913349412363614L; | private static final Logger logger = Logger.getLogger(CheckFund.class); | | public void execute(ExecutionContext execution) | { | //Get deal | Deal deal = (Deal)execution.getVariable("Deal"); | if(deal == null) | { | logger.error("No deal set on execution."); | return; | } | | //Get fund | String fund = deal.getFund(); | | if(fund.startsWith("Euro")) | { | logger.debug("European Fund."); | execution.leaveNode("Yes"); | } | else | { | logger.debug("UK Fund."); | execution.leaveNode("No"); | } | } | } | Below is a snippet from my log, including the successfull log statements: | 16:40:58,868 [main] DEBUG GraphElement : event 'before-signal' on 'StartState(Start)' for 'Token(/)' | 16:40:58,884 [main] DEBUG GraphElement : event 'node-leave' on 'StartState(Start)' for 'Token(/)' | 16:40:58,884 [main] DEBUG GraphElement : event 'transition' on 'Transition(sale)' for 'Token(/)' | 16:40:58,884 [main] DEBUG GraphElement : event 'node-enter' on 'Decision(Amount > 10,000 Euros)' for 'Token(/)' | 16:40:58,884 [main] DEBUG GraphElement : executing action 'CheckAmount' | 16:40:58,884 [main] DEBUG CheckAmount : No money laundering check required. | 16:40:58,884 [main] DEBUG GraphElement : event 'node-leave' on 'Decision(Amount > 10,000 Euros)' for 'Token(/)' | 16:40:58,884 [main] DEBUG GraphElement : event 'transition' on 'Transition(No)' for 'Token(/)' | 16:40:58,900 [main] DEBUG GraphElement : event 'node-enter' on 'Decision(Invest in European Fund)' for 'Token(/)' | 16:40:58,900 [main] DEBUG GraphElement : executing action 'CheckFund' | 16:40:58,900 [main] DEBUG CheckFund : European Fund. | 16:40:58,915 [main] DEBUG GraphElement : event 'node-leave' on 'Decision(Invest in European Fund)' for 'Token(/)' | 16:40:58,915 [main] DEBUG GraphElement : event 'transition' on 'Transition(Yes)' for 'Token(/)' | 16:40:58,915 [main] DEBUG GraphElement : event 'node-enter' on 'Node(Deal to iFAST)' for 'Token(/)' | 16:40:58,915 [main] DEBUG GraphElement : executing action 'DealToIFast' | 16:40:58,915 [main] DEBUG DealToIFast : Deal to iFAST. | 16:40:58,915 [main] DEBUG VariableContainer : create variable 'success' in 'TokenVariableMap113a53d' with value 'true' | 16:40:58,947 [main] DEBUG GraphElement : event 'node-leave' on 'Node(Deal to iFAST)' for 'Token(/)' | 16:40:58,947 [main] DEBUG GraphElement : event 'transition' on 'Transition(check)' for 'Token(/)' | 16:40:58,947 [main] DEBUG GraphElement : event 'node-enter' on 'Decision(Deal Successfull)' for 'Token(/)' | 16:40:58,947 [main] DEBUG GraphElement : executing action 'CheckDealSuccessful' | 16:40:58,947 [main] DEBUG CheckDealSuccessful : Deal Successful. | 16:40:58,947 [main] DEBUG GraphElement : event 'node-leave' on 'Decision(Deal Successfull)' for 'Token(/)' | 16:40:58,962 [main] DEBUG GraphElement : event 'transition' on 'Transition(Yes)' for 'Token(/)' | 16:40:58,962 [main] DEBUG GraphElement : event 'node-enter' on 'Node(Issue Correspondance)' for 'Token(/)' | 16:40:58,962 [main] DEBUG GraphElement : executing action 'IssueCorrespondence' | 16:40:58,962 [main] DEBUG IssueCorrespondence : Issue Correspondence. | 16:40:58,962 [main] DEBUG GraphElement : event 'node-leave' on 'Node(Issue Correspondance)' for 'Token(/)' | 16:40:58,962 [main] DEBUG GraphElement : event 'transition' on 'Transition(success)' for 'Token(/)' | 16:40:58,978 [main] DEBUG GraphElement : event 'node-enter' on 'EndState(Success)' for 'Token(/)' | 16:40:58,978 [main] DEBUG GraphElement : event 'process-end' on 'ProcessDefinition(sale)' for 'Token(/)' | 16:40:58,978 [main] ERROR GraphElement : action threw exception: null | org.jbpm.graph.def.DelegationException | at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:349) | at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343) | at org.jbpm.graph.node.Decision.execute(Decision.java:130) | at org.jbpm.graph.def.Node.enter(Node.java:316) | at org.jbpm.graph.def.Transition.take(Transition.java:119) | at org.jbpm.graph.def.Node.leave(Node.java:382) | at org.jbpm.graph.def.Node.leave(Node.java:346) | at org.jbpm.graph.def.Node.execute(Node.java:338) | at org.jbpm.graph.def.Node.enter(Node.java:316) | at org.jbpm.graph.def.Transition.take(Transition.java:119) | at org.jbpm.graph.def.Node.leave(Node.java:382) | at org.jbpm.graph.def.Node.leave(Node.java:357) | at org.jbpm.graph.exe.ExecutionContext.leaveNode(ExecutionContext.java:128) | at uk.co.ifdsgroup.bpm.node.CheckFund.execute(CheckFund.java:30) | at org.jbpm.graph.def.Action.execute(Action.java:123) | at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:235) | at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:212) | at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:182) | at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:166) | at org.jbpm.graph.def.Node.enter(Node.java:301) | at org.jbpm.graph.def.Transition.take(Transition.java:119) | at org.jbpm.graph.def.Node.leave(Node.java:382) | at org.jbpm.graph.def.Node.leave(Node.java:357) | at org.jbpm.graph.exe.ExecutionContext.leaveNode(ExecutionContext.java:128) | at uk.co.ifdsgroup.bpm.node.CheckAmount.execute(CheckAmount.java:41) | at org.jbpm.graph.def.Action.execute(Action.java:123) | at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:235) | at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:212) | at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:182) | at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:166) | at org.jbpm.graph.def.Node.enter(Node.java:301) | at org.jbpm.graph.def.Transition.take(Transition.java:119) | at org.jbpm.graph.def.Node.leave(Node.java:382) | at org.jbpm.graph.node.StartState.leave(StartState.java:70) | at org.jbpm.graph.exe.Token.signal(Token.java:174) | at org.jbpm.graph.exe.Token.signal(Token.java:123) | at org.jbpm.graph.exe.ProcessInstance.signal(ProcessInstance.java:217) | at uk.co.ifdsgroup.bpm.test.sale.SaleTest.testProcess(SaleTest.java:36) | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) | at java.lang.reflect.Method.invoke(Method.java:585) | at junit.framework.TestCase.runTest(TestCase.java:154) | at junit.framework.TestCase.runBare(TestCase.java:127) | at junit.framework.TestResult$1.protect(TestResult.java:106) | at junit.framework.TestResult.runProtected(TestResult.java:124) | at junit.framework.TestResult.run(TestResult.java:109) | at junit.framework.TestCase.run(TestCase.java:118) | at junit.framework.TestSuite.runTest(TestSuite.java:208) | at junit.framework.TestSuite.run(TestSuite.java:203) | at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478) | at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344) | at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) | Caused by: java.lang.NullPointerException | at org.jbpm.graph.node.Decision.execute(Decision.java:116) | ... 50 more | 16:40:58,993 [main] ERROR GraphElement : action threw exception: null | org.jbpm.graph.def.DelegationException | at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:349) | at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343) | at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:248) | at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:212) | at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:182) | at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:166) | at org.jbpm.graph.def.Node.enter(Node.java:301) | at org.jbpm.graph.def.Transition.take(Transition.java:119) | at org.jbpm.graph.def.Node.leave(Node.java:382) | at org.jbpm.graph.def.Node.leave(Node.java:357) | at org.jbpm.graph.exe.ExecutionContext.leaveNode(ExecutionContext.java:128) | at uk.co.ifdsgroup.bpm.node.CheckAmount.execute(CheckAmount.java:41) | at org.jbpm.graph.def.Action.execute(Action.java:123) | at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:235) | at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:212) | at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:182) | at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:166) | at org.jbpm.graph.def.Node.enter(Node.java:301) | at org.jbpm.graph.def.Transition.take(Transition.java:119) | at org.jbpm.graph.def.Node.leave(Node.java:382) | at org.jbpm.graph.node.StartState.leave(StartState.java:70) | at org.jbpm.graph.exe.Token.signal(Token.java:174) | at org.jbpm.graph.exe.Token.signal(Token.java:123) | at org.jbpm.graph.exe.ProcessInstance.signal(ProcessInstance.java:217) | at uk.co.ifdsgroup.bpm.test.sale.SaleTest.testProcess(SaleTest.java:36) | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) | at java.lang.reflect.Method.invoke(Method.java:585) | at junit.framework.TestCase.runTest(TestCase.java:154) | at junit.framework.TestCase.runBare(TestCase.java:127) | at junit.framework.TestResult$1.protect(TestResult.java:106) | at junit.framework.TestResult.runProtected(TestResult.java:124) | at junit.framework.TestResult.run(TestResult.java:109) | at junit.framework.TestCase.run(TestCase.java:118) | at junit.framework.TestSuite.runTest(TestSuite.java:208) | at junit.framework.TestSuite.run(TestSuite.java:203) | at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478) | at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344) | at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) | Caused by: org.jbpm.graph.def.DelegationException | at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:349) | at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343) | at org.jbpm.graph.node.Decision.execute(Decision.java:130) | at org.jbpm.graph.def.Node.enter(Node.java:316) | at org.jbpm.graph.def.Transition.take(Transition.java:119) | at org.jbpm.graph.def.Node.leave(Node.java:382) | at org.jbpm.graph.def.Node.leave(Node.java:346) | at org.jbpm.graph.def.Node.execute(Node.java:338) | at org.jbpm.graph.def.Node.enter(Node.java:316) | at org.jbpm.graph.def.Transition.take(Transition.java:119) | at org.jbpm.graph.def.Node.leave(Node.java:382) | at org.jbpm.graph.def.Node.leave(Node.java:357) | at org.jbpm.graph.exe.ExecutionContext.leaveNode(ExecutionContext.java:128) | at uk.co.ifdsgroup.bpm.node.CheckFund.execute(CheckFund.java:30) | at org.jbpm.graph.def.Action.execute(Action.java:123) | at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:235) | ... 37 more | Caused by: java.lang.NullPointerException | at org.jbpm.graph.node.Decision.execute(Decision.java:116) | ... 50 more | I hope someone can help. Regards View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3955732#3955732 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3955732 Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ JBoss-user mailing list JBoss-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jboss-user