diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index 23dc49adb..88b0be202 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -770,7 +770,7 @@ class wsBase } $oSpool = new spoolRun(); - $oSpool->setConfig( + $oSpool->setConfig( array ( 'MESS_ENGINE' => $aSetup['MESS_ENGINE'], 'MESS_SERVER' => $aSetup['MESS_SERVER'], @@ -1706,10 +1706,13 @@ class wsBase * @param string $userId * @param string $taskId * @param string $variables + * @param int $executeTriggers : Optional parameter. The execution all triggers of the task, according to your steps, 1 yes 0 no. * @return $result will return an object */ - public function newCase ($processId, $userId, $taskId, $variables) + public function newCase($processId, $userId, $taskId, $variables, $executeTriggers = 0) { + //$executeTriggers, this parameter is not important, it may be the last parameter in the method + $g = new G(); try { @@ -1737,7 +1740,6 @@ class wsBase } $oCase = new Cases(); - $oTask = new Tasks(); $startingTasks = $oCase->getStartCases( $userId ); array_shift( $startingTasks ); //remove the first row, the header row $founded = ''; @@ -1778,6 +1780,7 @@ class wsBase return $result; } + //Start case $case = $oCase->startCase( $taskId, $userId ); $_SESSION['APPLICATION'] = $case['APPLICATION']; @@ -1799,6 +1802,22 @@ class wsBase $oldFields['TAS_UID'] = $taskId; $up_case = $oCase->updateCase( $caseId, $oldFields ); + //Execute all triggers of the task, according to your steps + if ($executeTriggers == 1) { + $task = new Tasks(); + $arrayStep = $task->getStepsOfTask($taskId); + + foreach ($arrayStep as $step) { + $arrayField = $oCase->loadCase($caseId); + + $arrayField["APP_DATA"] = $oCase->executeTriggers($taskId, $step["STEP_TYPE_OBJ"], $step["STEP_UID_OBJ"], "BEFORE", $arrayField["APP_DATA"]); + $arrayField["APP_DATA"] = $oCase->executeTriggers($taskId, $step["STEP_TYPE_OBJ"], $step["STEP_UID_OBJ"], "AFTER", $arrayField["APP_DATA"]); + + $arrayField = $oCase->updateCase($caseId, $arrayField); + } + } + + //Response $result = new wsResponse( 0, G::loadTranslation( 'ID_STARTED_SUCCESSFULLY' ) ); $result->caseId = $caseId; $result->caseNumber = $caseNr; diff --git a/workflow/engine/classes/model/CaseScheduler.php b/workflow/engine/classes/model/CaseScheduler.php index 2f100c9cb..57263d1b4 100755 --- a/workflow/engine/classes/model/CaseScheduler.php +++ b/workflow/engine/classes/model/CaseScheduler.php @@ -396,7 +396,12 @@ class CaseScheduler extends BaseCaseScheduler $paramsRouteLogResult = $paramsLogResultFromPlugin['paramsRouteLogResult']; } else { eprint( " - Creating the new case............." ); - $result = $client->__SoapCall( 'NewCase', array ($params) ); + + $paramsAux = $params; + $paramsAux["executeTriggers"] = 1; + + $result = $client->__SoapCall("NewCase", array($paramsAux)); + if ($result->status_code == 0) { eprintln( "OK+ CASE #{$result->caseNumber} was created!", 'green' ); @@ -499,7 +504,10 @@ class CaseScheduler extends BaseCaseScheduler $paramsLog = array ('PRO_UID' => $processId,'TAS_UID' => $taskId,'SCH_UID' => $sSchedulerUid,'USR_NAME' => $user,'RESULT' => '','EXEC_DATE' => date( 'Y-m-d' ),'EXEC_HOUR' => date( 'H:i:s' ),'WS_CREATE_CASE_STATUS' => '','WS_ROUTE_CASE_STATUS' => '' ); - $result = $client->__SoapCall( 'NewCase', array ($params) ); + $paramsAux = $params; + $paramsAux["executeTriggers"] = 1; + + $result = $client->__SoapCall("NewCase", array($paramsAux)); eprint( " - Creating the new case............." ); if ($result->status_code == 0) { diff --git a/workflow/engine/methods/services/pmos2.wsdl b/workflow/engine/methods/services/pmos2.wsdl index 7ee67bf45..cf3a11a89 100755 --- a/workflow/engine/methods/services/pmos2.wsdl +++ b/workflow/engine/methods/services/pmos2.wsdl @@ -410,6 +410,7 @@ + diff --git a/workflow/engine/methods/services/soap2.php b/workflow/engine/methods/services/soap2.php index 2aebcbe72..4891ee915 100755 --- a/workflow/engine/methods/services/soap2.php +++ b/workflow/engine/methods/services/soap2.php @@ -589,7 +589,7 @@ function DerivateCase ($params) $oStd->wsSessionId = $params->sessionId; $ws = new wsBase( $oStd ); - $res = $ws->derivateCase( $user['USR_UID'], $params->caseId, $params->delIndex ); + $res = $ws->derivateCase($user["USR_UID"], $params->caseId, $params->delIndex, true); return $res; } @@ -616,7 +616,7 @@ function RouteCase ($params) $oStd->wsSessionId = $params->sessionId; $ws = new wsBase( $oStd ); - $res = $ws->derivateCase( $user['USR_UID'], $params->caseId, $params->delIndex ); + $res = $ws->derivateCase($user["USR_UID"], $params->caseId, $params->delIndex, true); return $res; @@ -765,7 +765,8 @@ function NewCase ($params) $params->variables = $field; $ws = new wsBase(); - $res = $ws->newCase( $params->processId, $userId, $params->taskId, $params->variables ); + + $res = $ws->newCase($params->processId, $userId, $params->taskId, $params->variables, (isset($params->executeTriggers))? (int)($params->executeTriggers) : 0); // we need to register the case id for a stored session variable. like a normal Session. $oSession->registerGlobal( "APPLICATION", $res->caseId );