Merged in luisfernandosl/processmaker/HOR-1443-31 (pull request #4593)

HOR-1443
This commit is contained in:
Julio Cesar Laura Avendaño
2016-07-20 16:04:44 -04:00
9 changed files with 55 additions and 26 deletions

View File

@@ -73,6 +73,7 @@ class Cases
private $appSolr = null; private $appSolr = null;
public $dir = 'ASC'; public $dir = 'ASC';
public $sort = 'APP_MSG_DATE'; public $sort = 'APP_MSG_DATE';
public $arrayTriggerExecutionTime = [];
public function __construct() public function __construct()
{ {
@@ -3591,6 +3592,8 @@ class Cases
if ($bExecute) { if ($bExecute) {
$oPMScript->setScript($aTrigger['TRI_WEBBOT']); $oPMScript->setScript($aTrigger['TRI_WEBBOT']);
$oPMScript->execute(); $oPMScript->execute();
$this->arrayTriggerExecutionTime[$aTrigger['TRI_UID']] = $oPMScript->scriptExecutionTime;
} }
} }
/*----------------------------------********---------------------------------*/ /*----------------------------------********---------------------------------*/
@@ -7554,4 +7557,3 @@ class Cases
return $rows; return $rows;
} }
} }

View File

@@ -119,6 +119,8 @@ class PMScript
*/ */
public $affected_fields; public $affected_fields;
public $scriptExecutionTime = 0;
/** /**
* Constructor of the class PMScript * Constructor of the class PMScript
* *
@@ -346,7 +348,15 @@ class PMScript
$sScript .= substr( $this->sScript, $iAux ); $sScript .= substr( $this->sScript, $iAux );
$sScript = "try {\n" . $sScript . "\n} catch (Exception \$oException) {\n " . " \$this->aFields['__ERROR__'] = utf8_encode(\$oException->getMessage());\n}"; $sScript = "try {\n" . $sScript . "\n} catch (Exception \$oException) {\n " . " \$this->aFields['__ERROR__'] = utf8_encode(\$oException->getMessage());\n}";
//echo '<pre>-->'; print_r($this->aFields); echo '<---</pre>'; //echo '<pre>-->'; print_r($this->aFields); echo '<---</pre>';
$this->executeAndCatchErrors( $sScript, $this->sScript );
$timeStart = microtime(true);
$this->executeAndCatchErrors($sScript, $this->sScript);
$timeEnd = microtime(true);
$this->scriptExecutionTime = round($timeEnd - $timeStart, 5);
$this->aFields["__VAR_CHANGED__"] = implode(",", $this->affected_fields); $this->aFields["__VAR_CHANGED__"] = implode(",", $this->affected_fields);
for ($i = 0; $i < count( $this->affected_fields ); $i ++) { for ($i = 0; $i < count( $this->affected_fields ); $i ++) {
$_SESSION['TRIGGER_DEBUG']['DATA'][] = Array ('key' => $this->affected_fields[$i],'value' => isset( $this->aFields[$this->affected_fields[$i]] ) ? $this->aFields[$this->affected_fields[$i]] : '' $_SESSION['TRIGGER_DEBUG']['DATA'][] = Array ('key' => $this->affected_fields[$i],'value' => isset( $this->aFields[$this->affected_fields[$i]] ) ? $this->aFields[$this->affected_fields[$i]] : ''
@@ -508,7 +518,7 @@ class PMScript
} }
return $bResult; return $bResult;
} }
Public function evaluateVariable () Public function evaluateVariable ()
{ {
$process = new Process(); $process = new Process();
@@ -530,7 +540,7 @@ class PMScript
if(strpos($var, '_label') === false) { if(strpos($var, '_label') === false) {
if(in_array($var,$processVariables)) { if(in_array($var,$processVariables)) {
if(isset($this->aFields[$var]) && is_array($this->aFields[$var][1]) ) { if(isset($this->aFields[$var]) && is_array($this->aFields[$var][1]) ) {
$varLabel = $var.'_label'; $varLabel = $var.'_label';
$arrayValue = $this->aFields[$var]; $arrayValue = $this->aFields[$var];
if(is_array($arrayValue) && sizeof($arrayValue)) { if(is_array($arrayValue) && sizeof($arrayValue)) {
foreach($arrayValue as $val) { foreach($arrayValue as $val) {
@@ -546,7 +556,7 @@ class PMScript
$varType = $varInfo['VAR_FIELD_TYPE']; $varType = $varInfo['VAR_FIELD_TYPE'];
switch($varType) { switch($varType) {
case 'array': case 'array':
$arrayLabels = '["'.implode('","',$arrayLabels).'"]'; $arrayLabels = '["'.implode('","',$arrayLabels).'"]';
$newFields[$var] = $arrayValues; $newFields[$var] = $arrayValues;
$newFields[$varLabel] = $arrayLabels; $newFields[$varLabel] = $arrayLabels;
break; break;
@@ -555,7 +565,7 @@ class PMScript
$newFields[$varLabel] = $arrayLabels[0]; $newFields[$varLabel] = $arrayLabels[0];
break; break;
} }
$this->affected_fields[] = $varLabel; $this->affected_fields[] = $varLabel;
$this->aFields = array_merge($this->aFields,$newFields); $this->aFields = array_merge($this->aFields,$newFields);
unset($newFields); unset($newFields);
unset($arrayValues); unset($arrayValues);
@@ -586,13 +596,13 @@ class PMScript
} }
} }
} catch (Exception $e) { } catch (Exception $e) {
} }
} }
} }
} }
} }
} }
} }
} }
} }

View File

@@ -54,6 +54,8 @@ $_SESSION['TRIGGER_DEBUG']['ERRORS'] = Array ();
$_SESSION['TRIGGER_DEBUG']['DATA'] = Array (); $_SESSION['TRIGGER_DEBUG']['DATA'] = Array ();
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_NAMES'] = Array (); $_SESSION['TRIGGER_DEBUG']['TRIGGERS_NAMES'] = Array ();
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_VALUES'] = Array (); $_SESSION['TRIGGER_DEBUG']['TRIGGERS_VALUES'] = Array ();
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_EXECUTION_TIME'] = [];
$triggers = $oCase->loadTriggers( $_SESSION['TASK'], 'DYNAFORM', $_GET['UID'], 'AFTER' ); $triggers = $oCase->loadTriggers( $_SESSION['TASK'], 'DYNAFORM', $_GET['UID'], 'AFTER' );
$_SESSION['TRIGGER_DEBUG']['NUM_TRIGGERS'] = count( $triggers ); $_SESSION['TRIGGER_DEBUG']['NUM_TRIGGERS'] = count( $triggers );
$_SESSION['TRIGGER_DEBUG']['TIME'] = G::toUpper(G::loadTranslation('ID_AFTER')); $_SESSION['TRIGGER_DEBUG']['TIME'] = G::toUpper(G::loadTranslation('ID_AFTER'));
@@ -67,6 +69,8 @@ if ($_SESSION['TRIGGER_DEBUG']['NUM_TRIGGERS'] != 0) {
//Execute after triggers - Start //Execute after triggers - Start
$Fields['APP_DATA'] = $oCase->ExecuteTriggers( $_SESSION['TASK'], 'DYNAFORM', $_GET['UID'], 'AFTER', $Fields['APP_DATA'] ); $Fields['APP_DATA'] = $oCase->ExecuteTriggers( $_SESSION['TASK'], 'DYNAFORM', $_GET['UID'], 'AFTER', $Fields['APP_DATA'] );
//Execute after triggers - End //Execute after triggers - End
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_EXECUTION_TIME'] = $oCase->arrayTriggerExecutionTime;
} }
//go to the next step //go to the next step
@@ -85,4 +89,3 @@ if ($trigger_debug_session) {
} }
G::header( 'location: ' . $aNextStep['PAGE'] ); G::header( 'location: ' . $aNextStep['PAGE'] );

View File

@@ -88,6 +88,7 @@ try {
$_SESSION['TRIGGER_DEBUG']['DATA'] = Array (); $_SESSION['TRIGGER_DEBUG']['DATA'] = Array ();
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_NAMES'] = Array (); $_SESSION['TRIGGER_DEBUG']['TRIGGERS_NAMES'] = Array ();
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_VALUES'] = Array (); $_SESSION['TRIGGER_DEBUG']['TRIGGERS_VALUES'] = Array ();
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_EXECUTION_TIME'] = [];
$triggers = $oCase->loadTriggers( $_SESSION['TASK'], 'ASSIGN_TASK', - 2, 'BEFORE' ); $triggers = $oCase->loadTriggers( $_SESSION['TASK'], 'ASSIGN_TASK', - 2, 'BEFORE' );
@@ -101,6 +102,7 @@ try {
$_SESSION['TRIGGER_DEBUG']['info'][0]['TIME'] = G::toUpper(G::loadTranslation('ID_BEFORE')); $_SESSION['TRIGGER_DEBUG']['info'][0]['TIME'] = G::toUpper(G::loadTranslation('ID_BEFORE'));
$_SESSION['TRIGGER_DEBUG']['info'][0]['TRIGGERS_NAMES'] = $oCase->getTriggerNames( $triggers ); $_SESSION['TRIGGER_DEBUG']['info'][0]['TRIGGERS_NAMES'] = $oCase->getTriggerNames( $triggers );
$_SESSION['TRIGGER_DEBUG']['info'][0]['TRIGGERS_VALUES'] = $triggers; $_SESSION['TRIGGER_DEBUG']['info'][0]['TRIGGERS_VALUES'] = $triggers;
$_SESSION['TRIGGER_DEBUG']['info'][0]['TRIGGERS_EXECUTION_TIME'] = $oCase->arrayTriggerExecutionTime;
} }
unset($appFields['APP_STATUS']); unset($appFields['APP_STATUS']);
@@ -146,6 +148,7 @@ try {
$_SESSION['TRIGGER_DEBUG']['info'][1]['TIME'] = G::toUpper(G::loadTranslation('ID_AFTER')); $_SESSION['TRIGGER_DEBUG']['info'][1]['TIME'] = G::toUpper(G::loadTranslation('ID_AFTER'));
$_SESSION['TRIGGER_DEBUG']['info'][1]['TRIGGERS_NAMES'] = $oCase->getTriggerNames( $triggers ); $_SESSION['TRIGGER_DEBUG']['info'][1]['TRIGGERS_NAMES'] = $oCase->getTriggerNames( $triggers );
$_SESSION['TRIGGER_DEBUG']['info'][1]['TRIGGERS_VALUES'] = $triggers; $_SESSION['TRIGGER_DEBUG']['info'][1]['TRIGGERS_VALUES'] = $triggers;
$_SESSION['TRIGGER_DEBUG']['info'][1]['TRIGGERS_EXECUTION_TIME'] = $oCase->arrayTriggerExecutionTime;
} }
unset($appFields['APP_STATUS']); unset($appFields['APP_STATUS']);
unset($appFields['APP_PROC_STATUS']); unset($appFields['APP_PROC_STATUS']);
@@ -173,10 +176,10 @@ try {
$pmGoogle = new PMGoogleApi (); $pmGoogle = new PMGoogleApi ();
if ($pmGoogle->getServiceGmailStatus ()) { if ($pmGoogle->getServiceGmailStatus ()) {
$flagGmail = true; $flagGmail = true;
$appDel = new AppDelegation (); $appDel = new AppDelegation ();
$actualThread = $appDel->Load ( $_SESSION ['APPLICATION'], $_SESSION ['INDEX'] ); $actualThread = $appDel->Load ( $_SESSION ['APPLICATION'], $_SESSION ['INDEX'] );
$appDelPrev = $appDel->LoadParallel ( $_SESSION ['APPLICATION'] ); $appDelPrev = $appDel->LoadParallel ( $_SESSION ['APPLICATION'] );
$Pmgmail = new \ProcessMaker\BusinessModel\Pmgmail (); $Pmgmail = new \ProcessMaker\BusinessModel\Pmgmail ();
foreach ( $appDelPrev as $app ) { foreach ( $appDelPrev as $app ) {
@@ -310,4 +313,3 @@ try {
$G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', $aMessage ); $G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', $aMessage );
G::RenderPage( 'publish', 'blank' ); G::RenderPage( 'publish', 'blank' );
} }

View File

@@ -70,21 +70,21 @@ if (!isset($_SESSION['USER_LOGGED'])) {
} }
/** /**
* If you can, you may want to set post_max_size to a low value (say 1M) to make * If you can, you may want to set post_max_size to a low value (say 1M) to make
* testing easier. First test to see how your script behaves. Try uploading a file * testing easier. First test to see how your script behaves. Try uploading a file
* that is larger than post_max_size. If you do you will get a message like this * that is larger than post_max_size. If you do you will get a message like this
* in your error log: * in your error log:
* *
* [09-Jun-2010 19:28:01] PHP Warning: POST Content-Length of 30980857 bytes exceeds * [09-Jun-2010 19:28:01] PHP Warning: POST Content-Length of 30980857 bytes exceeds
* the limit of 2097152 bytes in Unknown on line 0 * the limit of 2097152 bytes in Unknown on line 0
* *
* This makes the script is not completed. * This makes the script is not completed.
* *
* Solving the problem: * Solving the problem:
* The PHP documentation http://php.net/manual/en/ini.core.php#ini.post-max-size * The PHP documentation http://php.net/manual/en/ini.core.php#ini.post-max-size
* provides a hack to solve this problem: * provides a hack to solve this problem:
* *
* If the size of post data is greater than post_max_size, the $_POST and $_FILES * If the size of post data is greater than post_max_size, the $_POST and $_FILES
* superglobals are empty. * superglobals are empty.
*/ */
if ($_SERVER['REQUEST_METHOD'] == 'POST' && empty($_POST) && empty($_FILES) && $_SERVER['CONTENT_LENGTH'] > 0) { if ($_SERVER['REQUEST_METHOD'] == 'POST' && empty($_POST) && empty($_FILES) && $_SERVER['CONTENT_LENGTH'] > 0) {
@@ -149,6 +149,7 @@ try {
$_SESSION['TRIGGER_DEBUG']['DATA'] = Array (); $_SESSION['TRIGGER_DEBUG']['DATA'] = Array ();
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_NAMES'] = Array (); $_SESSION['TRIGGER_DEBUG']['TRIGGERS_NAMES'] = Array ();
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_VALUES'] = Array (); $_SESSION['TRIGGER_DEBUG']['TRIGGERS_VALUES'] = Array ();
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_EXECUTION_TIME'] = [];
$triggers = $oCase->loadTriggers( $_SESSION['TASK'], 'DYNAFORM', $_GET['UID'], 'AFTER' ); $triggers = $oCase->loadTriggers( $_SESSION['TASK'], 'DYNAFORM', $_GET['UID'], 'AFTER' );
@@ -170,6 +171,8 @@ try {
//Execute after triggers - Start //Execute after triggers - Start
$Fields['APP_DATA'] = $oCase->ExecuteTriggers( $_SESSION['TASK'], 'DYNAFORM', $_GET['UID'], 'AFTER', $Fields['APP_DATA'] ); $Fields['APP_DATA'] = $oCase->ExecuteTriggers( $_SESSION['TASK'], 'DYNAFORM', $_GET['UID'], 'AFTER', $Fields['APP_DATA'] );
//Execute after triggers - End //Execute after triggers - End
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_EXECUTION_TIME'] = $oCase->arrayTriggerExecutionTime;
} }
//save data in PM Tables if necessary //save data in PM Tables if necessary
@@ -493,4 +496,3 @@ try {
G::RenderPage( 'publish', 'blank' ); G::RenderPage( 'publish', 'blank' );
die(); die();
} }

View File

@@ -84,6 +84,7 @@ $_SESSION["TRIGGER_DEBUG"]["ERRORS"] = array();
$_SESSION["TRIGGER_DEBUG"]["DATA"] = array(); $_SESSION["TRIGGER_DEBUG"]["DATA"] = array();
$_SESSION["TRIGGER_DEBUG"]["TRIGGERS_NAMES"] = array(); $_SESSION["TRIGGER_DEBUG"]["TRIGGERS_NAMES"] = array();
$_SESSION["TRIGGER_DEBUG"]["TRIGGERS_VALUES"] = array(); $_SESSION["TRIGGER_DEBUG"]["TRIGGERS_VALUES"] = array();
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_EXECUTION_TIME'] = [];
$_SESSION["TRIGGER_DEBUG"]["NUM_TRIGGERS"] = count($arrayTrigger); $_SESSION["TRIGGER_DEBUG"]["NUM_TRIGGERS"] = count($arrayTrigger);
$_SESSION["TRIGGER_DEBUG"]["TIME"] = "AFTER"; $_SESSION["TRIGGER_DEBUG"]["TIME"] = "AFTER";
@@ -229,4 +230,3 @@ $_SESSION['BREAKSTEP']['NEXT_STEP'] = $aNextStep;
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $aMessage ); $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $aMessage );
G::RenderPage( 'publish' ); G::RenderPage( 'publish' );
}*/ }*/

