Documentation for a newer release is available. View Latest

Características

Las características clave de la aplicación HTM son:

  • La capacidad de registrar tareas para un equipo operativo, proporcionando detalles que les permitan gestionar, filtrar y ordenar tareas.

  • La capacidad de asignar una tarea a un operador específico para su investigación y ejecución.

  • La capacidad de marcar una tarea como ejecutada e ingresar información relevante sobre la acción realizada, la cual se registrará y estará disponible para informes de auditoría.

  • La capacidad (opcional) de requerir una o más aprobaciones en una tarea ejecutada.

  • El historial de auditoría de los pasos realizados en el flujo de trabajo para cualquier tarea se registra y puede consultarse.

  • La capacidad de asignar y ejecutar la misma acción en múltiples tareas del mismo tipo (lote de tareas).

  • La capacidad de enviar Task Manager Domain Events a IPF Processing Data para habilitar el archivado de datos de tareas y eventos de dominio de HTM a través de la solución de archivado ODS o mediante un archivado específico de la implementación del cliente según sea necesario desde IPF Processing Data. Esta funcionalidad garantiza que los datos puedan ser archivados por implementaciones de clientes a medida que las tareas se crean / ejecutan, antes de que se purguen al alcanzar estados terminales.

  • HTM Task Purging permite purgar (eliminar) todas las tareas y su historial una vez que son elegibles.

Publicación de Task Manager Domain Events hacia IPF Processing Data

HTM tiene la capacidad de publicar un Task Manager Domain Event completo para cada ciclo de vida de una tarea. Para obtener más detalles sobre cómo configurar una aplicación para publicar datos en IPF Processing Data utilizando el plugin de egress de processing-data, consulte aquí.

Al ejecutar HTM en Azure CosmosDB for MongoDB, y cuando delegating event processor mode NO se utiliza, debe volver a probar la aplicación HTM y aumentar los RUs según los resultados de las pruebas.

HTM Task Purging

HTM Task Purging implica la eliminación de elementos de las colecciones task y task-history. Este proceso garantiza que las tareas completadas o canceladas se eliminen, lo que ayuda a reducir el tamaño de las colecciones y mejora el rendimiento general de la aplicación. Los elementos se vuelven elegibles para purga una vez que alcanzan estados terminales (Completed o Cancelled) y expira el período de retención (TTL) predeterminado.

Para habilitar HTM Task Purging, se requieren las siguientes acciones:

  1. Crear índices TTL (Time-To-Live): Este paso es obligatorio ya que permite que la base de datos purgue automáticamente elementos en las colecciones. Sin estos índices, no se realizará ninguna purga.

  2. Establecer los campos ttl y expiryDate: La aplicación HTM establece el campo ttl para CosmosDB y el campo expiryDate para MongoDB cuando una tarea alcanza un estado terminal (Completed o Cancelled). Estos campos determinan el período de retención de los elementos antes de que se purguen. El período de retención predeterminado es de 30 días, pero puede ajustarse usando la propiedad ipf.htm.mongodb.purging.time-to-live.

Se deben crear índices TTL porque la base de datos depende de estos índices para purgar entradas. Sin índices TTL, las tareas y el historial de tareas no se purgarán de las colecciones.

De forma predeterminada, estos índices se crean automáticamente al inicio de la aplicación y son compatibles con MongoDB y Azure CosmosDB for MongoDB. Para la creación manual de índices, consulte MongoDB o Azure CosmosDB for MongoDB.

La siguiente configuración controla HTM Purging:

