Perjalanan on-demand

Dokumen ini menjelaskan layanan perjalanan on demand di Fleet Engine. Anda dianggap telah membaca Apa itu Fleet Engine? dan mengetahui kemampuan layanan Fleet Engine tertentu yang Anda perlukan.

Saat Anda membaca dokumentasi ini, perhatikan hal berikut:

  • Anda menetapkan perjalanan ke kendaraan sebagai cara untuk membuat model hubungan dunia nyata antara perjalanan dan pengemudi yang menyelesaikan perjalanan tersebut. Baca Pengantar kendaraan untuk lebih memahami cara kerja kendaraan di Fleet Engine.
  • Dokumen ini juga menjelaskan beberapa elemen kendaraan yang hanya berlaku untuk perjalanan on demand.
  • Fleet Engine untuk perjalanan on demand menggunakan dua resource: Trip dan Vehicle. Fleet Engine menyediakan layanan gRPC dan antarmuka REST:
    • TripService: gRPC dan REST
    • VehicleService: gRPC dan REST
    • Untuk mempermudah, panduan ini menggunakan contoh gRPC.

Apa itu perjalanan on-demand?

Di Fleet Engine, perjalanan mewakili perjalanan on-demand yang dapat mencapai berbagai tujuan transportasi. Misalnya:

  • Orang: Mengangkut satu atau beberapa orang dari lokasi penjemputan ke lokasi pengantaran.
  • Makanan dan barang: Ambil satu atau beberapa pesanan makanan dari lokasi bisnis tertentu dan kirimkan pesanan ini ke satu atau beberapa penerima di lokasi mereka.

Elemen perjalanan

Ilustrasi berikut menampilkan elemen dasar perjalanan: ID kendaraan yang ditetapkan, status perjalanan, dan titik jalan perjalanan. Jenis titik jalan bervariasi bergantung pada tahap perjalanan: pengangkutan penumpang, perantara, dan penurunan penumpang. Dalam perjalanan, tujuan perantara atau titik jalan bersifat opsional. Pada contoh gambar, kendaraan telah tiba di tempat penjemputan

Model data untuk perjalanan

Saat backend menetapkan perjalanan ke kendaraan, backend Anda juga harus mengetahui tentang perjalanan lain yang dijadwalkan untuk kendaraan. Oleh karena itu, diagram berikut mengilustrasikan model data resource Trip bersama diagram untuk resource Vehicle yang terkait. Anda dapat meninjau kedua diagram untuk mempelajari hubungan antara kedua resource tersebut, dengan memperhatikan hal berikut:

  • Perjalanan ditetapkan ke kendaraan berdasarkan ID.
  • Pengaitan perjalanan kendaraan bersifat many-to-one. Artinya, perjalanan tertentu mungkin menjadi satu-satunya perjalanan yang dijadwalkan untuk kendaraan, atau mungkin merupakan salah satu dari banyak perjalanan untuk kendaraan.
  • Objek perjalanan berisi dua daftar titik jalan perjalanan, satu untuk perjalanan itu sendiri dan satu lagi untuk kendaraan yang ditetapkan. Hal ini dijelaskan lebih detail dalam dokumen ini.
  • Kendaraan on demand juga memiliki daftar titik jalan perjalanan, yang dijelaskan lebih lengkap dalam dokumen ini.

Model data perjalanan

Model data kendaraan

Jenis perjalanan

Saat membuat perjalanan, layanan Anda dapat menetapkan kolom tripType sebagai salah satu dari berikut ini: EXCLUSIVE atau SHARED.

Perjalanan eksklusif

Perjalanan eksklusif adalah perjalanan yang perjalanannya tidak tumpang-tindih dengan perjalanan lainnya, dan perjalanan yang diselesaikan oleh kendaraan sebelum atau setelah perjalanan lain pada jadwalnya. Artinya, saat sistem Anda menetapkan perjalanan eksklusif, sistem hanya dapat menetapkan perjalanan tersebut ke kendaraan yang harus diselesaikan secara berurutan, bukan serentak. Sebagai ilustrasi, Anda dapat membuat perjalanan eksklusif dengan karakteristik berikut:

  • Perjalanan dengan satu kali penjemputan dan satu penurunan untuk kendaraan tanpa perjalanan lain pada jadwalnya.
  • Perjalanan dengan penjemputan, titik jalan perantara, dan penurunan untuk kendaraan tanpa perjalanan lain dalam jadwalnya.
  • Perjalanan dengan penjemputan dan pengantaran yang ditambahkan ke akhir perjalanan yang sudah dijadwalkan untuk kendaraan. Dalam kasus ini, setiap perjalanan bersifat eksklusif untuk perjalanan lain, tetapi perjalanan tersebut diurutkan secara berurutan. Selain itu, perjalanan tersebut dapat menyertakan tujuan perantara jika diperlukan.

