Merged in paulis/processmaker/PM-4270 (pull request #3282)

PM-4270
This commit is contained in:
Julio Cesar Laura Avendaño
2015-12-02 17:07:08 -04:00
7 changed files with 94 additions and 18 deletions

View File

@@ -101,6 +101,8 @@ class RouteMapBuilder
$tMap->addColumn('GAT_UID', 'GatUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('ROU_ELEMENT_ORIGIN', 'RouElementOrigin', 'string', CreoleTypes::VARCHAR, false, 32);
$tMap->addValidator('ROU_UID', 'maxLength', 'propel.validator.MaxLengthValidator', '32', 'Route UID can be no larger than 32 in size');
$tMap->addValidator('ROU_UID', 'required', 'propel.validator.RequiredValidator', '', 'Route UID is required.');

View File

@@ -135,6 +135,12 @@ abstract class BaseRoute extends BaseObject implements Persistent
*/
protected $gat_uid = '';
/**
* The value for the rou_element_origin field.
* @var string
*/
protected $rou_element_origin = '';
/**
* Flag to prevent endless save loop, if this object is referenced
* by another object which falls in this transaction.
@@ -347,6 +353,17 @@ abstract class BaseRoute extends BaseObject implements Persistent
return $this->gat_uid;
}
/**
* Get the [rou_element_origin] column value.
*
* @return string
*/
public function getRouElementOrigin()
{
return $this->rou_element_origin;
}
/**
* Set the value of [rou_uid] column.
*
@@ -743,6 +760,28 @@ abstract class BaseRoute extends BaseObject implements Persistent
} // setGatUid()
/**
* Set the value of [rou_element_origin] column.
*
* @param string $v new value
* @return void
*/
public function setRouElementOrigin($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->rou_element_origin !== $v || $v === '') {
$this->rou_element_origin = $v;
$this->modifiedColumns[] = RoutePeer::ROU_ELEMENT_ORIGIN;
}
} // setRouElementOrigin()
/**
* Hydrates (populates) the object variables with values from the database resultset.
*
@@ -796,12 +835,14 @@ abstract class BaseRoute extends BaseObject implements Persistent
$this->gat_uid = $rs->getString($startcol + 17);
$this->rou_element_origin = $rs->getString($startcol + 18);
$this->resetModified();
$this->setNew(false);
// FIXME - using NUM_COLUMNS may be clearer.
return $startcol + 18; // 18 = RoutePeer::NUM_COLUMNS - RoutePeer::NUM_LAZY_LOAD_COLUMNS).
return $startcol + 19; // 19 = RoutePeer::NUM_COLUMNS - RoutePeer::NUM_LAZY_LOAD_COLUMNS).
} catch (Exception $e) {
throw new PropelException("Error populating Route object", $e);
@@ -1059,6 +1100,9 @@ abstract class BaseRoute extends BaseObject implements Persistent
case 17:
return $this->getGatUid();
break;
case 18:
return $this->getRouElementOrigin();
break;
default:
return null;
break;
@@ -1097,6 +1141,7 @@ abstract class BaseRoute extends BaseObject implements Persistent
$keys[15] => $this->getRouFromPort(),
$keys[16] => $this->getRouEvnUid(),
$keys[17] => $this->getGatUid(),
$keys[18] => $this->getRouElementOrigin(),
);
return $result;
}
@@ -1182,6 +1227,9 @@ abstract class BaseRoute extends BaseObject implements Persistent
case 17:
$this->setGatUid($value);
break;
case 18:
$this->setRouElementOrigin($value);
break;
} // switch()
}
@@ -1277,6 +1325,10 @@ abstract class BaseRoute extends BaseObject implements Persistent
$this->setGatUid($arr[$keys[17]]);
}
if (array_key_exists($keys[18], $arr)) {
$this->setRouElementOrigin($arr[$keys[18]]);
}
}
/**
@@ -1360,6 +1412,10 @@ abstract class BaseRoute extends BaseObject implements Persistent
$criteria->add(RoutePeer::GAT_UID, $this->gat_uid);
}
if ($this->isColumnModified(RoutePeer::ROU_ELEMENT_ORIGIN)) {
$criteria->add(RoutePeer::ROU_ELEMENT_ORIGIN, $this->rou_element_origin);
}
return $criteria;
}
@@ -1448,6 +1504,8 @@ abstract class BaseRoute extends BaseObject implements Persistent
$copyObj->setGatUid($this->gat_uid);
$copyObj->setRouElementOrigin($this->rou_element_origin);
$copyObj->setNew(true);

View File

@@ -25,7 +25,7 @@ abstract class BaseRoutePeer
const CLASS_DEFAULT = 'classes.model.Route';
/** The total number of columns. */
const NUM_COLUMNS = 18;
const NUM_COLUMNS = 19;
/** The number of lazy-loaded columns. */
const NUM_LAZY_LOAD_COLUMNS = 0;
@@ -85,6 +85,9 @@ abstract class BaseRoutePeer
/** the column name for the GAT_UID field */
const GAT_UID = 'ROUTE.GAT_UID';
/** the column name for the ROU_ELEMENT_ORIGIN field */
const ROU_ELEMENT_ORIGIN = 'ROUTE.ROU_ELEMENT_ORIGIN';
/** The PHP to DB Name Mapping */
private static $phpNameMap = null;
@@ -96,10 +99,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', '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, )
BasePeer::TYPE_PHPNAME => array ('RouUid', 'RouParent', 'ProUid', 'TasUid', 'RouNextTask', 'RouCase', 'RouType', 'RouDefault', 'RouCondition', 'RouToLastUser', 'RouOptional', 'RouSendEmail', 'RouSourceanchor', 'RouTargetanchor', 'RouToPort', 'RouFromPort', 'RouEvnUid', 'GatUid', 'RouElementOrigin', ),
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, RoutePeer::ROU_ELEMENT_ORIGIN, ),
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', 'ROU_ELEMENT_ORIGIN' ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, )
);
/**
@@ -109,10 +112,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, '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, )
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, 'RouElementOrigin' => 18, ),
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, RoutePeer::ROU_ELEMENT_ORIGIN => 18, ),
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, 'ROU_ELEMENT_ORIGIN' => 18, ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, )
);
/**
@@ -249,6 +252,8 @@ abstract class BaseRoutePeer
$criteria->addSelectColumn(RoutePeer::GAT_UID);
$criteria->addSelectColumn(RoutePeer::ROU_ELEMENT_ORIGIN);
}
const COUNT = 'COUNT(ROUTE.ROU_UID)';

View File

@@ -1048,6 +1048,7 @@
<column name="ROU_FROM_PORT" type="INTEGER" required="true" default="2"/>
<column name="ROU_EVN_UID" type="VARCHAR" size="32" required="true" default=""/>
<column name="GAT_UID" type="VARCHAR" size="32" required="true" default=""/>
<column name="ROU_ELEMENT_ORIGIN" type="VARCHAR" size="32" required="false" default=""/>
<validator column="ROU_UID">
<rule name="maxLength" value="32" message="Route UID can be no larger than ${value} in size"/>
<rule name="required" message="Route UID is required."/>

View File

@@ -512,6 +512,7 @@ CREATE TABLE `ROUTE`
`ROU_FROM_PORT` INTEGER default 2 NOT NULL,
`ROU_EVN_UID` VARCHAR(32) default '' NOT NULL,
`GAT_UID` VARCHAR(32) default '' NOT NULL,
`ROU_ELEMENT_ORIGIN` VARCHAR(32) default '' NOT NULL,
PRIMARY KEY (`ROU_UID`)
)ENGINE=InnoDB DEFAULT CHARSET='utf8' COMMENT='Differents flows for a flow in business process';
#-----------------------------------------------------------------------------

View File

@@ -1060,7 +1060,7 @@ class BpmnWorkflow extends Project\Bpmn
break;
default:
//EMPTY //and others types
$result = $this->wp->addRoute($activityUid, -1, $routeType, $routeCondition, $routeDefault);
$result = $this->wp->addRoute($activityUid, -1, $routeType, $routeCondition, $routeDefault, $eventUid);
break;
}
break;

View File

@@ -364,7 +364,7 @@ class Workflow extends Handler
* @return string
* @throws \Exception
*/
public function addRoute($fromTasUid, $toTasUid, $type, $condition = "", $default = 0)
public function addRoute($fromTasUid, $toTasUid, $type, $condition = "", $default = 0, $eventUidOrigin = "")
{
try {
$validTypes = array("SEQUENTIAL", "SELECT", "EVALUATE", "PARALLEL", "PARALLEL-BY-EVALUATION", "SEC-JOIN", "DISCRIMINATOR");
@@ -384,13 +384,21 @@ class Workflow extends Handler
//$oTasks->deleteAllRoutesOfTask($this->proUid, $fromTasUid);
//}
$route = \Route::findOneBy(array(
\RoutePeer::TAS_UID => $fromTasUid,
\RoutePeer::ROU_NEXT_TASK => $toTasUid
));
if($toTasUid == "-1"){
$route = \Route::findOneBy(array(
\RoutePeer::TAS_UID => $fromTasUid,
\RoutePeer::ROU_NEXT_TASK => $toTasUid,
\RoutePeer::ROU_ELEMENT_ORIGIN => $eventUidOrigin
));
} else {
$route = \Route::findOneBy(array(
\RoutePeer::TAS_UID => $fromTasUid,
\RoutePeer::ROU_NEXT_TASK => $toTasUid
));
}
if (is_null($route)) {
$result = $this->saveNewPattern($this->proUid, $fromTasUid, $toTasUid, $type, $condition, $default);
$result = $this->saveNewPattern($this->proUid, $fromTasUid, $toTasUid, $type, $condition, $default, $eventUidOrigin);
} else {
$result = $this->updateRoute($route->getRouUid(), array(
"TAS_UID" => $fromTasUid,
@@ -504,7 +512,7 @@ class Workflow extends Handler
}
}
private function saveNewPattern($sProcessUID = "", $sTaskUID = "", $sNextTask = "", $sType = "", $condition = "", $default = 0)
private function saveNewPattern($sProcessUID = "", $sTaskUID = "", $sNextTask = "", $sType = "", $condition = "", $default = 0, $elementUidOrigin = "")
{
try {
self::log("Add Route from task: $sTaskUID -> to task: $sNextTask ($sType)");
@@ -527,6 +535,7 @@ class Workflow extends Handler
$aFields["ROU_CASE"] = (int)($aRow["ROUTE_NUMBER"]) + 1;
$aFields["ROU_TYPE"] = $sType;
$aFields["ROU_DEFAULT"] = $default;
$aFields["ROU_ELEMENT_ORIGIN"] = $elementUidOrigin;
if(! empty($condition)) {
$aFields['ROU_CONDITION'] = $condition;