Transaction problem with runtime strategies: PER_REQUEST, PER_PROCESS_INSTANCE

1,633 views
Skip to first unread message

javi....@gmail.com

unread,
Nov 19, 2015, 8:14:52 AM11/19/15
to jBPM Usage
Hi,

I have declared a webservice inside the WildFly KieWorkbench (jbpm 6.2.0)


It works well with SINGLETON Strategy, but if I try to invoke concurrently to this webservice it :
     [exec] "default task-6" prio=6 tid=0x39e13000 nid=0x2498 waiting for monitor entry [0x38ced000]
     [exec]    java.lang.Thread.State: BLOCKED (on object monitor)
     [exec]     at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java)
     [exec]     - waiting to lock <0x1b6c4088> (a org.drools.persistence.SingleSessionCommandService)
     [exec]     at org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:242)
     [exec]     at org.jbpm.kie.services.impl.ProcessServiceImpl.startProcess(ProcessServiceImpl.java:94)
     [exec]     at org.jbpm.services.cdi.impl.ProcessServiceCDIImpl$Proxy$_$$_WeldClientProxy.startProcess(Unknown Source)
     [exec]     at es.prototipo.workflow.api.jbpmSeleneAPI.server.PrototipoJbpmApiServiceImpl.initProcess(PrototipoJbpmApiServiceImpl.java:248)



But It fails with PER_REQUEST, PER_PROCESS_INSTANCE Strategy, because commit produces an exception.

I think the good one is PER_PROCESS_INSTANCE Strategy, isn´t it?



What I am doing wrong?
What can I do to solve this?
There is some code available that I can see that has this solved?


Thank you.












PER_REQUEST
Unable to commit transaction: : javax.transaction.RollbackException: ARJUNA016053: Could not commit transaction.
Caused by: org.hibernate.engine.transaction.jta.platform.spi.JtaPlatformException: Could not access JTA Transaction to register synchronization
Caused by: java.lang.IllegalStateException: ARJUNA016082: Synchronizations are not allowed! Transaction status isActionStatus.RUNNING


PER_PROCESS_INSTANCE :
ARJUNA012125: TwoPhaseCoordinator.beforeCompletion - failed for SynchronizationImple< 0:ffff0a0a018d:120d3812:564da943:2119, org.drools.persistence.jta.JtaTransactionSynchronizationAdapter@72c408 >: java.lang.IllegalStateException: Illegal method call. This session was previously disposed.
Unable to commit transaction: : javax.transaction.RollbackException: ARJUNA016053: Could not commit transaction.
Caused by: java.lang.IllegalStateException: Illegal method call. This session was previously disposed.


@ApplicationScoped
@WebService (portName="PrototipoJbpmApiServicePort", serviceName="PrototipoJbpmApiService", targetNamespace="http://workflow.prototipo.org/wsdl", endpointInterface="es.prototipo.workflow.api.jbpmPrototipoAPI.model.PrototipoJbpmApiService" )
public class PrototipoJbpmApiServiceImpl implements PrototipoJbpmApiService {

  ...

    @Override
    public long initProcess(String deploymentId, String processId,
            Long idPaciente, Long idProceso, Long idActo,
            Parameters parametrosAdicionales) throws Exception {

        Object txn = null;
        EntityManager em=emf.createEntityManager();
        txn = joinTransaction(em); // as in org.jbpm.process.audit.JPAWorkingMemoryDbLogger.joinTransaction(EntityManager)

        if (parametrosAdicionales == null) {
            parametrosAdicionales = new Parameters();
        }
        Map<String, Object> params = new HashMap(parametrosAdicionales.getParametros());
        params.put(WorkflowParameterNames.idPaciente, long2str(idPaciente));
        params.put(WorkflowParameterNames.idProceso, long2str(idProceso));
        params.put(WorkflowParameterNames.idActo, long2str(idActo));
       
        long processInstanceId = getProcessService().startProcess(deploymentId,processId, params);
        em.flush();
        leaveTransaction(em, txn); // as in  org.jbpm.process.audit.JPAWorkingMemoryDbLogger.leaveTransaction(EntityManager,Object)

        return processInstanceId;           
    }

    boolean isJTA = true;
   
    // this code : https://github.com/droolsjbpm/jbpm/blob/master/jbpm-audit/src/main/java/org/jbpm/process/audit/JPAWorkingMemoryDbLogger.java
    // similar code (leave <- commitTransaction) : https://github.com/marianbuenosayres/drools-experiments/blob/master/jbpm-rollback-api/src/main/java/org/jbpm/rollback/util/PersistenceUtil.java
   
 private Object joinTransaction(EntityManager em) {
     boolean newTx = false;
     UserTransaction ut = null;
     if (isJTA) {
            try {
                em.joinTransaction();
            } catch (TransactionRequiredException e) {
                ut = findUserTransaction();
                try {
                    if( ut != null && ut.getStatus() == javax.transaction.Status.STATUS_NO_TRANSACTION ) {
                        ut.begin();
                        newTx = true;
                        // since new transaction was started em must join it
                        em.joinTransaction();
                    }
                } catch(Exception ex) {
                    throw new IllegalStateException("Unable to find or open a transaction: " + ex.getMessage(), ex);
                }
                if (!newTx) {
                    // rethrow TransactionRequiredException if UserTransaction was not found or started
                    throw e;
                }
            }
            if( newTx ) {
                return ut;
            }
     }
     return null;
 }
   
 protected static UserTransaction findUserTransaction() {
     InitialContext context = null;
     try {
         context = new InitialContext();
         return (UserTransaction) context.lookup( "java:comp/UserTransaction" );
     } catch ( NamingException ex ) {
        
         for (String utLookup : KNOWN_UT_JNDI_KEYS) {
             if (utLookup != null) {
                    try {
                        UserTransaction ut = (UserTransaction) context.lookup(utLookup);
                        return ut;
                    } catch (NamingException e) {
                        logger.debug("User Transaction not found in JNDI under {}", utLookup);
                       
                    }
             }
         }
         logger.warn("No user transaction found under known names");
         return null;
     }
 }   
   
 private void leaveTransaction(EntityManager em, Object transaction) {
     if( isJTA ) {
         try {
             if( transaction != null ) {
                 // There's a tx running, close it.
                 ((UserTransaction) transaction).commit();
             }
         } catch(Exception e) {
             logger.error("Unable to commit transaction: ", e);
         }
     } else {
         if( transaction != null ) {
             ((EntityTransaction) transaction).commit();
         }
     }
     if (!sharedEM) {
         try { 
             em.close();
         } catch( Exception e ) {
             logger.error("Unable to close created EntityManager: {}", e.getMessage(), e);
         }
     }
 }   

  ...
}   











-
-
-
-
************ 
*  PER_REQUEST :
*
*

