Designer > BPMN Designer > Porcess Supervisors > Steps: Estandarizar la ventana al nuevo diseñue se solicito para el diseñr BPMN
This commit is contained in:
dheeyi
2015-06-17 15:32:41 -04:00
parent 97601425b3
commit b658b0d2d0
2 changed files with 94 additions and 4 deletions

View File

@@ -171,6 +171,29 @@ class StepSupervisor extends BaseStepSupervisor
}
}
/**
* Get the next position for a atep
*
* @param string $sProcessUID
* @return integer
*
*/
public function getNextPositionAll ($sProcessUID)
{
try {
$oCriteria = new Criteria( 'workflow' );
$oCriteria->addSelectColumn( '(COUNT(*) + 1) AS POSITION' );
$oCriteria->add( StepSupervisorPeer::PRO_UID, $sProcessUID );
$oDataset = StepSupervisorPeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset->next();
$aRow = $oDataset->getRow();
return (int) $aRow['POSITION'];
} catch (Exception $oException) {
throw $Exception;
}
}
/**
* Reorder the steps positions
*

View File

@@ -867,7 +867,7 @@ class ProcessSupervisor
$oStepSupervisor->create(array('PRO_UID' => $sProcessUID,
'STEP_TYPE_OBJ' => "DYNAFORM",
'STEP_UID_OBJ' => $sDynUID,
'STEP_POSITION' => $oStepSupervisor->getNextPosition($sProcessUID, "DYNAFORM")));
'STEP_POSITION' => $oStepSupervisor->getNextPositionAll($sProcessUID)));
$sDelimiter = \DBAdapter::getStringDelimiter();
$oCriteria = new \Criteria('workflow');
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_UID);
@@ -953,7 +953,7 @@ class ProcessSupervisor
$oStepSupervisor->create(array('PRO_UID' => $sProcessUID,
'STEP_TYPE_OBJ' => "INPUT_DOCUMENT",
'STEP_UID_OBJ' => $sInputDocumentUID,
'STEP_POSITION' => $oStepSupervisor->getNextPosition($sProcessUID, "INPUT_DOCUMENT")));
'STEP_POSITION' => $oStepSupervisor->getNextPositionAll($sProcessUID)));
$sDelimiter = \DBAdapter::getStringDelimiter();
$oCriteria = new \Criteria('workflow');
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_UID);
@@ -1077,7 +1077,7 @@ class ProcessSupervisor
$actualPosition = $oCriteria->getStepPosition();
$tempPosition = (isset($sPudPosition)) ? $sPudPosition : $actualPosition;
if (isset($tempPosition) && ($tempPosition != $actualPosition)) {
$this->moveDynaforms($sProcessUID, $sPudUID, $tempPosition);
$this->moveDyanformsInputDocuments($sProcessUID, $sPudUID, $tempPosition);
}
//Return
unset($sPudPosition);
@@ -1090,6 +1090,8 @@ class ProcessSupervisor
return $oCriteria;
}
/**
* Assign a InputDocument supervisor of a process
*
@@ -1104,7 +1106,7 @@ class ProcessSupervisor
$actualPosition = $oCriteria->getStepPosition();
$tempPosition = (isset($sPuiPosition)) ? $sPuiPosition : $actualPosition;
if (isset($tempPosition) && ($tempPosition != $actualPosition)) {
$this->moveInputDocuments($sProcessUID, $sPuiUID, $tempPosition);
$this->moveDyanformsInputDocuments($sProcessUID, $sPuiUID, $tempPosition);
}
//Return
unset($sPuiPosition);
@@ -1117,6 +1119,71 @@ class ProcessSupervisor
return $oCriteria;
}
/**
* Validate Process Uid
* @var string $pro_uid. Uid for Process
* @var string $pu_uid. Uid for Step
* @var string $pu_pos. Position for Step
*
* @return void
*/
public function moveDyanformsInputDocuments($pro_uid, $pu_uid, $pu_pos)
{
$aSteps = $this->getProcessSupervisorDynaformsInputsDocuments($pro_uid);
$step_pos = $pu_pos;
$step_uid = $pu_uid;
foreach ($aSteps as $dataStep) {
if($dataStep['obj_type'] == 'DYNAFORM'){
if ($dataStep['pud_uid'] == $step_uid) {
$prStepPos = (int)$dataStep['pud_position'];
}
}else{
if ($dataStep['pui_uid'] == $step_uid) {
$prStepPos = (int)$dataStep['pui_position'];
}
}
}
$seStepPos = $step_pos;
//Principal Step is up
if ($prStepPos == $seStepPos) {
return true;
} elseif ($prStepPos < $seStepPos) {
$modPos = 'UP';
$newPos = $seStepPos;
$iniPos = $prStepPos+1;
$finPos = $seStepPos;
} else {
$modPos = 'DOWN';
$newPos = $seStepPos;
$iniPos = $seStepPos;
$finPos = $prStepPos-1;
}
$range = range($iniPos, $finPos);
foreach ($aSteps as $dataStep) {
if($dataStep['obj_type'] == 'DYNAFORM'){
if ((in_array($dataStep['pud_position'], $range)) && ($dataStep['pud_uid'] != $step_uid)) {
$stepChangeIds[] = $dataStep['pud_uid'];
$stepChangePos[] = $dataStep['pud_position'];
}
}else{
if ((in_array($dataStep['pui_position'], $range)) && ($dataStep['pui_uid'] != $step_uid)) {
$stepChangeIds[] = $dataStep['pui_uid'];
$stepChangePos[] = $dataStep['pui_position'];
}
}
}
foreach ($stepChangeIds as $key => $value) {
if ($modPos == 'UP') {
$tempPos = ((int)$stepChangePos[$key])-1;
$this ->changePosStep($value, $tempPos);
} else {
$tempPos = ((int)$stepChangePos[$key])+1;
$this ->changePosStep($value, $tempPos);
}
}
$this ->changePosStep($value, $tempPos);
}
/**
* Validate Process Uid
* @var string $pro_uid. Uid for Process