Hola.
Actualmente estoy implementando una arquitectura de seguridad “Zero-Trust” a nivel de servidor en mi ERP. Para garantizar que los permisos de los usuarios se respeten de forma absoluta sin depender de la UI, he centralizado la validación de permisos (RBAC) en Triggers de tipo Anterior a un alta/modificación/baja.
Si el usuario no tiene permiso, el Trigger bloquea la transacción usando Set retorno proceso = NO. Esto funciona perfectamente a nivel de base de datos.
Sin embargo, tengo un requerimiento de arquitectura para el manejo de excepciones y auditoría: Necesito que, al momento de rechazar la transacción en el Trigger, la base de datos pueda devolver un mensaje de error personalizado (ej. “Acceso Denegado. Ticket de rastreo: X8B9”) que se propague de forma nativa hasta el cliente que originó la petición.
Mi objetivo es que este mensaje personalizado aparezca:
-
De forma nativa en la ventana de error del vDataClient.
-
Como payload en la respuesta de error HTTP si la transacción fue originada por un Framework externo (como React) a través de un proceso expuesto como API REST.
Sé que en motores SQL tradicionales esto se resuelve con comandos como RAISE EXCEPTION o THROW, los cuales inyectan el texto del error en el cliente. Mi pregunta es:
¿Existe en la arquitectura actual de Velneo alguna instrucción o técnica nativa dentro del Trigger que permita sustituir el texto genérico de “Error en alta de ficha” y enviarle un string personalizado al vDataClient/API, sin tener que depender de leer Variables Globales programando manejadores de evento en cada formulario de la interfaz?
Agradezco mucho su orientación.