HOR-2809
Preserve PRO_ID and TAS_ID in granular process import.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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"] . "" == "") {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user