Reisen mit mehreren aufeinanderfolgenden Reisen erstellen

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

Grundlagen zur Erstellung von Reisen

In diesem Abschnitt werden die Anfragedetails beschrieben, die zum Erstellen einer Fahrt in der Fleet Engine erforderlich sind. Sie senden eine Anfrage zur Erstellung mit gRPC und REST.

  • CreateTrip()-Methode: gRPC oder REST
  • CreateTripRequest message: Nur gRPC

Fahrtfelder

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

Felder für Fahrten
Name Erforderlich? Beschreibung
parent Ja Ein String, der die Projekt-ID enthält. Diese ID muss mit der ID übereinstimmen, die für die gesamte Fleet Engine-Integration verwendet wird, und dieselben Dienstkontorollen haben.
trip_id Ja Ein von Ihnen erstellter String, der diese Fahrt eindeutig identifiziert. Für Fahrt-IDs gelten bestimmte Einschränkungen, die in der Referenz angegeben sind.
trip_type Ja Legen Sie für den zu erstellenden Fahrttyp die folgenden Werte für TripType fest:
  • Einzelnes Ziel: Legen Sie SHARED oder EXCLUSIVE fest.
  • Mehrere Ziele: Legen Sie EXCLUSIVE fest.
  • Rücken an Rücken: Auf EXCLUSIVE setzen
  • Shared Pooling: Legen Sie SHARED fest.
pickup_point Ja Der Startpunkt der Fahrt.
Ziele für Fortgeschrittene Ja

Nur Fahrten mit mehreren Zielen: Die Liste der Zwischenziele, die der Fahrer zwischen Abhol- und Zielort besucht. 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 Mitfahrgelegenheit: In diesem Feld können die Wegpunkte mehrerer Fahrten überlappend angegeben werden. Sie enthält alle verbleibenden Wegpunkte für das zugewiesene Fahrzeug sowie die Start- und Zielorte für diese Fahrt. Sie können dieses Feld durch Aufrufen von CreateTrip oder UpdateTrip festlegen. Sie können Wegpunkte des Fahrzeugs auch über das Feld waypoints mit einem Aufruf von UpdateVehicle aktualisieren. Der Dienst gibt diese Informationen bei GetTrip-Aufrufen aus Datenschutzgründen nicht zurück.

number_of_passengers Nein Die Anzahl der Fahrgäste für die Fahrt.
dropoff_point Nein Das Ziel der Reise.
vehicle_id Nein Die ID des Fahrzeugs, das der Fahrt zugewiesen ist.

Beispiel: eine direkt aufeinanderfolgende Reise erstellen

Im Folgenden wird gezeigt, wie Sie eine Fahrt mit Anschlussfahrt erstellen und einem Fahrzeug zuweisen. In diesem Szenario erfolgt die Erstellung der Fahrt wie bei einer Fahrt mit nur einem Ziel. Erst später erstellen Sie eine weitere Fahrt und weisen sie einem Fahrzeug mit einer bereits aktiven Fahrt zu.

// 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;
}

Hin- und Rückfahrten aktualisieren

Wenn Sie ein Fahrzeug einer direkt aufeinanderfolgenden Fahrt zuweisen, weisen Sie einem Fahrzeug eine Fahrt zu, auch wenn diesem bereits eins zugewiesen wurde.

Jede in Fleet Engine erstellte Fahrt muss einem Fahrzeug zugewiesen sein, damit Fleet Engine die voraussichtlichen Ankunftszeiten für Fahrten berechnen und verfolgen kann. Das ist entweder während der Erstellung oder später beim Aktualisieren der Fahrt möglich.

Nachdem Sie die Fahrt einem Fahrzeug zugewiesen haben, fügt Fleet Engine automatisch die Wegpunkte, die den aufeinanderfolgenden Fahrten zugeordnet sind, dem Wegpunktfeld des Fahrzeugs hinzu. Das Feld remainingWaypoints einer Fahrt enthält eine Liste aller Wegpunkte, einschließlich jener von anderen Fahrten, die vor dem Aussteigen der Fahrt angefahren werden.

Nehmen wir als Beispiel zwei direkt aufeinanderfolgende Fahrten an: Fahrt A und Fahrt B. Das Fahrzeug hat den Nutzer für Fahrt A abgeholt. Auf dem Weg zum Ausstiegsort erhält der Fahrer eine Anfrage, einen anderen Nutzer für die nächste Fahrt (Fahrt B) abzuholen.

  • Der Aufruf von getVehicle() gibt remainingWaypoints zurück, die Folgendes enthalten:
    A Abgabe → B Abholung → B Abgabe.
  • getTrip() oder der Callback onTripRemainingWaypointsUpdated für Fahrt A gibt remainingWaypoints zurück, die Folgendes enthält:
    Einen Ausstieg.
  • Entweder getTrip() oder der onTripRemainingWaypointsUpdated-Callback für Fahrt B gibt remainingWaypoints zurück, die Folgendes enthalten:
    A Abholadresse → B Abholadresse → und B Abholadresse.

Nächste Schritte