已排定的工作

本文說明 Fleet Engine 中的排程工作服務。這篇文章假設您已閱讀「什麼是 Fleet Engine?」,並瞭解所需的特定 Fleet Engine 服務功能。

閱讀這份說明文件時,請注意下列事項:

  • 您可以建立工作並將其與車輛停靠站建立關聯,以模擬工作與車輛預期停靠地點之間的實際關聯,讓駕駛員能夠完成工作。請參閱「車輛簡介」,進一步瞭解車輛在 Fleet Engine 中的運作方式。
  • 用於已排定工作的 Fleet Engine 會使用下列資源TaskDeliveryVehicle。Fleet Engine 提供 gRPC 服務和 REST 介面:
    • TaskgRPCREST
    • DeliveryVehiclegRPCREST
    • 為簡化操作,本手冊會使用 gRPC 範例。

什麼是排程工作?

Fleet Engine 中的排程工作代表駕駛人在運輸作業環境更廣泛的情況下,使用車輛完成的「個別動作」。會定義驅動程式的特定目標。例如:

  • 商品送至住家
  • 到店領取要回到貨運庫的包裹
  • 停靠在某個地點,為客戶提供現場服務
  • 以便排定停靠站供車輛行駛

工作元素

下圖在標準排定的車輛歷程中說明這些工作元素。

基本工作欄位

欄位 說明
類型 定義與工作相關聯的動作類型。
工作 ID 用於識別系統內任務的專屬字串。
預定位置 指定應執行工作的位置。這個位置不一定會與車輛停靠處的預定位置相同。
指出工作是開啟或關閉。
工作結果 指出工作是成功還是失敗。

工作資料模型

下圖說明 Task 資源的資料模型,以及其相關聯的 DeliveryVehicle 資源。您可以查看這兩張圖表,瞭解這兩項資源之間的關係,但請注意下列事項:

  • 預定位置:車輛停靠站和任務都有預定位置,彼此不同。
    • 針對工作,預定位置會指出駕駛人動作應發生的位置。例如,將 15 個套件交付到大型住宅園區內,需要傳送至同一複雜住家中的不同郵局位置。
    • 車輛停靠站:預定位置表示車輛停靠點,駕駛員可在此完成任務。例如,車輛會在公寓大門的入口停靠,而司機則會手動將包裹送到公寓大樓中的不同郵寄送間。
  • 狀態:工作和車輛停靠站都各有不同的「狀態」欄位。
    • 車輛停靠站的狀態反映了車輛與停靠站相關的進度,供車隊追蹤使用。
    • 工作狀態會指出工作是否處於有效狀態。這會影響要在工作上執行的其他作業,例如設定結果或將工作指派給車輛。
  • 工作結果:工作結果是資料模型中的重要欄位,因為它用於指出工作是否成功,不受工作狀態影響。

  • ID

    • 將工作指派給車輛時,機群引擎會填入 deliveryVehicleId 欄位。這個唯讀欄位會指出指派任務的車輛。
    • 工作 ID 是系統中所有工作的專屬 ID,
    • 追蹤 ID 可用於識別貨物追蹤工作。

Tasks 資料模型

車輛資料模型

工作 ID

與 Fleet Engine 中的車輛 ID 類似,每個工作都必須包含 ID,才能與系統中的其他工作區分開。您可以透過 ID 參照及管理工作流程中的所有工作。如要建立這些 ID,您可以使用 CreateTaskRequest 服務,並提供符合本節所述規定的 ID 字串。

這個字串會包含工作資源名稱的一部分,也就是 Task 物件上僅輸出的欄位。這與 Fleet Engine 建構車輛名稱資源的方式類似。請參閱 Fleet Engine 簡介中的「資源命名」一節。

工作 ID 相關規定
屬性 說明
獨特性 每個工作 ID 在 Fleet Engine 導入作業中都必須是唯一的,以免造成混淆並確保正確識別。
格式
  • 請勿提供個人識別資訊 (PII) 或明文資料。
  • 有效的 Unicode 字串。
  • 長度上限為 64 個半形字元。
  • 排除下列字元: / : \ ? #
  • 根據 Unicode 正規化表單 C 進行正規化。
工作 ID 範例
適當的工作 ID 範例
  • 566c33d9-2a31-4b6a-9cd4-80ba1a0c643b
  • e4708eabcfa39bf2767c9546c9273f747b4626e8cc44e9630d50f6d129013d38
  • NTA1YTliYWNkYmViMTI0ZmMzMWFmOWY2NzNkM2Jk
不允許的工作 ID
  • 8/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 支援各種工作類型,用於表示運輸作業中的不同動作。在此說明這些條款、瀏覽權限和帳單詳細資料。

