এই ডকুমেন্টে বর্ণনা করা হয়েছে কিভাবে একটি ট্রিপ আপডেট করতে হয় এবং এর অবস্থা পরিচালনা করতে হয়, যার মধ্যে একটি ট্রিপের জন্য প্রাসঙ্গিক ক্ষেত্র সেট করার জন্য একটি ফিল্ড মাস্ক ব্যবহার করা জড়িত। এটি ধরে নেয় যে আপনি এই সাইটে বর্ণিত ফ্লিট ইঞ্জিন সেট আপ করেছেন এবং একটি ট্রিপের জন্য নির্ধারিত একটি গাড়ির সাথে কাজ করছেন।
ট্রিপ আপডেটের মূল বিষয়গুলি
নিম্নলিখিত পরিস্থিতিতে আপনার সিস্টেম ফ্লিট ইঞ্জিন ব্যবহার করে ট্রিপ আপডেট করে:
- তৈরি করার পর কোনও গাড়িকে ট্রিপে বরাদ্দ করার সময়।
- যখন ট্রিপের অবস্থা পরিবর্তন হয়; উদাহরণস্বরূপ, যখন গাড়িটি ওয়েপয়েন্টের মধ্য দিয়ে যায়।
- যখন আপনি ট্রিপ ফিল্ড আপডেট করেন, যেমন যাত্রীর সংখ্যা এবং ড্রপ-অফ পয়েন্ট।
ট্রিপ আপডেট করতে, gRPC এবং REST ব্যবহার করে একটি অনুরোধ পাঠান।
Fleet Engine: Service account roles -এ বর্ণিত আপনার প্রকল্পের পরিষেবা অ্যাকাউন্টের জন্য উপযুক্ত শংসাপত্র ব্যবহার করুন।
ট্রিপ ফিল্ড আপডেট করুন
আপনি "একক গন্তব্যস্থলে ভ্রমণ তৈরি করুন" এর "ট্রিপ" ক্ষেত্রগুলিতে বর্ণিত যেকোনো ভ্রমণ ক্ষেত্র আপডেট করতে পারেন। উদাহরণস্বরূপ, একটি ভ্রমণ তৈরি করার পরে, প্রথমে একটি যানবাহন খুঁজে বের করা এবং তারপরে trip vehicle_id ক্ষেত্রটি আপডেট করা একটি সাধারণ অভ্যাস যা এটিকে ভ্রমণটি পরিচালনা করবে এমন যানবাহনের সাথে যুক্ত করে।
ফিল্ড মাস্ক ব্যবহার করুন
ফিল্ড মাস্ক হল API কলারদের জন্য একটি উপায় যেখানে তারা কোন ফিল্ডগুলি কোন অনুরোধের জন্য আপডেট করা উচিত তা তালিকাভুক্ত করতে পারে। ফিল্ডমাস্ক ব্যবহার করলে অপ্রয়োজনীয় কাজ এড়ানো যায় এবং কর্মক্ষমতা উন্নত হয়। ফ্লিট ইঞ্জিন সমস্ত রিসোর্সে ফিল্ডগুলি আপডেট করার জন্য ফিল্ড মাস্ক ব্যবহার করে।
গাড়ির আইডি দিয়ে ট্রিপ আপডেট করুন
আপনাকে অবশ্যই একটি গাড়ির আইডি দিয়ে একটি ট্রিপ কনফিগার করতে হবে যাতে ফ্লিট ইঞ্জিন তার রুটে গাড়িটি ট্র্যাক করতে পারে। নিম্নলিখিত কোড নমুনাটি দেখায় যে কীভাবে গাড়ির আইডি দিয়ে ট্রিপ আপডেট করতে হয়।
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 ত্রুটির সম্মুখীন হতে পারেন, যে ক্ষেত্রে Fleet Engine এর অবস্থা অজানা থাকে। এটি তদন্ত করার জন্য, প্রথমে আপনি যে ট্রিপ আইডিটি আপডেট বা মনিটর করার চেষ্টা করছেন তা ব্যবহার করে আবার CreateTrip কল করুন। এটি 201 (CREATED) অথবা 409 (CONFLICT) ফেরত পাঠাবে। পরবর্তী ক্ষেত্রে, পূর্ববর্তী অনুরোধটি DEADLINE_EXCEEDED এর আগে সফল হয়েছিল।
অ্যান্ড্রয়েড বা iOS এর জন্য কনজিউমার SDK-তে নেটওয়ার্ক ত্রুটির তালিকা দেখুন।