diff --git a/workflow/engine/classes/Cases.php b/workflow/engine/classes/Cases.php index 8dae33f5a..93355dcae 100644 --- a/workflow/engine/classes/Cases.php +++ b/workflow/engine/classes/Cases.php @@ -2533,10 +2533,11 @@ class Cases * Get the transfer History * * @name getTransferHistoryCriteria - * @param string $sAppUid - * @return array + * @param integer $appNumber + * + * @return object */ - public function getTransferHistoryCriteria($sAppUid) + public function getTransferHistoryCriteria($appNumber) { $c = new Criteria('workflow'); $c->addSelectColumn(UsersPeer::USR_FIRSTNAME); @@ -2546,41 +2547,52 @@ class Cases $c->addSelectColumn(AppDelegationPeer::TAS_UID); $c->addSelectColumn(AppDelegationPeer::APP_UID); $c->addSelectColumn(AppDelegationPeer::DEL_INDEX); - ///-- $c->addAsColumn('USR_NAME', "CONCAT(USR_LASTNAME, ' ', USR_FIRSTNAME)"); - $sDataBase = 'database_' . strtolower(DB_ADAPTER); - if (G::LoadSystemExist($sDataBase)) { - $oDataBase = new database(); - $c->addAsColumn('USR_NAME', $oDataBase->concatString("USR_LASTNAME", "' '", "USR_FIRSTNAME")); - $c->addAsColumn( - 'DEL_FINISH_DATE', $oDataBase->getCaseWhen("DEL_FINISH_DATE IS NULL", "'-'", AppDelegationPeer::DEL_FINISH_DATE) - ); - $c->addAsColumn( - 'APP_TYPE', $oDataBase->getCaseWhen("DEL_FINISH_DATE IS NULL", "'IN_PROGRESS'", AppDelayPeer::APP_TYPE) - ); - } $c->addSelectColumn(AppDelegationPeer::DEL_INIT_DATE); $c->addSelectColumn(AppDelayPeer::APP_ENABLE_ACTION_DATE); $c->addSelectColumn(AppDelayPeer::APP_DISABLE_ACTION_DATE); - $c->addSelectColumn(TaskPeer::TAS_TITLE); - //APP_DELEGATION LEFT JOIN USERS - $c->addJoin(AppDelegationPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); - //APP_DELAY FOR MORE DESCRIPTION - //$c->addJoin(AppDelegationPeer::DEL_INDEX, AppDelayPeer::APP_DEL_INDEX, Criteria::LEFT_JOIN); - //$c->addJoin(AppDelegationPeer::APP_UID, AppDelayPeer::APP_UID, Criteria::LEFT_JOIN); + //We added this custom query for the case tracker + $c->addAsColumn( + 'TAS_TITLE', + 'CASE WHEN TASK.TAS_TITLE = "INTERMEDIATE-THROW-EMAIL-EVENT" THEN "' . G::LoadTranslation('ID_INTERMEDIATE_THROW_EMAIL_EVENT') . '" + WHEN TASK.TAS_TITLE = "INTERMEDIATE-THROW-MESSAGE-EVENT" THEN "' . G::LoadTranslation('ID_INTERMEDIATE_THROW_MESSAGE_EVENT') . '" + WHEN TASK.TAS_TITLE = "INTERMEDIATE-CATCH-MESSAGE-EVENT" THEN "' . G::LoadTranslation('ID_INTERMEDIATE_CATCH_MESSAGE_EVENT') . '" + WHEN TASK.TAS_TITLE = "INTERMEDIATE-CATCH-TIMER-EVENT" THEN "' . G::LoadTranslation('ID_INTERMEDIATE_CATCH_TIMER_EVENT') . '" + ELSE TASK.TAS_TITLE + END' + ); + + $dbAdapter = 'database_' . strtolower(DB_ADAPTER); + if (G::LoadSystemExist($dbAdapter)) { + $dataBase = new database(); + $c->addAsColumn( + 'USR_NAME', + $dataBase->concatString("USR_LASTNAME", "' '", "USR_FIRSTNAME") + ); + $c->addAsColumn( + 'DEL_FINISH_DATE', + $dataBase->getCaseWhen("DEL_FINISH_DATE IS NULL", "'-'", AppDelegationPeer::DEL_FINISH_DATE) + ); + $c->addAsColumn( + 'APP_TYPE', + $dataBase->getCaseWhen("DEL_FINISH_DATE IS NULL", "'IN_PROGRESS'", AppDelayPeer::APP_TYPE) + ); + } + + //Define the joins + $c->addJoin(AppDelegationPeer::USR_ID, UsersPeer::USR_ID, Criteria::LEFT_JOIN); + $c->addJoin(AppDelegationPeer::TAS_ID, TaskPeer::TAS_ID, Criteria::LEFT_JOIN); + $del = DBAdapter::getStringDelimiter(); - $app = array(); - $app[] = array(AppDelegationPeer::DEL_INDEX, AppDelayPeer::APP_DEL_INDEX); - $app[] = array(AppDelegationPeer::APP_UID, AppDelayPeer::APP_UID); + $app = []; + $app[] = [AppDelegationPeer::DEL_INDEX, AppDelayPeer::APP_DEL_INDEX]; + $app[] = [AppDelegationPeer::APP_NUMBER, AppDelayPeer::APP_NUMBER]; $c->addJoinMC($app, Criteria::LEFT_JOIN); - //LEFT JOIN TASK TAS_TITLE - $c->addJoin(AppDelegationPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN); + //Define the where + $c->add(AppDelegationPeer::APP_NUMBER, $appNumber); - //WHERE - $c->add(AppDelegationPeer::APP_UID, $sAppUid); - - //ORDER BY + //Order by $c->clearOrderByColumns(); $c->addAscendingOrderByColumn(AppDelegationPeer::DEL_DELEGATE_DATE); diff --git a/workflow/engine/classes/WorkspaceTools.php b/workflow/engine/classes/WorkspaceTools.php index 6af1ad085..0f4614cde 100644 --- a/workflow/engine/classes/WorkspaceTools.php +++ b/workflow/engine/classes/WorkspaceTools.php @@ -3932,7 +3932,7 @@ class WorkspaceTools WHERE AM.TAS_ID = 0 AND AM.PRO_ID = 0 AND AM.APP_NUMBER != 0 AND AM.DEL_INDEX != 0"); $con->commit(); - // Populating APP_MESSAGE.PRO_ID when does not exits DEL_INDEX + // Populating APP_MESSAGE.PRO_ID CLI::logging("-> Populating APP_MESSAGE.PRO_ID\n"); $con->begin(); $stmt = $con->createStatement(); @@ -3948,7 +3948,7 @@ class WorkspaceTools WHERE AM.PRO_ID = 0 AND AM.APP_NUMBER != 0"); $con->commit(); - // Populating APP_MESSAGE.PRO_ID + // Populating APP_MESSAGE.APP_MSG_STATUS_ID CLI::logging("-> Populating APP_MESSAGE.APP_MSG_STATUS_ID \n"); $con->begin(); $rs = $stmt->executeQuery("UPDATE APP_MESSAGE @@ -3961,8 +3961,8 @@ class WorkspaceTools APP_MSG_STATUS_ID = 0"); $con->commit(); - // Populating APP_MESSAGE.PRO_ID - CLI::logging("-> Populating APP_MESSAGE.APP_MSG_STATUS_ID \n"); + // Populating APP_MESSAGE.APP_MSG_TYPE_ID + CLI::logging("-> Populating APP_MESSAGE.APP_MSG_TYPE_ID \n"); $con->begin(); $rs = $stmt->executeQuery("UPDATE APP_MESSAGE SET APP_MSG_TYPE_ID = (case @@ -3975,6 +3975,28 @@ class WorkspaceTools APP_MSG_TYPE_ID = 0"); $con->commit(); + // Populating TAS.TAS_TITLE with BPMN_EVENT.EVN_NAME + /*----------------------------------********---------------------------------*/ + CLI::logging("-> Populating TASK.TAS_TITLE with BPMN_EVENT.EVN_NAME\n"); + $con->begin(); + $rs = $stmt->executeQuery("UPDATE TASK + INNER JOIN ( + SELECT ELEMENT_TASK_RELATION.TAS_UID, BPMN_EVENT.EVN_NAME + FROM ELEMENT_TASK_RELATION + JOIN BPMN_EVENT ON (BPMN_EVENT.EVN_UID = ELEMENT_TASK_RELATION.ELEMENT_UID) + ) AS EVENT + ON (TASK.TAS_UID = EVENT.TAS_UID) + SET TASK.TAS_TITLE = EVENT.EVN_NAME + WHERE TASK.TAS_TITLE IN ( + 'INTERMEDIATE-THROW-MESSAGE-EVENT', + 'INTERMEDIATE-THROW-EMAIL-EVENT', + 'INTERMEDIATE-CATCH-TIMER-EVENT', + 'INTERMEDIATE-CATCH-MESSAGE-EVENT' + ) + AND EVENT.EVN_NAME != ''"); + $con->commit(); + /*----------------------------------********---------------------------------*/ + CLI::logging("-> Migrating And Populating Indexing for avoiding the use of table APP_CACHE_VIEW Done \n"); // Populating PRO_ID, USR_ID diff --git a/workflow/engine/classes/model/Task.php b/workflow/engine/classes/model/Task.php index 75b613cd5..f6ddfc66b 100644 --- a/workflow/engine/classes/model/Task.php +++ b/workflow/engine/classes/model/Task.php @@ -16,12 +16,19 @@ */ class Task extends BaseTask { + const tas_type_events = [ + 'INTERMEDIATE-THROW-MESSAGE-EVENT', + 'INTERMEDIATE-THROW-EMAIL-EVENT', + 'INTERMEDIATE-CATCH-TIMER-EVENT', + 'INTERMEDIATE-CATCH-MESSAGE-EVENT' + ]; /** * This value goes in the content table * @var string */ protected $tas_title_content = ''; + /** * Get the tas_title column value. * @return string diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index 4fc00efb0..702a8d3b3 100644 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -9911,6 +9911,18 @@ msgstr "Insufficient privileges to execute this function" msgid "INT" msgstr "INT" +# TRANSLATION +# LABEL/ID_INTERMEDIATE_CATCH_MESSAGE_EVENT +#: LABEL/ID_INTERMEDIATE_CATCH_MESSAGE_EVENT +msgid "Untitled - Intermediate Send Message Event" +msgstr "Untitled - Intermediate Send Message Event" + +# TRANSLATION +# LABEL/ID_INTERMEDIATE_CATCH_TIMER_EVENT +#: LABEL/ID_INTERMEDIATE_CATCH_TIMER_EVENT +msgid "Untitled - Intermediate Timer Event" +msgstr "Untitled - Intermediate Timer Event" + # TRANSLATION # LABEL/ID_INTERMEDIATE_MESSAGE_EVENT #: LABEL/ID_INTERMEDIATE_MESSAGE_EVENT @@ -9935,6 +9947,18 @@ msgstr "Intermediate Timer Event (Multiple Event)" msgid "[LABEL/ID_INTERMEDIATE_TIMER_EVENTS] Intermediate Timer Event (Multiple Event)" msgstr "Intermediate Timer Event (Multiple Event)" +# TRANSLATION +# LABEL/ID_INTERMEDIATE_THROW_EMAIL_EVENT +#: LABEL/ID_INTERMEDIATE_THROW_EMAIL_EVENT +msgid "Untitled - Intermediate Email Event" +msgstr "Untitled - Intermediate Email Event" + +# TRANSLATION +# LABEL/ID_INTERMEDIATE_THROW_MESSAGE_EVENT +#: LABEL/ID_INTERMEDIATE_THROW_MESSAGE_EVENT +msgid "Untitled - Intermediate Receive Message Event" +msgstr "Untitled - Intermediate Receive Message Event" + # TRANSLATION # LABEL/ID_INTERNATIONAL #: LABEL/ID_INTERNATIONAL diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index 66143c197..e18457c0a 100644 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -58482,10 +58482,14 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_INSTRUCTIONS_TEXT','en','To assign a case, first select the case in the list. Then enter a user name in the ''Search'' field and select a user to whom the case will be reassigned.','2014-10-21') , ( 'LABEL','ID_INSUFFICIENT_PRIVILEGES_FUNCTION','en','Insufficient privileges to execute this function','2014-01-15') , ( 'LABEL','ID_INT','en','INT','2014-01-15') , +( 'LABEL','ID_INTERMEDIATE_CATCH_MESSAGE_EVENT','en','Untitled - Intermediate Send Message Event','2018-05-23') , +( 'LABEL','ID_INTERMEDIATE_CATCH_TIMER_EVENT','en','Untitled - Intermediate Timer Event','2018-05-23') , ( 'LABEL','ID_INTERMEDIATE_MESSAGE_EVENT','en','Intermediate Message Events (Task Notifications)','2014-01-15') , ( 'LABEL','ID_INTERMEDIATE_MESSAGE_EVENTS','en','Intermediate Message Events (Task Notifications)','2014-01-15') , ( 'LABEL','ID_INTERMEDIATE_TIMER_EVENT','en','Intermediate Timer Event (Multiple Event)','2014-01-15') , ( 'LABEL','ID_INTERMEDIATE_TIMER_EVENTS','en','Intermediate Timer Event (Multiple Event)','2014-01-15') , +( 'LABEL','ID_INTERMEDIATE_THROW_EMAIL_EVENT','en','Untitled - Intermediate Email Event','2018-05-23') , +( 'LABEL','ID_INTERMEDIATE_THROW_MESSAGE_EVENT','en','Untitled - Intermediate Receive Message Event','2018-05-23') , ( 'LABEL','ID_INTERNATIONAL','en','International','2014-01-15') , ( 'LABEL','ID_INVALID_APPLICATION_ID_MSG','en','An invalid application ID was stored for the session.
This could have happened if you opened another case in a new tab or window.
Please {0} the case.','2014-10-21') , ( 'LABEL','ID_INVALID_APPLICATION_NUMBER','en','You have set a invalid Application Number','2014-01-15') , diff --git a/workflow/engine/methods/cases/caseHistory_Ajax.php b/workflow/engine/methods/cases/caseHistory_Ajax.php index e3fc9d007..ae954d1ae 100644 --- a/workflow/engine/methods/cases/caseHistory_Ajax.php +++ b/workflow/engine/methods/cases/caseHistory_Ajax.php @@ -1,5 +1,6 @@ loadCase($appUid); + $criteria = Cases::getTransferHistoryCriteria($fields['APP_NUMBER']); $dataSet = GulliverBasePeer::doSelectRs($criteria); $totalCount = $dataSet->getRecordCount(); diff --git a/workflow/engine/methods/tracker/tracker_History.php b/workflow/engine/methods/tracker/tracker_History.php index db3a8367f..3039da355 100644 --- a/workflow/engine/methods/tracker/tracker_History.php +++ b/workflow/engine/methods/tracker/tracker_History.php @@ -60,7 +60,7 @@ $G_PUBLISH = new Publisher(); if ($noShowTitle == 0) { $G_PUBLISH->AddContent( 'smarty', 'cases/cases_title', '', '', $aFields ); } -$G_PUBLISH->AddContent( 'propeltable', 'paged-table', 'tracker/tracker_TransferHistory', Cases::getTransferHistoryCriteria( $_SESSION['APPLICATION'] ), array () ); +$G_PUBLISH->AddContent('propeltable', 'paged-table', 'tracker/tracker_TransferHistory', Cases::getTransferHistoryCriteria($aFields['APP_NUMBER']), []); $bpmn = new ProcessMaker\Project\Bpmn(); $flagIsBpmn = ($bpmn->exists($_SESSION["PROCESS"]))? true : false; diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Light/Tracker.php b/workflow/engine/src/ProcessMaker/BusinessModel/Light/Tracker.php index 152aeb161..3aed5398d 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Light/Tracker.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Light/Tracker.php @@ -2,7 +2,12 @@ namespace ProcessMaker\BusinessModel\Light; +use AppDelegationPeer; +use Cases as ClassesCases; +use G; use PmDynaform; +use Process as ClassesProcess; +use ResultSet; class Tracker { @@ -73,37 +78,46 @@ class Tracker } + /** + * This function get the case history related to the case + * + * @param string $idProcess + * @param string $appUid + * + * @return array + */ public function history($idProcess, $appUid) { - $oCase = new \Cases(); - $aFields = $oCase->loadCase( $appUid ); + $case = new ClassesCases(); + $fields = $case->loadCase($appUid); - $oProcess = new \Process(); - $aProcessFieds = $oProcess->load( $idProcess ); + $process = new ClassesProcess(); + $processFields = $process->load($idProcess); $noShowTitle = 0; - if (isset( $aProcessFieds['PRO_SHOW_MESSAGE'] )) { - $noShowTitle = $aProcessFieds['PRO_SHOW_MESSAGE']; + if (isset($processFields['PRO_SHOW_MESSAGE'])) { + $noShowTitle = $processFields['PRO_SHOW_MESSAGE']; } - if (isset( $aFields['TITLE'] )) { - $aFields['APP_TITLE'] = $aFields['TITLE']; + if (isset($fields['TITLE'])) { + $fields['APP_TITLE'] = $fields['TITLE']; } - if ($aFields['APP_PROC_CODE'] != '') { - $aFields['APP_NUMBER'] = $aFields['APP_PROC_CODE']; + if ($fields['APP_PROC_CODE'] != '') { + $fields['APP_NUMBER'] = $fields['APP_PROC_CODE']; } - $aFields['CASE'] = \G::LoadTranslation( 'ID_CASE' ); - $aFields['TITLE'] = \G::LoadTranslation( 'ID_TITLE' ); + $fields['CASE'] = G::LoadTranslation('ID_CASE'); + $fields['TITLE'] = G::LoadTranslation('ID_TITLE'); - $c = \Cases::getTransferHistoryCriteria( $appUid ); - $dataset = \AppDelegationPeer::doSelectRS( $c ); - $dataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC ); + $c = ClassesCases::getTransferHistoryCriteria($fields['APP_NUMBER']); + $dataset = AppDelegationPeer::doSelectRS($c); + $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $dataset->next(); - $history = array(); + $history = []; while ($row = $dataset->getRow()) { $history[] = $row; $dataset->next(); } $response = $this->parserHistory($history); + return $response; } diff --git a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php index df1476723..2de0c9596 100644 --- a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php @@ -2,9 +2,14 @@ namespace ProcessMaker\Project\Adapter; +use BpmnFlow; +use BpmnFlowPeer; +use Exception; +use ProcessMaker\BusinessModel\ElementTaskRelation; use ProcessMaker\Plugins\PluginRegistry; use ProcessMaker\Project; use ProcessMaker\Util; +use ProcessMaker\Util\Common; /** * Class BpmnWorkflow @@ -777,39 +782,39 @@ class BpmnWorkflow extends Project\Bpmn } } - /* - public function updateEventStartObjects($eventUid, $taskUid) - { - $event = \BpmnEventPeer::retrieveByPK($eventUid); - - //Case-Scheduler - Update - if (!is_null($event) && $event->getEvnType() == "START" && $event->getEvnMarker() == "TIMER") { - $caseScheduler = new \CaseScheduler(); - - if ($caseScheduler->Exists($eventUid)) { - $this->wp->updateCaseScheduler($eventUid, array("TAS_UID" => $taskUid)); - } - } - - //Update web entry - //if (!is_null($event) && $event->getEvnType() == "START" && $event->getEvnMarker() == "MESSAGE") { - // $this->wp->updateWebEntry($eventUid, array("TAS_UID" => $taskUid)); - //} - } - */ - - private function __createTaskByElement($elementUid, $elementType, $key) + /** + * This function get the TAS_UID + * Create or just return the value + * + * @param string $elementUid + * @param string $elementType + * @param string $key + * @param string $eventName + * + * @return string + * @throws Exception + */ + private function __createTaskByElement($elementUid, $elementType, $key, $eventName = '') { try { + $taskTitle = $taskType = $this->arrayTaskAttribute[$key]["type"]; + /*----------------------------------********---------------------------------*/ + $taskTitle = empty($eventName) ? $taskType : $eventName; + /*----------------------------------********---------------------------------*/ + if (isset($this->arrayElementTaskRelation[$elementUid])) { $taskUid = $this->arrayElementTaskRelation[$elementUid]; + /*----------------------------------********---------------------------------*/ + $dataTask = ["TAS_TITLE" => $taskTitle]; + $this->wp->updateTask($taskUid, $dataTask); + /*----------------------------------********---------------------------------*/ } else { $taskPosX = 0; $taskPosY = 0; - $flow = \BpmnFlow::findOneBy(array( - \BpmnFlowPeer::FLO_ELEMENT_ORIGIN => $elementUid, - \BpmnFlowPeer::FLO_ELEMENT_ORIGIN_TYPE => $elementType + $flow = BpmnFlow::findOneBy(array( + BpmnFlowPeer::FLO_ELEMENT_ORIGIN => $elementUid, + BpmnFlowPeer::FLO_ELEMENT_ORIGIN_TYPE => $elementType )); if (!is_null($flow)) { @@ -818,9 +823,9 @@ class BpmnWorkflow extends Project\Bpmn $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 + $flow = BpmnFlow::findOneBy(array( + BpmnFlowPeer::FLO_ELEMENT_DEST => $elementUid, + BpmnFlowPeer::FLO_ELEMENT_DEST_TYPE => $elementType )); if (!is_null($flow)) { @@ -832,18 +837,16 @@ class BpmnWorkflow extends Project\Bpmn } $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), + $taskUid = $this->wp->addTask([ + "TAS_UID" => $prefix . substr(Common::generateUID(), (32 - strlen($prefix)) * -1), "TAS_TYPE" => $taskType, - "TAS_TITLE" => $taskType, + "TAS_TITLE" => $taskTitle, "TAS_POSX" => $taskPosX, "TAS_POSY" => $taskPosY - )); + ]); //Element-Task-Relation - Create - $elementTaskRelation = new \ProcessMaker\BusinessModel\ElementTaskRelation(); + $elementTaskRelation = new ElementTaskRelation(); $arrayResult = $elementTaskRelation->create( $this->wp->getUid(), @@ -860,7 +863,7 @@ class BpmnWorkflow extends Project\Bpmn //Return return $taskUid; - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } } @@ -1026,7 +1029,8 @@ class BpmnWorkflow extends Project\Bpmn $taskUid = $this->__createTaskByElement( $eventUid, "bpmnEvent", - $arrayKey[$arrayEventData["EVN_MARKER"]] + $arrayKey[$arrayEventData["EVN_MARKER"]], + isset($arrayEventData["EVN_NAME"]) ? $arrayEventData["EVN_NAME"] : '' ); $result = $this->wp->addRoute($activityUid, $taskUid, $routeType, $routeCondition, $routeDefault);