8. WorkBench

全套代码及资料全部完整提供,点此处下载

8.1 WorkBench简介

WorkBench是KIE组件中的元素,也称为KIE-WB,是Drools-WB与JBPM-WB的结合体。它是一个可视化的规则编辑器。WorkBench其实就是一个war包,安装到tomcat中就可以运行。使用WorkBench可以在浏览器中创建数据对象、创建规则文件、创建测试场景并将规则部署到maven仓库供其他应用使用。

下载地址:https://download.jboss.org/drools/release/7.6.0.Final/kie-drools-wb-7.6.0.Final-tomcat8.war

注意:下载的war包需要安装到tomcat8中。

8.2 安装方式

8.2.1 传统方式安装

软件安装时经常会涉及到软件版本兼容性的问题,所以需要明确各个软件的使用版本。

本课程使用的软件环境如下:

  • 操作系统:Windows 10 64位
  • JDK版本:1.8
  • maven版本:3.5.4
  • Tomcat版本:8.5

具体安装步骤:

第一步:配置Tomcat的环境变量CATALINA_HOME,对应的值为Tomcat安装目录

第二步:在Tomcat的bin目录下创建setenv.bat文件,内容如下:

CATALINA_OPTS="-Xmx512M \
-Djava.security.auth.login.config=$CATALINA_HOME/webapps/kie-drools-wb/WEB-INF/classes/login.config \
-Dorg.jboss.logging.provider=jdk"

第三步:将下载的WorkBench的war包改名为kie-drools-wb.war并复制到Tomcat的webapps目录下

第四步:修改Tomcat下conf/tomcat-users.xml文件

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<!--定义admin角色-->
<role rolename="admin"/>
<!--定义一个用户,用户名为kie,密码为kie,对应的角色为admin角色-->
<user username="kie" password="kie" roles="admin"/>
</tomcat-users>

第五步:下载以下三个jar包并复制到Tomcat的lib目录下

kie-tomcat-integration-7.10.0.Final.jar
javax.security.jacc-api-1.5.jar
slf4j-api-1.7.25.jar

第六步:修改Tomcat的conf/server.xml文件,添加Valve标签,内容为:

<Valve className="org.kie.integration.tomcat.JACCValve"/>

第七步:启动Tomcat并访问http://localhost:8080/kie-drools-wb,可以看到WorkBench的登录页面。使用前面在tomcat-users.xml文件中定义的用户进行登录即可

登录成功后进入系统首页:

8.2.2 docker安装drools workbench

docker pull jboss/drools-workbench-showcase:7.6.0.Final
docker run -p 8080:8080 -p 8001:8001 -d --name drools-workbench jboss/drools-workbench-showcase:7.6.0.Final

启动成功后,访问http://192.168.86.101:8080/drools-wb即可,注意版本,从某个版本开始workbench改名叫Business Central了,访问连接也变成了http://localhost:8080/business-central,注意区别。

  • 以下是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

8.3 使用方式

8.3.1 创建空间、项目

WorkBench中存在空间和项目的概念。我们在使用WorkBench时首先需要创建空间(Space),在空间中创建项目,在项目中创建数据对象、规则文件等。

  • 创建空间

    第一步:登录WorkBench后进行系统首页,点击首页中的Design区域进入项目列表页面:

如果是第一次登录还没有创建项目则无法看到项目

第二步:点击左上角Spaces导航链接进入空间列表页面

第三步:点击右上角Add Space按钮弹出创建添加空间窗口

录入空间名称,点击Save按钮则完成空间的创建,如下图:

  • 创建项目

    前面已经提到,我们在WorkBench中需要先创建空间,在空间中才能创建项目。上面我们已经创建了一个空间guohaowei,现在需要住此空间中创建项目。

    第一步:点击guohaowei空间,进入此空间

可以看到当前空间中还没有项目

第二步:点击Add Project按钮弹出添加项目窗口

第三步:在添加项目窗口中录入项目名称(例如项目名称为pro1),点击Add按钮完成操作

可以看到在完成项目创建后,系统直接跳转到了项目页面。要查看当前guohaowei空间中的所有项目,可以点击左上角guohaowei链接:

8.3.2 创建数据对象

数据对象其实就是JavaBean,一般都是在drl规则文件中使用进行规则匹配。

