Workbench 与 kie-server 搭建及使用
本篇文章基于 Drools 7.5.0.Final,6.x 版本与7.x在安装上基本类似,但7.x 提供了 docker 镜像,使得 workbench 及 kie-server 的安装比6.x容易了很多倍。
首先需要准备 Docker 环境,Docker 的安装过程不在此赘述,可以参考官网安装教程或者菜鸟教程。安装完成后,由于 Docker 仓库在国外,下载速度可能会很慢,所以可以先配置下 Docker 官方在国内的加速器(其它的镜像加速器,如:阿里、网易等,可能没有 Drools 的镜像),配置方式参考:Docker 中国官方镜像加速。
1. Workbench 安装
第一步:从镜像仓库拉取 drools-workbench 的镜像文件:
docker pull jboss/drools-workbench-showcase
- 1
第二步:启动 drools-workbench 镜像:
docker run -p 8080:8080 -p 8001:8001 -d --name drools-wb jboss/drools-workbench-showcase:latest
- 1
当容器与应用都启动完成后,你就可以使用如下用户访问地址 http://localhost:8080/drools-wb 去体验 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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
上面是 showcase 中的用户与角色,如果需要自定义用户体系,需要自己创建 Docker 镜像并对 jboss/drools-workbench 镜像进行扩展,这里不做展开,具体操作请参考Extending this image。
2. Workbench 使用
2.1. 项目创建
进入主页,点击 Design 中的 projects 链接,进入项目管理界面
点击右上角的【Add Project】进行添加项目,填写项目名称及 Maven 三件套完成项目创建。
2.2. 包创建
点击创建好的项目,进入主界面,点击右上角的【Create New Asset】,选择【软件包】,创建数据对象存放的包 com.qchery.harper.fact,再创建规则文件存放的包 com.qchery.harper.rule。
所有有资源都是通过【Create New Asset】进行创建,后面将不再赘述。
2.3. 数据对象创建
选择【数据对象】进行 Fact 的创建,首先创建 Address 对象。
点击【添加字段】为当前对象添加字段,设置字段类型及描述,字段添加完成后,可以点击【源代码】查看生成的对象是否符合自己的要求,如果符合,点击【保存】即可。
创建 ApplyInfo 对象,ApplyInfo 中会包含一个 Address 对象,由此可以看出 Drools 对自定义类型的支持是很好的。
2.4. 规则创建
对象定义完成后,我们来创建一个简单规则,同样创建 Asset,选择【Guided 规则】,在配置规则内容前,需要先添加所依赖的数据对象
依靠刚才添加的数据对象,配置一个简单的规则如下:
配置完成后,同样可以通过【源代码】查看规则的生成情况,另外,还可以点击【校验】去保证规则可以正常编译通过:
2.5. 场景测试
规则编写完成后,需要测试通过才可以发布生产,在 workbench 中,测试也是可以通过配置完成的。
点击创建 Asset,选择【测试场景】,添加所依赖的数据对象,并配置测试条件与期望结果,这里,为了简单起见,我只配置了正向的测试场景,实际应用的过程中,应该还需要配置反向测试场景,保证规则的正确性。
2.6. 规则发布
规则发布前,需要先配置 KieBase 与 KieSession,也就是配置 kmodule.xml 文件,在 workbench 里面,kmodule.xml 文件也是通过界面配置,然后自动生成的。
点击项目主页(Create New Asset 所在页面)右上角的【Settings】按钮,再选择【知识库与会话】
进入配置界面,即可配置知识库与会话,对规则进行灵活的分组,提高规则的可复用性。
配置完成后,即可点击项目主页的【Build&Deploy】进行发布,规则会发布到本地的 maven 仓库中。
3. Kie-server 安装及启动
与 Workbench 的安装方式一样,需要先从仓库拉取最新镜像文件:
docker pull jboss/kie-server-showcase
- 1
拉取完成后,启动 kie-server,并链接到一个已经启动的 Workbench 上
docker run -p 8180:8080 -d --name kie-server --link drools-wb:kie_wb jboss/kie-server-showcase:latest
- 1
启动完成后,点击 Workbench 首页中【DevOps】下在 【servers】链接,即可看到刚刚发布的规则容器与注册好的 kie-server 服务器,此时只需要选择容器,并点击【启动】就可以将容器与 kie-server 服务器关联起来。
启动完成后,容器界面与服务器界面上都可以看到彼此的信息,我们可以通过 kie-server 提供的 Rest 接口查看服务器及容器的相关信息,默认的用户名密码为 kieserver/kieserver1!
,根据以上配置可以查看到的信息如下:
服务器信息:http://localhost:8180/kie-server/services/rest/server/
容器信息:http://localhost:8180/kie-server/services/rest/server/containers
4. Kie-server 使用
在调用 Rest 接口前,需要先在本地定义一套与 WorkBench 中完全一致的数据对象,可以通过拷贝 Workbench 里面生成的源代码来快速实现,远程规则调用实现代码如下:
import com.qchery.harper.fact.Address;
import com.qchery.harper.fact.ApplyInfo;
import org.kie.api.KieServices;
import org.kie.api.command.Command;
import org.kie.api.command.KieCommands;
import org.kie.api.runtime.ExecutionResults;
import org.kie.server.api.marshalling.MarshallingFormat;
import org.kie.server.api.model.ServiceResponse;
import org.kie.server.client.KieServicesClient;
import org.kie.server.client.KieServicesConfiguration;
import org.kie.server.client.KieServicesFactory;
import org.kie.server.client.RuleServicesClient;
import java.util.LinkedList;
import java.util.List;
public class Main {
public static final String SERVER_URL = "http://localhost:8180/kie-server/services/rest/server";
public static final String PASSWORD = "kieserver1!";
public static final String USERNAME = "kieserver";
public static final String KIE_CONTAINER_ID = "harper_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);
// 规则输入条件
ApplyInfo applyInfo = new ApplyInfo();
applyInfo.setAge(19);
Address familyAddress = new Address();
familyAddress.setProvince("aa");
applyInfo.setFamilyAddress(familyAddress);
// 命令定义,包含插入数据,执行规则
KieCommands kieCommands = KieServices.Factory.get().getCommands();
List<Command<?>> commands = new LinkedList<>();
commands.add(kieCommands.newInsert(applyInfo, "applyInfo"));
commands.add(kieCommands.newFireAllRules());
ServiceResponse<ExecutionResults> results = ruleServicesClient.executeCommandsWithResults(KIE_CONTAINER_ID,
kieCommands.newBatchExecution(commands, "ksessionId"));
// 返回值读取
ApplyInfo value = (ApplyInfo) results.getResult().getValue("applyInfo");
System.out.println(value);
}
}
- 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
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
参考链接:
参考文档:
https://blog.youkuaiyun.com/gendlee1991/article/details/77984814
drools workbench 在wildfly上的搭建:
https://blog.youkuaiyun.com/gendlee1991/article/details/77984814
https://blog.youkuaiyun.com/lei32323/article/details/74453028
https://blog.youkuaiyun.com/u013115157/article/details/53156989
https://blog.youkuaiyun.com/u013115157/article/details/52486641
https://blog.youkuaiyun.com/sqzhao/article/details/77865956
https://blog.youkuaiyun.com/v_JULY_v/article/details/7624837
https://blog.youkuaiyun.com/Liangjun_Feng/article/details/79698809
https://blog.youkuaiyun.com/lei32323/article/details/74453028
https://blog.youkuaiyun.com/YChenFeng/article/details/74980531
https://blog.youkuaiyun.com/u013115157/article/details/53156989
https://blog.youkuaiyun.com/iteye_9584/article/details/82583105
https://bbs.youkuaiyun.com/topics/392165288
https://blog.youkuaiyun.com/Howie_zhw/article/details/73206836
https://blog.youkuaiyun.com/nan123456789/article/details/84140768
https://blog.youkuaiyun.com/lifetragedy/article/details/74280089
https://blog.youkuaiyun.com/wsdc0521/article/details/50372815
AI换脸
https://blog.youkuaiyun.com/BEYONDMA/article/details/100594136
hash表实现
https://blog.youkuaiyun.com/v_JULY_v/article/details/6256463
spring书籍:
7天学会spring+cloud教程
Spring 5 新功能:功能性 Web 框架 -
Spring Boot实战 ,丁雪丰 (译者)
Spring.in.Action.4th.Edition
springCloud参考指南
中断线程
https://blog.youkuaiyun.com/anhuidelinger/article/details/11746365
hadoop权威指南
https://www.jb51.net/books/626566.html
软件工程方法:
1、uml 设计模式 网络拓扑图 依赖关系 联系
2、模型 主要组件和主要数据(实体)的流转控制信息
3、多角色业务流程图 时序图 交互
4、数据流(工件加工流程、微服务、多出来的领域对象既代表对应服务端一个domain、协议、互操作、BO|VO|DTO|POJO、dsl、rest、webservice、dubbo、http、api)、
逻辑流(控制流、规则引擎、工作流引擎、自动化、人工智能、预测模型、java|python|shell)、状态流(除了数据相关的对象,其他需要无状态、有限状态机)
5、分层架构(复用、功能层级、组件模块) ER图(结构数据关系)物理|逻辑架构 问题域与解域(需求、概要详细设计) DDD 领域分析模式 领域分析模型 领域特定语言
6、功能、非功能需求,系统自动化运维监控(devops、k8s、质量管控、bug、需求管理、架构管理、指标优化)
7、发展,拓展性(模块组件化、方便需求变更、面向接口设计、DDD)、方便维护(代码易读、容易部署)、
容易测试(自动化测试、TDD、单元测试、集成测试)、体验好(UI、前端、UX)、响应快事务实时(后端架构技术,cap)、敏捷开发、结对编程、促进沟通、规范安全性质量报告把控、项目进度成功把控总结 UTDD ATDD BDD RBE DDD
敏捷开发:
https://www.cnblogs.com/qixuejia/p/5863216.html
https://baike.baidu.com/item/%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91/7108658?fromtitle=%E6%95%8F%E6%8D%B7%E5%BC%80%E5%8F%91&fromid=5618867&fr=aladdin
https://www.uperform.cn/
https://baike.baidu.com/item/%E7%BB%93%E5%AF%B9%E7%BC%96%E7%A8%8B/7526152?fr=aladdin
https://blog.youkuaiyun.com/MOY37RQW1JarN33BgZk/article/details/78879719
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E7%89%B9%E6%80%A7%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91&rsv_pq=c625ddd800079aee&rsv_t=6091%2Fq54Z3qbaeDWvRC47hvJqYiO01K%2F24yI4FI%2B2a999eIDua62ED1mWRw&rqlang=cn&rsv_enter=1&rsv_dl=ib&rsv_n=2&rsv_sug3=1
https://www.cnblogs.com/ego/articles/1760517.html
https://blog.youkuaiyun.com/tianxuhong/article/details/44919315
https://blog.youkuaiyun.com/enweitech/article/details/68944260
https://blog.youkuaiyun.com/ejinxian/article/details/70212208
https://blog.youkuaiyun.com/wangjianan7357/article/details/81592109
https://blog.youkuaiyun.com/ejinxian/article/details/70212208
https://blog.youkuaiyun.com/qq_39752804/article/details/81432645
https://blog.youkuaiyun.com/WuLex/article/details/80747165
https://blog.youkuaiyun.com/qq_35368183/article/details/84558134
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E7%B3%BB%E7%BB%9F%E6%A8%A1%E5%9E%8B%E5%9B%BE&rsv_pq=e64ab2be0001d630&rsv_t=16f3dVp%2Bo5piCkg37%2F2MQsRSPRv6wrL1bEHU%2BZhu%2F11FfueTXxIqa5B0zMU&rqlang=cn&rsv_enter=1&rsv_dl=ib&rsv_n=2&rsv_sug3=1
https://www.cnblogs.com/itsharehome/p/8120311.html
https://blog.youkuaiyun.com/zy103118/article/details/79713535
https://baike.baidu.com/item/RUP/8924595?fr=aladdin
https://blog.youkuaiyun.com/qb200903527/article/details/10056949
k8s学习:
https://blog.youkuaiyun.com/hanyajun0123/article/details/85062863
https://blog.youkuaiyun.com/bbwangj/article/details/82866927
https://blog.youkuaiyun.com/huakai_sun/article/details/82378856
https://blog.youkuaiyun.com/weixin_39686421/article/details/80353330
https://blog.youkuaiyun.com/liumiaocn/article/details/52366063
https://blog.youkuaiyun.com/weixin_43277643/article/details/83382532
https://blog.youkuaiyun.com/dfhgshgdf/article/details/80472192
https://blog.youkuaiyun.com/kangi/article/details/84957644
https://blog.youkuaiyun.com/qq_37175369/article/details/79878834
k8s实践:
https://www.kubernetes.org.cn/5480.html
https://blog.youkuaiyun.com/boling_cavalry/article/details/91346780
https://blog.youkuaiyun.com/hopeztm/article/details/78731774
https://blog.youkuaiyun.com/guanjin2834/article/details/80134025
https://blog.youkuaiyun.com/boling_cavalry/article/details/87510822
可视化数据分析:
http://baijiahao.baidu.com/s?id=1598426519975889351&wfr=spider&for=pc
tensorflow github
https://blog.youkuaiyun.com/c20081052/article/details/81902860
资料:
https://pan.baidu.com/share/init?surl=thDdka5oCgtqV0pmK88MKg
https://link.zhihu.com/?target=https%3A//github.com/ysicing/kubernetes-handbook
https://yq.aliyun.com/articles/221687
https://www.imooc.com/article/80672
https://blog.youkuaiyun.com/xichenguan/article/details/79033611
https://minikube.sigs.k8s.io/docs/start/windows/