View File

@@ -196,6 +196,7 @@ if ($flagExecuteBeforeTriggers) {
$_SESSION['TRIGGER_DEBUG']['DATA'] = Array (); $_SESSION['TRIGGER_DEBUG']['DATA'] = Array ();
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_NAMES'] = Array (); $_SESSION['TRIGGER_DEBUG']['TRIGGERS_NAMES'] = Array ();
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_VALUES'] = Array (); $_SESSION['TRIGGER_DEBUG']['TRIGGERS_VALUES'] = Array ();
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_EXECUTION_TIME'] = [];
$triggers = $oCase->loadTriggers( $_SESSION['TASK'], $_GET['TYPE'], $_GET['UID'], 'BEFORE' ); $triggers = $oCase->loadTriggers( $_SESSION['TASK'], $_GET['TYPE'], $_GET['UID'], 'BEFORE' );
@@ -210,6 +211,8 @@ if ($flagExecuteBeforeTriggers) {
//Execute before triggers - Start //Execute before triggers - Start
$Fields['APP_DATA'] = $oCase->ExecuteTriggers( $_SESSION['TASK'], $_GET['TYPE'], $_GET['UID'], 'BEFORE', $Fields['APP_DATA'] ); $Fields['APP_DATA'] = $oCase->ExecuteTriggers( $_SESSION['TASK'], $_GET['TYPE'], $_GET['UID'], 'BEFORE', $Fields['APP_DATA'] );
//Execute before triggers - End //Execute before triggers - End
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_EXECUTION_TIME'] = $oCase->arrayTriggerExecutionTime;
} else { } else {
unset( $_SESSION['_NO_EXECUTE_TRIGGERS_'] ); unset( $_SESSION['_NO_EXECUTE_TRIGGERS_'] );
} }
@@ -632,6 +635,8 @@ try {
$Fields['TAS_UID'] = $_SESSION['TASK']; $Fields['TAS_UID'] = $_SESSION['TASK'];
//Execute after triggers - End //Execute after triggers - End
$_SESSION['TRIGGER_DEBUG']['TRIGGERS_EXECUTION_TIME'] = $oCase->arrayTriggerExecutionTime;
//Save data - Start //Save data - Start
unset($Fields['APP_STATUS']); unset($Fields['APP_STATUS']);
unset($Fields['APP_PROC_STATUS']); unset($Fields['APP_PROC_STATUS']);
@@ -1187,4 +1192,3 @@ if ($_SESSION['TRIGGER_DEBUG']['ISSET'] && !$isIE) {
showdebug(); showdebug();
}' ); }' );
} }

