Creare corse consecutive

Questo documento descrive come creare una corsa consecutiva, impostare i campi corretti e assegnarla a un veicolo per l'esecuzione. Si presume che tu abbia configurato Fleet Engine, creato i veicoli, un'app per i conducenti funzionante e, facoltativamente, un'app per utenti finali. Dovresti anche avere familiarità con i vari scenari di percorso disponibili per i percorsi on demand. Per questo, consulta le seguenti guide correlate:

Nozioni di base sulla creazione di un viaggio

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: solo gRPC

Campi relativi ai percorsi

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, consecutive o in condivisione. Puoi fornire i campi facoltativi quando crei il viaggio oppure puoi impostarli in un secondo momento quando aggiorni il viaggio.

Campi della corsa
Nome Obbligatorio? Descrizione
parent Sì Una stringa che include l'ID progetto. Questo ID deve essere lo stesso utilizzato nell'intera integrazione di Fleet Engine, con gli stessi ruoli del service account.
trip_id Sì Una stringa creata da te che identifica in modo univoco questo viaggio. Gli ID corsa presentano alcune limitazioni, come indicato nel riferimento.
trip_type Sì Imposta TripType sui seguenti valori per il tipo di viaggio che stai creando:
  • Singola destinazione: imposta su SHARED o EXCLUSIVE.
  • Più destinazioni: impostato su EXCLUSIVE.
  • Back-to-back: impostato su EXCLUSIVE.
  • Pooling condiviso: impostato su SHARED.
pickup_point Sì Il punto di partenza del viaggio.
Destinazioni intermedie Sì

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

vehicle_waypoints Sì

Solo per corse con car pooling: questo campo supporta l'interfoliazione dei waypoint di più corse. Contiene tutti i waypoint rimanenti per il veicolo assegnato, nonché i waypoint di partenza e arrivo 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. Il servizio non restituisce queste informazioni nelle chiamate GetTrip per motivi di privacy.

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 alla corsa.

Esempio: creare un viaggio consecutivo

Di seguito viene illustrato come creare un viaggio consecutivo e assegnarlo a un veicolo. In questo scenario, la creazione del viaggio è la stessa di un viaggio con una sola destinazione. 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 le corse consecutive

Quando assegni un veicolo per una corsa consecutiva, assegni una corsa a un veicolo anche se ne ha già una assegnata.

Per consentire a Fleet Engine di calcolare gli ETA del viaggio e monitorarlo, ogni viaggio creato in Fleet Engine deve essere assegnato a un veicolo. Puoi farlo durante la creazione del viaggio o in un secondo momento, quando lo aggiorni.

Dopo aver assegnato il viaggio a un veicolo, Fleet Engine aggiunge automaticamente i waypoint associati ai viaggi consecutivi al campo dei waypoint del veicolo. Il campo remainingWaypoints di una corsa contiene un elenco di tutti i waypoint, inclusi quelli di altre corse che verranno visitati prima della fine della corsa.

Ad esempio, considera due corse consecutive: Corsa A e Corsa B. Il veicolo ha prelevato il consumatore per la corsa A e, mentre è in viaggio verso la destinazione di arrivo, l'autista riceve una richiesta di prelievo di un altro consumatore per la corsa successiva, la corsa B.

  • La chiamata getVehicle() restituisce remainingWaypoints che contengono:
    A Ritiro → B Consegna → B Ritiro.
  • getTrip() o il callback onTripRemainingWaypointsUpdated per Trip A restituisce remainingWaypoints che contengono:
    Un punto di riconsegna.
  • getTrip() o il callback onTripRemainingWaypointsUpdated per Corsa B restituisce remainingWaypoints che contengono:
    A Destinazione → B Partenza → e B Destinazione.

Passaggi successivi