Encontrar tarefas

Este documento descreve as maneiras de encontrar informações de tarefas em um servidor ou navegador. O Fleet Engine oferece duas maneiras de encontrar tarefas:

  • Pesquisar tarefas: é possível pesquisar tarefas pelos seguintes IDs:

    • ID da tarefa: usado por usuários como operadores de frota que têm acesso à visualização completa dos dados da tarefa.
    • ID de rastreamento: usado pelo software do cliente para fornecer informações limitadas a um usuário final, por exemplo, quando um pacote é esperado na casa dele.

    Entenda a diferença entre o ID da tarefa e o ID de rastreamento. Eles não são a mesma coisa. Consulte Campos básicos da tarefa no guia de tarefas programadas.

  • Listar tarefas: acesso amplo a tarefas, destinado apenas a usuários confiáveis.

Consultar tarefas

Esta seção descreve como procurar tarefas por ID da tarefa ou ID de rastreamento. Ele tem os seguintes requisitos:

  • As pesquisas por ID de rastreamento precisam obedecer às regras de visibilidade definidas em Regras de visibilidade para objetos rastreados.

  • Use o token mais restrito possível para limitar os riscos de segurança. Por exemplo, se você usar um token de consumidor de entrega, todas as chamadas vão retornar apenas informações relevantes para esse usuário final, como o remetente ou o destinatário de um envio. O Fleet Engine oculta todas as outras informações nas respostas. Para mais informações sobre tokens, consulte Tokens da Web JSON.

Consultar tarefa por ID

É possível pesquisar uma tarefa pelo ID dela em um ambiente de servidor usando gRPC ou REST. Os exemplos a seguir mostram como usar a biblioteca Java gRPC ou uma solicitação REST para GetTask.

gRPC

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

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Task request
 String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
 GetTaskRequest getTaskRequest = GetTaskRequest.newBuilder()  // No need for the header
     .setName(taskName)
     .build();

 try {
   Task task = deliveryService.getTask(getTaskRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;

      case PERMISSION_DENIED:
        break;
   }
   return;
 }

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<taskId>

  • <id> é um identificador exclusivo da tarefa.
  • <taskId> é o ID da tarefa a ser pesquisada.
  • O cabeçalho da solicitação precisa conter um campo Autorização 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 JSON Web.
  • O corpo da solicitação precisa estar vazio.
  • Se a pesquisa for bem-sucedida, o corpo da resposta conterá uma entidade de tarefa.

Comando curl de exemplo:

    # Set JWT, PROJECT_ID, and TASK_ID in the local environment
    curl -H "Authorization: Bearer ${JWT}" \
      "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}"

Consultar tarefas por ID de rastreamento

Os exemplos a seguir mostram como procurar tarefas pelo ID de rastreamento do envio usando o gRPC ou uma chamada REST HTTP para GetTaskTrackingInfo.

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TRACKING_ID = "TID-7449w087464x5";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Tasks request
String parent = "providers/" + PROJECT_ID;
GetTaskTrackingInfoRequest getTaskTrackingInfoRequest = GetTaskTrackingInfoRequest.newBuilder()  // No need for the header
    .setParent(parent)
    .setTrackingId(TRACKING_ID)
    .build();

try {
  TaskTrackingInfo taskTrackingInfo = deliveryService.getTaskTrackingInfo(getTaskTrackingInfoRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;

     case PERMISSION_DENIED:
       break;
  }
  return;
}

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/taskTrackingInfo/<tracking_id>

  • <tracking_id> é o ID de acompanhamento associado à tarefa.

  • O cabeçalho da solicitação precisa conter um campo Authorization com o valor Bearer <token>, em que <token> tem o papel da conta de serviço correto. Consulte Papéis de contas de serviço.

  • Se a pesquisa for bem-sucedida, o corpo da resposta conterá uma entidade taskTrackingInfo.

Comando curl de exemplo:

# Set JWT, PROJECT_ID, and TRACKING_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
  "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/taskTrackingInfo/${TRACKING_ID}"

Listar tarefas