Perjalanan bersama

Perjalanan bersama adalah perjalanan yang perjalanannya dapat tumpang-tindih dengan pemesanan perjalanan lainnya. Untuk jenis perjalanan ini, sistem Anda dapat menetapkannya agar terjadi secara bersamaan dengan tujuan yang berinterleaving. Misalnya, penurunan untuk satu perjalanan mungkin terjadi setelah penjemputan untuk perjalanan lainnya. Selain itu, perjalanan bersama tidak boleh menggunakan titik jalan perantara.

Biasanya, Anda akan menggunakan perjalanan bersama untuk salah satu skenario penggabungan bersama yang diilustrasikan di bagian Skenario perjalanan.

Titik jalan perjalanan

Untuk Google Maps, titik jalan adalah tempat di sepanjang rute, biasanya ditentukan dengan koordinat lintang/bujur. Untuk perjalanan on demand, titik jalan direpresentasikan oleh objek TripWaypoint, yang berisi informasi tambahan seperti berikut:

  • ID perjalanan
  • WaypointType, baik pengangkutan penumpang, perantara, atau penurunan
  • Informasi jalur dan jarak antara titik jalan perjalanan sebelumnya dan saat ini
  • Kondisi lalu lintas di sepanjang jalur ke titik jalan perjalanan
  • Waktu perjalanan dan PWT ke titik jalan perjalanan

Lihat referensi:

Jenis titik jalan perjalanan

Titik jalan perjalanan ditentukan dalam kaitannya dengan siklus proses umum dari perjalanan kendaraan:

  • Titik jalan pengambilan—Digunakan untuk asal atau awal perjalanan, seperti saat pengemudi mengambil pesanan makanan untuk pengiriman berikutnya, atau saat pengemudi menjemput seseorang untuk penurunan di lain waktu.
  • Titik jalan perantara—Dan tujuan perantara yang dapat digunakan untuk berbagai tujuan, seperti saat pengemudi menurunkan satu penumpang dari kelompok pemesanan yang sama, tetapi perjalanan itu sendiri belum selesai karena lebih banyak penumpang yang tersisa. Titik jalan ini bersifat opsional dan hanya dapat digunakan untuk perjalanan eksklusif.
  • Titik jalan penurunan—Digunakan untuk lokasi akhir perjalanan, seperti saat penumpang yang tersisa keluar dari kendaraan.

Daftar titik jalan perjalanan

Entity Trip berisi dua daftar titik jalan, yang masing-masing merupakan kolom berulang dari jenis TripWaypoint. Satu daftar menjelaskan kolom yang diperlukan untuk perjalanan itu sendiri, dan daftar lainnya untuk mendeskripsikan semua titik jalan yang tersisa untuk kendaraan yang terkait dengan perjalanan. Informasi ini memungkinkan Anda memiliki gambaran lengkap tentang semua elemen perjalanan: perjalanan dan keseluruhan perjalanan kendaraan.

  • Titik jalan yang tersisa untuk kendaraan—Kolom yang disebut vehicle_waypoints. Kolom ini berisi semua titik jalan yang tersisa untuk semua perjalanan yang ditetapkan ke kendaraan.
  • Titik jalan yang tersisa untuk perjalanan—Kolom bernama remaining_waypoints. Objek ini berisi titik jalan yang harus dilalui kendaraan secara berurutan sebelum titik penurunan terakhir perjalanan. Lihat skenario di Skenario perjalanan.
    • Untuk perjalanan satu tujuan yang ditetapkan ke kendaraan tanpa perjalanan lain pada jadwalnya, perjalanan ini hanya akan menyertakan lokasi penjemputan dan pengantaran, dengan asumsi kendaraan belum meninggalkan titik jalan penjemputan.
    • Untuk skenario perjalanan lainnya saat kendaraan juga dijadwalkan untuk perjalanan lainnya, titik jalan yang tersisa untuk setiap perjalanan dalam itinerarinya akan menyertakan semua titik jalan dari perjalanan lain yang harus dilalui kendaraan sebelum mencapai titik jalan pengantaran untuk perjalanan tersebut. Misalnya, dalam perjalanan berturut-turut saat kendaraan dalam perjalanan ke penurunan untuk perjalanan A, titik jalan yang tersisa untuk perjalanan B akan menyertakan titik jalan penurunan untuk perjalanan A. Fleet Engine menghitung informasi ini menggunakan kolom vehicle_waypoints.

