Введение
Атрибут типа «Список значений» содержит в себе перечень значений на нескольких языках — русском, английском и немецком. При этом, нельзя напрямую получить текстовое значение атрибута.
Получить значение атрибута на определённом языке можно с помощью выражения на N3.
Кроме того, в логических операциях используются только системные имена значений атрибута.
Здесь представлен пример настройки приложения для передачи текстового значения атрибута на требуемом языке и условного перехода в процессе по значению атрибута типа «Список значений».
Прикладная задача
Имеются шаблон записи «Заявки на перевозку» и связанный с ним процесс «Обработка заявок». В шаблоне «Заявки на перевозку» есть атрибут «Тип ТС» типа «Список значений».
Требуется распределять заявки в процессе обработки в зависимости от выбранного типа ТС и отправлять задачи диспетчерам с указанием типа заказанного ТС.
Распределение заявок по значению атрибута список значений
- Создайте шаблон процесса «Обработка заявок» и связанный с ним шаблон записи «Заявки на перевозку».
- В шаблоне «Заявки на перевозку» создайте атрибут «Тип ТС» типа «Список значений».
-
Укажите следующие параметры для списка значений:
Системное имя RU bus автобус car легковой автомобиль truck грузовой автомобиль -
Создайте атрибут с указанными значениями:
Название Тип Свойства Наименование типа ТС Текст Вычислять автоматически: флажок установлен
Вычисляемое выражение: N3
-
Добавьте следующее выражение N3:
# Импортируем функции для работы с записями, строками и базой данных
@prefix object: <http://comindware.com/ontology/object#>.
@prefix cmw: <http://comindware.com/logics#>.
@prefix l10n: <http://comindware.com/ontology/l10n#>.
@prefix string: <http://www.w3.org/2000/10/swap/string#>.
@prefix cmwentity: <http://comindware.com/ontology/entity#>.
{
# Находим атрибут TipTS (Тип ТС) в шаблоне Zayavki (Заявка на перевозку).
("Zayavki" "TipTS") object:findProperty ?TipTSAttribute.
# Присваиваем переменной ?TipTSAttributeValues объект со списком значений атрибута «Тип автотранспорта».
?item ?TipTSAttribute ?TipTSAttributeValues.
# Присваиваем переменной ?SelectedValue объект с выбранным значением атрибута.
?TipTSAttributeValues cmw:variantName ?SelectedValue.
# Присваиваем переменной ?names массив объектов с заполненными названиями значения атрибута на всех языках.
?SelectedValue l10n:text ?names.
# Начинаем цикл по ?names
# Присваиваем переменной ?langCodeStr код языка названия значения атрибута на текущей итерации цикла.
?names l10n:lang ?langCode.
("{0}" ?langCode) string:format ?langCodeStr.
# Сравниваем код языка для значения атрибута с желаемым.
# "ru" — код русского языка, "en" — английского, "de" — немецкого.
?langCodeStr cmwentity:contains "ru".
# Если предыдущее предложение возвращает true, записываем значение на русском языке в вычисляемый атрибут.
?names l10n:data ?value.
# переходим к следующей итерации по ?names.
}
-
Поместите атрибуты «Тип ТС» и «Наименование типа ТС» на форму начального события.
- После начального события добавьте развилку «или/или».
- Добавьте три потока управления и присоедините к ним пользовательские задачи «Обработать заявку на автобус», «Обработать заявку на легковой автомобиль», «Обработать заявку на грузовой автомобиль».
-
В дополнительных свойствах всех задач задайте формулу для заголовка задачи:
FORMAT("Обработайте заявку на перевозку: {0}", LIST($NaimenovanietipaTS))
-
После каждой пользовательской задачи добавьте конечное событие.
-
Настройте исходящие потоки в дополнительных свойствах развилки «или/или» следующим образом:
Поток «Иначе» Конечная точка Условие Обработать заявку на автобус Формула: $TipTS == "bus"
TipTS
— системное имя атрибута «Тип ТС»Обработать заявку на легковой автомобиль Формула: $TipTS == "car"
TipTS
— системное имя атрибута «Тип ТС»Флажок установлен Обработать заявку на грузовой автомобиль -
Опубликуйте процесс.
Диаграмма процесса «Обработка заявок»
Тестирование
- Создайте заявку и выберите тип ТС «автобус».
- На странице «Мои задачи» должна появиться задача с заголовком «Обработайте заявку на перевозку: автобус».
- Создайте вторую заявку и выберите тип ТС «легковой автомобиль».
- На странице «Мои задачи» должна появиться с заголовком «Обработайте заявку на перевозку: легковой автомобиль».
- Создайте третью заявку и выберите тип ТС «грузовой автомобиль».
- На странице «Мои задачи» должна появиться задача с заголовком «Обработайте заявку на перевозку: грузовой автомобиль».
Связанные статьи
Атрибут типа «Список значений»