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, che tu abbia un'app per conducenti funzionante e, facoltativamente, un'app per consumatori. Dovresti anche conoscere i vari scenari di viaggio disponibili per i viaggi on demand. 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 di 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 di viaggio
Nome Obbligatorio? Descrizione
parent Una stringa che include l'ID progetto. Questo ID deve essere lo stesso ID utilizzato in tutta l'integrazione di Fleet Engine, con gli stessi ruoli del service account.
trip_id Una stringa che crei che identifica 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:
  • Destinazione singola: 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 il conducente visita tra il punto di prelievo e 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, 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 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: il viaggio A e il viaggio B. Il veicolo ha prelevato il consumatore per il viaggio A e, mentre è in viaggio verso il luogo di riconsegna, il conducente 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