Запланированные задачи, Запланированные задачи

В этом документе описывается служба запланированных задач в Fleet Engine. Предполагается, что вы прочитали «Что такое Fleet Engine?». и знаете о конкретных возможностях обслуживания Fleet Engine, которые вам нужны.

Читая эту документацию, имейте в виду следующее:

  • Вы создаете задачи и связываете их с остановкой транспортного средства , чтобы смоделировать реальную связь между задачей и местом, где ожидается остановка транспортного средства, чтобы водитель мог выполнить задачу. Прочтите «Введение в транспортные средства» , чтобы лучше понять, как транспортные средства работают в Fleet Engine.
  • Fleet Engine для запланированных задач использует следующие ресурсы : Task и DeliveryVehicle . Fleet Engine предоставляет как службу gRPC, так и интерфейсы REST:
    • Task : gRPC и REST
    • DeliveryVehicle : gRPC и REST.
    • Для простоты в этом руководстве используются примеры gRPC.

Что такое запланированная задача?

Запланированная задача в Fleet Engine представляет собой отдельное действие , которое должен выполнить водитель, использующий транспортное средство, в более широком контексте транспортной операции. Он определяет конкретную цель водителя. Например:

  • доставить товар в дом
  • забрать посылку для возврата на базу отгрузки
  • остановиться в месте для оказания услуги клиенту на месте
  • сделать плановую остановку для заправки автомобиля

Элементы задачи

На следующем изображении показаны эти элементы задачи в стандартной запланированной поездке транспортного средства.

Основные поля задач

Поле Описание
Тип Определяет тип действия, связанного с задачей.
Идентификатор задачи Строка, которая однозначно идентифицирует задачу в системе.
Планируемое место Указывает предполагаемое место, где должна быть выполнена задача. Это место не всегда совпадает с запланированным местом остановки транспортного средства.
Состояние Указывает, открыта или закрыта задача.
Результат задачи Указывает, выполнена ли задача или нет.

Модель данных для задач

На следующих диаграммах показана модель данных ресурса Task вместе со схемой связанного с ним ресурса DeliveryVehicle . Вы можете просмотреть обе диаграммы, чтобы изучить взаимосвязи между двумя ресурсами, учитывая следующее:

  • Запланированное местоположение : остановки транспортных средств и задачи имеют запланированные места , отличные друг от друга.
    • Для задач запланированное местоположение указывает, где должно произойти действие водителя. Например, доставка 15 посылок в большой жилой комплекс требует доставки в разные почтовые отделения внутри этого же комплекса.
    • Для остановок транспортных средств запланированное место указывает остановку транспортного средства, пока водитель выполняет задачи. Например, автомобиль останавливается у входа в жилой комплекс, и водитель вручную доставляет посылки в отдельные почтовые отделения комплекса.
  • Состояние : и задачи, и остановки транспортных средств имеют поле состояния , отличное друг от друга.
    • Состояние остановки транспортного средства отражает продвижение транспортного средства по отношению к остановке, что используется для целей отслеживания автопарка.
    • Состояние задачи указывает, активна ли задача. Это влияет на другие операции, которые необходимо выполнить над задачами, например, на установку результата или назначение его транспортному средству.
  • Результат задачи . Результат задачи является важным полем в модели данных, поскольку он используется для обозначения успеха или неудачи задачи независимо от состояния задачи.

  • идентификаторы :

    • Когда вы назначаете задачу транспортному средству, Fleet Engine заполняет поле deliveryVehicleId . В этом поле, доступном только для чтения, указывается транспортное средство, которому назначена задача.
    • Идентификаторы задач — это уникальные идентификаторы для всех задач в вашей системе.
    • Идентификаторы отслеживания идентифицируют задачу для отслеживания отправлений.

Модель данных задач

Модель данных автомобиля

Идентификаторы задач

Подобно идентификаторам транспортных средств в Fleet Engine, каждая задача должна содержать идентификатор, чтобы отличать ее от других задач в системе. Вы ссылаетесь на все задачи в своем рабочем процессе и управляете ими по их идентификаторам. Эти идентификаторы создаются с помощью службы CreateTaskRequest и предоставления строки идентификатора, соответствующей требованиям, описанным в этом разделе.

Эта строка затем включает часть имени самого ресурса задачи, поле только для вывода в объекте Task . Это аналогично тому, как Fleet Engine создает ресурсы имен транспортных средств. См. раздел «Именование ресурсов» в книге «Введение в Fleet Engine» .

