במסמך הזה מפורטים שדות חשובים של כלי רכב שאפשר לעדכן כשיוצרים ומנהלים כלי רכב.
|
רשימה מלאה של שדות הרכב מופיעה במאמרים הבאים: |
שדה מאפייני הרכב
אפשר להשתמש בשדה attributes
כלי רכב כדי ליצור קריטריונים מותאמים אישית שיאפשרו לצרכנים או למנהלי צי רכב למצוא כלי רכב בצי לפי מגוון רחב יותר של קריטריונים לחיפוש. כך האפליקציות יכולות לספק התאמות טובות יותר של כלי רכב בהשוואה לחיפוש לפי קריטריונים שמבוססים רק על שדות אחרים של כלי רכב. לכל רכב יכולים להיות עד 100 מאפיינים, וכל אחד מהם חייב להיות בעל מפתח ייחודי. הערכים יכולים להיות מחרוזות, ערכים בוליאניים או מספרים.
לדוגמה, אפשר להצהיר על מאפיין מותאם אישית בשם zone כדי להבחין בין האזורים בעיר שבהם פועלים כלי הרכב שלכם למשלוחים. כדי לייצג אזורים שונים, אפשר להשתמש בערכי מחרוזת כמו 1B
, 2C
ו-3A
. לאחר מכן, תוכלו להשתמש במסנן במעקב אחר צי הרכב כדי להציג רק את כלי הרכב שפועלים באזור מסוים לאחראי על האזור הזה.
עם זאת, ערכי מאפיינים מותאמים אישית לא חייבים להיות ייחודיים. אפשר להשתמש בקריטריונים כמו available-at-night (זמין בלילה) ו-has-refrigeration (יש קירור). כל אחד מהם יכול להיות מאפיין מותאם אישית נפרד שמשתמש בערכים בוליאניים. לרכב מסוים אפשר להקצות את כל שלושת המאפיינים המותאמים אישית האלה, יחד עם המאפיין המותאם אישית אזור שמוגדר לערך המחרוזת המתאים.
עדכון מאפייני הרכב
לכל מפתח attributes
יכול להיות רק ערך אחד לכל רכב. מצהירים על מאפייני רכב מותאמים אישית באמצעות attributes
במסכת השדות, ואז מספקים ערכים לפי השיטה שבהמשך.
אי אפשר לעדכן רק מאפיין אחד באמצעות ה-API UpdateDeliveryVehicle
. כשמשתמשים בשיטה הזו, כל שימוש בשדה attributes
במסכת השדות גורם להצהרה מחדש של כל קבוצת מאפייני הרכב. כתוצאה מכך, כל מאפיין קיים שלא נכלל במפורש במסכת השדה יימחק. אם משתמשים בשיטה הזו כדי להצהיר על מאפיין מותאם אישית חדש, צריך גם להצהיר מחדש על כל מאפיין מותאם אישית שרוצים שהרכב ישמור. אם לא כוללים את attributes
במסכת השדות, השיטה הזו משאירה את המאפיינים המותאמים אישית הקיימים כמו שהם הוגדרו קודם לרכב.
אם משתמשים ב-attributes
במסכת השדות, אבל בלי להגדיר ערכים, זה שווה להסרת כל המאפיינים המותאמים אישית של הרכב.
דוגמה לעדכון שדות של כלי רכב
בקטע הזה מוסבר איך לעדכן שדות של רכבים באמצעות UpdateDeliveryVehicleRequest
, שכולל update_mask
כדי לציין אילו שדות לעדכן. פרטים נוספים מופיעים במסמכי התיעוד של Protocol Buffers בנושא field masks.
כדי לעדכן שדות אחרים מלבד 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