créer des trajets consécutifs

Ce document explique comment créer un trajet consécutif, définir les champs appropriés et l'attribuer à un véhicule pour l'effectuer. Il suppose que vous avez configuré Fleet Engine, créé des véhicules, que vous disposez d'une application chauffeur fonctionnelle et, éventuellement, d'une application consommateur. Vous devez également connaître les différents scénarios de trajet disponibles pour les trajets à la demande. Pour en savoir plus, consultez les guides associés suivants :

Principes de base de la création de trajets

Cette section décrit les détails de la requête nécessaires pour créer un trajet dans Fleet Engine. Vous envoyez une requête de création à l'aide de gRPC ou de REST.

  • Méthode CreateTrip() : gRPC ou REST
  • Message CreateTripRequest : gRPC uniquement

Champs de trajet

Utilisez les champs suivants pour créer un trajet dans Fleet Engine. Vous pouvez utiliser différents champs pour les différents types de trajets : à destination unique ou multiple, consécutifs ou partagés. Vous pouvez fournir les champs facultatifs lorsque vous créez le trajet ou les définir ultérieurement lorsque vous le mettez à jour.

Champs de trajet
Nom Obligatoire ? Description
parent Oui Chaîne incluant l'ID du projet. Cet ID doit être le même que celui utilisé dans l'ensemble de votre intégration Fleet Engine, avec les mêmes rôles de compte de service.
trip_id Oui Chaîne que vous créez et qui identifie de manière unique ce trajet. Les ID de trajet sont soumis à certaines restrictions, comme indiqué dans la documentation de référence.
trip_type Oui Définissez TripType sur les valeurs suivantes pour le type de trajet que vous créez :
  • Destination unique : définissez sur SHARED ou EXCLUSIVE.
  • Destinations multiples : définissez sur EXCLUSIVE.
  • Consécutifs : définissez sur EXCLUSIVE.
  • Partagés : définissez sur SHARED.
pickup_point Oui Point de départ du trajet.
Destinations intermédiaires Oui

Trajets à destinations multiples uniquement : liste des destinations intermédiaires que le chauffeur visite entre le point de prise en charge et le point de dépose. Comme pour dropoff_point, ce champ peut également être défini ultérieurement en appelant UpdateTrip, mais un trajet à destinations multiples contient par définition des destinations intermédiaires.

vehicle_waypoints Oui

Trajets partagés uniquement : ce champ permet d'entrelacer les points de cheminement de plusieurs trajets. Il contient tous les points de cheminement restants pour le véhicule attribué, ainsi que les points de cheminement de prise en charge et de dépose pour ce trajet. Vous pouvez définir ce champ en appelant CreateTrip ou UpdateTrip. Vous pouvez également mettre à jour les points de cheminement du véhicule via le champ waypoints en appelant UpdateVehicle. Le service ne renvoie pas ces informations lors des appels GetTrip pour des raisons de confidentialité.

number_of_passengers Non Nombre de passagers du trajet.
dropoff_point Non Destination du trajet.
vehicle_id Non ID du véhicule attribué au trajet.

Exemple : Créer un trajet consécutif

L'exemple suivant montre comment créer un trajet consécutif et l'attribuer à un véhicule. Dans ce scénario, la création du trajet est la même que pour un trajet à destination unique. Ce n'est que plus tard que vous créez un autre trajet et que vous l'attribuez à un véhicule avec un trajet déjà actif.

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

Mettre à jour les trajets consécutifs

Lorsque vous attribuez un véhicule pour un trajet consécutif, vous attribuez un trajet à un véhicule même s'il en a déjà un.

Tout trajet créé dans Fleet Engine doit être attribué à un véhicule pour que Fleet Engine puisse calculer les ETA du trajet et le suivre. Vous pouvez le faire lors de la création du trajet ou ultérieurement lorsque vous le mettez à jour.

Une fois que vous avez attribué le trajet à un véhicule, Fleet Engine ajoute automatiquement les points de cheminement associés aux trajets consécutifs au champ des points de cheminement du véhicule. Le champ remainingWaypoints d'un trajet contient la liste de tous les points de cheminement, y compris ceux d'autres trajets qui seront visités avant la dépose du trajet.

Prenons l'exemple de deux trajets consécutifs : le trajet A et le trajet B. Le véhicule a pris en charge le consommateur pour le trajet A, et pendant qu'il se rend au point de dépose, le chauffeur reçoit une demande de prise en charge d'un autre consommateur pour le trajet suivant, le trajet B.

  • L'appel de getVehicle() renvoie remainingWaypoints contenant :
    A DéposeB Prise en chargeB Dépose.
  • Soit getTrip() ou le onTripRemainingWaypointsUpdated rappel pour le trajet A renvoie remainingWaypoints qui contiennent :
    Une dépose.
  • getTrip() ou le onTripRemainingWaypointsUpdated rappel pour le trajet B renvoie remainingWaypoints qui contiennent :
    A DéposeB Prise en charge → et B Dépose.

Étape suivante