PM-2576 "Support for Timer-Event (End-points and Backend)"

- Se han implementado los siguientes End-points:
    GET    /api/1.0/{workspace}/project/{prj_uid}/timer-events
    GET    /api/1.0/{workspace}/project/{prj_uid}/timer-event/{tmrevn_uid}
    GET    /api/1.0/{workspace}/project/{prj_uid}/timer-event/event/{evn_uid}
    POST   /api/1.0/{workspace}/project/{prj_uid}/timer-event
    PUT    /api/1.0/{workspace}/project/{prj_uid}/timer-event/{tmrevn_uid}
    DELETE /api/1.0/{workspace}/project/{prj_uid}/timer-event/{tmrevn_uid}
- Se han implementado la funcionalidad y los metodos necesarios para este nuevo elemento
  en el modulo "BPMN-DESIGNER Backend"
- Se han agregado las validaciones necesarias para filtrar los nuevos tipos de tasks en el
  listado del "New case"
- Se han agregado los metodos necesarios para este nuevo elemento en los modulos Export and Import
- Se han agregado los metodos necesarios para este nuevo elemento en el modulo "Delete process"
- Se a implementado la funcionalidad para este nuevo elemento en el modulo "Running case"
This commit is contained in:
Victor Saisa Lopez
2015-06-30 12:04:53 -04:00
parent a8deb38b4f
commit 8b21d386d2
21 changed files with 8907 additions and 5373 deletions

View File

