From cf39dbbf977977654d4d065629abc16066d62371 Mon Sep 17 00:00:00 2001 From: Luis Fernando Saisa Lopez Date: Thu, 22 Jan 2015 14:42:59 -0400 Subject: [PATCH 1/3] PM 934 "PMFPauseCase doesn't pause a case" SOLVED Code Issue: PMFPauseCase doesn't pause a case Solution: El trigger que se prentende ejecutar esta mal planteado, cuando se tiene un trigger en "After Routing" de una tarea el INDEX se debe incrementar puesto que al derivar la tarea el INDEX tiene otro valor se sugiere los siguientes ejemplos: 1.- @@FUTURE_DATE = date('Y-m-d', strtotime("+4 days")); @@RET_VAL = PMFPauseCase(@@APPLICATION, @%INDEX+1, @@USER_LOGGED, @@FUTURE_DATE); 2.- $delIndex = @%INDEX; $criteria = new Criteria("workflow"); $criteria->addSelectColumn(AppDelegationPeer::DEL_INDEX); $criteria->add(AppDelegationPeer::APP_UID, @@APPLICATION, Criteria::EQUAL); $criteria->add(AppDelegationPeer::DEL_LAST_INDEX, 1, Criteria::EQUAL); $rsCriteria = AppDelegationPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); if($rsCriteria->next()){ $row = $rsCriteria->getRow(); $delIndex = $row["DEL_INDEX"]; } @@FUTURE_DATE = date('Y-m-d', strtotime("+4 days")); @@RET_VAL = PMFPauseCase(@@APPLICATION, $delIndex, @@USER_LOGGED, @@FUTURE_DATE); --- workflow/engine/classes/class.case.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index b79ea1a1c..d235b845b 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -3874,8 +3874,12 @@ class Cases $oCriteria->add(AppThreadPeer::DEL_INDEX, $iDelegation); $oDataset = AppThreadPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $aRow = $oDataset->getRow(); + + if ($oDataset->next()) { + $aRow = $oDataset->getRow(); + } else { + return; + } //now create a row in APP_DELAY with type PAUSE $aData['PRO_UID'] = $aFields['PRO_UID']; From bae955bea6537ef4f7ad0f0811538d9de93de2fa Mon Sep 17 00:00:00 2001 From: Luis Fernando Saisa Lopez Date: Wed, 28 Jan 2015 17:03:18 -0400 Subject: [PATCH 2/3] PM-1384 "Los enlaces de Case Steps no tienen acciones..." SOLVED Issue: Los enlaces de Case Steps no tienen acciones, no se puede navegar por los diferentes pasos. Cause: El problema se debe a que se esta tratando de acceder mediante el DOM al iframe por un atributo que no esta definido (window.frames["openCaseFrame"].document), esto cuando es un DynaForm BPMN. Solution: Se esta utilizando otro acceso via DOM al iframe, preguntando si existe un atributo similar que si este definido (window.frames["openCaseFrame"].contentDocument, window.frames["openCaseFrame"].contentWindow.document). --- workflow/engine/templates/cases/open.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/workflow/engine/templates/cases/open.js b/workflow/engine/templates/cases/open.js index bc00723d5..8e640d494 100755 --- a/workflow/engine/templates/cases/open.js +++ b/workflow/engine/templates/cases/open.js @@ -244,13 +244,19 @@ Ext.onReady(function(){ var dynaformChange =""; var swDynaformChange = 0; - if (window.frames["openCaseFrame"].document.getElementsByTagName("form")) { - dynaformChange = window.frames["openCaseFrame"].document.getElementsByTagName("form").item(0); - swDynaformChange = (window.frames["openCaseFrame"].dynaFormChanged(dynaformChange))? 1 : 0; + var iframeDynaForm = (typeof(window.frames["openCaseFrame"].document) != "undefined")? window.frames["openCaseFrame"].document : ((typeof(window.frames["openCaseFrame"].contentDocument) != "undefined")? window.frames["openCaseFrame"].contentDocument : window.frames["openCaseFrame"].contentWindow.document); + + if (iframeDynaForm.getElementsByTagName("form")) { + dynaformChange = iframeDynaForm.getElementsByTagName("form").item(0); + + if (typeof(window.frames["openCaseFrame"].dynaFormChanged) == "function") { + swDynaformChange = (window.frames["openCaseFrame"].dynaFormChanged(dynaformChange))? 1 : 0; + } } - if (window.frames["openCaseFrame"].document.getElementById("DynaformRequiredFields")) { - requiredField = window.frames["openCaseFrame"].document.getElementById("DynaformRequiredFields").value; + if (iframeDynaForm.getElementById("DynaformRequiredFields")) { + requiredField = iframeDynaForm.getElementById("DynaformRequiredFields").value; + if (requiredField != "") { swRequiredField = (window.frames["openCaseFrame"].validateForm(requiredField))? 1 : 0; } @@ -268,7 +274,7 @@ Ext.onReady(function(){ loadMaskStep.show(); if (btn == "ok") { - var frm = window.frames["openCaseFrame"].document.getElementsByTagName("form"); + var frm = iframeDynaForm.getElementsByTagName("form"); if (frm.length > 0) { var result = window.frames["openCaseFrame"].ajax_post( From f3f56df12fa335828ae88d4120af9288d34ad818 Mon Sep 17 00:00:00 2001 From: Luis Fernando Saisa Lopez Date: Thu, 29 Jan 2015 09:44:16 -0400 Subject: [PATCH 3/3] PM 934 "PMFPauseCase doesn't pause a case" SOLVED --- workflow/engine/classes/class.case.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index 22900af3f..2c1e12df2 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -3879,7 +3879,7 @@ class Cases if ($oDataset->next()) { $aRow = $oDataset->getRow(); } else { - return; + throw new Exception(G::LoadTranslation("ID_CASE_STOPPED_TRIGGER")); } //now create a row in APP_DELAY with type PAUSE