Discussion:
[jboss-user] [jBPM] - JBPM 5.4 - Transaction Problems with completeWorkitem() when an EJB Exception occurs
Ed SAURUSAITIS
2013-08-02 13:28:56 UTC
Permalink
Ed SAURUSAITIS [https://community.jboss.org/people/fishing69] created the discussion

"JBPM 5.4 - Transaction Problems with completeWorkitem() when an EJB Exception occurs"

To view the discussion, visit: https://community.jboss.org/message/831165#831165

--------------------------------------------------------------
I have a scenario where WorkItem Handlers call EJBs to perform some business logic. If the EJB has an exception, I capture the exception in the Workitem Handler with a try/catch and change some value in the process variables. Most of this works except when the call the completeWorkitem is perfomed. The completeWorkitem doesn't commit the changes to the JBPM database and therefore when the process moves forward, the process variables seem to be null. I am using JTA for transaction processing. Any ideas?

*Below is the sample Workitem Handler code:*



public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
     getLogger().debug("EFIHandler - Started");
     DQREJBLocal dqrEJBLocal = null;

     Context c; 
     String ejbName = (String) workItem.getParameter("ejbName");
     getLogger().debug("EFIHandler ejbName = " + ejbName);
     StartProcessInfo processData = (StartProcessInfo) workItem.getParameter("processData");
     efiData = (EFITransactionInfo) workItem.getParameter("efiTransactionData");

     getLogger().debug("EFIHandler Data:clearanceCaseKey = [" + processData.getClearanceCaseKey() + "] Process Instance ID = [" + Long.toString(processData.getProcessInstanceId())
          + "] Process Id = [" + Long.toString(processData.getProcessInstanceId()) + "]");   
  try {
   c = new InitialContext();
   //use the context to lookup the local interface.
   dqrEJBLocal =  (DQREJBLocal) c.lookup(ejbName);
   //now you can call any method exposed in the local interface.
   dqrEJBLocal.execute(efiData.getTransactionKey(),processData);

  } catch (NamingException e) {
   processData.setErrorMessage("EFIHandler Naming Exception = " + efiData.getTransactionType());
   getLogger().error("EFIHandler Naming Exception = " + efiData.getTransactionKey());
   processData.setErrorInd("Y");
   e.printStackTrace();
     } catch (Exception e) {
   processData.setErrorMessage("EFIHandler Exception for " + ejbName + " Transaction " + efiData.getTransactionType());
   getLogger().error("EFIHandler Exception for " + ejbName + " Transaction " + efiData.getTransactionType());
   processData.setErrorInd("Y");
   e.printStackTrace();
     } finally {
     getLogger().debug("EFIHandler After Exception");
  //Set any return data from the EJB
  Map<String,Object> results = new HashMap<String, Object> ();
  results.put("processData", processData);
  results.put("efiTransactionData", efiData);
  getLogger().debug("EFIHandler before Complete");
  manager.completeWorkItem(workItem.getId(), results);
        getLogger().debug("EFIHandler - Completed"); 
     }
    }

**
*Here is the exception:*

