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.
-
-
translationKey: clave de traducción que enlaza con el texto del mensaje en la tablaInternalTranslation. 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_typees ROLE). Debe coincidir con elnamede la tablaRoles. -
severity: nivel de criticidad de la notificación. -
subject: clave de traducción que enlaza con el texto del mensaje en la tablaInternalTranslationque contiene el asunto de la notificación. -
externalSending: permite habilitar el envío de notificaciones por canales externos. Para activarlo, incluya las claves de los proveedores externos separadas por comas. Por ejemplo, para enviar a los proveedores disponibles:EMAIL, SLACK, MICROSOFT_TEAMS, GOOGLE_CHAT. Si está vacío, no se enviará a ningún proveedor externo. Consulte la lista de proveedores disponibles.
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. |
|
ENRICHED_BAD_CONFIGURATION |
Notificación de error cuando la configuración de algún campo enriquecido es errónea (no pueden tener validaciones MIN_LENGTH). |
|
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 |
|
MUST_DELETE_RELATIONSHIPS_STRUCTURE_FIRST |
Aviso de la necesidad de un borrado previo de relaciones de los fields de un dataset antes de borrarlo a él |
|
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 InternalTranslation 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
Notificationscon los datos básicos de la notificación. -
Configurar las claves de traducción asociadas a la notificación (
translationKeyysubject) en la tablaInternalTranslation, 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 la notificación o en Cancel para descartar.
Configuración de traducciones para notificaciones
Una vez creada la notificación en la tabla Notifications, deben definirse los textos que recibirá el usuario: el cuerpo del mensaje (clave translationKey) y el asunto (clave subject), en cada uno de los idiomas configurados en la plataforma.
Esta configuración se realiza desde el Portal de Administración, en la sección Internacionalización, accesible desde el menú de navegación del Portal de Datos.
Para cada notificación se crea una traducción, tanto para el cuerpo como para el asunto, cumplimentando los siguientes campos:
-
Clave: debe coincidir con el valor definido en la notificación (
translationKeypara el cuerpo ysubjectpara el asunto). -
Uso: texto descriptivo que ayude a identificar que la traducción corresponde a una notificación. Se recomienda definir un estándar de nomenclatura para mantener un vocabulario común de referencia.
-
Idioma (English y resto de idiomas configurados): texto que recibirá el usuario según el idioma establecido en su perfil.
El cuerpo del mensaje admite variables dinámicas delimitadas por # (por ejemplo, #OBJECT_ID#), tal como se describe en apartados anteriores.
Importante: tras añadir todas las traducciones es necesario Publicar para que surtan efecto.
Modificación de una Notificación
La modificación del asunto o del cuerpo de una notificación no tiene impacto en la configuración, siempre que no se alteren las claves de traducción (translationKey o subject). En ese caso basta con actualizar el texto del idioma correspondiente, desde la sección Internacionalización del Portal de Administración, mediante una de estas dos opciones:
-
Edición directa del texto en el campo editable.
-
Edición mediante asistente: al pulsar el icono del lápiz se abre un wizard que permite editar los textos en los distintos idiomas.
Si, por el contrario, es necesario modificar las claves de traducción (translationKey o subject), deberán aplicarse los cambios tanto en la notificación (tabla Notifications) como en sus traducciones.
Importante:
-
Las modificaciones del cuerpo o del asunto se aplican con carácter retroactivo, afectando también a las notificaciones ya recibidas.
-
Tras modificar las traducciones es necesario Publicar los cambios.
-
Se recomienda además vaciar la caché para eliminar los textos cacheados.
Consulta y explotación de las notificaciones en base de datos (Visión desarrollador)
Además de configurarse desde el Panel de configuración, la información de las notificaciones queda almacenada en la base de datos y puede consultarse en modo lectura para explotarla con fines analíticos. Por ejemplo, permite que el cliente construya su propio data mart, cuadros de mando o informes sobre la configuración de notificaciones de su plataforma (qué eventos se notifican, a qué roles, con qué criticidad, por qué canales, etc.).
Este apartado está orientado a la consulta (solo lectura) de la información. El alta y la modificación de notificaciones deben realizarse siempre desde el Panel de configuración (visión administrador), como se describe en los apartados anteriores; no se recomienda escribir directamente sobre las tablas.
Tabla hermes.notification
La configuración de cada notificación se almacena en la tabla hermes.notification. Sus columnas, disponibles para su consulta, son:
|
Campo |
Tipo de dato |
Descripción / Utilidad |
|---|---|---|
|
|
|
Identificador único de la notificación. Clave primaria ( |
|
|
|
Módulo al que aplica la notificación. Valores posibles: |
|
|
|
Código alfanumérico que identifica la notificación y permite invocarla desde las funcionalidades de Anjana. |
|
|
|
Define el destinatario: |
|
|
|
Clave de traducción del cuerpo del mensaje en la tabla |
|
|
|
Tipo de notificación. Valores posibles: |
|
|
|
Rol que recibe la notificación cuando |
|
|
|
Nivel de criticidad de la notificación (por ejemplo, |
|
|
|
Clave de traducción del asunto del mensaje en la tabla |
|
|
|
Proveedores externos a los que se envía la notificación, separados por comas (por ejemplo, |
Tablas relacionadas para enriquecer las consultas
Para obtener una vista más completa, la tabla de notificaciones puede cruzarse con otras tablas del modelo:
-
InternalTranslation: contiene el texto del cuerpo y del asunto de cada notificación por idioma. Se cruza enlazando
translation_keyysubjectcon el campokeyde la tabla, filtrando por el idioma deseado (campolanguage). Permite recuperar el mensaje final que ve el usuario. -
Roles: permite resolver el
receiver_rolecon el detalle del rol destinatario (enlazando con su camponame). -
Languages: lista de idiomas configurados en la plataforma, útil para acotar las consultas de textos por idioma.
Ejemplos de consulta
Listado completo de las notificaciones configuradas, con su tipo, destinatario y criticidad:
SELECT id_notification,
module_type,
notification_code,
notification_receiver_type,
receiver_role,
notification_type,
severity,
external_sending
FROM hermes.notification
ORDER BY id_notification;
Notificaciones dirigidas a un rol concreto:
SELECT notification_code, notification_type, severity
FROM hermes.notification
WHERE notification_receiver_type = 'ROLE'
AND receiver_role = 'DataOwner';
Recuento de notificaciones por módulo y tipo (útil como métrica para un data mart):
SELECT module_type,
notification_type,
COUNT(*) AS total
FROM hermes.notification
GROUP BY module_type, notification_type
ORDER BY module_type, notification_type;
Notificaciones con envío por canales externos configurado:
SELECT notification_code, notification_type, external_sending
FROM hermes.notification
WHERE external_sending IS NOT NULL
AND external_sending <> '';
Importante:
-
Utilice un usuario de base de datos con permisos de solo lectura para estas consultas. El alta y la modificación de notificaciones deben realizarse siempre desde el Panel de configuración, para mantener la integridad de traducciones, secuencias y cachés.
-
Los nombres de esquema, tablas y columnas pueden evolucionar entre versiones de Anjana Data; conviene validarlos antes de construir un data mart o informes sobre esta información.