Drools6 基本使用 -- 1

jboss规则引擎KIE Drools 6.3.0 Final 教程(1) 世面上成熟的规则引擎有很多,著名的如:IBM 的iLog,pegga rulz(飞马),我们在这边要介绍的也是开源中最著名的jboss rulz。 Jboss Rulz最早是只有基于.drools的规则文件的一个内嵌式规则引擎,后来它发展成了“规则管理系统”即BRMS,它的BRMS被称为Guvnor。后来在JBOSS Guvnor5.x后它又改名叫"KIE Drools WorkBench“。 目前世面上中文的KIE DROOLS Workbench(JBOSS BRMS)的教程几乎没有,有的也只有灵灵碎碎 阅读详情

为了系统能够动态响应业务逻辑的变化,需要引入规则引擎,之前用过Drools,找回它,发现Drools一直都在进化,版本6和5也有挺大差别了,文档和code sample都非常详细,感觉做的非常不错。

Note:Code link:https://github.com/droolsjbpm/drools 里面有很多sample api,还有很多junit test可以了解怎么使用Drools

Drools6给我的最大不同就是把rules打包成jar,使用端通过kie-ci来动态从maven repo中获取指定rules jar版本,虽然和maven有紧耦合,在网上也看到了很多人说不喜欢,项目没有maven之类的,不过我觉得简化以及清晰了rules的使用和动态升级:系统建立2个项目:一个Drools项目来实现规则,验收规则,生成jar包,另外一个就是真正要用规则的项目,直接通过引入不同版本的jar包实习规则动态升级。


看到有人在评论里面说我抄袭翻译,贴出我自己的Github代码,我确实是参考drools官网的资料学习的,知识有限,能力有限,有很多不专业的地方,请互相尊重,别随便污蔑人。谢谢!

https://github.com/elulian/CustomerSecurityManagementSystem/tree/master/CustomerSecurityManagementRules


下面介绍一下我基于这种想法做的sample实践:

Note:Drools有整合eclipse的IDE,不过我还没有用到它的复杂功能,所以我只是使用了eclipse+ drools plugin

1. 安装eclipse jee version

