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:
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user