Major Updates for import BPMN project
This commit is contained in:
@@ -413,42 +413,53 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
$this->wp->remove();
|
||||
}
|
||||
|
||||
public static function createFromStruct(array $projectData)
|
||||
public static function createFromStruct(array $projectData, $generateUid = true)
|
||||
{
|
||||
$bwp = new self;
|
||||
$result = array();
|
||||
$data = array();
|
||||
|
||||
// if (array_key_exists("prj_uid", $projectData)) {
|
||||
// $result[0]["old_uid"] = $projectData["prj_uid"];
|
||||
// } else {
|
||||
// $result[0]["old_uid"] = "";
|
||||
// }
|
||||
if ($generateUid) {
|
||||
$result[0]["old_uid"] = isset($projectData["prj_uid"]) ? $projectData["prj_uid"] : "";
|
||||
$projectData["prj_uid"] = Util\Common::generateUID();
|
||||
$result[0]["new_uid"] = $projectData["prj_uid"];
|
||||
$result[0]["object"] = "project";
|
||||
}
|
||||
|
||||
//$projectData["prj_uid"] = Util\Common::generateUID();
|
||||
$result[0]["new_uid"] = $projectData["prj_uid"];
|
||||
$result[0]["old_uid"] = "";
|
||||
$result[0]["object"] = "project";
|
||||
$data["PRJ_UID"] = $projectData["prj_uid"];
|
||||
$data["PRJ_AUTHOR"] = $projectData["prj_author"];
|
||||
|
||||
$bwp->create(array(
|
||||
"PRJ_UID" => $projectData["prj_uid"],
|
||||
"PRJ_AUTHOR" => $projectData["prj_author"]
|
||||
));
|
||||
$bwp->create($data);
|
||||
|
||||
$diagramData = $processData = array();
|
||||
|
||||
if (array_key_exists("diagrams", $projectData) && is_array($projectData["diagrams"]) && count($projectData["diagrams"]) > 0) {
|
||||
$diagramData = array_change_key_case($projectData["diagrams"][0], CASE_UPPER);
|
||||
}
|
||||
if (array_key_exists("process", $projectData) && is_array($projectData["process"])) {
|
||||
$processData = array_change_key_case($projectData["process"], CASE_UPPER);
|
||||
if ($generateUid) {
|
||||
$result[1]["old_uid"] = $diagramData["DIA_UID"];
|
||||
$diagramData["DIA_UID"] = Util\Common::generateUID();
|
||||
$result[1]["new_uid"] = $diagramData["DIA_UID"];
|
||||
$result[1]["object"] = "diagram";
|
||||
}
|
||||
}
|
||||
|
||||
$bwp->addDiagram($diagramData);
|
||||
|
||||
if (array_key_exists("process", $projectData) && is_array($projectData["process"])) {
|
||||
$processData = array_change_key_case($projectData["process"], CASE_UPPER);
|
||||
if ($generateUid) {
|
||||
$result[2]["old_uid"] = $processData["PRO_UID"];
|
||||
$processData["PRO_UID"] = Util\Common::generateUID();
|
||||
$result[2]["new_uid"] = $processData["PRO_UID"];
|
||||
$result[2]["object"] = "process";
|
||||
}
|
||||
}
|
||||
|
||||
$bwp->addProcess($processData);
|
||||
|
||||
$result = array_merge($result, self::updateFromStruct($bwp->prjUid, $projectData));
|
||||
$mappedUid = array_merge($result, self::updateFromStruct($bwp->prjUid, $projectData, $generateUid));
|
||||
|
||||
return $result;
|
||||
return $generateUid ? $mappedUid : $bwp->getUid();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -545,7 +556,7 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
* @param $projectData
|
||||
* @return array
|
||||
*/
|
||||
public static function updateFromStruct($prjUid, $projectData)
|
||||
public static function updateFromStruct($prjUid, $projectData, $generateUid = true)
|
||||
{
|
||||
$diagram = isset($projectData["diagrams"]) && isset($projectData["diagrams"][0]) ? $projectData["diagrams"][0] : array();
|
||||
$result = array();
|
||||
@@ -564,10 +575,12 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
|
||||
$activity = $bwp->getActivity($activityData["ACT_UID"]);
|
||||
if (is_null($activity)) {
|
||||
$oldActUid = $activityData["ACT_UID"];
|
||||
$activityData["ACT_UID"] = Util\Common::generateUID();
|
||||
if ($generateUid) {
|
||||
$oldActUid = $activityData["ACT_UID"];
|
||||
$activityData["ACT_UID"] = Util\Common::generateUID();
|
||||
$result[] = array("object" => "activity", "new_uid" => $activityData["ACT_UID"], "old_uid" => $oldActUid);
|
||||
}
|
||||
$bwp->addActivity($activityData);
|
||||
$result[] = array("object" => "activity", "new_uid" => $activityData["ACT_UID"], "old_uid" => $oldActUid);
|
||||
} elseif (! $bwp->isEquals($activity, $activityData)) {
|
||||
$bwp->updateActivity($activityData["ACT_UID"], $activityData);
|
||||
} else {
|
||||
@@ -592,17 +605,19 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
* Diagram's Gateways Handling
|
||||
*/
|
||||
$whiteList = array();
|
||||
//print_r($diagram);
|
||||
foreach ($diagram["gateways"] as $i => $gatewayData) {
|
||||
$gatewayData = array_change_key_case($gatewayData, CASE_UPPER);
|
||||
unset($gatewayData["_EXTENDED"]);
|
||||
|
||||
$gateway = $bwp->getGateway($gatewayData["GAT_UID"]);
|
||||
if (is_null($gateway)) {
|
||||
$oldActUid = $gatewayData["GAT_UID"];
|
||||
$gatewayData["GAT_UID"] = Util\Common::generateUID();
|
||||
if ($generateUid) {
|
||||
$oldActUid = $gatewayData["GAT_UID"];
|
||||
$gatewayData["GAT_UID"] = Util\Common::generateUID();
|
||||
$result[] = array("object" => "gateway", "new_uid" => $gatewayData["GAT_UID"], "old_uid" => $oldActUid);
|
||||
}
|
||||
|
||||
$bwp->addGateway($gatewayData);
|
||||
$result[] = array("object" => "gateway", "new_uid" => $gatewayData["GAT_UID"], "old_uid" => $oldActUid);
|
||||
} elseif (! $bwp->isEquals($gateway, $gatewayData)) {
|
||||
$bwp->updateGateway($gatewayData["GAT_UID"], $gatewayData);
|
||||
} else {
|
||||
@@ -638,10 +653,13 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
|
||||
$event = $bwp->getEvent($eventData["EVN_UID"]);
|
||||
if (is_null($event)) {
|
||||
$oldActUid = $eventData["EVN_UID"];
|
||||
$eventData["EVN_UID"] = Util\Common::generateUID();
|
||||
if ($generateUid) {
|
||||
$oldActUid = $eventData["EVN_UID"];
|
||||
$eventData["EVN_UID"] = Util\Common::generateUID();
|
||||
$result[] = array("object" => "event", "new_uid" => $eventData["EVN_UID"], "old_uid" => $oldActUid);
|
||||
}
|
||||
|
||||
$bwp->addEvent($eventData);
|
||||
$result[] = array("object" => "event", "new_uid" => $eventData["EVN_UID"], "old_uid" => $oldActUid);
|
||||
} elseif (! $bwp->isEquals($event, $eventData)) {
|
||||
$bwp->updateEvent($eventData["EVN_UID"], $eventData);
|
||||
} else {
|
||||
@@ -672,9 +690,10 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
$flowData = array_change_key_case($flowData, CASE_UPPER);
|
||||
|
||||
// if it is a new flow record
|
||||
if (! \BpmnFlow::exists($flowData["FLO_UID"])) {
|
||||
if ($generateUid && ! \BpmnFlow::exists($flowData["FLO_UID"])) {
|
||||
$oldFloUid = $flowData["FLO_UID"];
|
||||
$flowData["FLO_UID"] = Util\Common::generateUID();
|
||||
$result[] = array("object" => "flow", "new_uid" => $flowData["FLO_UID"], "old_uid" => $oldFloUid);
|
||||
|
||||
$mappedUid = self::mapUid($flowData["FLO_ELEMENT_ORIGIN"], $result);
|
||||
if ($mappedUid !== false) {
|
||||
@@ -685,8 +704,6 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
if ($mappedUid !== false) {
|
||||
$flowData["FLO_ELEMENT_DEST"] = $mappedUid;
|
||||
}
|
||||
|
||||
$result[] = array("object" => "flow", "new_uid" => $flowData["FLO_UID"], "old_uid" => $oldFloUid);
|
||||
}
|
||||
|
||||
$diagram["flows"][$i] = $flowData;
|
||||
@@ -728,4 +745,10 @@ class BpmnWorkflow extends Project\Bpmn
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function setDisabled($value = true)
|
||||
{
|
||||
parent::setDisabled($value);
|
||||
$this->wp->setDisabled($value);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user