diff --git a/workflow/engine/classes/Derivation.php b/workflow/engine/classes/Derivation.php index fe5fb0c10..98d52cf72 100644 --- a/workflow/engine/classes/Derivation.php +++ b/workflow/engine/classes/Derivation.php @@ -882,6 +882,9 @@ class Derivation //We close the current derivation, then we'll try to derivate to each defined route $this->case->CloseCurrentDelegation( $currentDelegation['APP_UID'], $currentDelegation['DEL_INDEX'] ); + //Set THE APP_STATUS + $appFields['APP_STATUS'] = $currentDelegation['APP_STATUS']; + //Get data for current delegation (current Task) $task = TaskPeer::retrieveByPK($currentDelegation["TAS_UID"]); $bpmnActivity = BpmnActivityPeer::retrieveByPK($currentDelegation["TAS_UID"]); @@ -1114,17 +1117,12 @@ class Derivation unset($aSP); } - /* Start Block : UPDATES APPLICATION */ - //Set THE APP_STATUS - $appFields['APP_STATUS'] = $currentDelegation['APP_STATUS']; /* Start Block : Count the open threads of $currentDelegation['APP_UID'] */ $openThreads = $this->case->GetOpenThreads( $currentDelegation['APP_UID'] ); - $flagUpdateCase = false; - //check if there is any paused thread - + //Check if there is any paused thread $existThreadPaused = false; if (isset($arraySiblings['pause'])) { if (!empty($arraySiblings['pause'])) { diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ScriptTask.php b/workflow/engine/src/ProcessMaker/BusinessModel/ScriptTask.php index a544654fc..a2105a553 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ScriptTask.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ScriptTask.php @@ -1,6 +1,16 @@ getTasType() == "SCRIPT-TASK") { - $criteria = new \Criteria("workflow"); - - $criteria->addSelectColumn(\ScriptTaskPeer::SCRTAS_OBJ_UID); - - $criteria->add(\ScriptTaskPeer::ACT_UID, $activityUid, \Criteria::EQUAL); - - $rsCriteria = \ScriptTaskPeer::doSelectRS($criteria); - $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $criteria = new Criteria("workflow"); + $criteria->addSelectColumn(ScriptTaskPeer::SCRTAS_OBJ_UID); + $criteria->add(ScriptTaskPeer::ACT_UID, $activityUid, Criteria::EQUAL); + $rsCriteria = ScriptTaskPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); if ($rsCriteria->next()) { $row = $rsCriteria->getRow(); - $scriptTasObjUid = $row["SCRTAS_OBJ_UID"]; - - $trigger = \TriggersPeer::retrieveByPK($scriptTasObjUid); + $trigger = TriggersPeer::retrieveByPK($scriptTasObjUid); if (!is_null($trigger)) { + //We will be update the status before execute the trigger related to the script task + $case = new ClassesCases(); + $result = $case->updateCase($arrayApplicationData["APP_UID"], $arrayApplicationData); + //Some Pmf functions uses this global variable $oPMScript for review the aFields defined global $oPMScript; - $oPMScript = new \PMScript(); - $oPMScript->setDataTrigger($trigger->toArray(\BasePeer::TYPE_FIELDNAME)); + $oPMScript = new PMScript(); + $oPMScript->setDataTrigger($trigger->toArray(BasePeer::TYPE_FIELDNAME)); $oPMScript->setFields($arrayApplicationData["APP_DATA"]); $oPMScript->setScript($trigger->getTriWebbot()); $oPMScript->execute(); - if (isset($oPMScript->aFields["__ERROR__"])) { - G::log("Case Uid: " . $arrayApplicationData["APP_UID"] . ", Error: " . $oPMScript->aFields["__ERROR__"], PATH_DATA, "ScriptTask.log"); + if (isset($oPMScript->aFields["__ERROR__"])) { + G::log("Case Uid: " . $arrayApplicationData["APP_UID"] . ", Error: " . $oPMScript->aFields["__ERROR__"], + PATH_DATA, "ScriptTask.log"); } - $arrayApplicationData["APP_DATA"] = $oPMScript->aFields; - - $case = new \Cases(); - $result = $case->updateCase($arrayApplicationData["APP_UID"], $arrayApplicationData); } } @@ -645,7 +652,7 @@ class ScriptTask //Return return $arrayApplicationData["APP_DATA"]; - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } }