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

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

الرحلات المتعددة الوجهات فقط: قائمة بالوجهات الوسيطة التي يزورها السائق بين نقطة الانطلاق ونقطة الوصول. على غرار 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 للرحلة أ remainingWaypoints التي تحتوي على:
    نقطة الوصول.
  • يعرض getTrip() أو معاودة الاتصال onTripRemainingWaypointsUpdated لـ الرحلة "ب" remainingWaypoints التي تحتوي على:
    نقطة الوصول في الرحلة "أ"نقطة الانطلاق في الرحلة "ب" ← ونقطة الوصول في الرحلة "ب"
    .

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