Tarefas agendadas

Neste documento, descrevemos o serviço de tarefas agendadas no Fleet Engine. Ele pressupõe que você leu O que é o Fleet Engine? e conhece o recurso específico do serviço do Fleet Engine de que precisa.

Ao ler esta documentação, tenha em mente o seguinte:

  • Você cria tarefas e as associa a uma parada de veículo como uma forma de modelar a associação real entre a tarefa e o local onde se espera que o veículo pare para que o motorista possa concluir a tarefa. Leia Introdução a veículos para entender melhor como os veículos funcionam no Fleet Engine.
  • O Fleet Engine para tarefas programadas usa os seguintes recursos: um Task e um DeliveryVehicle. O Fleet Engine fornece um serviço gRPC e interfaces REST:
    • Task: gRPC e REST
    • DeliveryVehicle: gRPC e REST
    • Para simplificar, este manual usa exemplos de gRPC.

O que é uma tarefa programada?

Uma tarefa programada no Fleet Engine representa uma ação individual a ser realizada por um motorista usando um veículo no contexto mais amplo de uma operação de transporte. Define o objetivo específico do motorista. Exemplo:

  • para entregar um bem a uma residência
  • para retirar um pacote para devolução ao depósito de envio
  • parar em um local para prestar um serviço local a um cliente
  • para fazer uma parada programada para abastecer o veículo

Elementos de tarefas

A imagem a seguir ilustra esses elementos de tarefa em uma viagem programada padrão para um veículo.

Campos de tarefas básicos

Campo Descrição
Tipo Define o tipo de ação associado à tarefa.
ID da tarefa String que identifica exclusivamente a tarefa no sistema.
Local planejado Especifica o local pretendido em que a tarefa precisa ser realizada. Esse local nem sempre é o mesmo planejado para a parada de veículo.
Estado Indica se a tarefa está aberta ou fechada.
Resultado da tarefa Indica se a tarefa foi bem-sucedida ou falhou.

Modelo de dados para tarefas

Os diagramas a seguir ilustram o modelo de dados do recurso Task com o diagrama do recurso DeliveryVehicle associado. Você pode analisar os dois diagramas para entender as relações entre os dois recursos, lembre-se do seguinte:

  • Local planejado: as paradas de veículos e as tarefas têm locais planejados, distintos entre si.
    • Para tarefas, um local planejado indica onde a ação do motorista deve ocorrer. Por exemplo, as entregas de 15 pacotes em um grande complexo residencial exigem a entrega em diferentes locais de correspondência dentro do mesmo complexo.
    • Para paradas de veículos, o local planejado indica a parada do veículo enquanto o motorista realiza as tarefas. Por exemplo, um veículo para na entrada de um complexo de apartamentos e o motorista entrega os pacotes manualmente em salas de correspondência separadas dentro do complexo.
  • Estado: as tarefas e as paradas de veículos têm um campo de state, diferente um do outro.
    • O estado da parada reflete o andamento do veículo em relação à parada, usado para fins de rastreamento de frota.
    • O estado da tarefa indica se ela está ativa ou não. Isso impacta outras operações a serem realizadas em tarefas, como definir o resultado ou atribuir a um veículo.
  • Resultado da tarefa: é um campo importante no modelo de dados, porque é usado para indicar o sucesso ou a falha de uma tarefa, independente do estado dela.

  • IDs:

    • Quando você atribui uma tarefa a um veículo, o motor da frota preenche o campo deliveryVehicleId. Esse campo somente leitura indica o veículo ao qual a tarefa é atribuída.
    • Os IDs de tarefas são identificadores exclusivos em todas as tarefas no seu sistema.
    • Os IDs de rastreamento identificam uma tarefa com a finalidade de rastrear o frete.

Modelo de dados de tarefas

Modelo de dados do veículo

IDs de tarefas

Assim como os IDs de veículos no Fleet Engine, cada tarefa precisa conter um ID para diferenciar as tarefas no sistema. Você faz referência e gerencia todas as tarefas no fluxo de trabalho pelo ID delas. Para criar esses IDs, use o serviço CreateTaskRequest e forneça uma string de ID que esteja em conformidade com os requisitos descritos nesta seção.

Essa string compreende parte do nome do recurso da tarefa, um campo somente saída no objeto Task. Isso é análogo à maneira como o Fleet Engine constrói recursos de nomes de veículos. Consulte a seção Nomenclatura de recursos em Introdução ao Fleet Engine.

