Configuración
Breadcrumbs

Notificaciones de plataforma y workfows

El siguiente paso en la configuración del modelo operativo de gobierno en Anjana Data consiste en definir las notificaciones que permiten informar a los usuarios sobre eventos, flujos de validación (workflows) o incidencias en la plataforma.

Las notificaciones son un mecanismo clave para garantizar la trazabilidad y la comunicación dentro del gobierno de datos, ya que avisan a los usuarios o a roles completos de acciones como la expiración de un objeto, la creación de un workflow, el fallo en una adherencia, la modificación de políticas o la caducidad de una licencia.

En Anjana Data, las notificaciones se configuran en la tabla Notifications del panel de configuración y estarán disponibles posteriormente en el portal de datos para los usuarios afectados.


Tabla Notifications del Panel de Configuración (Visión administrador)

Las notificaciones se configuran en la tabla Notifications del panel de configuración. La definición de los notificaciones es un paso indispensable para poder configurar los workflows en el BPM y para que los usuarios clave reciban notificaciones de su interés.

image-20250820-112212.png
Tabla Notifications para configuración de la notificaciones de la plataforma y workflows

Estructura de la tabla Notifications

Cada notificación registrada en la tabla se caracteriza por los siguientes campos:

  • id: identificador único de la notificación (PK).

  • moduleType: módulo al que aplica la notificación. Actualmente es un campo informativo (legacy) heredado de versiones antiguas. Valores posibles:

    • "BG" → Business Glossary

    • "DC" → Data Catalog

    • "ALL" → aplica a toda la plataforma (opción recomendada).

  • notificationCode: código alfanumérico que identifica la notificación y permite invocarla desde las funcionalidades de la plataforma.

  • notificationReceiverType: define el tipo de destinatario. Valores posibles:

    • "USER" → la notificación se envía a un usuario específico.

    • "ROLE" → la notificación se envía a todos los usuarios que tengan asignado el rol indicado.

  • traslationKey: clave de traducción que enlaza con el texto del mensaje en la tabla Translations. El texto puede contener variables que serán sustituidas en el momento de emisión de la notificación.

  • notificationType: tipo de notificación. Valores posibles:

    • "ALERT" → alerta

    • "NOTICE" → aviso

    • "ADMIN_ALERT" → alerta dirigida a administradores

  • receiverRole: rol destinatario de la notificación (si el notification_receiver_type es ROLE). Debe coincidir con el name de la tabla Roles.

  • severity: nivel de criticidad de la notificación.

  • subject: clave de traducción que enlaza con el texto del mensaje en la tabla Translations que contiene el asunto de la notificación.


Códigos de notificación (notificationCode)

Para el correcto funcionamiento de la aplicación, la tabla Notifications debe contener registros que correspondan con una serie de notificationCode predefinidos.

Notification code

Utilidad

ADHERENCE_FAIL                      

Indica el motivo por el que ha fallado la adherencia.

CHECK_CONFIGURATION_IN_PROVIDER     

Error al recuperar la información de un usuario en el provider indicado.

COMPLETED_AUTOMATIC_METADATA        

Indica que ha terminado la importación de metadatos automática.

DATASET_EXPIRATION_TOT_FAIL         

Fallo en el borrado de permisos al expirar un dataset.

DATASET_FAIL                        

Fallo en la creación de dataset en sistemas de terceros.

DEACTIVATION

Aviso de la desactivación a los roles y usuario correspondientes

DELETE_ENTITY                       

Avisa del borrado de una entidad.

DELETE_RELATIONSHIP                 

Avisa del borrado de una relación.

DEPRECATION                         

Avisa a todos los usuarios de un rol que el objeto va a ser deprecado.

DEPRECATION_ADHERED                 

Avisa al usuario que el objeto al que estaba adherido (dataset o DSA) va a ser deprecado.

DISADHERENCE                        

Se indica que se ha realizado correctamente la desadherencia.

DISADHERENCE_FAIL                   

Fallo en la desadherencia indicando el motivo.

DISADHERENCE_LIST                   

Informa de los detalles del resultado del proceso de desadherencia.

DISADHERENCE_LIST_OK                

Se indica que la lista de objetos en los que ha tenido éxito la desadherencia.

DSA_FAIL                            

La creación de un DSA ha fallado indicando el motivo.

DSA_TRANSFER_FAIL                   

Se le indica al administrador que no se ha podido hacer el cambio de unidad organizativa del DSA.

ERROR_AUTOMATIC_METADATA            

Se produce un fallo en la importación de metadatos.

EXCEL_IMPORT

Notificación con el aviso de error en una creación/edición por Excel

