Creare corse consecutive

Questo documento descrive come creare una corsa back-to-back, impostare i campi corretti e assegnarla a un veicolo da completare. Si presume che tu abbia configurato Fleet Engine, che tu abbia creato veicoli, abbia un'app per conducenti funzionante e, facoltativamente, un'app consumer. Dovresti anche conoscere i vari scenari di corse disponibili per le corse on demand. Consulta le seguenti guide correlate:

Nozioni di base sulla creazione di viaggi

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

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

Campi relativi alla corsa

Utilizza i seguenti campi per creare un viaggio in Fleet Engine. Puoi utilizzare campi diversi per i diversi tipi di corse: corse con una o più destinazioni, corse consecutive o di pooling condiviso. Puoi fornire i campi facoltativi quando crei la corsa oppure puoi impostarli in un secondo momento quando aggiorni la corsa.

Campi relativi ai viaggi
Nome Obbligatorio? Descrizione
padre Una stringa che include l'ID progetto. Questo ID deve essere lo stesso ID utilizzato nell'intera integrazione di Fleet Engine, con gli stessi ruoli dell'account di servizio.
trip_id Una stringa creata da te che identifica in modo univoco questo viaggio. Gli ID viaggio sono soggetti a determinate 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: impostato su EXCLUSIVE.
  • Back-to-back: impostato su EXCLUSIVE.
  • Aggregazione condivisa: impostato su SHARED.
pickup_point Il punto di partenza del viaggio.
Destinazioni intermedie

Solo viaggi con più destinazioni: l'elenco di destinazioni intermedie visitate dal conducente tra il prelievo e la partenza. Come per dropoff_point, questo campo può anche essere impostato in un secondo momento chiamando UpdateTrip, ma una corsa con più destinazioni per definizione contiene destinazioni intermedie.

vehicle_waypoints

Solo viaggi con car pooling: questo campo supporta l'interlacciamento dei waypoint di più viaggi. Contiene tutte le tappe rimanenti per il veicolo assegnato, nonché le tappe di partenza e arrivo per questa corsa. Puoi impostare questo campo richiamando 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 sulle chiamate GetTrip per motivi di privacy.

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

Esempio: creare un viaggio in sequenza

Di seguito viene mostrato come creare un viaggio consecutivo e assegnarlo a un veicolo. In questo scenario, la creazione di un viaggio è la stessa di un viaggio con una sola destinazione. Solo in un secondo momento puoi creare un'altra corsa e assegnarla a un veicolo con una corsa già attiva.

// 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 consecutivi

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

Ogni corsa creata in Fleet Engine deve essere assegnata a un veicolo affinché Fleet Engine possa calcolare l'orario di arrivo stimato delle corse e monitorarlo. Puoi farlo durante la creazione della corsa o in un secondo momento quando aggiorni la corsa.

Dopo aver assegnato la corsa a un veicolo, Fleet Engine aggiunge automaticamente i waypoint associati alle corse consecutive al campo 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 del drop-off del viaggio.

Ad esempio, considera due corse consecutive: Trip A e Trip B. Il veicolo ha prelevato il cliente per la corsa A e, mentre si dirige verso il punto di consegna, il conducente riceve una richiesta di ritiro di un altro consumatore per la corsa successiva, la corsa B.

  • La chiamata a getVehicle() restituisce remainingWaypoints che contiene:
    A RicaricaB RicaricaB Ricarica.
  • getTrip() o il callback onTripRemainingWaypointsUpdated per Trip A restituisce remainingWaypoints che contiene:
    A Drop-off.
  • getTrip() o il callback onTripRemainingWaypointsUpdated per Trip B restituisce remainingWaypoints che contiene:
    A ConsegnaB Ritiro → e B Consegna.

Passaggi successivi