Ejemplo n.º 1
0
 public function addRoute($taskUid, $nextTaskUid, $type, $condition = "")
 {
     try {
         //Verify data
         if ($type == "SEC-JOIN") {
             throw new \Exception(\G::LoadTranslation("ID_ROUTE_IS_SECJOIN"));
         }
         //Route
         $result = parent::addRoute($taskUid, $nextTaskUid, $type, $condition);
         //BPMN
         $arrayBpmnGatewayType = array("EVALUATE" => "EXCLUSIVE", "SELECT" => "COMPLEX", "PARALLEL" => "PARALLEL", "PARALLEL-BY-EVALUATION" => "INCLUSIVE");
         $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"];
         switch ($type) {
             case "EVALUATE":
             case "SELECT":
             case "PARALLEL":
             case "PARALLEL-BY-EVALUATION":
                 $result = $this->bp->getGatewayByDirectionActivityAndFlow("DIVERGING", $activityUid);
                 if (!is_array($result)) {
                     $gatewayUid = $this->routeToBpmnGateway("bpmnActivity", $activityUid, $activityBouX, $activityBouY, $activityBouWidth, $activityBouHeight, "", $arrayBpmnGatewayType[$type], "DIVERGING");
                     $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"];
                 if ($nextTaskUid != "-1") {
                     $arrayTaskData = $this->getTask($nextTaskUid);
                     $flowUid = $this->routeToBpmnFlow("bpmnGateway", $gatewayUid, $gatewayBouX, $gatewayBouY, $gatewayBouWidth, $gatewayBouHeight, "bpmnActivity", $arrayTaskData["TAS_UID"], (int) $arrayTaskData["TAS_POSX"], (int) $arrayTaskData["TAS_POSY"], (int) $arrayTaskData["TAS_WIDTH"], (int) $arrayTaskData["TAS_HEIGHT"], $condition);
                 } else {
                     $eventUid = $this->startTaskEndProcessToBpmnEvent("bpmnGateway", $gatewayUid, $gatewayBouX, $gatewayBouY, $gatewayBouWidth, $gatewayBouHeight, "", "END", $condition);
                 }
                 break;
             case "SEQUENTIAL":
                 if ($nextTaskUid != "-1") {
                     $arrayTaskData = $this->getTask($nextTaskUid);
                     $flowUid = $this->routeToBpmnFlow("bpmnActivity", $activityUid, $activityBouX, $activityBouY, $activityBouWidth, $activityBouHeight, "bpmnActivity", $arrayTaskData["TAS_UID"], (int) $arrayTaskData["TAS_POSX"], (int) $arrayTaskData["TAS_POSY"], (int) $arrayTaskData["TAS_WIDTH"], (int) $arrayTaskData["TAS_HEIGHT"]);
                 } else {
                     $eventUid = $this->startTaskEndProcessToBpmnEvent("bpmnActivity", $activityUid, $activityBouX, $activityBouY, $activityBouWidth, $activityBouHeight, "", "END");
                 }
                 break;
         }
         //Return
         return $result;
     } catch (\Exception $e) {
         throw $e;
     }
 }