当前位置: 首页 > news >正文

规则引擎drools Part5

规则引擎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

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包完成规则调用
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();
}

相关文章:

规则引擎drools Part5

规则引擎drools Part5 Drools Workbench Drools Workbench是可视化的规则编辑器&#xff0c;用来授权和管理业务规则。workbench的war包下载地址&#xff0c;安装到tomcat中就可以运行了。使用workbench可以在浏览器中创建数据对象、规则文件、测试场景并把规则部署到maven仓…...

API设计之争:一个接口一个职能还是一个页面所需字段?

在软件开发中&#xff0c;设计API接口是一个重要而且复杂的任务。在设计API接口时&#xff0c;一个常见的问题是&#xff0c;是按照每个接口的职能来设计&#xff0c;还是按照每个页面所需的字段来设计&#xff1f; 本文将对这两种设计方法进行比较&#xff0c;并探讨它们的优…...

第一天复习Qt文件读取

Qt文件操作&#xff1a; 1、QFile QTextStream操作文件案例&#xff1a; 1、打开文件 QFile file(absolute filepath | relative path); file.readLine()返回内容长度&#xff0c;如果为-1就是读取失败 file. Close()读取后关闭 file.errorString()返回文件打开发生的错误2、…...

使用非官网购买Chatgpt的api调用

测试代码 from openai import OpenAI client OpenAI(api_key用户密钥) import json import os import timeclass ChatGPT:def __init__(self, user):self.user userself.messages [{"role": "system", "content": "Agent"}]def as…...

通过 Java 操作 redis -- hash 哈希表基本命令

目录 使用命令 hset&#xff0c;hget 使用命令 hexists 使用命令 hdel 使用命令 hkeys&#xff0c;hvals 使用命令 hmget&#xff0c;hmset 关于 redis hash 哈希表类型的相关命令推荐看Redis - hash 哈希表 要想通过 Java 操作 redis&#xff0c;首先要连接上 redis 服务…...

Unity 性能优化之遮挡剔除(Occlusion Culling)(六)

提示&#xff1a;仅供参考&#xff0c;有误之处&#xff0c;麻烦大佬指出&#xff0c;不胜感激&#xff01; 文章目录 前言一、遮挡剔除是什么&#xff1f;二、静态遮挡剔除的使用步骤1.标记为遮挡剔除对象2.创建Occlusion Area组件3.烘焙4.Occlusion窗口Bake的参数Smallest Oc…...

android——关于app性能优化篇

前言 应用性能优化是指通过各种技术手段和优化策略&#xff0c;提高应用程序的性能&#xff0c;使其能够更高效地运行和响应用户操作。 下面介绍一些常见的应用性能优化方法 一、布局优化 1、减少嵌套 嵌套层数尽量少&#xff0c;使用ConstaintLayout能使层级大大降低尽量使…...

单链表经典算法LeetCode--203.移除链表元素(两种方法解)

1.链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;【点击即可跳转】 分析此题提供两种思路&#xff1a; 1.遍历原链表&#xff0c;将值为val的节点释放掉&#xff08;双指针法&#xff09; 定义一个pcur指针指向头节点&#xff0c;定义一个prev指针指向NULL 需要注…...

MySQL—子查询

目录 ▐ 子查询概述 ▐ 准备工作 ▐ 标量子查询 ▐ 列子查询 ▐ 表子查询 ▐ 多信息嵌套 ▐ 子查询概述 • 子查询也称嵌套查询&#xff0c;即在一个查询语句中又出现了查询语句 • 子查询可以出现在from 后面 或where后面 • 出现在 from 后称表子查询&#xff0c;结…...

ffmpeg 读取流报错: Non-monotonous DTS in output stream

在处理媒体文件时&#xff0c;我们可能会遇到各种错误&#xff0c;其中之一就是“Non-monotonous DTS in output stream 0:1; previous: 36963866, current: 36611997; changing to 36963867. This may result in incorrect timestamps in the output file.”这个错误通常发生在…...