2. 从eclipse help->install new software, 安装drools插件 (我这里用的是6.1.0 beta3 http://download.jboss.org/drools/release/6.1.0.Beta3/org.drools.updatesite/)


3. 安装完插件之后重启,从eclipse new 一个drools project

输入project name

这个时候可以通过点击configure workspace settings,来创建drools runtime,选好runtime之后,groupid/artifact/id/version随意填写

选择下载的drools文件夹路径作为drools runtime路径

直接点击finish,这样一个包含sample的hello world的drools工程就创建好了。

4. 可以看出,drools project就是一个maven project,在src/main/java里面有个DroolsTest java文件

 KieServices ks = KieServices.Factory.get();
    	    KieContainer kContainer = ks.getKieClasspathContainer();
        	KieSession kSession = kContainer.newKieSession("ksession-rules");

            // go !
            Message message = new Message();
            message.setMessage("Hello World");
            message.setStatus(Message.HELLO);
            kSession.insert(message);
            kSession.fireAllRules();
这里可以看出 kie框架先初始化一个kieservice对象,然后从classpath中读取kmodule,创建KieContainder, 从而获取KieSession来对Fact(message对象)执行规则(fireAllRules)

5. 在src/main/resources下面有个rules folder,里面有具体的rules.drl(具体规则定义文件),同时有个meta-inf folder,里面有个maven folder和一个kmodule.xml的配置文件,maven folder里面有个pom.properties,这个properties是因为新版本的drools依靠maven来区分不同的kmodule从而实习方便的动态rules upgrade,打开pom.properties,可以看到groupid/artifact/id/version都没有值,把它们改成如下:

groupId=${project.groupId}
artifactId=${project.artifactId}
version=${project.version}

这样可以直接使用pom中的相应信息。

6. kmodule.xml就是kieservice从classpath需要读取的kmodule配置文件,这个配置文件决定了kession的类型,名称,rules文件所在文件夹(kbase packages)

<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
    <kbase name="rules" packages="rules">
        <ksession name="ksession-rules"/>
    </kbase>
</kmodule>

kession有stateless和stateful的区别,从drools官方说法除了处理大数据,stateless和stateful没有大区别,从code看stateless的实现就是使用了stateful。。。使用哪种由ksession的type属性决定,默认ksession是stateful的,如果想使用stateless的ksession,可以修改kmodule.xml ksession行如下:

 <pre name="code" class="html"><ksession name="ksession-rules" <span style="font-family: Arial, Helvetica, sans-serif;">type="stateless" </span><span style="font-family: Arial, Helvetica, sans-serif;">/></span>


同时代码中也要改成使用statelsskiesession,并且不用fireAllRules,改成调用exeucte方法

kContainer.newStatelessKieSession("ksession-rules")

7.修改项目的pom.xml,加入以下信息到pom.xml,同时加入$属性定义到pom文件

<dependencies>
		<!-- for drools -->
		<dependency>
			<groupId>org.drools</groupId>
			<artifactId>drools-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.drools</groupId>
			<artifactId>drools-compiler</artifactId>
		</dependency>
		<dependency>
			<groupId>org.drools</groupId>
			<artifactId>knowledge-api</artifactId>
		</dependency>
		<dependency>
			<groupId>org.drools</groupId>
			<artifactId>drools-decisiontables</artifactId>
		</dependency>
		<dependency>
			<groupId>org.drools</groupId>
			<artifactId>drools-jsr94</artifactId>
		</dependency>
		<!-- fix for SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder" 
			issue -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-simple</artifactId>
			<version>${project.slf4j-simpleVersion}</version>
		</dependency>
		<!-- for drools end -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
		</dependency>
	</dependencies>
	<build>
		<defaultGoal>install</defaultGoal>
		<plugins>
			<plugin>
				<groupId>org.kie</groupId>
				<artifactId>kie-maven-plugin</artifactId>
				<version>${project.kiePluginVersion}</version>
				<extensions>true</extensions>
			</plugin>
		</plugins>
	</build>

这里特别提一下kie-maven-plugin,官方文档说加入这个可以帮助预编译rules防止rules语法错误,虽然我觉得打包之前只要做够测试就不太可能出现这种问题,还是保留它。

今天先到这里,下次写添加测试类,deploy jar,以及在其他项目里面如何使用rules jar

kie-drools-wb drools 的Drools Workbench 运行时所需jar包 立即下载

相关推荐

exec-maven-plugin:执行Maven插件

MojoHaus Exec Maven插件 这是 。 发行 确保gpg-agent正在运行。 执行mvn -B release:prepare release:perform 要发布网站,请执行以下操作: cd target/checkout mvn verify site site:stage scm-publish:publish-scm

流程引擎之KIE项目简介

KIE 是“Knowledge Is Everything”的简称,KIE 名称也被用于系统的共享方面,比如统一构建、部署和使用。jBoss 公司通过 KIE 将 jBPM 和 Drools 等相关项目进行了一个整合,统一了他们的使用方式

聚焦AI技术前沿,深度解析大模型原理与多场景应用,探索最新突破与落地实践,助力行业洞悉趋势,驱动智能转型,赋能千行百业。 2581

eclipse的drools插件 本地离线安装(版本-7.0.0.Final)

eclipse下的drools插件,目前的最新版本7.0.0Final。在安装Eclipse插件时,需要从本地进行安装,选中“droolsjbpm-tools-distribution-7.0.0.Final/binaries/org.drools.updatesite”目录即可。

Drools用户手册翻译——第三章 构建,部署,应用和运行(五)可执行规则模型

这应该是Drools的新东西,我之前使用的时候都没注意到还有这么一个东西,据说是可以让Drools变得更高更快更强,这里面有比较详细的介绍,感兴趣就去来看看。

zcrazy的博客 477

eclipse下的drools插件

eclipse下的drools插件,很好用,拷贝粘贴一下就ok

DroolsEclipse插件包

Drools是用Java编写的一个BRMS(业务规则管理系统),本资源为drools插件,可以很方便地集成到Eclipse中使用。 安装步骤参见:http://www.yiibai.com/drools/drools_eclipse_plugin.html

Maven 插件的使用(一)

Maven 插件的使用(一)

2092

光伏发电系统模拟及其发电预测开源python工具pvlib

本文介绍光伏发电系统模拟及其发电预测开源python工具pvlib,以及举例介绍获取辐照度方法、光伏发电预测思路。

肖永威的专栏 1万+

Drools 的Eclipse Plugin安装

1、在eclipse下(当前使用的是STS)进行在线安装JBoss Drools(三个包都要) http://downloads.jboss.com/drools/updatesite3.5/ STS -> Help -> Install New Software... 2、下载和解压drools的执行文件 http://download.jboss.org/drool

Seven's Rainbow Paradise 1879

H3C模拟器HCL防火墙路由模式主备配置实验

摘要:本文详细介绍了网络拓扑规划与设备配置方案。运营商仅提供一个接口地址,通过虚IP技术实现双防火墙高可用部署:主备防火墙分别配置10.20.10.1/29和10.20.10.2/29作为实际上联地址,共享10.10.10.2/24虚IP;下联配置172.168.10.0/24网段,核心交换机配置VLAN接口及192.168.10.1、192.168.20.1两个下联接口。文章包含运营商路由器、防火墙(HA配置、VVRP设置)和核心交换机的具体命令行配置步骤,并强调需进行主备切换验证。整个方案实现了单运营商

LQ的博客 1121

CCS TMSC6748 报错Error connecting to the target: (Error -600 @ 0x0)

CCS TMSC6748 报错Error connecting to the target:(Error -600@ 0x0)

AS_the_deer1717的博客 6632

Drools6.1规则引擎环境搭建

Drools 6.1规则引擎环境搭建    1、Drools官方网站下载Drools安装包, 官网链接:http://drools.org/download/download.html     下载安装包后,解压放到任意盘(比如D盘),解压之后该目录下包含如下的子目录: 其中: binaries: 存放所依赖的第三方jar包和Droo

ywj776199845的专栏 1217

Nuclei漏洞扫描:从零到精通的Windows实战指南

本文详细介绍了Nuclei漏洞扫描工具在Windows平台上的安装与使用教程,从基础安装到高级实战技巧全面覆盖。通过具体案例展示如何利用Nuclei的模板库快速检测常见漏洞,并提供自定义POC开发指南,帮助安全从业者高效开展漏洞扫描工作。

weixin_28683689的博客 249

drools in java_PackageBuilder。java在Drools 6.1.0.final中不可用

I am new to drools and we are currently using Drools 5.4.0 in our project. Currently we are using RuleCompiler.java and PackageBuilder.java classes of Drools 5.4.0 to compile the .xls files and create...

weixin_42415036的博客 181

【重启后nvidia-smi 命令出现错误】

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

qq_44769377的博客 5211

高频注入是否需要对齐和强拖操作?

高频注入技术显著优化了传统FOC启动流程,但仍需部分对齐操作。传统启动必须包含位置检测、对齐和强拖等步骤,而高频注入可实现零速闭环,简化或跳过部分环节。高频注入下的对齐主要用于验证有效性、初始化观测器和建立初始磁链,形式可大幅简化。虽然高频注入基本消除了传统强拖需求,但在重载、弱凸极等特殊情况下仍需辅助。实际应用中可采用自适应混合策略,根据负载和电机类型选择最优启动方案。高频注入使对齐和强拖从"必须"变为"可选优化项",是无传感器控制的重要进步。

汽车软件开发 204

myeclipse10中安装drools6.1

droolsjbpm-integration-distribution-6.1.0.Final.zip droolsjbpm-tools-distribution-6.1.0.Final.zip

u012531787的专栏 2473

Plecs电力电子仿真专业教程-第一季 补充课程 Plecs的安装教程与软件下载

PLECS4.1.64免安装版本–点我下载 Plecs.Standalone-3.7.2版本--关注加私信给我可以提供下载链接 补充课程 Plecs的安装教程与软件下载 详细介绍Plecs软件的安装过程

1万+

规则引擎Drools(1/6)

问题引出 现有一个在线申请信用卡的业务场景,用户需要录入个人信息,如下图所示 通过上图可以看到,用户录入的个人信息包括姓名、性别、年龄、学历、电话、所在公司、职位、月收入、是否有房、是否有车、是否有信用卡等。录入完成后点击申请按钮提交即可。 用户提交申请后,需要在系统的服务端进行用户信息合法性检查(是否有资格申请信用卡),只有通过合法性检查的用户才可以成功申请到信用卡(注意:不同用户有可能申请到的信用卡额度不同) 检查用户信息合法性的规则如下: 用户信息合法性检查通过后,还需要根据

给你更好的 614

【WRF数据准备】土地利用类型分类标准:USGS+MODIS IGBP 21

【WRF数据准备】土地利用类型分类标准:USGS+MODIS IGBP 21

WW、forever的博客 4474

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【转自IT虾米网:www.itxm.net】外部应用和drools-wb6.1集成解决方案

一.手把手教你集成外部应用和drools workbench6.1 1.         首先按照官方文档安装workbench ,我用的是最完整版的jbpm6-console的平台系统,里面既包含jbpm6工作平台,又包含drools6的工作平台。我用的是中文版,不知道为啥,我安装完成默认就是中文版,首页如下图: 2.         正式进入操作: 1.       第一步,创建资料库:点击...

weixin_33787529的博客 205

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

workbench轻松搭建(drools7.6.0版本)

Drools Workbench是管理Drools和jBPM资产的Web应用程序和存储库。一、所需环境1.windows操作系统(此处以windows操作系统为例,linux操作系统差不多)2.tomcat83.jdk1.8二、安装步骤1.安装好jdk,下载好tomcat8后,从drools官网下载workbench的war包2.下载好后解压war包,并把解压后的文件名改为kie-drools-w...

IT-HotBoy的博客 9600

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: github basic usage in windows
下一篇: drools6 基本使用 -- 2
开心的D哥
博客等级 码龄22年 63粉丝 110原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值