EXCEL_PREPROCESSING

Aviso de finalización del preprocesamiento de un Excel de edición

EXPIRATION                          

El objeto está expirando.

EXPIRATION_OBJECT_FAIL              

Avisa de un fallo en la expiración de un objeto y el motivo

EXPIRATION_ADHERED                  

El objeto al que se está adherido ha expirado.

EXPIRATION_WARNING                  

Aviso que se envía a los propietarios del objeto debido a que está próxima su expiración.

EXPIRATION_WARNING_ADHERED          

Aviso que se envía a los usuarios adheridos al objeto que indica que está próxima su expiración.

FORM_FAIL                           

Errores encontrados en el formulario del objeto.

INDEX_FAIL                          

Se ha producido un error en la indexación.

INDEX_RELATIONSHIP_FAIL             

Error de indexación en relaciones.

LICENSE_EXPIRED                     

La licencia ha expirado.

LICENSE_EXPIRING                    

Aviso de que la licencia, aunque aún es válida, está cerca de expirar.

MUST_DELETE_RELATIONSHIPS_FIRST

Aviso de la necesidad de un borrado previo de relaciones antes de borrar una entidad

NEW_DSA                             

Cuando el usuario solicita la creación de un nuevo DSA.

PENDING_WF_FAIL_ADHERENCE           

Indica el fallo en la creación de un workflow

POLICY_MODIFICATION                 

Avisa de la modificación de políticas en un objeto.

REQUIRED_FIELDS                     

Avisa de errores en la configuración de las plantillas.

TAXONOMY_BAD_CONFIGURED             

Avisa de algún error en la configuración de la taxonomía de algún subtipo de objeto.

TRANSLATION_FILE_UPLOAD_FAIL        

Avisa de que ha habido un error subiendo el fichero de traducciones a Minio o S3.

USER_CROSS_ROLE_FAIL                

Indica los usuarios que no han sido configurados como cross.

WORKFLOW_DELETE_FAIL                

No se ha podido borrar un workflow.

WORKFLOW_INFO_FAIL                  

Error en el workflow debido a que no tenía un workflow info asociado, mediante la api administrativa se pueden ejecutar los últimos pasos del workflow para que no queden en mal estado si sucede este error.

WORKFLOW_OK                         

El workflow ha sido creado.

WORKFLOW_FAIL                       

Indica el motivo por el que ha fallado la creación de un workflow.

WORKFLOW_TASK_FAIL

Fallo en la validación de un paso de workflow

 Variables para las Key de Translations como parte del cuerpo de la notificación

Adicionalmente, los cuerpos de los mensajes de notificación definidos mediante las claves de traducción (campo Key de la tabla de Translations ) pueden contener variables dinámicas delimitadas por ##. Estas variables serán sustituidas automáticamente por los valores correspondientes en el momento de generar y enviar la notificación.

Por ejemplo:

“Ocurrió un error en el borrado del workflow con id #OBJECT_ID#”.

En caso de que una variable se incluya en un mensaje en el que no tenga valor aplicable, será sustituida por N/A.

A continuación se detallan las distintas variables que soporta Anjana Data para su uso en las notificaciones:

Variable

Utilidad

ACTION                         

Acción realizada

EXPIRATION_DAYS                

Días hasta la expiración de un objeto (es un número negativo en caso de que sea una fecha pasada). Sólo se permite en las notificaciones de aviso de expiración cercana y deprecación

OBJECT_ID                      

Identificador del objeto

OBJECT_LIST                    

Lista de objetos, se usa en notificaciones como las de solicitud de creación de un nuevo DSA

OBJECT_NAME                    

Nombre del objeto

OBJECT_SUB_TYPE                

Subtipo del objeto

ORGANIZATIONAL_UNIT            

Unidad organizativa del objeto

ORGANIZATIONAL_UNIT_CHANGED    

Unidad de destino del objeto en una transferencia de OU

REASON                         

Motivo de aprobación/rechazo del workflow

REQUEST_REASON                 

Motivo de la solicitud de la acción (para las notificaciones de solicitud de creación de dsa o de solicitud de adherencia, por ejemplo) 

RESULT                         

Resultado de la acción

ROLE                           

Rol del usuario que debe realizar la acción o recibe la notificación

TYPE_OBJECT                    

Tipo del objeto

USER_NAME                      

Usuario que ha realizado la acción

VERSION                        

Número de versión del objeto

WORKFLOW_TYPE                  

Tipo del workflow lanzado

 Notificaciones nativas

Anjana Data incorpora de forma nativa una gran cantidad de notificaciones basadas en ROLE para cubrir los principales eventos de gobierno de datos (creación, borrado, expiración, workflows, errores, etc.).

