ODS Tareas de Mantenimiento

Las tareas de mantenimiento son procesos de fondo recurrentes que ayudan a mantener y organizar los datos dentro de ODS.
Estas tareas son impulsadas por un Akka Cluster Singleton patrón, asegurando que solo haya una instancia activa por clúster a la vez, evitando conflictos de ejecutar la misma tarea simultáneamente en múltiples nodos.
Estas tareas realizan funciones como enriquecimiento de datos, limpieza y mantenimiento. Cada tarea de mantenimiento opera de manera independiente, pero sigue la misma configuración y scheduling framework.

Las tareas de limpieza disponibles son:

La configuración para una tarea de limpieza sigue una estructura genérica. Reemplace <task-name> con el identificador de la tarea que se está configurando:

ods.housekeeping {
  <task-name> {
    # Configure to true if the task functionality is required
    enabled = false

    # How long to wait once ODS has started before making the first execution of the task
    initial-delay = 1M

    # How often to execute the task
    frequency = 10s

    # The Restart Strategy settings for the task's Cluster Singleton
    restart-settings {
      # Minimum (initial) duration until the task child actor will be started again, if it is terminated
      min-backoff = 1s

      # The exponential back-off is capped to this duration
      max-backoff = 1s

      # After calculation of the exponential back-off an additional random delay based on this factor is added, e.g. 0.2 adds up to 20% delay. In order to skip this additional delay pass in 0.
      jitter-factor = 0.2
    }
  }
}
A menos que se indique lo contrario en la documentación de configuración de cada tarea, los valores de configuración descritos anteriormente son los valores predeterminados para una tarea dada.

Manejo de Errores

Debido a la naturaleza de la implementación de la tarea recurrente, los errores se reintentan de manera natural en la siguiente ejecución recurrente.

Cualquier error generado durante la ejecución de una tarea se registra como una advertencia sin que se tome ninguna acción. La tarea se ejecutará nuevamente en breve y la funcionalidad continuará en ejecuciones posteriores.

Resumen y Monitoreo de Tareas de Mantenimiento

Una visión general de qué tareas de mantenimiento han sido habilitadas/deshabilitadas y sus configuraciones está disponible en tiempo de ejecución.

Registro

La visión general de la limpieza se registra al inicio.

Ejemplo de registro de tareas de limpieza
2025-05-16T09:08:09. 999Z    INFO 1 --- [            main] c.i.i.o.h. HousekeepingOverviewLogger:
-------------------------------------------------------------------------------------
 Tareas de limpieza
-------------------------------------------------------------------------------------
---------------------------------------------------------------------------------
     Tareas habilitadas
---------------------------------------------------------------------------------
                               Nombre de la tarea                       Configuración del Programador de Tareas
---------------------------------------------------------------------------------
                  resumen-enriquecimiento-csm                               Frecuencia: PT1S
                                                                 Retraso inicial: PT0S
                                                                   Min backoff: PT1S
                                                                   Max backoff: PT1S
                                                                  Factor de jitter: 0. 2

             resumen-enriquecimiento-de-identidad                              Frecuencia: PT10S
                                                                 Retraso inicial: PT1S
                                                                   Min backoff: PT2S
                                                                   Max backoff: PT1S
                                                                  Factor de jitter: 0. 5

---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
     Tareas deshabilitadas                                        housekeeping-example-task-2
                                                         housekeeping-example-task-3
---------------------------------------------------------------------------------
-------------------------------------------------------------------------------------

Punto final del actuador

La visión general de limpieza está disponible como un custom Spring Boot Punto final del actuador en /actuator/housekeeping-tasks. No está habilitado por defecto.

Configurar management.endpoints.web.exposure.include incluir housekeeping-tasks, para habilitar el punto final de diseño de resumen, o con * para habilitar todos los puntos finales del actuador.

e.g.management.endpoints.web.exposure.include = [health, info, prometheus, housekeeping-tasks].

Ejemplo de respuesta sobre la visión general de la limpieza.
{
  "enabledTasks": {
    "summary-identity-enrichment": {
      "enabled": true,
      "frequency": "PT1S",
      "initialDelay": "PT0S",
      "restartSettings": {
        "minBackoff": "PT1S",
        "maxBackoff": "PT1S",
        "jitterFactor": 0.2
      }
    },
    "summary-csm-enrichment": {
      "enabled": true,
      "frequency": "PT10S",
      "initialDelay": "PT1M",
      "restartSettings": {
        "minBackoff": "PT2S",
        "maxBackoff": "PT1S",
        "jitterFactor": 0.5
      }
    }
  },
  "disabledTasks": [
    "pds-object-id-enrichment",
    "housekeeping-example-task"
  ]
}

