Tareas programadas

En este documento, se describe el servicio de tareas programadas en Fleet Engine. Se da por sentado que leíste ¿Qué es Fleet Engine? y que conoces la función específica del servicio de Fleet Engine que necesitas.

Cuando leas esta documentación, ten en cuenta lo siguiente:

  • Crea tareas y asócialas con una parada del vehículo como una forma de representar la asociación real entre la tarea y la ubicación en la que se espera que se detenga el vehículo para que el conductor pueda completar la tarea. Lee Introducción a los vehículos para comprender mejor cómo funcionan los vehículos en Fleet Engine.
  • Flota Engine para tareas programadas usa los siguientes recursos: Task y DeliveryVehicle. Fleet Engine proporciona un servicio de gRPC y, también, interfaces de REST:
    • Task: gRPC y REST
    • DeliveryVehicle: gRPC y REST
    • Para simplificar, en este manual se usan ejemplos de gRPC.

¿Qué es una tarea programada?

Una tarea programada en Fleet Engine representa una acción individual que debe completar un conductor con un vehículo dentro del contexto más amplio de una operación de transporte. Define el objetivo específico para el conductor. Por ejemplo:

  • para entregar un bien a una residencia
  • retirar un paquete para devolverlo al depósito de envíos
  • hacer una parada en una ubicación para brindar un servicio en las instalaciones a un cliente
  • hacer una detención programada para alimentar el vehículo

Elementos de la tarea

En la siguiente imagen, se ilustran estos elementos de tareas en un viaje programado estándar para un vehículo.

Campos de tareas básicos

Campo Descripción
Tipo Define el tipo de acción asociado con la tarea.
ID de la tarea Es una cadena que identifica de forma exclusiva la tarea dentro del sistema.
Ubicación planificada Especifica la ubicación prevista donde se debe realizar la tarea. Esta ubicación no siempre es la misma que la ubicación planificada para la parada del vehículo.
Estado Indica si la tarea está abierta o cerrada.
Resultado de la tarea Indica si la tarea se realizó correctamente o no.

Modelo de datos para tareas

En los siguientes diagramas, se ilustra el modelo de datos del recurso Task junto con el diagrama de su recurso DeliveryVehicle asociado. Puedes revisar ambos diagramas para explorar las relaciones entre los dos recursos, teniendo en cuenta lo siguiente:

  • Ubicación planificada: Tanto las paradas de vehículos como las tareas tienen ubicaciones planificadas, distintas entre sí.
    • En el caso de las tareas, una ubicación planificada indica dónde debe ocurrir la acción del conductor. Por ejemplo, 15 entregas de paquetes a un complejo residencial grande requieren la entrega a diferentes ubicaciones de sala de correo dentro de ese mismo complejo.
    • En el caso de las paradas de vehículos, la ubicación planificada indica la parada del vehículo mientras el conductor completa las tareas. Por ejemplo, un vehículo se detiene en la entrada de un complejo de departamentos y el conductor entrega los paquetes de forma manual a salas de correo separadas dentro del complejo.
  • Estado: Tanto las tareas como las paradas del vehículo tienen un campo estado, distinto entre sí.
    • El estado de la parada del vehículo refleja el progreso del vehículo en relación con la parada, que se usa para el seguimiento de la flota.
    • El estado de la tarea indica si esta se encuentra activa o no. Esto afecta a otras operaciones que se deben realizar en las tareas, como establecer su resultado o asignarlo a un vehículo.
  • Resultado de la tarea: El resultado de la tarea es un campo importante en el modelo de datos, ya que se usa para indicar el éxito o el fracaso de una tarea, independientemente de su estado.

  • IDs:

    • Cuando asignas una tarea a un vehículo, el motor de flota propaga el campo deliveryVehicleId. Este campo de solo lectura indica el vehículo al que se asigna la tarea.
    • Los IDs de tarea son identificadores únicos en todas las tareas del sistema.
    • Los IDs de seguimiento identifican una tarea para el seguimiento de envíos.

Modelo de datos de Tasks

Modelo de datos del vehículo

IDs de tareas

Al igual que los IDs de vehículos en Fleet Engine, cada tarea debe contener un ID para distinguirla de otras tareas dentro del sistema. Puedes hacer referencia a todas las tareas de tu flujo de trabajo y administrarlas por su ID. Para crear estos IDs, usa el servicio CreateTaskRequest y proporciona una cadena de ID que cumpla con los requisitos que se describen en esta sección.

Luego, esta cadena comprende parte del nombre del recurso de la tarea, un campo solo de salida en el objeto Task. Esto es similar a la forma en que Fleet Engine construye recursos de nombres de vehículos. Consulta la sección Nombres de recursos en la Introducción a Fleet Engine.

