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

Урок 7. Автоматические вычисления

Введение

В ходе этого урока вы научитесь настраивать вычисляемые атрибуты и использовать язык формул, чтобы сделать данные в заявках более наглядными и повысить эффективность бизнес-процесса: показать имя Заказчика и дату заявки, рассчитать итоговую стоимость и статус заявки, сформировать названия задач.

Предусловие: пройден урок 6 «Усовершенствованный процесс».

Расчётная продолжительность: 100 мин.

Примечание

В данном уроке представлен продукт Comindware Platform версии 5.0, внешний вид страниц и меню в других версиях продукта может отличаться.

Автоматическое вычисление значений атрибутов

Бизнес-логика

Пользователям удобно идентифицировать заявки по номеру и дате.

Секретарю при рассмотрении заявки требуется знать, кто является Заказчиком, чтобы решить, следует ли выделять машину.

Для учёта расходов необходимо подсчитать итоговую сумму затрат за рейс.

Реализуем эти возможности:

  • Для номера заявки определим формат, по которому номер будет формироваться автоматически.

  • Дата заявки — это дата запуска процесса. Это значение присваивается автоматически системному атрибуту «Дата создания» каждой записи. Имя Заказчика хранится в системном атрибуте «Создатель». Вынесем эти атрибуты на форму заявки.

  • Для расчета итоговой суммы затрат зададим формулу.

Отображение Ф. И. О. Заказчика и даты создания заявки

  1. Перейдите на вкладку «Формы» шаблона записи «Заявки на автомобили».
  2. Откройте конструктор формы «Заявки на автомобили - Основная форма».
  3. Разверните элемент «Создатель» на панели элементов.
  4. Перетащите на макет формы атрибут «Ф. И. О.».
  5. Сверните элемент «Создатель» на панели элементов.
  6. Перетащите на макет формы атрибут «Дата создания» шаблона «Заявки на автомобили».
  7. Сохраните форму.

Добавление атрибутов на форму заявки на автомобиль

Добавление атрибутов на форму заявки на автомобиль

Вычисление итоговой суммы затрат

Настроим автоматическое вычисление итоговой суммы затрат.

Для этого в свойствах атрибута «Итоговая сумма затрат» установим флажок «Вычислять автоматически», затем зададим формулу для вычисления значения атрибута. Для составления формулы воспользуемся редактором выражений и предиктивным вводом.

Внимание!

В формулах необходимо указывать те системные имена, которые вы фактически использовали в своём приложении.

Например, если вы присвоили шаблону «Затраты» системное имя Затраты123, то именно это имя следует использовать в формуле.

То есть, если системные имена, приведённые в уроках, не совпадают с фактическими системными именами в вашем приложении, используйте фактические системные имена, а не копируйте их из текста уроков.

Примечание

