diff --git a/workflow/engine/classes/class.processMap.php b/workflow/engine/classes/class.processMap.php
index b38562ecf..9b8c6b50f 100644
--- a/workflow/engine/classes/class.processMap.php
+++ b/workflow/engine/classes/class.processMap.php
@@ -57,6 +57,7 @@ require_once 'classes/model/Task.php';
require_once 'classes/model/TaskUser.php';
require_once 'classes/model/Triggers.php';
require_once 'classes/model/Users.php';
+require_once 'classes/model/Gateway.php';
/**
* processMap - Process Map class
@@ -2393,12 +2394,14 @@ class processMap {
* @param string $sTaskUID Default value empty
* @param string $sNextTask Default value empty
* @param string $sType Default value empty
+ * @param boolean $sDelete
* @return array void
*/
- function saveNewPattern($sProcessUID = '', $sTaskUID = '', $sNextTask = '', $sType = '') {
+ function saveNewPattern($sProcessUID = '', $sTaskUID = '', $sNextTask = '', $sType = '', $sDelete='') {
try {
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn('COUNT(*) AS ROUTE_NUMBER');
+ $oCriteria->addSelectColumn('GAT_UID');
$oCriteria->add(RoutePeer::PRO_UID, $sProcessUID);
$oCriteria->add(RoutePeer::TAS_UID, $sTaskUID);
$oCriteria->add(RoutePeer::ROU_TYPE, $sType);
@@ -2412,6 +2415,20 @@ class processMap {
$aFields ['ROU_TYPE'] = $sType;
$aFields ['ROU_CASE'] = (int) $aRow ['ROUTE_NUMBER'] + 1;
+ $sGatewayUID = $aRow['GAT_UID'];
+
+ if($sDelete && $sGatewayUID != ''){
+ $oGateway = new Gateway ( );
+ $oGateway->remove($sGatewayUID);
+ }
+ //Getting Gateway UID after saving gateway
+ if($sType != 'SEQUENTIAL' && $sGatewayUID == '')
+ {
+ $oProcessMap = new processMap();
+ $sGatewayUID = $oProcessMap->saveNewGateway($sProcessUID, $sTaskUID);
+ }
+
+ $aFields ['GAT_UID'] = $sGatewayUID;
$oRoute = new Route ( );
$oRoute->create($aFields);
} catch (Exception $oError) {
@@ -2419,6 +2436,31 @@ class processMap {
}
}
+ /**
+ * saveNewGateway
+ *
+ * @param string $sProcessUID Default value empty
+ * @param string $sTaskUID Default value empty
+ * @return string $sGatewayUID
+ */
+ function saveNewGateway($sProcessUID = '', $sTaskUID = '') {
+ try {
+ $oTask = new Task();
+ $aTaskDetails = $oTask->load($sTaskUID);
+ $aFields ['PRO_UID'] = $sProcessUID;
+ $aFields ['GAT_X'] = $aTaskDetails['TAS_POSX'] + $aTaskDetails['TAS_WIDTH']/2;
+ $aFields ['GAT_Y'] = $aTaskDetails['TAS_POSY'] + $aTaskDetails['TAS_HEIGHT'] + 10;
+
+ $oGateway = new Gateway ( );
+ $sGatewayUID = $oGateway->create($aFields);
+
+ return $sGatewayUID;
+
+ } catch (Exception $oError) {
+ throw ($oError);
+ }
+ }
+
/*
* Delete a derivation rule
* @param string $sTaskUID
@@ -5535,8 +5577,6 @@ class processMap {
break;
}
$aObjects [] = array('CTO_TITLE' => $sTitle, 'CTO_UID' => $aRow ['CTO_UID'], 'CTO_TYPE_OBJ' => $aRow ['CTO_TYPE_OBJ'], 'CTO_UID_OBJ' => $aRow ['CTO_UID_OBJ'], 'CTO_CONDITION' => $aRow ['CTO_CONDITION'], 'CTO_POSITION' => $aRow ['CTO_POSITION']);
-
-
}
catch (Exception $oError) { //Nothing
@@ -5555,20 +5595,7 @@ class processMap {
return $aObjects;
}
- /**
- * availableCaseTrackerObjects
- *
- * @param string $sProcessUID
- * @return boolean true
- */
- function availableExtCaseTrackerObjects($sProcessUID) {
- global $G_PUBLISH;
- $G_PUBLISH = new Publisher ( );
- $G_PUBLISH->AddContent('propeltable', 'paged-table', 'tracker/tracker_AvailableCaseTrackerObjects', $this->getAvailableCaseTrackerObjectsCriteria($sProcessUID), array('PRO_UID' => $sProcessUID));
- G::RenderPage('publish', 'raw');
- return true;
- }
-
+
/**
* getAvailableCaseTrackerObjectsCriteria
*
@@ -5667,92 +5694,7 @@ class processMap {
return $oCriteria;*/
}
- /**
- * assignCaseTrackerObject
- *
- * @param string $sProcessUID
- * @param string $sObjType
- * @param string $sObjUID
- * @return void
- */
- function assignExtCaseTrackerObject($sProcessUID, $sObjType, $sObjUID) {
- $oCriteria = new Criteria('workflow');
- $oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID);
- $iPosition = CaseTrackerObjectPeer::doCount($oCriteria) + 1;
- $oCaseTrackerObject = new CaseTrackerObject ( );
- $oCaseTrackerObject->create(array('PRO_UID' => $sProcessUID, 'CTO_TYPE_OBJ' => $sObjType, 'CTO_UID_OBJ' => $sObjUID, 'CTO_POSITION' => $iPosition));
- }
-
- /**
- * removeCaseTrackerObject
- *
- * @param string $sCTOUID
- * @param string $sProcessUID
- * @param integer $iPosition
- * @return void
- */
- function removeExtCaseTrackerObject($sCTOUID, $sProcessUID, $iPosition) {
- $oCaseTrackerObject = new CaseTrackerObject ( );
- $oCaseTrackerObject->remove($sCTOUID);
- $oCaseTrackerObject->reorderPositions($sProcessUID, $iPosition);
- }
-
- /**
- * upCaseTrackerObject
- *
- * @param string $sCTOUID
- * @param string $sProcessUID
- * @param integer $iPosition
- * @return void
- */
- function upExtCaseTrackerObject($sCTOUID, $sProcessUID, $iPosition) {
- if ($iPosition > 1) {
- $oCriteria1 = new Criteria('workflow');
- $oCriteria1->add(CaseTrackerObjectPeer::CTO_POSITION, $iPosition);
- $oCriteria2 = new Criteria('workflow');
- $oCriteria2->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID);
- $oCriteria2->add(CaseTrackerObjectPeer::CTO_POSITION, ($iPosition - 1));
- BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow'));
-
- $oCriteria1 = new Criteria('workflow');
- $oCriteria1->add(CaseTrackerObjectPeer::CTO_POSITION, ($iPosition - 1));
- $oCriteria2 = new Criteria('workflow');
- $oCriteria2->add(CaseTrackerObjectPeer::CTO_UID, $sCTOUID);
- BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow'));
- }
- }
-
- /**
- * downCaseTrackerObject
- *
- * @param string $sCTOUID
- * @param string $sProcessUID
- * @param integer $iPosition
- * @return void
- */
- function downExtCaseTrackerObject($sCTOUID, $sProcessUID, $iPosition) {
- $oCriteria = new Criteria('workflow');
- $oCriteria->addSelectColumn('COUNT(*) AS MAX_POSITION');
- $oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID);
- $oDataset = CaseTrackerObjectPeer::doSelectRS($oCriteria);
- $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
- $oDataset->next();
- $aRow = $oDataset->getRow();
- if ($iPosition < (int) $aRow ['MAX_POSITION']) {
- $oCriteria1 = new Criteria('workflow');
- $oCriteria1->add(CaseTrackerObjectPeer::CTO_POSITION, $iPosition);
- $oCriteria2 = new Criteria('workflow');
- $oCriteria2->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID);
- $oCriteria2->add(CaseTrackerObjectPeer::CTO_POSITION, ($iPosition + 1));
- BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow'));
- $oCriteria1 = new Criteria('workflow');
- $oCriteria1->add(CaseTrackerObjectPeer::CTO_POSITION, ($iPosition + 1));
- $oCriteria2 = new Criteria('workflow');
- $oCriteria2->add(CaseTrackerObjectPeer::CTO_UID, $sCTOUID);
- BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow'));
- }
- }
- function getExtReportTables($sProcessUID = '') {
+ function getExtReportTables($sProcessUID = '') {
$sDelimiter = DBAdapter::getStringDelimiter ();
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(ReportTablePeer::REP_TAB_UID);
@@ -5775,9 +5717,6 @@ class processMap {
$oDataset->next();
}
return $aReportTable;
-
}
-
-
}
diff --git a/workflow/engine/classes/model/Gateway.php b/workflow/engine/classes/model/Gateway.php
index d4f396fca..f71dcdbc9 100644
--- a/workflow/engine/classes/model/Gateway.php
+++ b/workflow/engine/classes/model/Gateway.php
@@ -16,29 +16,32 @@ require_once 'classes/model/om/BaseGateway.php';
*/
class Gateway extends BaseGateway {
- function create ($aData)
+ public function create ($aData)
{
- $con = Propel::getConnection(GatewayPeer::DATABASE_NAME);
- try
- {
- $this->fromArray($aData, BasePeer::TYPE_FIELDNAME);
- if($this->validate())
- {
- $result=$this->save();
+ $oConnection = Propel::getConnection(GatewayPeer::DATABASE_NAME);
+ try {
+ $sGatewayUID = G::generateUniqueID();
+ $aData['GAT_UID'] = $sGatewayUID;
+ $oGateway = new Gateway();
+ $oGateway->fromArray($aData, BasePeer::TYPE_FIELDNAME);
+ if ($oGateway->validate()) {
+ $oConnection->begin();
+ $iResult = $oGateway->save();
+ $oConnection->commit();
+ return $sGatewayUID;
}
- else
- {
- $e=new Exception("Failed Validation in class ".get_class($this).".");
- $e->aValidationFailures=$this->getValidationFailures();
- throw($e);
+ else {
+ $sMessage = '';
+ $aValidationFailures = $oGateway->getValidationFailures();
+ foreach($aValidationFailures as $oValidationFailure) {
+ $sMessage .= $oValidationFailure->getMessage() . '
';
+ }
+ throw(new Exception('The registry cannot be created!
'.$sMessage));
}
- $con->commit();
- return $result;
}
- catch(Exception $e)
- {
- $con->rollback();
- throw($e);
+ catch (Exception $oError) {
+ $oConnection->rollback();
+ throw($oError);
}
}
@@ -88,22 +91,27 @@ class Gateway extends BaseGateway {
throw($e);
}
}
-
- function remove($GatewayUid)
+
+ public function remove($GatewayUid)
{
- $con = Propel::getConnection(GatewayPeer::DATABASE_NAME);
- try
- {
- $con->begin();
- $this->setGatUid($GatewayUid);
- $result=$this->delete();
- $con->commit();
- return $result;
+ $oConnection = Propel::getConnection(GatewayPeer::DATABASE_NAME);
+ try {
+ $oGateWay = RoutePeer::retrieveByPK($GatewayUid);
+ if (!is_null($oGateWay))
+ {
+ $oConnection->begin();
+ $iResult = $oGateWay->delete();
+ $oConnection->commit();
+ return $iResult;
+ }
+ else {
+ throw(new Exception('This row doesn\'t exists!'));
+ }
}
- catch(Exception $e)
- {
- $con->rollback();
- throw($e);
+ catch (Exception $oError) {
+ $oConnection->rollback();
+ throw($oError);
}
}
+
} // Gateway
diff --git a/workflow/engine/methods/processes/processes_Ajax.php b/workflow/engine/methods/processes/processes_Ajax.php
index 534d1987b..50fa368e5 100644
--- a/workflow/engine/methods/processes/processes_Ajax.php
+++ b/workflow/engine/methods/processes/processes_Ajax.php
@@ -276,7 +276,7 @@ try {
$oTasks = new Tasks();
$oTasks->deleteAllRoutesOfTask($oData->pro_uid, $oData->tas_uid);
}
- $oProcessMap->saveNewPattern($oData->pro_uid, $oData->tas_uid, $oData->next_task, $sType);
+ $oProcessMap->saveNewPattern($oData->pro_uid, $oData->tas_uid, $oData->next_task, $sType, $oData->delete);
break;
case 'deleteAllRoutes':
G::LoadClass('tasks');