Kogito人机规则-第1部分:进一步解决流口水

Kogito计划是我们承诺将我们的业务自动化套件引入云和更大的Kubernetes生态系统的承诺。 但这对我们钟爱的规则引擎Drools意味着什么? 在这篇文章中,我们介绍使用规则单元的模块化规则库: 一个特点,一直是在Drools中7一段时间的实验 ,但是这是其Kogito,它会发挥更大的作用。 这是系列文章的第一篇,我们将向您概述此功能。

让流口水更进一步

Drools是我们最新的,高性能,功能丰富的开源规则引擎 。 人们喜欢它,因为它是瑞士军刀 ,可以解决基于规则的人工智能可以解决的许多问题。 但是随着计算机编程领域的发展,我们还需要考虑各种方法来带来更多Drools。 您可能已经知道, Kogito是我们努力使Drools和jBPM真正成为云原生,并且非常适合无服务器部署:我们采用Quarkus框架和GraalVM的本机二进制编译,以实现超快速的启动时间和低内存。脚印; 但是我们不止于此。

我们希望带给Drools进一步发展的方式是双重的 :一方面,我们希望通过提供更好的方法来定义规则库中具有更好模块概念的边界,从而使我们的编程模型更易于推理 另一方面,模块化编程的概念至少可以追溯到1970年代和Parnas最初的开创性论文 。 不用说,如果我们的贡献到此为止,我们将不会带来任何新的变化。 在过去的几年中,计算技术已经发展,缓慢但稳定地迎来了多核和分布式革命 。 然而,到目前为止,许多通用编程语言并没有真正使编写并行或分布式程序变得简单。 规则为基础的编程系统,我们必须提出一些不同的机会:一个规则引擎,是伟大的 单机时,但优秀的中。

模块化规则库。 如您所知,Drools提供了一种将规则集划分为知识库的便捷方法。 这样的知识库可以组合在一起,产生更大的规则集。 当实例化一个知识库(所谓的会话 )时,规则被放到同一执行环境( 生产内存 )中,而值( 事实 )都被插入到同一工作内存中

这个模型非常简单和强大,但是从某种意义上说它也非常有限 。 这非常简单,因为作为规则库的用户,您只需要担心数据:将值插入到工作内存中,引擎就发挥了不可思议的作用。 它非常强大,因为作为规则作者,您可以依靠编写的规则来实现复杂的推理流程,而不必担心它们将如何触发以及何时触发。

同时,这种执行模型缺少所有原则,这些年来,我们一直在学习的是良好的编程实践。 例如,没有适当的模块概念:不可能将一个规则与另一个规则完全隔离,也无法正确划分工作内存。 随着规则库复杂性的增加,可能很难理解触发哪些规则以及为什么触发。 从某种意义上说,就好像您在一个不存在适当的状态封装的奇怪世界中进行编程一样,好像没有发生多年的编程语言演进一样。

面向对象的编程。 多年来,面向对象程序设计一词已被重载,以表示许多不同的事物。 它必须与继承状态封装代码重用多态性有关 。 所有这些术语经常引起混淆,但它们并不是真正相关的:您可以重用代码而无需继承,可以封装状态而无需对象,可以编写多态代码而无需类。 最近,诸如Go和Rust之类的命令式编程语言没有附带适当的类,但是它们支持一种面向对象的形式。 C ++的父亲Bjarne Stroustrup甚至在2015年发表了精彩的演讲,展示了他的孩子如何在不继承的情况下支持面向对象

艾伦·凯(Alan Kay)是他在施乐(Xerox)的Smalltalk生涯中的父亲, 他在OOPSLA 1997的鼓舞人心的演讲中说:“我组成了“面向对象”,我可以告诉你我没有C ++ 。 实际上,艾伦·凯(Alan Kay)率先提出的对象概念更类似于参与者微服务的概念。 在正确的面向对象程序设计中,对象通过与外部世界交换消息 (通常称为方法)来封装其内部状态并公开其行为。

如今,参与者系统已经复兴,消息总线对于今天我们称为反应式编程的中心非常重要,微服务几乎是理所当然的。 因此,我们想知道,Drools成为这种新编程环境的一流公民意味着什么?