Resumen de la Tarea de Mantenimiento de Enriquecimiento de Identidad

Una tarea de mantenimiento que enriquece los campos de identificación del Resumen de Pagos (debtorAccount, debtorAgentBIC, creditorName, etc..) utilizando la información presente en el Resumen de Lote relacionado con el Pago.
Esto permite ODS Inquiry para buscar estos Pagos utilizando la información de identificación del Lote, que anteriormente no estaba presente en el Pago.
Esta funcionalidad debe ser habilitada explícitamente a través de la configuración, las opciones de configuración se pueden encontrar debajo.

Este trabajo solo actualizará los Pagos que estén relacionados con un Lote Y que tengan información de identificación diferente a la del Lote relacionado.

Los valores presentes en el Resumen de Lotes se consideran la fuente de verdad para estos campos de identificación. Cuando esta funcionalidad está habilitada, cualquier valor existente de campo de identidad en un Resumen de Pago será reemplazado por los valores de su Resumen de Lotes relacionado.

Esto solo se aplica a los Resúmenes de Pago que tienen un Resumen de Lote relacionado, asociado a través del Pago persistido.relatedUnitOfWorkId.

Esta lógica de enriquecimiento está diseñada para eventual consistencia en ODS Inquiry API consultas. Como resultado, el rest de la ODS Ingestion el procesamiento no depende de su finalización inmediata.

Los campos de información de identificación objetivo son:

  • debtorAccount

  • debtorName

  • debtorBIC

  • debtorAgentBIC

  • creditorAccount

  • creditorName

  • creditorBIC

  • creditorAgentBIC

El flujo general de alto nivel para esta tarea de mantenimiento es:

Diagram

Configuración predeterminada del enriquecedor de identidades

El enriquecedor de identidad de resumen puede ser configurado utilizando su identificador,summary-identity-enrichment. La ruta de configuración completa se evalúa a ods.houskeeping.summary-identity-enrichment, consistente con el estructura de configuración de tarea predeterminada. Esta tarea utiliza esos valores de configuración predeterminados a menos que se anulen explícitamente.

 Para la compatibilidad hacia atrás, el enriquecedor de identidad también admite la ruta de configuración anterior:`ods.persistence.housekeeping.summary.identity-enrichment`. +
Si se especifican tanto las rutas de configuración nuevas como las antiguas, la nueva ruta (`ods.housekeeping.summary-identity-enrichment`) tendrá prioridad.
¿Enriquecedor habilitado? Razonamiento

Cuando está habilitado (verdadero)

  • Usted desea buscar Resúmenes de Pagos utilizando la información de identidad que actualmente solo está disponible en el Resumen por Lotes.

    • Debido a la estructura ISO 20022 durante Procesamiento de transacciones por lotes y en masa, la información de identidad puede no estar disponible para asignarse a un Resumen de Pago particular, y solo se asigna al Resumen de Lote.unitOfWorkId.

    • El enriquecimiento le permite buscar Resúmenes de Pagos a través de estos valores de identidad (por ejemplo,debtorAccount), valores que anteriormente solo estaban disponibles en el Resumen de Lotes.

Cuando está deshabilitado (falso)

  • No desea que los Resúmenes de Pago y sus Resúmenes de Lote relacionados se alineen para los campos de información de identidad objetivo.

    • Por ejemplo, usted puede tener customised PDS Resumen mappings que enriquecen esta información de identidad de manera diferente para Pagos y Lotes. Donde su IPF flow está controlando lo que PDS Los objetos se envían a ciertos unitOfWorkIds.

  • No requiere la funcionalidad para buscar Resúmenes de Pagos por los campos de información de identidad objetivo, por lo tanto, habilitar esta lógica realizará comandos innecesarios en la base de datos.

  • Su implementación de IPF no está manejando Bulk y las transacciones por lotes, por lo tanto, no requiere esta funcionalidad.

 Cuando está habilitado, el enriquecedor identifica los Resúmenes de Lotes que requieren enriquecimiento al verificar la existencia de la `enrichmentSignal`(un campo de cadena simple; el valor en sí no importa). +
