Exemplo n.º 1
0
 public function createTaskByElement($elementUid, $elementType, $key, $elementUidDest = "")
 {
     try {
         $flagElementTaskRelation = false;
         if ($elementUidDest != "") {
             if (isset($this->arrayElementTaskRelation[$elementUid][$elementUidDest])) {
                 $flagElementTaskRelation = true;
             } else {
                 $flagElementTaskRelation = false;
             }
         } else {
             if (isset($this->arrayElementTaskRelation[$elementUid])) {
                 $taskUid = $this->arrayElementTaskRelation[$elementUid];
                 $flagElementTaskRelation = true;
             } else {
                 $flagElementTaskRelation = false;
             }
         }
         if ($flagElementTaskRelation) {
             $taskUid = $this->arrayElementTaskRelation[$elementUid];
         } else {
             $taskPosX = 0;
             $taskPosY = 0;
             $flow = \BpmnFlow::findOneBy(array(\BpmnFlowPeer::FLO_ELEMENT_ORIGIN => $elementUid, \BpmnFlowPeer::FLO_ELEMENT_ORIGIN_TYPE => $elementType));
             if (!is_null($flow)) {
                 $arrayFlowData = $flow->toArray();
                 $taskPosX = (int) $arrayFlowData["FLO_X1"];
                 $taskPosY = (int) $arrayFlowData["FLO_Y1"];
             } else {
                 $flow = \BpmnFlow::findOneBy(array(\BpmnFlowPeer::FLO_ELEMENT_DEST => $elementUid, \BpmnFlowPeer::FLO_ELEMENT_DEST_TYPE => $elementType));
                 if (!is_null($flow)) {
                     $arrayFlowData = $flow->toArray();
                     $taskPosX = (int) $arrayFlowData["FLO_X2"];
                     $taskPosY = (int) $arrayFlowData["FLO_Y2"];
                 }
             }
             $prefix = $this->arrayTaskAttribute[$key]["prefix"];
             $taskType = $this->arrayTaskAttribute[$key]["type"];
             $taskUid = $this->wp->addTask(array("TAS_UID" => $prefix . substr(Util\Common::generateUID(), (32 - strlen($prefix)) * -1), "TAS_TYPE" => $taskType, "TAS_TITLE" => $taskType, "TAS_POSX" => $taskPosX, "TAS_POSY" => $taskPosY));
             if ($elementType == "bpmnEvent" && in_array($key, array("end-message-event", "start-message-event", "intermediate-catch-message-event"))) {
                 if (in_array($key, array("start-message-event", "intermediate-catch-message-event"))) {
                     //Task - User
                     //Assign to admin
                     $task = new \Tasks();
                     $result = $task->assignUser($taskUid, "00000000000000000000000000000001", 1);
                 }
             }
             //Element-Task-Relation - Create
             $elementTaskRelation = new \ProcessMaker\BusinessModel\ElementTaskRelation();
             if ($elementUidDest == "") {
                 $arrayResult = $elementTaskRelation->create($this->wp->getUid(), array("ELEMENT_UID" => $elementUid, "ELEMENT_TYPE" => $elementType, "TAS_UID" => $taskUid));
             } else {
                 $createGaToGa = $elementTaskRelation->existsGatewayToGateway($elementUid, $elementUidDest);
                 if (!$createGaToGa) {
                     $arrayResult = $elementTaskRelation->create($this->wp->getUid(), array("ELEMENT_UID" => $elementUid, "ELEMENT_TYPE" => $elementType, "TAS_UID" => $taskUid, "ELEMENT_UID_DEST" => $elementUidDest));
                 }
             }
             if ($elementUidDest != "") {
                 $aElement[$elementUid][$elementUidDest] = $elementUidDest;
                 $this->arrayElementTaskRelation = $aElement;
             } else {
                 //Array - Add element
                 $this->arrayElementTaskRelation[$elementUid] = $taskUid;
             }
         }
         //Return
         return $taskUid;
     } catch (\Exception $e) {
         throw $e;
     }
 }