AnsweredAssumed Answered

Exclusive Gateway in a Parallel Gateway

Question asked by suribabu on Jan 3, 2013
Latest reply on Jan 3, 2013 by suribabu

I am new to workflows and Activiti. I need to implement the following scenario:

I have a parallel gateway where I am validating inputs from different systems (using shell scripts for each task) and loading the data in to db in case of no error. So, validating the input from interface1, if validation returns success(error code 0), I am proceeding to loading the data to db. And similary with interface2. So, I attached these two flows to parallel gateway. After loading data to db, I am moving to other service task from join. It is working fine in success scenario where i don't introduce exclusive gateway. But when I attach exclusive gateway to validation task, and if validation of interface1 returns failure (error code not equal to 0), I am going to other task 'sendMail'. but finally, I have to come to join in case of failure or success. this is not happening. I am not able move to other task after join. At the end when I check the value processInstance2.isEnded()=false.  Can some one help me on this where I am doing wrong. Here is the configuration:

    <parallelGateway id="fork" />
    <exclusiveGateway id="exclGWValidateIntf1" name="Validate Intf1 Exclusive Gateway" />
    <sequenceFlow sourceRef="fork" targetRef="validateIntf2Input" />
    <sequenceFlow id="flow3" name="" sourceRef="validateIntf2Input" targetRef="loadIntf2Data"></sequenceFlow>
    <sequenceFlow id="flow4" name="" sourceRef="loadIntf2Data" targetRef="join"></sequenceFlow>
   <sequenceFlow sourceRef="fork" targetRef="validateIntf1" />
    <sequenceFlow id="flow5" name="" sourceRef="validateIntf1Input" targetRef="exclGWValidateIntf1"></sequenceFlow>
    <sequenceFlow id="flow6" name="" sourceRef="exclGWValidateIntf1" targetRef="loadIntf1Data">
       <conditionExpression xsi:type="tFormalExpression">${errorValidateIntf1 == 0}</conditionExpression>
    <sequenceFlow id="flow8" name="" sourceRef="loadIntf1Data" targetRef="join"></sequenceFlow>
    <sequenceFlow id="flow7" name="" sourceRef="exclGWValidateIntf1" targetRef="sendErrorMail">
       <conditionExpression xsi:type="tFormalExpression">${errorValidateIntf1 != 0}</conditionExpression>
    <sequenceFlow id="flow81" name="" sourceRef="sendErrorMail" targetRef="join"></sequenceFlow>   
    <parallelGateway id="join" />
    <sequenceFlow sourceRef="join" targetRef="callShellRetVal" />
    <sequenceFlow id="flow9" name="" sourceRef="callShellRetVal" targetRef="endevent1"></sequenceFlow>

Thanks in advance,