يوضّح هذا المستند كيفية إنشاء رحلة متتالية وضبط الحقول الصحيحة وتعيينها لمركبة لتنفيذها. يفترض هذا الدليل أنّك أعددت Fleet Engine وأنشأت مركبات ولديك تطبيق سائق يعمل، ويمكنك أيضًا استخدام تطبيق مستهلك. يجب أن تكون على دراية أيضًا بسيناريوهات الرحلات المختلفة المتاحة للرحلات عند الطلب. اطّلِع على الأدلة التالية ذات الصلة بذلك:
- إعداد 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التي تحتوي على:
النزول من الرحلة "أ" ← الركوب في الرحلة "ب" ← النزول من الرحلة "ب".