BUG 6643 Adjustment triggers & imp/exp processes to avoid duplic of events

This commit is contained in:
Hector Cortez
2011-04-07 10:58:41 -04:00
parent ece3defb96
commit 2fb1063743
3 changed files with 76 additions and 24 deletions

View File

@@ -717,7 +717,17 @@ class Processes {
} }
} }
} }
// New process bpmn
if ( isset($oData->event ) && is_array($oData->event) ) {
foreach ( $oData->event as $key => $val ) {
if (isset($map[ $val['EVN_TAS_UID_FROM'] ])) {
$newGuid = $map[ $val['EVN_TAS_UID_FROM'] ];
$oData->event[$key]['EVN_TAS_UID_FROM'] = $newGuid;
}
}
}
if ( isset($oData->caseScheduler ) && is_array($oData->caseScheduler) ) { if ( isset($oData->caseScheduler ) && is_array($oData->caseScheduler) ) {
foreach ( $oData->caseScheduler as $key => $val ) { foreach ( $oData->caseScheduler as $key => $val ) {
if (isset($map[ $val['TAS_UID'] ])) { if (isset($map[ $val['TAS_UID'] ])) {
@@ -2889,7 +2899,7 @@ class Processes {
$oDataset->next(); $oDataset->next();
} }
//Delete the dynaforms of process //Delete the dynaforms of process
$oCriteria = new Criteria('workflow'); $oCriteria = new Criteria('workflow');
$oCriteria->add(DynaformPeer::PRO_UID, $sProUid); $oCriteria->add(DynaformPeer::PRO_UID, $sProUid);
$oDataset = DynaformPeer::doSelectRS($oCriteria); $oDataset = DynaformPeer::doSelectRS($oCriteria);
@@ -3087,6 +3097,11 @@ class Processes {
if($oEvent->Exists ($aRow['EVN_UID'])) if($oEvent->Exists ($aRow['EVN_UID']))
$oEvent->remove($aRow['EVN_UID']); $oEvent->remove($aRow['EVN_UID']);
$oDataset->next(); $oDataset->next();
if($oEvent->existsByTaskUidFrom($aRow['TAS_UID'])) {
$aRowEvent = $oEvent->getRowByTaskUidFrom($aRow['TAS_UID']);
$oEvent->remove($aRowEvent['EVN_UID']);
}
$oDataset->next();
} }
//Delete the CaseScheduler of process //Delete the CaseScheduler of process
@@ -3117,6 +3132,9 @@ class Processes {
$this->removeProcessRows ($oData->process['PRO_UID'] ); $this->removeProcessRows ($oData->process['PRO_UID'] );
$this->createProcessRow($oData->process); $this->createProcessRow($oData->process);
$this->createTaskRows($oData->tasks); $this->createTaskRows($oData->tasks);
$this->createEventRows(isset($oData->event) ? $oData->event : array());
$aRoutesUID = $this->createRouteRows($oData->routes); $aRoutesUID = $this->createRouteRows($oData->routes);
$this->createLaneRows($oData->lanes); $this->createLaneRows($oData->lanes);
@@ -3164,9 +3182,12 @@ class Processes {
$this->createStageRows(isset($oData->stage) ? $oData->stage : array()); $this->createStageRows(isset($oData->stage) ? $oData->stage : array());
$this->createFieldCondition(isset($oData->fieldCondition) ? $oData->fieldCondition : array(), $oData->dynaforms); $this->createFieldCondition(isset($oData->fieldCondition) ? $oData->fieldCondition : array(), $oData->dynaforms);
$this->createEventRows(isset($oData->event) ? $oData->event : array());
// Create before to createRouteRows for avoid duplicates
// $this->createEventRows(isset($oData->event) ? $oData->event : array());
$this->createCaseSchedulerRows(isset($oData->caseScheduler) ? $oData->caseScheduler : array()); $this->createCaseSchedulerRows(isset($oData->caseScheduler) ? $oData->caseScheduler : array());
//and finally create the files, dynaforms (xml and html), emailTemplates and Public files //and finally create the files, dynaforms (xml and html), emailTemplates and Public files
$this->createFiles($oData, $pmFilename); $this->createFiles($oData, $pmFilename);
} }

View File

@@ -239,28 +239,29 @@ class Tasks
//saving end event while import old processes //saving end event while import old processes
if(isset($end) && $end==1){ if(isset($end) && $end==1){
if($sRouteType == "SEQUENTIAL"){ if(! $oEvent->existsByTaskUidFrom($idTask)) {
$aTaskDetails = $oTask->load($idTask); if($sRouteType == "SEQUENTIAL"){
$positionX = $aTaskDetails['TAS_POSX'] + $aTaskDetails['TAS_WIDTH']/2; $aTaskDetails = $oTask->load($idTask);
$positionY = $aTaskDetails['TAS_POSY'] + $aTaskDetails['TAS_HEIGHT'] + 10; $positionX = $aTaskDetails['TAS_POSX'] + $aTaskDetails['TAS_WIDTH']/2;
$positionY = $aTaskDetails['TAS_POSY'] + $aTaskDetails['TAS_HEIGHT'] + 10;
$aData['PRO_UID'] = $row['PRO_UID'];
$aData['EVN_TYPE'] = 'bpmnEventEmptyEnd';
$aData['EVN_POSX'] = $positionX;
$aData['EVN_POSY'] = $positionY;
$aData['EVN_TAS_UID_FROM'] = $idTask;
$aData['EVN_STATUS'] = 'ACTIVE';
$aData['EVN_RELATED_TO'] = 'MULTIPLE';
$aData['EVN_WHEN'] = '1';
$aData['EVN_ACTION'] = '';
$sEvn_uid = $oEvent->create($aData);
$aField['ROU_UID'] = $routeID; $aData['PRO_UID'] = $row['PRO_UID'];
$aField['ROU_EVN_UID'] = $sEvn_uid; $aData['EVN_TYPE'] = 'bpmnEventEmptyEnd';
$oRoute->update($aField); $aData['EVN_POSX'] = $positionX;
$end = 0; $aData['EVN_POSY'] = $positionY;
$aData['EVN_TAS_UID_FROM'] = $idTask;
$aData['EVN_STATUS'] = 'ACTIVE';
$aData['EVN_RELATED_TO'] = 'MULTIPLE';
$aData['EVN_WHEN'] = '1';
$aData['EVN_ACTION'] = '';
$sEvn_uid = $oEvent->create($aData);
$aField['ROU_UID'] = $routeID;
$aField['ROU_EVN_UID'] = $sEvn_uid;
$oRoute->update($aField);
$end = 0;
}
} }
} }
} }

View File

@@ -150,6 +150,8 @@ class Event extends BaseEvent {
//start the transaction //start the transaction
$oConnection->begin(); $oConnection->begin();
if($aData['EVN_TYPE']==='bpmnEventEmptyEnd')
unset($aData['TRI_UID']);
if(isset($aData['TRI_UID'])) if(isset($aData['TRI_UID']))
{ {
$oTrigger = new Triggers(); $oTrigger = new Triggers();
@@ -803,5 +805,33 @@ class Event extends BaseEvent {
throw($oError); throw($oError);
} }
} }
public function existsByTaskUidFrom( $TAS_UID_FROM )
{
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn('COUNT(*) AS COUNT_EVENTS');
$oCriteria->add(EventPeer::EVN_TAS_UID_FROM, $TAS_UID_FROM);
$oDataset = EventPeer::doSelectRs($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$aRow = $oDataset->getRow();
return ($aRow['COUNT_EVENTS'] != 0) ? true : false;
}
public function getRowByTaskUidFrom( $TAS_UID_FROM )
{
$oCriteria = new Criteria('workflow');
$oCriteria->add(EventPeer::EVN_TAS_UID_FROM, $TAS_UID_FROM);
$oDataset = EventPeer::doSelectRs($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$aRow = $oDataset->getRow();
return $aRow;
}
} // Event } // Event
?> ?>