HOR-2828
This commit is contained in:
@@ -1225,6 +1225,35 @@ class Cases
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Determines if the all threads of a multiinstance task are closed
|
||||||
|
*
|
||||||
|
* @$appUid string appUid of the instance to be tested
|
||||||
|
* @$tasUid string task uid of the multiinstance task
|
||||||
|
* @$previousDelIndex int previous del index of the instance corresponding to the multiinstance task
|
||||||
|
*/
|
||||||
|
|
||||||
|
public function multiInstanceIsCompleted($appUid, $tasUid, $previousDelIndex)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$c = new Criteria();
|
||||||
|
$c->clearSelectColumns();
|
||||||
|
$c->addSelectColumn('COUNT(*)');
|
||||||
|
$c->add(AppDelegationPeer::APP_UID, $appUid);
|
||||||
|
$c->add(AppDelegationPeer::TAS_UID, $tasUid);
|
||||||
|
$c->add(AppDelegationPeer::DEL_PREVIOUS, $previousDelIndex);
|
||||||
|
$c->add(AppDelegationPeer::DEL_THREAD_STATUS, 'OPEN');
|
||||||
|
$rs = AppDelegationPeer::doSelectRs($c);
|
||||||
|
$rs->next();
|
||||||
|
$row = $rs->getRow();
|
||||||
|
//if no open threads exists, the multiinstance is completes
|
||||||
|
return intval($row[0]) === 0;
|
||||||
|
} catch (exception $e) {
|
||||||
|
throw ($e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GetOpenThreads
|
* GetOpenThreads
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1003,12 +1003,27 @@ class Derivation
|
|||||||
case TASK_FINISH_TASK:
|
case TASK_FINISH_TASK:
|
||||||
$iAppThreadIndex = $appFields['DEL_THREAD'];
|
$iAppThreadIndex = $appFields['DEL_THREAD'];
|
||||||
$this->case->closeAppThread($currentDelegation['APP_UID'], $iAppThreadIndex);
|
$this->case->closeAppThread($currentDelegation['APP_UID'], $iAppThreadIndex);
|
||||||
|
|
||||||
if (isset($nextDel["TAS_UID_DUMMY"]) && !$flagTaskAssignTypeIsMultipleInstance) {
|
if (isset($nextDel["TAS_UID_DUMMY"]) && !$flagTaskAssignTypeIsMultipleInstance) {
|
||||||
$taskDummy = TaskPeer::retrieveByPK($nextDel["TAS_UID_DUMMY"]);
|
$taskDummy = TaskPeer::retrieveByPK($nextDel["TAS_UID_DUMMY"]);
|
||||||
if (preg_match("/^(?:END-MESSAGE-EVENT|END-EMAIL-EVENT)$/", $taskDummy->getTasType())) {
|
if (preg_match("/^(?:END-MESSAGE-EVENT|END-EMAIL-EVENT)$/", $taskDummy->getTasType())) {
|
||||||
$this->executeEvent($nextDel["TAS_UID_DUMMY"], $appFields, $flagFirstIteration, true);
|
$this->executeEvent($nextDel["TAS_UID_DUMMY"], $appFields, $flagFirstIteration, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//if the next task is an end event and the multiinstance threads are finished the end event
|
||||||
|
//is triggered:
|
||||||
|
if (isset($nextDel["TAS_UID_DUMMY"]) && $flagTaskAssignTypeIsMultipleInstance) {
|
||||||
|
$taskDummy = TaskPeer::retrieveByPK($nextDel["TAS_UID_DUMMY"]);
|
||||||
|
$currentDeltegionAllData = AppDelegationPeer::retrieveByPK($currentDelegation['APP_UID'], $currentDelegation['DEL_INDEX']);
|
||||||
|
if ($this->case->multiInstanceIsCompleted($currentDeltegionAllData->getAppUid(),
|
||||||
|
$currentDeltegionAllData->getTasUid(),
|
||||||
|
$currentDeltegionAllData->getDelPrevious()
|
||||||
|
&& preg_match("/^(?:END-MESSAGE-EVENT|END-EMAIL-EVENT)$/", $taskDummy->getTasType()))) {
|
||||||
|
$this->executeEvent($nextDel["TAS_UID_DUMMY"], $appFields, $flagFirstIteration, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$this->case->closeAppThread($currentDelegation['APP_UID'], $iAppThreadIndex);
|
$this->case->closeAppThread($currentDelegation['APP_UID'], $iAppThreadIndex);
|
||||||
$aContext['action'] = 'finish-task';
|
$aContext['action'] = 'finish-task';
|
||||||
//Logger
|
//Logger
|
||||||
|
|||||||
Reference in New Issue
Block a user