11-27-2020 01:18 AM
Same workflow is started multiple times in parallel stream, causes the service task to execute multiple time. How to resolve this issue. Thanks in advance.
11-27-2020 05:41 AM
Hi @ytsudhamathi & welcome to Alfresco!
We are going to need some more information about the workflow, how it's written and when its called, etc, + some log output if possible. Take a look at the guidance for posting.
Thanks,
12-03-2020 06:12 AM
My workflow is as follow:
And using AsyncJobExecutor to execute the jobs.
Thank you.
<?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test"> <process id="FulfillmentTransactionWorkflow" name="Fulfillment Transaction Workflow" isExecutable="true"> <subProcess id="transactionProcessingSP" name="Transaction Processing" activiti:async="true"> <startEvent id="startInnerTransactionSE" name="Start"></startEvent> <sequenceFlow id="flow1" sourceRef="startInnerTransactionSE" targetRef="requestPlanConfigurationST"></sequenceFlow> <serviceTask id="checkHoldStatusST" activiti:async="true" name="Check Hold Status" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action2"></serviceTask> <sequenceFlow id="flow2" name="Error Ocurred?" sourceRef="checkHoldStatusST" targetRef="checkHoldStatusErrorEG"></sequenceFlow> <exclusiveGateway id="checkHoldStatusEG" name="Check Hold Status Exclusive Gateway"></exclusiveGateway> <sequenceFlow id="flow3" name="No" sourceRef="checkHoldStatusEG" targetRef="generateDitaOtOutputST"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${EXCEPTION_OCCUR == "false"}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="flow22" name="Yes" sourceRef="checkHoldStatusEG" targetRef="handleHeldTransactionEventST"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${EXCEPTION_OCCUR == "true"}]]></conditionExpression> </sequenceFlow> <serviceTask id="requestPlanConfigurationST" activiti:async="true" name="Request Plan Configuration" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action3"></serviceTask> <sequenceFlow id="flow6" name="Error Occurred?" sourceRef="requestPlanConfigurationST" targetRef="requestPlanConfigurationEG"></sequenceFlow> <endEvent id="endInnerTransactionEE" name="End"></endEvent> <exclusiveGateway id="requestPlanConfigurationEG" name="Request Plan Configuration Exclusive Gateway"></exclusiveGateway> <sequenceFlow id="flow7" name="No" sourceRef="requestPlanConfigurationEG" targetRef="feedGenerationSP"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${EXCEPTION_OCCUR == "false"}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="flow18" name="Yes" sourceRef="requestPlanConfigurationEG" targetRef="requestPlanConfigurationErrorST"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${EXCEPTION_OCCUR == "true"}]]></conditionExpression> </sequenceFlow> <exclusiveGateway id="generateFeedEG" name="Generate Feed Exclusive Gateway"></exclusiveGateway> <sequenceFlow id="flow17" name="No" sourceRef="generateFeedEG" targetRef="checkHoldStatusST"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${EXCEPTION_OCCUR == "false"}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="flow20" name="Yes" sourceRef="generateFeedEG" targetRef="generateFeedErrorST"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${EXCEPTION_OCCUR == "true"}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="flow16" name="Error Occurred?" sourceRef="feedGenerationSP" targetRef="generateFeedEG"></sequenceFlow> <serviceTask id="requestPlanConfigurationErrorST" activiti:async="true" name="Handle Error" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action4"></serviceTask> <sequenceFlow id="flow19" sourceRef="requestPlanConfigurationErrorST" targetRef="endDueToRequestPlanConfigurationErrorEEE"></sequenceFlow> <endEvent id="endDueToRequestPlanConfigurationErrorEEE" name="ErrorEnd"> <errorEventDefinition errorRef="REQUEST_PLAN_CONFIGURATION_ERROR"></errorEventDefinition> </endEvent> <serviceTask id="generateFeedErrorST" activiti:async="true" name="Handle Error" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action4"></serviceTask> <sequenceFlow id="flow24" sourceRef="generateFeedErrorST" targetRef="endDueToGenerateFeedErrorEEE"></sequenceFlow> <endEvent id="endDueToGenerateFeedErrorEEE" name="ErrorEnd"> <errorEventDefinition errorRef="GENERATE_FEED_ERROR"></errorEventDefinition> </endEvent> <serviceTask id="handleHeldTransactionEventST" activiti:async="true" name="Handle Held Transaction Event" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action4"></serviceTask> <sequenceFlow id="flow23" sourceRef="handleHeldTransactionEventST" targetRef="endDueToTransactionHeldEEE"></sequenceFlow> <endEvent id="endDueToTransactionHeldEEE" name="ErrorEnd"> <errorEventDefinition errorRef="HELD_ERROR"></errorEventDefinition> </endEvent> <exclusiveGateway id="checkHoldStatusErrorEG" name="Check Hold Status Error Exclusive Gateway"></exclusiveGateway> <sequenceFlow id="flow25" name="Transaction Held?" sourceRef="checkHoldStatusErrorEG" targetRef="checkHoldStatusEG"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${EXCEPTION_OCCUR == "false"}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="flow26" name="Yes" sourceRef="checkHoldStatusErrorEG" targetRef="checkHoldStatusErrorST"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${EXCEPTION_OCCUR == "true"}]]></conditionExpression> </sequenceFlow> <serviceTask id="checkHoldStatusErrorST" activiti:async="true" name="Handle Error" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action4"></serviceTask> <sequenceFlow id="flow27" sourceRef="checkHoldStatusErrorST" targetRef="endDueToCheckHoldStatusEEE"></sequenceFlow> <endEvent id="endDueToCheckHoldStatusEEE" name="ErrorEnd"> <errorEventDefinition errorRef="CHECK_HOLD_STATUS_FEED_ERROR"></errorEventDefinition> </endEvent> <subProcess id="feedGenerationSP" name="Feed Generation"> <startEvent id="startFeedGenerationSE" name="Start"></startEvent> <endEvent id="endFeedGenerationEE" name="End"></endEvent> <serviceTask id="generateBenefitVariablesST" activiti:async="true" name="Generate Benefit Variables" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action5"></serviceTask> <serviceTask id="generateDitavalST" activiti:async="true" name="Generate Ditaval" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action6"></serviceTask> <serviceTask id="executeRulesEvaluatorST" activiti:async="true" name="Execute Rules Evaluator" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action7"></serviceTask> <serviceTask id="generateCirrusVariablesST" activiti:async="true" name="Generate Cirrus Variables" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action8"></serviceTask> <serviceTask id="identifySeriesST" activiti:async="true" name="Identify Series" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action9"></serviceTask> <serviceTask id="assembleCompendiumConfigurationST" activiti:async="true" name="Assemble Compendium Configuration" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action10"></serviceTask> <serviceTask id="generateDitaMapST" activiti:async="true" name="Generate DitaMap" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action11"></serviceTask> <sequenceFlow id="flow29" sourceRef="startFeedGenerationSE" targetRef="generateBenefitVariablesST"></sequenceFlow> <sequenceFlow id="flow30" sourceRef="generateBenefitVariablesST" targetRef="generateDitavalST"></sequenceFlow> <sequenceFlow id="flow31" sourceRef="generateDitavalST" targetRef="executeRulesEvaluatorST"></sequenceFlow> <sequenceFlow id="flow32" sourceRef="executeRulesEvaluatorST" targetRef="generateCirrusVariablesST"></sequenceFlow> <sequenceFlow id="flow33" sourceRef="generateCirrusVariablesST" targetRef="identifySeriesST"></sequenceFlow> <sequenceFlow id="flow34" sourceRef="identifySeriesST" targetRef="assembleCompendiumConfigurationST"></sequenceFlow> <sequenceFlow id="flow35" sourceRef="assembleCompendiumConfigurationST" targetRef="generateDitaMapST"></sequenceFlow> <sequenceFlow id="flow36" sourceRef="generateDitaMapST" targetRef="endFeedGenerationEE"></sequenceFlow> </subProcess> <serviceTask id="generateDitaOtOutputST" activiti:async="true" name="Generate DitaOt Output" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action12"></serviceTask> <exclusiveGateway id="generateOutputEG" name="Generate Output Exclusive Gateway"></exclusiveGateway> <serviceTask id="generateOutputErrorST" activiti:async="true" name="Handle Error" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action4"></serviceTask> <endEvent id="endDueToGenerateOutputErrorEEE" name="ErrorEnd"> <errorEventDefinition></errorEventDefinition> </endEvent> <callActivity id="edmsDelivery" name="EDMS Delivery" calledElement="DeliveryWorkflow"> <extensionElements> <activiti:in source="rsuite contents" target="rsuite contents"></activiti:in> <activiti:in source="sourceId" target="sourceId"></activiti:in> <activiti:in source="rsuiteId" target="rsuiteId"></activiti:in> <activiti:in source="skey" target="skey"></activiti:in> <activiti:in source="deliverySystemType" target="deliverySystemType"></activiti:in> <activiti:in source="fulfillmentWorkingFolder" target="rsuiteWorkingFolderPath"></activiti:in> <activiti:in source="userId" target="userId"></activiti:in> <activiti:in sourceExpression="delivery" target="WorkflowPoolName"></activiti:in> <activiti:in source="fileSystemArtifacts" target="fileSystemArtifacts"></activiti:in> <activiti:in source="pubtrackId" target="pubtrackId"></activiti:in> <activiti:in source="processId" target="processId"></activiti:in> <activiti:in source="planId" target="planId"></activiti:in> <activiti:in source="memberGroupId" target="memberGroupId"></activiti:in> <activiti:in source="planType" target="planType"></activiti:in> <activiti:in source="material_id" target="material_id"></activiti:in> </extensionElements> </callActivity> <exclusiveGateway id="deliveryEG" name="Delivery Exclusive Gateway"></exclusiveGateway> <serviceTask id="deliveryErrorST" activiti:async="true" name="Handle Error" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action4"></serviceTask> <endEvent id="endDueToDeliveryErrorEEE" name="ErrorEnd"> <errorEventDefinition></errorEventDefinition> </endEvent> <sequenceFlow id="flow37" sourceRef="generateDitaOtOutputST" targetRef="generateOutputEG"></sequenceFlow> <sequenceFlow id="flow38" sourceRef="generateOutputEG" targetRef="generateOutputErrorST"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${EXCEPTION_OCCUR == "true"}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="flow39" sourceRef="generateOutputErrorST" targetRef="endDueToGenerateOutputErrorEEE"></sequenceFlow> <sequenceFlow id="flow40" sourceRef="generateOutputEG" targetRef="edmsDelivery"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${EXCEPTION_OCCUR == "false"}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="flow41" sourceRef="edmsDelivery" targetRef="deliveryEG"></sequenceFlow> <sequenceFlow id="flow42" sourceRef="deliveryEG" targetRef="deliveryErrorST"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${EXCEPTION_OCCUR == "true"}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="flow43" sourceRef="deliveryErrorST" targetRef="endDueToDeliveryErrorEEE"></sequenceFlow> <sequenceFlow id="flow44" sourceRef="deliveryEG" targetRef="endInnerTransactionEE"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${EXCEPTION_OCCUR == "false"}]]></conditionExpression> </sequenceFlow> </subProcess> <startEvent id="startOuterTransactionSE" name="Start"></startEvent> <sequenceFlow id="flow28" sourceRef="startOuterTransactionSE" targetRef="transactionProcessingSP"></sequenceFlow> <boundaryEvent id="transactionProcessingEBE" name="Error" attachedToRef="transactionProcessingSP"> <errorEventDefinition></errorEventDefinition> </boundaryEvent> <endEvent id="endOuterTransactionSE" name="End"></endEvent> <exclusiveGateway id="transactionEG" name="Transaction Exclusive Gateway"></exclusiveGateway> <serviceTask id="notifyBatchST" activiti:async="true" name="Notify Batch" activiti:class="com.rsicms.wfpoolingtest.actionhandler.ServiceTask1Action14"></serviceTask> <sequenceFlow id="flow45" sourceRef="transactionProcessingSP" targetRef="transactionEG"></sequenceFlow> <sequenceFlow id="flow46" sourceRef="transactionProcessingEBE" targetRef="transactionEG"></sequenceFlow> <sequenceFlow id="flow47" sourceRef="transactionEG" targetRef="notifyBatchST"></sequenceFlow> <sequenceFlow id="flow48" sourceRef="notifyBatchST" targetRef="endOuterTransactionSE"></sequenceFlow> <dataObject id="one" name="EXCEPTION_OCCUR" itemSubjectRef="xsd:string"> <extensionElements> <activiti:value>false</activiti:value> </extensionElements> </dataObject> </process> </definitions>
Explore our Alfresco products with the links below. Use labels to filter content by product module.