0 Replies Latest reply on Nov 2, 2010 1:35 PM by David Paz

    Passing Message to Jbpm

    David Paz Newbie

      Hello, I have a problem and I will appreciate any suggestion about it. This is my scenario:

       

      I have several services orchestrated from jbpm, the starter service receive an xml through http, the xml is transformed (smooks) into an ArrayList<User>, the message is mapped to jbpm variable from esb as BODY_CONTENT.

       

      <property name="bpmToEsbVars">
        <mapping bpm="theBody" esb="BODY_CONTENT" />
      </property>
      <property name="esbToBpmVars">
        <mapping esb="BODY_CONTENT" bpm="theBody" />
      </property>

       

      My problems start when the process try to pause (I have a timer on it), I think it is because this kind of var is not persistable, this is the exeption

       

      08:00:54,449 ERROR [JmsServerSession] Unexpected error delivering message delegator->JBossMessage[21114107566866487]:PERSISTENT, deliveryId=18
      org.jbpm.JbpmException: cannot mark externally managed transaction for rollback
          at org.jbpm.persistence.db.DbPersistenceService.endTransaction(DbPersistenceService.java:129)
          at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:201)
          at org.jbpm.svc.Services.close(Services.java:247)
          at org.jbpm.JbpmContext.close(JbpmContext.java:131)
          at org.jbpm.command.impl.CommandServiceImpl.execute(CommandServiceImpl.java:79)
          at org.jboss.soa.esb.services.jbpm.cmd.CommandExecutor.executeJbpmCommand(CommandExecutor.java:279)
          at org.jboss.soa.esb.services.jbpm.cmd.CommandExecutor.access$100(CommandExecutor.java:51)
          at org.jboss.soa.esb.services.jbpm.cmd.CommandExecutor$3.execute(CommandExecutor.java:136)
          at org.jboss.soa.esb.services.jbpm.actions.JBpmCallback.process(JBpmCallback.java:68)
          at sun.reflect.GeneratedMethodAccessor646.invoke(Unknown Source)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at org.jboss.soa.esb.listeners.message.ActionProcessorMethodInfo.processMethods(ActionProcessorMethodInfo.java:102)
          at org.jboss.soa.esb.listeners.message.OverriddenActionLifecycleProcessor.process(OverriddenActionLifecycleProcessor.java:74)
          at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:634)
          at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:588)
          at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.process(ActionProcessingPipeline.java:419)
          at org.jboss.soa.esb.listeners.jca.JcaMessageAwareListener.process(JcaMessageAwareListener.java:163)
          at org.jboss.soa.esb.listeners.jca.JcaJMSInflowMessageProcessorAdapter.onMessage(JcaJMSInflowMessageProcessorAdapter.java:44)
          at sun.reflect.GeneratedMethodAccessor645.invoke(Unknown Source)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at org.jboss.soa.esb.listeners.jca.BaseJcaInflow$1.invoke(BaseJcaInflow.java:205)
          at org.jboss.soa.esb.listeners.jca.EndpointProxy.delivery(EndpointProxy.java:258)
          at org.jboss.soa.esb.listeners.jca.EndpointProxy.invoke(EndpointProxy.java:150)
          at $Proxy374.onMessage(Unknown Source)
          at org.jboss.resource.adapter.jms.inflow.JmsServerSession.onMessage(JmsServerSession.java:178)
          at org.jboss.jms.client.container.ClientConsumer.callOnMessageStatic(ClientConsumer.java:160)
          at org.jboss.jms.client.container.SessionAspect.handleRun(SessionAspect.java:831)
          at org.jboss.aop.advice.org.jboss.jms.client.container.SessionAspect_z_handleRun_2046525641.invoke(SessionAspect_z_handleRun_2046525641.java)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
          at org.jboss.jms.client.container.ClosedInterceptor.invoke(ClosedInterceptor.java:170)
          at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:86)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
          at org.jboss.jms.client.delegate.ClientSessionDelegate.run(ClientSessionDelegate.java)
          at org.jboss.jms.client.JBossSession.run(JBossSession.java:199)
          at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:234)
          at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:205)
          at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260)
          at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
          at java.lang.Thread.run(Thread.java:619)

       

      Can anyone propose a possible solution or point me to some direction for achieving this, please.

       

      As a work around as I have tried to transform back the Collection into an xml string, so the process doesn't complain when paused. I would like to know how can I use that object model to generate an xml string using Smooks, FreeMarker template (notice I would like to generate back an xml with same structure as received one)

       

      Again if someone can point me on the right direction, I will appreciate a lot.

       

      If you need more information please I can post configuration files also.

       

      Thanks for listen, David