Buat perjalanan berurutan

Dokumen ini menjelaskan cara membuat perjalanan beruntun, menetapkan kolom yang benar, dan menetapkannya ke kendaraan untuk dipenuhi. Panduan ini mengasumsikan bahwa Anda telah menyiapkan Fleet Engine, membuat kendaraan, memiliki aplikasi pengemudi yang berfungsi, dan secara opsional, aplikasi konsumen. Anda juga harus memahami berbagai skenario perjalanan yang tersedia untuk perjalanan on-demand. Lihat panduan terkait berikut untuk itu:

Dasar-dasar pembuatan perjalanan

Bagian ini menjelaskan detail permintaan yang diperlukan untuk membuat perjalanan di Fleet Engine. Anda mengeluarkan permintaan pembuatan menggunakan gRPC dan REST.

  • Metode CreateTrip(): gRPC atau REST
  • Pesan CreateTripRequest: Khusus gRPC

Kolom Perjalanan

Gunakan kolom berikut untuk membuat perjalanan di Fleet Engine. Anda dapat menggunakan kolom yang berbeda untuk berbagai jenis perjalanan: perjalanan dengan satu atau beberapa tujuan, perjalanan berurutan, atau perjalanan pooling bersama. Anda dapat mengisi kolom opsional saat membuat perjalanan, atau Anda dapat menyetelnya nanti saat memperbarui perjalanan.

Kolom perjalanan
Nama Wajib? Deskripsi
parent Ya String yang menyertakan project ID. ID ini harus sama dengan ID yang digunakan di seluruh integrasi Fleet Engine Anda, dengan peran akun layanan yang sama.
trip_id Ya String yang Anda buat yang mengidentifikasi perjalanan ini secara unik. ID perjalanan memiliki batasan tertentu, seperti yang ditunjukkan dalam referensi.
trip_type Ya Tetapkan TripType ke nilai berikut untuk jenis perjalanan yang Anda buat:
  • Tujuan tunggal: Tetapkan ke SHARED atau EXCLUSIVE.
  • Multi-tujuan: Tetapkan ke EXCLUSIVE.
  • Berurutan: Tetapkan ke EXCLUSIVE.
  • Penggabungan bersama: Tetapkan ke SHARED.
pickup_point Ya Titik asal perjalanan.
Tujuan perantara Ya

Khusus perjalanan multi-tujuan: Daftar tujuan perantara yang dikunjungi pengemudi di antara penjemputan dan pengantaran. Seperti dropoff_point, kolom ini juga dapat ditetapkan nanti dengan memanggil UpdateTrip, tetapi perjalanan multi-tujuan menurut definisi berisi tujuan perantara.

vehicle_waypoints Ya

Perjalanan pooling bersama saja: Kolom ini mendukung penyisipan titik jalan dari beberapa perjalanan. Array ini berisi semua titik jalan yang tersisa untuk kendaraan yang ditetapkan, serta titik jalan penjemputan dan pengantaran untuk perjalanan ini. Anda dapat menyetel kolom ini dengan memanggil CreateTrip atau UpdateTrip. Anda juga dapat memperbarui titik jalan kendaraan melalui kolom waypoints dengan panggilan ke UpdateVehicle. Layanan tidak menampilkan informasi ini pada panggilan GetTrip karena alasan privasi.

number_of_passengers Tidak Jumlah penumpang dalam perjalanan.
dropoff_point Tidak Tujuan perjalanan.
vehicle_id Tidak ID kendaraan yang ditetapkan untuk perjalanan.

Contoh: membuat perjalanan berurutan

Berikut ini menunjukkan cara membuat perjalanan beruntun dan menetapkannya ke kendaraan. Dalam skenario ini, pembuatan perjalanan sama dengan perjalanan tujuan tunggal. Anda baru membuat perjalanan lain dan menetapkannya ke kendaraan dengan perjalanan yang sudah aktif.

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

Memperbarui perjalanan beruntun

Saat Anda menetapkan kendaraan untuk perjalanan beruntun, Anda menetapkan perjalanan ke kendaraan meskipun kendaraan tersebut telah ditetapkan untuk perjalanan lain.

Setiap perjalanan yang dibuat di Fleet Engine harus ditetapkan ke kendaraan agar Fleet Engine dapat menghitung dan melacak ETA perjalanan. Anda dapat melakukannya selama pembuatan perjalanan atau nanti saat Anda memperbarui perjalanan.

Setelah Anda menetapkan perjalanan ke kendaraan, Fleet Engine akan otomatis menambahkan titik jalan yang terkait dengan perjalanan berurutan ke kolom titik jalan kendaraan. Kolom remainingWaypoints perjalanan berisi daftar semua titik jalan, termasuk titik jalan dari perjalanan lain yang akan dikunjungi sebelum titik pengantaran perjalanan.

Misalnya, pertimbangkan dua perjalanan yang dilakukan secara berurutan: Perjalanan A dan Perjalanan B. Kendaraan telah menjemput konsumen untuk Perjalanan A, dan saat dalam perjalanan menuju lokasi tujuan, pengemudi menerima permintaan untuk menjemput konsumen lain untuk perjalanan berikutnya, Perjalanan B.

  • Memanggil getVehicle() akan menampilkan remainingWaypoints yang berisi:
    PengantaranPengambilanPengantaran.
  • Baik getTrip() maupun callback onTripRemainingWaypointsUpdated untuk Perjalanan A menampilkan remainingWaypoints yang berisi:
    Tempat Turun.
  • getTrip() atau callback onTripRemainingWaypointsUpdated untuk Perjalanan B menampilkan remainingWaypoints yang berisi:
    Pengantaran APenjemputan B → dan Pengantaran B.

Langkah berikutnya