Требования к идентификатору задачи
Свойство Описание
Уникальность Каждый идентификатор задачи должен быть уникальным в вашей реализации Fleet Engine, чтобы избежать путаницы и обеспечить правильную идентификацию.
Формат
  • Никакой личной информации (PII) или открытых текстовых данных.
  • Допустимые строки Юникода.
  • Максимум 64 символа.
  • Исключите следующие символы: / : \ ? #
  • Нормализовано в соответствии с формой нормализации Unicode C.
Примеры идентификаторов задач
Хорошие примеры идентификаторов задач
  • 566c33d9-2a31-4b6a-9cd4-80ba1a0c643b
  • e4708eabcfa39bf2767c9546c9273f747b4626e8cc44e9630d50f6d129013d38
  • NTA1YTliYWNkYmViMTI0ZmMzMWFmOWY2NzNkM2Jk
Идентификаторы запрещенных задач
  • 31.08.2019-20:48-46.70746,-130.10807,-85.17909,61.33680
  • JohnDoe-577b484da26f-Купертино-Санта-Круз
  • 4R0oXLToF"112 Саммер Доктор Ист Хартфорд, 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, вписываются в типичный процесс путешествия. Например:

  • Задачи по сбору . Если у вас есть задача забора посылки, которая должна быть возвращена на склад для дальнейшей обработки, вам следует создать соответствующую задачу доставки для этой посылки, указав в качестве запланированного местоположения склад. В противном случае задачи получения обычно выполняются в том же порядке, что и задачи доставки.
  • Переназначение задачи . Вы не можете напрямую переназначить задачу другому транспортному средству. Вместо этого, чтобы переместить задачу с одного автомобиля на другой, закройте исходную задачу , а затем заново создайте ее, прежде чем назначать ее новому транспортному средству. Если вы обновите порядок задач для задачи, которая уже назначена другому транспортному средству, Fleet Engine выдаст ошибку.
  • Удаление задач . Как и в случае с транспортными средствами, Fleet Engine удаляет задачи, которые не обновлялись по истечении семи дней. Если вы попытаетесь повторно использовать идентификатор задачи, которая была ранее закрыта, Fleet Engine вернет ошибку, если этот идентификатор использовался в течение последних семи дней. И наоборот, если вы хотите хранить данные задачи дольше семи дней, вам придется реализовать эту возможность самостоятельно, например, с помощью запланированного задания по сбросу 7-дневных часов.

Поделитесь ходом выполнения задачи

В Fleet Engine вы можете отслеживать ход выполнения задач в режиме реального времени и делиться информацией о поездке водителя двумя основными способами:

  • Потребительский опыт позволяет потребителям знать статус своих заказов на отгрузку или запрошенного заказа на обслуживание.
  • Отслеживание автопарка для операторов вашего автопарка, позволяющее отслеживать и анализировать состояние транспортных средств в автопарке.

Потребительский опыт

Чтобы поделиться ходом выполнения задачи, вы настраиваете взаимодействие с пользователем с помощью JavaScript Consumer SDK. С помощью SDK вы можете улучшить визуальное взаимодействие с веб-сайтом или мобильным приложением, чтобы потребители могли отслеживать статус своего груза, а также расчетное время прибытия и обновления местоположения средства доставки в режиме реального времени. См . обзор запланированных задач Consumer SDK .

Consumer SDK содержит карту JavaScript и компоненты компонентов данных для подключения к Fleet Engine. Карта представляет собой замену стандартного объекта google.maps.Map . Ваш клиент должен аутентифицировать ваших конечных пользователей и использовать роль потребителя доставки из вашего проекта Google Cloud, чтобы возвращать только информацию, специфичную для клиента. Fleet Engine фильтрует и редактирует всю остальную информацию в ответах. Например, во время задачи недоступности конечным пользователям не передается никакая информация о местоположении.

В Fleet Engine вы включаете следующие настройки, чтобы делиться ходом выполнения задачи с потребителем:

  • Задачи используют свойство TaskTrackingViewConfig . Необязательный.
  • Задачи используют идентификатор отслеживания, который необходим библиотеке для идентификации соответствующих задач для потребителя.

Отслеживание флота

