מסמך זה מניח שקראת את מדריך המבוא כדי משימות מתוזמנות גם בקטע Introduction to Fleet Engine מהי משימה מתוזמנת? בקטע הזה.
ב-Fleet Engine למשימות מתוזמנות יש קטגוריות רחבות שונות של משימות:
- משימות משלוח: משמשות למשימות שיוענקו, כולל איסוף ומסירה של משלוחים.
- משימות של חוסר זמינות: השירות משמש למקרים שבהם הנהגים לא זמינים, למשל כמו ההפסקות הנדרשות.
- משימות של עצירה מתוזמנת: משמש למשימות שלא קשורות לנהיגה בתיבות בענן או בחשבון הלקוח. מיקומים, כמו זמן כניסה לבניין או איתור נקודת משלוח.
במסמך הזה מוסבר איך ליצור משימות ללא משלוח בשרת שלכם. עבור למשימות משלוח תוכלו למצוא במאמר יצירת משימות משלוח.
שדות משימה למשימות שלא קשורות לנהיגה
בקטע הזה מפורטים שדות המשימה הנדרשים גם בשביל חוסר זמינות ומשימות של עצירה מתוזמנת.
שדות חובה למשימות
צריך לספק לכל משימה שיוצרים ב-Fleet Engine
ויכול גם לספק כל אחד מהשדות האופציונליים. מנוע ימי
מתעלם מכל השדות האחרים וגורם לחריגה אם המשימה נוצרת
הבקשה מספקת deliveryVehicleId
שהוקצה. כדי להקצות משימות לרכב:
להשתמש ב-UpdateDeliveryVehicleRequest
. מידע נוסף זמין במאמר הבא:
לעדכן את המשימות.
שדה | ערך |
---|---|
type |
צריך להגדיר את הסוג שתואם לסוג המשימה, שהוא אחד מהבאים:
|
state |
State.OPEN |
task_id |
מזהה משימה ייחודי. זה לא יכול להיות מספר המעקב של המשלוח. אם אין מזהי משימה במערכת שלך, אפשר ליצור מזהה משימה מזהה (UUID). פרטים נוספים זמינים במאמר מזהי משימות. |
tracking_id |
רק PICKUP או DELIVERY משימות:
המספר או המזהה שמשמשים אותך למעקב אחרי משלוח. לא מומלץ
מספקים את השדה הזה למשימות שלא קשורות למשלוח. |
plannedLocation |
PICKUP , DELIVERY , או
SCHEDULED_STOP משימות בלבד:
המיקום שבו צריך להשלים את המשימה. לא נדרש עבור:
UNAVAILABLE משימות. |
taskDuration |
משך הזמן הצפוי כדי להשלים את המשימה. לדוגמה, כדי לחפש לחניה או ללכת למיקום המסירה. |
שדות אופציונליים של משימות משלוח
שדה | ערך |
---|---|
targetTimeWindow |
חלון הזמן שבמהלכו צריך להשלים את המשימה. השדה הזה לא משפיעה על התנהגות הניתוב. |
task_tracking_view_config |
רק PICKUP או DELIVERY משימות:
התצורה של מעקב אחר משימות שמציינת אילו רכיבי נתונים
גלויות למשתמשי הקצה ובאילו נסיבות. |
attributes |
רשימת מאפיינים של משימות בהתאמה אישית. לכל מאפיין צריך להיות מפתח ייחודי. |
יצירת משימה של אי-זמינות
אתם יכולים ליצור משימה שמציינת אי-זמינות. לדוגמה, להפסקות של נהגים. כדי ליצור משימה של אי-זמינות, צריך להשתמש בהנחיות הבאות:
- בוחרים
UNAVAILABLE
כסוג המשימה. - לא לכלול מזהה לצורכי מעקב.
- למרות שלא צריך לציין מיקום למשימת אי-זמינות, כך תוכלו לאפשר חישובים משופרים של זמן ההגעה המשוער לאורך היום.
כללי חשיפה מיוחדים חלים על מיקום הרכב כשהוא נמצא
משימה אחת (UNAVAILABLE
) לשיתוף טיולים.
- אפליקציות לצרכנים שמשולבות עם ספריית המעקב אחר משלוחים: המשימה של הרכב לא זמינה, המשתמשים באפליקציה לצרכנים לא יכולים לראות מיקום הרכב, למרות שהוא עדיין יכול לראות את פרטי הסטטוס של המשלוח שלהם.
- אפליקציות למעקב אחר כלל המכשירים בארגון שמשולבות עם ספריית כלל המכשירים בארגון: כאשר נמצא במשימה של אי זמינות, מנהלי ציים שמשתמשים בכלל אפליקציית המעקב תוכל לראות את מיקום הרכב במשימות של אי-זמינות.
בדוגמאות הבאות אפשר לראות איך יוצרים משימת אי-זמינות מתוזמנת באמצעות
ספריית Java gRPC או איך לשלוח בקשת HTTP REST לצורך
CreateTask
.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
.setType(Task.Type.UNAVAILABLE)
.setState(Task.State.OPEN)
.setTaskDuration(
Duration.newBuilder().setSeconds(60 * 60)) // 1hr break
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent) // Avoid using auto-incrementing IDs for the taskId
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTask(task) // Initial state
.build();
// Error handling
// If Fleet Engine does not have task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.
try {
Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
```
REST
כדי ליצור משימת unavailability מסביבת שרת, צריך ליצור REST מסוג HTTP
שיחה אל CreateTask
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id> הוא מזהה ייחודי של המשימה.
כותרת הבקשה חייבת להכיל שדה Authorization עם הערך הערוץ <token>, שבו ה-<token> מונפק על ידי השרת בהתאם להנחיות שמפורטות בתפקידים של חשבון שירות אסימוני אינטרנט JSON.
גוף הבקשה חייב להכיל ישות Task
עם השדות המתאימים
שמתוארים בשדות משימה למשימות שלא קשורות לנהיגה.
פקודת curl
לדוגמה:
# Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"type": "UNAVAILABLE",
"state": "OPEN",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "300s"
}
EOM
איך יוצרים משימה של עצירה מתוזמנת
אתם יכולים ליצור משימה לעצירה מתוזמנת. למשל, למשימות שלא קשורות לנהיגה במיקומים של לקוחות, בתחנות תדלוק או כשנהג מקבל משלוחים מכלי רכב שמספק מזון. כשיוצרים משימה של עצירה מתוזמנת, תוכלו להיעזר בהנחיות הבאות:
- סוג המשימה:
- לא לכלול מזהה לצורכי מעקב.
- אפשר גם לציין מיקום.
בדוגמאות הבאות אפשר לראות איך יוצרים משימת אי-זמינות מתוזמנת באמצעות
ספריית Java gRPC או איך לשלוח בקשת HTTP REST לצורך
CreateTask
.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
.setType(Task.Type.SCHEDULED_STOP)
.setState(Task.State.OPEN)
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent)
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTrip(task) // Initial state
.build();
// Error handling
// If Fleet Engine does not have task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.
try {
Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
```
REST
כדי ליצור משימה של עצירה מתוזמנת מסביבת שרת, צריך להגדיר REST מסוג HTTP
שיחה אל CreateTask
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id> הוא מזהה ייחודי של המשימה.
כותרת הבקשה חייבת להכיל שדה Authorization עם הערך הערוץ <token>, שבו ה-<token> מונפק על ידי השרת בהתאם להנחיות שמפורטות בתפקידים של חשבון שירות אסימוני אינטרנט JSON.
גוף הבקשה חייב להכיל ישות Task
:
פקודת curl
לדוגמה:
# Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"type": "SCHEDULED_STOP",
"state": "OPEN",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "600s"
}
EOM