diff --git a/workflow/engine/classes/class.processes.php b/workflow/engine/classes/class.processes.php index 3cf3c8c43..db5ad1ad9 100644 --- a/workflow/engine/classes/class.processes.php +++ b/workflow/engine/classes/class.processes.php @@ -2004,13 +2004,14 @@ class Processes { $map = array(); foreach ($oData->inputs as $key => $val) { - $oldUid = $val['INP_DOC_UID']; $newGuid = $this->getUnusedInputGUID(); $map[$val['INP_DOC_UID']] = $newGuid; $oData->inputFiles[$oData->inputs[$key]['INP_DOC_UID']] = $newGuid; $oData->inputs[$key]['INP_DOC_UID'] = $newGuid; - $oData->inputs[$key]['INP_DOC_UID_OLD'] = $oldUid; } + + $oData->uid["INPUT_DOCUMENT"] = $map; + if (!isset($oData->inputFiles)) { $oData->inputFiles = array(); } diff --git a/workflow/engine/src/ProcessMaker/Project/Workflow.php b/workflow/engine/src/ProcessMaker/Project/Workflow.php index 49be55766..33483917e 100644 --- a/workflow/engine/src/ProcessMaker/Project/Workflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Workflow.php @@ -1285,6 +1285,7 @@ class Workflow extends Handler $arrayWorkflowData = (array)($workflowData); + //Synchronize dynaforms json. foreach ($arrayWorkflowData["dynaforms"] as $key => $value) { if ($arrayWorkflowData["dynaforms"][$key]["DYN_CONTENT"] != "") { $dynaFormContent = $arrayWorkflowData["dynaforms"][$key]["DYN_CONTENT"]; @@ -1304,15 +1305,21 @@ class Workflow extends Handler } } - foreach ($arrayWorkflowData["inputs"] as $keyin => $value) { - $newUid = $value["INP_DOC_UID"]; - if(isset($value["INP_DOC_UID_OLD"])){ - foreach ($arrayWorkflowData["processVariables"] as $keypv => $vars) { - if($vars['INP_DOC_UID'] === $value["INP_DOC_UID_OLD"]){ - $arrayWorkflowData["processVariables"][$keypv]["INP_DOC_UID"] = $newUid; + //Synchronize caseTrackerObject with dynaforms, input documents, output documents. + foreach ($arrayWorkflowData["caseTrackerObject"] as $key => $value) { + if (isset($arrayWorkflowData["uid"]) && + isset($arrayWorkflowData["uid"][$value["CTO_TYPE_OBJ"]]) && + isset($arrayWorkflowData["uid"][$value["CTO_TYPE_OBJ"]][$value["CTO_UID_OBJ"]])) { + $arrayWorkflowData["caseTrackerObject"][$key]["CTO_UID_OBJ"] = $arrayWorkflowData["uid"][$value["CTO_TYPE_OBJ"]][$value["CTO_UID_OBJ"]]; } } - unset($arrayWorkflowData["inputs"][$keyin]["INP_DOC_UID_OLD"]); + + //Synchronize variables with process variables. + foreach ($arrayWorkflowData["processVariables"] as $key => $value) { + if (isset($arrayWorkflowData["uid"]) && + isset($arrayWorkflowData["uid"]["INPUT_DOCUMENT"]) && + isset($arrayWorkflowData["uid"]["INPUT_DOCUMENT"][$value["INP_DOC_UID"]])) { + $arrayWorkflowData["processVariables"][$key]["INP_DOC_UID"] = $arrayWorkflowData["uid"]["INPUT_DOCUMENT"][$value["INP_DOC_UID"]]; } }