Merged in victorsl/processmaker (pull request #442)
ProcessMaker-BE "BPMN Import"
This commit is contained in:
@@ -753,10 +753,18 @@ class Processes
|
||||
{
|
||||
$map = array ();
|
||||
foreach ($oData->tasks as $key => $val) {
|
||||
$newGuid = $this->getUnusedTaskGUID();
|
||||
$map[$val['TAS_UID']] = $newGuid;
|
||||
$oData->tasks[$key]['TAS_UID'] = $newGuid;
|
||||
if (!isset($val["TAS_UID_OLD"])) {
|
||||
$uidNew = $this->getUnusedTaskGUID();
|
||||
$map[$val["TAS_UID"]] = $uidNew;
|
||||
|
||||
$oData->tasks[$key]["TAS_UID"] = $uidNew;
|
||||
} else {
|
||||
$map[$val["TAS_UID_OLD"]] = $val["TAS_UID"];
|
||||
}
|
||||
}
|
||||
|
||||
$oData->uid["TASK"] = $map;
|
||||
|
||||
if (isset( $oData->routes ) && is_array( $oData->routes )) {
|
||||
foreach ($oData->routes as $key => $val) {
|
||||
$newGuid = $map[$val['TAS_UID']];
|
||||
@@ -845,6 +853,8 @@ class Processes
|
||||
$oData->dynaforms[$key]['DYN_UID'] = $newGuid;
|
||||
}
|
||||
|
||||
$oData->uid["DYNAFORM"] = $map;
|
||||
|
||||
if (isset( $oData->process['PRO_DYNAFORMS'] ) && ! is_array( $oData->process['PRO_DYNAFORMS'] )) {
|
||||
$oData->process['PRO_DYNAFORMS'] = @unserialize( $oData->process['PRO_DYNAFORMS'] );
|
||||
}
|
||||
@@ -889,9 +899,12 @@ class Processes
|
||||
$oData->stepSupervisor[$key]['STEP_UID_OBJ'] = $newGuid;
|
||||
}
|
||||
}
|
||||
foreach ($oData->dynaformFiles as $key => $val) {
|
||||
$newGuid = $map[$key];
|
||||
$oData->dynaformFiles[$key] = $newGuid;
|
||||
|
||||
if (isset($oData->dynaformFiles)) {
|
||||
foreach ($oData->dynaformFiles as $key => $value) {
|
||||
$newGuid = $map[$key];
|
||||
$oData->dynaformFiles[$key] = $newGuid;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isset( $oData->gridFiles )) {
|
||||
@@ -1550,6 +1563,9 @@ class Processes
|
||||
$map[$val['INP_DOC_UID']] = $newGuid;
|
||||
$oData->inputs[$key]['INP_DOC_UID'] = $newGuid;
|
||||
}
|
||||
|
||||
$oData->uid["INPUT_DOCUMENT"] = $map;
|
||||
|
||||
foreach ($oData->steps as $key => $val) {
|
||||
if (isset( $val['STEP_TYPE_OBJ'] )) {
|
||||
if ($val['STEP_TYPE_OBJ'] == 'INPUT_DOCUMENT') {
|
||||
@@ -1646,6 +1662,9 @@ class Processes
|
||||
$map[$val['OUT_DOC_UID']] = $newGuid;
|
||||
$oData->outputs[$key]['OUT_DOC_UID'] = $newGuid;
|
||||
}
|
||||
|
||||
$oData->uid["OUTPUT_DOCUMENT"] = $map;
|
||||
|
||||
foreach ($oData->steps as $key => $val) {
|
||||
if (isset( $val['STEP_TYPE_OBJ'] )) {
|
||||
if ($val['STEP_TYPE_OBJ'] == 'OUTPUT_DOCUMENT') {
|
||||
@@ -1688,6 +1707,9 @@ class Processes
|
||||
$map[$val['TRI_UID']] = $newGuid;
|
||||
$oData->triggers[$key]['TRI_UID'] = $newGuid;
|
||||
}
|
||||
|
||||
$oData->uid["TRIGGER"] = $map;
|
||||
|
||||
foreach ($oData->steptriggers as $key => $val) {
|
||||
if (isset( $map[$val['TRI_UID']] )) {
|
||||
$newGuid = $map[$val['TRI_UID']];
|
||||
@@ -1696,6 +1718,13 @@ class Processes
|
||||
$oData->steptriggers[$key]['TRI_UID'] = $this->getUnusedTriggerGUID();
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($oData->process["PRO_TRI_DELETED"])) {
|
||||
$oData->process["PRO_TRI_DELETED"] = $map[$oData->process["PRO_TRI_DELETED"]];
|
||||
$oData->process["PRO_TRI_CANCELED"] = $map[$oData->process["PRO_TRI_CANCELED"]];
|
||||
$oData->process["PRO_TRI_PAUSED"] = $map[$oData->process["PRO_TRI_PAUSED"]];
|
||||
$oData->process["PRO_TRI_REASSIGNED"] = $map[$oData->process["PRO_TRI_REASSIGNED"]];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1712,6 +1741,8 @@ class Processes
|
||||
$map[$val['SP_UID']] = $newGuid;
|
||||
$oData->subProcess[$key]['SP_UID'] = $newGuid;
|
||||
}
|
||||
|
||||
$oData->uid["SUB_PROCESS"] = $map;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1728,6 +1759,8 @@ class Processes
|
||||
$map[$val['CTO_UID']] = $newGuid;
|
||||
$oData->caseTrackerObject[$key]['CTO_UID'] = $newGuid;
|
||||
}
|
||||
|
||||
$oData->uid["CASE_TRACKER_OBJECT"] = $map;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1745,6 +1778,9 @@ class Processes
|
||||
$map[$val['DBS_UID']] = $newGuid;
|
||||
$oData->dbconnections[$key]['DBS_UID'] = $newGuid;
|
||||
}
|
||||
|
||||
$oData->uid["DB_SOURCE"] = $map;
|
||||
|
||||
$oData->sqlConnections = $map;
|
||||
}
|
||||
|
||||
@@ -1762,6 +1798,8 @@ class Processes
|
||||
$map[$val['OP_UID']] = $newGuid;
|
||||
$oData->objectPermissions[$key]['OP_UID'] = $newGuid;
|
||||
}
|
||||
|
||||
$oData->uid["OBJECT_PERMISSION"] = $map;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1780,6 +1818,8 @@ class Processes
|
||||
$oData->routes[$key]['ROU_UID'] = $newGuid;
|
||||
}
|
||||
}
|
||||
|
||||
$oData->uid["ROUTE"] = $map;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1796,6 +1836,9 @@ class Processes
|
||||
$map[$val['STG_UID']] = $newGuid;
|
||||
$oData->stage[$key]['STG_UID'] = $newGuid;
|
||||
}
|
||||
|
||||
$oData->uid["STAGE"] = $map;
|
||||
|
||||
foreach ($oData->tasks as $key => $val) {
|
||||
if (isset( $map[$val['STG_UID']] )) {
|
||||
$newGuid = $map[$val['STG_UID']];
|
||||
@@ -1818,6 +1861,8 @@ class Processes
|
||||
$map[$val['SWI_UID']] = $newGuid;
|
||||
$oData->lanes[$key]['SWI_UID'] = $newGuid;
|
||||
}
|
||||
|
||||
$oData->uid["SWIMLANE_ELEMENT"] = $map;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1834,6 +1879,9 @@ class Processes
|
||||
$map[$val['REP_TAB_UID']] = $newGuid;
|
||||
$oData->reportTables[$key]['REP_TAB_UID'] = $newGuid;
|
||||
}
|
||||
|
||||
$oData->uid["REPORT_TABLE"] = $map;
|
||||
|
||||
foreach ($oData->reportTablesVars as $key => $val) {
|
||||
if (isset( $map[$val['REP_TAB_UID']] )) {
|
||||
/*TODO: Why this can be not defined?? The scenario was when
|
||||
@@ -1859,6 +1907,8 @@ class Processes
|
||||
$map[$val['REP_VAR_UID']] = $newGuid;
|
||||
$oData->reportTablesVars[$key]['REP_VAR_UID'] = $newGuid;
|
||||
}
|
||||
|
||||
$oData->uid["REPORT_VAR"] = $map;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1875,6 +1925,8 @@ class Processes
|
||||
$map[$val['FCD_UID']] = $newGuid;
|
||||
$oData->fieldCondition[$key]['FCD_UID'] = $newGuid;
|
||||
}
|
||||
|
||||
$oData->uid["FIELD_CONDITION"] = $map;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1891,6 +1943,8 @@ class Processes
|
||||
$map[$val['EVN_UID']] = $newGuid;
|
||||
$oData->event[$key]['EVN_UID'] = $newGuid;
|
||||
}
|
||||
|
||||
$oData->uid["EVENT"] = $map;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1907,6 +1961,8 @@ class Processes
|
||||
$map[$val['SCH_UID']] = $newGuid;
|
||||
$oData->caseScheduler[$key]['SCH_UID'] = $newGuid;
|
||||
}
|
||||
|
||||
$oData->uid["CASE_SCHEDULER"] = $map;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1917,6 +1973,8 @@ class Processes
|
||||
*/
|
||||
public function renewAll (&$oData)
|
||||
{
|
||||
$oData->uid = array();
|
||||
|
||||
$this->renewAllTaskGuid( $oData );
|
||||
$this->renewAllDynaformGuid( $oData );
|
||||
$this->renewAllInputGuid( $oData );
|
||||
@@ -2017,6 +2075,9 @@ class Processes
|
||||
$oData->steps[$key]['STEP_UID'] = $newGuid;
|
||||
}
|
||||
}
|
||||
|
||||
$oData->uid["STEP"] = $map;
|
||||
|
||||
foreach ($oData->steptriggers as $key => $val) {
|
||||
if ($val['STEP_UID'] > 0) {
|
||||
if (isset( $map[$val['STEP_UID']] )) {
|
||||
@@ -2589,7 +2650,7 @@ class Processes
|
||||
}
|
||||
|
||||
public function getWorkflowData($sProUid = '')
|
||||
{
|
||||
{
|
||||
$oProcess = new Process();
|
||||
$oData = new StdClass();
|
||||
$oData->process = $this->getProcessRow( $sProUid, false );
|
||||
@@ -2618,7 +2679,7 @@ class Processes
|
||||
$oData->event = $this->getEventRow( $sProUid );
|
||||
$oData->caseScheduler = $this->getCaseSchedulerRow( $sProUid );
|
||||
$oData->processCategory = $this->getProcessCategoryRow( $sProUid );
|
||||
$oData->taskExtraProperties = $this->getTaskExtraPropertiesRows( $sProUid );
|
||||
$oData->taskExtraProperties = $this->getTaskExtraPropertiesRows( $sProUid );
|
||||
$this->getGroupwfSupervisor( $sProUid, $oData);
|
||||
|
||||
//krumo ($oData);die;
|
||||
@@ -3220,8 +3281,8 @@ class Processes
|
||||
}
|
||||
|
||||
/**
|
||||
* The current method is for filter every row that exist in
|
||||
* the Configuration table
|
||||
* The current method is for filter every row that exist in
|
||||
* the Configuration table
|
||||
*
|
||||
* @param array $aTaskExtraProperties
|
||||
* @return void
|
||||
@@ -3231,15 +3292,18 @@ class Processes
|
||||
if (count($aTaskExtraProperties) > 0) {
|
||||
$oConfig = new Configuration();
|
||||
foreach ($aTaskExtraProperties as $key => $row) {
|
||||
if ($oConfig->exists( $row['CFG_UID'], $row['OBJ_UID'], $row['PRO_UID'], $row['USR_UID'], $row['APP_UID']) ) {
|
||||
if ($oConfig->exists( $row['CFG_UID'], $row['OBJ_UID'], $row['PRO_UID'], $row['USR_UID'], $row['APP_UID']) ) {
|
||||
$oConfig->remove( $row['CFG_UID'], $row['OBJ_UID'], $row['PRO_UID'], $row['USR_UID'], $row['APP_UID'] );
|
||||
$oConfig->setDeleted(false);
|
||||
}
|
||||
$res = $oConfig->create( $row );
|
||||
$oConfig->setNew(true);
|
||||
$oConfig->setProperties();
|
||||
|
||||
if (method_exists($oConfig, "setProperties")) {
|
||||
$oConfig->setProperties();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3559,7 +3623,7 @@ class Processes
|
||||
$this->createProcessCategoryRow( isset( $oData->processCategory ) ? $oData->processCategory : null );
|
||||
|
||||
// create the process
|
||||
// $this->createProcessRow( $oData->process );
|
||||
//$this->createProcessRow( $oData->process );
|
||||
$this->createTaskRows( $oData->tasks );
|
||||
//it was commented becuase it seems to be working fine
|
||||
//$this->createEventRows(isset($oData->event) ? $oData->event : array());
|
||||
@@ -3949,7 +4013,7 @@ class Processes
|
||||
if (defined('PARTNER_FLAG')) {
|
||||
@copy( PATH_TPL . "mails" . PATH_SEP . "unassignedMessagePartner.html", $dir . G::LoadTranslation('ID_UNASSIGNED_MESSAGE'));
|
||||
} else {
|
||||
@copy( PATH_TPL . "mails" . PATH_SEP . "unassignedMessage.html", $dir . G::LoadTranslation('ID_UNASSIGNED_MESSAGE'));
|
||||
@copy( PATH_TPL . "mails" . PATH_SEP . "unassignedMessage.html", $dir . G::LoadTranslation('ID_UNASSIGNED_MESSAGE'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3974,7 +4038,7 @@ class Processes
|
||||
public function getTaskExtraPropertiesRows( $proId )
|
||||
{
|
||||
try {
|
||||
|
||||
|
||||
$oCriteria = new Criteria('workflow');
|
||||
$oCriteria->addSelectColumn( ConfigurationPeer::CFG_UID );
|
||||
$oCriteria->addSelectColumn( ConfigurationPeer::OBJ_UID );
|
||||
@@ -3988,7 +4052,7 @@ class Processes
|
||||
$oDataset = ConfigurationPeer::doSelectRS( $oCriteria );
|
||||
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
|
||||
$oDataset->next();
|
||||
|
||||
|
||||
$aConfRows = array();
|
||||
while ($aRow = $oDataset->getRow()) {
|
||||
$aConfRows[] = $aRow;
|
||||
|
||||
@@ -62,12 +62,11 @@ if (isset($_FILES["PROCESS_FILENAME"])) {
|
||||
echo json_encode($result);
|
||||
exit(0);
|
||||
}
|
||||
} elseif (isset($_POST["PRO_FILENAME"]) && file_exists(PATH_DOCUMENT . 'input' . PATH_SEP . $_POST["PRO_FILENAME"])) {
|
||||
|
||||
} elseif (isset($_POST["PRO_FILENAME"]) && file_exists(PATH_DOCUMENT . "input" . PATH_SEP . $_POST["PRO_FILENAME"]) && pathinfo(PATH_DOCUMENT . "input" . PATH_SEP . $_POST["PRO_FILENAME"], PATHINFO_EXTENSION) == "pmx") {
|
||||
switch ($_POST["IMPORT_OPTION"]) {
|
||||
case 1: $option = XmlImporter::IMPORT_OPTION_OVERWRITE; break;
|
||||
case 2: $option = XmlImporter::IMPORT_OPTION_DISABLE_AND_CREATE_NEW; break;
|
||||
case 3: $option = XmlImporter::IMPORT_OPTION_CREATE_NEW; break;
|
||||
case 3: $option = XmlImporter::IMPORT_OPTION_KEEP_WITHOUT_CHANGING_AND_CREATE_NEW; break;
|
||||
}
|
||||
|
||||
$importer = new XmlImporter();
|
||||
@@ -75,7 +74,16 @@ if (isset($_FILES["PROCESS_FILENAME"])) {
|
||||
$importer->setSourceFile(PATH_DOCUMENT . 'input' . PATH_SEP . $_POST["PRO_FILENAME"]);
|
||||
|
||||
try {
|
||||
$res = $importer->import($option);
|
||||
$prjUid = $importer->import($option);
|
||||
|
||||
$result = array(
|
||||
"success" => true,
|
||||
"catchMessage" => "",
|
||||
"ExistProcessInDatabase" => 0,
|
||||
"ExistGroupsInDatabase" => 0,
|
||||
"sNewProUid" => $prjUid,
|
||||
"project_type" => "bpmn"
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
$result = array(
|
||||
"success" => true,
|
||||
@@ -89,6 +97,7 @@ if (isset($_FILES["PROCESS_FILENAME"])) {
|
||||
);
|
||||
}
|
||||
|
||||
echo G::json_encode($result);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -325,7 +334,7 @@ if ($action == "uploadFileNewProcessExist") {
|
||||
if ($option == 2) {
|
||||
$oProcess->disablePreviousProcesses( $sProUid );
|
||||
$sNewProUid = $oProcess->getUnusedProcessGUID();
|
||||
$oProcess->setProcessGuid( $oData, $sNewProUid );
|
||||
$oProcess->setProcessGUID($oData, $sNewProUid);
|
||||
$oProcess->setProcessParent( $oData, $sProUid );
|
||||
$oData->process['PRO_TITLE'] = "New - " . $oData->process['PRO_TITLE'] . ' - ' . date( 'M d, H:i' );
|
||||
$oProcess->renewAll( $oData );
|
||||
@@ -339,7 +348,7 @@ if ($action == "uploadFileNewProcessExist") {
|
||||
if ($option == 3) {
|
||||
//krumo ($oData); die;
|
||||
$sNewProUid = $oProcess->getUnusedProcessGUID();
|
||||
$oProcess->setProcessGuid( $oData, $sNewProUid );
|
||||
$oProcess->setProcessGUID($oData, $sNewProUid);
|
||||
$oData->process['PRO_TITLE'] = G::LoadTranslation('ID_COPY_OF'). ' - ' . $oData->process['PRO_TITLE'] . ' - ' . date( 'M d, H:i' );
|
||||
$oProcess->renewAll( $oData );
|
||||
|
||||
|
||||
@@ -105,14 +105,8 @@ class WebEntry
|
||||
{
|
||||
$name = trim($name);
|
||||
|
||||
$arraySpecialCharSearch = array(
|
||||
"/", "\\",
|
||||
" "
|
||||
);
|
||||
$arraySpecialCharReplace = array(
|
||||
"_", "_",
|
||||
"_"
|
||||
);
|
||||
$arraySpecialCharSearch = array("/", "\\", " ", "#");
|
||||
$arraySpecialCharReplace = array("_", "_", "_", "");
|
||||
|
||||
$newName = str_replace($arraySpecialCharSearch, $arraySpecialCharReplace, $name);
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
namespace ProcessMaker\Importer;
|
||||
|
||||
use ProcessMaker\Util;
|
||||
use ProcessMaker\Project;
|
||||
use ProcessMaker\Project\Adapter;
|
||||
|
||||
abstract class Importer
|
||||
@@ -14,6 +15,7 @@ abstract class Importer
|
||||
|
||||
const IMPORT_OPTION_OVERWRITE = "project.import.override";
|
||||
const IMPORT_OPTION_DISABLE_AND_CREATE_NEW = "project.import.disable_and_create_new";
|
||||
const IMPORT_OPTION_KEEP_WITHOUT_CHANGING_AND_CREATE_NEW = "project.import.keep_without_changing_and_create_new";
|
||||
const IMPORT_OPTION_CREATE_NEW = "project.import.create_new";
|
||||
|
||||
/**
|
||||
@@ -35,6 +37,8 @@ abstract class Importer
|
||||
{
|
||||
$this->prepare();
|
||||
|
||||
$name = $this->importData["tables"]["bpmn"]["project"][0]["prj_name"];
|
||||
|
||||
switch ($option) {
|
||||
case self::IMPORT_OPTION_CREATE_NEW:
|
||||
if ($this->targetExists()) {
|
||||
@@ -45,22 +49,40 @@ abstract class Importer
|
||||
), self::IMPORT_STAT_TARGET_ALREADY_EXISTS);
|
||||
}
|
||||
$generateUid = false;
|
||||
$result = $this->doImport($generateUid);
|
||||
break;
|
||||
case self::IMPORT_OPTION_OVERWRITE:
|
||||
$this->removeProject();
|
||||
// this option shouldn't generate new uid for all objects
|
||||
$generateUid = false;
|
||||
break;
|
||||
case self::IMPORT_OPTION_DISABLE_AND_CREATE_NEW:
|
||||
$this->disableProject();
|
||||
// this option should generate new uid for all objects
|
||||
$generateUid = true;
|
||||
$result = $this->doImport($generateUid);
|
||||
$name = "New - " . $name . " - " . date("M d, H:i");
|
||||
break;
|
||||
case self::IMPORT_OPTION_OVERWRITE:
|
||||
// this option shouldn't generate new uid for all objects
|
||||
$generateUid = false;
|
||||
$this->removeProject();
|
||||
$result = $this->doImport($generateUid);
|
||||
case self::IMPORT_OPTION_KEEP_WITHOUT_CHANGING_AND_CREATE_NEW:
|
||||
// this option should generate new uid for all objects
|
||||
$generateUid = true;
|
||||
$name = \G::LoadTranslation("ID_COPY_OF") . " - " . $name . " - " . date("M d, H:i");
|
||||
break;
|
||||
}
|
||||
|
||||
$this->importData["tables"]["bpmn"]["project"][0]["prj_name"] = $name;
|
||||
$this->importData["tables"]["bpmn"]["diagram"][0]["dia_name"] = $name;
|
||||
$this->importData["tables"]["bpmn"]["process"][0]["pro_name"] = $name;
|
||||
$this->importData["tables"]["workflow"]["process"][0]["PRO_TITLE"] = $name;
|
||||
|
||||
if ($this->importData["tables"]["workflow"]["process"][0]["PRO_UPDATE_DATE"] . "" == "") {
|
||||
$this->importData["tables"]["workflow"]["process"][0]["PRO_UPDATE_DATE"] = null;
|
||||
}
|
||||
|
||||
$this->importData["tables"]["workflow"]["process"] = $this->importData["tables"]["workflow"]["process"][0];
|
||||
|
||||
//Import
|
||||
$result = $this->doImport($generateUid);
|
||||
|
||||
//Return
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -220,6 +242,7 @@ abstract class Importer
|
||||
$tables = (object) $tables;
|
||||
|
||||
$processes = new \Processes();
|
||||
|
||||
$processes->createProcessPropertiesFromData($tables);
|
||||
}
|
||||
|
||||
@@ -258,17 +281,95 @@ abstract class Importer
|
||||
|
||||
public function doImport($generateUid = true)
|
||||
{
|
||||
$tables = $this->importData["tables"];
|
||||
$files = $this->importData["files"];
|
||||
$arrayBpmnTables = $this->importData["tables"]["bpmn"];
|
||||
$arrayWorkflowTables = $this->importData["tables"]["workflow"];
|
||||
$arrayWorkflowFiles = $this->importData["files"]["workflow"];
|
||||
|
||||
$result = $this->importBpmnTables($tables["bpmn"], $generateUid);
|
||||
$this->importWfTables($tables["workflow"]);
|
||||
$this->importWfFiles($files["workflow"]);
|
||||
//Import BPMN tables
|
||||
$result = $this->importBpmnTables($arrayBpmnTables, $generateUid);
|
||||
|
||||
$projectUidOld = $arrayBpmnTables["project"][0]["prj_uid"];
|
||||
$projectUid = ($generateUid)? $result[0]["new_uid"] : $result;
|
||||
|
||||
//Import workflow tables
|
||||
if ($generateUid) {
|
||||
return $result[0]["new_uid"];
|
||||
} else {
|
||||
return $result;
|
||||
//Update TAS_UID
|
||||
foreach ($arrayWorkflowTables["tasks"] as $key1 => $value1) {
|
||||
$taskUid = $arrayWorkflowTables["tasks"][$key1]["TAS_UID"];
|
||||
|
||||
foreach ($result as $value2) {
|
||||
$arrayItem = $value2;
|
||||
|
||||
if ($arrayItem["old_uid"] == $taskUid) {
|
||||
$arrayWorkflowTables["tasks"][$key1]["TAS_UID_OLD"] = $taskUid;
|
||||
$arrayWorkflowTables["tasks"][$key1]["TAS_UID"] = $arrayItem["new_uid"];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Workflow tables
|
||||
$workflowTables = (object)($arrayWorkflowTables);
|
||||
|
||||
$processes = new \Processes();
|
||||
$processes->setProcessGUID($workflowTables, $projectUid);
|
||||
$processes->renewAll($workflowTables);
|
||||
|
||||
$arrayWorkflowTables = (array)($workflowTables);
|
||||
|
||||
//Workflow files
|
||||
foreach ($arrayWorkflowFiles as $key1 => $value1) {
|
||||
$arrayFiles = $value1;
|
||||
|
||||
foreach ($arrayFiles as $key2 => $value2) {
|
||||
$file = $value2;
|
||||
|
||||
$arrayWorkflowFiles[$key1][$key2]["file_path"] = str_replace($projectUidOld, $projectUid, $file["file_path"]);
|
||||
$arrayWorkflowFiles[$key1][$key2]["file_content"] = str_replace($projectUidOld, $projectUid, $file["file_content"]);
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($arrayWorkflowTables["uid"])) {
|
||||
foreach ($arrayWorkflowTables["uid"] as $key1 => $value1) {
|
||||
$arrayT = $value1;
|
||||
|
||||
foreach ($arrayT as $key2 => $value2) {
|
||||
$uidOld = $key2;
|
||||
$uid = $value2;
|
||||
|
||||
foreach ($arrayWorkflowFiles as $key3 => $value3) {
|
||||
$arrayFiles = $value3;
|
||||
|
||||
foreach ($arrayFiles as $key4 => $value4) {
|
||||
$file = $value4;
|
||||
|
||||
$arrayWorkflowFiles[$key3][$key4]["file_path"] = str_replace($uidOld, $uid, $file["file_path"]);
|
||||
$arrayWorkflowFiles[$key3][$key4]["file_content"] = str_replace($uidOld, $uid, $file["file_content"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->importWfTables($arrayWorkflowTables);
|
||||
|
||||
//Import workflow files
|
||||
$this->importWfFiles($arrayWorkflowFiles);
|
||||
|
||||
//Update
|
||||
$workflow = Project\Workflow::load($projectUid);
|
||||
|
||||
foreach ($arrayWorkflowTables["tasks"] as $key => $value) {
|
||||
$arrayTaskData = $value;
|
||||
|
||||
$result = $workflow->updateTask($arrayTaskData["TAS_UID"], $arrayTaskData);
|
||||
}
|
||||
|
||||
$workflow->update($arrayWorkflowTables["process"]);
|
||||
|
||||
//Return
|
||||
return $projectUid;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ class XmlImporter extends Importer
|
||||
$tablesNodeList = $definition->getElementsByTagName("table");
|
||||
|
||||
foreach ($tablesNodeList as $tableNode) {
|
||||
$tableName = strtolower($tableNode->getAttribute("name"));
|
||||
$tableName = ($defClass == "workflow")? $tableNode->getAttribute("name") : strtolower($tableNode->getAttribute("name"));
|
||||
$tables[$defClass][$tableName] = array();
|
||||
/** @var \DOMElement[] $recordsNodeList */
|
||||
$recordsNodeList = $tableNode->getElementsByTagName("record");
|
||||
@@ -136,4 +136,5 @@ class XmlImporter extends Importer
|
||||
return (string) simplexml_import_dom($node->parentNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -497,6 +497,7 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
|
||||
if (array_key_exists("diagrams", $projectData) && is_array($projectData["diagrams"]) && count($projectData["diagrams"]) > 0) {
|
||||
$diagramData = array_change_key_case($projectData["diagrams"][0], CASE_UPPER);
|
||||
|
||||
if ($generateUid) {
|
||||
$result[1]["old_uid"] = $diagramData["DIA_UID"];
|
||||
$diagramData["DIA_UID"] = Util\Common::generateUID();
|
||||
@@ -519,7 +520,7 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
|
||||
$bwp->addProcess($processData);
|
||||
|
||||
$mappedUid = array_merge($result, self::updateFromStruct($bwp->prjUid, $projectData, $generateUid));
|
||||
$mappedUid = array_merge($result, self::updateFromStruct($bwp->prjUid, $projectData, true, $generateUid));
|
||||
|
||||
return $generateUid ? $mappedUid : $bwp->getUid();
|
||||
}
|
||||
@@ -618,10 +619,11 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
* @param $projectData
|
||||
* @return array
|
||||
*/
|
||||
public static function updateFromStruct($prjUid, $projectData, $generateUid = true)
|
||||
public static function updateFromStruct($prjUid, $projectData, $flagInsert = false, $generateUid = true)
|
||||
{
|
||||
$diagram = isset($projectData["diagrams"]) && isset($projectData["diagrams"][0]) ? $projectData["diagrams"][0] : array();
|
||||
$result = array();
|
||||
|
||||
$bwp = BpmnWorkflow::load($prjUid);
|
||||
$projectRecord = array_change_key_case($projectData, CASE_UPPER);
|
||||
$bwp->update($projectRecord);
|
||||
@@ -636,12 +638,32 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
$activityData = Util\ArrayUtil::boolToIntValues($activityData);
|
||||
|
||||
$activity = $bwp->getActivity($activityData["ACT_UID"]);
|
||||
if (is_null($activity)) {
|
||||
|
||||
if ($flagInsert || is_null($activity)) {
|
||||
if ($generateUid) {
|
||||
$oldActUid = $activityData["ACT_UID"];
|
||||
//Activity
|
||||
$uidOld = $activityData["ACT_UID"];
|
||||
$activityData["ACT_UID"] = Util\Common::generateUID();
|
||||
$result[] = array("object" => "activity", "new_uid" => $activityData["ACT_UID"], "old_uid" => $oldActUid);
|
||||
|
||||
$result[] = array(
|
||||
"object" => "activity",
|
||||
"old_uid" => $uidOld,
|
||||
"new_uid" => $activityData["ACT_UID"]
|
||||
);
|
||||
|
||||
//Bound
|
||||
if (isset($activityData["BOU_UID"])) {
|
||||
$uidOld = $activityData["BOU_UID"];
|
||||
$activityData["BOU_UID"] = Util\Common::generateUID();
|
||||
|
||||
$result[] = array(
|
||||
"object" => "bound",
|
||||
"old_uid" => $uidOld,
|
||||
"new_uid" => $activityData["BOU_UID"]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$bwp->addActivity($activityData);
|
||||
} elseif (! $bwp->isEquals($activity, $activityData)) {
|
||||
$bwp->updateActivity($activityData["ACT_UID"], $activityData);
|
||||
@@ -669,9 +691,10 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
foreach ($diagram["artifacts"] as $i => $artifactData) {
|
||||
$artifactData = array_change_key_case($artifactData, CASE_UPPER);
|
||||
unset($artifactData["_EXTENDED"]);
|
||||
|
||||
$artifact = $bwp->getArtifact($artifactData["ART_UID"]);
|
||||
|
||||
if (is_null($artifact)) {
|
||||
if ($flagInsert || is_null($artifact)) {
|
||||
if ($generateUid) {
|
||||
$oldArtUid = $artifactData["ART_UID"];
|
||||
|
||||
@@ -683,7 +706,7 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
} elseif (! $bwp->isEquals($artifact, $artifactData)) {
|
||||
$bwp->updateArtifact($artifactData["ART_UID"], $artifactData);
|
||||
} else {
|
||||
Util\Logger::log("Update Artifact ({$artifactData["GAT_UID"]}) Skipped - No changes required");
|
||||
Util\Logger::log("Update Artifact ({$artifactData["ART_UID"]}) Skipped - No changes required");
|
||||
}
|
||||
|
||||
$diagram["artifacts"][$i] = $artifactData;
|
||||
@@ -707,11 +730,30 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
unset($gatewayData["_EXTENDED"]);
|
||||
|
||||
$gateway = $bwp->getGateway($gatewayData["GAT_UID"]);
|
||||
if (is_null($gateway)) {
|
||||
|
||||
if ($flagInsert || is_null($gateway)) {
|
||||
if ($generateUid) {
|
||||
$oldActUid = $gatewayData["GAT_UID"];
|
||||
//Gateway
|
||||
$uidOld = $gatewayData["GAT_UID"];
|
||||
$gatewayData["GAT_UID"] = Util\Common::generateUID();
|
||||
$result[] = array("object" => "gateway", "new_uid" => $gatewayData["GAT_UID"], "old_uid" => $oldActUid);
|
||||
|
||||
$result[] = array(
|
||||
"object" => "gateway",
|
||||
"old_uid" => $uidOld,
|
||||
"new_uid" => $gatewayData["GAT_UID"]
|
||||
);
|
||||
|
||||
//Bound
|
||||
if (isset($gatewayData["BOU_UID"])) {
|
||||
$uidOld = $gatewayData["BOU_UID"];
|
||||
$gatewayData["BOU_UID"] = Util\Common::generateUID();
|
||||
|
||||
$result[] = array(
|
||||
"object" => "bound",
|
||||
"old_uid" => $uidOld,
|
||||
"new_uid" => $gatewayData["BOU_UID"]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$bwp->addGateway($gatewayData);
|
||||
@@ -749,11 +791,30 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
}
|
||||
|
||||
$event = $bwp->getEvent($eventData["EVN_UID"]);
|
||||
if (is_null($event)) {
|
||||
|
||||
if ($flagInsert || is_null($event)) {
|
||||
if ($generateUid) {
|
||||
$oldActUid = $eventData["EVN_UID"];
|
||||
//Event
|
||||
$uidOld = $eventData["EVN_UID"];
|
||||
$eventData["EVN_UID"] = Util\Common::generateUID();
|
||||
$result[] = array("object" => "event", "new_uid" => $eventData["EVN_UID"], "old_uid" => $oldActUid);
|
||||
|
||||
$result[] = array(
|
||||
"object" => "event",
|
||||
"old_uid" => $uidOld,
|
||||
"new_uid" => $eventData["EVN_UID"]
|
||||
);
|
||||
|
||||
//Bound
|
||||
if (isset($eventData["BOU_UID"])) {
|
||||
$uidOld = $eventData["BOU_UID"];
|
||||
$eventData["BOU_UID"] = Util\Common::generateUID();
|
||||
|
||||
$result[] = array(
|
||||
"object" => "bound",
|
||||
"old_uid" => $uidOld,
|
||||
"new_uid" => $eventData["BOU_UID"]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$bwp->addEvent($eventData);
|
||||
@@ -787,7 +848,7 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
$flowData = array_change_key_case($flowData, CASE_UPPER);
|
||||
|
||||
// if it is a new flow record
|
||||
if ($generateUid && ! \BpmnFlow::exists($flowData["FLO_UID"])) {
|
||||
if ($flagInsert || ($generateUid && !\BpmnFlow::exists($flowData["FLO_UID"]))) {
|
||||
$oldFloUid = $flowData["FLO_UID"];
|
||||
$flowData["FLO_UID"] = Util\Common::generateUID();
|
||||
$result[] = array("object" => "flow", "new_uid" => $flowData["FLO_UID"], "old_uid" => $oldFloUid);
|
||||
@@ -809,8 +870,8 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
|
||||
foreach ($diagram["flows"] as $flowData) {
|
||||
$flow = $bwp->getFlow($flowData["FLO_UID"]);
|
||||
if (is_null($flow)) {
|
||||
$bwp->addFlow($flowData, $diagram["flows"]);
|
||||
if ($flagInsert || is_null($flow)) {
|
||||
$bwp->addFlow($flowData);
|
||||
} elseif (! $bwp->isEquals($flow, $flowData)) {
|
||||
$bwp->updateFlow($flowData["FLO_UID"], $flowData, $diagram["flows"]);
|
||||
} else {
|
||||
@@ -849,3 +910,4 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
$this->wp->setDisabled($value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -276,8 +276,7 @@ Ext.onReady(function(){
|
||||
disabled:true
|
||||
},{
|
||||
text: _('ID_DELETE'),
|
||||
iconCls: 'button_menu_ext ss_sprite ss_delete',
|
||||
//icon: '/images/delete-16x16.gif',
|
||||
iconCls: "button_menu_ext ss_sprite ss_cross",
|
||||
handler:deleteProcess
|
||||
},{
|
||||
xtype: 'tbseparator'
|
||||
@@ -435,7 +434,7 @@ Ext.onReady(function(){
|
||||
handler: enableDisableDebug
|
||||
}, {
|
||||
text: _('ID_DELETE'),
|
||||
icon: '/images/delete.png',
|
||||
iconCls: "button_menu_ext ss_sprite ss_cross",
|
||||
handler: deleteProcess
|
||||
}, {
|
||||
text: _("ID_EXPORT"),
|
||||
@@ -976,8 +975,14 @@ importProcessExistProcess = function()
|
||||
success: function(o, resp) {
|
||||
var resp_ = Ext.util.JSON.decode(resp.response.responseText);
|
||||
var sNewProUid = resp_.sNewProUid;
|
||||
var projectType = (typeof(resp_.project_type) != "undefined")? resp_.project_type : "classicProject";
|
||||
|
||||
if (resp_.ExistGroupsInDatabase == 0) {
|
||||
window.location.href = "processes_Map?PRO_UID=" + sNewProUid;
|
||||
if (projectType == "classicProject") {
|
||||
window.location.href = "processes_Map?PRO_UID=" + sNewProUid;
|
||||
} else {
|
||||
window.location.href = "../designer?prj_uid=" + sNewProUid;
|
||||
}
|
||||
}
|
||||
else {
|
||||
importProcessGlobal.proFileName = resp_.fileName;
|
||||
@@ -1217,3 +1222,4 @@ function enableDisableDebug()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user