HOR-3616
This commit is contained in:
@@ -1386,35 +1386,44 @@ class Cases
|
|||||||
*
|
*
|
||||||
* @name searchOpenPreviousTasks,
|
* @name searchOpenPreviousTasks,
|
||||||
* @param string $taskUid
|
* @param string $taskUid
|
||||||
* @param string $sAppUid
|
* @param string $appUid
|
||||||
* @param array $aPreviousTasks optional array that serves to trace the task routes and avoid infinite loops.
|
* @param array $previousTasks, optional array that serves to trace the task routes and avoid infinite loops.
|
||||||
* @return $aThreads
|
* @return array, information about the threads in the case
|
||||||
*/
|
*/
|
||||||
public function searchOpenPreviousTasks($taskUid, $sAppUid, $aPreviousTasks = array())
|
public function searchOpenPreviousTasks($taskUid, $appUid, $previousTasks = array())
|
||||||
{
|
{
|
||||||
//in this array we are storing all open delegation rows.
|
//In this array we are storing all open delegation rows.
|
||||||
$aTaskReviewed = array();
|
$threads = array();
|
||||||
|
|
||||||
//check if this task ( $taskUid ) has open delegations
|
//Check if this $taskUid has open delegations, this is a single review
|
||||||
$delegations = $this->getReviewedTasks($taskUid, $sAppUid);
|
$threads = $this->getReviewedTasks($taskUid, $appUid);
|
||||||
|
|
||||||
if ($delegations !== false) {
|
if ($threads !== false) {
|
||||||
if (count($delegations['open']) > 0) {
|
if (count($threads['open']) > 0) {
|
||||||
//there is an open delegation, so we need to return the delegation row
|
//There is an open delegation, so we need to return the delegation row
|
||||||
return $delegations['open'];
|
return $threads['open'];
|
||||||
} else {
|
} else {
|
||||||
if(count($delegations['paused']) > 0){
|
if (count($threads['paused']) > 0) {
|
||||||
//there is an paused delegation, so we need to return the delegation row
|
//there is an paused delegation, so we need to return the delegation row
|
||||||
return $delegations['paused'];
|
return $threads['paused'];
|
||||||
}else{
|
|
||||||
return array(); //returning empty array
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if not we check previous tasks
|
//Search the open delegations in the previous task, this is a recursive review
|
||||||
// until here this task has not appdelegations records.
|
$threads = $this->getReviewedTasksRecursive($taskUid, $appUid, $previousTasks);
|
||||||
// get all previous task from $taskUid, and return open delegations rows, if there are
|
return $threads;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function get the last open task
|
||||||
|
* Usually is used when we have a SEC-JOIN and need to review if we need to route the case
|
||||||
|
* @param string $taskUid
|
||||||
|
* @param string $appUid
|
||||||
|
* @param array $previousTasks
|
||||||
|
* @return array $taskReviewed
|
||||||
|
*/
|
||||||
|
public function getReviewedTasksRecursive($taskUid, $appUid, $previousTasks) {
|
||||||
|
$taskReviewed = array();
|
||||||
$oCriteria = new Criteria('workflow');
|
$oCriteria = new Criteria('workflow');
|
||||||
$oCriteria->add(RoutePeer::ROU_NEXT_TASK, $taskUid);
|
$oCriteria->add(RoutePeer::ROU_NEXT_TASK, $taskUid);
|
||||||
$oDataset = RoutePeer::doSelectRs($oCriteria);
|
$oDataset = RoutePeer::doSelectRs($oCriteria);
|
||||||
@@ -1422,33 +1431,27 @@ class Cases
|
|||||||
|
|
||||||
while ($oDataset->next()) {
|
while ($oDataset->next()) {
|
||||||
$aRow = $oDataset->getRow();
|
$aRow = $oDataset->getRow();
|
||||||
|
$delegations = $this->getReviewedTasks($aRow['TAS_UID'], $appUid);
|
||||||
$delegations = $this->getReviewedTasks($aRow['TAS_UID'], $sAppUid);
|
|
||||||
|
|
||||||
if ($delegations !== false) {
|
if ($delegations !== false) {
|
||||||
if (count($delegations['open']) > 0) {
|
if (count($delegations['open']) > 0) {
|
||||||
//there is an open delegation, so we need to return the delegation row
|
//there is an open delegation, so we need to return the delegation row
|
||||||
$aTaskReviewed = array_merge($aTaskReviewed, $delegations['open']);
|
$taskReviewed = array_merge($taskReviewed, $delegations['open']);
|
||||||
} else {
|
} elseif ($aRow['ROU_TYPE'] == 'PARALLEL-BY-EVALUATION') {
|
||||||
if ($aRow['ROU_TYPE'] == 'PARALLEL-BY-EVALUATION') {
|
$taskReviewed = array();
|
||||||
$aTaskReviewed = array();
|
|
||||||
} else {
|
|
||||||
//$aTaskReviewed = array_merge($aTaskReviewed, $delegations['closed']);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} elseif (!in_array($aRow['TAS_UID'], $previousTasks)) {
|
||||||
if (!in_array($aRow['TAS_UID'], $aPreviousTasks)) {
|
//Storing the current task uid of the task currently checked
|
||||||
// storing the current task uid of the task currently checked
|
$previousTasks[] = $aRow['TAS_UID'];
|
||||||
$aPreviousTasks[] = $aRow['TAS_UID'];
|
//Passing the array of previous tasks in order to avoid an infinite loop that prevents
|
||||||
// passing the array of previous tasks in oprder to avoid an infinite loop that prevents
|
$openPreviousTask = $this->searchOpenPreviousTasks($aRow['TAS_UID'], $appUid, $previousTasks);
|
||||||
$openPreviousTask = $this->searchOpenPreviousTasks($aRow['TAS_UID'], $sAppUid, $aPreviousTasks);
|
if (count($previousTasks) > 0) {
|
||||||
if (count($aPreviousTasks) > 0) {
|
$taskReviewed = array_merge($taskReviewed, $openPreviousTask);
|
||||||
$aTaskReviewed = array_merge($aTaskReviewed, $openPreviousTask);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $aTaskReviewed;
|
|
||||||
|
return $taskReviewed;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,40 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* class.derivation.php
|
|
||||||
*
|
|
||||||
* @package workflow.engine.ProcessMaker
|
|
||||||
*
|
|
||||||
* ProcessMaker Open Source Edition
|
|
||||||
* Copyright (C) 2004 - 2011 Colosa Inc.
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as
|
|
||||||
* published by the Free Software Foundation, either version 3 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
|
|
||||||
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
require_once ("classes/model/Task.php");
|
|
||||||
require_once ("classes/model/Process.php");
|
|
||||||
require_once ("classes/model/Step.php");
|
|
||||||
require_once ("classes/model/Application.php");
|
|
||||||
require_once ('classes/model/Groupwf.php');
|
|
||||||
require_once ("classes/model/GroupUser.php");
|
|
||||||
require_once ("classes/model/AppDelegation.php");
|
|
||||||
require_once ("classes/model/Route.php");
|
|
||||||
require_once ('classes/model/SubApplication.php');
|
|
||||||
require_once ('classes/model/SubProcess.php');
|
|
||||||
require_once ("classes/model/Users.php");
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* derivation - derivation class
|
* derivation - derivation class
|
||||||
@@ -87,6 +51,7 @@ class Derivation
|
|||||||
* @param array $arrayTaskData Task data (derivation)
|
* @param array $arrayTaskData Task data (derivation)
|
||||||
*
|
*
|
||||||
* @return array Return array
|
* @return array Return array
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
protected function prepareInformationTask(array $arrayTaskData)
|
protected function prepareInformationTask(array $arrayTaskData)
|
||||||
{
|
{
|
||||||
@@ -161,7 +126,8 @@ class Derivation
|
|||||||
* @param array $arrayData Data
|
* @param array $arrayData Data
|
||||||
* @param string $taskUid Unique id of Task
|
* @param string $taskUid Unique id of Task
|
||||||
*
|
*
|
||||||
* @return array Return array
|
* @return array
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function prepareInformation(array $arrayData, $taskUid = "")
|
public function prepareInformation(array $arrayData, $taskUid = "")
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user