Adding Event handling for bpmn and workflow layer (for start and end task setting)

This commit is contained in:
Erik Amaru Ortiz
2014-02-10 19:43:54 -04:00
parent 805b959969
commit 0bb319c70e
4 changed files with 174 additions and 113 deletions

View File

@@ -45,15 +45,17 @@ class Project extends Api
$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(array("changeCaseTo" => CASE_LOWER));
$diagram["events"] = $bwp->getEvents();
$diagram["gateways"] = $bwp->getGateways(array("changeCaseTo" => CASE_LOWER));
$diagram["flows"] = $bwp->getFlows(array("changeCaseTo" => CASE_LOWER));
$diagram["artifacts"] = $bwp->getArtifacts();
$diagram["laneset"] = $bwp->getLanesets();
$diagram["lanes"] = $bwp->getLanes();
$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;
}
@@ -182,6 +184,41 @@ class Project extends Api
}
}
/*
* Diagram's Events Handling
*/
$whiteList = array();
foreach ($diagram["events"] as $i => $eventData) {
$eventData = array_change_key_case($eventData, CASE_UPPER);
// gateway exists ?
if ($event = $bwp->getEvent($eventData["EVN_UID"])) {
// then update activity
$bwp->updateEvent($eventData["EVN_UID"], $eventData);
} else {
// if not exists then create it
$oldActUid = $eventData["EVN_UID"];
$eventData["EVN_UID"] = Hash::generateUID();
$bwp->addEvent($eventData);
$result[] = array("object" => "event", "new_uid" => $eventData["EVN_UID"], "old_uid" => $oldActUid);
$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