Ejemplo n.º 1
0
 public function addRouteSecJoin($taskUid, $nextTaskUid)
 {
     try {
         //Route
         $result = parent::addRoute($taskUid, $nextTaskUid, "SEC-JOIN");
         //BPMN
         $arrayTaskData = $this->getTask($taskUid);
         $activityUid = $arrayTaskData["TAS_UID"];
         $activityBouX = (int) $arrayTaskData["TAS_POSX"];
         $activityBouY = (int) $arrayTaskData["TAS_POSY"];
         $activityBouWidth = (int) $arrayTaskData["TAS_WIDTH"];
         $activityBouHeight = (int) $arrayTaskData["TAS_HEIGHT"];
         $arrayTaskData = $this->getTask($nextTaskUid);
         $nextActivityUid = $arrayTaskData["TAS_UID"];
         $nextActivityBouX = (int) $arrayTaskData["TAS_POSX"];
         $nextActivityBouY = (int) $arrayTaskData["TAS_POSY"];
         $nextActivityBouWidth = (int) $arrayTaskData["TAS_WIDTH"];
         $nextActivityBouHeight = (int) $arrayTaskData["TAS_HEIGHT"];
         $result = $this->bp->getGatewayByDirectionActivityAndFlow("CONVERGING", $nextActivityUid);
         if (!is_array($result)) {
             $criteria = new \Criteria("workflow");
             $criteria->addSelectColumn(\BpmnFlowPeer::FLO_ELEMENT_ORIGIN . " AS GAT_UID");
             $criteria->add(\BpmnFlowPeer::PRJ_UID, $this->bp->getUid(), \Criteria::EQUAL);
             $criteria->add(\BpmnFlowPeer::FLO_TYPE, "SEQUENCE", \Criteria::EQUAL);
             $criteria->add(\BpmnFlowPeer::FLO_ELEMENT_ORIGIN_TYPE, "bpmnGateway", \Criteria::EQUAL);
             $criteria->add(\BpmnFlowPeer::FLO_ELEMENT_DEST, $activityUid, \Criteria::EQUAL);
             $criteria->add(\BpmnFlowPeer::FLO_ELEMENT_DEST_TYPE, "bpmnActivity", \Criteria::EQUAL);
             $rsCriteria = \BpmnFlowPeer::doSelectRS($criteria);
             $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
             $gatewayParentUid = "";
             if ($rsCriteria->next()) {
                 $row = $rsCriteria->getRow();
                 $gatewayParentUid = $row["GAT_UID"];
             } else {
                 throw new \Exception(\G::LoadTranslation("ID_ROUTE_PARENT_DOES_NOT_EXIST_FOR_ROUTE_SECJOIN"));
             }
             $arrayGatewayData = $this->bp->getGateway2($gatewayParentUid);
             $gatewayParentType = $arrayGatewayData["GAT_TYPE"];
             $gatewayUid = $this->routeToBpmnGateway("bpmnActivity", $nextActivityUid, $nextActivityBouX, $nextActivityBouY, $nextActivityBouWidth, $nextActivityBouHeight, "", $gatewayParentType, "CONVERGING");
             $arrayGatewayData = $this->bp->getGateway2($gatewayUid);
         } else {
             $arrayGatewayData = $result;
         }
         $gatewayUid = $arrayGatewayData["GAT_UID"];
         $gatewayType = $arrayGatewayData["GAT_TYPE"];
         $gatewayBouX = $arrayGatewayData["BOU_X"];
         $gatewayBouY = $arrayGatewayData["BOU_Y"];
         $gatewayBouWidth = $arrayGatewayData["BOU_WIDTH"];
         $gatewayBouHeight = $arrayGatewayData["BOU_HEIGHT"];
         $flowUid = $this->routeToBpmnFlow("bpmnActivity", $activityUid, $activityBouX, $activityBouY, $activityBouWidth, $activityBouHeight, "bpmnGateway", $gatewayUid, $gatewayBouX, $gatewayBouY, $gatewayBouWidth, $gatewayBouHeight);
         //Return
         return $result;
     } catch (\Exception $e) {
         $this->removeRouteFromTo($taskUid, $nextTaskUid);
         throw $e;
     }
 }