Requisitos de ID de tarefas
Propriedade Descrição
Exclusividade Cada ID de tarefa precisa ser exclusivo na implementação do Fleet Engine para evitar confusão e garantir a identificação adequada.
Formato
  • Nenhuma informação de identificação pessoal (PII) ou dados de texto claro.
  • Strings Unicode válidas.
  • Máximo de 64 caracteres.
  • Exclua os seguintes caracteres: / : \ ? #
  • Normalizado de acordo com o Formulário de normalização Unicode C.
Exemplos de IDs de tarefas
Exemplos de IDs de tarefas boas
  • 566c33d9-2a31-4b6a-9cd4-80ba1a0c643b
  • e4708eabcfa39bf2767c9546c9273f747b4626e8cc44e9630d50f6d129013d38
  • NTA1YTliYWNkYmViMTI0ZmMzMWFmOWY2NzNkM2Jk
IDs de tarefas não permitidos
  • 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

Tipos de tarefa

O Fleet Engine oferece suporte a vários tipos de tarefas para representar diferentes ações em uma operação de transporte. Eles estão descritos aqui, junto com a visibilidade e os detalhes de faturamento.

Tipo de tarefa Descrição Visibilidade do rastreamento de envio Faturado
Tarefa de entrega Use para deixar itens ou concluir uma tarefa para um cliente. Os consumidores podem ver e rastrear isso. Sim
Tarefa de retirada Use para indicar a retirada de produtos de um cliente. Você precisa ter tarefas de entrega correspondentes para qualquer tarefa de retirada. Os consumidores podem ver e rastrear isso. Não
Tarefa de indisponibilidade Identifica o veículo como indisponível para o serviço, por exemplo, quando o motorista faz uma pausa ou reabastece o veículo. Não está visível para os consumidores. Não
Tarefa de parada programada Uma tarefa que não é de entrega e exige uma parada em um local específico. Use tarefas de parada programada para paradas de coleta programadas diárias em um local específico, independentemente de outras entregas ou coletas no mesmo local. Também é possível criar tarefas de parada programadas para coletas de caixas de coleta ou para modelar transferências de veículos de abastecimento ou paradas em centros e pontos de serviço. Os consumidores não conseguem acompanhar essa tarefa específica, mas podem vê-la como parte do monitoramento de outras tarefas. Não

Ciclo de vida da tarefa e da jornada

Nesta seção, fornecemos detalhes sobre o ciclo de vida da tarefa de entrega no Fleet Engine. O ciclo de vida da tarefa está conectado à jornada do veículo porque o veículo precisa viajar até uma parada para que um motorista conclua uma tarefa no local planejado.

1. Criação de tarefas

Ao criar uma tarefa no Fleet Engine, você define vários campos para ela sem precisar associá-los a uma parada.

Propriedades da tarefa
Propriedade Descrição
Estado Definido como OPEN
Códigos Defina a tarefa e o ID de rastreamento se você usa o rastreamento de frete para seus consumidores.
Tempo A duração planejada da tarefa e a janela de tempo desejada. Consulte Tempo da tarefa para mais detalhes.
Local planejado Defina a coordenada geográfica exata em que a tarefa será concluída.

2. Atribuição de tarefas

Ao atribuir uma tarefa a um veículo, você faz isso em conjunto com uma parada. As paradas são coordenadas de latitude/longitude que indicam o local em que o veículo estaciona enquanto o motorista conclui as tarefas associadas a ela. Normalmente, as paradas são um ponto de acesso, como uma doca de carregamento ou um local posicionado na via.

3. Em andamento

O estado de uma tarefa é OPEN ou CLOSED. No entanto, depois que uma tarefa é atribuída a um veículo, é possível acompanhar o progresso dela pela associação ao veículo e onde ele está em relação à parada em que a tarefa precisa ser concluída.

Depois que o veículo sai de uma parada ou inicia o trajeto, o status dela muda para ENROUTE. Dessa forma, o rastreamento de remessas do consumidor pode atualizar o destinatário de uma tarefa com o número de paradas restantes e o tempo de chegada estimado. Também é compatível com qualquer visualização em tempo real para rastreamento de remessas de consumidores ou de frotas.

4. Chegada e resultado da tarefa

Quando o veículo chega a uma parada, o status dela precisa ser definido como ARRIVED. Assim como acontece com um status de parada ENROUTE, isso não afeta o estado da tarefa em si, mas oferece suporte a notificações do consumidor e qualquer relatório em tempo real para rastreamento de frota usado pelos operadores de frota. Ele também permite análises e relatórios sobre a operação que você usaria para otimizações de exibição.