第一步:在guohaowei空间中点击pro1项目,进入此项目页面

第二步:点击Create New Asset按钮选择“数据对象”

第三步:在弹出的创建数据对象窗口中输入数据对象的名称,点击确定按钮完成操作

操作完成后可以看到如下:

第四步:点击“添加字段”按钮弹出新建字段窗口

第五步:在新建字段窗口中录入字段Id(其实就是属性名),选择类型,点击创建按钮完成操作

完成操作后可以看到刚才创建的字段:

可以点击添加字段按钮继续创建其他字段:

注意添加完字段后需要点击右上角保存按钮完成保存操作:

点击源代码按钮可以查看刚才创建的Person对象源码:

点击左上角pro1项目链接,可以看到当前pro1项目中已经创建的各种类型的对象:

8.3.3 创建DRL规则文件

第一步:在pro1项目页面点击右上角Create New Asset按钮,选择“DRL文件”,弹出创建DRL文件窗口

第二步:在添加DRL文件窗口录入DRL文件名称,点击确定按钮完成操作

第三步:上面点击确定按钮完成创建DRL文件后,页面会跳转到编辑DRL文件页面

可以看到DRL规则文件页面分为两个部分:左侧为项目浏览视图、右侧为编辑区域,需要注意的是左侧默认展示的不是项目浏览视图,需要点击上面设置按钮,选择“资料库视图”和“显示为文件夹”,如下图所示:



第四步:在编辑DRL文件页面右侧区域进行DRL文件的编写,点击右上角保存按钮完成保存操作,点击检验按钮进行规则文件语法检查

点击左上角pro1项目回到项目页面,可以看到此项目下已经存在两个对象,即person.drl规则文件和Person类:

8.3.4 创建测试场景

前面我们已经创建了Person数据对象和person规则文件,现在我们需要测试一下规则文件中的规则,可以通过创建测试场景来进行测试。

第一步:在项目页面点击Create New Asset按钮选择“测试场景”,弹出创建测试场景窗口

第二步:在弹出的创建测试场景窗口中录入测试场景的名称,点击确定完成操作

完成测试场景的创建后,页面会跳转到测试场景编辑页面,如下图:

第三步:因为我们编写的规则文件中需要从工作内存中获取Person对象进行规则匹配,所以在测试场景中需要准备Person对象给工作内存,点击“GIVEN”按钮弹出新建数据录入窗口,选择Person类,输入框中输入事实名称(名称任意),如下图

第四步:录入事实名称后点击后面的添加按钮,可以看到Person对象已经添加成功

第五步:我们给工作内存提供的Person对象还需要设置age属性的值,点击“添加字段”按钮弹出窗口,选择age属性

点击确定按钮后可以看到字段已经添加成功:

第六步:点击age属性后面的编辑按钮,弹出字段值窗口

第七步:在弹出的窗口中点击字面值按钮,重新回到测试场景页面,可以看到age后面出现输入框,可以为age属性设置值

设置好age属性的值后点击保存按钮保存测试场景

第八步:点击右上角“运行测试场景”按钮进行测试

测试成功后可以查看WorkBench部署的Tomcat控制台:

  • docker进入容器查看日志

    docker exec -it drools-workbench /bin/bash
    Workbench的日志存在/opt/jboss/wildfly/standalone/log/目录

8.3.5 设置KieBase和KieSession

第一步:在pro1项目页面点击右上角Settings按钮进入设置页面

第二步:在设置页面选择“知识库和会话”选项

第三步:在弹出的知识库和会话页面点击“添加”按钮进行设置

第四步:设置完成后点击右上角保存按钮完成设置操作,可以通过左侧浏览视图点击kmodule.xml,查看文件内容

8.3.6 编译、构建、部署

前面我们已经在WorkBench中创建了一个空间guohaowei,并且在此空间中创建了一个项目pro1,在此项目中创建了数据文件、规则文件和测试场景,如下图:

点击右上角“Compile”按钮可以对项目进行编译,点击“Bulid&Deploy”按钮进行构建和部署。

部署成功后可以在本地maven仓库中看到当前项目已经被打成jar包:

将上面的jar包进行解压,可以看到我们创建的数据对象Person和规则文件person以及kmodule.xml都已经打到jar包中了。

8.3.7 在项目中使用部署的规则

