public function addRouteSecJoin($taskUid, $nextTaskUid) { try { //Route $result = parent::addRoute($taskUid, $nextTaskUid, "SEC-JOIN"); //BPMN $arrayTaskData = $this->getTask($taskUid); $activityUid = $arrayTaskData["TAS_UID"]; $activityBouX = (int) $arrayTaskData["TAS_POSX"]; $activityBouY = (int) $arrayTaskData["TAS_POSY"]; $activityBouWidth = (int) $arrayTaskData["TAS_WIDTH"]; $activityBouHeight = (int) $arrayTaskData["TAS_HEIGHT"]; $arrayTaskData = $this->getTask($nextTaskUid); $nextActivityUid = $arrayTaskData["TAS_UID"]; $nextActivityBouX = (int) $arrayTaskData["TAS_POSX"]; $nextActivityBouY = (int) $arrayTaskData["TAS_POSY"]; $nextActivityBouWidth = (int) $arrayTaskData["TAS_WIDTH"]; $nextActivityBouHeight = (int) $arrayTaskData["TAS_HEIGHT"]; $result = $this->bp->getGatewayByDirectionActivityAndFlow("CONVERGING", $nextActivityUid); if (!is_array($result)) { $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\BpmnFlowPeer::FLO_ELEMENT_ORIGIN . " AS GAT_UID"); $criteria->add(\BpmnFlowPeer::PRJ_UID, $this->bp->getUid(), \Criteria::EQUAL); $criteria->add(\BpmnFlowPeer::FLO_TYPE, "SEQUENCE", \Criteria::EQUAL); $criteria->add(\BpmnFlowPeer::FLO_ELEMENT_ORIGIN_TYPE, "bpmnGateway", \Criteria::EQUAL); $criteria->add(\BpmnFlowPeer::FLO_ELEMENT_DEST, $activityUid, \Criteria::EQUAL); $criteria->add(\BpmnFlowPeer::FLO_ELEMENT_DEST_TYPE, "bpmnActivity", \Criteria::EQUAL); $rsCriteria = \BpmnFlowPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $gatewayParentUid = ""; if ($rsCriteria->next()) { $row = $rsCriteria->getRow(); $gatewayParentUid = $row["GAT_UID"]; } else { throw new \Exception(\G::LoadTranslation("ID_ROUTE_PARENT_DOES_NOT_EXIST_FOR_ROUTE_SECJOIN")); } $arrayGatewayData = $this->bp->getGateway2($gatewayParentUid); $gatewayParentType = $arrayGatewayData["GAT_TYPE"]; $gatewayUid = $this->routeToBpmnGateway("bpmnActivity", $nextActivityUid, $nextActivityBouX, $nextActivityBouY, $nextActivityBouWidth, $nextActivityBouHeight, "", $gatewayParentType, "CONVERGING"); $arrayGatewayData = $this->bp->getGateway2($gatewayUid); } else { $arrayGatewayData = $result; } $gatewayUid = $arrayGatewayData["GAT_UID"]; $gatewayType = $arrayGatewayData["GAT_TYPE"]; $gatewayBouX = $arrayGatewayData["BOU_X"]; $gatewayBouY = $arrayGatewayData["BOU_Y"]; $gatewayBouWidth = $arrayGatewayData["BOU_WIDTH"]; $gatewayBouHeight = $arrayGatewayData["BOU_HEIGHT"]; $flowUid = $this->routeToBpmnFlow("bpmnActivity", $activityUid, $activityBouX, $activityBouY, $activityBouWidth, $activityBouHeight, "bpmnGateway", $gatewayUid, $gatewayBouX, $gatewayBouY, $gatewayBouWidth, $gatewayBouHeight); //Return return $result; } catch (\Exception $e) { $this->removeRouteFromTo($taskUid, $nextTaskUid); throw $e; } }