4 Replies Latest reply on Feb 21, 2014 7:19 AM by yogesh02

    Spring+ jbpm5.4+JTA(Bitronix) throwing error

    yogesh02

      Hi Team,

       

      Initially I had configured jbpm5.4 with spring when all my data required to be in same schema, but now requirement is to keep the bpm related data in different table. So i decided to go with JTA using Bitronix in Tomcat server.

      While creating the process (process creation in tables one schema as well as data insert into tables of another schema within a method containing @Transactional(propogation=propogation.required) ) It is throwing an error, here is the log message:

       

       

       

      Hibernate: select user0_.id as id6_0_ from OrganizationalEntity user0_ where user0_.id=? and user0_.DTYPE='User'

      Hibernate: select user0_.id as id6_0_ from OrganizationalEntity user0_ where user0_.id=? and user0_.DTYPE='User'

      Hibernate: select user0_.id as id6_0_ from OrganizationalEntity user0_ where user0_.id=? and user0_.DTYPE='User'

      Hibernate: select user0_.id as id6_0_ from OrganizationalEntity user0_ where user0_.id=? and user0_.DTYPE='User'

      Hibernate: select hibernate_sequence.nextval from dual

      Hibernate: select VAR_INST_LOG_ID_SEQ.nextval from dual

      Hibernate: select VAR_INST_LOG_ID_SEQ.nextval from dual

      Hibernate: select VAR_INST_LOG_ID_SEQ.nextval from dual

      Hibernate: select VAR_INST_LOG_ID_SEQ.nextval from dual

      Hibernate: select VAR_INST_LOG_ID_SEQ.nextval from dual

      Hibernate: select VAR_INST_LOG_ID_SEQ.nextval from dual

      Hibernate: select VAR_INST_LOG_ID_SEQ.nextval from dual

      Hibernate: select VAR_INST_LOG_ID_SEQ.nextval from dual

      Hibernate: select VAR_INST_LOG_ID_SEQ.nextval from dual

      Hibernate: select VAR_INST_LOG_ID_SEQ.nextval from dual

      Hibernate: select PROC_INST_LOG_ID_SEQ.nextval from dual

      Hibernate: select NODE_INST_LOG_ID_SEQ.nextval from dual

      Hibernate: select NODE_INST_LOG_ID_SEQ.nextval from dual

      Hibernate: select NODE_INST_LOG_ID_SEQ.nextval from dual

      Hibernate: select VAR_INST_LOG_ID_SEQ.nextval from dual

      Hibernate: select WORKITEMINFO_ID_SEQ.nextval from dual

      Hibernate: select hibernate_sequence.nextval from dual

      Hibernate: select user_.id from OrganizationalEntity user_ where user_.id=?

      Hibernate: select I18NTEXT_ID_SEQ.nextval from dual

      Hibernate: select I18NTEXT_ID_SEQ.nextval from dual

      Hibernate: select I18NTEXT_ID_SEQ.nextval from dual

      Hibernate: select CONTENT_ID_SEQ.nextval from dual

      In saveSaMain method Repository-Impl.

      In saveSaDetails method Repository-Impl

      In createProcess method end jBPM-Action-Service-Impl with processId63

      Hibernate: insert into SA_MAIN (ccfna_comments, ccfnano, empno, employee_comments, mgr_comments, mgrno, sa_id) values (?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into SA_DETAILS (amount, cheq_no, date_applyon, date_approved_ccfna, date_approved_mgr, disbdate, fin_year, first_install_dt, initiated_date, INSTALLMENTS, invoice_date, invoice_num, invoice_stts, pay_date, pay_stts, pend_dt, req_stts, saladv_stts, second_install_dt, sa_id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into ProcessInstanceInfo (id, lastModificationDate, lastReadDate, processId, processInstanceByteArray, startDate, state, OPTLOCK, InstanceId) values (?, ?, ?, ?, ?, ?, ?, ?, ?)

      Hibernate: update SessionInfo set lastModificationDate=?, rulesByteArray=?, startDate=?, OPTLOCK=? where id=? and OPTLOCK=?

      Hibernate: update ProcessInstanceInfo set id=?, lastModificationDate=?, lastReadDate=?, processId=?, processInstanceByteArray=?, startDate=?, state=?, OPTLOCK=? where InstanceId=? and OPTLOCK=?

      Hibernate: insert into VariableInstanceLog (log_date, processId, processInstanceId, value, variableId, variableInstanceId, id) values (?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into VariableInstanceLog (log_date, processId, processInstanceId, value, variableId, variableInstanceId, id) values (?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into VariableInstanceLog (log_date, processId, processInstanceId, value, variableId, variableInstanceId, id) values (?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into VariableInstanceLog (log_date, processId, processInstanceId, value, variableId, variableInstanceId, id) values (?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into VariableInstanceLog (log_date, processId, processInstanceId, value, variableId, variableInstanceId, id) values (?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into VariableInstanceLog (log_date, processId, processInstanceId, value, variableId, variableInstanceId, id) values (?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into VariableInstanceLog (log_date, processId, processInstanceId, value, variableId, variableInstanceId, id) values (?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into VariableInstanceLog (log_date, processId, processInstanceId, value, variableId, variableInstanceId, id) values (?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into VariableInstanceLog (log_date, processId, processInstanceId, value, variableId, variableInstanceId, id) values (?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into VariableInstanceLog (log_date, processId, processInstanceId, value, variableId, variableInstanceId, id) values (?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into ProcessInstanceLog (end_date, outcome, parentProcessInstanceId, processId, processInstanceId, start_date, status, id) values (?, ?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into NodeInstanceLog (log_date, nodeId, nodeInstanceId, nodeName, processId, processInstanceId, type, id) values (?, ?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into NodeInstanceLog (log_date, nodeId, nodeInstanceId, nodeName, processId, processInstanceId, type, id) values (?, ?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into NodeInstanceLog (log_date, nodeId, nodeInstanceId, nodeName, processId, processInstanceId, type, id) values (?, ?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into VariableInstanceLog (log_date, processId, processInstanceId, value, variableId, variableInstanceId, id) values (?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into WorkItemInfo (creationDate, name, processInstanceId, state, OPTLOCK, workItemByteArray, workItemId) values (?, ?, ?, ?, ?, ?, ?)

      Hibernate: update WorkItemInfo set creationDate=?, name=?, processInstanceId=?, state=?, OPTLOCK=?, workItemByteArray=? where workItemId=? and OPTLOCK=?

      Hibernate: insert into Task (archived, allowedToDelegate, taskInitiator_id, priority, activationTime, actualOwner_id, completedOn, createdBy_id, createdOn, documentAccessType, documentContentId, documentType, expirationTime, faultAccessType, faultContentId, faultName, faultType, outputAccessType, outputContentId, outputType, parentId, previousStatus, processId, processInstanceId, processSessionId, skipable, status, workItemId, OPTLOCK, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

      Hibernate: insert into I18NText (language, shortText, text, id) values (?, ?, ?, ?)

      Hibernate: insert into I18NText (language, shortText, text, id) values (?, ?, ?, ?)

      Hibernate: insert into I18NText (language, shortText, text, id) values (?, ?, ?, ?)

      Hibernate: insert into Content (content, id) values (?, ?)

      Hibernate: update Task set archived=?, allowedToDelegate=?, taskInitiator_id=?, priority=?, activationTime=?, actualOwner_id=?, completedOn=?, createdBy_id=?, createdOn=?, documentAccessType=?, documentContentId=?, documentType=?, expirationTime=?, faultAccessType=?, faultContentId=?, faultName=?, faultType=?, outputAccessType=?, outputContentId=?, outputType=?, parentId=?, previousStatus=?, processId=?, processInstanceId=?, processSessionId=?, skipable=?, status=?, workItemId=?, OPTLOCK=? where id=? and OPTLOCK=?

      11:54:12,493 ERROR SqlExceptionHelper:144 - ORA-02291: integrity constraint (BPM.FK27A9A56CE1EF3A) violated - parent key not found

       

       

      19 Feb, 2014 11:54:12 AM org.apache.catalina.core.StandardWrapperValve invoke

      SEVERE: Servlet.service() for servlet [appServlet] in context with path [/SalaryAdvance] threw exception [Request processing failed; nested exception is org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is bitronix.tm.internal.BitronixRollbackException: RuntimeException thrown during beforeCompletion cycle caused transaction rollback] with root cause

      java.sql.SQLIntegrityConstraintViolationException: ORA-02291: integrity constraint (BPM.FK27A9A56CE1EF3A) violated - parent key not found

       

       

        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447)

        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)

        at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)

        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:505)

        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:223)

        at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)

        at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)

        at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1044)

        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1328)

        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3593)

        at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3674)

        at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1354)

        at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

        at java.lang.reflect.Method.invoke(Method.java:597)

        at bitronix.tm.resource.jdbc.BaseProxyHandlerClass.invoke(BaseProxyHandlerClass.java:64)

        at $Proxy57.executeUpdate(Unknown Source)

        at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

        at java.lang.reflect.Method.invoke(Method.java:597)

        at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)

        at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)

        at $Proxy58.executeUpdate(Unknown Source)

        at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3017)

        at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2915)

        at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3244)

        at org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:113)

        at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)

        at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:354)

        at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:276)

        at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:326)

        at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)

        at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1127)

        at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:325)

        at org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorImpl.beforeCompletion(SynchronizationCallbackCoordinatorImpl.java:104)

        at org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization.beforeCompletion(RegisteredSynchronization.java:53)

        at bitronix.tm.BitronixTransaction.fireBeforeCompletionEvent(BitronixTransaction.java:532)

        at bitronix.tm.BitronixTransaction.commit(BitronixTransaction.java:235)

        at bitronix.tm.BitronixTransactionManager.commit(BitronixTransactionManager.java:143)

        at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1011)

        at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:755)

        at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724)

        at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:475)

        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:270)

        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)

        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)

        at $Proxy66.createProcess(Unknown Source)

        at cmc.iis.salary.controller.JbpmActionController.createProcess(JbpmActionController.java:71)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

        at java.lang.reflect.Method.invoke(Method.java:597)

        at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)

        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)

        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)

        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)

        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)

        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)

        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)

        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)

        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)

        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)

        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)

        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)

        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)

        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)

        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)

        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)

        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)

        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)

        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)

        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)

        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:662)

       

       

       

       

      I'm attaching the persistence.xml file and spring configuration file.

       

      Anybody Please help me.

       

      Thanks in advance.

        • 1. Re: Spring+ jbpm5.4+JTA(Bitronix) throwing error
          ctkcin

          Exception is telling you do not have actualOwner_id value in ORGANIZATIONALENTITY table.

           

          If you are passing user id then make sure that user is added as actual/potential owner. You can not update any task with user which is not actual/potential owner.

          • 2. Re: Spring+ jbpm5.4+JTA(Bitronix) throwing error
            yogesh02

            Thanks for the help Neeraj Srivastave.

             

            One more thing , why the processInstance can't continue at XOR split after use of JTA.

            Earlier It was  working fine Just after use of JTA It is throwing error as:

             

             

            org.jbpm.workflow.instance.WorkflowRuntimeException: [SalaryAdvance:43 - Accept/Reject:5] -- XOR split could not find at least one valid outgoing connection for split Accept/Reject

              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:132)

              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)

              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)

              at org.jbpm.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerCompleted(ExtendedNodeInstanceImpl.java:47)

              at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:216)

              at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:196)

              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.triggerCompleted(WorkItemNodeInstance.java:247)

              at org.jbpm.workflow.instance.node.HumanTaskNodeInstance.triggerCompleted(HumanTaskNodeInstance.java:90)

              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.workItemAborted(WorkItemNodeInstance.java:301)

              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.signalEvent(WorkItemNodeInstance.java:287)

              at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:342)

              at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.abortWorkItem(JPAWorkItemManager.java:154)

              at org.drools.command.runtime.process.AbortWorkItemCommand.execute(AbortWorkItemCommand.java:56)

              at org.drools.command.runtime.process.AbortWorkItemCommand.execute(AbortWorkItemCommand.java:29)

              at org.drools.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)

              at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:373)

              at org.drools.command.impl.CommandBasedStatefulKnowledgeSession$1.abortWorkItem(CommandBasedStatefulKnowledgeSession.java:156)

              at org.jbpm.process.workitem.wsht.GenericHTWorkItemHandler$TaskCompletedHandler.handleCompletedTask(GenericHTWorkItemHandler.java:276)

              at org.jbpm.process.workitem.wsht.GenericHTWorkItemHandler$TaskCompletedHandler.execute(GenericHTWorkItemHandler.java:234)

              at org.jbpm.task.service.local.LocalTaskService$SimpleEventTransport.trigger(LocalTaskService.java:329)

              at org.jbpm.task.event.MessagingTaskEventListener.triggerPayload(MessagingTaskEventListener.java:76)

              at org.jbpm.task.event.MessagingTaskEventListener.handleEvent(MessagingTaskEventListener.java:92)

              at org.jbpm.task.event.MessagingTaskEventListener.taskCompleted(MessagingTaskEventListener.java:109)

              at org.jbpm.task.event.TaskEventSupport.fireTaskCompleted(TaskEventSupport.java:49)

              at org.jbpm.task.service.TaskServiceSession.postTaskCompleteOperation(TaskServiceSession.java:569)

              at org.jbpm.task.service.TaskServiceSession.taskOperation(TaskServiceSession.java:495)

              at org.jbpm.task.service.local.LocalTaskService.complete(LocalTaskService.java:83)

              at org.jbpm.task.service.local.LocalTaskService.completeWithResults(LocalTaskService.java:91)

              at cmc.iis.salary.jbpm.HumanTaskEngine.completeTaskWithResult(HumanTaskEngine.java:31)

              at cmc.iis.salary.service.jbpm.impl.JbpmServiceImpl.completeTaskwithResults(JbpmServiceImpl.java:67)

              at com.iis.salary.TestCase.JunitTestCase.testMehtodManager(JunitTestCase.java:127)

              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

              at java.lang.reflect.Method.invoke(Method.java:597)

              at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)

              at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)

              at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)

              at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)

              at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)

              at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)

              at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)

              at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)

              at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)

              at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)

              at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)

              at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)

              at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)

              at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)

              at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)

              at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)

              at org.junit.runners.ParentRunner.run(ParentRunner.java:300)

              at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)

              at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)

              at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

              at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)

              at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)

              at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)

              at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

            Caused by: java.lang.IllegalArgumentException: XOR split could not find at least one valid outgoing connection for split Accept/Reject

              at org.jbpm.workflow.instance.node.SplitInstance.internalTrigger(SplitInstance.java:98)

              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)

              ... 58 more

             

             

            More over, human task's next node is a diverge gateway, it is using the mvel (like return outcome== "Reject") and it could go easily without using JTA.



            task completing code is something like  this:

             

              @Transactional(propagation=Propagation.REQUIRED,readOnly=false)

              public String workOnProcess{

                 taskService.start(taskId, user);

                 Map data = new HashMap();

                     data.put("outcome", "Reject");

                 taskService.completeWithResults(taskId, user, data);


            }

            • 3. Re: Spring+ jbpm5.4+JTA(Bitronix) throwing error
              ctkcin

              Hi Yogesh,

               

              What constraints you used on splitting connection?

              is there any condition which fulfill "Reject"?

              • 4. Re: Spring+ jbpm5.4+JTA(Bitronix) throwing error
                yogesh02

                Hello Neeraj,

                 

                Yes, there was condition applied on diverging gateway after the Completion of human task.

                The problem was bit different than it seems to be, because Earlier my application was working fine without the use of JTA(Bitronix), with JTA we require to manage the task server a bit different way than we were managing with RESOURCE_LOCAL.

                 

                Finally after too much struggle, I solved the problem.

                 

                 

                Thanks