يوضّح هذا المستند كيفية إنشاء رحلة متتالية، وضبط الحقول الصحيحة، وتعيينها لمركبة لتنفيذها. ويفترض هذا الدليل أنّك قد أعددت 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
التي تتضمّن:
نقطة النزول → نقطة الاستلام → ونقطة النزول.