# 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)