このドキュメントでは、Fleet Engine のスケジュール設定されたタスク サービスについて説明します。Fleet Engine とはを読み、必要な Fleet Engine サービス機能について理解していることを前提としています。
このドキュメントをお読みになる際は、次の点に注意してください。
- タスクを作成して車両の停留所に関連付けることで、タスクと車両が停車すると想定される場所との現実世界での関連性をモデル化し、ドライバーがタスクを完了できるようにします。Fleet Engine で車両がどのように機能するかを詳しく理解するには、車両の概要をご覧ください。
- スケジュールされたタスクのフリート エンジンは、
Task
とDeliveryVehicle
の次のリソースを使用します。Fleet Engine は、gRPC サービスと REST インターフェースの両方を提供します。
スケジュール設定されたタスクとは
Fleet Engine のスケジュール設定されたタスクは、運輸オペレーションの広範なコンテキスト内で、車両を使用してドライバーが完了する個々のアクションを表します。ドライバーの具体的な目標を定義します。次に例を示します。
- 商品を住所に配達する
- 配送デポに返送する荷物を回収する
- お客様の場所まで移動してオンサイト サービスを提供する場合
- 車両の給油のためにスケジュール設定された停車を行う
タスク要素
次の図は、車両の標準のスケジュール設定されたルートのこれらのタスク要素を示しています。
基本的なタスク フィールド
フィールド | 説明 |
---|---|
タイプ | タスクに関連付けられているアクションのタイプを定義します。 |
タスク ID | システム内のタスクを一意に識別する文字列。 |
予定されている場所 | タスクを実行する対象の場所を指定します。この場所は、バス停の予定地と同じとは限りません。 |
州 | タスクがオープンかクローズかを示す。 |
タスクの結果 | タスクが成功したかどうかを示します。 |
タスクのデータモデル
次の図は、Task
リソースのデータモデルと、関連する DeliveryVehicle
リソースの図を示しています。次の点に注意しながら、両方の図を確認して 2 つのリソースの関係を確認できます。
- 計画地: バス停とタスクの両方に、互いに異なる計画地があります。
- タスクの場合、計画された場所は、ドライバーのアクションが発生する場所を示します。たとえば、大規模な住宅団地に 15 個の荷物を配達する場合は、同じ団地内の異なる郵便室に配達する必要があります。
- 車両の停留所の場合、計画地点は、ドライバーがタスクを完了する間、車両が停車する場所を示します。たとえば、車両がアパートの入り口に停車し、運転手がアパート内の個別のメールルームまで手で荷物を配達します。
- 状態: タスクと車両停留所の両方に、互いに異なる状態フィールドがあります。
- 車両の停車地のステータスは、停車地に関する車両の進行状況を反映し、フリート トラッキングに使用されます。
- タスクの状態は、タスクがアクティブかどうかを示します。これは、タスクで行う他のオペレーション(結果の設定や車両への割り当てなど)に影響します。
タスクの結果: タスクの結果は、タスクの状態に関係なくタスクの成功または失敗を示すために使用されるため、データモデルの重要なフィールドです。
ID:
- 車両にタスクを割り当てると、フリート エンジンによって
deliveryVehicleId
フィールドに値が入力されます。この読み取り専用フィールドには、タスクが割り当てられている車両が表示されます。 - タスク ID は、システム内のすべてのタスクで一意の識別子です。
- 配送追跡の目的で、タスクを識別します。
- 車両にタスクを割り当てると、フリート エンジンによって
ToDo リストのデータモデル
車両データモデル
タスク ID
Fleet Engine の車両 ID と同様に、タスクには、システム内の他のタスクと区別するための ID がそれぞれ含まれている必要があります。ワークフローのすべてのタスクは ID で参照および管理されます。これらの ID は、CreateTaskRequest
サービスを使用して、このセクションで説明する要件を満たす ID 文字列を指定して作成します。
この文字列は、タスクリソース自体の名前の一部、Task
オブジェクトの出力専用フィールドになります。これは、Fleet Engine が車両名リソースを作成する方法に似ています。Fleet Engine の概要のリソースの命名をご覧ください。
プロパティ | 説明 |
---|---|
一意性 | 混乱を避け、適切に識別できるように、各タスク ID は Fleet Engine の実装内で一意である必要があります。 |
形式 |
|
適切なタスク ID の例 |
|
---|---|
使用できないタスク ID |
|
タスクの種類
Fleet Engine は、輸送オペレーション内のさまざまなアクションを表すさまざまなタスクタイプをサポートしています。公開設定と請求の詳細とともに、以下に説明します。
タスクタイプ | 説明 | 配送追跡の可視性 | 請求済み |
---|---|---|---|
配信タスク | お客様に商品を配達する場合や、お客様の依頼を完了する場合に使用します。 | 消費者はこれを表示して追跡できます。 | ○ |
集荷タスク | お客様から商品を回収することを示すために使用します。集荷タスクには対応する配達タスクが必要です。 | 消費者はこれを表示して追跡できます。 | いいえ |
不在タスク | ドライバーが休憩を取っているときや車両に給油しているときなど、車両がサービスを受けられないことを示します。 | ユーザーには表示されません。 | いいえ |
スケジュール設定された停止タスク | 特定の場所での停車が必要な配達以外のタスク。特定の場所での毎日の集荷停留所には、同じ場所での他の配達や集荷とは関係なく、スケジュール設定された停留所タスクを使用します。デポからの集荷、フィーダー車両の転送、サービス センターやサービス拠点での停車をモデル化するために、スケジュール設定された停車タスクを作成することもできます。 | 消費者はこの特定のタスクを追跡することはできませんが、他のタスクの追跡の一環として確認できます。 | いいえ |
タスクとジャーニーのライフサイクル
このセクションでは、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 コンシューマ SDK を使用してコンシューマ エクスペリエンスを設定します。この SDK を使用すると、ウェブアプリやモバイルアプリのビジュアル エクスペリエンスを強化し、配送ステータス、到着予定時刻、配送車両のリアルタイムの位置情報の更新を消費者がモニタリングできるようにできます。Consumer 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 Service のスーパー ユーザーの Cloud IAM ロールを使用し、配送車両とそれに関連するタスクへのアクセスについて Java Web Token クレームを提供します。
スケジュール設定されたタスクのシナリオ
このセクションでは、ガイドのこの時点で説明した情報をまとめたさまざまなタスク シナリオを示します。これは、ビジネスに応じて、Fleet Engine で輸送オペレーションをモデル化するさまざまな方法を理解するのに役立ちます。
配送追跡あり
この配送シナリオでは、ルートの開始時にデポから出発する時刻と、ルートの終了時にデポに到着する時刻の両方で、デポに割り当てられたスケジュール設定された停車地タスクを示しています。また、停留所の 2 つの配送タスクも表示され、そのうち 1 つは失敗しています。このアサインメントは、デポとの間の追跡を有効にするために使用します。また、1 日の開始時間と終了時間をモデル化する方法としても使用できます。スケジュールされた停止タスクでは請求は発生しません。
デポ配送での受け取り
このシナリオでは、必要な対応する配送タスクとともに集荷をモデル化する方法を示します。請求目的で、デポへの返品は配達として設定します。

