Drools用户手册翻译——第四章 Drools规则引擎(一)核心概念介绍

news2024/11/26 3:37:26

之前翻译内容一下就是一大节,感觉有点多,我自己看这都费劲,这一章开始步入正题,我就一小节一小节翻译吧,比较容易阅读,修改错误也简单一些。

甩锅声明:本人英语一般,翻译只是为了做个笔记,所以有翻译错误的地方,错就错了,如果你想给我纠正,就给我留言,我会改过来,如果懒得理我,就直接划过即可。

 

目录

Drools规则引擎

KIE会话

疑问



Drools规则引擎

Drools规则引擎可以对你定义的业务规则和决策模型进行存储,处理和求值。drools规则引擎的基础函数是将传入的数据,或者事实与规则情况相匹配,用来决定是否执行规则和如何执行规则。

Drools规则引擎使用下面的基础组件进行操作:

  • 规则(Rules):定义好的业务规则或者DMN决策。所有的规则都必须至少包含的启动规则的规则和操作。
  • 事实(Facts):Drools规则引擎里面输入与修改的数据,与Drools规则引擎将事实与规则相匹配。
  • 生产内存(Production memory):Drools规则引擎存储在本地的规则
  • 工作内存(Working memory):Drools规则引擎存储在本地的事实
  • 议程(Agenda):注册与排序(如果适用)激活的规则,用来为执行做准备的。

在Drools中,当业务用户或者自动化系统添加或者修改规则相关的信息,该信息将会以事实的形式插入到Drools的工作内存中。Drools规则引擎会把这些事实与生产内存中的规则条件进行匹配,匹配到合适的规则进行执行。(事实与规则匹配的过程是模式匹配的)当满足规则条件时,Drools规则引擎会激活并注册议程中的规则,然后Drools会对优先级和冲突规则进行排序,以备执行。

下面图表展示了Drools的基本组件:

 

图示1. Drools组件概览

规则的更多详细信息和例子,事实行为,请参见:

https://docs.drools.org/8.40.0.Final/drools-docs/drools/rule-engine/index.html#inference-and-truth-maintenance_rule-engine

这些核心概念有助于你更好的理解其他高级组件,Drools的进程和子进程, 从而通过drools设计出更高效的业务素材。

KIE会话

带drools中,kie会话存储和执行运行时数据,kie会话由kie库创建,如果你在kmodule中定义了kie会话,可以直接从kie容器中直接创建kie会话。

kmodule文件中配置kie会话例子

<kmodule>
  ...
  <kbase>
    ...
    <ksession name="KSession2_1" type="stateless" default="true" clockType="realtime">
    ...
  </kbase>
  ...
</kmodule>

kie库是kmodule的定义仓库,包含drools中的所有,但是不包含运行时数据。

kmodule文件中配置kie库例子

<kmodule>
  ...
  <kbase name="KBase2" default="false" eventProcessingMode="stream" equalsBehavior="equality" declarativeAgenda="enabled" packages="org.domain.pkg2, org.domain.pkg3" includes="KBase1">
    ...
  </kbase>
  ...
</kmodule>

kie会话可以是有状态的,也可以是无状态的。无状态的会话,来自会话先前调用的数据,会在会话调用之间被消除。在有状态会话中,该数据会被保留。kie会话的类型使用根据项目的需求,以及你想如何持久化来自不同素材调用的数据。

疑问

drools核心概念里面有一个Agenda,对于这个单词,我实在是不会翻译,之前的文章中也有这个单词,查询就是议程,意思是会议上议案讨论的程序;议事的执行流程。再看英文解释,类似于先决条件,就是执行前的准备流程,想来想去,最后还是就叫议程吧,希望有喜欢研究翻译的朋友,给这个单词一个相对准确的翻译,就是那种一看,就和咱们计界有点关系的那种翻译。

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

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

相关文章

拼多多API接口,百亿补贴商品详情页面采集