yo!这里是socket网络编程相关介绍

目录 前言 基本概念 源ip&&目的ip 源端口号&&目的端口号 udp&&tcp初识 socket编程 网络字节序 socket常见接口 socket bind listen accept connect 地址转换函数 字符串转in_addr in_addr转字符串 套接字读写函数 recvfrom&&a…...

polars学习-03 数据类型转换

背景 polars学习系列文章&#xff0c;第3篇 数据类型转换。 该系列文章会分享到github&#xff0c;大家可以去下载jupyter文件 仓库地址&#xff1a;https://github.com/DataShare-duo/polars_learn 小编运行环境 import sysprint(python 版本&#xff1a;,sys.version.spli…...

IDC 权威认可!Aloudata 入选金融领域中数据管理分析服务最佳实践案例

近日&#xff0c;国际知名数据咨询机构 IDC 重磅发布了《IDC PeerScape&#xff1a;金融领域中数据管理分析服务最佳实践案例》报告&#xff0c;Aloudata 与招商银行联合打造的 DDH 数据研发运维一体化平台成功入选&#xff0c;Aloudata 的技术、产品实力&#xff0c;以及在金融…...

RSA与AES算法比较及应用场景推荐

摘要&#xff1a;在现代加密通信中&#xff0c;RSA算法和AES算法被广泛应用。RSA算法是一种非对称加密算法&#xff0c;而AES算法是一种对称加密算法。本文将对比分析这两种算法的原理、性能及适用场景&#xff0c;并给出相应的推荐建议。 一、RSA算法简介 RSA算法&#xff0…...

揭秘 HTTP 代理:增强在线活动的安全性和匿名性

HTTP 代理在保护您的在线隐私、增强安全性以及允许访问受限内容方面发挥着关键作用。了解 HTTP 代理的工作原理以及如何有效地利用它们可以让您掌控自己的在线状态和浏览体验。让我们深入研究 HTTP 代理的世界&#xff0c;探索它们的优势、应用程序以及最大化其效用的最佳实践。…...

【经验】mysql冷热数据分离

使用mysql存储时&#xff0c;为了提升数据的查询效率&#xff0c;降低磁盘存储压力等&#xff0c;我们常常使用"冷热数据分离"分离的方案。即&#xff0c;将数据从所谓的“热表”&#xff08;即经常有写入和查询操作的活跃表&#xff09;迁移到“冷表”&#xff08;用…...

【机器学习-06】Scikit-Learn机器学习工具包进阶指南:机器学习分类模型实战与数据可视化分析

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…...

蓝桥杯国赛每日一题:日志统计(双指针)

题目描述&#xff1a; 小明维护着一个程序员论坛。现在他收集了一份”点赞”日志&#xff0c;日志共有 N行。 其中每一行的格式是&#xff1a; ts id 表示在 ts时刻编号 id 的帖子收到一个”赞”。 现在小明想统计有哪些帖子曾经是”热帖”。 如果一个帖子曾在任意一个长…...

佛山MES公司(盈致mes系统服务商)助力企业实现智能制造

佛山是中国制造业著名的城市之一&#xff0c;拥有众多制造企业。随着科技的不断发展和智能制造的兴起&#xff0c;越来越多的企业开始意识到数字化生产管理的重要性&#xff0c;MES制造执行系统作为智能制造的关键技术之一&#xff0c;受到了越来越多企业的关注和应用。 在佛山…...

算法设计课第五周(贪心法实现活动选择问题)

目录 一、【实验目的】 二、【实验内容】 三、实验源代码 一、【实验目的】 &#xff08;1&#xff09;熟悉贪心法的设计思想 &#xff08;2&#xff09;理解贪心法的最优解与正确性证明之间的关系 &#xff08;3&#xff09;比较活动选择的各种“贪心”策略&#xff0c;…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...