@@ -29,6 +29,8 @@ class BpmnWorkflow extends Project\Bpmn
"start-message-event" => array("type" => "START-MESSAGE-EVENT", "prefix" => "sme-"),
"intermediate-throw-message-event" => array("type" => "INTERMEDIATE-THROW-MESSAGE-EVENT", "prefix" => "itme-"),
"intermediate-catch-message-event" => array("type" => "INTERMEDIATE-CATCH-MESSAGE-EVENT", "prefix" => "icme-"),
"start-timer-event" => array("type" => "START-TIMER-EVENT", "prefix" => "ste-"),
"intermediate-catch-timer-event" => array("type" => "INTERMEDIATE-CATCH-TIMER-EVENT", "prefix" => "icte-"),
"end-email-event" => array("type" => "END-EMAIL-EVENT", "prefix" => "eee-")
);
@@ -323,7 +325,7 @@ class BpmnWorkflow extends Project\Bpmn
$this->wp->setStartTask($data["FLO_ELEMENT_DEST"]);
}
$this->updateEventStartObjects($data["FLO_ELEMENT_ORIGIN"], $data["FLO_ELEMENT_DEST"]);
//$this->updateEventStartObjects($data["FLO_ELEMENT_ORIGIN"], $data["FLO_ELEMENT_DEST"]);
//WebEntry-Event - Update
$this->updateWebEntryEventByEvent($data["FLO_ELEMENT_ORIGIN"], array("ACT_UID" => $data["FLO_ELEMENT_DEST"]));
@@ -373,7 +375,7 @@ class BpmnWorkflow extends Project\Bpmn
//Setting as start Task
$this->wp->setStartTask($flowCurrent->getFloElementDest());
$this->updateEventStartObjects($flowCurrent->getFloElementOrigin(), $flowCurrent->getFloElementDest());
//$this->updateEventStartObjects($flowCurrent->getFloElementOrigin(), $flowCurrent->getFloElementDest());
//WebEntry-Event - Update
$this->updateWebEntryEventByEvent($flowCurrent->getFloElementOrigin(), array("ACT_UID" => $flowCurrent->getFloElementDest()));
@@ -471,7 +473,7 @@ class BpmnWorkflow extends Project\Bpmn
}
}
$this->updateEventStartObjects($flow->getFloElementOrigin(), "");
//$this->updateEventStartObjects($flow->getFloElementOrigin(), "");
//WebEntry-Event - Update
if (is_null($bpmnFlow)) {
@@ -559,15 +561,6 @@ class BpmnWorkflow extends Project\Bpmn
public function removeEventDefinition(\BpmnEvent $bpmnEvent)
{
try {
//Case-Scheduler - Delete
if ($bpmnEvent->getEvnType() == "START" && $bpmnEvent->getEvnMarker() == "TIMER") {
$caseScheduler = new \CaseScheduler();
if ($caseScheduler->Exists($bpmnEvent->getEvnUid())) {
$this->wp->removeCaseScheduler($bpmnEvent->getEvnUid());
}
}
//WebEntry-Event - Delete
if ($bpmnEvent->getEvnType() == "START" && $bpmnEvent->getEvnMarker() == "EMPTY") {
$webEntryEvent = new \ProcessMaker\BusinessModel\WebEntryEvent();
@@ -593,6 +586,19 @@ class BpmnWorkflow extends Project\Bpmn
}
}
//Timer-Event - Delete
$arrayEventType = array("START", "INTERMEDIATE");
$arrayEventMarker = array("TIMER");
if (in_array($bpmnEvent->getEvnType(), $arrayEventType) && in_array($bpmnEvent->getEvnMarker(), $arrayEventMarker)) {
$timerEvent = new \ProcessMaker\BusinessModel\TimerEvent();
$timerEvent->deleteWhere(array(
\TimerEventPeer::PRJ_UID => array($bpmnEvent->getPrjUid(), \Criteria::EQUAL),
\TimerEventPeer::EVN_UID => array($bpmnEvent->getEvnUid(), \Criteria::EQUAL)
));
}
//Email-Event - Delete
$arrayEventType = array("END", "INTERMEDIATE");
$arrayEventMarker = array("EMAIL");
@@ -623,15 +629,15 @@ class BpmnWorkflow extends Project\Bpmn
$eventUid = parent::addEvent($data);
$event = \BpmnEventPeer::retrieveByPK($eventUid);
// create case scheduler
if ($event && $event->getEvnMarker() == "TIMER" && $event->getEvnType() == "START") {
$this->wp->addCaseScheduler($eventUid);
}
// create web entry
if ($event && $event->getEvnMarker() == "MESSAGE" && $event->getEvnType() == "START") {
$this->wp->addWebEntry($eventUid);
}
//// create case scheduler
//if ($event && $event->getEvnMarker() == "TIMER" && $event->getEvnType() == "START") {
// $this->wp->addCaseScheduler($eventUid);
//}
//
//// create web entry
//if ($event && $event->getEvnMarker() == "MESSAGE" && $event->getEvnType() == "START") {
// $this->wp->addWebEntry($eventUid);
//}
return $eventUid;
}
@@ -668,6 +674,7 @@ class BpmnWorkflow extends Project\Bpmn
}
}
/*
public function updateEventStartObjects($eventUid, $taskUid)
{
$event = \BpmnEventPeer::retrieveByPK($eventUid);
@@ -686,6 +693,7 @@ class BpmnWorkflow extends Project\Bpmn
// $this->wp->updateWebEntry($eventUid, array("TAS_UID" => $taskUid));
//}
}
*/
public function createTaskByElement($elementUid, $elementType, $key)
{
@@ -917,12 +925,19 @@ class BpmnWorkflow extends Project\Bpmn
$arrayEventData = \BpmnEvent::findOneBy(\BpmnEventPeer::EVN_UID, $eventUid)->toArray();
if (!is_null($arrayEventData)) {
//Event - INTERMEDIATE-CATCH-MESSAGE-EVENT
if ($arrayEventData["EVN_TYPE"] == "INTERMEDIATE" && $arrayEventData["EVN_MARKER"] == "MESSAGECATCH") {
$arrayEventType = array("INTERMEDIATE");
$arrayEventMarker = array("MESSAGECATCH", "TIMER");
if (in_array($arrayEventData["EVN_TYPE"], $arrayEventType) && in_array($arrayEventData["EVN_MARKER"], $arrayEventMarker)) {
$arrayKey = array(
"MESSAGECATCH" => "intermediate-catch-message-event",
"TIMER" => "intermediate-catch-timer-event"
);
$taskUid = $this->createTaskByElement(
$eventUid,
"bpmnEvent",
"intermediate-catch-message-event"
$arrayKey[$arrayEventData["EVN_MARKER"]]
);
$result = $this->wp->addRoute($activityUid, $taskUid, $routeType, $routeCondition, $routeDefault);
@@ -1113,6 +1128,17 @@ class BpmnWorkflow extends Project\Bpmn
$this->wp->setStartTask($taskUid);
$this->mapBpmnEventToWorkflowRoutes($taskUid, $event["EVN_UID"]);
break;
case "TIMER":
$taskUid = $this->createTaskByElement(
$event["EVN_UID"],
"bpmnEvent",
"start-timer-event"
);
$this->wp->setStartTask($taskUid);
$this->mapBpmnEventToWorkflowRoutes($taskUid, $event["EVN_UID"]);
break;
case "EMPTY":
@@ -1120,10 +1146,10 @@ class BpmnWorkflow extends Project\Bpmn
break;
}
break;
case "END":
break;
case "INTERMEDIATE":
break;
//case "END":
// break;
//case "INTERMEDIATE":
// break;
}
}
}
@@ -1329,7 +1355,6 @@ class BpmnWorkflow extends Project\Bpmn
* @param $projectData
* @return array
*/
public static function updateFromStruct($prjUid, $projectData, $generateUid = true, $forceInsert = false)
{
$diagram = isset($projectData["diagrams"]) && isset($projectData["diagrams"][0]) ? $projectData["diagrams"][0] : array();
@@ -1954,3 +1979,4 @@ class BpmnWorkflow extends Project\Bpmn
}
}
}

