Дополнительные действия
AZykov (обсуждение | вклад) Новая страница: « Предыдущая статья курса: Принципы разработки Следующая статья курса: Вычислимые поля Предыдущая статья курса: Принципы разработки» |
AZykov (обсуждение | вклад) Нет описания правки |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
Предыдущая статья курса: [[Принципы разработки]] | Предыдущая статья курса: [[Принципы разработки]] | ||
= Общая информация = | |||
[[Файл:Обработчик - запуск сценария.png|мини|Редактор обработчика]] | |||
'''Обработчики''' (Handlers) это элементы пакета, реализующие логику обработки событий объектов. | |||
Создание новых обработчиков доступно в приложении Builder. | |||
Для каждого обработчика задаётся класс и тип события, на которое он реагирует, а так же приоритет (в случае наличия нескольких обработчиков на одно событие), признак активности и действие, которое будет запускать обработчик при старте. | |||
Список свойств обработчика: | |||
{| class="wikitable" | |||
|+Свойства обработчика | |||
!Свойство | |||
!Значение по-умолчанию | |||
!Комментарий | |||
|- | |||
|name | |||
| | |||
|Имя обработчика | |||
|- | |||
|fullName | |||
|[packageName]/[name] | |||
|Генерируется автоматически | |||
|- | |||
|enabled | |||
|True | |||
|Признак активности обработчика, если False то обработчик не будет реагировать на события | |||
|- | |||
|priority | |||
|100 | |||
|Приоритет исполнения. В случае наличия нескольких обработчиков одного события, они будут исполняться в порядке '''возрастания''' приоритета. | |||
|- | |||
|class_fullMultiName | |||
| | |||
|fullMultiName класса, события которого будут обрабатываться | |||
|- | |||
|operationKind | |||
| | |||
|Тип операции (события), которое будет обрабатываться в данном обработчике: | |||
* insert - при добавлении объекта класса | |||
* modify - при изменении объекта класса | |||
* delete - при удалении объекта класса | |||
|- | |||
|handlerAction | |||
|Code | |||
|Тип действия, которое будет исполняться при старте обработчика: | |||
* code - исходный код, в серверном контексте | |||
* svcScenario - служебный сценарий | |||
* serviceMethod - метод сервиса | |||
|- | |||
|scenarioCode | |||
| | |||
|Только при handlerAction=svcScenario | |||
Код служебного сценария для запуска | |||
|- | |||
|code | |||
| | |||
|Только при handlerAction=code | |||
Исходный код метода. Данный метод будет исполняться в серверном контексте | |||
|- | |||
|serviceName | |||
| | |||
|Только при handlerAction=serviceMethod | |||
Имя сервиса, который будет запущен при срабатывании обработчика | |||
|- | |||
|methodName | |||
| | |||
|Только при handlerAction=serviceMethod | |||
Метод сервиса, который будет запущен при срабатывании обработчика | |||
|} | |||
= Прерывание операций = | |||
Если обработчик испольует 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). | |||
Строка 11: | Строка 100: | ||
Предыдущая статья курса: [[Принципы разработки]] | Предыдущая статья курса: [[Принципы разработки]] | ||
[[Категория:Курс "Разработка приложений"]] |
Текущая версия от 13:12, 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).
Следующая статья курса: Вычислимые поля
Предыдущая статья курса: Принципы разработки