This commit is contained in:
Paula Quispe
2018-10-17 14:15:07 -04:00
parent 4bede3daaf
commit aa58237f13
2 changed files with 34 additions and 29 deletions

View File

@@ -882,6 +882,9 @@ class Derivation
//We close the current derivation, then we'll try to derivate to each defined route //We close the current derivation, then we'll try to derivate to each defined route
$this->case->CloseCurrentDelegation( $currentDelegation['APP_UID'], $currentDelegation['DEL_INDEX'] ); $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) //Get data for current delegation (current Task)
$task = TaskPeer::retrieveByPK($currentDelegation["TAS_UID"]); $task = TaskPeer::retrieveByPK($currentDelegation["TAS_UID"]);
$bpmnActivity = BpmnActivityPeer::retrieveByPK($currentDelegation["TAS_UID"]); $bpmnActivity = BpmnActivityPeer::retrieveByPK($currentDelegation["TAS_UID"]);
@@ -1114,17 +1117,12 @@ class Derivation
unset($aSP); 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'] */ /* Start Block : Count the open threads of $currentDelegation['APP_UID'] */
$openThreads = $this->case->GetOpenThreads( $currentDelegation['APP_UID'] ); $openThreads = $this->case->GetOpenThreads( $currentDelegation['APP_UID'] );
$flagUpdateCase = false; $flagUpdateCase = false;
//check if there is any paused thread //Check if there is any paused thread
$existThreadPaused = false; $existThreadPaused = false;
if (isset($arraySiblings['pause'])) { if (isset($arraySiblings['pause'])) {
if (!empty($arraySiblings['pause'])) { if (!empty($arraySiblings['pause'])) {

View File

@@ -1,6 +1,16 @@
<?php <?php
namespace ProcessMaker\BusinessModel; namespace ProcessMaker\BusinessModel;
use BasePeer;
use Cases as ClassesCases;
use Criteria;
use Exception;
use G; use G;
use PMScript;
use ResultSet;
use ScriptTaskPeer;
use TaskPeer;
use TriggersPeer;
class ScriptTask class ScriptTask
{ {
@@ -594,50 +604,47 @@ class ScriptTask
/** /**
* Execute Script * Execute Script
* *
* @param string $activityUid Unique id of Event * @param string $activityUid Unique id of task
* @param array $arrayApplicationData Case data * @param array $arrayApplicationData Case data
* *
* @return array * @return array
* @throws Exception
*/ */
public function execScriptByActivityUid($activityUid, array $arrayApplicationData) public function execScriptByActivityUid($activityUid, array $arrayApplicationData)
{ {
try { try {
$task = \TaskPeer::retrieveByPK($activityUid); $task = TaskPeer::retrieveByPK($activityUid);
if (!is_null($task) && $task->getTasType() == "SCRIPT-TASK") { if (!is_null($task) && $task->getTasType() == "SCRIPT-TASK") {
$criteria = new \Criteria("workflow"); $criteria = new Criteria("workflow");
$criteria->addSelectColumn(ScriptTaskPeer::SCRTAS_OBJ_UID);
$criteria->addSelectColumn(\ScriptTaskPeer::SCRTAS_OBJ_UID); $criteria->add(ScriptTaskPeer::ACT_UID, $activityUid, Criteria::EQUAL);
$rsCriteria = ScriptTaskPeer::doSelectRS($criteria);
$criteria->add(\ScriptTaskPeer::ACT_UID, $activityUid, \Criteria::EQUAL); $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$rsCriteria = \ScriptTaskPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
if ($rsCriteria->next()) { if ($rsCriteria->next()) {
$row = $rsCriteria->getRow(); $row = $rsCriteria->getRow();
$scriptTasObjUid = $row["SCRTAS_OBJ_UID"]; $scriptTasObjUid = $row["SCRTAS_OBJ_UID"];
$trigger = TriggersPeer::retrieveByPK($scriptTasObjUid);
$trigger = \TriggersPeer::retrieveByPK($scriptTasObjUid);
if (!is_null($trigger)) { 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 //Some Pmf functions uses this global variable $oPMScript for review the aFields defined
global $oPMScript; global $oPMScript;
$oPMScript = new \PMScript(); $oPMScript = new PMScript();
$oPMScript->setDataTrigger($trigger->toArray(\BasePeer::TYPE_FIELDNAME)); $oPMScript->setDataTrigger($trigger->toArray(BasePeer::TYPE_FIELDNAME));
$oPMScript->setFields($arrayApplicationData["APP_DATA"]); $oPMScript->setFields($arrayApplicationData["APP_DATA"]);
$oPMScript->setScript($trigger->getTriWebbot()); $oPMScript->setScript($trigger->getTriWebbot());
$oPMScript->execute(); $oPMScript->execute();
if (isset($oPMScript->aFields["__ERROR__"])) { if (isset($oPMScript->aFields["__ERROR__"])) {
G::log("Case Uid: " . $arrayApplicationData["APP_UID"] . ", Error: " . $oPMScript->aFields["__ERROR__"], PATH_DATA, "ScriptTask.log"); G::log("Case Uid: " . $arrayApplicationData["APP_UID"] . ", Error: " . $oPMScript->aFields["__ERROR__"],
PATH_DATA, "ScriptTask.log");
} }
$arrayApplicationData["APP_DATA"] = $oPMScript->aFields; $arrayApplicationData["APP_DATA"] = $oPMScript->aFields;
$case = new \Cases();
$result = $case->updateCase($arrayApplicationData["APP_UID"], $arrayApplicationData); $result = $case->updateCase($arrayApplicationData["APP_UID"], $arrayApplicationData);
} }
} }
@@ -645,7 +652,7 @@ class ScriptTask
//Return //Return
return $arrayApplicationData["APP_DATA"]; return $arrayApplicationData["APP_DATA"];
} catch (\Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
} }