2015-11-19 12:18:47,412 ERROR [es.prototipo.workflow.api.jbpmPrototipoAPI.server.prototipoJbpmApiServiceImpl] (default task-37) Unable to commit transaction: : javax.transaction.RollbackException: ARJUNA016053: Could not commit transaction.
    at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1178)
    at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:126)
    at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)
    at org.jboss.tm.usertx.client.ServerVMClientUserTransaction.commit(ServerVMClientUserTransaction.java:173)
    at es.prototipo.workflow.api.jbpmPrototipoAPI.server.prototipoJbpmApiServiceImpl.leaveTransaction(prototipoJbpmApiServiceImpl.java:1019) [jbpm620prototipo-1.0-src.jar:]
    at es.prototipo.workflow.api.jbpmPrototipoAPI.server.prototipoJbpmApiServiceImpl.initProcess(prototipoJbpmApiServiceImpl.java:250) [jbpm620prototipo-1.0-src.jar:]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_67]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_67]
    at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
    at org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
    at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
    at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45) [wildfly-ee-8.1.0.Final.jar:8.1.0.Final]
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
    at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.as.webservices.deployers.WSComponentInstanceAssociationInterceptor.processInvocation(WSComponentInstanceAssociationInterceptor.java:49)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:326)
    at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:448)
    at org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:326)
    at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
    at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:185)
    at org.jboss.as.webservices.invocation.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:130)
    at org.jboss.wsf.stack.cxf.JBossWSInvoker.performInvocation(JBossWSInvoker.java:149)
    at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:104) [cxf-api-2.7.11.jar:2.7.11]
    at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.invoke(AbstractJAXWSMethodInvoker.java:237) [cxf-rt-frontend-jaxws-2.7.11.jar:2.7.11]
    at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:69) [cxf-rt-frontend-jaxws-2.7.11.jar:2.7.11]
    at org.jboss.wsf.stack.cxf.JBossWSInvoker.invoke(JBossWSInvoker.java:129)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) [cxf-api-2.7.11.jar:2.7.11]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_67]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_67]
    at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37) [cxf-api-2.7.11.jar:2.7.11]
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:107) [cxf-api-2.7.11.jar:2.7.11]
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) [cxf-api-2.7.11.jar:2.7.11]
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) [cxf-api-2.7.11.jar:2.7.11]
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:241) [cxf-rt-transports-http-2.7.11.jar:2.7.11]
    at org.jboss.wsf.stack.cxf.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:93)
    at org.jboss.wsf.stack.cxf.transport.ServletHelper.callRequestHandler(ServletHelper.java:133)
    at org.jboss.wsf.stack.cxf.CXFServletExt.invoke(CXFServletExt.java:88)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286) [cxf-rt-transports-http-2.7.11.jar:2.7.11]
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206) [cxf-rt-transports-http-2.7.11.jar:2.7.11]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
    at org.jboss.wsf.stack.cxf.CXFServletExt.service(CXFServletExt.java:136)
    at org.jboss.wsf.spi.deployment.WSFServlet.service(WSFServlet.java:140) [jbossws-spi-2.2.2.Final.jar:2.2.2.Final]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at org.uberfire.ext.security.server.SecureHeadersFilter.doFilter(SecureHeadersFilter.java:53) [uberfire-servlet-security-0.5.0.Final.jar:0.5.0.Final]
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at org.uberfire.ext.security.server.SecurityIntegrationFilter.doFilter(SecurityIntegrationFilter.java:64) [uberfire-servlet-security-0.5.0.Final.jar:0.5.0.Final]
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_67]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_67]
    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_67]
Caused by: org.hibernate.engine.transaction.jta.platform.spi.JtaPlatformException: Could not access JTA Transaction to register synchronization
    at org.hibernate.engine.transaction.jta.platform.internal.TransactionManagerBasedSynchronizationStrategy.registerSynchronization(TransactionManagerBasedSynchronizationStrategy.java:50) [hibernate-core-4.3.5.Final.jar:4.3.5.Final]
    at org.hibernate.engine.transaction.jta.platform.internal.AbstractJtaPlatform.registerSynchronization(AbstractJtaPlatform.java:143) [hibernate-core-4.3.5.Final.jar:4.3.5.Final]
    at org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.attemptToRegisterJtaSync(TransactionCoordinatorImpl.java:267) [hibernate-core-4.3.5.Final.jar:4.3.5.Final]
    at org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.pulse(TransactionCoordinatorImpl.java:289) [hibernate-core-4.3.5.Final.jar:4.3.5.Final]
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1584) [hibernate-entitymanager-4.3.5.Final.jar:4.3.5.Final]
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.postInit(AbstractEntityManagerImpl.java:210) [hibernate-entitymanager-4.3.5.Final.jar:4.3.5.Final]
    at org.hibernate.jpa.internal.EntityManagerImpl.<init>(EntityManagerImpl.java:91) [hibernate-entitymanager-4.3.5.Final.jar:4.3.5.Final]
    at org.hibernate.jpa.internal.EntityManagerFactoryImpl.internalCreateEntityManager(EntityManagerFactoryImpl.java:345) [hibernate-entitymanager-4.3.5.Final.jar:4.3.5.Final]
    at org.hibernate.jpa.internal.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:313) [hibernate-entitymanager-4.3.5.Final.jar:4.3.5.Final]
    at org.drools.persistence.jpa.AbstractPersistenceContextManager.getApplicationScopedEntityManager(AbstractPersistenceContextManager.java:75) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.persistence.jpa.JpaPersistenceContextManager.getApplicationScopedPersistenceContext(JpaPersistenceContextManager.java:55) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.persistence.SingleSessionCommandService$TransactionInterceptor.execute(SingleSessionCommandService.java:513) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.persistence.jpa.OptimisticLockRetryInterceptor.execute(OptimisticLockRetryInterceptor.java:73) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.persistence.jta.TransactionLockInterceptor.execute(TransactionLockInterceptor.java:67) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:358) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession.execute(CommandBasedStatefulKnowledgeSession.java:490) [drools-core-6.2.0.Final.jar:6.2.0.Final]
    at org.jbpm.runtime.manager.impl.tx.DestroySessionTransactionSynchronization.beforeCompletion(DestroySessionTransactionSynchronization.java:41) [jbpm-runtime-manager-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.persistence.TransactionSynchronizationContainer.beforeCompletion(TransactionSynchronizationContainer.java:23) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.persistence.jta.JtaTransactionSynchronizationAdapter.beforeCompletion(JtaTransactionSynchronizationAdapter.java:39) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
    at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:76)
    at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:358)
    at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:91)
    at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:162)
    at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1166)
    ... 95 more
Caused by: java.lang.IllegalStateException: ARJUNA016082: Synchronizations are not allowed! Transaction status isActionStatus.RUNNING
    at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.registerSynchronizationImple(TransactionImple.java:375)
    at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.registerSynchronization(TransactionImple.java:352)
    at org.hibernate.engine.transaction.jta.platform.internal.TransactionManagerBasedSynchronizationStrategy.registerSynchronization(TransactionManagerBasedSynchronizationStrategy.java:47) [hibernate-core-4.3.5.Final.jar:4.3.5.Final]
    ... 120 more














-
-
-
-
************ 
*
*    PER_PROCESS_INSTANCE :
*
*
2015-11-19 12:39:43,883 WARN  [com.arjuna.ats.arjuna] (default task-18) ARJUNA012125: TwoPhaseCoordinator.beforeCompletion - failed for SynchronizationImple< 0:ffff0a0a018d:120d3812:564da943:2119, org.drools.persistence.jta.JtaTransactionSynchronizationAdapter@72c408 >: java.lang.IllegalStateException: Illegal method call. This session was previously disposed.
    at org.drools.core.impl.StatefulKnowledgeSessionImpl.checkAlive(StatefulKnowledgeSessionImpl.java:1221) [drools-core-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.core.impl.StatefulKnowledgeSessionImpl.getId(StatefulKnowledgeSessionImpl.java:1205) [drools-core-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.core.marshalling.impl.ProtobufOutputMarshaller.serializeSession(ProtobufOutputMarshaller.java:214) [drools-core-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.core.marshalling.impl.ProtobufOutputMarshaller.writeSession(ProtobufOutputMarshaller.java:120) [drools-core-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.core.marshalling.impl.ProtobufMarshaller.marshall(ProtobufMarshaller.java:155) [drools-core-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.core.marshalling.impl.ProtobufMarshaller.marshall(ProtobufMarshaller.java:140) [drools-core-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.persistence.SessionMarshallingHelper.getSnapshot(SessionMarshallingHelper.java:64) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.persistence.info.SessionInfo.transform(SessionInfo.java:81) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.persistence.TriggerUpdateTransactionSynchronization.beforeCompletion(TriggerUpdateTransactionSynchronization.java:42) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.persistence.jta.JtaTransactionSynchronizationAdapter.beforeCompletion(JtaTransactionSynchronizationAdapter.java:39) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
    at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:76)
    at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:358)
    at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:91)
    at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:162)
    at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1166)
    at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:126)
    at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)
    at org.jboss.tm.usertx.client.ServerVMClientUserTransaction.commit(ServerVMClientUserTransaction.java:173)
    at es.prototipo.workflow.api.jbpmPrototipoAPI.server.prototipoJbpmApiServiceImpl.leaveTransaction(prototipoJbpmApiServiceImpl.java:1019) [jbpm620prototipo-1.0-src.jar:]
    at es.prototipo.workflow.api.jbpmPrototipoAPI.server.prototipoJbpmApiServiceImpl.initProcess(prototipoJbpmApiServiceImpl.java:250) [jbpm620prototipo-1.0-src.jar:]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_67]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_67]
    at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
    at org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
    at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
    at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45) [wildfly-ee-8.1.0.Final.jar:8.1.0.Final]
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
    at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.as.webservices.deployers.WSComponentInstanceAssociationInterceptor.processInvocation(WSComponentInstanceAssociationInterceptor.java:49)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:326)
    at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:448)
    at org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:326)
    at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
    at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:185)
    at org.jboss.as.webservices.invocation.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:130)
    at org.jboss.wsf.stack.cxf.JBossWSInvoker.performInvocation(JBossWSInvoker.java:149)
    at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:104) [cxf-api-2.7.11.jar:2.7.11]
    at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.invoke(AbstractJAXWSMethodInvoker.java:237) [cxf-rt-frontend-jaxws-2.7.11.jar:2.7.11]
    at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:69) [cxf-rt-frontend-jaxws-2.7.11.jar:2.7.11]
    at org.jboss.wsf.stack.cxf.JBossWSInvoker.invoke(JBossWSInvoker.java:129)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) [cxf-api-2.7.11.jar:2.7.11]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_67]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_67]
    at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37) [cxf-api-2.7.11.jar:2.7.11]
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:107) [cxf-api-2.7.11.jar:2.7.11]
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) [cxf-api-2.7.11.jar:2.7.11]
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) [cxf-api-2.7.11.jar:2.7.11]
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:241) [cxf-rt-transports-http-2.7.11.jar:2.7.11]
    at org.jboss.wsf.stack.cxf.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:93)
    at org.jboss.wsf.stack.cxf.transport.ServletHelper.callRequestHandler(ServletHelper.java:133)
    at org.jboss.wsf.stack.cxf.CXFServletExt.invoke(CXFServletExt.java:88)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286) [cxf-rt-transports-http-2.7.11.jar:2.7.11]
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206) [cxf-rt-transports-http-2.7.11.jar:2.7.11]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
    at org.jboss.wsf.stack.cxf.CXFServletExt.service(CXFServletExt.java:136)
    at org.jboss.wsf.spi.deployment.WSFServlet.service(WSFServlet.java:140) [jbossws-spi-2.2.2.Final.jar:2.2.2.Final]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at org.uberfire.ext.security.server.SecureHeadersFilter.doFilter(SecureHeadersFilter.java:53) [uberfire-servlet-security-0.5.0.Final.jar:0.5.0.Final]
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at org.uberfire.ext.security.server.SecurityIntegrationFilter.doFilter(SecurityIntegrationFilter.java:64) [uberfire-servlet-security-0.5.0.Final.jar:0.5.0.Final]
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_67]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_67]
    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_67]

2015-11-19 12:39:44,113 WARN  [org.hibernate.loader.Loader] (EJB default - 7) HHH000444: Encountered request for locking however dialect reports that database prefers locking be done in a separate select (follow-on locking); results will be locked after initial query executes
2015-11-19 12:39:44,034 ERROR [es.prototipo.workflow.api.jbpmPrototipoAPI.server.prototipoJbpmApiServiceImpl] (default task-18) Unable to commit transaction: : javax.transaction.RollbackException: ARJUNA016053: Could not commit transaction.
    at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1178)
    at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:126)
    at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)
    at org.jboss.tm.usertx.client.ServerVMClientUserTransaction.commit(ServerVMClientUserTransaction.java:173)
    at es.prototipo.workflow.api.jbpmPrototipoAPI.server.prototipoJbpmApiServiceImpl.leaveTransaction(prototipoJbpmApiServiceImpl.java:1019) [jbpm620prototipo-1.0-src.jar:]
    at es.prototipo.workflow.api.jbpmPrototipoAPI.server.prototipoJbpmApiServiceImpl.initProcess(prototipoJbpmApiServiceImpl.java:250) [jbpm620prototipo-1.0-src.jar:]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_67]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_67]
    at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
    at org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
    at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
    at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45) [wildfly-ee-8.1.0.Final.jar:8.1.0.Final]
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
    at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.as.webservices.deployers.WSComponentInstanceAssociationInterceptor.processInvocation(WSComponentInstanceAssociationInterceptor.java:49)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:326)
    at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:448)
    at org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:326)
    at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80)
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
    at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
    at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:185)
    at org.jboss.as.webservices.invocation.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:130)
    at org.jboss.wsf.stack.cxf.JBossWSInvoker.performInvocation(JBossWSInvoker.java:149)
    at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:104) [cxf-api-2.7.11.jar:2.7.11]
    at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.invoke(AbstractJAXWSMethodInvoker.java:237) [cxf-rt-frontend-jaxws-2.7.11.jar:2.7.11]
    at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:69) [cxf-rt-frontend-jaxws-2.7.11.jar:2.7.11]
    at org.jboss.wsf.stack.cxf.JBossWSInvoker.invoke(JBossWSInvoker.java:129)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) [cxf-api-2.7.11.jar:2.7.11]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_67]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_67]
    at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37) [cxf-api-2.7.11.jar:2.7.11]
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:107) [cxf-api-2.7.11.jar:2.7.11]
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) [cxf-api-2.7.11.jar:2.7.11]
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) [cxf-api-2.7.11.jar:2.7.11]
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:241) [cxf-rt-transports-http-2.7.11.jar:2.7.11]
    at org.jboss.wsf.stack.cxf.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:93)
    at org.jboss.wsf.stack.cxf.transport.ServletHelper.callRequestHandler(ServletHelper.java:133)
    at org.jboss.wsf.stack.cxf.CXFServletExt.invoke(CXFServletExt.java:88)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286) [cxf-rt-transports-http-2.7.11.jar:2.7.11]
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206) [cxf-rt-transports-http-2.7.11.jar:2.7.11]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
    at org.jboss.wsf.stack.cxf.CXFServletExt.service(CXFServletExt.java:136)
    at org.jboss.wsf.spi.deployment.WSFServlet.service(WSFServlet.java:140) [jbossws-spi-2.2.2.Final.jar:2.2.2.Final]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at org.uberfire.ext.security.server.SecureHeadersFilter.doFilter(SecureHeadersFilter.java:53) [uberfire-servlet-security-0.5.0.Final.jar:0.5.0.Final]
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at org.uberfire.ext.security.server.SecurityIntegrationFilter.doFilter(SecurityIntegrationFilter.java:64) [uberfire-servlet-security-0.5.0.Final.jar:0.5.0.Final]
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_67]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_67]
    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_67]
