MT-73: Order window changed for the Selective import feature.

This commit is contained in:
Gustavo Adolfo Cruz Laura
2016-03-30 20:04:17 -04:00
parent 34cdc338d1
commit 4c01c1543d
3 changed files with 191 additions and 95 deletions

View File

@@ -29,32 +29,32 @@ $affectedGroups = array();
$granularImport = false; $granularImport = false;
$objectImport = array(); $objectImport = array();
if (isset($_FILES["PROCESS_FILENAME"]["name"]) && (preg_match("/^(?:pm|pmx)$/", pathinfo($_FILES["PROCESS_FILENAME"]["name"], PATHINFO_EXTENSION)))) { //if (isset($_FILES["PROCESS_FILENAME"]["name"]) && (preg_match("/^(?:pm|pmx)$/", pathinfo($_FILES["PROCESS_FILENAME"]["name"], PATHINFO_EXTENSION)))) {
$import = new XmlImporter(); // $import = new XmlImporter();
$data = $import->load($_FILES["PROCESS_FILENAME"]["tmp_name"]); // $data = $import->load($_FILES["PROCESS_FILENAME"]["tmp_name"]);
//
if (version_compare($data['version'], '3.0', '>') && isset($_POST['objectsToImport']) && $_POST['objectsToImport'] === '') { // if (version_compare($data['version'], '3.0', '>') && isset($_POST['objectsToImport']) && $_POST['objectsToImport'] === '') {
$objectImport = (isset($data['objects'])) ? explode('|', $data['objects']) : ""; // $objectImport = (isset($data['objects'])) ? explode('|', $data['objects']) : "";
$ids = new \ProcessMaker\BusinessModel\Migrator\ExportObjects(); // $ids = new \ProcessMaker\BusinessModel\Migrator\ExportObjects();
$objectImport = $ids->getIdObjectList($objectImport); // $objectImport = $ids->getIdObjectList($objectImport);
$granularImport = true; // $granularImport = true;
$result = array( // $result = array(
"success" => true, // "success" => true,
"catchMessage" => '', // "catchMessage" => '',
"ExistProcessInDatabase" => 0, // "ExistProcessInDatabase" => 0,
"ExistGroupsInDatabase" => 0, // "ExistGroupsInDatabase" => 0,
"notExistProcessInDatabase" => 0, // "notExistProcessInDatabase" => 0,
"affectedGroups" => '', // "affectedGroups" => '',
"sNewProUid" => '', // "sNewProUid" => '',
"project_type" => 'bpmn', // "project_type" => 'bpmn',
"isGranularImport" => $granularImport, // "isGranularImport" => $granularImport,
"objectGranularImport" => $objectImport, // "objectGranularImport" => $objectImport,
"project_type_aux" => '' // "project_type_aux" => ''
); // );
echo G::json_encode($result); // echo G::json_encode($result);
exit(0); // exit(0);
} // }
} //}
/*----------------------------------********---------------------------------*/ /*----------------------------------********---------------------------------*/
if (PMLicensedFeatures::getSingleton()->verifyfeature("B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=") && if (PMLicensedFeatures::getSingleton()->verifyfeature("B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=") &&
isset($_FILES["PROCESS_FILENAME"]) && isset($_FILES["PROCESS_FILENAME"]) &&
@@ -148,6 +148,7 @@ if (isset($_FILES["PROCESS_FILENAME"]) &&
$opt2 = XmlImporter::GROUP_IMPORT_OPTION_CREATE_NEW; $opt2 = XmlImporter::GROUP_IMPORT_OPTION_CREATE_NEW;
$prjUid = ''; $prjUid = '';
$proType = ''; $proType = '';
$granularImport = false;
$objectsToImport = ''; $objectsToImport = '';
if (isset($_POST['objectsToImport']) && sizeof(G::json_decode($_POST['objectsToImport']))){ if (isset($_POST['objectsToImport']) && sizeof(G::json_decode($_POST['objectsToImport']))){
$objectsToImport = G::json_decode($_POST['objectsToImport']); $objectsToImport = G::json_decode($_POST['objectsToImport']);
@@ -261,11 +262,49 @@ if (isset($_POST["PRO_FILENAME"]) &&
try { try {
$objectsToImport = ''; $objectsToImport = '';
/*if (isset($_POST['PRO_FILENAME']) && (preg_match("/^(?:pm|pmx)$/", pathinfo($_POST['PRO_FILENAME'], PATHINFO_EXTENSION)))) {
$import = new XmlImporter();*/
$data = $importer->load();
// only uploadFileNewProcessExist??
if (version_compare($data['version'], '3.0', '>') && isset($_POST['objectsToImport']) && $_POST['objectsToImport'] === '' && $_POST['IMPORT_OPTION']==="1") {
$objectImport = (isset($data['objects'])) ? explode('|', $data['objects']) : "";
$ids = new \ProcessMaker\BusinessModel\Migrator\ExportObjects();
$objectImport = $ids->getIdObjectList($objectImport);
$granularImport = true;
$result = array(
"success" => true,
"catchMessage" => '',
"ExistProcessInDatabase" => 0,
"ExistGroupsInDatabase" => 0,
"notExistProcessInDatabase" => 0,
"affectedGroups" => '',
"sNewProUid" => '',
"project_type" => 'bpmn',
"isGranularImport" => $granularImport,
"objectGranularImport" => $objectImport,
"project_type_aux" => ''
);
echo G::json_encode($result);
exit(0);
}
// }
if (version_compare($data['version'], '3.0', '>') && $_POST['IMPORT_OPTION']==="3") {
$objectsToImport = [];
$objects = (isset($data['objects'])) ? explode('|', $data['objects']) : "";
$ids = new \ProcessMaker\BusinessModel\Migrator\ExportObjects();
$objects = $ids->getIdObjectList($objects);
foreach ($objects as $object) {
$objectsToImport[] = (object)array('id' => $object, 'action' => 'replace');
}
}
if (isset($_POST['objectsToImport']) && sizeof(G::json_decode($_POST['objectsToImport']))){ if (isset($_POST['objectsToImport']) && sizeof(G::json_decode($_POST['objectsToImport']))){
$objectsToImport = G::json_decode($_POST['objectsToImport']); $objectsToImport = G::json_decode($_POST['objectsToImport']);
} }
$prjUid = $importer->import($option, $optionGroup, null, $objectsToImport); $prjUid = $importer->import($option, $optionGroup, null, $objectsToImport);
G::LoadClass( 'Process' ); G::LoadClass( 'Process' );
$oProcess = new Process(); $oProcess = new Process();
$processData = $oProcess->load( $prjUid ); $processData = $oProcess->load( $prjUid );

View File

@@ -401,11 +401,11 @@ abstract class Importer
// Build BPMN project struct // Build BPMN project struct
$project = $tables["project"][0]; $project = $tables["project"][0];
$diagram = $tables["diagram"][0]; $diagram = $tables["diagram"][0];
$diagram["activities"] = $tables["activity"]; $diagram["activities"] = (isset($tables["activity"]))? $tables["activity"] : array();
$diagram["artifacts"] = (isset($tables["artifact"]))? $tables["artifact"] : array(); $diagram["artifacts"] = (isset($tables["artifact"]))? $tables["artifact"] : array();
$diagram["events"] = $tables["event"]; $diagram["events"] = (isset($tables["event"]))? $tables["event"] : array();
$diagram["flows"] = $tables["flow"]; $diagram["flows"] = (isset($tables["flow"]))? $tables["flow"] : array();
$diagram["gateways"] = $tables["gateway"]; $diagram["gateways"] = (isset($tables["gateway"]))? $tables["gateway"]: array();
$diagram["data"] = (isset($tables["data"]))? $tables["data"] : array(); $diagram["data"] = (isset($tables["data"]))? $tables["data"] : array();
$diagram["participants"] = (isset($tables["participant"]))? $tables["participant"] : array(); $diagram["participants"] = (isset($tables["participant"]))? $tables["participant"] : array();
$diagram["laneset"] = (isset($tables["laneset"]))? $tables["laneset"] : array(); $diagram["laneset"] = (isset($tables["laneset"]))? $tables["laneset"] : array();
@@ -433,58 +433,62 @@ abstract class Importer
public function doImport($generateUid = true) public function doImport($generateUid = true)
{ {
$arrayBpmnTables = $this->importData["tables"]["bpmn"]; try {
$arrayWorkflowTables = $this->importData["tables"]["workflow"]; $arrayBpmnTables = $this->importData["tables"]["bpmn"];
$arrayWorkflowFiles = $this->importData["files"]["workflow"]; $arrayWorkflowTables = $this->importData["tables"]["workflow"];
$arrayWorkflowFiles = $this->importData["files"]["workflow"];
//Import BPMN tables //Import BPMN tables
$result = $this->importBpmnTables($arrayBpmnTables, $generateUid); $result = $this->importBpmnTables($arrayBpmnTables, $generateUid);
$projectUidOld = $arrayBpmnTables["project"][0]["prj_uid"]; $projectUidOld = $arrayBpmnTables["project"][0]["prj_uid"];
$projectUid = ($generateUid)? $result[0]["new_uid"] : $result; $projectUid = ($generateUid) ? $result[0]["new_uid"] : $result;
//Import workflow tables //Import workflow tables
if ($generateUid) { if ($generateUid) {
$result[0]["object"] = "project"; $result[0]["object"] = "project";
$result[0]["old_uid"] = $projectUidOld; $result[0]["old_uid"] = $projectUidOld;
$result[0]["new_uid"] = $projectUid; $result[0]["new_uid"] = $projectUid;
$workflow = new \ProcessMaker\Project\Workflow(); $workflow = new \ProcessMaker\Project\Workflow();
list($arrayWorkflowTables, $arrayWorkflowFiles) = $workflow->updateDataUidByArrayUid($arrayWorkflowTables, $arrayWorkflowFiles, $result); list($arrayWorkflowTables, $arrayWorkflowFiles) = $workflow->updateDataUidByArrayUid($arrayWorkflowTables, $arrayWorkflowFiles, $result);
}
$this->importWfTables($arrayWorkflowTables);
//Import workflow files
$this->importWfFiles($arrayWorkflowFiles);
//Update
$workflow = \ProcessMaker\Project\Workflow::load($projectUid);
foreach ($arrayWorkflowTables["tasks"] as $key => $value) {
$arrayTaskData = $value;
if (!in_array($arrayTaskData["TAS_TYPE"], array("GATEWAYTOGATEWAY", "WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT", "START-TIMER-EVENT", "INTERMEDIATE-CATCH-TIMER-EVENT", "END-EMAIL-EVENT", "INTERMEDIATE-EMAIL-EVENT"))) {
$result = $workflow->updateTask($arrayTaskData["TAS_UID"], $arrayTaskData);
} }
$this->importWfTables($arrayWorkflowTables);
//Import workflow files
$this->importWfFiles($arrayWorkflowFiles);
//Update
$workflow = \ProcessMaker\Project\Workflow::load($projectUid);
foreach ($arrayWorkflowTables["tasks"] as $key => $value) {
$arrayTaskData = $value;
if (!in_array($arrayTaskData["TAS_TYPE"], array("GATEWAYTOGATEWAY", "WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT", "START-TIMER-EVENT", "INTERMEDIATE-CATCH-TIMER-EVENT", "END-EMAIL-EVENT", "INTERMEDIATE-EMAIL-EVENT"))) {
$result = $workflow->updateTask($arrayTaskData["TAS_UID"], $arrayTaskData);
}
}
unset($arrayWorkflowTables["process"]["PRO_CREATE_USER"]);
unset($arrayWorkflowTables["process"]["PRO_CREATE_DATE"]);
unset($arrayWorkflowTables["process"]["PRO_UPDATE_DATE"]);
unset($arrayWorkflowTables["process"]["PRO_CATEGORY"]);
unset($arrayWorkflowTables["process"]["PRO_CATEGORY_LABEL"]);
$workflow->update($arrayWorkflowTables["process"]);
//Process-Files upgrade
$filesManager = new \ProcessMaker\BusinessModel\FilesManager();
$filesManager->processFilesUpgrade($projectUid);
//Return
return $projectUid;
} catch (\Exception $e) {
throw $e;
} }
unset($arrayWorkflowTables["process"]["PRO_CREATE_USER"]);
unset($arrayWorkflowTables["process"]["PRO_CREATE_DATE"]);
unset($arrayWorkflowTables["process"]["PRO_UPDATE_DATE"]);
unset($arrayWorkflowTables["process"]["PRO_CATEGORY"]);
unset($arrayWorkflowTables["process"]["PRO_CATEGORY_LABEL"]);
$workflow->update($arrayWorkflowTables["process"]);
//Process-Files upgrade
$filesManager = new \ProcessMaker\BusinessModel\FilesManager();
$filesManager->processFilesUpgrade($projectUid);
//Return
return $projectUid;
} }
/** /**

View File

@@ -1177,8 +1177,56 @@ function exportImportProcessObjects(typeAction)
} }
importProcessGlobal.objectsToImport = processObjectsArray; importProcessGlobal.objectsToImport = processObjectsArray;
Ext.getCmp('objectsToImport').setValue(processObjectsArray); Ext.getCmp('objectsToImport').setValue(processObjectsArray);
Ext.getCmp('buttonUpload').el.dom.click();
granularWindow.close(); var uploader = Ext.getCmp('formUploader');
uploader.getForm().setValues({"objectsToImport":processObjectsArray});
if (uploader.getForm().isValid()) {
uploader.getForm().submit({
url : 'processes_Import_Ajax',
waitMsg : _('ID_UPLOADING_PROCESS_FILE'),
waitTitle : " ",
timeout: 3600,
success: function(o, resp) {
var resp_ = Ext.util.JSON.decode(resp.response.responseText);
var sNewProUid = resp_.sNewProUid;
if (resp_.ExistGroupsInDatabase == 0) {
if (typeof(resp_.project_type) != "undefined" && resp_.project_type == "bpmn") {
if (typeof(resp_.project_type_aux) != "undefined" && resp_.project_type_aux == "NORMAL") {
importProcessCallbackFile = false;
}
var goTo = importProcessCallbackFile ? importProcessCallbackFile : "../designer?prj_uid=";
openWindowIfIE(goTo + sNewProUid);
} else {
window.location.href = "processes_Map?PRO_UID=" + sNewProUid;
}
}
else {
affectedGroups = resp_.affectedGroups;
importProcessGlobal.proFileName = resp_.proFileName;
importProcessGlobal.groupBeforeAccion = resp_.groupBeforeAccion;
importProcessGlobal.sNewProUid = resp_.sNewProUid;
importProcessGlobal.importOption = resp_.importOption;
importProcessExistGroup();
}
},
failure : function(o, resp) {
var msg = resp.result ? resp.result.msg : resp.response.responseText;
Ext.getCmp('objectsToImport').setValue("");
w.close();
Ext.MessageBox.show({
title : _('ID_ERROR'),
msg : msg,
buttons : Ext.MessageBox.OK,
animEl : 'mb9',
fn : function(){},
icon : Ext.MessageBox.ERROR
});
}
});
}
} }
} }
}, { }, {
@@ -1592,25 +1640,30 @@ importProcessExistProcess = function()
success: function(o, resp) { success: function(o, resp) {
var resp_ = Ext.util.JSON.decode(resp.response.responseText); var resp_ = Ext.util.JSON.decode(resp.response.responseText);
var sNewProUid = resp_.sNewProUid; var sNewProUid = resp_.sNewProUid;
if(resp_.isGranularImport) {
if (resp_.ExistGroupsInDatabase == 0) { importProcessGlobal.isGranularImport = resp_.isGranularImport;
if (typeof(resp_.project_type) != "undefined" && resp_.project_type == "bpmn") { importProcessGlobal.objectGranularImport = resp_.objectGranularImport;
if (typeof(resp_.project_type_aux) != "undefined" && resp_.project_type_aux == "NORMAL") { exportImportProcessObjects('import');
importProcessCallbackFile = false; } else {
if (resp_.ExistGroupsInDatabase == 0) {
if (typeof(resp_.project_type) != "undefined" && resp_.project_type == "bpmn") {
if (typeof(resp_.project_type_aux) != "undefined" && resp_.project_type_aux == "NORMAL") {
importProcessCallbackFile = false;
}
var goTo = importProcessCallbackFile ? importProcessCallbackFile : "../designer?prj_uid=";
openWindowIfIE(goTo + sNewProUid);
} else {
window.location.href = "processes_Map?PRO_UID=" + sNewProUid;
} }
var goTo = importProcessCallbackFile ? importProcessCallbackFile : "../designer?prj_uid=";
openWindowIfIE(goTo + sNewProUid);
} else {
window.location.href = "processes_Map?PRO_UID=" + sNewProUid;
} }
} else {
else { affectedGroups = resp_.affectedGroups;
affectedGroups = resp_.affectedGroups; importProcessGlobal.proFileName = resp_.proFileName;
importProcessGlobal.proFileName = resp_.proFileName; importProcessGlobal.groupBeforeAccion = resp_.groupBeforeAccion;
importProcessGlobal.groupBeforeAccion = resp_.groupBeforeAccion; importProcessGlobal.sNewProUid = resp_.sNewProUid;
importProcessGlobal.sNewProUid = resp_.sNewProUid; importProcessGlobal.importOption = resp_.importOption;
importProcessGlobal.importOption = resp_.importOption; importProcessExistGroup();
importProcessExistGroup(); }
} }
}, },
failure : function(o, resp) { failure : function(o, resp) {