Creare corse consecutive

Questo documento descrive come creare un viaggio back-to-back, impostare i campi corretti e assegnarlo a un veicolo per l'esecuzione. Si presuppone che tu abbia configurato Fleet Engine, creato veicoli, un'app per autisti funzionante e, facoltativamente, un'app per i consumatori. Dovresti anche conoscere i vari scenari di viaggio disponibili per i viaggi on demand. Per farlo, consulta le seguenti guide correlate:

Nozioni di base sulla creazione di viaggi

Questa sezione descrive i dettagli della richiesta necessari per creare un viaggio in Fleet Engine. Puoi inviare una richiesta di creazione utilizzando gRPC e REST.

  • Metodo CreateTrip(): gRPC o REST
  • Messaggio CreateTripRequest: gRPC solo

Campi del viaggio

Utilizza i seguenti campi per creare un viaggio in Fleet Engine. Puoi utilizzare campi diversi per i diversi tipi di viaggi: a una o più destinazioni, back-to-back o di pooling condiviso. Puoi fornire i campi facoltativi quando crei il viaggio oppure puoi impostarli in un secondo momento quando aggiorni il viaggio.

Campi del viaggio
Nome Obbligatorio? Descrizione
parent Una stringa che include l'ID progetto. Questo ID deve essere lo stesso utilizzato in tutta l'integrazione di Fleet Engine, con gli stessi ruoli dell'account di servizio.
trip_id Una stringa che crei per identificare in modo univoco questo viaggio. Gli ID viaggio hanno alcune limitazioni, come indicato nel riferimento.
trip_type Imposta TripType sui seguenti valori per il tipo di viaggio che stai creando:
  • Singola destinazione: imposta su SHARED o EXCLUSIVE.
  • Più destinazioni: imposta su EXCLUSIVE.
  • Back-to-back: imposta su EXCLUSIVE.
  • Pooling condiviso: imposta su SHARED.
pickup_point Il punto di origine del viaggio.
Destinazioni intermedie

Solo viaggi con più destinazioni: l'elenco delle destinazioni intermedie che l'autista visita tra il punto di prelievo e quello di riconsegna. Come per dropoff_point, questo campo può essere impostato anche in un secondo momento chiamando UpdateTrip, ma un viaggio con più destinazioni per definizione contiene destinazioni intermedie.

vehicle_waypoints

Solo viaggi con pooling condiviso: questo campo supporta l'interleaving dei waypoint di più viaggi. Contiene tutti i waypoint rimanenti per il veicolo assegnato, nonché i waypoint di prelievo e riconsegna per questo viaggio. Puoi impostare questo campo chiamando CreateTrip o UpdateTrip. Puoi anche aggiornare i waypoint del veicolo tramite il campo waypoints con una chiamata a UpdateVehicle. Per motivi di privacy, il servizio non restituisce queste informazioni nelle chiamate GetTrip

number_of_passengers No Il numero di passeggeri del viaggio.
dropoff_point No La destinazione del viaggio.
vehicle_id No L'ID del veicolo assegnato al viaggio.

Esempio: creare un viaggio back-to-back

Di seguito viene illustrato come creare un viaggio back-to-back e assegnarlo a un veicolo. In questo scenario, la creazione del viaggio è la stessa di un viaggio a destinazione singola. Solo in un secondo momento crei un altro viaggio e lo assegni a un veicolo con un viaggio già attivo.

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

Aggiornare i viaggi back-to-back

Quando assegni un veicolo per un viaggio back-to-back, assegni un viaggio a un veicolo anche se ne è già stato assegnato uno.

Per consentire a Fleet Engine di calcolare gli ETA dei viaggi e monitorarli, è necessario assegnare un veicolo a ogni viaggio creato in Fleet Engine. Puoi farlo durante la creazione del viaggio o in un secondo momento quando aggiorni il viaggio.

Dopo aver assegnato il viaggio a un veicolo, Fleet Engine aggiunge automaticamente i waypoint associati ai viaggi back-to-back al campo dei waypoint del veicolo. Il campo remainingWaypoints di un viaggio contiene un elenco di tutti i waypoint, inclusi quelli di altri viaggi che verranno visitati prima della riconsegna del viaggio.

Ad esempio, considera due viaggi back-to-back: Viaggio A e Viaggio B. Il veicolo ha prelevato il consumatore per il viaggio A e, mentre è in viaggio verso il luogo di riconsegna, l'autista riceve una richiesta di prelievo di un altro consumatore per il viaggio successivo, il viaggio B.

  • La chiamata a getVehicle() restituisce remainingWaypoints che contengono:
    Riconsegna APrelievo BRiconsegna B.
  • La chiamata a getTrip() o il onTripRemainingWaypointsUpdated callback per il viaggio A restituisce remainingWaypoints che contengono:
    Riconsegna A.
  • La chiamata a getTrip() o il onTripRemainingWaypointsUpdated callback per il viaggio B restituisce remainingWaypoints che contengono:
    Riconsegna APrelievo B → e Riconsegna B.

Passaggi successivi