Caused by: java.lang.IllegalStateException: Illegal method call. This session was previously disposed.
    at org.drools.core.impl.StatefulKnowledgeSessionImpl.checkAlive(StatefulKnowledgeSessionImpl.java:1221) [drools-core-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.core.impl.StatefulKnowledgeSessionImpl.getId(StatefulKnowledgeSessionImpl.java:1205) [drools-core-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.core.marshalling.impl.ProtobufOutputMarshaller.serializeSession(ProtobufOutputMarshaller.java:214) [drools-core-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.core.marshalling.impl.ProtobufOutputMarshaller.writeSession(ProtobufOutputMarshaller.java:120) [drools-core-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.core.marshalling.impl.ProtobufMarshaller.marshall(ProtobufMarshaller.java:155) [drools-core-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.core.marshalling.impl.ProtobufMarshaller.marshall(ProtobufMarshaller.java:140) [drools-core-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.persistence.SessionMarshallingHelper.getSnapshot(SessionMarshallingHelper.java:64) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.persistence.info.SessionInfo.transform(SessionInfo.java:81) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.persistence.TriggerUpdateTransactionSynchronization.beforeCompletion(TriggerUpdateTransactionSynchronization.java:42) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
    at org.drools.persistence.jta.JtaTransactionSynchronizationAdapter.beforeCompletion(JtaTransactionSynchronizationAdapter.java:39) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
    at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:76)
    at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:358)
    at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:91)
    at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:162)
    at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1166)
    ... 95 more




Maciej Swiderski

unread,
Nov 19, 2015, 12:09:23 PM11/19/15
to javi....@gmail.com, jBPM Usage
remove all the code that you have to manage transaction and you should be good, meaning this is how your initProcess method should look like:

    @Override
    public long initProcess(String deploymentId, String processId,
            Long idPaciente, Long idProceso, Long idActo,
            Parameters parametrosAdicionales) throws Exception {

        if (parametrosAdicionales == null) {
            parametrosAdicionales = new Parameters();
        }
        Map<String, Object> params = new HashMap(parametrosAdicionales.getParametros());
        params.put(WorkflowParameterNames.idPaciente, long2str(idPaciente));
        params.put(WorkflowParameterNames.idProceso, long2str(idProceso));
        params.put(WorkflowParameterNames.idActo, long2str(idActo));
        
        long processInstanceId = getProcessService().startProcess(deploymentId,processId, params);

        return processInstanceId;            
    }

Maciej

--
You received this message because you are subscribed to the Google Groups "jBPM Usage" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jbpm-usage+...@googlegroups.com.
To post to this group, send email to jbpm-...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jbpm-usage/b2a86637-bf4c-49c9-bfe4-ad58671d5dae%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

javi....@gmail.com

unread,
Nov 25, 2015, 2:14:07 PM11/25/15
to jBPM Usage, javi....@gmail.com
Thank you Maciej,

It almost works (for create process instance, and confirm task, even in sub-process-instance (reusable-subprocesses))

I created a webservice because I have added 2 tables to your scheme for quick query for some attributes of the task or process.

In my webservice I have a method to change some attributes of several task/process in the variables blobs fields and in my 2 tables (in the same transaction)

it worked under SINGLETON Runtime Strategy WITH joinTransaction and leaveTransaction.

But following your advise of "remove all the code that you have to manage transaction"  it fails with: JBAS015594: Method invocation failed with exception: Process instance 5356[workflow.creacionobjetoclinico] is disconnected.: java.lang.RuntimeException: Process instance 5356[workflow.creacionobjetoclinico] is disconnected.


What I am doing wrong again?

Thank you

Javi.



    private void changeIdentifVariableProceso( ChangeTaskVariableInfo changeTaskVariableInfo,PrototipoProcess prototipoProcessInit,EntityManager em,List<ChangedVariableInfo> cambiados) {
        ProcessInstance processInstance=processService.getProcessInstance(new Long(prototipoProcessInit.getWfProcessInstanceId()));
        WorkflowProcessInstance workflowProcessInstance=(WorkflowProcessInstance)processInstance;   
        long processInstanceId=workflowProcessInstance.getId();
        Object valorActual=workflowProcessInstance.getVariable(changeTaskVariableInfo.getNombreVariable());
        if (valorActual instanceof String) {
            String valorActualS=(String)valorActual;
            PrototipoProcess prototipoProcess=em.find(PrototipoProcess.class, ""+processInstanceId);
            if (valorActualS.equals(changeTaskVariableInfo.getValorInicial()) && procesoCumpleCriterios(prototipoProcess,changeTaskVariableInfo.getChangeTaskVariableFilter()) ) {
                workflowProcessInstance.setVariable(changeTaskVariableInfo.getNombreVariable(), changeTaskVariableInfo.getValorFinal());
               
                This last line fails with: JBAS015594: Method invocation failed with exception: Process instance 5356[workflow.creacionobjetoclinico] is disconnected.: java.lang.RuntimeException: Process instance 5356[workflow.creacionobjetoclinico] is disconnected.
               






2015-11-25 19:24:11,140 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.dao.Query] (default task-10) buscando searchProcess org.hibernate.jpa.internal.EntityManagerImpl@18580a9
2015-11-25 19:24:11,143 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.dao.Query] (default task-10)  DatoConsultado { wfProcessInstanceId:5356 ,  wfProcessId:workflow.creacionobjetoclinico@prototipojbpm620v2:protocoloV2:1.0.56 ,  wfProcessName:creacionobjetoclinico ,  wfProcessParentInstanceid:5355 ,wfProcessInstanceIdOrig:5355 ,  wfProcessIdOrig:protocoloV2.fiebre@prototipojbpm620v2:protocoloV2:1.0.56 ,  wfProcessNameOrig:fiebre ,  wfCreated:1448475563701 ,  idPaciente:199732 ,  idProceso:283434 ,  idActo:2251770 }
2015-11-25 19:24:11,143 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.dao.Query] (default task-10)  DatoConsultado { wfProcessInstanceId:5357 ,  wfProcessId:workflow.nivel3@prototipojbpm620v2:protocoloV2:1.0.56 ,  wfProcessName:nivel3 ,  wfProcessParentInstanceid:5356 ,wfProcessInstanceIdOrig:5355 ,  wfProcessIdOrig:protocoloV2.fiebre@prototipojbpm620v2:protocoloV2:1.0.56 ,  wfProcessNameOrig:fiebre ,  wfCreated:1448475566818 ,  idPaciente:199732 ,  idProceso:283434 ,  idActo:2251770 }
2015-11-25 19:24:11,143 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.dao.Query] (default task-10)  DatoConsultado { wfProcessInstanceId:5355 ,  wfProcessId:protocoloV2.fiebre@prototipojbpm620v2:protocoloV2:1.0.56 ,  wfProcessName:fiebre ,  wfProcessParentInstanceid:0 ,wfProcessInstanceIdOrig:null ,  wfProcessIdOrig:null ,  wfProcessNameOrig:null ,  wfCreated:1448475557282 ,  idPaciente:199732 ,  idProceso:283434 ,  idActo:2251770 }
2015-11-25 19:24:11,143 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.dao.Query] (default task-10) buscando searchProcess org.hibernate.jpa.internal.EntityManagerImpl@18580a9
2015-11-25 19:24:11,149 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.dao.Query] (default task-10)  DatoConsultado { wfTaskId:3356 ,  wfProcessInstanceId:5357 ,  wfTaskname:tareanivel3 ,  wfProcessId:workflow.nivel3@prototipojbpm620v2:protocoloV2:1.0.56 ,  wfProcessName:nivel3 ,  wfProcessInstanceIdOrig:5356 ,  wfProcessIdOrig:protocoloV2.fiebre@prototipojbpm620v2:protocoloV2:1.0.56 ,  wfProcessNameOrig:fiebre ,  wfPriority:0 ,  wfCreated:1448475566814 ,  wfSkippable:S ,  plazoRecomendadoEjecucion:null ,  idPaciente:199732 ,  idProceso:283434 ,  idActo:2251770 ,  tipoTarea:nivel ,  tipoPlantilla:null ,  idUbicacion:null ,  _owners: [U:administrador]  }
2015-11-25 19:24:11,149 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.dao.Query] (default task-10) buscando searchProcess org.hibernate.jpa.internal.EntityManagerImpl@18580a9
2015-11-25 19:24:11,151 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.dao.Query] (default task-10) buscando searchProcess org.hibernate.jpa.internal.EntityManagerImpl@18580a9
2015-11-25 19:24:11,153 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.dao.Query] (default task-10)  DatoConsultado { wfTaskId:3356 ,  wfProcessInstanceId:5357 ,  wfTaskname:tareanivel3 ,  wfProcessId:workflow.nivel3@prototipojbpm620v2:protocoloV2:1.0.56 ,  wfProcessName:nivel3 ,  wfProcessInstanceIdOrig:5356 ,  wfProcessIdOrig:protocoloV2.fiebre@prototipojbpm620v2:protocoloV2:1.0.56 ,  wfProcessNameOrig:fiebre ,  wfPriority:0 ,  wfCreated:1448475566814 ,  wfSkippable:S ,  plazoRecomendadoEjecucion:null ,  idPaciente:199732 ,  idProceso:283434 ,  idActo:2251770 ,  tipoTarea:nivel ,  tipoPlantilla:null ,  idUbicacion:null ,  _owners: [U:administrador]  }
2015-11-25 19:24:11,153 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.dao.Query] (default task-10) buscando searchProcess org.hibernate.jpa.internal.EntityManagerImpl@18580a9
2015-11-25 19:24:11,185 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.jbpmEventlisteners.PrototipoTaskEventListener] (default task-10) new jbpmEventlisteners.PrototipoTaskEventListener. Registrando API Prototipo Task Listener
2015-11-25 19:24:11,187 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.workItemHandlers.PrototipoAsyncHandlerProducer] (default task-10) PrototipoAsyncHandlerProducer.getWorkItemHandlers
2015-11-25 19:24:11,187 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.workItemHandlers.PrototipoAsyncHandlerProducer] (default task-10) PrototipoAsyncHandlerProducer.getWorkItemHandlers  handlers put queryToPrototipoAsync
2015-11-25 19:24:11,201 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.workItemHandlers.QueryToPrototipoAsyncWorkItemHandler] (default task-10) new QueryToPrototipoAsyncWorkItemHandler
2015-11-25 19:24:11,201 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.workItemHandlers.QueryToPrototipoAsyncWorkItemHandler] (default task-10) QueryToPrototipoAsyncWorkItemHandler.executorService:org.jbpm.executor.impl.ExecutorServiceImpl@7d33b1
2015-11-25 19:24:11,201 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.workItemHandlers.QueryToPrototipoAsyncWorkItemHandler] (default task-10) QueryToPrototipoAsyncWorkItemHandler.ksession:org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession@171049e
2015-11-25 19:24:11,201 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.workItemHandlers.QueryToPrototipoAsyncWorkItemHandler] (default task-10) QueryToPrototipoAsyncWorkItemHandler.taskService:org.jbpm.services.task.impl.command.CommandBasedTaskService@e64ad7
2015-11-25 19:24:11,201 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.workItemHandlers.QueryToPrototipoAsyncWorkItemHandler] (default task-10) QueryToPrototipoAsyncWorkItemHandler.runtimeManager:org.jbpm.runtime.manager.impl.PerProcessInstanceRuntimeManager@145932d
2015-11-25 19:24:11,201 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.workItemHandlers.QueryToPrototipoAsyncWorkItemHandler] (default task-10) QueryToPrototipoAsyncWorkItemHandler.entityManagerFactory:org.hibernate.jpa.internal.EntityManagerFactoryImpl@95cf30
2015-11-25 19:24:11,206 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.jbpmEventlisteners.PrototipoProcessEventListenerProducer] (default task-10) new jbpmEventlisteners.PrototipoProcessEventListenerProducer. Registrando API Prototipo Process Listener Producer
2015-11-25 19:24:11,207 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.jbpmEventlisteners.PrototipoProcessEventListenerProducer] (default task-10) jbpmEventlisteners.PrototipoProcessEventListenerProducer.getEventListeners(prototipojbpm620v2:protocoloV2:1.0.56) . Registrando API Prototipo Process Listener Producer -> API Prototipo Process Listener
2015-11-25 19:24:11,219 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.PrototipoJbpmApiServiceImpl] (default task-10) proceso para ver su CumpleCriterios : { wfProcessInstanceId:5356 ,  wfProcessId:workflow.creacionobjetoclinico@prototipojbpm620v2:protocoloV2:1.0.56 ,  wfProcessName:creacionobjetoclinico ,  wfProcessParentInstanceid:5355 ,wfProcessInstanceIdOrig:5355 ,  wfProcessIdOrig:protocoloV2.fiebre@prototipojbpm620v2:protocoloV2:1.0.56 ,  wfProcessNameOrig:fiebre ,  wfCreated:1448475563701 ,  idPaciente:199732 ,  idProceso:283434 ,  idActo:2251770 }
2015-11-25 19:24:11,219 WARN  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.PrototipoJbpmApiServiceImpl] (default task-10) ** afterVariableChanged procesaChangeTaskVariableInfo CUMPLE LOS CRITERIOS. cambiando PrototipoProcess idProcessInstance:5356 :: { wfProcessInstanceId:5356 ,  wfProcessId:workflow.creacionobjetoclinico@prototipojbpm620v2:protocoloV2:1.0.56 ,  wfProcessName:creacionobjetoclinico ,  wfProcessParentInstanceid:5355 ,wfProcessInstanceIdOrig:5355 ,  wfProcessIdOrig:protocoloV2.fiebre@prototipojbpm620v2:protocoloV2:1.0.56 ,  wfProcessNameOrig:fiebre ,  wfCreated:1448475563701 ,  idPaciente:199732 ,  idProceso:283434 ,  idActo:2251770 }
2015-11-25 19:24:11,220 INFO  [es.prototipo.workflow.api.jbpmPrototipoAPI.server.PrototipoJbpmApiServiceImpl] (default task-10) changeIdentifVariable tiempoTotal:82 tiempoEsperaSync:0
2015-11-25 19:24:11,232 ERROR [org.jboss.as.webservices.invocation.InvocationHandlerJAXWS] (default task-10) JBAS015594: Method invocation failed with exception: Process instance 5356[workflow.creacionobjetoclinico] is disconnected.: java.lang.RuntimeException: Process instance 5356[workflow.creacionobjetoclinico] is disconnected.
    at org.jbpm.process.instance.impl.ProcessInstanceImpl.getProcess(ProcessInstanceImpl.java:100) [jbpm-flow-6.2.0.Final.jar:6.2.0.Final]
    at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.setVariable(WorkflowProcessInstanceImpl.java:284) [jbpm-flow-6.2.0.Final.jar:6.2.0.Final]
    at es.prototipo.workflow.api.jbpmPrototipoAPI.server.PrototipoJbpmApiServiceWorker.changeIdentifVariableProceso(PrototipoJbpmApiServiceWorker.java:657) [jbpm620Prototipo-1.0-src.jar:]
    at es.prototipo.workflow.api.jbpmPrototipoAPI.server.PrototipoJbpmApiServiceWorker.changeIdentifVariable(PrototipoJbpmApiServiceWorker.java:598) [jbpm620Prototipo-1.0-src.jar:]
    at es.prototipo.workflow.api.jbpmPrototipoAPI.server.PrototipoJbpmApiServiceWorker.changeIdentifVariable(PrototipoJbpmApiServiceWorker.java:505) [jbpm620Prototipo-1.0-src.jar:]
    at es.prototipo.workflow.api.jbpmPrototipoAPI.server.PrototipoJbpmApiServiceImpl.changeIdentifVariable(PrototipoJbpmApiServiceImpl.java:198) [jbpm620Prototipo-1.0-src.jar:]
