规则引擎-drools-3.4-drl文件构成-rule部分-结果部分Action

news2024/11/23 2:24:39

文章目录

  • drl文件构成-rule部分
    • 结果部分 RHS
      • set
      • insert && insertLogical
      • modify && update
      • delete

drl文件构成-rule部分

drl文件构成,位于官网的第5章位置,也是drools作为规则引擎应用的最核心部分。
其中rule模块,包括属性(Attribute - rule)、条件(Condition - when)、结果(Action - then)是5.1.7、5.1.8、5.1.9 三小节部分内容。

  1. Rule Language Reference
    官网链接:https://docs.drools.org/7.73.0.Final/drools-docs/html_single/index.html#_droolslanguagereferencechapter

结果部分 RHS

then和en的中间的部分称作 结果部分,Action。
在这里插入图片描述
顾名思义,结果部分,即是当触发该规则之后要进行的操作。
导图中几个操作都是常用操作。

set

给fact对象属性赋值。不会将修改通知给drools引擎,因此,不会造成重新触发规则。

rule "rule1"
    when
        $order:Order(amount < 100)
    then
    	// 结果中给order对象的score赋值了0,并打印了日志:触发规则:小于100无积分。
        $order.setScore(0);
        System.out.println("触发规则:小于100无积分。");
end

insert && insertLogical

Stated insertions: insert();使用该方法插入的Fact,该fact通常需要显示删除。该对象成为stated对象。

官网描述:使用此选项可以将新事实插入Drools引擎的工作内存中,并根据需要定义结果字段和值。

Logical insertions:inertLogical();进行逻辑插入后,如果插入fact的规则中的条件不再成立,则插入的fact将自动删除。当没有条件支持逻辑插入时,这些逻辑插入的fact将被删除。 Drools引擎认为逻辑上插入的fact是会被Drools引擎理解为justified对象。

官网描述:使用此选项在Drools引擎中逻辑地插入一个新事实。Drools引擎负责插入和收回事实的逻辑决策。在常规或陈述的插入之后,必须明确撤回事实。在逻辑插入之后,当插入事实的规则中的条件不再为真时,插入的事实将自动收回。

引用原文链接:https://blog.csdn.net/ystyaoshengting/article/details/107643266

这篇博客中的解释更利用理解,所以直接引用了。

modify && update

首先,只要修改了LHS中判断的属性中任何一个属性的值,就会重新触发该规则。

modify:使用此选项可以指定要为某个事实修改的字段,并将更改通知Drools引擎。该方法提供了一种结构化的事实更新方法。它将更新操作与setter调用相结合,以更改对象字段。

update:使用此选项可以指定要更新的字段和整个相关事实,并将更改通知Drools引擎。事实更改后,必须在更改可能受更新值影响的另一个事实之前调用update。要避免此添加步骤,请改用modify方法。

这俩是翻译官网的解释。
总之,使用的时候,二者基本上可以通用,只是语法有所不同。

rule "loop_test_1"
    no-loop true
    when
        $order:Order(amount < 100 || score > 5)
    then
        modify($order){setScore(10)};

//        $order.setScore(10);
//        update($order);
        System.out.println("触发规则:小于100,10积分。loop_test_1");
end

