Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
devel:documentation:adm:configuration:events [2019/03/01 08:39] kotisovam created parts moved from devel section |
devel:documentation:adm:configuration:events [2019/05/13 08:49] tomiskar |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Events - processing of events ====== | + | {{page> |
- | + | ||
- | {{tag> event architecture configuration processor}} | + | |
- | + | ||
- | + | ||
- | ===== Event types ===== | + | |
- | + | ||
- | Every module can publish their own event types. Basic (core) event types | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | + | ||
- | Different (and custom) event types can be used for different entities. | + | |
- | + | ||
- | Event is published with content and specific event type (e.g. '' | + | |
- | + | ||
- | ===== Entities with event support ===== | + | |
- | + | ||
- | Supported events for individual entities: | + | |
- | * '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * adds event type '' | + | |
- | * adds event type '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * event is propagated when identity log in (e.g. last login date is changed) | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * event is propagated when token is created, disabled (=> updated), deleted - e.g. when identity log in / out (token type '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * adds event type '' | + | |
- | * supports event type '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * adds event type '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * supports base event type '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * adds event type '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * adds event type '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * adds event type '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * adds event type '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * supports base event types '' | + | |
- | * '' | + | |
- | * adds event type '' | + | |
- | * adds event type '' | + | |
- | * adds event type '' | + | |
- | * adds event type '' | + | |
- | * '' | + | |
- | * adds event type '' | + | |
- | * adds event type '' | + | |
- | * adds event type '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * adds event type '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * adds event type '' | + | |
- | + | ||
- | + | ||
- | A page has been created directly in the application on the module page for an overview of all entity types and event types migrating through event processing. All the registered processors including the configuration are listed there: | + | |
- | + | ||
- | {{: | + | |
- | + | ||
- | + | ||
- | ===== Asynchronous event processing ===== | + | |
- | + | ||
- | CzechIdM 8.0.0 ushered in a new feature - asynchronous event processing. New event type '' | + | |
- | + | ||
- | <note important>Entity '' | + | |
- | + | ||
- | + | ||
- | ==== Features ==== | + | |
- | + | ||
- | === Event priority === | + | |
- | + | ||
- | Before event is persisted into queue, then event priority is evaluated, priority types: | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | + | ||
- | Priority can be set to event manually or registered processors can vote about event' | + | |
- | + | ||
- | === Execute date === | + | |
- | + | ||
- | Execute date can be set to event manually. Event with priority '' | + | |
- | + | ||
- | + | ||
- | === Remove duplicate events === | + | |
- | + | ||
- | When internal scheduled task for executing event from queue is processed, then duplicate events are removed. | + | |
- | + | ||
- | Duplicate event is event with the same: | + | |
- | * owner | + | |
- | * event type | + | |
- | * event properties | + | |
- | * original source (embedded dtos and audit fields are ignored). | + | |
- | + | ||
- | Older duplicate events are removed - the newest event is used. Events are processed by priority in bulk, default bulk size is **100 events** => duplicates are removed only in this bulk (not configurable for now, see future development). Bulk size is designed this way, because events are processed by priority - event with '' | + | |
- | + | ||
- | + | ||
- | === Notification === | + | |
- | + | ||
- | Notification about registered asynchronous processors is prepared, when an asynchronous event is published. Notification is send into topic '' | + | |
- | + | ||
- | ==== Configuration ==== | + | |
- | + | ||
- | * [[..: | + | |
- | * [[..: | + | |
- | * [[# | + | |
- | + | ||
- | ===== Predefined processors order ===== | + | |
- | + | ||
- | * **0** - basic / core functionality - operation '' | + | |
- | * **50** - save eav, which are send together with owner' | + | |
- | * **100** - automatic roles computation. | + | |
- | * **1000** - after '' | + | |
- | * **10000** - publish '' | + | |
- | * **-1000** - before '' | + | |
- | * **Identity**: | + | |
- | * **-2000** - validate password in acc module - checks all system password policies and idm default policy => all policies are evaluated in one request. If acc module is enabled, then core password validation processor can be disabled. | + | |
- | * **-1000** - validate password in core module - checks idm default policy. | + | |
- | * **100** - persist password | + | |
- | * **Contract**: | + | |
- | * **100** - Automatic roles recount while identity contract is saved, updated or deleted / disabled. | + | |
- | * **200** - Contract [[..: | + | |
- | * **LongRunningTask**: | + | |
- | * **100** - execute scheduled long running tasks, which depends on currently ended scheduled task. | + | |
- | * **Provisioning**: | + | |
- | * **-5000** - check disabled system | + | |
- | * **-1000** - compute attributes for provisioning (read attribute values from target system) | + | |
- | * **-500** - check readonly system | + | |
- | * **0** - execute provisioning (create / update / delete) | + | |
- | * **1000** - execute '' | + | |
- | * **5000** - archive processed provisioning operation. | + | |
- | + | ||
- | Other orders can be found directly in application, | + | |
- | + | ||
- | ===== Processor configuration ===== | + | |
- | + | ||
- | Processors can be configured through ``Configurable`` interface by standard [[..: | + |