Exemplo n.º 1
0
 /**
  * Return Informaction User for derivate
  * assignment Users
  *
  * return array Return an array with Task Case
  */
 public function GetPrepareInformation($usr_uid, $tas_uid, $app_uid, $del_index = null)
 {
     try {
         $oCase = new \Cases();
         $Fields = $oCase->loadCase($app_uid);
         $_SESSION["APPLICATION"] = $app_uid;
         $_SESSION["PROCESS"] = $Fields['PRO_UID'];
         $_SESSION["TASK"] = $tas_uid;
         $_SESSION["INDEX"] = $del_index;
         $_SESSION["USER_LOGGED"] = $usr_uid;
         $_SESSION["USR_USERNAME"] = isset($Fields['APP_DATA']['USR_USERNAME']) ? $Fields['APP_DATA']['USR_USERNAME'] : '';
         $triggers = $oCase->loadTriggers($tas_uid, 'ASSIGN_TASK', '-1', 'BEFORE');
         if (isset($triggers)) {
             $Fields['APP_DATA'] = array_merge($Fields['APP_DATA'], G::getSystemConstants());
             $Fields['APP_DATA'] = $oCase->ExecuteTriggers($tas_uid, 'DYNAFORM', '-1', 'BEFORE', $Fields['APP_DATA']);
             $oCase->updateCase($app_uid, $Fields);
         }
         $oDerivation = new \Derivation();
         $aData = array();
         $aData['APP_UID'] = $app_uid;
         $aData['DEL_INDEX'] = $del_index;
         $aData['USER_UID'] = $usr_uid;
         $derive = $oDerivation->prepareInformation($aData);
         $response = array();
         foreach ($derive as $sKey => &$aValues) {
             $sPriority = '';
             //set priority value
             if ($derive[$sKey]['NEXT_TASK']['TAS_PRIORITY_VARIABLE'] != '') {
                 //TO DO: review this type of assignment
                 if (isset($aData['APP_DATA'][str_replace('@@', '', $derive[$sKey]['NEXT_TASK']['TAS_PRIORITY_VARIABLE'])])) {
                     $sPriority = $aData['APP_DATA'][str_replace('@@', '', $derive[$sKey]['NEXT_TASK']['TAS_PRIORITY_VARIABLE'])];
                 }
             }
             //set priority value
             $taskType = isset($aValues["NEXT_TASK"]["TAS_TYPE"]) ? $aValues["NEXT_TASK"]["TAS_TYPE"] : false;
             $taskMessage = "";
             switch ($taskType) {
                 case "SCRIPT-TASK":
                     $taskMessage = G::LoadTranslation("ID_ROUTE_TO_TASK_SCRIPT_TASK");
                     break;
                 case "INTERMEDIATE-CATCH-TIMER-EVENT":
                     $taskMessage = G::LoadTranslation("ID_ROUTE_TO_TASK_INTERMEDIATE_CATCH_TIMER_EVENT");
                     break;
             }
             switch ($aValues['NEXT_TASK']['TAS_ASSIGN_TYPE']) {
                 case 'EVALUATE':
                 case 'REPORT_TO':
                 case 'BALANCED':
                 case 'SELF_SERVICE':
                     $taskAss = array();
                     $taskAss['taskId'] = $aValues['NEXT_TASK']['TAS_UID'];
                     $taskAss['taskName'] = $aValues['NEXT_TASK']['TAS_TITLE'];
                     $taskAss['taskAssignType'] = $aValues['NEXT_TASK']['TAS_ASSIGN_TYPE'];
                     $taskAss['taskDefProcCode'] = $aValues['NEXT_TASK']['TAS_DEF_PROC_CODE'];
                     $taskAss['delPriority'] = isset($aValues['NEXT_TASK']['DEL_PRIORITY']) ? $aValues['NEXT_TASK']['DEL_PRIORITY'] : "";
                     $taskAss['taskParent'] = $aValues['NEXT_TASK']['TAS_PARENT'];
                     $taskAss['taskMessage'] = $taskType ? $taskMessage : "";
                     $users = array();
                     $users['userId'] = $derive[$sKey]['NEXT_TASK']['USER_ASSIGNED']['USR_UID'];
                     $users['userFullName'] = strip_tags($derive[$sKey]['NEXT_TASK']['USER_ASSIGNED']['USR_FULLNAME']);
                     $taskAss['users'][] = $users;
                     $response[] = $taskAss;
                     break;
                 case 'MANUAL':
                 case "MULTIPLE_INSTANCE":
                 case "MULTIPLE_INSTANCE_VALUE_BASED":
                     $manual = array();
                     $manual['taskId'] = $aValues['NEXT_TASK']['TAS_UID'];
                     $manual['taskName'] = $aValues['NEXT_TASK']['TAS_TITLE'];
                     $manual['taskAssignType'] = $aValues['NEXT_TASK']['TAS_ASSIGN_TYPE'];
                     $manual['taskDefProcCode'] = $aValues['NEXT_TASK']['TAS_DEF_PROC_CODE'];
                     $manual['delPriority'] = isset($aValues['NEXT_TASK']['DEL_PRIORITY']) ? $aValues['NEXT_TASK']['DEL_PRIORITY'] : "";
                     $manual['taskParent'] = $aValues['NEXT_TASK']['TAS_PARENT'];
                     $manual['taskMessage'] = $taskType ? $taskMessage : "";
                     $Aux = array();
                     foreach ($aValues['NEXT_TASK']['USER_ASSIGNED'] as $aUser) {
                         $Aux[$aUser['USR_UID']] = $aUser['USR_FULLNAME'];
                     }
                     asort($Aux);
                     $users = array();
                     foreach ($Aux as $id => $fullname) {
                         $user['userId'] = $id;
                         $user['userFullName'] = $fullname;
                         $users[] = $user;
                     }
                     $manual['users'] = $users;
                     $response[] = $manual;
                     break;
                 case '':
                     //when this task is the Finish process
                 //when this task is the Finish process
                 case 'nobody':
                     $userFields = $oDerivation->getUsersFullNameFromArray($derive[$sKey]['USER_UID']);
                     $taskAss = array();
                     $taskAss['routeFinishFlag'] = true;
                     $user['userId'] = $derive[$sKey]['USER_UID'];
                     $user['userFullName'] = $userFields['USR_FULLNAME'];
                     $taskAss['users'][] = $user;
                     $response[] = $taskAss;
                     break;
             }
         }
         if (empty($response)) {
             throw new \Exception(G::LoadTranslation("ID_NO_DERIVATION_RULE"));
         }
     } catch (\Exception $e) {
         throw $e;
     }
     return $response;
 }
