Перейти к основному содержимому

Приложение Activiti Kickstart и веб-приложение Activiti Rest

· 7 мин. чтения

1. Обзор

В наших предыдущих статьях (на основе Activiti API с Java и Spring) мы видели, как программно управлять процессами. Если мы хотим настроить демонстрацию вместе с пользовательским интерфейсом для Activiti, у нас есть два веб-приложения, которые позволят нам сделать это всего за несколько минут.

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

Точно так же activiti-rest — это веб-приложение, которое предоставляет REST API для выполнения любых операций с процессом, задачей, процессом и т. д.

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

2. Загрузки

Мы можем загрузить файлы войны для обоих веб-приложений с самого веб- сайта Activiti .

Для версии 6.0.0 мы можем просто загрузить activiti-6.0.0.zip , распаковать его, и файлы war можно будет найти в каталоге activiti-6.0.0/wars .

3. Приложение Активити Кикстарт

Нам понадобится работающая среда выполнения Java и установка Apache Tomcat для развертывания приложения. Подойдет любой веб-контейнер, но Activiti в первую очередь тестируется на Tomcat.

Теперь нам нужно просто развернуть войну на Tomcat и получить к ней доступ, используя http://localhost:8080/activiti-app .

Домашняя страница должна выглядеть так:

./b0abebb520631664408cd131446a4841.png

3.1. База данных

По умолчанию он использует базу данных H2 в памяти. Если мы хотим изменить конфигурацию БД, мы можем проверить код и изменить файл activiti-app.properties .

После этого нам нужно повторно сгенерировать файл войны, что можно сделать, запустив скрипт start.sh . Это создаст приложение activiti вместе с необходимыми зависимостями.

3.2. Кикстарт приложение

Когда мы нажимаем на приложение Kickstart, мы получаем параметры для работы с процессом. Мы можем создавать/импортировать процессы и запускать их отсюда.

Давайте создадим небольшой процесс с одной пользовательской задачей , которая получает сообщение от пользователя. В приложении Kickstart для создания процесса выберите вкладку « Процессы » и нажмите « Создать процесс » :

./175ce109fd482ef89494b947899acc64.png

Откроется редактор процессов, где мы можем перетаскивать различные символы для начальных событий, различных типов задач и конечных событий, чтобы определить процесс.

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

Для простоты назначим задачу инициатору процесса:

./c5f3bd2342c2c308595007cabed11894.png

Мы также хотим, чтобы эта пользовательская задача получала входное сообщение от пользователя. Для этого нам нужно связать форму с одним текстовым полем с этой задачей.

Выберите Пользовательскую задачу и выберите Ссылочная форма . В настоящее время с задачей не связана никакая форма , поэтому нажмите « Новая форма » и добавьте необходимые сведения:

./9a12e0f6021f8e5fb3d6dad59532123b.jpg

После этого мы попадем в раздел « Формы », где мы можем перетаскивать различные поля, которые мы хотим в нашей форме, а также устанавливать для них метки:

./75850e6d2244361f34121b3170bb82ba.jpg

Обратите внимание, что мы отметили « Обязательно», что означает, что пользовательская задача не может быть завершена без ввода сообщения.

После этого мы сохраним его и перейдем на вкладку « Приложения ». Чтобы иметь возможность запускать созданный нами процесс, нам нужно создать приложение процесса.

В приложении Process мы можем добавить одно или несколько определений процессов . После этого нам нужно опубликовать это приложение, чтобы процессы стали доступны другим пользователям:

./58f7b056f355be040da5e2b598971720.png

3.3. Приложение задач

В приложении задач есть две вкладки: « Задачи » — для текущих задач и « Процессы » — для текущих процессов.

После того, как мы нажмем на вкладку « Начать процесс » на вкладке « Процессы », мы получим список доступных процессов, которые мы можем запустить. Из этого списка мы выберем наш процесс и нажмем кнопку запуска :

./01f5906f2908754ceca5cb6ffd57cb1e.png

Наш процесс содержит только одну задачу, и это задача пользователя . Следовательно, процесс ожидает, пока пользователь выполнит эту задачу. Когда мы нажимаем на задачу, которую ожидает процесс, мы видим форму, которую мы создали:

./a0482d6d617df3c276a8dfed53b54477.jpg

Если мы нажмем « Показать диаграмму» , она не только покажет нам диаграмму процесса , но и выделит задачи, которые завершены, и те, которые ожидают выполнения. В нашем случае пользовательская задача все еще не завершена, что выделено:

./f2a9aae15ff1f669f6a06feae6d94085.png

