Define multiple handlers for an event
- Last Updated: January 16, 2024
- 1 minute read
- OpenEdge
- Version 12.8
- Documentation
If you need to subscribe more than one event handler
for an ABL class event, when you publish the event, any OUTPUT or INPUT-OUTPUT
parameter you define returns the value set by the final event handler
to execute. In addition, any INPUT-OUTPUT parameter you define passes
the value set by one event handler as input to the next event handler
to execute. A similar effect occurs if you pass a handle or object
reference as an INPUT parameter and your event handlers set the
value of a public data member on the handle or class-based object.
The returned value of the input object data element is the value
set by the final handler to execute for the event. In addition,
the order of execution for multiple handlers subscribed to a single event
is not guaranteed, making it difficult or impossible to know exactly
how parameter values returned from the Publish( ) method
have been set. So, if you use more than one handler for a given
event, you need to use caution in defining and using the parameters
for that event.
Also, if you raise ERROR or throw an error object from any one of the handlers for the ABL class event, any event handler that has not already run when the error is raised does not run. Therefore, if you want all handlers to run for an event, regardless of error conditions, you must resolve all conditions within each handler and allow the handler to return successfully.