[8/2/13 8:42:44:888 EDT] 0000002d SystemOut     O 2013-08-02 08:42:44,888   DEBUG [MessageListenerThreadPool : 0] - EFIHandler - Started
[8/2/13 8:42:44:888 EDT] 0000002d SystemOut     O 2013-08-02 08:42:44,888   DEBUG [MessageListenerThreadPool : 0] - EFIHandler ejbName = ejblocal:gov.ssa.dqr.ejbInterfaces.SendEFITransactionLocal
[8/2/13 8:42:44:888 EDT] 0000002d SystemOut     O 2013-08-02 08:42:44,888   DEBUG [MessageListenerThreadPool : 0] - EFIHandler Data:clearanceCaseKey = [caseclaim.ClearanceCaseDetailKey~ID=310] Process Instance ID = [298] Process Id = [298]
[8/2/13 8:42:44:898 EDT] 0000002d SystemOut     O 2013-08-02 08:42:44,898   DEBUG [MessageListenerThreadPool : 0] - SendEFITransaction.execute Started. Key = 56
[8/2/13 8:42:44:898 EDT] 00000085 BusinessExcep E   CNTR0020E: EJB threw an unexpected (non-declared) exception during invocation of method "execute" on bean "BeanId(dqr#dqrEJBServices.jar#SendEFITransaction, null)". Exception data: java.lang.NumberFormatException: For input string: "caseclaim.ClearanceCaseDetailKey~ID=310"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:59)
at java.lang.Integer.parseInt(Integer.java:460)
at java.lang.Integer.valueOf(Integer.java:565)
at gov.ssa.dqr.efi.SendEFITransaction.execute(SendEFITransaction.java:33)
at gov.ssa.dqr.ejbInterfaces.EJSLocal0SLSendEFITransaction_d882285a.execute(EJSLocal0SLSendEFITransaction_d882285a.java)
at gov.ssa.dqr.services.workflow.WorkItemHandlers.EFIHandlerException.executeWorkItem(EFIHandlerException.java:49)
at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.internalExecuteWorkItem(JPAWorkItemManager.java:55)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:107)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerCompleted(ExtendedNodeInstanceImpl.java:47)
at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:216)
at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:196)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.triggerCompleted(WorkItemNodeInstance.java:247)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.workItemCompleted(WorkItemNodeInstance.java:309)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.signalEvent(WorkItemNodeInstance.java:285)
at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:342)
at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.completeWorkItem(JPAWorkItemManager.java:121)
at gov.ssa.dqr.services.workflow.WorkItemHandlers.EFIHandlerException.executeWorkItem(EFIHandlerException.java:74)
at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.internalExecuteWorkItem(JPAWorkItemManager.java:55)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:107)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.node.JoinInstance.triggerCompleted(JoinInstance.java:152)
at org.jbpm.workflow.instance.node.JoinInstance.internalTrigger(JoinInstance.java:52)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.node.ActionNodeInstance.triggerCompleted(ActionNodeInstance.java:55)
at org.jbpm.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:51)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)
at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35)
at org.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:194)
at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:309)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:170)
at org.drools.common.AbstractWorkingMemory.startProcessInstance(AbstractWorkingMemory.java:1108)
at org.drools.impl.StatefulKnowledgeSessionImpl.startProcessInstance(StatefulKnowledgeSessionImpl.java:330)
at org.jbpm.workflow.instance.node.SubProcessNodeInstance.internalTrigger(SubProcessNodeInstance.java:142)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)
at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.node.CompositeNodeInstance.internalTrigger(CompositeNodeInstance.java:103)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.node.ForEachNodeInstance$ForEachSplitNodeInstance.internalTrigger(ForEachNodeInstance.java:131)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.node.CompositeNodeInstance$CompositeNodeStartInstance.triggerCompleted(CompositeNodeInstance.java:263)
at org.jbpm.workflow.instance.node.CompositeNodeInstance$CompositeNodeStartInstance.internalTrigger(CompositeNodeInstance.java:259)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.node.CompositeNodeInstance.internalTrigger(CompositeNodeInstance.java:91)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerCompleted(ExtendedNodeInstanceImpl.java:47)
at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:216)
at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:196)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.triggerCompleted(WorkItemNodeInstance.java:247)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.workItemCompleted(WorkItemNodeInstance.java:309)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.signalEvent(WorkItemNodeInstance.java:285)
at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:342)
at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.completeWorkItem(JPAWorkItemManager.java:121)
at gov.ssa.dqr.services.workflow.WorkItemHandlers.EFIListHandler.executeWorkItem(EFIListHandler.java:58)
at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.internalExecuteWorkItem(JPAWorkItemManager.java:55)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:107)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)
at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35)
at org.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:194)
at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:309)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:170)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:140)
at org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1098)
at org.drools.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:320)
at org.drools.command.runtime.process.StartProcessCommand.execute(StartProcessCommand.java:120)
at org.drools.command.runtime.process.StartProcessCommand.execute(StartProcessCommand.java:39)
at org.drools.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)
at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:373)
at org.drools.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:223)
at gov.ssa.dqr.mdb.StartProcessBean.onMessage(StartProcessBean.java:107)
at com.ibm.ejs.jms.listener.MDBWrapper$PriviledgedOnMessage.run(MDBWrapper.java:302)
at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:63)
at com.ibm.ejs.jms.listener.MDBWrapper.callOnMessage(MDBWrapper.java:271)
at com.ibm.ejs.jms.listener.MDBWrapper.onMessage(MDBWrapper.java:240)
at com.ibm.mq.jms.MQSession$FacadeMessageListener.onMessage(MQSession.java:147)
at com.ibm.msg.client.jms.internal.JmsSessionImpl.run(JmsSessionImpl.java:2846)
at com.ibm.mq.jms.MQSession.run(MQSession.java:862)
at com.ibm.ejs.jms.JMSSessionHandle.run(JMSSessionHandle.java:1055)
at com.ibm.ejs.jms.listener.ServerSession.connectionConsumerOnMessage(ServerSession.java:1082)
at com.ibm.ejs.jms.listener.ServerSession.onMessage(ServerSession.java:752)
at com.ibm.ejs.jms.listener.ServerSession.dispatch(ServerSession.java:718)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at com.ibm.ejs.jms.listener.ServerSessionDispatcher.dispatch(ServerSessionDispatcher.java:47)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:98)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:136)
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:574)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1646)
[8/2/13 8:42:45:612 EDT] 00000085 FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on D:\Programs\IBM\SDP\runtimes\base_v7\profiles\DQR\logs\ffdc\server1_3b183b18_13.08.02_08.42.44.9083946932888613500703.txt com.ibm.ejs.container.BusinessExceptionMappingStrategy.setUncheckedException 506
[8/2/13 8:42:49:888 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,878   ERROR [MessageListenerThreadPool : 0] - EFIHandler Exception for ejblocal:gov.ssa.dqr.ejbInterfaces.SendEFITransactionLocal Transaction 0023
[8/2/13 8:42:49:878 EDT] 00000085 FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on D:\Programs\IBM\SDP\runtimes\base_v7\profiles\DQR\logs\ffdc\server1_3b183b18_13.08.02_08.42.45.6121281229631215442052.txt com.ibm.ejs.container.EJSContainer.postInvoke 2326
[8/2/13 8:42:49:913 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,912   DEBUG [MessageListenerThreadPool : 0] - EFIHandler After Exception
[8/2/13 8:42:49:913 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,912   DEBUG [MessageListenerThreadPool : 0] - EFIHandler before Complete
[8/2/13 8:42:49:927 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - Looking for a JTA transaction to join
[8/2/13 8:42:49:928 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - Transaction already joined
[8/2/13 8:42:49:928 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - delaying identity-insert due to no transaction in progress
[8/2/13 8:42:49:928 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - Looking for a JTA transaction to join
[8/2/13 8:42:49:928 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - Transaction already joined
[8/2/13 8:42:49:928 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - delaying identity-insert due to no transaction in progress
[8/2/13 8:42:49:928 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - Looking for a JTA transaction to join
[8/2/13 8:42:49:928 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - Transaction already joined
[8/2/13 8:42:49:928 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - delaying identity-insert due to no transaction in progress
[8/2/13 8:42:49:928 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - Looking for a JTA transaction to join
[8/2/13 8:42:49:928 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - Transaction already joined
[8/2/13 8:42:49:928 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - delaying identity-insert due to no transaction in progress
[8/2/13 8:42:49:928 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - Looking for a JTA transaction to join
[8/2/13 8:42:49:928 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - Transaction already joined
[8/2/13 8:42:49:928 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - delaying identity-insert due to no transaction in progress
[8/2/13 8:42:49:929 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - Looking for a JTA transaction to join
[8/2/13 8:42:49:929 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - Transaction already joined
[8/2/13 8:42:49:929 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - delaying identity-insert due to no transaction in progress
[8/2/13 8:42:49:929 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,914   DEBUG [MessageListenerThreadPool : 0] - delaying identity-insert due to no transaction in progress
[8/2/13 8:42:49:930 EDT] 0000002d SystemOut     O 2013-08-02 08:42:49,915   ERROR [MessageListenerThreadPool : 0] - *Could not commit session*
org.jbpm.workflow.instance.WorkflowRuntimeException: [gov.ssa.clearance.buildsendefisubprocess:298 - Error:5] -- null
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:132)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.node.JoinInstance.triggerCompleted(JoinInstance.java:152)
at org.jbpm.workflow.instance.node.JoinInstance.internalTrigger(JoinInstance.java:52)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:287)
at org.jbpm.workflow.instance.node.SplitInstance.internalTrigger(SplitInstance.java:100)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerCompleted(ExtendedNodeInstanceImpl.java:47)
at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:216)
at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:196)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.triggerCompleted(WorkItemNodeInstance.java:247)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.workItemCompleted(WorkItemNodeInstance.java:309)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.signalEvent(WorkItemNodeInstance.java:285)
at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:342)
at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.completeWorkItem(JPAWorkItemManager.java:121)
at gov.ssa.dqr.services.workflow.WorkItemHandlers.EFIHandlerException.executeWorkItem(EFIHandlerException.java:74)
at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.internalExecuteWorkItem(JPAWorkItemManager.java:55)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:107)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerCompleted(ExtendedNodeInstanceImpl.java:47)
at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:216)
at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:196)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.triggerCompleted(WorkItemNodeInstance.java:247)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.workItemCompleted(WorkItemNodeInstance.java:309)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.signalEvent(WorkItemNodeInstance.java:285)
at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:342)
at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.completeWorkItem(JPAWorkItemManager.java:121)
at gov.ssa.dqr.services.workflow.WorkItemHandlers.EFIHandlerException.executeWorkItem(EFIHandlerException.java:74)
at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.internalExecuteWorkItem(JPAWorkItemManager.java:55)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:107)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.node.JoinInstance.triggerCompleted(JoinInstance.java:152)
at org.jbpm.workflow.instance.node.JoinInstance.internalTrigger(JoinInstance.java:52)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.node.ActionNodeInstance.triggerCompleted(ActionNodeInstance.java:55)
at org.jbpm.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:51)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)
at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35)
at org.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:194)
at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:309)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:170)
at org.drools.common.AbstractWorkingMemory.startProcessInstance(AbstractWorkingMemory.java:1108)
at org.drools.impl.StatefulKnowledgeSessionImpl.startProcessInstance(StatefulKnowledgeSessionImpl.java:330)
at org.jbpm.workflow.instance.node.SubProcessNodeInstance.internalTrigger(SubProcessNodeInstance.java:142)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)
at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.node.CompositeNodeInstance.internalTrigger(CompositeNodeInstance.java:103)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.node.ForEachNodeInstance$ForEachSplitNodeInstance.internalTrigger(ForEachNodeInstance.java:131)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.node.CompositeNodeInstance$CompositeNodeStartInstance.triggerCompleted(CompositeNodeInstance.java:263)
at org.jbpm.workflow.instance.node.CompositeNodeInstance$CompositeNodeStartInstance.internalTrigger(CompositeNodeInstance.java:259)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.node.CompositeNodeInstance.internalTrigger(CompositeNodeInstance.java:91)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerCompleted(ExtendedNodeInstanceImpl.java:47)
at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:216)
at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:196)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.triggerCompleted(WorkItemNodeInstance.java:247)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.workItemCompleted(WorkItemNodeInstance.java:309)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.signalEvent(WorkItemNodeInstance.java:285)
at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:342)
at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.completeWorkItem(JPAWorkItemManager.java:121)
at gov.ssa.dqr.services.workflow.WorkItemHandlers.EFIListHandler.executeWorkItem(EFIListHandler.java:58)
at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.internalExecuteWorkItem(JPAWorkItemManager.java:55)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:107)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)
at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at org.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35)
at org.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:194)
at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:309)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:170)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:140)
at org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1098)
at org.drools.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:320)
at org.drools.command.runtime.process.StartProcessCommand.execute(StartProcessCommand.java:120)
at org.drools.command.runtime.process.StartProcessCommand.execute(StartProcessCommand.java:39)
at org.drools.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)
at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:373)
at org.drools.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:223)
at gov.ssa.dqr.mdb.StartProcessBean.onMessage(StartProcessBean.java:107)
at com.ibm.ejs.jms.listener.MDBWrapper$PriviledgedOnMessage.run(MDBWrapper.java:302)
at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:63)
at com.ibm.ejs.jms.listener.MDBWrapper.callOnMessage(MDBWrapper.java:271)
at com.ibm.ejs.jms.listener.MDBWrapper.onMessage(MDBWrapper.java:240)
at com.ibm.mq.jms.MQSession$FacadeMessageListener.onMessage(MQSession.java:147)
at com.ibm.msg.client.jms.internal.JmsSessionImpl.run(JmsSessionImpl.java:2846)
at com.ibm.mq.jms.MQSession.run(MQSession.java:862)
at com.ibm.ejs.jms.JMSSessionHandle.run(JMSSessionHandle.java:1055)
at com.ibm.ejs.jms.listener.ServerSession.connectionConsumerOnMessage(ServerSession.java:1082)
at com.ibm.ejs.jms.listener.ServerSession.onMessage(ServerSession.java:752)
at com.ibm.ejs.jms.listener.ServerSession.dispatch(ServerSession.java:718)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at com.ibm.ejs.jms.listener.ServerSessionDispatcher.dispatch(ServerSessionDispatcher.java:47)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:98)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:136)
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:574)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1646)
Caused by: java.lang.NullPointerException
at org.jbpm.persistence.processinstance.JPAProcessInstanceManager.addProcessInstance(JPAProcessInstanceManager.java:58)
at org.jbpm.process.instance.AbstractProcessInstanceFactory.createProcessInstance(AbstractProcessInstanceFactory.java:36)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:184)
at org.jbpm.process.instance.ProcessRuntimeImpl.createProcessInstance(ProcessRuntimeImpl.java:156)
at org.drools.common.AbstractWorkingMemory.createProcessInstance(AbstractWorkingMemory.java:1104)
at org.drools.impl.StatefulKnowledgeSessionImpl.createProcessInstance(StatefulKnowledgeSessionImpl.java:326)
at org.jbpm.workflow.instance.node.SubProcessNodeInstance.internalTrigger(SubProcessNodeInstance.java:137)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
... 128 more
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/831165#831165]

Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]
Maciej Swiderski
2013-08-05 11:46:29 UTC
Permalink
Maciej Swiderski [https://community.jboss.org/people/swiderski.maciej] created the discussion

"Re: JBPM 5.4 - Transaction Problems with completeWorkitem() when an EJB Exception occurs"

To view the discussion, visit: https://community.jboss.org/message/831401#831401

--------------------------------------------------------------
the issue might be due to EJB when fails will mark transaction as rollback only and that's why jbpm data is not persisted especially if you use JTA. Double check that and maybe ensure that you EJB will not rollback transaction.

HTH
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/831401#831401]

Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]
Ed SAURUSAITIS
2013-08-08 16:53:27 UTC
Permalink
Ed SAURUSAITIS [https://community.jboss.org/people/fishing69] created the discussion

"Re: JBPM 5.4 - Transaction Problems with completeWorkitem() when an EJB Exception occurs"

To view the discussion, visit: https://community.jboss.org/message/831992#831992

--------------------------------------------------------------
The issue turned out to be that the EJB attempted to use the same transaction as used by JBPM Workitem Handler. This not the behavior I was expecting. I needed to EJB to have its own transaction. I accomplished this by starting a new transaction within the EJB. I added an annotation (@TransactionAttribute(TransactionAttributeType.++REQUIRES_NEW++)) to accomplish this. Now the Workitem handler catches the exceptions without rolling back the JBPM transaction.

Ed


--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/831992#831992]

Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]
Maciej Swiderski
2013-08-09 06:01:00 UTC
Permalink
Maciej Swiderski [https://community.jboss.org/people/swiderski.maciej] created the discussion

"Re: JBPM 5.4 - Transaction Problems with completeWorkitem() when an EJB Exception occurs"

To view the discussion, visit: https://community.jboss.org/message/832056#832056

--------------------------------------------------------------
Good to hear that you found it, could you please mark the question as answered so others can benefit from it.

Cheers
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/832056#832056]

Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]
Loading...