Tworzenie podróży po kolei

Z tego dokumentu dowiesz się, jak utworzyć podróż łączoną, ustawić prawidłowe pola i przypisać ją do pojazdu. Zakładamy, że masz już skonfigurowaną usługę Fleet Engine, utworzone pojazdy, działającą aplikację kierowcy i opcjonalnie aplikację użytkownika. Powinieneś też znać różne scenariusze podróży dostępne w przypadku podróży na żądanie. Więcej informacji znajdziesz w tych powiązanych przewodnikach:

Podstawy tworzenia podróży

W tej sekcji opisujemy szczegóły żądania niezbędne do utworzenia podróży w Fleet Engine. Żądanie utworzenia wysyłasz za pomocą gRPC lub REST.

  • Metoda CreateTrip(): gRPC lub REST
  • Wiadomość CreateTripRequest: gRPC tylko

Pola podróży

Aby utworzyć podróż w Fleet Engine, użyj tych pól. Możesz używać różnych pól w przypadku różnych rodzajów podróży: z 1 lub kilkoma miejscami docelowymi, łączonych lub wspólnych. Pola opcjonalne możesz podać podczas tworzenia podróży lub ustawić je później, gdy zaktualizujesz podróż.

Pola podróży
Nazwa Wymagany? Opis
parent Tak Ciąg znaków zawierający identyfikator projektu. Ten identyfikator musi być taki sam jak identyfikator używany w całej integracji z Fleet Engine i musi mieć te same role konta usługi.
trip_id Tak Ciąg znaków, który tworzysz i który jednoznacznie identyfikuje tę podróż. Identyfikatory podróży podlegają pewnym ograniczeniom, które są opisane w dokumentacji.
trip_type Tak W przypadku tworzonego typu podróży ustaw TripType na te wartości:
  • 1 miejsce docelowe: ustaw na SHARED lub EXCLUSIVE.
  • Wiele miejsc docelowych: ustaw na EXCLUSIVE.
  • Łączona: ustaw na EXCLUSIVE.
  • Wspólna: ustaw na SHARED.
pickup_point Tak Punkt początkowy podróży.
Miejsca docelowe pośrednie Tak

Tylko podróże z wieloma miejscami docelowymi: lista miejsc docelowych pośrednich, do których kierowca jedzie między miejscem odbioru a miejscem docelowym. Podobnie jak w przypadku dropoff_point, to pole można ustawić później, wywołując UpdateTrip, ale podróż z wieloma miejscami docelowymi z definicji zawiera miejsca docelowe pośrednie.

vehicle_waypoints Tak

Tylko podróże wspólne: to pole obsługuje przeplatanie punktów na trasie z wielu podróży. Zawiera wszystkie pozostałe punkty na trasie przypisanego pojazdu, a także punkty odbioru i docelowe tej podróży. To pole możesz ustawić wywołując CreateTrip lub UpdateTrip. Punkty na trasie pojazdu możesz też zaktualizować za pomocą pola waypoints, wywołując UpdateVehicle. Ze względu na ochronę prywatności usługa nie zwraca tych informacji w przypadku wywołań GetTrip.

number_of_passengers Nie Liczba pasażerów w podróży.
dropoff_point Nie Miejsce docelowe podróży.
vehicle_id Nie Identyfikator pojazdu przypisanego do podróży.

Przykład: tworzenie podróży łączonej

Poniżej pokazujemy, jak utworzyć podróż łączoną i przypisać ją do pojazdu. W tym scenariuszu tworzenie podróży jest takie samo jak w przypadku podróży z 1 miejscem docelowym. Dopiero później tworzysz kolejną podróż i przypisujesz ją do pojazdu, który ma już aktywną podróż.

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

Aktualizowanie podróży łączonych

Gdy przypisujesz pojazd do podróży łączonej, przypisujesz podróż do pojazdu, nawet jeśli jest on już przypisany do innej podróży.

Każda podróż utworzona w Fleet Engine musi być przypisana do pojazdu, aby Fleet Engine mógł obliczyć szacowany czas dotarcia i śledzić podróż. Możesz to zrobić podczas tworzenia podróży lub później, gdy zaktualizujesz podróż.

Gdy przypiszesz podróż do pojazdu, Fleet Engine automatycznie doda punkty na trasie powiązane z podróżami łączonymi do pola punktów na trasie pojazdu. Pole remainingWaypoints podróży zawiera listę wszystkich punktów na trasie, w tym punktów z innych podróży, które zostaną odwiedzone przed miejscem docelowym podróży.

Załóżmy, że masz 2 podróże łączone: podróż A i podróż B. Pojazd odebrał konsumenta na potrzeby podróży A, a podczas jazdy do miejsca docelowego kierowca otrzymuje prośbę o odebranie innego konsumenta na potrzeby następnej podróży, czyli podróży B.

  • Wywołanie getVehicle() zwraca remainingWaypoints które zawierają:
    Miejsce docelowe AMiejsce odbioru BMiejsce docelowe B.
  • Wywołanie getTrip() lub wywołanie zwrotne onTripRemainingWaypointsUpdated dla podróży A zwraca remainingWaypoints które zawierają:
    Miejsce docelowe A.
  • Wywołanie getTrip() lub wywołanie zwrotne onTripRemainingWaypointsUpdated dla podróży B zwraca remainingWaypoints które zawierają:
    Miejsce docelowe AMiejsce odbioru B → i Miejsce docelowe B.

Co dalej?