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

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

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

Универсальный процесс согласования. Настройка шаблонов, процессов и сценария

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

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 можно повторить для всех мастер данных, где необходимо согласование.