Чтобы выполнить эту задачу, мы можем нажать кнопку « Завершить » n. Как упоминалось ранее, нам нужно будет ввести сообщение, так как мы сохранили его обязательным. Следовательно, после ввода сообщения мы можем завершить задачу.

3.4. Приложение для управления идентификацией

Помимо управления процессом, у нас есть приложение для управления идентификацией, которое позволяет нам добавлять пользователей и группы. Мы также можем определить роли для пользователей.

4. Активити ОТДЫХ

Activiti предоставляет REST API для Activiti Engine , который можно установить, развернув файл activiti-rest.war в контейнере сервлетов, таком как Apache Tomcat.

По умолчанию Activiti Engine подключается к базе данных H2 в памяти. Так же, как мы видели в activiti-app , здесь мы можем изменить настройки базы данных в файле db.properties в папке WEB-INF/classes и воссоздать файл войны.

Когда приложение запущено и работает, мы можем использовать этот базовый URL для всех запросов:

http://localhost:8080/activiti-rest/service/

По умолчанию для всех ресурсов REST требуется проверка подлинности действительного пользователя Activiti. Для каждого вызова REST следует использовать базовую аутентификацию доступа HTTP.

4.1. Создание и запуск процесса

Чтобы создать процесс, во-первых, нам нужен файл BPMN для нашего процесса. Мы можем либо создать файл, как описано в наших предыдущих статьях, на основе Activiti с Java , либо его можно загрузить из раздела «Процесс» приложения Kickstart.

Нам нужно сделать запрос POST вместе с contentType: multipart/form-data , куда мы загрузим файл BPMN для нашего нового процесса:

POST repository/deployments

Когда мы делаем этот вызов, передавая файл BPMN для созданного нами процесса, он дает следующий результат:

{    
"id": "40",
"name": "user_msg.bpmn20.xml",
"deploymentTime": "2017-10-04T17:28:07.963+05:30",
"category": null,
"url": "http://localhost:8080/activiti-rest/service/repository/deployments/40",
"tenantId": ""
}

Теперь мы можем увидеть наше определение процесса в списке, если мы получим все определения процесса:

GET repository/process-definitions

Затем мы можем запустить этот процесс, используя ключ процесса , который мы упомянули в файле BPMN:

POST /runtime/process-instances

С этим телом запроса:

{
"processDefinitionKey":"user_msg"
}

Ответ будет:

{
"id": "44",
"url": "http://localhost:8080/activiti-rest/service/runtime/process-instances/44",
"businessKey": null,
"suspended": false,
"ended": false,
"processDefinitionId": "user_msg:1:43",
"processDefinitionUrl": "http://localhost:8080/activiti-rest/service/repository/process-definitions/user_msg:1:43",
"processDefinitionKey": "user_msg",
//other details...
}

Мы можем увидеть диаграмму нашего запущенного процесса, используя идентификатор экземпляра процесса, возвращенный с предыдущим ответом:

GET runtime/process-instances/44/diagram

Как упоминалось ранее, процесс ожидает завершения пользовательской задачи, поэтому он выделен на диаграмме:

./29aa325edd20eb15c6c9db0a236c9f7d.png

4.2. Завершение задачи

Давайте теперь посмотрим на нашу отложенную задачу, используя:

GET runtime/tasks

В ответе будет список ожидающих выполнения задач. На данный момент есть только одна задача — наша Пользовательская задача :

{
"data": [
{
"id": "49",
"url": "http://localhost:8080/activiti-rest/service/runtime/tasks/49",
"owner": null,
"assignee": "$INITIATOR",
"delegationState": null,
"name": "User Input Message",
"description": "User Task to take user input",
"createTime": "2017-10-04T17:33:07.205+05:30",
"dueDate": null,
// other details...
}
}

Наконец, давайте завершим эту задачу, используя идентификатор задачи 49 :

POST runtime/tasks/49

Это запрос POST, и нам нужно отправить поле действия , указывающее, что мы хотим сделать с задачей. Мы можем «решить», «завершить» или «удалить» задачу. Также мы можем передать массив переменных, необходимых для выполнения задачи.

В нашем случае мы должны передать поле «сообщение», которое является текстовым полем «Сообщение пользователя». Итак, наше тело запроса:

{
"action": "complete",
"variables": [{
"name": "message",
"value": "This is a User Input Message"
}]
}

5. Вывод

В этой статье мы обсудили, как можно использовать приложение Activiti Kickstart и предоставленный REST API.

Дополнительную информацию об activiti-rest можно найти в Руководстве пользователя , а подробности об activiti-app — в документации Alfresco .