diff --git a/gulliver/bin/tasks/pakeGulliver.php b/gulliver/bin/tasks/pakeGulliver.php index 57b1dfa7a..3127e8d58 100755 --- a/gulliver/bin/tasks/pakeGulliver.php +++ b/gulliver/bin/tasks/pakeGulliver.php @@ -2666,13 +2666,6 @@ function run_check_plugin_disabled_code($task, $args) if (is_dir(PATH_PLUGINS)) { if ($dirh = opendir(PATH_PLUGINS)) { - G::LoadClass("system"); - - require_once("propel" . PATH_SEP . "Propel.php"); - require_once(PATH_CORE . "methods" . PATH_SEP . "enterprise" . PATH_SEP . "enterprise.php"); - - Propel::init(PATH_CORE . "config" . PATH_SEP . "databases.php"); - $arrayData = array(); while (($file = readdir($dirh)) !== false) { @@ -2680,31 +2673,29 @@ function run_check_plugin_disabled_code($task, $args) $pluginName = str_replace(".php", "", $file); if (is_file(PATH_PLUGINS . $pluginName . ".php") && is_dir(PATH_PLUGINS . $pluginName)) { - require_once(PATH_PLUGINS . $pluginName . ".php"); + if (preg_match("/^.*class\s+" . $pluginName . "Plugin\s+extends\s+(\w*)\s*\{.*$/i", str_replace(array("\n", "\r"), array(" ", " "), file_get_contents(PATH_PLUGINS . $pluginName . ".php")), $arrayMatch)) { + $pluginParentClassName = $arrayMatch[1]; - $pluginClassName = $pluginName . "Plugin"; - - $p = new $pluginClassName(); - - switch ($option2) { - case "ENTERPRISE-PLUGIN": - if (get_parent_class($p) == "enterprisePlugin") { - $arrayData[] = $pluginName; - } - break; - case "CUSTOM-PLUGIN": - case "ALL": - case "": - if (get_parent_class($p) == "PMPlugin") { - $arrayData[] = $pluginName; - } - break; - default: - //PLUGIN-NAME - if ($pluginName == $option) { - $arrayData[] = $pluginName; - } - break; + switch ($option2) { + case "ENTERPRISE-PLUGIN": + if ($pluginParentClassName == "enterprisePlugin") { + $arrayData[] = $pluginName; + } + break; + case "CUSTOM-PLUGIN": + case "ALL": + case "": + if ($pluginParentClassName == "PMPlugin") { + $arrayData[] = $pluginName; + } + break; + default: + //PLUGIN-NAME + if ($pluginName == $option) { + $arrayData[] = $pluginName; + } + break; + } } } } diff --git a/gulliver/system/class.codeScanner.php b/gulliver/system/class.codeScanner.php index 6a81881eb..b02c7dd01 100644 --- a/gulliver/system/class.codeScanner.php +++ b/gulliver/system/class.codeScanner.php @@ -188,14 +188,16 @@ class CodeScanner if ($file != "" && $file != "." && $file != "..") { $f = $path . PATH_SEP . $file; - $arrayFoundCode = array_merge($arrayFoundCode, $this->checkDisabledCode((is_dir($f))? "PATH" : "FILE", $f)); + if (is_dir($f) || (is_file($f) && preg_match("/\.php$/", $f))) { + $arrayFoundCode = array_merge($arrayFoundCode, $this->checkDisabledCode((is_dir($f))? "PATH" : "FILE", $f)); + } } } closedir($dirh); } } else { - if (preg_match("/\.php$/", $path)) { + if (is_file($path) && preg_match("/\.php$/", $path)) { $source = file_get_contents($path); $arrayAux = $this->checkDisabledCodeInSource($source); diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index ab2d99692..b3e19e1f9 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -49,6 +49,81 @@ class Derivation { var $case; + /** + * prepareInformationTaskDerivation + * + * @param array $arrayDerivation Derivation + * + * return array Return array + */ + public function prepareInformationTaskDerivation(array $arrayDerivation) + { + try { + $task = new Task(); + + $taskFields = $task->load($arrayDerivation["TAS_UID"]); + + $arrayDerivation = G::array_merges($arrayDerivation, $taskFields); + + //2. if next case is an special case + if ((int)($arrayDerivation["ROU_NEXT_TASK"]) < 0) { + $arrayDerivation["NEXT_TASK"]["TAS_UID"] = (int)($arrayDerivation["ROU_NEXT_TASK"]); + $arrayDerivation["NEXT_TASK"]["TAS_ASSIGN_TYPE"] = "nobody"; + $arrayDerivation["NEXT_TASK"]["TAS_PRIORITY_VARIABLE"] = ""; + $arrayDerivation["NEXT_TASK"]["TAS_DEF_PROC_CODE"] = ""; + $arrayDerivation["NEXT_TASK"]["TAS_PARENT"] = ""; + $arrayDerivation["NEXT_TASK"]["TAS_TRANSFER_FLY"] = ""; + + switch ($arrayDerivation["ROU_NEXT_TASK"]) { + case -1: + $arrayDerivation["NEXT_TASK"]["TAS_TITLE"] = G::LoadTranslation("ID_END_OF_PROCESS"); + break; + case -2: + $arrayDerivation["NEXT_TASK"]["TAS_TITLE"] = G::LoadTranslation("ID_TAREA_COLGANTE"); + break; + } + + $arrayDerivation["NEXT_TASK"]["USR_UID"] = ""; + $arrayDerivation["NEXT_TASK"]["USER_ASSIGNED"] = array("USR_UID" => ""); + } else { + //3. load the task information of normal NEXT_TASK + $arrayDerivation["NEXT_TASK"] = $task->load($arrayDerivation["ROU_NEXT_TASK"]); //print $arrayDerivation["ROU_NEXT_TASK"]." **** ".$arrayDerivation["NEXT_TASK"]["TAS_TYPE"]."
"; + + if ($arrayDerivation["NEXT_TASK"]["TAS_TYPE"] == "SUBPROCESS") { + $sTaskParent = $arrayDerivation["NEXT_TASK"]["TAS_UID"]; + + $criteria = new Criteria("workflow"); + $criteria->add(SubProcessPeer::PRO_PARENT, $arrayDerivation["PRO_UID"]); + $criteria->add(SubProcessPeer::TAS_PARENT, $arrayDerivation["NEXT_TASK"]["TAS_UID"]); + $rsCriteria = SubProcessPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $rsCriteria->next(); + $row = $rsCriteria->getRow(); + + $arrayDerivation["ROU_NEXT_TASK"] = $row["TAS_UID"]; //print "
Life is just a lonely highway"; + $arrayDerivation["NEXT_TASK"] = $task->load($arrayDerivation["ROU_NEXT_TASK"]); //print "
Life is just a lonely highway";print"
"; + + $process = new Process(); + $row = $process->load($row["PRO_UID"]); + + $arrayDerivation["NEXT_TASK"]["TAS_TITLE"] .= " (" . $row["PRO_TITLE"] . ")"; + $arrayDerivation["NEXT_TASK"]["TAS_PARENT"] = $sTaskParent; + + //unset($task, $process, $row, $sTaskParent); + } else { + $arrayDerivation["NEXT_TASK"]["TAS_PARENT"] = ""; + } + + $arrayDerivation["NEXT_TASK"]["USER_ASSIGNED"] = $this->getNextAssignedUser($arrayDerivation); + } + + //Return + return $arrayDerivation; + } catch (Exception $e) { + throw $e; + } + } + /** * prepareInformation * @@ -67,10 +142,11 @@ class Derivation //AND DEL_INDEX = '$aData['DEL_INDEX']' $c = new Criteria( 'workflow' ); $c->clearSelectColumns(); - $c->addSelectColumn( AppDelegationPeer::TAS_UID ); - $c->addSelectColumn( RoutePeer::ROU_CONDITION ); - $c->addSelectColumn( RoutePeer::ROU_NEXT_TASK ); - $c->addSelectColumn( RoutePeer::ROU_TYPE ); + $c->addSelectColumn(AppDelegationPeer::TAS_UID); + $c->addSelectColumn(RoutePeer::ROU_NEXT_TASK); + $c->addSelectColumn(RoutePeer::ROU_TYPE); + $c->addSelectColumn(RoutePeer::ROU_DEFAULT); + $c->addSelectColumn(RoutePeer::ROU_CONDITION); $c->addJoin( AppDelegationPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN ); $c->addJoin( AppDelegationPeer::TAS_UID, RoutePeer::TAS_UID, Criteria::LEFT_JOIN ); $c->add( AppDelegationPeer::APP_UID, $aData['APP_UID'] ); @@ -81,7 +157,8 @@ class Derivation $rs->next(); $aDerivation = $rs->getRow(); $i = 0; - $taskInfo = array (); + $taskInfo = array(); + $arrayDerivationDefault = array(); $oUser = new Users(); if (!class_exists('Cases')) { @@ -94,8 +171,12 @@ class Derivation } while (is_array( $aDerivation )) { - $oTask = new Task(); - $aDerivation = G::array_merges( $aDerivation, $aData ); + $aDerivation = G::array_merges($aDerivation, $aData); + + if ((int)($aDerivation["ROU_DEFAULT"]) == 1) { + $arrayDerivationDefault = $aDerivation; + } + $bContinue = true; //evaluate the condition if there are conditions defined. @@ -115,62 +196,22 @@ class Derivation } if ($bContinue) { - $i ++; - $TaskFields = $oTask->load( $aDerivation['TAS_UID'] ); + $i++; - $aDerivation = G::array_merges( $aDerivation, $TaskFields ); - - //2. if next case is an special case - if ((int) $aDerivation['ROU_NEXT_TASK'] < 0) { - $aDerivation['NEXT_TASK']['TAS_UID'] = (int) $aDerivation['ROU_NEXT_TASK']; - $aDerivation['NEXT_TASK']['TAS_ASSIGN_TYPE'] = 'nobody'; - $aDerivation['NEXT_TASK']['TAS_PRIORITY_VARIABLE'] = ''; - $aDerivation['NEXT_TASK']['TAS_DEF_PROC_CODE'] = ''; - $aDerivation['NEXT_TASK']['TAS_PARENT'] = ''; - $aDerivation['NEXT_TASK']['TAS_TRANSFER_FLY'] = ''; - - switch ($aDerivation['ROU_NEXT_TASK']) { - case - 1: - $aDerivation['NEXT_TASK']['TAS_TITLE'] = G::LoadTranslation( 'ID_END_OF_PROCESS' ); - break; - case - 2: - $aDerivation['NEXT_TASK']['TAS_TITLE'] = G::LoadTranslation( 'ID_TAREA_COLGANTE' ); - break; - } - $aDerivation['NEXT_TASK']['USR_UID'] = ''; - $aDerivation['NEXT_TASK']['USER_ASSIGNED'] = array('USR_UID' => ''); - } else { - //3. load the task information of normal NEXT_TASK - $aDerivation['NEXT_TASK'] = $oTask->load( $aDerivation['ROU_NEXT_TASK'] ); //print $aDerivation['ROU_NEXT_TASK']." **** ".$aDerivation['NEXT_TASK']['TAS_TYPE']."
"; - - - if ($aDerivation['NEXT_TASK']['TAS_TYPE'] === 'SUBPROCESS') { - $oCriteria = new Criteria( 'workflow' ); - $oCriteria->add( SubProcessPeer::PRO_PARENT, $aDerivation['PRO_UID'] ); - $oCriteria->add( SubProcessPeer::TAS_PARENT, $aDerivation['NEXT_TASK']['TAS_UID'] ); - $oDataset = SubProcessPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - $aRow = $oDataset->getRow(); - $sTaskParent = $aDerivation['NEXT_TASK']['TAS_UID']; - $aDerivation['ROU_NEXT_TASK'] = $aRow['TAS_UID']; //print "
Life is just a lonely highway"; - $aDerivation['NEXT_TASK'] = $oTask->load( $aDerivation['ROU_NEXT_TASK'] ); //print "
Life is just a lonely highway";print"
"; - $oProcess = new Process(); - $aRow = $oProcess->load( $aRow['PRO_UID'] ); - $aDerivation['NEXT_TASK']['TAS_TITLE'] .= ' (' . $aRow['PRO_TITLE'] . ')'; - $aDerivation['NEXT_TASK']['TAS_PARENT'] = $sTaskParent; - unset( $oTask, $oProcess, $aRow, $sTaskParent ); - } else { - $aDerivation['NEXT_TASK']['TAS_PARENT'] = ''; - } - $aDerivation['NEXT_TASK']['USER_ASSIGNED'] = $this->getNextAssignedUser( $aDerivation ); - } - - $taskInfo[$i] = $aDerivation; + $taskInfo[$i] = $this->prepareInformationTaskDerivation($aDerivation); } + $rs->next(); $aDerivation = $rs->getRow(); } + + if (count($taskInfo) == 0 && count($arrayDerivationDefault) > 0) { + $i++; + + $taskInfo[$i] = $this->prepareInformationTaskDerivation($arrayDerivationDefault); + } + + //Return return $taskInfo; } diff --git a/workflow/engine/classes/model/Route.php b/workflow/engine/classes/model/Route.php index 22d6412d5..c73aabf8b 100755 --- a/workflow/engine/classes/model/Route.php +++ b/workflow/engine/classes/model/Route.php @@ -63,6 +63,50 @@ class Route extends BaseRoute } } + /** + * Set default Route by Unique id of Route + * + * @param string $routeUid Unique id of Route + * + * return void + */ + public function setRouDefaultByUid($routeUid) + { + try { + $arrayRouteData = $this->load($routeUid); + + if (in_array($arrayRouteData["ROU_TYPE"], array("EVALUATE", "PARALLEL-BY-EVALUATION"))) { + //Update + //Update - WHERE + $criteriaWhere = new Criteria("workflow"); + $criteriaWhere->add(RoutePeer::PRO_UID, $arrayRouteData["PRO_UID"], Criteria::EQUAL); + $criteriaWhere->add(RoutePeer::TAS_UID, $arrayRouteData["TAS_UID"], Criteria::EQUAL); + $criteriaWhere->add(RoutePeer::ROU_UID, $routeUid, Criteria::NOT_EQUAL); + + //Update - SET + $criteriaSet = new Criteria("workflow"); + $criteriaSet->add(RoutePeer::ROU_DEFAULT, 0); + + BasePeer::doUpdate($criteriaWhere, $criteriaSet, Propel::getConnection("workflow")); + + if ((int)($arrayRouteData["ROU_DEFAULT"]) == 0) { + //Update + //Update - WHERE + $criteriaWhere = new Criteria("workflow"); + $criteriaWhere->add(RoutePeer::ROU_UID, $routeUid, Criteria::EQUAL); + + //Update - SET + $criteriaSet = new Criteria("workflow"); + $criteriaSet->add(RoutePeer::ROU_DEFAULT, 1); + + BasePeer::doUpdate($criteriaWhere, $criteriaSet, Propel::getConnection("workflow")); + } + } + } catch (Exception $e) { + throw $e; + } + } + /** * Create the application document registry * @@ -92,6 +136,11 @@ class Route extends BaseRoute $oConnection->begin(); $iResult = $oRoute->save(); $oConnection->commit(); + + if (isset($aData["ROU_DEFAULT"]) && (int)($aData["ROU_DEFAULT"]) == 1) { + $this->setRouDefaultByUid($sRouteUID); + } + return $sRouteUID; } else { $sMessage = ''; @@ -139,6 +188,11 @@ class Route extends BaseRoute $oConnection->begin(); $iResult = $oRoute->save(); $oConnection->commit(); + + if (isset($aData["ROU_DEFAULT"]) && (int)($aData["ROU_DEFAULT"]) == 1) { + $this->setRouDefaultByUid($aData["ROU_UID"]); + } + return $iResult; } else { $sMessage = ''; diff --git a/workflow/engine/classes/model/map/AppAssignSelfServiceValueMapBuilder.php b/workflow/engine/classes/model/map/AppAssignSelfServiceValueMapBuilder.php index 209e95bc9..bb892365b 100644 --- a/workflow/engine/classes/model/map/AppAssignSelfServiceValueMapBuilder.php +++ b/workflow/engine/classes/model/map/AppAssignSelfServiceValueMapBuilder.php @@ -76,5 +76,5 @@ class AppAssignSelfServiceValueMapBuilder $tMap->addColumn('GRP_UID', 'GrpUid', 'string', CreoleTypes::VARCHAR, true, 32); } // doBuild() -}// AppAssignSelfServiceValueMapBuilder +} // AppAssignSelfServiceValueMapBuilder diff --git a/workflow/engine/classes/model/map/AppHistoryMapBuilder.php b/workflow/engine/classes/model/map/AppHistoryMapBuilder.php index 2011d1496..700c17fd5 100755 --- a/workflow/engine/classes/model/map/AppHistoryMapBuilder.php +++ b/workflow/engine/classes/model/map/AppHistoryMapBuilder.php @@ -85,7 +85,7 @@ class AppHistoryMapBuilder $tMap->addColumn('HISTORY_DATA', 'HistoryData', 'string', CreoleTypes::LONGVARCHAR, true, null); - $tMap->addValidator('OBJ_TYPE', 'validValues', 'propel.validator.ValidValuesValidator', 'DYNAFORM|INPUT_DOCUMENT|OUTPUT_DOCUMENT|EXTERNAL|ASSIGN_TASK', 'Please select a valid value for OBJ_TYPE.'); + $tMap->addValidator('OBJ_TYPE', 'validValues', 'propel.validator.ValidValuesValidator', 'DYNAFORM|INPUT_DOCUMENT|OUTPUT_DOCUMENT|EXTERNAL|ASSIGN_TASK', 'Please enter a valid value for OBJ_TYPE'); } // doBuild() diff --git a/workflow/engine/classes/model/map/RouteMapBuilder.php b/workflow/engine/classes/model/map/RouteMapBuilder.php index 64d53a3d9..a257ae0c7 100755 --- a/workflow/engine/classes/model/map/RouteMapBuilder.php +++ b/workflow/engine/classes/model/map/RouteMapBuilder.php @@ -79,6 +79,8 @@ class RouteMapBuilder $tMap->addColumn('ROU_TYPE', 'RouType', 'string', CreoleTypes::VARCHAR, true, 25); + $tMap->addColumn('ROU_DEFAULT', 'RouDefault', 'int', CreoleTypes::INTEGER, true, null); + $tMap->addColumn('ROU_CONDITION', 'RouCondition', 'string', CreoleTypes::VARCHAR, true, 512); $tMap->addColumn('ROU_TO_LAST_USER', 'RouToLastUser', 'string', CreoleTypes::VARCHAR, true, 20); @@ -117,6 +119,8 @@ class RouteMapBuilder $tMap->addValidator('ROU_TYPE', 'required', 'propel.validator.RequiredValidator', '', 'Route type is required.'); + $tMap->addValidator('ROU_DEFAULT', 'validValues', 'propel.validator.ValidValuesValidator', '0|1', 'Please enter a valid value for ROU_DEFAULT'); + $tMap->addValidator('ROU_TO_LAST_USER', 'validValues', 'propel.validator.ValidValuesValidator', 'FALSE|TRUE', 'Please select a valid value for ROU_TO_LAST_USER .'); $tMap->addValidator('ROU_OPTIONAL', 'validValues', 'propel.validator.ValidValuesValidator', 'FALSE|TRUE', 'Please select a valid value for ROU_OPTIONAL .'); diff --git a/workflow/engine/classes/model/om/BaseAppAssignSelfServiceValue.php b/workflow/engine/classes/model/om/BaseAppAssignSelfServiceValue.php index f4629ba14..1bfa29c50 100644 --- a/workflow/engine/classes/model/om/BaseAppAssignSelfServiceValue.php +++ b/workflow/engine/classes/model/om/BaseAppAssignSelfServiceValue.php @@ -12,7 +12,7 @@ include_once 'classes/model/AppAssignSelfServiceValuePeer.php'; /** * Base class that represents a row from the 'APP_ASSIGN_SELF_SERVICE_VALUE' table. * - * + * * * @package workflow.classes.model.om */ @@ -73,7 +73,7 @@ abstract class BaseAppAssignSelfServiceValue extends BaseObject implements Persi /** * Get the [app_uid] column value. - * + * * @return string */ public function getAppUid() @@ -84,7 +84,7 @@ abstract class BaseAppAssignSelfServiceValue extends BaseObject implements Persi /** * Get the [del_index] column value. - * + * * @return int */ public function getDelIndex() @@ -95,7 +95,7 @@ abstract class BaseAppAssignSelfServiceValue extends BaseObject implements Persi /** * Get the [pro_uid] column value. - * + * * @return string */ public function getProUid() @@ -106,7 +106,7 @@ abstract class BaseAppAssignSelfServiceValue extends BaseObject implements Persi /** * Get the [tas_uid] column value. - * + * * @return string */ public function getTasUid() @@ -117,7 +117,7 @@ abstract class BaseAppAssignSelfServiceValue extends BaseObject implements Persi /** * Get the [grp_uid] column value. - * + * * @return string */ public function getGrpUid() @@ -128,7 +128,7 @@ abstract class BaseAppAssignSelfServiceValue extends BaseObject implements Persi /** * Set the value of [app_uid] column. - * + * * @param string $v new value * @return void */ @@ -150,7 +150,7 @@ abstract class BaseAppAssignSelfServiceValue extends BaseObject implements Persi /** * Set the value of [del_index] column. - * + * * @param int $v new value * @return void */ @@ -172,7 +172,7 @@ abstract class BaseAppAssignSelfServiceValue extends BaseObject implements Persi /** * Set the value of [pro_uid] column. - * + * * @param string $v new value * @return void */ @@ -194,7 +194,7 @@ abstract class BaseAppAssignSelfServiceValue extends BaseObject implements Persi /** * Set the value of [tas_uid] column. - * + * * @param string $v new value * @return void */ @@ -216,7 +216,7 @@ abstract class BaseAppAssignSelfServiceValue extends BaseObject implements Persi /** * Set the value of [grp_uid] column. - * + * * @param string $v new value * @return void */ @@ -423,7 +423,7 @@ abstract class BaseAppAssignSelfServiceValue extends BaseObject implements Persi * an aggreagated array of ValidationFailed objects will be returned. * * @param array $columns Array of column names to validate. - * @return mixed true if all validations pass; + * @return mixed true if all validations pass; array of ValidationFailed objects otherwise. */ protected function doValidate($columns = null) @@ -671,10 +671,10 @@ abstract class BaseAppAssignSelfServiceValue extends BaseObject implements Persi * * @deprecated */ - public function setPrimaryKey($pk) - { - // do nothing, because this object doesn't have any primary keys - } + public function setPrimaryKey($pk) + { + // do nothing, because this object doesn't have any primary keys + } /** * Sets contents of passed object to values from current object. diff --git a/workflow/engine/classes/model/om/BaseRoute.php b/workflow/engine/classes/model/om/BaseRoute.php index 52efc60d8..82f456c2f 100755 --- a/workflow/engine/classes/model/om/BaseRoute.php +++ b/workflow/engine/classes/model/om/BaseRoute.php @@ -69,6 +69,12 @@ abstract class BaseRoute extends BaseObject implements Persistent */ protected $rou_type = 'SEQUENTIAL'; + /** + * The value for the rou_default field. + * @var int + */ + protected $rou_default = 0; + /** * The value for the rou_condition field. * @var string @@ -220,6 +226,17 @@ abstract class BaseRoute extends BaseObject implements Persistent return $this->rou_type; } + /** + * Get the [rou_default] column value. + * + * @return int + */ + public function getRouDefault() + { + + return $this->rou_default; + } + /** * Get the [rou_condition] column value. * @@ -484,6 +501,28 @@ abstract class BaseRoute extends BaseObject implements Persistent } // setRouType() + /** + * Set the value of [rou_default] column. + * + * @param int $v new value + * @return void + */ + public function setRouDefault($v) + { + + // Since the native PHP type for this column is integer, + // we will cast the input value to an int (if it is not). + if ($v !== null && !is_int($v) && is_numeric($v)) { + $v = (int) $v; + } + + if ($this->rou_default !== $v || $v === 0) { + $this->rou_default = $v; + $this->modifiedColumns[] = RoutePeer::ROU_DEFAULT; + } + + } // setRouDefault() + /** * Set the value of [rou_condition] column. * @@ -735,32 +774,34 @@ abstract class BaseRoute extends BaseObject implements Persistent $this->rou_type = $rs->getString($startcol + 6); - $this->rou_condition = $rs->getString($startcol + 7); + $this->rou_default = $rs->getInt($startcol + 7); - $this->rou_to_last_user = $rs->getString($startcol + 8); + $this->rou_condition = $rs->getString($startcol + 8); - $this->rou_optional = $rs->getString($startcol + 9); + $this->rou_to_last_user = $rs->getString($startcol + 9); - $this->rou_send_email = $rs->getString($startcol + 10); + $this->rou_optional = $rs->getString($startcol + 10); - $this->rou_sourceanchor = $rs->getInt($startcol + 11); + $this->rou_send_email = $rs->getString($startcol + 11); - $this->rou_targetanchor = $rs->getInt($startcol + 12); + $this->rou_sourceanchor = $rs->getInt($startcol + 12); - $this->rou_to_port = $rs->getInt($startcol + 13); + $this->rou_targetanchor = $rs->getInt($startcol + 13); - $this->rou_from_port = $rs->getInt($startcol + 14); + $this->rou_to_port = $rs->getInt($startcol + 14); - $this->rou_evn_uid = $rs->getString($startcol + 15); + $this->rou_from_port = $rs->getInt($startcol + 15); - $this->gat_uid = $rs->getString($startcol + 16); + $this->rou_evn_uid = $rs->getString($startcol + 16); + + $this->gat_uid = $rs->getString($startcol + 17); $this->resetModified(); $this->setNew(false); // FIXME - using NUM_COLUMNS may be clearer. - return $startcol + 17; // 17 = RoutePeer::NUM_COLUMNS - RoutePeer::NUM_LAZY_LOAD_COLUMNS). + return $startcol + 18; // 18 = RoutePeer::NUM_COLUMNS - RoutePeer::NUM_LAZY_LOAD_COLUMNS). } catch (Exception $e) { throw new PropelException("Error populating Route object", $e); @@ -986,33 +1027,36 @@ abstract class BaseRoute extends BaseObject implements Persistent return $this->getRouType(); break; case 7: - return $this->getRouCondition(); + return $this->getRouDefault(); break; case 8: - return $this->getRouToLastUser(); + return $this->getRouCondition(); break; case 9: - return $this->getRouOptional(); + return $this->getRouToLastUser(); break; case 10: - return $this->getRouSendEmail(); + return $this->getRouOptional(); break; case 11: - return $this->getRouSourceanchor(); + return $this->getRouSendEmail(); break; case 12: - return $this->getRouTargetanchor(); + return $this->getRouSourceanchor(); break; case 13: - return $this->getRouToPort(); + return $this->getRouTargetanchor(); break; case 14: - return $this->getRouFromPort(); + return $this->getRouToPort(); break; case 15: - return $this->getRouEvnUid(); + return $this->getRouFromPort(); break; case 16: + return $this->getRouEvnUid(); + break; + case 17: return $this->getGatUid(); break; default: @@ -1042,16 +1086,17 @@ abstract class BaseRoute extends BaseObject implements Persistent $keys[4] => $this->getRouNextTask(), $keys[5] => $this->getRouCase(), $keys[6] => $this->getRouType(), - $keys[7] => $this->getRouCondition(), - $keys[8] => $this->getRouToLastUser(), - $keys[9] => $this->getRouOptional(), - $keys[10] => $this->getRouSendEmail(), - $keys[11] => $this->getRouSourceanchor(), - $keys[12] => $this->getRouTargetanchor(), - $keys[13] => $this->getRouToPort(), - $keys[14] => $this->getRouFromPort(), - $keys[15] => $this->getRouEvnUid(), - $keys[16] => $this->getGatUid(), + $keys[7] => $this->getRouDefault(), + $keys[8] => $this->getRouCondition(), + $keys[9] => $this->getRouToLastUser(), + $keys[10] => $this->getRouOptional(), + $keys[11] => $this->getRouSendEmail(), + $keys[12] => $this->getRouSourceanchor(), + $keys[13] => $this->getRouTargetanchor(), + $keys[14] => $this->getRouToPort(), + $keys[15] => $this->getRouFromPort(), + $keys[16] => $this->getRouEvnUid(), + $keys[17] => $this->getGatUid(), ); return $result; } @@ -1105,33 +1150,36 @@ abstract class BaseRoute extends BaseObject implements Persistent $this->setRouType($value); break; case 7: - $this->setRouCondition($value); + $this->setRouDefault($value); break; case 8: - $this->setRouToLastUser($value); + $this->setRouCondition($value); break; case 9: - $this->setRouOptional($value); + $this->setRouToLastUser($value); break; case 10: - $this->setRouSendEmail($value); + $this->setRouOptional($value); break; case 11: - $this->setRouSourceanchor($value); + $this->setRouSendEmail($value); break; case 12: - $this->setRouTargetanchor($value); + $this->setRouSourceanchor($value); break; case 13: - $this->setRouToPort($value); + $this->setRouTargetanchor($value); break; case 14: - $this->setRouFromPort($value); + $this->setRouToPort($value); break; case 15: - $this->setRouEvnUid($value); + $this->setRouFromPort($value); break; case 16: + $this->setRouEvnUid($value); + break; + case 17: $this->setGatUid($value); break; } // switch() @@ -1186,43 +1234,47 @@ abstract class BaseRoute extends BaseObject implements Persistent } if (array_key_exists($keys[7], $arr)) { - $this->setRouCondition($arr[$keys[7]]); + $this->setRouDefault($arr[$keys[7]]); } if (array_key_exists($keys[8], $arr)) { - $this->setRouToLastUser($arr[$keys[8]]); + $this->setRouCondition($arr[$keys[8]]); } if (array_key_exists($keys[9], $arr)) { - $this->setRouOptional($arr[$keys[9]]); + $this->setRouToLastUser($arr[$keys[9]]); } if (array_key_exists($keys[10], $arr)) { - $this->setRouSendEmail($arr[$keys[10]]); + $this->setRouOptional($arr[$keys[10]]); } if (array_key_exists($keys[11], $arr)) { - $this->setRouSourceanchor($arr[$keys[11]]); + $this->setRouSendEmail($arr[$keys[11]]); } if (array_key_exists($keys[12], $arr)) { - $this->setRouTargetanchor($arr[$keys[12]]); + $this->setRouSourceanchor($arr[$keys[12]]); } if (array_key_exists($keys[13], $arr)) { - $this->setRouToPort($arr[$keys[13]]); + $this->setRouTargetanchor($arr[$keys[13]]); } if (array_key_exists($keys[14], $arr)) { - $this->setRouFromPort($arr[$keys[14]]); + $this->setRouToPort($arr[$keys[14]]); } if (array_key_exists($keys[15], $arr)) { - $this->setRouEvnUid($arr[$keys[15]]); + $this->setRouFromPort($arr[$keys[15]]); } if (array_key_exists($keys[16], $arr)) { - $this->setGatUid($arr[$keys[16]]); + $this->setRouEvnUid($arr[$keys[16]]); + } + + if (array_key_exists($keys[17], $arr)) { + $this->setGatUid($arr[$keys[17]]); } } @@ -1264,6 +1316,10 @@ abstract class BaseRoute extends BaseObject implements Persistent $criteria->add(RoutePeer::ROU_TYPE, $this->rou_type); } + if ($this->isColumnModified(RoutePeer::ROU_DEFAULT)) { + $criteria->add(RoutePeer::ROU_DEFAULT, $this->rou_default); + } + if ($this->isColumnModified(RoutePeer::ROU_CONDITION)) { $criteria->add(RoutePeer::ROU_CONDITION, $this->rou_condition); } @@ -1370,6 +1426,8 @@ abstract class BaseRoute extends BaseObject implements Persistent $copyObj->setRouType($this->rou_type); + $copyObj->setRouDefault($this->rou_default); + $copyObj->setRouCondition($this->rou_condition); $copyObj->setRouToLastUser($this->rou_to_last_user); diff --git a/workflow/engine/classes/model/om/BaseRoutePeer.php b/workflow/engine/classes/model/om/BaseRoutePeer.php index b7a6d6bd8..bceac65c0 100755 --- a/workflow/engine/classes/model/om/BaseRoutePeer.php +++ b/workflow/engine/classes/model/om/BaseRoutePeer.php @@ -25,7 +25,7 @@ abstract class BaseRoutePeer const CLASS_DEFAULT = 'classes.model.Route'; /** The total number of columns. */ - const NUM_COLUMNS = 17; + const NUM_COLUMNS = 18; /** The number of lazy-loaded columns. */ const NUM_LAZY_LOAD_COLUMNS = 0; @@ -52,6 +52,9 @@ abstract class BaseRoutePeer /** the column name for the ROU_TYPE field */ const ROU_TYPE = 'ROUTE.ROU_TYPE'; + /** the column name for the ROU_DEFAULT field */ + const ROU_DEFAULT = 'ROUTE.ROU_DEFAULT'; + /** the column name for the ROU_CONDITION field */ const ROU_CONDITION = 'ROUTE.ROU_CONDITION'; @@ -93,10 +96,10 @@ abstract class BaseRoutePeer * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' */ private static $fieldNames = array ( - BasePeer::TYPE_PHPNAME => array ('RouUid', 'RouParent', 'ProUid', 'TasUid', 'RouNextTask', 'RouCase', 'RouType', 'RouCondition', 'RouToLastUser', 'RouOptional', 'RouSendEmail', 'RouSourceanchor', 'RouTargetanchor', 'RouToPort', 'RouFromPort', 'RouEvnUid', 'GatUid', ), - BasePeer::TYPE_COLNAME => array (RoutePeer::ROU_UID, RoutePeer::ROU_PARENT, RoutePeer::PRO_UID, RoutePeer::TAS_UID, RoutePeer::ROU_NEXT_TASK, RoutePeer::ROU_CASE, RoutePeer::ROU_TYPE, RoutePeer::ROU_CONDITION, RoutePeer::ROU_TO_LAST_USER, RoutePeer::ROU_OPTIONAL, RoutePeer::ROU_SEND_EMAIL, RoutePeer::ROU_SOURCEANCHOR, RoutePeer::ROU_TARGETANCHOR, RoutePeer::ROU_TO_PORT, RoutePeer::ROU_FROM_PORT, RoutePeer::ROU_EVN_UID, RoutePeer::GAT_UID, ), - BasePeer::TYPE_FIELDNAME => array ('ROU_UID', 'ROU_PARENT', 'PRO_UID', 'TAS_UID', 'ROU_NEXT_TASK', 'ROU_CASE', 'ROU_TYPE', 'ROU_CONDITION', 'ROU_TO_LAST_USER', 'ROU_OPTIONAL', 'ROU_SEND_EMAIL', 'ROU_SOURCEANCHOR', 'ROU_TARGETANCHOR', 'ROU_TO_PORT', 'ROU_FROM_PORT', 'ROU_EVN_UID', 'GAT_UID', ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ) + BasePeer::TYPE_PHPNAME => array ('RouUid', 'RouParent', 'ProUid', 'TasUid', 'RouNextTask', 'RouCase', 'RouType', 'RouDefault', 'RouCondition', 'RouToLastUser', 'RouOptional', 'RouSendEmail', 'RouSourceanchor', 'RouTargetanchor', 'RouToPort', 'RouFromPort', 'RouEvnUid', 'GatUid', ), + BasePeer::TYPE_COLNAME => array (RoutePeer::ROU_UID, RoutePeer::ROU_PARENT, RoutePeer::PRO_UID, RoutePeer::TAS_UID, RoutePeer::ROU_NEXT_TASK, RoutePeer::ROU_CASE, RoutePeer::ROU_TYPE, RoutePeer::ROU_DEFAULT, RoutePeer::ROU_CONDITION, RoutePeer::ROU_TO_LAST_USER, RoutePeer::ROU_OPTIONAL, RoutePeer::ROU_SEND_EMAIL, RoutePeer::ROU_SOURCEANCHOR, RoutePeer::ROU_TARGETANCHOR, RoutePeer::ROU_TO_PORT, RoutePeer::ROU_FROM_PORT, RoutePeer::ROU_EVN_UID, RoutePeer::GAT_UID, ), + BasePeer::TYPE_FIELDNAME => array ('ROU_UID', 'ROU_PARENT', 'PRO_UID', 'TAS_UID', 'ROU_NEXT_TASK', 'ROU_CASE', 'ROU_TYPE', 'ROU_DEFAULT', 'ROU_CONDITION', 'ROU_TO_LAST_USER', 'ROU_OPTIONAL', 'ROU_SEND_EMAIL', 'ROU_SOURCEANCHOR', 'ROU_TARGETANCHOR', 'ROU_TO_PORT', 'ROU_FROM_PORT', 'ROU_EVN_UID', 'GAT_UID', ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, ) ); /** @@ -106,10 +109,10 @@ abstract class BaseRoutePeer * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 */ private static $fieldKeys = array ( - BasePeer::TYPE_PHPNAME => array ('RouUid' => 0, 'RouParent' => 1, 'ProUid' => 2, 'TasUid' => 3, 'RouNextTask' => 4, 'RouCase' => 5, 'RouType' => 6, 'RouCondition' => 7, 'RouToLastUser' => 8, 'RouOptional' => 9, 'RouSendEmail' => 10, 'RouSourceanchor' => 11, 'RouTargetanchor' => 12, 'RouToPort' => 13, 'RouFromPort' => 14, 'RouEvnUid' => 15, 'GatUid' => 16, ), - BasePeer::TYPE_COLNAME => array (RoutePeer::ROU_UID => 0, RoutePeer::ROU_PARENT => 1, RoutePeer::PRO_UID => 2, RoutePeer::TAS_UID => 3, RoutePeer::ROU_NEXT_TASK => 4, RoutePeer::ROU_CASE => 5, RoutePeer::ROU_TYPE => 6, RoutePeer::ROU_CONDITION => 7, RoutePeer::ROU_TO_LAST_USER => 8, RoutePeer::ROU_OPTIONAL => 9, RoutePeer::ROU_SEND_EMAIL => 10, RoutePeer::ROU_SOURCEANCHOR => 11, RoutePeer::ROU_TARGETANCHOR => 12, RoutePeer::ROU_TO_PORT => 13, RoutePeer::ROU_FROM_PORT => 14, RoutePeer::ROU_EVN_UID => 15, RoutePeer::GAT_UID => 16, ), - BasePeer::TYPE_FIELDNAME => array ('ROU_UID' => 0, 'ROU_PARENT' => 1, 'PRO_UID' => 2, 'TAS_UID' => 3, 'ROU_NEXT_TASK' => 4, 'ROU_CASE' => 5, 'ROU_TYPE' => 6, 'ROU_CONDITION' => 7, 'ROU_TO_LAST_USER' => 8, 'ROU_OPTIONAL' => 9, 'ROU_SEND_EMAIL' => 10, 'ROU_SOURCEANCHOR' => 11, 'ROU_TARGETANCHOR' => 12, 'ROU_TO_PORT' => 13, 'ROU_FROM_PORT' => 14, 'ROU_EVN_UID' => 15, 'GAT_UID' => 16, ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ) + BasePeer::TYPE_PHPNAME => array ('RouUid' => 0, 'RouParent' => 1, 'ProUid' => 2, 'TasUid' => 3, 'RouNextTask' => 4, 'RouCase' => 5, 'RouType' => 6, 'RouDefault' => 7, 'RouCondition' => 8, 'RouToLastUser' => 9, 'RouOptional' => 10, 'RouSendEmail' => 11, 'RouSourceanchor' => 12, 'RouTargetanchor' => 13, 'RouToPort' => 14, 'RouFromPort' => 15, 'RouEvnUid' => 16, 'GatUid' => 17, ), + BasePeer::TYPE_COLNAME => array (RoutePeer::ROU_UID => 0, RoutePeer::ROU_PARENT => 1, RoutePeer::PRO_UID => 2, RoutePeer::TAS_UID => 3, RoutePeer::ROU_NEXT_TASK => 4, RoutePeer::ROU_CASE => 5, RoutePeer::ROU_TYPE => 6, RoutePeer::ROU_DEFAULT => 7, RoutePeer::ROU_CONDITION => 8, RoutePeer::ROU_TO_LAST_USER => 9, RoutePeer::ROU_OPTIONAL => 10, RoutePeer::ROU_SEND_EMAIL => 11, RoutePeer::ROU_SOURCEANCHOR => 12, RoutePeer::ROU_TARGETANCHOR => 13, RoutePeer::ROU_TO_PORT => 14, RoutePeer::ROU_FROM_PORT => 15, RoutePeer::ROU_EVN_UID => 16, RoutePeer::GAT_UID => 17, ), + BasePeer::TYPE_FIELDNAME => array ('ROU_UID' => 0, 'ROU_PARENT' => 1, 'PRO_UID' => 2, 'TAS_UID' => 3, 'ROU_NEXT_TASK' => 4, 'ROU_CASE' => 5, 'ROU_TYPE' => 6, 'ROU_DEFAULT' => 7, 'ROU_CONDITION' => 8, 'ROU_TO_LAST_USER' => 9, 'ROU_OPTIONAL' => 10, 'ROU_SEND_EMAIL' => 11, 'ROU_SOURCEANCHOR' => 12, 'ROU_TARGETANCHOR' => 13, 'ROU_TO_PORT' => 14, 'ROU_FROM_PORT' => 15, 'ROU_EVN_UID' => 16, 'GAT_UID' => 17, ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, ) ); /** @@ -224,6 +227,8 @@ abstract class BaseRoutePeer $criteria->addSelectColumn(RoutePeer::ROU_TYPE); + $criteria->addSelectColumn(RoutePeer::ROU_DEFAULT); + $criteria->addSelectColumn(RoutePeer::ROU_CONDITION); $criteria->addSelectColumn(RoutePeer::ROU_TO_LAST_USER); @@ -589,6 +594,9 @@ abstract class BaseRoutePeer if ($obj->isNew() || $obj->isColumnModified(RoutePeer::ROU_TYPE)) $columns[RoutePeer::ROU_TYPE] = $obj->getRouType(); + if ($obj->isNew() || $obj->isColumnModified(RoutePeer::ROU_DEFAULT)) + $columns[RoutePeer::ROU_DEFAULT] = $obj->getRouDefault(); + if ($obj->isNew() || $obj->isColumnModified(RoutePeer::ROU_TO_LAST_USER)) $columns[RoutePeer::ROU_TO_LAST_USER] = $obj->getRouToLastUser(); diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml index 372637222..d6cb61027 100755 --- a/workflow/engine/config/schema.xml +++ b/workflow/engine/config/schema.xml @@ -1020,6 +1020,7 @@ + @@ -1049,6 +1050,9 @@ + + + @@ -2555,7 +2559,7 @@ - + diff --git a/workflow/engine/controllers/adminProxy.php b/workflow/engine/controllers/adminProxy.php index da05f8c11..4e21d091e 100644 --- a/workflow/engine/controllers/adminProxy.php +++ b/workflow/engine/controllers/adminProxy.php @@ -1377,7 +1377,7 @@ class adminProxy extends HttpProxyController $licenseInfo[$index] = G::sanitizeInput($value); } } - $params['license'] = $licenseInfo; + $params['l'] = $licenseInfo; //Operative System version (Linux, Windows) try { @@ -1391,27 +1391,27 @@ class adminProxy extends HttpProxyController $os .= " (" . PHP_OS . ")"; } catch (Exception $e) { } - $params['system'] = $os; + $params['s'] = $os; //On premise or cloud $licInfo = $oServerConf->getProperty( 'LICENSE_INFO' ); - $params['licenseType'] = isset($licInfo[SYS_SYS]) ? isset($licInfo[SYS_SYS]['TYPE'])? $licInfo[SYS_SYS]['TYPE'] : '' : ''; + $params['lt'] = isset($licInfo[SYS_SYS]) ? isset($licInfo[SYS_SYS]['TYPE'])? $licInfo[SYS_SYS]['TYPE'] : '' : ''; //ProcessMaker Version - $params['pmVersion'] = System::getVersion(); + $params['v'] = System::getVersion(); if (file_exists(PATH_DATA. 'log/upgrades.log')) { - $params['pmUpgrade'] = serialize(file_get_contents(PATH_DATA. 'log/upgrades.log', 'r')); + $params['pmu'] = serialize(file_get_contents(PATH_DATA. 'log/upgrades.log', 'r')); } else { - $params['pmUpgrade'] = serialize(G::LoadTranslation('ID_UPGRADE_NEVER_UPGRADE')); + $params['pmu'] = serialize(G::LoadTranslation('ID_UPGRADE_NEVER_UPGRADE')); } //Database server Version (MySQL version) $installer = new Installer(); $systemInfo = $installer->getSystemInfo(); try { - $params['dbVersion'] = mysql_get_server_info(); + $params['mysql'] = mysql_get_server_info(); } catch (Exception $e) { - $params['dbVersion'] = ''; + $params['mysql'] = ''; } //PHP Version @@ -1445,7 +1445,7 @@ class adminProxy extends HttpProxyController $plugins[] = $plugin; } } - $params['plugins'] = $plugins; + $params['pl'] = $plugins; //Number of Users registered in PM. Including LDAP users and PM users. require_once ("classes/model/RbacUsers.php"); @@ -1465,12 +1465,12 @@ class adminProxy extends HttpProxyController $users['USR_AUTH_TYPE'] = $row['USERS_NUMBER']; } } - $params["users"] =$users; + $params['u'] = $users; //Number of cases. $oSequences = new Sequences(); $maxNumber = $oSequences->getSequeceNumber("APP_NUMBER"); - $params["cases"] = $maxNumber - 1; + $params['c'] = $maxNumber - 1; //Number of active processes. $criteria = new Criteria( "workflow" ); @@ -1484,11 +1484,11 @@ class adminProxy extends HttpProxyController $row = $rs->getRow(); $process[$row['PRO_STATUS']] = $row['NUMBER_PROCESS']; } - $params["process"] = $process; + $params['p'] = $process; //Country/city (Timezone) - $params["Timezone"] = (defined('TIME_ZONE') && TIME_ZONE != "Unknown") ? TIME_ZONE : date_default_timezone_get(); - $params["countWorkspace"] = count(System::listWorkspaces()); + $params['t'] = (defined('TIME_ZONE') && TIME_ZONE != "Unknown") ? TIME_ZONE : date_default_timezone_get(); + $params['w'] = count(System::listWorkspaces()); $support = PATH_DATA_SITE . G::sanitizeString($licenseManager->info['FIRST_NAME'] . '-' . $licenseManager->info['LAST_NAME'] . '-' . SYS_SYS . '-' . date('YmdHis'), false, false) . '.spm'; file_put_contents($support, serialize($params)); diff --git a/workflow/engine/data/mssql/schema.sql b/workflow/engine/data/mssql/schema.sql index 5579491d4..ce41277de 100755 --- a/workflow/engine/data/mssql/schema.sql +++ b/workflow/engine/data/mssql/schema.sql @@ -1089,6 +1089,7 @@ CREATE TABLE [ROUTE] [ROU_NEXT_TASK] VARCHAR(32) default '0' NOT NULL, [ROU_CASE] INT default 0 NOT NULL, [ROU_TYPE] VARCHAR(25) default 'SEQUENTIAL' NOT NULL, + [ROU_DEFAULT] INT default 0 NOT NULL, [ROU_CONDITION] VARCHAR(512) default '' NOT NULL, [ROU_TO_LAST_USER] VARCHAR(20) default 'FALSE' NOT NULL, [ROU_OPTIONAL] VARCHAR(20) default 'FALSE' NOT NULL, diff --git a/workflow/engine/data/mysql/schema.sql b/workflow/engine/data/mysql/schema.sql index fbd829521..96f6c3314 100755 --- a/workflow/engine/data/mysql/schema.sql +++ b/workflow/engine/data/mysql/schema.sql @@ -489,6 +489,7 @@ CREATE TABLE `ROUTE` `ROU_NEXT_TASK` VARCHAR(32) default '0' NOT NULL, `ROU_CASE` INTEGER default 0 NOT NULL, `ROU_TYPE` VARCHAR(25) default 'SEQUENTIAL' NOT NULL, + `ROU_DEFAULT` INTEGER default 0 NOT NULL, `ROU_CONDITION` VARCHAR(512) default '' NOT NULL, `ROU_TO_LAST_USER` VARCHAR(20) default 'FALSE' NOT NULL, `ROU_OPTIONAL` VARCHAR(20) default 'FALSE' NOT NULL, diff --git a/workflow/engine/data/oracle/schema.sql b/workflow/engine/data/oracle/schema.sql index ebe247a2f..3f4af465e 100755 --- a/workflow/engine/data/oracle/schema.sql +++ b/workflow/engine/data/oracle/schema.sql @@ -608,6 +608,7 @@ CREATE TABLE "ROUTE" "ROU_NEXT_TASK" VARCHAR2(32) default '0' NOT NULL, "ROU_CASE" NUMBER default 0 NOT NULL, "ROU_TYPE" VARCHAR2(25) default 'SEQUENTIAL' NOT NULL, + "ROU_DEFAULT" NUMBER default 0 NOT NULL, "ROU_CONDITION" VARCHAR2(512) default '' NOT NULL, "ROU_TO_LAST_USER" VARCHAR2(20) default 'FALSE' NOT NULL, "ROU_OPTIONAL" VARCHAR2(20) default 'FALSE' NOT NULL, diff --git a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php index 398e57612..813f0f168 100644 --- a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php @@ -522,7 +522,7 @@ class BpmnWorkflow extends Project\Bpmn $this->wp->addRoute($activity["ACT_UID"], -1, $routeType, $condition); } } else { - $this->wp->addRoute($activity["ACT_UID"], $gatewayFlow['FLO_ELEMENT_DEST'], $routeType, $condition); + $this->wp->addRoute($activity["ACT_UID"], $gatewayFlow["FLO_ELEMENT_DEST"], $routeType, $condition, ($gatewayFlow["FLO_TYPE"] == "DEFAULT")? 1 : 0); } break; default: diff --git a/workflow/engine/src/ProcessMaker/Project/Workflow.php b/workflow/engine/src/ProcessMaker/Project/Workflow.php index 3fed4d2b3..cfe469619 100644 --- a/workflow/engine/src/ProcessMaker/Project/Workflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Workflow.php @@ -364,7 +364,7 @@ class Workflow extends Handler * @return string * @throws \Exception */ - public function addRoute($fromTasUid, $toTasUid, $type, $condition = "") + public function addRoute($fromTasUid, $toTasUid, $type, $condition = "", $default = 0) { try { $validTypes = array("SEQUENTIAL", "SELECT", "EVALUATE", "PARALLEL", "PARALLEL-BY-EVALUATION", "SEC-JOIN", "DISCRIMINATOR"); @@ -390,12 +390,13 @@ class Workflow extends Handler )); if (is_null($route)) { - $result = $this->saveNewPattern($this->proUid, $fromTasUid, $toTasUid, $type, $condition); + $result = $this->saveNewPattern($this->proUid, $fromTasUid, $toTasUid, $type, $condition, $default); } else { $result = $this->updateRoute($route->getRouUid(), array( "TAS_UID" => $fromTasUid, "ROU_NEXT_TASK" => $toTasUid, "ROU_TYPE" => $type, + "ROU_DEFAULT" => $default, "ROU_CONDITION" => $condition )); } @@ -503,7 +504,7 @@ class Workflow extends Handler } } - private function saveNewPattern($sProcessUID = '', $sTaskUID = '', $sNextTask = '', $sType = '', $condition = '') + private function saveNewPattern($sProcessUID = "", $sTaskUID = "", $sNextTask = "", $sType = "", $condition = "", $default = 0) { try { self::log("Add Route from task: $sTaskUID -> to task: $sNextTask ($sType)"); @@ -523,8 +524,9 @@ class Workflow extends Handler $aFields['PRO_UID'] = $sProcessUID; $aFields['TAS_UID'] = $sTaskUID; $aFields['ROU_NEXT_TASK'] = $sNextTask; - $aFields['ROU_TYPE'] = $sType; - $aFields['ROU_CASE'] = (int) $aRow['ROUTE_NUMBER'] + 1; + $aFields["ROU_CASE"] = (int)($aRow["ROUTE_NUMBER"]) + 1; + $aFields["ROU_TYPE"] = $sType; + $aFields["ROU_DEFAULT"] = $default; if(! empty($condition)) { $aFields['ROU_CONDITION'] = $condition;