Подробные сведения о составлении формул см. в разделе «Язык формул».

  1. Перейдите к диаграмме процесса «Заказ автотранспорта».
  2. Нажмите кнопку «Редактировать».
  3. Выберите задачу «Выполнить рейс».
  4. В меню элемента нажмите кнопку «Форма» .
  5. В конструкторе формы задачи разверните элемент «Заявки на автомобили» на панели элементов.
  6. Нажмите кнопку «Редактировать» у атрибута «Итоговая сумма затрат».
  7. В окне свойств атрибута установите флажок «Вычислять автоматически».
  8. В поле «Вычисляемое выражение» нажмите кнопку «Открыть в редакторе» .
  9. В редакторе выражений введите функцию: SUM().
  10. Установив курсор внутри скобок функции SUM(), нажмите клавиши Ctrl+Пробел (Windows и Linux) или Cmd+Пробел (macOS).
  11. В отобразившемся раскрывающемся списке дважды нажмите пункт Затраты со значком .

    Вставка заготовки запроса from-where-select для шаблона «Затраты» в качестве аргумента функции SUM()
    Вставка заготовки запроса from-where-select для шаблона «Затраты» в качестве аргумента функции SUM()
  12. В формулу будет вставлена заготовка запроса записей из шаблона «Затраты»: from a in db->Затраты where Ваше условие select a->id.

    Заготовки запроса from-where-select для шаблона «Затраты»
    Заготовки запроса from-where-select для шаблона «Затраты»
  13. Замените строку Ваше условие на a-> и нажмите клавиши Ctrl+Пробел (Windows и Linux) или Cmd+Пробел (macOS).

  14. В отобразившемся раскрывающемся списке дважды нажмите пункт Заявка.
  15. В формулу будет вставлено системное имя атрибута Заявка шаблона «Затраты».

    Вставка в выражение системного имени атрибута «Заявка» шаблона «Затраты»
    Вставка в выражение системного имени атрибута «Заявка» шаблона «Затраты»
  16. После системного имени Заявка введите строку == $.

  17. В отобразившемся раскрывающемся списке дважды нажмите пункт id.
  18. В формулу будет вставлено системное имя id атрибута ID текущего шаблона «Заявки на автомобили».

    Вставка в выражение системного имени атрибута «ID» шаблона «Заявки на автомобили»
    Вставка в выражение системного имени атрибута «ID» шаблона «Заявки на автомобили»
  19. Удалите строку id после оператора a-> и нажмите клавиши ++ctr+space++.

  20. В отобразившемся раскрывающемся списке дважды нажмите пункт Сумма.
  21. В формулу будет вставлено системное имя атрибута Сумма шаблона «Затраты».

    Вставка в выражение системного имени атрибута «Сумма» шаблона «Затраты»
    Вставка в выражение системного имени атрибута «Сумма» шаблона «Затраты»
  22. Должна получиться формула:

    SUM(from a in db->Затраты where a->Заявка == $id select a->Сумма) 
  23. Нажмите кнопку «Применить» и кнопку ‌«Закрыть» в редакторе формул.

  24. В окне свойств атрибута «Итоговая сумма затрат» нажмите кнопку «Сохранить».
  25. Вернитесь к диаграмме процесса.
  26. Опубликуйте диаграмму.

    Формула итоговой суммы затрат и синтаксис запроса к базе данных

    • Для вычисления итоговой суммы затрат мы использовали функцию — SUM():
      • SUM(from a in db->Затраты where a->Заявка == $id select a->Сумма)
      • Функция SUM() принимает в качестве аргумента список значений (массив) и возвращает сумму их значений (число).
    • В функцию SUM() мы передаём список значений атрибута «Сумма» шаблона записи «Затраты». Для получения этого списка используем следующий запрос к базе данных:
      • from a — объявление локальной переменной a для итерации по списку значений.
      • in db->Затраты — объявление источника данных: шаблон записи «Затраты».
      • where a->Заявка == $id — условие для выборки записей из шаблона «Затраты», где значение атрибута «Заявка» (типа «Запись») равно значению атрибута ID текущей заявки на автомобиль. То есть выбираем только затраты, которые относятся к данной заявке.
      • select a->Сумма — выбор значений атрибута «Сумма».
      • select a->Сумма — получение значения атрибута «Сумма» из шаблона «Затраты».
      • Затраты — системное имя шаблона записи «Затраты».
      • Заявка — системное имя атрибута запроса «Заявка» в шаблоне «Затраты».
      • $id — системное имя атрибута ID (идентификатор) в шаблоне записи «Заявки на автомобиль».
      • Сумма — системное имя атрибута «Сумма» в шаблоне записи «Затраты».
    • Данную формулу можно составить двумя другими способами:
      • SUM(from a in $Затраты select a->Сумма) — здесь в качестве источника данных запроса указан атрибут «Затраты» типа «Запись», который содержит идентификаторы записей шаблона «Затраты», связанные с текущей заявкой;
      • SUM($Затраты->Сумма) — здесь мы напрямую передаем в функцию SUM() значения атрибута «Сумма», записей шаблона «Затраты», связанных с текущей заявкой.

Тестирование вычисления суммы затрат

  1. Перейдите к списку экземпляров шаблона процесса «Заказ автотранспорта»
  2. Нажмите кнопку «Создать».
  3. Пройдите процесс до задачи «Выполнить рейс».
  4. Откройте задачу «Заказ автотранспорта — Выполнить рейс».
  5. Заполните таблицу «Затраты» — укажите различные суммы и типы затрат.
  6. Поле «Итоговая сумма затрат» должно вычисляться автоматически, как показано на иллюстрации.

Автоматическое вычисление итоговой суммы затрат

Автоматическое вычисление итоговой суммы затрат

Формирование номера заявки

