Может использоваться для обработки связанных с процессом событий в простых типовых случаях, без необходимости написания Java кода. Позволяет гибко ограничивать в конфигурации правила правки процессов и автоматически выполняемые с ними операции.
Реализуется одним или несколькими правилами в конфигурации типа процесса вида:
onProcessEvent.<N>.events=<EVENTS> onProcessEvent.<N>.eventsExclude=<EVENTS_EXCLUDE> # if the class if defined, then the rest of keys is not used onProcessEvent.<N>.class=<CLASS_NAME> onProcessEvent.<N>.doExpression=<DO_EXPRESSION> # deprecated onProcessEvent.<N>.commands=<COMMANDS> # optional onProcessEvent.<N>.ifExpression=<IF_EXPRESSION> onProcessEvent.<N>.checkExpression=<CHECK_EXPRESSION> onProcessEvent.<N>.checkErrorMessage=<CHECK_ERROR_MESSAGE>
Где:
<N> - ordered int rule’s number;
<EVENTS> - обрабатываемые правилом события через точку с запятой, если параметр не указывается - то обрабатываются все события связанные с данным типом процесса;
<EVENTS_EXCLUDE> - исключаемые из обработки правилом события через точку с запятой, если параметр не указывается - то никакие событие не исключаются;
<CLASS_NAME> - Custom class implementing org.bgerp.app.event.iface.EventListener and performing all the logic;
<IF_EXPRESSION> - JEXL выражение проверки условия при котором отрабатывают команды макроса;
<CHECK_EXPRESSION> - JEXL выражение проверки условия при невыполнении которого генерируется ошибка <CHECK_ERROR_MESSAGE>, используется только с checkErrorMessage;
<CHECK_ERROR_MESSAGE> - текст ошибки, сообщаемой при невыполнении условия <CHECK_EXPRESSION>;
<DO_EXPRESSION> - выполняемый JEXL скрипт;
<COMMANDS> - deprecated way, команды макроса обработки;
В <EVENTS> поддержаны следующие события:
| Event | Description | event class |
|---|---|---|
|
statusChanging:<STATUS_IDS> |
Cтатус изменяется на одно на одно из значений, коды которых указаны через запятую в <STATUS_IDS> |
|
|
descriptionAdding |
В описание процесса добавляется текст. |
|
|
descriptionChanging |
Описание процесса изменяется целиком. |
|
|
executorsChanging |
Изменяются исполнители процесса. |
|
|
linkAdding |
К процессу добавляется привязка. |
|
|
linkRemoving |
Удаляется привязка процесса. |
|
|
paramChanging:<PARAM_IDS> |
Изменяется параметр процесса, код которого указан через запятую в <PARAM_IDS>. |
|
|
statusChanged:<STATUS_IDS> |
Cтатус изменился на одно из значений, коды которых указаны через запятую в <STATUS_IDS> |
|
|
created |
Process was created. |
|
|
createFinished |
Завершено создание процесса в мастере |
|
|
createdAsLink |
Процесс создан как привязанный к другому процессу. |
|
|
removed |
Process was removed. |
|
|
descriptionAdded |
В описание процесса добавлен текст. |
|
|
descriptionChanged |
Описание процесса изменилось целиком. |
|
|
executorsChanged |
Изменились исполнители процесса. |
|
|
linkAdded |
К процессу добавлена привязка. |
|
|
linkRemoved |
Удалена привязка процесса. |
|
|
messageAdded |
В процесс поступило новое сообщение. |
|
|
paramChanged:<PARAM_IDS> |
Изменился параметр процесса, код которого указан через запятую в <PARAM_IDS>. |
События *ing отличаются от *ed событий тем, что они гененрируются до момента записи в БД.
Правила просматриваются в порядке их номеров. Первое правило выдавшее сообщение прерывает просмотр и отменяет изменение связанное с процессом.
JEXL processor becomes Standard Process Context plus:
event - the events' class, extends org.bgerp.event.base.UserEvent
|
Более гибким и рекомендуемым способом выполнения команд является использование JEXL выражений с помощью doExpression. Обратите внимание на примеры. Значительная часть команд ядра может быть заменена вызовами функций из org.bgerp.dao.expression.ProcessChangeExpressionObject. |
В <COMMANDS> указывается макрос обработки процесса, состоящий из команд, разделённых точкой с запятой.
Все команды макроса выполняются последовательно и в рамках текущей транзакции. Ошибка в любой из команд прерывает текущую транзакцию, откатывая внесённые в БД изменения.
Уведомить о изменение процесса исполнителей, за исключением пользователя, иницировавшего событие, посредством сообщения (простого или всплывающего) в новости.
<SUBJECT> - начало темы новости, если не указано - то "Изменился процесс".
Установить статус процесса, код которого указан в <STATUS_ID>.
| Устарел, использовать org.bgerp.dao.expression.ProcessChangeExpressionObject. |
Перейти в текущую открытую очередь процессов и обновить её. Команда на браузер пользователя.
Создание привязанного к данному процессу процесса. <CONFIG_ID> - код правила создания связанного процесса.
| Устарели, использовать JEXL скрипты по образцу. |