TEX Predefined Events
EDM Trigger Schema specification version 0.2 2017-11-30
Predefined events
Predefined events is events genarated by the EDM system if certain conditions apply.
Addressing such events from XPX is done via XPX pseudo-constants. An XPX pseudo-constant is for example model open modes like "XPXRW".
---------------------------------------------------------------------------
-- the system recognized events is proposed to define as INTEGER XPX pseudo constants
-- then we can expand range of trigger events without enhancing grammar
-- declaration can be assumed as something like:
---------------------------------------------------------------------------
trigger_source = ENUMERATION OF(
XPX_Create_Instance, -- raised after entity is created
XPX_Delete_Instance, -- raised before an entity is deleted
XPX_Read_Instance, -- any attribute is accessed
XPX_Write_Instance, -- any attribute is modified
XPX_Pre_Set_Attribute, -- raised before specified attribute is assigned (do we need PRE/POST?)
XPX_Post_Set_Attribute, -- raised after specified attribute is assigned (do we need PRE/POST?)
XPX_Pre_Unset_Attribute, -- raised before an attribute is set to UNSET
XPX_Post_Unset_Attribute, -- raised after an attribute is set to UNSET
XPX_Read_Attribute, -- any attribute is accessed
XPX_Create_Model, -- raised after model is created
XPX_Delete_Model, -- raised before model is deleted
XPX_Read_Model, -- raised if any data in model accessed (pre)
XPX_Write_Model, -- raised if any data in model written (pre)
XPX_Commit_Write_Transaction, -- raised just before write transaction committed (what about tx levels?)
XPX_Abort_Write_Transaction, -- raised just before write transaction aborted(what about tx levels?)
);
Comments from @Former user (Deleted):
(3) what is XPX_Read_Instance?
Only read any attribute in getAttr functions? What's about getAttrs? getAggr where the instance is element? To avoid ambiguity I think it should be defined a set of edmi functions that raised this and other events.
(4) XPX_Pre_Set_Attribute, XPX_Post_Set_Attribute, XPX_Pre_Unset_Attribute and XPX_Post_Unset_Attribute
xpx_change_attribute would be enough for me
It should be subtypes of XPXEVENT to specify different types of attribute changes (with old and new values, ref. to instance, for aggregates initialize/insert/add/delete element and its index,..)
(5) For tracking would be nice to have events like this:
xpx_event_user_logged_in, xpx_event_user_logged_out
xpx_model_open, xpx_model_closed, xpx_model_converted (copied), xpx_model_validated, xpx_model_content_deleted, xpx_model_renamed
xpx_db_started, xpx_db_stopped, xpx_db_backup
xpx_schema_defined, xpx_schema_deleted (for EXPRESS, XPX, QEX, VALIDATION,..)