diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index 0d7530d28..7bf64894f 100644 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -7122,20 +7122,25 @@ class Cases require_once ( "classes/model/Process.php" ); $appProcess = new Process(); - $webBotTrigger = $appProcess->getTriggerWebBotProcess($proUid, $action); + $arrayWebBotTrigger = $appProcess->getTriggerWebBotProcess($proUid, $action); - if ($webBotTrigger != false && $webBotTrigger != '') { + if ($arrayWebBotTrigger['TRI_WEBBOT'] != false && $arrayWebBotTrigger['TRI_WEBBOT'] != '') { global $oPMScript; $oPMScript = new PMScript(); $oPMScript->setFields($aFields['APP_DATA']); - $oPMScript->setScript($webBotTrigger); + $oPMScript->setScript($arrayWebBotTrigger['TRI_WEBBOT']); $oPMScript->execute(); + $aFields['APP_DATA'] = array_merge($aFields['APP_DATA'], $oPMScript->aFields); unset($aFields['APP_STATUS']); unset($aFields['APP_PROC_STATUS']); unset($aFields['APP_PROC_CODE']); unset($aFields['APP_PIN']); $this->updateCase($aFields['APP_UID'], $aFields); + + //Log + Bootstrap::registerMonolog('triggerExecutionTime', 200, 'Trigger execution time', ['proUid' => $aFields['APP_DATA']['PROCESS'], 'tasUid' => $aFields['APP_DATA']['TASK'], 'appUid' => $aFields['APP_DATA']['APPLICATION'], 'action' => $action, 'triggerInfo' => ['triUid' => $arrayWebBotTrigger['TRI_UID'], 'triExecutionTime' => $oPMScript->scriptExecutionTime]], SYS_SYS, 'processmaker.log'); + return true; } return false; diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index f2f56f110..041217edb 100644 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -2262,7 +2262,7 @@ class wsBase if (! isset( $_SESSION["PROCESS"] )) { $_SESSION["PROCESS"] = $appFields["PRO_UID"]; } - + global $oPMScript; if ($bExecuteTriggersBeforeAssignment) { @@ -2706,6 +2706,9 @@ class wsBase $oPMScript->setScript( $row['TRI_WEBBOT'] ); $oPMScript->execute(); + //Log + Bootstrap::registerMonolog('triggerExecutionTime', 200, 'Trigger execution time', ['proUid' => $appFields['APP_DATA']['PROCESS'], 'tasUid' => $appFields['APP_DATA']['TASK'], 'appUid' => $appFields['APP_DATA']['APPLICATION'], 'triggerInfo' => ['triUid' => $row['TRI_UID'], 'triExecutionTime' => $oPMScript->scriptExecutionTime]], SYS_SYS, 'processmaker.log'); + if (isset($oPMScript->aFields["__ERROR__"]) && trim($oPMScript->aFields["__ERROR__"]) != "" && $oPMScript->aFields["__ERROR__"] != "none") { throw new Exception($oPMScript->aFields["__ERROR__"]); } diff --git a/workflow/engine/classes/model/Process.php b/workflow/engine/classes/model/Process.php index a93234ea3..e761f0f10 100644 --- a/workflow/engine/classes/model/Process.php +++ b/workflow/engine/classes/model/Process.php @@ -825,7 +825,7 @@ class Process extends BaseProcess } $action = G::toUpper( $action ); - $webBotTrigger = ''; + $arrayWebBotTrigger = []; switch ($action) { case 'CREATE': @@ -853,6 +853,7 @@ class Process extends BaseProcess $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( $var ); + $oCriteria->addSelectColumn( TriggersPeer::TRI_UID); $oCriteria->addSelectColumn( TriggersPeer::TRI_WEBBOT ); $oCriteria->addJoin( $var, TriggersPeer::TRI_UID, Criteria::LEFT_JOIN ); $oCriteria->add( ProcessPeer::PRO_UID, $proUid ); @@ -861,10 +862,11 @@ class Process extends BaseProcess $oDataSet->setFetchmode( ResultSet::FETCHMODE_ASSOC ); if ($oDataSet->next()) { $row = $oDataSet->getRow(); - $webBotTrigger = $row['TRI_WEBBOT']; + $arrayWebBotTrigger = ['TRI_UID' => $row['TRI_UID'], 'TRI_WEBBOT' => $row['TRI_WEBBOT']]; } - return $webBotTrigger; + //Return + return $arrayWebBotTrigger; } public function memcachedDelete () @@ -1022,4 +1024,3 @@ class Process extends BaseProcess } } } - diff --git a/workflow/engine/methods/cases/cases_Derivate.php b/workflow/engine/methods/cases/cases_Derivate.php index 9aa0772e6..56cc859ac 100644 --- a/workflow/engine/methods/cases/cases_Derivate.php +++ b/workflow/engine/methods/cases/cases_Derivate.php @@ -103,6 +103,14 @@ try { $_SESSION['TRIGGER_DEBUG']['info'][0]['TRIGGERS_NAMES'] = $oCase->getTriggerNames( $triggers ); $_SESSION['TRIGGER_DEBUG']['info'][0]['TRIGGERS_VALUES'] = $triggers; $_SESSION['TRIGGER_DEBUG']['info'][0]['TRIGGERS_EXECUTION_TIME'] = $oCase->arrayTriggerExecutionTime; + $arrayInfoTriggerExecutionTime = []; + + foreach ($_SESSION['TRIGGER_DEBUG']['info'][0]['TRIGGERS_EXECUTION_TIME'] as $key => $value) { + $arrayInfoTriggerExecutionTime[] = ['triUid' => $key, 'triExecutionTime' => $value]; + } + + //Log + Bootstrap::registerMonolog('triggerExecutionTime', 200, 'Trigger execution time', ['proUid' => $appFields['APP_DATA']['PROCESS'], 'tasUid' => $appFields['APP_DATA']['TASK'], 'appUid' => $appFields['APP_DATA']['APPLICATION'], 'before' => 'ASSIGN_TASK', 'triggerInfo' => $arrayInfoTriggerExecutionTime], SYS_SYS, 'processmaker.log'); } unset($appFields['APP_STATUS']); @@ -152,6 +160,14 @@ try { $_SESSION['TRIGGER_DEBUG']['info'][1]['TRIGGERS_NAMES'] = $oCase->getTriggerNames( $triggers ); $_SESSION['TRIGGER_DEBUG']['info'][1]['TRIGGERS_VALUES'] = $triggers; $_SESSION['TRIGGER_DEBUG']['info'][1]['TRIGGERS_EXECUTION_TIME'] = $oCase->arrayTriggerExecutionTime; + $arrayInfoTriggerExecutionTimeAux = []; + + foreach ($_SESSION['TRIGGER_DEBUG']['info'][1]['TRIGGERS_EXECUTION_TIME'] as $key => $value) { + $arrayInfoTriggerExecutionTimeAux[] = ['triUid' => $key, 'triExecutionTime' => $value]; + } + + //Log + Bootstrap::registerMonolog('triggerExecutionTime', 200, 'Trigger execution time', ['proUid' => $appFields['APP_DATA']['PROCESS'], 'tasUid' => $appFields['APP_DATA']['TASK'], 'appUid' => $appFields['APP_DATA']['APPLICATION'], 'after' => 'ASSIGN_TASK', 'triggerInfo' => $arrayInfoTriggerExecutionTimeAux], SYS_SYS, 'processmaker.log'); } unset($appFields['APP_STATUS']); unset($appFields['APP_PROC_STATUS']); diff --git a/workflow/engine/methods/cases/cases_SaveData.php b/workflow/engine/methods/cases/cases_SaveData.php index 15fdcc066..ff3e459a2 100644 --- a/workflow/engine/methods/cases/cases_SaveData.php +++ b/workflow/engine/methods/cases/cases_SaveData.php @@ -183,6 +183,14 @@ try { //Execute after triggers - End $_SESSION['TRIGGER_DEBUG']['TRIGGERS_EXECUTION_TIME'] = $oCase->arrayTriggerExecutionTime; + $arrayInfoTriggerExecutionTime = []; + + foreach ($_SESSION['TRIGGER_DEBUG']['TRIGGERS_EXECUTION_TIME'] as $key => $value) { + $arrayInfoTriggerExecutionTime[] = ['triUid' => $key, 'triExecutionTime' => $value]; + } + + //Log + Bootstrap::registerMonolog('triggerExecutionTime', 200, 'Trigger execution time', ['proUid' => $_SESSION['PROCESS'], 'tasUid' => $_SESSION['TASK'], 'appUid' => $_SESSION['APPLICATION'], 'after' => 'DYNAFORM', 'triggerInfo' => $arrayInfoTriggerExecutionTime], SYS_SYS, 'processmaker.log'); } //save data in PM Tables if necessary diff --git a/workflow/engine/methods/cases/cases_Step.php b/workflow/engine/methods/cases/cases_Step.php index 566003b5d..9d17e8612 100644 --- a/workflow/engine/methods/cases/cases_Step.php +++ b/workflow/engine/methods/cases/cases_Step.php @@ -213,6 +213,14 @@ if ($flagExecuteBeforeTriggers) { //Execute before triggers - End $_SESSION['TRIGGER_DEBUG']['TRIGGERS_EXECUTION_TIME'] = $oCase->arrayTriggerExecutionTime; + $arrayInfoTriggerExecutionTime = []; + + foreach ($_SESSION['TRIGGER_DEBUG']['TRIGGERS_EXECUTION_TIME'] as $key => $value) { + $arrayInfoTriggerExecutionTime[] = ['triUid' => $key, 'triExecutionTime' => $value]; + } + + //Log + Bootstrap::registerMonolog('triggerExecutionTime', 200, 'Trigger execution time', ['proUid' => $Fields['APP_DATA']['PROCESS'], 'tasUid' => $Fields['APP_DATA']['TASK'], 'appUid' => $Fields['APP_DATA']['APPLICATION'], 'before' => $_GET['TYPE'], 'triggerInfo' => $arrayInfoTriggerExecutionTime], SYS_SYS, 'processmaker.log'); } else { unset( $_SESSION['_NO_EXECUTE_TRIGGERS_'] ); }