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:
Victor Saisa Lopez
2014-04-30 12:00:22 -04:00
parent 112dcb7f8a
commit e5fc7fe5f2
7 changed files with 306 additions and 69 deletions

View File

@@ -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;
}

View File

@@ -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 );

View File

@@ -105,14 +105,8 @@ class WebEntry
{
$name = trim($name);
$arraySpecialCharSearch = array(
"/", "\\",
" "
);
$arraySpecialCharReplace = array(
"_", "_",
"_"
);
$arraySpecialCharSearch = array("/", "\\", " ", "#");
$arraySpecialCharReplace = array("_", "_", "_", "");
$newName = str_replace($arraySpecialCharSearch, $arraySpecialCharReplace, $name);

View File

@@ -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;
}
}

View File

@@ -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
}
}
}

View File

@@ -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);
}
}

View File

@@ -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()
}
}