18.12.24

Видеокурс Camunda 8: User Tasks & Camunda Forms

Мстислав Мартынюк
Автор:Мстислав Мартынюк
10 мин · Обучающие


Обзор


Статья описывает, как управлять задачами пользователей в Camunda 8 или как сделать людей участниками исполняемого бизнес-процесса.


Это часть цикла "Изучаем Camunda 8 вместе с Reunico":




Пользовательские задачи (User Tasks)


В прошлом уроке мы создали в Camunda Modeler простой процесс, загрузили его в "песочницу" Camunda 8 Run, запустили на исполнение с переменными процесса и увидели результаты работы процесса в Operate.


В качестве задачи мы использовали так называемый Undefined Task – задачу неопределенного типа. Undefined Task, как и его родственник Manual Task – это задачи, воспринимаемые процессным движком как сквозные (pass-through). Они не имеют какой-либо бизнес-логики или реализации. Токен процесса проходит через них без остановки, не создавая заданий для исполнителей.


Как поступить, если задача в процессе должна быть выполнена человеком?  Для этого существует специальный тип задачи – User Task (Пользовательская задача). Когда процессный движок встречает задачу такого типа, выполнение процесса приостанавливается, а в приложении Tasklist (Список задач) создается задача, которая должна быть выполнена пользователем приложения.


Рассмотрим на практическом примере. Откроем созданный ранее процесс "Заявка на кредит", выделим задачу "Обработать заявку на кредит" и изменим ее тип на User Task.


Теперь, при поступлении токена на эту активность, в приложении Tasklist будет создаваться задача.


Как она будет выглядеть с точки зрения пользователя?


Camunda 8: User Task


Обратите внимание, что после изменения типа задачи, на Панели свойств (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 8 Camunda Forms - создание формы


После выбора в навигационном меню Camunda Modeler пунктов File – New File – Form (Camunda 8) на экране появится рабочая область для создания формы. Необходимо создать форму, которая будет выводить исполнителю задачи (пользователю, принимающему решение о предоставлении кредита) следующие поля:


  • Имя заемщика (name) – строка;

  • Сумма кредита (amount) – число;

  • Решение по кредиту (decision) - логическое значение.


В результате должна появиться форма, имеющая следующие элементы:


  • Имя (Text field);

  • Сумма кредита (Number);

  • Решение (Checkbox).


Обратите внимание - ключи полей формы (Key) эквивалентны именам переменных процесса.


Таким образом, в поля name и amount будет помещено значение одноименных переменных, являющихся входными данными процесса.


По завершению моделирования формы, необходимо указать ее идентификатор в поле ID – application. Этот же ID мы указывали на пользовательской задаче.


Camunda 8 Экранная форма задачи


Развертывание артефактов и запуск процесса


Форма, как и процесс, может быть развернута (deployed) из Camunda Modeler,  нажатием на кнопку с изображением ракеты в нижней строке. Порядок загрузки в нашем случае значения не имеет. 


Запустим процесс, подав в качестве входных значений переменные процесса amount и name в формате JSON:


{
	"name": "Elis",
	 "amount": 300000
}

Перейдя в Operate, мы увидим, что экземпляр процесса все еще активен и ожидает завершения пользовательской задачи.



Camunda 8 Operate Пользовательская задача


В приложении Tasklist в списке задач появилась новая задача. При нажатии на неё отображается экранная форма, ранее созданная в Camunda Modeler.


Camunda 8 Список задач



Задача не имеет ответственных, так как не были указаны правила назначения в поле Assignee. Но поскольку мы работаем под пользователем с правами администратора, мы можем ее "заклеймить" (claim), назначив на себя нажатием кнопки Assign to me.


Ответственному пользователю доступно редактирование значений полей (не имеющих признаков readonly или disabled), а также функция завершения задачи (Complete Task).


Изменим поле "Сумма кредита", установив значение = 50 000.


После нажатия кнопки Complete Task процесс продолжит выполнение и согласно его структуре будет завершен. В Operate мы увидим, что в завершенном экземпляре процесса значение переменной amount стало равняться введенному нами в экранной форме.


Поздравляем! Теперь вы умеете моделировать процессы, в которых участвуют люди!