当前位置:网站首页>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.jar4.复制 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中的规则
边栏推荐
- MySQL的安装教程(嗷嗷详细,包教包会~)
- Google官方控件ShapeableImageView使用
- CV-Model【3】:MobileNet v2
- What have I experienced when I won the offer of BAT and TMD technical experts?
- What does a software test report contain?
- Drools WorkBench的简介与使用
- Word/Excel 固定表格大小,填写内容时,表格不随单元格内容变化
- leetcode-128:最长连续序列
- MySql installation and configuration super detailed tutorial and simple method of building database and table
- C language _ structure pointer array function voting system
猜你喜欢

Path and the largest

力扣刷题之有效的正方形(每日一题7/29)

Are you still working hard on the limit of MySQL paging?

Overview of prometheus monitoring

vlan间路由+静态路由+NAT(PAT+静态NAT)综合实验

Nacos

What have I experienced to become a tester who is harder than development?

静态路由+PAT+静态NAT(讲解+实验)

pycharm cannot run after renaming (error: can't open file...No such file or directory)

MySql installation and configuration super detailed tutorial and simple method of building database and table
随机推荐
Simple confession page
My first understanding of MySql, and the basic syntax of DDL and DML and DQL in sql statements
Maximum monthly salary of 20K?The average salary is nearly 10,000... What is the experience of working in a Huawei subsidiary?
静态路由+PAT+静态NAT(讲解+实验)
"Cloud native's master, master and vulgar skills" - 2022 National New College Entrance Examination Volume I Composition
力扣刷题之有效的正方形(每日一题7/29)
link与@import的区别
【微信小程序】一文带你了解数据绑定、事件绑定以及事件传参、数据同步
What are the project management tools like MS Project
【Map与Set】之LeetCode&牛客练习
ROS Action communication
MySql的安装配置超详细教程与简单的建库建表方法
Crawler text data cleaning
手把手教你配置Jenkins自动化邮件通知
Can an inexperienced college graduate switch to software testing?my real case
pycharm重命名后无法运行(报错: can‘t open file......No such file or directory)
cudaMemcpy学习笔记
[1154]如何将字符串转换为datetime
Fiddler抓包模拟弱网络环境测试
最高月薪20K?平均薪资近万...在华为子公司工作是什么体验?