SpringBoot Kie Server With jBPM-console

创建Kie Spring Boot App

创建骨架项目

打开https://start.jbpm.org/ 点击生成默认程序,修改包名则使用"Configure your business application"。 早期jbpm团队向Springboot提交了starter的PR,但是后来被拒绝了,所以现在在https://start.spring.io 是无法选择kie或者rules模块的,可能有的网文说可以生成。但是这已经是一个过时的消息了。 项目生成后,下载解压缩,进入business-application-service目录,使用launch.sh clean install即可进行启动程序(需要预先配置maven)。

如果成功启动则应该看到如下界面: images 访问:http://localhost:8090/rest/server,应该看到server的信息

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response type="SUCCESS" msg="Kie Server info">
    <kie-server-info>
        <capabilities>KieServer</capabilities>
        <capabilities>BRM</capabilities>
        <capabilities>BPM</capabilities>
        <capabilities>CaseMgmt</capabilities>
        <capabilities>BPM-UI</capabilities>
        <capabilities>DMN</capabilities>
        <location>http://localhost:8090/rest/server</location>
        <messages>
            <content>Server KieServerInfo{serverId='business-application-service-dev', version='7.14.0.Final', name='business-application-service Dev', location='http://localhost:8090/rest/server', capabilities=[KieServer, BRM, BPM, CaseMgmt, BPM-UI, DMN], messages=null}started successfully at Fri Dec 07 15:07:09 CST 2018</content>
            <severity>INFO</severity>
            <timestamp>2018-12-07T15:07:09.140+08:00</timestamp>
        </messages>
        <name>business-application-service Dev</name>
        <id>business-application-service-dev</id>
        <version>7.14.0.Final</version>
    </kie-server-info>
</response>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Springboot配置文件说明

#ServerID
kieserver.serverId=SpringBoot
#ServerName
kieserver.serverName=KIE Server SpringBoot
#rest服务路径
kieserver.restContextPath=/rest
#kieserver uri
kieserver.location=http://localhost:8090/rest/server
#Controller uri,jbpm-console或者drool-wb的rest controller地址
#kieserver.controllers=http://localhost:8080/jbpm-console/rest/controller

#kie server capabilities,是否启用endpoints
kieserver.drools.enabled=true
kieserver.dmn.enabled=true
kieserver.jbpm.enabled=true
kieserver.jbpmui.enabled=true
kieserver.casemgmt.enabled=true

#kie server capabilities
kieserver.drools.enabled=true
kieserver.dmn.enabled=true
kieserver.jbpm.enabled=true
kieserver.jbpmui.enabled=true
kieserver.casemgmt.enabled=true

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

kie server注册

kie server启动后会自动向配置的controller注册,如果注册成功,则可以在kie-web中看到server images 把sample应用部署到kie-server上 images 访问kie-server rest接口:http://localhost:8090/rest/server/containers

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response type="SUCCESS" msg="List of created containers">
    <kie-containers>
        <kie-container container-alias="evaluation" container-id="evaluation_1.0.0-SNAPSHOT" status="STARTED">
            <config-items>
                <itemName>KBase</itemName>
                <itemValue></itemValue>
                <itemType>BPM</itemType>
            </config-items>
            <config-items>
                <itemName>KSession</itemName>
                <itemValue></itemValue>
                <itemType>BPM</itemType>
            </config-items>
            <config-items>
                <itemName>MergeMode</itemName>
                <itemValue>MERGE_COLLECTIONS</itemValue>
                <itemType>BPM</itemType>
            </config-items>
            <config-items>
                <itemName>RuntimeStrategy</itemName>
                <itemValue>SINGLETON</itemValue>
                <itemType>BPM</itemType>
            </config-items>
            <messages>
                <content>Container evaluation_1.0.0-SNAPSHOT successfully created with module evaluation:evaluation:1.0.0-SNAPSHOT.</content>
                <severity>INFO</severity>
                <timestamp>2018-12-07T17:17:31.981+08:00</timestamp>
            </messages>
            <release-id>
                <artifact-id>evaluation</artifact-id>
                <group-id>evaluation</group-id>
                <version>1.0.0-SNAPSHOT</version>
            </release-id>
            <resolved-release-id>
                <artifact-id>evaluation</artifact-id>
                <group-id>evaluation</group-id>
                <version>1.0.0-SNAPSHOT</version>
            </resolved-release-id>
            <scanner status="DISPOSED"/>
        </kie-container>
    </kie-containers>
</response>
1
2
3
4
5
6
7
8
9
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
39
40
41
42
43

使用api发起流程

endpoint

http://localhost:8090/rest/server/containers/evaluation_1.0.0-SNAPSHOT/processes/evaluation/instances evaluation_1.0.0-SNAPSHOT是container的名称,evaluation是流程的名称

http method

POST

params format


{
    "employee": "krisv",
	"reason":"restful api testing springboot"
}
1
2
3
4
5

auth

传递的用户,需要在kie-server上存在,需要特别注意

package com.company.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;


@Configuration("kieServerSecurity")
@EnableWebSecurity
public class DefaultWebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
        .csrf().disable()
        .authorizeRequests()
        .antMatchers("/rest/*").authenticated()
        .and()
        .httpBasic();
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser("user").password("user").roles("kie-server");
        auth.inMemoryAuthentication().withUser("wbadmin").password("wbadmin").roles("admin");
        auth.inMemoryAuthentication().withUser("krisv").password("krisv").roles("admin");
        auth.inMemoryAuthentication().withUser("mary").password("mary").roles("admin");
        auth.inMemoryAuthentication().withUser("kieserver").password("kieserver1!").roles("kie-server");
    }
}

1
2
3
4
5
6
7
8
9
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

登录查看任务

使用krisv用户在jbpm-console登录,查看个人任务 images

注意task in list 与tasks列表是有区别的,管理员才可以看全部task列表