已排定的工作

本文說明 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

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

Tasks 資料模型

車輛資料模型

工作 ID

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

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

工作 ID 相關規定
屬性 說明
唯一性 每個工作 ID 在 Fleet Engine 實作中都必須是唯一的,以免造成混淆並確保正確識別。
格式
  • 不得提供個人識別資訊 (PII) 或明文資料。
  • 有效的 Unicode 字串。
  • 長度上限為 64 個半形字元。
  • 排除下列字元: / : \ ? #
  • 根據 Unicode Normalization Form 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 支援各種任務類型,用於表示運輸作業中的不同動作。我們會在此處說明這些廣告活動,並提供相關的瀏覽權限和帳單詳細資料。

工作類型 說明 貨件追蹤資訊瀏覽權限 已結算
提交工作 用於為客戶送達商品或完成任務。 消費者可以查看及追蹤這項資訊。
取貨工作 用於表示從客戶處取貨。您必須為任何接送任務提供相應的提貨任務。 消費者可以查看及追蹤這項資訊。
無法預訂任務 指出車輛無法提供服務,例如司機休息或車輛加油時。 消費者不會看見。
排定停止工作 非送貨工作,需要在特定位置停靠。使用預定停靠站任務,針對特定地點的每日預定收貨地點,獨立於同一地點的其他送貨或取貨作業。您也可以為提貨箱的收集作業建立排程停靠工作,或模擬車輛在服務中心和服務點的轉運或停靠作業。 消費者無法追蹤這項特定工作,但可以透過追蹤其他工作來查看這項工作。

工作和歷程生命週期

本節將詳細說明 Fleet Engine 中的提交工作生命週期。任務生命週期與車輛行程相關聯,因為車輛必須前往停靠站,駕駛員才能在預定地點完成任務。

1. 建立工作

在 Fleet Engine 中首次建立工作時,您可以為工作設定各種欄位,不必與停靠點建立關聯。

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

2. 工作指派

將工作指派給車輛時,請與車輛停靠站點搭配使用。停靠點是指經緯度座標,用於指出車輛停靠的位置,讓駕駛員完成與停靠點相關的工作。停靠站通常是存取點,例如裝卸碼頭或路線經過的點。

3. 進行中

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

車輛離開停靠站或開始導航後,停靠站的狀態應會變更為 ENROUTE。如此一來,消費者貨件追蹤功能就能更新任務的收件者,並提供剩餘停靠站數和預估到達時間。這項功能也支援任何消費者貨件追蹤或車隊追蹤的即時圖像化呈現。

4. 到達和任務結果

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

車輛抵達停靠站後,系統可以使用下列任一方法處理任務行程的其餘部分:

  • 完成工作後關閉工作

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

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

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

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

關閉工作只表示系統不再將該工作視為進行中。對於處於 CLOSED 狀態的工作,您可以將結果設為 SUCCEEDEDFAILED。這項資訊對於顯示運送追蹤的實際結果,以及正確計費都很重要。Fleet Engine 只會針對狀態為「成功」的提交工作收費。

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

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

5. 其他工作情境

並非所有在 Fleet Engine 中模擬的任務都符合典型的旅程流程。例如:

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

分享工作進度

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

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

消費者體驗

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

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

在 Fleet Engine 中,您可以啟用下列設定,與使用者分享工作進度:

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

車隊追蹤

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

這個程式庫會在外送車輛在 Fleet Engine 中建立後,立即顯示外送車輛的顯示範圍。在這個實作中,您會使用 Fleet Engine 服務的「超級使用者」Cloud IAM 角色,並提供 Java Web 權杖要求,以便存取遞送車輛及其相關工作。

排定工作情境

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

可追蹤的配送服務

這個運送情境顯示在旅程開始時從車站出發,以及旅程結束時抵達車站時,指派給車站的預定停靠站工作。它也會顯示一個停靠站的兩項提交工作,其中一個失敗。使用這項指派功能,即可啟用從車庫往返的追蹤功能,並以此模擬當天的開始和結束時間。系統不會針對預定停止的任務收費。

自取並透過集運站配送

這個情境說明如何模擬接送,以及其所需的對應運送工作。您可以將返回車站設為送達,以便計費。

接駁車

這個情境顯示兩次運送,其中在途中有一個預定停靠站,目的是讓運送車輛可將部分包裹運送到車站。您也可以模擬有預定停靠站的車輛。

工作時間

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

工作時間長度

工作時間長度會透過 task_duration 欄位設定,這是必填欄位,用於模擬駕駛員在停靠站完成工作或休息所需的預估時間。對於停靠站,這包括抵達停靠站後的所有必要活動,例如卸下包裹和與收件者互動。資訊越具體,車隊引擎就能越準確地為行程中後續停靠站提供實際到達時間和預估到達時間。如需欄位詳細資料,請參閱 通訊協定緩衝區說明文件中的「Duration」

目標時間範圍

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

工作屬性

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

限制

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

後續步驟