diff --git a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php index 4a3640308..bbdaac9eb 100644 --- a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php @@ -233,6 +233,19 @@ class BpmnWorkflow extends Project\Bpmn parent::addEvent($data); } + public function updateEvent($evnUid, $data) + { + $data["EVN_CANCEL_ACTIVITY"] = $data["EVN_CANCEL_ACTIVITY"] ? 1 : 0; + $data["EVN_WAIT_FOR_COMPLETION"] = $data["EVN_WAIT_FOR_COMPLETION"] ? 1 : 0; + + if (! self::isModified("event", $evnUid, $data)) { + self::log("Update Event: $evnUid (No Changes)"); + return false; + } + + parent::updateEvent($evnUid, $data); + } + public function removeEvent($evnUid) { // $event = \BpmnEventPeer::retrieveByPK($evnUid); diff --git a/workflow/engine/src/ProcessMaker/Project/Bpmn.php b/workflow/engine/src/ProcessMaker/Project/Bpmn.php index 0b8325052..c847d141c 100644 --- a/workflow/engine/src/ProcessMaker/Project/Bpmn.php +++ b/workflow/engine/src/ProcessMaker/Project/Bpmn.php @@ -60,6 +60,10 @@ class Bpmn extends Handler "PRJ_UID", "PRO_UID", "BOU_ELEMENT", "BOU_ELEMENT_TYPE", "BOU_REL_POSITION", "BOU_SIZE_IDENTICAL", "DIA_UID", "BOU_UID", "ELEMENT_UID" ), + "event" => array( + "PRJ_UID", "PRO_UID", "BOU_ELEMENT", "BOU_ELEMENT_TYPE", "BOU_REL_POSITION", + "BOU_SIZE_IDENTICAL", "DIA_UID", "BOU_UID", "ELEMENT_UID", "EVN_ATTACHED_TO", "EVN_CONDITION" + ), "flow" => array("PRJ_UID", "DIA_UID", "FLO_ELEMENT_DEST_PORT", "FLO_ELEMENT_ORIGIN_PORT") ); @@ -356,8 +360,9 @@ class Bpmn extends Handler { $event = EventPeer::retrieveByPK($evnUid); - if ($retType != "object" && ! empty($activity)) { + if ($retType != "object" && ! empty($event)) { $event = $event->toArray(); + $event = self::filterArrayKeys($event, self::$excludeFields["event"]); } return $event; @@ -369,11 +374,21 @@ class Bpmn extends Handler extract($start); } - return Event::getAll($this->project->getPrjUid(), null, null, '', $changeCaseTo); + //return Event::getAll($this->project->getPrjUid(), null, null, '', $changeCaseTo); + + $filter = $changeCaseTo != CASE_UPPER ? array_map("strtolower", self::$excludeFields["event"]) : self::$excludeFields["event"]; + + return self::filterCollectionArrayKeys( + Event::getAll($this->getUid(), $start, $limit, $filter, $changeCaseTo), + $filter + ); } public function updateEvent($evnUid, $data) { + $data["EVN_CANCEL_ACTIVITY"] = $data["EVN_CANCEL_ACTIVITY"] ? 1 : 0; + $data["EVN_WAIT_FOR_COMPLETION"] = $data["EVN_WAIT_FOR_COMPLETION"] ? 1 : 0; + try { self::log("Update Event: $evnUid", "With data: ", $data); @@ -626,7 +641,8 @@ class Bpmn extends Handler case "event": $data = $this->getEvent($uid); break; case "flow": $data = $this->getFlow($uid); break; } - + //self::log("saved data: ", $data, "new data: ", $newData); + //self::log("checksum saved data: ", self::getChecksum($data), "checksum new data: ", self::getChecksum($newData)); return (self::getChecksum($data) !== self::getChecksum($newData)); } } \ No newline at end of file diff --git a/workflow/engine/src/Services/Api/ProcessMaker/Project.php b/workflow/engine/src/Services/Api/ProcessMaker/Project.php index 90e977dea..35ba025f0 100644 --- a/workflow/engine/src/Services/Api/ProcessMaker/Project.php +++ b/workflow/engine/src/Services/Api/ProcessMaker/Project.php @@ -191,6 +191,7 @@ class Project extends Api $whiteList = array(); foreach ($diagram["events"] as $i => $eventData) { $eventData = array_change_key_case($eventData, CASE_UPPER); + unset($eventData["_EXTENDED"]); // gateway exists ? if ($event = $bwp->getEvent($eventData["EVN_UID"])) {