ProcessMaker-BE "BPMN Import"
- Se an realizado todas las modificaciones requeridas para lograr la importacion de un archivo "pmx", tomando en cuenta la generacion de nuevos UIDs, los mismos que deberian ser reflejados en las tablas "workflow" y en los files (archivos xml de los DynaForms) - Se a completado la importacion de las tablas "workflow" - Se a completado la importacion de los datos del proceso y tareas
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,11 +899,14 @@ class Processes
|
||||
$oData->stepSupervisor[$key]['STEP_UID_OBJ'] = $newGuid;
|
||||
}
|
||||
}
|
||||
foreach ($oData->dynaformFiles as $key => $val) {
|
||||
|
||||
if (isset($oData->dynaformFiles)) {
|
||||
foreach ($oData->dynaformFiles as $key => $value) {
|
||||
$newGuid = $map[$key];
|
||||
$oData->dynaformFiles[$key] = $newGuid;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isset( $oData->gridFiles )) {
|
||||
foreach ($oData->gridFiles as $key => $val) {
|
||||
$newGuid = $map[$key];
|
||||
@@ -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']] )) {
|
||||
@@ -3237,9 +3298,12 @@ class Processes
|
||||
}
|
||||
$res = $oConfig->create( $row );
|
||||
$oConfig->setNew(true);
|
||||
|
||||
if (method_exists($oConfig, "setProperties")) {
|
||||
$oConfig->setProperties();
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
@@ -137,3 +137,4 @@ class XmlImporter extends Importer
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
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