2015-11-25 19:24:11,358 INFO  [org.apache.cxf.phase.PhaseInterceptorChain] (default task-10) Application {http://workflow.prototipo.org/wsdl}PrototipoJbpmApiService#{http://workflow.prototipo.org/wsdl}changeIdentifVariable has thrown exception, unwinding now: java.lang.RuntimeException: Process instance 5356[workflow.creacionobjetoclinico] is disconnected.



Maciej Swiderski

unread,
Nov 25, 2015, 2:20:17 PM11/25/15
to javi....@gmail.com, jBPM Usage
you should enclose all such logic in command and thus it will be executed in transaction and you won’t run into process isntance is disconnected, see variables section in the docs: http://docs.jboss.org/jbpm/v6.3/userguide/ch06.html#d0e3731

Maciej
--
You received this message because you are subscribed to the Google Groups "jBPM Usage" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jbpm-usage+...@googlegroups.com.
To post to this group, send email to jbpm-...@googlegroups.com.

javi....@gmail.com

unread,
Nov 26, 2015, 4:05:07 AM11/26/15
to jBPM Usage, javi....@gmail.com
Hi!

Is there a way to get a KieSession independently of the deploymentId? The one that I know is:
     /* deploymentService this was inyected into webservice : */  @Inject private DeploymentService deploymentService;
    DeployedUnit deployedUnit = deploymentService.getDeployedUnit(deploymentId); 
    RuntimeManager runtimeManager= deployedUnit.getRuntimeManager();
    RuntimeEngine engine = runtimeManager.getRuntimeEngine(ProcessInstanceIdContext.get());
    KieSession ksession = engine.getKieSession();

If not, can I change variables in several process/task (maybe with different deploymentId), using the execute command method of one kieSession obtained with a concrete deploymentId, all in the same transaction?
(I am supposing now that transaction boundaries are controlled by  the execution command of the kieSession)
 [or are the transaction boundaries controlled by my webmethod?]


I am using 6.2 (not 6.3). in your example:
  KieSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
could be replace by
  KieSession ksession = ((KnowledgeCommandContext) context).getKieSession();
?


Thank you very much.

Javi.

Maciej Swiderski

unread,
Nov 26, 2015, 5:26:14 AM11/26/15
to javi....@gmail.com, jBPM Usage
no, you must use correct ksession that is bound to given process instance - whenever you use per process instance strategy
On 26.11.2015, at 10:05, javi....@gmail.com wrote:

Hi!

Is there a way to get a KieSession independently of the deploymentId? The one that I know is:
     /* deploymentService this was inyected into webservice : */  @Inject private DeploymentService deploymentService;
    DeployedUnit deployedUnit = deploymentService.getDeployedUnit(deploymentId); 
    RuntimeManager runtimeManager= deployedUnit.getRuntimeManager();
    RuntimeEngine engine = runtimeManager.getRuntimeEngine(ProcessInstanceIdContext.get());
    KieSession ksession = engine.getKieSession();

If not, can I change variables in several process/task (maybe with different deploymentId), using the execute command method of one kieSession obtained with a concrete deploymentId, all in the same transaction?
(I am supposing now that transaction boundaries are controlled by  the execution command of the kieSession)
 [or are the transaction boundaries controlled by my webmethod?]


I am using 6.2 (not 6.3). in your example:
  KieSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
could be replace by
  KieSession ksession = ((KnowledgeCommandContext) context).getKieSession();
?
yes, use getKieSession() as this is version 6 api

Maciej

javi....@gmail.com

unread,
Nov 26, 2015, 8:47:52 AM11/26/15
to jBPM Usage, javi....@gmail.com

Then, I can not force to have a unique transaction that controls the changes needed in all the differents process instances?
...

Maciej Swiderski

unread,
Nov 26, 2015, 1:26:59 PM11/26/15
to javi....@gmail.com, jBPM Usage
you can only do this with JTA/UserTransaction so if you enclose all such operations within single tx it should work. Though why to have such tight coupling between process instances?

Maciej
To unsubscribe from this group and stop receiving emails from it, send an email to jbpm-usage+...@googlegroups.com.
To post to this group, send email to jbpm-...@googlegroups.com.

javi....@gmail.com

unread,
Nov 27, 2015, 4:45:40 AM11/27/15
to jBPM Usage, javi....@gmail.com
It doesn’t work.


I have enclose all my previous method code with:

  transaction = (UserTransaction)new InitialContext().lookup("java:comp/UserTransaction");
  transaction.begin();
  EntityManager em=emf.createEntityManager();
      …
  transaction.comit();


and depends how I get the ProcessInstance it fails with:
  (in my commit) : Illegal method call. This session was previously disposed.
  (or getting the ProcessInstance) : Could not commit session: java.lang.IllegalStateException: Invalid session was used for this context org.kie.internal.runtime.manager.context.ProcessInstanceIdContext
 
 
 

If I use this to get the processInstance, it fails when it get to my final commit
   ProcessInstance processInstance=processService.getProcessInstance(new Long(prototipoProcessInit.getWfProcessInstanceId()));

     [exec] 09:52:59,905 WARN  [com.arjuna.ats.arjuna] (default task-59) ARJUNA012125: TwoPhaseCoordinator.beforeCompletion - failed for SynchronizationImple< 0:ffff0a0a018d:fe2737f:56581885:3da, org.drools.persistence.jta.JtaTransactionSynchronizationAdapter@157696e >: java.lang.IllegalStateException: Illegal method call. This session was previously disposed.
     [exec]     at org.drools.core.impl.StatefulKnowledgeSessionImpl.checkAlive(StatefulKnowledgeSessionImpl.java:1221)[drools-core-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.core.impl.StatefulKnowledgeSessionImpl.getId(StatefulKnowledgeSessionImpl.java:1205) [drools-core-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.core.marshalling.impl.ProtobufOutputMarshaller.serializeSession(ProtobufOutputMarshaller.java:214) [drools-core-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.core.marshalling.impl.ProtobufOutputMarshaller.writeSession(ProtobufOutputMarshaller.java:120) [drools-core-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.core.marshalling.impl.ProtobufMarshaller.marshall(ProtobufMarshaller.java:155) [drools-core-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.core.marshalling.impl.ProtobufMarshaller.marshall(ProtobufMarshaller.java:140) [drools-core-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.persistence.SessionMarshallingHelper.getSnapshot(SessionMarshallingHelper.java:64) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.persistence.info.SessionInfo.transform(SessionInfo.java:81) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.persistence.TriggerUpdateTransactionSynchronization.beforeCompletion(TriggerUpdateTransactionSynchronization.java:42) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.persistence.jta.JtaTransactionSynchronizationAdapter.beforeCompletion(JtaTransactionSynchronizationAdapter.java:39) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:76)
     [exec]     at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:358)
     [exec]     at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:91)
     [exec]     at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:162)
     [exec]     at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1166)
     [exec]     at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:126)
     [exec]     at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)
     [exec]     at org.jboss.tm.usertx.client.ServerVMClientUserTransaction.commit(ServerVMClientUserTransaction.java:173)
     [exec]     at es.prototipo.workflow.api.jbpmPrototipoAPI.server.PrototipoJbpmApiServiceWorker.changeIdentifVariable(PrototipoJbpmApiServiceWorker.java:561) [jbpm620Prototipo-1.0-src.jar:]
     [exec]     at es.prototipo.workflow.api.jbpmPrototipoAPI.server.PrototipoJbpmApiServiceImpl.changeIdentifVariable(PrototipoJbpmApiServiceImpl.java:198) [jbpm620Prototipo-1.0-src.jar:]
     [exec]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]


