Перейти к содержанию

Статья для предыдущей поддерживаемой версии ПО — 4.7!

Текущая рекомендованная версия — Comindware Platform 5.0. См. документацию к версии 5.0.

Атрибут типа «Список значений». Вычисление значения с помощью N3 и формул

Введение

Атрибут типа «Список значений» содержит в себе перечень значений на нескольких языках — русском, английском и немецком. При этом, нельзя напрямую получить текстовое значение атрибута.

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

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

Здесь представлен пример настройки приложения для передачи текстового значения атрибута на требуемом языке и условного перехода в процессе по значению атрибута типа «Список значений».

Прикладная задача

Имеются шаблон записи «Заявки на перевозку» и связанный с ним процесс «Обработка заявок». В шаблоне «Заявки на перевозку» есть атрибут «Тип ТС» типа «Список значений».

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

Распределение заявок по значению атрибута список значений

  1. Создайте шаблон процесса «Обработка заявок» и связанный с ним шаблон записи «Заявки на перевозку».
  2. В шаблоне «Заявки на перевозку» создайте атрибут «Тип ТС» типа «Список значений».
  3. Укажите следующие параметры для списка значений:

    Системное имя RU
    bus автобус
    car легковой автомобиль
    truck грузовой автомобиль
  4. Создайте атрибут с указанными значениями:

    Название Тип Свойства
    Наименование типа ТС Текст

    Вычислять автоматически: флажок установлен

    Вычисляемое выражение: N3

  5. Добавьте следующее выражение 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.
    }
  6. Поместите атрибуты «Тип ТС» и «Наименование типа ТС» на форму начального события.

  7. После начального события добавьте развилку «или/или».
  8. Добавьте три потока управления и присоедините к ним пользовательские задачи «Обработать заявку на автобус», «Обработать заявку на легковой автомобиль», «Обработать заявку на грузовой автомобиль».
  9. В дополнительных свойствах всех задач задайте формулу для заголовка задачи:

    FORMAT("Обработайте заявку на перевозку: {0}", LIST($NaimenovanietipaTS))
  10. После каждой пользовательской задачи добавьте конечное событие.

  11. Настройте исходящие потоки в дополнительных свойствах развилки «или/или» следующим образом:

    Поток «Иначе» Конечная точка Условие
      Обработать заявку на автобус Формула: $TipTS == "bus"
    TipTS — системное имя атрибута «Тип ТС»
      Обработать заявку на легковой автомобиль Формула: $TipTS == "car"
    TipTS — системное имя атрибута «Тип ТС»
    Флажок установлен Обработать заявку на грузовой автомобиль  
  12. Опубликуйте процесс.

Диаграмма процесса «Обработка заявок»

Диаграмма процесса «Обработка заявок»

Тестирование

  1. Создайте заявку и выберите тип ТС «автобус».
  2. На странице «Мои задачи» должна появиться задача с заголовком «Обработайте заявку на перевозку: автобус».
  3. Создайте вторую заявку и выберите тип ТС «легковой автомобиль».
  4. На странице «Мои задачи» должна появиться с заголовком «Обработайте заявку на перевозку: легковой автомобиль».
  5. Создайте третью заявку и выберите тип ТС «грузовой автомобиль».
  6. На странице «Мои задачи» должна появиться задача с заголовком «Обработайте заявку на перевозку: грузовой автомобиль».

Связанные статьи

Атрибут типа «Список значений»

Написание выражений на языке N3

Список функций языка формул Comindware

К началу