Quando o veículo chega a uma parada, o sistema pode processar o restante da jornada da tarefa usando uma das seguintes abordagens:

  • Feche as tarefas à medida que elas forem concluídas.

    Quando o motorista marca a tarefa como concluída, o sistema pode removê-la da parada, mas deixar a parada com outras tarefas atribuídas a ela.

  • Remova toda a parada do veículo.

    Quando o motorista marcar todas as tarefas como concluídas e o veículo estiver a caminho da próxima parada, você poderá remover a parada inteira do veículo. O Fleet Engine fecha automaticamente todas as tarefas associadas a uma parada removida.

Encerrar uma tarefa não indica sucesso ou falha

O fechamento de uma tarefa indica apenas que ela não está mais em andamento. Para tarefas no estado CLOSED, você define o resultado como SUCCEEDED ou FAILED. Isso é necessário para indicar o resultado real do rastreamento de remessas e para o faturamento adequado. O Fleet Engine cobra apenas as tarefas de entrega com estado SUCCEEDED.

Depois de definir o resultado de uma tarefa, não é possível mudá-lo

Ao marcar o resultado de uma tarefa, o Fleet Engine preenche automaticamente o local de resultado da tarefa com a última localização conhecida do veículo. No entanto, é possível modificar o horário e o local do resultado da tarefa depois que eles forem definidos, e o mecanismo de frota não modificará esses campos.

5. Outros cenários de tarefas

Nem todas as tarefas que você modela no Fleet Engine se encaixam em um fluxo de jornada típico. Por exemplo:

  • Tarefas de retirada. Quando você tiver uma tarefa de retirada para que um pacote seja devolvido ao depósito para processamento posterior, crie uma tarefa de entrega correspondente para esse pacote, com o local planejado definido como o depósito. Caso contrário, as tarefas de retirada geralmente seguem o mesmo fluxo das tarefas de entrega.
  • Reatribuição de tarefa. Não é possível reatribuir uma tarefa diretamente a um veículo diferente. Em vez disso, para mover uma tarefa de um veículo para outro, feche a tarefa original e a recrie antes de atribuir o novo veículo. Se você atualizar a ordem de uma tarefa que já foi atribuída a um veículo diferente, o Fleet Engine vai gerar um erro.
  • Como excluir tarefas. Assim como nos veículos, o Fleet Engine exclui tarefas que não foram atualizadas após sete dias. Se você tentar reutilizar um ID de tarefa para uma que tenha sido encerrada anteriormente, o Fleet Engine retornará um erro se esse ID tiver sido usado nos últimos sete dias. Por outro lado, se você quiser manter os dados da tarefa por mais de sete dias, implemente esse recurso por conta própria, como em um job programado para redefinir o relógio de sete dias.

Compartilhar o progresso da tarefa

No Fleet Engine, é possível monitorar o progresso da tarefa em tempo real e compartilhar a jornada do motorista de duas maneiras principais:

  • Experiência do consumidor para que os consumidores saibam o status dos pedidos de envio ou de serviço solicitados.
  • Rastreamento de frota: usados pelos operadores de frota para acompanhar e analisar o status dos veículos na frota.

Experiência do consumidor

Para compartilhar o progresso da tarefa, configure a experiência do consumidor usando o SDK do consumidor JavaScript. Com o SDK, é possível melhorar a experiência visual de apps para dispositivos móveis ou da Web para que os consumidores possam monitorar o status do remessa, além de horários de chegada estimados e atualizações de localização em tempo real para o veículo de entrega. Consulte a Visão geral de tarefas programadas do SDK do consumidor.

O SDK do consumidor contém um mapa JavaScript e componentes de dados para se conectar ao Fleet Engine. O mapa é uma substituição simples para um objeto google.maps.Map padrão. O cliente precisa autenticar os usuários finais e usar o papel de consumidor de Entrega do projeto do Google Cloud para retornar apenas informações específicas do cliente. O Fleet Engine filtra e edita todas as outras informações nas respostas. Por exemplo, em uma tarefa de indisponibilidade, nenhuma informação de localização é compartilhada com o usuário final.

No Fleet Engine, você ativa as seguintes configurações para compartilhar o progresso da tarefa com o consumidor:

  • As tarefas usam a propriedade TaskTrackingViewConfig. Opcional.
  • As tarefas usam um ID de rastreamento, que a biblioteca precisa para identificar tarefas relevantes para um consumidor.

Fleet Tracking

