Merged in bugfix/HOR-4863 (pull request #6662)

HOR-4863

Approved-by: Julio Cesar Laura Avendaño <contact@julio-laura.com>
This commit is contained in:
Paula Quispe
2018-10-18 19:58:51 +00:00
committed by Julio Cesar Laura Avendaño
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
$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'])) {

View File

@@ -1,6 +1,16 @@
<?php
namespace ProcessMaker\BusinessModel;
use BasePeer;
use Cases as ClassesCases;
use Criteria;
use Exception;
use G;
use PMScript;
use ResultSet;
use ScriptTaskPeer;
use TaskPeer;
use TriggersPeer;
class ScriptTask
{
@@ -594,50 +604,47 @@ class ScriptTask
/**
* Execute Script
*
* @param string $activityUid Unique id of Event
* @param array $arrayApplicationData Case data
* @param string $activityUid Unique id of task
* @param array $arrayApplicationData Case data
*
* @return array
* @throws Exception
*/
public function execScriptByActivityUid($activityUid, array $arrayApplicationData)
{
try {
$task = \TaskPeer::retrieveByPK($activityUid);
$task = TaskPeer::retrieveByPK($activityUid);
if (!is_null($task) && $task->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;
}
}