. * * For more information, contact Colosa Inc, 2566 Le Jeune Rd., * Coral Gables, FL, 33134, USA, or email info@colosa.com. */ require_once 'classes/model/GroupUser.php'; require_once 'classes/model/Groupwf.php'; require_once 'classes/model/ObjectPermission.php'; require_once 'classes/model/Process.php'; require_once 'classes/model/Route.php'; require_once 'classes/model/Event.php'; require_once 'classes/model/Step.php'; require_once 'classes/model/StepTrigger.php'; require_once 'classes/model/Task.php'; require_once 'classes/model/TaskUser.php'; require_once 'classes/model/Users.php'; require_once 'classes/model/Gateway.php'; /** * Tasks - Tasks class * * @package workflow.engine.ProcessMaker * @author Julio Cesar Laura Avenda�o * @copyright 2007 COLOSA */ class Tasks { /** * Get the assigned groups of a task * * @param string $sTaskUID * @param integer $iType * @return array */ public function getGroupsOfTask ($sTaskUID, $iType) { try { $aGroups = array (); $oCriteria = new Criteria( 'workflow' ); $oCriteria->addJoin( GroupwfPeer::GRP_UID, TaskUserPeer::USR_UID, Criteria::LEFT_JOIN ); $oCriteria->add( TaskUserPeer::TAS_UID, $sTaskUID ); $oCriteria->add( TaskUserPeer::TU_TYPE, $iType ); $oCriteria->add( TaskUserPeer::TU_RELATION, 2 ); $oCriteria->add( GroupwfPeer::GRP_STATUS, 'ACTIVE' ); $oDataset = GroupwfPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $aGroups[] = $aRow; $oDataset->next(); } return $aGroups; } catch (Exception $oError) { throw ($oError); } } /** * Get all tasks for any Process * * @param string $sProUid * @return array */ public function getAllTasks ($sProUid) { try { $aTasks = array (); $sDelimiter = DBAdapter::getStringDelimiter(); $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( TaskPeer::PRO_UID, $sProUid ); $aConditions = array (); $aConditions[] = array (TaskPeer::TAS_UID,ContentPeer::CON_ID ); $aConditions[] = array (ContentPeer::CON_CATEGORY,$sDelimiter . 'TAS_TITLE' . $sDelimiter ); $aConditions[] = array (ContentPeer::CON_LANG,$sDelimiter . SYS_LANG . $sDelimiter ); $oCriteria->addJoinMC( $aConditions, Criteria::LEFT_JOIN ); $oCriteria->addAscendingOrderByColumn( ContentPeer::CON_VALUE ); $oDataset = TaskPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oTask = new Task(); $aTasks[] = $oTask->Load( $aRow['TAS_UID'] ); $oDataset->next(); } return $aTasks; } catch (Exception $oError) { throw ($oError); } } /** * creates row tasks from an Task Array * * @param string $aTasks * @return array */ public function createTaskRows ($aTask) { foreach ($aTask as $key => $row) { $oTask = new Task(); if ($oTask->taskExists( $row['TAS_UID'] )) $oTask->remove( $row['TAS_UID'] ); $res = $oTask->createRow( $row ); } return; } /** * updates row tasks from an Task Array * * @param string $aTasks * @return array */ public function updateTaskRows ($aTask) { foreach ($aTask as $key => $row) { $oTask = new Task(); if ($oTask->taskExists( $row['TAS_UID'] )) $oTask->remove( $row['TAS_UID'] ); else $res = $oTask->update( $row ); } return; } /** * Get all Routes for any Process * * @param string $sProUid * @return array */ public function getAllRoutes ($sProUid) { try { $aRoutes = array (); $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( RoutePeer::PRO_UID, $sProUid ); $oDataset = RoutePeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $aRoutes[] = $aRow; $oDataset->next(); } return $aRoutes; } catch (Exception $oError) { throw ($oError); } } /** * creates row tasks from an Route Array * * @param string $aTasks * @return array */ public function createRouteRows ($aRoutes) { $routeID = array (); $aField = array (); $taskParallel = ''; $taskSecJoin = ''; $taskEvaluate = ''; $taskParallelEv = ''; $taskSelect = ''; $taskDiscriminator = ''; foreach ($aRoutes as $key => $row) { $sRouteType = $row['ROU_TYPE']; $oRoute = new Route(); $oProcessMap = new processMap(); $oTask = new Task(); $oEvent = new Event(); //unset ($row['ROU_UID']); //Saving Gateway into the GATEWAY table $idTask = $row['TAS_UID']; $nextTask = $row['ROU_NEXT_TASK']; if ($nextTask == "-1") { $end = 1; } if ($sRouteType != 'SEQUENTIAL') { switch ($sRouteType) { case 'PARALLEL': if ($idTask != $taskParallel) { $taskParallel = $idTask; $sGatewayUID = $oProcessMap->saveNewGateway( $row['PRO_UID'], $row['TAS_UID'], $row['ROU_NEXT_TASK'] ); } break; case 'SEC-JOIN': if ($nextTask != $taskSecJoin) { $taskSecJoin = $nextTask; $sGatewayUID = $oProcessMap->saveNewGateway( $row['PRO_UID'], $row['TAS_UID'], $row['ROU_NEXT_TASK'] ); } break; case 'EVALUATE': if ($idTask != $taskEvaluate) { $taskEvaluate = $idTask; $sGatewayUID = $oProcessMap->saveNewGateway( $row['PRO_UID'], $row['TAS_UID'], $row['ROU_NEXT_TASK'] ); } break; case 'PARALLEL-BY-EVALUATION': if ($idTask != $taskParallelEv) { $taskParallelEv = $idTask; $sGatewayUID = $oProcessMap->saveNewGateway( $row['PRO_UID'], $row['TAS_UID'], $row['ROU_NEXT_TASK'] ); } break; case 'SELECT': if ($idTask != $taskSelect) { $taskSelect = $idTask; $sGatewayUID = $oProcessMap->saveNewGateway( $row['PRO_UID'], $row['TAS_UID'], $row['ROU_NEXT_TASK'] ); } break; case 'DISCRIMINATOR': if ($nextTask != $taskDiscriminator) { $taskDiscriminator = $nextTask; $sGatewayUID = $oProcessMap->saveNewGateway( $row['PRO_UID'], $row['TAS_UID'], $row['ROU_NEXT_TASK'] ); } break; } $row['GAT_UID'] = $sGatewayUID; } if ($oRoute->routeExists( $row['ROU_UID'] )) $oRoute->remove( $row['ROU_UID'] ); $routeID = $oRoute->create( $row ); //saving end event while import old processes if (isset( $end ) && $end == 1) { if (! $oEvent->existsByTaskUidFrom( $idTask )) { if ($sRouteType == "SEQUENTIAL") { $aTaskDetails = $oTask->load( $idTask ); $positionX = $aTaskDetails['TAS_POSX'] + $aTaskDetails['TAS_WIDTH'] / 2; $positionY = $aTaskDetails['TAS_POSY'] + $aTaskDetails['TAS_HEIGHT'] + 10; $aData['PRO_UID'] = $row['PRO_UID']; $aData['EVN_TYPE'] = 'bpmnEventEmptyEnd'; $aData['EVN_POSX'] = $positionX; $aData['EVN_POSY'] = $positionY; $aData['EVN_TAS_UID_FROM'] = $idTask; $aData['EVN_STATUS'] = 'ACTIVE'; $aData['EVN_RELATED_TO'] = 'MULTIPLE'; $aData['EVN_WHEN'] = '1'; $aData['EVN_ACTION'] = ''; $sEvn_uid = $oEvent->create( $aData ); $aField['ROU_UID'] = $routeID; $aField['ROU_EVN_UID'] = $sEvn_uid; $oRoute->update( $aField ); $end = 0; } } } } return; } /** * updates row tasks from an Route Array * * @param string $aTasks * @return array */ public function updateRouteRows ($aRoutes) { foreach ($aRoutes as $key => $row) { $oRoute = new Route(); //krumo ($row); if (is_array( $oRoute->load( $row['ROU_UID'] ) )) $oRoute->remove( $row['ROU_UID'] ); else $res = $oRoute->update( $row ); } return; } /** * Get the assigned users of a task * * @param string $sTaskUID * @param integer $iType * @return array */ public function getUsersOfTask ($sTaskUID, $iType) { try { $aUsers = array (); $oCriteria = new Criteria( 'workflow' ); $oCriteria->addJoin( UsersPeer::USR_UID, TaskUserPeer::USR_UID, Criteria::LEFT_JOIN ); $oCriteria->add( TaskUserPeer::TAS_UID, $sTaskUID ); $oCriteria->add( TaskUserPeer::TU_TYPE, $iType ); $oCriteria->add( TaskUserPeer::TU_RELATION, 1 ); $oDataset = UsersPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $aUsers[] = $aRow; $oDataset->next(); } return $aUsers; } catch (Exception $oError) { throw ($oError); } } /** * Delete a task * * @param string $sTaskUID * @return void */ function deleteTask ($sTaskUID = '') { try { //Instance classes $oTask = new Task(); $oTasks = new Tasks(); $oTaskUser = new TaskUser(); $oStep = new Step(); $oStepTrigger = new StepTrigger(); //Get task information $aFields = $oTask->load( $sTaskUID ); //Delete routes $oTasks->deleteAllRoutesOfTask( $aFields['PRO_UID'], $sTaskUID, true ); //Delete gateways $oTasks->deleteAllGatewayOfTask( $aFields['PRO_UID'], $sTaskUID, true ); //Delete the users assigned to task $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( TaskUserPeer::TAS_UID, $sTaskUID ); $oDataset1 = TaskUserPeer::doSelectRS( $oCriteria ); $oDataset1->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset1->next(); while ($aRow1 = $oDataset1->getRow()) { $oTaskUser->remove( $aRow1['TAS_UID'], $aRow1['USR_UID'], $aRow1['TU_TYPE'], $aRow1['TU_RELATION'] ); $oDataset1->next(); } //Delete the steps of task $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( StepPeer::TAS_UID, $sTaskUID ); $oDataset1 = StepPeer::doSelectRS( $oCriteria ); $oDataset1->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset1->next(); while ($aRow1 = $oDataset1->getRow()) { //Delete the triggers assigned to step /*$oCriteria = new Criteria('workflow'); $oCriteria->add(StepTriggerPeer::STEP_UID, $aRow1['STEP_UID']); $oDataset2 = StepTriggerPeer::doSelectRS($oCriteria); $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset2->next(); while ($aRow2 = $oDataset2->getRow()) { $oStepTrigger->remove($aRow2['STEP_UID'], $aRow2['TAS_UID'], $aRow2['TRI_UID'], $aRow2['ST_TYPE']); $oDataset2->next(); }*/ $oStep->remove( $aRow1['STEP_UID'] ); $oDataset1->next(); } //Delete step triggers $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( StepTriggerPeer::TAS_UID, $sTaskUID ); StepTriggerPeer::doDelete( $oCriteria ); //Delete permissions $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( ObjectPermissionPeer::TAS_UID, $sTaskUID ); ObjectPermissionPeer::doDelete( $oCriteria ); $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( ObjectPermissionPeer::OP_TASK_SOURCE, $sTaskUID ); ObjectPermissionPeer::doDelete( $oCriteria ); //Delete task $oTask->remove( $sTaskUID ); //Delete cases schedulers added by krlos $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( CaseSchedulerPeer::TAS_UID, $sTaskUID ); CaseSchedulerPeer::doDelete( $oCriteria ); } catch (Exception $oError) { throw ($oError); } } /** * Delete all routes from a task * * @param string $sProcessUID * @param string $sTaskUID * @return boolean */ public function deleteAllRoutesOfTask ($sProcessUID = '', $sTaskUID = '', $bAll = false) { try { $oProcess = new Process(); $aFields = $oProcess->load( $sProcessUID ); $oTask = new Task(); $aFields = $oTask->load( $sTaskUID ); $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( RoutePeer::PRO_UID, $sProcessUID ); $oCriteria->add( RoutePeer::TAS_UID, $sTaskUID ); RoutePeer::doDelete( $oCriteria ); if ($bAll) { $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( RoutePeer::PRO_UID, $sProcessUID ); $oCriteria->add( RoutePeer::ROU_NEXT_TASK, $sTaskUID ); RoutePeer::doDelete( $oCriteria ); } return true; } catch (Exception $oError) { throw ($oError); } } /** * Get all gateways for any Process * * @param string $sProUid * @return array */ public function getAllGateways ($sProUid) { try { $aGateways = array (); $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( GatewayPeer::PRO_UID, $sProUid ); $oDataset = GatewayPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oGateway = new Gateway(); $aGateways[] = $oGateway->load( $aRow['GAT_UID'] ); $oDataset->next(); } return $aGateways; } catch (Exception $oError) { throw ($oError); } } /** * creates row tasks from an Task Array * * @param string $aTasks * @return array */ public function createGatewayRows ($aGateway) { foreach ($aGateway as $key => $row) { $oGateway = new Gateway(); if ($oGateway->gatewayExists( $row['GAT_UID'] )) $oGateway->remove( $row['GAT_UID'] ); if ($row['TAS_UID'] != '' && $row['GAT_NEXT_TASK'] != '') continue; else $res = $oGateway->createRow( $row ); } return; } /** * Delete all routes from a task * * @param string $sProcessUID * @param string $sTaskUID * @return boolean */ public function deleteAllGatewayOfTask ($sProcessUID = '', $sTaskUID = '', $bAll = false) { try { $oProcess = new Process(); $aFields = $oProcess->load( $sProcessUID ); $oTask = new Task(); $aFields = $oTask->load( $sTaskUID ); $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( GatewayPeer::PRO_UID, $sProcessUID ); $oCriteria->add( GatewayPeer::TAS_UID, $sTaskUID ); GatewayPeer::doDelete( $oCriteria ); if ($bAll) { $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( GatewayPeer::PRO_UID, $sProcessUID ); $oCriteria->add( GatewayPeer::GAT_NEXT_TASK, $sTaskUID ); GatewayPeer::doDelete( $oCriteria ); } return true; } catch (Exception $oError) { throw ($oError); } } /** * Assign a user to task * * @param string $sTaskUID * @param string $sUserUID * @param string $iType * @return integer */ public function assignUser ($sTaskUID = '', $sUserUID = '', $iType = '') { try { $oTaskUser = new TaskUser(); return $oTaskUser->create( array ('TAS_UID' => $sTaskUID,'USR_UID' => $sUserUID,'TU_TYPE' => $iType,'TU_RELATION' => 1 ) ); } catch (Exception $oError) { throw ($oError); } } /** * Assign a group to task * * @param string $sTaskUID * @param string $sGroupUID * @param string $iType * @return integer */ public function assignGroup ($sTaskUID = '', $sGroupUID = '', $iType = '') { try { $oTaskUser = new TaskUser(); /*$oCriteria = new Criteria('workflow'); $oCriteria->add(GroupUserPeer::GRP_UID, $sGroupUID); $oDataset = GroupUserPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aGroupUser = $oDataset->getRow()) { $oCriteria = new Criteria('workflow'); $oCriteria->add(TaskUserPeer::TAS_UID, $sTaskUID); $oCriteria->add(TaskUserPeer::USR_UID, $aGroupUser['USR_UID']); $oDataset2 = TaskUserPeer::doSelectRS($oCriteria); $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset2->next(); $aRow = $oDataset2->getRow(); if (!is_array($aRow)) { $this->assignUser($sTaskUID, $aGroupUser['USR_UID'], $iType); } $oDataset->next(); }*/ return $oTaskUser->create( array ('TAS_UID' => $sTaskUID,'USR_UID' => $sGroupUID,'TU_TYPE' => $iType,'TU_RELATION' => 2 ) ); } catch (Exception $oError) { throw ($oError); } } /** * of the assign user of all the tasks * * @param string $sUserUID * @return void */ public function ofToAssignUserOfAllTasks ($sUserUID = '') { try { $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( TaskUserPeer::USR_UID, $sUserUID ); TaskUserPeer::doDelete( $oCriteria ); } catch (Exception $oError) { throw ($oError); } } /** * Of to assign a user from a task * * @param string $sTaskUID * @param string $sUserUID * @param integer $iType * @return boolean */ public function ofToAssignUser ($sTaskUID = '', $sUserUID = '', $iType = 0) { try { $oTaskUser = new TaskUser(); $oTaskUser->remove( $sTaskUID, $sUserUID, $iType, 1 ); return true; } catch (Exception $oError) { throw ($oError); } } /** * Of to assign a group from a task * * @param string $sTaskUID * @param string $sGroupUID * @param integer $iType * @return boolean */ public function ofToAssignGroup ($sTaskUID = '', $sGroupUID = '', $iType = 0) { try { $oTaskUser = new TaskUser(); return $oTaskUser->remove( $sTaskUID, $sGroupUID, $iType, 2 ); } catch (Exception $oError) { throw ($oError); } } /** * Get the assigned steps of a task * * @param string $sTaskUID * @return array */ public function getStepsOfTask ($sTaskUID) { try { $aSteps = array (); $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( StepPeer::TAS_UID, $sTaskUID ); $oCriteria->addAscendingOrderByColumn( StepPeer::STEP_POSITION ); $oDataset = StepPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $aSteps[] = $aRow; $oDataset->next(); } return $aSteps; } catch (Exception $oError) { throw ($oError); } } /** * Return if exists building elements to add steps * * @param string $sProcessUID * @return boolean */ public function existsBuildingElements ($sProcessUID) { try { $oCriteria = new Criteria( 'workflow' ); //$oCriteria->add(StepPeer::PRO_UID, $sProcessUID); //$oDataset = StepPeer::doSelectRS($oCriteria); //$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); //$oDataset->next(); return true; } catch (Exception $oError) { throw ($oError); } } /** * Get all tasks for any Process * * @param string $sProUid * @return array */ public function getStartingTaskForUser ($sProUid, $sUsrUid) { try { $aTasks = array (); $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( TaskPeer::PRO_UID, $sProUid ); //$oCriteria->add(TaskPeer::TAS_USER, $sUsrUid); $oCriteria->add( TaskPeer::TAS_START, 'TRUE' ); $oDataset = TaskPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oTask = new Task(); $aTasks[] = $oTask->Load( $aRow['TAS_UID'] ); $oDataset->next(); } return $aTasks; } catch (Exception $oError) { throw ($oError); } } /** * Verify the user assig in any task * * @param string $sTaskUID * @return array */ public function assignUsertoTask ($sTaskUID) { try { $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( TaskUserPeer::USR_UID ); $oCriteria->add( TaskUserPeer::TAS_UID, $sTaskUID ); $oDataset = TaskUserPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); $aRow = $oDataset->getRow(); if (is_array( $aRow )) return 1; else return 0; } catch (Exception $oError) { throw ($oError); } } /** * Verify the user assig in task * * @param string $sUsrUid, $sTaskUID * @return array */ public function verifyUsertoTask ($sUsrUid, $sTaskUID) { try { $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( TaskUserPeer::USR_UID ); $oCriteria->addSelectColumn( TaskUserPeer::TAS_UID ); $oCriteria->addSelectColumn( TaskUserPeer::TU_RELATION ); $oCriteria->add( TaskUserPeer::TAS_UID, $sTaskUID ); $oCriteria->add( TaskUserPeer::USR_UID, $sUsrUid ); $oDataset = TaskUserPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); $aRow = $oDataset->getRow(); if (is_array( $aRow )) return $aRow; else return $aRow; } catch (Exception $oError) { throw ($oError); } } /** * Get tasks that the usser is assigned * * @param string $sUsrUID * @return array */ public function getTasksThatUserIsAssigned ($sUserUID) { try { $aTasks = array (); $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( TaskUserPeer::USR_UID, $sUserUID ); $oCriteria->add( TaskUserPeer::TU_RELATION, 1 ); $oDataset = TaskUserPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $aTasks[] = $aRow['TAS_UID']; $oDataset->next(); } $aGroups = array (); $oCriteria = new Criteria(); $oCriteria->add( GroupwfPeer::GRP_UID, '', Criteria::NOT_EQUAL ); $oCriteria->add( GroupUserPeer::USR_UID, $sUserUID ); $oCriteria->add( GroupwfPeer::GRP_STATUS, 'ACTIVE' ); $oCriteria->addJoin( GroupUserPeer::GRP_UID, GroupwfPeer::GRP_UID, Criteria::LEFT_JOIN ); $oDataset = GroupwfPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $aGroups[] = $aRow['GRP_UID']; $oDataset->next(); } $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( TaskUserPeer::USR_UID, $aGroups, Criteria::IN ); $oCriteria->add( TaskUserPeer::TU_RELATION, 2 ); $oDataset = TaskUserPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if (! in_array( $aRow['TAS_UID'], $aTasks )) { $aTasks[] = $aRow['TAS_UID']; } $oDataset->next(); } return $aTasks; } catch (Exception $oError) { throw ($oError); } } /** * Get Routes for any Process and any Task * * @param string $sProUid, $sTaskUid * @return array by Everth */ public function getRoute ($sProUid, $sTaskUid) { try { $aRoutes = array (); $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( RoutePeer::PRO_UID, $sProUid ); $oCriteria->add( RoutePeer::TAS_UID, $sTaskUid ); $oDataset = RoutePeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $aRoutes[] = $aRow; $oDataset->next(); } return $aRoutes; } catch (Exception $oError) { throw ($oError); } } /** * Get Routes for any Process,route type,route next task * * @param string $sProUid, $sTaskUid * @return array by Girish */ public function getRouteByType ($sProUid, $sRouteNextTaskUid, $sRouteType) { try { $aRoutes = array (); $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( RoutePeer::PRO_UID, $sProUid ); $oCriteria->add( RoutePeer::ROU_NEXT_TASK, $sRouteNextTaskUid ); $oCriteria->add( RoutePeer::ROU_TYPE, $sRouteType ); $oDataset = RoutePeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $aRoutes[] = $aRow; $oDataset->next(); } return $aRoutes; } catch (Exception $oError) { throw ($oError); } } } ?>