Este documento pressupõe que você sabe como criar e usar tarefas. Ele oferece 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 o período em que a tarefa precisa ser concluída.
Personalizar a visibilidade das tarefas: personalize a visibilidade das atividades de tarefas para exibição a clientes ou operadores de frota.
Consulte Criar tarefas de envio para detalhes sobre os campos. Ao atualizar informações adicionais sobre tarefas atuais, inclua o identificador relevante da tarefa, além dos campos que você atualiza.
Definir o período desejado
A janela de tempo de destino é o TimeWindow durante o qual a tarefa deve ser concluída. Por exemplo, se você comunicar um período de entrega aos destinatários, poderá usar o período de destino da tarefa para capturar esse período e gerar alertas ou analisar a performance de viagens anteriores.
O período de destino consiste em um horário de início e um horário de término e pode ser definido 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 o período usando a biblioteca gRPC 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 um período 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 seu servidor de acordo com as diretrizes descritas em Funções 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 das tarefas
Por padrão, o Fleet Engine oferece visibilidade das atividades de tarefas que podem ser mostradas aos clientes que recebem uma remessa e aos operadores de frota que rastreiam remessas. Isso inclui informações como indicar o número de paradas antes de enviar uma notificação a um cliente sobre o status da entrega do pacote. É possível personalizar essas informações para cada tarefa e adequá-las 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 para tarefas ativas do veículo, como polilinhas e ETA
Regras de visibilidade do marcador de local
O Fleet Engine mostra marcadores de local para o local de entrega da remessa mostrado no mapa, independente do estado da entrega.
Regras de visibilidade dos dados de tarefas
Esta seção descreve as regras de visibilidade padrão que se aplicam aos dados de tarefas. Só é possível personalizar tarefas ativas do veículo, ou seja, apenas tarefas de coleta e entrega podem aplicar regras de visibilidade personalizadas.
As seguintes tarefas não podem ser personalizadas:
- Paradas programadas
- Tarefas de indisponibilidade
- Tarefas inativas do veículo
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 no trajeto até a entrega rastreada. O horário estimado de chegada e o tempo estimado para conclusão da tarefa ainda estão disponíveis. Não é possível personalizar essa regra.
Visibilidade das tarefas ativas do veículo
O objeto TaskTrackingInfo
fornece vários elementos de dados que você pode tornar visíveis 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 ele está a até cinco 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 estejam disponíveis.
A tabela a seguir mostra os campos em que você pode aplicar regras de visibilidade.
Campos de tarefas de veículos para regras de visibilidade |
---|
|
Esta tabela mostra as opções de visibilidade disponíveis para os campos listados acima.
Opções de visibilidade |
---|
|
Polilinhas de rota e regras de visibilidade da localização do veículo
Para uma rota rastreada, a visibilidade das polilinhas está sujeita à visibilidade do veículo. Se uma polilinha de rota estiver visível em um trajeto ativo em que o veículo não está visível, a localização dele ainda poderá ser inferida pelo final da polilinha visível. Portanto, a visibilidade da polilinha da rota precisa ser tão restritiva quanto a do veículo ou mais.
Siga estas regras para fornecer uma combinação válida de polilinha de rota / visibilidade da localização do veículo.
As polilinhas de trajeto 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:
- contagem de paradas restantes
- duração até o ETA
- distância restante do percurso
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 parada restante 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 chega a cinco paradas do local da tarefa, o veículo aparece, mas a rota dele não aparece até que a viagem esteja a três paradas de distância.
```js
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingStopCountThreshold": 5
},
}
```
As polilinhas de trajeto e a localização do veículo especificam as diferentes opções de visibilidade.
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. A visibilidade da polilinha está sujeita às regras de visibilidade do veículo:
- Sempre visível: uma polilinha de trajeto precisa usar a opção de visibilidade sempre visível quando o local do veículo também fornece essa 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.
Confira 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 pelo menos 3 E a distância restante for pelo menos 3.000 metros.
Exemplo de personalização da visibilidade de tarefas
Os exemplos a seguir mostram como definir uma tarefa com as seguintes regras de visibilidade:
- Mostre as polilinhas de rota se o veículo estiver a até três paradas.
- Mostrar a ETA se a distância restante for menor que 5.000 metros.
- Nunca mostrar a contagem de paradas restantes.
- Todos os outros campos mantêm a visibilidade padrão de serem mostrados quando o veículo está a cinco 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 acompanhamento 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