规则引擎drools Part5

embedded/2024/10/18 23:32:25/

drools_Part5_0">规则引擎drools Part5

Drools Workbench

  1. Drools Workbench是可视化的规则编辑器,用来授权和管理业务规则。workbench的war包下载地址,安装到tomcat中就可以运行了。使用workbench可以在浏览器中创建数据对象、规则文件、测试场景并把规则部署到maven仓库方便其他应用使用。
  2. workbench部署步骤
  • 需要安装配置jdk、maven、tomcat

  • 把下载的kie-drools-wb-7.10.0.Final-tomcat8.war改名为kie-drools-wb.war

  • 在tomcat/bin目录下创建setenv.bat文件,添加配置

# 其中配置CATALINA_HOME为tomcat的安装目录
CATALINA_OPTS="-Xmx512M \-Djava.security.auth.login.config=$CATALINA_HOME/webapps/kie-drools-wb/WEB-INF/classes/login.config \-Dorg.jboss.logging.provider=jdk"
  • 修改tomcat/conf/tomcat-users.xml文件,添加用户kie
<?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" password="kie" roles="admin"/>
</tomcat-users>
  • 在tomcat/conf/server.xml文件添加配置
<Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true"><!-- SingleSignOn valve, share authentication between web applicationsDocumentation at: /docs/config/valve.html --><!--<Valve className="org.apache.catalina.authenticator.SingleSignOn" />--><!-- Access log processes all example.Documentation at: /docs/config/valve.htmlNote: 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 &quot;%r&quot; %s %b" /> --><!-- 新增配置 --><Value className="org.kie.integration.tomcat.JACCValve"/>
</Host>    
  • 下载以下Jar包并添加到tomcat/lib目录下
kie-tomcat-integration-7.10.0.Final.jar
jakarta.security.jacc-api-1.6.1.jar
slf4j-api-1.7.25.jar
  • 启动tomcat,访问workbench首页,使用kie/kie登录
http://localhost:8080/kie-drools-wb/kie-drools-wb.jsp
  1. Drools Workbench的使用

使用WorkBench时,首先创建空间或者使用默认的空间,然后在空间中创建项目,最后在项目中创建数据对象、规则文件、测试场景等。创建项目时会使用到maven下载依赖。

(1)创建数据对象,指定名称和软件包,添加字段后自动生成对应的java源码类Student.java

java">package com.jzy.demo;/*** This class was automatically generated by the data modeler tool.*/public class Student implements java.io.Serializable {static final long serialVersionUID = 1L;private Integer id;private java.lang.String name;private int age;private java.lang.String address;public Student() {}public java.lang.String getName() {return this.name;}public void setName(java.lang.String name) {this.name = name;}public int getAge() {return this.age;}public void setAge(int age) {this.age = age;}public java.lang.String getAddress() {return this.address;}public void setAddress(java.lang.String address) {this.address = address;}public java.lang.Integer getId() {return this.id;}public void setId(java.lang.Integer id) {this.id = id;}public Student(java.lang.Integer id, java.lang.String name, int age,java.lang.String address) {this.id = id;this.name = name;this.age = age;this.address = address;}}

(2)创建规则文件student.drl

package com.jzy.demo;
import com.jzy.demo.Studentrule "rule_1"whencom.jzy.demo.Student(age < 20 && name != null)thenSystem.out.println("rule1 activated.");    
end

(3)在项目视图点击设置,添加Kie bases

(4)在项目视图点击build构建,使用deploy发布后在本地maven库生成一个jar包

(5)在maven项目中使用workbench生成的包

  • 创建一个Student类,与workbench中创建的包名类名完全相同,属性也要对应
  • 通过远程加载maven仓库中的jar包完成规则调用