View File

@@ -27,6 +27,10 @@ foreach ($aTriggers as $aTrigger) {
$geshi->set_line_style( 'background: #f0f0f0;' ); $geshi->set_line_style( 'background: #f0f0f0;' );
$triggersList[$i]['code'] = $geshi->parse_code(); //$aTrigger['TRIGGERS_VALUES'][$index]['TRI_WEBBOT']; $triggersList[$i]['code'] = $geshi->parse_code(); //$aTrigger['TRIGGERS_VALUES'][$index]['TRI_WEBBOT'];
$triggerUid = $aTrigger['TRIGGERS_VALUES'][$index]['TRI_UID'];
$triggersList[$i]['script_execution_time'] = $aTrigger['TRIGGERS_EXECUTION_TIME'][$triggerUid];
$i ++; $i ++;
} }
} else { } else {

View File

@@ -337,7 +337,8 @@ Ext.onReady(function(){
[ [
{name: 'name'}, {name: 'name'},
{name: 'execution_time'}, {name: 'execution_time'},
{name: 'code'} {name: 'code'},
{name: "script_execution_time"}
] ]
); );
@@ -362,7 +363,8 @@ Ext.onReady(function(){
columns: [ columns: [
{id:'name',header: _('ID_NAME'), width: 60, sortable: true, dataIndex: 'name'}, {id:'name',header: _('ID_NAME'), width: 60, sortable: true, dataIndex: 'name'},
{header: _('ID_EXECUTION'), width: 30, sortable: true, dataIndex: 'execution_time'}, {header: _('ID_EXECUTION'), width: 30, sortable: true, dataIndex: 'execution_time'},
{header: "Code", width: 30, sortable: false, dataIndex: 'code', hidden: true} {header: "Code", width: 30, sortable: false, dataIndex: 'code', hidden: true},
{header: _("ID_EXECUTION_TIME") + " (" + _("ID_MILLISECONDS") + ")", dataIndex: "script_execution_time", width: 60, sortable: true, hidden: true}
], ],
view: new Ext.grid.GroupingView({ view: new Ext.grid.GroupingView({