В этом документе описывается, как создать обратный рейс, заполнить необходимые поля и назначить его транспортному средству для выполнения. Предполагается, что вы настроили Fleet Engine, создали транспортные средства, имеете работающее приложение для водителя и, при необходимости, приложение для клиента. Вам также необходимо ознакомиться с различными сценариями поездок по запросу. Подробнее см. в следующих руководствах:
- Настройка Fleet Engine
- Создать автомобиль
- Сценарии поездок в обзоре поездок по запросу
Основы создания поездок
В этом разделе описываются данные запроса, необходимые для создания рейса в Fleet Engine. Запрос на создание отправляется с использованием gRPC и REST.
Поля поездок
Используйте следующие поля для создания рейса в Fleet Engine. Вы можете использовать разные поля для разных типов рейсов: одно- или многоцелевых, обратных или совместных. Необязательные поля можно указать при создании рейса или настроить позже, при его обновлении.
| Имя | Необходимый? | Описание | 
|---|---|---|
| родитель | Да | Строка, включающая идентификатор проекта. Этот идентификатор должен совпадать с идентификатором, используемым во всей вашей интеграции Fleet Engine, с теми же ролями учётной записи службы. | 
| trip_id | Да | Строка, которую вы создаёте, чтобы уникально идентифицировать эту поездку. Идентификаторы поездок имеют определённые ограничения, как указано в справочнике. | 
| тип_поездки | Да | Задайте для параметра TripType следующие значения для создаваемого типа поездки: 
 | 
| пункт_выдачи | Да | Место отправления поездки. | 
| Промежуточные пункты назначения | Да |  Только для поездок с несколькими пунктами назначения : список промежуточных пунктов назначения, которые водитель посещает между пунктом посадки и пунктом высадки. Как и в случае с  | 
| точки_пути_транспортного_средства | Да |  Только для поездок с общим пулом : это поле поддерживает чередование путевых точек из нескольких поездок. Оно содержит все оставшиеся путевые точки для назначенного транспортного средства, а также путевые точки посадки и высадки для этой поездки. Вы можете настроить это поле, вызвав  | 
| количество_пассажиров | Нет | Количество пассажиров в поездке. | 
| точка_высадки | Нет | Цель поездки. | 
| идентификатор_транспортного_средства | Нет | Идентификатор транспортного средства, назначенного для поездки. | 
Пример: создать обратную поездку
Ниже показано, как создать обратный рейс и назначить его транспортному средству. В этом случае создание рейса происходит так же, как и для поездки с одним пунктом назначения. Только позже вы создаёте ещё один рейс и назначаете его транспортному средству с уже активным рейсом.
// 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;
}
Обновить данные о поездках подряд
Назначая транспортное средство для поездки в обратном направлении, вы назначаете поездку транспортному средству, даже если поездка ему уже была назначена.
Любая поездка, созданная в Fleet Engine, должна быть назначена транспортному средству, чтобы Fleet Engine мог рассчитать ожидаемое время прибытия и отслеживать её. Это можно сделать как при создании поездки, так и позже, при её обновлении.
 После назначения поездки транспортному средству Fleet Engine автоматически добавляет путевые точки, связанные с обратными поездками, в поле «Путевые точки» транспортного средства. Поле « remainingWaypoints путевые точки» для поездки содержит список всех путевых точек, включая точки из других поездок, которые будут посещены до окончания поездки.
Например, рассмотрим две поездки подряд: поездка A и поездка B. Транспортное средство забрало пассажира для поездки A , и по пути к месту высадки водитель получает запрос на подбор другого пассажира для следующей поездки, поездки B.
-  Вызов getVehicle()возвращаетremainingWaypoints, которые содержат:
 A Место высадки → B Место высадки → B Место высадки .
-  Либо getTrip(), либо обратный вызовonTripRemainingWaypointsUpdatedдля Trip A возвращаетremainingWaypoints, которые содержат:
 Высадка .
-  Либо getTrip(), либо обратный вызовonTripRemainingWaypointsUpdatedдля Trip B возвращаетremainingWaypoints, которые содержат:
 A Место высадки → B Место забора → и B Место высадки .