其中
modify($order){setScore(10)};
等同于
o r d e r . s e t S c o r e ( 10 ) ; u p d a t e ( order.setScore(10); update( order.setScore(10);update(order);

delete

与insert对应,是在session内存中删除fact。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/193646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux命令使用错误记录

问题描述 今天在使用jenkins自动部署的时候&#xff0c;查看日志也是打印成功的&#xff0c;如下图&#xff1a; 自以为是成功&#xff0c;没有看项目启动日志。当访问接口的时候&#xff0c;返回的还是原有数据&#xff0c;没有更新数据接口。 解决思路 首先&#xff0c;打…

春晚背后的“新技术”,腾讯技术助力央视频春晚“新看法”

伴随着《难忘今宵》音乐的响起&#xff0c;兔年春晚圆满落幕。今年&#xff0c;我们和中央广播电视总台一起打造了“竖屏春晚HDR及菁彩声”技术方案&#xff0c;并在“央视频”客户端上线。让你“听”得更沉浸&#xff0c;“看”得更清晰。三维菁彩声&#xff0c;观看春晚“如临…

【Flume】Flume原理简述及示例实践

文章目录1. Flume是什么2. Flume三大组件3. Flume高级应用场景3.1 多路复用3.2 整合4. 示例实践4.1 配置4.2 运行4.2.1 运行结果输出4.2.2 设置后台运行1. Flume是什么 Flume是一个高可用&#xff0c;高可靠&#xff0c;分布式的海量日志采集、聚合和传输的系统&#xff0c;能够…

低代码:让企业“活”起来,赋能企业数字转型

低代码作为一种无需或只需少量代码即可快速生成应用程序的开发方式&#xff0c;广义的低代码可以分为低代码和无代码两种&#xff0c;两者面向的群体和场景不同&#xff0c;分别定位于服务IT人员和业务人员。两者都可以降低开发成本和门槛&#xff0c;有助于业务人员和开发人员…

自动驾驶感知——红外传感器

文章目录1. 红外线基本概念1.1 红外线探测的优缺点1.2 红外线相关基础知识1.3 红外辐射的基本知识1.4 黑体、白体和透明体1.5 相关物理定律1.5.1 基尔霍夫定律1.5.2 斯特藩-玻耳兹曼定律1.5.3 维恩位移定律2. 红外线传感器分类2.1 主动式与被动式2.2 光子式红外传感器2.3 热释电…

Redis -- 过期删除策略和内存淘汰策略

1. 过期删除策略 1.1 redis支持三种过期删除策略&#xff1a; 定时删除&#xff1a;在设置键的过期时间的同时&#xff0c;创建一个定时器&#xff0c;让定时器在键的过期时间来临时&#xff0c;立即执行对键的删除操作惰性删除&#xff1a;放任键过期不管&#xff0c;但是每…

Day2 CF713 div3 vp A-G

Dashboard - Codeforces Round #713 (Div. 3) - Codeforces感觉中规中矩&#xff0c;rk4k确实是我现在的水平&#xff0c;一直徘徊在绿灰边缘23333&#xff0c;其实很大原因在于不补题&#xff0c;看了CF Analytics的题目rating&#xff0c;几乎只写1200-的题&#xff0c;1600的…

Qt中的网络编程(TCP)

在Qt中网络编程主要由Qt Network模块来编写基于TCP/Ip的网络程序&#xff0c;其中提供了许多的类&#xff1a; 可以点击该链接查看&#xff1a;Qt网络C类|Qt网络 5.15.12 常见的有&#xff1a; QTcpServer基于 TCP 的服务器QTcpSocketTCP 套接字QUdpSocketUDP 套接字QDtls此类…

End-to-End Entity Resolution for Big Data: A Survey Matching部分学习笔记

Matching ER的核心是匹配任务&#xff0c;它接收一个块集合作为输入&#xff0c;对于一个块中的每一对候选匹配&#xff0c;它决定它们是否指向相同的真实世界实体。 Preliminaries 匹配决策通常由匹配函数MMM做出&#xff0c;它将每一对实体描述(ei,ej)(e_{i}, e_{j})(ei​…

全网最详细的手把手模拟实现Cache

前言&#xff1a;本文内容较多&#xff08;字数1w&#xff09;&#xff0c;不仅包含理论知识&#xff0c;还进行了全面实践。本文对前三章理论内容粗略解释&#xff0c;建议去b站观看哈工大和王道考研的操作系统中虚拟存储相关章节&#xff0c;然后对于设计实现就游刃有余了。 …

C++数论————质数筛法(单独判断一个数,判断N个数) 埃氏筛法

质数想必大家都不陌生从小学到大质数的概念&#xff1a;一个数如果除了1和本身之外没有其他的因子&#xff0c;那么这个数被称为质数今天要讲两个知识点&#xff1a;在C中如何判断一个数是否为质数在C中如何判断1-N之间哪些数为整数在C中如何判断一个数是否为质数这个知识点较为…

当湖北《汉川》遇到湖南《早安隆回》,杨语莲会是下一个袁树雄吗

古有花木兰&#xff0c;替父去从军。如今在中国华语乐坛&#xff0c;继《早安隆回》袁树雄之后&#xff0c;又出现了《汉川》杨语莲。之所以把这两首歌曲&#xff0c;以及这两位音乐人&#xff0c;放在一起来做对比&#xff0c;是因为这两首歌曲&#xff0c;甚至这两位音乐人&a…

Java中weekOfYear和weekOfWeekBasedYear的区别

这其实是计算一年中的周数&#xff08;某日属于一年中的第几周&#xff09;的两种算法。 简单来说&#xff0c;前者保证了1周不会跨越自然年的边界&#xff1b;后者保证了1周一定有7天&#xff0c;一定从某个DayOfWeek&#xff08;如周一&#xff09;开始&#xff0c;并且1周只…

时序预测 | MATLAB实现GWO-BiLSTM灰狼算法优化双向长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现GWO-BiLSTM灰狼算法优化双向长短期记忆神经网络时间序列预测 目录时序预测 | MATLAB实现GWO-BiLSTM灰狼算法优化双向长短期记忆神经网络时间序列预测预测效果基本介绍模型描述程序设计参考资料预测效果 基本介绍 MATLAB实现GWO-BiLSTM灰狼算法优化双向长短…

每天花2小时恶补腾讯T8纯手打688页SSM框架和Redis,成功上岸美团

前言 我相信大家也都跟我一样&#xff0c;每天不是在加班就是在加班的路上&#xff0c;辛辛苦苦付出&#xff0c;可是得到的却不是很多。 这可能是大部分程序员的现状吧&#xff01;&#xff01; 最关键的是&#xff0c;整天都在CRUD、实现需求&#xff0c;真的想跟产品经理…

广发证券基于分布式架构的新一代估值系统实践

文 / 广发证券信息技术部 来源 / 金融电子化 随着信息技术应用创新试点范围不断扩大&#xff0c;能否胜任更多业务场景&#xff0c;是各行各业当前阶段选型数据库的关键。早在 2019 年&#xff0c;广发证券即开启对分布式架构的数据库产品进行调研&#xff0c;并经历了单主从读…

Git 提交模式

Git 对我们 Devs 的使用是必不可少的&#xff0c;无论是在个人项目中&#xff0c;还是在多人开源项目或整个社区中。鉴于此&#xff0c;正确使用 git commit很重要。拥有连贯和标准化的语言有助于参与项目的每个人理解已经发生的变化。在上图中&#xff0c;我们看到了评论不当的…

Camtasia2023简体中文版支持4K超清屏幕录屏

Camtasia 2023是TechSmith出品的一款屏幕录像和编辑的软件&#xff0c;可轻松录制和分享高质量的截屏视频&#xff0c;提供所需的工具和功能。功能强大的视频编辑器&#xff0c;通过记录您的屏幕活动和网络摄像头流&#xff0c;帮助您创建具有专业外观的截屏视频。软件提供了强…

“华为杯”研究生数学建模竞赛2005年-【华为杯】B题:空中加油问题的递推模型与调度策略

赛题描述 对飞行中的飞机进行空中加油,可以大大提高飞机的直航能力。为了简化问题,便于讨论,我们作如下假设。 少辅机架数两种情况给出你的作战方案。 论文 摘要 : 本文首先对空中加油问题进行了分析,提取了相关性质,在此基础上 建立了问题的递推模型。根据该模型,文…

使用DcokerCompose部署微服务项目详解

一、项目结构 我这里准备了一个微服务项目。 里面包含三个服务模块&#xff1a; card-service、use-rservice以及网关gateway。 一个公共模块&#xff1a; fegin-api。 其中fegin-api被card-service和user-service引用。 二、基于项目构建部署目录结构 这个springcloud-a…