フィーダー車
このシナリオでは、フィーダー車両が途中で停車する 2 件の配送を示しています。これは、配送車両が配送する荷物を積んでデポに戻ることを可能にすることを目的としています。フィーダー車両をスケジュールされた停留所を使用してモデル化することもできます。

タスクのタイミング
タスク時間をモデリングすると、効率的なルート計画、到着予定時刻、配達の期待値の管理に役立ちます。Fleet Engine には、このセクションで説明するように、タスクのタイミングをモデル化し、予測するための 2 つの主要な機能があります。
タスクの所要時間
タスクの所要時間は task_duration
フィールドで設定します。これは、運転手が停留所でタスクを完了する時間や休憩を取る時間をモデル化する必須フィールドです。停留所の場合は、停留所に到着した後に必要なすべてのアクティビティ(荷物の降ろし、受取人とのやり取りなど)が含まれます。この情報が具体的であればあるほど、フリート エンジンはルートの次の停留所の到着時間と到着予定時刻をより正確に提供できます。フィールドの詳細については、プロトコル バッファのドキュメントの Duration をご覧ください。
ターゲット時間帯
目標時間は、タスクの推定所要時間を定義します。通常は、お客様へのコミュニケーションや内部計画の目的で使用されます。これは、開始時間と終了時間で構成される target_time_window
フィールドで設定します。これはルート計算に直接影響しませんが、荷物の配達時間帯や、スケジュールされたサービス ワーカーの到着予定時刻について消費者に通知する場合などに使用できます。
タスク属性
Fleet Engine のタスク属性を使用すると、ListTasks
リクエストで特定の特性に基づいてタスクをフィルタできます。カスタムタスク属性は、Cloud Logging での分析、コンシューマへの情報の伝達、フリート トラッキングにも使用できます。目的は車両属性の場合と同様です。配送オペレーションをより詳細に把握するために使用します。
制限事項
- カスタム属性の作成: Fleet Engine では、タスクごとに定義できるカスタム属性の数に制限があります。上限を引き上げるには、営業担当者にお問い合わせください。
- フィルタリング機能: タスク属性は柔軟なフィルタリングを提供しますが、コア タスクデータ フィールドに代わるものではありません。特定のニーズに基づいて追加のフィルタリングを行う場合に使用します。
- 各属性には一意のキーが必要です。
- 属性値には個人を特定できる情報やその他の機密情報を含めないでください。ユーザーに表示される可能性があります。
- データの検証: カスタム属性のデータ型と形式が、Fleet Engine の要件を満たしていることを確認します。