I added the validation for wsbase

.
This commit is contained in:
Paula Quispe
2017-03-03 15:22:25 -04:00
committed by Dante
parent 0dbc337b26
commit fa8aafe8c9
4 changed files with 62 additions and 42 deletions

View File

@@ -832,6 +832,38 @@ class Derivation
/*----------------------------------********---------------------------------*/ /*----------------------------------********---------------------------------*/
} }
/**
* This function prepare the information before call the derivate function
*
* We can route a case from differents ways from cases_Derivate and derivateCase used in PMFDerivateCase
* before this we need to process the information
*
* @param array $aDataForPrepareInfo
* @param array $tasks
* @param string $rouType
* @param array $aCurrentDerivation
* @return array $arrayDerivationResult
*/
function beforeDerivate($aDataForPrepareInfo, $tasks, $rouType, $aCurrentDerivation)
{
$aPInformation = $this->prepareInformation($aDataForPrepareInfo);
$oRoute = new \ProcessMaker\Core\RoutingScreen();
$nextTasks = $oRoute->mergeDataDerivation($tasks, $aPInformation, $rouType);
//Get all route types
$aRouteTypes = array();
foreach ($aPInformation as $key => $value) {
$aRouteTypes[$key]['ROU_NEXT_TASK'] = $value['ROU_NEXT_TASK'];
$aRouteTypes[$key]['ROU_TYPE'] = $value['ROU_TYPE'];
}
$aCurrentDerivation['ROUTE_TYPES'] = $aRouteTypes;
//Derivate the case
$arrayDerivationResult = $this->derivate($aCurrentDerivation, $nextTasks);
return $arrayDerivationResult;
}
/** Derivate /** Derivate
* *
* @param array $currentDelegation * @param array $currentDelegation

View File

@@ -2268,10 +2268,6 @@ class wsBase
$oPMScript = new PMScript(); $oPMScript = new PMScript();
foreach ($aTriggers as $aTrigger) { foreach ($aTriggers as $aTrigger) {
//$appFields = $oCase->loadCase( $caseId );
//$appFields['APP_DATA']['APPLICATION'] = $caseId;
//Set variables //Set variables
$params = new stdClass(); $params = new stdClass();
$params->appData = $appFields["APP_DATA"]; $params->appData = $appFields["APP_DATA"];
@@ -2320,10 +2316,6 @@ class wsBase
$oPMScript = new PMScript(); $oPMScript = new PMScript();
foreach ($aTriggers as $aTrigger) { foreach ($aTriggers as $aTrigger) {
//$appFields = $oCase->loadCase( $caseId );
//$appFields['APP_DATA']['APPLICATION'] = $caseId;
//Set variables //Set variables
$params = new stdClass(); $params = new stdClass();
$params->appData = $appFields["APP_DATA"]; $params->appData = $appFields["APP_DATA"];
@@ -2416,12 +2408,6 @@ class wsBase
$appFields['TAS_UID'] = $derive['TAS_UID']; $appFields['TAS_UID'] = $derive['TAS_UID'];
} }
//Save data - Start
//$appFields = $oCase->loadCase( $caseId );
//$oCase->updateCase ( $caseId, $appFields );
//Save data - End
$row = array (); $row = array ();
$oCriteria = new Criteria( 'workflow' ); $oCriteria = new Criteria( 'workflow' );
$del = DBAdapter::getStringDelimiter(); $del = DBAdapter::getStringDelimiter();
@@ -2433,25 +2419,33 @@ class wsBase
$oDataset->next(); $oDataset->next();
while ($aRow = $oDataset->getRow()) { while ($aRow = $oDataset->getRow()) {
$row[] = array ('ROU_TYPE' => $aRow['ROU_TYPE'],'ROU_NEXT_TASK' => $aRow['ROU_NEXT_TASK'] $row[] = array('ROU_TYPE' => $aRow['ROU_TYPE'], 'ROU_NEXT_TASK' => $aRow['ROU_NEXT_TASK']);
);
$oDataset->next(); $oDataset->next();
} }
//derivate case $aCurrentDerivation = array (
$aCurrentDerivation = array ('APP_UID' => $caseId,'DEL_INDEX' => $delIndex,'APP_STATUS' => $sStatus,'TAS_UID' => $appdel['TAS_UID'],'ROU_TYPE' => $row[0]['ROU_TYPE'] 'APP_UID' => $caseId,
'DEL_INDEX' => $delIndex,
'APP_STATUS' => $sStatus,
'TAS_UID' => $appdel['TAS_UID'],
'ROU_TYPE' => $row[0]['ROU_TYPE']
); );
$oRoute = new \ProcessMaker\Core\RoutingScreen();
$nextTasks = $oRoute->mergeDataDerivation($nextDelegations, $oDerivation->prepareInformation($aData), $row[0]['ROU_TYPE']); //We define some parameters in the before the derivation
$oDerivation->derivate( $aCurrentDerivation, $nextTasks ); //Then this function will be route the case
$oDerivation->beforeDerivate(
$aData,
$nextDelegations,
$row[0]['ROU_TYPE'],
$aCurrentDerivation
);
$appFields = $oCase->loadCase( $caseId ); $appFields = $oCase->loadCase( $caseId );
//Execute triggers after derivation //Execute triggers after derivation
$aTriggers = $oCase->loadTriggers( $appdel['TAS_UID'], 'ASSIGN_TASK', - 2, 'AFTER' ); $aTriggers = $oCase->loadTriggers( $appdel['TAS_UID'], 'ASSIGN_TASK', - 2, 'AFTER' );
if (count( $aTriggers ) > 0) { if (count( $aTriggers ) > 0) {
//$appFields['APP_DATA']['APPLICATION'] = $caseId;
//Set variables //Set variables
$params = new stdClass(); $params = new stdClass();

View File

@@ -135,26 +135,20 @@ try {
'TAS_UID' => $_SESSION['TASK'], 'TAS_UID' => $_SESSION['TASK'],
'ROU_TYPE' => $_POST['form']['ROU_TYPE'] 'ROU_TYPE' => $_POST['form']['ROU_TYPE']
); );
$aPInformation = $oDerivation->prepareInformation( $aDataForPrepareInfo = array (
array ( 'USER_UID' => $_SESSION['USER_LOGGED'],
'USER_UID' => $_SESSION['USER_LOGGED'], 'APP_UID' => $_SESSION['APPLICATION'],
'APP_UID' => $_SESSION['APPLICATION'], 'DEL_INDEX' => $_SESSION['INDEX']
'DEL_INDEX' => $_SESSION['INDEX']
)
); );
$oRoute = new \ProcessMaker\Core\RoutingScreen();
$nextTasks = $oRoute->mergeDataDerivation($_POST['form']['TASKS'], $aPInformation, $_POST['form']['ROU_TYPE']);
//Get all route types //We define some parameters in the before the derivation
$aRouteTypes = array(); //Then this function will be route the case
foreach ($aPInformation as $key => $value) { $arrayDerivationResult = $oDerivation->beforeDerivate(
$aRouteTypes[$key]['ROU_NEXT_TASK'] = $value['ROU_NEXT_TASK']; $aDataForPrepareInfo,
$aRouteTypes[$key]['ROU_TYPE'] = $value['ROU_TYPE']; $_POST['form']['TASKS'],
} $_POST['form']['ROU_TYPE'],
$aCurrentDerivation['ROUTE_TYPES'] = $aRouteTypes; $aCurrentDerivation
);
//Derivate the case
$arrayDerivationResult = $oDerivation->derivate($aCurrentDerivation, $nextTasks);
if (!empty($arrayDerivationResult)) { if (!empty($arrayDerivationResult)) {
foreach ($_POST['form']['TASKS'] as $key => $value) { foreach ($_POST['form']['TASKS'] as $key => $value) {

View File

@@ -826,7 +826,7 @@ try {
throw (new Exception( G::LoadTranslation( 'ID_NO_DERIVATION_RULE' ) )); throw (new Exception( G::LoadTranslation( 'ID_NO_DERIVATION_RULE' ) ));
} }
//take the first derivation rule as the task derivation rule type. //Take the first derivation rule as the task derivation rule type.
$aFields['PROCESS']['ROU_TYPE'] = $aFields['TASK'][1]['ROU_TYPE']; $aFields['PROCESS']['ROU_TYPE'] = $aFields['TASK'][1]['ROU_TYPE'];
$aFields['PROCESS']['ROU_FINISH_FLAG'] = false; $aFields['PROCESS']['ROU_FINISH_FLAG'] = false;