From 6e7eec75282808fe8f071ed4d6520b87369f4e93 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Thu, 28 Aug 2014 10:18:44 -0400 Subject: [PATCH 1/3] Fix bug 14245: Crear OutputDocuments en el nuevo Designer BPMN, cuando existe un OD con el mismo nombre en otro proceso --- .../ProcessMaker/BusinessModel/OutputDocument.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/OutputDocument.php b/workflow/engine/src/ProcessMaker/BusinessModel/OutputDocument.php index f6a38c298..60d83bf85 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/OutputDocument.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/OutputDocument.php @@ -392,18 +392,26 @@ class OutputDocument { try { $delimiter = \DBAdapter::getStringDelimiter(); + $criteria = new \Criteria("workflow"); + $criteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_UID); - $criteria->addAlias("CT", "CONTENT"); + + $criteria->addAlias("CT", \ContentPeer::TABLE_NAME); + $arrayCondition = array(); $arrayCondition[] = array(\OutputDocumentPeer::OUT_DOC_UID, "CT.CON_ID", \Criteria::EQUAL); $arrayCondition[] = array("CT.CON_CATEGORY", $delimiter . "OUT_DOC_TITLE" . $delimiter, \Criteria::EQUAL); $arrayCondition[] = array("CT.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL); $criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN); + $criteria->add(\OutputDocumentPeer::PRO_UID, $processUid, \Criteria::EQUAL); - $criteria->add(\ContentPeer::CON_VALUE, $title, \Criteria::EQUAL); + + + $criteria->add("CT.CON_VALUE", $title, \Criteria::EQUAL); + $rsCriteria = \OutputDocumentPeer::doSelectRS($criteria); - $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + if ($rsCriteria->next()) { return true; } else { From 4f852ab4e5833dee1594f4fc1072d2875e47a2bb Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Thu, 28 Aug 2014 12:35:17 -0400 Subject: [PATCH 2/3] Se valida sch_end_date que acepte valor nulo en CASE SCHEDULER --- .../BusinessModel/CaseScheduler.php | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php b/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php index 3bee930e5..45cf59f6b 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/CaseScheduler.php @@ -283,11 +283,6 @@ class CaseScheduler if (!preg_match($patternDate, $caseSchedulerData['SCH_START_DATE'])) { throw new \Exception(\G::LoadTranslation("ID_INVALID_SCH_START_DATE")); } - if (!isset($caseSchedulerData['SCH_END_DATE'])) { - if (!preg_match($patternDate, $caseSchedulerData['SCH_END_DATE'])) { - throw new \Exception(\G::LoadTranslation("ID_INVALID_SCH_END_DATE")); - } - } if ($caseSchedulerData['SCH_START_DATE'] == "") { throw new \Exception(\G::LoadTranslation("ID_CAN_NOT_BE_NULL", array('sch_start_date'))); } @@ -486,8 +481,10 @@ class CaseScheduler $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $date; } } - if (trim( $caseSchedulerData['SCH_END_DATE'] ) != '') { - $caseSchedulerData['SCH_END_DATE'] = $caseSchedulerData['SCH_END_DATE']; + if (! empty( $caseSchedulerData['SCH_REPEAT_TASK_CHK'] )) { + if (trim( $caseSchedulerData['SCH_END_DATE'] ) != '') { + $caseSchedulerData['SCH_END_DATE'] = $caseSchedulerData['SCH_END_DATE']; + } } if (! empty( $caseSchedulerData['SCH_REPEAT_TASK_CHK'] )) { $nOptEvery = $caseSchedulerData['SCH_REPEAT_EVERY_OPT']; @@ -569,11 +566,6 @@ class CaseScheduler if (!preg_match($patternDate, $caseSchedulerData['SCH_START_DATE'])) { throw new \Exception(\G::LoadTranslation("ID_INVALID_SCH_START_DATE")); } - if (isset($caseSchedulerData['SCH_END_DATE'])) { - if (!preg_match($patternDate, $caseSchedulerData['SCH_END_DATE'])) { - throw new \Exception(\G::LoadTranslation("ID_INVALID_SCH_END_DATE")); - } - } if ($caseSchedulerData['SCH_START_DATE'] == "") { throw new \Exception(\G::LoadTranslation("ID_CAN_NOT_BE_NULL", array('sch_start_date'))); } @@ -780,8 +772,10 @@ class CaseScheduler $caseSchedulerData['SCH_TIME_NEXT_RUN'] = $date; } } - if (trim( $caseSchedulerData['SCH_END_DATE'] ) != '') { - $caseSchedulerData['SCH_END_DATE'] = $caseSchedulerData['SCH_END_DATE']; + if (! empty( $caseSchedulerData['SCH_REPEAT_TASK_CHK'] )) { + if (trim( $caseSchedulerData['SCH_END_DATE'] ) != '') { + $caseSchedulerData['SCH_END_DATE'] = $caseSchedulerData['SCH_END_DATE']; + } } if (! empty( $caseSchedulerData['SCH_REPEAT_TASK_CHK'] )) { $nOptEvery = $caseSchedulerData['SCH_REPEAT_EVERY_OPT']; From ab41c74d4b397ea7159dc90aaca6a7b165386b76 Mon Sep 17 00:00:00 2001 From: eriknyk Date: Thu, 28 Aug 2014 15:55:40 -0400 Subject: [PATCH 3/3] Implementing Propel::getDbConnection('workflow_ro') for Cases Lists, when a connection named "workflow_ro" exists It was thought for load balancing databases environment --- workflow/engine/classes/class.applications.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/engine/classes/class.applications.php b/workflow/engine/classes/class.applications.php index 7680c9e4a..93702e54b 100755 --- a/workflow/engine/classes/class.applications.php +++ b/workflow/engine/classes/class.applications.php @@ -501,7 +501,7 @@ class Applications $Criteria->setOffset( $start ); //execute the query - $oDataset = AppCacheViewPeer::doSelectRS( $Criteria ); + $oDataset = AppCacheViewPeer::doSelectRS( $Criteria, Propel::getDbConnection('workflow_ro') ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );