예제 #1
0
    /**
     * Execute Trigger case
     *
     * @param string $prj_uid  {@min 1}{@max 32}
     * @param string $act_uid  {@min 1}{@max 32}
     * @param string $cas_uid  {@min 1}{@max 32}
     * @param string $step_uid {@min 32}{@max 32}
     * @param string $type     {@choice before,after}
     *
     * @copyright Colosa - Bolivia
     *
     * @url POST /process/:prj_uid/task/:act_uid/case/:cas_uid/step/:step_uid/execute-trigger/:type
     */
    public function doPutExecuteTriggerCase($prj_uid, $act_uid, $cas_uid, $step_uid, $type)
    {
        try {
            $userUid = $this->getUserId();
            $step = new \ProcessMaker\Services\Api\Project\Activity\Step();
            $triggers= $step->doGetActivityStepTriggers($step_uid, $act_uid, $prj_uid);

            $step = new \ProcessMaker\BusinessModel\Step();
            $step->setFormatFieldNameInUppercase(false);
            $step->setArrayParamException(array("stepUid" => "step_uid", "taskUid" => "act_uid", "processUid" => "prj_uid"));

            $cases = new \ProcessMaker\BusinessModel\Cases();
            foreach($triggers as $trigger){
                if (strtolower($trigger['st_type']) == $type) {
                    $cases->putExecuteTriggerCase($cas_uid, $trigger['tri_uid'], $userUid);
                }
            }
        } catch (\Exception $e) {
            throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
        }
    }
예제 #2
0
 /**
  * Get all Steps of a Task
  *
  * @param string $taskUid Unique id of Task
  *
  * return array Return an array with all Steps of a Task
  */
 public function getSteps($taskUid)
 {
     try {
         $arrayStep = array();
         $step = new \ProcessMaker\BusinessModel\Step();
         $step->setFormatFieldNameInUppercase($this->formatFieldNameInUppercase);
         $step->setArrayParamException($this->arrayParamException);
         //Verify data
         $this->throwExceptionIfNotExistsTask("", $taskUid, $this->arrayParamException["taskUid"]);
         //Get data
         $criteria = new \Criteria("workflow");
         $criteria->add(\StepPeer::TAS_UID, $taskUid, \Criteria::EQUAL);
         $criteria->addAscendingOrderByColumn(\StepPeer::STEP_POSITION);
         $rsCriteria = \StepPeer::doSelectRS($criteria);
         $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
         while ($rsCriteria->next()) {
             $row = $rsCriteria->getRow();
             $arrayData = $step->getStep($row["STEP_UID"]);
             if (count($arrayData) > 0) {
                 $arrayStep[] = $arrayData;
             }
         }
         //Return
         return $arrayStep;
     } catch (\Exception $e) {
         throw $e;
     }
 }
예제 #3
0
 /**
  * @url POST /:prj_uid/activity/:act_uid/step/all
  *
  * @param string $act_uid        {@min 32}{@max 32}
  * @param string $prj_uid        {@min 32}{@max 32}
  * @param array  $request_data
  * @param string $step_type_obj  {@from body}{@choice DYNAFORM,INPUT_DOCUMENT,OUTPUT_DOCUMENT,EXTERNAL}{@required true}
  * @param string $step_uid_obj   {@from body}{@min 32}{@max 32}{@required true}
  * @param string $step_condition {@from body}
  * @param int    $step_position  {@from body}{@min 1}
  * @param string $step_mode      {@from body}{@choice EDIT,VIEW}{@required true}
  *
  * @status 201
  */
 public function doPostActivityStepAll($act_uid, $prj_uid, $request_data, $step_type_obj = "DYNAFORM", $step_uid_obj = "00000000000000000000000000000000", $step_condition = "", $step_position = 1, $step_mode = "EDIT")
 {
     try {
         $step = new \ProcessMaker\BusinessModel\Step();
         $stepTrigger = new \ProcessMaker\BusinessModel\Step\Trigger();
         $step->deleteAll($act_uid);
         foreach ($request_data as $key => $valueRequest) {
             if (array_key_exists('tri_uid', $valueRequest)) {
                 $response[] = $stepTrigger->createAll("", $valueRequest["st_type"], $act_uid, $valueRequest["tri_uid"], $valueRequest);
             } else {
                 $step->setFormatFieldNameInUppercase(false);
                 $step->setArrayParamException(array("stepUid" => "step_uid", "taskUid" => "act_uid", "processUid" => "prj_uid"));
                 $arrayData[] = $step->createAll($act_uid, $prj_uid, $valueRequest);
                 if (array_key_exists('triggers', $valueRequest)) {
                     foreach ($valueRequest["triggers"] as $key => $valueTrigger) {
                         $response["triggers"] = $stepTrigger->createAll($arrayData[0]["step_uid"], $valueTrigger["st_type"], $act_uid, $valueTrigger["tri_uid"], $valueTrigger);
                     }
                 }
                 $response = $arrayData;
             }
         }
         return $response;
     } catch (\Exception $e) {
         throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
     }
 }