[000-01-025].第07节:WorkBench

news2024/9/26 1:22:31

我的后端学习大纲

我的Drools学习大纲


8. WorkBench

8.1 WorkBench简介:

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

8.2 安装方式:

a.环境介绍:

  • 1.软件安装时经常会涉及到软件版本兼容性的问题,所以需要明确各个软件的使用版本
  • 2.本课程使用的软件环境如下:
    • 操作系统:Windows 10 64位
    • JDK版本:1.8
    • maven版本:3.5.4
    • Tomcat版本:8.5

b.实现步骤:

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

2.第二步:在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"

3.第三步:将下载的WorkBench的war包改名为kie-drools-wb.war并复制到Tomcat的webapps目录下;注意war包的名字要和bat文件中配置的名字相同才可以,所以需要改下war包的名字

在这里插入图片描述

4.第四步:修改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>

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

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

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

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

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

在这里插入图片描述
在这里插入图片描述


8.3 使用方式

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

a.创建空间

1.第一步:登录WorkBench后进行系统首页,点击首页中的Design区域进入项目列表页面;如果是第一次登录还没有创建项目则无法看到项目

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述


b.创建项目:

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

第一步:点击itheima空间,进入此空间;可以看到当前空间中还没有项目

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述


c.创建数据对象

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

1.第一步:在itheima空间中点击pro1项目,进入此项目页面
在这里插入图片描述
第二步:点击Create New Asset按钮选择“数据对象”

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述


d.创建DRL规则文件

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

e.创建测试场景

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

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述


f.设置KieBase和KieSession

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

g.编译、构建、部署

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

在这里插入图片描述

  • 2.点击右上角“Compile”按钮可以对项目进行编译,点击“Bulid&Deploy”按钮进行构建和部署。部署成功后可以在本地maven仓库中看到当前项目已经被打成jar包:
  • 3.将上面的jar包进行解压,可以看到我们创建的数据对象Person和规则文件person以及kmodule.xml都已经打到jar包中了。

h.在项目中使用部署的规则

前面我们已经在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.itheima.pro1;public class Person implements java.io.Serializable {static final long serialVersionUID = 1L;private java.lang.String id;
    private java.lang.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://localhost:8080/kie-drools-wb/maven2/com/itheima/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("kie");
    resource.setPassword("kie");
    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();
}
  • 1.执行单元测试可以发现控制台已经输出了相关内容。通过WorkBench修改规则输出内容并发布,再次执行单元测试可以发现控制台输出的内容也发生了变化。

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1981280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UE Sequence学习

UE4中的动画编辑器 —— Sequencer in UE4 - 知乎 (zhihu.com) UE4 LevelSequence源码解析 - 知乎 (zhihu.com) C模块 对ue4 sequence的学习和理解 - 知乎 (zhihu.com) 必须要先在你项目工程的.build.cs里加入 MoviePlayer, LevelSequence, MovieScene. 引入头文件 #inclu…

我所理解的sprd-camera摄像头框架流程分析

摄像头的图像格式:RGB24,RGB565,RGB444,YUV4:2:2 RGB24 表示R、G、B ,3种基色都用8个二进制位表示,那么红色、绿色、蓝色各有256种,那么由这三种基色构成的颜色就是256X256X256=16,777,216种,约等于1677万。UV 和我们熟知的 RGB 类似,是一种颜色编码格式。 YUV 包含三…

sonatype私服配置与下载

文章目录 私服下载地址setting.xml配置java中pom.xml配置上传 私服 下载地址 地址&#xff1a;https://help.sonatype.com/en/download.html 百度网盘地址链接: https://pan.baidu.com/s/1_sjjHbXs27ya49SEcN9XNw 提取码: g56i 1.下载后解压得到两个文件 2.进入到nexus-3.…

揭秘脑囊肿:了解那些不容忽视的症状

脑囊肿&#xff0c;作为颅内的一种良性占位性病变&#xff0c;虽然不常见&#xff0c;但其潜在的症状却可能对患者的生活质量产生显著影响。了解脑囊肿的症状&#xff0c;对于及时诊断和治疗至关重要。 头痛&#xff1a;脑囊肿最常见的症状之一是头痛&#xff0c;这通常是由于囊…

【海贼王航海日志:前端技术探索】CSS你了解多少?(一)

目录 1 -> CSS是什么 2 -> 基本语法规范 3 -> 引入方式 3.1 -> 内部样式表 3.2 -> 行内样式表 3.3 -> 外部样式 4 -> 代码风格 4.1 -> 样式格式 5 -> 选择器 5.1 -> 选择器的功能 5.2 -> 选择器的种类 5.3 -> 基础选择器 5.3…

SQL进阶技巧:数据预处理如何对数据进行分桶【分箱】?

目录 0 引言 1 数据准备 2 数据分桶SQL实现 2 1.基于规则的分桶 2.2 等距分桶 2.3等频分桶 3 小结 0 引言 数据分桶&#xff08;Bucket&#xff09;作为数据预处理的一部分&#xff0c;是进行数据模型建设的前提&#xff0c;是构建特征工程的重要手段。也被称为离散分箱或…

