Reisen mit mehreren aufeinanderfolgenden Reisen erstellen

In diesem Dokument wird beschrieben, wie Sie eine Back-to-Back-Fahrt erstellen, die richtigen Felder festlegen und sie einem Fahrzeug zur Ausführung zuweisen. Es wird davon ausgegangen, dass Sie Fleet Engine eingerichtet, Fahrzeuge erstellt und eine funktionierende Fahrer-App und optional eine Verbraucher-App haben. Außerdem sollten Sie mit den verschiedenen Szenarien für On-Demand-Fahrten vertraut sein. Weitere Informationen finden Sie in den folgenden zugehörigen Leitfäden:

Grundlagen der Reiseplanung

In diesem Abschnitt werden die für das Erstellen einer Fahrt in Fleet Engine erforderlichen Anfragedetails beschrieben. Sie senden eine Erstellungsanfrage entweder mit gRPC oder REST.

  • CreateTrip()-Methode: gRPC oder REST
  • CreateTripRequest-Nachricht: nur gRPC

Felder für Fahrten

Verwenden Sie die folgenden Felder, um eine Fahrt in Fleet Engine zu erstellen. Sie können für die verschiedenen Arten von Fahrten unterschiedliche Felder verwenden: Fahrten mit einem oder mehreren Zielen, Fahrten mit aufeinanderfolgenden Zielen oder Fahrten mit gemeinsamem Pooling. Sie können die optionalen Felder beim Erstellen der Fahrt angeben oder sie später beim Aktualisieren der Fahrt festlegen.

Fahrtfelder
Name Erforderlich? Description
parent Ja Ein String, der die Projekt-ID enthält. Diese ID muss in Ihrer gesamten Fleet Engine-Integration mit denselben Dienstkontorollen verwendet werden.
trip_id Ja Ein String, den Sie erstellen und der diese Fahrt eindeutig identifiziert. Für Fahrt-IDs gelten bestimmte Einschränkungen, wie in der Referenz angegeben.
trip_type Ja Legen Sie TripType auf die folgenden Werte für den von Ihnen erstellten Reisetyp fest:
  • Einzelnes Ziel: Legen Sie SHARED oder EXCLUSIVE fest.
  • Mehrere Ziele: Legen Sie EXCLUSIVE fest.
  • Back-to-back: Legen Sie EXCLUSIVE fest.
  • Gemeinsamer Pool: Legen Sie SHARED fest.
pickup_point Ja Der Ausgangspunkt der Reise.
Zwischenziele Ja

Nur Fahrten mit mehreren Zielen: Die Liste der Zwischenziele, die der Fahrer zwischen Abhol- und Zielort anfährt. Wie bei dropoff_point kann dieses Feld auch später durch Aufrufen von UpdateTrip festgelegt werden. Eine Fahrt mit mehreren Zielen enthält jedoch per Definition Zwischenziele.

vehicle_waypoints Ja

Nur Fahrten mit gemeinsamer Nutzung: In diesem Feld können die Wegpunkte mehrerer Fahrten verschachtelt werden. Sie enthält alle verbleibenden Wegpunkte für das zugewiesene Fahrzeug sowie die Abhol- und Absetzwegpunkte für diese Fahrt. Sie können dieses Feld festlegen, indem Sie CreateTrip oder UpdateTrip aufrufen. Sie können auch Fahrzeug-Wegpunkte über das Feld waypoints mit einem Aufruf von UpdateVehicle aktualisieren. Aus Datenschutzgründen werden diese Informationen bei GetTrip-Anrufen nicht zurückgegeben.

number_of_passengers Nein Die Anzahl der Passagiere auf der Reise.
dropoff_point Nein Das Ziel der Reise.
vehicle_id Nein Die ID des Fahrzeugs, das der Fahrt zugewiesen ist.

Beispiel: eine Direktverbindung erstellen

Im Folgenden wird gezeigt, wie man eine Direktverbindung erstellt und diese einem Fahrzeug zuweist. In diesem Szenario ist die Erstellung von Fahrten dieselbe wie bei Fahrten mit einem Zielort. Erst später erstellen Sie eine weitere Fahrt und ordnen diese einem Fahrzeug zu, für das bereits eine aktive Fahrt geplant ist.

// A vehicle with ID 'my-vehicle' is already created and it is assigned to a trip with ID 'current-trip'.

static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String VEHICLE_ID =" my-vehicle";
static final String TRIP_ID = "back-to-back-trip");

TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);

String parent = "providers/" + PROJECT_ID;

Trip trip = Trip.newBuilder()
    .setTripType(TripType.EXCLUSIVE)
    .setPickupPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.195139).setLongitude(106.820826)))
    .setDropoffPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.1275).setLongitude(106.6537)))
    .setVehicleId(VEHICLE_ID)
    .build();

// Create trip request
CreateTripRequest createTripRequest = CreateTripRequest.newBuilder()
    .setParent(parent)
    .setTripId(TRIP_ID)
    .setTrip(trip)
    .build();

// Error handling.
try {
  // Fleet Engine automatically assigns a 'waypoints' list to the trip containing
  // the vehicle's current trip waypoints.
  Trip createdTrip =
      tripService.createTrip(createTripRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case ALREADY_EXISTS:
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}

Direkt aufeinanderfolgende Fahrten aktualisieren

Wenn Sie ein Fahrzeug für eine Anschlussfahrt zuweisen, weisen Sie einem Fahrzeug eine Fahrt zu, auch wenn ihm bereits eine zugewiesen wurde.

Jede in Fleet Engine erstellte Fahrt muss einem Fahrzeug zugewiesen werden, damit Fleet Engine die voraussichtliche Ankunftszeit berechnen und die Fahrt verfolgen kann. Sie können dies entweder beim Erstellen der Reise oder später beim Aktualisieren der Reise tun.

Nachdem Sie die Fahrt einem Fahrzeug zugewiesen haben, fügt Fleet Engine automatisch die Wegpunkte, die mit den aufeinanderfolgenden Fahrten verknüpft sind, dem Feld „Wegpunkte“ des Fahrzeugs hinzu. Das Feld remainingWaypoints einer Fahrt enthält eine Liste aller Wegpunkte, einschließlich der Wegpunkte anderer Fahrten, die vor dem Zielort der Fahrt angefahren werden.

Angenommen, Sie haben zwei aufeinanderfolgende Fahrten: Fahrt A und Fahrt B. Das Fahrzeug hat den Kunden für Fahrt A abgeholt. Auf dem Weg zum Zielort erhält der Fahrer eine Anfrage, einen anderen Kunden für die nächste Fahrt, Fahrt B, abzuholen.

  • Der Aufruf von getVehicle() gibt remainingWaypoints zurück, das Folgendes enthält:
    A Abgabeort → B Abholort → B Abgabeort.
  • Entweder getTrip() oder der onTripRemainingWaypointsUpdated-Callback für Fahrt A gibt remainingWaypoints zurück, die Folgendes enthalten:
    Ablieferung.
  • Entweder gibt getTrip() oder der onTripRemainingWaypointsUpdated-Callback für Fahrt B remainingWaypoints zurück, die Folgendes enthalten:
    A Abgabeort → B Abholort → und B Abgabeort.

Nächste Schritte