Podróże na żądanie

W tym dokumencie opisano usługę przejazdów na żądanie w Fleet Engine. Zakładamy, że przeczytałeś(-aś) artykuł Co to jest Fleet Engine? i znasz wymagane przez Ciebie funkcje usługi Fleet Engine.

Czytając tę dokumentację, pamiętaj o tych kwestiach:

  • Przypisujesz przejazdy pojazdom, aby odzwierciedlić rzeczywiste powiązanie między przejazdem a kierowcą, który go wykonał. Aby lepiej zrozumieć, jak działają pojazdy w Fleet Engine, przeczytaj artykuł Wprowadzenie do pojazdów.
  • Ten dokument zawiera też opis niektórych elementów pojazdu, które dotyczą tylko przejazdów na żądanie.
  • Fleet Engine do obsługi przejazdów na żądanie korzysta z 2 zasobach: TripVehicle. Silnik floty udostępnia usługę gRPC i interfejsy REST:
    • TripService: gRPCREST
    • VehicleService: gRPCREST
    • Ze względu na prostotę ten poradnik zawiera przykłady gRPC.

Co to jest przejazd na żądanie?

W Fleet Engine przejazd to przejazd na żądanie, który może służyć do różnych celów transportowych. Na przykład:

  • Osoby: przewóz jednej lub większej liczby osób z miejsca odbioru do miejsca docelowego.
  • Jedzenie i towary: odbiór jednego lub większej liczby zamówień jedzenia z lokalizacji firmy i dostarczenie ich do jednego lub większej liczby odbiorców w ich lokalizacjach.

Elementy podróży

Ilustracja poniżej przedstawia podstawowe elementy przejazdu: przypisany identyfikator pojazdu, stan przejazdu i punkty pośrednie przejazdu. Typy punktów pośrednich różnią się w zależności od etapu podróży: odbioru, punktu pośredniego i wysadzania. W przypadku każdej podróży punkt pośredni lub punkt pośredni na dowolnej trasie jest opcjonalny. Na przykład na obrazie pojazd dotarł do miejsca odbioru

Model danych dotyczący podróży

Ponieważ backend przypisuje przejazdy do pojazdów, musi też znać inne zaplanowane przejazdy. Dlatego na poniższych diagramach model danych zasobu Trip jest przedstawiony obok diagramu powiązanego z nim zasobu Vehicle. Możesz przejrzeć oba diagramy, aby poznać relacje między tymi dwoma zasobami. Pamiętaj o tych kwestiach:

  • Podróże są przypisywane do pojazdu na podstawie identyfikatora.
  • Powiązanie przejazd–pojazd jest relacją „wiele do jednego”. Oznacza to, że dana podróż może być jedyną zaplanowaną podróżą dla pojazdu lub jedną z wielu.
  • Obiekty podróży zawierają 2 listy punktów pośrednich podróży: jedną dla samej podróży, a drugą dla przypisanego pojazdu. Więcej informacji na ten temat znajdziesz w tym dokumencie.
  • Pojazd na żądanie ma też listę punktów pośrednich podróży, która jest dokładniej opisana w tym dokumencie.

Model danych o podróży

Model danych pojazdu

Typy podróży

Gdy usługa utworzy podróż, może ustawić pole tripType na jedną z tych wartości: EXCLUSIVE lub SHARED.

.

Wycieczki ekskluzywne

Wyjątkowy przejazd to taki, który nie pokrywa się z innymi przejazdami, a pojazd wykonuje go przed lub po innych przejazdach zgodnie z rozkładem. Oznacza to, że gdy system przydzieli wyjazdy z wyłącznością, może je przypisać tylko do pojazdu, który wykona je kolejno, a nie równocześnie. Na przykład możesz utworzyć wyjazdy ekskluzywne z tymi cechami:

  • Przejazd z jednym odbiorem i jednym dowozem dla pojazdu bez innych zaplanowanych przejazdów.
  • Przejazd z odbiorem, pośrednim punktem kontrolnym i odstawieniem pojazdu bez żadnej innej podróży w harmonogramie.
  • Przejazd z dodatkowymi przystankami dodania i wysadzania pasażerów dodanymi na końcu już zaplanowanej podróży. W takich przypadkach każda podróż jest odrębna, ale podróże są uporządkowane w kolejności. W razie potrzeby takie podróże mogą obejmować pośrednie miejsca docelowe.

