به روز رسانی وظایف وسیله نقلیه تحویل

این سند مستلزم آشنایی با موارد زیر است:

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

می‌توانید کارهای خودرو را در هر زمانی به‌روزرسانی کنید، اما معمولاً این کار را برای اهداف زیر انجام می‌دهید:

  • کارهایی را برای یک وسیله نقلیه برنامه ریزی کنید تا کامل شود. می‌توانید این کار را با درخواست به‌روزرسانی که توقف جدیدی به خودرو اضافه می‌کند، یا با درخواست به‌روزرسانی که وظیفه جدیدی را به توقف فعلی اضافه می‌کند، انجام دهید.
  • ترتیب وظایف موجود مرتبط با توقف خودرو معین را به روز کنید .
  • مکان تکمیل کار را تغییر دهید. به‌طور پیش‌فرض، Fleet Engine مکان تکمیل کار را به عنوان همان مکان توقف وسیله نقلیه مرتبط با کار علامت‌گذاری می‌کند. اگر ترجیح می دهید، می توانید مکان های خاصی را برای وظایف فردی مشخص کنید. به عنوان مثال، ممکن است یک وسیله نقلیه در یک مجتمع بزرگ توقف کنید تا تعدادی بسته را تحویل بگیرید، که به هر کدام یک اتاق تحویل نامه خاص اختصاص داده شده است.
  • کارهایی که قبلاً محول شده‌اند را ببندید تا از ترتیب به‌روزرسانی‌شده خارج شوند. برای جزئیات به نهایی کردن وظایف مراجعه کنید.

وظایف تحویل را برنامه ریزی یا تغییر دهید

در صورتی که به راننده امکان مدیریت وظایف را با استفاده از یک دستگاه قابل اعتماد در اختیار راننده قرار دهید، می‌توانید از محیط سرور یا با استفاده از Driver SDK برنامه‌ریزی یا تغییر دهید. فقط از یک روش استفاده کنید تا از شرایط مسابقه اجتناب کنید و یک منبع حقیقت را حفظ کنید.

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

فیلدهای لازم برای به روز رسانی وظایف

این بخش فیلدهای مورد نیاز برای تنظیم هنگام به روز رسانی یک کار برای یک وسیله نقلیه را مستند می کند. هیچ فیلد اختیاری ارائه نشده است. موتور ناوگان تمام فیلدهای دیگر موجود در موجودیت را برای به روز رسانی نادیده می گیرد.

فیلد الزامی ارزش
remainingVehicleJourneySegments فهرستی از بخش‌های سفر برای وظایف به ترتیبی که باید اجرا شوند. اولین وظیفه در لیست ابتدا اجرا می شود.
remainingVehicleJourneySegments[i].stop توقف کار i در لیست.
remainingVehicleJourneySegments[i].stop.plannedLocation مکان برنامه ریزی شده برای توقف.
remainingVehicleJourneySegments[i].stop.tasks فهرستی از کارهایی که باید در این توقف خودرو انجام شوند.
remainingVehicleJourneySegments[i].stop.state State.NEW

وظایف را به عنوان مثال اختصاص دهید

مثال‌های زیر نحوه استفاده از کتابخانه gRPC جاوا و تماس HTTP REST با UpdateDeliveryVehicle را برای افزودن دو کار جدید برای خودرو نشان می‌دهند.

gRPC

 static final String PROJECT_ID = "my-delivery-co-gcp-project";
 static final String VEHICLE_ID = "vehicle-8241890";
 static final String TASK1_ID = "task-756390";
 static final String TASK2_ID = "task-849263";

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Vehicle settings
 String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
 DeliveryVehicle deliveryVehicle = DeliveryVehicle.newBuilder()
     .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()  // 1st stop
        .setStop(VehicleStop.newBuilder()
            .setPlannedLocation(LocationInfo.newBuilder()
                .setPoint(LatLng.newBuilder()
                    .setLatitude(37.7749)
                    .setLongitude(122.4194)))
            .addTasks(TaskInfo.newBuilder().setTaskId(TASK1_ID))
            .setState(VehicleStop.State.NEW)))
     .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()  // 2nd stop
        .setStop(VehicleStop.newBuilder()
            .setPlannedLocation(LocationInfo.newBuilder()
                .setPoint(LatLng.newBuilder()
                    .setLatitude(37.3382)
                    .setLongitude(121.8863)))
            .addTasks(TaskInfo.newBuilder().setTaskId(TASK2_ID))
            .setState(VehicleStop.State.NEW)))
     .build();

 // DeliveryVehicle request
 UpdateDeliveryVehicleRequest updateDeliveryRequest =
   UpdateDeliveryVehicleRequest.newBuilder()  // No need for the header
       .setName(vehicleName)
       .setDeliveryVehicle(deliveryVehicle)
       .setUpdateMask(FieldMask.newBuilder().addPaths("remaining_vehicle_journey_segments"))
       .build();

 try {
   DeliveryVehicle updatedDeliveryVehicle =
       deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;
      case PERMISSION_DENIED:
        break;
   }
   return;
 }

استراحت

 PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=remainingVehicleJourneySegments`
  • <id> یک شناسه منحصر به فرد برای وسیله نقلیه تحویلی در ناوگان شما است که قصد دارید سفارش کار را برای آن به روز کنید. این شناسه ای است که هنگام ایجاد وسیله نقلیه مشخص کرده اید.

  • سرصفحه درخواست باید حاوی یک فیلد مجوز با مقدار حامل <token> باشد که در آن <token> توسط سرور شما مطابق دستورالعمل‌های شرح داده شده در نقش‌های حساب سرویس و نشانه‌های وب JSON صادر می‌شود.

  • بدنه درخواست باید حاوی یک موجودیت DeliveryVehicle باشد

مثال دستور curl :

  # Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
  # environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=remainingVehicleJourneySegments" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
    "remainingVehicleJourneySegments": [
      {
        "stop": {
          "state": "NEW",
          "plannedLocation": {
            "point": {
              "latitude": 37.7749,
              "longitude": -122.084061
            }
          },
          "tasks": [
            {
              "taskId": "${TASK1_ID}"
            }
          ]
        }
      },
      {
        "stop": {
          "state": "NEW",
          "plannedLocation": {
            "point": {
              "latitude": 37.3382,
              "longitude": 121.8863
            }
          },
          "tasks": [
            {
              "taskId": "${TASK2_ID}"
            }
          ]
        }
      }
    ]
  }
  EOM

بعدش چی