From 5fa88630ee0b56a3e3bb1b694815db67d5b26eba Mon Sep 17 00:00:00 2001 From: "marcelo.cuiza" Date: Fri, 6 Feb 2015 14:35:44 -0400 Subject: [PATCH 01/13] PM-1492 Las condiciones no funcionan correctamente, si es que no estan dentro de parentesis (). Se encapsulo en parentesis toda condicion dada. --- workflow/engine/classes/class.derivation.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index 9c3328886..88416c60d 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -194,7 +194,7 @@ class Derivation $pmScript = new PMScript(); $pmScript->setFields($arrayApplicationData["APP_DATA"]); - $pmScript->setScript($arrayRouteData["ROU_CONDITION"]); + $pmScript->setScript("( ".$arrayRouteData["ROU_CONDITION"]." )"); $flagContinue = $pmScript->evaluate(); } From a6fde3c2d57de712de4148f5c2d1edf03600f787 Mon Sep 17 00:00:00 2001 From: "marcelo.cuiza" Date: Thu, 19 Feb 2015 12:40:19 -0400 Subject: [PATCH 02/13] PM-1492 Las condiciones no funcionan correctamente, si es que no estan dentro de parentesis (). Se encapsulo en parentesis toda condicion dada que contenga un operador logico. --- workflow/engine/classes/class.derivation.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index 88416c60d..1aba0e0fc 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -194,7 +194,12 @@ class Derivation $pmScript = new PMScript(); $pmScript->setFields($arrayApplicationData["APP_DATA"]); - $pmScript->setScript("( ".$arrayRouteData["ROU_CONDITION"]." )"); + $condition = strtoupper($arrayRouteData["ROU_CONDITION"]); + if(strpos($condition,"AND") || strpos($condition,"OR") || strpos($condition,"XOR")) { + $pmScript->setScript("( ".$arrayRouteData["ROU_CONDITION"]." )"); + } else { + $pmScript->setScript($arrayRouteData["ROU_CONDITION"]); + } $flagContinue = $pmScript->evaluate(); } From a596e2d668534a75afef99a74734da317cf6214a Mon Sep 17 00:00:00 2001 From: dheeyi Date: Thu, 19 Feb 2015 13:11:01 -0400 Subject: [PATCH 03/13] PM-1583A Audit Log para Routing Rules, Start Event, End Event. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Causa: Solo se tiene un auditLog para la seccion ADMIN. SolucióSe utiliza el metodo auditLog(), misma que es utilizado en la seccion ADMIN, mas especificamente se crea un auditlog para la seccion "Routing Rules" del Diseñr. --- .../engine/methods/patterns/patterns_Ajax.php | 132 ++++++++++++++---- .../methods/processes/processes_Ajax.php | 78 ++++++++++- workflow/engine/methods/tasks/tasks_Ajax.php | 5 +- 3 files changed, 188 insertions(+), 27 deletions(-) diff --git a/workflow/engine/methods/patterns/patterns_Ajax.php b/workflow/engine/methods/patterns/patterns_Ajax.php index a4dd11346..e30d1828d 100755 --- a/workflow/engine/methods/patterns/patterns_Ajax.php +++ b/workflow/engine/methods/patterns/patterns_Ajax.php @@ -34,31 +34,35 @@ $oTasks = new Tasks(); $rou_id = 0; switch ($aData['action']) { case 'savePattern': - //if ($aData['ROU_TYPE'] != $aData['ROU_TYPE_OLD']) - //{ + //if ($aData['ROU_TYPE'] != $aData['ROU_TYPE_OLD']) + //{ $oTasks->deleteAllRoutesOfTask( $aData['PROCESS'], $aData['TASK'] ); - //} + //} require_once 'classes/model/Route.php'; $oRoute = new Route(); switch ($aData['ROU_TYPE']) { case 'SEQUENTIAL': - case 'SEC-JOIN': - /*if ($aData['ROU_UID'] != '') - { - $aFields['ROU_UID'] = $aData['ROU_UID']; - }*/ + case 'SEC-JOIN': + /*if ($aData['ROU_UID'] != '') + { + $aFields['ROU_UID'] = $aData['ROU_UID']; + }*/ $aFields['PRO_UID'] = $aData['PROCESS']; $aFields['TAS_UID'] = $aData['TASK']; $aFields['ROU_NEXT_TASK'] = $aData['ROU_NEXT_TASK']; $aFields['ROU_TYPE'] = $aData['ROU_TYPE']; - //$aFields['ROU_TO_LAST_USER'] = $aData['ROU_TO_LAST_USER']; + //$aFields['ROU_TO_LAST_USER'] = $aData['ROU_TO_LAST_USER']; $rou_id = $oRoute->create( $aFields ); break; case 'SELECT': + $tasksAffected=''; + $oTaskSavePattern = new Task(); + $oTaskSavePattern->load($aData['TASK']); + $titleTask=$oTaskSavePattern->getTasTitle(); foreach ($aData['GRID_SELECT_TYPE'] as $iKey => $aRow) { - /*if ($aRow['ROU_UID'] != '') - { - $aFields['ROU_UID'] = $aRow['ROU_UID']; + /*if ($aRow['ROU_UID'] != '') + { + $aFields['ROU_UID'] = $aRow['ROU_UID']; }*/ $aFields['PRO_UID'] = $aData['PROCESS']; $aFields['TAS_UID'] = $aData['TASK']; @@ -66,16 +70,40 @@ switch ($aData['action']) { $aFields['ROU_CASE'] = $iKey; $aFields['ROU_TYPE'] = $aData['ROU_TYPE']; $aFields['ROU_CONDITION'] = $aRow['ROU_CONDITION']; - //$aFields['ROU_TO_LAST_USER'] = $aRow['ROU_TO_LAST_USER']; + //$aFields['ROU_TO_LAST_USER'] = $aRow['ROU_TO_LAST_USER']; $rou_id = $oRoute->create( $aFields ); + if ($aRow['ROU_NEXT_TASK']=='-1') { + if ($aRow['ROU_CONDITION']=='') { + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End Of Procces Condition -> Empty; '; + }else{ + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End Of Procces Condition -> '.$aFields['ROU_CONDITION'].' ; '; + } + }else{ + $oTaskSaveNextPattern = new Task(); + $oTaskSaveNextPattern->load($aRow['ROU_NEXT_TASK']); + $titleNextTask=$oTaskSaveNextPattern->getTasTitle(); + if ($aRow['ROU_CONDITION']=='') { + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To -> '.$titleNextTask.' : '.$aRow['ROU_NEXT_TASK'].' Condition -> Empty ; '; + }else{ + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To -> '.$titleNextTask.' : '.$aRow['ROU_NEXT_TASK'].' Condition -> '.$aFields['ROU_CONDITION'].' ; '; + } + } unset( $aFields ); } + $oProcessNewPattern = new Process(); + $oProcessNewPattern->load($aData['PROCESS']); + $titleProcess=$oProcessNewPattern->getProTitle(); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Routing rule : '.$aData['ROU_TYPE'].' Change Routing Rule From : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); break; case 'EVALUATE': + $tasksAffected=''; + $oTaskSavePattern = new Task(); + $oTaskSavePattern->load($aData['TASK']); + $titleTask=$oTaskSavePattern->getTasTitle(); foreach ($aData['GRID_EVALUATE_TYPE'] as $iKey => $aRow) { - /*if ($aRow['ROU_UID'] != '') - { - $aFields['ROU_UID'] = $aRow['ROU_UID']; + /*if ($aRow['ROU_UID'] != '') + { + $aFields['ROU_UID'] = $aRow['ROU_UID']; }*/ $aFields['PRO_UID'] = $aData['PROCESS']; $aFields['TAS_UID'] = $aData['TASK']; @@ -83,16 +111,40 @@ switch ($aData['action']) { $aFields['ROU_CASE'] = $iKey; $aFields['ROU_TYPE'] = $aData['ROU_TYPE']; $aFields['ROU_CONDITION'] = $aRow['ROU_CONDITION']; - //$aFields['ROU_TO_LAST_USER'] = $aRow['ROU_TO_LAST_USER']; + //$aFields['ROU_TO_LAST_USER'] = $aRow['ROU_TO_LAST_USER']; $rou_id = $oRoute->create( $aFields ); + if ($aRow['ROU_NEXT_TASK']=='-1') { + if ($aRow['ROU_CONDITION']=='') { + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End OfProcces Condition -> Empty; '; + }else{ + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End Of Procces Condition -> '.$aFields['ROU_CONDITION'].' ; '; + } + }else{ + $oTaskSaveNextPattern = new Task(); + $oTaskSaveNextPattern->load($aRow['ROU_NEXT_TASK']); + $titleNextTask=$oTaskSaveNextPattern->getTasTitle(); + if ($aRow['ROU_CONDITION']=='') { + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To -> '.$titleNextTask.' : '.$aRow['ROU_NEXT_TASK'].' Condition -> Empty ; '; + }else{ + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To -> '.$titleNextTask.' : '.$aRow['ROU_NEXT_TASK'].' Condition -> '.$aFields['ROU_CONDITION'].' ; '; + } + } unset( $aFields ); } + $oProcessNewPattern = new Process(); + $oProcessNewPattern->load($aData['PROCESS']); + $titleProcess=$oProcessNewPattern->getProTitle(); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Routing rule : '.$aData['ROU_TYPE'].' Change Routing Rule From : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); break; case 'PARALLEL': + $tasksAffected=''; + $oTaskSavePattern = new Task(); + $oTaskSavePattern->load($aData['TASK']); + $titleTask=$oTaskSavePattern->getTasTitle(); foreach ($aData['GRID_PARALLEL_TYPE'] as $iKey => $aRow) { - /*if ($aRow['ROU_UID'] != '') - { - $aFields['ROU_UID'] = $aRow['ROU_UID']; + /*if ($aRow['ROU_UID'] != '') + { + $aFields['ROU_UID'] = $aRow['ROU_UID']; }*/ $aFields['PRO_UID'] = $aData['PROCESS']; $aFields['TAS_UID'] = $aData['TASK']; @@ -100,14 +152,26 @@ switch ($aData['action']) { $aFields['ROU_CASE'] = $iKey; $aFields['ROU_TYPE'] = $aData['ROU_TYPE']; $rou_id = $oRoute->create( $aFields ); + $oTaskSaveNextPattern = new Task(); + $oTaskSaveNextPattern->load($aRow['ROU_NEXT_TASK']); + $titleNextTask=$oTaskSaveNextPattern->getTasTitle(); + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To -> '.$titleNextTask.' : '.$aRow['ROU_NEXT_TASK'].' ; '; unset( $aFields ); } + $oProcessNewPattern = new Process(); + $oProcessNewPattern->load($aData['PROCESS']); + $titleProcess=$oProcessNewPattern->getProTitle(); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Routing rule : '.$aData['ROU_TYPE'].' Change Routing Rule From : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); break; case 'PARALLEL-BY-EVALUATION': + $tasksAffected=''; + $oTaskSavePattern = new Task(); + $oTaskSavePattern->load($aData['TASK']); + $titleTask=$oTaskSavePattern->getTasTitle(); foreach ($aData['GRID_PARALLEL_EVALUATION_TYPE'] as $iKey => $aRow) { - /*if ($aRow['ROU_UID'] != '') - { - $aFields['ROU_UID'] = $aRow['ROU_UID']; + /*if ($aRow['ROU_UID'] != '') + { + $aFields['ROU_UID'] = $aRow['ROU_UID']; }*/ $aFields['PRO_UID'] = $aData['PROCESS']; @@ -119,10 +183,30 @@ switch ($aData['action']) { if (isset( $aRow['ROU_OPTIONAL'] ) && trim( $aRow['ROU_OPTIONAL'] ) != '' && ($aRow['ROU_OPTIONAL'] === 'TRUE' || $aRow['ROU_OPTIONAL'] === 'FALSE')) $aFields['ROU_OPTIONAL'] = $aRow['ROU_OPTIONAL']; $rou_id = $oRoute->create( $aFields ); + if ($aRow['ROU_NEXT_TASK']=='-1') { + if ($aRow['ROU_CONDITION']=='') { + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End Of Procces Condition -> Empty; '; + }else{ + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End Of Procces Condition -> '.$aFields['ROU_CONDITION'].' ; '; + } + }else{ + $oTaskSaveNextPattern = new Task(); + $oTaskSaveNextPattern->load($aRow['ROU_NEXT_TASK']); + $titleNextTask=$oTaskSaveNextPattern->getTasTitle(); + if ($aRow['ROU_CONDITION']=='') { + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To -> '.$titleNextTask.' : '.$aRow['ROU_NEXT_TASK'].' Condition -> Empty ; '; + }else{ + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To -> '.$titleNextTask.' : '.$aRow['ROU_NEXT_TASK'].' Condition -> '.$aFields['ROU_CONDITION'].' ; '; + } + } unset( $aFields ); } + $oProcessNewPattern = new Process(); + $oProcessNewPattern->load($aData['PROCESS']); + $titleProcess=$oProcessNewPattern->getProTitle(); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Routing rule : '.$aData['ROU_TYPE'].' Change Routing Rule From : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); break; - case 'DISCRIMINATOR': //Girish ->Added to save changes, while editing the route + case 'DISCRIMINATOR': //Girish ->Added to save changes, while editing the route foreach ($aData['GRID_DISCRIMINATOR_TYPE'] as $iKey => $aRow) { $aFields['PRO_UID'] = $aData['PROCESS']; $aFields['TAS_UID'] = $aData['TASK']; diff --git a/workflow/engine/methods/processes/processes_Ajax.php b/workflow/engine/methods/processes/processes_Ajax.php index 13f9324d2..4dd5e2745 100755 --- a/workflow/engine/methods/processes/processes_Ajax.php +++ b/workflow/engine/methods/processes/processes_Ajax.php @@ -341,7 +341,7 @@ try { } else { switch ($oData->type) { case 0: - $oData->type = 'SEQUENTIAL'; + $oData->type = 'SEQUENTIAL'; break; case 1: $oData->type = 'SELECT'; @@ -359,7 +359,7 @@ try { $oData->type = 'SEC-JOIN'; break; case 8: - $oData->type = 'DISCRIMINATOR'; + $oData->type = 'DISCRIMINATOR'; break; } $oProcessMap->newPattern($oData->pro_uid, $oData->tas_uid, $oData->next_task, $oData->type); @@ -369,24 +369,98 @@ try { switch ($oData->type) { case 0: $sType = 'SEQUENTIAL'; + $oProcessNewPattern = new Process(); + $oProcessNewPattern->load($oData->pro_uid); + $titleProcess=$oProcessNewPattern->getProTitle(); + $oTaskNewPattern = new Task(); + $oTaskNewPattern->load($oData->tas_uid); + $titleTask=$oTaskNewPattern->getTasTitle(); + $oTaskNextNewPattern = new Task(); + $oTaskNextNewPattern->load($oData->next_task); + $titleNextTask=$oTaskNextNewPattern->getTasTitle(); + if ($titleNextTask=='') { + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' ACTION : END OF PROCESS Task Name -> '.$titleTask.' : '.$oData->tas_uid); + }else{ + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' ACTION : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); + } break; case 1: $sType = 'SELECT'; + $oProcessNewPattern = new Process(); + $oProcessNewPattern->load($oData->pro_uid); + $titleProcess=$oProcessNewPattern->getProTitle(); + $oTaskNewPattern = new Task(); + $oTaskNewPattern->load($oData->tas_uid); + $titleTask=$oTaskNewPattern->getTasTitle(); + $oTaskNextNewPattern = new Task(); + $oTaskNextNewPattern->load($oData->next_task); + $titleNextTask=$oTaskNextNewPattern->getTasTitle(); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' ACTION : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; case 2: $sType = 'EVALUATE'; + $oProcessNewPattern = new Process(); + $oProcessNewPattern->load($oData->pro_uid); + $titleProcess=$oProcessNewPattern->getProTitle(); + $oTaskNewPattern = new Task(); + $oTaskNewPattern->load($oData->tas_uid); + $titleTask=$oTaskNewPattern->getTasTitle(); + $oTaskNextNewPattern = new Task(); + $oTaskNextNewPattern->load($oData->next_task); + $titleNextTask=$oTaskNextNewPattern->getTasTitle(); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' ACTION : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; case 3: $sType = 'PARALLEL'; + $oProcessNewPattern = new Process(); + $oProcessNewPattern->load($oData->pro_uid); + $titleProcess=$oProcessNewPattern->getProTitle(); + $oTaskNewPattern = new Task(); + $oTaskNewPattern->load($oData->tas_uid); + $titleTask=$oTaskNewPattern->getTasTitle(); + $oTaskNextNewPattern = new Task(); + $oTaskNextNewPattern->load($oData->next_task); + $titleNextTask=$oTaskNextNewPattern->getTasTitle(); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' ACTION : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; case 4: $sType = 'PARALLEL-BY-EVALUATION'; + $oProcessNewPattern = new Process(); + $oProcessNewPattern->load($oData->pro_uid); + $titleProcess=$oProcessNewPattern->getProTitle(); + $oTaskNewPattern = new Task(); + $oTaskNewPattern->load($oData->tas_uid); + $titleTask=$oTaskNewPattern->getTasTitle(); + $oTaskNextNewPattern = new Task(); + $oTaskNextNewPattern->load($oData->next_task); + $titleNextTask=$oTaskNextNewPattern->getTasTitle(); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' ACTION : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; case 5: $sType = 'SEC-JOIN'; + $oProcessNewPattern = new Process(); + $oProcessNewPattern->load($oData->pro_uid); + $titleProcess=$oProcessNewPattern->getProTitle(); + $oTaskNewPattern = new Task(); + $oTaskNewPattern->load($oData->tas_uid); + $titleTask=$oTaskNewPattern->getTasTitle(); + $oTaskNextNewPattern = new Task(); + $oTaskNextNewPattern->load($oData->next_task); + $titleNextTask=$oTaskNextNewPattern->getTasTitle(); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' ACTION : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; case 8: $sType = 'DISCRIMINATOR'; + $oProcessNewPattern = new Process(); + $oProcessNewPattern->load($oData->pro_uid); + $titleProcess=$oProcessNewPattern->getProTitle(); + $oTaskNewPattern = new Task(); + $oTaskNewPattern->load($oData->tas_uid); + $titleTask=$oTaskNewPattern->getTasTitle(); + $oTaskNextNewPattern = new Task(); + $oTaskNextNewPattern->load($oData->next_task); + $titleNextTask=$oTaskNextNewPattern->getTasTitle(); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' ACTION : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; } if (($oData->type != 0) && ($oData->type != 5) && ($oData->type != 8)) { diff --git a/workflow/engine/methods/tasks/tasks_Ajax.php b/workflow/engine/methods/tasks/tasks_Ajax.php index 1215d5410..1b39b1883 100755 --- a/workflow/engine/methods/tasks/tasks_Ajax.php +++ b/workflow/engine/methods/tasks/tasks_Ajax.php @@ -117,7 +117,10 @@ try { } $result = $oTask->update( $aData ); - + $oTaskNewPattern = new Task(); + $oTaskNewPattern->load($aData['TAS_UID']); + $titleTask=$oTaskNewPattern->getTasTitle(); + G::auditLog("DerivationRule","ASSIGN STARTING TASK : Task Name -> ".$titleTask.' : '.$aData['TAS_UID']); $response["status"] = "OK"; if ($result == 3) { From 78149eab86f0ed1365b71e6cf8e08b0e49c1a16b Mon Sep 17 00:00:00 2001 From: dheeyi Date: Thu, 19 Feb 2015 13:23:18 -0400 Subject: [PATCH 04/13] PM-1583A Audit Log para Routing Rules, Start Event, End Event. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Causa: Solo se tiene un auditLog para la seccion ADMIN. SolucióSe utiliza el metodo auditLog(), misma que es utilizado en la seccion ADMIN, mas especificamente se crea un auditlog para la seccion "Routing Rules" del Diseñr. --- .../engine/methods/patterns/patterns_Ajax.php | 8 ++++---- .../engine/methods/processes/processes_Ajax.php | 16 ++++++++-------- workflow/engine/methods/tasks/tasks_Ajax.php | 4 +++- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/workflow/engine/methods/patterns/patterns_Ajax.php b/workflow/engine/methods/patterns/patterns_Ajax.php index e30d1828d..d0ce46ddf 100755 --- a/workflow/engine/methods/patterns/patterns_Ajax.php +++ b/workflow/engine/methods/patterns/patterns_Ajax.php @@ -93,7 +93,7 @@ switch ($aData['action']) { $oProcessNewPattern = new Process(); $oProcessNewPattern->load($aData['PROCESS']); $titleProcess=$oProcessNewPattern->getProTitle(); - G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Routing rule : '.$aData['ROU_TYPE'].' Change Routing Rule From : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Change Routing Rule From : '.$aData['ROU_TYPE'].' Change Routing Rule From : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); break; case 'EVALUATE': $tasksAffected=''; @@ -134,7 +134,7 @@ switch ($aData['action']) { $oProcessNewPattern = new Process(); $oProcessNewPattern->load($aData['PROCESS']); $titleProcess=$oProcessNewPattern->getProTitle(); - G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Routing rule : '.$aData['ROU_TYPE'].' Change Routing Rule From : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Change Routing Rule From : '.$aData['ROU_TYPE'].' Change Routing Rule From : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); break; case 'PARALLEL': $tasksAffected=''; @@ -161,7 +161,7 @@ switch ($aData['action']) { $oProcessNewPattern = new Process(); $oProcessNewPattern->load($aData['PROCESS']); $titleProcess=$oProcessNewPattern->getProTitle(); - G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Routing rule : '.$aData['ROU_TYPE'].' Change Routing Rule From : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Change Routing Rule From : '.$aData['ROU_TYPE'].' Change Routing Rule From : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); break; case 'PARALLEL-BY-EVALUATION': $tasksAffected=''; @@ -204,7 +204,7 @@ switch ($aData['action']) { $oProcessNewPattern = new Process(); $oProcessNewPattern->load($aData['PROCESS']); $titleProcess=$oProcessNewPattern->getProTitle(); - G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Routing rule : '.$aData['ROU_TYPE'].' Change Routing Rule From : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Change Routing Rule From : '.$aData['ROU_TYPE'].' Change Routing Rule From : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); break; case 'DISCRIMINATOR': //Girish ->Added to save changes, while editing the route foreach ($aData['GRID_DISCRIMINATOR_TYPE'] as $iKey => $aRow) { diff --git a/workflow/engine/methods/processes/processes_Ajax.php b/workflow/engine/methods/processes/processes_Ajax.php index 4dd5e2745..aef1818c0 100755 --- a/workflow/engine/methods/processes/processes_Ajax.php +++ b/workflow/engine/methods/processes/processes_Ajax.php @@ -379,9 +379,9 @@ try { $oTaskNextNewPattern->load($oData->next_task); $titleNextTask=$oTaskNextNewPattern->getTasTitle(); if ($titleNextTask=='') { - G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' ACTION : END OF PROCESS Task Name -> '.$titleTask.' : '.$oData->tas_uid); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' Routing rule : END OF PROCESS Task Name -> '.$titleTask.' : '.$oData->tas_uid); }else{ - G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' ACTION : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' Routing rule : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); } break; case 1: @@ -395,7 +395,7 @@ try { $oTaskNextNewPattern = new Task(); $oTaskNextNewPattern->load($oData->next_task); $titleNextTask=$oTaskNextNewPattern->getTasTitle(); - G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' ACTION : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' Routing rule : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; case 2: $sType = 'EVALUATE'; @@ -408,7 +408,7 @@ try { $oTaskNextNewPattern = new Task(); $oTaskNextNewPattern->load($oData->next_task); $titleNextTask=$oTaskNextNewPattern->getTasTitle(); - G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' ACTION : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' Routing rule : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; case 3: $sType = 'PARALLEL'; @@ -421,7 +421,7 @@ try { $oTaskNextNewPattern = new Task(); $oTaskNextNewPattern->load($oData->next_task); $titleNextTask=$oTaskNextNewPattern->getTasTitle(); - G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' ACTION : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' Routing rule : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; case 4: $sType = 'PARALLEL-BY-EVALUATION'; @@ -434,7 +434,7 @@ try { $oTaskNextNewPattern = new Task(); $oTaskNextNewPattern->load($oData->next_task); $titleNextTask=$oTaskNextNewPattern->getTasTitle(); - G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' ACTION : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' Routing rule : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; case 5: $sType = 'SEC-JOIN'; @@ -447,7 +447,7 @@ try { $oTaskNextNewPattern = new Task(); $oTaskNextNewPattern->load($oData->next_task); $titleNextTask=$oTaskNextNewPattern->getTasTitle(); - G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' ACTION : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' Routing rule : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; case 8: $sType = 'DISCRIMINATOR'; @@ -460,7 +460,7 @@ try { $oTaskNextNewPattern = new Task(); $oTaskNextNewPattern->load($oData->next_task); $titleNextTask=$oTaskNextNewPattern->getTasTitle(); - G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' ACTION : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' Routing rule : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; } if (($oData->type != 0) && ($oData->type != 5) && ($oData->type != 8)) { diff --git a/workflow/engine/methods/tasks/tasks_Ajax.php b/workflow/engine/methods/tasks/tasks_Ajax.php index 1b39b1883..55802e969 100755 --- a/workflow/engine/methods/tasks/tasks_Ajax.php +++ b/workflow/engine/methods/tasks/tasks_Ajax.php @@ -120,7 +120,9 @@ try { $oTaskNewPattern = new Task(); $oTaskNewPattern->load($aData['TAS_UID']); $titleTask=$oTaskNewPattern->getTasTitle(); - G::auditLog("DerivationRule","ASSIGN STARTING TASK : Task Name -> ".$titleTask.' : '.$aData['TAS_UID']); + if (count($aData)==5) { + G::auditLog("DerivationRule",'ASSIGN STARTING TASK : Task Name -> '.$titleTask.' : '.$aData['TAS_UID']); + } $response["status"] = "OK"; if ($result == 3) { From 5d349a03787895aee2924a9fe56f46ae0f243d78 Mon Sep 17 00:00:00 2001 From: Brayan Pereyra Date: Thu, 19 Feb 2015 14:22:29 -0400 Subject: [PATCH 05/13] Default flow se asigna despues de las demas condiciones --- workflow/engine/classes/class.derivation.php | 1 + 1 file changed, 1 insertion(+) diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index 4950006a9..794ab8742 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -182,6 +182,7 @@ class Derivation if ((int)($arrayRouteData["ROU_DEFAULT"]) == 1) { $arrayNextTaskDefault = $arrayRouteData; + continue; } $flagContinue = true; From 805634a5d04104e0f54f9274333b17d7c7de28f0 Mon Sep 17 00:00:00 2001 From: "Paula V. Quispe" Date: Thu, 19 Feb 2015 14:31:48 -0400 Subject: [PATCH 06/13] I solved the issue PM-1519 --- workflow/engine/classes/class.derivation.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index 4950006a9..adae6cc68 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -830,8 +830,16 @@ class Derivation foreach ($aFields as $sOriginField => $sTargetField) { $sOriginField = str_replace( '@', '', $sOriginField ); $sOriginField = str_replace( '#', '', $sOriginField ); + $sOriginField = str_replace( '%', '', $sOriginField ); + $sOriginField = str_replace( '?', '', $sOriginField ); + $sOriginField = str_replace( '$', '', $sOriginField ); + $sOriginField = str_replace( '=', '', $sOriginField ); $sTargetField = str_replace( '@', '', $sTargetField ); $sTargetField = str_replace( '#', '', $sTargetField ); + $sTargetField = str_replace( '%', '', $sTargetField ); + $sTargetField = str_replace( '?', '', $sTargetField ); + $sTargetField = str_replace( '$', '', $sTargetField ); + $sTargetField = str_replace( '=', '', $sTargetField ); $aNewFields[$sTargetField] = isset( $appFields['APP_DATA'][$sOriginField] ) ? $appFields['APP_DATA'][$sOriginField] : ''; } @@ -917,8 +925,16 @@ class Derivation foreach ($aFields as $sOriginField => $sTargetField) { $sOriginField = str_replace( '@', '', $sOriginField ); $sOriginField = str_replace( '#', '', $sOriginField ); + $sOriginField = str_replace( '%', '', $sOriginField ); + $sOriginField = str_replace( '?', '', $sOriginField ); + $sOriginField = str_replace( '$', '', $sOriginField ); + $sOriginField = str_replace( '=', '', $sOriginField ); $sTargetField = str_replace( '@', '', $sTargetField ); $sTargetField = str_replace( '#', '', $sTargetField ); + $sTargetField = str_replace( '%', '', $sTargetField ); + $sTargetField = str_replace( '?', '', $sTargetField ); + $sTargetField = str_replace( '$', '', $sTargetField ); + $sTargetField = str_replace( '=', '', $sTargetField ); $aNewFields[$sTargetField] = isset( $appFields['APP_DATA'][$sOriginField] ) ? $appFields['APP_DATA'][$sOriginField] : ''; } $aParentCase['APP_DATA'] = array_merge( $aParentCase['APP_DATA'], $aNewFields ); From 647e754200423bb5c03c34dd514796ecb5b74298 Mon Sep 17 00:00:00 2001 From: "marcelo.cuiza" Date: Thu, 19 Feb 2015 14:39:17 -0400 Subject: [PATCH 07/13] PM-1492 Las condiciones no funcionan correctamente, si es que no estan dentro de parentesis (). Se encapsulo en parentesis toda condicion dada que contenga un operador logico --- workflow/engine/classes/class.derivation.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index 1aba0e0fc..d8c49c54b 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -194,8 +194,7 @@ class Derivation $pmScript = new PMScript(); $pmScript->setFields($arrayApplicationData["APP_DATA"]); - $condition = strtoupper($arrayRouteData["ROU_CONDITION"]); - if(strpos($condition,"AND") || strpos($condition,"OR") || strpos($condition,"XOR")) { + if(preg_match('/\b(or|and|xor)\b/i' , $arrayRouteData["ROU_CONDITION"])) { $pmScript->setScript("( ".$arrayRouteData["ROU_CONDITION"]." )"); } else { $pmScript->setScript($arrayRouteData["ROU_CONDITION"]); From bf6b5af99473b87b9efc84be5cc4e31116de6649 Mon Sep 17 00:00:00 2001 From: dheeyi Date: Thu, 19 Feb 2015 14:49:07 -0400 Subject: [PATCH 08/13] PM-1583A Audit Log para Routing Rules, Start Event, End Event. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Causa: Solo se tiene un auditLog para la seccion ADMIN. SolucióSe utiliza el metodo auditLog(), misma que es utilizado en la seccion ADMIN, mas especificamente se crea un auditlog para la seccion "Routing Rules" del Diseñr. --- .../engine/methods/patterns/patterns_Ajax.php | 68 +++++++-------- .../methods/processes/processes_Ajax.php | 86 +++++++++---------- workflow/engine/methods/tasks/tasks_Ajax.php | 12 ++- 3 files changed, 84 insertions(+), 82 deletions(-) diff --git a/workflow/engine/methods/patterns/patterns_Ajax.php b/workflow/engine/methods/patterns/patterns_Ajax.php index d0ce46ddf..3bef04210 100755 --- a/workflow/engine/methods/patterns/patterns_Ajax.php +++ b/workflow/engine/methods/patterns/patterns_Ajax.php @@ -57,8 +57,8 @@ switch ($aData['action']) { case 'SELECT': $tasksAffected=''; $oTaskSavePattern = new Task(); - $oTaskSavePattern->load($aData['TASK']); - $titleTask=$oTaskSavePattern->getTasTitle(); + $taskInfo=$oTaskSavePattern->load($aData['TASK']); + $titleTask=$taskInfo['TAS_TITLE']; foreach ($aData['GRID_SELECT_TYPE'] as $iKey => $aRow) { /*if ($aRow['ROU_UID'] != '') { @@ -74,14 +74,14 @@ switch ($aData['action']) { $rou_id = $oRoute->create( $aFields ); if ($aRow['ROU_NEXT_TASK']=='-1') { if ($aRow['ROU_CONDITION']=='') { - $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End Of Procces Condition -> Empty; '; + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End Of Process Condition -> Empty; '; }else{ - $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End Of Procces Condition -> '.$aFields['ROU_CONDITION'].' ; '; + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End Of Process Condition -> '.$aFields['ROU_CONDITION'].' ; '; } }else{ $oTaskSaveNextPattern = new Task(); - $oTaskSaveNextPattern->load($aRow['ROU_NEXT_TASK']); - $titleNextTask=$oTaskSaveNextPattern->getTasTitle(); + $taskNextInfo=$oTaskSaveNextPattern->load($aRow['ROU_NEXT_TASK']); + $titleNextTask=$taskNextInfo['TAS_TITLE']; if ($aRow['ROU_CONDITION']=='') { $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To -> '.$titleNextTask.' : '.$aRow['ROU_NEXT_TASK'].' Condition -> Empty ; '; }else{ @@ -91,15 +91,15 @@ switch ($aData['action']) { unset( $aFields ); } $oProcessNewPattern = new Process(); - $oProcessNewPattern->load($aData['PROCESS']); - $titleProcess=$oProcessNewPattern->getProTitle(); - G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Change Routing Rule From : '.$aData['ROU_TYPE'].' Change Routing Rule From : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); + $processInfo = $oProcessNewPattern->load($aData['PROCESS']); + $titleProcess = $processInfo['PRO_TITLE']; + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Change Routing Rule From : '.$aData['ROU_TYPE'].' Details : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); break; case 'EVALUATE': $tasksAffected=''; $oTaskSavePattern = new Task(); - $oTaskSavePattern->load($aData['TASK']); - $titleTask=$oTaskSavePattern->getTasTitle(); + $taskInfo=$oTaskSavePattern->load($aData['TASK']); + $titleTask=$taskInfo['TAS_TITLE']; foreach ($aData['GRID_EVALUATE_TYPE'] as $iKey => $aRow) { /*if ($aRow['ROU_UID'] != '') { @@ -115,14 +115,14 @@ switch ($aData['action']) { $rou_id = $oRoute->create( $aFields ); if ($aRow['ROU_NEXT_TASK']=='-1') { if ($aRow['ROU_CONDITION']=='') { - $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End OfProcces Condition -> Empty; '; + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End Of Process Condition -> Empty; '; }else{ - $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End Of Procces Condition -> '.$aFields['ROU_CONDITION'].' ; '; + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End Of Process Condition -> '.$aFields['ROU_CONDITION'].' ; '; } }else{ $oTaskSaveNextPattern = new Task(); - $oTaskSaveNextPattern->load($aRow['ROU_NEXT_TASK']); - $titleNextTask=$oTaskSaveNextPattern->getTasTitle(); + $taskNextInfo=$oTaskSaveNextPattern->load($aRow['ROU_NEXT_TASK']); + $titleNextTask=$taskNextInfo['TAS_TITLE']; if ($aRow['ROU_CONDITION']=='') { $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To -> '.$titleNextTask.' : '.$aRow['ROU_NEXT_TASK'].' Condition -> Empty ; '; }else{ @@ -132,15 +132,15 @@ switch ($aData['action']) { unset( $aFields ); } $oProcessNewPattern = new Process(); - $oProcessNewPattern->load($aData['PROCESS']); - $titleProcess=$oProcessNewPattern->getProTitle(); - G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Change Routing Rule From : '.$aData['ROU_TYPE'].' Change Routing Rule From : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); + $processInfo = $oProcessNewPattern->load($aData['PROCESS']); + $titleProcess = $processInfo['PRO_TITLE']; + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Change Routing Rule From : '.$aData['ROU_TYPE'].' Details : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); break; case 'PARALLEL': $tasksAffected=''; $oTaskSavePattern = new Task(); - $oTaskSavePattern->load($aData['TASK']); - $titleTask=$oTaskSavePattern->getTasTitle(); + $taskInfo=$oTaskSavePattern->load($aData['TASK']); + $titleTask=$taskInfo['TAS_TITLE']; foreach ($aData['GRID_PARALLEL_TYPE'] as $iKey => $aRow) { /*if ($aRow['ROU_UID'] != '') { @@ -153,21 +153,21 @@ switch ($aData['action']) { $aFields['ROU_TYPE'] = $aData['ROU_TYPE']; $rou_id = $oRoute->create( $aFields ); $oTaskSaveNextPattern = new Task(); - $oTaskSaveNextPattern->load($aRow['ROU_NEXT_TASK']); - $titleNextTask=$oTaskSaveNextPattern->getTasTitle(); + $taskNextInfo=$oTaskSaveNextPattern->load($aRow['ROU_NEXT_TASK']); + $titleNextTask=$taskNextInfo['TAS_TITLE']; $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To -> '.$titleNextTask.' : '.$aRow['ROU_NEXT_TASK'].' ; '; unset( $aFields ); } $oProcessNewPattern = new Process(); - $oProcessNewPattern->load($aData['PROCESS']); - $titleProcess=$oProcessNewPattern->getProTitle(); - G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Change Routing Rule From : '.$aData['ROU_TYPE'].' Change Routing Rule From : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); + $processInfo = $oProcessNewPattern->load($aData['PROCESS']); + $titleProcess = $processInfo['PRO_TITLE']; + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Change Routing Rule From : '.$aData['ROU_TYPE'].' Details : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); break; case 'PARALLEL-BY-EVALUATION': $tasksAffected=''; $oTaskSavePattern = new Task(); - $oTaskSavePattern->load($aData['TASK']); - $titleTask=$oTaskSavePattern->getTasTitle(); + $taskInfo=$oTaskSavePattern->load($aData['TASK']); + $titleTask=$taskInfo['TAS_TITLE']; foreach ($aData['GRID_PARALLEL_EVALUATION_TYPE'] as $iKey => $aRow) { /*if ($aRow['ROU_UID'] != '') { @@ -185,14 +185,14 @@ switch ($aData['action']) { $rou_id = $oRoute->create( $aFields ); if ($aRow['ROU_NEXT_TASK']=='-1') { if ($aRow['ROU_CONDITION']=='') { - $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End Of Procces Condition -> Empty; '; + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End Of Process Condition -> Empty; '; }else{ - $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End Of Procces Condition -> '.$aFields['ROU_CONDITION'].' ; '; + $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To End Of Process Condition -> '.$aFields['ROU_CONDITION'].' ; '; } }else{ $oTaskSaveNextPattern = new Task(); - $oTaskSaveNextPattern->load($aRow['ROU_NEXT_TASK']); - $titleNextTask=$oTaskSaveNextPattern->getTasTitle(); + $taskNextInfo=$oTaskSaveNextPattern->load($aRow['ROU_NEXT_TASK']); + $titleNextTask=$taskNextInfo['TAS_TITLE']; if ($aRow['ROU_CONDITION']=='') { $tasksAffected.='From -> '.$titleTask.' : '.$aData['TASK'].' To -> '.$titleNextTask.' : '.$aRow['ROU_NEXT_TASK'].' Condition -> Empty ; '; }else{ @@ -202,9 +202,9 @@ switch ($aData['action']) { unset( $aFields ); } $oProcessNewPattern = new Process(); - $oProcessNewPattern->load($aData['PROCESS']); - $titleProcess=$oProcessNewPattern->getProTitle(); - G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Change Routing Rule From : '.$aData['ROU_TYPE'].' Change Routing Rule From : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); + $processInfo = $oProcessNewPattern->load($aData['PROCESS']); + $titleProcess = $processInfo['PRO_TITLE']; + G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$aData['PROCESS'].' Change Routing Rule From : '.$aData['ROU_TYPE'].' Details : ROU_TYPE_OLD -> '.$aData['ROU_TYPE_OLD']. ' ROU_TYPE ->'.$aData['ROU_TYPE']. ' '.$tasksAffected); break; case 'DISCRIMINATOR': //Girish ->Added to save changes, while editing the route foreach ($aData['GRID_DISCRIMINATOR_TYPE'] as $iKey => $aRow) { diff --git a/workflow/engine/methods/processes/processes_Ajax.php b/workflow/engine/methods/processes/processes_Ajax.php index aef1818c0..2781def1a 100755 --- a/workflow/engine/methods/processes/processes_Ajax.php +++ b/workflow/engine/methods/processes/processes_Ajax.php @@ -370,14 +370,14 @@ try { case 0: $sType = 'SEQUENTIAL'; $oProcessNewPattern = new Process(); - $oProcessNewPattern->load($oData->pro_uid); - $titleProcess=$oProcessNewPattern->getProTitle(); + $taskProcess=$oProcessNewPattern->load($oData->pro_uid); + $titleProcess=$taskProcess['PRO_TITLE']; $oTaskNewPattern = new Task(); - $oTaskNewPattern->load($oData->tas_uid); - $titleTask=$oTaskNewPattern->getTasTitle(); + $taskInfo=$oTaskNewPattern->load($oData->tas_uid); + $titleTask=$taskInfo['TAS_TITLE']; $oTaskNextNewPattern = new Task(); - $oTaskNextNewPattern->load($oData->next_task); - $titleNextTask=$oTaskNextNewPattern->getTasTitle(); + $taskNextInfo=$oTaskNextNewPattern->load($oData->next_task); + $titleNextTask=$$taskNextInfo['TAS_TITLE']; if ($titleNextTask=='') { G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' Routing rule : END OF PROCESS Task Name -> '.$titleTask.' : '.$oData->tas_uid); }else{ @@ -387,79 +387,77 @@ try { case 1: $sType = 'SELECT'; $oProcessNewPattern = new Process(); - $oProcessNewPattern->load($oData->pro_uid); - $titleProcess=$oProcessNewPattern->getProTitle(); + $taskProcess=$oProcessNewPattern->load($oData->pro_uid); + $titleProcess=$taskProcess['PRO_TITLE']; $oTaskNewPattern = new Task(); - $oTaskNewPattern->load($oData->tas_uid); - $titleTask=$oTaskNewPattern->getTasTitle(); + $taskInfo=$oTaskNewPattern->load($oData->tas_uid); + $titleTask=$taskInfo['TAS_TITLE']; $oTaskNextNewPattern = new Task(); - $oTaskNextNewPattern->load($oData->next_task); - $titleNextTask=$oTaskNextNewPattern->getTasTitle(); + $taskNextInfo=$oTaskNextNewPattern->load($oData->next_task); + $titleNextTask=$$taskNextInfo['TAS_TITLE']; G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' Routing rule : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; case 2: $sType = 'EVALUATE'; $oProcessNewPattern = new Process(); - $oProcessNewPattern->load($oData->pro_uid); - $titleProcess=$oProcessNewPattern->getProTitle(); + $taskProcess=$oProcessNewPattern->load($oData->pro_uid); + $titleProcess=$taskProcess['PRO_TITLE']; $oTaskNewPattern = new Task(); - $oTaskNewPattern->load($oData->tas_uid); - $titleTask=$oTaskNewPattern->getTasTitle(); + $taskInfo=$oTaskNewPattern->load($oData->tas_uid); + $titleTask=$taskInfo['TAS_TITLE']; $oTaskNextNewPattern = new Task(); - $oTaskNextNewPattern->load($oData->next_task); - $titleNextTask=$oTaskNextNewPattern->getTasTitle(); + $taskNextInfo=$oTaskNextNewPattern->load($oData->next_task); + $titleNextTask=$$taskNextInfo['TAS_TITLE']; G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' Routing rule : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; case 3: $sType = 'PARALLEL'; $oProcessNewPattern = new Process(); - $oProcessNewPattern->load($oData->pro_uid); - $titleProcess=$oProcessNewPattern->getProTitle(); + $taskProcess=$oProcessNewPattern->load($oData->pro_uid); + $titleProcess=$taskProcess['PRO_TITLE']; $oTaskNewPattern = new Task(); - $oTaskNewPattern->load($oData->tas_uid); - $titleTask=$oTaskNewPattern->getTasTitle(); + $taskInfo=$oTaskNewPattern->load($oData->tas_uid); + $titleTask=$taskInfo['TAS_TITLE']; $oTaskNextNewPattern = new Task(); - $oTaskNextNewPattern->load($oData->next_task); - $titleNextTask=$oTaskNextNewPattern->getTasTitle(); + $taskNextInfo=$oTaskNextNewPattern->load($oData->next_task); + $titleNextTask=$$taskNextInfo['TAS_TITLE']; G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' Routing rule : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; case 4: $sType = 'PARALLEL-BY-EVALUATION'; $oProcessNewPattern = new Process(); - $oProcessNewPattern->load($oData->pro_uid); - $titleProcess=$oProcessNewPattern->getProTitle(); + $taskProcess=$oProcessNewPattern->load($oData->pro_uid); + $titleProcess=$taskProcess['PRO_TITLE']; $oTaskNewPattern = new Task(); - $oTaskNewPattern->load($oData->tas_uid); - $titleTask=$oTaskNewPattern->getTasTitle(); + $taskInfo=$oTaskNewPattern->load($oData->tas_uid); + $titleTask=$taskInfo['TAS_TITLE']; $oTaskNextNewPattern = new Task(); - $oTaskNextNewPattern->load($oData->next_task); - $titleNextTask=$oTaskNextNewPattern->getTasTitle(); + $taskNextInfo=$oTaskNextNewPattern->load($oData->next_task); + $titleNextTask=$$taskNextInfo['TAS_TITLE']; G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' Routing rule : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; case 5: $sType = 'SEC-JOIN'; - $oProcessNewPattern = new Process(); - $oProcessNewPattern->load($oData->pro_uid); - $titleProcess=$oProcessNewPattern->getProTitle(); + $taskProcess=$oProcessNewPattern->load($oData->pro_uid); + $titleProcess=$taskProcess['PRO_TITLE']; $oTaskNewPattern = new Task(); - $oTaskNewPattern->load($oData->tas_uid); - $titleTask=$oTaskNewPattern->getTasTitle(); + $taskInfo=$oTaskNewPattern->load($oData->tas_uid); + $titleTask=$taskInfo['TAS_TITLE']; $oTaskNextNewPattern = new Task(); - $oTaskNextNewPattern->load($oData->next_task); - $titleNextTask=$oTaskNextNewPattern->getTasTitle(); + $taskNextInfo=$oTaskNextNewPattern->load($oData->next_task); + $titleNextTask=$$taskNextInfo['TAS_TITLE']; G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' Routing rule : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; case 8: $sType = 'DISCRIMINATOR'; - $oProcessNewPattern = new Process(); - $oProcessNewPattern->load($oData->pro_uid); - $titleProcess=$oProcessNewPattern->getProTitle(); + $taskProcess=$oProcessNewPattern->load($oData->pro_uid); + $titleProcess=$taskProcess['PRO_TITLE']; $oTaskNewPattern = new Task(); - $oTaskNewPattern->load($oData->tas_uid); - $titleTask=$oTaskNewPattern->getTasTitle(); + $taskInfo=$oTaskNewPattern->load($oData->tas_uid); + $titleTask=$taskInfo['TAS_TITLE']; $oTaskNextNewPattern = new Task(); - $oTaskNextNewPattern->load($oData->next_task); - $titleNextTask=$oTaskNextNewPattern->getTasTitle(); + $taskNextInfo=$oTaskNextNewPattern->load($oData->next_task); + $titleNextTask=$$taskNextInfo['TAS_TITLE']; G::auditLog("DerivationRule",'PROCESS NAME : '.$titleProcess.' : '.$oData->pro_uid.' Routing rule : '.$sType.' from -> '.$titleTask.' : '.$oData->tas_uid.' To -> '.$titleNextTask.' : '.$oData->next_task); break; } diff --git a/workflow/engine/methods/tasks/tasks_Ajax.php b/workflow/engine/methods/tasks/tasks_Ajax.php index 55802e969..5d492c7ab 100755 --- a/workflow/engine/methods/tasks/tasks_Ajax.php +++ b/workflow/engine/methods/tasks/tasks_Ajax.php @@ -118,11 +118,15 @@ try { $result = $oTask->update( $aData ); $oTaskNewPattern = new Task(); - $oTaskNewPattern->load($aData['TAS_UID']); - $titleTask=$oTaskNewPattern->getTasTitle(); - if (count($aData)==5) { - G::auditLog("DerivationRule",'ASSIGN STARTING TASK : Task Name -> '.$titleTask.' : '.$aData['TAS_UID']); + $taskInfo=$oTaskNewPattern->load($aData['TAS_UID']); + $titleTask=$taskInfo['TAS_TITLE']; + $values=''; + foreach ($aData as $key => $value){ + if ($value!='') { + $values.=$key.' -> '.$value.' '; + } } + G::auditLog("OptionsMenuTask","Update Task DETAILS : ".$values); $response["status"] = "OK"; if ($result == 3) { From c83e87b986bcd6592c77bf5ec09d696b9cd2c385 Mon Sep 17 00:00:00 2001 From: jonathan Date: Thu, 19 Feb 2015 15:08:29 -0400 Subject: [PATCH 09/13] =?UTF-8?q?fix=20PM-1636=20from=20jira=20La=20opci?= =?UTF-8?q?=C3=B3n=20Case=20Information=20Menu=20>=20Case=20History=20>=20?= =?UTF-8?q?Change=20log=20>=20view=20despliega=20el=20Notice:=20Undefined?= =?UTF-8?q?=20index:=20APPLICATION?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- workflow/engine/classes/class.pmDynaform.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php index 8b1b05123..275b542e8 100644 --- a/workflow/engine/classes/class.pmDynaform.php +++ b/workflow/engine/classes/class.pmDynaform.php @@ -37,7 +37,8 @@ class pmDynaform } } } - if(!empty($app_data)){ + + if(!empty($app_data) && isset($app_data["APPLICATION"])){ //data $cases = new \ProcessMaker\BusinessModel\Cases(); $this->data = $cases->getCaseVariables($app_data["APPLICATION"]); From 1babf49b4f283558b8ec346a6251763835758f3d Mon Sep 17 00:00:00 2001 From: "Paula V. Quispe" Date: Fri, 20 Feb 2015 09:54:56 -0400 Subject: [PATCH 10/13] I corrected the label OuputDocument by OutputDocument --- workflow/engine/classes/model/OutputDocument.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/workflow/engine/classes/model/OutputDocument.php b/workflow/engine/classes/model/OutputDocument.php index 07e2d227f..7a0e2fd64 100755 --- a/workflow/engine/classes/model/OutputDocument.php +++ b/workflow/engine/classes/model/OutputDocument.php @@ -200,7 +200,7 @@ class OutputDocument extends BaseOutputDocument $genLink = 'Download the file'; } $description .= ", By clicking on the generated file link: ".$genLink; - G::auditLog("CreateOuputDocument", $description); + G::auditLog("CreateOutputDocument", $description); return $aData['OUT_DOC_UID']; } else { @@ -286,7 +286,7 @@ class OutputDocument extends BaseOutputDocument if (isset($aData['OUT_DOC_TEMPLATE'])) { $description .= ", [EDIT TEMPLATE]"; } - G::auditLog("UpdateOuputDocument", $description); + G::auditLog("UpdateOutputDocument", $description); return $iResult; } else { @@ -330,7 +330,7 @@ class OutputDocument extends BaseOutputDocument $iResult = $oOutputDocument->delete(); $oConnection->commit(); //Add Audit Log - G::auditLog("DeleteOuputDocument", "Output Document Name: ".$outputName.", Output Document Uid: ".$sOutDocUid.", Description: ".$outputDesc.", Filename generated: ".$outputFile); + G::auditLog("DeleteOutputDocument", "Output Document Name: ".$outputName.", Output Document Uid: ".$sOutDocUid.", Description: ".$outputDesc.", Filename generated: ".$outputFile); return $iResult; } else { From 5110afcd3ebb19cd5c335b1e6494b703c8a456a0 Mon Sep 17 00:00:00 2001 From: Gustavo Cruz Date: Fri, 20 Feb 2015 10:27:44 -0400 Subject: [PATCH 11/13] Fix the 2 observations made by the QA team regarding the use of the suggest user component, also adds the [x] clean button --- .gitignore | 2 +- workflow/engine/templates/cases/casesList.js | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index b951fad8a..9316009db 100755 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -bproject +nbproject/* workflow/engine/config/paths_installed.php gulliver/thirdparty/html2ps_pdf/cache workflow/engine/content/languages/translations.environments diff --git a/workflow/engine/templates/cases/casesList.js b/workflow/engine/templates/cases/casesList.js index 77c475fc5..82643f2c9 100755 --- a/workflow/engine/templates/cases/casesList.js +++ b/workflow/engine/templates/cases/casesList.js @@ -1170,7 +1170,7 @@ Ext.onReady ( function() { store: userStore, valueField : 'USR_UID', displayField:'USR_FULLNAME', - typeAhead: true, + typeAhead: false, triggerAction: 'all', emptyText : _('ID_ALL_USERS'), selectOnFocus : true, @@ -1178,7 +1178,7 @@ Ext.onReady ( function() { width: 180, allowBlank : true, autocomplete: true, - typeAhead: true, + minChars: 1, hideTrigger:true, listeners:{ scope: this, @@ -1233,6 +1233,15 @@ Ext.onReady ( function() { doSearch(); } } + + var resetSuggestButton = { + text:'X', + ctCls:"pm_search_x_button_des", + handler: function(){ + suggestUser.setValue(''); + doSearch(); + } + } textJump = { xtype: 'numberfield', @@ -1866,6 +1875,7 @@ Ext.onReady ( function() { _("ID_USER"), //comboUser, suggestUser, + resetSuggestButton, '   ' //'-', //textSearch, From 7f5c72d3c6e4f9ad6d4184fe3275e77f3d14d003 Mon Sep 17 00:00:00 2001 From: Roly Rudy Gutierrez Pinto Date: Fri, 20 Feb 2015 12:35:32 -0400 Subject: [PATCH 12/13] PM-1340 IMPROVEMENT --- workflow/engine/classes/class.pmDynaform.php | 14 ++++++++++++-- .../engine/js/cases/core/cases_Step_Pmdynaform.js | 6 +----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php index 275b542e8..fe25aab0b 100644 --- a/workflow/engine/classes/class.pmDynaform.php +++ b/workflow/engine/classes/class.pmDynaform.php @@ -147,9 +147,19 @@ class pmDynaform $items[$key]->data = $rows; } if ($items[$key]->type !== "grid") { + $value = ""; + $label = ""; + if (isset($this->data[$items[$key]->name . "_label"])) { + $value = $this->data[$items[$key]->name]; + $label = $this->data[$items[$key]->name . "_label"]; + } + if (isset($this->data[$items[$key]->name . "_value"])) { + $value = $this->data[$items[$key]->name . "_value"]; + $label = $this->data[$items[$key]->name]; + } $items[$key]->data = array( - "value" => $this->data[$items[$key]->name], - "label" => $this->searchValues($items[$key]->name, $this->data[$items[$key]->name]) + "value" => $value, + "label" => $label ); } } diff --git a/workflow/engine/js/cases/core/cases_Step_Pmdynaform.js b/workflow/engine/js/cases/core/cases_Step_Pmdynaform.js index 8595a60b6..7c3d77aaa 100644 --- a/workflow/engine/js/cases/core/cases_Step_Pmdynaform.js +++ b/workflow/engine/js/cases/core/cases_Step_Pmdynaform.js @@ -22,10 +22,6 @@ function dynaFormChanged(frm) { return false; } $(window).load(function () { - /*if ((navigator.userAgent.indexOf("MSIE") !== -1) || (navigator.userAgent.indexOf("Trident") !== -1)) { - document.body.innerHTML = "
Responsive Dynaforms are not supported in this browser.
"; - return; - }*/ if (pm_run_outside_main_app === 'true') { if (parent.showCaseNavigatorPanel) { parent.showCaseNavigatorPanel('DRAFT'); @@ -49,7 +45,7 @@ $(window).load(function () { submitRest: false }); new PMDynaform.core.Proxy({ - url: "http://" + window.project.keys.server + ":"+port +"/" + window.project.keys.apiName + "/" + window.project.keys.apiVersion + "/" + window.project.keys.workspace + "/cases/" + app_uid + "/variables", + url: "http://" + window.project.keys.server + "/" + window.project.keys.apiName + "/" + window.project.keys.apiVersion + "/" + window.project.keys.workspace + "/cases/" + app_uid + "/variables", method: 'GET', data: {}, keys: window.project.token, From 605c22c1017114ff5b24dd88a151be0839ee123b Mon Sep 17 00:00:00 2001 From: "marcelo.cuiza" Date: Fri, 20 Feb 2015 13:10:58 -0400 Subject: [PATCH 13/13] PM-1492 Las condiciones no funcionan correctamente, si es que no estan dentro de parentesis (). Se encapsulo en parentesis toda condicion dada que contenga un operador logico. --- workflow/engine/classes/class.derivation.php | 6 +----- workflow/engine/classes/class.pmScript.php | 3 +++ 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index e562cc92b..31568ac60 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -195,11 +195,7 @@ class Derivation $pmScript = new PMScript(); $pmScript->setFields($arrayApplicationData["APP_DATA"]); - if(preg_match('/\b(or|and|xor)\b/i' , $arrayRouteData["ROU_CONDITION"])) { - $pmScript->setScript("( ".$arrayRouteData["ROU_CONDITION"]." )"); - } else { - $pmScript->setScript($arrayRouteData["ROU_CONDITION"]); - } + $pmScript->setScript($arrayRouteData["ROU_CONDITION"]); $flagContinue = $pmScript->evaluate(); } diff --git a/workflow/engine/classes/class.pmScript.php b/workflow/engine/classes/class.pmScript.php index 1e9d16d70..326f7d8d5 100644 --- a/workflow/engine/classes/class.pmScript.php +++ b/workflow/engine/classes/class.pmScript.php @@ -491,6 +491,9 @@ class PMScript } } $sScript .= substr( $this->sScript, $iAux ); + if(preg_match('/\b(or|and|xor)\b/i' , $sScript)) { + $sScript = "( ".$sScript." )"; + } $sScript = '$bResult = ' . $sScript . ';'; // checks if the syntax is valid or if the variables in that condition has been previously defined if ($this->validSyntax( $sScript ) && $variableIsDefined) {