إنشاء رحلات متتالية

يوضّح هذا المستند كيفية إنشاء رحلة متتالية، وضبط الحقول الصحيحة، وتعيينها لمركبة لتنفيذها. يفترض هذا الدليل أنّك قد أعددت Fleet Engine، وأنشأت مركبات، ولديك تطبيق يعمل للسائقين، ويمكنك أيضًا استخدام تطبيق للمستهلكين. يجب أيضًا أن تكون على دراية بمختلف سيناريوهات الرحلات المتاحة للرحلات عند الطلب. يمكنك الاطّلاع على الأدلة ذات الصلة التالية:

أساسيات إنشاء الرحلات

يوضّح هذا القسم تفاصيل الطلب اللازمة لإنشاء رحلة في Fleet Engine. يمكنك إصدار طلب إنشاء باستخدام gRPC أو REST.

  • طريقة CreateTrip(): gRPC أو REST
  • رسالة CreateTripRequest: gRPC فقط

حقول الرحلة

استخدِم الحقول التالية لإنشاء رحلة في Fleet Engine. يمكنك استخدام حقول مختلفة لأنواع الرحلات المختلفة: رحلة إلى وجهة واحدة أو وجهات متعددة، أو رحلة متتالية، أو رحلة مشتركة. يمكنك تقديم الحقول الاختيارية عند إنشاء الرحلة، أو يمكنك ضبطها لاحقًا عند تعديل الرحلة.

حقول الرحلة
الاسم مطلوب؟ الوصف
parent نعم سلسلة تتضمّن رقم تعريف المشروع. يجب أن يكون هذا المعرّف هو المعرّف نفسه المستخدَم في عملية دمج Fleet Engine بالكامل، مع أدوار حساب الخدمة نفسها.
trip_id نعم سلسلة تنشئها وتعرّف هذه الرحلة بشكل فريد. تخضع معرّفات الرحلات لقيود معيّنة، كما هو موضّح في المرجع.
trip_type نعم اضبط قيمة TripType على القيم التالية لنوع الرحلة الذي تريد إنشاءه:
  • وجهة واحدة: اضبطها على SHARED أو EXCLUSIVE.
  • وجهات متعدّدة: اضبط هذا الخيار على EXCLUSIVE.
  • متتالية: اضبطها على EXCLUSIVE.
  • التجميع المشترَك: اضبط هذا الخيار على SHARED.
pickup_point نعم تمثّل هذه السمة نقطة انطلاق الرحلة.
الوجهات الوسيطة نعم

الرحلات المتعددة الوجهات فقط: قائمة بالوجهات الوسيطة التي يتوقف فيها السائق بين مكانَي الاستلام والتسليم. وكما هو الحال مع dropoff_point، يمكن أيضًا ضبط هذا الحقل لاحقًا من خلال استدعاء UpdateTrip، ولكن الرحلة المتعددة الوجهات تتضمّن بطبيعتها وجهات وسيطة.

vehicle_waypoints نعم

الرحلات التي تتضمّن مشاركة الركوب فقط: يتيح هذا الحقل دمج نقاط الطريق من رحلات متعددة. وتتضمّن جميع نقاط الطريق المتبقية للمركبة المخصّصة، بالإضافة إلى نقاط طريق الاستلام والتسليم لهذه الرحلة. يمكنك ضبط هذا الحقل من خلال استدعاء CreateTrip أو UpdateTrip. يمكنك أيضًا تعديل نقاط الطريق الخاصة بالمركبة من خلال الحقل waypoints باستخدام طلب إلى UpdateVehicle. لا تعرض الخدمة هذه المعلومات عند إجراء مكالمات GetTrip لأسباب تتعلّق بالخصوصية.

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 الخاصة بالرحلة A تعرضان remainingWaypoints التي تحتوي على:
    نقطة تسليم.
  • إما getTrip() أو دالة رد الاتصال onTripRemainingWaypointsUpdated الخاصة بالرحلة B تعرضان remainingWaypoints التي تحتوي على:
    نقطة التوقّف أ → نقطة الاستلام ب → ونقطة التوقّف ب.

الخطوات التالية