# Configuration for HTM purging of the task and task-history collections.
# When a task (and its history) reach a terminal status (completed or cancelled), a corresponding TTL field will be set,
# instructing the database to purge the item after the configured TTL duration.
ipf.htm.mongodb.purging {

  # This flag determines if indexes should be created during application startup.
  # The default value is true.
  create-indexes = true (1)
  # If ipf.mongodb.create-indexes is specified, it will take precedence over this setting.
  create-indexes = ${?ipf.mongodb.create-indexes} (2)

  # Specifies the database type the application is using. This is crucial as each database requires a slightly different configuration.
  # The default mode is "mongo". Available options are: "mongo" for MongoDB and "cosmosdb" for Azure CosmosDB for MongoDB.
  database-mode = mongo (3)
  # If ipf.mongodb.database-mode is specified, it will take precedence over this setting.
  database-mode = ${?ipf.mongodb.database-mode} (4)

  # After a task (and its history) reach a terminal status, they will become eligible for purging.
  # They will be deleted after the configured time-to-live duration has elapsed.
  time-to-live = 30d (5)

  # The commit quorum to use when creating indexes,
  # see https://www.mongodb.com/docs/manual/reference/command/createIndexes/#create-index-with-commit-quorum for more info
  commit-quorum = "votingMembers" (6)
  commit-quorum = ${?ipf.mongodb.commit-quorum} (7)
}
1 create-indexes está habilitado de forma predeterminada. Si HTM Purging no es necesario, o si los índices se crearán manualmente (por ejemplo, mediante scripts de despliegue), puede deshabilitarlo configurándolo en false.
2 Puede usar ipf.mongodb.create-indexes en lugar de la propiedad ipf.htm.mongodb.purging.create-indexes.
3 database-mode especifica qué base de datos compatible está utilizando. Establézcalo en mongo para MongoDB o cosmosdb para Azure CosmosDB for MongoDB. La aplicación creará los índices TTL apropiados en función de esta configuración.
4 Puede usar ipf.mongodb.database-mode en lugar de la propiedad ipf.htm.mongodb.purging.database-mode.
5 time-to-live especifica el período de retención. Incluso después de que una tarea llegue a un estado terminal, se conservará durante este período antes de ser eliminada. El formato de duración es cualquiera de los formatos admitidos por HOCON.
6 commit-quorum dicta cuántas réplicas deben reconocer la creación de índices antes de considerarse exitosa. Para más detalles, consulte crear índices con commit quorum.
7 Puede usar ipf.mongodb.commit-quorum en lugar de la propiedad ipf.htm.mongodb.purging.commit-quorum.

Creación manual de índices TTL para MongoDB

Para MongoDB, cree índices TTL en el campo expiryDate, que indica la fecha exacta en que debe purgarse un elemento. Para más detalles, consulte Expire Documents at a Specific Clock Time.

db.getCollection("task").createIndex({ "expiryDate": 1 }, { expireAfterSeconds: 0 })
db.getCollection("task-history").createIndex({ "expiryDate": 1 }, { expireAfterSeconds: 0 })

ipf.htm.mongodb.purging.time-to-live se usa para calcular la fecha futura en la que el documento será eliminado.

Creación manual de índices TTL para Azure CosmosDB for MongoDB

Para Azure CosmosDB for MongoDB, cree índices TTL en el campo interno _ts, que contiene la marca de tiempo de la última modificación. Además, los documentos necesitan un campo entero ttl que represente el período de retención en segundos. Para más información, consulte Time to Live (TTL) in Azure Cosmos DB y Expire data with Azure Cosmos DB’s API for MongoDB.

db.getCollection("task").createIndex({"_ts":1}, {expireAfterSeconds: -1})
db.getCollection("task-history").createIndex({"_ts":1}, {expireAfterSeconds: -1})

ipf.htm.mongodb.purging.time-to-live se convierte a segundos y se establece en el campo ttl. Azure CosmosDB for MongoDB purgará el documento después de este período.

¿Cómo deshabilitar la purga?

HTM Task Purging puede deshabilitarse simplemente eliminando los índices TTL en las colecciones task y task-history.

Asegúrese de deshabilitar la creación automática de índices configurando ipf.htm.mongodb.purging.create-indexes en false, ya que de lo contrario los índices se crearán nuevamente en el próximo inicio de la aplicación.
Aunque se eliminen los índices, HTM continuará estableciendo los campos ttl y expiryDate, lo cual no tiene efecto en la purga hasta que los índices se creen nuevamente.

Comunicación asíncrona con el servidor HTM

Los clientes HTM por defecto interactúan con el servidor HTM utilizando comunicación HTTP síncrona. Además, HTM ofrece la opción de comunicarse con el servidor HTM de forma asíncrona (enviando mensajes al tópico de Kafka correspondiente).

Registrar HTM task es actualmente la única acción asíncrona admitida por el servidor HTM.
Asegúrese de que el tópico de Kafka HTM_REGISTER_TASK (a menos que se sobrescriba en la configuración) esté creado antes de habilitar el registro de tareas asíncrono.

La comunicación asíncrona en el servidor HTM está deshabilitada de forma predeterminada; para habilitarla, debe agregar lo siguiente a la configuración:

ipf.htm.async.register-task.enabled = true