public function routeToBpmnGateway($objectBpmnType, $objectUid, $objectBouX, $objectBouY, $objectBouWidth, $objectBouHeight, $gatewayName, $gatewayType, $gatewayDirection) { try { $gatewayBouWidth = 45; $gatewayBouHeight = $gatewayBouWidth; $gatewayBouWidth2 = (int) ($gatewayBouWidth / 2); $gatewayBouHeight2 = (int) ($gatewayBouHeight / 2); // $objectBouWidth2 = (int) ($objectBouWidth / 2); $objectBouHeight2 = (int) ($objectBouHeight / 2); //Gateway $gatewayBouX = $objectBouX + $objectBouWidth2 - $gatewayBouWidth2; $gatewayBouY = $gatewayDirection == "DIVERGING" ? $objectBouY + $objectBouHeight + $gatewayBouHeight2 : $objectBouY - $gatewayBouHeight - $gatewayBouHeight2; $arrayData = array("GAT_NAME" => $gatewayName, "GAT_TYPE" => $gatewayType, "GAT_DIRECTION" => $gatewayDirection, "GAT_DEFAULT_FLOW" => "0", "BOU_X" => $gatewayBouX, "BOU_Y" => $gatewayBouY, "BOU_WIDTH" => $gatewayBouWidth, "BOU_HEIGHT" => $gatewayBouHeight); $gatewayUid = $this->bp->addGateway($arrayData); //Flow if ($gatewayDirection == "DIVERGING") { $flowX1 = $objectBouX + $objectBouWidth2; $flowY1 = $objectBouY + $objectBouHeight; $flowX2 = $flowX1; $flowY2 = $gatewayBouY; } else { $flowX1 = $objectBouX + $objectBouWidth2; $flowY1 = $gatewayBouY + $gatewayBouHeight; $flowX2 = $flowX1; $flowY2 = $objectBouY; } $arrayData = array("FLO_TYPE" => "SEQUENCE", "FLO_ELEMENT_ORIGIN" => $gatewayDirection == "DIVERGING" ? $objectUid : $gatewayUid, "FLO_ELEMENT_ORIGIN_TYPE" => $gatewayDirection == "DIVERGING" ? $objectBpmnType : "bpmnGateway", "FLO_ELEMENT_DEST" => $gatewayDirection == "DIVERGING" ? $gatewayUid : $objectUid, "FLO_ELEMENT_DEST_TYPE" => $gatewayDirection == "DIVERGING" ? "bpmnGateway" : $objectBpmnType, "FLO_IS_INMEDIATE" => 1, "FLO_CONDITION" => "", "FLO_X1" => $flowX1, "FLO_Y1" => $flowY1, "FLO_X2" => $flowX2, "FLO_Y2" => $flowY2, "FLO_STATE" => json_encode(array(array("x" => $flowX1, "y" => $flowY1), array("x" => $flowX1, "y" => $flowY2 - 5), array("x" => $flowX2, "y" => $flowY2 - 5), array("x" => $flowX2, "y" => $flowY2)))); $flowUid = $this->bp->addFlow($arrayData); //Return return $gatewayUid; } catch (\Exception $e) { throw $e; } }