1.6. Шина Событий¶
-
EventBus
: TbtkScriptEventBusObject¶ Объект, реализующий методы для работы с шиной событий.
Аттрибут только для чтения
Return type: TbtkScriptEventBusObject
1.6.1. TbtkScriptSelectionEventObject¶
-
class
TbtkScriptSelectionEventObject
¶ Класс события выборки. Экземпляр этого объекта автоматически создаётся для каждого события, и автоматически разрушается после обработки во всех обработчиках.
-
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: TbtkNamedArgs Attention
Значения аргументов свойства Args, доступны на запись. Это связано с особенностями реализации этого свойства. Настоятельно не рекомендуется использовать эту особенность в прикладной логике, т.к. изменения этих аргументов могут повлиять на работу ещё не вызванных обработчиков этого события. Кроме того поддержка описанного поведения не гарантируется с выходом новых версий Global.
-
Name
: String¶ Системное имя события. Указывается при отсылке.
Аттрибут только для чтения
Return type: String
-
1.6.2. 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)¶ Cинхронная отсылка сообщений.
Вызов обработчиков событий отправленных синхронно выполняется сразу при отправке.
Parameters: - TopicName (String) – Имя подписки.
- EventName (String) – Имя отправляемого события.
- EventArgs (TbtkNamedArgs) – Аргументы события. Для создания и передачи аргументов можно использовать
метод
TatInternalObject.CreateArgs
<PASCAL> //отправка события без аргументов EventBus.Send('TopicName', 'EventName'); //отправка события с аргументами EventBus.Send('TopicName', 'EventName', CreateArgs(['Arg1','Value1','Arg2','Value2'])); </PASCAL>