يوضّح هذا المستند كيفية إنشاء رحلة متتالية وضبط الحقل المناسب وتخصيصها لمركبة لتنفيذها. يفترض هذا الدليل أنّك قد أعددت "محرك الأسطول"، وأنّك أنشأت مركبات، وأنّ لديك تطبيقًا يعمل للسائقين، وتطبيقًا اختياريًا للمستهلكين. من المفترض أيضًا أن تكون على دراية بسيناريوهات الرحلات المختلفة المتاحة للرحلات عند الطلب. اطّلِع على الأدلة ذات الصلة التالية لتحديد ما يلي:
- إعداد Fleet Engine
- إنشاء مركبة
- سيناريوهات الرحلات في النظرة العامة على الرحلات عند الطلب
أساسيات إنشاء الرحلات
يصف هذا القسم تفاصيل الطلب اللازمة لإنشاء رحلة في Fleet Engine. يمكنك إصدار طلب إنشاء باستخدام gRPC وREST.
حقول الرحلة
استخدِم الحقول التالية لإنشاء رحلة في Fleet Engine. يمكنك استخدام ملفّات مختلفة للأنواع المختلفة من الرحلات: الرحلات التي تتضمن وجهة واحدة أو وجهات متعددة، والرحلات المتتالية، أو الرحلات المشتركة. يمكنك إدخال الحقول الاختيارية عند إنشاء الرحلة، أو يمكنك ضبطها لاحقًا عند تعديل الرحلة.
الاسم | مطلوب؟ | الوصف |
---|---|---|
parent | نعم | سلسلة تتضمّن رقم تعريف المشروع يجب أن يكون هذا المعرّف هو المعرّف نفسه المستخدَم في عملية دمج Fleet Engine بالكامل، مع أدوار حساب الخدمة نفسها. |
trip_id | نعم | سلسلة تنشئها لتحديد هذه الرحلة بشكل فريد تفرض معرّفات الرحلات بعض القيود، كما هو موضّح في المرجع. |
trip_type | نعم | اضبط TripType على القيم التالية لنوع الرحلة التي تنشئها:
|
pickup_point | نعم | نقطة انطلاق الرحلة |
الوجهات المتوسطة | نعم | الرحلات التي تتضمّن وجهات متعددة فقط: قائمة الوجهات الوسيطة التي يزورها السائق بين نقطة المغادرة ونقطة الوصول. كما هو الحال مع |
vehicle_waypoints | نعم | الرحلات المشتركة فقط: يتيح هذا الحقل تداخل نقاط التوقف من رحلات متعددة.
يحتوي هذا الملف على جميع نقاط التوقف المتبقية للمركبة المحدّدة، بالإضافة إلى
نقاط التوقف لتحميل الركاب وإيقافهم في هذه الرحلة. يمكنك ضبط هذا الحقل
من خلال الاتصال برقم |
number_of_passengers | لا | عدد الركاب في الرحلة |
dropoff_point | لا | وجهة الرحلة. |
vehicle_id | لا | معرّف المركبة المحدّد للرحلة |
مثال: إنشاء رحلة متتالية
يوضّح القسم التالي كيفية إنشاء رحلة متتالية وإسنادها إلى مركبة. في هذا السيناريو، تكون عملية إنشاء الرحلة مماثلة لتلك المتعلّقة برحلة تهدف إلى وجهة واحدة. وبعد ذلك، يمكنك إنشاء رحلة أخرى وإسنادها إلى مركبة التي سبق أن كانت في رحلة نشطة.
// 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;
}
تعديل الرحلات المتتالية
عند تخصيص مركبة لرحلة متتالية، يتم تخصيص رحلة لمركبة حتى إذا سبق أن تم تخصيص مركبة لها.
يجب إسناد أي رحلة تم إنشاؤها في Fleet Engine إلى مركبة لكي تتمكّن أداة Fleet Engine من احتساب أوقات الوصول المقدَّرة للرحلات وتتبُّعها. يمكنك إجراء ذلك أثناء إنشاء الرحلة أو لاحقًا عند تعديلها.
بعد إسناد الرحلة إلى مركبة، تضيف Fleet Engine تلقائيًا نقاط التفتيش المرتبط بالرحلات المتتالية إلى حقل نقاط التفتيش للمركبة. يحتوي الحقل remainingWaypoints
في الرحلة على قائمة بكل نقاط الالتفاف، بما في ذلك تلك الواردة من الرحلات الأخرى التي سيتم زيارتها قبل نقطة تسليم الرحلة.
على سبيل المثال، لنفترض أنّ هناك رحلتَين متتاليتَين: الرحلة "أ" والرحلة "ب". استقلت المركبة المستهلك في الرحلة "أ"، وأثناء السير باتجاه مكان التسليم ، تلقّى السائق طلبًا لاستلام مستهلك آخر في الرحلة التالية، الرحلة "ب".
- يؤدي الاتصال بالرقم
getVehicle()
إلى عرضremainingWaypoints
التي تحتوي على:
أ تسليم → ب استلام → ب تسليم. - يعرض كلّ من
getTrip()
أوonTripRemainingWaypointsUpdated
المرجع المخصّص لرحلتَي أremainingWaypoints
التي تحتوي على:
موضع إنزال. - يعرض كلّ من
getTrip()
أوonTripRemainingWaypointsUpdated
المخصّص للردّ على الرحلة بremainingWaypoints
يحتوي على ما يلي:
أ موضع الاستلام → ب موضع الاستلام → ب موضع الاستلام.