Drools语言规则

规则引擎原理与实战:Drools规则语言入门 1.背景介绍 规则引擎是一种基于规则的系统,它可以根据一组规则来自动化地处理复杂的业务逻辑。规则引擎的核心是规则引擎的核心,它可以根据一组规则来自动化地处理复杂的业务逻辑。规则引擎的核心是规则引擎的核心,它可以根据一组规则来自动化地处理复杂的业务逻辑。规则引擎的核心是规则引擎的核心,它可以根据一组规则来自动化地处理复杂的业务逻辑。规则引擎的核心是规则引 阅读详情

记录一下drl的编写语言规则。

1.基本格式

package
import
function // Optional
query // Optional
declare // Optional
global // Optional
rule "rule name"
    // Attributes
    when
    // Conditions
    then
    // Actions
end
rule "rule2 name"

package、import的使用方式以及规则和java的一致。

2. function函数

drl文件中的function函数不能放在java代码块中调用(当然可以写个java方法在drl里面调用。。。)

第一种函数使用方式,直接在drl文件中定义function

第二种函数使用方式,导入java静态方法做函数,在drl直接引用(这个使用的也很多,主要是可以将业务模块和drl串联,有很大的扩展空间)、

3. drl内部查询 

 query方法是定义查询方式的关键字,和rule一样,每个查询函数需要有唯一的名称

 “people under the age of 21”整个字符串作为query的名称,在内部写筛选条件。

使用方式:

QueryResults results = kieSession.getQueryResults("规则名称");

获取的results可和正常的List一样使用for循环或者增强型for循环。

4. 参数定义

参数内置样例

默认情况下参数顺序和定义一致,如果需要自定义调整顺序但是不更改原始参数,可以使用@position标注顺序,例如:

declare Location
    thing : String @position(1)
    local : String @position(0)

使用样例

results = kieSession.getQueryResults("规则名称",new Object[]{x,y})

枚举定义样例

declare enum DaysOfWeek
SUN("sunday"),MON("monday"),TUE("tursday")

rule "test"
when
    $temp : Location(day == DaysOfWeek.SUN)
then
    ...
end

 5. 标签

@role 此标签确定在复杂事件处理期间,给定的事实类型是作为常规事实处理还是作为 Drools 引擎中的事件处理。
默认参数: fact
支持的参数: fact , event


@timestamp    自动分配给 Drools 引擎中的每个事件。默认情况下,时间由会话时钟提供,并在插入 Drools 引擎的工作内存时分配给事件。您可以指定自定义时间戳属性,而不是会话时钟添加的默认时间戳

@duration    这个标签决定了 Drools 引擎中事件的持续时间。事件可以是基于间隔的事件或时间点事件。基于间隔的事件有一个持续时间,并在
Drools 引擎的工作内存中持续存在,直到它们的持续时间结束。时间点事件没有持续时间,本质上是持续时间为零的基于间隔的事
件。默认情况下,Drools 引擎中的每个事件的持续时间为零。您可以指定自定义持续时间属性而不是默认值

@expires
这个标签决定了一个事件在 Drools 引擎的工作内存中过期之前的持续时间。默认情况下,当事件不再匹配并激活任何当前规则时,事
件就会过期。您可以定义事件应在多长时间后过期。此标签定义还覆盖了根据 KIE 基础中的时间约束和滑动窗口计算的隐式过期偏移
量。该标签仅在 Drools 引擎以流模式运行时可用

@typesafe
此选项卡确定给定的事实类型是否在使用或不使用类型安全的情况下进行编译。默认情况下,所有类型声明都在启用类型安全的情况下
编译。您可以将此行为覆盖为类型不安全的评估,其中所有约束都作为 MVEL 约束生成并动态执行。这在处理没有任何泛型或混合类
型集合的集合时很有用

