当前位置:网站首页>Introduction and use of Drools WorkBench
Introduction and use of Drools WorkBench
2022-07-31 01:51:00 【xushiyu1996818】
目录
WorkBench简介
WorkBench是KIE组件中的元素,也称为KIE-WB,是Drools-WB与JBPM-WB的结合体.它是一个可视化的规则编辑器.WorkBench其实就是一个war包.
WorkBench经过几次版本迭代,已经不提供tomcat启动的war包,综合考虑,本课程仍然采用 tomcat版本作为演示.
环境:
apache-tomcat-9.0.29
kie-drools-wb-7.6.0.Final-tomcat8 下载地址:Drools - Download
说明:
准备jar包:需要放到tomcat lib中,否则启动失败
具体安装步骤:
配置 Tomcat
1.修改tomcat-user.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-web" password="kie-web123" roles="admin"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
</tomcat-users>
此账号密码用于登录WorkBench管理控制台
2.修改server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Valve className="org.kie.integration.tomcat.JACCValve"/>
</Host>
host节点下添加<Valve className="org.kie.integration.tomcat.JACCValve"/>
3.复制jar到tomcat根目录的lib下面:
kie-tomcat-integration-7.10.0.Final.jar
javax.security.jacc-api-1.5.jar
slf4j-api-1.7.25.jar
4.复制 kie-drools-wb-7.6.0.Final-tomcat8.war 到tomcat webapp下面并修改成kie-web.war
启动服务器
启动tomcat
访问http://localhost:8080/kie-web,可以看到WorkBench的登录页面.使用前面创建的kie-web/kie-web123登录
WorkBench使用
创建空间、项目
首页中点击 project,创建空间
我们创建一个 mashibing 的工作空间.点击 Save,保存.
点击工作空间当中的 mashibing,进入空间
点击Add Project添加项目
成功后,我们可以看见下图
左上角的导航条,可以在空间和project之间切换
创建数据对象和drl文件
切换到pro1项目内,点击 Create New Assert
选中数据对象:
输入Order,点击确定,成功后跳转如下页面
Order相当于我们代码中的实体类,在左侧 Project Explorer视图中,可以看见项目结构
接下来添加字段,点击添加字段按钮:
ID 位置,输入java bean的字段,标签是备注信息,类型选择对应的字段类型,保存,点击创建,关闭弹窗,点击创建并继续,可以继续创建.
点击右上角的保存,至此,一个数据对象我们就创建完成,可以在源代码中查看代码内容.
接下来我们创建一个drl文件,创建过程跟创建bean类似,drl文件内容如下
package com.mashibing.pro1;
rule "rule_1"
when
$order:Order(age > 10)
then
System.out.print("rule run...");
end
设置KieBase+KieSession
项目首页点击Settings
选择知识库跟会话
弹出窗口,输入Kiebase名称即可,我们以kb1为例
操作完成后,不要忘记保存,此时,我们可在Project Explorer视图中,resource/METAINF/kmodule.xml中看见如下信息
<kmodule xmlns="http://www.drools.org/xsd/kmodule" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<kbase name="kb1" default="false" eventProcessingMode="stream" equalsBehavior="identity" packages="com.mashibing.pro1">
<ksession name="ks1" type="stateful" default="true" clockType="realtime"/>
</kbase>
</kmodule>
导航回到项目首页,进行编译发布
发布成功后,我们可以在maven仓库中看到对应的jar
也可以访问:http://localhost:8080/kie-web/maven2/com/mashibing/pro1/1.0.0/pro1-1.0.0.jar 验证是否发布成功
代码使用
@Test
public void test() throws Exception{
//通过此URL可以访问到maven仓库中的jar包
//URL地址构成:http://ip地址:Tomcat端口号/WorkBench工程名/maven2/坐标/版本号/xxx.jar
String url = "http://localhost:8080/kie-web/maven2/com/mashibing/pro1/1.0.0/pro1-1.0.0.jar";
KieServices kieServices = KieServices.Factory.get();
UrlResource resource = (UrlResource) kieServices.getResources().newUrlResource(url);
//认证
resource.setUsername("kie-web");
resource.setPassword("kie-web123");
resource.setBasicAuthentication("enabled");
KieRepository repository = kieServices.getRepository();
//通过输入流读取maven仓库中的jar包数据,包装成KieModule模块添加到仓库中
KieModule kieModule = repository.addKieModule(kieServices.getResources().newInputStreamResource(resource.getInputStream()));
KieContainer kieContainer = kieServices.newKieContainer(kieModule.getReleaseId());
KieSession session = kieContainer.newKieSession();
Order order = new Order();
order.setName("张三");
order.setAge(30);
session.insert(order);
session.fireAllRules();
session.dispose();
}
我们用URL流的方式,获取jar资源,并构造kiesession对象,即可动态访问workbench中的规则
边栏推荐
- I have been working in software testing for 3 years, how did I go from just getting started to automated testing?
- 有没有可以做副业可以日入300元方法?
- Teach you how to configure Jenkins automated email notifications
- Inner monologue from a female test engineer...
- rpm install postgresql12
- 一个无经验的大学毕业生,可以转行做软件测试吗?我的真实案例
- Nacos
- 16、注册中心-consul
- Crypto Life, a day in the life of a Web3 project partner
- 1.非类型模板参数 2.模板的特化 3.继承讲解
猜你喜欢
Multiplication, DFS order
VSCode插件:嵌套注释
GCC Rust获批将被纳入主线代码库,或将于GCC 13中与大家见面
Interprocess communication study notes
ShardingJDBC使用总结
Chi-square distribution of digital image steganography
手把手教你配置Jenkins自动化邮件通知
第一学年课程期末考试
《MySQL数据库进阶实战》读后感(SQL 小虚竹)
I have been working in software testing for 3 years, how did I go from just getting started to automated testing?
随机推荐
934. 最短的桥
Word 表格跨页,仍然显示标题
真正的CTO,是一个懂产品的技术人
Kyushu cloud as cloud computing standardization excellent member unit
C language _ structure pointer array function voting system
怎样做好一个创业公司CTO?
验证 XML 文档
Crawler text data cleaning
Shell变量与赋值、变量运算、特殊变量
[WeChat applet] This article takes you to understand data binding, event binding, event parameter transfer, and data synchronization
二层广播风暴(产生原因+判断+解决)
ShardingJDBC使用总结
Software Testing Defect Reporting - Definition, Composition, Defect Lifecycle, Defect Tracking Post-Production Process, Defect Tracking Process, Purpose of Defect Tracking, Defect Management Tools
一个无经验的大学毕业生,可以转行做软件测试吗?我的真实案例
Likou Daily Question - Day 46 - 704. Binary Search
【Map与Set】之LeetCode&牛客练习
android的webview缓存相关知识收集
项目开发软件目录结构规范
Centos 7.9 install PostgreSQL14.4 steps
软件测试缺陷报告---定义,组成,缺陷的生命周期,缺陷跟踪产后处理流程,缺陷跟踪处理流程,缺陷跟踪的目的,缺陷管理工具