Udostępnione przejazdy

Podróż współdzielona to taka, która może się pokrywać z innymi rezerwacjami podróży. W przypadku tych typów podróży system może przypisać je do odbywania się równolegle z przeplataniem miejsc docelowych. Na przykład wysiadanie w jednym przypadku może nastąpić po odbiorze w drugim. Ponadto udostępnione podróże nie mogą zawierać punktów pośrednich.

Zwykle korzysta się z podróży współdzielonej w jednym ze scenariuszy współdzielenia, który jest przedstawiony w sekcji Scenariusze dotyczące podróży.

Punkty pośrednie podróży

W Mapach Google punkt kontrolny to miejsce na trasie, zwykle określone przez współrzędne geograficzne. W przypadku podróży na żądanie punkt kontrolny jest reprezentowany przez obiekt TripWaypoint, który zawiera dodatkowe informacje, takie jak:

  • Identyfikator podróży
  • WaypointType, czyli odbiór, punkt pośredni lub wysiadek;
  • informacje o ścieżce i odległości między poprzednim punktem kontrolnym podróży a bieżącym;
  • warunki na drodze do punktu drogowego,
  • Czas podróży i szacowany czas dotarcia do punktu nawigacyjnego

Zobacz odwołania:

Typy punktów pośrednich podróży

Punkt orientacyjny trasy jest zdefiniowany w związku z ogólnym cyklem życia przejazdu:

  • Punkt odbioru – służy do określenia punktu początkowego lub początku podróży, np. gdy kierowca odbiera zamówienie na jedzenie w celu jego dostarczenia lub gdy kierowca odbiera pasażera w celu jego późniejszego wysadzenia.
  • Punkt pośredni na trasie – pośredni punkt docelowy, który może być używany do różnych celów, np. gdy kierowca wysadza pasażera z jednej grupy rezerwacyjnej, ale podróż nie jest jeszcze zakończona, ponieważ pozostali pasażerowie jeszcze nie wysiadają. Ten punkt kontrolny jest opcjonalny i może być używany tylko w przypadku podróży wyłącznych.
  • Punkt docelowy – służy do określenia ostatniej lokalizacji podróży, np. gdy ostatni pasażer opuszcza pojazd.

Listy punktów pośrednich podróży

Element Trip zawiera 2 listy punktów orientacyjnych, z których każda jest powtarzalnym polem typu TripWaypoint. Jedna lista zawiera pola wymagane do określenia samej podróży, a druga – wszystkie punkty drogi pozostałe dla pojazdu powiązanego z podróżą. Dzięki temu masz pełny obraz wszystkich elementów podróży: przejazdu i całej trasy przebytej przez pojazd.

  • Pozostałe punkty drogi pojazdu – pole o nazwie vehicle_waypoints. Zawiera wszystkie pozostałe punkty drogi dla wszystkich podróży przypisanych do pojazdu.
  • Pozostałe punkty drogi dla podróży – pole o nazwie remaining_waypoints. Zawiera punkty pośrednie, które pojazd musi pokonać w kolejności przed dotarciem do ostatniego punktu docelowego. Zobacz scenariusze w sekcji Scenariusze podróży.
    • W przypadku podróży do jednego miejsca docelowego przypisanej do pojazdu bez innych zaplanowanych przejazdów obejmuje to tylko lokalizację odbioru i rozładunku, zakładając, że pojazd nie opuścił punktu odbioru.
    • W przypadku innych scenariuszy podróży, w których pojazd jest również zaplanowany do innych przejazdów, pozostałe punkty nawigacyjne na dowolnej trasie w planie podróży będą zawierać wszystkie punkty nawigacyjne z innych przejazdów, które pojazd musi pokonać przed dotarciem do punktu docelowego na danej trasie. Na przykład w przypadku podróży powrotnej, gdy pojazd jest w drodze do miejsca wysadzania pasażera w ramach podróży A, pozostałe punkty drogi w ramach podróży B będą zawierać punkt wysadzania w ramach podróży A. Oblicza on te informacje za pomocą pola vehicle_waypoints.

Zapoznaj się z dokumentacją dotyczącą elementu Trip: gRPC lub REST.

