Введение
В ходе этого урока вы научитесь настраивать вычисляемые атрибуты и использовать язык формул, чтобы сделать данные в заявках более наглядными и повысить эффективность бизнес-процесса: показать имя Заказчика и дату заявки, рассчитать итоговую стоимость и статус заявки, сформировать названия задач.
Предусловие: пройден урок 6 «Усовершенствованный процесс».
Расчётная продолжительность: 100 мин.
Примечание
В данном уроке представлен продукт Comindware Platform версии 5.0, внешний вид страниц и меню в других версиях продукта может отличаться.
Автоматическое вычисление значений атрибутов
Бизнес-логика
Пользователям удобно идентифицировать заявки по номеру и дате.
Секретарю при рассмотрении заявки требуется знать, кто является Заказчиком, чтобы решить, следует ли выделять машину.
Для учёта расходов необходимо подсчитать итоговую сумму затрат за рейс.
Реализуем эти возможности:
-
Для номера заявки определим формат, по которому номер будет формироваться автоматически.
-
Дата заявки — это дата запуска процесса. Это значение присваивается автоматически системному атрибуту «Дата создания» каждой записи. Имя Заказчика хранится в системном атрибуте «Создатель». Вынесем эти атрибуты на форму заявки.
-
Для расчета итоговой суммы затрат зададим формулу.
Отображение Ф. И. О. Заказчика и даты создания заявки
- Перейдите на вкладку «Формы» шаблона записи «Заявки на автомобили».
- Откройте конструктор формы «Заявки на автомобили - Основная форма».
- Разверните элемент «Создатель» на панели элементов.
- Перетащите на макет формы атрибут «Ф. И. О.».
- Сверните элемент «Создатель» на панели элементов.
- Перетащите на макет формы атрибут «Дата создания» шаблона «Заявки на автомобили».
- Сохраните форму.
Вычисление итоговой суммы затрат
Настроим автоматическое вычисление итоговой суммы затрат.
Для этого в свойствах атрибута «Итоговая сумма затрат» установим флажок «Вычислять автоматически», затем зададим формулу для вычисления значения атрибута. Для составления формулы воспользуемся редактором выражений и предиктивным вводом.
Внимание!
В формулах необходимо указывать те системные имена, которые вы фактически использовали в своём приложении.
Например, если вы присвоили шаблону «Затраты» системное имя Затраты123
, то именно это имя следует использовать в формуле.
То есть, если системные имена, приведённые в уроках, не совпадают с фактическими системными именами в вашем приложении, используйте фактические системные имена, а не копируйте их из текста уроков.
Примечание
Подробные сведения о составлении формул см. в разделе «Язык формул».
- Перейдите к диаграмме процесса «Заказ автотранспорта».
- Нажмите кнопку «Редактировать».
- Выберите задачу «Выполнить рейс».
- В меню элемента нажмите кнопку «Форма» .
- В конструкторе формы задачи разверните элемент «Заявки на автомобили» на панели элементов.
- Нажмите кнопку «Редактировать» у атрибута «Итоговая сумма затрат».
- В окне свойств атрибута установите флажок «Вычислять автоматически».
- В поле «Вычисляемое выражение» нажмите кнопку «Открыть в редакторе» .
- В редакторе выражений введите функцию:
SUM()
. - Установив курсор внутри скобок функции
SUM()
, нажмите клавиши Ctrl+Пробел (Windows и Linux) или Cmd+Пробел (macOS). -
В отобразившемся раскрывающемся списке дважды нажмите пункт
Затраты
со значком .Вставка заготовки запроса from-where-select для шаблона «Затраты» в качестве аргумента функции SUM() -
В формулу будет вставлена заготовка запроса записей из шаблона «Затраты»:
from a in db->Затраты where Ваше условие select a->id
.Заготовки запроса from-where-select для шаблона «Затраты» -
Замените строку
Ваше условие
наa->
и нажмите клавиши Ctrl+Пробел (Windows и Linux) или Cmd+Пробел (macOS). - В отобразившемся раскрывающемся списке дважды нажмите пункт
Заявка
. -
В формулу будет вставлено системное имя атрибута
Заявка
шаблона «Затраты».Вставка в выражение системного имени атрибута «Заявка» шаблона «Затраты» -
После системного имени
Заявка
введите строку== $
. - В отобразившемся раскрывающемся списке дважды нажмите пункт
id
. -
В формулу будет вставлено системное имя
id
атрибута ID текущего шаблона «Заявки на автомобили».Вставка в выражение системного имени атрибута «ID» шаблона «Заявки на автомобили» -
Удалите строку
id
после оператораa->
и нажмите клавиши ++ctr+space++. - В отобразившемся раскрывающемся списке дважды нажмите пункт
Сумма
. -
В формулу будет вставлено системное имя атрибута
Сумма
шаблона «Затраты».Вставка в выражение системного имени атрибута «Сумма» шаблона «Затраты» -
Должна получиться формула:
SUM(from a in db->Затраты where a->Заявка == $id select a->Сумма)
-
Нажмите кнопку «Применить» и кнопку «Закрыть» в редакторе формул.
- В окне свойств атрибута «Итоговая сумма затрат» нажмите кнопку «Сохранить».
- Вернитесь к диаграмме процесса.
-
Опубликуйте диаграмму.
Формула итоговой суммы затрат и синтаксис запроса к базе данных
- Для вычисления итоговой суммы затрат мы использовали функцию —
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()
значения атрибута «Сумма», записей шаблона «Затраты», связанных с текущей заявкой.
- Для вычисления итоговой суммы затрат мы использовали функцию —
Тестирование вычисления суммы затрат
- Перейдите к списку экземпляров шаблона процесса «Заказ автотранспорта»
- Нажмите кнопку «Создать».
- Пройдите процесс до задачи «Выполнить рейс».
- Откройте задачу «Заказ автотранспорта — Выполнить рейс».
- Заполните таблицу «Затраты» — укажите различные суммы и типы затрат.
- Поле «Итоговая сумма затрат» должно вычисляться автоматически, как показано на иллюстрации.
Формирование номера заявки
Настроим автоматическую нумерацию заявок в следующем формате: ЗА-XXXX
, где XXXX
— порядковый номер заявки.
- Перейдите на вкладку «Атрибуты» шаблона записи «Заявки на автомобили».
- Создайте атрибут:
- Название: Номер заявки
- Тип данных: текст
- Использовать как заголовок записей: флажок установлен
- Перейдите к диаграмме процесса «Заказ автотранспорта»
- Нажмите кнопку «Редактировать».
-
Выберите начальное событие и в меню элемента нажмите кнопку «Сценарий на выходе» .
Переход к сценарию на выходе из начального события с диаграммы процесса -
Отобразится конструктор сценария.
-
Внутри действия «Сменить контекст» нажмите кнопку «Добавить действие» и в раскрывающемся меню выберите пункт «Изменить значения атрибутов».
Создание действия «Изменить значения атрибутов» в сценарии -
Внутри действия «Сменить контекст» будет создано действие «Изменить значения атрибутов».
-
В заголовке действия «Изменить значения атрибутов» нажмите кнопку «Изменить» .
Переход к настройке действия «Изменить значения атрибутов» -
Отобразится окно «Действие: Изменить значения атрибутов».
- Нажмите кнопку «Создать».
- В столбце «Атрибут» выберите атрибут «Номер заявки».
- В столбце «Операция со значениями» выберите пункт «Заменить».
-
В столбце «Значение» выберите пункт «Формула».
Добавление операции с атрибутом для действия «Изменить значения» -
Нажмите поле в столбце «Значение». Отобразится компактный редактор формулы.
-
Ведите формулу:
FORMAT("ЗA-{0}",LIST(COUNT(from b in db->Заявкинаавтомобили select b->id)))
Синтаксис формулы номера заявки
FORMAT()
— эта функция принимает в качестве аргументов строку и список значений, заменяет в строке заполнители {0}–{n} значениями из списка и возвращает результирующую строку.LIST()
— эта функция объединяет аргументы в список.COUNT()
— эта функция принимает список значений и возвращает количество элементов в нём.Заявкинаавтомобили
— системное имя шаблона записи «Заявки на автомобили».
-
Нажмите кнопку с зелёным флажком под формулой, чтобы сохранить её.
- Нажмите кнопку «Сохранить», чтобы сохранить действие «Изменить значения атрибута».
-
Вернитесь к диаграмме процесса и опубликуйте её.
Настройка формулы для вычисления значения атрибута «Номер заявки» при выходе из начального события
Настройка отображения номера заявки
Настроим отображение наглядного номера заявки на её форме.
- Перейдите на вкладку «Формы» шаблона записи «Заявки на автомобили».
- Откройте конструктор формы «Заявки на автомобили — Основная форма»
- Поместите на форму атрибут «Номер заявки».
- Укажите для поля «Номер заявки» режим доступа «Только чтение».
-
Сохраните форму.
Настройка режима только чтение для поля «Номер заявки» на форме заявки на автомобиль
Тестирование формирования номера заявки
- Перейдите к списку экземпляров шаблона процесса «Заказ автотранспорта».
- Создайте новую заявку на автомобиль.
- Перейдите на страницу «Мои задачи».
- Откройте задачу «Заказ автотранспорта — Рассмотреть заявку».
- Поле «Номер заявки» должно быть заполнено автоматически, как показано на иллюстрации.
Настройка отслеживания статуса заявки
Настроим автоматическое изменение статуса заявки согласно текущему этапу бизнес-процесса:
- Создана
- На рассмотрении
- Выполняется
- Завершена
- Отклонена
Создание справочника статусов
Статусы заявок будут храниться в справочнике — шаблоне записи.
- На панели навигации выберите пункты «Настройки» — «Диаграммы».
- Откройте диаграмму «Модель данных — Заказ автотранспорта».
- Перетащите на диаграмму элемент «Новый шаблон записи» и создайте шаблон записи «Статусы заявок».
- Выберите созданный шаблон «Статусы заявок».
- Создайте атрибут «Название», установив в его свойствах флажок «Использовать как заголовок записей».
-
Выберите шаблон «Статусы заявок» и в меню элемента выберите пункт «Перейти к шаблону» — «Таблицы» .
Диаграмма модели данных — создание нового шаблона записи, добавление в него атрибута и переход к настройке таблиц -
Откройте конструктор таблицы «Все записи» и настройте её так, чтобы она содержала только столбец «Название».
-
Сохраните таблицу.
Настройка отображения справочника «Статусы заявок» -
Откройте конструктор основной формы шаблона «Статусы заявок» и настройте её так, чтобы она содержала только поле «Название».
Настройка формы «Статус заявки» -
Перейдите к списку экземпляров шаблона «Статусы заявок».
-
Создайте записи со следующими названиями:
- Создана
- На рассмотрении
- Завершена
- Отклонена
- Выполняется
Заполненный справочник «Статусы заявок» -
Вернитесь к диаграмме модели данных и выберите шаблон «Заявки на автомобили».
-
С помощью меню элемента создайте атрибут в шаблоне «Заявки на автомобили»:
- Название: Статус
- Тип данных: запись
- Связанный шаблон: Статусы заявок
Представление связей на диаграмме модели данных
Настройка автоматического изменения статуса заявки
Установка статуса «Создана»
- Откройте для редактирования диаграмму процесса «Заказ автотранспорта».
- Выберите начальное событие и в меню элемента нажмите кнопку «Сценарий на выходе» .
-
В конструкторе сценария внутри действия «Сменить контекст» нажмите кнопку «Изменить» в заголовке действия «Изменить значения атрибутов», созданного ранее.
Переход к настройке действия «Изменить значения атрибутов» -
Добавьте операцию со значениями «Заменить» для атрибута «Статус».
- В столбце «Значение» выберите пункт «Формула».
-
Нажмите поле в столбце «Значение» и введите формулу:
OBJECT("Управлениеавтопарком","Статусызаявок","Название","Создана")
Синтаксис формулы статуса заявки
OBJECT()
— эта функция принимает системные имена приложения, шаблона и атрибута, а также искомое значение атрибута, и возвращает ID записи, в которой атрибут имеет указанное значение.Управлениеавтопарком
— системное имя приложения «Управление автопарком».Статусызаявок
— системное имя шаблона записи «Статусы заявок».Название
— системное имя атрибута «Название» в шаблоне записи «Статусы заявок».Создана
— искомое значение атрибута «Название».
Настройка операции изменения атрибута «Статус» при выходе из начального события -
Нажмите кнопку с зелёным флажком под формулой, чтобы сохранить её.
- Нажмите кнопку «Сохранить», чтобы сохранить действие «Изменить значения атрибутов».
Установка статуса «На рассмотрении»
- Вернитесь к диаграмме процесса, но не публикуйте её.
- Выберите задачу «Рассмотреть заявку» и откройте «Сценарий на выходе» .
- В сценарии добавьте действие «Изменить значения атрибутов» внутри действия «Сменить контекст».
-
В действии «Изменить значения атрибутов» создайте операцию «Заменить» для атрибута «Статус» c формулой:
OBJECT("Управлениеавтопарком","Статусызаявок","Название","На рассмотрении")
Установка статуса «Отклонена»
- На диаграмме процесса выберите задачу «Отменить поездку».
- Откройте «Сценарий на входе» .
- Добавьте действие «Изменить значения атрибутов» внутри действия «Сменить контекст».
-
В действии «Изменить значения атрибутов» добавьте операцию «Заменить» для атрибута «Статус» с формулой:
OBJECT("Управлениеавтопарком","Статусызаявок","Название","Отклонена")
Установка статуса «Выполняется»
- На диаграмме процесса выберите развилку «и» «Машина выделена» перед событиями «Совершить поездку» и «Выполнить рейс».
- Откройте «Сценарий на выходе» .
- Добавьте действие «Изменить значения атрибутов» внутри действия «Сменить контекст».
-
В действии «Изменить значения атрибутов» добавьте операцию «Заменить» для атрибута «Статус» с формулой:
OBJECT("Управлениеавтопарком","Статусызаявок","Название","Выполняется")
Установка статуса «Завершена»
- На диаграмме процесса выберите конечное событие «Поездка завершена».
- Откройте «Сценарий на входе» .
- Добавьте действие «Изменить значения атрибутов» внутри действия «Сменить контекст».
-
В действии «Изменить значения атрибутов» добавьте операцию «Заменить» для атрибута «Статус» с формулой:
OBJECT("Управлениеавтопарком","Статусызаявок","Название","Завершена")
-
Опубликуйте диаграмму процесса, чтобы изменения вступили в силу.
Настройка отображения статуса заявки на форме
Мы добавили новый атрибут «Статус», теперь настроим его отображение на форме заявки.
- Перейдите на вкладку «Формы» шаблона записи «Заявки на автомобили».
- Откройте конструктор формы «Заявки на автомобили — Основная форма».
- При необходимости упорядочьте поля на форме с помощью колонок.
- Перетащите на форму атрибут «Статус».
- Задайте для поля «Статус» режим доступа «Только чтение».
-
Сохраните форму.
Добавление атрибута «Статус» на форму заявки на автомобиль
Добавления столбцов статуса и номера в список заявок
- Перейдите на вкладку «Таблицы» шаблона «Заявки на автомобили».
- Откройте конструктор таблицы «Все записи».
- Добавьте в таблицу столбцы «Номер заявки» и «Статус».
- Сохраните таблицу.
Тестирование изменения статуса заявки
- Перейдите к списку экземпляров шаблона процесса «Заказ автотранспорта»
- Создайте новую заявку на автомобиль.
- Перейдите к странице «Мои задачи».
- Откройте форму задачи «Заказ автотранспорта — Рассмотреть заявку».
- Поле «Статус» должно иметь значение «Создана».
Настройка заголовка задачи
Бизнес-логика
По умолчанию заголовки задач недостаточно информативны — они содержат только названия процесса и задачи, но никакой конкретной информации по заявке.
Для удобства пользователя добавим к заголовкам задач наглядные данные о заявке: маршрут и Ф. И. О. Заказчика.
- Перейдите к диаграмме процесса и нажмите кнопку «Редактировать».
- Выберите задачу «Рассмотреть заявку».
-
В меню элемента нажмите кнопку «Свойства» .
Переход к свойствам задачи с диаграммы процесса -
В окне «Свойства пользовательской задачи» на вкладке «Дополнительные» выберите пункт «Формула» в поле «Заголовок задачи».
-
Введите формулу:
FORMAT("Рассмотреть заявку ({0} — {1})",LIST($Маршрут,$_creator->fullName))
Синтаксис формулы заголовка задачи
FORMAT()
— эта функция принимает в качестве аргументов строку и список значений, заменяет в строке заполнители {0}–{n} значениями из списка и возвращает результирующую строку.LIST()
— эта функция объединяет аргументы в список.Маршрут
— системное имя атрибута «Маршрут»._creator->fullName
— Ф. И. О пользователя, создавшего заявку. Это значение получаем из системных атрибутов_creator
иfullName
аккаунта пользователя.
-
Нажмите кнопку «Сохранить».
-
Аналогичным образом введите формулы для заголовков остальных задач процесса:
FORMAT("Принять заявку ({0} — {1})",LIST($Маршрут,$_creator->fullName))
FORMAT("Отменить поездку, заявка отклонена ({0} — {1})",LIST($Маршрут,$_creator->fullName))
FORMAT("Выполнить рейс ({0} — {1})",LIST($Маршрут,$_creator->fullName))
FORMAT("Совершить поездку, машина выделена ({0} — {1})",LIST($Маршрут,$_creator->fullName))
-
Опубликуйте диаграмму процесса.
Тестирование отображения заголовков задач
Посмотрим, как теперь задачи отображаются на странице «Мои задачи».
- Перейдите к экземплярам шаблона процесса «Заказ автотранспорта»
- Запустите процесс, создав новую заявку на автомобиль и заполнив стартовую форму.
- Перейдите на страницу «Мои задачи» и откройте задачу «Рассмотреть заявку».
- Заголовок задачи в списке и в форме должен содержать название маршрута и Ф. И. О. создателя заявки, как показано на иллюстрации.
Результаты
Вы научились настраивать автоматическое вычисление атрибутов и названий задач в ходе процесса.
В следующем уроке вы настроите пользователей, роли и права доступа для различных элементов приложения.