Concordia enables objects interested in receiving multiple related events to receive them by registering for a more general class of event (i.e., a superclass of the related events). Objects registered for a more general event receive that event and any events derived from it.
Suppose an agent is written that retrieves weather-related information from a database. The agent may register to receive events whenever certain types of information are updated. Consider the following event hierarchy:
Note that each of these events derives from a Weather event. WinterStorm and Hurricane also derive from the Warnings event. If the agent registers to receive Weather events, it also receives derived events (e.g., Forecasts, NewEngland, Warnings, Hurricane, etc.). So the more general class of event encapsulates the functionality provided by more specialized events. Objects soley interested in receiving specific events (e.g., WinterStorm) may register for the specialized event, whereas objects interested in receiving related events may register for a more general event (e.g., Warnings)