目录
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中,否则启动失败
具体安装步骤:
1.修改tomcat-user.xml,添加用户
- <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">
-
-
- <role rolename="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">
-
-
-
-
-
- <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节点下添加
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登录

首页中点击 project,创建空间


我们创建一个 mashibing 的工作空间。点击 Save,保存。

点击工作空间当中的 mashibing,进入空间

点击Add Project添加项目

成功后,我们可以看见下图

左上角的导航条,可以在空间和project之间切换
切换到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
项目首页点击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中的规则