تعديل حقول مركبات التوصيل

يتناول هذا المستند حقول المركبات المهمة التي يمكنك تعديلها عند إنشاء المركبات وإدارتها.

  • type: يمثّل هذا النوع مركبة التوصيل. ويؤثر ذلك في المسارات التي يتم إنشاؤها لهذه المركبة.
  • attributes[]: مصفوفة خيارات من النوع DeliveryVehicleAttribute. استخدِمها لتحديد معايير مخصّصة للمركبات في خدمتك من أجل تحسين سلوك الفلترة عند البحث عن المركبات أو إدراجها.
 

للاطّلاع على قائمة كاملة بحقول المركبات، يُرجى الرجوع إلى:

حقل سمات المركبة

استخدِم حقل attributes الخاص بالمركبة لإنشاء معايير مخصّصة تتيح للمستهلكين أو مشغّلي أساطيل المركبات العثور على مركبات في أسطولك باستخدام مجموعة متنوعة من معايير البحث. يؤدي ذلك إلى تحسين إمكانات تطبيقاتك في توفير نتائج أفضل للمركبات مقارنةً بما ستحصل عليه من استخدام معايير البحث استنادًا إلى حقول المركبات الأخرى فقط. يمكن أن تتضمّن كل مركبة 100 سمة كحدّ أقصى، ويجب أن يكون لكل سمة مفتاح فريد. يمكن أن تكون القيم سلاسل أو قيمًا منطقية أو أرقامًا.

على سبيل المثال، يمكنك تحديد سمة مخصّصة باسم المنطقة للتمييز بين المناطق التي تعمل فيها مركبات التوصيل في المدينة. يمكنك استخدام قيم السلسلة التالية لتمثيل مناطق مختلفة: 1B و2C و3A. يمكنك بعد ذلك استخدام فلتر في "تتبُّع الأسطول" لعرض المركبات التي تعمل في منطقة معيّنة فقط للمشغّل المسؤول عن تلك المنطقة.

ومع ذلك، ليس من الضروري أن تكون قيم السمات المخصّصة غير متداخلة. يمكنك استخدام معايير مثل available-at-night وhas-refrigeration. ويمكن أن تكون كلّ من هذه السمات سمة مخصّصة منفصلة تستخدم قيمًا منطقية. يمكن تعيين كل هذه السمات المخصّصة لمركبة معيّنة، بالإضافة إلى السمة المخصّصة المنطقة التي تم ضبطها على قيمة السلسلة المناسبة.

تعديل سمات المركبة

يمكن أن يتضمّن كل مفتاح attributes قيمة واحدة فقط لكل مركبة. يمكنك تعريف سمات مخصّصة للمركبة باستخدام attributes في قناع الحقل، ثم تقديم القيم استنادًا إلى الطريقة أدناه.

لا تتيح واجهة برمجة التطبيقات UpdateDeliveryVehicle تعديل سمة واحدة فقط. عند استخدام هذه الطريقة، سيؤدي أي استخدام للحقل attributes في قناع الحقل إلى إعادة تعريف المجموعة الكاملة من سمات المركبة. ويؤدي ذلك إلى استبدال أي سمة حالية غير مضمّنة بشكل صريح في قناع الحقل. إذا كنت تستخدم هذه الطريقة لتعريف سمة مخصّصة جديدة، عليك أيضًا إعادة تعريف كل سمة مخصّصة تريد أن تحتفظ بها المركبة. إذا استبعدت attributes في قناع الحقل، سيترك هذا الإجراء السمات المخصّصة الحالية كما تم تحديدها سابقًا للمركبة. إذا استخدمت attributes في قناع الحقل، ولكن بدون ضبط القيم، يكون ذلك مكافئًا لإزالة جميع السمات المخصّصة من المركبة.

مثال على تعديل حقول المركبة

يوضّح هذا القسم كيفية تعديل حقول المركبة باستخدام UpdateDeliveryVehicleRequest، والذي يتضمّن update_mask للإشارة إلى الحقول التي يجب تعديلها. لمزيد من التفاصيل، يُرجى الاطّلاع على مستندات Protocol Buffers حول أقنعة الحقول.

تتطلّب تعديلات الحقول الأخرى غير last_location امتيازات مشرف Fleet Engine Delivery.

مثال: ضبط سمة مخصّصة

يحدّد هذا المثال سمة جديدة: zone. كما هو موضّح في تعديل سمات المركبة أعلاه، يتطلّب تعديل الحقل attributes باستخدام هذه الطريقة الإشارة إلى جميع السمات المخصّصة التي تريد الاحتفاظ بها. لذلك، يعرض المثال قيمة available-at-night مكتوبة للحفاظ عليها من الاستبدال أثناء عملية تعديل تحدّد الحقل attributes.

راجِع مرجع providers.deliveryVehicles.patch.

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String VEHICLE_ID = "vehicle-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Vehicle settings
  String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
  DeliveryVehicle myDeliveryVehicle = DeliveryVehicle.newBuilder()
      .addAllAttributes(ImmutableList.of(
          DeliveryVehicleAttribute.newBuilder().setKey("zone").setValue("1B").build(),
          DeliveryVehicleAttribute.newBuilder().setKey("available-at-night").setValue("true").build()))
      .build();

  // DeliveryVehicle request
  UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
    UpdateDeliveryVehicleRequest.newBuilder()  // No need for the header
        .setName(vehicleName)
        .setDeliveryVehicle(myDeliveryVehicle)
        .setUpdateMask(FieldMask.newBuilder()
            .addPaths("attributes"))
        .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;
  }

REST

  # 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=attributes" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
      "attributes": [
        {"key": "zone", "value": "1B"},
        {"key": "available-at-night", "value": "true"}
      ]
  }
  EOM

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