يوضّح هذا المستند كيفية إنشاء رحلة متتالية وضبط الحقول الصحيحة وتعيينها لمركبة لتنفيذها. يفترض هذا المستند أنّك أعددت Fleet Engine وأنشأت مركبات ولديك تطبيق سائق يعمل، وتطبيق مستهلك اختياريًا. يجب أيضًا أن تكون على دراية بمختلف سيناريوهات الرحلات المتاحة للرحلات عند الطلب. يُرجى الاطّلاع على الأدلة ذات الصلة التالية لمعرفة ذلك:
- إعداد Fleet Engine
- إنشاء مركبة
- سيناريوهات الرحلات في نظرة عامة على الرحلات عند الطلب
الأساسيات المتعلّقة بإنشاء الرحلات
يوضّح هذا القسم تفاصيل الطلب اللازمة لإنشاء رحلة في Fleet Engine. يمكنك إرسال طلب إنشاء باستخدام gRPC أو REST.
حقول الرحلة
استخدِم الحقول التالية لإنشاء رحلة في Fleet Engine. يمكنك استخدام حقول مختلفة لأنواع الرحلات المختلفة: الرحلات ذات الوجهة الواحدة أو المتعددة، أو الرحلات المتتالية، أو رحلات التشارك. يمكنك تقديم الحقول الاختيارية عند إنشاء الرحلة، أو يمكنك ضبطها لاحقًا عند تعديل الرحلة.
| الاسم | مطلوب؟ | الوصف |
|---|---|---|
| parent | نعم | سلسلة تتضمّن رقم تعريف المشروع يجب أن يكون هذا الرقم التعريفي هو نفسه المستخدَم في عملية دمج Fleet Engine بالكامل، مع أدوار حساب الخدمة نفسها. |
| trip_id | نعم | سلسلة تنشئها وتحدّد هذه الرحلة بشكل فريد تخضع أرقام تعريف الرحلات لقيود معيّنة، كما هو موضّح في المرجع. |
| trip_type | نعم | اضبط TripType على القيم التالية لنوع الرحلة التي تنشئها:
|
| pickup_point | نعم | نقطة انطلاق الرحلة |
| Intermediate destinations | نعم | الرحلات المتعددة الوجهات فقط: قائمة بالوجهات الوسيطة التي يزورها السائق بين
نقطة الانطلاق ونقطة الوصول. على غرار |
| 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التي تحتوي على:
نقطة الوصول في الرحلة "أ" ← نقطة الانطلاق في الرحلة "ب" ← ونقطة الوصول في الرحلة "ب".