Шина Событий¶
- EventBus TbtkScriptEventBusObject ¶
Объект, реализующий методы для работы с шиной событий.
Атрибут только для чтения
- Return type:
TbtkScriptSelectionEventObject¶
- class TbtkScriptSelectionEventObject¶
Класс события выборки. Экземпляр этого объекта автоматически создаётся для каждого события, и автоматически разрушается после обработки во всех обработчиках.
Warning
Не поддерживается в Application Server
- Representation String ¶
Отображение выборки, из которой отправили сообщение. Присваивается автоматически.
Атрибут только для чтения
- Return type:
String
- EntityName String ¶
Системное имя выборки, из которой отправили сообщение. Присваивается автоматически.
Атрибут только для чтения
- Return type:
String
- SelectionId String ¶
ID выборки, из которой отправили сообщение. Присваивается автоматически.
Атрибут только для чтения
- Return type:
String
- TopicName String ¶
Имя подписки. Указываются при отсылке для персонализации получателя.
Атрибут только для чтения
- Return type:
String
- Args TbtkNamedArgs ¶
Набор именованных аргументов данного события. Может быть указано при отсылке.
- Return type:
Attention
Значения аргументов свойства Args, доступны на запись. Это связано с особенностями реализации этого свойства. Настоятельно не рекомендуется использовать эту особенность в прикладной логике, т.к. изменения этих аргументов могут повлиять на работу ещё не вызванных обработчиков этого события. Кроме того поддержка описанного поведения не гарантируется с выходом новых версий Global.
- Name String ¶
Системное имя события. Указывается при отсылке.
Атрибут только для чтения
- Return type:
String
TbtkScriptEventBusObject¶
- class TbtkScriptEventBusObject¶
Основные положения
Шина событий предназначена для обмена сообщениями между выборками, в том числе не связанными отношением мастер-деталь.
Шина событий является единой для всего приложения.
Шина событий позволяет обеспечивать взаимодействие между выборками по принципам: один к одному, один ко многим, многие к одному и многие ко многим.
Шина событий обеспечивает только однонаправленное взаимодействие, предназначенное, прежде всего, для оповещения о происходящих событиях и передачи связанных с этими событиями каких-либо данных.
У каждого события передаваемого по Шине событий может быть как множество обработчиков, так и не быть ни одного обработчика вовсе.
Обработчики событий не могут прерывать, отменять или изменять порядок вызова других обработчиков этих событий.
Порядок вызова обработчиков событий не зависит от порядка их регистрации или каких-либо свойств обработчиков, и не может изменяться каким-либо образом. При отправке событий по Шине необходимо быть уверенным в том, что порядок вызова обработчиков не играет никакой роли, и не будет сказываться на работоспособности приложения.
Возникновение исключений в обработчиках события не прерывает процесс вызова других обработчиков этого события.
Шина событий не предоставляет возможности получить информацию об обработчиках подписанных на какое-либо событие и их количестве.
- Unhook(Selection: TbtkScriptSelectionObject; FilterArgs: TbtkNamedArgs=nil)¶
Отписка от всех событий, ограниченных фильтром.
- Parameters:
Selection (
TbtkScriptSelectionObject
) – Выборка для которой осуществляется отписка.FilterArgs (
TbtkNamedArgs
) – Настройки фильтрации, для которых необходимо осуществить отписку.
Пример использования¶<PASCAL> EventBus.Unhook(Selection); //отписка от всех событий передаваемых по шине. EventBus.Unhook(Selection, CreateArgs(['EventName', 'TestEvent'])); //отписка от всех событий, ограниченные фильтром. </PASCAL>
- Unsubscribe(Selection: TbtkScriptSelectionObject; TopicName: String; FilterArgs: TbtkNamedArgs=nil)¶
Отписка от событий, по топику и фильтрам.
- Parameters:
Selection (
TbtkScriptSelectionObject
) – Выборка для которой осуществляется отписка.TopicName (
String
) – Имя подписки.FilterArgs (
TbtkNamedArgs
) – Настройки фильтрации, для которых осуществляется отписка.
Пример использования¶<PASCAL> //отписка от события без дополнительных условий фильтрации. EventBus.Unsubscribe(Selection, 'TopicX'); //отписка от события с дополнительными условиями фильтрации. EventBus.Unsubscribe(Selection, 'TestTopic', CreateArgs(['EventName', 'TestEvent'])); </PASCAL>
- Hook(Selection: TbtkScriptSelectionObject; FilterArgs: TbtkNamedArgs=nil)¶
Подписка на все события, ограниченные фильтром.
- Parameters:
Selection (
TbtkScriptSelectionObject
) – Выборка для которой осуществляется подписка.FilterArgs (
TbtkNamedArgs
) – Настройки фильтрации, для которых осуществляется подписка.
Пример использования¶<PASCAL> EventBus.Hook(Selection); //подписка на все события передаваемые по шине. EventBus.Hook(Selection, CreateArgs(['EventName', 'TestEvent'])); //подписка на все события, ограниченные фильтром. </PASCAL>
- Subscribe(Selection: TbtkScriptSelectionObject; TopicName: String; FilterArgs: TbtkNamedArgs=nil)¶
Подписка на события для конкретного топика.
- Parameters:
Selection (
TbtkScriptSelectionObject
) – Выборка для которой осуществляется подписка.TopicName (
String
) – Имя подписки.FilterArgs (
TbtkNamedArgs
) – Настройки фильтрации, для которых осуществляется подписка.
Пример использования¶<PASCAL> //подписка на событие без дополнительных условий фильтрации EventBus.Subscribe(Selection, 'TopicX'); //подписка на событие с дополнительными условиями фильтрации EventBus.Subscribe(Selection, 'TestTopic', CreateArgs(['EventName', 'TestEvent'])); </PASCAL>
- Post(TopicName, EventName: String; EventArgs: TbtkNamedArgs=nil)¶
Асинхронная отсылка сообщений.
Вызов обработчиков событий отправленных асинхронно, откладывается и выполняется с помощью асинхронных команд.
- Parameters:
TopicName (
String
) – Имя подписки.EventName (
String
) – Имя отправляемого события.EventArgs (
TbtkNamedArgs
) – Аргументы события. Для создания и передачи аргументов можно использовать методTatInternalObject.CreateArgs
Пример использования¶<PASCAL> //отправка события без аргументов EventBus.Post('TopicName', 'EventName'); //отправка события с аргументами EventBus.Post('TopicName', 'EventName', CreateArgs(['Arg1','Value1','Arg2','Value2'])); </PASCAL>
- Send(TopicName, EventName: String; EventArgs: TbtkNamedArgs=nil)¶
Синхронная отсылка сообщений.
Вызов обработчиков событий отправленных синхронно выполняется сразу при отправке.
- Parameters:
TopicName (
String
) – Имя подписки.EventName (
String
) – Имя отправляемого события.EventArgs (
TbtkNamedArgs
) – Аргументы события. Для создания и передачи аргументов можно использовать методTatInternalObject.CreateArgs
Пример использования¶<PASCAL> //отправка события без аргументов EventBus.Send('TopicName', 'EventName'); //отправка события с аргументами EventBus.Send('TopicName', 'EventName', CreateArgs(['Arg1','Value1','Arg2','Value2'])); </PASCAL>