当前位置:网站首页>Drools WorkBench的简介与使用
Drools WorkBench的简介与使用
2022-07-31 01:47: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中的规则
边栏推荐
- 如何在 go 程序中暴露 Prometheus 指标
- Simple confession page
- What is the ideal college life?
- Know what DTU is 4GDTU equipment
- Is there a way to earn 300 yuan a day by doing a side business?
- 打印任务排序 js od华为
- TiKV主要内存结构和OOM排查总结
- keep-alive cache component
- System design. Short chain system design
- I have been working in software testing for 3 years, how did I go from just getting started to automated testing?
猜你喜欢
Kyushu cloud as cloud computing standardization excellent member unit
leetcode-1161:最大层内元素和
内网渗透——提权
Fiddler抓包模拟弱网络环境测试
C language _ structure pointer array function voting system
Analyze the capabilities and scenarios of the cloud native message flow system Apache Pulsar
GCC Rust is approved to be included in the mainline code base, or will meet you in GCC 13
coldfusion8后台计划任务拿shell
"Real" emotions dictionary based on the text sentiment analysis and LDA theme analysis
leetcode-399:除法求值
随机推荐
华为od 转骰子 js
ROS Action communication
《云原生的本手、妙手和俗手》——2022全国新高考I卷作文
最大路径和
MySQL的存储过程
GCC Rust获批将被纳入主线代码库,或将于GCC 13中与大家见面
MySql installation and configuration super detailed tutorial and simple method of building database and table
System design. Short chain system design
MySql的安装配置超详细教程与简单的建库建表方法
Can an inexperienced college graduate switch to software testing?my real case
数字图像隐写术之卡方分布
TiKV主要内存结构和OOM排查总结
Centos 7.9安装PostgreSQL14.4步骤
数字图像隐写术之JPEG 隐写分析
观察者(observer)模式(一)
MySQL (6)
How to expose Prometheus metrics in go programs
.NET 跨平台应用开发动手教程 |用 Uno Platform 构建一个 Kanban-style Todo App
1782. 统计点对的数目 双指针
Chi-square distribution of digital image steganography