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
Last revision Both sides next revision
devel:documentation:architecture:dev:events [2019/03/19 13:36]
tomiskar [Transactions]
devel:documentation:architecture:dev:events [2021/06/29 09:52]
127.0.0.1 external edit
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