Универсальный процесс согласования. Настройка шаблонов, процессов и сценария
Зачастую в бизнес-процессах так или иначе присутствует блок согласования. Например, заявку на закупку нужно сперва согласовать, а затем направить на оценку и закупку; договор перед подписанием также проходит через процесс согласования. В основном, это один и тот же процесс, который можно переиспользовать. В данной статье будет предоставлен пример настройки универсального процесса согласования.
1. Создайте шаблон записи «История согласований» со следующими атрибутами:
- Решение — атрибут с типом данных «Запись», связанный с шаблоном, где хранятся варианты решений для согласования;
- Комментарий к решению — атрибут с типом данных «Текст»;
- Ответ на запрос — атрибут с типом данных «Текст»;
- Дата и время начала — атрибут с типом данных «Дата и время»;
- Дата и время завершения — атрибут с типом данных «Дата и время»;
- id объекта согласования — атрибут с типом данных «Текст»;
- Название объекта согласования — атрибут с типом данных «Текст»;
- Объект согласования — атрибут с типом данных «Текст» и форматом отображения «HTML-текст», вычисляемый по выражению: FORMAT("<a href='/#Resolver/{0}' target='_blank'>{1}</a>", LIST($idobektasoglasovaniya,$Nazvanieobektasoglasovaniya));
- Инициатор — атрибут с типом данных «Аккаунт»;
- Согласующий — атрибут с типом данных «Аккаунт»;
- Статус — атрибут с типом данных «Запись», связанный с шаблоном, где хранятся статусы согласования;
- Повторное согласование — атрибут с типом данных «Запись», связанный с шаблоном «История согласования», с взаимной связью по новому атрибуту «Изначальное согласование»;
- История согласования — атрибут с типом данных «Запись», связанный с шаблоном «История согласования», несколько значений, вычисляемый по выражению: from a in db->Istoriyasoglasovanij where (a->idobektsoglasovaniya == $idobektsoglasovaniya) select a->id;
- + атрибуты с типом данных «Запись», связанные с шаблонами, где хранятся ваши мастер-данные (заявки, договоры, и т.д.), с взаимной связью по новому атрибуту «История согласования» (несколько значений).
2. В созданном шаблоне записи настройте формы для отображения по умолчанию, форму для задачи согласующему и форму для задачи инициатору.
3. Настройте диаграмму процесса по образцу:

Пример диаграммы процесса согласования
4. Добавьте сценарии на входе и выходе у первой задачи и настройте их.
4.1. В сценарии на входе добавьте действие «Изменить значения атрибутов» и настройте его:
- Статус — воспользуйтесь функцией OBJECT, чтобы найти необходимый статус;
- Дата и время начала — воспользуйтесь функцией NOW.
4.2. В сценарии на выходе добавьте действие «Изменить значения атрибутов» и настройте его:
- Статус — воспользуйтесь функцией OBJECT, чтобы найти необходимый статус;
- Дата и время завершения — воспользуйтесь функцией NOW.
5. Таким же образом настройте изменение статуса строки истории согласования на других элементах процесса.
6. Добавьте сценарии на входе в элемент вызова процесса и настройте его.

Сценарий на входе
6.1. Добавьте действие «Создать запись» и настройте его.
- В поле «Целевой шаблон записи» укажите шаблон записи, созданный в п.1;
- В поле «Ссылка на новую запись» укажите ссылку на целевой шаблон записи в текущем («Повторное согласование»);
- В поле «Операция со значениями» укажите «Добавить».
6.2. Добавьте действие «Изменить значения атрибутов» и настройте его. Настройте передачу данных из контекста изначального согласования в контекст новой строки истории согласования. В целом, нужно заполнить следующие поля:
- Согласующий — в это поле передайте значение из такого же атрибута из изначального согласования;
- Инициатор — в это поле передайте значение из такого же атрибута из изначального согласования;
- id объекта согласования — в это поле передайте значение из такого же атрибута из изначального согласования;
- Название объекта согласования — в это поле передайте значение из такого же атрибута из изначального согласования;
- Заявка — в это поле передайте значение из такого же атрибута из изначального согласования.
Если согласующих несколько, то первым шагом добавьте действие «Цикл по объектам», в котороv укажите атрибут или выражение для поиска согласующих, задайте переменную, а в действии «Изменить значения атрибутов», замените поле «Согласующий» на созданную переменную (обращение к переменной начинается с $$).
7. Настройте вызов процесса повторного согласования.
- В поле «Записи для запуска процесса» укажите атрибут «Повторное согласование»;
- В поле «Шаблон вызываемого процесса» укажите процесс согласования, созданный в п. 3 (тот же процесс).
8. Настройте логику назначения задач, вынесите на задачи соответствующие формы из связанного шаблона записи, созданные в п. 2, и опубликуйте процесс.
9. Перейдите в шаблон записи, где хранятся мастер-данные, например, заявки на закупку. На все необходимые формы вынесите атрибут «История согласования» и настройте отображение таблицы.
10. Перейдите на диаграмму процесса, связанного с заявками на закупку. Добавьте вызов процесса.

Диаграмма основного процесса
11. Добавьте сценарий на входе в элемент вызова процесса и настройте его.

Сценарий на входе
11.1. Добавьте действие «Создать запись» и настройте его.
- В поле «Целевой шаблон записи» укажите шаблон записи, созданный в п.1;
- В поле «Ссылка на новую запись» укажите ссылку на целевой шаблон записи в текущем («История согласования»);
- В поле «Операция со значениями» укажите «Добавить».
11.2. Добавьте действие «Изменить значения атрибутов» и настройте его. Настройте передачу данных из контекста заявок в контекст строки истории согласования. В целом, нужно заполнить следующие поля:
- Согласующий — в это поле передайте значение из необходимого атрибута из заявки;
- Инициатор — в это поле передайте значение из необходимого атрибута из заявки;
- id объекта согласования — в это поле запишите id заявки с помощью функции FORMAT;
- Название объекта согласования — в это поле передайте название заявки.
12. Настройте вызов процесса согласования.
- В поле «Записи для запуска процесса» укажите атрибут «История согласования»;
- В поле «Шаблон вызываемого процесса» укажите процесс согласования, созданный в п. 3;
- В поле «Выполнение экземпляров процесса» укажите параллельное или последовательное выполнение;
- В поле «Условие запуска процесса» пропишите условие по типу: EMPTY($Status), чтобы согласования запускались только по новым строкам истории согласования.
13. Настройте логику последующей развилки. Например, если в истории согласования нет ни одного отрицательного решения, значит заявка согласована. Можно также настроить отдельный атрибут и передавать в него значение при завершении каждого согласования.
14. Опубликуйте процесс и протестируйте.
П. 9-14 можно повторить для всех мастер данных, где необходимо согласование.
Номер Статьи: 2320
Размещено: Mon, Feb 13, 2023
Последнее обновление: Thu, Aug 1, 2024
Online URL: https://kb.comindware.ru/article/universalnyj-process-soglasovaniya-nastrojka-shablonov-processov-i-scenariya-2320.html