Настроим автоматическую нумерацию заявок в следующем формате: ЗА-XXXX, где XXXX — порядковый номер заявки.

  1. Перейдите на вкладку «Атрибуты» шаблона записи «Заявки на автомобили».
  2. Создайте атрибут:
    • Название: Номер заявки
    • Тип данных: текст
    • Использовать как заголовок записей: флажок установлен
  3. Перейдите к диаграмме процесса «Заказ автотранспорта»
  4. Нажмите кнопку «Редактировать».
  5. Выберите начальное событие и в меню элемента нажмите кнопку «Сценарий на выходе» .

    Переход к сценарию на выходе из начального события с диаграммы процесса
    Переход к сценарию на выходе из начального события с диаграммы процесса
  6. Отобразится конструктор сценария.

  7. Внутри действия «Сменить контекст» нажмите кнопку «Добавить действие» и в раскрывающемся меню выберите пункт «Изменить значения атрибутов».

    Создание действия «Изменить значения атрибутов» в сценарии
    Создание действия «Изменить значения атрибутов» в сценарии
  8. Внутри действия «Сменить контекст» будет создано действие «Изменить значения атрибутов».

  9. В заголовке действия «Изменить значения атрибутов» нажмите кнопку «Изменить» .

    Переход к настройке действия «Изменить значения атрибутов»
    Переход к настройке действия «Изменить значения атрибутов»
  10. Отобразится окно «Действие: Изменить значения атрибутов».

  11. Нажмите кнопку «Создать».
  12. В столбце «Атрибут» выберите атрибут «Номер заявки».
  13. В столбце «Операция со значениями» выберите пункт «Заменить».
  14. В столбце «Значение» выберите пункт «Формула».

    Добавление операции с атрибутом для действия «Изменить значения»
    Добавление операции с атрибутом для действия «Изменить значения»
  15. Нажмите поле в столбце «Значение». Отобразится компактный редактор формулы.

  16. Ведите формулу:

    FORMAT("ЗA-{0}",LIST(COUNT(from b in db->Заявкинаавтомобили select b->id))) 

    Синтаксис формулы номера заявки

    • FORMAT() — эта функция принимает в качестве аргументов строку и список значений, заменяет в строке заполнители {0}–{n} значениями из списка и возвращает результирующую строку.
    • LIST() — эта функция объединяет аргументы в список.
    • COUNT() — эта функция принимает список значений и возвращает количество элементов в нём.
    • Заявкинаавтомобили — системное имя шаблона записи «Заявки на автомобили».
  17. Нажмите кнопку с зелёным флажком под формулой, чтобы сохранить её.

  18. Нажмите кнопку «Сохранить», чтобы сохранить действие «Изменить значения атрибута».
  19. Вернитесь к диаграмме процесса и опубликуйте её.

    Настройка формулы для вычисления значения атрибута «Номер заявки» при выходе из начального события
    Настройка формулы для вычисления значения атрибута «Номер заявки» при выходе из начального события

Настройка отображения номера заявки

Настроим отображение наглядного номера заявки на её форме.

  1. Перейдите на вкладку «Формы» шаблона записи «Заявки на автомобили».
  2. Откройте конструктор формы «Заявки на автомобили — Основная форма»
  3. Поместите на форму атрибут «Номер заявки».
  4. Укажите для поля «Номер заявки» режим доступа «Только чтение».
  5. Сохраните форму.

    Настройка режима только чтение для поля «Номер заявки» на форме заявки на автомобиль
    Настройка режима только чтение для поля «Номер заявки» на форме заявки на автомобиль

Тестирование формирования номера заявки

  1. Перейдите к списку экземпляров шаблона процесса «Заказ автотранспорта».
  2. Создайте новую заявку на автомобиль.
  3. Перейдите на страницу «Мои задачи».
  4. Откройте задачу «Заказ автотранспорта — Рассмотреть заявку».
  5. Поле «Номер заявки» должно быть заполнено автоматически, как показано на иллюстрации.

Автоматически сформированный с помощью формулы номер заявки

Автоматически сформированный с помощью формулы номер заявки

Настройка отслеживания статуса заявки

Настроим автоматическое изменение статуса заявки согласно текущему этапу бизнес-процесса:

  • Создана
  • На рассмотрении
  • Выполняется
  • Завершена
  • Отклонена

Создание справочника статусов

