-
Kernel
-
Plugins
-
Release Notes
Kernel
Plugins
Release Notes
Может использоваться для обработки связанных с процессом событий в простых типовых случаях, без необходимости написания Java кода. Позволяет гибко ограничивать в конфигурации правила правки процессов и автоматически выполняемые с ними операции.
Реализуется одним или несколькими правилами в конфигурации типа процесса вида:
onProcessEvent.<n>.events=<events> onProcessEvent.<n>.eventsExclude=<eventsExclude> # if the class if defined, then the rest of keys are not used onProcessEvent.<n>.class=<className> # обязателен хотя бы один из двух onProcessEvent.<n>.doExpression=<doExpression> onProcessEvent.<n>.commands=<commands> # необязательные параметры onProcessEvent.<n>.ifExpression=<ifExpression> onProcessEvent.<n>.checkExpression=<checkExpression> onProcessEvent.<n>.checkErrorMessage=<checkErrorMessage>
Где:
<n> - ordered int rule’s number;
<events> - обрабатываемые правилом события через точку с запятой, если параметр не указывается - то обрабатываются все события связанные с данным типом процесса;
<eventsExclude> - исключаемые из обработки правилом события через точку с запятой, если параметр не указывается - то никакие событие не исключаются;
<className> - Custom class implementing org.bgerp.app.event.iface.EventListener and performing all the logic;
<ifExpression> - JEXL выражение проверки условия при котором отрабатывают команды макроса;
<checkExpression> - JEXL выражение проверки условия при невыполнении которого генерируется ошибка <checkErrorMessage>, используется только с checkErrorMessage;
<checkErrorMessage> - текст ошибки, сообщаемой при невыполнении условия <checkExpression>;
<doExpression> - выполняемый JEXL скрипт;
<commands> - deprecated way, команды макроса обработки;
В <events> поддержаны следующие события:
Event | Description | event class |
---|---|---|
statusChanging:<statusIds> |
Cтатус изменяется на одно на одно из значений, коды которых указаны через запятую в <statusIds> |
|
descriptionAdding |
В описание процесса добавляется текст. |
|
descriptionChanging |
Описание процесса изменяется целиком. |
|
executorsChanging |
Изменяются исполнители процесса. |
|
linkAdding |
К процессу добавляется привязка. |
|
linkRemoving |
Удаляется привязка процесса. |
|
paramChanging:<paramIds> |
Изменяется параметр процесса, код которого указан через запятую в <paramIds>. |
|
statusChanged:<statusIds> |
Cтатус изменился на одно из значений, коды которых указаны через запятую в <statusIds> |
|
created |
Process was created. |
|
createFinished |
Завершено создание процесса в мастере |
|
createdAsLink |
Процесс создан как привязанный к другому процессу. |
|
removed |
Process was removed. |
|
descriptionAdded |
В описание процесса добавлен текст. |
|
descriptionChanged |
Описание процесса изменилось целиком. |
|
executorsChanged |
Изменились исполнители процесса. |
|
linkAdded |
К процессу добавлена привязка. |
|
linkRemoved |
Удалена привязка процесса. |
|
messageAdded |
В процесс поступило новое сообщение. |
|
paramChanged:<paramIds> |
Изменился параметр процесса, код которого указан через запятую в <paramIds>. |
События *ing отличаются от *ed событий тем, что они гененрируются до момента записи в БД.
Правила просматриваются в порядке их номеров. Первое правило выдавшее сообщение прерывает просмотр и отменяет изменение связанное с процессом.
В JEXL процессор передаётся standard context for process плюс:
event - объект события, расширяющий класс ru.bgcrm.event.UserEvent
Depending on enabled plugins passed the following variables:
bgbilling - object of class ru.bgcrm.plugin.bgbilling.ExpressionObject
email - object of class org.bgerp.plugin.msg.email.ExpressionObject
mobile - object of class ru.bgcrm.plugin.mobile.ExpressionObject
secret - object of class org.bgerp.plugin.sec.secret.ExpressionObject
slack - object of class ru.bgcrm.plugin.slack.ExpressionObject
sms - object of class org.bgerp.plugin.msg.sms.ExpressionObject
task - object of class ru.bgcrm.plugin.task.ExpressionObject
telegram - object of class org.bgerp.plugin.telegram.ExpressionObject
Более гибким и рекомендуемым способом выполнения команд является использование JEXL выражений с помощью doExpression. Обратите внимание на примеры. Значительная часть команд ядра может быть заменена вызовами функций из ru.bgcrm.dao.expression.ProcessChangeExpressionObject. |
В <commands> указывается макрос обработки процесса, состоящий из команд, разделённых точкой с запятой.
Все команды макроса выполняются последовательно и в рамках текущей транзакции. Ошибка в любой из команд прерывает текущую транзакцию, откатывая внесённые в БД изменения.
Уведомить о изменение процесса исполнителей, за исключением пользователя, иницировавшего событие, посредством сообщения (простого или всплывающего) в новости.
<subject> - начало темы новости, если не указано - то "Изменился процесс".
Установить статус процесса, код которого указан в <statusId>.
Устарел, использовать ru.bgcrm.dao.expression.ProcessChangeExpressionObject. |
Перейти в текущую открытую очередь процессов и обновить её. Команда на браузер пользователя.
Создание привязанного к данному процессу процесса. <configId> - код правила создания связанного процесса.
Устарели, использовать JEXL скрипты по образцу. |