This commit is contained in:
Julio Cesar Laura
2015-11-22 13:43:30 -04:00
parent ed95314f9f
commit fdcd40e351
4 changed files with 71 additions and 8 deletions

View File

@@ -605,9 +605,6 @@ class Derivation
break;
case "MULTIPLE_INSTANCE":
$userFields = $this->getUsersFullNameFromArray($this->getAllUsersFromAnyTask($nextAssignedTask["TAS_UID"]));
if(empty($userFields)){
throw (new Exception( G::LoadTranslation( 'ID_NO_USERS' ) ));
}
break;
case "MULTIPLE_INSTANCE_VALUE_BASED":
$arrayApplicationData = $this->case->loadCase($tasInfo["APP_UID"]);
@@ -676,7 +673,7 @@ class Derivation
*
* @return void
*/
private function throwEventsBetweenElementOriginAndElementDest($elementOriginUid, $elementDestUid, array $arrayApplicationData, $flagEventExecuteBeforeGateway = true, $flagEventExecuteAfterGateway = true)
private function throwEventsBetweenElementOriginAndElementDest($elementOriginUid, $elementDestUid, array $arrayApplicationData, $flagEventExecuteBeforeGateway = true, $flagEventExecuteAfterGateway = true, $rouCondition="")
{
try {
//Verify if the Project is BPMN
@@ -729,6 +726,10 @@ class Derivation
$elementDestType
);
if($elementDestUid == "-1"){
$arrayElement = $this->throwElementToEnd($elementOriginUid, $rouCondition);
}
foreach ($arrayElement as $value) {
switch ($value[1]) {
case "bpmnEvent":
@@ -758,6 +759,48 @@ class Derivation
}
}
/**
* Throw all events to End Process
*
* @param string $currentTask Task uid
*
* @return void
*/
private function throwElementToEnd($currentTask, $routeCondition){
try{
$bpmnFlow = new BpmnFlow();
$rsCriFlow = $bpmnFlow->getElementOriginToElementDest($currentTask);
$arrayElement = array();
$count = 0;
$continue = false;
if($rsCriFlow->next()){
$continue = true;
$row = $rsCriFlow->getRow();
}
while ($continue) {
$array[0] = $row["FLO_ELEMENT_DEST"];
$array[1] = $row["FLO_ELEMENT_DEST_TYPE"];
$arrayElement[$count++] = $array;
$continue = false;
if($rsCriFlow->next()){
$continue = true;
$row = $rsCriFlow->getRow();
}else{
$rsCriFlow = $bpmnFlow->getElementOriginToElementDest($row["FLO_ELEMENT_DEST"],$routeCondition);
$routeCondition = '';
$continue = false;
if($rsCriFlow->next()){
$continue = true;
$row = $rsCriFlow->getRow();
}
}
}
return $arrayElement;
} catch (Exception $e) {
throw $e;
}
}
/**
* Throw Events for the Case
*
@@ -800,6 +843,7 @@ class Derivation
}
}
}
return $currentDestiny;
}
/**
@@ -1018,7 +1062,7 @@ class Derivation
//I think we need to change the APP_STATUS to completed,
//BpmnEvent
$this->throwAllRouteInFlow($currentDelegation["TAS_UID"],$appFields);
$this->throwEventsBetweenElementOriginAndElementDest($currentDelegation["TAS_UID"], $nextDel["TAS_UID"], $appFields, $flagFirstIteration, true, $nextDel['ROU_CONDITION']);
break;
case TASK_FINISH_TASK:
$iAppThreadIndex = $appFields['DEL_THREAD'];

View File

@@ -117,6 +117,22 @@ class BpmnFlow extends BaseBpmnFlow
return $flow;
}
public static function getElementOriginToElementDest($floOrigin, $floCondition = ''){
$criFlow = new Criteria("workflow");
$criFlow->addSelectColumn(BpmnFlowPeer::FLO_ELEMENT_ORIGIN);
$criFlow->addSelectColumn(BpmnFlowPeer::FLO_ELEMENT_ORIGIN_TYPE);
$criFlow->addSelectColumn(BpmnFlowPeer::FLO_ELEMENT_DEST);
$criFlow->addSelectColumn(BpmnFlowPeer::FLO_ELEMENT_DEST_TYPE);
$criFlow->addSelectColumn(BpmnFlowPeer::FLO_CONDITION);
$criFlow->add(BpmnFlowPeer::FLO_ELEMENT_ORIGIN, $floOrigin, Criteria::EQUAL);
if($floCondition != ''){
$criFlow->add(BpmnFlowPeer::FLO_CONDITION, $floCondition, Criteria::EQUAL);
}
$rsCriFlow = RoutePeer::doSelectRS($criFlow);
$rsCriFlow->setFetchmode(ResultSet::FETCHMODE_ASSOC);
return $rsCriFlow;
}
/*public static function select($select, $where = array())
{
$data = array();

View File

@@ -984,6 +984,9 @@ try {
$aFields['TASK'][$sKey]['NEXT_TASK']['ROU_PREVIOUS_TASK'] = '<input type="hidden" name="' . $hiddenName . '[ROU_PREVIOUS_TASK]" id="' . $hiddenName . '[ROU_PREVIOUS_TASK]" value="' . $aValues['NEXT_TASK']['ROU_PREVIOUS_TASK'] . '">';
$aFields['TASK'][$sKey]['NEXT_TASK']['ROU_PREVIOUS_TYPE'] = '<input type="hidden" name="' . $hiddenName . '[ROU_PREVIOUS_TYPE]" id="' . $hiddenName . '[ROU_PREVIOUS_TYPE]" value="' . $aValues['NEXT_TASK']['ROU_PREVIOUS_TYPE'] . '">';
}
if(isset($aValues['ROU_CONDITION'])){
$aFields['TASK'][$sKey]['NEXT_TASK']['ROU_CONDITION'] = '<input type="hidden" name="' . $hiddenName . '[ROU_CONDITION]" id="' . $hiddenName . '[ROU_CONDITION]" value="' . $aValues['ROU_CONDITION'] . '">';
}
}
}

View File

@@ -7,7 +7,7 @@
<div class="b"></div>
<div class="c"></div>
</div>
<div class="content" style="height: 100%;">
<div class="content" style="height: 100%;">
<table width="99%">
<tr>
<td valign='top'>
@@ -148,7 +148,7 @@
<tr height="0">
<td colspan="2">
{$data.NEXT_TASK.TAS_ASSIGN_TYPE}{$data.NEXT_TASK.TAS_DEF_PROC_CODE}{$data.NEXT_TASK.DEL_PRIORITY}{$data.NEXT_TASK.TAS_PARENT}{$data.NEXT_TASK.ROU_PREVIOUS_TASK}{$data.NEXT_TASK.ROU_PREVIOUS_TYPE}
{$data.NEXT_TASK.TAS_ASSIGN_TYPE}{$data.NEXT_TASK.TAS_DEF_PROC_CODE}{$data.NEXT_TASK.DEL_PRIORITY}{$data.NEXT_TASK.TAS_PARENT}{$data.NEXT_TASK.ROU_PREVIOUS_TASK}{$data.NEXT_TASK.ROU_PREVIOUS_TYPE}{$data.NEXT_TASK.ROU_CONDITION}
</td>
</tr>