【算法】KMP算法

应用场景 有一个字符串 str1 "BBA ABCA ABCDAB ABCDABD"&#xff0c;和一个子串 str2 "ABCDABD"现在要判断 str1 是否含有 str2&#xff0c;如果含有&#xff0c;就返回第一次出现的位置&#xff0c;如果不含有&#xff0c;则返回 -1 我们很容易想到暴力…

The Llama 3 Herd of Models 第8部分语音实验部分全文

第1,2,3部分,介绍、概览、预训练 第4部分,后训练 第5部分,结果 第6部分,推理 第7部分,视觉实验 8 Speech Experiments 我们进行了实验来研究将语音功能集成到Llama 3中的组合方法,类似于我们用于视觉识别的方法。在输入端,一个编码器,连同一个适配器,被并入处理语…

低代码开发是什么意思?低代码是开发的未来吗?

在数字化转型的浪潮中&#xff0c;低代码平台是一股不可忽视的力量&#xff0c;它正在以前所未有的速度改变着软件开发的格局。低代码不仅极大地简化了开发流程&#xff0c;降低了技术门槛&#xff0c;还通过高效、灵活的特性&#xff0c;为企业和开发者带来了前所未有的创新机…

页面弹窗中英文切换

一、遇到的问题 页面右上角弹窗如下 二、解决 去掉 lang"en"即可。

SVPWM5段式7段式差异分析和关键代码基于TI F28035

SVPWM5段式7段式差异分析和关键代码基于TI F28035 5段式有一相占空比始终为0或者1 扇区判断的扇区号和实际扇区不是一一对应,直接使用,而是映射关系 扇区判断变量 7段式和5段式在基本矢量作用顺序上的差异 SVPWM算法详解(已标注重点) 来自这篇文章,但经过实际测试,发现是…

计算机和医学领域成重灾区!5本TOP刊也位列其中,请大家谨慎投稿!

【SciencePub学术】自从Hindawi一年撤稿多达一万多篇的事件以来&#xff0c;官方对期刊质量的管控就越来越严格了。更有很多学校和单位都频频更新自己的风险期刊名单&#xff0c;其中&#xff0c;Hindawi、Frontiers、MDPI甚至都被直接打包拉黑&#xff01; 更有On Hold 期刊现…

ios上音频需要点击两次才播放

问题 用H5标签audio渲染音频&#xff0c;测试PC和安卓都没有问题&#xff0c;点击一次就播放&#xff0c;并且可以在播放之前正常显示音频时长 但是在iOS系统上没有播放之前&#xff0c;不仅时长显示为0&#xff0c;并且播放还需要点击2次才正常播放 原因 debug之后发现是因为…

计算机毕业设计选题推荐-遥感影像共享系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

GaussDB关键技术原理|高可用:两地三中心跨Region容灾

接上篇GaussDB关键技术原理|高可用&#xff1a;逻辑复制从逻辑复制方面对GaussDB的高可用能力进行了介绍&#xff0c;本篇将从两地三中心跨Region容灾方面继续解读GaussDB高可用技术。 目录 4 两地三中心跨Region容灾 4.1 概述 4.2 异地容灾部署示例 集中式 分布式&#x…

sheng的学习笔记-AI-层次聚类

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 需要学习的前置知识&#xff1a;聚类&#xff0c;可参考&#xff1a;sheng的学习笔记-AI-聚类(Clustering)-CSDN博客 什么是层次聚类 层次聚类(hierarchical clustering)试图在不同层次对数据集进行划分&#xff0c;从而形…

2024年第五届华数杯全国大学生数学建模竞赛【C题】完整版代码+结果 分享

问题1的设问虽然不涉及到数学模型&#xff0c;只需要统计题目所给附件数据&#xff0c;但在做题之前可以先整理思路&#xff1a; ①统计景点评分最高分&#xff1b;②统计最高分在所有文件中出现的总次数&#xff1b;③统计出现高分次数最多的csv文件&#xff1b;④统计出现最…

js前端展示ppt【插件:PPTXJS】

前端展示PPT 使用插件&#xff1a; 官方网址: https://pptx.js.org/index.html github网址: https://github.com/meshesha/PPTXjs/releases 实例网址: https://pptx.js.org/pages/demos.html通过下载官方demo可以获得完整的实例

MySQL简介 数据库管理与表管理

文章目录 1 MySQL的优势2 MySQL数据类型1 数字类型2 日期和时间类型3 字符串类型 3 数据库管理4 数据表管理参考 1 MySQL的优势 性能优化&#xff1a;通过优化存储引擎&#xff08;InnoDB&#xff0c;MyISAM&#xff09;和查询优化。解决大规模数据处理和查询优化开源&#xf…

孩子被确诊为自闭症怎么办?

当家庭收到孩子被确诊为自闭症的消息时&#xff0c;这无疑是一次巨大的心理冲击和挑战。面对这一突如其来的诊断&#xff0c;许多家长会感到无助、焦虑甚至绝望。然而&#xff0c;重要的是要认识到&#xff0c;自闭症并非不可逾越的障碍&#xff0c;通过科学、专业的干预和治疗…