diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index 85c69d260..0ec976b12 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -50,6 +50,28 @@ class Derivation var $case; protected $flagControl; protected $flagControlMulInstance; + private $regexpTaskTypeToInclude; + + public function __construct() + { + $this->setRegexpTaskTypeToInclude("GATEWAYTOGATEWAY|END-MESSAGE-EVENT|END-EMAIL-EVENT"); + } + + /** + * @return mixed + */ + public function getRegexpTaskTypeToInclude() + { + return $this->regexpTaskTypeToInclude; + } + + /** + * @param mixed $regexpTaskTypeToInclude + */ + public function setRegexpTaskTypeToInclude($regexpTaskTypeToInclude) + { + $this->regexpTaskTypeToInclude = $regexpTaskTypeToInclude; + } /** * prepareInformationTask @@ -240,15 +262,15 @@ class Derivation foreach ($arrayNextTaskBackup as $value) { $arrayNextTaskData = $value; - $regexpTaskTypeToInclude = "GATEWAYTOGATEWAY|END-MESSAGE-EVENT|END-EMAIL-EVENT"; - if ($arrayNextTaskData["NEXT_TASK"]["TAS_UID"] != "-1" && - preg_match("/^(?:" . $regexpTaskTypeToInclude . ")$/", $arrayNextTaskData["NEXT_TASK"]["TAS_TYPE"]) + preg_match("/^(?:" . $this->regexpTaskTypeToInclude . ")$/", $arrayNextTaskData["NEXT_TASK"]["TAS_TYPE"]) ) { $arrayAux = $this->prepareInformation($arrayData, $arrayNextTaskData["NEXT_TASK"]["TAS_UID"]); foreach ($arrayAux as $value2) { - $arrayNextTask[++$i] = $value2; + $key = ++$i; + $arrayNextTask[$key] = $value2; + $arrayNextTask[$key]['SOURCE_UID'] = $value['ROU_NEXT_TASK']; foreach($aSecJoin as $rsj){ $arrayNextTask[$i]["NEXT_TASK"]["ROU_PREVIOUS_TASK"] = $rsj["ROU_PREVIOUS_TASK"]; $arrayNextTask[$i]["NEXT_TASK"]["ROU_PREVIOUS_TYPE"] = "SEC-JOIN"; @@ -262,7 +284,7 @@ class Derivation ) { $arrayNextTaskData["NEXT_TASK"]["TAS_UID"] = $arrayNextTaskData["TAS_UID"] . "/" . $arrayNextTaskData["NEXT_TASK"]["TAS_UID"]; } - + $arrayNextTaskData['SOURCE_UID'] = $value['ROU_NEXT_TASK']; $arrayNextTask[++$i] = $arrayNextTaskData; foreach($aSecJoin as $rsj){ $arrayNextTask[$i]["NEXT_TASK"]["ROU_PREVIOUS_TASK"] = $rsj["ROU_PREVIOUS_TASK"]; diff --git a/workflow/engine/classes/class.pmScript.php b/workflow/engine/classes/class.pmScript.php index 3ec8cef4d..476b8ea1f 100644 --- a/workflow/engine/classes/class.pmScript.php +++ b/workflow/engine/classes/class.pmScript.php @@ -368,7 +368,7 @@ class PMScript /** * Evaluate the current script * - * @return void + * @return bool */ public function evaluate () { diff --git a/workflow/engine/methods/cases/cases_Step.php b/workflow/engine/methods/cases/cases_Step.php index ee8c75589..deda937c0 100755 --- a/workflow/engine/methods/cases/cases_Step.php +++ b/workflow/engine/methods/cases/cases_Step.php @@ -798,8 +798,13 @@ try { $aFields['TAS_TYPE_DAY'] = G::LoadTranslation( 'ID_COUNT_DAYS' ); $aFields['TAS_CALENDAR'] = G::LoadTranslation( 'ID_CALENDAR' ); - $aFields['TASK'] = $oDerivation->prepareInformation( array ('USER_UID' => $_SESSION['USER_LOGGED'],'APP_UID' => $_SESSION['APPLICATION'],'DEL_INDEX' => $_SESSION['INDEX'] - ) ); + $oRoute = new \ProcessMaker\Core\RoutingScreen(); + $arrayData = array( + 'USER_UID' => $_SESSION['USER_LOGGED'], + 'APP_UID' => $_SESSION['APPLICATION'], + 'DEL_INDEX' => $_SESSION['INDEX'] + ); + $aFields['TASK'] = $oRoute->prepareInformation($arrayData); if (empty( $aFields['TASK'] )) { throw (new Exception( G::LoadTranslation( 'ID_NO_DERIVATION_RULE' ) )); diff --git a/workflow/engine/src/ProcessMaker/Core/RoutingScreen.php b/workflow/engine/src/ProcessMaker/Core/RoutingScreen.php new file mode 100644 index 000000000..af096967d --- /dev/null +++ b/workflow/engine/src/ProcessMaker/Core/RoutingScreen.php @@ -0,0 +1,14 @@ +setRegexpTaskTypeToInclude("GATEWAYTOGATEWAY|END-MESSAGE-EVENT|END-EMAIL-EVENT|SCRIPT-TASK|INTERMEDIATE-CATCH-TIMER-EVENT|INTERMEDIATE-THROW-EMAIL-EVENT"); + } + +} \ No newline at end of file