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

Reply via email to