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.

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 tablaTranslations
. 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 elnotification_receiver_type
es ROLE). Debe coincidir con elname
de la tablaRoles
. -
severity
: nivel de criticidad de la notificación. -
subject
: clave de traducción que enlaza con el texto del mensaje en la tablaTranslations
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.

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:
-
Añadir un registro en la tabla
Notifications
con los datos básicos de la notificación. -
Configurar las claves de traducción asociadas a la notificación (
translationKey
ysubject
) en la tablaTranslations
, para todos los idiomas que utilice la organización en Anjana Data (tablaLanguages
).
Para añadir el registro en la tabla Notifications
y dar de alta una nueva notificación:
-
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
. -
Completar los campos de la notificación conforme a la estructura descrita en el apartado anterior.
-
Pulsar en Save para guardar el rol o en Cancel para descartar.

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:
-
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 tablaTranslations
. -
En el campo
key
se utilizará latranslationKey
definida en la notificación. -
En el campo
value
se incluirá el texto del cuerpo del mensaje en el idioma correspondiente (campolanguage
). -
El cuerpo del mensaje puede incluir variables dinámicas delimitadas por
##
(ejemplo:#OBJECT_ID#
).
-

-
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 tablaTranslations
. -
En el campo
key
se utilizará la clave delsubject
definida en la notificación. -
En el campo
value
se incluirá el texto del asunto en el idioma correspondiente (campolanguage
).
-

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 |
---|---|---|---|
|
|
✔️ |
Identificador único de la notificación. Clave primaria ( |
|
|
✔️ |
Módulo al que aplica la notificación. Valores posibles: |
|
|
Opcional |
Código alfanumérico que permite invocar/envíar la notificación desde las funcionalidades de Anjana. |
|
|
✔️ |
Define el destinatario: |
|
|
Opcional |
Clave de traducción del cuerpo del mensaje en la tabla |
|
|
✔️ |
Tipo de notificación. Valores posibles: |
|
|
Opcional |
Rol que recibirá la notificación, si el campo |
|
|
|
|
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.