Acciones, eventos y privilegios
En el marco de V12, una acción representa la realización de un proceso de negocio, por ejemplo: Dar de alta un cliente, aprobar un presupuesto, etc.
Las acciones son siempre iniciadas por un usuario desde una vista (interfaz del usuario), para realizarse requiren de un privilegio y desencadenan tres eventos en diferentes momentos, vea el diagrama:
Cada acción tiene definida una clave (código) único formado por el prefijo del paquete que la define y un número consecutivo.
Cuando el usuario inicia la acción, se comprueba que tenga concedido el privilegio correspondiente (el ID de un privilegio es por convención, el mismo que el ID de la acción), en caso contrario la acción se aborta antes de iniciarse.
Una vez superada la comprobación del privilegio, la acción se realiza en el contexto de una transacción de base de datos para asegurar la integridad de los datos.
Cada acción desencadena al menos tres eventos, cuyo EVENT_ID es el prefijo pre_, pos_ o ext_ que corresponden con los tres momentos en que se disparan:
- Antes de iniciar la transacción (
pre_), si alguno de los manejadores de eventos desencadena una excepción, la acción termina antes de empezar. - Antes de confirmar la transacción (
pos_), si alguno de los manejadores de eventos desencadena una excepción, la transacción se deshace (rollback) y termina la acción sin afectar a los datos. - Después de confirmada la transacción (
ext_), independientemente de que los manejadores de eventos fallen (lancen excepciones) la acción habrá afectado a los datos y se considerará realizada.
Además, las acciones son inherentes a los tipos de elementos de datos (Data Element Types DET) que representan objetos o conceptos del mundo real y es el Id del DET el que se emplea como SENDER_ID
Por ejemplo:
La acción GA14 Cancelar documento de compra requiere que el usuario tenga el privilegio con id: GA14 para iniciarse y dispara los eventos con EVENT_ID: pre_GA14,pos_GA14 y ext_GA14 indicando como SENDER_ID: DET01B (Documento de compra)