Kogito,ergo Cloud

在下一篇文章中,我们将看到我们使用规则单元进行基于规则的模块化编程。 规则单元将为普通知识库构成和执行的扩展模型提供替代方案。 我们相信,规则单元将为更广泛的用例(包括并行分布式体系结构)留出空间。 请继续关注它们如何适应Kogito的故事,以及它们可能为我们的自动化平台的未来带来的令人兴奋的可能性。

翻译自: https://www.javacodegeeks.com/2019/08/kogito-ergo-rules-part-1-bringing-drools-further.html

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

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

相关文章

chrome 占用大量内存直到网页崩溃_Chrome吃内存太夸张!几招解决Chrome占内存硬伤...

我们知道Chrome是非常出色的浏览器,无论从性能还是功能的角度来看,都是如此。但是Chrome在内存占用方面的表现,就很令人头疼了!常常听到有朋友抱怨,想要上网找找素材,不一会儿发现Chrome已经将PS要用的内存…

pat 乙级 1014 福尔摩斯的约会 (C++)

题目 大侦探福尔摩斯接到一张奇怪的字条: 我们约会吧!3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间星期四 14:04. 因为前面两字符串中第 1 对相同的大写英文字…

windows和ubuntu双系统设置开机默认系统

1、记住grub界面中windows的位置 我的界面如下:windows在第3行 2、选择进入ubuntu系统 3、打开终端,输入如下命令 sudo vim /etc/default/grub 4、看到如下图的内容 GRUB_DEFAULT是开机启动的默认项(我的windows是第3行,所以此…

jenkins jboss_与JBoss Fuse,Jenkins和Nexus的持续集成

jenkins jboss最近,我正在整理一个快速启动的Maven项目,以展示组织JBoss Fuse项目的可能方法。 该项目可以在Github上找到: https : //github.com/paoloantinori/fuse_ci 这是我与朋友詹姆斯罗林斯 ( James Rawlings&#xff09…

完全禁用Microsoft Compatibility Telemetry

完全禁用Microsoft Compatibility Telemetry Win S 中搜索 任务计划程序 /Microsoft/Windows/Application Experience 禁用 Microsoft Compatibility Appraiser 如果不管用 服务里禁用 Diagnostic Policy Service

第19次csp认证 202006-2 稀疏向量(C++)

题目 分析 本题需要计算的是两个n维向量的内积&#xff0c;只需计算两者对应的稀疏向量index相同的分量乘积&#xff0c;然后累加就可以了。 向量的一个分量包含index和value&#xff0c;使用struct来存储比较方便。n<109&#xff0c;a,b<5 * 105&#xff0c;|ui| * |v…

将指标标签与MicroProfile Metrics 2.0结合使用

从我们的应用程序发出的与业务相关的度量标准可能包含要为其测量特定度量标准的参数&#xff08;即标签或标签 &#xff09;。 从MicroProfile Metrics 2.0开始&#xff0c;可以使用API​​将标签分配给特定的指标。 声明式方法 假设我们有以下资源&#xff1a; Path ( "…

解决Windows 10 CPU占用高风扇吵问题

很多笔记本用户在升级到Windows 10后&#xff0c;都遇到了这样一个问题&#xff0c;那就是Windows 10的CPU占用明显高于Windows 7。这个问题对于台式机可能还算不了什么&#xff0c;顶多就是偶尔卡一下罢了。可由于笔记本大多采用变速风扇&#xff0c;CPU温度飙高时&#xff0c…

pat 乙级 1010 一元多项式求导(C++)

题目 设计函数求一元多项式的导数。&#xff08;注&#xff1a;x​n&#xff0c;n为整数&#xff09;的一阶导数为nx​n−1 。&#xff09; 输入格式: 以指数递降方式输入多项式非零项系数和指数&#xff08;绝对值均为不超过 1000 的整数&#xff09;。数字间以空格分隔。 …

pat 乙级 1009 说反话 (C++)

题目 给定一句英语&#xff0c;要求你编写程序&#xff0c;将句中所有单词的顺序颠倒输出。 输入格式&#xff1a; 测试输入包含一个测试用例&#xff0c;在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成&#xff0c;其中单词是由英文字母&#xff0…

知识图谱 图数据库 推理_图数据库的知识表示与推理

知识图谱 图数据库 推理图形数据库及其技术生态系统可以为知识表示和推理问题提供优雅&#xff0c;有效的解决方案。 要了解这种说法&#xff0c;我们必须首先了解什么是图形。 图是一种数据结构。 图数据结构的类型很多&#xff0c;但出于本文的目的&#xff0c;我们将重点介绍…

ubuntu中安装sublime text3用于python编程

以下用到的文件下载地址为 网盘链接&#xff1a;https://pan.baidu.com/s/1hP0IE8NwcIKKGqwo1SWCXQ 提取码&#xff1a;4c66 1. 编译器安装 &#xff08;1) 添加sublime text3的软件源&#xff1b; sudo add-apt-repository ppa:webupd8team/sublime-text-3&#xff08;2&…

pat 乙级 1008 数组元素循环右移问题(C++)

题目 一个数组A中存有N&#xff08;>0&#xff09;个整数&#xff0c;在不允许使用另外数组的前提下&#xff0c;将每个整数循环向右移M&#xff08;≥0&#xff09;个位置&#xff0c;即将A中的数据由&#xff08;A​0 A​1 ⋯A​N−1&#xff09;变换为&#xff08;A​N−…

Java单依赖性Dockerized HTTP端点

在本文中&#xff0c;我们将创建一个基于Java的HTTP端点&#xff0c;用它创建一个可执行jar&#xff0c;将其打包在Docker中&#xff0c;然后立即在本地运行。 本文面向初学者&#xff0c;他们想要寻找一个简单的演练来在Docker中运行Java应用程序。 描述Dockerized环境中Jav…

ubuntu的home目录下,Desktop等目录消失不见

第一步&#xff1a;创建相应的文件夹 首先当然是创建几个相应的英文文件夹喽&#xff0c;比如&#xff1a;Desktop、Downloads、 Documents、 Music、 Pictures、 Videos , Templates , Public…… 第二步&#xff1a;编辑配置文件 gedit ~/.config/user-dirs.dirs 修改内容&a…

java状态模式和策略模式_Java状态和策略设计模式之间的差异

java状态模式和策略模式为了在Core Java应用程序中正确使用状态和策略设计模式&#xff0c;对于Java开发人员清楚地了解它们之间的区别很重要。 尽管状态和策略设计模式的结构相似&#xff0c;并且都基于开放式封闭设计原则&#xff0c;从SOLID设计原则表示为“ O”&#xff0c…

pat 乙级 1013 数素数(C++)

题目 令 P​i表示第 i 个素数。现任给两个正整数 M≤N≤10​4&#xff0c;请输出 PM到 P​N的所有素数。 输入格式&#xff1a; 输入在一行中给出 M 和 N&#xff0c;其间以空格分隔。 输出格式&#xff1a; 输出从 P​M到 P​N 的所有素数&#xff0c;每 10 个数字占 1 行…

c++cout制表符左对齐

话不多说&#xff0c;直接上码&#xff1a; #include<iostream> #include<iomanip> using namespace std;int main() {double a12.112344;double b1.53;cout<<setiosflags(ios::fixed)<<setprecision(6)<<setiosflags(ios::left);cout<<s…

pat 乙级 1015 德才论(C++)

题目 宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”&#xff1a;“是故才德全尽谓之圣人&#xff0c;才德兼亡谓之愚人&#xff0c;德胜才谓之君子&#xff0c;才胜德谓之小人。凡取人之术&#xff0c;苟不得圣人&#xff0c;君子而与之&#xff0c;与其得小人&…

正斜杠/和反斜杠\的区别

近来研究源码时发现&#xff0c;常常在路径中出现正斜杠“/”和反斜杠“\”&#xff0c;之前就一直不胜其扰&#xff0c;所幸查资料把它一次弄懂&#xff0c;求个明白。在这里做个记录。 我认真搜了一下&#xff0c;发现问这个问题的人还不少&#xff0c;知乎上也有提问的。来…