If I use this to get the processInstance, it fails just to getting th processInstance

        KieSession ksession = ((KnowledgeCommandContext) context).getKieSession();
        org.jbpm.process.instance.ProcessInstance processInstance = (org.jbpm.process.instance.ProcessInstance) ksession.getProcessInstance(new Long(prototipoProcessInit.getWfProcessInstanceId()));
               
     [exec] 10:27:22,339 WARN  [org.drools.persistence.SingleSessionCommandService] (default task-42) Could not commit session: java.lang.IllegalStateException: Invalid session was used for this context org.kie.internal.runtime.manager.context.ProcessInstanceIdContext@f78902
     [exec]     at org.jbpm.runtime.manager.impl.PerProcessInstanceRuntimeManager.validate(PerProcessInstanceRuntimeManager.java:168) [jbpm-runtime-manager-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.jbpm.persistence.processinstance.JPAProcessInstanceManager.getProcessInstance(JPAProcessInstanceManager.java:92) [jbpm-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.jbpm.process.instance.ProcessRuntimeImpl.getProcessInstance(ProcessRuntimeImpl.java:274) [jbpm-flow-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.jbpm.process.instance.ProcessRuntimeImpl.getProcessInstance(ProcessRuntimeImpl.java:270) [jbpm-flow-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.core.impl.StatefulKnowledgeSessionImpl.getProcessInstance(StatefulKnowledgeSessionImpl.java:1919) [drools-core-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at es.prototipo.workflow.api.jbpmPrototipoAPI.server.PrototipoJbpmApiServiceWorker$2.execute(PrototipoJbpmApiServiceWorker.java:733) [jbpm620Prototipo-1.0-src.jar:]
     [exec]     at es.prototipo.workflow.api.jbpmPrototipoAPI.server.PrototipoJbpmApiServiceWorker$2.execute(PrototipoJbpmApiServiceWorker.java:719) [jbpm620Prototipo-1.0-src.jar:]
     [exec]     at org.drools.core.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36) [drools-core-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.persistence.SingleSessionCommandService$TransactionInterceptor.execute(SingleSessionCommandService.java:548) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.persistence.jpa.OptimisticLockRetryInterceptor.execute(OptimisticLockRetryInterceptor.java:73) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) [drools-core-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.persistence.jta.TransactionLockInterceptor.execute(TransactionLockInterceptor.java:67) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:358) [drools-persistence-jpa-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession.execute(CommandBasedStatefulKnowledgeSession.java:490) [drools-core-6.2.0.Final.jar:6.2.0.Final]
     [exec]     at es.prototipo.workflow.api.jbpmPrototipoAPI.server.PrototipoJbpmApiServiceWorker.changeIdentifVariableProceso(PrototipoJbpmApiServiceWorker.java:719) [jbpm620Prototipo-1.0-src.jar:]
     [exec]     at es.prototipo.workflow.api.jbpmPrototipoAPI.server.PrototipoJbpmApiServiceWorker.changeIdentifVariable(PrototipoJbpmApiServiceWorker.java:651) [jbpm620Prototipo-1.0-src.jar:]
     [exec]     at es.prototipo.workflow.api.jbpmPrototipoAPI.server.PrototipoJbpmApiServiceWorker.changeIdentifVariable(PrototipoJbpmApiServiceWorker.java:546) [jbpm620Prototipo-1.0-src.jar:]
     [exec]     at es.prototipo.workflow.api.jbpmPrototipoAPI.server.PrototipoJbpmApiServiceImpl.changeIdentifVariable(PrototipoJbpmApiServiceImpl.java:198) [jbpm620Prototipo-1.0-src.jar:]
     [exec]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
...

Maciej Swiderski

unread,
Nov 27, 2015, 4:54:19 AM11/27/15
to javi....@gmail.com, jBPM Usage
provide complete code that you use to interact with the engine


--
You received this message because you are subscribed to the Google Groups "jBPM Usage" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jbpm-usage+...@googlegroups.com.
To post to this group, send email to jbpm-...@googlegroups.com.

javi....@gmail.com

unread,
Dec 22, 2015, 10:27:32 AM12/22/15
to jBPM Usage, javi....@gmail.com
Finally and thanks to the magic and knowledge of Maciej, it worked !!!
The key was get the correct RuntimeEngine
  RuntimeEngine engine = runtimeManager.getRuntimeEngine(ProcessInstanceIdContext.get(wfprocessinstanceid));
with ProcessInstanceIdContext.get() it didn´t work

Thanks again Maciej.

Javi.

Sample of my web service


@ApplicationScoped
@WebService (portName="PrototipoJbpmApiServicePort", serviceName="PrototipoJbpmApiService", targetNamespace="http://workflow.prototipo.org/wsdl", endpointInterface="es.prototipo.workflow.api.jbpmPrototipoAPI.model.PrototipoJbpmApiService" )
public class PrototipoJbpmApiServiceImplx implements PrototipoJbpmApiService {

    private static final Logger logger = LoggerFactory.getLogger(PrototipoJbpmApiServiceImpl.class);

    @Resource  private WebServiceContext webServiceContext;   
    @Inject private ProcessService processService;
    @Inject private UserTaskService userTaskService;
    @Inject private DeploymentService deploymentService;
    @Inject private RuntimeDataService dataService;
    private static final String PERSISTENCE_UNIT_NAME = "org.jbpm.domain";
    @PersistenceUnit(unitName = PERSISTENCE_UNIT_NAME) private EntityManagerFactory emf;     

    @Override   
    public void changeIdentifVariable(final long wfprocessinstanceid, final long wftaskid,final String newValue) throws Exception {
   
        //this is not te real method, is only a test to try to update 2 tables that are not of JBPM and to modify the variables of ProcessInstance and Task.
   
        UserTransaction userTransaction = InitialContext.doLookup("java:comp/UserTransaction");
        userTransaction.begin();
        EntityManager em=emf.createEntityManager();           
       
        // PrototipoProcess and PrototipoTask are not jbpm tables, they have to be defined in wildfly-8.1.0.Final\standalone\deployments\jbpm-console.war\WEB-INF\classes\META-INF\persistence.xml
       
        PrototipoProcess prototipoProcess=em.find(PrototipoProcess.class, ""+wfprocessinstanceid);
        String deploymentId=prototipoProcess.getWfProcessId_WfProcessIdFragment().getDeploymentId();
        prototipoProcess.setMiID(newValue);
        em.merge(prototipoProcess);
       
        changeProcessInstanceVariable(deploymentId, wfprocessinstanceid,"miID", newValue);           
       
        PrototipoTask prototipoTask=em.find(PrototipoTask.class, ""+wftaskid);
        prototipoTask.setMiID(newValue);
        em.merge(prototipoTask);
       
        Map<String, Object> params=new HashMap<String, Object>();
        params.put("miID", newValue);
        changeContentTask(wftaskid,params,em);

        userTransaction.commit();            
    }

   
        private void changeProcessInstanceVariable(String deploymentId,
                final long wfprocessinstanceid, final String variableName,
                final String newValue) {

            DeployedUnit deployedUnit = deploymentService.getDeployedUnit(deploymentId);
            RuntimeManager runtimeManager = deployedUnit.getRuntimeManager();           
            RuntimeEngine engine = runtimeManager.getRuntimeEngine(ProcessInstanceIdContext.get(wfprocessinstanceid)); // CUIDADO,ProcessInstanceIdContext.get() no vale, o es para nuevos
            KieSession ksession = engine.getKieSession();
            // almost as in  http://docs.jboss.org/jbpm/v6.1/userguide/jBPMBPMN2.html#d0e3387
            //    is the same as  http://docs.jboss.org/jbpm/v6.3/userguide/ch06.html#d0e3731
            // getStatefulKnowledgesession is undefined for KnowledgeCommandContext I change that for getKieSession
            Map<String, Object> variables = ksession.execute(new GenericCommand<Map<String, Object>>() {
                public Map<String, Object> execute(Context context) {
                    KieSession ksession = ((KnowledgeCommandContext) context).getKieSession(); // .getStatefulKnowledgesession();
                    org.jbpm.process.instance.ProcessInstance processInstance = (org.jbpm.process.instance.ProcessInstance) ksession.getProcessInstance(wfprocessinstanceid);
                    VariableScopeInstance variableScope = (VariableScopeInstance) processInstance.getContextInstance(VariableScope.VARIABLE_SCOPE);
                    Map<String, Object> variables = variableScope.getVariables();
                    variableScope.setVariable(variableName, newValue);
                    return variables;
                }
            });
        }   

       
        private ContentMarshallerContext getMarshallerContext(Task task) {
            return TaskContentRegistry.get().getMarshallerContext(task);
        }
       
        //JBPM no tiene un metodo para cambiar las variables de las Tasks
        //ESTE METODO ES CASI UN COPY-PASTE DEL (6.1.0-final) org.jbpm.services.task.impl.TaskContentServiceImpl.addContent(long, Map<String, Object>)
        public long changeContentTask(long taskId, Map<String, Object> params,EntityManager em) {
            Task task = em.find(TaskImpl.class, taskId);
            long inputContentId=task.getTaskData().getDocumentContentId();
            Content inputContent=em.find(ContentImpl.class, inputContentId);
            long contentId = -1;
            if (inputContent == null) {
                    ContentMarshallerContext context = getMarshallerContext(task);
                    ContentData outputContentData = ContentMarshallerHelper.marshal(params, context.getEnvironment());
                    Content content = TaskModelProvider.getFactory().newContent();
                    ((InternalContent) content).setContent(outputContentData.getContent());
                    em.persist(content);
                    ((InternalTaskData) task.getTaskData()).setDocumentContentId(content.getId());
                    contentId = content.getId();
                    em.merge(task);
                } else {
                    // I need to merge it if it already exist
                    ContentMarshallerContext context = getMarshallerContext(task);
                    Object unmarshalledObject = ContentMarshallerHelper.unmarshall(inputContent.getContent(), context.getEnvironment(), context.getClassloader());
                    if(unmarshalledObject != null && unmarshalledObject instanceof Map){
                        ((Map<String, Object>)unmarshalledObject).putAll(params);
                    }
                    ContentData outputContentData = ContentMarshallerHelper.marshal(unmarshalledObject, context.getEnvironment());
                    ((InternalContent)inputContent).setContent(outputContentData.getContent());
                    em.persist(inputContent);
                    contentId = inputContentId;
                }
                return contentId;
        }
       
}       


Reply all
Reply to author
Forward
0 new messages