Библиотека отслеживания автопарка JavaScript позволяет визуализировать расположение транспортных средств в их автопарках практически в реальном времени. Библиотека использует API Fleet Engine для визуализации транспортных средств доставки, а также поставленных перед ними задач. Как и потребительский SDK JavaScript, он содержит компонент карты JavaScript, который является полной заменой стандартного объекта google.maps.Map с компонентами данных, которые вы используете для подключения к Fleet Engine.

Эта библиотека показывает видимость транспортных средств доставки сразу после их создания в Fleet Engine. В этой реализации вы используете роль IAM суперпользователя Fleet Engine Service Cloud и предоставляете заявку Java Web Token для доступа к средствам доставки и связанным с ними задачам.

Сценарии запланированных задач

В этом разделе показаны различные сценарии задач, которые суммируют информацию, представленную в этом месте руководства. Он предназначен для того, чтобы помочь вам понять различные способы моделирования транспортных операций в Fleet Engine в зависимости от вашего бизнеса.

Доставка с отслеживанием

В этом сценарии доставки показано задание плановой остановки, назначенное депо как при отправлении из депо в начале пути, так и при прибытии в депо в конце пути. Также показаны две задачи доставки для остановки, одна из которых не удалась. Используйте это задание, чтобы включить отслеживание от депо и до него, а также для моделирования времени начала и окончания дня. За запланированные задачи остановки счета не взимаются.

Самовывоз с доставкой в ​​депо

В этом сценарии показано, как смоделировать самовывоз с соответствующей соответствующей задачей доставки. Для целей расчета возврат на склад устанавливается как поставка .

Фидерная машина

В этом сценарии показаны две доставки с запланированной остановкой посередине для подающего транспортного средства, цель которой — дать возможность доставочному средству вернуться на склад с некоторым количеством упаковок для отправки. Вы также можете смоделировать подвозное транспортное средство с запланированной остановкой.

Сроки выполнения задачи

Моделирование времени выполнения задач помогает эффективно планировать маршрут, расчетное время прибытия и управлять ожиданиями доставки. Fleet Engine предлагает две ключевые функции для моделирования и прогнозирования сроков выполнения задач, как описано в этом разделе.

Продолжительность задачи

Продолжительность задачи задается с помощью поля task_duration , обязательного поля, которое моделирует ожидаемое время, которое водитель тратит на выполнение задач на остановке или на перерыве. Для остановок это включает в себя все необходимые действия после прибытия на остановку, такие как разгрузка посылок и взаимодействие с получателем. Чем более конкретной будет эта информация, тем лучше Fleet Engine сможет предоставить реалистичное время прибытия и расчетное время прибытия для последующих остановок в пути. Подробности о полях см. в разделе «Продолжительность» в документации по протокольным буферам .

Целевое временное окно

Целевое время определяет предлагаемый диапазон времени для задачи, обычно используемый для общения с клиентами или для целей внутреннего планирования. Вы устанавливаете это с помощью поля target_time_window , которое состоит из времени начала и времени окончания. Это не влияет напрямую на расчеты маршрута, но может использоваться в таких ситуациях, как предупреждение потребителя о временном интервале доставки посылки или о том, когда ожидать прибытия запланированного сервисного работника.

Атрибуты задачи

Атрибуты задач в Fleet Engine предоставляют удобный способ фильтрации задач по конкретным характеристикам при использовании запроса ListTasks . Вы также можете использовать настраиваемые атрибуты задач для аналитики с помощью Cloud Logging, а также для передачи информации потребителям или для отслеживания автопарка. Цель аналогична цели использования атрибутов транспортных средств: используйте ее, чтобы создать более целенаправленную перспективу ваших операций по доставке.

Ограничения и ограничения

  • Создание настраиваемых атрибутов . Fleet Engine ограничивает количество настраиваемых атрибутов, которые вы можете определить для каждой задачи. Свяжитесь с вашим торговым представителем и запросите увеличение этих лимитов.
  • Возможности фильтрации . Несмотря на гибкость фильтрации, атрибуты задачи не заменяют основные поля данных задачи. Используйте их для дополнительной фильтрации в соответствии с вашими конкретными потребностями.
  • Каждый атрибут должен иметь уникальный ключ .
  • Не включайте в значение атрибута информацию, позволяющую установить личность, или другую конфиденциальную информацию, поскольку она может быть видна пользователю.
  • Проверка данных . Убедитесь, что типы данных и форматы ваших пользовательских атрибутов совместимы с требованиями Fleet Engine.

Что дальше