[jboss-user] [JBoss Seam] - jBPM and LIE

pbrewer_uk do-not-reply at jboss.com
Tue Mar 20 06:29:11 EDT 2007


I'm new to using jBPM and am trying to query the jBPM database objects.

I run a query that returns summary data containing the process and the number of tasks for the process. The summary data is displayed, however, the user then trys to click a process to display a list of tasks for that process, but receives a LazyInitializationException instead.

How can I make the jBPM Session behave in similar manner to the seam managed PC? Is there anyway to make jBPM use seams entity manager instead?

Any ideas on how to solve this problem would be greatly appreciated.

Cheers, Pete.

Named query called jbpm.getProcesses

  | SELECT
  | 	count(t.processDefinition.id), t.processDefinition.id
  | FROM
  | 	org.jbpm.taskmgmt.exe.PooledActor pooledActor
  | JOIN
  | 	pooledActor.taskInstances ti
  | JOIN
  | 	ti.task t
  | WHERE
  | 	pooledActor.actorId in ( :actorIds )
  | AND
  | 	ti.actorId is null
  | AND
  | 	ti.isSuspended != true
  | AND
  | 	ti.isOpen = true
  | GROUP BY
  | 	t.processDefinition.id
  | 

Code that is used in a summary process list:

  |   public List<ProcessResult> getProcessSummary(List<String> pooledActorIds) {
  |     org.hibernate.Query taskQuery = jbpmContext.getSession().getNamedQuery("jbpm.getProcesses") ;
  |     taskQuery.setParameterList("actorIds", pooledActorIds) ;
  |     List<ProcessResult> results = new ArrayList<ProcessResult>() ;
  |     List<Object[]> queryResults = taskQuery.list() ;
  |     for (Object[] result : queryResults) {
  |       ProcessDefinition process = (ProcessDefinition) jbpmContext.getSession().load(ProcessDefinition.class, (Serializable)result[1]) ;
  |       results.add(new ProcessResult((Long)result[0], process)) ;
  |     }
  |     return results ;
  | 

Code that causes a LIE

  |   public Collection<Task> getTasksFromProcess(ProcessResult process) {
  |     if (process != null) {
  |       // next line causes LIE
  |       Map<String, Task> tasks = (Map<String, Task>) process.getProcess().getTaskMgmtDefinition().getTasks() ;
  |       return tasks.values() ;
  |     } else {
  |       return null;
  |     }
  |   }
  | 
  | 

The LIE in the log

  | org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: org.jbpm.graph.def.ProcessDefinition.definitions, no session or session was closed
  | 	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
  | 	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
  | 	at org.hibernate.collection.AbstractPersistentCollection.readElementByIndex(AbstractPersistentCollection.java:151)
  | 	at org.hibernate.collection.PersistentMap.get(PersistentMap.java:146)
  | 	at org.jbpm.graph.def.ProcessDefinition.getDefinition(ProcessDefinition.java:431)
  | 	at org.jbpm.graph.def.ProcessDefinition.getTaskMgmtDefinition(ProcessDefinition.java:444)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:173)
  | 	at org.jbpm.graph.def.ProcessDefinition_$$_javassist_95.getTaskMgmtDefinition(ProcessDefinition_$$_javassist_95.java)
  | 	at uk.co.iblocks.iflow.web.tree.expansion.JbpmExpansion.getProcessSummary(JbpmExpansion.java:402)
  | 	at uk.co.iblocks.iflow.web.tree.expansion.JbpmExpansion.addTaskNodes(JbpmExpansion.java:129)
  | 	at uk.co.iblocks.iflow.web.tree.expansion.JbpmExpansion$$FastClassByCGLIB$$b998e405.invoke(<generated>)
  | 	at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
  | 	at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:45)
  | 	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:57)
  | 	at org.jboss.seam.interceptors.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:34)
  | 	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
  | 	at org.jboss.seam.interceptors.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:47)
  | 	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
  | 	at org.jboss.seam.interceptors.BusinessProcessInterceptor.aroundInvoke(BusinessProcessInterceptor.java:51)
  | 	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
  | 	at org.jboss.seam.interceptors.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:27)
  | 	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
  | 	at org.jboss.seam.interceptors.SecurityInterceptor.aroundInvoke(SecurityInterceptor.java:37)
  | 	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
  | 	at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:103)
  | 	at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:154)
  | 	at org.jboss.seam.intercept.JavaBeanInterceptor.intercept(JavaBeanInterceptor.java:89)
  | 	at uk.co.iblocks.iflow.web.tree.expansion.JbpmExpansion$$EnhancerByCGLIB$$9eed0613.addTaskNodes(<generated>)
  | 	at uk.co.iblocks.iflow.web.tree.expansion.JbpmExpansion$JbpmType$3.addNodes(JbpmExpansion.java:68)
  | 	at uk.co.iblocks.iflow.web.tree.expansion.JbpmExpansion.addNodes(JbpmExpansion.java:77)
  | 	at uk.co.iblocks.iflow.web.TreeBean.exploreNode(TreeBean.java:270)
  | 	at uk.co.iblocks.iflow.web.tree.TreeData$DebugNodeListener.exploreNode(TreeData.java:59)
  | 	at uk.co.iblocks.iflow.web.tree.TreeData$DebugNodeListener.exploreNode(TreeData.java:59)
  | 	at uk.co.iblocks.iflow.web.tree.TreeData$DebugNodeListener.exploreNode(TreeData.java:59)
  | 	at uk.co.iblocks.iflow.web.tree.TreeData.setExpanded(TreeData.java:414)
  | 	at com.icesoft.faces.component.tree.TreeRenderer.decode(TreeRenderer.java:109)
  | 	at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:500)
  | 	at com.icesoft.faces.component.tree.Tree.processDecodes(Tree.java:857)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIForm.processDecodes(UIForm.java:53)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
  | 	at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:135)
  | 	at org.apache.myfaces.lifecycle.LifecycleImpl.applyRequestValues(LifecycleImpl.java:219)
  | 	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:71)
  | 	at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.renderCyclePartial(BlockingServlet.java:473)
  | 	at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.receiveUpdates(BlockingServlet.java:442)
  | 	at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.executeRequest(BlockingServlet.java:324)
  | 	at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:186)
  | 	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.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:393)
  | 	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:96)
  | 	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.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
  | 	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
  | 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
  | 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
  | 	at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
  | 	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:869)
  | 	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
  | 	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:619)
  | 

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

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



More information about the jboss-user mailing list