Creare corse consecutive

Questo documento descrive come creare un viaggio consecutivo, impostare i campi corretti e assegnarlo a un veicolo da soddisfare. Si presume che tu abbia configurato Fleet Engine, creato veicoli, disponga di un'app per i conducenti funzionante e, facoltativamente, di un'app per i consumatori. Inoltre, devi conoscere i vari scenari di viaggio disponibili per i viaggi on demand. Consulta le seguenti guide correlate per approfondire:

Nozioni di base sulla creazione di viaggi

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

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

Campi relativi ai viaggi

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

Campi relativi alla corsa
Nome Obbligatorio? Descrizione
parent Una stringa che include l'ID progetto. Questo ID deve essere lo stesso 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 hanno determinate 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: impostato su EXCLUSIVE.
  • Back-to-back: impostato su EXCLUSIVE.
  • Raggruppamento condiviso: impostato su SHARED.
pickup_point Il punto di partenza del viaggio.
Destinazioni intermedie

Solo per i viaggi con più destinazioni: l'elenco delle destinazioni intermedie che il conducente visita tra il ritiro e la consegna. 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 car pooling: questo campo supporta l'interlacciamento dei waypoint di più viaggi. Contiene tutti i waypoint rimanenti per il veicolo assegnato, nonché i waypoint di ritiro 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. Il servizio non restituisce queste informazioni sulle 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 al viaggio.

Esempio: crea un viaggio consecutivo

Di seguito viene mostrato 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 puoi creare un altro viaggio e assegnarlo 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 consecutivi

Quando assegni un veicolo per una corsa consecutiva, assegni una corsa a un veicolo anche se ne è già stato assegnato uno.

Per poter calcolare le stime di arrivo e monitorare i viaggi, ogni viaggio creato in Fleet Engine deve essere assegnato a un veicolo. Puoi farlo durante la creazione della corsa o in un secondo momento quando aggiorni la corsa.

Dopo aver assegnato il viaggio a un veicolo, Fleet Engine aggiunge automaticamente i waypoint associati ai viaggi consecutivi 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, prendiamo in considerazione due viaggi consecutivi: Viaggio A e Viaggio B. Il veicolo ha caricato il consumatore per il viaggio A e, mentre si dirige verso la stazione di ricarica, il conducente riceve una richiesta di ritiro di un altro consumatore per il viaggio B successivo.

  • La chiamata a getVehicle() restituisce remainingWaypoints che contiene:
    A RicaricaB RicaricaB Ricarica.
  • getTrip() o il callback onTripRemainingWaypointsUpdated per Viaggio A restituisce remainingWaypoints contenente:
    Una consegna.
  • getTrip() o il callback onTripRemainingWaypointsUpdated per Viaggio B restituisce remainingWaypoints contenenti:
    A RitrovamentoB Ritiro → e B Ritrovamento.

Passaggi successivi