BPMN Projects import is working now, first part, it is just importing project that doesn't exist in db.
This commit is contained in:
@@ -3,7 +3,6 @@ namespace Services\Api\ProcessMaker;
|
||||
|
||||
use Luracast\Restler\RestException;
|
||||
use ProcessMaker\Services\Api;
|
||||
use ProcessMaker\Adapter\Bpmn\Model as BpmnModel;
|
||||
use \ProcessMaker\Project\Adapter;
|
||||
use \ProcessMaker\Util;
|
||||
|
||||
@@ -35,29 +34,7 @@ class Project extends Api
|
||||
public function get($prjUid)
|
||||
{
|
||||
try {
|
||||
$bwp = Adapter\BpmnWorkflow::load($prjUid);
|
||||
|
||||
$project = array_change_key_case($bwp->getProject(), CASE_LOWER);
|
||||
$diagram = $bwp->getDiagram();
|
||||
$process = $bwp->getProcess();
|
||||
$diagram["pro_uid"] = $process["PRO_UID"];
|
||||
|
||||
$configList = array("changeCaseTo" => CASE_LOWER);
|
||||
|
||||
if (! is_null($diagram)) {
|
||||
$diagram = array_change_key_case($diagram, CASE_LOWER);
|
||||
$diagram["activities"] = $bwp->getActivities($configList);
|
||||
$diagram["events"] = $bwp->getEvents($configList);
|
||||
$diagram["gateways"] = $bwp->getGateways($configList);
|
||||
$diagram["flows"] = $bwp->getFlows($configList);
|
||||
$diagram["artifacts"] = $bwp->getArtifacts($configList);
|
||||
$diagram["laneset"] = $bwp->getLanesets($configList);
|
||||
$diagram["lanes"] = $bwp->getLanes($configList);
|
||||
|
||||
$project["diagrams"][] = $diagram;
|
||||
}
|
||||
|
||||
return $project;
|
||||
return Adapter\BpmnWorkflow::getStruct($prjUid);
|
||||
} catch (\Exception $e) {
|
||||
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
||||
}
|
||||
@@ -69,28 +46,7 @@ class Project extends Api
|
||||
public function post($request_data)
|
||||
{
|
||||
try {
|
||||
// NEED REFACTOR
|
||||
// $config = array();
|
||||
// $config['project'] = array('replace_uids' => true);
|
||||
//
|
||||
// $bpmnModel = new BpmnModel();
|
||||
// $result = $bpmnModel->createProject($request_data, $config['project']['replace_uids']);
|
||||
//
|
||||
// if (array_key_exists('prj_uid', $result)) {
|
||||
// $prjUid = $result['prj_uid'];
|
||||
// } else {
|
||||
// $prjUid = $result[0]['new_uid'];
|
||||
// }
|
||||
//
|
||||
// $wfProcess = Workflow::loadFromBpmnProject($prjUid);
|
||||
//
|
||||
// $process = new \BusinessModel\Process();
|
||||
// $userUid = $this->getUserId();
|
||||
// $data = array('process' => $wfProcess);
|
||||
//
|
||||
// $process->createProcess($userUid, $data);
|
||||
|
||||
// return $result;
|
||||
//TODO
|
||||
} catch (\Exception $e) {
|
||||
// TODO in case that $process->createProcess($userUid, $data); fails maybe the BPMN project was created successfully
|
||||
// so, we need remove it or change the creation order.
|
||||
@@ -102,173 +58,7 @@ class Project extends Api
|
||||
public function put($prjUid, $request_data)
|
||||
{
|
||||
try {
|
||||
$projectData = $request_data;
|
||||
$diagram = isset($projectData["diagrams"]) && isset($projectData["diagrams"][0]) ? $projectData["diagrams"][0] : array();
|
||||
$result = array();
|
||||
$bwp = Adapter\BpmnWorkflow::load($prjUid);
|
||||
|
||||
/*
|
||||
* Diagram's Activities Handling
|
||||
*/
|
||||
$whiteList = array();
|
||||
foreach ($diagram["activities"] as $i => $activityData) {
|
||||
$activityData = array_change_key_case($activityData, CASE_UPPER);
|
||||
unset($activityData["_EXTENDED"], $activityData["BOU_ELEMENT_ID"]);
|
||||
$activityData = Util\ArrayUtil::boolToIntValues($activityData);
|
||||
|
||||
$activity = $bwp->getActivity($activityData["ACT_UID"]);
|
||||
if (is_null($activity)) {
|
||||
$oldActUid = $activityData["ACT_UID"];
|
||||
$activityData["ACT_UID"] = Util\Common::generateUID();
|
||||
$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 {
|
||||
Util\Logger::log("Update Activity ({$activityData["ACT_UID"]}) Skipped - No changes required");
|
||||
}
|
||||
|
||||
$diagram["activities"][$i] = $activityData;
|
||||
$whiteList[] = $activityData["ACT_UID"];
|
||||
}
|
||||
|
||||
$activities = $bwp->getActivities();
|
||||
|
||||
// looking for removed elements
|
||||
foreach ($activities as $activityData) {
|
||||
if (! in_array($activityData["ACT_UID"], $whiteList)) {
|
||||
$bwp->removeActivity($activityData["ACT_UID"]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Diagram's Gateways Handling
|
||||
*/
|
||||
$whiteList = array();
|
||||
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();
|
||||
$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 {
|
||||
Util\Logger::log("Update Gateway ({$gatewayData["GAT_UID"]}) Skipped - No changes required");
|
||||
}
|
||||
|
||||
$diagram["gateways"][$i] = $gatewayData;
|
||||
$whiteList[] = $gatewayData["GAT_UID"];
|
||||
}
|
||||
|
||||
$gateways = $bwp->getGateways();
|
||||
|
||||
// looking for removed elements
|
||||
foreach ($gateways as $gatewayData) {
|
||||
if (! in_array($gatewayData["GAT_UID"], $whiteList)) {
|
||||
$bwp->removeGateway($gatewayData["GAT_UID"]);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Diagram's Events Handling
|
||||
*/
|
||||
$whiteList = array();
|
||||
foreach ($diagram["events"] as $i => $eventData) {
|
||||
$eventData = array_change_key_case($eventData, CASE_UPPER);
|
||||
unset($eventData["_EXTENDED"]);
|
||||
if (array_key_exists("EVN_CANCEL_ACTIVITY", $eventData)) {
|
||||
$eventData["EVN_CANCEL_ACTIVITY"] = $eventData["EVN_CANCEL_ACTIVITY"] ? 1 : 0;
|
||||
}
|
||||
if (array_key_exists("EVN_WAIT_FOR_COMPLETION", $eventData)) {
|
||||
$eventData["EVN_WAIT_FOR_COMPLETION"] = $eventData["EVN_WAIT_FOR_COMPLETION"] ? 1 : 0;
|
||||
}
|
||||
|
||||
$event = $bwp->getEvent($eventData["EVN_UID"]);
|
||||
if (is_null($event)) {
|
||||
$oldActUid = $eventData["EVN_UID"];
|
||||
$eventData["EVN_UID"] = Util\Common::generateUID();
|
||||
$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 {
|
||||
Util\Logger::log("Update Event ({$eventData["EVN_UID"]}) Skipped - No changes required");
|
||||
}
|
||||
|
||||
$diagram["events"][$i] = $eventData;
|
||||
$whiteList[] = $eventData["EVN_UID"];
|
||||
}
|
||||
|
||||
$events = $bwp->getEvents();
|
||||
|
||||
// looking for removed elements
|
||||
foreach ($events as $eventData) {
|
||||
if (! in_array($eventData["EVN_UID"], $whiteList)) {
|
||||
// If it is not in the white list so, then remove them
|
||||
$bwp->removeEvent($eventData["EVN_UID"]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Diagram's Flows Handling
|
||||
*/
|
||||
$whiteList = array();
|
||||
|
||||
foreach ($diagram["flows"] as $i => $flowData) {
|
||||
$flowData = array_change_key_case($flowData, CASE_UPPER);
|
||||
|
||||
// if it is a new flow record
|
||||
if (! \BpmnFlow::exists($flowData["FLO_UID"])) {
|
||||
$oldFloUid = $flowData["FLO_UID"];
|
||||
$flowData["FLO_UID"] = Util\Common::generateUID();
|
||||
|
||||
$mappedUid = self::mapUid($flowData["FLO_ELEMENT_ORIGIN"], $result);
|
||||
if ($mappedUid !== false) {
|
||||
$flowData["FLO_ELEMENT_ORIGIN"] = $mappedUid;
|
||||
}
|
||||
|
||||
$mappedUid = self::mapUid($flowData["FLO_ELEMENT_DEST"], $result);
|
||||
if ($mappedUid !== false) {
|
||||
$flowData["FLO_ELEMENT_DEST"] = $mappedUid;
|
||||
}
|
||||
|
||||
$result[] = array("object" => "flow", "new_uid" => $flowData["FLO_UID"], "old_uid" => $oldFloUid);
|
||||
}
|
||||
|
||||
$diagram["flows"][$i] = $flowData;
|
||||
$whiteList[] = $flowData["FLO_UID"];
|
||||
}
|
||||
|
||||
foreach ($diagram["flows"] as $flowData) {
|
||||
$flow = $bwp->getFlow($flowData["FLO_UID"]);
|
||||
if (is_null($flow)) {
|
||||
$bwp->addFlow($flowData, $diagram["flows"]);
|
||||
} elseif (! $bwp->isEquals($flow, $flowData)) {
|
||||
$bwp->updateFlow($flowData["FLO_UID"], $flowData, $diagram["flows"]);
|
||||
} else {
|
||||
Util\Logger::log("Update Flow ({$flowData["FLO_UID"]}) Skipped - No changes required");
|
||||
}
|
||||
}
|
||||
|
||||
$flows = $bwp->getFlows();
|
||||
|
||||
// looking for removed elements
|
||||
foreach ($flows as $flowData) {
|
||||
if (! in_array($flowData["FLO_UID"], $whiteList)) {
|
||||
$bwp->removeFlow($flowData["FLO_UID"]);
|
||||
}
|
||||
}
|
||||
|
||||
$bwp->mapBpmnFlowsToWorkflowRoutes();
|
||||
|
||||
return $result;
|
||||
return Adapter\BpmnWorkflow::updateFromStruct($prjUid, $request_data);
|
||||
} catch (\Exception $e) {
|
||||
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
||||
}
|
||||
@@ -277,10 +67,7 @@ class Project extends Api
|
||||
public function delete($prjUid)
|
||||
{
|
||||
try {
|
||||
$process = new \BusinessModel\Process();
|
||||
$process->deleteProcess($prjUid);
|
||||
|
||||
BpmnModel::deleteProject($prjUid);
|
||||
// TODO
|
||||
} catch (\Exception $e) {
|
||||
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
||||
}
|
||||
@@ -385,17 +172,6 @@ class Project extends Api
|
||||
}
|
||||
}
|
||||
|
||||
protected static function mapUid($oldUid, $list)
|
||||
{
|
||||
foreach ($list as $item) {
|
||||
if ($item["old_uid"] == $oldUid) {
|
||||
return $item["new_uid"];
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @url GET /:prj_uid/variables
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user