سفرهای پشت سر هم ایجاد کنید

این سند نحوه ایجاد یک سفر پشت سر هم، تنظیم فیلدهای صحیح و اختصاص آن به وسیله نقلیه برای انجام را شرح می‌دهد. فرض بر این است که شما Fleet Engine را راه‌اندازی کرده‌اید، وسایل نقلیه ایجاد کرده‌اید، یک برنامه راننده فعال و در صورت تمایل، یک برنامه مصرف‌کننده دارید. همچنین باید با سناریوهای مختلف سفر موجود برای سفرهای درخواستی آشنا باشید. برای این منظور به راهنماهای مرتبط زیر مراجعه کنید:

اصول اولیه ایجاد سفر

این بخش جزئیات درخواست لازم برای ایجاد یک سفر در Fleet Engine را شرح می‌دهد. شما با استفاده از gRPC و REST درخواست ایجاد را ارسال می‌کنید.

  • متد CreateTrip() : gRPC یا REST
  • پیام CreateTripRequest : فقط gRPC

زمینه‌های سفر

برای ایجاد یک سفر در Fleet Engine از فیلدهای زیر استفاده کنید. می‌توانید از فیلدهای مختلف برای انواع مختلف سفرها استفاده کنید: سفرهای تک یا چند مقصدی، سفرهای پشت سر هم یا سفرهای اشتراکی. می‌توانید فیلدهای اختیاری را هنگام ایجاد سفر ارائه دهید، یا می‌توانید بعداً هنگام به‌روزرسانی سفر، آنها را تنظیم کنید.

زمینه‌های سفر
نام الزامی است؟ توضیحات
والدین بله رشته‌ای که شامل شناسه پروژه است. این شناسه باید همان شناسه‌ای باشد که در کل یکپارچه‌سازی Fleet Engine شما، با همان نقش‌های حساب سرویس، استفاده می‌شود.
شناسه سفر بله رشته‌ای که شما ایجاد می‌کنید و به طور منحصر به فرد این سفر را مشخص می‌کند. شناسه‌های سفر محدودیت‌های خاصی دارند، همانطور که در مرجع ذکر شده است.
نوع_سفر بله برای نوع سفری که ایجاد می‌کنید، TripType را روی مقادیر زیر تنظیم کنید:
  • مقصد واحد : روی SHARED یا EXCLUSIVE تنظیم کنید.
  • چند مقصدی : روی EXCLUSIVE تنظیم کنید.
  • پشت سر هم : روی EXCLUSIVE تنظیم کنید.
  • اشتراک‌گذاری مشترک : روی SHARED تنظیم شود.
نقطه برداشت بله نقطه مبدا سفر.
مقاصد میانی بله

فقط سفرهای چند مقصدی : فهرست مقصدهای میانی که راننده بین سوار شدن و پیاده کردن مسافر از آنها بازدید می‌کند. همانند dropoff_point ، این فیلد را می‌توان بعداً با فراخوانی UpdateTrip نیز تنظیم کرد، اما یک سفر چند مقصدی طبق تعریف شامل مقصدهای میانی نیز می‌شود.

نقاط مسیر وسیله نقلیه بله

فقط سفرهای اشتراکی : این فیلد از ادغام نقاط مسیر از چندین سفر پشتیبانی می‌کند. این فیلد شامل تمام نقاط مسیر باقی‌مانده برای وسیله نقلیه اختصاص داده شده و همچنین نقاط مسیر سوار و پیاده شده برای این سفر است. می‌توانید این فیلد را با فراخوانی CreateTrip یا UpdateTrip تنظیم کنید. همچنین می‌توانید نقاط مسیر وسیله نقلیه را از طریق فیلد waypoints با فراخوانی UpdateVehicle به‌روزرسانی کنید. این سرویس به دلایل حریم خصوصی، این اطلاعات را در فراخوانی‌های GetTrip برنمی‌گرداند.

تعداد_مسافران خیر تعداد مسافران در سفر.
نقطه رهاسازی خیر مقصد سفر.
شناسه وسیله نقلیه خیر شماره شناسایی وسیله نقلیه اختصاص داده شده به سفر.

مثال: یک سفر پشت سر هم ایجاد کنید

در ادامه نحوه ایجاد یک سفر پشت سر هم و اختصاص آن به یک وسیله نقلیه نشان داده شده است. در این سناریو، ایجاد سفر مانند یک سفر تک مقصدی است. تنها بعداً می‌توانید سفر دیگری ایجاد کنید و آن را به وسیله نقلیه‌ای که از قبل یک سفر فعال دارد، اختصاص دهید.

// 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 بتواند ETA سفر را محاسبه و آن را ردیابی کند. می‌توانید این کار را یا در حین ایجاد سفر یا بعداً هنگام به‌روزرسانی سفر انجام دهید.

پس از اینکه سفر را به یک وسیله نقلیه اختصاص دادید، Fleet Engine به طور خودکار نقاط مسیر مرتبط با سفرهای پشت سر هم را به فیلد نقاط مسیر وسیله نقلیه اضافه می‌کند. فیلد نقاط مسیر remainingWaypoints یک سفر شامل لیستی از تمام نقاط مسیر، از جمله نقاط مسیر سفرهای دیگری است که قبل از پیاده شدن مسافر از آنها بازدید خواهد شد.

برای مثال، دو سفر پشت سر هم را در نظر بگیرید: سفر الف و سفر ب . وسیله نقلیه، مسافر سفر الف را سوار کرده است و در حین حرکت به سمت محل تحویل، راننده درخواستی برای سوار کردن مسافر دیگری برای سفر بعدی، سفر ب، دریافت می‌کند.

  • فراخوانی getVehicle() remainingWaypoints را برمی‌گرداند که شامل موارد زیر هستند:
    الف ) پیاده کردنب) سوار کردنب ) پیاده کردن .
  • چه تابع getTrip() ‎ و چه تابع onTripRemainingWaypointsUpdated برای سفر A، remainingWaypoints برمی‌گردانند که شامل موارد زیر باشند:
    یک پیاده شدن (یا پیاده شدن از ماشین) .
  • چه تابع getTrip() ‎ و چه تابع onTripRemainingWaypointsUpdated برای سفر B، remainingWaypoints برمی‌گردانند که شامل موارد زیر باشند:
    الف ) پیاده کردنب) برداشتن → و ب ) پیاده کردن .

قدم بعدی چیست؟