Preserve PRO_ID and TAS_ID in granular process import.
This commit is contained in:
davidcallizaya
2017-03-06 17:17:48 -04:00
parent 86442fa42d
commit 6a977612ad
7 changed files with 47 additions and 12 deletions

View File

@@ -5605,26 +5605,26 @@ class Processes
public function loadIdsFromData($oData) public function loadIdsFromData($oData)
{ {
if (is_array($oData)) { if (is_array($oData)) {
$this->loadIdsFor( $oData['process'] = $this->loadIdsFor(
Process::class, Process::class,
ProcessPeer::PRO_UID, ProcessPeer::PRO_UID,
ProcessPeer::PRO_ID, ProcessPeer::PRO_ID,
$oData['process'] $oData['process']
); );
$this->loadIdsFor( $oData['tasks'] = $this->loadIdsFor(
Task::class, Task::class,
TaskPeer::TAS_UID, TaskPeer::TAS_UID,
TaskPeer::TAS_ID, TaskPeer::TAS_ID,
$oData['tasks'] $oData['tasks']
); );
} else { } else {
$this->loadIdsFor( $oData->process = $this->loadIdsFor(
Process::class, Process::class,
ProcessPeer::PRO_UID, ProcessPeer::PRO_UID,
ProcessPeer::PRO_ID, ProcessPeer::PRO_ID,
$oData->process $oData->process
); );
$this->loadIdsFor( $oData->tasks = $this->loadIdsFor(
Task::class, Task::class,
TaskPeer::TAS_UID, TaskPeer::TAS_UID,
TaskPeer::TAS_ID, TaskPeer::TAS_ID,
@@ -5701,10 +5701,10 @@ class Processes
BasePeer::TYPE_COLNAME); BasePeer::TYPE_COLNAME);
} else { } else {
//$data is an array of row //$data is an array of row
foreach ($data as &$dataRow) { foreach ($data as $i => $dataRow) {
$model = new $modelClass(); $model = new $modelClass();
$row = $model->load($dataRow[$uidField]); $row = $model->load($dataRow[$uidField]);
$dataRow[$idField] = $model->getByName($idTableField, $data[$i][$idField] = $model->getByName($idTableField,
BasePeer::TYPE_COLNAME); BasePeer::TYPE_COLNAME);
} }
} }

View File

@@ -165,6 +165,9 @@ class Process extends BaseProcess
} while ($this->processExists( $sNewProUid )); } while ($this->processExists( $sNewProUid ));
} else { } else {
$sNewProUid = $aData['PRO_UID']; $sNewProUid = $aData['PRO_UID'];
if (!empty($aData['PRO_ID'])) {
$this->setProId($aData['PRO_ID']);
}
} }
$this->setProUid( $sNewProUid ); $this->setProUid( $sNewProUid );

View File

