Поддерживаемые объекты JEXL

Набор объектов зависит от места выполнения выражения. Ниже описан контекст событий процесса, который формирует DefaultProcessChangeListener.getProcessJexlContext. Задачи процесса используют близкий, но не полностью идентичный набор; отличия приведены в документации Process Task.

Основные объекты

Имя Тип Назначение

user

ru.bgcrm.model.user.User

Текущий пользователь

userParam

ru.bgcrm.dao.expression.ParamValueFunction

Чтение параметров текущего пользователя

process

ru.bgcrm.model.process.Process

Текущий процесс

processParam

ru.bgcrm.dao.expression.ParamValueFunction

Чтение параметров текущего процесса

processLink

ru.bgcrm.dao.expression.ProcessLinkFunction

Чтение привязок процесса

context

ru.bgcrm.context.core.ServerContext

Текущий серверный контекст

processService

ru.bgcrm.model.process.service.ProcessService

Чтение и изменение процесса с проверками и событиями

parameterService

ru.bgcrm.model.param.service.ParameterService

Чтение и изменение параметров с проверками и событиями

processTask, processTaskService

ru.bgcrm.core.task.process.ProcessTaskService

Планирование и управление задачами процесса; оба имени указывают на один сервис

conSet

ru.bgcrm.util.sql.ConnectionSet

Соединения текущего контекста

form

ru.bgcrm.struts.form.DynActionForm

Данные текущего запроса и пользователь

event

Наследник ru.bgcrm.event.UserEvent

Текущее событие

paramRepo

ru.bgcrm.dao.ParamValueDAO

Устаревший прямой доступ к параметрам, оставленный для совместимости

для новой логики записи используйте processService и parameterService. Прямой paramRepo не публикует сервисные события и может обойти проверки.

Методы ProcessChangeFunctions подключены как пространство имён по умолчанию, поэтому их можно вызывать без имени объекта.

Значения параметров процесса

Для каждого параметра, объявленного у типа процесса, доступны две переменные:

  • param<id> — отображаемое строковое значение;

  • paramValue<id> — типизированное значение.

Например, param63 содержит текст для показа, а paramValue63 — значение в типе, соответствующем параметру 63.

Загрузка может быть ленивой, если включена настройка jexl.feature.lazyProcessParams. Это не меняет имена и результат выражения: значение загружается при первом обращении в рамках одного JEXL-контекста.

Общие функции и константы

Имя Значение

u

Статические методы ru.bgcrm.util.Utils

tu

Статические методы ru.bgcrm.util.TimeUtils

su

Статические методы org.apache.commons.lang.StringUtils

cu

Статические методы org.apache.commons.collections.CollectionUtils

contextProcessUtils

Статические методы ru.bgcrm.util.ProcessUtils

NEW_LINE

Один перевод строки

NEW_LINE2

Два перевода строки

log

Буфер диагностического вывода JEXL

Справочники request-контекста

SetRequestParamsFilter добавляет справочники, доступные в текущем запросе. Их наличие зависит от точки запуска и инициализации HTTP request.

Чаще всего доступны:

  • ctxSetup — глобальная конфигурация;

  • ctxUser, ctxUserList, ctxUserMap — текущий пользователь и справочник пользователей;

  • ctxUserGroupList, ctxUserGroupMap — группы пользователей;

  • ctxUserGroupFullTitledList, ctxUserGroupFullTitledMap — группы с полным путём в названии;

  • ctxUserGroupRoleList, ctxUserGroupRoleMap — роли групп в процессах;

  • ctxCustomerGroupList, ctxCustomerGroupMap — группы контрагентов;

  • ctxProcessTypeMap — типы процессов;

  • ctxProcessStatusList, ctxProcessStatusMap — статусы процессов;

  • ctxParameterMap — определения параметров.

Не полагайтесь на request-объекты в фоновой задаче: перед использованием проверьте контекст конкретного executor.

Дополнительные значения

Обработчики BuildJexlContextEvent могут добавить собственные значения. Штатный контекст накладывается после пользовательского, поэтому системные ключи переопределить нельзя.

Выбирайте уникальные имена с префиксом подсистемы и документируйте тип объекта. Не помещайте в контекст открытые JDBC-соединения, секреты или объекты с жизненным циклом дольше текущего ServerContext.