Lihat referensi untuk entity Trip: gRPC atau REST.

Skenario perjalanan

Diagram berikut mengilustrasikan berbagai skenario perjalanan yang didukung. Dalam skenario ini, hanya perjalanan penggabungan bersama yang memiliki jenis SHARED; yang lainnya adalah EXCLUSIVE. Diagram juga menampilkan status perjalanan dan titik jalan yang tersisa untuk kendaraan yang melakukan perjalanan tersebut, konsep yang nanti akan dijelaskan dalam panduan ini.

Perjalanan satu tujuan

Perjalanan satu tujuan adalah perjalanan EXCLUSIVE dengan satu penjemputan dan satu lokasi pengantaran. Misalnya, pengemudi menjemput penumpang dari satu lokasi dan mengangkutnya ke lokasi lain; atau pengemudi mengambil pesanan pengiriman makanan dari restoran dan menyerahkannya ke pelanggan.

Perjalanan multi-tujuan

Perjalanan multi-tujuan adalah perjalanan EXCLUSIVE yang berisi satu atau beberapa tujuan perantara antara lokasi penjemputan dan pengantaran. Misalnya, tiga pelanggan transportasi online memesan transportasi secara bersamaan dari ponsel satu orang, tetapi masing-masing memiliki tujuan yang berbeda.

Perjalanan bolak-balik

Perjalanan berturut-turut adalah perjalanan EXCLUSIVE yang berisi serangkaian perjalanan independen yang terjadi satu demi satu. Setiap perjalanan dalam rantai dapat berupa satu atau beberapa tujuan. Dalam skenario ini, pengemudi berkomitmen untuk menjemput pelanggan lain sebelum menyelesaikan perjalanan saat ini.

Perjalanan ini hanya dapat ditetapkan ke kendaraan yang memungkinkan penjadwalan berurutan. Lihat referensi Vehicle REST, gRPC.

Perjalanan penggabungan bersama

Perjalanan penggabungan bersama berbeda dengan jenis perjalanan lainnya. Pertama, perjalanan ini harus berupa perjalanan SHARED, bukan EXCLUSIVE. Di sini, kendaraan menjalankan perjalanan secara serentak, bukan berurutan, seperti pada perjalanan eksklusif. Meskipun perjalanan penggabungan bersama membagikan perjalanannya dengan perjalanan lain, perjalanan ini tidak membagikan informasi lokasi penjemputan dan pengantaran di antara perjalanan. Sebaliknya, setiap perjalanan adalah pemesanan eksklusif sehingga pengguna akhir yang memesan satu perjalanan tidak dapat melihat informasi penjemputan atau tujuan untuk perjalanan lain, kecuali perjalanannya sendiri. Contoh:

  • Layanan antar-jemput bandara menjemput berbagai pelanggan di tempat tinggal mereka dan menyetorkannya di terminal bandara yang berbeda di sepanjang rute. Orang ke-2 mungkin menggunakan aplikasi konsumen Anda untuk melacak progres perjalanan, tetapi aplikasi mereka hanya menampilkan bagian dari perjalanan tersebut, bukan lokasi penjemputan orang 1, atau lokasi orang 1 akan diturunkan, meskipun ada bagian perjalanan yang tumpang tindih.
  • Seorang pengemudi pengantar makanan mengambil tiga pesanan makanan dari restoran yang sama untuk dikirimkan ke kediaman pelanggan yang berbeda. Dengan menggunakan aplikasi konsumen, Orang ke-3 dapat melihat di mana dan kapan makanannya diambil serta melihat rute pengemudi, tetapi tidak dapat melihat lokasi pengantaran makanan untuk orang 1 dan 2.

Status perjalanan dan siklus prosesnya

Bagian ini menjelaskan status perjalanan dan dampaknya terhadap kendaraan serta berbagai skenario yang Anda temui saat menetapkan dan mengelola perjalanan on demand.

