From 509da99a9eeb71d734e9381e90223232dc930b18 Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Fri, 9 Mar 2012 16:12:30 -0400 Subject: [PATCH] BUG 8594 "Triggers fired by the routeCase() web service..." SOLVED - The problem arises when you run the method "routeCase" through web services, in the execution of the triggers can not access variables like @ @ APPLICATION. - The problem is solved by keeping the variables @ @ APPLICATION and others in the execution of method "derivateCase" --- gulliver/system/class.g.php | 48 ++++++++++------- workflow/engine/classes/class.wsBase.php | 66 +++++++++++++----------- 2 files changed, 64 insertions(+), 50 deletions(-) diff --git a/gulliver/system/class.g.php b/gulliver/system/class.g.php index 0798cab5c..4446d2a52 100755 --- a/gulliver/system/class.g.php +++ b/gulliver/system/class.g.php @@ -2797,38 +2797,46 @@ $output = $outputHeader.$output; * Constants: SYS_* * Sessions : USER_* , URS_* */ - function getSystemConstants($params=NULL) + function getSystemConstants($params = null) { $t1 = G::microtime_float(); $sysCon = array(); - if ( defined('SYS_LANG' )) $sysCon['SYS_LANG'] = SYS_LANG; - if ( defined('SYS_SKIN' )) $sysCon['SYS_SKIN'] = SYS_SKIN; - if ( defined('SYS_SYS' ) ) $sysCon['SYS_SYS'] = SYS_SYS; + if (defined("SYS_LANG")) $sysCon["SYS_LANG"] = SYS_LANG; + if (defined("SYS_SKIN")) $sysCon["SYS_SKIN"] = SYS_SKIN; + if (defined("SYS_SYS")) $sysCon["SYS_SYS"] = SYS_SYS; - $sysCon['APPLICATION'] = (isset($_SESSION['APPLICATION']) )? $_SESSION['APPLICATION'] :''; - $sysCon['PROCESS'] = (isset($_SESSION['PROCESS']) )? $_SESSION['PROCESS'] :''; - $sysCon['TASK'] = (isset($_SESSION['TASK']) )? $_SESSION['TASK'] :''; - $sysCon['INDEX'] = (isset($_SESSION['INDEX']) )? $_SESSION['INDEX'] :''; - $sysCon['USER_LOGGED'] = (isset($_SESSION['USER_LOGGED']) )? $_SESSION['USER_LOGGED'] :''; - $sysCon['USR_USERNAME']= (isset($_SESSION['USR_USERNAME']))? $_SESSION['USR_USERNAME']:''; + $sysCon["APPLICATION"] = (isset($_SESSION["APPLICATION"]))? $_SESSION["APPLICATION"] : ""; + $sysCon["PROCESS"] = (isset($_SESSION["PROCESS"]))? $_SESSION["PROCESS"] : ""; + $sysCon["TASK"] = (isset($_SESSION["TASK"]))? $_SESSION["TASK"] : ""; + $sysCon["INDEX"] = (isset($_SESSION["INDEX"]))? $_SESSION["INDEX"] : ""; + $sysCon["USER_LOGGED"] = (isset($_SESSION["USER_LOGGED"]))? $_SESSION["USER_LOGGED"] : ""; + $sysCon["USR_USERNAME"] = (isset($_SESSION["USR_USERNAME"]))? $_SESSION["USR_USERNAME"] : ""; - ################################################################################################ - # Added for compatibility betweek aplication called from web Entry that uses just WS functions - ################################################################################################ + //############################################################################################### + // Added for compatibility betweek aplication called from web Entry that uses just WS functions + //############################################################################################### - if( $params != NULL ){ - - switch($params->option){ - case 'STORED SESSION': - if( isset($params->SID) ){ - G::LoadClass('sessions'); + if ($params != null) { + switch ($params->option) { + case "STORED SESSION": + if (isset($params->SID)) { + G::LoadClass("sessions"); $oSessions = new Sessions($params->SID); $sysCon = array_merge($sysCon, $oSessions->getGlobals()); } break; } + + if (isset($params->appData) && is_array($params->appData)) { + $sysCon["APPLICATION"] = $params->appData["APPLICATION"]; + $sysCon["PROCESS"] = $params->appData["PROCESS"]; + $sysCon["TASK"] = $params->appData["TASK"]; + $sysCon["INDEX"] = $params->appData["INDEX"]; + $sysCon["USER_LOGGED"] = $params->appData["USER_LOGGED"]; + $sysCon["USR_USERNAME"] = $params->appData["USR_USERNAME"]; + } } - + return $sysCon; } diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index 07a28c59c..ff4cb1fdf 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -1477,17 +1477,19 @@ class wsBase //$appFields = $oCase->loadCase( $caseId ); //$appFields['APP_DATA']['APPLICATION'] = $caseId; - #@Neyek ############################################################################################# - if( !$this->stored_system_variables ) { - $appFields['APP_DATA'] = array_merge ( $appFields['APP_DATA'], G::getSystemConstants() ); - } else { - $oParams = new stdClass(); - $oParams->option = 'STORED SESSION'; - $oParams->SID = $this->wsSessionId; - - $appFields['APP_DATA'] = array_merge ( $appFields['APP_DATA'], G::getSystemConstants($oParams)); + //@Neyek ############################################################################################# + if (!$this->stored_system_variables) { + $appFields["APP_DATA"] = array_merge($appFields["APP_DATA"], G::getSystemConstants()); } - ##################################################################################################### + else { + $oParams = new stdClass(); + $oParams->option = "STORED SESSION"; + $oParams->SID = $this->wsSessionId; + $oParams->appData = $appFields["APP_DATA"]; + + $appFields["APP_DATA"] = array_merge($appFields["APP_DATA"], G::getSystemConstants($oParams)); + } + //#################################################################################################### $oPMScript->setFields( $appFields['APP_DATA'] ); $bExecute = true; @@ -1518,17 +1520,19 @@ class wsBase //$appFields = $oCase->loadCase( $caseId ); //$appFields['APP_DATA']['APPLICATION'] = $caseId; - #@Neyek ############################################################################################# - if( !$this->stored_system_variables ) { - $appFields['APP_DATA'] = array_merge ( $appFields['APP_DATA'], G::getSystemConstants() ); - } else { - $oParams = new stdClass(); - $oParams->option = 'STORED SESSION'; - $oParams->SID = $this->wsSessionId; - - $appFields['APP_DATA'] = array_merge ( $appFields['APP_DATA'], G::getSystemConstants($oParams)); + //@Neyek ############################################################################################# + if (!$this->stored_system_variables) { + $appFields["APP_DATA"] = array_merge($appFields["APP_DATA"], G::getSystemConstants()); } - ##################################################################################################### + else { + $oParams = new stdClass(); + $oParams->option = "STORED SESSION"; + $oParams->SID = $this->wsSessionId; + $oParams->appData = $appFields["APP_DATA"]; + + $appFields["APP_DATA"] = array_merge($appFields["APP_DATA"], G::getSystemConstants($oParams)); + } + //#################################################################################################### $oPMScript->setFields( $appFields['APP_DATA'] ); $bExecute = true; @@ -1630,17 +1634,19 @@ class wsBase $oPMScript = new PMScript(); //$appFields['APP_DATA']['APPLICATION'] = $caseId; - #@Neyek ############################################################################################# - if( !$this->stored_system_variables ) { - $appFields['APP_DATA'] = array_merge ( $appFields['APP_DATA'], G::getSystemConstants() ); - } else { - $oParams = new stdClass(); - $oParams->option = 'STORED SESSION'; - $oParams->SID = $this->wsSessionId; - - $appFields['APP_DATA'] = array_merge ( $appFields['APP_DATA'], G::getSystemConstants($oParams)); + //@Neyek ############################################################################################# + if (!$this->stored_system_variables) { + $appFields["APP_DATA"] = array_merge($appFields["APP_DATA"], G::getSystemConstants()); } - ##################################################################################################### + else { + $oParams = new stdClass(); + $oParams->option = "STORED SESSION"; + $oParams->SID = $this->wsSessionId; + $oParams->appData = $appFields["APP_DATA"]; + + $appFields["APP_DATA"] = array_merge($appFields["APP_DATA"], G::getSystemConstants($oParams)); + } + //#################################################################################################### $oPMScript->setFields( $appFields['APP_DATA'] ); $varTriggers .= "-= After Derivation =-
";