חיפוש משימות

במסמך הזה מתוארות הדרכים שבהן אפשר למצוא את פרטי המשימות מהשרת או מהדפדפן. ב-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; הוא מזהה ייחודי של המשימה.
  • <taskId> הוא המזהה של המשימה שרוצים לחפש.
  • כותרת הבקשה חייבת להכיל שדה Authorization עם הערך הערוץ <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>

  • ‎<tracking_id> הוא המזהה לצורכי מעקב שמשויך למשימה.

  • כותרת הבקשה חייבת להכיל שדה Authorization עם הערך הספק <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}"

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

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

עימוד רשימות

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

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

שדות ברשימה של משימות

כשמציגים את המשימות, מערכת 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

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

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

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

מאפייני משימה לסינון רשימות
  • 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 וגם באמצעות קריאה ל-HTTP REST אל 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

כדי להחיל מסנן על המשימות שברשימה, צריך לכלול 'מסנן' פרמטר של כתובת אתר עם ערך של שאילתת סינון שמסומנת בתו בריחה (escape) של כתובת 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}"

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