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
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to