Может использоваться для обработки связанных с процессом событий в простых типовых случаях, без необходимости написания 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>

ru.bgcrm.event.process.ProcessChangingEvent

descriptionAdding

В описание процесса добавляется текст.

ru.bgcrm.event.process.ProcessChangingEvent

descriptionChanging

Описание процесса изменяется целиком.

ru.bgcrm.event.process.ProcessChangingEvent

executorsChanging

Изменяются исполнители процесса.

ru.bgcrm.event.process.ProcessChangingEvent

linkAdding

К процессу добавляется привязка.

ru.bgcrm.event.link.LinkAddingEvent

linkRemoving

Удаляется привязка процесса.

ru.bgcrm.event.link.LinkRemovingEvent

paramChanging:<PARAM_IDS>

Изменяется параметр процесса, код которого указан через запятую в <PARAM_IDS>.

ru.bgcrm.event.ParamChangingEvent

statusChanged:<STATUS_IDS>

Cтатус изменился на одно из значений, коды которых указаны через запятую в <STATUS_IDS>

ru.bgcrm.event.process.ProcessChangedEvent

created

Process was created.

ru.bgcrm.event.process.ProcessChangedEvent

createFinished

Завершено создание процесса в мастере

ru.bgcrm.event.process.ProcessChangedEvent

createdAsLink

Процесс создан как привязанный к другому процессу.

ru.bgcrm.event.process.ProcessCreatedAsLinkEvent

removed

Process was removed.

ru.bgcrm.event.process.ProcessRemovedEvent

descriptionAdded

В описание процесса добавлен текст.

ru.bgcrm.event.process.ProcessChangedEvent

descriptionChanged

Описание процесса изменилось целиком.

ru.bgcrm.event.process.ProcessChangedEvent

executorsChanged

Изменились исполнители процесса.

ru.bgcrm.event.process.ProcessChangedEvent

linkAdded

К процессу добавлена привязка.

ru.bgcrm.event.link.LinkAddedEvent

linkRemoved

Удалена привязка процесса.

ru.bgcrm.event.link.LinkRemovedEvent

messageAdded

В процесс поступило новое сообщение.

ru.bgcrm.event.process.ProcessMessageAddedEvent

paramChanged:<PARAM_IDS>

Изменился параметр процесса, код которого указан через запятую в <PARAM_IDS>.

ru.bgcrm.event.ParamChangedEvent

События *ing отличаются от *ed событий тем, что они гененрируются до момента записи в БД.

Правила просматриваются в порядке их номеров. Первое правило выдавшее сообщение прерывает просмотр и отменяет изменение связанное с процессом.

JEXL

JEXL processor becomes Standard Process Context plus:

Commands (Deprecated)

Более гибким и рекомендуемым способом выполнения команд является использование JEXL выражений с помощью doExpression. Обратите внимание на примеры. Значительная часть команд ядра может быть заменена вызовами функций из org.bgerp.dao.expression.ProcessChangeExpressionObject.

В <COMMANDS> указывается макрос обработки процесса, состоящий из команд, разделённых точкой с запятой.

Все команды макроса выполняются последовательно и в рамках текущей транзакции. Ошибка в любой из команд прерывает текущую транзакцию, откатывая внесённые в БД изменения.

Команды в ядре

newsNotifyExecutors:<SUBJECT> либо newsPopupNotifyExecutors:<SUBJECT>

Уведомить о изменение процесса исполнителей, за исключением пользователя, иницировавшего событие, посредством сообщения (простого или всплывающего) в новости.

  • <SUBJECT> - начало темы новости, если не указано - то "Изменился процесс".

clearGroups

Очистить список групп процесса.

clearExecutors

Очистить список исполнителей процесса.

setStatus:<STATUS_ID>

Установить статус процесса, код которого указан в <STATUS_ID>.

Устарел, использовать org.bgerp.dao.expression.ProcessChangeExpressionObject.

refreshCurrentQueue

Перейти в текущую открытую очередь процессов и обновить её. Команда на браузер пользователя.

open

Открыть или обновить карточку обрабатываемого процесса. Команда на браузер пользователя.

close

Закрыть карточку обрабатываемого процесса. Команда на браузер пользователя.

createProcessLink:<CONFIG_ID>

Создание привязанного к данному процессу процесса. <CONFIG_ID> - код правила создания связанного процесса.

Команды плагина BGBilling

Устарели, использовать JEXL скрипты по образцу.

Примеры