Ejemplo n.º 1
0
 /**
  * Validate Process Uid
  * @var string $pro_uid. Uid for Process
  * @var string $tas_uid. Uid for Task
  * @var string $step_uid. Uid for Step
  * @var string $step_pos. Position for Step
  *
  * @author Brayan Pereyra (Cochalo) <*****@*****.**>
  * @copyright Colosa - Bolivia
  *
  * @return void
  */
 public function moveStepTriggers($tasUid, $stepUid, $triUid, $type, $newPos)
 {
     $stepTrigger = new \ProcessMaker\BusinessModel\Step();
     $tempStep = $stepUid;
     $typeCompare = $type;
     if ($tempStep == '-1' || $tempStep == '-2') {
         $tempStep = '';
         if ($stepUid == '-1' && $type == 'BEFORE') {
             $typeCompare = "BEFORE_ASSIGNMENT";
         } elseif ($stepUid == '-2' && $type == 'BEFORE') {
             $typeCompare = "BEFORE_ROUTING";
         } elseif ($stepUid == '-2' && $type == 'AFTER') {
             $typeCompare = "AFTER_ROUTING";
         }
     }
     $aStepTriggers = $stepTrigger->getTriggers($tempStep, $tasUid);
     foreach ($aStepTriggers as $dataStep) {
         if ($dataStep['st_type'] == $typeCompare && $dataStep['tri_uid'] == $triUid) {
             $prStepPos = (int) $dataStep['st_position'];
         }
     }
     $seStepPos = $newPos;
     //Principal Step is up
     if ($prStepPos == $seStepPos) {
         return true;
     } elseif ($prStepPos < $seStepPos) {
         $modPos = 'UP';
         $newPos = $seStepPos;
         $iniPos = $prStepPos + 1;
         $finPos = $seStepPos;
     } else {
         $modPos = 'DOWN';
         $newPos = $seStepPos;
         $iniPos = $seStepPos;
         $finPos = $prStepPos - 1;
     }
     $range = range($iniPos, $finPos);
     $stepChangeIds = array();
     $stepChangePos = array();
     foreach ($aStepTriggers as $dataStep) {
         if ($dataStep['st_type'] == $typeCompare && in_array($dataStep['st_position'], $range) && $dataStep['tri_uid'] != $triUid) {
             $stepChangeIds[] = $dataStep['tri_uid'];
             $stepChangePos[] = $dataStep['st_position'];
         }
     }
     foreach ($stepChangeIds as $key => $value) {
         if ($modPos == 'UP') {
             $tempPos = (int) $stepChangePos[$key] - 1;
             $this->changePosStep($stepUid, $tasUid, $value, $type, $tempPos);
         } else {
             $tempPos = (int) $stepChangePos[$key] + 1;
             $this->changePosStep($stepUid, $tasUid, $value, $type, $tempPos);
         }
     }
     $this->changePosStep($stepUid, $tasUid, $triUid, $type, $newPos);
 }
Ejemplo n.º 2
0
 /**
  * Update Trigger of a Step
  *
  * @param string $stepUid    Unique id of Step
  * @param string $type       Type (BEFORE, AFTER, BEFORE_ASSIGNMENT, BEFORE_ROUTING, AFTER_ROUTING)
  * @param string $taskUid    Unique id of Task
  * @param string $triggerUid Unique id of Trigger
  * @param array  $arrayData  Data
  *
  * return array Data updated of the Trigger assigned to a Step
  */
 public function updateAll($stepUid, $type, $taskUid, $triggerUid, $arrayData)
 {
     try {
         $flagStepAssignTask = 0;
         if ($stepUid == "" || $stepUid == "-1" || $stepUid == "-2") {
             $flagStepAssignTask = 1;
             switch ($type) {
                 case "BEFORE_ASSIGNMENT":
                     $stepUid = "-1";
                     $type = "BEFORE";
                     break;
                 case "BEFORE_ROUTING":
                     $stepUid = "-2";
                     $type = "BEFORE";
                     break;
                 case "AFTER_ROUTING":
                     $stepUid = "-2";
                     $type = "AFTER";
                     break;
             }
         }
         //Verify data
         if ($flagStepAssignTask == 0) {
             $step = new \Step();
             if (!$step->StepExists($stepUid)) {
                 throw new \Exception(\G::LoadTranslation("ID_STEP_DOES_NOT_EXIST", array("step_uid", $stepUid)));
             }
         }
         $trigger = new \Triggers();
         if (!$trigger->TriggerExists($triggerUid)) {
             throw new \Exception(\G::LoadTranslation("ID_TRIGGER_DOES_NOT_EXIST", array("tri_uid", $triggerUid)));
         }
         //Update
         $stepTrigger = new \StepTrigger();
         $arrayUpdateData = array();
         $arrayUpdateData["STEP_UID"] = $stepUid;
         $arrayUpdateData["TAS_UID"] = $taskUid;
         $arrayUpdateData["TRI_UID"] = $triggerUid;
         $arrayUpdateData["ST_TYPE"] = $type;
         if (isset($arrayData["st_condition"])) {
             $arrayUpdateData["ST_CONDITION"] = $arrayData["st_condition"];
         }
         $stepTrigger->update($arrayUpdateData);
         return array_change_key_case($arrayUpdateData, CASE_LOWER);
     } catch (\Exception $e) {
         throw $e;
     }
 }
Ejemplo n.º 3
0
 /**
  * Delete a output document of a project
  *
  * @param string $sProcessUID
  * @param string $sOutputDocumentUID
  *
  * @access public
  */
 public function deleteOutputDocument($sProcessUID, $sOutputDocumentUID)
 {
     try {
         require_once PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "OutputDocument.php";
         require_once PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "ObjectPermission.php";
         require_once PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "Step.php";
         $this->throwExceptionIfItsAssignedInOtherObjects($sOutputDocumentUID, "outputDocumentUid");
         \G::LoadClass('processMap');
         $oOutputDocument = new \OutputDocument();
         $fields = $oOutputDocument->load($sOutputDocumentUID);
         $oOutputDocument->remove($sOutputDocumentUID);
         $oStep = new \Step();
         $oStep->removeStep('OUTPUT_DOCUMENT', $sOutputDocumentUID);
         $oOP = new \ObjectPermission();
         $oOP->removeByObject('OUTPUT', $sOutputDocumentUID);
         //refresh dbarray with the last change in outputDocument
         $oMap = new \processMap();
         $oCriteria = $oMap->getOutputDocumentsCriteria($fields['PRO_UID']);
     } catch (\Exception $e) {
         throw $e;
     }
 }