Es responsabilidad del administrador funcional configurar correctamente el campo receiver_role en cada notificación, de modo que los mensajes lleguen a los stakeholders adecuados según el modelo operativo de gobierno definido por la organización.

Una asignación incorrecta o incompleta puede provocar que los usuarios no reciban alertas críticas o, por el contrario, que se sobrecarguen con notificaciones que no les corresponden.

image-20250820-144320.png
Ejemplo de modificación de la notificación que avisa de la inminente expiración de la licencia

Alta de una nueva Notificación en la tabla Notifications

El alta de una nueva notificación (por ejemplo, una alerta para validar un paso de workflow) implica:

  1. Añadir un registro en la tabla Notifications con los datos básicos de la notificación.

  2. Configurar las claves de traducción asociadas a la notificación (translationKey y subject) en la tabla Translations, para todos los idiomas que utilice la organización en Anjana Data (tabla Languages).

Para añadir el registro en la tabla Notifications y dar de alta una nueva notificación:

  1. Pulsar el botón New en la esquina superior derecha. Esto abrirá un asistente (wizard) con los campos definidos en el apartado Estructura de la tabla Notifications.

  2. Completar los campos de la notificación conforme a la estructura descrita en el apartado anterior.

  3. Pulsar en Save para guardar el rol o en Cancel para descartar.

image-20250820-115828.png
Ejemplo de alta de una alerta para un workflow de validación

Configuración de traducciones para notificaciones

Una vez creada la notificación en la tabla Notifications, es necesario añadir en la tabla Translations los registros correspondientes al cuerpo del mensaje (translationKey) y al asunto (subject) en los distintos idiomas configurados en la aplicación.

El procedimiento es el siguiente:

  1. Cuerpo de la notificación (translationKey)

    • Por cada notificación y para cada idioma registrado en la tabla Languages, se debe crear un registro en la tabla Translations.

    • En el campo key se utilizará la translationKey definida en la notificación.

    • En el campo value se incluirá el texto del cuerpo del mensaje en el idioma correspondiente (campo language).

    • El cuerpo del mensaje puede incluir variables dinámicas delimitadas por ## (ejemplo: #OBJECT_ID#).

image-20250820-140012.png
Tabla de Translations para configuración de traducciones
  1. Asunto de la notificación (subject)

    • Por cada notificación y para cada idioma registrado en la tabla Languages, se debe crear un registro adicional en la tabla Translations.

    • En el campo key se utilizará la clave del subject definida en la notificación.

    • En el campo value se incluirá el texto del asunto en el idioma correspondiente (campo language).

image-20250820-141046.png
Tabla de Translations para configuración de traducciones

Importante:

  • Tras añadir las traducciones, es obligatorio subir el fichero de traducciones actualizado mediante el menú de acciones del Panel de configuración (Actions > Upload translation files).

  • Adicionalmente, se recomienda limpiar cachés desde el Panel de configuración (Actions > Clear cache).

Modificación de una Notificación

La modificación del asunto o del cuerpo de una notificación no supone impacto en la configuración, siempre que no se alteren las claves de traducción, es decir, el translationKey o el subject. En este caso, únicamente se debe modificar el contenido del campo value en los registros correspondientes de la tabla Translations.

Por el contrario, si es necesario modificar las claves de traducción (translationKey o subject), se deberán aplicar cambios tanto en la tabla Notifications como en la tabla Translations.

Importante:

  • Las modificaciones en el cuerpo o asunto aplican con carácter retroactivo, afectando también a las notificaciones que ya se hubieran recibido.

  • Tras aplicar cambios en las traducciones, es obligatorio subir el fichero de traducciones actualizado mediante el menú de acciones del Panel de configuración (Actions > Upload translation files).

  • Adicionalmente, se recomienda limpiar cachés desde el Panel de configuración (Actions > Clear cache).

Configuración de las Notificaciones mediante acceso directo a la base de datos (Visión desarrollador)

La tabla de base de datos (BD) que contiene la parametría de los permisos tiene esta estructura:

Campo

Tipo de dato

Obligatorio

Descripción / Utilidad

id_notification

int4 (INTEGER)

✔️

Identificador único de la notificación. Clave primaria (PRIMARY KEY).

module_type

varchar(255)

✔️

Módulo al que aplica la notificación. Valores posibles: BG (Business Glossary), DC (Data Catalog), ALL (toda la plataforma).

notification_code

varchar(255)

Opcional

Código alfanumérico que permite invocar/envíar la notificación desde las funcionalidades de Anjana.

notification_receiver_type

varchar(255)

✔️

