PM-939 "Support for Message-Event (Endpoints and Backend)"

- Se han implementado los siguientes Endpoints:
    GET    /api/1.0/{workspace}/project/{prj_uid}/message-event-definitions
    GET    /api/1.0/{workspace}/project/{prj_uid}/message-event-definition/{msged_uid}
    GET    /api/1.0/{workspace}/project/{prj_uid}/message-event-definition/event/{evn_uid}
    POST   /api/1.0/{workspace}/project/{prj_uid}/message-event-definition
    PUT    /api/1.0/{workspace}/project/{prj_uid}/message-event-definition/{msged_uid}
    DELETE /api/1.0/{workspace}/project/{prj_uid}/message-event-definition/{msged_uid}
- Se han implementado los metodos necesarios/requeridos para el backend
  del DESIGNER para esta nueva funcionalidad
This commit is contained in:
Victor Saisa Lopez
2015-02-13 16:32:43 -04:00
parent 8b18dda574
commit b83718f295
32 changed files with 8344 additions and 58 deletions

View File

@@ -625,12 +625,53 @@ class Bpmn extends Handler
}
}
public function throwExceptionFlowIfIsAnInvalidMessageFlow(array $bpmnFlow)
{
try {
if ($bpmnFlow["FLO_TYPE"] == "MESSAGE" &&
$bpmnFlow["FLO_ELEMENT_ORIGIN_TYPE"] == "bpmnEvent" && $bpmnFlow["FLO_ELEMENT_DEST_TYPE"] == "bpmnEvent"
) {
$flagValid = true;
$arrayEventType = array("START", "END", "INTERMEDIATE");
$arrayAux = array(
array("eventUid" => $bpmnFlow["FLO_ELEMENT_ORIGIN"], "eventMarker" => "MESSAGETHROW"),
array("eventUid" => $bpmnFlow["FLO_ELEMENT_DEST"], "eventMarker" => "MESSAGECATCH")
);
foreach ($arrayAux as $value) {
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\BpmnEventPeer::EVN_UID);
$criteria->add(\BpmnEventPeer::EVN_UID, $value["eventUid"], \Criteria::EQUAL);
$criteria->add(\BpmnEventPeer::EVN_TYPE, $arrayEventType, \Criteria::IN);
$criteria->add(\BpmnEventPeer::EVN_MARKER, $value["eventMarker"], \Criteria::EQUAL);
$rsCriteria = \BpmnEventPeer::doSelectRS($criteria);
if (!$rsCriteria->next()) {
$flagValid = false;
break;
}
}
if (!$flagValid) {
throw new \RuntimeException("Invalid Message Flow.");
}
}
} catch (\Exception $e) {
throw $e;
}
}
public function addFlow($data)
{
self::log("Add Flow with data: ", $data);
// setting defaults
$data['FLO_UID'] = array_key_exists('FLO_UID', $data) ? $data['FLO_UID'] : Common::generateUID();
if (array_key_exists('FLO_STATE', $data)) {
$data['FLO_STATE'] = is_array($data['FLO_STATE']) ? json_encode($data['FLO_STATE']) : $data['FLO_STATE'];
}
@@ -680,17 +721,23 @@ class Bpmn extends Handler
));
}
//Check and validate Message Flow
$this->throwExceptionFlowIfIsAnInvalidMessageFlow($data);
//Create
$flow = new Flow();
$flow->fromArray($data, BasePeer::TYPE_FIELDNAME);
$flow->setPrjUid($this->getUid());
$flow->setDiaUid($this->getDiagram("object")->getDiaUid());
$flow->setFloPosition($this->getFlowNextPosition($data["FLO_UID"], $data["FLO_TYPE"], $data["FLO_ELEMENT_ORIGIN"]));
$flow->save();
self::log("Add Flow Success!");
return $flow->getFloUid();
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;
}
}
@@ -703,7 +750,12 @@ class Bpmn extends Handler
if (array_key_exists('FLO_STATE', $data)) {
$data['FLO_STATE'] = is_array($data['FLO_STATE']) ? json_encode($data['FLO_STATE']) : $data['FLO_STATE'];
}
try {
//Check and validate Message Flow
$this->throwExceptionFlowIfIsAnInvalidMessageFlow($data);
//Update
$flow = FlowPeer::retrieveByPk($floUid);
$flow->fromArray($data);
$flow->save();