工作類型 說明 運送追蹤顯示設定 已結算
提交工作 用於收下商品或為客戶完成工作。 消費者可以查看及追蹤這項資訊。
Pickup Task 用於表示從客戶處取貨。您必須為任何接送任務提供相應的提貨任務。 消費者可查看並追蹤這項資訊。
無法使用的工作 確認車輛不提供服務,例如駕駛人休息或消防車輛。 消費者不會看到。
排定停止工作 非送貨任務,需要在特定位置停靠。使用預定停靠站任務,針對特定地點的每日預定收貨停靠站,不受同地點的其他送貨或取貨作業影響。您也可以排定停靠站工作,從投遞箱到模型饋送車轉運或停靠站點/停靠站的工作。 消費者無法追蹤這項特定工作,但可以透過追蹤其他工作來查看這項工作。

工作和歷程生命週期

本節提供 Fleet Engine 中推送工作生命週期的詳細資料。工作生命週期與車輛旅程連結,因為車輛必須前往停靠站,駕駛人才能在預定地點完成任務。

1. 建立工作

初次在 Fleet Engine 中建立工作時,您會為工作設定各種欄位,而不是將其與停靠站建立關聯。

工作屬性
屬性 說明
設為「OPEN」
ID 如果您為消費者使用了運送追蹤功能,請設定工作和追蹤 ID。
時間 工作的預定持續時間及其目標時間範圍。詳情請參閱「工作時間」一文。
預計位置 設定要完成工作的確切地理座標。

2. 工作指派

將工作指派給車輛時,請一併指派車輛停靠站。停靠點是經緯度座標,用於指出車輛停放的位置,讓駕駛員完成與停靠點相關的工作。停靠站通常是存取點,例如載入座架或道路封閉位置。

3. 進行中

工作狀態為「OPEN」或「CLOSED」。不過,一旦工作指派給車輛,您就可以透過與車輛的關聯,以及車輛與工作完成地點的關係,追蹤工作進度。

車輛離開停靠站或開始導航後,停靠站的狀態應會變更為 ENROUTE。這樣一來,消費者貨件追蹤功能就能更新任務的收件者,並提供剩餘停靠站數和預估到達時間。這也支援任何即時視覺化內容,以便追蹤消費者運送情況或機群追蹤。

4. 到達和任務結果

車輛抵達停靠站時,停靠站的狀態應設為 ARRIVED。與 ENROUTE 停止狀態一樣,這不會影響工作本身的狀態,但會支援消費者通知,以及車隊作業員用於車隊追蹤的任何即時回報。這也能讓您日後針對運作作業進行分析和製作報表,以利您進行提交最佳化。

車輛抵達停靠站後,系統會透過下列其中一種方法處理其餘的工作歷程:

  • 完成工作後關閉

    當駕駛員將工作標示為完成時,系統會將該工作從停靠站移除,但會保留停靠站和指派給該停靠站的其他工作。

  • 從車輛上移除整個停靠站

    當駕駛員將所有工作標示為完成,且車輛正在前往下一站的途中時,您就可以從車輛中移除整個站點。Fleet Engine 會自動關閉與移除的停靠站相關聯的所有工作。

關閉工作不會表示成功或失敗

關閉工作只代表已取消將該項工作視為進行中。對於處於 CLOSED 狀態的工作,您可以將工作結果設為 SUCCEEDEDFAILED。這需要同時指出運送追蹤的實際結果,以及正確計費的成果。Fleet Engine 只會針對狀態為「SUCCEEDED」的提交工作收費。

設定工作結果後,就無法變更

標記工作結果時,Fleet Engine 會自動填入工作結果位置,並將最後的已知車輛位置填入資料。不過,您可以設定工作結果時間和工作結果位置,且 Fleet Engine 不會覆寫這些欄位。

5. 其他工作情境

您使用 Fleet Engine 模型時,並非所有工作都能納入典型的流程。例如:

  • 取貨工作。如果您有取件任務,將包裹退回倉庫以利日後處理,應為該包裹建立相應的送達任務,並將預定地點設為倉庫。否則,取貨工作一般會採用與運送工作相同的流程。
  • 重新指派工作。您無法直接將工作重新指派給其他車輛。如要將工作從一輛車輛移至另一輛,請關閉原始工作,然後重新建立工作,再指派給新車輛。如果您更新已指派給其他車輛的工作任務順序,Fleet Engine 會產生錯誤。
  • 刪除工作。與車輛一樣,Fleet Engine 會刪除七天未更新的工作。如果您嘗試將先前關閉的任務 ID 重新用於其他任務,如果該 ID 在過去七天內已使用過,Fleet Engine 就會傳回錯誤。反之,如果您想保留工作資料超過七天,就必須自行實作該功能,例如透過排定的工作重設 7 天的時鐘。

分享工作進度

在 Fleet Engine 中,您可以即時監控工作進度,並透過兩種主要方式分享駕駛人的行程:

  • 消費者體驗:讓消費者瞭解出貨訂單或要求的服務訂單狀態。
  • 車隊追蹤:讓車隊營運人員追蹤及分析車隊中的車輛狀態。