View File

@@ -855,7 +855,17 @@ class Workflow extends Handler
$messageEventDefinition->delete($row["MSGED_UID"]);
}
//Delete Script-Task
$scriptTask = new \ProcessMaker\BusinessModel\ScriptTask();
$scriptTask->deleteWhere(array(\ScriptTaskPeer::PRJ_UID => array($sProcessUID, \Criteria::EQUAL)));
//Delete Timer-Event
$timerEvent = new \ProcessMaker\BusinessModel\TimerEvent();
$timerEvent->deleteWhere(array(\TimerEventPeer::PRJ_UID => array($sProcessUID, \Criteria::EQUAL)));
//Delete Email-Event
$emailEvent = new \ProcessMaker\BusinessModel\EmailEvent();
$criteria = new \Criteria("workflow");
@@ -868,7 +878,7 @@ class Workflow extends Handler
$row = $rsCriteria->getRow();
$emailEvent->delete($sProcessUID,$row["EMAIL_EVENT_UID"],false);
}
//Delete files Manager
$filesManager = new \ProcessMaker\BusinessModel\FilesManager();
$criteria = new \Criteria("workflow");
@@ -882,23 +892,6 @@ class Workflow extends Handler
$filesManager->deleteProcessFilesManager($sProcessUID, $row["PRF_UID"]);
}
//Delete Script-Task
$scriptTask = new \ProcessMaker\BusinessModel\ScriptTask();
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\ScriptTaskPeer::SCRTAS_UID);
$criteria->add(\ScriptTaskPeer::PRJ_UID, $sProcessUID, \Criteria::EQUAL);
$rsCriteria = \ScriptTaskPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
while ($rsCriteria->next()) {
$row = $rsCriteria->getRow();
$scriptTask->delete($row["SCRTAS_UID"]);
}
//Delete the process
try {
$oProcess->remove($sProcessUID);
@@ -1238,80 +1231,33 @@ class Workflow extends Handler
$processUidOld = $arrayUid[0]["old_uid"];
$processUid = $arrayUid[0]["new_uid"];
//Update TASK.TAS_UID
foreach ($arrayWorkflowData["tasks"] as $key => $value) {
$taskUid = $arrayWorkflowData["tasks"][$key]["TAS_UID"];
//Update Table.Field
$arrayUpdateTableField = array(
"tasks" => array("fieldname" => "TAS_UID", "oldFieldname" => "TAS_UID_OLD"), //Update TASK.TAS_UID
"webEntryEvent" => array("fieldname" => "EVN_UID", "oldFieldname" => "EVN_UID_OLD"), //Update WEB_ENTRY_EVENT.EVN_UID
"messageEventDefinition" => array("fieldname" => "EVN_UID", "oldFieldname" => "EVN_UID_OLD"), //Update MESSAGE_EVENT_DEFINITION.EVN_UID
"scriptTask" => array("fieldname" => "ACT_UID", "oldFieldname" => "ACT_UID_OLD"), //Update SCRIPT_TASK.ACT_UID
"timerEvent" => array("fieldname" => "EVN_UID", "oldFieldname" => "EVN_UID_OLD"), //Update TIMER_EVENT.EVN_UID
"emailEvent" => array("fieldname" => "EVN_UID", "oldFieldname" => "EVN_UID_OLD") //Update EMAIL_EVENT.EVN_UID
);
foreach ($arrayUid as $value2) {
$arrayItem = $value2;
foreach ($arrayUpdateTableField as $key => $value) {
$table = $key;
$fieldname = $value["fieldname"];
$oldFieldname = $value["oldFieldname"];
if ($arrayItem["old_uid"] == $taskUid) {
$arrayWorkflowData["tasks"][$key]["TAS_UID_OLD"] = $taskUid;
$arrayWorkflowData["tasks"][$key]["TAS_UID"] = $arrayItem["new_uid"];
break;
}
}
}
if (isset($arrayWorkflowData[$table])) {
foreach ($arrayWorkflowData[$table] as $key2 => $value2) {
$uid = $arrayWorkflowData[$table][$key2][$fieldname];
//Update WEB_ENTRY_EVENT.EVN_UID
if (isset($arrayWorkflowData["webEntryEvent"])) {
foreach ($arrayWorkflowData["webEntryEvent"] as $key => $value) {
$webEntryEventEventUid = $arrayWorkflowData["webEntryEvent"][$key]["EVN_UID"];
foreach ($arrayUid as $value3) {
$arrayItem = $value3;
foreach ($arrayUid as $value2) {
$arrayItem = $value2;
if ($arrayItem["old_uid"] == $webEntryEventEventUid) {
$arrayWorkflowData["webEntryEvent"][$key]["EVN_UID"] = $arrayItem["new_uid"];
break;
}
}
}
}
//Update MESSAGE_EVENT_DEFINITION.EVN_UID
if (isset($arrayWorkflowData["messageEventDefinition"])) {
foreach ($arrayWorkflowData["messageEventDefinition"] as $key => $value) {
$messageEventDefinitionEventUid = $arrayWorkflowData["messageEventDefinition"][$key]["EVN_UID"];
foreach ($arrayUid as $value2) {
$arrayItem = $value2;
if ($arrayItem["old_uid"] == $messageEventDefinitionEventUid) {
$arrayWorkflowData["messageEventDefinition"][$key]["EVN_UID"] = $arrayItem["new_uid"];
break;
}
}
}
}
//Update EMAIL_EVENT.EVN_UID
if (isset($arrayWorkflowData["emailEvent"])) {
foreach ($arrayWorkflowData["emailEvent"] as $key => $value) {
$emailEventEventUid = $arrayWorkflowData["emailEvent"][$key]["EVN_UID"];
foreach ($arrayUid as $value2) {
$arrayItem = $value2;
if ($arrayItem["old_uid"] == $emailEventEventUid) {
$arrayWorkflowData["emailEvent"][$key]["EVN_UID"] = $arrayItem["new_uid"];
break;
}
}
}
}
//Update SCRIPT_TASK.ACT_UID
if (isset($arrayWorkflowData["scriptTask"])) {
foreach ($arrayWorkflowData["scriptTask"] as $key => $value) {
$scriptTaskActivityUid = $arrayWorkflowData["scriptTask"][$key]["ACT_UID"];
foreach ($arrayUid as $value2) {
$arrayItem = $value2;
if ($arrayItem["old_uid"] == $scriptTaskActivityUid) {
$arrayWorkflowData["scriptTask"][$key]["ACT_UID"] = $arrayItem["new_uid"];
break;
if ($arrayItem["old_uid"] == $uid) {
$arrayWorkflowData[$table][$key2][$fieldname] = $arrayItem["new_uid"];
$arrayWorkflowData[$table][$key2][$oldFieldname] = $uid;
break;
}
}
}
}
@@ -1369,3 +1315,4 @@ class Workflow extends Handler
}
}
}