From 51d4ea460d3029303b5d942689a05c53a7d088a1 Mon Sep 17 00:00:00 2001 From: "Paula V. Quispe" Date: Thu, 30 Jun 2016 09:31:34 -0400 Subject: [PATCH] HOR-1377 --- workflow/engine/classes/class.case.php | 10 ++++++++-- workflow/engine/classes/class.derivation.php | 4 ++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index 5ab23f325..eebbd058d 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -1541,6 +1541,10 @@ class Cases //If exist paused cases $closedTasks[] = $row; $aIndex[] = $row['DEL_INDEX']; + $res = $this->GetAllOpenDelegation( array('APP_UID'=>$sAppUid, 'APP_THREAD_PARENT'=>$row['DEL_PREVIOUS']), 'NONE' ); + foreach ($res as $in) { + $aIndex[] = $in['DEL_INDEX']; + } $pausedTasks = $this->getReviewedTasksPaused($sAppUid,$aIndex); } } @@ -7094,14 +7098,16 @@ class Cases * @return $aThreads */ - public function GetAllOpenDelegation($aData) + public function GetAllOpenDelegation($aData, $status = 'OPEN') { try { $aThreads = array(); $c = new Criteria(); $c->add(AppDelegationPeer::APP_UID, $aData['APP_UID']); $c->add(AppDelegationPeer::DEL_PREVIOUS, $aData['APP_THREAD_PARENT']); - $c->add(AppDelegationPeer::DEL_THREAD_STATUS, 'OPEN'); + if($status === 'OPEN'){ + $c->add(AppDelegationPeer::DEL_THREAD_STATUS, 'OPEN'); + } $rs = AppDelegationPeer::doSelectRs($c); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs->next(); diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index e232a71cd..b7d5b0550 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -1169,6 +1169,10 @@ class Derivation if(isset($nextDel["ROU_PREVIOUS_TYPE"])){ if($nextDel["ROU_PREVIOUS_TYPE"] == "SEC-JOIN"){ $arrayOpenThread = $this->case->searchOpenPreviousTasks($nextDel["ROU_PREVIOUS_TASK"], $currentDelegation["APP_UID"]); + $arraySiblings = $this->case->getOpenSiblingThreads($nextDel["ROU_PREVIOUS_TASK"], $currentDelegation["APP_UID"], $currentDelegation["DEL_INDEX"], $currentDelegation["TAS_UID"]); + if(is_array($arrayOpenThread) && is_array($arraySiblings)){ + $arrayOpenThread = array_merge($arrayOpenThread, $arraySiblings); + } $canDerivate = empty($arrayOpenThread); } }