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

View File

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

View File

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

View File

@@ -36,7 +36,7 @@ class ProcessDefinitionMigrator implements Importable, Exportable
{
try {
//Bpmn elements
$pjrUid = $this->bpmn->createFromStruct($data['bpmn'], false);
$pjrUid = $this->bpmn->createFromStruct($data['bpmn'], false, $data);
//Import workflow elements
} catch (\Exception $e) {
$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"]["diagram"][0]["dia_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;
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"];
}
if (array_key_exists("PRO_ID", $data)) {
$wpData["PRO_ID"] = $data["PRO_ID"];
}
$this->wp = new Project\Workflow();
$this->wp->create($wpData);
@@ -131,7 +135,7 @@ class BpmnWorkflow extends Project\Bpmn
}
$arrayData["PRO_UPDATE_DATE"] = date("Y-m-d H:i:s");
//Dave: Aca se actualiza el PROCESS
$this->wp->update($arrayData);
}
@@ -185,6 +189,9 @@ class BpmnWorkflow extends Project\Bpmn
$actUid = parent::addActivity($data);
$taskData["TAS_UID"] = $actUid;
if (!empty($data["TAS_ID"])) {
$taskData["TAS_ID"] = $data["TAS_ID"];
}
if (array_key_exists("ACT_NAME", $data)) {
$taskData["TAS_TITLE"] = $data["ACT_NAME"];
@@ -1254,7 +1261,7 @@ class BpmnWorkflow extends Project\Bpmn
$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"]);
if ($projectData["prj_name"] == '') {
@@ -1300,6 +1307,10 @@ class BpmnWorkflow extends Project\Bpmn
$data["PRJ_CATEGORY"] = $projectData["prj_category"];
}
if (isset($projectData["process"]["pro_id"])) {
$data["PRO_ID"] = $projectData["process"]["pro_id"];
}
$bwp->create($data);
$diagramData = $processData = array();
@@ -1329,7 +1340,7 @@ class BpmnWorkflow extends Project\Bpmn
$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();
}
@@ -1456,10 +1467,15 @@ class BpmnWorkflow extends Project\Bpmn
*
* @param $prjUid
* @param $projectData
* @param $allData All data from import file
* @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["activities"] = isset($diagram["activities"])? $diagram["activities"]: array();
$diagram["artifacts"] = isset($diagram["artifacts"])? $diagram["artifacts"]: array();
@@ -1614,6 +1630,13 @@ class BpmnWorkflow extends Project\Bpmn
"old_uid" => $uidOld,
"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);

View File

@@ -178,6 +178,9 @@ class Workflow extends Handler
{
// Setting defaults
$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;
try {