Статьи

3 основных способа начать процесс BPM в JBoss

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

Планирование ваших проектов может включать проекты процессов, но задумывались ли вы о том, как можно инициировать процесс?

Возможно, у вас есть JBoss BPM Suite, работающий локально в вашей архитектуре, может быть, он работает в облаке, но где бы он ни был, вам все равно нужно будет сделать осознанный выбор о том, как инициировать процесс.

Здесь мы рассмотрим три основных способа, которыми вы можете лучше всего начать процесс JBoss BPM:

  1. Панель инструментов UI
  2. RestAPI
  3. клиентское приложение (API)
Кнопка Build & Deploy в верхнем правом углу.

Кнопка Build & Deploy в верхнем правом углу.

BPM Suite UI

Для полноты картины мы должны упомянуть, что возможность запуска экземпляра процесса существует в виде кнопки в инструментальной панели JBoss BPM Suite.

Когда вы вошли в JBoss BPM Suite и закончили разработку проекта, ваш проект BPM может быть построен и развернут следующим образом.

1
AUTHORING -> PROJECT AUTHORING -> TOOLS -> PROJECT EDITOR -> BUILD&DEPLOY (button)

Следующим шагом является запуск экземпляра процесса в перспективе управления процессом одним из двух способов.

1
2
3
1. PROCESS MANAGEMENT -> PROCESS DEFINITIONS -> start-icon
 
 2. PROCESS MANAGEMENT -> PROCESS DEFINITIONS -> magnifying-glass-icon -> in DETAILS panel -> NEW INSTANCE (button)
Определение процесса имеет значок запуска в правом углу.

Определение процесса имеет значок запуска в правом углу.

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

RestAPI

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

В подробном представлении определения процесса есть кнопка «Новый экземпляр».

В подробном представлении определения процесса есть кнопка «Новый экземпляр».

Не имеет значения, запускаете ли вы процесс из веб-приложения, мобильного приложения или создаете серверные службы для своего предприятия, чтобы использовать их в качестве отправной точки для процессов. Открытый RestAPI обеспечивает идеальный способ запуска вашего BPM-процесса и может быть показан в следующем примере кода.

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

Он отправляет команду запуска процесса и не ожидает обратной связи от вызываемого процесса BPM оценки клиента , так как это прямой процесс (STP).

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class RestClientSimple {
    private static final String BASE_URL = "http://localhost:8080/business-central/rest/";
    private static final String DEPLOYMENT_ID = "customer:evaluation:1.0";
    private static final String PROCESS_DEF_ID = "customer.evaluation";
     
    private static String username = "erics";
    private static String password = "bpmsuite";
    private static AuthenticationType type = AuthenticationType.FORM_BASED;
 
    public static void main(String[] args) throws Exception {
 
     System.out.println("Starting process instance: " + DEPLOYMENT_ID);
        System.out.println();
         
     // start a process instance with no variables.
        startProcess();
 
        System.out.println();
     System.out.println("Completed process instance: " + DEPLOYMENT_ID);
    }
 
    /**
     * Start a process using the rest api start call, no map variables passed.
     *
     * @throws Exception
     */
   public static void startProcess() throws Exception {
        String newInstanceUrl = BASE_URL + "runtime/" + DEPLOYMENT_ID + "/process/" + PROCESS_DEF_ID + "/start";
        String dataFromService = getDataFromService(newInstanceUrl, "POST");
        System.out.println("newInstanceUrl:["+newInstanceUrl+"]");
        System.out.println("--------");
        System.out.println(dataFromService);
        System.out.println("--------");
    }
 
<...SNIPPED MORE CODE...>
}

Основой здесь является настройка URL-адреса бизнес-центра, указывающего на начальный вызов RestAPI. В методе main можно найти вызов метода startProcess (), который создает URL-адрес RestAPI и захватывает ответ данных, отправленный из JBoss BPM Suite.

Чтобы узнать подробности о том, как это сделать, обратитесь к этому классу в полном объеме в рамках демонстрационного проекта JBoss BPM Suite и JBoss Fuse Integration .

Интермеццо на тестировании

Простой способ протестировать ваш процесс после его сборки и развертывания — использовать curl для отправки запроса процессу через RestAPI. Такой запрос выглядит следующим образом, сначала в общей форме, а затем в режиме реального времени через тот же проект оценки клиента, который использовался в предыдущем примере.

Общий вызов RestAPI и правильный запрос аутентификации выполняются в curl следующим образом:

Для процесса оценки клиента полный цикл использования curl для вызова процесса запуска, аутентификации нашего пользователя и получения ответа от JBoss BPM Suite должен обеспечить следующий результат.

1
2
3
4
5
 
Enter host password for user 'erics':  bpmsuite1!
 
{"status":"SUCCESS","url":"http://localhost:8080/business-central/rest/runtime/customer:evaluation:1.1/process/customer.evaluation/start?map_employee=erics","index":null,"commandName":null,"processId":"customer.evaluation","id":3,"state":2,"eventTypes":[]}
Результаты нашего тестирования с curl.

Результаты нашего тестирования с curl.

Мы видим завершенные экземпляры процесса в проекциях экземпляров процесса, как показано.

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

Третий и последний способ запуска ваших экземпляров процесса JBoss BPM Suite больше соответствует внедрению набора предопределенных представлений для заполнения истории отчетов и может основываться на исторических данных.

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

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

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

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

01
02
03
04
05
06
07
08
09
10
11
public static void populateSamples(String userId, String password, String applicationContext, String deploymentId) {
 
   RuntimeEngine runtimeEngine = getRuntimeEngine( applicationContext, deploymentId, userId, password );
   KieSession kieSession = runtimeEngine.getKieSession();
   Map processVariables;
 
   //qualify with very low interest rate, great credit, non-jumbo loan
   processVariables = getProcessArgs( "Amy", "12301 Wilshire", 333224449, 100000, 500000, 100000, 30 );
   kieSession.startProcess( "com.redhat.bpms.examples.mortgage.MortgageApplication", processVariables );
 
}

Как вы можете видеть, последняя строка — это то место, где индивидуальная ипотека передается в JBoss BPM Suite. Если вы изучите остальную часть класса, вы найдете несколько записей, запускаемых одна за другой.

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