From 605c22c1017114ff5b24dd88a151be0839ee123b Mon Sep 17 00:00:00 2001 From: "marcelo.cuiza" Date: Fri, 20 Feb 2015 13:10:58 -0400 Subject: [PATCH] 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) {