חיפוש משימות

במסמך הזה מתוארות הדרכים שבהן אפשר למצוא את פרטי המשימות מהשרת או מהדפדפן. ב-Fleet Engine יש תמיכה בשתי דרכים לחיפוש משימות:

  • חיפוש משימות: אפשר לחפש משימות לפי המזהים הבאים:

    • מזהה המשימה: משמש משתמשים כמו מפעילי ציי רכב שיש להם גישה לתצוגה המלאה של נתוני המשימה.
    • מזהה מעקב: משמש את תוכנת הלקוח כדי לספק מידע מוגבל למשתמש קצה, למשל מתי החבילה אמורה להגיע לבית שלו.

    חשוב להבין את ההבדל בין מזהה המשימה לבין מזהה המעקב אחרי המשימה. מדובר בשני דברים שונים. תוכלו להיעזר בשדות הבסיסיים של המשימות במדריך המשימות המתוזמנות.

  • הצגת רשימת משימות: גישה רחבה למשימות, שמיועדת למשתמשים מהימנים בלבד.

חיפוש משימות

בקטע הזה מוסבר איך לחפש משימות לפי מזהה המשימה או מזהה המעקב. הוא צריך לעמוד בדרישות הבאות:

  • חיפושים לפי מזהה מעקב חייבים לעמוד בכללי הגישה שמפורטים בקטע כללי גישה לאובייקטים במעקב.

  • מומלץ להשתמש בטוקן הכי מצומצם שאפשר כדי להגביל את סיכוני האבטחה. לדוגמה, אם משתמשים באסימון הצרכן למשלוח, כל הקריאות מחזירות רק מידע שרלוונטי לאותו משתמש הקצה, כמו השולח או המקבל של המשלוח. כל שאר המידע מצנזר בתגובה מ-Fleet Engine. מידע נוסף על אסימונים זמין במאמר אסימוני אינטרנט JSON.

חיפוש משימה לפי מזהה המשימה

אפשר לחפש משימה לפי מזהה המשימה בסביבת שרת באמצעות gRPC או REST. בדוגמאות הבאות מוסבר איך להשתמש בספריית gRPC של Java או בבקשת REST כדי להפעיל את GetTask.

gRPC

 static final String PROJECT_ID = "my-delivery-co-gcp-project";
 static final String TASK_ID = "task-8597549";

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Task request
 String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
 GetTaskRequest getTaskRequest = GetTaskRequest.newBuilder()  // No need for the header
     .setName(taskName)
     .build();

 try {
   Task task = deliveryService.getTask(getTaskRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;

      case PERMISSION_DENIED:
        break;
   }
   return;
 }

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<taskId>

  • &lt;id&gt; הוא מזהה ייחודי של המשימה.
  • &lt;taskId&gt; הוא המזהה של המשימה לחיפוש.
  • כותרת הבקשה צריכה להכיל את השדה Authorization עם הערך Bearer <token>, שבו השרת <token> מונפק על ידי השרת, בהתאם להנחיות שמפורטות בתפקידי חשבון שירות ובאסימוני אינטרנט JSON.
  • גוף הבקשה חייב להיות ריק.
  • אם החיפוש מצליח, גוף התגובה מכיל ישות של משימה.

דוגמה לפקודה curl:

    # Set JWT, PROJECT_ID, and TASK_ID in the local environment
    curl -H "Authorization: Bearer ${JWT}" \
      "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}"

חיפוש משימות לפי מזהה לצורכי מעקב

בדוגמאות הבאות מוסבר איך לחפש משימות לפי מזהה המעקב שלהן באמצעות gRPC או קריאה ל-HTTP REST אל GetTaskTrackingInfo.

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TRACKING_ID = "TID-7449w087464x5";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Tasks request
String parent = "providers/" + PROJECT_ID;
GetTaskTrackingInfoRequest getTaskTrackingInfoRequest = GetTaskTrackingInfoRequest.newBuilder()  // No need for the header
    .setParent(parent)
    .setTrackingId(TRACKING_ID)
    .build();

try {
  TaskTrackingInfo taskTrackingInfo = deliveryService.getTaskTrackingInfo(getTaskTrackingInfoRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;

     case PERMISSION_DENIED:
       break;
  }
  return;
}

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/taskTrackingInfo/<tracking_id>

  • &lt;tracking_id&gt; הוא המזהה לצורכי מעקב שמשויך למשימה.

  • כותרת הבקשה חייבת להכיל שדה Authorization עם הערך Bearer <token>, כאשר <token> נושא את התפקיד הנכון בחשבון השירות. למידע נוסף, ראו תפקידי חשבון שירות.

  • אם החיפוש מצליח, גוף התגובה מכיל ישות taskTrackingInfo.

פקודה curl לדוגמה:

# Set JWT, PROJECT_ID, and TRACKING_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
  "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/taskTrackingInfo/${TRACKING_ID}"

