חיפוש משימות

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

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

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

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

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

חיפוש משימות

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

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

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

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

אפשר לחפש משימה לפי מזהה המשימה שלה בסביבת שרת באמצעות gRPC או REST. הדוגמאות הבאות מראות איך להשתמש בספריית Java gRPC או בקשת 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 עם הערך הערוץ <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 עם הערך הספק <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}"

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

הצגת רשימה של משימות מבקשת גישה רחבה למשימות. הצגת רשימת המשימות מיועדת רק משתמשים מהימנים. שימוש באסימוני אימות של Reader 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 וגם עם קריאה ל-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 עם הערך הספק <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}"

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