Human Task Manager

El HTM el módulo es un proxy para el HTM AOM de IPF. Utiliza los conectores proporcionados por HTM y controladores de primavera simples para hacer proxy de las llamadas desde la interfaz de usuario. No se realiza ningún formateo o procesamiento de datos más allá de las validaciones de permisos y auditoría.

Configuración

Config

Esta configuración se utiliza para la pantalla de búsqueda.

htm-bulk-page-results = 1000
htm-page-results = 10
htm-task-types = ["ENFORCE_EXECUTION"]
htm-bulk-task-types = [
  {
    id: "task1",
    translationKey: "task1",
    outcomes: [
      {
        id: "YES",
        translationKey: "outcomeYes"
      },
      {
        id: "NO",
        translationKey: "outcomeNo"
      }
    ],
    executionResultData: {
      id: "name_for_object",
      fields: [
        {
          id: "pegaId",
          translationKey: "supportingFieldPegaId",
          type: "string"
        }
      ]
    }
  },
]

Los valores configurables son los siguientes:

Propiedad Descripción

htm-resultados-de-página

Número máximo de HTM tareas a mostrar por página para los resultados de búsqueda (se establece por defecto en 10)

htm-bulk-resultados-de-página

Número máximo de tareas a ser bulk ejecutado por HTM(se establece por defecto en 1000).

htm-tipos-de-tarea

La lista desplegable de tipos disponibles en esta implementación de HTM

htm-bulk-tipos-de-tarea

La configuración para bulk ejecutar tipos. Es un arreglo de BulkTaskTypes

Bulk Tipo de Tarea

Para configurar los tipos de tarea utilizados para bulk ejecución debe proporcionar los detalles relevantes. Observando el ejemplo config, las propiedades se definen de la siguiente manera:

Propiedad Descripción

id

El identificador único para el objeto

translationKey

La clave que se utilizará para determinar qué traducción se usará para ese campo específico.

resultados

Un objeto con propiedades key y translationKey que mostrará un botón de opción para cada uno de los elementos.

campo

Un objeto con propiedades clave, translationKey y type (actualmente solo cadenas pero se actualizará).

executionResultsData

Un objeto con propiedades de id y un array de campos utilizados para proporcionar datos específicos del cliente para ese tipo de tarea.

Formatos de Fecha

Los formatos de fecha de la configuración común pueden ser sobrescritos para este módulo proporcionando su propia.htm-date-formats.conf. Si no proporciona ningún valor, las fechas serán el estándar del Reino Unido.

Cómo crear su propio HTM Pantalla de Ejecución de Tareas

Custom Las pantallas de ejecución de tareas pueden ser configuradas proporcionando un HOCON archivo. Las páginas están construidas con los siguientes componentes:
Componente Propiedades

Página

id es un identificador único. Esto debe coincidir exactamente con uno de los configurados htm-task-types.

`panels`es una lista de uno o más paneles.

Panel

cards es una lista de una o más tarjetas.

Tarjeta

id es un identificador único.

`titlePath`es un camino hacia la traducción del título.

`content`es el contenido de la tarjeta.

Contenido

type es uno de LIST(una lista con encabezados de fila),SIMPLE(muestra una única cadena) o FORM_GROUP(uno o más campos de formulario).

`elements`es una lista de uno o más elementos.

Las propiedades del elements depende del tipo de contenido:

Tipo de Contenido Propiedades del Elemento

LIST or SIMPLE

id es un identificador único.

description`es un camino hacia la traducción del encabezado de la fila. Si el contenido es `SIMPLE, esto puede ser null.

type`es el tipo de elemento mostrado. Actualmente, el único tipo soportado es `STRING.

valuePath`es un camino hacia el valor en el `taskDetails respuesta a mostrar.

FORM_GROUP

id es un identificador único.

type`es el tipo de campo de formulario. Actualmente, los únicos tipos soportados son `SELECT y TEXT_INPUT.

`formControlName`es el nombre del campo del formulario.

`label`es un camino hacia la traducción de la etiqueta.

validators`es una lista de validadores. Actualmente, el único validador soportado es `REQUIRED, lo que asegura que el campo no quede vacío. Si no se requiere validación, esto puede ser null.

optionsPath`es un camino hacia las opciones del menú desplegable para `SELECT. Para TEXT_INPUT, esto puede ser null.

valuePath`es un camino hacia el valor preseleccionado para `SELECT o a la cadena inicial para mostrar para TEXT_INPUT.

Los caminos proporcionados para optionsPath y valuePath debe apuntar a los campos en el taskDetails respuesta:

{
  "taskDetails": {
    "taskId": "1d01a5d0-4fa6-4ddd-9c65-b6563c0d3370",
    "processingContext": {
      "processingEntity": "BANK_ENTITY_1",
      "associationId": "e0f89f7d-ed66-4df4-ad52-ef3b21d67ccd",
      "unitOfWorkId": "17ade666-117d-40a3-ab85-a63250e5f26a",
      "clientRequestId": "9a589945-4029-4cc2-ac02-79d27c9a042d"
    },
    "createdAt": "2025-07-02T15:45:48.991Z",
    "status": "Complete",
    "priority": 1,
    "requiredApprovals": 0,
    "dueDateTime": "2025-10-02T15:45:48.949Z",
    "type": "FORCE_EXECUTION",
    "claimedBy": "htm_payment_executions",
    "metaDataTags": [
      {
        "category": "EXECUTION",
        "value": "DBTTRANSFER"
      }
    ],
    "supportingData": {
      "type": "IPFPaymentPDS",
      "value": "{\"splmtryDatas\":{\"splmtryData\":[{\"envlp\":{\"any\":{\"@class\":\"ipf.iso.std.iso._20022.tech.xsd.supl_001_001_01.Document\",\"ids\":{\"creditId\":\"EJGKVXAYWZYTZIRH\",\"sessionId\":\"ZPEXMBJYXKTLZHNACHQK\"},\"usrs\":{\"cntrctAppvr\":\"CYCAFGYGXFTCJUFT\",\"cntrctCreatr\":\"HTKZISHKOKUFHAQT\"}}},\"splmtryDataNm\":\"supl1\"}]}}"
    },
    "receivedApprovals": 0,
    "possibleOutcomes": [
      "Execute",
      "Cancel"
    ],
    "executionOutcome": "Execute",
    "executionNote": "Bulk Executing",
    "_links": {
      "self": {
        "href": "http://human-task-manager-app:8080/tasks/1d01a5d0-4fa6-4ddd-9c65-b6563c0d3370"
      }
    }
  },
  "permissions": [
    "EXECUTE",
    "REJECT",
    "ASSIGN",
    "VIEW",
    "APPROVE"
  ]
}
El taskDetails el prefijo no es necesario en las rutas. Utilice processingContext.processingEntity, no taskDetails.processingContext.processingEntity.
Datos de supportingData.value puede ser mostrado proporcionando rutas a las claves del objeto en formato de cadena de texto de la manera típica.

Formularios predefinidos

Hay un grupo de forma de ejecución predefinido. Esto proporciona un SELECT campo de formulario para elegir el resultado de una tarea, por ejemplo, 'Ejecutar', y un TEXT_INPUT para ingresar notas de ejecución. Esto se puede configurar añadiendo una tarjeta con predefined = "EXECUTION_FORM" a cualquier panel de esta manera:

panels = [
    {
      cards = [
        {
          predefined = "EXECUTION_FORM"
        }
      ]
    }
]

Todas las demás formas configuradas recogen datos que se añaden a executionResultData.value de la solicitud de ejecución como un objeto en formato de cadena.

La tarjeta id y formControlName sirven como claves.

{
    "executeTaskRequest": {
        "operatorId": "123",
        "outcome": "Execute",
        "note": "Execution Note",
        "executionResultData": {
            "type": "executionResultData",
            "value": "{\"cardId-1\":{\"formControlName-1\":\"form input\"},\"cardId-2\":{\"formControlName-2\":\"form input\",\"formControlName-3\":\"form input\"}}"
        }
    }
}

Para configurar las páginas, proporcione un ipf.custom-page.conf archivo así:

ipf.custom-page {
  htm {
    pages = {
      "TASK_TYPE" = {
        id = "TASK_TYPE",
        panels = [
          {
            cards = [
              {
                id = "ids-list",
                titlePath = "heading.processingIds",
                content = {
                  elements = [
                    {
                      id = "client-request-id",
                      description = "rowHeader.clientRequestId",
                      type = "STRING",
                      valuePath = "processingContext.clientRequestId"
                    },
                    {
                      id = "unit-of-work-id",
                      description = "rowHeader.unitOfWorkId",
                      type = "STRING",
                      valuePath = "processingContext.unitOfWorkId"
                    },
                    {
                      id = "association-id",
                      description = "rowHeader.associationId",
                      type = "STRING",
                      valuePath = "processingContext.associationId"
                    }
                  ],
                  type = "LIST"
                }
              },
              {
                id = "task-status",
                titlePath = "heading.status",
                content = {
                  elements = [
                    {
                      id = "task-status",
                      description = null,
                      type = "STRING",
                      valuePath = "status"
                    },
                  ],
                  type = "SIMPLE"
                }
              },
            ]
          },
          {
            cards = [
              {
                predefined = "EXECUTION_FORM"
              }
            ]
          },
          {
            cards = [
              {
                id = "supplementaryData",
                titlePath = "heading.supplementaryData",
                content = {
                  elements = [
                    {
                      id = "splmtryData-1",
                      type = "TEXT_INPUT",
                      formControlName = "splmtryDataNm",
                      label = "formField.splmtryDataNm",
                      validators = null,
                      optionsPath = null,
                      valuePath = "splmtryDataNm"
                    },
                    {
                      id = "splmtryData-2",
                      type = "TEXT_INPUT",
                      formControlName = "sessionId",
                      label = "formField.sessionId",
                      validators = null,
                      optionsPath = null,
                      valuePath = "sessionId"
                    },
                    {
                      id = "splmtryData-3",
                      type = "TEXT_INPUT",
                      formControlName = "creditId",
                      label = "formField.creditId",
                      validators = null,
                      optionsPath = null,
                      valuePath = "creditId"
                    }
                  ],
                  type = "FORM_GROUP"
                }
              }
            ]
          }
        ]
      }
    }
  }
}