4.4. События и операции#
Исторически в архитектуре oracle решения операции использовались в качестве трех ролей:
В postgres архитектуре мы говорим об операциях только как об объектах, представляющих интерфейсные элементы управления.
В ней события и сеттеры обособлены в отдельные сущности.
Однако ради совместимости с oracle архитектурой в метаданные AS события и операции от postgres решения
приходили единой коллекцией не различимых по типу объектов. А отправка событий выполнялась через вызов обработчиков операций с помощью (CoreRepController.CoreOperationExecutor
).
Начиная с версии сервера v1.23.0-rc5 новые события отправляются через диспетчер событий CoreEventDispatcher
и объявляются (именуются) в соответствие с его спецификацией.
Назначение обработчика событий возлагается на прикладной код.
Attention
Важным последствием разделения терминов операция и событие являться возможность не совпадение системного имени события и имени метода обработчика.
Note
В следующих версиях AS планируется перевести посылку всех событий на диспетчер и начать игнорировать события приходящие в метаданных в коллекции с операциями
Характеристики архитектуры событий postgres решения:
Событие отправляются через диспетчер событий
CoreEventDispatcher
.Событие определяется выполненным по флагу
CoreEvent.isHandled
.Наличие обработчика события не является обязательным условием.
Note
В старой архитектуре событие считается выполненным, если удалось вызвать обработчик события. доступность обработчика события определяется его наличием в метаданных.
Формат имени события:
full event name = [prefix, "."] name
prefix = source name
source name = application model node name
Note
source name
это компонент, отправляющий событие в диспетчер. Имя источника совпадает с узлом модели приложения компонента, для которого необходимо обработать событие.
Для обеспечения совместимости архитектур:
В метаданных приходит единая коллекция, состоящая из операций, сеттеров и обработчиков событий.
Вызов сеттеров и обработчиков событий производится через механизм вызова операций (
CoreRepController.CoreOperationExecutor
).