Дополнительные действия
AZykov (обсуждение | вклад) Нет описания правки |
AZykov (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
Предыдущая статья курса: [[Принципы разработки]] | Предыдущая статья курса: [[Принципы разработки]] | ||
= Общая информация = | |||
[[Файл:Обработчик - запуск сценария.png|мини|Редактор обработчика]] | [[Файл:Обработчик - запуск сценария.png|мини|Редактор обработчика]] | ||
'''Обработчики''' (Handlers) это элементы пакета, реализующие логику обработки событий объектов. | '''Обработчики''' (Handlers) это элементы пакета, реализующие логику обработки событий объектов. | ||
Строка 73: | Строка 74: | ||
|} | |} | ||
= Прерывание операций = | |||
Если обработчик испольует handlerAction=Code, он может прервать исполнение операции, из которой был вызван (добавление, изменение, удаление). | |||
Для этого, необходимо использовать возврат из метода обработчика: | |||
* При возврате true, обработчик не препятствует дальнейшему исполнению логики. | |||
* При возврате false, обработчик отменяет текущее действие. | |||
* При возврате строки, обработчик отменяет текущее действие, а возвращенная строка будет использоваться как сообщение об ошибке. | |||
= Параметры в методах обработчика = | |||
В коде обработчика можно обращаться к глобальному контексту исполнения через this, а также к объекту, который вызвал событие через переменную entity. | |||
Использованный ранее пример вызова служебного сценария из действия, также может быть вызван с помощью обработчика:<syntaxhighlight lang="typescript"> | |||
var result = await this.invoke( | |||
'callcenter.EraConnectorService', | |||
'ServiceScript_execute', | |||
{ code: 'test01', startparam1: entity.name }); | |||
if (result.state === EInvocationState.success) | |||
entity.address = result.response?.variables?.var; | |||
</syntaxhighlight> | |||
Здесь через this доступны методы контекста, а через entity можно получить значения свойств объекта, вызвавшего событие (например, свойство name). | |||
Версия от 12:58, 3 марта 2025
Предыдущая статья курса: Принципы разработки
Общая информация

Обработчики (Handlers) это элементы пакета, реализующие логику обработки событий объектов.
Создание новых обработчиков доступно в приложении Builder.
Для каждого обработчика задаётся класс и тип события, на которое он реагирует, а так же приоритет (в случае наличия нескольких обработчиков на одно событие), признак активности и действие, которое будет запускать обработчик при старте.
Список свойств обработчика:
Свойство | Значение по-умолчанию | Комментарий |
---|---|---|
name | Имя обработчика | |
fullName | [packageName]/[name] | Генерируется автоматически |
enabled | True | Признак активности обработчика, если False то обработчик не будет реагировать на события |
priority | 100 | Приоритет исполнения. В случае наличия нескольких обработчиков одного события, они будут исполняться в порядке возрастания приоритета. |
class_fullMultiName | fullMultiName класса, события которого будут обрабатываться | |
operationKind | Тип операции (события), которое будет обрабатываться в данном обработчике:
| |
handlerAction | Code | Тип действия, которое будет исполняться при старте обработчика:
|
scenarioCode | Только при handlerAction=svcScenario
Код служебного сценария для запуска | |
code | Только при handlerAction=code
Исходный код метода. Данный метод будет исполняться в серверном контексте | |
serviceName | Только при handlerAction=serviceMethod
Имя сервиса, который будет запущен при срабатывании обработчика | |
methodName | Только при handlerAction=serviceMethod
Метод сервиса, который будет запущен при срабатывании обработчика |
Прерывание операций
Если обработчик испольует handlerAction=Code, он может прервать исполнение операции, из которой был вызван (добавление, изменение, удаление).
Для этого, необходимо использовать возврат из метода обработчика:
- При возврате true, обработчик не препятствует дальнейшему исполнению логики.
- При возврате false, обработчик отменяет текущее действие.
- При возврате строки, обработчик отменяет текущее действие, а возвращенная строка будет использоваться как сообщение об ошибке.
Параметры в методах обработчика
В коде обработчика можно обращаться к глобальному контексту исполнения через this, а также к объекту, который вызвал событие через переменную entity.
Использованный ранее пример вызова служебного сценария из действия, также может быть вызван с помощью обработчика:
var result = await this.invoke(
'callcenter.EraConnectorService',
'ServiceScript_execute',
{ code: 'test01', startparam1: entity.name });
if (result.state === EInvocationState.success)
entity.address = result.response?.variables?.var;
Здесь через this доступны методы контекста, а через entity можно получить значения свойств объекта, вызвавшего событие (например, свойство name).
Следующая статья курса: Вычислимые поля
Предыдущая статья курса: Принципы разработки