@@ -410,6 +410,9 @@ class Task extends BaseTask
$this->setTasPosy(""); $this->setTasPosy("");
$this->setTasColor(""); $this->setTasColor("");
$this->setTasGroupVariable(""); $this->setTasGroupVariable("");
if (!$generateUid && !empty($aData['TAS_ID'])) {
$this->setTasId($aData['TAS_ID']);
}
$this->fromArray($aData,BasePeer::TYPE_FIELDNAME); $this->fromArray($aData,BasePeer::TYPE_FIELDNAME);
if ($this->validate()) { if ($this->validate()) {

View File

@@ -36,7 +36,7 @@ class ProcessDefinitionMigrator implements Importable, Exportable
{ {
try { try {
//Bpmn elements //Bpmn elements
$pjrUid = $this->bpmn->createFromStruct($data['bpmn'], false); $pjrUid = $this->bpmn->createFromStruct($data['bpmn'], false, $data);
//Import workflow elements //Import workflow elements
} catch (\Exception $e) { } catch (\Exception $e) {
$exception = new ImportException($e->getMessage()); $exception = new ImportException($e->getMessage());

View File

@@ -235,6 +235,9 @@ abstract class Importer
$this->importData["tables"]["bpmn"]["project"][0]["prj_name"] = $name; $this->importData["tables"]["bpmn"]["project"][0]["prj_name"] = $name;
$this->importData["tables"]["bpmn"]["diagram"][0]["dia_name"] = $name; $this->importData["tables"]["bpmn"]["diagram"][0]["dia_name"] = $name;
$this->importData["tables"]["bpmn"]["process"][0]["pro_name"] = $name; $this->importData["tables"]["bpmn"]["process"][0]["pro_name"] = $name;
if (!empty($this->importData["tables"]["workflow"]["process"][0]['PRO_ID'])) {
$this->importData["tables"]["bpmn"]["process"][0]["pro_id"] = $this->importData["tables"]["workflow"]["process"][0]['PRO_ID'];
}
$this->importData["tables"]["workflow"]["process"][0]["PRO_TITLE"] = $name; $this->importData["tables"]["workflow"]["process"][0]["PRO_TITLE"] = $name;
if ($this->importData["tables"]["workflow"]["process"][0]["PRO_UPDATE_DATE"] . "" == "") { if ($this->importData["tables"]["workflow"]["process"][0]["PRO_UPDATE_DATE"] . "" == "") {

View File

@@ -86,6 +86,10 @@ class BpmnWorkflow extends Project\Bpmn
$wpData["PRO_CATEGORY"] = $data["PRJ_CATEGORY"]; $wpData["PRO_CATEGORY"] = $data["PRJ_CATEGORY"];
} }
if (array_key_exists("PRO_ID", $data)) {
$wpData["PRO_ID"] = $data["PRO_ID"];
}
$this->wp = new Project\Workflow(); $this->wp = new Project\Workflow();
$this->wp->create($wpData); $this->wp->create($wpData);
@@ -131,7 +135,7 @@ class BpmnWorkflow extends Project\Bpmn
} }
$arrayData["PRO_UPDATE_DATE"] = date("Y-m-d H:i:s"); $arrayData["PRO_UPDATE_DATE"] = date("Y-m-d H:i:s");
//Dave: Aca se actualiza el PROCESS
$this->wp->update($arrayData); $this->wp->update($arrayData);
} }
@@ -185,6 +189,9 @@ class BpmnWorkflow extends Project\Bpmn
$actUid = parent::addActivity($data); $actUid = parent::addActivity($data);
$taskData["TAS_UID"] = $actUid; $taskData["TAS_UID"] = $actUid;
if (!empty($data["TAS_ID"])) {
$taskData["TAS_ID"] = $data["TAS_ID"];
}
if (array_key_exists("ACT_NAME", $data)) { if (array_key_exists("ACT_NAME", $data)) {
$taskData["TAS_TITLE"] = $data["ACT_NAME"]; $taskData["TAS_TITLE"] = $data["ACT_NAME"];
@@ -1254,7 +1261,7 @@ class BpmnWorkflow extends Project\Bpmn
$this->wp->remove($flagRemoveCases, $onlyDiagram); $this->wp->remove($flagRemoveCases, $onlyDiagram);
} }
public static function createFromStruct(array $projectData, $generateUid = true) public static function createFromStruct(array $projectData, $generateUid = true, $allData = null)
{ {
$projectData["prj_name"] = trim($projectData["prj_name"]); $projectData["prj_name"] = trim($projectData["prj_name"]);
if ($projectData["prj_name"] == '') { if ($projectData["prj_name"] == '') {
@@ -1300,6 +1307,10 @@ class BpmnWorkflow extends Project\Bpmn
$data["PRJ_CATEGORY"] = $projectData["prj_category"]; $data["PRJ_CATEGORY"] = $projectData["prj_category"];
} }
if (isset($projectData["process"]["pro_id"])) {
$data["PRO_ID"] = $projectData["process"]["pro_id"];
}
$bwp->create($data); $bwp->create($data);
$diagramData = $processData = array(); $diagramData = $processData = array();
@@ -1329,7 +1340,7 @@ class BpmnWorkflow extends Project\Bpmn
$bwp->addProcess($processData); $bwp->addProcess($processData);
$mappedUid = array_merge($result, self::updateFromStruct($bwp->prjUid, $projectData, $generateUid, true)); $mappedUid = array_merge($result, self::updateFromStruct($bwp->prjUid, $projectData, $generateUid, true, $allData));
return $generateUid ? $mappedUid : $bwp->getUid(); return $generateUid ? $mappedUid : $bwp->getUid();
} }
@@ -1456,10 +1467,15 @@ class BpmnWorkflow extends Project\Bpmn
* *
* @param $prjUid * @param $prjUid
* @param $projectData * @param $projectData
* @param $allData All data from import file
* @return array * @return array
*/ */
public static function updateFromStruct($prjUid, $projectData, $generateUid = true, $forceInsert = false) public static function updateFromStruct(
{ $prjUid, $projectData,
$generateUid = true,
$forceInsert = false,
$allData = null
) {
$diagram = isset($projectData["diagrams"]) && isset($projectData["diagrams"][0]) ? $projectData["diagrams"][0] : array(); $diagram = isset($projectData["diagrams"]) && isset($projectData["diagrams"][0]) ? $projectData["diagrams"][0] : array();
$diagram["activities"] = isset($diagram["activities"])? $diagram["activities"]: array(); $diagram["activities"] = isset($diagram["activities"])? $diagram["activities"]: array();
$diagram["artifacts"] = isset($diagram["artifacts"])? $diagram["artifacts"]: array(); $diagram["artifacts"] = isset($diagram["artifacts"])? $diagram["artifacts"]: array();
@@ -1614,6 +1630,13 @@ class BpmnWorkflow extends Project\Bpmn
"old_uid" => $uidOld, "old_uid" => $uidOld,
"new_uid" => $activityData["ACT_UID"] "new_uid" => $activityData["ACT_UID"]
); );
} else {
foreach ($allData['workflow']['tasks'] as $task) {
if (!empty($task['TAS_ID']) && $activityData["ACT_UID"] === $task['TAS_UID']) {
$activityData["TAS_ID"] = $task['TAS_ID'];
break;
}
}
} }
$bwp->addActivity($activityData); $bwp->addActivity($activityData);

View File

@@ -178,6 +178,9 @@ class Workflow extends Handler
{ {
// Setting defaults // Setting defaults
$taskData['TAS_UID'] = array_key_exists('TAS_UID', $taskData) ? $taskData['TAS_UID'] : Common::generateUID(); $taskData['TAS_UID'] = array_key_exists('TAS_UID', $taskData) ? $taskData['TAS_UID'] : Common::generateUID();
if (array_key_exists('TAS_ID', $taskData)) {
$taskData['TAS_ID'] = $taskData['TAS_ID'];
}
$taskData['PRO_UID'] = $this->proUid; $taskData['PRO_UID'] = $this->proUid;
try { try {