Видеокурс Camunda 8: User Tasks & Camunda Forms
Обзор
Статья описывает, как управлять задачами пользователей в Camunda 8 или как сделать людей участниками исполняемого бизнес-процесса.
Это часть цикла "Изучаем Camunda 8 вместе с Reunico":
-
Предыдущая статья: Создаем первый процесс;
-
Плейлист видеокурса по Camunda 8 на YouTube
Пользовательские задачи (User Tasks)
В прошлом уроке мы создали в Camunda Modeler простой процесс, загрузили его в "песочницу" Camunda 8 Run, запустили на исполнение с переменными процесса и увидели результаты работы процесса в Operate.
В качестве задачи мы использовали так называемый Undefined Task – задачу неопределенного типа. Undefined Task, как и его родственник Manual Task – это задачи, воспринимаемые процессным движком как сквозные (pass-through). Они не имеют какой-либо бизнес-логики или реализации. Токен процесса проходит через них без остановки, не создавая заданий для исполнителей.
Как поступить, если задача в процессе должна быть выполнена человеком? Для этого существует специальный тип задачи – User Task (Пользовательская задача). Когда процессный движок встречает задачу такого типа, выполнение процесса приостанавливается, а в приложении Tasklist (Список задач) создается задача, которая должна быть выполнена пользователем приложения.
Рассмотрим на практическом примере. Откроем созданный ранее процесс "Заявка на кредит", выделим задачу "Обработать заявку на кредит" и изменим ее тип на User Task.
Теперь, при поступлении токена на эту активность, в приложении Tasklist будет создаваться задача.
Как она будет выглядеть с точки зрения пользователя?
Обратите внимание, что после изменения типа задачи, на Панели свойств (Property Panel) появились новые группы полей:
-
Implementation (Type);
-
Assignment (Assignee, Candidate users, Candidate groups);
-
Form.
Сейчас нас интересует последняя группа полей – Form.
В поле Type необходимо указать способ связывания задачи с экранной формой:
-
Camunda Form (embedded) – форма в формате Camunda Forms (JSON) будет разворачиваться в том же файле, что и описание процесса;
-
Camunda Form (linked) – форма в формате Camunda Forms (JSON) будет разворачиваться отдельным файлом;
-
Custom form key – если предполагается использовать собственное приложение вместо Tasklist, здесь вы можете указать наименование компоненты, маршрута (route) или идентификатор, позволяющий связать задачу в Camunda с формой в вашем приложении.
В нашем примере выберем "Camunda Form (linked)".
В появившемся поле Form ID нужно придумать и указать идентификатор пользовательской формы, которую мы создадим далее, например – application.
Реализация пользовательской задачи готова, переходим к экранной форме.
Camunda Forms
Экранная форма в Camunda 8 создается, как и описание процесса, при помощи WYSIWYG-редактора в Camunda Modeler.
После выбора в навигационном меню Camunda Modeler пунктов File – New File – Form (Camunda 8) на экране появится рабочая область для создания формы. Необходимо создать форму, которая будет выводить исполнителю задачи (пользователю, принимающему решение о предоставлении кредита) следующие поля:
-
Имя заемщика (name) – строка;
-
Сумма кредита (amount) – число;
-
Решение по кредиту (decision) - логическое значение.
В результате должна появиться форма, имеющая следующие элементы:
-
Имя (Text field);
-
Сумма кредита (Number);
-
Решение (Checkbox).
Обратите внимание - ключи полей формы (Key) эквивалентны именам переменных процесса.
Таким образом, в поля name и amount будет помещено значение одноименных переменных, являющихся входными данными процесса.
По завершению моделирования формы, необходимо указать ее идентификатор в поле ID – application. Этот же ID мы указывали на пользовательской задаче.
Развертывание артефактов и запуск процесса
Форма, как и процесс, может быть развернута (deployed) из Camunda Modeler, нажатием на кнопку с изображением ракеты в нижней строке. Порядок загрузки в нашем случае значения не имеет.
Запустим процесс, подав в качестве входных значений переменные процесса amount и name в формате JSON:
{ "name": "Elis", "amount": 300000 }
Перейдя в Operate, мы увидим, что экземпляр процесса все еще активен и ожидает завершения пользовательской задачи.
В приложении Tasklist в списке задач появилась новая задача. При нажатии на неё отображается экранная форма, ранее созданная в Camunda Modeler.
Задача не имеет ответственных, так как не были указаны правила назначения в поле Assignee. Но поскольку мы работаем под пользователем с правами администратора, мы можем ее "заклеймить" (claim), назначив на себя нажатием кнопки Assign to me.
Ответственному пользователю доступно редактирование значений полей (не имеющих признаков readonly или disabled), а также функция завершения задачи (Complete Task).
Изменим поле "Сумма кредита", установив значение = 50 000.
После нажатия кнопки Complete Task процесс продолжит выполнение и согласно его структуре будет завершен. В Operate мы увидим, что в завершенном экземпляре процесса значение переменной amount стало равняться введенному нами в экранной форме.
Поздравляем! Теперь вы умеете моделировать процессы, в которых участвуют люди!