משימות מתוזמנות

במסמך הזה מתוארת השירות של המשימות המתוזמנות ב-Fleet Engine. ההנחה היא שקראתם את What is Fleet Engine? (מה זה Fleet Engine?) ואתם מודעים ליכולת השירות הספציפית של Fleet Engine שאתם צריכים.

בזמן הקריאה של המסמך הזה, חשוב לזכור את הנקודות הבאות:

  • יוצרים משימות ומשייכים אותן לעצירה של רכב כדי ליצור מודל של השיוך בעולם האמיתי בין המשימה לבין המיקום שבו הרכב צפוי לעצור, כדי שהנהג יוכל להשלים את המשימה. במאמר מבוא לכלי רכב תוכלו להבין טוב יותר איך כלי רכב פועלים ב-Fleet Engine.
  • ה-Engine של Fleet למשימות מתוזמנות משתמש במשאבים הבאים: Task ו-DeliveryVehicle. ‏Fleet Engine מספק גם שירות gRPC וגם ממשקי API ל-REST:
    • Task: gRPC ו-REST
    • DeliveryVehicle: gRPC ו-REST
    • כדי לפשט את המדריך, השתמשנו בדוגמאות ל-gRPC.

מהי משימה מתוזמנת?

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

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

רכיבי משימות

בתמונה הבאה מוצגים רכיבי המשימה האלה במסלול מתוזמן רגיל של רכב.

שדות בסיסיים של משימות

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

מודל נתונים למשימות

בתרשים הבא מוצג מודל הנתונים של המשאב Task לצד התרשים של המשאב DeliveryVehicle שמשויך אליו. אפשר לעיין בשני התרשימים כדי להבין את הקשרים בין שני המשאבים, תוך שמירה על הנקודות הבאות:

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

  • מזהים:

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

מודל הנתונים של Tasks

מודל נתוני הרכב

מזהי משימות

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

לאחר מכן המחרוזת הזו מורכבת חלק מהשם של משאב המשימה עצמו, שדה פלט בלבד באובייקט Task. זה דומה לאופן שבו Fleet Engine יוצר משאבים של שמות רכבים. אפשר לעיין בקטע מתן שמות למשאבים במאמר מבוא ל-Fleet Engine.

דרישות למזהי משימות
נכס תיאור
ייחודיות כל מזהה משימה חייב להיות ייחודי בהטמעה של Fleet Engine כדי למנוע בלבול ולהבטיח זיהוי תקין.
פורמט
  • אין לכלול פרטים אישיים מזהים (PII) או נתונים בטקסט ללא הצפנה.
  • מחרוזות Unicode חוקיות.
  • יש לכלול 64 תווים לכל היותר.
  • מחריגים את התווים הבאים: / : \ ? #
  • מנורמלים לפי Unicode Normalization Form C.
דוגמאות למזהה משימות
דוגמאות טובות למזהה משימה
  • 566c33d9-2a31-4b6a-9cd4-80ba1a0c643b
  • e4708eabcfa39bf2767c9546c9273f747b4626e8cc44e9630d50f6d129013d38
  • NTA1YTliYWNkYmViMTI0ZmMzMWFmOWY2NzNkM2Jk
מזהי משימות אסורים
  • 31 באוגוסט 2019-20:48-46.70746,-130.10807,-85.17909,61.33680
  • JohnDoe-577b484da26f-Cupertino-SantaCruz
  • 4R0oXLToF"112 Summer Dr. East Hartford, CT06118"577b484da26f8a

סוגי המשימות

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

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

מחזור החיים של משימה ומסע

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

1. יצירת משימות

כשיוצרים משימה בפעם הראשונה ב-Fleet Engine, צריך להגדיר מגוון שדות של המשימה בנפרד מהשיוך שלהם לעצירה.

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

2. הקצאת משימה

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

3. בתהליך

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

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

4. שעת ההגעה והתוצאה של המשימה

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

כשהרכב מגיע לתחנה, המערכת יכולה לטפל בשאר תהליך הביצוע של המשימה באחת מהגישות הבאות:

  • סגירת משימות לאחר השלמתן.

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

  • להסיר את כל העצירה מהרכב.

    אחרי שהנהג מסמן שכל המשימות בוצעו והרכב בדרך לתחנה הבאה, אפשר להסיר את כל התחנה מהרכב. Fleet Engine סוגר אוטומטית את כל המשימות שמשויכות לעצירה שהוסרה.

