From e5c79b6813477d422fddd535a7971564491274c4 Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Fri, 15 May 2015 12:30:09 -0400 Subject: [PATCH] PM-2685 "Error al importar y sobre-escribir un proceso que ya" SOLVED Issue: Error al importar y sobre-escribir un proceso que ya cuenta con casos (By Yanine's Team) Cause: Al tratar de sobre-escribir el proceso verifica si este tiene casos, en caso de tener casos lanza una excepcion Solution: - Se evita que lanze la excepcion - Los casos del proceso se mantienen --- .../src/ProcessMaker/Importer/Importer.php | 3 +- .../Project/Adapter/BpmnWorkflow.php | 6 ++-- .../src/ProcessMaker/Project/Workflow.php | 33 +++++++++++-------- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/Importer/Importer.php b/workflow/engine/src/ProcessMaker/Importer/Importer.php index a240f90cd..acfd02087 100755 --- a/workflow/engine/src/ProcessMaker/Importer/Importer.php +++ b/workflow/engine/src/ProcessMaker/Importer/Importer.php @@ -259,8 +259,7 @@ abstract class Importer public function removeProject() { $project = \ProcessMaker\Project\Adapter\BpmnWorkflow::load($this->metadata["uid"]); - $force = true; - $project->remove($force); + $project->remove(true, false); } /** diff --git a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php index a771b0488..1fb12390e 100755 --- a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php @@ -1038,10 +1038,10 @@ class BpmnWorkflow extends Project\Bpmn } } - public function remove($force = false) + public function remove($flagForceRemoveProject = false, $flagRemoveCases = true) { - parent::remove($force); - $this->wp->remove(); + parent::remove($flagForceRemoveProject); + $this->wp->remove($flagRemoveCases); } public static function createFromStruct(array $projectData, $generateUid = true) diff --git a/workflow/engine/src/ProcessMaker/Project/Workflow.php b/workflow/engine/src/ProcessMaker/Project/Workflow.php index e2c8a3eb9..d6118205e 100755 --- a/workflow/engine/src/ProcessMaker/Project/Workflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Workflow.php @@ -106,11 +106,11 @@ class Workflow extends Handler $process->update($data); } - public function remove() + public function remove($flagRemoveCases = true) { try { self::log("Remove Process with uid: {$this->proUid}"); - $this->deleteProcess($this->proUid); + $this->deleteProcess($this->proUid, $flagRemoveCases); self::log("Remove Process Success!"); } catch (\Exception $e) { self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString()); @@ -559,7 +559,7 @@ class Workflow extends Handler } } - public function deleteProcess($sProcessUID) + public function deleteProcess($sProcessUID, $flagRemoveCases = true) { try { //G::LoadClass('case'); @@ -580,17 +580,24 @@ class Workflow extends Handler $oReportTable = new \ReportTables(); $oCaseTracker = new \CaseTracker(); $oCaseTrackerObject = new \CaseTrackerObject(); - //Delete the applications of process - $oCriteria = new \Criteria('workflow'); - $oCriteria->add(\ApplicationPeer::PRO_UID, $sProcessUID); - $oDataset = \ApplicationPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $oCase = new \Cases(); - while ($aRow = $oDataset->getRow()) { - $oCase->removeCase($aRow['APP_UID']); - $oDataset->next(); + //Delete the applications of process + if ($flagRemoveCases) { + $case = new \Cases(); + + $criteria = new \Criteria("workflow"); + + $criteria->addSelectColumn(\ApplicationPeer::APP_UID); + $criteria->add(\ApplicationPeer::PRO_UID, $sProcessUID, \Criteria::EQUAL); + + $rsCriteria = \ApplicationPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + while ($rsCriteria->next()) { + $row = $rsCriteria->getRow(); + + $result = $case->removeCase($row["APP_UID"]); + } } //Delete the tasks of process