Requisitos del ID de tarea
Propiedad Descripción
Unicidad Cada ID de tarea debe ser único en tu implementación de Fleet Engine para evitar confusiones y garantizar una identificación adecuada.
Formato
  • No incluyas información de identificación personal (PII) ni datos de texto sin formato.
  • Strings Unicode válidas.
  • Admite hasta 64 caracteres.
  • Excluye los siguientes caracteres: / : \ ? #
  • Se normalizó según el Formato de normalización C de Unicode.
Ejemplos de ID de tarea
Ejemplos de IDs de tareas adecuados
  • 566c33d9-2a31-4b6a-9cd4-80ba1a0c643b
  • e4708eabcfa39bf2767c9546c9273f747b4626e8cc44e9630d50f6d129013d38
  • NTA1YTliYWNkYmViMTI0ZmMzMWFmOWY2NzNkM2Jk
IDs de tareas no permitidos
  • 31/8/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 tareas

Fleet Engine admite varios tipos de tareas para representar diferentes acciones dentro de una operación de transporte. Aquí se describen, junto con su visibilidad y detalles de facturación.

Tipo de tarea Descripción Visibilidad del seguimiento de envíos Facturado
Tarea de publicación Se usa para dejar artículos o completar una tarea para un cliente. Los consumidores pueden ver esto y hacerles un seguimiento.
Tarea de retiro Se usa para indicar que un cliente debe retirar los productos. Debes tener una tarea de entrega correspondiente para cualquier tarea de retiro. Los consumidores pueden ver esta información y hacer un seguimiento de ella. No
Tarea de falta de disponibilidad Identifica que el vehículo no está disponible para el servicio, por ejemplo, cuando el conductor se toma un descanso o recarga el combustible del vehículo. No es visible para los consumidores. No
Tarea de detención programada Es una tarea que no es de entrega y que requiere una parada en una ubicación específica. Usa las tareas de paradas programadas para las paradas de recolección programadas a diario en una ubicación específica, independientemente de otras entregas o retiros en la misma ubicación. También puedes crear tareas de paradas programadas para las recopilaciones desde buzones de entrega o hasta trasbordos o paradas de vehículos alimentadores y alimentadores en centros de servicio y puntos de servicio. Los consumidores no pueden hacer un seguimiento de esta tarea específica, pero pueden verla como parte del seguimiento de otras tareas. No

Ciclo de vida de la tarea y el recorrido

En esta sección, se proporcionan detalles sobre el ciclo de vida de las tareas de entrega en Fleet Engine. El ciclo de vida de la tarea está conectado con el viaje del vehículo porque este debe detenerse para que el conductor complete una tarea en su ubicación planificada.

1. Creación de tareas

Cuando creas una tarea en Fleet Engine por primera vez, configuras una variedad de campos para la tarea independientemente de asociarla con una parada.

Propiedades de la tarea
Propiedad Descripción
Estado Configurar como ABIERTO
ID Establece la tarea y el ID de seguimiento si usas el seguimiento de envíos para tus consumidores.
Tiempos La duración planificada de la tarea y su período objetivo Consulta Programación de tareas para obtener más información.
Ubicación planificada Establece la coordenada geográfica precisa en la que se debe completar la tarea.

2. Asignación de tareas

Cuando asignas una tarea a un vehículo, lo haces en conjunto con una parada del vehículo. Las paradas son coordenadas de latitud y longitud que indican la ubicación en la que se estaciona el vehículo mientras el conductor completa las tareas asociadas con la parada. Por lo general, las paradas son un punto de acceso, como una plataforma de carga o una ubicación ajustada a la ruta.

3. En curso

El estado de una tarea puede ser OPEN o CLOSED. Sin embargo, una vez que se asigna una tarea a un vehículo, puedes hacer un seguimiento de su progreso hasta su asociación al vehículo y dónde se encuentra el vehículo en relación con la parada en la que se completará la tarea.

Una vez que el vehículo salga de una parada o comience a navegar, el estado de la parada debería cambiar a ENROUTE. De esta manera, el seguimiento de envíos para consumidores puede actualizar al destinatario de una tarea con la cantidad de paradas restantes y la hora de llegada estimada. También admite cualquier visualización en tiempo real para el seguimiento de envíos de consumidores o de flotas.

4. Llegada y resultado de la tarea