电商API的数据类型 电商API提供的数据种类多样&#xff0c;一般可分为以下几类&#xff1a; 1.商品数据&#xff1a;商品ID、商品名称、商品价格、库存等。 2.交易数据&#xff1a;订单号、付款时间、收货人等。 3.店铺数据&#xff1a;店铺ID、店铺名称、开店时间、店铺评…

SuperMap iServer新增支持FlatGeobuf数据格式,查询渲染性能提升2-3倍

导语 FlatGeobuf是一种地理数据存储格式&#xff0c;采用了二进制编码&#xff0c;相比其他文本或XML格式更高效&#xff0c;可以显著减小文件大小&#xff0c;这使得数据的传输和存储更加快速和高效。 SuperMap iServer 11i(2023) &#xff08;以下简称SuperMap iServer11.1&a…

【代码随想录 | Leetcode | 第三天】数组 | 长度最小的子数组

前言 欢迎来到小K的Leetcode|代码随想录|专题化专栏&#xff0c;今天将为大家带来滑动窗口的分享✨ 目录 前言209. 长度最小的子数组总结 209. 长度最小的子数组 ✨题目链接点这里 给定一个含有 n 个正整数的数组和一个正整数target。找出该数组中满足其和 ≥ target 的长度…

ubantu下的前后端部署

ubantu 远程ssh连接 通过ssh远程连接服务器&#xff0c;传输文件和执行命令 首先更新软件包保证版本最新 sudo apt update安装ssh sudo apt install openssh-server安装完成后默认开启&#xff0c;也可输入命令查看ssh状态 sudo systemctl status ssh如果输入为下图&#…

warning: ignoring JAVA_HOME=D:\JDK; using bundled JDK报错解决

warning: ignoring JAVA_HOMED:\JDK; using bundled JDK报错原因是因为你JDK版本太低或者你的ElasticSearch版本太高降低版本即可、 我的是JDK1.8我下载的是elasticsearch-8.7.0改成elasticsearch-7.6.1就可以了 elasticsearch-7.6.1地址&#xff1a;弹性搜索 7.6.1 |弹性的 …

【动手学深度学习】--13.使用块的网络 VGG

文章目录 使用块的网络 VGG1.VGG块2.VGG网络3.训练模型 使用块的网络 VGG 学习视频&#xff1a;使用块的网络 VGG【动手学深度学习v2】 官方笔记&#xff1a;使用块的网络&#xff08;VGG&#xff09; 1.VGG块 经典卷积神经网络的基本组成部分是下面的这个序列&#xff1a;…

软件测试转车载测试应该怎么做?

1、你要是零基础小白&#xff0c;做车载测试零基础没有经验&#xff0c;可以找到工作吗&#xff1f;没有汽车软件测试经验零基础小白能找到汽车测试的工作吗&#xff1f;对于企业而言&#xff0c;企业比较倾向于录用&#xff0c;就能给公司带来利益的员工来了就能直接上岗&…

公开讲座笔记 | 雷达学报 雷达系统微课 - 第一讲 雷达系统 与 “1+1=2“

原笔记链接&#xff1a;https://mp.weixin.qq.com/s?__bizMzg4MjgxMjgyMg&mid2247486333&idx1&sn05397073a1e645d68e2611c9f9f3aeef&chksmcf51b984f8263092dd4ac6c6fd76817ae022ec8f0cda9a915245156cb4c3eb849091da06fdd1#rd 公开讲座笔记 | 雷达学报 雷达系统…

vue3 和vue2 的插槽写法区别

目录 1. vue2 2. vue3 注意的点&#xff1a; 1. vue2 2. vue3 注意的点&#xff1a; 在data里面定的初值&#xff0c;最好不要直接赋给表格数据。如下&#xff1a; data里面 editRow初始化 给表格tableData 赋值

Spring Boot学习

Spring Boot 配置 同一目录下配置文件优先级&#xff1a;.properties > .yml > .yaml 错误&#xff1a;org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length 1 Caused by: java.nio.charset.MalformedInputException: Inp…

将网页数据读入数据库+将数据库数据读出到网页——基于python flask实现网页与数据库的交互连接【全网最全】

