fix in route screen

This commit is contained in:
Ronald Q
2016-08-10 15:25:54 -04:00
parent 18ab7cd4d3
commit 803394c2b0
2 changed files with 86 additions and 2 deletions

View File

@@ -51,10 +51,12 @@ class Derivation
protected $flagControl;
protected $flagControlMulInstance;
private $regexpTaskTypeToInclude;
public $flagSanity = false;
public function __construct()
{
$this->setRegexpTaskTypeToInclude("GATEWAYTOGATEWAY|END-MESSAGE-EVENT|END-EMAIL-EVENT");
$this->flagSanity = true;
}
/**
@@ -256,7 +258,8 @@ class Derivation
}
//Check Task GATEWAYTOGATEWAY, END-MESSAGE-EVENT, END-EMAIL-EVENT
$arrayNextTaskBackup = $arrayNextTask;
$arrayNextTaskBackup = $this->preSanity($arrayNextTask);
$arrayNextTask = array();
$i = 0;
foreach ($arrayNextTaskBackup as $value) {
@@ -327,6 +330,87 @@ class Derivation
}
}
public function preSanity($arrayNextTask)
{
$arrayNextTaskResponse = array();
if ($arrayNextTask) {
$arrayTask = array();
$arrayNotTask = array();
$regex = "END-MESSAGE-EVENT|END-EMAIL-EVENT|SCRIPT-TASK|INTERMEDIATE-CATCH-TIMER-EVENT|INTERMEDIATE-THROW-EMAIL-EVENT";
foreach ($arrayNextTask as $index => $item) {
if (($item["NEXT_TASK"]["TAS_UID"] != "-1" &&
preg_match("/^(?:" . $regex . ")$/", $item["NEXT_TASK"]["TAS_TYPE"]))
) {
$arrayNotTask[] = $index;
} else {
$arrayTask[] = $index;
}
}
if ($arrayTask) {
foreach ($arrayNotTask as $item) {
unset($arrayNextTask[$item]);
}
$arrayNextTaskResponse = array_values($arrayNextTask);
} else {
$pos = array_shift($arrayNotTask);
$arrayNextTaskResponse[] = $arrayNextTask[$pos];
foreach ($arrayNextTask as $nextTask) {
$flag = false;
foreach ($arrayNextTaskResponse as $task) {
if (!in_array($nextTask['ROU_NEXT_TASK'], $task, true)) {
$flag = true;
}
}
if ($flag) {
$arrayNextTaskResponse[] = $nextTask;
}
}
}
}
return $arrayNextTaskResponse;
}
public function postSanity($arrayNextTask)
{
$arrayNextTaskResponse = array();
if ($arrayNextTask) {
$arrayTask = array();
$arrayNotTask = array();
$regex = "GATEWAYTOGATEWAY|END-MESSAGE-EVENT|END-EMAIL-EVENT|SCRIPT-TASK|INTERMEDIATE-CATCH-TIMER-EVENT|INTERMEDIATE-THROW-EMAIL-EVENT";
foreach ($arrayNextTask as $index => $item) {
if (($item["NEXT_TASK"]["TAS_UID"] != "-1" &&
preg_match("/^(?:" . $regex . ")$/", $item["NEXT_TASK"]["TAS_TYPE"]))
|| $item['ROU_TYPE'] == "SEC-JOIN"
) {
$arrayNotTask[] = $index;
} else {
$arrayTask[] = $index;
}
}
if ($arrayTask) {
foreach ($arrayNotTask as $item) {
unset($arrayNextTask[$item]);
}
$arrayNextTaskResponse = array_values($arrayNextTask);
} else {
$pos = array_shift($arrayNotTask);
$arrayNextTaskResponse[] = $arrayNextTask[$pos];
foreach ($arrayNextTask as $nextTask) {
$flag = false;
foreach ($arrayNextTaskResponse as $task) {
if (!in_array($nextTask['ROU_NEXT_TASK'], $task, true)) {
$flag = true;
}
}
if ($flag) {
$arrayNextTaskResponse[] = $nextTask;
}
}
}
}
return array_combine(range(1, count($arrayNextTaskResponse)), array_values($arrayNextTaskResponse));
}
/**
* getRouteCondition
*