Статусы заявок будут храниться в справочнике — шаблоне записи.

  1. На панели навигации выберите пункты «Настройки» — «Диаграммы».
  2. Откройте диаграмму «Модель данных — Заказ автотранспорта».
  3. Перетащите на диаграмму элемент «Новый шаблон записи» и создайте шаблон записи «Статусы заявок».
  4. Выберите созданный шаблон «Статусы заявок».
  5. Создайте атрибут «Название», установив в его свойствах флажок «Использовать как заголовок записей».
  6. Выберите шаблон «Статусы заявок» и в меню элемента выберите пункт «Перейти к шаблону» — «Таблицы» .

    Диаграмма модели данных — создание нового шаблона записи, добавление в него атрибута и переход к настройке таблиц
    Диаграмма модели данных — создание нового шаблона записи, добавление в него атрибута и переход к настройке таблиц
  7. Откройте конструктор таблицы «Все записи» и настройте её так, чтобы она содержала только столбец «Название».

  8. Сохраните таблицу.

    Настройка отображения справочника «Статусы заявок»
    Настройка отображения справочника «Статусы заявок»
  9. Откройте конструктор основной формы шаблона «Статусы заявок» и настройте её так, чтобы она содержала только поле «Название».

    Настройка формы «Статус заявки»
    Настройка формы «Статус заявки»
  10. Перейдите к списку экземпляров шаблона «Статусы заявок».

  11. Создайте записи со следующими названиями:

    • Создана
    • На рассмотрении
    • Завершена
    • Отклонена
    • Выполняется
    Заполненный справочник «Статусы заявок»
    Заполненный справочник «Статусы заявок»
  12. Вернитесь к диаграмме модели данных и выберите шаблон «Заявки на автомобили».

  13. С помощью меню элемента создайте атрибут в шаблоне «Заявки на автомобили»:

    • Название: Статус
    • Тип данных: запись
    • Связанный шаблон: Статусы заявок
    Представление связей на диаграмме модели данных
    Представление связей на диаграмме модели данных

Настройка автоматического изменения статуса заявки

Установка статуса «Создана»

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

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

  5. В столбце «Значение» выберите пункт «Формула».
  6. Нажмите поле в столбце «Значение» и введите формулу:

    OBJECT("Управлениеавтопарком","Статусызаявок","Название","Создана") 

    Синтаксис формулы статуса заявки

    • OBJECT() — эта функция принимает системные имена приложения, шаблона и атрибута, а также искомое значение атрибута, и возвращает ID записи, в которой атрибут имеет указанное значение.
    • Управлениеавтопарком — системное имя приложения «Управление автопарком».
    • Статусызаявок — системное имя шаблона записи «Статусы заявок».
    • Название — системное имя атрибута «Название» в шаблоне записи «Статусы заявок».
    • Создана — искомое значение атрибута «Название».
    Настройка операции изменения атрибута «Статус» при выходе из начального события
    Настройка операции изменения атрибута «Статус» при выходе из начального события
  7. Нажмите кнопку с зелёным флажком под формулой, чтобы сохранить её.

  8. Нажмите кнопку «Сохранить», чтобы сохранить действие «Изменить значения атрибутов».

Установка статуса «На рассмотрении»

  1. Вернитесь к диаграмме процесса, но не публикуйте её.
  2. Выберите задачу «Рассмотреть заявку» и откройте «Сценарий на выходе» .
  3. В сценарии добавьте действие «Изменить значения атрибутов» внутри действия «Сменить контекст».
  4. В действии «Изменить значения атрибутов» создайте операцию «Заменить» для атрибута «Статус» c формулой:

    OBJECT("Управлениеавтопарком","Статусызаявок","Название","На рассмотрении") 

Установка статуса «Отклонена»

  1. На диаграмме процесса выберите задачу «Отменить поездку».
  2. Откройте «Сценарий на входе» .
  3. Добавьте действие «Изменить значения атрибутов» внутри действия «Сменить контекст».
  4. В действии «Изменить значения атрибутов» добавьте операцию «Заменить» для атрибута «Статус» с формулой:

    OBJECT("Управлениеавтопарком","Статусызаявок","Название","Отклонена") 

Установка статуса «Выполняется»

  1. На диаграмме процесса выберите развилку «и» «Машина выделена» перед событиями «Совершить поездку» и «Выполнить рейс».
  2. Откройте «Сценарий на выходе» .
  3. Добавьте действие «Изменить значения атрибутов» внутри действия «Сменить контекст».
  4. В действии «Изменить значения атрибутов» добавьте операцию «Заменить» для атрибута «Статус» с формулой:

    OBJECT("Управлениеавтопарком","Статусызаявок","Название","Выполняется") 

Установка статуса «Завершена»

  1. На диаграмме процесса выберите конечное событие «Поездка завершена».
  2. Откройте «Сценарий на входе» .
  3. Добавьте действие «Изменить значения атрибутов» внутри действия «Сменить контекст».
  4. В действии «Изменить значения атрибутов» добавьте операцию «Заменить» для атрибута «Статус» с формулой:

    OBJECT("Управлениеавтопарком","Статусызаявок","Название","Завершена") 
  5. Опубликуйте диаграмму процесса, чтобы изменения вступили в силу.

Настройка отображения статуса заявки на форме

