このドキュメントでは、Fleet Engine のスケジュール設定されたタスクサービスについて説明します。Fleet Engine とはを読み、必要な Fleet Engine サービス機能について理解していることを前提としています。
このドキュメントを読む際は、次の点に注意してください。
- タスクと車両が停車する場所との間の実際の関連付けをモデル化する方法として、タスクを作成して停車地に関連付けることで、ドライバーがタスクを完了できるようになります。Fleet Engine で車両がどのように機能するかを詳しく理解するには、車両の概要をご覧ください。
- スケジュール設定されたタスク用の Fleet Engine は、
Task
とDeliveryVehicle
のリソースを使用します。Fleet Engine は、gRPC サービスと REST インターフェースの両方を提供します。
スケジュールされたタスクとは
Fleet Engine のスケジュール設定されたタスクは、運輸オペレーションの広範なコンテキスト内で、車両を使用してドライバーが完了する個々のアクションを表します。ドライバの特定の目標を定義します。例:
- 商品を住所に配達する
- 荷物を受け取り、配送センターに返送する
- お客様の場所まで移動してオンサイト サービスを提供する場合
- 車両の給油のためにスケジュール設定された停車を行う
タスクの要素
次の図は、車両の標準的な計画的な移動における、これらのタスク要素を示しています。
基本的なタスク フィールド
フィールド | 説明 |
---|---|
タイプ | タスクに関連付けられたアクションのタイプを定義します。 |
タスク ID | システム内のタスクを一意に識別する文字列。 |
予定の場所 | タスクを実行する場所を指定します。この場所は、車両の停留所の予定場所と同じとは限りません。 |
州 | タスクがオープンかクローズかを示す。 |
タスクの結果 | タスクが成功したかどうかを示します。 |
タスクのデータモデル
次の図は、Task
リソースのデータモデルと、関連する DeliveryVehicle
リソースの図を示しています。以下の点に注意して、両方の図を確認することで 2 つのリソースの関係を確認できます。
- 予定場所: 車両の停車地とタスクの両方に予定場所があり、互いに異なります。
- タスクの場合、計画されたロケーションは、ドライバのアクションを実行する場所を示します。たとえば、大規模な住宅団地に 15 通の荷物を配達する場合、同じ複合施設内の異なるメールルームの場所に配達する必要があります。
- 車両が停車する場合、計画された場所は、ドライバーがタスクを完了するまでの間の停車地を示します。たとえば、マンションの入口に車両が停車すると、ドライバーは複合施設内の別々の郵便室に荷物を手作業で配達します。
- 状態: タスクと車両停留所の両方に、互いに異なる状態フィールドがあります。
- 車両の停車地の状態には、停車場所に関連する車両の進行状況が反映されており、車両の追跡に使用されます。
- タスクの状態は、タスクがアクティブかどうかを示します。これは、結果の設定や車両への割り当てなど、タスクに対して実行する他のオペレーションに影響します。
タスクの結果: タスクの結果は、タスクの状態に関係なくタスクの成功または失敗を示すために使用されるため、データモデルの重要なフィールドです。
ID:
- 車両にタスクを割り当てると、フリート エンジンによって
deliveryVehicleId
フィールドに値が入力されます。この読み取り専用フィールドには、タスクが割り当てられている車両が示されます。 - タスク ID は、システム内のすべてのタスクにわたる一意の識別子です。
- トラッキング ID は、配送状況を追跡するためのタスクを識別します。
- 車両にタスクを割り当てると、フリート エンジンによって
ToDo リストのデータモデル
車両データモデル
タスク ID
Fleet Engine の車両 ID と同様に、タスクにはシステム内の他のタスクと区別するための ID が含まれている必要があります。ワークフロー内のすべてのタスクは、ID で参照して管理します。これらの ID は、CreateTaskRequest
サービスを使用して、このセクションで説明する要件を満たす ID 文字列を指定して作成します。
この文字列は、タスクリソース自体の名前の一部(Task
オブジェクトの出力専用フィールド)で構成されます。これは、Fleet Engine が車両名リソースを作成する方法に似ています。Fleet Engine の概要のリソースの命名をご覧ください。
プロパティ | 説明 |
---|---|
一意性 | 混乱を避け、適切に識別できるように、Fleet Engine 実装内で各タスク ID は一意である必要があります。 |
形式 |
|
適切なタスク ID の例 |
|
---|---|
許可されていないタスク ID |
|
タスクの種類
Fleet Engine は、トランスポート オペレーション内のさまざまなアクションを表すさまざまなタスクタイプをサポートしています。ここでは、公開設定と課金の詳細とともに説明します。
タスクの種類 | 説明 | 配送追跡の可視性 | 請求済み |
---|---|---|---|
配信タスク | お客様に商品を配達する場合や、お客様の依頼を完了する場合に使用します。 | 消費者はこれを確認して追跡できます。 | はい |
Pickup タスク | 購入者が商品を受け取ることを示すために使用します。受け取りタスクに対応する配送タスクが必要です。 | 消費者はこれを表示して追跡できます。 | いいえ |
不在タスク | ドライバーが休憩を取っているときや車両に給油しているときなど、車両がサービスを受けられないことを示します。 | コンシューマには表示されません。 | いいえ |
スケジュールされた停止タスク | 特定の場所での停車が必要な配送以外のタスク。停留所のスケジュール設定は、同じ場所での他の配達や集荷と関係なく、特定の場所で毎日予定されている集荷所に利用します。デポからの集荷、フィーダー車両の転送、サービス センターやサービス拠点での停車をモデル化するために、スケジュール設定された停車タスクを作成することもできます。 | 消費者はこの特定のタスクを追跡することはできませんが、他のタスクの追跡の一環として確認できます。 | いいえ |
タスクとジャーニーのライフサイクル
このセクションでは、Fleet Engine 内の配信タスクのライフサイクルについて詳しく説明します。ドライバーが計画された場所でタスクを完了するためには車両が停車地まで移動する必要があるため、タスクのライフサイクルは車両の移動と関連付けられています。
1. タスクの作成
Fleet Engine でタスクを初めて作成する場合は、停留所との関連付けとは別に、タスクのさまざまなフィールドを設定します。
プロパティ | 説明 |
---|---|
州 | [OPEN] に設定 |
ID | 消費者向けに配送トラッキングを使用する場合は、タスクとトラッキング ID を設定します。 |
タイミング | タスクの予定時間とターゲット時間枠。詳細については、タスクのタイミングをご覧ください。 |
予定されている場所 | タスクを完了する正確な地理座標を設定します。 |
2. タスクの割り当て
車両にタスクを割り当てる場合は、車両停止と併せて行います。停車地は、運転手が停車地に関連するタスクを完了している間に車両が駐車する場所を示す緯度と経度の座標です。停留所は通常、荷物の積み下ろし場所や道路にスナップされた場所などのアクセス ポイントです。
3. 処理中
タスクのステータスは、OPEN または CLOSED のいずれかです。ただし、タスクを車両に割り当てると、タスクと車両の関連付けと、タスクを完了する停車地との関連で車両の位置を追跡して、進行状況を追跡できます。
車両が停車地から出発するかナビゲーションを開始すると、停車地のステータスは ENROUTE
に変わります。これにより、消費者向けの配送追跡で、残りの停留所数と到着予定時刻をタスクの受信者に更新できます。また、消費者向けの配送追跡やフリート追跡のリアルタイム可視化もサポートしています。
4. 到着とタスクの結果
車両が停留所に到着すると、停留所のステータスは ARRIVED
に設定する必要があります。ENROUTE
停止ステータスの場合と同様に、タスク自体の状態には影響しませんが、コンシューマへの通知と、フリート オペレーターが使用するフリート トラッキング用のリアルタイム レポートの両方をサポートします。また、配信の最適化に使用するオペレーションの分析とレポートも可能になります。
車両が停留所に到着すると、システムは次のいずれかの方法でタスクの残りの部分を処理できます。
完了したタスクを閉じる。
ドライバーがタスクを完了済みとしてマークすると、システムはタスクを停留所から削除できますが、停留所に割り当てられている他のタスクはそのまま残ります。
車両から停留所全体を削除する。
ドライバーがすべてのタスクを完了としてマークし、車両が次の停車地に向かって走行中になったら、車両から停車地全体を削除できます。Fleet Engine は、削除された停車地に関連付けられているすべてのタスクを自動的に終了します。
タスクの終了は成功または失敗を意味するものではない
タスクをクローズしても、タスクが進行中と見なされなくなるだけです。CLOSED
状態のタスクの場合は、結果を SUCCEEDED
または FAILED
に設定します。これは、配送追跡の実際の結果を示すためと、適切な請求を行うために必要です。Fleet Engine では、ステータスが SUCCEEDED の配送タスクのみが課金されます。
タスクの結果は、一度設定すると変更できません
タスクの結果をマークすると、Fleet Engine はタスクの結果の場所を、車両の最後の既知の位置情報で自動的に入力します。ただし、タスクの結果の時間とタスクの結果の場所は、設定後に変更でき、Fleet Engine はこれらのフィールドをオーバーライドしません。
5. その他のタスクのシナリオ
Fleet Engine でモデル化するタスクがすべて、一般的なジャーニー フローに収まるわけではありません。次に例を示します。
- 受け取りタスク。後で処理するために荷物をデポに返送する集荷タスクがある場合は、その荷物に対応する配達タスクを作成し、予定場所をデポに設定する必要があります。それ以外の場合、集荷タスクは通常、配達タスクと同じフローに従います。
- タスクの再割り当て。タスクを別の車両に直接再割り当てすることはできません。代わりに、ある車両から別の車両にタスクを移動するには、元のタスクを閉じて、新しい車両に割り当てる前にタスクを再作成します。すでに別の車両に割り当てられているタスクのタスク順序を更新すると、Fleet Engine でエラーが発生します。
- タスクの削除。車両と同様に、Fleet Engine では 7 日間更新されていないタスクが削除されます。以前に閉じたタスク ID を再利用しようとすると、その ID が過去 7 日間に使用されていれば、Fleet Engine はエラーを返します。逆に、タスクデータを 7 日間を超えて保持する場合は、7 日間のタイマーをリセットするスケジュール設定されたジョブなど、その機能を自分で実装する必要があります。
タスクの進行状況の共有
Fleet Engine では、タスクの進行状況をリアルタイムでモニタリングし、ドライバーのルートを 2 つの主要な方法で共有できます。
- ユーザー エクスペリエンス: 配送注文やリクエストしたサービス注文のステータスをユーザーが確認できます。
- フリート トラッキング: フリート オペレーターがフリート内の車両のステータスをトラッキングして分析できます。
消費者のエクスペリエンス
タスクの進行状況を共有するには、JavaScript Consumer SDK を使用してコンシューマ エクスペリエンスを設定します。この SDK を使用すると、ウェブまたはモバイルアプリのビジュアル エクスペリエンスを強化し、配送ステータス、到着予定時刻、配送車両のリアルタイムの位置情報の更新を消費者がモニタリングできるようにできます。コンシューマ SDK のスケジュール設定済みタスクの概要をご覧ください。
Consumer SDK には、Fleet Engine に接続するための JavaScript マップとデータ コンポーネント コンポーネントが含まれています。このマップは、標準の google.maps.Map
オブジェクトの代替として使用できます。クライアントはエンドユーザーを認証し、Google Cloud プロジェクトの配信コンシューマロールを使用して、お客様固有の情報のみを返す必要があります。Fleet Engine は、レスポンス内の他のすべての情報をフィルタして秘匿化します。たとえば、利用できないタスクの間、位置情報はエンドユーザーと共有されません。
Fleet Engine で、次の設定を有効にして、タスクの進行状況をコンシューマと共有します。
- タスクでは
TaskTrackingViewConfig
プロパティを使用します。省略可。 - タスクではトラッキング ID を使用します。この ID は、ライブラリがコンシューマに関連するタスクを識別するために必要です。
フリートのトラッキング
JavaScript フリート トラッキング ライブラリを使用すると、フリート内の車両の位置をほぼリアルタイムで可視化できます。このライブラリは Fleet Engine API を使用して、配達車両とそれに割り当てられたタスクを可視化します。JavaScript コンシューマ SDK と同様に、JavaScript マップ コンポーネントが含まれています。これは、Fleet Engine との接続に使用するデータ コンポーネントを含む標準の google.maps.Map
エンティティのドロップイン リプレースメントです。
このライブラリは、配送車両が Fleet Engine で作成されるとすぐに、配送車両の可視性を示します。この実装では、Fleet Engine サービスのスーパー ユーザーの Cloud IAM ロールを使用し、配達車両とそれに関連するタスクにアクセスするための Java Web Token クレームを提供します。
スケジュール済みタスクのシナリオ
このセクションでは、ガイドのこの時点で説明した情報をまとめたさまざまなタスク シナリオを示します。ビジネスに応じて、Fleet Engine で輸送業務をモデル化するさまざまな方法を理解するうえで役立ちます。
配送追跡あり
この配送シナリオでは、ルートの開始時にデポから出発する際と、ルートの終了時にデポに到着する際の両方で、デポに割り当てられたスケジュール設定された停車地タスクを示しています。また、停車地に対する 2 つの配達タスクも示されていますが、そのうちの 1 つは失敗しています。このアサインメントは、デポとの間の追跡を有効にするために使用します。また、1 日の開始時間と終了時間をモデル化する方法としても使用できます。スケジュール設定された停止タスクの場合、課金は発生しません。
集荷所による店舗受け取り
このシナリオでは、必要な対応する配送タスクとともに集荷をモデル化する方法を示します。請求目的で、デポへの返品は配達として設定します。
フィーダー車両
このシナリオでは、フィーダー車両が途中で停車する 2 件の配送を示しています。これは、配送車両が配送する荷物を積んでデポに戻ることを目的としています。また、所定の停留所でフィーダー車両をモデル化することもできます。
タスクのタイミング
タスク時間をモデル化することで、効果的なルート計画、到着予定時刻、配達予定の管理が容易になります。Fleet Engine には、このセクションで説明するように、タスクのタイミングをモデル化し、予測するための 2 つの主要な機能があります。
タスクの所要時間
タスクの所要時間は task_duration
フィールドで設定します。これは、運転手が停留所でタスクを完了する時間や休憩を取る時間をモデル化する必須フィールドです。停車地の場合、これには、停車地に到着した後に必要となるすべてのアクティビティ(荷物の取り出し、受取人とのやり取りなど)が含まれます。情報が具体的であるほど、Fleet Engine は経路の後続の停車地について、現実的な到着時刻と到着予定時刻を提供できるようになります。フィールドの詳細については、プロトコル バッファのドキュメントの Duration をご覧ください。
ターゲット時間帯
ターゲット時間は、タスクに対して提案される期間を定義します。通常は、お客様への通知や社内の計画に使用されます。開始時刻と終了時刻で構成される target_time_window
フィールドを使用して設定します。これはルート計算に直接影響しませんが、荷物配達の時間枠や、スケジュールされた Service Worker の到着予定時刻を消費者に通知するなどの状況で使用できます。
タスク属性
Fleet Engine のタスク属性を使用すると、ListTasks
リクエストを使用するときに、特定の特性に基づいてタスクをフィルタできます。カスタムタスク属性は、Cloud Logging での分析、コンシューマへの情報の伝達、フリート トラッキングにも使用できます。この目的は車両属性の場合と似ています。これを使用して、配送オペレーションをより焦点を絞ったものにします。
制限事項
- カスタム属性の作成: Fleet Engine では、タスクごとに定義できるカスタム属性の数に制限があります。上限の引き上げをリクエストするには、営業担当者にお問い合わせください。
- フィルタリング機能: タスク属性は柔軟なフィルタリングを提供しますが、コア タスクデータ フィールドに代わるものではありません。特定のニーズに基づいて追加のフィルタリングに使用します。
- 各属性には一意のキーが必要です。
- 属性値には個人を特定できる情報やその他の機密情報を含めないでください。これらはユーザーに表示される可能性があります。
- データの検証: カスタム属性のデータ型と形式が Fleet Engine の要件と互換性があることを確認します。