На предыдущем шаге мы добавили к странице проверку соответствия текущего количества активных ежедневных секций количеству залов для групповых занятий.
Теперь реализуем автоматическое заполнение расписания групповых занятий — добавим на страницу действие, которое будет добавлять в расписание 4 новых записи.
Для этого создадим бизнес-процесс, который будет записывать в таблицу базы данных необходимые данные и возвращать в схему страницы сообщение о том, что записи добавлены.
Создать бизнес-процесс
- Перейдите в раздел Конфигурация (Configuration).
- В списке пакетов выберите пакет "TryItPackage".
- На панели инструментов рабочей области нажмите кнопку Добавить (Add) и выберите в списке тип конфигурационного элемента Бизнес процесс (Business process).
- Заполните поля свойств процесса значениями:
- Название (Name) — "UsrAddTrainingsProcess".
- Код (Code) — "UsrAddTrainingsProcess".
- На вкладку Параметры (Parameters) добавьте входящие параметры и параметры, необходимые для работы процесса:
Название (Title) Код (Code) Тип данных (Data type) Направление (Direction) Значение (Value) Process Schema Periodicity Process Schema Periodicity Строка (500 символов) (Text (500 characters)) Входящий (Input) NewDate NewDate Дата/Время (Date/Time) Двунаправленный (Bidirectional) Number Number Целое число (Integer) Двунаправленный (Bidirectional) 4 Process Schema Id Process Schema Id Уникальный идентификатор (Unique identifier) Входящий (Input) Process Schema Coach Process Schema Coach Уникальный идентификатор (Unique identifier) Входящий (Input) -
Разместите в рабочей области процесса элементы:
- Исключающее ИЛИ (Exclusive gateway (OR)).
- Формула (Formula).
- Добавить данные (Add data).
- Задание-сценарий (Script task).
Cоедините элементы стрелками, как показано на рисунке ниже.
Процесс выполняется следующим образом:
- Логический оператор Исключающее ИЛИ (Exclusive gateway (OR)) "Periodicity" — проверяет периодичность секции, для которой нужно заполнить расписание, и разветвляет процесс на следующем шаге в зависимости от периодичности.
- Элементы Формула (Formula) — процесс выполняет расчет даты занятия, в зависимости от периодичности секции. Дата записывается в параметр процесса NewDate.
- Элемент Добавить данные (Add data) — процесс записывает новые данные группового занятия в таблицу базы данных.
- Элемент Формула (Formula) "New loop formula" — процесс выполняет расчет количества оставшихся для заполнения записей. По условию примера, необходимо заполнить и записать 4 новых записи. Результат записывается в параметр процесса Number.
- Логический оператор Исключающее ИЛИ (Exclusive gateway (OR)) "New loop" — проверяет значение параметра процесса Number. Если оно больше 0, то выполняет повторение предыдущих шагов. Если значение параметра равно 0, то выполняется переход к следующему шагу.
- Элемент Задание-сценарий (Script task) — процесс выполняет публикацию сообщения о том, что новые записи групповых занятий добавлены.
-
Настройте элементы бизнес-процесса.
Исключающее ИЛИ (Exclusive gateway (OR)) "Periodicity".
- Условный поток (Conditional flow) "Daily":
- Условие перехода(Condition to move down the flow) — [#ProcessSchemaPeriodicity#]=="Daily".
- Условный поток (Conditional flow) "Every 3 days":
- Условие перехода(Condition to move down the flow) — [#ProcessSchemaPeriodicity#]=="Every 3 days".
- Условный поток (Conditional flow) "Weekly":
- Условие перехода(Condition to move down the flow) — [#ProcessSchemaPeriodicity#]=="Weekly".
Формула (Formula) "Daily formula":
- В какой параметр передать значение формулы?(Which parameter to set the formula value to?) — "NewDate".
- Значение формулы(Formula value) — DateTime.Now.AddDays(4-[#Number#]).
Формула (Formula) "Every 3 days formula":
- В какой параметр передать значение формулы?(Which parameter to set the formula value to?) — "NewDate".
- Значение формулы(Formula value) — DateTime.Now.AddDays((4-[#Number#])*3).
Формула (Formula) "Weekly formula":
- В какой параметр передать значение формулы?(Which parameter to set the formula value to?) — "NewDate".
- Значение формулы(Formula value) — DateTime.Now.AddDays((4-[#Number#])*7).
Добавить данные (Add data) "Add training":
- В какой объект добавить данные?(Which object to add data to?) — "Group training".
- Какой режим добавления данных?(What is the data adding mode?) — Добавить одну запись (Add one record).
- Какие значения колонок установить? (Which column values to set?)
Колонка объекта Тип добавляемых данных Значение [Group sections] Параметр процесса ProcessSchemaId [Training date] Параметр процесса NewDate [Training status] Значение справочника Planned [Training time] Выбор времени 9:00
Формула (Formula) "New loop formula":
- В какой параметр передать значение формулы?(Which parameter to set the formula value to?) — "Number".
- Значение формулы(Formula value) — [#Number#]-1.
Исключающее ИЛИ (Exclusive gateway (OR)) "New loop".
- Условный поток (Conditional flow) "One more record":
- Условие перехода(Condition to move down the flow) — [#Number#]>=1.
- Условный поток (Conditional flow) "All records added":
- Условие перехода(Condition to move down the flow) — [#Number#]<1.
Задание-сценарий (Script task) "Sending a message":
- Условный поток (Conditional flow) "Daily":
- Сохраните процесс.
Создать замещающую модель представления
Для реализации обмена сообщениями между процессом и модулем страницы создайте замещающую модель представления базовой схемы ClientMessageBridge. Эта схема реализует транслирование сообщений, полученных по WebSocket, подписчикам внутри Creatio.
- Перейдите в раздел Конфигурация (Configuration).
- В списке пакетов выберите пакет "TryItPackage".
- На панели инструментов рабочей области нажмите кнопку Добавить (Add) и выберите в списке тип конфигурационного элемента Замещающая модель представления (Replacing view model).
- Заполните поле Родительский объект (Parent object) модели представления значением "ClientMessageBridge (ClientMessageBridge)". Остальные поля будут заполнены автоматически.
- В дизайнере схем добавьте исходный код.
ClientMessageBridge.js
- Сохраните схему, нажав кнопку Сохранить (Save).
Отредактировать исходный код страницы
На страницу групповой секции добавьте действие, которое будет автоматически добавлять новые занятия на деталь “Групповые занятия”.
- Перейдите в раздел Конфигурация (Configuration).
- В списке пакетов выберите пакет "TryItPackage".
- В результате работы мастеров в пакете уже содержатся схемы разных типов. С помощью сортировки по типу схем выберите для отображения схемы с типом Клиентский модуль (Client module).
- Двойным нажатием мыши откройте схему UsrGroupSections1Page и отредактируйте исходный код:
UsrGroupSections1Page
- Сохраните схему, нажав на кнопку Сохранить (Save).
В результате мы реализовали автоматическое заполнение расписания групповых занятий. На следующем шаге необходимо реализовать веб-сервис, который будет предоставлять информацию о количестве занятий в расписании.