From 25e4e52ffedfd437ca446cb0775e134f8b65cdc2 Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Wed, 30 Jul 2014 16:48:19 -0400 Subject: [PATCH] ProcessMaker-BE "No se borran las condiciones cuando un Gateway se actualiza su tipo a PARALLEL (Bug)" - No se borran las condiciones cuando un Gateway se actualiza su tipo a PARALLEL - Solucion, Al actualizar el tipo de un Gateway a PARALLEL se borran las condiciones --- .../Project/Adapter/BpmnWorkflow.php | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php index 40a01568c..d84b383e1 100644 --- a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php @@ -826,11 +826,17 @@ class BpmnWorkflow extends Project\Bpmn /* * Diagram's Gateways Handling */ + $arrayUidGatewayParallel = array(); + $flagGatewayParallel = false; + $whiteList = array(); + foreach ($diagram["gateways"] as $i => $gatewayData) { $gatewayData = array_change_key_case($gatewayData, CASE_UPPER); unset($gatewayData["_EXTENDED"]); + $flagAddOrUpdate = false; + $gateway = $bwp->getGateway($gatewayData["GAT_UID"]); if ($forceInsert || is_null($gateway)) { @@ -849,12 +855,25 @@ class BpmnWorkflow extends Project\Bpmn } $bwp->addGateway($gatewayData); + + $flagAddOrUpdate = true; } elseif (! $bwp->isEquals($gateway, $gatewayData)) { $bwp->updateGateway($gatewayData["GAT_UID"], $gatewayData); + + $flagAddOrUpdate = true; } else { 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; $whiteList[] = $gatewayData["GAT_UID"]; } @@ -1013,7 +1032,6 @@ class BpmnWorkflow extends Project\Bpmn } } - /* * 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; $whiteList[] = $flowData["FLO_UID"]; }