Perjalanan umumnya berlangsung melalui berbagai status, dari pembuatan hingga selesai. Umumnya, perjalanan dapat bersifat aktif atau tidak aktif, bergantung pada statusnya. Status perjalanan memengaruhi berbagai skenario kasus penggunaan dengan Fleet Engine, serta kemampuan Anda untuk mengidentifikasi progres kendaraan selama perjalanan. Bagian bagian selanjutnya dari dokumen ini membahas skenario tersebut.

Tabel berikut mencantumkan status perjalanan menurut jenis aktif dan tidak aktif.

Status perjalanan aktif Status perjalanan tidak aktif
NEW
UNKNOWN_TRIP_STATUS
ENROUTE_TO_PICKUP
ARRIVED_AT_PICKUP
ENROUTE_TO_INTERMEDIATE_DESTINATION
ARRIVED_AT_INTERMEDIATE_DESTINATION
ENROUTE_TO_DROPOFF
COMPLETE
CANCELED

Status perjalanan dan titik jalan kendaraan yang tersisa

Saat menetapkan perjalanan tambahan ke kendaraan yang sudah melakukan perjalanan, Anda harus memahami hubungan antara titik jalan yang tersisa untuk kendaraan dan bagaimana status perjalanan memengaruhi titik jalan yang tersisa tersebut.

Misalnya, Anda dapat menetapkan permintaan transportasi online baru ke kendaraan yang hanya mendukung perjalanan eksklusif dan sedang dalam proses menyelesaikan perjalanan. Dalam hal ini, Anda akan memodelkan perjalanan tersebut sebagai perjalanan berturut-turut. Saat menetapkan perjalanan tersebut, sistem Anda harus memastikan bahwa titik jalan untuk perjalanan baru muncul setelah titik jalan untuk perjalanan yang sedang berlangsung.

Selama perjalanan kendaraan, Fleet Engine menghapus titik jalan perjalanan sebelumnya dari daftar titik jalan yang tersisa di kendaraan hanya saat kendaraan melaporkan bahwa sedang dalam perjalanan ke tujuan berikutnya atau selesai. Artinya, salah satu dari hal berikut:

  • ENROUTE_TO_INTERMEDIATE_DESTINATION
  • ENROUTE_TO_DROPOFF
  • SELESAI

Saat status perjalanan berubah menjadi COMPLETED, Fleet Engine akan menghapus titik jalan akhir perjalanan dari daftar titik jalan kendaraan yang tersisa.

Sebaliknya, perubahan status yang menunjukkan kedatangan di titik jalan biasanya tidak berpengaruh pada daftar titik jalan yang tersisa untuk kendaraan:

  • ARRIVED_AT_PICKUP
  • ARRIVED_AT_INTERMEDIATE_DESTINATION
  • ARRIVED_AT_DROPOFF

Untuk menggambarkan dengan contoh perjalanan on-demand: misalnya pengemudi menjemput pelanggan dari tempat tinggalnya, mengantarnya ke tempat pelanggan menunggu menyelesaikan tugas, lalu mengantar pelanggan kembali ke tempat tinggal mereka. Saat pertama kali dibuat, perjalanan memiliki tiga titik jalan: PICKUP, INTERMEDIATE, dan DROPOFF. Tabel berikut mengilustrasikan hasil kueri untuk titik jalan yang tersisa di berbagai status perjalanan:

Status perjalanan Titik jalan lainnya
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

Persyaratan status untuk perjalanan yang ditetapkan ulang atau dibatalkan

Sebelum dapat melakukan salah satu tindakan berikut, Anda harus menetapkan status perjalanan ke NEW atau CANCELED.

  • Saat mengubah penetapan kendaraan untuk perjalanan. Misalnya, jika pengemudi menolak penetapan kendaraan untuk sebuah perjalanan dan perlu ditetapkan ulang ke kendaraan lain.
  • Saat menghapus penetapan kendaraan untuk perjalanan. Misalnya, jika pengemudi membatalkan perjalanan dalam perjalanan dan Anda ingin menghapus penetapan kendaraan, statusnya harus NEW atau CANCELED.

Hasil penelusuran berdasarkan status perjalanan

Saat Anda menggunakan layanan SearchTrips untuk kendaraan tertentu, layanan ini akan menampilkan daftar perjalanan aktif di SearchTripsResponse. Perjalanan aktif juga muncul di kolom active_trips entitas Vehicle. Lihat referensi SearchTripsResponse untuk mengetahui detailnya: gRPC atau REST.

Oleh karena itu, semua perjalanan dengan status aktif akan muncul di kolom active_trips, tetapi perjalanan yang diselesaikan atau dibatalkan tidak.

Langkah selanjutnya