এই ডকুমেন্টটিতে একটি ট্রিপ কীভাবে আপডেট করতে হয় এবং এর অবস্থা পরিচালনা করতে হয় তা বর্ণনা করা হয়েছে, যার জন্য একটি ট্রিপের প্রাসঙ্গিক ফিল্ডগুলো সেট করতে ফিল্ড মাস্ক ব্যবহার করতে হয়। এটি ধরে নেয় যে আপনি এই সাইটে বর্ণিত পদ্ধতি অনুযায়ী ফ্লিট ইঞ্জিন সেট আপ করেছেন এবং একটি ট্রিপে নির্ধারিত যানবাহন নিয়ে কাজ করছেন।
ট্রিপ আপডেটের প্রাথমিক বিষয়গুলি
আপনার সিস্টেম নিম্নলিখিত পরিস্থিতিতে একটি ট্রিপ আপডেট করতে ফ্লিট ইঞ্জিন ব্যবহার করে:
- ট্রিপ তৈরি করার পর তাতে একটি যানবাহন যুক্ত করার সময়।
- যখন যাত্রার অবস্থার পরিবর্তন হয়; উদাহরণস্বরূপ, যখন যানবাহনটি বিভিন্ন পথচিহ্ন অতিক্রম করে।
- যখন আপনি ট্রিপের ফিল্ডগুলো আপডেট করেন, যেমন যাত্রীর সংখ্যা এবং নামিয়ে দেওয়ার স্থান।
ট্রিপ আপডেট করতে gRPC অথবা REST ব্যবহার করে একটি অনুরোধ পাঠান।
Fleet Engine: Service account roles- এ বর্ণিত অনুযায়ী আপনার প্রোজেক্টের সার্ভিস অ্যাকাউন্টের জন্য উপযুক্ত ক্রেডেনশিয়াল ব্যবহার করুন।
ভ্রমণের ক্ষেত্রগুলি আপডেট করুন
You can update any of the trip fields described in Trip fields in Create a single destination trip . For example, after you create a trip, it's a common practice to first find a vehicle and then update the trip vehicle_id field to associate it with the vehicle that will carry out the trip.
ফিল্ড মাস্ক ব্যবহার করুন
ফিল্ড মাস্ক হলো এপিআই ব্যবহারকারীদের জন্য একটি অনুরোধের ফিল্ডগুলো তালিকাভুক্ত করার বা আপডেট করার একটি উপায়। ফিল্ডমাস্ক ব্যবহার করলে অপ্রয়োজনীয় কাজ এড়ানো যায় এবং পারফরম্যান্স উন্নত হয়। ফ্লিট ইঞ্জিন সমস্ত রিসোর্স জুড়ে ফিল্ড আপডেট করার জন্য ফিল্ড মাস্ক ব্যবহার করে।
গাড়ির আইডি দিয়ে ট্রিপটি আপডেট করুন।
আপনাকে অবশ্যই একটি ভেহিকেল আইডি দিয়ে ট্রিপটি কনফিগার করতে হবে, যাতে ফ্লিট ইঞ্জিন তার রুট বরাবর যানটিকে ট্র্যাক করতে পারে। নিম্নলিখিত কোড স্যাম্পলটিতে দেখানো হয়েছে কীভাবে একটি ভেহিকেল আইডি দিয়ে ট্রিপটি আপডেট করতে হয়।
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;
}
ট্রিপের অবস্থা পরিচালনা করুন
আপনি TripStatus এনুমারেশন ভ্যালুগুলোর মধ্যে একটি ব্যবহার করে একটি ট্রিপের অবস্থা নির্দিষ্ট করেন। যখন একটি ট্রিপের অবস্থা পরিবর্তিত হয়; উদাহরণস্বরূপ ENROUTE_TO_PICKUP থেকে ARRIVED_AT_PICKUP , তখন আপনি Fleet Engine-এ ট্রিপের অবস্থা আপডেট করেন। ট্রিপের জীবনচক্র সর্বদা NEW স্টেট ভ্যালু দিয়ে শুরু হয় এবং COMPLETE বা CANCELED ভ্যালু দিয়ে শেষ হয়।
ভ্রমণের উদাহরণ আপডেট
ফ্লিট ইঞ্জিনে পরপর দুটি ট্রিপের জন্য ট্রিপের অবস্থা কীভাবে আপডেট করতে হয়, তা নিম্নলিখিত অংশে দেখানো হলো।
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;
}
ট্রিপ আপডেট করার আরও উদাহরণ আপনি 'অন্যান্য ট্রিপের প্রকারভেদ' বিভাগে দেখতে পারেন।
ট্রিপ ত্রুটিগুলি পরিচালনা করুন
বিদ্যমান ট্রিপ আপডেট বা খোঁজার সময়, আপনি DEADLINE_EXCEEDED ত্রুটির সম্মুখীন হতে পারেন, সেক্ষেত্রে ফ্লিট ইঞ্জিনের অবস্থা অজানা থাকে। এটি তদন্ত করতে, প্রথমে আপনি যে ট্রিপ আইডিটি আপডেট বা মনিটর করার চেষ্টা করছেন, সেটি ব্যবহার করে আবার CreateTrip কল করুন। এর ফলে হয় 201 (CREATED) অথবা 409 (CONFLICT) রিটার্ন হওয়া উচিত। পরের ক্ষেত্রে, DEADLINE_EXCEEDED আগে পূর্ববর্তী অনুরোধটি সফল হয়েছিল।
Android অথবা iOS- এর জন্য Consumer SDK-তে নেটওয়ার্ক ত্রুটির তালিকাটি দেখুন।