Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
devel:documentation:architecture:dev:events [2019/03/19 13:36]
tomiskar [Transactions]
devel:documentation:architecture:dev:events [2021/08/13 07:18] (current)
tomiskar [Entities with event support]
Line 65: Line 65:
       * adds event type ''PASSWORD\_EXPIRED'' - password expires       * adds event type ''PASSWORD\_EXPIRED'' - password expires
     * ''IdmProfileDto'' - operation with the identity profile     * ''IdmProfileDto'' - operation with the identity profile
-      * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''+      * supports base event types ''CREATE'', ''UPDATE'', ''DELETE'', ''NOTIFY''
     * ''IdmPasswordDto'' - operation with the CzechIdM password     * ''IdmPasswordDto'' - operation with the CzechIdM password
       * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''       * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''
Line 109: Line 109:
       * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''        * supports base event types ''CREATE'', ''UPDATE'', ''DELETE'' 
     * ''IdmLongRunningTaskDto'' - long running task     * ''IdmLongRunningTaskDto'' - long running task
 +      * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''
       * adds event type ''END'' - long running task ended.       * adds event type ''END'' - long running task ended.
     * ''IdmEntityEventDto'' - persisted event     * ''IdmEntityEventDto'' - persisted event
Line 120: Line 121:
       * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''       * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''
     * ''IdmCodeListItemDto'' - code list items     * ''IdmCodeListItemDto'' - code list items
 +      * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''
 +    * ''IdmNotificationTemplateDto'' - notification templates
 +      * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''
 +    * ''IdmIdentityProjectionDto'' - identity form projections
 +      * supports base event types ''CREATE'', ''UPDATE''
 +    * ''ModuleDescriptorDto'' - application modules
 +      * supports base event types ''INIT'', ''ENABLE'', ''DISABLE''
 +    * ''IdmScripDto'' - groovy scripts
 +      * supports base event types ''CREATE'', ''UPDATE'', ''DELETE'' 
 +    * ''IdmMonitoringDto'' - monitoring evaluators
 +      * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''
 +      * adds event type ''EXECUTE'' - run monitoring evaluator
 +    * ''IdmMonitoringResultDto'' - monitoring results (returned from evaluator)
       * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''       * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''
   * ''acc'':   * ''acc'':
Line 128: Line 142:
       * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''       * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''
     * ''SysSystemDto'' - System in ACC module     * ''SysSystemDto'' - System in ACC module
 +      * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''
 +    * ''SysRemoteServerDto'' - Remote server in ACC module
       * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''       * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''
     * ''SysSystemMappingDto'' - Mapping between system and his mapping of provisioning or sync     * ''SysSystemMappingDto'' - Mapping between system and his mapping of provisioning or sync
Line 139: Line 155:
       * adds event type ''CANCEL'' - cancels provisioning operation       * adds event type ''CANCEL'' - cancels provisioning operation
     * ''AbstractSysSyncConfigDto'' (''SysSyncConfigDto'', ''SysSyncContractConfigDto'', ''SysSyncIdentityConfigDto'') - synchronization     * ''AbstractSysSyncConfigDto'' (''SysSyncConfigDto'', ''SysSyncContractConfigDto'', ''SysSyncIdentityConfigDto'') - synchronization
 +      * supports base event types ''CREATE'', ''UPDATE'', ''DELETE''
       * adds event type ''START'' - starts synchronization       * adds event type ''START'' - starts synchronization
       * adds event type ''START\_ITEM'' - starts synchronization of one item (~entity)       * adds event type ''START\_ITEM'' - starts synchronization of one item (~entity)
Line 156: Line 173:
  
  
-The default order for listeners (''-'' => before, ''+'' => after)+The [[#predefined_processors_order|default order]] for listeners (''-'' => before, ''+'' => after).
-  * ''core'': **0** +
-  * ''provisioning'': **1000** +
-  * ''delete / archivate processed'': **5000**+
  
 ===== Basic interfaces ===== ===== Basic interfaces =====
Line 202: Line 216:
  
  * ''getPriority(event)'' - Registered async processor can vote about priority of processing for given event. Returns ''null'' by default => processor doesn't vote about priority - preserve original event priority. Use ''IMMEDIATE'' to execute whole event synchronously. All registered processors votes about event priority - whole event will be processed with the highest priority.  * ''getPriority(event)'' - Registered async processor can vote about priority of processing for given event. Returns ''null'' by default => processor doesn't vote about priority - preserve original event priority. Use ''IMMEDIATE'' to execute whole event synchronously. All registered processors votes about event priority - whole event will be processed with the highest priority.
 +
 +==== AbstractInitApplicationProcessor====
 +
 +Use this super class for providing application and module [[.events:init-data|init data]].
 +
 +
  
 ===== Transactions ===== ===== Transactions =====
Line 258: Line 278:
 Before event is persisted into queue, then event priority is evaluated, priority types: Before event is persisted into queue, then event priority is evaluated, priority types:
   * ''IMMEDIATE'' - immediate ~ synchronously. Event will be executed synchronously.   * ''IMMEDIATE'' - immediate ~ synchronously. Event will be executed synchronously.
-  * ''HIGH'' - asynchronously (7 / 10 in one cycle) +  * ''HIGH'' - asynchronously (7 / 10 in one cycle, batch size can be [[..:..:application_configuration:dev:backend#entity_events|configured]]
-  * ''NORMAL'' - asynchronously (3 / 10 in one cycle)+  * ''NORMAL'' - asynchronously (3 / 10 in one cycle, batch size can be [[..:..:application_configuration:dev:backend#entity_events|configured]])
  
 Events are processed from queue by internal scheduled tasks by priority. Events with ''HIGH'' priority will use 7 slots, events with ''NORMAL'' priority will use 3 slots => events will be processed **7 / 3**, when internal scheduled task for processing events will be executed. Events are processed from queue by internal scheduled tasks by priority. Events with ''HIGH'' priority will use 7 slots, events with ''NORMAL'' priority will use 3 slots => events will be processed **7 / 3**, when internal scheduled task for processing events will be executed.
Line 287: Line 307:
   * original source (embedded dtos and audit fields are ignored).   * 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 ''HIGH'' priority should not wait too long for another bulk is begin to process. Remove duplicates should be redesigned from scratch - remove duplicates through whole queue.+Older duplicate events are removed - the newest event is used. Events are processed by priority in batch, default batch size can be [[..:..:application_configuration:dev:backend#entity_events|configured]] => duplicates are removed only in this batch (not configurable for now, see future development). Batch size is designed this way, because events are processed by priority - event with ''HIGH'' priority should not wait too long for another bulk is begin to process. Remove duplicates should be redesigned from scratch - remove duplicates through whole queue.
  
 === Entity state === === Entity state ===
Line 336: Line 356:
 ===== Implemented processors ===== ===== Implemented processors =====
  
-Basic save and delete processors are not listed.+**Basic processors for simple operations (e.g. savedeleteare not listed.** All registered processors can be listed in agenda (Settings - Modules - Processors). 
 + 
 ==== Automatic roles processors ==== ==== Automatic roles processors ====
 <code properties> <code properties>
Line 749: Line 771:
 } }
 </code> </code>
 +
  
 ===== Future development ===== ===== Future development =====
  • by tomiskar