Exemplo n.º 2
0
    /**
     * Execute Trigger case
     *
     */
    public function doExecuteTriggerCase($usr_uid, $prj_uid, $act_uid, $cas_uid, $step_uid, $type)
    {
        $userData = $this->getUserData($usr_uid);
        $c = new \Criteria();
        $c->clearSelectColumns();
        $c->addSelectColumn(\StepPeer::STEP_UID);
        $c->addSelectColumn(\StepPeer::STEP_UID_OBJ);
        $c->add(\StepPeer::TAS_UID, $act_uid);
        $c->add(\StepPeer::STEP_TYPE_OBJ, 'DYNAFORM');
        $c->add(\StepPeer::STEP_UID, $step_uid);
        $rs = \StepPeer::doSelectRS($c);
        $rs->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
        $rs->next();
        $row = $rs->getRow();
        $step_uid_obj = $row['STEP_UID_OBJ'];

        $oCase = new \Cases();
        $Fields = $oCase->loadCase( $cas_uid );
        $_SESSION["APPLICATION"] = $cas_uid;
        $_SESSION["PROCESS"] = $prj_uid;
        $_SESSION["TASK"] = $act_uid;
        $_SESSION["USER_LOGGED"] = $usr_uid;
        $_SESSION["USR_USERNAME"] = $userData['firstName'];
        $_SESSION["INDEX"] = $Fields["DEL_INDEX"] = \AppDelegation::getCurrentIndex($cas_uid);
        $Fields['APP_DATA'] = array_merge( $Fields['APP_DATA'], G::getSystemConstants() );
        $triggers = $oCase->loadTriggers( $act_uid, 'DYNAFORM', $step_uid_obj, strtoupper($type) );
        if($triggers){
            $Fields['APP_DATA'] = $oCase->ExecuteTriggers( $act_uid, 'DYNAFORM', $step_uid_obj, strtoupper($type), $Fields['APP_DATA'] );
        }
        $Fields['TAS_UID'] = $act_uid;
        $Fields['CURRENT_DYNAFORM'] = $step_uid_obj;
        $Fields['USER_UID'] = $usr_uid;
        $Fields['PRO_UID'] = $prj_uid;
        $oCase->updateCase( $cas_uid, $Fields );
        $response = array('status' => 'ok');
        return $response;
    }