• Drools WorkBench的简介与使用


    目录

    WorkBench简介

    配置 Tomcat

    启动服务器

    WorkBench使用

    创建空间、项目

    创建数据对象和drl文件

    设置KieBase+KieSession

    代码使用


    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,添加用户

    1. <tomcat-users xmlns="http://tomcat.apache.org/xml"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
    4. version="1.0">
    5. <role rolename="admin"/>
    6. <user username="kie-web" password="kie-web123" roles="admin"/>
    7. <user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
    8. tomcat-users>

    此账号密码用于登录WorkBench管理控制台

    2.修改server.xml

    1. <Host name="localhost" appBase="webapps"
    2. unpackWARs="true" autoDeploy="true">
    3. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    4. prefix="localhost_access_log" suffix=".txt"
    5. pattern="%h %l %u %t "%r" %s %b" />
    6. <Valve className="org.kie.integration.tomcat.JACCValve"/>
    7. Host>

    host节点下添加

    3.复制jar到tomcat根目录的lib下面:

    1. kie-tomcat-integration-7.10.0.Final.jar
    2. javax.security.jacc-api-1.5.jar
    3. 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文件内容如下

    1. package com.mashibing.pro1;
    2. rule "rule_1"
    3. when
    4. $order:Order(age > 10)
    5. then
    6. System.out.print("rule run...");
    7. end

    设置KieBase+KieSession

    项目首页点击Settings

    选择知识库跟会话 

    弹出窗口,输入Kiebase名称即可,我们以kb1为例 

    操作完成后,不要忘记保存,此时,我们可在Project Explorer视图中,resource/METAINF/kmodule.xml中看见如下信息 

    1. <kmodule xmlns="http://www.drools.org/xsd/kmodule" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    2. <kbase name="kb1" default="false" eventProcessingMode="stream" equalsBehavior="identity" packages="com.mashibing.pro1">
    3. <ksession name="ks1" type="stateful" default="true" clockType="realtime"/>
    4. kbase>
    5. kmodule>

    导航回到项目首页,进行编译发布

    发布成功后,我们可以在maven仓库中看到对应的jar

    也可以访问:http://localhost:8080/kie-web/maven2/com/mashibing/pro1/1.0.0/pro1-1.0.0.jar 验证是否发布成功

    代码使用

    1. @Test
    2. public void test() throws Exception{
    3. //通过此URL可以访问到maven仓库中的jar包
    4. //URL地址构成:http://ip地址:Tomcat端口号/WorkBench工程名/maven2/坐标/版本号/xxx.jar
    5. String url = "http://localhost:8080/kie-web/maven2/com/mashibing/pro1/1.0.0/pro1-1.0.0.jar";
    6. KieServices kieServices = KieServices.Factory.get();
    7. UrlResource resource = (UrlResource) kieServices.getResources().newUrlResource(url);
    8. //认证
    9. resource.setUsername("kie-web");
    10. resource.setPassword("kie-web123");
    11. resource.setBasicAuthentication("enabled");
    12. KieRepository repository = kieServices.getRepository();
    13. //通过输入流读取maven仓库中的jar包数据,包装成KieModule模块添加到仓库中
    14. KieModule kieModule = repository.addKieModule(kieServices.getResources().newInputStreamResource(resource.getInputStream()));
    15. KieContainer kieContainer = kieServices.newKieContainer(kieModule.getReleaseId());
    16. KieSession session = kieContainer.newKieSession();
    17. Order order = new Order();
    18. order.setName("张三");
    19. order.setAge(30);
    20. session.insert(order);
    21. session.fireAllRules();
    22. session.dispose();
    23. }

    我们用URL流的方式,获取jar资源,并构造kiesession对象,即可动态访问workbench中的规则

  • 相关阅读:
    前端国际化你还在一个个翻译?复制粘贴,让你坐着喝茶
    常识判断 --- 科技常识
    思腾云计算
    「Paraverse平行云」受邀参与编写国内首个3D数字内容生产技术白皮书
    漏洞复现-docker容器逃逸与研究
    2022-09-04 瞒春 学习笔记
    Linux 操作系统速通
    nodejs毕业设计源码基于node.js的博客系统
    模拟epoll的饥饿场景
    运行Redshift需要什么样的电脑?如何选电脑配置
  • 原文地址:https://blog.csdn.net/xushiyu1996818/article/details/126025301