From 578d58a89fca01033503d10cbf9e1b7f2f2f1dd5 Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Wed, 4 Mar 2015 16:51:41 -0400 Subject: [PATCH] PM-1723 "Designer: Se pierde las configuraciones de un..." SOLVED MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue: Designer: Se pierde las configuraciones de un subproceso al importar el proceso Cause: Al momento de importar no se esta registrando de manera correcta los registros en la tabla "SUB_PROCESS" Solution: Se esta validando que los registros en la tabla "SUB_PROCESS" sean unicos al momento de la importacion Explanation: - Al momento de la importacion de un projecto, si un Activity de tipo sub-process tiene definido sus properties, esta configuracion se registra en la tabla correspondiente, no importando si previamente ya fue importado el projecto que es el sub-process. - La importacion del projecto-principal y el projecto-sub-proceso es independiente, este criterio ya se lo tiene en produccion desde hace varias veriones atras. - Un ejemplo practico seria el siguiente caso: Un administrador exporta el projecto-principal y el projecto-sub-proceso, y dadas las circunstancias el projecto-sub-proceso se pierde, daƱetc. Entonces el administrador por lo menos lograra importar en su workspace el projecto-principal (pues la importacion no valida que primero deba importar el projecto-sub-proceso) --- workflow/engine/classes/class.processes.php | 17 ++++++++++++++--- .../src/ProcessMaker/Project/Workflow.php | 7 +++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/workflow/engine/classes/class.processes.php b/workflow/engine/classes/class.processes.php index 513b78ba1..6725e8f66 100755 --- a/workflow/engine/classes/class.processes.php +++ b/workflow/engine/classes/class.processes.php @@ -1516,9 +1516,20 @@ class Processes { foreach ($SubProcess as $key => $row) { $oSubProcess = new SubProcess(); - if ($oSubProcess->subProcessExists( $row['SP_UID'] )) { - $oSubProcess->remove( $row['SP_UID'] ); - } + + //if ($oSubProcess->subProcessExists( $row['SP_UID'] )) { + // $oSubProcess->remove( $row['SP_UID'] ); + //} + + //Delete + $criteria = new Criteria("workflow"); + + $criteria->add(SubProcessPeer::PRO_PARENT, $row["PRO_PARENT"], Criteria::EQUAL); + $criteria->add(SubProcessPeer::TAS_PARENT, $row["TAS_PARENT"], Criteria::EQUAL); + + $result = SubProcessPeer::doDelete($criteria); + + //Create $res = $oSubProcess->create( $row ); } return; diff --git a/workflow/engine/src/ProcessMaker/Project/Workflow.php b/workflow/engine/src/ProcessMaker/Project/Workflow.php index 688023b9d..c46911cfc 100755 --- a/workflow/engine/src/ProcessMaker/Project/Workflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Workflow.php @@ -764,6 +764,13 @@ class Workflow extends Handler $oCriteria->add(\CaseTrackerObjectPeer::PRO_UID, $sProcessUID); \ProcessUserPeer::doDelete($oCriteria); + //Delete SubProcess + $criteria = new \Criteria("workflow"); + + $criteria->add(\SubProcessPeer::PRO_PARENT, $sProcessUID, \Criteria::EQUAL); + + $result = \SubProcessPeer::doDelete($criteria); + //Delete WebEntries $webEntry = new \ProcessMaker\BusinessModel\WebEntry();