Merged in HOR-1500 (pull request #4747)
HOR-1500 Optimizar la pantalla de derivación
This commit is contained in:
@@ -50,6 +50,29 @@ class Derivation
|
||||
var $case;
|
||||
protected $flagControl;
|
||||
protected $flagControlMulInstance;
|
||||
private $regexpTaskTypeToInclude;
|
||||
public $node;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->setRegexpTaskTypeToInclude("GATEWAYTOGATEWAY|END-MESSAGE-EVENT|END-EMAIL-EVENT");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getRegexpTaskTypeToInclude()
|
||||
{
|
||||
return $this->regexpTaskTypeToInclude;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $regexpTaskTypeToInclude
|
||||
*/
|
||||
public function setRegexpTaskTypeToInclude($regexpTaskTypeToInclude)
|
||||
{
|
||||
$this->regexpTaskTypeToInclude = $regexpTaskTypeToInclude;
|
||||
}
|
||||
|
||||
/**
|
||||
* prepareInformationTask
|
||||
@@ -235,20 +258,21 @@ class Derivation
|
||||
|
||||
//Check Task GATEWAYTOGATEWAY, END-MESSAGE-EVENT, END-EMAIL-EVENT
|
||||
$arrayNextTaskBackup = $arrayNextTask;
|
||||
|
||||
$arrayNextTask = array();
|
||||
$i = 0;
|
||||
foreach ($arrayNextTaskBackup as $value) {
|
||||
$arrayNextTaskData = $value;
|
||||
|
||||
$regexpTaskTypeToInclude = "GATEWAYTOGATEWAY|END-MESSAGE-EVENT|END-EMAIL-EVENT";
|
||||
|
||||
$this->node[$value['TAS_UID']]['out'][$value['ROU_NEXT_TASK']] = $value['ROU_TYPE'];
|
||||
if ($arrayNextTaskData["NEXT_TASK"]["TAS_UID"] != "-1" &&
|
||||
preg_match("/^(?:" . $regexpTaskTypeToInclude . ")$/", $arrayNextTaskData["NEXT_TASK"]["TAS_TYPE"])
|
||||
preg_match("/^(?:" . $this->regexpTaskTypeToInclude . ")$/", $arrayNextTaskData["NEXT_TASK"]["TAS_TYPE"])
|
||||
) {
|
||||
$arrayAux = $this->prepareInformation($arrayData, $arrayNextTaskData["NEXT_TASK"]["TAS_UID"]);
|
||||
|
||||
$this->node[$value['ROU_NEXT_TASK']]['in'][$value['TAS_UID']] = $value['ROU_TYPE'];
|
||||
foreach ($arrayAux as $value2) {
|
||||
$arrayNextTask[++$i] = $value2;
|
||||
$key = ++$i;
|
||||
$arrayNextTask[$key] = $value2;
|
||||
$arrayNextTask[$key]['SOURCE_UID'] = $value['ROU_NEXT_TASK'];
|
||||
foreach($aSecJoin as $rsj){
|
||||
$arrayNextTask[$i]["NEXT_TASK"]["ROU_PREVIOUS_TASK"] = $rsj["ROU_PREVIOUS_TASK"];
|
||||
$arrayNextTask[$i]["NEXT_TASK"]["ROU_PREVIOUS_TYPE"] = "SEC-JOIN";
|
||||
@@ -262,7 +286,7 @@ class Derivation
|
||||
) {
|
||||
$arrayNextTaskData["NEXT_TASK"]["TAS_UID"] = $arrayNextTaskData["TAS_UID"] . "/" . $arrayNextTaskData["NEXT_TASK"]["TAS_UID"];
|
||||
}
|
||||
|
||||
$arrayNextTaskData['SOURCE_UID'] = $value['ROU_NEXT_TASK'];
|
||||
$arrayNextTask[++$i] = $arrayNextTaskData;
|
||||
foreach($aSecJoin as $rsj){
|
||||
$arrayNextTask[$i]["NEXT_TASK"]["ROU_PREVIOUS_TASK"] = $rsj["ROU_PREVIOUS_TASK"];
|
||||
@@ -781,6 +805,47 @@ class Derivation
|
||||
/*----------------------------------********---------------------------------*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Get valid origin Task
|
||||
*
|
||||
* @param string $applicationUid Unique id of Case
|
||||
* @param int $delIndex Delegation index
|
||||
*
|
||||
* @return string Returns valid origin Task
|
||||
*/
|
||||
private function __getTaskUidOrigin($applicationUid, $delIndex)
|
||||
{
|
||||
$taskUidOrigin = '';
|
||||
|
||||
do {
|
||||
$criteria = new Criteria('workflow');
|
||||
|
||||
$criteria->addSelectColumn(AppDelegationPeer::DEL_PREVIOUS);
|
||||
$criteria->addSelectColumn(TaskPeer::TAS_UID);
|
||||
$criteria->addSelectColumn(TaskPeer::TAS_TYPE);
|
||||
|
||||
$criteria->addJoin(AppDelegationPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::INNER_JOIN);
|
||||
$criteria->add(AppDelegationPeer::APP_UID, $applicationUid, Criteria::EQUAL);
|
||||
$criteria->add(AppDelegationPeer::DEL_INDEX, $delIndex, Criteria::EQUAL);
|
||||
|
||||
$rsCriteria = AppDelegationPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
if ($rsCriteria->next()) {
|
||||
$record = $rsCriteria->getRow();
|
||||
|
||||
if (preg_match('/^(?:' . 'NORMAL|SCRIPT\-TASK|WEBENTRYEVENT|START\-MESSAGE\-EVENT|START\-TIMER\-EVENT' . ')$/', $record['TAS_TYPE'])) {
|
||||
$taskUidOrigin = $record['TAS_UID'];
|
||||
}
|
||||
|
||||
$delIndex = $record['DEL_PREVIOUS'];
|
||||
}
|
||||
} while ($taskUidOrigin == '');
|
||||
|
||||
//Return
|
||||
return $taskUidOrigin;
|
||||
}
|
||||
|
||||
/** Derivate
|
||||
*
|
||||
* @param array $currentDelegation
|
||||
@@ -806,6 +871,8 @@ class Derivation
|
||||
//Get data for this DEL_INDEX current
|
||||
$appFields = $this->case->loadCase( $currentDelegation['APP_UID'], $currentDelegation['DEL_INDEX'] );
|
||||
|
||||
unset($appFields['APP_ROUTING_DATA']);
|
||||
|
||||
//We close the current derivation, then we'll try to derivate to each defined route
|
||||
$this->case->CloseCurrentDelegation( $currentDelegation['APP_UID'], $currentDelegation['DEL_INDEX'] );
|
||||
|
||||
@@ -1021,6 +1088,7 @@ class Derivation
|
||||
break;
|
||||
default:
|
||||
$iNewDelIndex = $this->doDerivation($currentDelegation, $nextDel, $appFields, $aSP);
|
||||
|
||||
if($iNewDelIndex !== 0){
|
||||
$arrayDerivationResult[] = ['DEL_INDEX' => $iNewDelIndex, 'TAS_UID' => $nextDel['TAS_UID'], 'USR_UID' => (isset($nextDel['USR_UID']))? $nextDel['USR_UID'] : ''];
|
||||
}
|
||||
@@ -1069,15 +1137,22 @@ class Derivation
|
||||
foreach ($arrayTaskNextDelNextDelegations as $key2 => $value2) {
|
||||
$arrayTaskNextDelNextDel = $value2;
|
||||
|
||||
if($arrayTaskNextDelNextDel["NEXT_TASK"]["TAS_ASSIGN_TYPE"] == 'MULTIPLE_INSTANCE'){
|
||||
$aUserAssigned = true;
|
||||
if(!isset($arrayTaskNextDelNextDel["NEXT_TASK"]["USER_ASSIGNED"]["0"]["USR_UID"])){
|
||||
throw new Exception(G::LoadTranslation("ID_NO_USERS"));
|
||||
}
|
||||
} else {
|
||||
if (!isset($arrayTaskNextDelNextDel["NEXT_TASK"]["USER_ASSIGNED"]["USR_UID"])) {
|
||||
throw new Exception(G::LoadTranslation("ID_NO_USERS"));
|
||||
}
|
||||
switch ($arrayTaskNextDelNextDel['NEXT_TASK']['TAS_ASSIGN_TYPE']) {
|
||||
case 'MANUAL':
|
||||
$arrayTaskNextDelNextDel['NEXT_TASK']['USER_ASSIGNED']['USR_UID'] = '';
|
||||
break;
|
||||
case 'MULTIPLE_INSTANCE':
|
||||
if (!isset($arrayTaskNextDelNextDel['NEXT_TASK']['USER_ASSIGNED']['0']['USR_UID'])) {
|
||||
throw new Exception(G::LoadTranslation('ID_NO_USERS'));
|
||||
}
|
||||
|
||||
$arrayTaskNextDelNextDel['NEXT_TASK']['USER_ASSIGNED']['USR_UID'] = '';
|
||||
break;
|
||||
default:
|
||||
if (!isset($arrayTaskNextDelNextDel['NEXT_TASK']['USER_ASSIGNED']['USR_UID'])) {
|
||||
throw new Exception(G::LoadTranslation('ID_NO_USERS'));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
$rouPreType = "";
|
||||
@@ -1088,6 +1163,7 @@ class Derivation
|
||||
$rouPreType = $arrayTaskNextDelNextDel["NEXT_TASK"]["ROU_PREVIOUS_TYPE"];
|
||||
$rouPreTask = $arrayTaskNextDelNextDel["NEXT_TASK"]["ROU_PREVIOUS_TASK"];
|
||||
}
|
||||
|
||||
$nextDelegationsAux[++$i] = array(
|
||||
"TAS_UID" => $arrayTaskNextDelNextDel["NEXT_TASK"]["TAS_UID"],
|
||||
"USR_UID" => $arrayTaskNextDelNextDel["NEXT_TASK"]["USER_ASSIGNED"]["USR_UID"],
|
||||
@@ -1195,15 +1271,39 @@ class Derivation
|
||||
|
||||
function doDerivation ($currentDelegation, $nextDel, $appFields, $aSP = null)
|
||||
{
|
||||
$case = new \ProcessMaker\BusinessModel\Cases();
|
||||
$arrayApplicationData = $case->getApplicationRecordByPk($currentDelegation['APP_UID'], [], false);
|
||||
|
||||
$arrayRoutingData = (!is_null($arrayApplicationData['APP_ROUTING_DATA']) && $arrayApplicationData['APP_ROUTING_DATA'] != '')? unserialize($arrayApplicationData['APP_ROUTING_DATA']) : [];
|
||||
|
||||
$iAppThreadIndex = $appFields['DEL_THREAD'];
|
||||
$delType = 'NORMAL';
|
||||
$sendNotificationsMobile = false;
|
||||
|
||||
$taskNextDel = TaskPeer::retrieveByPK($nextDel["TAS_UID"]);
|
||||
|
||||
$taskUidOrigin = $this->__getTaskUidOrigin($currentDelegation['APP_UID'], $currentDelegation['DEL_INDEX']);
|
||||
$taskUidDest = $taskNextDel->getTasUid();
|
||||
|
||||
if (array_key_exists($taskUidOrigin . '/' . $taskUidDest, $arrayRoutingData)) {
|
||||
$nextDel['USR_UID'] = $arrayRoutingData[$taskUidOrigin . '/' . $taskUidDest]['USR_UID'];
|
||||
|
||||
unset($arrayRoutingData[$taskUidOrigin . '/' . $taskUidDest]);
|
||||
}
|
||||
|
||||
if ($taskNextDel->getTasType() == 'NORMAL' &&
|
||||
$taskNextDel->getTasAssignType() != 'SELF_SERVICE' &&
|
||||
(is_null($nextDel['USR_UID']) || $nextDel['USR_UID'] == '')
|
||||
) {
|
||||
throw new Exception(G::LoadTranslation('ID_NO_USERS'));
|
||||
}
|
||||
|
||||
if (is_numeric( $nextDel['DEL_PRIORITY'] )) {
|
||||
$nextDel['DEL_PRIORITY'] = (isset( $nextDel['DEL_PRIORITY'] ) ? ($nextDel['DEL_PRIORITY'] >= 1 && $nextDel['DEL_PRIORITY'] <= 5 ? $nextDel['DEL_PRIORITY'] : '3') : '3');
|
||||
} else {
|
||||
$nextDel['DEL_PRIORITY'] = 3;
|
||||
}
|
||||
|
||||
switch ($nextDel['TAS_ASSIGN_TYPE']) {
|
||||
case 'CANCEL_MI':
|
||||
case 'STATIC_MI':
|
||||
@@ -1245,6 +1345,20 @@ class Derivation
|
||||
break;
|
||||
}
|
||||
|
||||
if (array_key_exists('NEXT_ROUTING', $nextDel) && is_array($nextDel['NEXT_ROUTING']) && !empty($nextDel['NEXT_ROUTING'])) {
|
||||
if (array_key_exists('TAS_UID', $nextDel['NEXT_ROUTING'])) {
|
||||
$arrayRoutingData[$currentDelegation['TAS_UID'] . '/' . $nextDel['NEXT_ROUTING']['TAS_UID']] = $nextDel['NEXT_ROUTING'];
|
||||
} else {
|
||||
foreach ($nextDel['NEXT_ROUTING'] as $value) {
|
||||
$arrayRoutingData[$currentDelegation['TAS_UID'] . '/' . $value['TAS_UID']] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$application = new Application();
|
||||
$result = $application->update(['APP_UID' => $currentDelegation['APP_UID'], 'APP_ROUTING_DATA' => serialize($arrayRoutingData)]);
|
||||
|
||||
//APP_THREAD
|
||||
$iAppThreadIndex = $appFields['DEL_THREAD'];
|
||||
|
||||
switch ($currentDelegation['ROU_TYPE']) {
|
||||
|
||||
@@ -368,7 +368,7 @@ class PMScript
|
||||
/**
|
||||
* Evaluate the current script
|
||||
*
|
||||
* @return void
|
||||
* @return boolean
|
||||
*/
|
||||
public function evaluate ()
|
||||
{
|
||||
|
||||
@@ -2249,6 +2249,7 @@ class wsBase
|
||||
$oCase->setDelInitDate( $caseId, $delIndex );
|
||||
$appFields = $oCase->loadCase( $caseId, $delIndex );
|
||||
}
|
||||
unset($appFields['APP_ROUTING_DATA']);
|
||||
|
||||
$appFields["APP_DATA"]["APPLICATION"] = $caseId;
|
||||
|
||||
@@ -2379,12 +2380,6 @@ class wsBase
|
||||
}
|
||||
|
||||
foreach ($derive as $key => $val) {
|
||||
if ($val['NEXT_TASK']['TAS_ASSIGN_TYPE'] == 'MANUAL') {
|
||||
$result = new wsResponse(15, G::LoadTranslation('ID_TASK_DEFINED_MANUAL_ASSIGNMENT'));
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
//Routed to the next task, if end process then not exist user
|
||||
$nodeNext = array();
|
||||
$usrasgdUid = null;
|
||||
@@ -2445,8 +2440,9 @@ class wsBase
|
||||
//derivate case
|
||||
$aCurrentDerivation = array ('APP_UID' => $caseId,'DEL_INDEX' => $delIndex,'APP_STATUS' => $sStatus,'TAS_UID' => $appdel['TAS_UID'],'ROU_TYPE' => $row[0]['ROU_TYPE']
|
||||
);
|
||||
|
||||
$oDerivation->derivate( $aCurrentDerivation, $nextDelegations );
|
||||
$oRoute = new \ProcessMaker\Core\RoutingScreen();
|
||||
$nextTasks = $oRoute->mergeDataDerivation($nextDelegations, $oDerivation->prepareInformation($aData));
|
||||
$oDerivation->derivate( $aCurrentDerivation, $nextTasks );
|
||||
$appFields = $oCase->loadCase( $caseId );
|
||||
|
||||
//Execute triggers after derivation
|
||||
@@ -2491,10 +2487,10 @@ class wsBase
|
||||
$appFields['APP_DATA'] = $oPMScript->aFields;
|
||||
//$appFields['APP_DATA']['APPLICATION'] = $caseId;
|
||||
//$appFields = $oCase->loadCase($caseId);
|
||||
unset($aFields['APP_STATUS']);
|
||||
unset($aFields['APP_PROC_STATUS']);
|
||||
unset($aFields['APP_PROC_CODE']);
|
||||
unset($aFields['APP_PIN']);
|
||||
unset($appFields['APP_STATUS']);
|
||||
unset($appFields['APP_PROC_STATUS']);
|
||||
unset($appFields['APP_PROC_CODE']);
|
||||
unset($appFields['APP_PIN']);
|
||||
$oCase->updateCase( $caseId, $appFields );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,6 +107,8 @@ class ApplicationMapBuilder
|
||||
|
||||
$tMap->addColumn('APP_DRIVE_FOLDER_UID', 'AppDriveFolderUid', 'string', CreoleTypes::VARCHAR, false, 32);
|
||||
|
||||
$tMap->addColumn('APP_ROUTING_DATA', 'AppRoutingData', 'string', CreoleTypes::LONGVARCHAR, false, null);
|
||||
|
||||
$tMap->addValidator('APP_STATUS', 'validValues', 'propel.validator.ValidValuesValidator', 'DRAFT|TO_DO|PAUSED|COMPLETED|CANCELLED', 'Please select a valid status.');
|
||||
|
||||
} // doBuild()
|
||||
|
||||
@@ -153,6 +153,12 @@ abstract class BaseApplication extends BaseObject implements Persistent
|
||||
*/
|
||||
protected $app_drive_folder_uid = '';
|
||||
|
||||
/**
|
||||
* The value for the app_routing_data field.
|
||||
* @var string
|
||||
*/
|
||||
protected $app_routing_data;
|
||||
|
||||
/**
|
||||
* Flag to prevent endless save loop, if this object is referenced
|
||||
* by another object which falls in this transaction.
|
||||
@@ -482,6 +488,17 @@ abstract class BaseApplication extends BaseObject implements Persistent
|
||||
return $this->app_drive_folder_uid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the [app_routing_data] column value.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getAppRoutingData()
|
||||
{
|
||||
|
||||
return $this->app_routing_data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of [app_uid] column.
|
||||
*
|
||||
@@ -960,6 +977,28 @@ abstract class BaseApplication extends BaseObject implements Persistent
|
||||
|
||||
} // setAppDriveFolderUid()
|
||||
|
||||
/**
|
||||
* Set the value of [app_routing_data] column.
|
||||
*
|
||||
* @param string $v new value
|
||||
* @return void
|
||||
*/
|
||||
public function setAppRoutingData($v)
|
||||
{
|
||||
|
||||
// Since the native PHP type for this column is string,
|
||||
// we will cast the input to a string (if it is not).
|
||||
if ($v !== null && !is_string($v)) {
|
||||
$v = (string) $v;
|
||||
}
|
||||
|
||||
if ($this->app_routing_data !== $v) {
|
||||
$this->app_routing_data = $v;
|
||||
$this->modifiedColumns[] = ApplicationPeer::APP_ROUTING_DATA;
|
||||
}
|
||||
|
||||
} // setAppRoutingData()
|
||||
|
||||
/**
|
||||
* Hydrates (populates) the object variables with values from the database resultset.
|
||||
*
|
||||
@@ -1019,12 +1058,14 @@ abstract class BaseApplication extends BaseObject implements Persistent
|
||||
|
||||
$this->app_drive_folder_uid = $rs->getString($startcol + 20);
|
||||
|
||||
$this->app_routing_data = $rs->getString($startcol + 21);
|
||||
|
||||
$this->resetModified();
|
||||
|
||||
$this->setNew(false);
|
||||
|
||||
// FIXME - using NUM_COLUMNS may be clearer.
|
||||
return $startcol + 21; // 21 = ApplicationPeer::NUM_COLUMNS - ApplicationPeer::NUM_LAZY_LOAD_COLUMNS).
|
||||
return $startcol + 22; // 22 = ApplicationPeer::NUM_COLUMNS - ApplicationPeer::NUM_LAZY_LOAD_COLUMNS).
|
||||
|
||||
} catch (Exception $e) {
|
||||
throw new PropelException("Error populating Application object", $e);
|
||||
@@ -1291,6 +1332,9 @@ abstract class BaseApplication extends BaseObject implements Persistent
|
||||
case 20:
|
||||
return $this->getAppDriveFolderUid();
|
||||
break;
|
||||
case 21:
|
||||
return $this->getAppRoutingData();
|
||||
break;
|
||||
default:
|
||||
return null;
|
||||
break;
|
||||
@@ -1332,6 +1376,7 @@ abstract class BaseApplication extends BaseObject implements Persistent
|
||||
$keys[18] => $this->getAppDuration(),
|
||||
$keys[19] => $this->getAppDelayDuration(),
|
||||
$keys[20] => $this->getAppDriveFolderUid(),
|
||||
$keys[21] => $this->getAppRoutingData(),
|
||||
);
|
||||
return $result;
|
||||
}
|
||||
@@ -1426,6 +1471,9 @@ abstract class BaseApplication extends BaseObject implements Persistent
|
||||
case 20:
|
||||
$this->setAppDriveFolderUid($value);
|
||||
break;
|
||||
case 21:
|
||||
$this->setAppRoutingData($value);
|
||||
break;
|
||||
} // switch()
|
||||
}
|
||||
|
||||
@@ -1533,6 +1581,10 @@ abstract class BaseApplication extends BaseObject implements Persistent
|
||||
$this->setAppDriveFolderUid($arr[$keys[20]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[21], $arr)) {
|
||||
$this->setAppRoutingData($arr[$keys[21]]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1628,6 +1680,10 @@ abstract class BaseApplication extends BaseObject implements Persistent
|
||||
$criteria->add(ApplicationPeer::APP_DRIVE_FOLDER_UID, $this->app_drive_folder_uid);
|
||||
}
|
||||
|
||||
if ($this->isColumnModified(ApplicationPeer::APP_ROUTING_DATA)) {
|
||||
$criteria->add(ApplicationPeer::APP_ROUTING_DATA, $this->app_routing_data);
|
||||
}
|
||||
|
||||
|
||||
return $criteria;
|
||||
}
|
||||
@@ -1722,6 +1778,8 @@ abstract class BaseApplication extends BaseObject implements Persistent
|
||||
|
||||
$copyObj->setAppDriveFolderUid($this->app_drive_folder_uid);
|
||||
|
||||
$copyObj->setAppRoutingData($this->app_routing_data);
|
||||
|
||||
|
||||
$copyObj->setNew(true);
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ abstract class BaseApplicationPeer
|
||||
const CLASS_DEFAULT = 'classes.model.Application';
|
||||
|
||||
/** The total number of columns. */
|
||||
const NUM_COLUMNS = 21;
|
||||
const NUM_COLUMNS = 22;
|
||||
|
||||
/** The number of lazy-loaded columns. */
|
||||
const NUM_LAZY_LOAD_COLUMNS = 0;
|
||||
@@ -94,6 +94,9 @@ abstract class BaseApplicationPeer
|
||||
/** the column name for the APP_DRIVE_FOLDER_UID field */
|
||||
const APP_DRIVE_FOLDER_UID = 'APPLICATION.APP_DRIVE_FOLDER_UID';
|
||||
|
||||
/** the column name for the APP_ROUTING_DATA field */
|
||||
const APP_ROUTING_DATA = 'APPLICATION.APP_ROUTING_DATA';
|
||||
|
||||
/** The PHP to DB Name Mapping */
|
||||
private static $phpNameMap = null;
|
||||
|
||||
@@ -105,10 +108,10 @@ abstract class BaseApplicationPeer
|
||||
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||
*/
|
||||
private static $fieldNames = array (
|
||||
BasePeer::TYPE_PHPNAME => array ('AppUid', 'AppTitle', 'AppDescription', 'AppNumber', 'AppParent', 'AppStatus', 'ProUid', 'AppProcStatus', 'AppProcCode', 'AppParallel', 'AppInitUser', 'AppCurUser', 'AppCreateDate', 'AppInitDate', 'AppFinishDate', 'AppUpdateDate', 'AppData', 'AppPin', 'AppDuration', 'AppDelayDuration', 'AppDriveFolderUid', ),
|
||||
BasePeer::TYPE_COLNAME => array (ApplicationPeer::APP_UID, ApplicationPeer::APP_TITLE, ApplicationPeer::APP_DESCRIPTION, ApplicationPeer::APP_NUMBER, ApplicationPeer::APP_PARENT, ApplicationPeer::APP_STATUS, ApplicationPeer::PRO_UID, ApplicationPeer::APP_PROC_STATUS, ApplicationPeer::APP_PROC_CODE, ApplicationPeer::APP_PARALLEL, ApplicationPeer::APP_INIT_USER, ApplicationPeer::APP_CUR_USER, ApplicationPeer::APP_CREATE_DATE, ApplicationPeer::APP_INIT_DATE, ApplicationPeer::APP_FINISH_DATE, ApplicationPeer::APP_UPDATE_DATE, ApplicationPeer::APP_DATA, ApplicationPeer::APP_PIN, ApplicationPeer::APP_DURATION, ApplicationPeer::APP_DELAY_DURATION, ApplicationPeer::APP_DRIVE_FOLDER_UID, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('APP_UID', 'APP_TITLE', 'APP_DESCRIPTION', 'APP_NUMBER', 'APP_PARENT', 'APP_STATUS', 'PRO_UID', 'APP_PROC_STATUS', 'APP_PROC_CODE', 'APP_PARALLEL', 'APP_INIT_USER', 'APP_CUR_USER', 'APP_CREATE_DATE', 'APP_INIT_DATE', 'APP_FINISH_DATE', 'APP_UPDATE_DATE', 'APP_DATA', 'APP_PIN', 'APP_DURATION', 'APP_DELAY_DURATION', 'APP_DRIVE_FOLDER_UID', ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, )
|
||||
BasePeer::TYPE_PHPNAME => array ('AppUid', 'AppTitle', 'AppDescription', 'AppNumber', 'AppParent', 'AppStatus', 'ProUid', 'AppProcStatus', 'AppProcCode', 'AppParallel', 'AppInitUser', 'AppCurUser', 'AppCreateDate', 'AppInitDate', 'AppFinishDate', 'AppUpdateDate', 'AppData', 'AppPin', 'AppDuration', 'AppDelayDuration', 'AppDriveFolderUid', 'AppRoutingData', ),
|
||||
BasePeer::TYPE_COLNAME => array (ApplicationPeer::APP_UID, ApplicationPeer::APP_TITLE, ApplicationPeer::APP_DESCRIPTION, ApplicationPeer::APP_NUMBER, ApplicationPeer::APP_PARENT, ApplicationPeer::APP_STATUS, ApplicationPeer::PRO_UID, ApplicationPeer::APP_PROC_STATUS, ApplicationPeer::APP_PROC_CODE, ApplicationPeer::APP_PARALLEL, ApplicationPeer::APP_INIT_USER, ApplicationPeer::APP_CUR_USER, ApplicationPeer::APP_CREATE_DATE, ApplicationPeer::APP_INIT_DATE, ApplicationPeer::APP_FINISH_DATE, ApplicationPeer::APP_UPDATE_DATE, ApplicationPeer::APP_DATA, ApplicationPeer::APP_PIN, ApplicationPeer::APP_DURATION, ApplicationPeer::APP_DELAY_DURATION, ApplicationPeer::APP_DRIVE_FOLDER_UID, ApplicationPeer::APP_ROUTING_DATA, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('APP_UID', 'APP_TITLE', 'APP_DESCRIPTION', 'APP_NUMBER', 'APP_PARENT', 'APP_STATUS', 'PRO_UID', 'APP_PROC_STATUS', 'APP_PROC_CODE', 'APP_PARALLEL', 'APP_INIT_USER', 'APP_CUR_USER', 'APP_CREATE_DATE', 'APP_INIT_DATE', 'APP_FINISH_DATE', 'APP_UPDATE_DATE', 'APP_DATA', 'APP_PIN', 'APP_DURATION', 'APP_DELAY_DURATION', 'APP_DRIVE_FOLDER_UID', 'APP_ROUTING_DATA', ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, )
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -118,10 +121,10 @@ abstract class BaseApplicationPeer
|
||||
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
|
||||
*/
|
||||
private static $fieldKeys = array (
|
||||
BasePeer::TYPE_PHPNAME => array ('AppUid' => 0, 'AppTitle' => 1, 'AppDescription' => 2, 'AppNumber' => 3, 'AppParent' => 4, 'AppStatus' => 5, 'ProUid' => 6, 'AppProcStatus' => 7, 'AppProcCode' => 8, 'AppParallel' => 9, 'AppInitUser' => 10, 'AppCurUser' => 11, 'AppCreateDate' => 12, 'AppInitDate' => 13, 'AppFinishDate' => 14, 'AppUpdateDate' => 15, 'AppData' => 16, 'AppPin' => 17, 'AppDuration' => 18, 'AppDelayDuration' => 19, 'AppDriveFolderUid' => 20, ),
|
||||
BasePeer::TYPE_COLNAME => array (ApplicationPeer::APP_UID => 0, ApplicationPeer::APP_TITLE => 1, ApplicationPeer::APP_DESCRIPTION => 2, ApplicationPeer::APP_NUMBER => 3, ApplicationPeer::APP_PARENT => 4, ApplicationPeer::APP_STATUS => 5, ApplicationPeer::PRO_UID => 6, ApplicationPeer::APP_PROC_STATUS => 7, ApplicationPeer::APP_PROC_CODE => 8, ApplicationPeer::APP_PARALLEL => 9, ApplicationPeer::APP_INIT_USER => 10, ApplicationPeer::APP_CUR_USER => 11, ApplicationPeer::APP_CREATE_DATE => 12, ApplicationPeer::APP_INIT_DATE => 13, ApplicationPeer::APP_FINISH_DATE => 14, ApplicationPeer::APP_UPDATE_DATE => 15, ApplicationPeer::APP_DATA => 16, ApplicationPeer::APP_PIN => 17, ApplicationPeer::APP_DURATION => 18, ApplicationPeer::APP_DELAY_DURATION => 19, ApplicationPeer::APP_DRIVE_FOLDER_UID => 20, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('APP_UID' => 0, 'APP_TITLE' => 1, 'APP_DESCRIPTION' => 2, 'APP_NUMBER' => 3, 'APP_PARENT' => 4, 'APP_STATUS' => 5, 'PRO_UID' => 6, 'APP_PROC_STATUS' => 7, 'APP_PROC_CODE' => 8, 'APP_PARALLEL' => 9, 'APP_INIT_USER' => 10, 'APP_CUR_USER' => 11, 'APP_CREATE_DATE' => 12, 'APP_INIT_DATE' => 13, 'APP_FINISH_DATE' => 14, 'APP_UPDATE_DATE' => 15, 'APP_DATA' => 16, 'APP_PIN' => 17, 'APP_DURATION' => 18, 'APP_DELAY_DURATION' => 19, 'APP_DRIVE_FOLDER_UID' => 20, ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, )
|
||||
BasePeer::TYPE_PHPNAME => array ('AppUid' => 0, 'AppTitle' => 1, 'AppDescription' => 2, 'AppNumber' => 3, 'AppParent' => 4, 'AppStatus' => 5, 'ProUid' => 6, 'AppProcStatus' => 7, 'AppProcCode' => 8, 'AppParallel' => 9, 'AppInitUser' => 10, 'AppCurUser' => 11, 'AppCreateDate' => 12, 'AppInitDate' => 13, 'AppFinishDate' => 14, 'AppUpdateDate' => 15, 'AppData' => 16, 'AppPin' => 17, 'AppDuration' => 18, 'AppDelayDuration' => 19, 'AppDriveFolderUid' => 20, 'AppRoutingData' => 21, ),
|
||||
BasePeer::TYPE_COLNAME => array (ApplicationPeer::APP_UID => 0, ApplicationPeer::APP_TITLE => 1, ApplicationPeer::APP_DESCRIPTION => 2, ApplicationPeer::APP_NUMBER => 3, ApplicationPeer::APP_PARENT => 4, ApplicationPeer::APP_STATUS => 5, ApplicationPeer::PRO_UID => 6, ApplicationPeer::APP_PROC_STATUS => 7, ApplicationPeer::APP_PROC_CODE => 8, ApplicationPeer::APP_PARALLEL => 9, ApplicationPeer::APP_INIT_USER => 10, ApplicationPeer::APP_CUR_USER => 11, ApplicationPeer::APP_CREATE_DATE => 12, ApplicationPeer::APP_INIT_DATE => 13, ApplicationPeer::APP_FINISH_DATE => 14, ApplicationPeer::APP_UPDATE_DATE => 15, ApplicationPeer::APP_DATA => 16, ApplicationPeer::APP_PIN => 17, ApplicationPeer::APP_DURATION => 18, ApplicationPeer::APP_DELAY_DURATION => 19, ApplicationPeer::APP_DRIVE_FOLDER_UID => 20, ApplicationPeer::APP_ROUTING_DATA => 21, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('APP_UID' => 0, 'APP_TITLE' => 1, 'APP_DESCRIPTION' => 2, 'APP_NUMBER' => 3, 'APP_PARENT' => 4, 'APP_STATUS' => 5, 'PRO_UID' => 6, 'APP_PROC_STATUS' => 7, 'APP_PROC_CODE' => 8, 'APP_PARALLEL' => 9, 'APP_INIT_USER' => 10, 'APP_CUR_USER' => 11, 'APP_CREATE_DATE' => 12, 'APP_INIT_DATE' => 13, 'APP_FINISH_DATE' => 14, 'APP_UPDATE_DATE' => 15, 'APP_DATA' => 16, 'APP_PIN' => 17, 'APP_DURATION' => 18, 'APP_DELAY_DURATION' => 19, 'APP_DRIVE_FOLDER_UID' => 20, 'APP_ROUTING_DATA' => 21, ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, )
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -264,6 +267,8 @@ abstract class BaseApplicationPeer
|
||||
|
||||
$criteria->addSelectColumn(ApplicationPeer::APP_DRIVE_FOLDER_UID);
|
||||
|
||||
$criteria->addSelectColumn(ApplicationPeer::APP_ROUTING_DATA);
|
||||
|
||||
}
|
||||
|
||||
const COUNT = 'COUNT(APPLICATION.APP_UID)';
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
<column name="APP_DURATION" type="DOUBLE" default="0"/>
|
||||
<column name="APP_DELAY_DURATION" type="DOUBLE" default="0"/>
|
||||
<column name="APP_DRIVE_FOLDER_UID" type="VARCHAR" size="32" default="" required="false"/>
|
||||
<column name="APP_ROUTING_DATA" type="LONGVARCHAR" />
|
||||
<validator column="APP_STATUS">
|
||||
<rule name="validValues" value="DRAFT|TO_DO|PAUSED|COMPLETED|CANCELLED" message="Please select a valid status." />
|
||||
</validator>
|
||||
|
||||
@@ -33,6 +33,7 @@ CREATE TABLE `APPLICATION`
|
||||
`APP_DURATION` DOUBLE default 0,
|
||||
`APP_DELAY_DURATION` DOUBLE default 0,
|
||||
`APP_DRIVE_FOLDER_UID` VARCHAR(32) default '',
|
||||
`APP_ROUTING_DATA` MEDIUMTEXT,
|
||||
PRIMARY KEY (`APP_UID`),
|
||||
KEY `indexApp`(`PRO_UID`, `APP_STATUS`, `APP_UID`),
|
||||
KEY `indexAppNumber`(`APP_NUMBER`),
|
||||
|
||||
@@ -122,8 +122,11 @@ try {
|
||||
$oDerivation = new Derivation();
|
||||
$aCurrentDerivation = array ('APP_UID' => $_SESSION['APPLICATION'],'DEL_INDEX' => $_SESSION['INDEX'],'APP_STATUS' => $sStatus,'TAS_UID' => $_SESSION['TASK'],'ROU_TYPE' => $_POST['form']['ROU_TYPE']
|
||||
);
|
||||
|
||||
$arrayDerivationResult = $oDerivation->derivate($aCurrentDerivation, $_POST['form']['TASKS']);
|
||||
$aPInformation = $oDerivation->prepareInformation( array ('USER_UID' => $_SESSION['USER_LOGGED'],'APP_UID' => $_SESSION['APPLICATION'],'DEL_INDEX' => $_SESSION['INDEX'])
|
||||
);
|
||||
$oRoute = new \ProcessMaker\Core\RoutingScreen();
|
||||
$nextTasks = $oRoute->mergeDataDerivation($_POST['form']['TASKS'], $aPInformation);
|
||||
$arrayDerivationResult = $oDerivation->derivate($aCurrentDerivation, $nextTasks);
|
||||
|
||||
if (!empty($arrayDerivationResult)) {
|
||||
foreach ($_POST['form']['TASKS'] as $key => $value) {
|
||||
|
||||
@@ -798,8 +798,13 @@ try {
|
||||
$aFields['TAS_TYPE_DAY'] = G::LoadTranslation( 'ID_COUNT_DAYS' );
|
||||
$aFields['TAS_CALENDAR'] = G::LoadTranslation( 'ID_CALENDAR' );
|
||||
|
||||
$aFields['TASK'] = $oDerivation->prepareInformation( array ('USER_UID' => $_SESSION['USER_LOGGED'],'APP_UID' => $_SESSION['APPLICATION'],'DEL_INDEX' => $_SESSION['INDEX']
|
||||
) );
|
||||
$oRoute = new \ProcessMaker\Core\RoutingScreen();
|
||||
$arrayData = array(
|
||||
'USER_UID' => $_SESSION['USER_LOGGED'],
|
||||
'APP_UID' => $_SESSION['APPLICATION'],
|
||||
'DEL_INDEX' => $_SESSION['INDEX']
|
||||
);
|
||||
$aFields['TASK'] = $oRoute->prepareRoutingScreen($arrayData);
|
||||
|
||||
if (empty( $aFields['TASK'] )) {
|
||||
throw (new Exception( G::LoadTranslation( 'ID_NO_DERIVATION_RULE' ) ));
|
||||
@@ -1049,6 +1054,9 @@ try {
|
||||
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'] . '">';
|
||||
}
|
||||
if(isset($aValues['SOURCE_UID'])){
|
||||
$aFields['TASK'][$sKey]['NEXT_TASK']['SOURCE_UID'] = '<input type="hidden" name="' . $hiddenName . '[SOURCE_UID]" id="' . $hiddenName . '[SOURCE_UID]" value="' . $aValues['SOURCE_UID'] . '">';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -394,7 +394,7 @@ class Light
|
||||
*
|
||||
* return array Return an array with Task Case
|
||||
*/
|
||||
public function GetPrepareInformation($usr_uid, $tas_uid, $app_uid, $del_index = null)
|
||||
public function getPrepareInformation($usr_uid, $tas_uid, $app_uid, $del_index = null)
|
||||
{
|
||||
try {
|
||||
$oCase = new \Cases();
|
||||
@@ -417,7 +417,8 @@ class Light
|
||||
$aData['APP_UID'] = $app_uid;
|
||||
$aData['DEL_INDEX'] = $del_index;
|
||||
$aData['USER_UID'] = $usr_uid;
|
||||
$derive = $oDerivation->prepareInformation( $aData );
|
||||
$oRoute = new \ProcessMaker\Core\RoutingScreen();
|
||||
$derive = $oRoute->prepareRoutingScreen($aData);
|
||||
$response = array();
|
||||
foreach ($derive as $sKey => &$aValues) {
|
||||
$sPriority = ''; //set priority value
|
||||
@@ -452,6 +453,7 @@ class Light
|
||||
$taskAss['delPriority'] = isset($aValues['NEXT_TASK']['DEL_PRIORITY'])?$aValues['NEXT_TASK']['DEL_PRIORITY']:"";
|
||||
$taskAss['taskParent'] = $aValues['NEXT_TASK']['TAS_PARENT'];
|
||||
$taskAss['taskMessage'] = $taskType?$taskMessage:"";
|
||||
$taskAss['sourceUid'] = $aValues['SOURCE_UID'];
|
||||
$users = array();
|
||||
$users['userId'] = $derive[$sKey]['NEXT_TASK']['USER_ASSIGNED']['USR_UID'];
|
||||
$users['userFullName'] = strip_tags($derive[$sKey]['NEXT_TASK']['USER_ASSIGNED']['USR_FULLNAME']);
|
||||
@@ -469,6 +471,7 @@ class Light
|
||||
$manual['delPriority'] = isset($aValues['NEXT_TASK']['DEL_PRIORITY'])?$aValues['NEXT_TASK']['DEL_PRIORITY']:"";
|
||||
$manual['taskParent'] = $aValues['NEXT_TASK']['TAS_PARENT'];
|
||||
$manual['taskMessage'] = $taskType?$taskMessage:"";
|
||||
$manual['sourceUid'] = $aValues['SOURCE_UID'];
|
||||
$Aux = array ();
|
||||
foreach ($aValues['NEXT_TASK']['USER_ASSIGNED'] as $aUser) {
|
||||
$Aux[$aUser['USR_UID']] = $aUser['USR_FULLNAME'];
|
||||
|
||||
109
workflow/engine/src/ProcessMaker/Core/RoutingScreen.php
Normal file
109
workflow/engine/src/ProcessMaker/Core/RoutingScreen.php
Normal file
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
|
||||
namespace ProcessMaker\Core;
|
||||
|
||||
|
||||
class RoutingScreen extends \Derivation
|
||||
{
|
||||
protected $convergent;
|
||||
protected $divergent;
|
||||
public $gateway = array('PARALLEL', 'PARALLEL-BY-EVALUATION');
|
||||
public $isFirst;
|
||||
protected $taskSecJoin;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->setRegexpTaskTypeToInclude("GATEWAYTOGATEWAY|END-MESSAGE-EVENT|END-EMAIL-EVENT|INTERMEDIATE-CATCH-TIMER-EVENT|INTERMEDIATE-THROW-EMAIL-EVENT");
|
||||
}
|
||||
|
||||
public function mergeDataDerivation($post, $prepareInformation)
|
||||
{
|
||||
$aDataMerged = array();
|
||||
$flagJumpTask = false;
|
||||
foreach ($prepareInformation as $key => $nextTask) {
|
||||
$aDataMerged[$key] = $nextTask['NEXT_TASK'];
|
||||
unset($aDataMerged[$key]['USER_ASSIGNED']);
|
||||
$aDataMerged[$key]['DEL_PRIORITY'] = '';
|
||||
foreach ($post as $i => $item) {
|
||||
if(isset($post[$i]['SOURCE_UID']) && ($nextTask['NEXT_TASK']['TAS_UID'] === $post[$i]['SOURCE_UID'])){
|
||||
$flagJumpTask = true;
|
||||
if($post[$i]['SOURCE_UID'] === $post[$i]['TAS_UID']){
|
||||
$aDataMerged[$key]['USR_UID'] = $post[$i]['USR_UID'];
|
||||
} else {
|
||||
$aDataMerged[$key]['NEXT_ROUTING'][] = $post[$i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//If flagJumpTask is false the template does not Jump Intermediate Events
|
||||
if(!$flagJumpTask){
|
||||
$aDataMerged = $post;
|
||||
}
|
||||
return $aDataMerged;
|
||||
}
|
||||
|
||||
public function prepareRoutingScreen($arrayData)
|
||||
{
|
||||
$information = $this->prepareInformation($arrayData);
|
||||
$response = array();
|
||||
$this->taskSecJoin = array();
|
||||
foreach ($information as $index => $element) {
|
||||
$this->divergent = array();
|
||||
$this->convergent = array();
|
||||
$this->isFirst = true;
|
||||
$x = $this->checkElement($this->node[$element['TAS_UID']]);
|
||||
if ($x) {
|
||||
$save = false;
|
||||
foreach ($response as $task) {
|
||||
if (!in_array($element['ROU_NEXT_TASK'], $task, true)) {
|
||||
$save = true;
|
||||
}
|
||||
}
|
||||
if ((!$response || $save)) {
|
||||
$response[] = $element;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (count($response) > 1) {
|
||||
foreach ($response as $index => $task) {
|
||||
$delete = false;
|
||||
foreach ($this->taskSecJoin as $tj => $type) {
|
||||
if (in_array($tj, $task, true)) {
|
||||
$delete = true;
|
||||
}
|
||||
}
|
||||
if ($delete) {
|
||||
unset($response[$index]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return array_combine(range(1, count($response)), array_values($response));
|
||||
}
|
||||
|
||||
public function checkElement($element)
|
||||
{
|
||||
$outElement = $element['out'];
|
||||
foreach ($outElement as $indexO => $outE) {
|
||||
if (!$this->isFirst && in_array($outE, $this->gateway)) {
|
||||
$this->divergent[$indexO] = $outE;
|
||||
}
|
||||
if ($outE == 'SEC-JOIN' && strpos($indexO, 'itee') === false) {
|
||||
$this->taskSecJoin[$indexO] = $outE;
|
||||
}
|
||||
}
|
||||
if (empty($element['in'])) {
|
||||
return true;
|
||||
}
|
||||
$this->isFirst = false;
|
||||
$inElement = $element['in'];
|
||||
foreach ($inElement as $indexI => $inE) {
|
||||
if ($inE == 'SEC-JOIN' && strpos($indexI, 'itee') !== false) {
|
||||
$this->convergent[$indexI] = $inE;
|
||||
}
|
||||
$this->checkElement($this->node[$indexI]);
|
||||
}
|
||||
return count($this->convergent) == 0 || count($this->divergent) == 0 || count($this->convergent) == count($this->divergent);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2106,7 +2106,7 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
//Update Process
|
||||
$process = \ProcessPeer::retrieveByPk($this->wp->getUid());
|
||||
|
||||
$arrayActionDone = ($process->getProActionDone() != '')? unserialize($process->getProActionDone()) : [];
|
||||
$arrayActionDone = (!is_null($process->getProActionDone()) && $process->getProActionDone() != '')? unserialize($process->getProActionDone()) : [];
|
||||
$arrayActionDone[] = $actionDone;
|
||||
|
||||
$this->wp->update(['PRO_ACTION_DONE' => serialize($arrayActionDone)]);
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
|
||||
<tr height="0">
|
||||
<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.ROU_CONDITION}
|
||||
{$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}{$data.NEXT_TASK.SOURCE_UID}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user