Configura tareas

En este documento, se supone que comprendes cómo crear y usar tareas. Proporciona ejemplos específicos sobre cómo configurar las tareas de envío de las siguientes maneras:

  • Establecer el período objetivo para una tarea de envío: Permite configurar el período. para que la tarea se complete.

  • Personalizar la visibilidad de las tareas: Personaliza la visibilidad de las actividades de las tareas para mostrar a los clientes o a los operadores de la flota.

Consulta Cómo crear tareas de envío para obtener detalles sobre los campos de las tareas de envío. Cuando actualizas información adicional sobre tareas existentes, también debes incluir el identificador relevante para la tarea, además de los campos que actualizas para las tareas.

Establece el período objetivo

El período objetivo es el TimeWindow durante el cual la tarea debe completarse el proyecto se completó. Por ejemplo, si comunicas un período de entrega a los destinatarios, puedes usar el período objetivo de la tarea para capturar este período y generar alertas, o bien puedes usarlo para analizar el rendimiento de viajes anteriores.

El período objetivo consta de una hora de inicio y una de finalización, y se puede configurar en cualquier tipo de tarea. El período objetivo no afecta el enrutamiento de tu modelo.

En los siguientes ejemplos, se muestra cómo configurar el período con la biblioteca gRPC de Java o cómo realizar una solicitud HTTP REST a UpdateTask. Puedes establece también este campo cuando se crea la tarea.

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 establecer un período de las tareas con HTTP, llama a PATCH y Usa updateMask para actualizar el parámetro targetTimeWindow:

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

Aquí, <id> es un identificador único para la tarea. El encabezado de la solicitud debe contener un campo Authorization con el valor Bearer <token>, en el que tu servidor emite <token> de acuerdo con los lineamientos que se describen en Roles de la cuenta de servicio y Tokens 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

Personaliza la visibilidad de la tarea

De forma predeterminada, Fleet Engine proporciona visibilidad de las actividades de las tareas, que luego pueden mostrarse a los clientes que reciben un envío y a los operadores de la flota el seguimiento de envíos. Esto incluye información como indicar la cantidad de paradas antes de enviarle una notificación a un cliente sobre el estado de entrega de su paquete. Puedes personalizar esta información por tarea para que se adapte mejor a tu modelo de negocio.

En esta sección, se describen las reglas de visibilidad de los objetos a los que se les hace un seguimiento en el mapa. Estas reglas se aplican a dos categorías de objetos:

  • Visibilidad de los marcadores de ubicación
  • Visibilidad de datos de tareas para tareas activas de vehículos, como polilíneas y hora de llegada estimada

Reglas de visibilidad del marcador de ubicación

Fleet Engine muestra marcadores de ubicación para la ubicación de entrega del envío en el mapa, independientemente del estado de la publicación.

Reglas de visibilidad de datos de tareas

En esta sección, se describen las reglas de visibilidad predeterminadas que se aplican a los datos de tareas. Solo puedes personalizar las tareas de vehículos activos, lo que significa que solo las tareas de partida y destino pueden aplicar reglas de visibilidad personalizadas.

Es posible que no se puedan personalizar las siguientes tareas:

  • Paradas programadas
  • Tareas de falta de disponibilidad
  • Tareas de vehículos inactivos

Reglas de visibilidad de las tareas con falta de disponibilidad

De forma predeterminada, el vehículo no aparece en el mapa si se asigna al menos una tarea de indisponibilidad a la tarea de la que se realiza el seguimiento. Por ejemplo, si el conductor se toma un descanso o el vehículo se está repostando en la ruta hacia el envío con seguimiento. La hora de llegada estimada y el tiempo estimado para completar la tarea siguen disponibles. Recuerda que no puedes personalizar esta regla.

Visibilidad de las tareas activas del vehículo

El objeto TaskTrackingInfo proporciona varios elementos de datos que puedes hacer visibles con la biblioteca de seguimiento de envíos. De forma predeterminada, estos campos serán visibles cuando la tarea se asigne al vehículo y cuando este esté dentro de las 5 paradas de la tarea. La visibilidad finaliza cuando se completa la tarea o cancelado.

