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

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

  1. 防火墙设置入站规则和ping请求超时解决办法(Tomcat+Windows项目部署后续)

    今天客户突然说部署的项目在同一局域网内用不同电脑ping不通且爆tomcat400的错误,特此记录解决办法(用另一台电脑连服务器,服务器本机没有任何问题) tomcat 400(客户端请求错误-) 页 ...

  2. 解决阿里云redis监听6379,配置规则也将6379端口开放,但是外网仍无法连接6379的问题。

    问题描述: 阿里云linux安装完成redis,并且已经运行,检测6379端口,显示redis-server正在监听,如图 查看阿里云端口配置规则,6379端口对外开放 解决方法: 查看阿里云端口开放 ...

  3. SAP中质量订单未维护结算规则导致月结报错的分析解决案例

    通过企业控制总门会做月度结算.由于控制总门要管控成本.就需要先知道某类业务,某个项目使用了多少成本.日常通过SAP中的相应订单功能来关联到各种业务处理中,在发生成本时进行收集,月底再统一进行结算.将收 ...

  4. 2021数模美赛论文提交具体规则和注意事项汇总!

    针对美赛论文提交与竞赛规则,工作室为小伙伴们整理了如下注意事项,请小伙伴们仔细阅读,提前做好准备~ 目录 一.竞赛开始前 二.竞赛期间 三.竞赛结束后 一.竞赛开始前 1. 题目查看 竞赛问题将在20 ...

  5. 第一百一十三期:去伪存真,区块链应用到底能解决什么实际问题?

    区块链技术仍然在发展初期,实践应用也停留在试水阶段.就金融等领域而言,区块链究竟意味着什么?今后实践应用的前景何在?在Libra的倒逼下,全球央行数字货币又将如何发展? 作者:第一财经 两周前,区块链 ...

  6. mysql排序规则错误_MySQL中“非法混合排序规则”错误的疑难解答

    阿波罗的战车 更改字符串的一个(或两者)的排序规则以使它们匹配,或者添加一个COLLATE从句到你的表情.这"校对"到底是什么?如下文所述字符集和排序规则:A 字符集是一组符号和编 ...

  7. 对于复杂网络解决现实的网络问题

    关于复杂网络的应用与发展 电子科技大学 格拉斯哥学院 2017级 谢镇汕 内容摘要 目前,复杂网络研究的内容主要包括:网络的几何性质,网络的形成机制,网络演化的统计规律,网络上的模型性质,以及网络的结 ...

  8. 《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:07 规则式自然语言处理系统

    07 规则式自然语言处理系统 7.1 规则式系统 7.2 规则式系统的目的 7.2.1 为何需要规则式系统 7.2.2 使用规则式系统的应用 7.2.3 练习 7.2.4 开发规则式系统需要的资源 7 ...

  9. 关于人机智能的几点思考

    [编者按:人机的边界就在于计算与算计的尺度.] ​ 0.小序 人智的"是"离不开非(不是),机智的"是"却可以离开了非(不是).真正的自主不是自己去决定什么,而 ...

最新文章

  1. 2022-2028年中国改性尼龙行业市场全景评估及产业前景规划报告
  2. java notify 的作用_java 为什么notify和notifyAll都不起作用?
  3. 【问题收录】svn: E155010: 提交失败(Ubuntu14.04环境)
  4. Verilog testbench总结(二)
  5. docker 部署mysql服务之后,执行sql脚本
  6. 2.2.3 调度算法的评价指标
  7. C语言的“编译时多态”
  8. 现在好多人做 局域网聊天
  9. 使用 Request.Form 集合之后,不能调用 BinaryRead
  10. jsp实验管理系统开题报告_MR教育燧光与广东实验中学关于MR化学课程开题报告研讨会顺利完成...
  11. 2021数学建模国赛b题思路总结
  12. echarts自定义象形图,矢量图标
  13. 如何用SolidWorks软件绘制三维模型?
  14. 性能测试---影响性能的因素
  15. 湘乡秸秆综合利用组合拳完善产业链 国稻种芯现代饲料规划
  16. 大道至简大巧不工——和田玉雕中的哲学
  17. 【洛谷】3960:列队【Splay】
  18. C#WinForm开发:如何将图片添加到项目资源文件(Resources)中
  19. 「Arm Arch」 ISA 寄存器
  20. Java、JSP商场管理系统

热门文章

  1. 2020 ICPC亚洲区域赛(沈阳)F-Kobolds and Catacombs(思维+模拟)
  2. 「LibreOJ NOIP Round #1」旅游路线
  3. Java动态代理之cglib
  4. Jsoup解析HTML实例及文档方法详解
  5. 【Android】实现页面跳转
  6. vue实现下拉列表远程搜索示例(根据关键词模糊搜索)
  7. 《四世同堂》金句摘抄(十四)
  8. 用startSmoothScroll实现RecyclerView滚动到指定位置并置顶,含有动画。
  9. C++比较两个字符串是否完全相同
  10. 修改打印机ip工具_使用富士施乐一体机因动态IP导致不能打印与扫描的解决方法...