前面我们已经在WorkBench中创建了pro1项目,并且在pro1项目中创建了数据文件、规则文件等。最后我们将此项目打成jar包部署到了maven仓库中。本小节就需要在外部项目中使用我们定义的规则。

第一步:在IDEA中创建一个maven项目并在pom.xml文件中导入相关坐标

<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>7.10.0.Final</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>

第二步:在项目中创建一个数据对象Person,需要和WorkBench中创建的Person包名、类名完全相同,属性也需要对应

package com.guohaowei.pro1;

import java.io.Serializable;

public class Person implements Serializable {
static final long serialVersionUID = 1L; private String id;
private String name;
private int age; public Person() {
} public java.lang.String getId() {
return this.id;
} public void setId(java.lang.String id) {
this.id = id;
} public java.lang.String getName() {
return this.name;
} public void setName(java.lang.String name) {
this.name = name;
} public int getAge() {
return this.age;
} public void setAge(int age) {
this.age = age;
} public Person(java.lang.String id, java.lang.String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
}

第三步:编写单元测试,远程加载maven仓库中的jar包最终完成规则调用

@Test
public void test1() throws Exception{
//通过此URL可以访问到maven仓库中的jar包
//URL地址构成:http://ip地址:Tomcat端口号/WorkBench工程名/maven2/坐标/版本号/xxx.jar
//String url = "http://192.168.86.101:8080/kie-drools-wb/maven2/com/guohaowei/pro1/1.0.0/pro1-1.0.0.jar";
String url ="http://192.168.86.101:8080/drools-wb/maven2/com/guohaowei/pro1/1.0.0/pro1-1.0.0.jar"; KieServices kieServices = KieServices.Factory.get(); //通过Resource资源对象加载jar包
UrlResource resource = (UrlResource) kieServices.getResources().newUrlResource(url);
//通过Workbench提供的服务来访问maven仓库中的jar包资源,需要先进行Workbench的认证
resource.setUsername("admin");
resource.setPassword("admin");
resource.setBasicAuthentication("enabled"); //将资源转换为输入流,通过此输入流可以读取jar包数据
InputStream inputStream = resource.getInputStream(); //创建仓库对象,仓库对象中保存Drools的规则信息
KieRepository repository = kieServices.getRepository(); //通过输入流读取maven仓库中的jar包数据,包装成KieModule模块添加到仓库中
KieModule kieModule =
repository.
addKieModule(kieServices.getResources().newInputStreamResource(inputStream)); //基于KieModule模块创建容器对象,从容器中可以获取session会话
KieContainer kieContainer = kieServices.newKieContainer(kieModule.getReleaseId());
KieSession session = kieContainer.newKieSession(); Person person = new Person();
person.setAge(10);
session.insert(person); session.fireAllRules();
session.dispose();
}

执行单元测试可以发现控制台已经输出了相关内容。通过WorkBench修改规则输出内容并发布,再次执行单元测试可以发现控制台输出的内容也发生了变化。

通过上面的案例可以发现,我们在IEDA中开发的项目中并没有编写规则文件,规则文件是我们通过WorkBench开发并安装部署到maven仓库中,我们自己开发的项目只需要远程加载maven仓库中的jar包就可以完成规则的调用。这种开发方式的好处是我们的应用可以和业务规则完全分离,同时通过WorkBench修改规则后我们的应用不需要任何修改就可以加载到最新的规则从而实现规则的动态变更。

8.3.8 以上代码均在testWB项目中

全套代码及资料全部完整提供,点此处下载

第2-4-7章 docker安装WorkBench-规则引擎Drools-业务规则管理系统-组件化-中台的更多相关文章

  1. 第2-1-5章 docker安装MinIO实现文件存储服务-springboot整合minio-minio全网最全的资料

    目录 1. MinIO介绍 2. MinIO应用场景 2.1 单主机单硬盘模式 2.2 单主机多硬盘模式 2.3 多主机多硬盘分布式 3. MinIO特点 4. 存储机制 5. docker安装Min ...

  2. 第三章 Docker 入门