Puedes personalizar la configuración de visibilidad por tarea configurando TaskTrackingViewConfig en una tarea cuando la creas o actualizas en Fleet Engine. Esto crea reglas para que los elementos de datos individuales disponibles.

En la siguiente tabla, se muestran los campos a los que puedes aplicar reglas de visibilidad.

Campos de tareas de vehículos para reglas de visibilidad
  • Polilíneas de ruta
  • Tiempo estimado de llegada
  • Tiempo estimado de finalización de la tarea
  • Distancia de conducción restante hasta la tarea
  • Recuento de paradas restantes
  • Ubicación del vehículo

En esta tabla, se muestran las opciones de visibilidad disponibles para los campos mencionados anteriormente.

Opciones de visibilidad
  • Recuento de paradas restantes
  • Duración hasta la hora estimada de llegada
  • Distancia de conducción restante
  • Siempre visible
  • No visible nunca

Reglas de visibilidad de polilíneas de ruta y ubicación del vehículo

En el caso de las rutas rastreadas, la visibilidad de las polilíneas de rutas está sujeta a la visibilidad del vehículo. Si una polilínea de ruta es visible en una ruta activa donde el vehículo no se ve, la ubicación del vehículo aún puede inferido por el final de la polilínea visible. Por lo tanto, la visibilidad del polilinea de la ruta debe ser tan restrictiva o más restrictiva que la visibilidad del vehículo.

Sigue estas reglas para proporcionar polilíneas de rutas o ubicaciones de vehículos válidas combinación de visibilidad.

Las polilíneas de rutas y la ubicación del vehículo especifican las mismas opciones de visibilidad

En esta situación, tanto la polilínea como la ubicación del vehículo establecen las mismas opciones, que incluyen las siguientes:

  • recuento de paradas restantes
  • duración hasta la hora de llegada estimada
  • distancia restante en automóvil

Para cumplir con las reglas, el valor de visibilidad de las polilíneas de ruta debe ser menor que sea igual o superior al valor establecido para la visibilidad del vehículo. En este ejemplo, el límite de paradas restantes para el polilinea se establece en 3, que es inferior al valor de 5 especificado para el vehículo. Esto significa que, cuando el viaje con seguimiento se encuentra a 5 paradas de la ubicación de la tarea, aparece el vehículo, pero la ruta de ese vehículo no aparece hasta que el viaje está a 3 paradas de distancia.

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

Las polilíneas de rutas y la ubicación del vehículo especifican las opciones de visibilidad diferentes.

Cuando los polilíneas de la ruta y la ubicación del vehículo tienen opciones de visibilidad diferentes, la ubicación del vehículo solo es visible cuando se cumplen ambas opciones de visibilidad. Nuevamente, la visibilidad de la polilínea está sujeta a las reglas de visibilidad del vehículo:

  • Siempre visible: Un polilinea de ruta debe usar la opción de visibilidad siempre visible cuando la ubicación del vehículo también proporciona esa misma opción de visibilidad siempre visible.
  • Nunca visible: Un polilinea de ruta debe usar una opción de visibilidad nunca visible cuando la ubicación del vehículo usa una opción de visibilidad nunca visible.

Este es un ejemplo:

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

En este ejemplo, la ubicación del vehículo solo es visible si el recuento de paradas restante es de al menos 3 Y la distancia de conducción restante es de al menos 3,000 metros.

Ejemplo de personalización de la visibilidad de tareas

En los siguientes ejemplos, se muestra cómo configurar una tarea con las siguientes Reglas de visibilidad:

  • Muestra las polilíneas de la ruta si el vehículo está dentro de 3 paradas.
  • Muestra la hora de llegada estimada si la distancia de conducción restante es inferior a 5000 metros.
  • Nunca muestres el recuento de paradas restantes.
  • Cada otro campo conserva la visibilidad predeterminada que se muestra cuando el campo el vehículo se encuentre a 5 paradas de la tarea.

Consulta TaskTrackingViewConfig para gRPC o 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 configurar la ventana de configuración de la vista de seguimiento de tareas con HTTP, llama a PATCH y usa updateMask para actualizar el parámetro taskTrackingViewConfig:

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

Por ejemplo:

# 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

¿Qué sigue?