windows 直接在tomcat 下 放war包总是有这样那样的问题,而且很让人束手无策,我都很怀疑官方自己测了没就放出来,刚开始是tomcat,workbench 能打开,但是构建项目报错,后来换了wildfly 部署 workbench 环节没啥问题,轮到kie-sever出毛病,我都无解,看大家都讲,docker 简单方便直接,那就试试了,试完之后都感觉这个挺不错的,模拟 linux环境。
1.docker 安装
docker 从官网下载,https://www.docker.com/ 我下的是win10版本的,window 下也只有10,和win10的一项技术 "Windows-native Hyper-V virtualization"有关。安装包下完之后直接双击安装,一直点确认就好,期间可能会有几次重启,记得保存下代码。
安装完之后先别着急,右键左面右下角的鲸鱼图标点击setting,然后点击Advance,适当调整以下虚拟机的cpu 内存等参数。
2.workbench 的安装
先右键点击左下角windows,选择powershell
先拉镜像到本地
docker pull jboss/drools-workbench-showcase
然后键入这个命令,这个命令是jboss官方写的,其实都挺简单的,下面这部分照搬官方。
docker run -p 8080:8080 -p 8001:8001 -d --name drools-workbench jboss/drools-workbench-showcase:latest
然后呢你就可以访问drools workbench了
以下是workbench相关的账号密码:
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
如果你想看docker 环境中的相关日志,可以键入以下命令
docker logs -f drools-workbench
workbench的安装基本没啥事了
http://localhost:8080/drools-wb 点击这个登陆workbench
3.kie-server安装
kie-server 的安装和 workbench 的安装差不多,先拉镜像
docker pull jboss/kie-server-showcase
然后启动kie-server 并且和workbench 关联
docker run -p 8180:8080 -d --name kie-server --link drools-workbench:kie_wb jboss/kie-server-showcase:latest
kie-server也安装完成 http://localhost:8180/kie-server/services/rest/server/ 查看kie-sever状态
下面再介绍workbench 及 kie-server
4.应用
首先再workbench中创建一个project
项目创建完成之后,需要创建一些文件夹,文件,下边是类型
先创建软件包,我创建了两个,一个是存放数据对象的bean,一个是存放规则rule。
之后,再创建 数据对象 profession
数据对象 person
完成之后开始创建规则“rule_001”,规则需要import包,同一个包下面不用,我是放在不同包下面
导入完成,编辑好规则
点击右上角的校验,校验成功就可以了,然后再在rule包下创建场景测试。
依旧是先导入数据包,然后编辑测试场景
保存,运行测试场景,没问题就转到项目设置修改以下项
kiesession 很重要,kie session 的 name要记住,项目中要用到
完成之后依次点击 build deploy.
在主页点击server,启动server服务
创建一个空白maven项目,需要导入kie-server相关包,及drools包
pom.xml如下
4.0.0
XXX //项目名称id,自己定义
kieserver
1.0-SNAPSHOT
junit
junit
3.8.1
test
org.drools
drools-core
7.12.0.Final
org.drools
drools-compiler
7.12.0.Final
org.kie.server
kie-server
7.12.0.Final
org.slf4j
slf4j-api
1.7.22
com.alibaba
fastjson
1.2.51
在Java项目中添加workbench中的数据对象,可以直接拷贝过来,注意数据对象的包名要和 workbench中的名称一模一样
进这个网站查看容器id http://localhost:8180/kie-server/services/rest/server/containers
创建一个启动函数如下
public class ContainerTest {
public static final String SERVER_URL = "http://localhost:8180/kie-server/services/rest/server";
public static final String PASSWORD = "密码不给看";
public static final String USERNAME = "密码不给看";
public static final String KIE_CONTAINER_ID = "demo_1.0.0";
public static void main(String[] args) {
// KisService 配置信息设置
KieServicesConfiguration kieServicesConfiguration =
KieServicesFactory.newRestConfiguration(SERVER_URL, USERNAME, PASSWORD, 10000L);
kieServicesConfiguration.setMarshallingFormat(MarshallingFormat.JSON);
// 创建规则服务客户端
KieServicesClient kieServicesClient = KieServicesFactory.newKieServicesClient(kieServicesConfiguration);
RuleServicesClient ruleServicesClient = kieServicesClient.getServicesClient(RuleServicesClient.class);
// 规则输入条件
Person person = new Person();
person.setAge(30);
person.setSexy("boy");
Profession profession =new Profession();
profession.setTitle("soft");
person.setProfession(profession);
// 命令定义,包含插入数据,执行规则
KieCommands kieCommands = KieServices.Factory.get().getCommands();
List> commands = new LinkedList<>();
commands.add(kieCommands.newInsert(person, "person"));
commands.add(kieCommands.newFireAllRules());
ServiceResponse results = ruleServicesClient.executeCommandsWithResults(KIE_CONTAINER_ID,
kieCommands.newBatchExecution(commands, "k2"));
// 返回值读取
Person value = (Person) results.getResult().getValue("person");
System.out.println(JSONObject.toJSON(value).toString());
}
}
输出结果
{"profession":{"grade":18,"title":"soft"},"sexy":"boy","name":"tom","age":123}
以上完成drools workbench 的搭建以及kie-server的搭建
5.注意事项
版本发布之后,windows 10 版本想更新规则必须升级版本号,因为生成过的版本删不掉,又不能覆盖(覆盖有问题),所以只能提升版本,但是linux可以在相应maven库中删除包,然后更新