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)
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 );
|
||||||
|
|||||||
@@ -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()) {
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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"] . "" == "") {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user