VariablesForUser
Руководство по работе с переменными
Версия 4.6.0
© 2015-2023, ООО "Процессные технологии"
# Обзор
Данные в экземплярах процессов хранятся в виде переменных.
Переменные определяются в среде разработки в контексте определения процесса, значения устанавливаются в контексте экземпляра процесса.
# Переменная в определении процесса
Название | Используется для ссылки на переменную, уникально в контексте процесса. |
Описание | Используется только в среде разработки для дополнительных комментариев при разработке процесса. |
Название в скриптах | Используется для ссылки на переменную при написании кода скриптов (JavaScript, Groovy, ...). Из-за ограничения идентификаторов переменных генерируется автоматически, уникально в контексте процесса. |
Тип | Тип переменной определяет:
|
Значение по умолчанию | При запуске процесса переменная будет иметь это значение. Для некоторых типов поддержка значения по умолчанию отсутствует. |
доступ | Определяет права доступа (видимость) переменной. |
# Переменная экземпляра процесса
Определение переменной | Используется для ссылки на определение переменной, заданной при разработке процесса. |
Значение | Значение переменной с областью видимости, соответствующей экземпляру процесса. |
# Строгая типизация 4.0.5+
Все переменные должны быть определены в среде разработки, а также все значения должны соответствовать определённым типам.
Замечание: В режиме обратной совместимости исполнения процессов или при соответствующей настройке свойства undefined.variables.allowed можно избавиться от необходимости определять переменные в среде разработки, а управлять их значениями либо используя обработчики, либо API.
Замечание: Тип переменной может не совпадать с ожидаемыми значениями в случае настройки свойства strong.variables.format.enabled. Свойство variables.autocast.enabled позволяет использовать автоматическое изменение типа в соответствии с определенным в среде разработки.
# Простые типы
ru.runa.wfe.var.format.BooleanFormat | java.lang.Boolean | Флаг: значение ИСТИНА или ЛОЖЬ | "true" или "false" |
ru.runa.wfe.var.format.LongFormat | java.lang.Long | Целое число | Число в строковом выражении |
ru.runa.wfe.var.format.DoubleFormat | java.lang.Double | Дробное число | Число в строковом выражении |
ru.runa.wfe.var.format.BigDecimalFormat | java.math.BigDecimal | Число повышенной точности | Число в строковом выражении |
ru.runa.wfe.var.format.DateFormat | java.util.Date | Дата | Дата в указанном формате date.format.pattern |
ru.runa.wfe.var.format.DateTimeFormat | java.util.Date | Дата со временем | Дата в указанном формате date.format.pattern, время в формате ЧЧ:ММ |
ru.runa.wfe.var.format.TimeFormat | java.util.Date | Время | Время в формате ЧЧ:ММ |
ru.runa.wfe.var.format.StringFormat | java.lang.String | Строка | Без изменений |
ru.runa.wfe.var.format.TextFormat | java.lang.String | Текст (отличается от строки только отображением на формах) | Без изменений |
ru.runa.wfe.var.format.FileFormat | ru.runa.wfe.var.FileVariable | Файл | Название файл, например "test.doc"; обратная операция не поддерживается |
ru.runa.wfe.var.format.ProcessIdFormat | java.lang.Long | Номер процесса в системе (целое число) | Число в строковом выражении |
# Типы для работы с исполнителями (пользователь, группа, исполнитель)
| |||
ru.runa.wfe.var.format.ExecutorFormat | ru.runa.wfe.user.Executor | Исполнитель (группа или пользователь системы) | JSON-объект вида
{"id": 1, "name": "Administrator", "fullName": "Adm A.A."} Для передачи данных в систему достаточно заполнять "id" или "name". |
ru.runa.wfe.var.format.GroupFormat | ru.runa.wfe.user.Group | Группа в системе | JSON-объект вида
{"id": 2, "name": "Administrators", "fullName": ""} Для передачи данных в систему достаточно заполнять "id" или "name". |
ru.runa.wfe.var.format.ActorFormat | ru.runa.wfe.user.Actor | Пользователь в системе | JSON-объект вида
{"id": 1, "name": "Administrator", "fullName": "Adm A.A."} Для передачи данных в систему достаточно заполнять "id" или "name". |
Для переменных этих трёх типов возможен доступ к полям:
| ||||
id | Идентификатор | |||
name | Уникальный логин пользователя или название группы | |||
description | Описание | |||
fullName | Ф.И.О. пользователя | |||
department | Подразделение пользователя 4.3.0+ | |||
title | Должность пользователя 4.3.0+ | |||
code | Код пользователя | |||
active | Активен ли пользователь | |||
Email пользователя | ||||
phone | Телефон пользователя | |||
ldapGroupName | Соответствие ldap группы | |||
lastName | Фамилия пользователя 4.0.6+ | |||
firstName | Имя пользователя 4.0.6+ | |||
middleName | Отчество пользователя 4.0.6+ |
Доступ к конкретнму полю осуществляется с помощью ".". Например, для получения телефона пользователя можно использовать следующий код
пользователь.phone
# Компонентные типы (контейнеры)
ru.runa.wfe.var.format.ListFormat | java.util.ArrayList | Список значений | ["value1", "value2"] |
ru.runa.wfe.var.format.MapFormat | java.util.HashMap | Карта (хеш-таблица) | {"key1": "value1", "key2": "value2"} |
ru.runa.wfe.var.format.UserTypeFormat | java.util.HashMap | Пользовательский тип с определенными атрибутами | По аналогии с MapFormat, для определённых атрибутов и соответствующих типов |
Вложенные списки и карты не поддерживаются из-за потери типизации.
# Пользовательские типы 4.1.0+
В среде разработки в контексте определения процесса можно определить новый составной тип переменной, состоящий из определенного количества именованных и типизированных атрибутов. Атрибуты, в свою очередь, могут иметь составной тип (поддерживается произвольная вложенность типов).
При доступе на сервере переменная составного типа будет иметь значение, являющееся объектом java.util.HashMap.ы