public function updateFlow($floUid, $data, $flows) { $flowBefore = \BpmnFlowPeer::retrieveByPK($floUid); parent::updateFlow($floUid, $data); $flowCurrent = \BpmnFlowPeer::retrieveByPK($floUid); //Verify case: Event1(start) -> Activity1 -----Update-to----> Event1(start) -> Activity2 if ($flowBefore->getFloElementOriginType() == "bpmnEvent" && $flowBefore->getFloElementDestType() == "bpmnActivity" && $flowCurrent->getFloElementOriginType() == "bpmnEvent" && $flowCurrent->getFloElementDestType() == "bpmnActivity" && $flowBefore->getFloElementOrigin() == $flowCurrent->getFloElementOrigin() && $flowBefore->getFloElementDest() != $flowCurrent->getFloElementDest() ) { $event = \BpmnEventPeer::retrieveByPK($flowBefore->getFloElementOrigin()); if (!is_null($event) && $event->getEvnType() == "START" && $event->getEvnMarker() == "EMPTY") { //Remove as start Task $this->wp->setStartTask($flowBefore->getFloElementDest(), false); //Setting as start Task $this->wp->setStartTask($flowCurrent->getFloElementDest()); //$this->updateEventStartObjects($flowCurrent->getFloElementOrigin(), $flowCurrent->getFloElementDest()); //WebEntry-Event - Update $this->updateWebEntryEventByEvent($flowCurrent->getFloElementOrigin(), array("ACT_UID" => $flowCurrent->getFloElementDest())); } } //Verify case: Activity1 -> Event1(end) -----Update-to----> Activity2 -> Event1(end) if ($flowBefore->getFloElementOriginType() == "bpmnActivity" && $flowBefore->getFloElementDestType() == "bpmnEvent" && $flowCurrent->getFloElementOriginType() == "bpmnActivity" && $flowCurrent->getFloElementDestType() == "bpmnEvent" && $flowBefore->getFloElementOrigin() != $flowCurrent->getFloElementOrigin() && $flowBefore->getFloElementDest() == $flowCurrent->getFloElementDest() ) { $event = \BpmnEventPeer::retrieveByPK($flowBefore->getFloElementDest()); if (!is_null($event) && $event->getEvnType() == "END" && $event->getEvnMarker() == "EMPTY") { //Remove as end Task $this->wp->setEndTask($flowBefore->getFloElementOrigin(), false); //Setting as end Task $this->wp->setEndTask($flowCurrent->getFloElementOrigin()); } } //Verify case: Activity1 -> Event1(end) -----Update-to----> Activity1 -> Activity2 if ($flowBefore->getFloElementOriginType() == "bpmnActivity" && $flowBefore->getFloElementDestType() == "bpmnEvent" && $flowCurrent->getFloElementOriginType() == "bpmnActivity" && $flowCurrent->getFloElementDestType() == "bpmnActivity" && $flowBefore->getFloElementOrigin() == $flowCurrent->getFloElementOrigin() ) { $event = \BpmnEventPeer::retrieveByPK($flowBefore->getFloElementDest()); if (!is_null($event) && $event->getEvnType() == "END" && $event->getEvnMarker() == "EMPTY") { //Remove as end Task $this->wp->setEndTask($flowBefore->getFloElementOrigin(), false); } } //Verify case: Activity1 -> Activity2 -----Update-to----> Activity1 -> Activity3 if ($flowBefore->getFloElementOriginType() == "bpmnActivity" && $flowBefore->getFloElementDestType() == "bpmnActivity" && $flowCurrent->getFloElementOriginType() == "bpmnActivity" && $flowCurrent->getFloElementDestType() == "bpmnActivity" && $flowBefore->getFloElementOrigin() == $flowCurrent->getFloElementOrigin() && $flowBefore->getFloElementDest() != $flowCurrent->getFloElementDest() ) { $this->wp->removeRouteFromTo($flowBefore->getFloElementOrigin(), $flowBefore->getFloElementDest()); } //Verify case: Event1(message) -> Event2(message) -----Update-to----> Event(message) -> Event(message) if ($flowBefore->getFloType() == "MESSAGE" && $flowBefore->getFloElementOriginType() == "bpmnEvent" && $flowBefore->getFloElementDestType() == "bpmnEvent" ) { //Delete Message-Event-Relation $messageEventRelation = new \ProcessMaker\BusinessModel\MessageEventRelation(); $messageEventRelation->deleteWhere(array( \MessageEventRelationPeer::PRJ_UID => $flowBefore->getPrjUid(), \MessageEventRelationPeer::EVN_UID_THROW => $flowBefore->getFloElementOrigin(), \MessageEventRelationPeer::EVN_UID_CATCH => $flowBefore->getFloElementDest() )); //Create Message-Event-Relation if ($flowCurrent->getFloType() == "MESSAGE" && $flowCurrent->getFloElementOriginType() == "bpmnEvent" && $flowCurrent->getFloElementDestType() == "bpmnEvent" ) { $messageEventRelationUid = $this->createMessageEventRelationByBpmnFlow($flowCurrent); } } }