Cuando el vehículo llega a una parada, el estado de la parada debe establecerse en ARRIVED. Al igual que con un estado de parada ENROUTE, esto no afecta el estado de la tarea en sí, pero admite notificaciones de consumidores y cualquier informe en tiempo real para el seguimiento de flota que usan los operadores de tu flota. También habilita las estadísticas y los informes posteriores sobre la operación que usarías para las optimizaciones de entrega.

Una vez que el vehículo llega a una parada, tu sistema puede manejar el resto del recorrido de la tarea con uno de los siguientes enfoques:

  • Cierra las tareas a medida que se hayan completado.

    Cuando el conductor marca la tarea como completada, tu sistema puede quitarla de la parada, pero dejarla con otras tareas asignadas.

  • Quita toda la parada del vehículo.

    Una vez que el conductor marca todas las tareas completadas y el vehículo está en camino a la siguiente parada, puedes quitar toda la parada del vehículo. Fleet Engine cierra automáticamente todas las tareas asociadas con una parada quitada.

Cerrar una tarea no indica éxito o fracaso.

Cerrar una tarea solo indica que esta ya no se considera en curso. Para las tareas en el estado CLOSED, debes establecer su resultado como SUCCEEDED o FAILED. Esto es necesario para indicar el resultado real del seguimiento del envío y una facturación adecuada. Fleet Engine solo cobra tareas de entrega con un estado de SUCCEEDED.

Una vez que establezcas un resultado de la tarea, no podrás cambiarlo.

Cuando se marca el resultado de una tarea, Fleet Engine completa automáticamente la ubicación del resultado de la tarea con la última ubicación conocida del vehículo. Sin embargo, puedes modificar la hora y la ubicación del resultado de la tarea después de configurarlos, y Fleet Engine no anulará estos campos.

5. Otras situaciones de tareas

No todas las tareas que modelas en Fleet Engine se ajustan a un flujo de recorrido típico. Por ejemplo:

  • Retiro de tareas Cuando tienes una tarea de pickup para que un paquete se devuelva al depósito a fin de procesarlo más tarde, debes crear una tarea de delivery correspondiente para ese paquete, con la ubicación planificada establecida en el depósito. De lo contrario, las tareas de retiro suelen seguir el mismo flujo que las de entrega.
  • Reasignación de tareas: No puedes reasignar directamente una tarea a un vehículo diferente. En cambio, para mover una tarea de un vehículo a otro, cierra la tarea original y vuelve a crearla antes de asignarle el vehículo nuevo. Si actualizas el pedido de tareas para una tarea que ya está asignada a un vehículo diferente, Fleet Engine producirá un error.
  • Cómo borrar tareas. Al igual que con los vehículos, Fleet Engine borra las tareas que no se actualizaron después de siete días. Si intentas volver a usar un ID de tarea que se cerró anteriormente, el motor de flotas muestra un error si ese ID se usó en los últimos siete días. Por el contrario, si deseas conservar los datos de las tareas durante más de siete días, debes implementar esa función por tu cuenta, por ejemplo, a través de un trabajo programado para restablecer el reloj de 7 días.

Compartir el progreso de la tarea

En Fleet Engine, puedes supervisar el progreso de la tarea en tiempo real y compartir el recorrido del conductor de dos maneras clave:

  • Experiencia del consumidor para que los consumidores conozcan el estado de sus pedidos de envío o pedidos de servicio solicitados.
  • Seguimiento de flotas para que los operadores de tu flota hagan un seguimiento y analicen el estado de los vehículos de la flota.

Experiencia del consumidor

Para compartir el progreso de la tarea, configura la experiencia del consumidor con el SDK para consumidores de JavaScript. Con el SDK, puedes mejorar la experiencia visual de la app para dispositivos móviles o la Web, de modo que los consumidores puedan supervisar el estado de su envío junto con las horas de llegada estimadas y las actualizaciones de ubicación en tiempo real del vehículo de entrega. Consulta la descripción general de las tareas programadas del SDK de consumidor.

El SDK para consumidores contiene un mapa de JavaScript y componentes de datos para conectarse con Fleet Engine. El mapa es un reemplazo directo de un objeto google.maps.Map estándar. El cliente debe autenticar a tus usuarios finales y usar la función de consumidor de Entrega de tu proyecto de Google Cloud para mostrar solo información específica del cliente. Fleet Engine filtra y oculta toda la información que no sea la de la respuesta. Por ejemplo, durante una tarea de falta de disponibilidad, no se comparte información de ubicación con un usuario final.

En Fleet Engine, habilitas la siguiente configuración para compartir el progreso de la tarea con el consumidor:

  • Las tareas usan la propiedad TaskTrackingViewConfig. Opcional.
  • Las tareas usan un ID de seguimiento, que la biblioteca necesita para identificar las tareas relevantes para un consumidor.