消費者體驗

如要共用工作進度,請使用 JavaScript Consumer SDK 設定消費者體驗。有了 SDK,您就能改善視覺網頁或行動應用程式體驗,讓消費者能夠監控運送狀態、預估到貨時間,以及即時查看運送車輛的位置更新資訊。請參閱「Consumer SDK 排程工作總覽」。

Consumer SDK 包含用於與 Fleet Engine 連線的 JavaScript 地圖和資料元件元件。地圖是標準 google.maps.Map 物件的直接取代。您的用戶端應驗證使用者,並使用 Google Cloud 專案中的「Delivery」消費者角色,只傳回特定客戶的資訊。Fleet Engine 會篩選並遮蓋回應中的所有其他資訊。舉例來說,在無法使用服務的任務期間,系統不會向使用者提供任何位置資訊。

在 Fleet Engine 中,您可以啟用下列設定,與用戶共用工作進度:

  • 工作會使用 TaskTrackingViewConfig 屬性。選填。
  • 工作會使用追蹤 ID,而程式庫需要使用此 ID 為使用者識別相關工作。

車隊追蹤

您可以使用 JavaScript 車隊追蹤程式庫,近乎即時地查看車隊中的車輛位置。這個程式庫會使用 Fleet Engine API 以視覺化方式提供運送車輛及指派的工作。和 JavaScript 消費者 SDK 一樣,其中包含 JavaScript 地圖元件,可直接取代標準 google.maps.Map 實體,其中包含您用來連結 Fleet Engine 的資料元件。

這個程式庫會在車輛在 Fleet Engine 中建立後立即顯示。在這個實作項目中,請使用 Fleet Engine 服務 Super User Cloud IAM 角色,並提供 Java Web Token 憑證以存取送貨車輛及相關工作。

排定工作情境

本節說明各種工作情境,總結指南中目前提供的資訊。這篇文章旨在協助您瞭解在 Fleet Engine 中模擬運輸作業的各種方法,具體取決於您的業務。

可追蹤的配送服務

此提供情境範例顯示了在旅程開始時從倉庫出發,以及旅程結束時抵達中站的預定停靠工作。這份報表也會顯示一個站點的兩項提交工作,其中一個失敗。使用這項指派作業即可追蹤到訓練庫之間的資料,並藉此建立當天的開始和停止時間模型。預定停止工作不會產生任何帳單。

自取並透過集運站配送

本情境說明如何建立「取貨」與其所需的對應提交工作。為方便結算,請將返回車站設為送達

餵食器車

這個案例顯示了兩件貨品位於饋送器中間,且在運輸車輛中間排定停靠站,目的是讓貨運車輛回到庫房,並準備將大量包裹發貨。您也可以模擬有預定停靠站的車輛。

工作時間

模擬工作時間有助於有效規劃路線、預估到達時間,以及管理提交作業的預期值。本節所述,Fleet Engine 提供兩項主要功能,可用來模擬和預測工作時間點。

工作時間長度

工作時間長度會透過 task_duration 欄位設定,這是必填欄位,用於模擬駕駛員在停靠站時完成工作或休息所需的時間。針對停靠站,這內含抵達停靠站後的所有必要活動,例如卸載套件並與接收端互動。這項資訊越具體,越能讓 Fleet Engine 針對旅程中的後續停靠站,提供實際的抵達時間和預計到達時間。如需欄位詳細資料,請參閱 通訊協定緩衝區說明文件中的「Duration」

目標時間範圍

目標時間定義任務的建議時間範圍,通常用於與客戶溝通或內部規劃。您可以使用 target_time_window 欄位設定這項資訊,其中包含開始時間和結束時間。這不會直接影響任何路線計算,但可用於通知消費者包裹送達的時間窗口,或預測預定服務人員何時抵達等情況。

工作屬性

使用 ListTasks 要求時,Fleet Engine 的工作屬性可讓您輕鬆根據特定特徵篩選工作。您也可以搭配使用自訂工作屬性與 Cloud Logging 進行分析,以及將資訊傳達給消費者或進行機群追蹤。目的與車輛屬性類似:用於建立更聚焦的運送作業觀點。

限制與限制

  • 自訂屬性建立:Fleet Engine 會限制您為每項工作定義的自訂屬性數量。請與業務代表聯絡,要求提高這些上限。
  • 篩選功能:雖然提供篩選彈性,但工作屬性無法取代核心工作資料欄位。您可以根據自身需求,使用這些篩選器進行額外篩選。
  • 每個屬性都必須有專屬索引鍵
  • 請勿在屬性值中加入個人識別資訊或其他機密資訊,因為使用者可能會看到這些資訊。
  • 資料驗證:確保自訂屬性的資料類型與格式符合 Fleet Engine 的要求。

後續步驟