הצגת רשימה של משימות

הצגת רשימה של משימות מבקשת גישה רחבה למשימות. הוספת משימות לרשימת המשימות מיועדת רק למשתמשים מהימנים. משתמשים באסימוני האימות של 'הקורא של Fleet' ב-Delivery Fleet או של 'אדמין מסירה' כשמגישים בקשות למשימות של רשימות. מידע נוסף זמין במאמר תפקידים של חשבונות שירות.

עימוד רשימות

רשימות המשימות מחולקות לדפים. אפשר לציין גודל דף בבקשות למשימות של רשימה. אם מציינים גודל דף, מספר המשימות שיוחזרו לא יהיה גדול יותר מגודל הדף שצוין. אם לא קיים גודל דף, כדאי להשתמש בברירת מחדל סבירה. אם גודל הדף המבוקש חורג מערך מקסימלי פנימי, המערכת משתמשת בערך המקסימלי הפנימי.

רשימת משימות יכולה לכלול אסימון לקריאת דף התוצאות הבא. כדי לאחזר את הדף הבא, צריך לשלוח מחדש את אותה בקשה עם אסימון הדף. כשהאסימון של הדף שמוחזר ריק, אי אפשר לאחזר עוד משימות.

השדות שבהם אפשר לראות את רשימת המשימות

כשמציגים את המשימות, מערכת Fleet Engine מסננת את השדות הבאים:

  • VehicleStop.planned_location
  • VehicleStop.state
  • VehicleStop.TaskInfo.taskId

יש להשתמש בפורמטים הבאים של שדות על סמך הצעות לשיפור של Google API:

סוג שדה פורמט דוגמה
חותמת זמן RFC-3339 task_outcome_time = 2022-03-01T11:30:00-08:00
משך מספר השניות ואחריהן s task_duration = 120s
Enum מחרוזת state = CLOSED AND type = PICKUP
מיקום point.latitude וגם point.longitude planned_location.point.latitude > 36.1 AND planned_location.point.longitude < -122.0

סינון המשימות שברשימה

אפשר לסנן את המשימות שמפורטות לפי רוב מאפייני המשימות. למידע על התחביר של שאילתות סינון, ראו AIP-160. אם לא צוינה שאילתת סינון, כל המשימות יופיעו ברשימה.

בטבלה הבאה מוצגים מאפייני משימות תקינים שבהם אפשר להשתמש לצורך סינון:

מאפייני משימה לסינון רשימות
  • type
  • attributes
  • tracking_id
  • delivery_vehicle_id
  • state
  • planned_location
  • task_duration
  • task_duration_outcome
  • task_outcome
  • task_outcome_location
  • task_outcome_time

רשימה מלאה של אופרטורים של שאילתות סינון מופיעה ב-AIP-160.

הצגת רשימה של דוגמאות למשימות

בדוגמה הבאה תוכלו לראות איך ליצור רשימה של משימות בשביל deliveryVehicleId ומאפיין משימה, גם באמצעות ספריית Java gRPC וגם באמצעות קריאה ל-REST ב-HTTP ל-ListTasks.

תגובה מוצלחת עדיין יכולה להיות ריקה. תגובה ריקה מציינת שאין משימות המשויכות ל-deliveryVehicleId שצוין.

gRPC

 static final String PROJECT_ID = "my-delivery-co-gcp-project";
 static final String TRACKING_ID = "TID-7449w087464x5";

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Tasks request
 String parent = "providers/" + PROJECT_ID;
 ListTasksRequest listTasksRequest = ListTasksRequest.newBuilder()  // No need for the header
     .setParent(parent)
     .setFilter("delivery_vehicle_id = 123 AND attributes.foo = true")
     .build();

 try {
   ListTasksResponse listTasksResponse = deliveryService.listTasks(listTasksRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;

      case PERMISSION_DENIED:
        break;
   }
   return;
 }

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks

כדי להחיל מסנן על המשימות ברשימה, צריך לכלול את הערך של הפרמטר 'סינון' של כתובת ה-URL, עם שאילתת סינון שמסומנת בתו בריחה של כתובת URL.

כותרת הבקשה חייבת לכלול את השדה Authorization עם הערך Bearer <token>, כאשר <token> מכיל את התפקיד הנכון בחשבון השירות. למידע נוסף, ראו תפקידי חשבון שירות.

חיפוש מוצלח מספק גוף תשובה עם המבנה הבא:

    // JSON representation
    {
      "tasks": [
        {
          object (Task)
        }
      ],
      "nextPageToken": string,
      "totalSize": integer
    }

דוגמה לפקודה curl:

 # Set JWT, PROJECT_ID, and VEHICLE_ID in the local environment
 curl -H "Authorization: Bearer ${JWT}" \
   "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?filter=state%20%3D%20OPEN%20AND%20delivery_vehicle_id%20%3D%20${VEHICLE_ID}"

המאמרים הבאים