简述
drools的BRMS(业务规则管理系统)
起先叫 guvnor
然后叫 drools-workbench
从7.18版本开始叫 Business Central Workbench
Business-Central Workbench == Drools Workbench + jBPM Workbench
drools-workbench 用来管理规则
kie-server 则是运行规则的容器服务
老版本Workbench 有提供支持tomcat的war包
新版本只支持部署到wildfly中 , 还好有docker镜像,不用为wildfly的配置而分心。
docker镜像有两种jboss/business-central-workbench-showcase
、jboss/business-central-workbench
带 showcase 的已经配好一些默认账户了, 可直接使用(用于生产的话,还是应当单独配的)。
drools版本为 7.28.0.Final
执行脚本
把启动内存调大点 同时设置git绑定0.0.0.0网络
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
|
root@sharezx:/mnt#
root@sharezx:/mnt# jopts=" -Xms2048m -Xmx2048m -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512m -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -Dorg.uberfire.nio.git.ssh.host=0.0.0.0 "
root@sharezx:/mnt#
root@sharezx:/mnt# docker run -p 8080:8080 -p 8001:8001 -e JAVA_OPTS="$jopts" -d --name drwb jboss/business-central-workbench-showcase:7.28.0.Final
e2fc905553936b8ff88033d677568fbd8b8167dc1efe2f85d3ca465b4ca82739
root@sharezx:/mnt#
root@sharezx:/mnt#
root@sharezx:/mnt#
root@sharezx:/mnt# docker logs -f drwb
Running business-central workbench on JBoss Wildfly...
JAVA_OPTS already set in environment; overriding default settings with values: -Xms2048m -Xmx2048m -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512m -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -Dorg.uberfire.nio.git.ssh.host=0.0.0.0
=========================================================================
JBoss Bootstrap Environment
JBOSS_HOME: /opt/jboss/wildfly
JAVA: /usr/lib/jvm/java/bin/java
JAVA_OPTS: -server -Xms2048m -Xmx2048m -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512m -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -Dorg.uberfire.nio.git.ssh.host=0.0.0.0
=========================================================================
08:45:37,948 INFO [org.jboss.modules] (main) JBoss Modules version 1.8.6.Final
08:45:39,524 INFO [org.jboss.msc] (main) JBoss MSC version 1.4.3.Final
08:45:39,555 INFO [org.jboss.threads] (main) JBoss Threads version 2.3.2.Final
。。。
略去
。。。
08:47:09,102 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://127.0.0.1:9990/management
08:47:09,102 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990
08:47:09,102 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 14.0.1.Final (WildFly Core 6.0.2.Final) started in 92704ms - Started 860 of 1043 services (326 services are lazy, passive or on-demand)
08:47:29,341 INFO [org.kie.workbench.common.screens.datasource.management.util.ServiceUtil] (pool-17-thread-1) Getting reference to managed bean: WildflyDataSourceProvider
08:47:29,372 INFO [org.kie.workbench.common.screens.datasource.management.util.ServiceUtil] (pool-17-thread-1) Getting reference to managed bean: WildflyDriverProvider
08:47:30,627 INFO [org.kie.workbench.common.screens.datasource.management.backend.DataSourceManagementBootstrap] (pool-17-thread-1) Initialize deployments task finished successfully.
|
在看到 successfully 时,说明启动完成
ctrl + c 退出日志查看
接着启动kie-server
这个启动比较快就不看日志了 稍等一会
curl 可看到数据正确返回
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
|
root@sharezx:/mnt# docker run -p 8180:8080 -d --name kwb --link drwb:kie_wb jboss/kie-server-showcase:7.18.0.Final
978bee953f4fcc5a8bfdfae449d2ed3ea26f1525eed0c761f0d953cc5611bc35
root@sharezx:/mnt#
root@sharezx:/mnt# curl -u admin:admin http://192.168.88.3:8180/kie-server/services/rest/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>BRP</capabilities>
<capabilities>DMN</capabilities>
<capabilities>Swagger</capabilities>
<location>http://172.17.0.4:8080/kie-server/services/rest/server</location>
<messages>
<content>Server KieServerInfo{serverId='kie-server-978bee953f4f', version='7.18.0.Final', name='kie-server-978bee953f4f', location='http://172.17.0.4:8080/kie-server/services/rest/server', capabilities=[KieServer, BRM, BPM, CaseMgmt, BPM-UI, BRP, DMN, Swagger]', messages=null', mode=DEVELOPMENT}started successfully at Mon Nov 25 08:56:02 UTC 2019</content>
<severity>INFO</severity>
<timestamp>2019-10-28T08:56:02.443Z</timestamp>
</messages>
<mode>DEVELOPMENT</mode>
<name>kie-server-978bee953f4f</name>
<id>kie-server-978bee953f4f</id>
<version>7.18.0.Final</version>
</kie-server-info>
</response>
root@sharezx:/mnt#
|
执行脚本-整理
1
2
3
4
5
6
7
8
9
10
11
12
13
|
docker pull jboss/business-central-workbench-showcase:7.28.0.Final
docker pull jboss/kie-server-showcase:7.28.0.Final
jopts=" -Xms2048m -Xmx2048m -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512m -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -Dorg.uberfire.nio.git.ssh.host=0.0.0.0 "
docker run -p 8080:8080 -p 8001:8001 -e JAVA_OPTS="$jopts" -d --name drwb jboss/business-central-workbench-showcase:7.28.0.Final
docker logs -f drwb
docker run -p 8180:8080 -d --name kwb --link drwb:kie_wb jboss/kie-server-showcase:7.18.0.Final
curl -u admin:admin http://192.168.88.3:8180/kie-server/services/rest/server/
|
web面板的账号
1
2
3
4
5
6
7
8
|
USER PASSWORD ROLE
*********************************************
admin admin admin,analyst,kiemgmt
krisv krisv admin,analyst
john john analyst,Accounting,PM
sales-rep sales-rep analyst,sales
katy katy analyst,HR
jack jack analyst,IT
|
使用规则管理平台
访问管理平台
http://192.168.88.3:8080/business-central/
输入账户 密码 admin admin
点击 design
点击默认空间 MySpace
创建工程
点击创建 右侧的 Add Project
创建 demo01 工程
创建规则
- 先创建fact
点击 Add Asset
选择 数据对象
名称为 Person 软件包默认 com.myspace.demo01
点击 确定
进入 Person的编辑界面
点击 添加字段
设置 id = age 类型为 Integer
点击 创建
fact编辑完毕
点击右上方的 保存 按钮
在保存按钮的最右侧有个叉叉 ,点击叉叉 回到工程目录
- 创建drl规则文件
点击 Add Asset
选择 DRL文件
名称为 hello
点击 确定
设置规则内容为
1
2
3
4
5
6
7
8
|
package com.myspace.demo01;
rule "hello"
when
ps: Person()
then
ps.setAge(22);
end
|
然后同上一步一样
保存 点叉叉
创建测试
点击 Add Asset
选择 Test Scenario(Legacy)
名称为 test01
点击 确定
点击 GIEVN 弹出对话框
填写事实名称为 p
再点旁边的添加
点击 EXPECT 弹出对话框
点击第二行 事实值 p 右侧的 添加 按钮
然后可以看到 Person 'p' 有下列值
点击这段文字 弹出对话框
选择age 按确定
在新出现的 age 等于
后面输入框中填入 5
点击右上方的 运行测试场景
可以看到出现了爆红的警告 并且提示实际结果为22
调整期望结果为22 再次运行 则通过
点击保存 和 叉叉
至此 测试结束
工程的构建部署
在工程标题 demo01下面
有个 资产 选项
资产的最右侧 点击 设置
可看到 General Settings
下面有个git 的url 为 ssh://0.0.0.0:8001/MySpace/demo01
这就是该项目的git仓库地址
如果clone到本地 可发现该项目就是个maven项目
1
|
git clone http://admin:admin@192.168.88.3:8080/business-central/git/MySpace/demo01
|
构建
继续看管理平台的工程
点击构建旁的下拉箭头,点击 Build & Install
提示成功后
点击右上角问号❓和药箱之间的 设置 按钮
点击 Artifacts
可以看到刚刚的项目已经构建发布到其maven仓库了
部署
回到demo01项目页面
点击 部署
在提示 部署成功后
点击左上方Menu菜单旁的下拉箭头
选择 部署一栏的 执行服务器
可以看到
kie-server-978bee953f4f 是kie-server的一个节点
也就是最开始启动的 kwb 容器
第二列 DEPLOYMENT UNITS 下方
可看到之前的部署单元 demo01_1.0.0-SNAPSHOT
通过http请求也能查询到部署单元
1
|
curl -H "Content-Type:application/json" -u admin:admin http://192.168.88.3:8180/kie-server/services/rest/server/containers
|
远程调用
发起请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
curl -H "Content-Type:application/json" -u admin:admin -X POST --data '{
"lookup" : null,
"commands" : [ {
"insert" : {
"object" : {"com.myspace.demo01.Person":{"age" : null}},
"out-identifier" : "p",
"return-object" : true,
"entry-point" : "DEFAULT",
"disconnected" : false
}
}, {
"fire-all-rules" : {
"max" : -1,
"out-identifier" : null
}
}, {
"dispose" : { }
} ]
}' 'http://192.168.88.3:8180/kie-server/services/rest/server/containers/instances/demo01'
|
响应结果为
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
{
"type" : "SUCCESS",
"msg" : "Container demo01 successfully called.",
"result" : {
"execution-results" : {
"results" : [ {
"value" : {"com.myspace.demo01.Person":{
"age" : 22
}},
"key" : "p"
} ],
"facts" : [ {
"value" : {"org.drools.core.common.DefaultFactHandle":{
"external-form" : "0:1:1922407796:1922407796:1:DEFAULT:NON_TRAIT:com.myspace.demo01.Person"
}},
"key" : "p"
} ]
}
}
}
|
可以看到person的age 被更新成了 22
测试成功
文章作者
duansheli
上次更新
2019-12-25
(325c7b3)