    第三章 docker 入门 3.1 确保docker已经就绪 首先查看docker程序是否存在,功能是否正常 [#3#cloudsoar@cloudsoar-virtual-machine ~]$su ...

  3. [转]Docker学习之四:使用docker安装mysql

    本文转自:https://blog.csdn.net/qq_19348391/article/details/82998391 Docker学习之一:注册Docker Hub账号 Docker学习之二 ...

  4. mac环境下使用docker安装nginx

    前言 距离上一篇文章已经很长时间,近期实在事情太多了,也没来得及继续更新一些新的内容.现在开发使用的工作实在太多了,小编实在忍受不了windows那样卡机的状态,于是最近换了一个mac电脑,虽然做开发 ...

  5. Docker安装RabbitMQ,RabbitMQ Management使用

    原文:Docker安装RabbitMQ,RabbitMQ Management使用 版权声明:本文为博主原创文章,未经博主允许不得转载.需要转载请先评论或者邮箱联系我,谢谢! https://blog ...

  6. linux上Docker安装gogs私服亲测(详解)

    一.前言 有网友问我为什么要使用私服,可能大部分人都不是太懂,网上那么多存储仓库而且好用方便,但是你想过没有如果企业中的项目,放在人家的仓库上这个安全性不是太好,所以说一般企业都会有自己的私服.本章教 ...

  7. Jenkins入门系列之——02第二章 Jenkins安装与配置

    2014-12-08:已不再担任SCM和CI的职位,Jenkins的文章如无必要不会再维护. 写的我想吐血,累死了. 网页看着不爽的,自己去下载PDF.有问题请留言! Jenkins入门系列之——03 ...

  8. 理解Docker(1):Docker 安装和基础用法

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  9. docker安装

    系统要求:需要一个64位的centos7操作系统和版本3.10或更高版本的Linux内核 开始安装: uname -r   //查看内核版本yum -y update //更新系统更新到最新 #安装d ...

  10. 2. Docker - 安装

    一.Docker介绍 1. Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上, 也可以实现虚拟化. 容器时完全使用沙 ...

随机推荐

  1. C#winform中使用Cef的ChromiumWebBrowser内嵌谷歌内核,调用前端js方法

    1.在winform中调用js方法: --调js中的方法无 入参形式 webBrowser1.ExecuteJavascript("logout()"); --调js中的方法给js ...

  2. Openstack Neutron : LBaaS v2

    目录 - LBaaS v2 - 负载均衡概念 - 服务器池 Pool - 监听器 Listener - L7 转发策略 l7 policy - 负载均衡算法 Algorithms - 健康监测 Mon ...

  3. 继GitHub的Copilot收费后,亚马逊推出了 CodeWhisperer,感觉不错哟!

    Copilot 是 Github 推出的一款人工智能编程助手,推出仅一年就受到大量开发者的追捧(据官方统计有 120 万用户).然而,自 2022 年 6 月起,它改为了付费订阅模式(每月 10 美元 ...

  4. 使用 Loki 收集 Traefik 日志

    转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247492264&idx=1&sn=f443c92664 ...

  5. jenkins邮箱配置

  6. 使用k8s部署springcloud解决三大问题

    1.正式环境使用的话启动时需要指定使用正式的配置文件,这个要咋处理? 解决办法 文章地址:https://www.cnblogs.com/sanduzxcvbnm/p/13262411.html 分析 ...

  7. 彻底掌握Makeifle(三)

    彻底掌握Makeifle(三) 前言 在前面的文章彻底掌握Makefile(一)和彻底掌握Makefile(二)当中,我们简要的介绍了一些常见的makefile使用方法,在本篇文章当中我们将继续介绍一 ...

  8. Opengl ES之四边形绘制

    四边形的绘制在Opengl ES是很重要的一项技巧,比如做视频播放器时视频的渲染就需要使用到Opengl ES绘制四边形的相关知识.然而在Opengl ES却没有直接提供 绘制四边形的相关函数,那么如 ...

  9. Java基础之变量

    Java基础之变量 目录 Java基础之变量 1.变量概述 1.1 为什么需要变量 1.2 简单理解 1.3 变量使用注意事项 1.4 程序中+号的使用 1.5 Java数据类型 1.6 整数类型 1 ...

  10. JuiceFS 元数据引擎选型指南

    文件系统是我们常见的存储形式,内部主要由数据和元数据两部分组成.其中数据是文件的具体内容,通常会直接展现给用户:而元数据是描述数据的数据,用来记录文件属性.目录结构.数据存储位置等.一般来说,元数据有 ...