Configurar tarefas

Este documento pressupõe que você sabe como criar e usar tarefas. Ele fornece exemplos específicos de como configurar tarefas de envio das seguintes maneiras:

  • Definir a janela de tempo de destino para uma tarefa de envio: defina a janela de tempo para a conclusão da tarefa.

  • Personalizar a visibilidade da tarefa: personalize a visibilidade das atividades da tarefa para exibição aos clientes ou operadores de frota.

Consulte Criar tarefas de envio para mais detalhes sobre os campos das tarefas de envio. Ao atualizar mais informações sobre as tarefas atuais, inclua também o identificador relevante da tarefa, além dos campos que você atualiza para as tarefas.

Definir a janela de tempo de destino

A janela de tempo de destino é o TimeWindow durante o qual a tarefa precisa ser concluída. Por exemplo, se você comunicar uma janela de tempo de entrega aos destinatários, poderá usar a janela de tempo de destino da tarefa para capturar essa janela de tempo e gerar alertas ou para analisar o desempenho de viagens anteriores.

A janela de tempo de destino consiste em um horário de início e um horário de término e pode ser definida em qualquer tipo de tarefa. A janela de tempo de destino não afeta o comportamento de roteamento.

Os exemplos a seguir mostram como definir a janela de tempo usando a biblioteca gRPC do Java ou como fazer uma solicitação HTTP REST para UpdateTask. Também é possível definir esse campo no momento da criação da tarefa.

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String TASK_ID = "task-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Task settings
  String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
  Task task = Task.newBuilder()
    .setName(taskName)
    .setTargetTimeWindow(
      TimeWindow.newBuilder()
        .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
        .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
    .build();

  // Task request
  UpdateTaskRequest updateTaskRequest =
    UpdateTaskRequest.newBuilder()  // No need for the header
        .setTask(task)
        .setUpdateMask(FieldMask.newBuilder().addPaths("targetTimeWindow"))
        .build();

  try {
    Task updatedTask = deliveryService.updateTask(updateTaskRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

REST

Para definir uma janela de tempo de tarefa usando HTTP, chame PATCH e use updateMask para atualizar o parâmetro targetTimeWindow:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow

Aqui, <id> é um identificador exclusivo da tarefa. O cabeçalho da solicitação precisa conter um campo Authorization com o valor Bearer <token>, em que <token> é emitido pelo servidor de acordo com as diretrizes descritas em Papéis da conta de serviço e tokens da Web JSON.

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=targetTimeWindow" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
    "targetTimeWindow": {
      "startTime": "2023-03-29T21:00:00Z",
      "endTime": "2023-03-29T23:00:00Z"
    }
  }
  EOM

Personalizar a visibilidade da tarefa

Por padrão, o Fleet Engine oferece visibilidade das atividades de tarefas que podem ser exibidas aos clientes que recebem um envio e aos operadores de frota que rastreiam envios. Isso inclui informações como indicar o número de paradas antes de enviar uma notificação ao cliente sobre o status de entrega do pacote. É possível personalizar essas informações por tarefa para se adequar melhor ao seu modelo de negócios.

Esta seção descreve as regras de visibilidade para objetos rastreados no mapa. Essas regras se aplicam a duas categorias de objetos:

  • Visibilidade do marcador de local
  • Visibilidade dos dados de tarefas de veículos ativos, como polilinhas e HEC

Regras de visibilidade do marcador de local

O Fleet Engine mostra marcadores de local para o local de entrega do envio mostrado no mapa, independentemente do estado da entrega.

Regras de visibilidade dos dados da tarefa

Esta seção descreve as regras de visibilidade padrão que se aplicam aos dados da tarefa. Só é possível personalizar tarefas de veículos ativos, o que significa que apenas tarefas de coleta e entrega podem aplicar regras de visibilidade personalizadas.

As tarefas a seguir não podem ser personalizadas:

  • Paradas programadas
  • Tarefas de indisponibilidade
  • Tarefas de veículos inativos

Regras de visibilidade de tarefas de indisponibilidade

Por padrão, o veículo não aparece no mapa se pelo menos uma tarefa de indisponibilidade for atribuída à tarefa que está sendo rastreada. Por exemplo, se o motorista estiver fazendo uma pausa ou se o veículo estiver sendo reabastecido na rota para o envio rastreado. O horário estimado de chegada e o horário estimado de conclusão da tarefa ainda estão disponíveis. Novamente, não é possível personalizar essa regra.

Visibilidade de tarefas de veículos ativos

O objeto TaskTrackingInfo fornece vários elementos de dados que você pode mostrar usando a biblioteca de rastreamento de envios. Por padrão, esses campos ficam visíveis quando a tarefa é atribuída ao veículo e quando o veículo está a até 5 paradas da tarefa. A visibilidade termina quando a tarefa é concluída ou cancelada.

É possível personalizar a configuração de visibilidade por tarefa definindo o TaskTrackingViewConfig em uma tarefa ao criar ou atualizar a tarefa no Fleet Engine. Isso cria regras para que elementos de dados individuais fiquem disponíveis.

A tabela a seguir mostra os campos a que você pode aplicar regras de visibilidade.

Campos de tarefas de veículos para regras de visibilidade
  • Polilinhas de rota
  • Horário estimado de chegada
  • Horário estimado de conclusão da tarefa
  • Distância restante de direção até a tarefa
  • Número de paradas restantes
  • Localização do veículo

Esta tabela mostra as opções de visibilidade disponíveis para os campos listados acima.

Opções de visibilidade
  • Número de paradas restantes
  • Duração até o horário estimado de chegada
  • Distância restante de direção
  • Sempre visível
  • Nunca visível

Regras de visibilidade de polilinhas de rota e localização de veículos

Para uma rota rastreada, a visibilidade das polilinhas de rota está sujeita à visibilidade do veículo. Se uma polilinha de rota estiver visível em uma rota ativa em que o veículo não está visível, a localização do veículo ainda poderá ser inferida pelo final da polilinha visível. Portanto, a visibilidade da polilinha de rota precisa ser tão restritiva quanto a visibilidade do veículo.

Siga estas regras para fornecer uma combinação válida de visibilidade de polilinhas de rota / localização de veículos.

As polilinhas de rota e a localização do veículo especificam as mesmas opções de visibilidade

Nesse cenário, a polilinha e a localização do veículo definem as mesmas opções, que incluem:

  • número de paradas restantes
  • duração até o HEC
  • distância restante de direção

Para obedecer às regras, o valor da visibilidade das polilinhas de rota precisa ser menor ou igual a o valor definido para a visibilidade do veículo. Neste exemplo, o limite de paradas restantes para a polilinha é definido como 3, que é menor que o valor de 5 especificado para o veículo. Isso significa que, quando a viagem rastreada atinge 5 paradas do local da tarefa, o veículo aparece, mas a rota desse veículo não aparece até que a viagem esteja a 3 paradas de distância.

```js
"taskTrackingViewConfig": {
  "routePolylinePointsVisibility": {
    "remainingStopCountThreshold": 3
  },
  "vehicleLocationVisibility": {
    "remainingStopCountThreshold": 5
  },
}
```

As polilinhas de rota e a localização do veículo especificam opções de visibilidade diferentes

Quando as polilinhas de rota e a localização do veículo têm opções de visibilidade diferentes , a localização do veículo só fica visível quando ambas as opções de visibilidade são atendidas. Novamente, a visibilidade da polilinha está sujeita às regras de visibilidade do veículo:

  • Sempre visível: uma polilinha de rota precisa usar a opção de visibilidade sempre visível quando a localização do veículo também fornece a mesma opção de visibilidade sempre visível.
  • Nunca visível: uma polilinha de rota precisa usar uma opção de visibilidade nunca visível quando a localização do veículo usa uma opção de visibilidade nunca visível.

Segue um exemplo:

  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "vehicleLocationVisibility": {
      "remainingDrivingDistanceMetersThreshold": 3000
    },
  }

Neste exemplo, a localização do veículo só fica visível se o número de paradas restantes for de pelo menos 3 E a distância restante de direção for de pelo menos 3.000 metros.

Exemplo de personalização da visibilidade da tarefa

Os exemplos a seguir mostram como definir uma tarefa com as seguintes regras de visibilidade:

  • Mostrar as polilinhas de rota se o veículo estiver a até 3 paradas.
  • Mostrar o HEC se a distância restante de direção for menor que 5.000 metros.
  • Nunca mostrar o número de paradas restantes.
  • Cada outro campo mantém a visibilidade padrão de ser mostrado quando o veículo está a até 5 paradas da tarefa.

Consulte TaskTrackingViewConfig para gRPC ou REST.

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
  .setName(taskName)
  .setTaskTrackingViewConfig(
    TaskTrackingViewConfig.newBuilder()
      .setRoutePolylinePointsVisibility(
        VisibilityOption.newBuilder().setRemainingStopCountThreshold(3))
      .setEstimatedArrivalTimeVisibility(
        VisibilityOption.newBuilder().remainingDrivingDistanceMetersThreshold(5000))
      .setRemainingStopCountVisibility(
        VisibilityOption.newBuilder().setNever(true)))
  .build();

// Task request
UpdateTaskRequest updateTaskRequest =
  UpdateTaskRequest.newBuilder()  // No need for the header
      .setTask(task)
      .setUpdateMask(FieldMask.newBuilder().addPaths("taskTrackingViewConfig"))
      .build();

try {
  Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
      case NOT_FOUND:
        break;
      case PERMISSION_DENIED:
        break;
  }
  return;
}

REST

Para definir a janela de configuração da visualização de rastreamento de tarefas usando HTTP, chame PATCH e use updateMask para atualizar o parâmetro taskTrackingViewConfig:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskTrackingViewConfig

Exemplo:

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=taskTrackingViewConfig" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "estimatedArrivalTimeVisibility": {
      "remainingDrivingDistanceMetersThreshold": 5000
    },
    "remainingStopCountVisibility": {
      "never": true
    }
  }
}
EOM

A seguir