/** * Throw Message-Events for the Case * * @param string $elementOriginUid Unique id of Element Origin (unique id of Task) * @param string $elementDestUid Unique id of Element Dest (unique id of Task) * @param array $arrayApplicationData Case data * * return void */ public function throwMessageEventBetweenElementOriginAndElementDest($elementOriginUid, $elementDestUid, array $arrayApplicationData) { try { //Verify if the Project is BPMN $bpmn = new \ProcessMaker\Project\Bpmn(); if (!$bpmn->exists($arrayApplicationData["PRO_UID"])) { return; } //Element origin and dest $elementTaskRelation = new \ProcessMaker\BusinessModel\ElementTaskRelation(); $arrayElement = array( "elementOrigin" => array("uid" => $elementOriginUid, "type" => "bpmnActivity"), "elementDest" => array("uid" => $elementDestUid, "type" => "bpmnActivity") ); foreach ($arrayElement as $key => $value) { $arrayElementTaskRelationData = $elementTaskRelation->getElementTaskRelationWhere( array( \ElementTaskRelationPeer::PRJ_UID => $arrayApplicationData["PRO_UID"], \ElementTaskRelationPeer::ELEMENT_TYPE => "bpmnEvent", \ElementTaskRelationPeer::TAS_UID => $arrayElement[$key]["uid"] ), true ); if (!is_null($arrayElementTaskRelationData)) { $arrayElement[$key]["uid"] = $arrayElementTaskRelationData["ELEMENT_UID"]; $arrayElement[$key]["type"] = "bpmnEvent"; } } $elementOriginUid = $arrayElement["elementOrigin"]["uid"]; $elementOriginType = $arrayElement["elementOrigin"]["type"]; $elementDestUid = $arrayElement["elementDest"]["uid"]; $elementDestType = $arrayElement["elementDest"]["type"]; //Get Message-Events of throw type $arrayEvent = $bpmn->getMessageEventsOfThrowTypeBetweenElementOriginAndElementDest( $elementOriginUid, $elementOriginType, $elementDestUid, $elementDestType ); //Throw Message-Events $messageApplication = new \ProcessMaker\BusinessModel\MessageApplication(); foreach ($arrayEvent as $value) { //Message-Application throw $result = $messageApplication->create($arrayApplicationData["APP_UID"], $arrayApplicationData["PRO_UID"], $value[0], $arrayApplicationData); } } catch (\Exception $e) { throw $e; } }
/** * Throw Events for the Case * * @param string $eventUid Unique id of Event * @param array $appFields Case data * * @return void */ private function throwEventsElemntOriginToElementDest($eventUid, $appFields) { try { //Verify if the Project is BPMN $bpmn = new \ProcessMaker\Project\Bpmn(); if (!$bpmn->exists($appFields["PRO_UID"])) { return; } //Throw Events $messageApplication = new \ProcessMaker\BusinessModel\MessageApplication(); $emailEvent = new \ProcessMaker\BusinessModel\EmailEvent(); $event = \BpmnEventPeer::retrieveByPK($eventUid); if (!is_null($event)) { if (preg_match("/^(?:END|INTERMEDIATE)\$/", $event->getEvnType()) && $event->getEvnMarker() == "MESSAGETHROW") { //Message-Application throw $result = $messageApplication->create($appFields["APP_UID"], $appFields["PRO_UID"], $value[0], $appFields); } if (preg_match("/^(?:END|INTERMEDIATE)\$/", $event->getEvnType()) && $event->getEvnMarker() == "EMAIL") { //Email-Event throw $result = $emailEvent->sendEmail($appFields["APP_UID"], $appFields["PRO_UID"], $eventUid, $appFields); } } } catch (Exception $e) { throw $e; } }