diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php
index b2dd81cee..aa039c0ed 100755
--- a/workflow/engine/classes/class.derivation.php
+++ b/workflow/engine/classes/class.derivation.php
@@ -50,6 +50,28 @@ class Derivation
var $case;
protected $flagControl;
protected $flagControlMulInstance;
+ private $regexpTaskTypeToInclude;
+
+ public function __construct()
+ {
+ $this->setRegexpTaskTypeToInclude("GATEWAYTOGATEWAY|END-MESSAGE-EVENT|END-EMAIL-EVENT");
+ }
+
+ /**
+ * @return mixed
+ */
+ public function getRegexpTaskTypeToInclude()
+ {
+ return $this->regexpTaskTypeToInclude;
+ }
+
+ /**
+ * @param mixed $regexpTaskTypeToInclude
+ */
+ public function setRegexpTaskTypeToInclude($regexpTaskTypeToInclude)
+ {
+ $this->regexpTaskTypeToInclude = $regexpTaskTypeToInclude;
+ }
/**
* prepareInformationTask
@@ -240,15 +262,15 @@ class Derivation
foreach ($arrayNextTaskBackup as $value) {
$arrayNextTaskData = $value;
- $regexpTaskTypeToInclude = "GATEWAYTOGATEWAY|END-MESSAGE-EVENT|END-EMAIL-EVENT";
-
if ($arrayNextTaskData["NEXT_TASK"]["TAS_UID"] != "-1" &&
- preg_match("/^(?:" . $regexpTaskTypeToInclude . ")$/", $arrayNextTaskData["NEXT_TASK"]["TAS_TYPE"])
+ preg_match("/^(?:" . $this->regexpTaskTypeToInclude . ")$/", $arrayNextTaskData["NEXT_TASK"]["TAS_TYPE"])
) {
$arrayAux = $this->prepareInformation($arrayData, $arrayNextTaskData["NEXT_TASK"]["TAS_UID"]);
foreach ($arrayAux as $value2) {
- $arrayNextTask[++$i] = $value2;
+ $key = ++$i;
+ $arrayNextTask[$key] = $value2;
+ $arrayNextTask[$key]['SOURCE_UID'] = $value['ROU_NEXT_TASK'];
foreach($aSecJoin as $rsj){
$arrayNextTask[$i]["NEXT_TASK"]["ROU_PREVIOUS_TASK"] = $rsj["ROU_PREVIOUS_TASK"];
$arrayNextTask[$i]["NEXT_TASK"]["ROU_PREVIOUS_TYPE"] = "SEC-JOIN";
@@ -262,7 +284,7 @@ class Derivation
) {
$arrayNextTaskData["NEXT_TASK"]["TAS_UID"] = $arrayNextTaskData["TAS_UID"] . "/" . $arrayNextTaskData["NEXT_TASK"]["TAS_UID"];
}
-
+ $arrayNextTaskData['SOURCE_UID'] = $value['ROU_NEXT_TASK'];
$arrayNextTask[++$i] = $arrayNextTaskData;
foreach($aSecJoin as $rsj){
$arrayNextTask[$i]["NEXT_TASK"]["ROU_PREVIOUS_TASK"] = $rsj["ROU_PREVIOUS_TASK"];
@@ -781,6 +803,47 @@ class Derivation
/*----------------------------------********---------------------------------*/
}
+ /**
+ * Get valid origin Task
+ *
+ * @param string $applicationUid Unique id of Case
+ * @param int $delIndex Delegation index
+ *
+ * @return string Returns valid origin Task
+ */
+ private function __getTaskUidOrigin($applicationUid, $delIndex)
+ {
+ $taskUidOrigin = '';
+
+ do {
+ $criteria = new Criteria('workflow');
+
+ $criteria->addSelectColumn(AppDelegationPeer::DEL_PREVIOUS);
+ $criteria->addSelectColumn(TaskPeer::TAS_UID);
+ $criteria->addSelectColumn(TaskPeer::TAS_TYPE);
+
+ $criteria->addJoin(AppDelegationPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::INNER_JOIN);
+ $criteria->add(AppDelegationPeer::APP_UID, $applicationUid, Criteria::EQUAL);
+ $criteria->add(AppDelegationPeer::DEL_INDEX, $delIndex, Criteria::EQUAL);
+
+ $rsCriteria = AppDelegationPeer::doSelectRS($criteria);
+ $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+
+ if ($rsCriteria->next()) {
+ $record = $rsCriteria->getRow();
+
+ if (preg_match('/^(?:' . 'NORMAL|SCRIPT\-TASK|WEBENTRYEVENT|START\-MESSAGE\-EVENT|START\-TIMER\-EVENT' . ')$/', $record['TAS_TYPE'])) {
+ $taskUidOrigin = $record['TAS_UID'];
+ }
+
+ $delIndex = $record['DEL_PREVIOUS'];
+ }
+ } while ($taskUidOrigin == '');
+
+ //Return
+ return $taskUidOrigin;
+ }
+
/** Derivate
*
* @param array $currentDelegation
@@ -806,6 +869,8 @@ class Derivation
//Get data for this DEL_INDEX current
$appFields = $this->case->loadCase( $currentDelegation['APP_UID'], $currentDelegation['DEL_INDEX'] );
+ unset($appFields['APP_ROUTING_DATA']);
+
//We close the current derivation, then we'll try to derivate to each defined route
$this->case->CloseCurrentDelegation( $currentDelegation['APP_UID'], $currentDelegation['DEL_INDEX'] );
@@ -1021,6 +1086,7 @@ class Derivation
break;
default:
$iNewDelIndex = $this->doDerivation($currentDelegation, $nextDel, $appFields, $aSP);
+
if($iNewDelIndex !== 0){
$arrayDerivationResult[] = ['DEL_INDEX' => $iNewDelIndex, 'TAS_UID' => $nextDel['TAS_UID'], 'USR_UID' => (isset($nextDel['USR_UID']))? $nextDel['USR_UID'] : ''];
}
@@ -1069,15 +1135,22 @@ class Derivation
foreach ($arrayTaskNextDelNextDelegations as $key2 => $value2) {
$arrayTaskNextDelNextDel = $value2;
- if($arrayTaskNextDelNextDel["NEXT_TASK"]["TAS_ASSIGN_TYPE"] == 'MULTIPLE_INSTANCE'){
- $aUserAssigned = true;
- if(!isset($arrayTaskNextDelNextDel["NEXT_TASK"]["USER_ASSIGNED"]["0"]["USR_UID"])){
- throw new Exception(G::LoadTranslation("ID_NO_USERS"));
- }
- } else {
- if (!isset($arrayTaskNextDelNextDel["NEXT_TASK"]["USER_ASSIGNED"]["USR_UID"])) {
- throw new Exception(G::LoadTranslation("ID_NO_USERS"));
- }
+ switch ($arrayTaskNextDelNextDel['NEXT_TASK']['TAS_ASSIGN_TYPE']) {
+ case 'MANUAL':
+ $arrayTaskNextDelNextDel['NEXT_TASK']['USER_ASSIGNED']['USR_UID'] = '';
+ break;
+ case 'MULTIPLE_INSTANCE':
+ if (!isset($arrayTaskNextDelNextDel['NEXT_TASK']['USER_ASSIGNED']['0']['USR_UID'])) {
+ throw new Exception(G::LoadTranslation('ID_NO_USERS'));
+ }
+
+ $arrayTaskNextDelNextDel['NEXT_TASK']['USER_ASSIGNED']['USR_UID'] = '';
+ break;
+ default:
+ if (!isset($arrayTaskNextDelNextDel['NEXT_TASK']['USER_ASSIGNED']['USR_UID'])) {
+ throw new Exception(G::LoadTranslation('ID_NO_USERS'));
+ }
+ break;
}
$rouPreType = "";
@@ -1088,6 +1161,7 @@ class Derivation
$rouPreType = $arrayTaskNextDelNextDel["NEXT_TASK"]["ROU_PREVIOUS_TYPE"];
$rouPreTask = $arrayTaskNextDelNextDel["NEXT_TASK"]["ROU_PREVIOUS_TASK"];
}
+
$nextDelegationsAux[++$i] = array(
"TAS_UID" => $arrayTaskNextDelNextDel["NEXT_TASK"]["TAS_UID"],
"USR_UID" => $arrayTaskNextDelNextDel["NEXT_TASK"]["USER_ASSIGNED"]["USR_UID"],
@@ -1195,15 +1269,39 @@ class Derivation
function doDerivation ($currentDelegation, $nextDel, $appFields, $aSP = null)
{
+ $case = new \ProcessMaker\BusinessModel\Cases();
+ $arrayApplicationData = $case->getApplicationRecordByPk($currentDelegation['APP_UID'], [], false);
+
+ $arrayRoutingData = (!is_null($arrayApplicationData['APP_ROUTING_DATA']) && $arrayApplicationData['APP_ROUTING_DATA'] != '')? unserialize($arrayApplicationData['APP_ROUTING_DATA']) : [];
+
$iAppThreadIndex = $appFields['DEL_THREAD'];
$delType = 'NORMAL';
$sendNotificationsMobile = false;
+ $taskNextDel = TaskPeer::retrieveByPK($nextDel["TAS_UID"]);
+
+ $taskUidOrigin = $this->__getTaskUidOrigin($currentDelegation['APP_UID'], $currentDelegation['DEL_INDEX']);
+ $taskUidDest = $taskNextDel->getTasUid();
+
+ if (array_key_exists($taskUidOrigin . '/' . $taskUidDest, $arrayRoutingData)) {
+ $nextDel['USR_UID'] = $arrayRoutingData[$taskUidOrigin . '/' . $taskUidDest]['USR_UID'];
+
+ unset($arrayRoutingData[$taskUidOrigin . '/' . $taskUidDest]);
+ }
+
+ if ($taskNextDel->getTasType() == 'NORMAL' &&
+ $taskNextDel->getTasAssignType() != 'SELF_SERVICE' &&
+ (is_null($nextDel['USR_UID']) || $nextDel['USR_UID'] == '')
+ ) {
+ throw new Exception(G::LoadTranslation('ID_NO_USERS'));
+ }
+
if (is_numeric( $nextDel['DEL_PRIORITY'] )) {
$nextDel['DEL_PRIORITY'] = (isset( $nextDel['DEL_PRIORITY'] ) ? ($nextDel['DEL_PRIORITY'] >= 1 && $nextDel['DEL_PRIORITY'] <= 5 ? $nextDel['DEL_PRIORITY'] : '3') : '3');
} else {
$nextDel['DEL_PRIORITY'] = 3;
}
+
switch ($nextDel['TAS_ASSIGN_TYPE']) {
case 'CANCEL_MI':
case 'STATIC_MI':
@@ -1245,6 +1343,20 @@ class Derivation
break;
}
+ if (array_key_exists('NEXT_ROUTING', $nextDel) && is_array($nextDel['NEXT_ROUTING']) && !empty($nextDel['NEXT_ROUTING'])) {
+ if (array_key_exists('TAS_UID', $nextDel['NEXT_ROUTING'])) {
+ $arrayRoutingData[$currentDelegation['TAS_UID'] . '/' . $nextDel['NEXT_ROUTING']['TAS_UID']] = $nextDel['NEXT_ROUTING'];
+ } else {
+ foreach ($nextDel['NEXT_ROUTING'] as $value) {
+ $arrayRoutingData[$currentDelegation['TAS_UID'] . '/' . $value['TAS_UID']] = $value;
+ }
+ }
+ }
+
+ $application = new Application();
+ $result = $application->update(['APP_UID' => $currentDelegation['APP_UID'], 'APP_ROUTING_DATA' => serialize($arrayRoutingData)]);
+
+ //APP_THREAD
$iAppThreadIndex = $appFields['DEL_THREAD'];
switch ($currentDelegation['ROU_TYPE']) {
diff --git a/workflow/engine/classes/class.pmScript.php b/workflow/engine/classes/class.pmScript.php
index 51d661445..bd5c3d954 100644
--- a/workflow/engine/classes/class.pmScript.php
+++ b/workflow/engine/classes/class.pmScript.php
@@ -368,7 +368,7 @@ class PMScript
/**
* Evaluate the current script
*
- * @return null
+ * @return boolean
*/
public function evaluate ()
{
diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php
index 2df12068c..8f2ad869b 100755
--- a/workflow/engine/classes/class.wsBase.php
+++ b/workflow/engine/classes/class.wsBase.php
@@ -2379,12 +2379,6 @@ class wsBase
}
foreach ($derive as $key => $val) {
- if ($val['NEXT_TASK']['TAS_ASSIGN_TYPE'] == 'MANUAL') {
- $result = new wsResponse(15, G::LoadTranslation('ID_TASK_DEFINED_MANUAL_ASSIGNMENT'));
-
- return $result;
- }
-
//Routed to the next task, if end process then not exist user
$nodeNext = array();
$usrasgdUid = null;
diff --git a/workflow/engine/classes/model/map/ApplicationMapBuilder.php b/workflow/engine/classes/model/map/ApplicationMapBuilder.php
index 167f35e29..6bd09a85a 100755
--- a/workflow/engine/classes/model/map/ApplicationMapBuilder.php
+++ b/workflow/engine/classes/model/map/ApplicationMapBuilder.php
@@ -107,6 +107,8 @@ class ApplicationMapBuilder
$tMap->addColumn('APP_DRIVE_FOLDER_UID', 'AppDriveFolderUid', 'string', CreoleTypes::VARCHAR, false, 32);
+ $tMap->addColumn('APP_ROUTING_DATA', 'AppRoutingData', 'string', CreoleTypes::LONGVARCHAR, false, null);
+
$tMap->addValidator('APP_STATUS', 'validValues', 'propel.validator.ValidValuesValidator', 'DRAFT|TO_DO|PAUSED|COMPLETED|CANCELLED', 'Please select a valid status.');
} // doBuild()
diff --git a/workflow/engine/classes/model/om/BaseApplication.php b/workflow/engine/classes/model/om/BaseApplication.php
index 437bdd259..f04ca84c1 100755
--- a/workflow/engine/classes/model/om/BaseApplication.php
+++ b/workflow/engine/classes/model/om/BaseApplication.php
@@ -153,6 +153,12 @@ abstract class BaseApplication extends BaseObject implements Persistent
*/
protected $app_drive_folder_uid = '';
+ /**
+ * The value for the app_routing_data field.
+ * @var string
+ */
+ protected $app_routing_data;
+
/**
* Flag to prevent endless save loop, if this object is referenced
* by another object which falls in this transaction.
@@ -482,6 +488,17 @@ abstract class BaseApplication extends BaseObject implements Persistent
return $this->app_drive_folder_uid;
}
+ /**
+ * Get the [app_routing_data] column value.
+ *
+ * @return string
+ */
+ public function getAppRoutingData()
+ {
+
+ return $this->app_routing_data;
+ }
+
/**
* Set the value of [app_uid] column.
*
@@ -960,6 +977,28 @@ abstract class BaseApplication extends BaseObject implements Persistent
} // setAppDriveFolderUid()
+ /**
+ * Set the value of [app_routing_data] column.
+ *
+ * @param string $v new value
+ * @return void
+ */
+ public function setAppRoutingData($v)
+ {
+
+ // Since the native PHP type for this column is string,
+ // we will cast the input to a string (if it is not).
+ if ($v !== null && !is_string($v)) {
+ $v = (string) $v;
+ }
+
+ if ($this->app_routing_data !== $v) {
+ $this->app_routing_data = $v;
+ $this->modifiedColumns[] = ApplicationPeer::APP_ROUTING_DATA;
+ }
+
+ } // setAppRoutingData()
+
/**
* Hydrates (populates) the object variables with values from the database resultset.
*
@@ -1019,12 +1058,14 @@ abstract class BaseApplication extends BaseObject implements Persistent
$this->app_drive_folder_uid = $rs->getString($startcol + 20);
+ $this->app_routing_data = $rs->getString($startcol + 21);
+
$this->resetModified();
$this->setNew(false);
// FIXME - using NUM_COLUMNS may be clearer.
- return $startcol + 21; // 21 = ApplicationPeer::NUM_COLUMNS - ApplicationPeer::NUM_LAZY_LOAD_COLUMNS).
+ return $startcol + 22; // 22 = ApplicationPeer::NUM_COLUMNS - ApplicationPeer::NUM_LAZY_LOAD_COLUMNS).
} catch (Exception $e) {
throw new PropelException("Error populating Application object", $e);
@@ -1291,6 +1332,9 @@ abstract class BaseApplication extends BaseObject implements Persistent
case 20:
return $this->getAppDriveFolderUid();
break;
+ case 21:
+ return $this->getAppRoutingData();
+ break;
default:
return null;
break;
@@ -1332,6 +1376,7 @@ abstract class BaseApplication extends BaseObject implements Persistent
$keys[18] => $this->getAppDuration(),
$keys[19] => $this->getAppDelayDuration(),
$keys[20] => $this->getAppDriveFolderUid(),
+ $keys[21] => $this->getAppRoutingData(),
);
return $result;
}
@@ -1426,6 +1471,9 @@ abstract class BaseApplication extends BaseObject implements Persistent
case 20:
$this->setAppDriveFolderUid($value);
break;
+ case 21:
+ $this->setAppRoutingData($value);
+ break;
} // switch()
}
@@ -1533,6 +1581,10 @@ abstract class BaseApplication extends BaseObject implements Persistent
$this->setAppDriveFolderUid($arr[$keys[20]]);
}
+ if (array_key_exists($keys[21], $arr)) {
+ $this->setAppRoutingData($arr[$keys[21]]);
+ }
+
}
/**
@@ -1628,6 +1680,10 @@ abstract class BaseApplication extends BaseObject implements Persistent
$criteria->add(ApplicationPeer::APP_DRIVE_FOLDER_UID, $this->app_drive_folder_uid);
}
+ if ($this->isColumnModified(ApplicationPeer::APP_ROUTING_DATA)) {
+ $criteria->add(ApplicationPeer::APP_ROUTING_DATA, $this->app_routing_data);
+ }
+
return $criteria;
}
@@ -1722,6 +1778,8 @@ abstract class BaseApplication extends BaseObject implements Persistent
$copyObj->setAppDriveFolderUid($this->app_drive_folder_uid);
+ $copyObj->setAppRoutingData($this->app_routing_data);
+
$copyObj->setNew(true);
diff --git a/workflow/engine/classes/model/om/BaseApplicationPeer.php b/workflow/engine/classes/model/om/BaseApplicationPeer.php
index 508479f0b..bd869e1b7 100755
--- a/workflow/engine/classes/model/om/BaseApplicationPeer.php
+++ b/workflow/engine/classes/model/om/BaseApplicationPeer.php
@@ -25,7 +25,7 @@ abstract class BaseApplicationPeer
const CLASS_DEFAULT = 'classes.model.Application';
/** The total number of columns. */
- const NUM_COLUMNS = 21;
+ const NUM_COLUMNS = 22;
/** The number of lazy-loaded columns. */
const NUM_LAZY_LOAD_COLUMNS = 0;
@@ -94,6 +94,9 @@ abstract class BaseApplicationPeer
/** the column name for the APP_DRIVE_FOLDER_UID field */
const APP_DRIVE_FOLDER_UID = 'APPLICATION.APP_DRIVE_FOLDER_UID';
+ /** the column name for the APP_ROUTING_DATA field */
+ const APP_ROUTING_DATA = 'APPLICATION.APP_ROUTING_DATA';
+
/** The PHP to DB Name Mapping */
private static $phpNameMap = null;
@@ -105,10 +108,10 @@ abstract class BaseApplicationPeer
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/
private static $fieldNames = array (
- BasePeer::TYPE_PHPNAME => array ('AppUid', 'AppTitle', 'AppDescription', 'AppNumber', 'AppParent', 'AppStatus', 'ProUid', 'AppProcStatus', 'AppProcCode', 'AppParallel', 'AppInitUser', 'AppCurUser', 'AppCreateDate', 'AppInitDate', 'AppFinishDate', 'AppUpdateDate', 'AppData', 'AppPin', 'AppDuration', 'AppDelayDuration', 'AppDriveFolderUid', ),
- BasePeer::TYPE_COLNAME => array (ApplicationPeer::APP_UID, ApplicationPeer::APP_TITLE, ApplicationPeer::APP_DESCRIPTION, ApplicationPeer::APP_NUMBER, ApplicationPeer::APP_PARENT, ApplicationPeer::APP_STATUS, ApplicationPeer::PRO_UID, ApplicationPeer::APP_PROC_STATUS, ApplicationPeer::APP_PROC_CODE, ApplicationPeer::APP_PARALLEL, ApplicationPeer::APP_INIT_USER, ApplicationPeer::APP_CUR_USER, ApplicationPeer::APP_CREATE_DATE, ApplicationPeer::APP_INIT_DATE, ApplicationPeer::APP_FINISH_DATE, ApplicationPeer::APP_UPDATE_DATE, ApplicationPeer::APP_DATA, ApplicationPeer::APP_PIN, ApplicationPeer::APP_DURATION, ApplicationPeer::APP_DELAY_DURATION, ApplicationPeer::APP_DRIVE_FOLDER_UID, ),
- BasePeer::TYPE_FIELDNAME => array ('APP_UID', 'APP_TITLE', 'APP_DESCRIPTION', 'APP_NUMBER', 'APP_PARENT', 'APP_STATUS', 'PRO_UID', 'APP_PROC_STATUS', 'APP_PROC_CODE', 'APP_PARALLEL', 'APP_INIT_USER', 'APP_CUR_USER', 'APP_CREATE_DATE', 'APP_INIT_DATE', 'APP_FINISH_DATE', 'APP_UPDATE_DATE', 'APP_DATA', 'APP_PIN', 'APP_DURATION', 'APP_DELAY_DURATION', 'APP_DRIVE_FOLDER_UID', ),
- BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, )
+ BasePeer::TYPE_PHPNAME => array ('AppUid', 'AppTitle', 'AppDescription', 'AppNumber', 'AppParent', 'AppStatus', 'ProUid', 'AppProcStatus', 'AppProcCode', 'AppParallel', 'AppInitUser', 'AppCurUser', 'AppCreateDate', 'AppInitDate', 'AppFinishDate', 'AppUpdateDate', 'AppData', 'AppPin', 'AppDuration', 'AppDelayDuration', 'AppDriveFolderUid', 'AppRoutingData', ),
+ BasePeer::TYPE_COLNAME => array (ApplicationPeer::APP_UID, ApplicationPeer::APP_TITLE, ApplicationPeer::APP_DESCRIPTION, ApplicationPeer::APP_NUMBER, ApplicationPeer::APP_PARENT, ApplicationPeer::APP_STATUS, ApplicationPeer::PRO_UID, ApplicationPeer::APP_PROC_STATUS, ApplicationPeer::APP_PROC_CODE, ApplicationPeer::APP_PARALLEL, ApplicationPeer::APP_INIT_USER, ApplicationPeer::APP_CUR_USER, ApplicationPeer::APP_CREATE_DATE, ApplicationPeer::APP_INIT_DATE, ApplicationPeer::APP_FINISH_DATE, ApplicationPeer::APP_UPDATE_DATE, ApplicationPeer::APP_DATA, ApplicationPeer::APP_PIN, ApplicationPeer::APP_DURATION, ApplicationPeer::APP_DELAY_DURATION, ApplicationPeer::APP_DRIVE_FOLDER_UID, ApplicationPeer::APP_ROUTING_DATA, ),
+ BasePeer::TYPE_FIELDNAME => array ('APP_UID', 'APP_TITLE', 'APP_DESCRIPTION', 'APP_NUMBER', 'APP_PARENT', 'APP_STATUS', 'PRO_UID', 'APP_PROC_STATUS', 'APP_PROC_CODE', 'APP_PARALLEL', 'APP_INIT_USER', 'APP_CUR_USER', 'APP_CREATE_DATE', 'APP_INIT_DATE', 'APP_FINISH_DATE', 'APP_UPDATE_DATE', 'APP_DATA', 'APP_PIN', 'APP_DURATION', 'APP_DELAY_DURATION', 'APP_DRIVE_FOLDER_UID', 'APP_ROUTING_DATA', ),
+ BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, )
);
/**
@@ -118,10 +121,10 @@ abstract class BaseApplicationPeer
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
*/
private static $fieldKeys = array (
- BasePeer::TYPE_PHPNAME => array ('AppUid' => 0, 'AppTitle' => 1, 'AppDescription' => 2, 'AppNumber' => 3, 'AppParent' => 4, 'AppStatus' => 5, 'ProUid' => 6, 'AppProcStatus' => 7, 'AppProcCode' => 8, 'AppParallel' => 9, 'AppInitUser' => 10, 'AppCurUser' => 11, 'AppCreateDate' => 12, 'AppInitDate' => 13, 'AppFinishDate' => 14, 'AppUpdateDate' => 15, 'AppData' => 16, 'AppPin' => 17, 'AppDuration' => 18, 'AppDelayDuration' => 19, 'AppDriveFolderUid' => 20, ),
- BasePeer::TYPE_COLNAME => array (ApplicationPeer::APP_UID => 0, ApplicationPeer::APP_TITLE => 1, ApplicationPeer::APP_DESCRIPTION => 2, ApplicationPeer::APP_NUMBER => 3, ApplicationPeer::APP_PARENT => 4, ApplicationPeer::APP_STATUS => 5, ApplicationPeer::PRO_UID => 6, ApplicationPeer::APP_PROC_STATUS => 7, ApplicationPeer::APP_PROC_CODE => 8, ApplicationPeer::APP_PARALLEL => 9, ApplicationPeer::APP_INIT_USER => 10, ApplicationPeer::APP_CUR_USER => 11, ApplicationPeer::APP_CREATE_DATE => 12, ApplicationPeer::APP_INIT_DATE => 13, ApplicationPeer::APP_FINISH_DATE => 14, ApplicationPeer::APP_UPDATE_DATE => 15, ApplicationPeer::APP_DATA => 16, ApplicationPeer::APP_PIN => 17, ApplicationPeer::APP_DURATION => 18, ApplicationPeer::APP_DELAY_DURATION => 19, ApplicationPeer::APP_DRIVE_FOLDER_UID => 20, ),
- BasePeer::TYPE_FIELDNAME => array ('APP_UID' => 0, 'APP_TITLE' => 1, 'APP_DESCRIPTION' => 2, 'APP_NUMBER' => 3, 'APP_PARENT' => 4, 'APP_STATUS' => 5, 'PRO_UID' => 6, 'APP_PROC_STATUS' => 7, 'APP_PROC_CODE' => 8, 'APP_PARALLEL' => 9, 'APP_INIT_USER' => 10, 'APP_CUR_USER' => 11, 'APP_CREATE_DATE' => 12, 'APP_INIT_DATE' => 13, 'APP_FINISH_DATE' => 14, 'APP_UPDATE_DATE' => 15, 'APP_DATA' => 16, 'APP_PIN' => 17, 'APP_DURATION' => 18, 'APP_DELAY_DURATION' => 19, 'APP_DRIVE_FOLDER_UID' => 20, ),
- BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, )
+ BasePeer::TYPE_PHPNAME => array ('AppUid' => 0, 'AppTitle' => 1, 'AppDescription' => 2, 'AppNumber' => 3, 'AppParent' => 4, 'AppStatus' => 5, 'ProUid' => 6, 'AppProcStatus' => 7, 'AppProcCode' => 8, 'AppParallel' => 9, 'AppInitUser' => 10, 'AppCurUser' => 11, 'AppCreateDate' => 12, 'AppInitDate' => 13, 'AppFinishDate' => 14, 'AppUpdateDate' => 15, 'AppData' => 16, 'AppPin' => 17, 'AppDuration' => 18, 'AppDelayDuration' => 19, 'AppDriveFolderUid' => 20, 'AppRoutingData' => 21, ),
+ BasePeer::TYPE_COLNAME => array (ApplicationPeer::APP_UID => 0, ApplicationPeer::APP_TITLE => 1, ApplicationPeer::APP_DESCRIPTION => 2, ApplicationPeer::APP_NUMBER => 3, ApplicationPeer::APP_PARENT => 4, ApplicationPeer::APP_STATUS => 5, ApplicationPeer::PRO_UID => 6, ApplicationPeer::APP_PROC_STATUS => 7, ApplicationPeer::APP_PROC_CODE => 8, ApplicationPeer::APP_PARALLEL => 9, ApplicationPeer::APP_INIT_USER => 10, ApplicationPeer::APP_CUR_USER => 11, ApplicationPeer::APP_CREATE_DATE => 12, ApplicationPeer::APP_INIT_DATE => 13, ApplicationPeer::APP_FINISH_DATE => 14, ApplicationPeer::APP_UPDATE_DATE => 15, ApplicationPeer::APP_DATA => 16, ApplicationPeer::APP_PIN => 17, ApplicationPeer::APP_DURATION => 18, ApplicationPeer::APP_DELAY_DURATION => 19, ApplicationPeer::APP_DRIVE_FOLDER_UID => 20, ApplicationPeer::APP_ROUTING_DATA => 21, ),
+ BasePeer::TYPE_FIELDNAME => array ('APP_UID' => 0, 'APP_TITLE' => 1, 'APP_DESCRIPTION' => 2, 'APP_NUMBER' => 3, 'APP_PARENT' => 4, 'APP_STATUS' => 5, 'PRO_UID' => 6, 'APP_PROC_STATUS' => 7, 'APP_PROC_CODE' => 8, 'APP_PARALLEL' => 9, 'APP_INIT_USER' => 10, 'APP_CUR_USER' => 11, 'APP_CREATE_DATE' => 12, 'APP_INIT_DATE' => 13, 'APP_FINISH_DATE' => 14, 'APP_UPDATE_DATE' => 15, 'APP_DATA' => 16, 'APP_PIN' => 17, 'APP_DURATION' => 18, 'APP_DELAY_DURATION' => 19, 'APP_DRIVE_FOLDER_UID' => 20, 'APP_ROUTING_DATA' => 21, ),
+ BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, )
);
/**
@@ -264,6 +267,8 @@ abstract class BaseApplicationPeer
$criteria->addSelectColumn(ApplicationPeer::APP_DRIVE_FOLDER_UID);
+ $criteria->addSelectColumn(ApplicationPeer::APP_ROUTING_DATA);
+
}
const COUNT = 'COUNT(APPLICATION.APP_UID)';
diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml
index d3bf953bb..e2b2f3ab6 100755
--- a/workflow/engine/config/schema.xml
+++ b/workflow/engine/config/schema.xml
@@ -42,6 +42,7 @@