Feature Wiki

Information about planned and released features

Tabs

DataCollection Notifications

Samoila, Oliver [oliver.samoila], 28 August 2024: The general interest in such detailed configurability is understandable. However, this proposal would result in an extreme increase in complexity. The request has not been pursued for more than five years and immediately after its creation. In the interests of the majority of end users, I would oppose such an extension.

1 Initial Problem

Currently, the ILIAS DataCollection supports only a very basic notification system: when a user activates the notification, he/she will receive a notification when a new entry is added. This covers only very few of the use cases for a DataCollection. A more detailed and flexible notification system is required.

2 Conceptual Summary

An administrator with the permission "Edit Settings" will be able to add and configure notifications for each table of the DataCollection.

A notifications consists of one or multiple conditions and an action:

2.1 Conditions

The conditions define when the notification is triggered:

  • If a notification has multiple conditions, it is only triggered if all of the conditions are met ('AND'-condition).
  • A condition consists of one or multiple rules and is considered fulfilled if one of its rules are fulfilled ('OR'-condition).
This concept allows the full functionality of conditional logics and models the conjunctive normal form ("AND of ORs", e.g. "(A OR B OR C) AND (C OR D OR F) AND (...)"), which can be derived from any boolean formula.

2.1.1 Rules

A rule consists of a field, an operator and a value (e.g. 'field x = 123'), and has a title for better readability.

Rules can be defined in a separate subtab (see mockups) and can be used in all conditions of all notifications of the table. The possible operators for a rule depend on the field type chosen:

Field Type

Possible Operators

Text

=

Text Selection

=, ≠

Integer

=, ≠, <, >

Checkbox

=

Date

=, ≠, <, >

Date Selection

=, ≠

Media Object

Not Available

File Upload

Not Available

Reference

=, ≠

ILIAS Object

=, ≠

Rating

Not Available

Formula

=, ≠, <, >

Plugin

Defined by plugin

User *

"has Role", "doesn't have Role"

* User is not a field type, but can be used to check whether the current user has a specific role.

2.2 Action

The action defines the following points:

  1. Which (group of) users the notification will be sent to (record owner, specific user(s) and/or user(s) with role)
  2. What mail template will be used.
  3. If the notification's conditions should be checked immediately (on record creation and/or record updates) or it should be a reminder (check all x days, via cronjob)
  4. If the notification is active/inactive
In the future, the action could also be extended to execute other tasks than just sending notifications. E.g. it could add/edit/delete records in another table, or even create course enrollments etc.

2.2.1 Mail templates and delivery

The available mail templates can be defined in a separate subtab (see mockups). A default template will be given for each DataCollection table.

When a notification's conditions are met, the mail will not be sent directly. All notifications will be collected in the background and delivered via Cronjob.

3 User Interface Modifications

3.1 List of Affected Views

When editing a DataCollection table, a new tab Notifications will appear. This tab consists of three subtabs: Notifications, Conditions and Mail Templates. These three subtabs are described in the mockups below.

3.2 User Interface Details

All provided mockups are completely new views. The only modification on existing views is the additional "Notifications" Tab in a tables "Settings", "Fields" and "Views" view.

Alternatives

As alternative to the table GUIs it might be considerable to use KS Presentation Tables instead: https://test54.ilias.de/goto_test54_stys_21_TablePresentationPresentation_default_delos.html

3.3 New User Interface Concepts

There are two new UI-Elements:

Multiple Select Input (will probably need another name): See Mockup "Edit / Add New Condition". A normal Selection Input as we know it, but with the possibility to add multiple values via the "+ -" buttons.

Multiple Text Input: See Mockup "Edit Action". A normal Text Input as we know it, but with the possibility to add multiple values via the "+ -" buttons. This InputGUI already exists in ILIAS but is not yet added to Kitchen Sink.

4 Technical Information

Condition Check: A condition check may affect the performance (especially when combing multiple conditions and rules). In order to maintain a good user experience, the conditions will not be checked directly when saving an entry. Instead a background task will be created.

Mail Delivery: As mentioned above, the notification mails will not be sent directly after a condition has been validated. Instead, the notifications will be stored in a database table. A cronjob will check this table regularly and send the notifications. Multiple notifications for the same user will be collected in one email.

Cron Job: A new cronjob will be implemented with this feature. It has two functionalities: 1) it sends the collected notifications (see Mail Delivery above) and 2) it checks and sends the notifications of type "Reminder", which have to be checked at the configured frequency (e.g. every 7 days).

Copy: When a DataCollection is copied, the notifications will be copied as well, but all notifications will be set inactive.

5 Contact

  • Author of the Request: 
  • Maintainer: 
  • Implementation of the feature is done by: {The maintainer must add the name of the implementing developer.}

6 Funding

If you are interest in funding this feature, please add your name and institution to this list.

7 Discussion

8 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: 28. Aug 2024, 20:43, Samoila, Oliver [oliver.samoila]