[jboss-user] [JBoss jBPM] - Is that possible to create a non-persisted ProcessInstance i

kenees do-not-reply at jboss.com
Wed Apr 8 04:45:08 EDT 2009


The question is that I want to create a new ProcessInstance inside an outer ProcessInstance, actually this creation (new) operation is done in the ActionHandler of the outer ProcessInstance, the key is that the outer one is a persisted one, but I don't want the inner one to be persisted. So I got the following exception when I try to close the jbpmContext:
anonymous wrote : org.hibernate.TransientObjectException: object references an unsaved transient instance - save the t
  | ransient instance before flushing: org.jbpm.graph.def.Node
  |         at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:219)
  |         at org.hibernate.type.EntityType.getIdentifier(EntityType.java:397)
  |         at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:242)
  |         at org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:597)
  |         at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.
  | java:3128)

The code is as below:
The outer one:

  | JbpmContext jbpmContext = JbpmConfingurationFactory.jbpmConfiguration
  | 				.createJbpmContext();
  | 		try {
  |                       ...
  |                       ProcessInstance processInstance = new ProcessInstance(retrievedPd);
  |                       jbpmContext.save(processInstance);
  |                       }
  | 		} finally {
  | 			jbpmContext.close(); //where I get the exception
  | 		}
  | 
  | 

One ActionHandler of the outer one which expect to create a new ProcessInstance:

  | public void execute(ExecutionContext executionContext) throws Exception {
  | 		// get operation context from workflow
  | 		OperationContext context = (OperationContext) executionContext
  | 				.getContextInstance().getTransientVariable(
  | 						Operation.OPERATION_CONTEXT);
  | 		// create discovery operation
  | 		WorkflowOperation discoveryOperation = new WorkflowOperation(context);
  | 		// create discovery related workflow
  | 		ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(definition);
  | 		ProcessInstance processInstance = 
  | 	        new ProcessInstance(processDefinition);
  | 		....
  | 

Can anybody tell me why I got this error, is there any possible workaround?

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

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



More information about the jboss-user mailing list