Si el enriquecedor fue desactivado previamente cuando se ingirieron los Lotes, esos Resúmenes de Lote no contendrán esta señal y sus Pagos relacionados serán omitidos por el enriquecedor. +
Para enriquecer los Resúmenes de Pago previamente ingeridos, establezca `enrichmentSignal` a cualquier valor de String (por ejemplo, "someValue") en los Resúmenes de Lotes relacionados. Una vez que estos Lotes sean actualizados, el enriquecedor incluirá sus Pagos relacionados en los ciclos de enriquecimiento subsiguientes.
  • Por ejemplo, para enriquecer retroactivamente los Pagos para los Lotes que han sido ingeridos en los últimos dos meses, usted debe actualizar todos los Resúmenes de Lotes de los últimos dos meses, estableciendo el enrichmentSignal campo para any valor de tipo String.

Resumen CSM Tarea de Mantenimiento de Enriquecimiento

Una tarea de mantenimiento que enriquece el Resumen CSM campo de búsqueda para resúmenes persistidos antes de la versión IPF 2025. 1. 0.
Cuando esté habilitado, las entradas de la base de datos de Resumen heredada se migrarán gradualmente, permitiendo ODS Inquiry para buscarlos utilizando su CSM valor. Esta tarea se aplica a los Resúmenes que tienen un valor en el nivel superior.csm campo pero carecen de un valor en searchFields.csm. El valor existente de la csm el campo se convierte a minúsculas y se utiliza para poblar el searchFields.csm campo para cada Resumen afectado.
Esta funcionalidad debe ser habilitada explícitamente a través de la configuración, las opciones de configuración se pueden encontrar debajo.

El flujo general de alto nivel para esta tarea de mantenimiento es:

Diagram

Predeterminado CSM Configuración del Enriquecedor

El resumen csm el enriquecedor puede ser configurado utilizando su identificador,summary-csm-enrichment. La ruta de configuración completa se evalúa en ods.houskeeping.summary-csm-enrichment, consistente con el estructura de configuración de tarea predeterminada.
Esta tarea utiliza esos valores de configuración predeterminados a menos que se anulen explícitamente.

Esta tarea también contiene una opción de configuración adicional:

  • ods.housekeeping.summary-csm-enrichment.limit

    • Esto controla el número máximo de Resúmenes que serán enriquecidos en una única ejecución.

    • Esto se establece por defecto en 100.

¿Enriquecedor habilitado? Razonamiento

verdadero

  • Usted tiene la intención de buscar Resúmenes utilizando el CSM campo, y su base de datos contiene resúmenes persistidos de las versiones de IPF anteriores a 2025. 1. 0.

falso

  • No planea utilizar el CSM campo para buscar Resúmenes.

  • Todos los resúmenes en su base de datos fueron persistidos utilizando la versión 2025. 1. 0 de IPF o posterior.

PDS Tarea de Mantenimiento de Enriquecimiento de ID de Objeto

Una tarea de limpieza que enriquece el pdsObjectId campo para PDS objetos persistidos antes de la versión IPF 2025. 2. 0.
Cuando está habilitado, legado PDS las entradas de la base de datos serán migradas gradualmente, permitiendo ODS Inquiry para buscarlos utilizando su pdsObjectId valor. Esta tarea se aplica a PDS objetos que actualmente no tienen un valor para el pdsObjectId campo.
Esta funcionalidad debe ser habilitada explícitamente a través de la configuración, las opciones de configuración se pueden encontrar abajo.

El flujo general de alto nivel para esta tarea de mantenimiento es:

Diagram

Predeterminado PDS Configuración del Enriquecedor de ID de Objeto

El pdsObjectId el enriquecedor puede ser configurado utilizando su identificador,pds-object-id-enrichment. La ruta de configuración completa se evalúa a ods.houskeeping.pds-object-id-enrichment, consistente con el estructura de configuración de tarea predeterminada.
Esta tarea utiliza esos valores de configuración predeterminados a menos que se anulen explícitamente.

Esta tarea también contiene una opción de configuración adicional:

  • ods.housekeeping.pds-object-id-enrichment.limit

    • Esto controla el número máximo de PDS objetos que serán enriquecidos en una única ejecución.

    • Esto se establece por defecto en 1000.

¿Enriquecedor habilitado? Razonamiento

verdadero

  • Su base de datos contiene PDS Objetos persistidos de las versiones de IPF anteriores a 2025. 2. 0.

falso

  • Todo PDS Los objetos en su base de datos fueron persistidos utilizando la versión 2025. 2. 0 de IPF o posterior.