Dokumen ini menjelaskan cara memperbarui perjalanan dan mengelola statusnya, yang melibatkan penggunaan mask kolom guna menetapkan kolom yang relevan untuk perjalanan. Anda diasumsikan telah menyiapkan Fleet Engine seperti yang dijelaskan di situs ini dan bekerja sama dengan kendaraan yang ditetapkan untuk sebuah perjalanan.
Dasar-dasar update perjalanan
Sistem Anda menggunakan Fleet Engine untuk memperbarui perjalanan dalam situasi berikut:
- Saat menetapkan kendaraan ke perjalanan setelah dibuat.
- Saat status perjalanan berubah; misalnya, saat kendaraan lewat melalui titik jalan.
- Saat Anda memperbarui kolom perjalanan, seperti jumlah penumpang dan oleh Google Cloud.
Untuk memperbarui perjalanan, kirim permintaan menggunakan gRPC dan REST.
Gunakan kredensial yang sesuai untuk akun layanan project Anda sebagai yang dijelaskan di Fleet Engine: Peran akun layanan.
Memperbarui kolom perjalanan
Anda dapat memperbarui kolom perjalanan yang dijelaskan di Kolom perjalanan di Buat
satu perjalanan tujuan. Misalnya, setelah membuat perjalanan, biasanya
latihan untuk menemukan kendaraan terlebih dahulu, lalu memperbarui kolom perjalanan vehicle_id
menjadi
mengaitkannya dengan kendaraan yang akan melakukan perjalanan.
Menggunakan mask kolom
Mask kolom adalah cara bagi pemanggil API untuk mencantumkan kolom yang harus disediakan oleh permintaan atau perbarui. Menggunakan FieldMask menghindari pekerjaan yang tidak perlu dan meningkatkan kinerja. Fleet Engine menggunakan mask kolom untuk memperbarui kolom di semua resource.
Perbarui perjalanan dengan ID kendaraan
Anda harus mengonfigurasi perjalanan dengan ID kendaraan agar Fleet Engine dapat melacak kendaraan di sepanjang rutenya. Contoh kode berikut menunjukkan cara perbarui perjalanan dengan ID kendaraan.
static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String TRIP_ID = "trip-8241890";
String tripName = "providers/" + PROJECT_ID + "/trips/" + TRIP_ID;
TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);
// The trip settings to update.
Trip trip = Trip.newBuilder()
.setVehicleId("8241890")
.build();
// The trip update request.
UpdateTripRequest updateTripRequest =
UpdateTripRequest.newBuilder() // No need for the header.
.setName(tripName)
.setTrip(trip)
.setUpdateMask(FieldMask.newBuilder().addPaths("vehicle_id"))
.build();
// Error handling.
// If the Fleet Engine has both a trip and vehicle with IDs, and if the
// credentials validate, then the service updates the trip.
try {
Trip updatedTrip = tripService.updateTrip(updateTripRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND: // Neither the trip nor vehicle exist.
break;
case PERMISSION_DENIED:
break;
}
return;
}
Mengelola status perjalanan untuk perjalanan
Anda menentukan status perjalanan menggunakan salah satu enumerasi TripStatus
masing-masing. Saat negara bagian perjalanan berubah; misalnya dari ENROUTE_TO_PICKUP
hingga
ARRIVED_AT_PICKUP
, Anda akan memperbarui status perjalanan di Fleet Engine. Perjalanan
siklus proses selalu dimulai dengan nilai status NEW
, dan diakhiri dengan nilai
COMPLETE
atau CANCELED
.
Contoh info terbaru perjalanan
Berikut cara memperbarui status perjalanan untuk back-to-back perjalanan di Fleet Engine.
static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String TRIP_ID = "trip-8241890";
String tripName = "providers/" + PROJECT_ID + "/trips/" + TRIP_ID;
TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);
// Trip settings to be updated.
Trip trip = Trip.newBuilder()
.setTripStatus(TripStatus.ARRIVED_AT_PICKUP)
.build();
// Trip update request
UpdateTripRequest updateTripRequest = UpdateTripRequest.newBuilder()
.setName(tripName)
.setTrip(trip)
.setUpdateMask(FieldMask.newBuilder().addPaths("trip_status"))
.build();
// Error handling.
try {
Trip updatedTrip = tripService.updateTrip(updateTripRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND: // The trip doesn't exist.
break;
case FAILED_PRECONDITION: // The given trip status is invalid.
break;
case PERMISSION_DENIED:
break;
}
return;
}
Anda dapat melihat contoh lain tentang cara memperbarui perjalanan di Jenis perjalanan lainnya bagian.
Menangani error perjalanan
Saat memperbarui atau menemukan perjalanan yang ada, Anda mungkin menemukan kasus
Error DEADLINE_EXCEEDED
, dalam hal ini status Fleet Engine tidak diketahui.
Untuk menyelidiki hal ini, pertama-tama telepon CreateTrip
lagi menggunakan ID perjalanan yang sama dengan Anda
coba perbarui atau pantau. Ini akan menghasilkan nilai 201 (CREATED) atau
409 (KONFLIK). Dalam kasus yang terakhir, permintaan sebelumnya berhasil sebelum
DEADLINE_EXCEEDED
.
Lihat daftar error jaringan di Consumer SDK, baik untuk Android maupun iOS.