@serialVersionUID
此标记定义 serialVersionUID 事实声明中可序列化类的标识值。如果可序列化类未显式声明 a serialVersionUID ,则序列化运行
时会根据 serialVersionUID 类的各个方面为该类计算默认值,如Java 对象序列化规范
(https://docs.oracle.com/javase/10/docs/specs/serialization/index.html)中所述。但是,为了获得最佳反序列化结果以及与序列化 KIE 会
话的更大兼容性,请 serialVersionUID 根据需要在相关类或 DRL 声明中设置

@key
此标记使事实类型属性能够用作事实类型的键标识符。生成的类然后可以实现 equals() 和 hashCode() 方法来确定该类型的两个实例
是否彼此相等。Drools 引擎还可以使用所有关键属性作为参数生成构造函数

@position
此标记确定声明的事实类型属性或字段在位置参数中的位置,覆盖默认声明的属性顺序。您可以使用此标记来修改模式中的位置约束,
同时在类型声明和位置参数中保持一致的格式。您只能将此标记用于类路径上的类中的字段。如果单个类中的某些字段使用此标记而某
些不使用,则没有此标记的属性按声明的顺序位于最后。支持类的继承,但不支持方法的接口。

Drools 规则引擎入门:规则语言与域语言实例解析 Drools是JBOSS企业中间件的一部分,它是一个开源的规则引擎,其核心是基于Rete算法的模式匹配引擎,允许复杂的业务规则以声明式的方式被定义和管理。Drools为开发者提供了一个灵活且强大的推理和决策管理平台,广泛应用于需要高度可配置和动态决策的场景。Drools支持多种类型的业务规则,如事实、规则、断言、查询、函数等。用户可以通过Drools提供的规则语言来编写业务规则,该语言易于理解且功能强大,支持逻辑、条件判断、事件处理等多种逻辑操作。 阅读详情

相关推荐

【主力资金密码】副图指标升级版使用技术图文案例分解,通达信软件炒股指标公式代码

(1)主力资金线在低位时,对应的副图指标显示柱线是绿色,这个阶段主力资金参与小,行情处于下跌趋势或弱势震荡。当然,如果结合主图指标【翻倍密码系统】操作,主图的两个买卖点以及K线均线变色跟踪功能,更多的技术支撑,多空更加清晰,共振做多或多头更加确定和安全。如上图标记,中档虚线是参考安全操作的一个区间划分,粉色阶段做多或持股为主,为操作增加一道安全保护。如上图,副图指标【主力资金密码】更新叠加操作区间背景,绿色阶段持币或做空,粉色阶段做多或持股。如上图,副图指标,标记的两个区间,绿色区间时做空或持币。

weixin_69760830的博客 2556

Drools记录之DRL规则语言

二、DRL(Drools规则语言)规则 DRL文件可以包含单个或多个规则,查询和函数,并且可以定义资源声明,例如由规则和查询分配和使用的导入,全局和属性。DRL软件包必须在DRL文件的顶部列出,并且规则通常在最后列出。所有其他DRL组件都可以遵循任何顺序。 每个规则在规则包中必须具有唯一的名称。如果在包中的任何DRL文件中多次使用相同的规则名称,则规则将无法编译。始终用双引号(rule “rule...

qq_33842877的博客 3318

从EXIF到测绘:解码大疆影像元数据的实战应用指南

本文深入解析了大疆无人机影像元数据的实战价值,重点阐述了如何利用EXIF和XMP中的GPS、RTK、姿态角及相机内参等关键信息,提升测绘、三维重建及精准农业等项目的成果精度与效率。通过自动化质检脚本与行业应用场景剖析,指导从业者将元数据从信息转化为生产力,实现从拍照到专业测绘的跨越。

dell8的博客 527

drools规则拼接_Drools入门(四)——动态规则实现

概述前面我们实现了对规则文件的读取和执行,也知道了规则文件的基本结构与相关函数及应用,同时也学习了规则引擎的组件及规则的加载解析过程。现在将解决最后一个问题,我们开发中的需求是不会事先写好规则文件文件在启动项目的,如果是这样当规则文件修改新增或删除时就必须重启服务器,这样才能使规则生效,这显然是不合理的,接下来我们将在《Drools入门(一)——环境搭建》的基础上进行修改,使规则引擎动态加载外部规...

weixin_39720662的博客 823

stm32最小系统_完成一个最小FOC矢量控制系统所需的基本模块和功能配置

当我们读懂 FOC 矢量控制的基本原理之后,便迫不及待的想动手尝试,去实现一个矢量控制系统,让电机先转起来,有一个直观的感受。因此,我们需要设计实现一个矢量控制的最小系统,具备矢量控制的基本功能,满足电机矢量运行的基本条件。首先,看一下矢量控制的基本架构:矢量控制架构如上图所描述,矢量控制系统包括实时电流的采集、clarke 变换、park 变换、SVPWM 、实时角度的反馈和计算以及电流环和速...

weixin_39524048的博客 1784

用人话讲明白线性回归LinearRegression

目录 什么是回归 一元线性回归 损失函数 最小二乘估计 小结 1. 什么是回归 当我们学习一门新课程、接触一个新专业时,总会对该领域的专有名词感到困惑,甚至看完解释仍难以理解其含义。在我们一起学习machine learning的过程中,我会尽量对相关名词用“人话”做一遍解释,以减少学习的“痛苦感”。 譬如今天要学的线性“回归”,这个回归(regression)和我们平时说的“回归祖国”的回...

化简可得 1万+

规则引擎二:Drools规则引擎

Drools是一个开源的规则引擎,经过多年的发展,也提供如下商业BRMS具备的功能组件: 基于Eclipse的集成开发环境, 独立集中的规则存储库 基于WEB的规则维护环境 提供decision table 和 ruleflow等规则制品为规则的运行书写提供更多的灵活性 本文将使用Drools来实现典型的风险评分,并将相关功能与IBM ODM/JRules做一个简单比较。客户风险评分具体需

马万明的专栏 4592

手把手教你排查Abaqus中的Johnson-Cook损伤参数:避免因d3正负号导致的仿真失败

本文详细解析了Abaqus中Johnson-Cook损伤参数d3正负号设置的关键问题,帮助用户避免因参数错误导致的仿真失败和Excessive distortion报错。通过对比不同文献定义、提供实操指南和典型错误排查流程,有效提升非线性分析的准确性和效率。

weixin_33960567的博客 356

Drools开源业务规则引擎(二)- Drools规则语言(DRL)

有效的规则操作是小的、声明性的和可读的。如果需要在规则操作中使用命令式或条件式代码,请将规则划分为多个更小、更具声明性的规则。可以将重复代码或者逻辑性代码封装成一个函数,或者将工具/辅助类中的静态方法导入为函数,然后在规则LHS/RHS部分中按名称使用该函数。DRL文件中的全局变量通常为规则提供数据或服务,如在then中使用的应用程序服务(service),并从规则返回数据。DRL文件中在规则中需要导入使用的对象的完全限定路径和类型名称。是全局的,因此对于该项目中的所有其他规则的查询必须是唯一的。

AHAO的博客 2005

lammps教程:官方自带eam_database程序拟合EAM势方法介绍

使用lammps模拟金属体系,最常用的势函数为eam、meam势。 对于大多数金属或者合金来说,可以从网上下载相对应的eam或meam势力场文件。 而对于一些新的合金材料,可能就找不到相对应的力场文件。 解决的方法有两种,一是采用混合势(pair_style hybrid),第二种方法是自己拟合势函数文件。 混合势的写法在前面文章中已经介绍过,本文介绍一种拟合EAM势的方法。 该方法是运行Xiaowang Zhou编写的一个拟合程序,该程序可自动生成所需要的合金势。 这个程序能够拟合的合金元素有: Cu,

lammps_jiayou的博客 4617

在轻量化与精度之间取得平衡:YOLOv8 + GhostNet 的设计与实验分析

摘要: GhostNet系列(GhostNet、GhostNetv2、GhostNeXt)通过“幽灵特征图”技术,以极低计算量生成丰富特征,为YOLOv8提供轻量化改造方案。该技术能在减少参数量与计算量的同时保持或提升检测精度,适用于边缘设备部署。实现时需替换YOLOv8的Backbone为GhostNet模块,并通过消融实验验证其有效性。实验数据表明,改造后的模型在参数量降低30%的同时,推理速度提升28.6%,mAP@0.5最高提升1.9个百分点,平衡了轻量化与精度,为毕设提供技术创新性与工程落地性的双

m0_64661770的博客 195

Drools规则语言(DRL)从入门到精通:完整语法详解

Drools规则语言(DRL)是Java生态中功能最强大的规则引擎Drools的核心组成部分,它提供了一种声明式的方式来编写业务规则。无论你是业务分析师、系统架构师还是Java开发者,掌握DRL语法都能让你更高效地处理复杂的业务逻辑决策。😊 ## 🎯 什么是DRL规则语言? DRL(Drools Rule Language)是Drools规则引擎专用的领域特定语言,它采用自然语言风格的语法

gitblog_00044的博客 1037

企业如何开展BI建设--指标体系建设

很多企业的数字化转型工作都是从做BI项目开始的,很多企业认为,BI就是做指标大屏,所以做了很多的驾驶舱,也做了很多指标,有从系统取的,有手工填报的,甚至手工填报的比例占到了70%,最终BI沦为了填报系统,业务认为BI就是把从线下的微信沟通转到了线上录入展示,并没有给业务代来任何提升,久而久之,BI大屏就没人关心,公司高层也认为数据都是填报的,都经过了加工处理,这种数据不可信,不能反映业务开展的实际。其实在BI系统建设之前,我们首先要做的就是要梳理企业的指标,到底我们要展示哪些指标?

263

Drools 规则语言详解

1.概述: Drools 3 采用了原生的规则语言,那是一种非 XML 文本格式。在符号方面,这种格式是非常轻量的,并且通过“ expanders ”支持符合你问题域的 Domain Specific Language ( DSL )。这一章把焦点放在了 Drools 原生的规则格式。如果你想从技术上了解规则语言的机制,可以参考“ drl.g ”源文件,这是用 Antlr3 语法来描述规则语言

维仔的专栏 5591

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Drools 规则语言详解(上)

http://www.blogjava.net/guangnian0412/archive/2006/06/09/51574.html   http://www.blogjava.net/guangnian0412/archive/2006/06/09/51756.html Drools 规则语言详解(上) 1.  概述: Drools 3 采用了原生的规则语言,那是一

走马观花 1918

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

drools规则语言指南(一)

简介: DRL (Drools Rule Language)是drools规则语言的简称,在使用drools规则引擎的时候,我们经常把写好的规则放在.drl文件中,然后规则引擎再去加载规则,那么一个drl文件基本组成是什么样子的呢?继续向下看: drools规则文件的组成 package //包名 import //导入的哪些类 function // 可选,定义的函数 query /...

yezhuanxu的博客 3610

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Drools规则描述语言快速手册

在规则引擎中,通常会使用某种表述性的语言(而不是编程语言)来描述规则。 所以规则描述语言也是规则引擎的一个重要组成部分。 目前在规则描述语言方面,并没有一个通用的标准获得规则引擎厂商的广泛支持,大部分规则描述语言都是厂商私有的。 大体来说,规则语言可以分为结构化的(Structured)和基于标记的(Markup,通常为xml)。 常见的规则描述语言包括: srl(Structured Rule Language) : Fair Isaac(以前是Blaze Software)定义的结构化规则描述语言

Rebirth 重生 908

DRL(Drools 规则语言)

DRL 作为 Drools 引擎的核心语言,本质是 “为业务规则量身定制的编程语言”—— 它既解决了传统硬编码 “变更难、耦合高” 的痛点,又具备企业级场景所需的 “复杂逻辑支持、动态更新、Java 集成” 能力,成为金融、电商、保险等领域实现 “业务决策自动化、灵活化” 的关键技术。对于企业而言,引入 DRL 不仅是技术选择,更是 “业务敏捷性” 的提升:让业务规则摆脱代码束缚,实现 “业务变化→规则修改→实时生效” 的快速闭环,在竞争激烈的市场中更快响应需求。

weixin_43156294的博客 1159

Drools规则语言中各种宏函数用法简介

Drools规则语言中各种宏函数用法简介    在 Drools 当中,在RHS 里面,提供了一些对当前Working Memory 实现快速操作的宏函数或对象,比如insert/insertLogical、update 和retract 就可以实现对当前Working Memory中的Fact 对象进行新增、删除或者是修改;如果您觉得还要使用Drools 当中提供的其它方法,那么您还可以使用

mituan1234567的专栏 1623

drools规则语言指南(四)规则属性

DRL中的规则属性 如下图所示,规则的所有属性都在里面了规则的属性是对规则行为的额外声明。在DRL文件中,在条件的上面定义属性,多个属性分行表示: rule "rule_name" // Attribute // Attribute when // Conditions then // Actions end 属性对照表: ...

yezhuanxu的博客 1389
上一篇: Drools深入学习之KIE
下一篇: JMM(java内存模型)
echo_decode
博客等级 码龄3年 121粉丝 7原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值