Scenariusze podróży

Na poniższych diagramach przedstawiono różne obsługiwane scenariusze podróży. W tych scenariuszach tylko podróż w ramach wspólnego przejazdu jest typu SHARED; wszystkie pozostałe są typu EXCLUSIVE. Diagramy pokazują też stan podróży i pozostałe punkty na trasie pojazdu wykonującego podróż. Te pojęcia są opisane dalej w tym przewodniku.

Podróż do jednego miejsca docelowego

Podróż do jednego miejsca docelowego to EXCLUSIVE z jednym miejscem odbioru i jednym miejscem docelowym. Na przykład kierowca zabiera pasażera z jednego miejsca i transportuje go do innego lub odbiera zamówienie w restauracji i dostarcza je klientowi.

Podróże z wieloma przystankami

Podróż z wieloma miejscami docelowymi to EXCLUSIVE, która zawiera co najmniej 1 miejsce docelowe pośrednie między miejscami odbioru i wysadzania pasażerów. Na przykład 3 osoby korzystające z usługi przejazdu zamawiają przejazd na jednym telefonie, ale każda z nich ma inne miejsce docelowe.

Podróże z powrotem

Podróże z wielu odcinkami to EXCLUSIVE podróże, które obejmują serię niezależnych od siebie odcinków. Każda podróż w łańcuchu może mieć jeden lub wiele miejsc docelowych. W tym scenariuszu kierowca zgadza się zabrać innego klienta, zanim zakończy obecną podróż.

Można je przypisać tylko do pojazdów, które umożliwiają planowanie kolejnych przejazdów. Zobacz dokumentację Vehicle REST i gRPC.

Podróże w grupach współdzielonych

Podróż w ramach współdzielonego przejazdu różni się od innych typów przejazdów. Po pierwsze, musi to być podróż SHARED, a nie EXCLUSIVE. W tym przypadku pojazd wykonuje przejazdy równocześnie, a nie po kolei, jak w przypadku przejazdów wyłącznych. W przypadku wspólnej podróży z współdzieleniem trasy informacje o trasie są udostępniane innym podróżom, ale nie są udostępniane informacje o miejscu odbioru i zwrotu. Zamiast tego każda podróż jest rezerwacją na wyłączność, co oznacza, że użytkownik, który zarezerwował jedną podróż, nie może zobaczyć informacji o odborze lub miejscu docelowym dotyczących żadnej innej podróży oprócz swojej. Na przykład:

  • Autobus wahadłowy do lotniska zabiera pasażerów z ich domów i odwozi ich do różnych terminali na lotnisku. Osoba 2 może używać Twojej aplikacji dla konsumentów, aby śledzić postępy podróży, ale aplikacja ta pokazuje tylko jej część, a nie miejsce, z którego została odebrana osoba 1, ani miejsce, do którego ma zostać dowieziona, mimo że części ich podróży się pokrywają.
  • Kierowca dostarczający jedzenie odbiera 3 zamówienia z tej samej restauracji, aby dostarczyć je do różnych domów klientów. Korzystając z aplikacji dla klientów, osoba 3 może zobaczyć, gdzie i kiedy odebrano jedzenie oraz trasę przejazdu kierowcy, ale nie może zobaczyć miejsc dostawy dla osób 1 i 2.

Stan i cykl życia wyjazdu

W tej sekcji opisujemy stan przejazdu i jego wpływ na pojazd oraz różne scenariusze, które mogą wystąpić podczas przypisywania przejazdów na żądanie i zarządzania nimi.

Podróż przechodzi zwykle przez różne stany, od utworzenia do zakończenia. Ogólnie rzecz biorąc, przejazd może być aktywny lub nieaktywny, w zależności od stanu. Stan podróży wpływa na różne scenariusze użycia w Fleet Engine, a także na możliwość identyfikacji postępów pojazdu w trakcie podróży. W dalszej części tego dokumentu omawiamy te scenariusze.

W tabeli poniżej znajdziesz stany przejazdu według rodzajów aktywnych i nieaktywnych.

