Workbench 与 kie-server 搭建及使用

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 链接,进入项目管理界面

Workbench 与 kie-server 搭建及使用_第1张图片

点击右上角的【Add Project】进行添加项目,填写项目名称及 Maven 三件套完成项目创建。

Workbench 与 kie-server 搭建及使用_第2张图片

2.2. 包创建

点击创建好的项目,进入主界面,点击右上角的【Create New Asset】,选择【软件包】,创建数据对象存放的包 com.qchery.harper.fact,再创建规则文件存放的包 com.qchery.harper.rule。

所有有资源都是通过【Create New Asset】进行创建,后面将不再赘述。

Workbench 与 kie-server 搭建及使用_第3张图片

2.3. 数据对象创建

选择【数据对象】进行 Fact 的创建,首先创建 Address 对象。

Workbench 与 kie-server 搭建及使用_第4张图片

点击【添加字段】为当前对象添加字段,设置字段类型及描述,字段添加完成后,可以点击【源代码】查看生成的对象是否符合自己的要求,如果符合,点击【保存】即可。

Workbench 与 kie-server 搭建及使用_第5张图片

创建 ApplyInfo 对象,ApplyInfo 中会包含一个 Address 对象,由此可以看出 Drools 对自定义类型的支持是很好的。

Workbench 与 kie-server 搭建及使用_第6张图片

2.4. 规则创建

对象定义完成后,我们来创建一个简单规则,同样创建 Asset,选择【Guided 规则】,在配置规则内容前,需要先添加所依赖的数据对象

Workbench 与 kie-server 搭建及使用_第7张图片

依靠刚才添加的数据对象,配置一个简单的规则如下:

Workbench 与 kie-server 搭建及使用_第8张图片

配置完成后,同样可以通过【源代码】查看规则的生成情况,另外,还可以点击【校验】去保证规则可以正常编译通过:

Workbench 与 kie-server 搭建及使用_第9张图片

2.5. 场景测试

规则编写完成后,需要测试通过才可以发布生产,在 workbench 中,测试也是可以通过配置完成的。

点击创建 Asset,选择【测试场景】,添加所依赖的数据对象,并配置测试条件与期望结果,这里,为了简单起见,我只配置了正向的测试场景,实际应用的过程中,应该还需要配置反向测试场景,保证规则的正确性。

Workbench 与 kie-server 搭建及使用_第10张图片

2.6. 规则发布

规则发布前,需要先配置 KieBase 与 KieSession,也就是配置 kmodule.xml 文件,在 workbench 里面,kmodule.xml 文件也是通过界面配置,然后自动生成的。

点击项目主页(Create New Asset 所在页面)右上角的【Settings】按钮,再选择【知识库与会话】

Workbench 与 kie-server 搭建及使用_第11张图片

进入配置界面,即可配置知识库与会话,对规则进行灵活的分组,提高规则的可复用性。

Workbench 与 kie-server 搭建及使用_第12张图片

配置完成后,即可点击项目主页的【Build&Deploy】进行发布,规则会发布到本地的 maven 仓库中。

Workbench 与 kie-server 搭建及使用_第13张图片

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 服务器关联起来。

Workbench 与 kie-server 搭建及使用_第14张图片

启动完成后,容器界面与服务器界面上都可以看到彼此的信息,我们可以通过 kie-server 提供的 Rest 接口查看服务器及容器的相关信息,默认的用户名密码为 kieserver/kieserver1!,根据以上配置可以查看到的信息如下:

服务器信息:http://localhost:8180/kie-server/services/rest/server/

Workbench 与 kie-server 搭建及使用_第15张图片

容器信息:http://localhost:8180/kie-server/services/rest/server/containers

Workbench 与 kie-server 搭建及使用_第16张图片

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> commands = new LinkedList<>();
        commands.add(kieCommands.newInsert(applyInfo, "applyInfo"));
        commands.add(kieCommands.newFireAllRules());
        ServiceResponse 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

参考链接:

  1. drools-workbench 安装说明
  2. kieserver 安装说明
  3. Drools Documention

参考文档:
https://blog.csdn.net/gendlee1991/article/details/77984814

drools workbench 在wildfly上的搭建:
https://blog.csdn.net/gendlee1991/article/details/77984814
https://blog.csdn.net/lei32323/article/details/74453028
https://blog.csdn.net/u013115157/article/details/53156989
https://blog.csdn.net/u013115157/article/details/52486641
https://blog.csdn.net/sqzhao/article/details/77865956
https://blog.csdn.net/v_JULY_v/article/details/7624837
https://blog.csdn.net/Liangjun_Feng/article/details/79698809
https://blog.csdn.net/lei32323/article/details/74453028
https://blog.csdn.net/YChenFeng/article/details/74980531
https://blog.csdn.net/u013115157/article/details/53156989
https://blog.csdn.net/iteye_9584/article/details/82583105
https://bbs.csdn.net/topics/392165288
https://blog.csdn.net/Howie_zhw/article/details/73206836
https://blog.csdn.net/nan123456789/article/details/84140768
https://blog.csdn.net/lifetragedy/article/details/74280089
https://blog.csdn.net/wsdc0521/article/details/50372815

AI换脸
https://blog.csdn.net/BEYONDMA/article/details/100594136
hash表实现
https://blog.csdn.net/v_JULY_v/article/details/6256463

spring书籍:
7天学会spring+cloud教程
Spring 5 新功能:功能性 Web 框架 -
Spring Boot实战 ,丁雪丰 (译者)
Spring.in.Action.4th.Edition
springCloud参考指南

中断线程
https://blog.csdn.net/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.csdn.net/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.csdn.net/tianxuhong/article/details/44919315
https://blog.csdn.net/enweitech/article/details/68944260
https://blog.csdn.net/ejinxian/article/details/70212208
https://blog.csdn.net/wangjianan7357/article/details/81592109
https://blog.csdn.net/ejinxian/article/details/70212208
https://blog.csdn.net/qq_39752804/article/details/81432645
https://blog.csdn.net/WuLex/article/details/80747165
https://blog.csdn.net/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.csdn.net/zy103118/article/details/79713535
https://baike.baidu.com/item/RUP/8924595?fr=aladdin
https://blog.csdn.net/qb200903527/article/details/10056949

k8s学习:
https://blog.csdn.net/hanyajun0123/article/details/85062863
https://blog.csdn.net/bbwangj/article/details/82866927
https://blog.csdn.net/huakai_sun/article/details/82378856
https://blog.csdn.net/weixin_39686421/article/details/80353330
https://blog.csdn.net/liumiaocn/article/details/52366063
https://blog.csdn.net/weixin_43277643/article/details/83382532
https://blog.csdn.net/dfhgshgdf/article/details/80472192
https://blog.csdn.net/kangi/article/details/84957644
https://blog.csdn.net/qq_37175369/article/details/79878834

k8s实践:
https://www.kubernetes.org.cn/5480.html
https://blog.csdn.net/boling_cavalry/article/details/91346780
https://blog.csdn.net/hopeztm/article/details/78731774
https://blog.csdn.net/guanjin2834/article/details/80134025
https://blog.csdn.net/boling_cavalry/article/details/87510822

可视化数据分析:
http://baijiahao.baidu.com/s?id=1598426519975889351&wfr=spider&for=pc
tensorflow github
https://blog.csdn.net/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.csdn.net/xichenguan/article/details/79033611
https://minikube.sigs.k8s.io/docs/start/windows/

你可能感兴趣的:(workbench,kie-server,drools,workbench,kie-server,drools)