2 Replies Latest reply on May 18, 2006 7:17 AM by pmuir

    JBPM EL exceptions

    pmuir

      If an exception occurs evaluating the expression of an action inside a transition then an exception is thrown [1]. It doesn't include the oiginal cause of the error making it hard to debug. If possible could the original exception be included? Or is this one for the jBPM people?

      Thanks

      Peter

      [1]

      2006-05-17 18:40:10,303 ERROR [org.jbpm.graph.def.GraphElement] action threw exception: couldn't evaluate expression '#{createClient.create}'
      org.jbpm.JbpmException: couldn't evaluate expression '#{createClient.create}'
       at org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator.evaluate(JbpmExpressionEvaluator.java:37)
       at org.jbpm.graph.def.Action.execute(Action.java:119)
       at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:235)
       at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:212)
       at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:182)
       at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:166)
       at org.jbpm.graph.def.Transition.take(Transition.java:106)
       at org.jbpm.graph.def.Node.leave(Node.java:382)
       at org.jbpm.graph.exe.Token.signal(Token.java:174)
       at org.jbpm.graph.exe.Token.signal(Token.java:137)
       at org.jbpm.graph.exe.ProcessInstance.signal(ProcessInstance.java:229)
       at org.jboss.seam.core.Pageflow.navigate(Pageflow.java:183)
       at org.jboss.seam.jsf.SeamNavigationHandler.handleNavigation(SeamNavigationHandler.java:26)
       at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:84)
       at javax.faces.component.UICommand.broadcast(UICommand.java:106)
       at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:94)
       at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:168)
       at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
       at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
       at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:45)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:23)
       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.CustomPrincipalValve.invoke(CustomPrincipalValve.java:54)
       at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:174)
       at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
       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.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:595)
      Caused by: org.jbpm.jpdl.el.ELException: An error occurred while invoking method "create" on an instance of class $Proxy260
       at org.jbpm.jpdl.el.impl.Logger.logError(Logger.java:485)
       at org.jbpm.jpdl.el.impl.Logger.logError(Logger.java:589)
       at org.jbpm.jpdl.el.impl.ArraySuffix.evaluate(ArraySuffix.java:290)
       at org.jbpm.jpdl.el.impl.ComplexValue.evaluate(ComplexValue.java:146)
       at org.jbpm.jpdl.el.impl.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:264)
       at org.jbpm.jpdl.el.impl.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:191)
       at org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator.evaluate(JbpmExpressionEvaluator.java:34)
       ... 48 more
      


        • 1. Re: JBPM EL exceptions
          tom.baeyens

          i don't think the jbpm expression language can handle proxies.

          from the stack trace it looks like the create is being treated as a method invocation, which fails on the proxy object.

          does the createClient object have a create method ?

          • 2. Re: JBPM EL exceptions
            pmuir

            Yes it does. Here's an example of what I mean

            Excerpt from CreateClientBean

             @End
             public void create() {
             log.info("Running create method");
             throw new RuntimeException("Create method throws a runtime exception");
             //facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "screen.addClient.create");
             //smsDatabase.persist(client);
             }
            


            gives the output below[1]. As you can see the method is run (the log message is written out) but my runtime exception is swallowed by the

            org.jbpm.jpdl.el.ELException: An error occurred while invoking method "create" on an instance of class $Proxy222
            


            You can get round it and get the actual exception by putting #{createClient.create} on the page rather than in the transition but it would be nice to not have to do that!

            TIA

            Peter

            [1]
            2006-05-18 12:08:16,022 DEBUG [org.jboss.seam.interceptors.RemoveInterceptor] Stateful component was removed: createClient
            2006-05-18 12:08:16,035 DEBUG [org.jboss.mx.loading.RepositoryClassLoader] setRepository, repository=org.jboss.mx.loading.HeirarchicalLoaderRepository3@93912f, cl=org.jboss.mx.loa
            ding.HeirarchicalLoaderRepository3$CacheClassLoader@fd05c7{ url=null ,addedOrder=0}
            2006-05-18 12:08:16,036 ERROR [org.jbpm.graph.def.GraphElement] action threw exception: couldn't evaluate expression '#{createClient.create}'
            org.jbpm.JbpmException: couldn't evaluate expression '#{createClient.create}'
             at org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator.evaluate(JbpmExpressionEvaluator.java:37)
             at org.jbpm.graph.def.Action.execute(Action.java:119)
             at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:235)
             at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:212)
             at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:182)
             at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:166)
             at org.jbpm.graph.def.Transition.take(Transition.java:106)
             at org.jbpm.graph.def.Node.leave(Node.java:382)
             at org.jbpm.graph.exe.Token.signal(Token.java:174)
             at org.jbpm.graph.exe.Token.signal(Token.java:137)
             at org.jbpm.graph.exe.ProcessInstance.signal(ProcessInstance.java:229)
             at org.jboss.seam.core.Pageflow.navigate(Pageflow.java:183)
             at org.jboss.seam.jsf.SeamNavigationHandler.handleNavigation(SeamNavigationHandler.java:26)
             at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:84)
             at javax.faces.component.UICommand.broadcast(UICommand.java:106)
             at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:94)
             at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:168)
             at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
             at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
             at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
             at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
             at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
             at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
             at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
             at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
             at org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:45)
             at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
             at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
             at org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:23)
             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.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
             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.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:595)
            Caused by: org.jbpm.jpdl.el.ELException: An error occurred while invoking method "create" on an instance of class $Proxy222
             at org.jbpm.jpdl.el.impl.Logger.logError(Logger.java:485)
             at org.jbpm.jpdl.el.impl.Logger.logError(Logger.java:589)
             at org.jbpm.jpdl.el.impl.ArraySuffix.evaluate(ArraySuffix.java:290)
             at org.jbpm.jpdl.el.impl.ComplexValue.evaluate(ComplexValue.java:146)
             at org.jbpm.jpdl.el.impl.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:264)
             at org.jbpm.jpdl.el.impl.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:191)
             at org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator.evaluate(JbpmExpressionEvaluator.java:34)
             ... 47 more