Aggregated Event Analysis

In Aggregated Event Analysis, the Event Analysis service provides a layer of abstraction between the raw Eiffel events and their consumers. This is particularly useful in use cases where information contained in multiple events is required. While Eiffel events can be thought of as verbs communicating what is happening related to certain entities in the pipeline, Aggregated Event Analysis is about learning about those entities based on the sum of all those verbs.

Example: Whenever a new version of a release candidate has passed a certain set of test cases in a simulated environment, Jane wants to kick off tests in the target environment. She could do this by listening first to the EiffelArtifactCreatedEvents of the release candidates, and then listen to any EiffelTestCaseFinishedEvents referencing EiffelTestCaseTriggeredEvents referencing any of those release candidate artifact events. When any one EiffelArtifactCreatedEvent has been thus referenced by the correct set of downstream events, that means it's time to start the on-target test. This would require non-trivial logic, however, not to mention the need for storing the state of every release candidate and its downstream events. A much simpler way for Jane to achieve her trigger is to use an Event Analysis service. This is because what she's interested in isn't really the events themselves, but the state of the release candidate: whenever a new release candidate has achieved the state of having passed the required test cases, Jane wants to be notified. This is easily achieved by setting up a subscription to the Event Analysis service, freeing Jane's trigger from having to maintain any state.