Define el destinatario: USER (un usuario nominal) o ROLE (todos los usuarios con un rol concreto).

translation_key

varchar(255)

Opcional

Clave de traducción del cuerpo del mensaje en la tabla Translations. Permite multiidioma y uso de variables dinámicas.

notification_type

varchar(255)

✔️

Tipo de notificación. Valores posibles: ALERT (alerta), NOTICE (aviso), ADMIN_ALERT (alerta administrativa).

receiver_role

varchar(255)

Opcional

Rol que recibirá la notificación, si el campo notification_receiver_type = ROLE.

severity

varchar(255)




A continuación se muestra una query de ejemplo para configurar los permisos asociados al rol de DPO:

INSERT INTO hermes.notification
(id_notification, module_type, notification_code, notification_receiver_type, translation_key, notification_type, receiver_role, severity, subject)
VALUES
(1,  'BG', NULL, 'ROLE', 'NOTIFICATION.1.BG.ROLE', 'ALERT', NULL, 'HIGH', 'NOTIFICATION.SUBJECT.ACTION.MUST.BE.VALIDATED'),
(3,  'BG', NULL, 'ROLE', 'NOTIFICATION.3.BG.ROLE', 'NOTICE', NULL, 'LOW',  'NOTIFICATION.SUBJECT.ACTION.PERFORMED'),
(5,  'BG', NULL, 'USER', 'NOTIFICATION.5.BG.USER', 'NOTICE', NULL, 'LOW',  'NOTIFICATION.SUBJECT.ACTION.PERFORMED'),
(6,  'BG', NULL, 'ROLE', 'NOTIFICATION.1.BG.ROLE', 'ALERT', NULL, 'HIGH',  'NOTIFICATION.SUBJECT.ACTION.MUST.BE.VALIDATED'),
(7,  'DC', NULL, 'ROLE', 'NOTIFICATION.7.DC.USER', 'ALERT', NULL, 'HIGH',  'NOTIFICATION.SUBJECT.ACTION.MUST.BE.VALIDATED'),
(8,  'DC', NULL, 'USER', 'NOTIFICATION.8.DC.USER', 'NOTICE', NULL, 'LOW',  'NOTIFICATION.SUBJECT.ACTION.PERFORMED'),
(9,  'DC', NULL, 'USER', 'NOTIFICATION.ACTION.REJECTED.WITH.REASON', 'NOTICE', NULL, 'LOW', 'NOTIFICATION.SUBJECT.ACTION.REJECTED.WITH.REASON'),
(10, 'DC', NULL, 'ROLE', 'NOTIFICATION.10.DC.ROLE', 'NOTICE', NULL, 'LOW',  'NOTIFICATION.SUBJECT.ACTION.APPROVED'),
(11, 'DC', NULL, 'ROLE', 'NOTIFICATION.11.DC.ROLE', 'NOTICE', NULL, 'LOW',  'NOTIFICATION.SUBJECT.ACTION.REJECTED'),
(12, 'BG', 'NEW_DSA', 'ROLE', 'NOTIFICATION.NEW_DSA', 'NOTICE', 'data_architect', 'LOW', 'NOTIFICATION.SUBJECT.NEW.DSA'),
(13, 'BG', 'EXPIRATION', 'USER', 'NOTIFICATION.EXPIRATION', 'NOTICE', NULL, 'LOW', 'NOTIFICATION.SUBJECT.EXPIRATION'),
(14, 'DC', 'ERROR_AUTOMATIC_METADATA', 'ROLE', 'NOTIFICATION.AUTOMATIC_METADATA', 'NOTICE', 'DataSteward', 'LOW', 'NOTIFICATION.SUBJECT.METADATA'),
(15, 'DC', 'DATASET_FAIL', 'ROLE', 'NOTIFICATION.DATASET_FAIL', 'ADMIN_ALERT', 'DataOwner', 'HIGH', 'NOTIFICATION.SUBJECT.CREATION.FAIL.DATASET'),
(16, 'DC', 'DSA_FAIL', 'ROLE', 'NOTIFICATION.DSA_FAIL', 'ADMIN_ALERT', 'DataOwner', 'HIGH', 'NOTIFICATION.SUBJECT.CREATION.FAIL.DSA');

Importante:

  • Una vez ejecutado el insert, ejecutar la actualización de secuencias de la tabla. (Desde el Panel de configuración en Actions > Reset DQ sequences se pueden actualizar las secuencias de todas las tablas, incluida esta).

  • Todo el peso de la lógica de configuración recae en el desarrollador que ejecuta las queries SQL directamente sobre la tablas. Se recomienda revisar cuidadosamente el apartado de Estructura de la tabla.