Feature Wiki
Tabs
Introduce Event Manager for Efficient Event Handling and Routing
Page Overview
[Hide]1 Initial Problem
To implement a workflow concept, all relevant processes should raise an event (much more than now), so that the workflow engine can be aware and react on them. The existing mechanism where a package describes in an xml file, which events it wants to listen to provides the possibility to filter the events. But that is very static and only changes on an update of this package.
Another possibility to listen to events is an event handling plugin, that can listen on an event. For a workflow environment this plugin must listen on all events and relay these events to the relevant processes/scripts, that should be executed. Most processes only react to one of these events. With a growing number of events, much unneeded traffic is generated, that slows the system down.
2 Conceptual Summary
We use an event handling plugin, that handles all events. Every process/script, that should be executed must be registered to a specific event.Furthermore the events can be filtered by the values, that are transmitted with theseevents.
So much less events are sent to processes, which reduces the overhead.
In the current implementation, the plugin does only make a simple comparison of event parameters with defined values for concrete processes.
Another possibilty, that is not yet realised, would be a validate function in the process class that could be used, to determine quickly, if the process will handle that event. This validation function could handle more complex filtering relations than the current simple comparison.
This functionality could be a useful enhancement of the ilias core, so that much more events could be filtered efficiently, to reduce the overhead, when more events are raised, as would be useful in a workflow engine environment.
3 User Interface Modifications
3.1 List of Affected Views
- A new administration entry under which the events and the executed processes can be be configured.
3.2 User Interface Details
{ For each of these views please list all user interface elements that should be modified, added or removed. Please provide the textual appearance of the UI elements and their interactive behaviour. }
3.3 New User Interface Concepts
{ If the proposal introduces any completely new user interface elements, you might consult UI Kitchen Sink in order to find the necessary information to propose new UI-Concepts. Note that any maintainer might gladly assist you with this. }
3.4 Accessibility Implications
{ If the proposal contains potential accessibility issues that are neither covered by existing UI components nor clarified by guidelines, please list them here. For every potential issue please either propose a solution or write down a short risk assessment about potential fallout if there would be no solution for the issue. }
4 Technical Information
{ The maintainer has to provide necessary technical information, e.g. dependencies on other ILIAS components, necessary modifications in general services/architecture, potential security or performance issues. }
5 Privacy
{ Please list all personal data that will need to be stored or processed to implement this feature. For each date give a short explanation why it is necessary to use that date. }
6 Security
{ Does the feature include any special security relevant changes, e.g. the introducion of new endpoints or other new possible attack vectors. If yes, please explain these implications and include a commitment to deliver a written security concept as part of the feature development. This concept will need an additional approvement by the JourFixe. }
7 Contact
- Author of the Request: [vimotion] (Harald Grübele)
- Maintainer: {Please add your name before applying for an initial workshop or a Jour Fixe meeting.}
- Implementation of the feature is done by: {The maintainer must add the name of the implementing developer.}
8 Funding
If you are interest in funding this feature, please add your name and institution to this list.
- …
9 Discussion
10 Implementation
{ The maintainer has to give a description of the final implementation and add screenshots if possible. }
Test Cases
Test cases completed at {date} by {user}
- {Test case number linked to Testrail} : {test case title}
Approval
Approved at {date} by {user}.
Last edited: 19. Apr 2023, 11:33, Kunkel, Matthias [mkunkel]