[jboss-user] [JBoss jBPM] - Insert TaskNode and Task at runtime via an ActionHandler

warmonga do-not-reply at jboss.com
Thu Feb 22 09:28:40 EST 2007


Hello,

I am trying to insert a new TaskNode together with a Task and a TaskInstance into a ProcessInstance at run-time through an ActionHandler. When testing it through the Jbpm API it executes fine but after deploying the process i get a TransientObjectException.

The code looks like this:

  | 
  | 
  | public class MyActionHandler implements ActionHandler {
  | [...]
  | public void execute(ExecutionContext executionContext) throws Exception {
  | [...]
  | 	    TaskNode insertedTaskNode = new TaskNode("Check Task"); 
  | 	    
  | 		TaskMgmtDefinition tmd = (TaskMgmtDefinition) 
  | 		executionContext.getDefinition(TaskMgmtDefinition.class);
  | 		Task task = new Task("Check please");
  | 		TaskInstance taskInstance = processInstance.getTaskMgmtInstance().createTaskInstance(task, 
  | 			processInstance.getRootToken());
  | 		taskInstance.setActorId("grover");
  | 		Node currentNode = executionContext.getNode();
  | 		
  | 		
  | 		// TODO: Auch mehrere berücksichtigen!
  | 		Transition currentNodeLeavingTransition = (Transition) currentNode.getLeavingTransitions().get(0);
  | 		Node nextNode = currentNodeLeavingTransition.getTo();
  | 		
  | 		currentNodeLeavingTransition.setTo(insertedTaskNode);
  | 		
  | 		Transition insertedTaskNodeLeavingTransition = new Transition("insertedTaskNodeLeavingTransition");
  | 		insertedTaskNodeLeavingTransition.setFrom(insertedTaskNode);
  | 		insertedTaskNodeLeavingTransition.setTo(nextNode);
  | 		
  | 		
  | 		insertedTaskNode.addTask(task);
  | [...]
  | }
  | [...]
  | }

The error stack looks like that:
anonymous wrote : 15:23:54,813 DEBUG [HibernateSaveOperation] saving process instance
  | 15:23:54,813 DEBUG [SaveLogsOperation] flushing logs to logging service.
  | 15:23:54,823 DEBUG [CascadeSaveOperation] cascading save of 'org.jbpm.graph.exe.ProcessInstance at 579615'
  | 15:23:54,823 INFO  [[/jbpm]] WARNING: Component _id13 just got an automatic id, because there was no id assigned yet. If this comp
  | onent was created dynamically (i.e. not by a JSP tag) you should assign it an explicit static id or assign it the id you get from
  | the createUniqueId from the current UIViewRoot component right after creation!
  | 15:23:54,833 ERROR [TaskMgmtSession] org.hibernate.TransientObjectException: object references an unsaved transient instance - sav
  | e the transient instance before flushing: org.jbpm.taskmgmt.def.Task
  | 15:23:54,833 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
  | javax.faces.el.EvaluationException: Cannot get value for expression '#{homeBean.taskInstances}'
  |         at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:399)
  |         at javax.faces.component.UIData.getValue(UIData.java:779)
  |         at javax.faces.component.UIData.createDataModel(UIData.java:545)
  |         at javax.faces.component.UIData.getDataModel(UIData.java:534)
  |         at javax.faces.component.UIData.getRowCount(UIData.java:103)
  |         at org.apache.myfaces.renderkit.html.HtmlTableRendererBase.encodeInnerHtml(HtmlTableRendererBase.java:124)
  |         at org.apache.myfaces.renderkit.html.HtmlTableRendererBase.encodeChildren(HtmlTableRendererBase.java:94)
  |         at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:319)
  |         at javax.faces.webapp.UIComponentTag.encodeChildren(UIComponentTag.java:343)
  |         at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:251)
  |         at org.apache.myfaces.taglib.UIComponentBodyTagBase.doEndTag(UIComponentBodyTagBase.java:55)
  |         at org.apache.jsp.home_jsp._jspx_meth_h_dataTable_0(org.apache.jsp.home_jsp:205)
  |         at org.apache.jsp.home_jsp._jspx_meth_f_view_0(org.apache.jsp.home_jsp:124)
  |         at org.apache.jsp.home_jsp._jspService(org.apache.jsp.home_jsp:76)
  |         at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
  |         at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
  |         at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
  |         at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
  |         at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
  |         at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
  |         at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
  |         at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
  |         at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
  |         at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:415)
  |         at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:234)
  |         at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:300)
  |         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:95)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.jbpm.webapp.filter.AuthenticationFilter.doFilter(AuthenticationFilter.java:56)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.jbpm.web.JbpmContextFilter.doFilter(JbpmContextFilter.java:83)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.jbpm.webapp.filter.LogFilter.doFilter(LogFilter.java:59)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
  |         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
  |         at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
  |         at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:159)
  |         at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
  |         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
  |         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
  |         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
  |         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
  |         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
  |         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
  |         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
  |         at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
  |         at java.lang.Thread.run(Thread.java:595)
  | Caused by: javax.faces.el.EvaluationException: org.jbpm.webapp.bean.HomeBean
  |         at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:78)
  |         at org.apache.myfaces.el.ELParserHelper$MyPropertySuffix.evaluate(ELParserHelper.java:532)
  |         at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
  |         at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:380)
  |         ... 57 more
  | Caused by: javax.faces.el.EvaluationException: Bean: org.jbpm.webapp.bean.HomeBean, property: taskInstances
  |         at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:404)
  |         at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:71)
  |         ... 60 more
  | Caused by: java.lang.reflect.InvocationTargetException
  |         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |         at java.lang.reflect.Method.invoke(Method.java:585)
  |         at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:400)
  |         ... 61 more
  | Caused by: org.jbpm.JbpmException: couldn't get task instances list for actor 'grover'
  |         at org.jbpm.db.TaskMgmtSession.findTaskInstances(TaskMgmtSession.java:63)
  |         at org.jbpm.webapp.bean.HomeBean.getTaskInstances(HomeBean.java:49)
  |         ... 66 more
  | Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance b
  | efore flushing: org.jbpm.taskmgmt.def.Task
  |         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:2802)
  |         at org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:457)
  |         at org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:180)
  |         at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:104)
  |         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.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:35)
  |         at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:878)
  |         at org.hibernate.impl.SessionImpl.prepareQueries(SessionImpl.java:1071)
  |         at org.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:1061)
  |         at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1010)
  |         at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
  |         at org.jbpm.db.TaskMgmtSession.findTaskInstances(TaskMgmtSession.java:59)
  |         ... 67 more
  | 15:23:54,833 DEBUG [JbpmContext] closing JbpmContext

Thanks for your help.
Regards,
Maurice

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

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




More information about the jboss-user mailing list