diff --git a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php index 719fb3f31..b7dbf7310 100644 --- a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php @@ -226,6 +226,18 @@ class BpmnWorkflow extends Project\Bpmn if ($event && $event->getEvnType() == "START") { $this->wp->setStartTask($data["FLO_ELEMENT_DEST"]); } + + // update case scheduler + if ($event->getEvnType() == "START" && $event->getEvnMarker() == "TIMER") { + $aData = array('TAS_UID'=>$data["FLO_ELEMENT_DEST"], 'SCH_UID'=>$data["FLO_ELEMENT_ORIGIN"]); + $this->wp->updateCaseScheduler($aData); + } + + // update web entry + if ($event->getEvnType() == "START" && $event->getEvnMarker() == "MESSAGE") { + $aData = array('TAS_UID'=>$data["FLO_ELEMENT_DEST"], 'WE_UID'=>$data["FLO_ELEMENT_ORIGIN"]); + $this->wp->updateWebEntry($aData); + } break; } break; @@ -310,16 +322,15 @@ class BpmnWorkflow extends Project\Bpmn $event = \BpmnEventPeer::retrieveByPK($eventUid); // create case scheduler - if ($event->getEvnMarker() == "TIMER") { + if ($event->getEvnMarker() == "TIMER" && $event->getEvnType() == "START") { $this->wp->addCaseScheduler($eventUid); } // create web entry - if ($event->getEvnMarker() == "MESSAGE") { + if ($event->getEvnMarker() == "MESSAGE" && $event->getEvnType() == "START") { $this->wp->addWebEntry($eventUid); } - //return parent::addEvent($data); return $eventUid; } diff --git a/workflow/engine/src/ProcessMaker/Project/Bpmn.php b/workflow/engine/src/ProcessMaker/Project/Bpmn.php index 4e132094a..6837c1392 100644 --- a/workflow/engine/src/ProcessMaker/Project/Bpmn.php +++ b/workflow/engine/src/ProcessMaker/Project/Bpmn.php @@ -473,6 +473,17 @@ class Bpmn extends Handler self::log("Remove Event: $evnUid"); $event = EventPeer::retrieveByPK($evnUid); + + // delete case scheduler + if ($event->getEvnMarker() == "TIMER" && $event->getEvnType() == "START") { + $this->removeCaseScheduler($evnUid); + } + + // delete web entry + if ($event->getEvnMarker() == "MESSAGE" && $event->getEvnType() == "START") { + $this->removeWebEntry($evnUid); + } + $event->delete(); self::log("Remove Event Success!"); @@ -824,4 +835,30 @@ class Bpmn extends Handler $status = $value ? "DISABLED" : "ACTIVE"; $this->update(array("PRJ_STATUS" => $status)); } + + public function removeCaseScheduler($schUid) + { + try { + $caseScheduler = new \CaseScheduler(); + self::log("Remove Case Scheduler: ".$schUid); + $caseScheduler->remove($schUid); + self::log("Remove Case Scheduler Success!"); + } catch (\Exception $e) { + self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString()); + throw $e; + } + } + + public function removeWebEntry($weUid) + { + try { + $webEntry = new \ProcessMaker\BusinessModel\WebEntry(); + self::log("Remove Web Entry: ".$weUid); + $webEntry->delete($weUid); + self::log("Remove Web Entry Success!"); + } catch (\Exception $e) { + self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString()); + throw $e; + } + } } \ No newline at end of file diff --git a/workflow/engine/src/ProcessMaker/Project/Workflow.php b/workflow/engine/src/ProcessMaker/Project/Workflow.php index bb58df8ff..dfdba1e08 100644 --- a/workflow/engine/src/ProcessMaker/Project/Workflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Workflow.php @@ -668,9 +668,8 @@ class Workflow extends Handler $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { - if ($aRow['EVN_UID'] == 'TIMER') { - $this->removeCaseScheduler(); - } + $this->removeCaseScheduler($aRow['EVN_UID']); + $this->removeWebEntry($aRow['EVN_UID']); $oEvent->remove($aRow['EVN_UID']); $oDataset->next(); } @@ -775,7 +774,7 @@ class Workflow extends Handler $this->update(array("PRO_STATUS" => $status)); } - public function addCaseScheduler($eventUid) + public function addCaseScheduler($schUid) { try { $caseScheduler = new \CaseScheduler(); @@ -805,7 +804,7 @@ class Workflow extends Handler 'SCH_REPEAT_STOP_IF_RUNNING'=>'', 'CASE_SH_PLUGIN_UID'=>NULL, 'SCH_DEL_USER_PASS'=>'', - 'SCH_UID'=>$eventUid, + 'SCH_UID'=>$schUid, 'SCH_REPEAT_UNTIL'=>'' ); @@ -819,12 +818,12 @@ class Workflow extends Handler } } - public function removeCaseScheduler() + public function removeCaseScheduler($schUid) { try { $caseScheduler = new \CaseScheduler(); - self::log("Remove Case Scheduler: ".$caseScheduler->getSchUid()); - $caseScheduler->delete(); + self::log("Remove Case Scheduler: ".$schUid); + $caseScheduler->remove($schUid); self::log("Remove Case Scheduler Success!"); } catch (\Exception $e) { self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString()); @@ -832,16 +831,23 @@ class Workflow extends Handler } } - public function updateCaseScheduler() + public function updateCaseScheduler($data) { - + try { + $caseScheduler = new \CaseScheduler(); + $caseScheduler->update($data); + self::log("Update Case Scheduler Success!"); + } catch (\Exception $e) { + self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString()); + throw $e; + } } - public function addWebEntry($eventUid) + public function addWebEntry($weUid) { try { $webEntry = new \WebEntry(); - $webEntryUid = $eventUid; + $webEntryUid = $weUid; $webEntry->setWeUid($webEntryUid); $webEntry->setProUid($this->proUid); $webEntry->setWeMethod(''); @@ -856,12 +862,12 @@ class Workflow extends Handler } } - public function removeWebEntry() + public function removeWebEntry($weUid) { try { - $webEntry = new \WebEntry(); - self::log("Remove Web Entry: ".$webEntry->getWeUid()); - $webEntry->delete(); + $webEntry = new \ProcessMaker\BusinessModel\WebEntry(); + self::log("Remove Web Entry: ".$weUid); + $webEntry->delete($weUid); self::log("Remove Web Entry Success!"); } catch (\Exception $e) { self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString()); @@ -869,8 +875,18 @@ class Workflow extends Handler } } - public function updateWebEntry() + public function updateWebEntry($data) { + try { + $webEntryUid = $data['WE_UID']; + $webEntry = \WebEntryPeer::retrieveByPK($webEntryUid); + $webEntry->fromArray($data, \BasePeer::TYPE_FIELDNAME); + $webEntry->save(); + self::log("Update Web Entry Success!"); + } catch (\Exception $e) { + self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString()); + throw $e; + } } } \ No newline at end of file