Merged in victorsl/processmaker (pull request #628)

ProcessMaker-BE "No se borran las condiciones cuando un Gateway se actualiza su tipo a PARALLEL (Bug)"
This commit is contained in:
Erik Amaru Ortiz
2014-08-04 12:22:25 -04:00

View File

@@ -826,11 +826,17 @@ class BpmnWorkflow extends Project\Bpmn
/* /*
* Diagram's Gateways Handling * Diagram's Gateways Handling
*/ */
$arrayUidGatewayParallel = array();
$flagGatewayParallel = false;
$whiteList = array(); $whiteList = array();
foreach ($diagram["gateways"] as $i => $gatewayData) { foreach ($diagram["gateways"] as $i => $gatewayData) {
$gatewayData = array_change_key_case($gatewayData, CASE_UPPER); $gatewayData = array_change_key_case($gatewayData, CASE_UPPER);
unset($gatewayData["_EXTENDED"]); unset($gatewayData["_EXTENDED"]);
$flagAddOrUpdate = false;
$gateway = $bwp->getGateway($gatewayData["GAT_UID"]); $gateway = $bwp->getGateway($gatewayData["GAT_UID"]);
if ($forceInsert || is_null($gateway)) { if ($forceInsert || is_null($gateway)) {
@@ -849,12 +855,25 @@ class BpmnWorkflow extends Project\Bpmn
} }
$bwp->addGateway($gatewayData); $bwp->addGateway($gatewayData);
$flagAddOrUpdate = true;
} elseif (! $bwp->isEquals($gateway, $gatewayData)) { } elseif (! $bwp->isEquals($gateway, $gatewayData)) {
$bwp->updateGateway($gatewayData["GAT_UID"], $gatewayData); $bwp->updateGateway($gatewayData["GAT_UID"], $gatewayData);
$flagAddOrUpdate = true;
} else { } else {
Util\Logger::log("Update Gateway ({$gatewayData["GAT_UID"]}) Skipped - No changes required"); Util\Logger::log("Update Gateway ({$gatewayData["GAT_UID"]}) Skipped - No changes required");
} }
if ($flagAddOrUpdate) {
$arrayGatewayData = $bwp->getGateway($gatewayData["GAT_UID"]);
if ($arrayGatewayData["GAT_TYPE"] == "PARALLEL") {
$arrayUidGatewayParallel[] = $gatewayData["GAT_UID"];
$flagGatewayParallel = true;
}
}
$diagram["gateways"][$i] = $gatewayData; $diagram["gateways"][$i] = $gatewayData;
$whiteList[] = $gatewayData["GAT_UID"]; $whiteList[] = $gatewayData["GAT_UID"];
} }
@@ -1013,7 +1032,6 @@ class BpmnWorkflow extends Project\Bpmn
} }
} }
/* /*
* Diagram's Flows Handling * Diagram's Flows Handling
*/ */
@@ -1050,6 +1068,11 @@ class BpmnWorkflow extends Project\Bpmn
} }
} }
//Update condition
if ($flagGatewayParallel && $flowData["FLO_ELEMENT_ORIGIN_TYPE"] == "bpmnGateway" && in_array($flowData["FLO_ELEMENT_ORIGIN"], $arrayUidGatewayParallel)) {
$flowData["FLO_CONDITION"] = "";
}
$diagram["flows"][$i] = $flowData; $diagram["flows"][$i] = $flowData;
$whiteList[] = $flowData["FLO_UID"]; $whiteList[] = $flowData["FLO_UID"];
} }