Seguimiento de flota

La biblioteca de seguimiento de flotas de JavaScript te permite visualizar las ubicaciones de los vehículos en sus flotas casi en tiempo real. La biblioteca usa la API de Flet Engine para visualizar los vehículos de entrega y sus tareas asignadas. Al igual que el SDK de consumidor de JavaScript, contiene un componente de mapa de JavaScript que es un reemplazo directo de una entidad google.maps.Map estándar con componentes de datos que usas para conectarte con Fleet Engine.

Esta biblioteca muestra la visibilidad de los vehículos de reparto en cuanto se crean en Fleet Engine. Para esta implementación, debes usar la función de superusuario de Cloud IAM del servicio de Fleet Engine y proporcionar una reclamación de token web de Java para acceder a los vehículos de entrega y sus tareas asociadas.

Situaciones de tareas programadas

En esta sección, se muestra una variedad de situaciones de tareas que resumen la información proporcionada en este punto de la guía. Su objetivo es ayudarte a comprender la variedad de formas en que puedes modelar tus operaciones de transporte en Fleet Engine, según tu empresa.

Entrega con seguimiento

En esta situación de entrega, se muestra una tarea de parada programada asignada al depósito tanto a la salida del depósito al comienzo del viaje como a la llegada al depósito al final del viaje. También muestra dos tareas de entrega para una parada, una de las cuales falló. Usa esta tarea para habilitar el seguimiento desde y hacia el depósito y como una forma de modelar las horas de inicio y finalización del día. No se realiza ninguna facturación con las tareas de detención programadas.

Retiro con entrega en el depósito

En esta situación, se muestra cómo modelar una recogida con su tarea de entrega correspondiente. Configura el retorno al depósito como una entrega para fines de facturación.

Vehículo alimentador

En esta situación, se muestran dos entregas con una parada programada en el medio para un vehículo alimentador, cuyo objetivo es permitir que el vehículo de entrega regrese al depósito con una cantidad de paquetes para enviar. También puedes modelar el vehículo alimentador con una parada programada.

Tiempo de tareas

Modelar los tiempos de las tareas ayuda a planificar rutas de manera eficaz, a calcular las ETA y a administrar las expectativas de entrega. Fleet Engine ofrece dos funciones clave para modelar y anticipar los tiempos de las tareas, como se describe en esta sección.

Duración de la tarea

La duración de la tarea se establece con el campo task_duration, un campo obligatorio que modela el tiempo anticipado que el conductor dedicará a completar tareas en una parada o a tomarse un descanso. En el caso de las paradas, esto abarca todas las actividades necesarias después de llegar a una parada, como descargar paquetes e interactuar con el destinatario. Cuanto más específica sea esta información, mejor podrá el motor de flota proporcionar tiempos de llegada y ETA realistas para las paradas posteriores del viaje. Para obtener detalles sobre el campo, consulta Duración en la Documentación de búferes de protocolo.

Período objetivo

El tiempo objetivo define un intervalo de tiempo propuesto para una tarea, que, por lo general, se usa con el objetivo de comunicarse con los clientes o con fines de planificación interna. Puedes configurar esto con el campo target_time_window, que consta de una hora de inicio y una de finalización. Esto no influye directamente en ningún cálculo de ruta, pero podría usarse para situaciones como alertar a un consumidor sobre un período para la entrega de un paquete o cuándo se espera que llegue un service worker programado.

Atributos de la tarea

Los atributos de tareas en Fleet Engine proporcionan una forma conveniente de filtrar tareas según características específicas cuando se usa la solicitud ListTasks. También puedes usar atributos de tareas personalizados para realizar análisis con Cloud Logging, además de comunicar información a los consumidores o para el seguimiento de flotas. Su finalidad es similar a la de los atributos de vehículo: úsalo para crear una perspectiva más enfocada de tus operaciones de entrega.

Limitaciones y restricciones

  • Creación de atributos personalizados: Fleet Engine limita la cantidad de atributos personalizados que puedes definir por tarea. Comunícate con tu representante de ventas para solicitar un aumento de esos límites.
  • Funciones de filtrado: Si bien ofrecen flexibilidad de filtrado, los atributos de tarea no reemplazan los campos de datos de tareas principales. Úsalas para un filtrado adicional según tus necesidades específicas.
  • Cada atributo debe tener una clave única.
  • No incluyas información de identificación personal ni otra información sensible en el valor del atributo, ya que el usuario podría verla.
  • Validación de datos: Asegúrate de que los tipos y formatos de datos de tus atributos personalizados sean compatibles con los requisitos de Fleet Engine.

¿Qué sigue?