海口网站建设网站制作,宁波网站建设开发公司,合江县住房和城乡规划建设局网站,程序员接私活要达到什么水平文章目录 系列文章索引八、WorkBench简介与安装1、WorkBench简介2、安装 九、WorkBench使用方式1、创建空间2、创建项目3、创建数据对象4、创建DRL规则文件5、创建测试场景6、设置KieBase和KieSession7、编译、构建、部署8、在项目中使用部署的规则 系列文章索引
规则引擎Droo… 文章目录 系列文章索引八、WorkBench简介与安装1、WorkBench简介2、安装 九、WorkBench使用方式1、创建空间2、创建项目3、创建数据对象4、创建DRL规则文件5、创建测试场景6、设置KieBase和KieSession7、编译、构建、部署8、在项目中使用部署的规则 系列文章索引
规则引擎Drools使用0基础入门规则引擎Drools一基础入门 规则引擎Drools使用0基础入门规则引擎Drools二高级语法 规则引擎Drools使用0基础入门规则引擎Drools三整合springboot 规则引擎Drools使用0基础入门规则引擎Drools四WorkBench控制台 规则引擎Drools使用0基础入门规则引擎Drools五实战决策表
八、WorkBench简介与安装
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中。
2、安装
软件安装时经常会涉及到软件版本兼容性的问题所以需要明确各个软件的使用版本。
本课程使用的软件环境如下
操作系统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.providerjdk第三步将下载的WorkBench的war包改名为kie-drools-wb.war并复制到Tomcat的webapps目录下
第四步修改Tomcat下conf/tomcat-users.xml文件
?xml version1.0 encodingutf-8?
tomcat-users xmlnshttp://tomcat.apache.org/xmlxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://tomcat.apache.org/xml tomcat-users.xsdversion1.0!--定义admin角色--role rolenameadmin/!--定义一个用户用户名为kie密码为kie对应的角色为admin角色--user usernamekie passwordkie rolesadmin/
/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 classNameorg.kie.integration.tomcat.JACCValve/第七步双击startup.bat启动Tomcat并访问http://localhost:8080/kie-drools-wb可以看到WorkBench的登录页面。使用前面在tomcat-users.xml文件中定义的用户进行登录即可kie/kie 登录成功后进入系统首页
注本节用到的资料如下 https://download.csdn.net/download/A_art_xiang/88561123
九、WorkBench使用方式
1、创建空间
第一步登录WorkBench后进行系统首页点击首页中的Design区域进入项目列表页面
如果是第一次登录还没有创建项目则无法看到项目
第二步点击左上角Spaces导航链接进入空间列表页面 第三步点击右上角Add Space按钮弹出创建添加空间窗口 录入空间名称点击Save按钮则完成空间的创建如下图不能用大写 2、创建项目
前面已经提到我们在WorkBench中需要先创建空间在空间中才能创建项目。上面我们已经创建了一个空间my_drools现在需要往此空间中创建项目。
第一步点击my_drools空间进入此空间
可以看到当前空间中还没有项目
第二步点击Add Project按钮弹出添加项目窗口
第三步在添加项目窗口中录入项目名称例如项目名称为pro1点击Add按钮完成操作
可以看到在完成项目创建后系统直接跳转到了项目页面。要查看当前空间中的所有项目可以点击左上角my_drools链接
3、创建数据对象
数据对象其实就是JavaBean一般都是在drl规则文件中使用进行规则匹配。
第一步在my_drools空间中点击pro1项目进入此项目页面
第二步点击Create New Asset按钮选择“数据对象” 第三步在弹出的创建数据对象窗口中输入数据对象的名称点击确定按钮完成操作
操作完成后可以看到如下
第四步点击“添加字段”按钮弹出新建字段窗口
第五步在新建字段窗口中录入字段Id其实就是属性名选择类型点击创建按钮完成操作 完成操作后可以看到刚才创建的字段 可以点击添加字段按钮继续创建其他字段 注意添加完字段后需要点击右上角保存按钮完成保存操作 点击源代码按钮可以查看刚才创建的Person对象源码
点击左上角pro1项目链接可以看到当前pro1项目中已经创建的各种类型的对象
4、创建DRL规则文件
第一步在pro1项目页面点击右上角Create New Asset按钮选择“DRL文件”弹出创建DRL文件窗口 第二步在添加DRL文件窗口录入DRL文件名称点击确定按钮完成操作
第三步上面点击确定按钮完成创建DRL文件后页面会跳转到编辑DRL文件页面 可以看到DRL规则文件页面分为两个部分左侧为项目浏览视图、右侧为编辑区域需要注意的是左侧默认展示的不是项目浏览视图需要点击上面设置按钮选择“资料库视图”和“显示为文件夹”如下图所示
第四步在编辑DRL文件页面右侧区域进行DRL文件的编写点击右上角保存按钮完成保存操作点击检验按钮进行规则文件语法检查
package com.my_drools.pro1;rule rule_person_1when$person:Person(age 6)thenSystem.out.println(children);
endrule rule_person_2when$person:Person(age 6 age 14)thenSystem.out.println(early youth);
endrule rule_person_3when$person:Person(age 14 age 35)thenSystem.out.println(youth);endrule rule_person_4when$person:Person(age 35 age 60)thenSystem.out.println(middle age);
end点击左上角pro1项目回到项目页面可以看到此项目下已经存在两个对象即person.drl规则文件和Person类
5、创建测试场景
前面我们已经创建了Person数据对象和person规则文件现在我们需要测试一下规则文件中的规则可以通过创建测试场景来进行测试。
第一步在项目页面点击Create New Asset按钮选择“测试场景”弹出创建测试场景窗口 第二步在弹出的创建测试场景窗口中录入测试场景的名称点击确定完成操作
完成测试场景的创建后页面会跳转到测试场景编辑页面如下图 第三步因为我们编写的规则文件中需要从工作内存中获取Person对象进行规则匹配所以在测试场景中需要准备Person对象给工作内存点击“GIVEN”按钮弹出新建数据录入窗口选择Person类输入框中输入事实名称名称任意如下图 第四步录入事实名称后点击后面的添加按钮可以看到Person对象已经添加成功 第五步我们给工作内存提供的Person对象还需要设置age属性的值点击“添加字段”按钮弹出窗口选择age属性 点击确定按钮后可以看到字段已经添加成功
第六步点击age属性后面的编辑按钮弹出字段值窗口 第七步在弹出的窗口中点击字面值按钮重新回到测试场景页面可以看到age后面出现输入框可以为age属性设置值 设置好age属性的值后点击保存按钮保存测试场景
第八步点击右上角“运行测试场景”按钮进行测试 测试成功后可以查看WorkBench部署的Tomcat控制台
6、设置KieBase和KieSession
第一步在pro1项目页面点击右上角Settings按钮进入设置页面
第二步在设置页面选择“知识库和会话”选项
第三步在弹出的知识库和会话页面点击“添加”按钮进行设置 第四步设置完成后点击右上角保存按钮完成设置操作可以通过左侧浏览视图点击kmodule.xml查看文件内容
7、编译、构建、部署
前面我们已经在WorkBench中创建了一个空间my_drools并且在此空间中创建了一个项目pro1在此项目中创建了数据文件、规则文件和测试场景如下图
点击右上角“Compile”按钮可以对项目进行编译点击“BulidDeploy”按钮进行构建和部署。
部署成功后可以在本地maven仓库中看到当前项目已经被打成jar包 将上面的jar包进行解压可以看到我们创建的数据对象Person和规则文件person以及kmodule.xml都已经打到jar包中了。
8、在项目中使用部署的规则
前面我们已经在WorkBench中创建了pro1项目并且在pro1项目中创建了数据文件、规则文件等。最后我们将此项目打成jar包部署到了maven仓库中。本小节就需要在外部项目中使用我们定义的规则。
第一步在IDEA中创建一个maven项目并在pom.xml文件中导入相关坐标
dependencygroupIdorg.drools/groupIdartifactIddrools-compiler/artifactIdversion7.10.0.Final/version
/dependency
dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version
/dependency第二步在项目中创建一个数据对象Person需要和WorkBench中创建的Person包名、类名完全相同属性也需要对应
package com.mydrools.pro1;import java.io.Serializable;public class Person implements Serializable {static final long serialVersionUID 1L;private String id;private String name;private Integer age;public Person() {}public String getId() {return this.id;}public void setId(String id) {this.id id;}public String getName() {return this.name;}public void setName(String name) {this.name name;}public Integer getAge() {return this.age;}public void setAge(Integer age) {this.age age;}public Person(String id, String name, Integer 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.jarString url http://localhost:8080/kie-drools-wb/maven2/com/my_drools/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();
}执行单元测试可以发现控制台已经输出了相关内容。通过WorkBench修改规则输出内容并发布再次执行单元测试可以发现控制台输出的内容也发生了变化。
通过上面的案例可以发现我们在IEDA中开发的项目中并没有编写规则文件规则文件是我们通过WorkBench开发并安装部署到maven仓库中我们自己开发的项目只需要远程加载maven仓库中的jar包就可以完成规则的调用。这种开发方式的好处是我们的应用可以和业务规则完全分离同时通过WorkBench修改规则后我们的应用不需要任何修改就可以加载到最新的规则从而实现规则的动态变更。