7 Replies Latest reply on Jul 21, 2009 11:54 AM by kukeltje

    exception in the last node of the process

      Hi guy,

      I have a small problem when I execute a jbpm process within my application.
      my process is relatively simple and consists of:

      ----| ----| ----|
       |(signal) |(signal) |(signal)
       start-state --> node1 --> node2 --> node3 --> waiting(state) --> node4 --> waiting (state) --> node5 --> node6 --> end-state
      


      node1 and node2: persists some data within my database
      node3: send a message to an external appliation through JMS and wait for the reponse (through JMS too)
      node4: persists some data in my database and send a message to an external application through JMS message and wait for the reponse (through JMS too)
      node5 and node 6: persists some data in my database


      the process instance is started in this way (see code below)
       public void startProcess(String processName, Map<String, Object> variables) throws Exception{
      
       JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
       JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
      
       try{
       ProcessInstance pInstance = null;
       pInstance = jbpmContext.newProcessInstanceForUpdate( processName );
       pInstance = jbpmContext.getProcessInstanceForUpdate( pInstance.getId() );
      
       Token token = pInstance.getRootToken();
       token.signal();
      
       }catch( JpdlException e ){
       ...
       }catch( Exception e ){
       ...
       }finally{
       jbpmContext.close();
       }
       }
      


      all nodes has at the end of the execute() method a call to the leavenode() method

       public void execute(ExecutionContext ctx) throws Exception {
       //my code here
       ctx.leaveNode();
       }
      


      when the response from the external application arrives I resume the process (see the code below) in this way

       public void resumeProcess( Long processId ) throws Exception{
       JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
       JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
      
       try{
      
       ProcessInstance pInstance = jbpmContext.getProcessInstanceForUpdate( processId );
       pInstance.signal();
      
       }catch( Exception e ){
       String msg = "Impossible to resume process. an error occured during the resuming operation. ";
       log.debug( msg, e );
       throw new Exception( msg, e );
       }finally{
       jbpmContext.close();
       }
      


      the process is running well meaning that each node is visited and the process is resumed (in both waiting state) when I received the response to my request through JMS message.

      However I get an exception (see below) when leave the last node (i.e. node6) just before the end-state of the process.

      15:33:07,827 ERROR [JmsServerSession] org.jboss.resource.adapter.jms.inflow.JmsServerSession@1a68649 failed to commit/rollback
      javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Can't commit because the transaction is in aborted state
       at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1401)
       at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:135)
       at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:87)
       at org.jboss.resource.adapter.jms.inflow.JmsServerSession$XATransactionDemarcationStrategy.end(JmsServerSession.java:494)
       at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:248)
       at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
       at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
       at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:756)
       at java.lang.Thread.run(Unknown Source)
      Caused by: org.hibernate.QueryParameterException: could not locate named parameter [processInstance]
       at org.hibernate.engine.query.ParameterMetadata.getNamedParameterDescriptor(ParameterMetadata.java:75)
       at org.hibernate.engine.query.ParameterMetadata.getNamedParameterExpectedType(ParameterMetadata.java:81)
       at org.hibernate.impl.AbstractQueryImpl.determineType(AbstractQueryImpl.java:413)
       at org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:383)
       at org.jbpm.db.JobSession$DeleteJobsSynchronization.beforeCompletion(JobSession.java:191)
       at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:114)
       at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:247)
       at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:86)
       at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)
       at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1389)
       ... 8 more
      


      If I remove the call to the leaveNode() method in the node6.
      I do not have this exception but obviously my process instance is never ended.

      I do not understand what wrong in my code.
      Could you give me a hand to understand this issue and solve it.

      many thanks

      regards

      DSE


        • 1. Re: exception in the last node of the process
          kukeltje

          Two things:
          - I would have used states and explicitly signalled each state to end instead of generically signalling the process. It works in this case, but with more complex processes and parallel executions it becomes a problem)
          -Is this the only info in the stacktrace? Try turning on debug log of jBPM and see what that produces.

          • 2. Re: exception in the last node of the process

            Thanks for replying.


            >>- I would have used states and explicitly signalled each state to end >>instead of generically signalling the process. It works in this case, but with >>more complex processes and parallel executions it becomes a problem)

            do you mean: getting the state and signal it rather getting the process instance and signalling it??

            >>-Is this the only info in the stacktrace? Try turning on debug log of jBPM >>and see what that produces.

            I do this and come back to you.

            Thanks for your help
            I do appraciate

            DSE

            • 3. Re: exception in the last node of the process

              Hi,

              this is what I get after turning on the jbpm debugging mode.

              2009-07-20 17:31:11,779 DEBUG [org.jbpm.db.JobSession] deleting timers for process instance org.jbpm.graph.exe.ProcessInstance@df9e70
              2009-07-20 17:31:11,779 WARN [com.arjuna.ats.arjuna.logging.arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator_2] TwoPhaseCoordinator.beforeCompletion - failed for com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple@30ab27
              org.hibernate.QueryParameterException: could not locate named parameter [processInstance]
               at org.hibernate.engine.query.ParameterMetadata.getNamedParameterDescriptor(ParameterMetadata.java:75)
               at org.hibernate.engine.query.ParameterMetadata.getNamedParameterExpectedType(ParameterMetadata.java:81)
               at org.hibernate.impl.AbstractQueryImpl.determineType(AbstractQueryImpl.java:413)
               at org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:383)
               at org.jbpm.db.JobSession$DeleteJobsSynchronization.beforeCompletion(JobSession.java:191)
               at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:114)
               at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:247)
               at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:86)
               at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)
               at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1389)
               at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:135)
               at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:87)
               at org.jboss.resource.adapter.jms.inflow.JmsServerSession$XATransactionDemarcationStrategy.end(JmsServerSession.java:494)
               at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:248)
               at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
               at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
               at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:756)
               at java.lang.Thread.run(Unknown Source)
              2009-07-20 17:31:11,794 WARN [org.jboss.resource.adapter.jms.inflow.dlq.AbstractDLQHandler] Message redelivered=2 max=1 sending it to the dlq org.jboss.mq.SpyObjectMessage {
              Header {
               jmsDestination : QUEUE.CardLifeCycleManagerInMsg
               jmsDeliveryMode : 2
               jmsExpiration : 0
               jmsPriority : 4
               jmsMessageID : ID:17-12481074673264
               jmsTimeStamp : 1248107467326
               jmsCorrelationID: null
               jmsReplyTo : null
               jmsType : null
               jmsRedelivered : true
               jmsProperties : {JMSXDeliveryCount=3, JMS_JBOSS_REDELIVERY_LIMIT=1, JMS_JBOSS_REDELIVERY_COUNT=2}
               jmsPropReadWrite: false
               msgReadOnly : true
               producerClientId: ID:17
              }
              }
              2009-07-20 17:31:11,794 ERROR [org.jboss.resource.adapter.jms.inflow.JmsServerSession] org.jboss.resource.adapter.jms.inflow.JmsServerSession@1ce3ae9 failed to commit/rollback
              javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Can't commit because the transaction is in aborted state
               at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1401)
               at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:135)
               at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:87)
               at org.jboss.resource.adapter.jms.inflow.JmsServerSession$XATransactionDemarcationStrategy.end(JmsServerSession.java:494)
               at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:248)
               at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
               at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
               at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:756)
               at java.lang.Thread.run(Unknown Source)
              Caused by: org.hibernate.QueryParameterException: could not locate named parameter [processInstance]
               at org.hibernate.engine.query.ParameterMetadata.getNamedParameterDescriptor(ParameterMetadata.java:75)
               at org.hibernate.engine.query.ParameterMetadata.getNamedParameterExpectedType(ParameterMetadata.java:81)
               at org.hibernate.impl.AbstractQueryImpl.determineType(AbstractQueryImpl.java:413)
               at org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:383)
               at org.jbpm.db.JobSession$DeleteJobsSynchronization.beforeCompletion(JobSession.java:191)
               at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:114)
               at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:247)
               at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:86)
               at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)
               at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1389)
               ... 8 more
              2009-07-20 17:31:48,574 DEBUG [com.arjuna.ats.arjuna.logging.arjLogger] Periodic recovery - first pass <Mon, 20 Jul 2009 17:31:48>
              2009-07-20 17:31:48,574 DEBUG [com.arjuna.ats.arjuna.logging.arjLogger] StatusModule: first pass
              2009-07-20 17:31:48,574 DEBUG [com.arjuna.ats.txoj.logging.txojLoggerI18N] [com.arjuna.ats.internal.txoj.recovery.TORecoveryModule_3] - TORecoveryModule - first pass
              2009-07-20 17:31:48,574 DEBUG [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.recovery.info.firstpass] Local XARecoveryModule - first pass
              2009-07-20 17:31:58,574 DEBUG [com.arjuna.ats.arjuna.logging.arjLogger] Periodic recovery - second pass <Mon, 20 Jul 2009 17:31:58>
              2009-07-20 17:31:58,574 DEBUG [com.arjuna.ats.arjuna.logging.arjLogger] AtomicActionRecoveryModule: Second pass
              2009-07-20 17:31:58,574 DEBUG [com.arjuna.ats.txoj.logging.txojLoggerI18N] [com.arjuna.ats.internal.txoj.recovery.TORecoveryModule_6] - TORecoveryModule - second pass
              2009-07-20 17:31:58,574 DEBUG [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.recovery.info.secondpass] Local XARecoveryModule - second pass
              


              does this help you?

              thanks

              DSE

              • 4. Re: exception in the last node of the process
                kukeltje

                Yes, signal the state (or more specifically, end it, or signal the token in that state).

                And no, the additional logging does not help. I have no clue.

                • 5. Re: exception in the last node of the process

                  Hi,

                  thanks again for answering.
                  I did change my code according to your comments. No I do signal the token and not the process instance. here you have the source code.

                  public void resumeProcess(Long processId, Map<String, Object> variables)
                   throws Exception {
                  
                   JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
                   JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
                  
                   try{
                  
                   ProcessInstance pInstance = jbpmContext.getProcessInstanceForUpdate( processId );
                   ContextInstance contextInstance = pInstance.getContextInstance();
                   if( variables != null && variables.size() > 0 ){
                   Set< Entry<String, Object> > entries = variables.entrySet();
                   for( Entry<String, Object> entry : entries ){
                   try{
                   contextInstance.createVariable( (String) entry.getKey(), entry.getValue() );
                   }catch( Exception e ){
                   continue;
                   }
                   }
                   }
                  
                   Token token = pInstance.getRootToken();
                   token.signal();
                  
                   }catch( Exception e ){
                   throw new Exception( msg, e );
                   }finally{
                   jbpmContext.close();
                   }
                  }
                  


                  this does not solve my issue I still have a exception raised (see below)

                  09:18:32,633 DEBUG [GraphElement] event 'node-leave' on 'Node(Send Email)' for 'Token(/)'
                  09:18:32,633 DEBUG [GraphElement] event 'transition' on 'Transition(7d7b09)' for 'Token(/)'
                  09:18:32,633 DEBUG [GraphElement] event 'node-enter' on 'EndState(end-state1)' for 'Token(/)'
                  09:18:32,633 DEBUG [GraphElement] event 'process-end' on 'ProcessDefinition(issueCard)' for 'Token(/)'
                  09:18:32,633 DEBUG [GraphElement] event 'after-signal' on 'State(Wait for card issue assets)' for 'Token(/)'
                  09:18:32,633 DEBUG [JbpmContext] closing jbpmContext org.jbpm.JbpmContext@da33b6
                  09:18:32,633 DEBUG [Services] executing default save operations
                  09:18:32,633 DEBUG [HibernateSaveOperation] saving process instance
                  09:18:32,633 DEBUG [SaveLogsOperation] flushing logs to logging service.
                  09:18:32,633 DEBUG [CascadeSaveOperation] cascading save of 'org.jbpm.graph.exe.ProcessInstance@1cc1c49'
                  09:18:32,633 DEBUG [Services] closing service 'persistence': org.jbpm.persistence.jta.JtaDbPersistenceService@173568d
                  09:18:32,633 DEBUG [DbPersistenceService] committing hibernate transaction org.hibernate.transaction.JTATransaction@143609c
                  09:18:32,633 DEBUG [Services] closing service 'scheduler': org.jbpm.scheduler.db.DbSchedulerService@137510f
                  09:18:32,633 DEBUG [Services] closing service 'logging': org.jbpm.logging.db.DbLoggingService@aac907
                  09:18:32,633 DEBUG [Services] closing service 'tx': org.jbpm.tx.TxService@73fe66
                  09:18:32,633 DEBUG [MessageStoreManagerBean] inside changeIncomingMessageState(Long incomingMessageId, IncomingMessageState state)
                  09:18:32,633 DEBUG [AbstractJPAHelper] inside getEntityManager()
                  09:18:32,633 DEBUG [AbstractEntityDAO] inside update (class com.ecebs.multefile.messaging.messagestoremanager.entities.XMLIncomingMessage).
                  09:18:32,633 DEBUG [AbstractJPAHelper] inside getEntityManager()
                  09:18:32,633 DEBUG [IncomingMessageReceiver] test
                  09:18:32,633 INFO [STDOUT] Hibernate:
                  
                  ....//persistence data in my database (hibernate debug) info
                  
                  09:18:32,648 DEBUG [JobSession] deleting timers for process instance org.jbpm.graph.exe.ProcessInstance@1cc1c49
                  09:18:32,648 WARN [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator_2] TwoPhaseCoordinator.beforeCompletion - failed for com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple@133eddb
                  org.hibernate.QueryParameterException: could not locate named parameter [processInstance]
                   at org.hibernate.engine.query.ParameterMetadata.getNamedParameterDescriptor(ParameterMetadata.java:75)
                   at org.hibernate.engine.query.ParameterMetadata.getNamedParameterExpectedType(ParameterMetadata.java:81)
                   at org.hibernate.impl.AbstractQueryImpl.determineType(AbstractQueryImpl.java:413)
                   at org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:383)
                   at org.jbpm.db.JobSession$DeleteJobsSynchronization.beforeCompletion(JobSession.java:191)
                   at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:114)
                   at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:247)
                   at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:86)
                   at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)
                   at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1389)
                   at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:135)
                   at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:87)
                   at org.jboss.resource.adapter.jms.inflow.JmsServerSession$XATransactionDemarcationStrategy.end(JmsServerSession.java:494)
                   at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:248)
                   at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
                   at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
                   at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:756)
                   at java.lang.Thread.run(Unknown Source)
                  09:18:32,648 WARN [AbstractDLQHandler] Message redelivered=2 max=1 sending it to the dlq org.jboss.mq.SpyObjectMessage {
                  Header {
                   jmsDestination : QUEUE.CardLifeCycleManagerInMsg
                   jmsDeliveryMode : 2
                   jmsExpiration : 0
                   jmsPriority : 4
                   jmsMessageID : ID:17-124816428465229
                   jmsTimeStamp : 1248164284652
                   jmsCorrelationID: null
                   jmsReplyTo : null
                   jmsType : null
                   jmsRedelivered : true
                   jmsProperties : {JMSXDeliveryCount=3, JMS_JBOSS_REDELIVERY_LIMIT=1, JMS_JBOSS_REDELIVERY_COUNT=2}
                   jmsPropReadWrite: false
                   msgReadOnly : true
                   producerClientId: ID:17
                  }
                  }
                  09:18:32,664 ERROR [JmsServerSession] org.jboss.resource.adapter.jms.inflow.JmsServerSession@584d18 failed to commit/rollback
                  javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Can't commit because the transaction is in aborted state
                   at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1401)
                   at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:135)
                   at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:87)
                   at org.jboss.resource.adapter.jms.inflow.JmsServerSession$XATransactionDemarcationStrategy.end(JmsServerSession.java:494)
                   at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:248)
                   at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
                   at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
                   at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:756)
                   at java.lang.Thread.run(Unknown Source)
                  Caused by: org.hibernate.QueryParameterException: could not locate named parameter [processInstance]
                   at org.hibernate.engine.query.ParameterMetadata.getNamedParameterDescriptor(ParameterMetadata.java:75)
                   at org.hibernate.engine.query.ParameterMetadata.getNamedParameterExpectedType(ParameterMetadata.java:81)
                   at org.hibernate.impl.AbstractQueryImpl.determineType(AbstractQueryImpl.java:413)
                   at org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:383)
                   at org.jbpm.db.JobSession$DeleteJobsSynchronization.beforeCompletion(JobSession.java:191)
                   at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:114)
                   at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:247)
                   at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:86)
                   at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)
                   at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1389)
                   ... 8 more
                  09:18:32,695 DEBUG [arjLogger] Periodic recovery - second pass <Tue, 21 Jul 2009 09:18:32>
                  09:18:32,695 DEBUG [arjLogger] AtomicActionRecoveryModule: Second pass
                  09:18:32,695 DEBUG [txojLoggerI18N] [com.arjuna.ats.internal.txoj.recovery.TORecoveryModule_6] - TORecoveryModule - second pass
                  09:18:32,695 DEBUG [loggerI18N] [com.arjuna.ats.internal.jta.recovery.info.secondpass] Local XARecoveryModule - second pass
                  09:20:32,678 DEBUG [arjLogger] Periodic recovery - first pass <Tue, 21 Jul 2009 09:20:32>
                  09:20:32,678 DEBUG [arjLogger] StatusModule: first pass
                  09:20:32,678 DEBUG [txojLoggerI18N] [com.arjuna.ats.internal.txoj.recovery.TORecoveryModule_3] - TORecoveryModule - first pass
                  09:20:32,678 DEBUG [loggerI18N] [com.arjuna.ats.internal.jta.recovery.info.firstpass] Local XARecoveryModule - first pass
                  09:20:42,676 DEBUG [arjLogger] Periodic recovery - second pass <Tue, 21 Jul 2009 09:20:42>
                  09:20:42,676 DEBUG [arjLogger] AtomicActionRecoveryModule: Second pass
                  09:20:42,676 DEBUG [txojLoggerI18N] [com.arjuna.ats.internal.txoj.recovery.TORecoveryModule_6] - TORecoveryModule - second pass
                  09:20:42,676 DEBUG [loggerI18N] [com.arjuna.ats.internal.jta.recovery.info.secondpass] Local XARecoveryModule - second pass
                  


                  • 6. Re: exception in the last node of the process

                    Hi Guys,

                    first of all thanks for you help. It is always good to have this kind of support.

                    The problem is solved. The issue was:
                    - I was using the wrong jbpm libraries
                    - the jbpm.cfg.cml was not including the configuration property used by the persistence service

                     <string name="resource.hibernate.cfg.xml" value="hibernate.cfg.xml"/>


                    Thanks a lot for your help

                    DSE

                    • 7. Re: exception in the last node of the process
                      kukeltje

                      Ok, great to hear it works,

                      Regarding the signalling of the PI vs the token, the way you 'solved' it now does not make any difference. What is common is to have e.g. an id of the task/state/token in the external system and use that id to explicitly signal that task/state/token.

                      That Id should be send to the external service and when that returns it should send that id again, kind of like a callback parameter.