fixing xpdl import
This commit is contained in:
@@ -526,62 +526,118 @@ class Processes {
|
|||||||
$sProUid = $oData->process['PRO_UID'];
|
$sProUid = $oData->process['PRO_UID'];
|
||||||
$oData->process['PRO_UID'] = $sNewProUid;
|
$oData->process['PRO_UID'] = $sNewProUid;
|
||||||
|
|
||||||
foreach ($oData->tasks as $key => $val ) {
|
if ( isset($oData->tasks ) && is_array($oData->tasks) ) {
|
||||||
$oData->tasks[$key]['PRO_UID'] = $sNewProUid;
|
foreach ($oData->tasks as $key => $val ) {
|
||||||
|
$oData->tasks[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->routes as $key => $val ) {
|
|
||||||
$oData->routes[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->routes ) && is_array($oData->routes) ) {
|
||||||
|
foreach ($oData->routes as $key => $val ) {
|
||||||
|
$oData->routes[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->lanes as $key => $val ) {
|
|
||||||
$oData->lanes[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->lanes ) && is_array($oData->lanes) ) {
|
||||||
|
foreach ($oData->lanes as $key => $val ) {
|
||||||
|
$oData->lanes[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->inputs as $key => $val ) {
|
|
||||||
$oData->inputs[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->inputs ) && is_array($oData->inputs) ) {
|
||||||
|
foreach ($oData->inputs as $key => $val ) {
|
||||||
|
$oData->inputs[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->outputs as $key => $val ) {
|
|
||||||
$oData->outputs[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->outputs ) && is_array($oData->outputs) ) {
|
||||||
|
foreach ($oData->outputs as $key => $val ) {
|
||||||
|
$oData->outputs[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->steps as $key => $val ) {
|
|
||||||
$oData->steps[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->steps ) && is_array($oData->steps) ) {
|
||||||
|
foreach ($oData->steps as $key => $val ) {
|
||||||
|
$oData->steps[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->dynaforms as $key => $val ) {
|
|
||||||
$oData->dynaforms[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->dynaforms ) && is_array($oData->dynaforms) ) {
|
||||||
|
foreach ($oData->dynaforms as $key => $val ) {
|
||||||
|
$oData->dynaforms[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->triggers as $key => $val ) {
|
|
||||||
$oData->triggers[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->triggers ) && is_array($oData->triggers) ) {
|
||||||
|
foreach ($oData->triggers as $key => $val ) {
|
||||||
|
$oData->triggers[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->reportTables as $key => $val ) {
|
|
||||||
$oData->reportTables[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->reportTables ) && is_array($oData->reportTables) ) {
|
||||||
|
foreach ($oData->reportTables as $key => $val ) {
|
||||||
|
$oData->reportTables[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->reportTablesVars as $key => $val ) {
|
|
||||||
$oData->reportTablesVars[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->reportTablesVars ) && is_array($oData->reportTablesVars) ) {
|
||||||
|
foreach ($oData->reportTablesVars as $key => $val ) {
|
||||||
|
$oData->reportTablesVars[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->dbconnections as $key => $val ) {
|
|
||||||
$oData->dbconnections[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->dbconnections ) && is_array($oData->dbconnections) ) {
|
||||||
|
foreach ($oData->dbconnections as $key => $val ) {
|
||||||
|
$oData->dbconnections[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->stepSupervisor as $key => $val ) {
|
|
||||||
$oData->stepSupervisor[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->stepSupervisor ) && is_array($oData->stepSupervisor) ) {
|
||||||
|
foreach ($oData->stepSupervisor as $key => $val ) {
|
||||||
|
$oData->stepSupervisor[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->objectPermissions as $key => $val ) {
|
|
||||||
$oData->objectPermissions[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->objectPermissions ) && is_array($oData->objectPermissions) ) {
|
||||||
|
foreach ($oData->objectPermissions as $key => $val ) {
|
||||||
|
$oData->objectPermissions[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->caseTracker as $key => $val ) {
|
|
||||||
$oData->caseTracker[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->caseTracker ) && is_array($oData->caseTracker) ) {
|
||||||
|
foreach ($oData->caseTracker as $key => $val ) {
|
||||||
|
$oData->caseTracker[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->caseTrackerObject as $key => $val ) {
|
|
||||||
$oData->caseTrackerObject[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->caseTrackerObject ) && is_array($oData->caseTrackerObject) ) {
|
||||||
|
foreach ($oData->caseTrackerObject as $key => $val ) {
|
||||||
|
$oData->caseTrackerObject[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->stage as $key => $val ) {
|
|
||||||
$oData->stage[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->stage ) && is_array($oData->stage) ) {
|
||||||
|
foreach ($oData->stage as $key => $val ) {
|
||||||
|
$oData->stage[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->subProcess as $key => $val ) {
|
|
||||||
$oData->subProcess[$key]['PRO_PARENT'] = $sNewProUid;
|
if ( isset($oData->subProcess ) && is_array($oData->subProcess) ) {
|
||||||
|
foreach ($oData->subProcess as $key => $val ) {
|
||||||
|
$oData->subProcess[$key]['PRO_PARENT'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->event as $key => $val ) {
|
|
||||||
$oData->event[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->event ) && is_array($oData->event) ) {
|
||||||
|
foreach ($oData->event as $key => $val ) {
|
||||||
|
$oData->event[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($oData->caseScheduler as $key => $val){
|
|
||||||
$oData->caseScheduler[$key]['PRO_UID'] = $sNewProUid;
|
if ( isset($oData->caseScheduler ) && is_array($oData->caseScheduler) ) {
|
||||||
|
foreach ($oData->caseScheduler as $key => $val){
|
||||||
|
$oData->caseScheduler[$key]['PRO_UID'] = $sNewProUid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -610,45 +666,64 @@ class Processes {
|
|||||||
$map[ $val['TAS_UID'] ] = $newGuid;
|
$map[ $val['TAS_UID'] ] = $newGuid;
|
||||||
$oData->tasks[$key]['TAS_UID'] = $newGuid;
|
$oData->tasks[$key]['TAS_UID'] = $newGuid;
|
||||||
}
|
}
|
||||||
foreach ( $oData->routes as $key => $val ) {
|
if ( isset($oData->routes ) && is_array($oData->routes) ) {
|
||||||
$newGuid = $map[ $val['TAS_UID'] ];
|
foreach ( $oData->routes as $key => $val ) {
|
||||||
$oData->routes[$key]['TAS_UID'] = $newGuid;
|
|
||||||
if ( strlen ( $val['ROU_NEXT_TASK'] ) > 0 && $val['ROU_NEXT_TASK'] >0 ) {
|
|
||||||
$newGuid = $map[ $val['ROU_NEXT_TASK'] ];
|
|
||||||
$oData->routes[$key]['ROU_NEXT_TASK'] = $newGuid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
foreach ( $oData->steps as $key => $val ) {
|
|
||||||
$newGuid = $map[ $val['TAS_UID'] ];
|
|
||||||
$oData->steps[$key]['TAS_UID'] = $newGuid;
|
|
||||||
}
|
|
||||||
foreach ( $oData->steptriggers as $key => $val ) {
|
|
||||||
$newGuid = $map[ $val['TAS_UID'] ];
|
|
||||||
$oData->steptriggers[$key]['TAS_UID'] = $newGuid;
|
|
||||||
}
|
|
||||||
foreach ( $oData->taskusers as $key => $val ) {
|
|
||||||
$newGuid = $map[ $val['TAS_UID'] ];
|
|
||||||
$oData->taskusers[$key]['TAS_UID'] = $newGuid;
|
|
||||||
}
|
|
||||||
foreach ( $oData->subProcess as $key => $val ) {
|
|
||||||
$newGuid = $map[ $val['TAS_PARENT'] ];
|
|
||||||
$oData->subProcess[$key]['TAS_PARENT'] = $newGuid;
|
|
||||||
if (isset($map[ $val['TAS_UID'] ])) {
|
|
||||||
$newGuid = $map[ $val['TAS_UID'] ];
|
$newGuid = $map[ $val['TAS_UID'] ];
|
||||||
$oData->subProcess[$key]['TAS_UID'] = $newGuid;
|
$oData->routes[$key]['TAS_UID'] = $newGuid;
|
||||||
}
|
if ( strlen ( $val['ROU_NEXT_TASK'] ) > 0 && $val['ROU_NEXT_TASK'] >0 ) {
|
||||||
}
|
$newGuid = $map[ $val['ROU_NEXT_TASK'] ];
|
||||||
foreach ( $oData->objectPermissions as $key => $val ) {
|
$oData->routes[$key]['ROU_NEXT_TASK'] = $newGuid;
|
||||||
if (isset($map[ $val['TAS_UID'] ])) {
|
}
|
||||||
$newGuid = $map[ $val['TAS_UID'] ];
|
|
||||||
$oData->objectPermissions[$key]['TAS_UID'] = $newGuid;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ( $oData->caseScheduler as $key => $val ) {
|
if ( isset($oData->steps) && is_array($oData->steps) ) {
|
||||||
if (isset($map[ $val['TAS_UID'] ])) {
|
foreach ( $oData->steps as $key => $val ) {
|
||||||
$newGuid = $map[ $val['TAS_UID'] ];
|
$newGuid = $map[ $val['TAS_UID'] ];
|
||||||
$oData->caseScheduler[$key]['TAS_UID'] = $newGuid;
|
$oData->steps[$key]['TAS_UID'] = $newGuid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset($oData->steptriggers ) && is_array($oData->steptriggers) ) {
|
||||||
|
foreach ( $oData->steptriggers as $key => $val ) {
|
||||||
|
$newGuid = $map[ $val['TAS_UID'] ];
|
||||||
|
$oData->steptriggers[$key]['TAS_UID'] = $newGuid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset($oData->taskusers ) && is_array($oData->taskusers) ) {
|
||||||
|
foreach ( $oData->taskusers as $key => $val ) {
|
||||||
|
$newGuid = $map[ $val['TAS_UID'] ];
|
||||||
|
$oData->taskusers[$key]['TAS_UID'] = $newGuid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset($oData->subProcess ) && is_array($oData->subProcess) ) {
|
||||||
|
foreach ( $oData->subProcess as $key => $val ) {
|
||||||
|
$newGuid = $map[ $val['TAS_PARENT'] ];
|
||||||
|
$oData->subProcess[$key]['TAS_PARENT'] = $newGuid;
|
||||||
|
if (isset($map[ $val['TAS_UID'] ])) {
|
||||||
|
$newGuid = $map[ $val['TAS_UID'] ];
|
||||||
|
$oData->subProcess[$key]['TAS_UID'] = $newGuid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset($oData->objectPermissions ) && is_array($oData->objectPermissions) ) {
|
||||||
|
foreach ( $oData->objectPermissions as $key => $val ) {
|
||||||
|
if (isset($map[ $val['TAS_UID'] ])) {
|
||||||
|
$newGuid = $map[ $val['TAS_UID'] ];
|
||||||
|
$oData->objectPermissions[$key]['TAS_UID'] = $newGuid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset($oData->caseScheduler ) && is_array($oData->caseScheduler) ) {
|
||||||
|
foreach ( $oData->caseScheduler as $key => $val ) {
|
||||||
|
if (isset($map[ $val['TAS_UID'] ])) {
|
||||||
|
$newGuid = $map[ $val['TAS_UID'] ];
|
||||||
|
$oData->caseScheduler[$key]['TAS_UID'] = $newGuid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1446,10 +1521,12 @@ class Processes {
|
|||||||
*/
|
*/
|
||||||
function renewAllRouteGuid ( &$oData ) {
|
function renewAllRouteGuid ( &$oData ) {
|
||||||
$map = array ();
|
$map = array ();
|
||||||
foreach ( $oData->routes as $key => $val ) {
|
if ( isset($oData->routes ) && is_array($oData->routes) ) {
|
||||||
$newGuid = $this->getUnusedRouteGUID();
|
foreach ( $oData->routes as $key => $val ) {
|
||||||
$map[ $val['ROU_UID'] ] = $newGuid;
|
$newGuid = $this->getUnusedRouteGUID();
|
||||||
$oData->routes[$key]['ROU_UID'] = $newGuid;
|
$map[ $val['ROU_UID'] ] = $newGuid;
|
||||||
|
$oData->routes[$key]['ROU_UID'] = $newGuid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ class Tasks
|
|||||||
$routeID = $oRoute->create($row);
|
$routeID = $oRoute->create($row);
|
||||||
|
|
||||||
//saving end event while import old processes
|
//saving end event while import old processes
|
||||||
if($end==1){
|
if(isset($end) && $end==1){
|
||||||
if($sRouteType == "SEQUENTIAL"){
|
if($sRouteType == "SEQUENTIAL"){
|
||||||
$aTaskDetails = $oTask->load($idTask);
|
$aTaskDetails = $oTask->load($idTask);
|
||||||
$positionX = $aTaskDetails['TAS_POSX'] + $aTaskDetails['TAS_WIDTH']/2;
|
$positionX = $aTaskDetails['TAS_POSX'] + $aTaskDetails['TAS_WIDTH']/2;
|
||||||
|
|||||||
@@ -44,11 +44,15 @@ class Xpdl extends processes
|
|||||||
* @param string $pmFilename
|
* @param string $pmFilename
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function createProcessFromDataXpdl ($oData,$tasks)
|
function createProcessFromDataXpdl ($oData,$tasks) {
|
||||||
{ $this->removeProcessRows ($oData->process['PRO_UID'] );
|
if ( !isset($oData->process['PRO_UID']) || trim($oData->process['PRO_UID']) == '' )
|
||||||
|
$oData->process['PRO_UID'] = G::generateUniqueID() ;
|
||||||
|
|
||||||
|
$this->removeProcessRows ($oData->process['PRO_UID'] );
|
||||||
$uid = $this->createProcessRow($oData->process);
|
$uid = $this->createProcessRow($oData->process);
|
||||||
$this->createTaskRows($oData->tasks);
|
$this->createTaskRows($oData->tasks);
|
||||||
$newTasks=$this->verifyTasks($uid,$tasks);
|
$newTasks=$this->verifyTasks($uid,$tasks);
|
||||||
|
if ( !isset($oData->routes) ) $oData->routes = array();
|
||||||
$this->createRouteRowsXpdl($uid,$oData->routes,$newTasks);
|
$this->createRouteRowsXpdl($uid,$oData->routes,$newTasks);
|
||||||
$this->createLaneRows($oData->lanes);
|
$this->createLaneRows($oData->lanes);
|
||||||
$this->createDynaformRows($oData->dynaforms);
|
$this->createDynaformRows($oData->dynaforms);
|
||||||
@@ -1602,7 +1606,7 @@ class Xpdl extends processes
|
|||||||
$nameProcess = '';
|
$nameProcess = '';
|
||||||
$sw = 0;
|
$sw = 0;
|
||||||
$file = new DOMDocument();
|
$file = new DOMDocument();
|
||||||
$file->load($pmFilename);
|
@$file->load($pmFilename, LIBXML_DTDLOAD);
|
||||||
$root = $file->documentElement;
|
$root = $file->documentElement;
|
||||||
$node = $root->firstChild;
|
$node = $root->firstChild;
|
||||||
$numberTasks = 0;
|
$numberTasks = 0;
|
||||||
@@ -1751,7 +1755,7 @@ class Xpdl extends processes
|
|||||||
$oData->subProcess = array();
|
$oData->subProcess = array();
|
||||||
$numberSubProcess = 0;
|
$numberSubProcess = 0;
|
||||||
$arraySubProcess = $subProcesses;
|
$arraySubProcess = $subProcesses;
|
||||||
$numberSubProcess = sizeof($arraySubProcesses);
|
$numberSubProcess = isset($arraySubProcesses) && is_array($arraySubProcesses) ? sizeof($arraySubProcesses) : 0;
|
||||||
$numberCount = 0;
|
$numberCount = 0;
|
||||||
foreach($subProcesses as $key => $value) {
|
foreach($subProcesses as $key => $value) {
|
||||||
foreach($oData->tasks as $keyTask => $valueTask) {
|
foreach($oData->tasks as $keyTask => $valueTask) {
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ class Process extends BaseProcess {
|
|||||||
public function setProTitle($v)
|
public function setProTitle($v)
|
||||||
{
|
{
|
||||||
if ( $this->getProUid() == '' ) {
|
if ( $this->getProUid() == '' ) {
|
||||||
throw ( new Exception( "Error in setProTitle, the PRO_UID can't be blank") );
|
throw ( new Exception( "Error in setProTitle, the PRO_UID can't be blank" . print_r (debug_backtrace(), 1) ) );
|
||||||
}
|
}
|
||||||
// Since the native PHP type for this column is string,
|
// Since the native PHP type for this column is string,
|
||||||
// we will cast the input to a string (if it is not).
|
// we will cast the input to a string (if it is not).
|
||||||
@@ -376,7 +376,7 @@ class Process extends BaseProcess {
|
|||||||
public function createRow($aData)
|
public function createRow($aData)
|
||||||
{
|
{
|
||||||
$con = Propel::getConnection( ProcessPeer::DATABASE_NAME );
|
$con = Propel::getConnection( ProcessPeer::DATABASE_NAME );
|
||||||
$con->begin();
|
//$con->begin(); //does not allow dual BEGIN
|
||||||
$this->setProUid ( $aData['PRO_UID'] );
|
$this->setProUid ( $aData['PRO_UID'] );
|
||||||
$this->setProParent ( $aData['PRO_PARENT'] );
|
$this->setProParent ( $aData['PRO_PARENT'] );
|
||||||
$this->setProTime ( $aData['PRO_TIME'] );
|
$this->setProTime ( $aData['PRO_TIME'] );
|
||||||
@@ -399,11 +399,10 @@ class Process extends BaseProcess {
|
|||||||
$this->setProTitleX ( $aData['PRO_TITLE_X'] );
|
$this->setProTitleX ( $aData['PRO_TITLE_X'] );
|
||||||
$this->setProTitleY ( $aData['PRO_TITLE_Y'] );
|
$this->setProTitleY ( $aData['PRO_TITLE_Y'] );
|
||||||
if ( $this->validate() ) {
|
if ( $this->validate() ) {
|
||||||
///-- Does not allow dual Begin
|
$con->begin();
|
||||||
///-- $con->begin();
|
|
||||||
$res = $this->save();
|
$res = $this->save();
|
||||||
|
|
||||||
if (isset ( $aData['PRO_TITLE'] ) )
|
if (isset ( $aData['PRO_TITLE'] ) && trim ($aData['PRO_TITLE']) != '' )
|
||||||
$this->setProTitle ( $aData['PRO_TITLE'] );
|
$this->setProTitle ( $aData['PRO_TITLE'] );
|
||||||
else
|
else
|
||||||
$this->setProTitle ( 'Default Process Title' );
|
$this->setProTitle ( 'Default Process Title' );
|
||||||
|
|||||||
@@ -48,6 +48,7 @@
|
|||||||
$sProUid = $oData->process['PRO_UID'];
|
$sProUid = $oData->process['PRO_UID'];
|
||||||
|
|
||||||
$oData->process['PRO_UID_OLD']=$sProUid;
|
$oData->process['PRO_UID_OLD']=$sProUid;
|
||||||
|
if ( !isset( $oData->tasks) ) $oData->tasks = array();
|
||||||
$tasks = $oData->tasks;
|
$tasks = $oData->tasks;
|
||||||
// code added by gustavo cruz gustavo-at-colosa-dot-com
|
// code added by gustavo cruz gustavo-at-colosa-dot-com
|
||||||
// evaluate actions or import options
|
// evaluate actions or import options
|
||||||
|
|||||||
@@ -92,6 +92,7 @@
|
|||||||
die;
|
die;
|
||||||
}
|
}
|
||||||
// end added code
|
// end added code
|
||||||
|
if ( !isset( $oData->tasks) ) $oData->tasks = array();
|
||||||
$tasks = $oData->tasks;
|
$tasks = $oData->tasks;
|
||||||
$oProcess->createProcessFromDataXpdl ($oData,$tasks);
|
$oProcess->createProcessFromDataXpdl ($oData,$tasks);
|
||||||
G::header('Location: processes_Map?PRO_UID=' . $sProUid);
|
G::header('Location: processes_Map?PRO_UID=' . $sProUid);
|
||||||
|
|||||||
Reference in New Issue
Block a user