Мы добавили новый атрибут «Статус», теперь настроим его отображение на форме заявки.

  1. Перейдите на вкладку «Формы» шаблона записи «Заявки на автомобили».
  2. Откройте конструктор формы «Заявки на автомобили — Основная форма».
  3. При необходимости упорядочьте поля на форме с помощью колонок.
  4. Перетащите на форму атрибут «Статус».
  5. Задайте для поля «Статус» режим доступа «Только чтение».
  6. Сохраните форму.

    Добавление атрибута «Статус» на форму заявки на автомобиль
    Добавление атрибута «Статус» на форму заявки на автомобиль

Добавления столбцов статуса и номера в список заявок

  1. Перейдите на вкладку «Таблицы» шаблона «Заявки на автомобили».
  2. Откройте конструктор таблицы «Все записи».
  3. Добавьте в таблицу столбцы «Номер заявки» и «Статус».
  4. Сохраните таблицу.

Добавление в таблицу столбцов статуса и номера заявки

Добавление в таблицу столбцов статуса и номера заявки

Тестирование изменения статуса заявки

  1. Перейдите к списку экземпляров шаблона процесса «Заказ автотранспорта»
  2. Создайте новую заявку на автомобиль.
  3. Перейдите к странице «Мои задачи».
  4. Откройте форму задачи «Заказ автотранспорта — Рассмотреть заявку».
  5. Поле «Статус» должно иметь значение «Создана».

Автоматическое заполненный статус заявки

Автоматическое заполненный статус заявки

Настройка заголовка задачи

Бизнес-логика

По умолчанию заголовки задач недостаточно информативны — они содержат только названия процесса и задачи, но никакой конкретной информации по заявке.

Для удобства пользователя добавим к заголовкам задач наглядные данные о заявке: маршрут и Ф. И. О. Заказчика.

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

Представление списка задач по умолчанию
  1. Перейдите к диаграмме процесса и нажмите кнопку «Редактировать».
  2. Выберите задачу «Рассмотреть заявку».
  3. В меню элемента нажмите кнопку «Свойства» .

    Переход к свойствам задачи с диаграммы процесса
    Переход к свойствам задачи с диаграммы процесса
  4. В окне «Свойства пользовательской задачи» на вкладке «Дополнительные» выберите пункт «Формула» в поле «Заголовок задачи».

  5. Введите формулу:

    FORMAT("Рассмотреть заявку ({0} — {1})",LIST($Маршрут,$_creator->fullName)) 

    Синтаксис формулы заголовка задачи

    • FORMAT() — эта функция принимает в качестве аргументов строку и список значений, заменяет в строке заполнители {0}–{n} значениями из списка и возвращает результирующую строку.
    • LIST() — эта функция объединяет аргументы в список.
    • Маршрут — системное имя атрибута «Маршрут».
    • _creator->fullName — Ф. И. О пользователя, создавшего заявку. Это значение получаем из системных атрибутов _creator и fullName аккаунта пользователя.
  6. Нажмите кнопку «Сохранить».

  7. Аналогичным образом введите формулы для заголовков остальных задач процесса:

    • FORMAT("Принять заявку ({0} — {1})",LIST($Маршрут,$_creator->fullName))
    • FORMAT("Отменить поездку, заявка отклонена ({0} — {1})",LIST($Маршрут,$_creator->fullName))
    • FORMAT("Выполнить рейс ({0} — {1})",LIST($Маршрут,$_creator->fullName))
    • FORMAT("Совершить поездку, машина выделена ({0} — {1})",LIST($Маршрут,$_creator->fullName))
  8. Опубликуйте диаграмму процесса.

Тестирование отображения заголовков задач

Посмотрим, как теперь задачи отображаются на странице «Мои задачи».

  1. Перейдите к экземплярам шаблона процесса «Заказ автотранспорта»
  2. Запустите процесс, создав новую заявку на автомобиль и заполнив стартовую форму.
  3. Перейдите на страницу «Мои задачи» и откройте задачу «Рассмотреть заявку».
  4. Заголовок задачи в списке и в форме должен содержать название маршрута и Ф. И. О. создателя заявки, как показано на иллюстрации.

Сформированные с помощью выражений наглядные заголовки в списке задач

Сформированные с помощью выражений наглядные заголовки в списке задач

Сформированный с помощью выражения наглядный заголовок задачи

Сформированный с помощью выражения наглядный заголовок задачи

Результаты

Вы научились настраивать автоматическое вычисление атрибутов и названий задач в ходе процесса.

В следующем уроке вы настроите пользователей, роли и права доступа для различных элементов приложения.

К началу