Строковые константы задаются в одинарных кавычках. Для использования одинарных кавычек внутри строковой константы, знак одинарной кавычки удваивается.
'Раздел', 'Тема: ''Для согласования''' |
Для обозначения того, что значение атрибута не определено, используется специальное значение null.
registration == null ? false : true |
Обращение к атрибуту объекта происходит по названию соответствующего Свойства схемы объекта (например, registration). Для обращения к атрибутам комплексных свойств указывается иерархический путь к атрибуту (например, registration.number.prefix).
'№' + registration.number.prefix + registration.number.number + registration.number.suffix |
Однако, если РКК не зарегистрирована, то значение атрибута registration.number будет неопределенно, и такое выражение может привести к ошибке. Чтобы этого избежать, можно использовать условный оператор, который вернет пустую строку, если номер не определен:
registration ==null ? '': registration.number==null ? '' : '№' + registration.number.prefix + registration.number.number + registration.number.suffix |
Другой способ избежать ошибок, если значения атрибутов не определены – использование «безопасной адресации». Тогда если неопределенно значение объекта, к атрибуту которого нужно обратиться, вместо ошибки будет возвращено значение Null. Для «безопасной адресации» перед точкой добавляется знак вопроса:
'№' + registration?.number?.prefix + registration?.number?.number + registration?.number?.suffix |
Операции сравнения
Операция | Равно | Не равно | Меньше | Меньше или равно | Больше | Больше или равно |
---|---|---|---|---|---|---|
Знак | == | != | < | <= | > | >= |
Буквенное выражение | eq | ne | lt | le | gt | ge |
Дополнительно могут использоваться:
|
Операция | Сложение | Вычитание | Умножение | Деление | Остаток от деления | Степень |
---|---|---|---|---|---|---|
Знак | + | - | * | / | % | ^ |
Буквенное выражение | div | mod |
Сложение может использоваться как для чисел, так и для строк. Остальные операции – только для чисел. Поддерживается стандартный порядок выполнения математических операций в выражениях. |
Логические операции
Операция | И | Или | Отрицание |
---|---|---|---|
Знак | && | || | ! |
Буквенное выражение | and | or |
<Условие> ? <Значение, если условие выполнено> : <Значение, если условие не выполнено>
Здесь описаны наиболее востребованные переменные и функции. Дополнительные возможности использования зарегистрированных функций нужно уточнять у разработчиков.
Переменная для обращения к контекстному объекту, над которым вычисляется SpEL-выражение.
Функция, определяющая наличие указанной роли у текущего пользователя в контексте указанного объекта. В качестве объекта в данный момент допустимо использовать переменную #this. Идентификатор роли передается как строковая константа. Функция возвращает значение «true» или «false».
#hasRole(#this, 'Supervisor') |
Функция, определяющая наличие у текущего пользователя системной роли «Делопроизводитель» для указанного в параметрах функции подразделения в контексте указанного объекта. В качестве объекта в данный момент допустимо использовать переменную #this. Иерархический путь к атрибуту должен указывать на атрибут с типом SOBeard, соответствующий подразделению. Если в качестве значения параметра передать значение null, то будет определено наличие роли «Делопроизводитель» для места регистрации. Функция возвращает значение «true» или «false».
#isClerk(#this,null) |
#isClerk(#this,'sending.department') |
Функция для вычисления подразделения текущего пользователя.
функция, проверяющая наличие у объекта ссылки с указанным типом отношения. В качестве объекта в данный момент допустимо использовать переменную #this. Возможные типы отношения для объекта нужно уточнять у разработчика. Функция возвращает значение «true» или «false».
Например, наличие у объекта ссылки с типом отношения «verification», говорит о том, что документ был заверен ЭП.
#hasLink(#this,'verification') |
При использовании функции нужно учесть, что могут существовать нестандартные ссылки, для которых использование функции недопустимо.
T(ru.intertrust.cmj.af.core.AFSession).get().currentUser().getBeard()
T(ru.intertrust.cmj.af.misc.AFDate).createCurrent()
функции rollYears, rollMounths, rollDays класса AFDate изменяют дату на указанное в параметре количество лет, месяцев, дней соответственно. Отрицательный параметр уменьшает дату. Доступны с версии 4.6
Пример: в поле соответствующее свойству схемы, устанавливается значение на месяц раньше текущей даты
T(ru.intertrust.cmj.af.misc.AFDate).createCurrent().rollMounths(-1)
не массив
SDepartment != null ? SDepartment.toString(T(ru.intertrust.cmj.af.so.SOBeard.ToStringFormat).CMDOMINO_STD).split('%')[0] : ''
массив, берем первый элемент списка
SDepartment != null ? T(com.google.common.collect.Lists).transform(SDepartment, T(ru.intertrust.cmj.rest.vcards.VCardResource).vcardTobeard).get(0).toString(T(ru.intertrust.cmj.af.so.SOBeard.ToStringFormat).CMDOMINO_STD).split('%')[0] : ''