本篇博客的目标是&#xff1a;在网页端输入数据&#xff0c;然后将数据存入数据库。但仅仅“存放”还不满能足需求&#xff0c;因此我们还需要能够取出数据&#xff0c;进行数据的比对分析。 我们将任务分解为4步&#xff1a;第1步用python连接到数据库&#xff0c;第2步用pyt…

ubuntu20.04部署Nessus_pro2023年6月30日版本

这里写目录标题 1. 前期准备2. nessus前期安装2.1. 下载nessus2.2. 安装nessus2.3. 运行nessus 3. 设置nessus3.1. 初始化设置3.2. 无插件3.3. 获取更新插件3.4. 设置目录权限及插件信息3.4.1. 设置plugins目录权限3.4.2. 设置plugin_feed_info.inc权限3.4.3. 查看插件信息3.4.…

如何成为网络安全大牛(黑客)?

网安专业从始至终都是需要学习的&#xff0c;大学是无法培养出合格的网安人才的。这就是为啥每年网安专业毕业生并不少&#xff0c;而真正从事网安岗位的人&#xff0c;寥寥无几的根本原因。 如果将来打算从事网安岗位&#xff0c;那么不断学习是你唯一的途径。 网络安全为什…

C语言 register关键字与“傲娇的编译器”

1.作用&#xff1a; “建议”编译器把变量放到寄存器内&#xff0c;编译器不一定听你的&#xff08;傲娇&#xff09;&#xff01;&#xff01; 2.速度&#xff1a;寄存器>高速缓存>内存&#xff0c;寄存器空间很宝贵&#xff08;非常非常少&#xff09; 3.寄存器不支持取…

JavaScript基础篇(11-20题)

此文章&#xff0c;来源于印客学院的资料【第一部分&#xff1a;基础篇(105题)】&#xff0c;也有一些从网上查找的补充。 这里只是分享&#xff0c;便于学习。 诸君可以根据自己实际情况&#xff0c;自行衡量&#xff0c;看看哪里需要加强。 概述如下&#xff1a; 模块化开…

React和Vue生命周期、渲染顺序

主要就是命名不同 目录 React 组件挂载 挂载前constructor() 挂载时render() 挂载后componentDidMount()&#xff1a;初始化节点 更新 更新时render()&#xff1a;prop/state改变 更新后componentDidUpdate() 卸载 卸载前componentWillUnmount()&#xff1a;清理 V…

利用数据与分析,推动企业数字化发展的路线图

导读 如今&#xff0c;保持数据与分析&#xff08;D&A&#xff09;战略与业务发展的统一同步&#xff0c;是助力企业机构成功和推进数字化项目的关键。敏捷的数据与分析能力对于培养感知-响应能力至关重要&#xff0c;可帮助企业机构满足全新的需求&#xff0c;进入前所未…

git页面管理用户账号和密码(新建用户和初始化密码)

本文章适用&#xff1a;没有固定的用户认证&#xff08;AD域或者LDAP等&#xff09;&#xff0c;git私有仓库单独管理用户&#xff08;新建用户和初始化密码&#xff09;。 1.创建新用户 以管理员的身份登录&#xff0c;进入git的管理模式&#xff0c;点击“New user”&…

copilot使用初体验(一)

写函数 1、写一个注释&#xff0c;按下回车&#xff0c;会自动生成函数&#xff08;函数名函数体&#xff09;&#xff0c;然后按下 tab&#xff0c;接受建议。 // 找出一个数组中houseId等于3的那项 findHouseIdIs3(arr) {return arr.find(item > item.houseId 3) },快捷…

UDP-组播,广播

转自&#xff1a;https://www.cnblogs.com/wangzhilei-src/p/15314315.html UDP是面向非连接的协议&#xff0c;它不与对方建立连接&#xff0c;而是直接把数据报发给对方。UDP无需建立类如三次握手的连接&#xff0c;使得通信效率很高。因此UDP适用于一次传输数据量很少、对可…