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; break;
case "MULTIPLE_INSTANCE": case "MULTIPLE_INSTANCE":
$userFields = $this->getUsersFullNameFromArray($this->getAllUsersFromAnyTask($nextAssignedTask["TAS_UID"])); $userFields = $this->getUsersFullNameFromArray($this->getAllUsersFromAnyTask($nextAssignedTask["TAS_UID"]));
if(empty($userFields)){
throw (new Exception( G::LoadTranslation( 'ID_NO_USERS' ) ));
}
break; break;
case "MULTIPLE_INSTANCE_VALUE_BASED": case "MULTIPLE_INSTANCE_VALUE_BASED":
$arrayApplicationData = $this->case->loadCase($tasInfo["APP_UID"]); $arrayApplicationData = $this->case->loadCase($tasInfo["APP_UID"]);
@@ -676,7 +673,7 @@ class Derivation
* *
* @return void * @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 { try {
//Verify if the Project is BPMN //Verify if the Project is BPMN
@@ -693,7 +690,7 @@ class Derivation
"elementOrigin" => ["uid" => $elementOriginUid, "type" => "bpmnActivity"], "elementOrigin" => ["uid" => $elementOriginUid, "type" => "bpmnActivity"],
"elementDest" => ["uid" => $elementDestUid, "type" => "bpmnActivity"] "elementDest" => ["uid" => $elementDestUid, "type" => "bpmnActivity"]
]; ];
foreach ($arrayElement as $key => $value) { foreach ($arrayElement as $key => $value) {
$arrayElementTaskRelationData = $elementTaskRelation->getElementTaskRelationWhere( $arrayElementTaskRelationData = $elementTaskRelation->getElementTaskRelationWhere(
[ [
@@ -729,6 +726,10 @@ class Derivation
$elementDestType $elementDestType
); );
if($elementDestUid == "-1"){
$arrayElement = $this->throwElementToEnd($elementOriginUid, $rouCondition);
}
foreach ($arrayElement as $value) { foreach ($arrayElement as $value) {
switch ($value[1]) { switch ($value[1]) {
case "bpmnEvent": 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 * 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, //I think we need to change the APP_STATUS to completed,
//BpmnEvent //BpmnEvent
$this->throwAllRouteInFlow($currentDelegation["TAS_UID"],$appFields); $this->throwEventsBetweenElementOriginAndElementDest($currentDelegation["TAS_UID"], $nextDel["TAS_UID"], $appFields, $flagFirstIteration, true, $nextDel['ROU_CONDITION']);
break; break;
case TASK_FINISH_TASK: case TASK_FINISH_TASK:
$iAppThreadIndex = $appFields['DEL_THREAD']; $iAppThreadIndex = $appFields['DEL_THREAD'];

View File

@@ -116,6 +116,22 @@ class BpmnFlow extends BaseBpmnFlow
return $flow; 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()) /*public static function select($select, $where = 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_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'] . '">'; $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="b"></div>
<div class="c"></div> <div class="c"></div>
</div> </div>
<div class="content" style="height: 100%;"> <div class="content" style="height: 100%;">
<table width="99%"> <table width="99%">
<tr> <tr>
<td valign='top'> <td valign='top'>
@@ -148,7 +148,7 @@
<tr height="0"> <tr height="0">
<td colspan="2"> <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> </td>
</tr> </tr>