java">public static void main(String[] args) throws Exception{//通过此URL可以访问到maven仓库中的jar包//URL地址构成:http://ip地址:Tomcat端口号/WorkBench工程名/maven2/坐标/版本号/xxx.jarString url = "http://localhost:8080/kie-drools-wb/maven2/com/jzy/demo/1.0.0/demo-1.0.0.jar";    KieServices kieServices = KieServices.Factory.get();//通过Resource资源对象加载jar包UrlResource resource = (UrlResource) kieServices.getResources().newUrlResource(url);//通过Workbench提供的服务来访问maven仓库中的jar包资源,需要先进行Workbench的认证resource.setUsername("kie");resource.setPassword("kie");resource.setBasicAuthentication("enabled");    //将资源转换为输入流,通过此输入流可以读取jar包数据InputStream inputStream = resource.getInputStream(); //创建仓库对象,仓库对象中保存Drools的规则信息KieRepository repository = kieServices.getRepository();//通过输入流读取maven仓库中的jar包数据,包装成KieModule模块添加到仓库中KieModule kieModule = repository.addKieModule(kieServices.getResources().newInputStreamResource(inputStream));    //基于KieModule模块创建容器对象,从容器中可以获取session会话KieContainer kieContainer = kieServices.newKieContainer(kieModule.getReleaseId());KieSession session = kieContainer.newKieSession();Student stu = new Student();stu.setAge(12);session.insert(stu);session.fireAllRules();session.dispose();
}

http://www.ppmy.cn/embedded/40958.html

相关文章

保姆级零基础微调大模型(LLaMa-Factory,多卡版)

此处非常感谢https://github.com/hiyouga/LLaMA-Factory这个项目。 看到网上的教程很多都是教如何用webui来微调的,这里出一期命令行多卡微调教程~ 1. 模型准备 模型下载比较方便的方法: 1. modelscope社区(首选,速度很高,并且很多需要申请的模型都有)注意要选择代码…

深度解析Nginx:高性能Web服务器的奥秘(下)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《洞察之眼&#xff1a;ELK监控与可视化》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、前言 1、Nginx概述 二、Nginx核心功能 1、URL重写与重…

Oracle的materialized view是什么怎么使用

Oracle的Materialized View&#xff0c;也就是物化视图&#xff0c;是一个强大的数据库对象。在Oracle 9i之前的版本中&#xff0c;它被称为SNAPSHOT&#xff0c;但从9i开始被更名为物化视图。 物化视图是远程数据的本地副本&#xff0c;或者用于生成基于数据表求和的汇总表。…

HarmonyOS开发之ArkTS使用:用户登录页面应用

目录 目录 前言 关于HarmonyOS 环境准备 新建项目 设计用户登录页面 1. 布局设计 2. 编写ArkTS代码 运行和测试 结束语 前言 随着HarmonyOS&#xff08;鸿蒙操作系统&#xff09;的不断发展&#xff0c;越来越多的开发者开始投入到这个全新的生态系统中&#xff0c;而…

JavaScript中常用的设计模式有很多种

JavaScript中常用的设计模式有很多种。具体如下&#xff1a; 创建型模式&#xff1a;用于描述如何创建对象&#xff0c;主要目的是将对象的创建和使用分离。包括&#xff1a; 单例模式&#xff08;Singleton&#xff09;&#xff1a;确保一个类只有一个实例&#xff0c;并提供…

等保三级需要什么安全产品?

等保三级&#xff0c;即信息安全等级保护三级&#xff0c;是中国对信息系统安全等级保护的一个标准。实现等保三级要求&#xff0c;需要部署一系列安全产品来加强信息系统的安全性。以下是等保三级通常需要的安全产品及其作用概述&#xff1a; 防火墙&#xff1a;作为网络安全的…

Android 右键 new AIDL 无法选择

提示 (AIDL File)Requires setting the buildFeatures.aidl to true in the build file&#xff09; 解决方式&#xff1a; 在app的build.gradl中 adnroid{} 添加&#xff1a; buildFeatures{aidl true}

Mysql数据存储格式分析

一、整体存储逻辑 1.1 Mysql数据存放位置 不同的存储引擎&#xff0c;对Mysql数据的存储是不同的。新建一个test数据库&#xff0c;里面有t1,t2和test5三张表&#xff0c;以Innodb和Myisam存储引擎为例&#xff1a; Innodb存储引擎&#xff1a; .frm文件&#xff1a;与表相…