Stany aktywnej podróży Stany nieaktywnych przejazdów
NEW
UNKNOWN_TRIP_STATUS
ENROUTE_TO_PICKUP
ARRIVED_AT_PICKUP
ENROUTE_TO_INTERMEDIATE_DESTINATION
ARRIVED_AT_INTERMEDIATE_DESTINATION
ENROUTE_TO_DROPOFF
COMPLETE
CANCELED

Stan podróży i pozostałe punkty drogi pojazdu

Przy przypisywaniu dodatkowych tras pojazdowi, który już wykonuje trasę, musisz zrozumieć związek między pozostałymi punktami pośrednimi pojazdu a tym, jak stan trasy wpływa na te punkty pośrednie.

Możesz na przykład przypisać nowe żądanie przejazdu do wspólnego przejazdu do pojazdu, który obsługuje tylko przejazdy grupowe i jest w trakcie realizacji przejazdu. W takim przypadku należy modelować podróż jako podróż z powrotem. Podczas przypisywania takiej podróży system powinien zadbać o to, aby punkty pośrednie nowej podróży pojawiały się po punktach pośrednich bieżącej podróży.

Podczas przejazdu pojazdu Fleet Engine usuwa poprzedni punkt drogi z listy pozostałych punktów drogi tylko wtedy, gdy pojazd zgłasza, że jest w drodze do następnego miejsca docelowego lub że przejazd został zakończony. Oznacza to, że:

  • ENROUTE_TO_INTERMEDIATE_DESTINATION
  • ENROUTE_TO_DROPOFF
  • UKOŃCZONO

Gdy stan podróży zmieni się na COMPLETED, silnik floty usunie ostatni punkt na trasie z listy pozostałych punktów na trasie pojazdu.

Zmiany stanu wskazujące na dotarcie do punktu drogi zwykle nie mają wpływu na listę pozostałych punktów drogi pojazdu:

  • ARRIVED_AT_PICKUP
  • ARRIVED_AT_INTERMEDIATE_DESTINATION
  • ARRIVED_AT_DROPOFF

Aby zilustrować to na przykładzie przejazdu na żądanie: kierowca odbiera klienta z jego miejsca zamieszkania, zawozi go do miejsca, gdzie czeka, aż klient wykona zadanie, a potem zawozi go z powrotem do miejsca zamieszkania. Po utworzeniu podróż ma 3 punkty pośrednie: PICKUP, INTERMEDIATEDROPOFF. W tabeli poniżej przedstawiono wyniki zapytania o pozostałe punkty drogi w różnych stanach podróży:

Stan podróży Pozostałe punkty pośrednie
ARRIVED_AT_PICKUP PICKUP
INTERMEDIATE
DROPOFF
ENROUTE_TO_INTERMEDIATE_DESTINATION PICKUP
INTERMEDIATE
DROPOFF
ARRIVED_AT_INTERMEDIATE_DESTINATION PICKUP
INTERMEDIATE
DROPOFF
ENROUTE_TO_DROPOFF PICKUP
INTERMEDIATE
DROPOFF
ARRIVED_AT_DROPOFF PICKUP
INTERMEDIATE
DROPOFF
COMPLETE PICKUP
INTERMEDIATE
DROPOFF

Wymagania dotyczące stanu w przypadku przypisanych lub anulowanych przejazdów

Zanim wykonasz którąkolwiek z tych czynności, musisz ustawić stan podróży na NEW lub CANCELED.

  • Podczas zmiany przypisania pojazdu do podróży. Jeśli na przykład kierowca odrzuci przypisanie pojazdu do przejazdu i będzie trzeba przypisać inny pojazd.
  • Podczas anulowania przypisania pojazdu do podróży. Jeśli na przykład kierowca anuluje przejazd w trakcie i chcesz usunąć przypisanie pojazdu, stan musi być NEW lub CANCELED.

Wyniki wyszukiwania na podstawie stanu podróży

Gdy używasz usługi SearchTrips w przypadku konkretnego pojazdu, zwraca ona listę aktywnych przejazdów w usłudze SearchTripsResponse. Aktywne przejazdy są też widoczne w polu active_trips elementu Vehicle. Szczegółowe informacje znajdziesz w dokumentacji SearchTripsResponse: gRPC lub REST.

W polu active_trips wyświetlają się wszystkie przejazdy o stanie aktywnym, ale nie wyświetlają się przejazdy zakończone ani anulowane.

Co dalej?