A biblioteca JavaScript de rastreamento de frota permite visualizar a localização dos veículos das frotas quase em tempo real. A biblioteca usa a API Fleet Engine para fornecer a visualização dos veículos de entrega e das tarefas atribuídas a eles. Assim como o SDK do consumidor JavaScript, ele contém um componente de mapa JavaScript que é uma substituição rápida de uma entidade google.maps.Map padrão com componentes de dados que você usa para se conectar ao Fleet Engine.

Essa biblioteca mostra a visibilidade dos veículos de entrega assim que eles são criados no Fleet Engine. Para essa implementação, use o papel do Cloud IAM de superusuário do serviço do Fleet Engine e forneça a reivindicação de token da Web Java para acesso aos veículos de entrega e às tarefas associadas.

Cenários de tarefas programadas

Esta seção mostra vários cenários de tarefas que resumem as informações fornecidas neste ponto do guia. O objetivo é ajudar você a entender as várias maneiras de modelar suas operações de transporte no Fleet Engine, dependendo da sua empresa.

Entrega com rastreamento

Este cenário de entrega mostra uma tarefa de parada programada atribuída ao depósito na partida do depósito no início da viagem e na chegada ao depósito no fim da viagem. Ele também mostra duas tarefas de entrega para uma parada, uma delas com falha. Use essa atribuição para ativar o rastreamento de e para o depósito e como uma maneira de modelar os horários de início e término do dia. Não há faturamento com tarefas de interrupção programadas.

Retirada com entrega em depósito

Este cenário mostra como modelar uma retirada com a tarefa de entrega correspondente necessária. Você definiu a devolução ao depósito como uma entrega para fins de faturamento.

Veículo alimentador

Este cenário mostra duas entregas com uma parada programada no meio para um veículo alimentador, com o objetivo de permitir que o veículo de entrega retorne ao depósito com vários pacotes a serem enviados. Você também pode modelar o veículo alimentador com uma parada programada.

Tempo da tarefa

A estimativa dos tempos das tarefas ajuda no planejamento de rotas, nos ETAs e no gerenciamento de expectativas de entrega de maneira eficaz. O Fleet Engine oferece duas funcionalidades principais para modelar e prever o tempo de tarefas, conforme descrito nesta seção.

Duração da tarefa

A duração da tarefa é definida com o campo task_duration, um campo obrigatório que modela o tempo previsto que o motorista gasta concluindo tarefas em uma parada ou para fazer uma pausa. Para paradas, isso inclui todas as atividades necessárias após a chegada a uma parada, como descarregar pacotes e interagir com o destinatário. Quanto mais específicas forem essas informações, melhor o Fleet Engine poderá fornecer horários de chegada e HECs realistas para as próximas paradas da viagem. Para ver mais detalhes sobre o campo, consulte Duração na Documentação dos buffers de protocolo.

Janela de tempo desejada

O tempo de destino define um intervalo de tempo proposto para uma tarefa, normalmente usado para comunicação com clientes ou para fins de planejamento interno. Defina isso com o campo target_time_window, que consiste em um horário de início e um de término. Isso não influencia diretamente os cálculos de rota, mas pode ser usado para situações como alertar um consumidor sobre um período de tempo para a entrega de um pacote ou quando esperar a chegada de um service worker programado.

Atributos da tarefa

Os atributos de tarefas no Fleet Engine oferecem uma maneira conveniente de filtrar tarefas com base em características específicas ao usar a solicitação ListTasks. Também é possível usar atributos de tarefas personalizados para análises com o Cloud Logging, além de comunicar informações aos consumidores ou para o rastreamento de frotas. O objetivo é semelhante ao dos atributos do veículo: use isso para criar uma perspectiva mais focada das suas operações de entrega.

Limitações e restrições

  • Criação de atributos personalizados: o Fleet Engine limita o número de atributos personalizados que você pode definir por tarefa. Entre em contato com seu representante de vendas para solicitar um aumento desses limites.
  • Recursos de filtragem: embora ofereçam flexibilidade de filtragem, os atributos de tarefa não substituem os principais campos de dados de tarefas. Use-os para filtrar mais de acordo com suas necessidades específicas.
  • Cada atributo precisa ter uma chave exclusiva.
  • Não inclua informações de identificação pessoal ou outras informações sensíveis no valor do atributo, porque elas podem ser visíveis para o usuário.
  • Validação de dados: verifique se os tipos e formatos de dados dos atributos personalizados são compatíveis com os requisitos do Fleet Engine.

A seguir