A listagem de tarefas solicita acesso amplo a elas. A listagem de tarefas é destinada apenas a usuários confiáveis. Use tokens de autenticação do leitor de frota de entrega ou do administrador de entrega ao fazer solicitações de tarefas de lista. Consulte Papéis de contas de serviço para mais informações.

Paginar listas

As listas de tarefas são paginadas. Um tamanho de página pode ser especificado em solicitações de tarefas de lista. Se um tamanho de página for especificado, o número de tarefas retornadas não será maior do que o tamanho de página especificado. Se nenhum tamanho de página estiver presente, um padrão razoável será usado. Se o tamanho da página solicitado exceder um valor máximo interno, o máximo interno será usado.

Uma lista de tarefas pode incluir um token para ler a próxima página de resultados. Para extrair essa próxima página, emita novamente a mesma solicitação com o token de página. Quando o token de página retornado está vazio, não há mais tarefas disponíveis para recuperação.

Campos ao listar tarefas

O Fleet Engine oculta os seguintes campos ao listar tarefas:

  • VehicleStop.planned_location
  • VehicleStop.state
  • VehicleStop.TaskInfo.taskId

Use os seguintes formatos de campo com base nas propostas de melhoria da API Google:

Tipo de campo Formato Exemplo
Carimbo de data/hora RFC-3339 task_outcome_time = 2022-03-01T11:30:00-08:00
Duração Número de segundos seguido de s task_duration = 120s
Enumeração String state = CLOSED AND type = PICKUP
Local point.latitude e point.longitude planned_location.point.latitude > 36.1 AND planned_location.point.longitude < -122.0

Filtrar tarefas listadas

É possível filtrar as tarefas listadas pela maioria das propriedades. Para a sintaxe da consulta de filtro, consulte AIP-160. Se nenhuma consulta de filtro for especificada, todas as tarefas serão listadas.

A tabela a seguir mostra as propriedades de tarefa válidas que podem ser usadas para filtrar:

Propriedades de tarefa para filtrar listas
  • type
  • attributes
  • tracking_id
  • delivery_vehicle_id
  • state
  • planned_location
  • task_duration
  • task_duration_outcome
  • task_outcome
  • task_outcome_location
  • task_outcome_time

Consulte AIP-160 para conferir uma lista completa de operadores de consulta de filtro.

Exemplos de tarefas de lista

O exemplo a seguir mostra como listar tarefas para um deliveryVehicleId e um atributo de tarefa, ambos com a biblioteca Java gRPC e com a chamada HTTP REST para ListTasks.

Uma resposta bem-sucedida ainda pode estar vazia. Uma resposta vazia indica que não há tarefas associadas ao deliveryVehicleId fornecido.

gRPC

 static final String PROJECT_ID = "my-delivery-co-gcp-project";
 static final String TRACKING_ID = "TID-7449w087464x5";

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Tasks request
 String parent = "providers/" + PROJECT_ID;
 ListTasksRequest listTasksRequest = ListTasksRequest.newBuilder()  // No need for the header
     .setParent(parent)
     .setFilter("delivery_vehicle_id = 123 AND attributes.foo = true")
     .build();

 try {
   ListTasksResponse listTasksResponse = deliveryService.listTasks(listTasksRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;

      case PERMISSION_DENIED:
        break;
   }
   return;
 }

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks

Para aplicar um filtro às tarefas listadas, inclua um parâmetro de URL "filter" com uma consulta de filtro codificada por URL como valor.

O cabeçalho da solicitação precisa conter um campo Authorization com o valor Bearer <token>, em que <token> tem o papel da conta de serviço correto. Consulte Papéis de contas de serviço.

Uma pesquisa bem-sucedida fornece um corpo de resposta com a seguinte estrutura:

    // JSON representation
    {
      "tasks": [
        {
          object (Task)
        }
      ],
      "nextPageToken": string,
      "totalSize": integer
    }

Comando curl de exemplo:

 # Set JWT, PROJECT_ID, and VEHICLE_ID in the local environment
 curl -H "Authorization: Bearer ${JWT}" \
   "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?filter=state%20%3D%20OPEN%20AND%20delivery_vehicle_id%20%3D%20${VEHICLE_ID}"

A seguir