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.jmsserversess...@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


View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4244680#4244680

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4244680
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to