סגירת משימה לא מעידה על הצלחה או כישלון

סגירת משימה מציינת רק שהמשימה לא נחשבת יותר כמשימה בתהליך. במשימות במצב CLOSED, התוצאה צריכה להיות SUCCEEDED או FAILED. הדבר נחוץ גם כדי לציין את התוצאה בפועל של מעקב אחר המשלוח וגם לצורך חיוב תקין. מערכת Fleet Engine מחייבת רק משימות מסירה בסטטוס 'הושלמו'.

אי אפשר לשנות את התוצאה של המשימה אחרי שמגדירים אותה

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

5. תרחישים אחרים שקשורים למשימות

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

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

שיתוף ההתקדמות של המשימה

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

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

חוויית הצרכן

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

ה-SDK לצרכן מכיל מפת JavaScript ורכיבי נתונים לחיבור ל-Fleet Engine. המפה היא תחליף פשוט לאובייקט google.maps.Map רגיל. הלקוח צריך לאמת את משתמשי הקצה ולהשתמש בתפקיד הצרכן Delivery מהפרויקט ב-Google Cloud כדי להחזיר רק מידע ספציפי ללקוח. ב-Fleet Engine מסננים ומצנזרים את כל שאר המידע בתשובות. לדוגמה, במהלך משימה של זמן לא זמין, לא מתבצע שיתוף של פרטי המיקום עם משתמש קצה.

ב-Fleet Engine, מפעילים את ההגדרות הבאות כדי לשתף את ההתקדמות של המשימה עם הצרכן:

  • Tasks משתמש במאפיין TaskTrackingViewConfig. זה שינוי אופציונלי.
  • המשימות משתמשות במזהה מעקב, שדרוש לספרייה כדי לזהות משימות רלוונטיות לצרכנים.

מעקב אחרי צי רכבים

באמצעות ספריית JavaScript למעקב אחרי ציי כלי רכב אפשר להציג גרפית את המיקומים של כלי הרכב בצי כמעט בזמן אמת. הספרייה משתמשת ב-Fleet Engine API כדי להציג תצוגה חזותית של רכבי משלוח וגם את המשימות שהוקצו להם. בדומה ל-SDK של JavaScript לצרכן, הוא מכיל רכיב מפה של JavaScript שמשמש כתחליף לישויות google.maps.Map רגילות, עם רכיבי נתונים שמשמשים להתחברות ל-Fleet Engine.

בספרייה הזו מוצגת החשיפה של כלי הרכב לצורכי מסירה ברגע שהם נוצרים ב-Fleet Engine. כדי לבצע את ההטמעה הזו, משתמשים בתפקיד Super User ב-Cloud של שירות Fleet Engine, ומציינים הצהרה של Java Web Token בשביל גישה לכלי הרכב להעברה ולמשימות המשויכות אליהם.

תרחישים של משימות מתוזמנות

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

משלוח עם מעקב

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

איסוף עם משלוח מהחנות

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

רכב עם מתקני האכלה

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

תזמון המשימה

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

משך המשימה

משך המשימה מוגדר באמצעות השדה task_duration, שדה חובה שמציג מודל של הזמן הצפוי שהנהג משקיע בהשלמת משימות בתחנה או בהפסקה. בתחנות, הפעילות הזו כוללת את כל הפעילויות הנדרשות אחרי שמגיעים לתחנה, כמו פריקה של חבילות ואינטראקציה עם הנמען. ככל שהמידע הזה יהיה ספציפי יותר, כך Fleet Engine יכול לספק זמני הגעה וזמני הגעה משוערים ריאליים לעצירות הבאות בנסיעה. פרטים על השדה מופיעים בקטע משך זמן במסמכי התיעוד של Protocol Buffers.

חלון זמן ליעד

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

מאפייני המשימות

מאפייני המשימות ב-Fleet Engine מספקים דרך נוחה לסנן משימות על סמך מאפיינים ספציפיים כשמשתמשים בבקשה ListTasks. אפשר גם להשתמש במאפייני משימות מותאמים אישית לצורכי ניתוח נתונים באמצעות Cloud Logging, וגם להעביר מידע לצרכנים או למעקב אחרי צי כלי רכב. המטרה דומה למטרה של מאפייני הרכב: אפשר להשתמש בהם כדי ליצור תצוגה ממוקדת יותר של פעולות המסירה.

מגבלות והגבלות

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

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