.. _operations: События и операции ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Исторически в архитектуре :term:`oracle решения` :term:`операции<Операция>` использовались в качестве трех ролей: * :term:`События<Событие>` * :term:`Сеттеры<Сеттер>` * Пользовательские элементы управления В :term:`postgres` архитектуре мы говорим об операциях только как об объектах, представляющих интерфейсные элементы управления. В ней :term:`события<Событие>` и :term:`сеттеры<Сеттер>` обособлены в отдельные сущности. Однако ради совместимости с oracle архитектурой в метаданные :term:`AS` события и операции от :term:`postgres решения` приходили единой коллекцией не различимых по типу объектов. А *отправка* событий выполнялась через *вызов* обработчиков операций с помощью (:java:type:`CoreRepController.CoreOperationExecutor`). Начиная с версии сервера `v1.23.0-rc5` новые события отправляются через диспетчер событий :java:type:`CoreEventDispatcher` и объявляются (именуются) в соответствие с его спецификацией. Назначение обработчика событий возлагается на :term:`прикладной код`. .. attention:: Важным последствием разделения терминов операция и событие являться возможность не совпадение системного имени события и имени метода обработчика. .. note:: В следующих версиях :term:`AS` планируется перевести посылку всех событий на диспетчер и начать игнорировать события приходящие в метаданных в коллекции с операциями Характеристики архитектуры событий :term:`postgres решения`: * Событие отправляются через диспетчер событий :java:type:`CoreEventDispatcher`. * Событие определяется выполненным по флагу :java:meth:`CoreEvent.isHandled`. * Наличие обработчика события не является обязательным условием. .. note:: В старой архитектуре событие считается выполненным, если удалось вызвать обработчик события. доступность обработчика события определяется его наличием в метаданных. Формат имени события: .. code-block:: EBNF :caption: Определение имени события по системе EBNF full event name ::= [prefix, "."] name prefix ::= source_name source name ::= application_model_node_name .. note:: ``source name`` это компонент, отправляющий событие в диспетчер. Имя источника совпадает с узлом модели приложения компонента, для которого необходимо обработать событие. Для обеспечения совместимости архитектур: * В метаданных приходит единая коллекция, состоящая из операций, сеттеров и обработчиков событий. * Вызов сеттеров и обработчиков событий производится через механизм вызова операций (:java:type:`CoreRepController.CoreOperationExecutor`). .. toctree:: :glob: event_sequence.rst event_reference.rst predefined_operations.rst operation_props.rst