[jboss-user] [JBoss jBPM] - signalling the process with the newly created token

maheshraj_4u do-not-reply at jboss.com
Sun Aug 6 23:49:49 EDT 2006


--------------------------------------------------------------------------------
 
Hi 
i created an instance of token and trying to signal the process with the newly created token here i associated the newly created token with the process instance. here im not using the root token for signalling. so im trying to save the data in the tables.when i tried to get the root token id it gave as 408 and the token id of the newly created token as 0. is this procedure correct. can ny body help me out 


here is the code 



import java.io.BufferedReader; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStreamReader; 

import org.jbpm.JbpmConfiguration; 
import org.jbpm.JbpmContext; 
import org.jbpm.graph.exe.ProcessInstance; 
import org.jbpm.graph.exe.Token; 

public class CreateDuplicateToken { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
// TODO Auto-generated method stub 

JbpmConfiguration jbpmConfiguration = null; 
JbpmContext jbpmContext = null; 

try { 
jbpmConfiguration = JbpmConfiguration.parseInputStream(new FileInputStream("src/config.files/jbpm.cfg.xml")); 
} catch (FileNotFoundException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
jbpmContext = jbpmConfiguration.createJbpmContext(); 

System.out.println("Create Duplicate Token:"); 
System.out.print("Enter the ProcessInstance ID: "); 

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
long processInstanceID = 0 ; 
try { 
processInstanceID = Long.parseLong(br.readLine()); 
} catch (IOException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 


ProcessInstance processInstance = jbpmContext.loadProcessInstanceForUpdate(processInstanceID); 

Token rootToken = processInstance.getRootToken(); 

Token duplicateToken = new Token(); 
duplicateToken.setProcessInstance(procesInstance); 
duplicateToken.setNode(rootToken.getNode()); 


System.out.println("Root TokenID: "+rootToken.getId()); 
System.out.println("Duplicate TokenID: "+duplicateToken.getId()); 
System.out.println("ProcessInstance of Duplicate: "+duplicateToken.getProcessInstance().getId()); 


jbpmContext.save(duplicateToken); 
duplicateToken.signal(); 
jbpmContext.save(duplicateToken); 

jbpmContext.close(); 

} 

} 




here is the exception 



org.jbpm.persistence.JbpmPersistenceException: couldn't commit hibernate session 
at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:171) 
at org.jbpm.svc.Services.close(Services.java:211) 
at org.jbpm.JbpmContext.close(JbpmContext.java:141) 
at com.westpac.nzlo.tempjbpm.CreateDuplicateToken.main(CreateDuplicateToken.java:66) 
Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: org.jbpm.graph.exe.Token 
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:216) 
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:108) 
at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:221) 
at org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:476) 
at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:2803) 
at org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:467) 
at org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:190) 
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:113) 
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:195) 
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76) 
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26) 
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:980) 
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:353) 
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) 
at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:161) 
... 3 more 
18:06:33,500 [main] ERROR Services : problem closing service 'persistence' 
org.jbpm.persistence.JbpmPersistenceException: couldn't commit hibernate session 
at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:171) 
at org.jbpm.svc.Services.close(Services.java:211) 
at org.jbpm.JbpmContext.close(JbpmContext.java:141) 
at com.westpac.nzlo.tempjbpm.CreateDuplicateToken.main(CreateDuplicateToken.java:66) 
Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: org.jbpm.graph.exe.Token 
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:216) 
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:108) 
at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:221) 
at org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:476) 
at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:2803) 
at org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:467) 
at org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:190) 
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:113) 
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:195) 
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76) 
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26) 
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:980) 
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:353) 
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) 
at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:161) 
... 3 more 
org.jbpm.JbpmException: problem closing services {persistence=org.jbpm.persistence.JbpmPersistenceException: couldn't commit hibernate session} 
at org.jbpm.svc.Services.close(Services.java:223) 
at org.jbpm.JbpmContext.close(JbpmContext.java:141) 
at com.westpac.nzlo.tempjbpm.CreateDuplicateToken.main(CreateDuplicateToken.java:66) 
Caused by: org.jbpm.persistence.JbpmPersistenceException: couldn't commit hibernate session 
at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:171) 
at org.jbpm.svc.Services.close(Services.java:211) 
... 2 more 
Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: org.jbpm.graph.exe.Token 
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:216) 
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:108) 
at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:221) 
at org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:476) 
at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:2803) 
at org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:467) 
at org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:190) 
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:113) 
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:195) 
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76) 
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26) 
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:980) 
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:353) 
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) 
at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:161) 
... 3 more 


thnx  


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

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3963467



More information about the jboss-user mailing list