前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >规则引擎在IoT的重要性?

规则引擎在IoT的重要性?

作者头像
sanshengshui
发布于 2020-09-18 10:03:42
发布于 2020-09-18 10:03:42
2.6K00
代码可运行
举报
文章被收录于专栏:穆书伟穆书伟
运行总次数:0
代码可运行

前言

物联网的强大功能主要来自于它使我们能够实时做出更准确的决策的能力,这些在通知、自动化和预测性维护上都有所体现。因此我们需要能对实时数据进行实时响应的工具,答案就是规则引擎。规则引擎可以通过摄取实时数据,对该数据进行推理并根据该推理过程的结果调用自动操作或者第三方API来履行职责。

IoT案例探讨

这里有一个智能农业的场景:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
如果某种植物的生长需要维持恒温恒湿的环境,温度为1820℃,相对湿度为85~90%。如果温度低于18℃,我们需要升温并对湿度进行补充;当高于20℃,我们需要降温并对湿度进行检查。

您可以在应用程序中轻松实现上述的规则或逻辑。但是,如果您将接到了其他一些需求,例如:

  • 如果存在大量逻辑,那么您将如何有效的编写和处理它们? (很好的代码设计模式)
  • 如果逻辑经常更改,并且您通常在应用程序中编写逻辑代码,那么您将如何管理或频繁更改代码? (避免频繁部署)
  • 设计应用程序以便让业务人员可以轻松维护和理解。(非技术成员使用)
  • 如果您必须将所有业务逻辑都放在一个项目中,和其他所有应用程序分开,那么您将在哪里保存它? (微服务架构

为了在我们的应用程序中满足所有这些要求,但是在启动规则引擎之前,让我们先了解一下规则引擎是什么?

什么是规则引擎?

下面是来自Martin Fowler的一篇文章我应该使用规则引擎吗?

规则引擎是一种工具,可以更轻松地使用此计算模型进行编程。它可能是完整的开发环境,也可能是可与传统平台一起使用的框架。近年来,我所见的大多数工具都是设计为适合现有平台的工具。曾经有一种想法是使用这样的工具来构建整个系统,但是现在人们(明智地)倾向于仅将规则引擎用于系统的各个部分。生产规则计算模型最适合仅解决一部分计算问题,因此规则引擎可以更好地嵌入到较大的系统中。 您可以自己构建一个简单的规则引擎。您所需要做的就是创建一堆带有条件和动作的对象,将它们存储在一个集合中,然后遍历它们以评估条件并执行这些动作。但是大多数情况下,当人们提到“规则引擎”时,它们是指专门用来帮助您构建和运行规则引擎的产品。用于指定规则的技术可能有所不同,包括人们将API描述为Java对象的API,表达规则的DSL或允许人们输入规则的GUI。高效的执行引擎有助于使用专门的算法(例如Rete算法)快速评估数百条规则的条件。 规则引擎的一个重要属性是链接 -一条规则的操作部分以改变另一条规则的条件部分的值的方式更改系统状态。链接听起来很吸引人,因为它支持更复杂的行为,但很容易导致很难推理和调试。

这是一个运行在数据上的系统程序, 如果任何条件匹配,那么它就会执行相应的操作。

在上图中,显示了我们以规则(if-then)的形式收集知识并将其存储在任何地方。规则可以存储在文件或数据库之类的任何存储中。现在,规则引擎根据需求选择规则,并在输入数据或查询上运行它们。如果有任何模式/条件匹配,则它将执行相应的操作并返回结果或解决方案。

规则引擎的类型

前向链接(Forward-Chaining)引擎

使用前向链接的推理引擎应用一组规则和事实来推导结论,搜索规则,直到发现IF子句为真为止。根据规则匹配新的或现有事实的过程称为模式匹配,它是由前向链接推理引擎通过各种算法执行的,如Linear、Rete、Treat、Leaps等。

当发现条件为真时,引擎将执行THEN子句,这将导致向其数据集添加新信息。换句话说,引擎从大量事实开始,并应用规则从这些事实中得出所有可能的结论。这就是“前向链接”这一名称的由来——即推理引擎从数据开始,通过推理向前得到答案,这与反向链接相反,后者的工作方式是相反的。

应用案例:目前市场上的大多数物联网平台实际上都有这种类型的规则引擎。下面是几个基于前向链接引擎的自动化工具的例子,这些工具在我们写这篇博客的时候已经在市场上出现了:Redhat Drools, Cumulocity, Eclipse Smart Home, AWS Rules, Thingsboard等等。

条件动作(Condition-Action)引擎

基于条件-动作(CA)规则引擎属于前向链接引擎,但存在一些相关的差异,特别是在物联网领域。与前向链接引擎相比,条件-动作规则引擎不允许多个条件,这使得它们一方面在逻辑表达能力上非常有限,另一方面——可伸缩性更强。条件操作规则引擎(如果-那么)有时使用ELSE语句进行扩展(如果-那么- 或者 - 那么)。

应用案例:物联网领域中这种规则引擎最流行的例子之一是ifttt.com服务。

流处理(flow processing)引擎

基于流的编程是一种将应用程序定义为“黑盒”流程网络的编程范式。这些进程,即函数,被表示为节点,通过消息传递在预定义的连接之间交换数据。节点可以被不断地重新连接,从而形成不同的应用程序,而不必更改它们相关联的功能。

基于流的编程(FBP)自然是“面向组件的”。FBP的好处包括:

  • 更改连接接线而不重写组件。
  • 本质上是并发的——适合多核CPU世界。

应用案例:

Yahoo! PipesNode-RED是使用基于流的编程构建的规则引擎的两个例子。随着“serverless”计算的引入,基于流的编程变得更加流行,在“serverless”计算中,可以通过链接函数构建云应用程序。

IBM的OpenWhisk是一个基于流的编程示例,它通过链接云函数(IBM称之为动作)实现编程。另一种无服务器编排方法(如AWS step functions)基于有限状态机规则引擎。

决策树(decision trees)引擎

捕获条件规则复杂性的一种流行方法是使用决策树,决策树是使用分支方法来说明决策的每一个可能结果的图。

应用案例:

Drools主要以其基于前向链接的规则引擎而闻名,它有一个可与决策表集成的扩展,可以将excel表与嵌入代码片段结合使用,以容纳任何额外的逻辑或所需的阈值。

有限状态机(finite state machines)引擎

状态机可用于根据系统经历的一组状态来描述系统。状态是对等待执行转换的系统状态的描述。过渡是在满足条件或接收到事件时要执行的一组动作。

FSM的概念易于由不同类型的用户掌握。BRE(业务规则引擎)的主要销售论点是BRE软件允许非程序员在业务流程管理(BPM)系统中实现业务逻辑。

FSM经常忽略的一件事是状态暗含着过渡,也就是说,将某种事物建模为状态的唯一目的是导航特定的决策流程。

这样做的直接结果是,FSM缺乏可读性,因为规则变得更加复杂,或者需要将特定的极端情况建模为状态。由于FSM一次只能执行一个转换,因此当用户尝试引入在某些条件下可能发生的事件时,她需要添加一个新状态。当状态数过多时,状态机的可读性会大大下降。

规则引擎的优势

我们可以将给定示例中的所有上述特定要求视为规则引擎的优势。

  1. 规则很容易被业务分析师,客户团队等任何非技术人员阅读和编码。在这里,您必须专注于“该做什么”,而不是“该怎么做”。
  2. 您可以将所有规则存储在中心存储中。这意味着您将拥有所有业务规则和逻辑的中心位置。这将是您的真理之源。
  3. 逻辑与核心应用程序逻辑分开管理,因此可以对其进行管理和重用。
  4. 在规则引擎中,我们使用不同的模式匹配和冲突解决算法,可提供高性能。
  5. 对于经常变化的需求,我们可以轻松地更新规则。无需更改代码。
  6. 如果代码包含许多决策点,则代码的复杂性会更高。规则引擎可以更好地处理它,因为它们使用业务规则的一致表示形式。
  7. 不同的应用程序可以将相同的规则引擎用于相同的逻辑。它提高了可重用性。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
物联网规则引擎技术
物联网应用程序设计与典型的IT解决方案大不相同,因为它将物理操作技术(OT)与传感器、致动器和通信设备连接起来,并将数字信息技术(IT)与数据、分析和工作流连接起来。
用户2605137
2022/04/12
2.9K0
物联网规则引擎技术
规则引擎Drools在贷后催收业务中的应用
在日常业务开发工作中我们经常会遇到一些根据业务规则做决策的场景。为了让开发人员从大量的规则代码的开发维护中释放出来,把规则的维护和生成交由业务人员,为了达到这种目的通常我们会使用规则引擎来帮助我们实现。
2020labs小助手
2022/11/29
1.6K0
别再说你不懂规则引擎了!
一提到规则引擎这四个字,大家肯定多多少少在工作中或者各种文章里面都有过听说,但是很多同学往往被引擎这两个字吓到了,以为这是什么黑科技。时值最近在调研规则引擎,在这里给大家介绍一下什么是规则引擎。
用户5397975
2021/04/09
7.3K0
小明历险记:规则引擎Drools教程一
小明是一家互联网公司的软件工程师,他们公司为了吸引新用户经常会搞活动,小明常常为了做活动加班加点很烦躁,这不今天呀又来了一个活动需求,我们大家一起帮他看看。 小明的烦恼 活动规则是根据用户购买订单的金额给用户送相应的积分,购买的越多送的积分越多,用户可以使用积分来兑换相应的商品,我们这次活动的力度很大,肯定会吸引很多的用户参加,产品经理小王兴高采烈唾液横飞的对小明讲到。小明心想,又tm来这套,这次需求又要变更多少次呢?表面上还的配合,说赶紧把规则给我们吧,早点开发早点上线,小王说这次需求老简单啦,估计你们两
纯洁的微笑
2018/07/20
1.2K0
规则引擎-BRMS在企业开发中的应用
1. 什么是规则 复杂企业级项目的开发以及其中随外部条件不断变化的业务规则(business logic),迫切需要分离商业决策者的商业决策逻辑和应用开发者的技术决策,并把这些商业决策放在中心数据库或
用户1263954
2018/01/30
5.5K1
规则引擎-BRMS在企业开发中的应用
《Drools7.0.0.Final规则引擎教程》第1章 Drools简介
本文介绍了Drools规则引擎的基本概念、使用场景、实现原理、版本信息和官方资料,方便读者快速了解Drools规则引擎的相关信息。
程序新视界
2018/01/08
9.3K0
规则引擎深度对比,LiteFlow vs Drools!
Drools是一款老牌的java规则引擎框架,早在十几年前,我刚工作的时候,曾在一家第三方支付企业工作。在核心的支付路由层面我记得就是用Drools来做的。
码猿技术专栏
2023/05/01
8.2K0
规则引擎深度对比,LiteFlow vs Drools!
规则引擎从入门到实践
小明是一个兢兢业业的服务端程序员,有一天产品经理找到他说,我们要给用户发一条消息,消息的内容按照用户的积分分为三档,1000 以下的用户发:
用户3147702
2022/06/27
1.4K0
规则引擎从入门到实践
JAVA规则引擎工具有哪些?
Drools 是一个强大的业务规则管理系统(BRMS),它提供了一整套用于定义、管理和执行业务规则的工具。
科技新语
2024/07/28
2390
JAVA规则引擎工具有哪些?
规则引擎drools的rete算法实现原理和事实匹配过程
Drools是一款基于Java的开源规则引擎,实现了将业务决策从应用程序中分离出来。本文是作为一个技术角度进行编写,文采有限,仅供对drools有一定了解,并且想搞清楚drools内部实现原理,并想提升编程技巧的同行学习和指正。
用户5927304
2019/07/31
9.9K0
利用规则引擎搭建任务编排引擎
事实上,在实际工作生活中,并不是只有我们的逻辑推理是由有向无环图构成的,复杂的任务编排执行也可以被改造为有向无环图的形式。
用户3147702
2022/06/27
2.3K0
利用规则引擎搭建任务编排引擎
这种场景你还写ifelse你跟孩子坐一桌去吧
作者:小傅哥 暖暖的春风迎面吹,桃花多多开 小傅哥 | https://bugstack.cn 沉淀、分享、成长,专注于原创专题案例,以最易学习编程的方式分享知识,让自己和他人都能有所收获。目前已完
小傅哥
2020/03/09
9490
这种场景你还写ifelse你跟孩子坐一桌去吧
【Drools】值得打工人学习的规则引擎Drools<一>
规则引擎:全称为业务规则管理系统,英文名为BRMS(即Business Rule Management System)。规则引擎的主要思想是将应用程序中的业务决策部分分离出来,并使用预定义的语义模块编写业务决策(业务规则),由用户或开发者在需要时进行配置、管理。 需要注意的是规则引擎并不是一个具体的技术框架,而是指的一类系统,即业务规则管理系统。 目前市面上具体的规则引擎产品有:drools、VisualRules、iLog等。 规则引擎实现了将业务决策从应用程序代码中分离出来,接收数据输入,解释业务规则,并根据业务规则做出业务决策。规则引擎其实就是一个输入输出平台。
沁溪源
2020/11/13
8.4K0
【Drools】值得打工人学习的规则引擎Drools<一>
这种场景你还写ifelse你跟孩子坐一桌去吧
if else,并不是一个非常坏的关键字,只不过有人把他用坏了。尤其在接到产品需求如下这样;
小傅哥
2020/07/14
7630
【猫头虎科技解码】探秘Drools语法:规则引擎在实战中的应用️
在现代软件开发过程中,Drools作为一种强大的业务规则管理系统(BRMS),为开发人员提供了一个高效、灵活的解决方案来处理复杂的业务决策逻辑。本文将深入探讨Drools的语法和规则引擎的核心概念,并通过十个实际的业务代码规则案例,展示如何在各种场景下灵活应用Drools,从而提高开发效率和业务逻辑的可维护性。关键词涵盖:Drools语法,规则引擎,业务规则,实战案例。
猫头虎
2024/04/07
4920
【猫头虎科技解码】探秘Drools语法:规则引擎在实战中的应用️
谈一谈规则引擎在活动系统中的落地
本文从 “为什么需要规则引擎” “规则引擎的定义” “规则引擎在营销活动系统中的落地” “规则引擎平台内部架构” “现有的规则引擎” 来描述。
邹志全
2021/05/14
2.8K1
调研技术组件模板V1 —— 以 Drools 为例
Drools通过 事实、规则和模式相互组合来完成工作,drools在开源规则引擎中使用率最广,但是在国内企业使用偏少,保险、支付行业使用稍多。
知一
2021/12/07
8180
调研技术组件模板V1 —— 以 Drools 为例
.Net Core 环境下构建强大且易用的规则引擎
在业务的早期时代,也许使用硬编码或者逻辑判断就可以满足要求。但随着业务的发展,越来越多的问题会暴露出来:
李明成
2020/02/20
2.1K0
从0到1:构建强大且易用的规则引擎
引言 2016年07月恰逢美团点评的业务进入“下半场”,需要我们在各个环节优化体验、提升效率、降低成本。技术团队需要怎么做来适应这个变化?这个问题直接影响着之后的工作思路。 美团外卖的CRM业务步入成熟期,规则类需求几乎撑起了这个业务所有需求的半边天。一方面规则唯一不变的是“多变”,另一方面开发团队对“规则开发”的感受是乏味、疲惫和缺乏技术含量。如何解决规则开发的效率问题,最大化解放开发团队成为目前的一个KPI。 规则引擎作为常见的维护策略规则的框架很快进入我的思路。它能将业务决策逻辑从系统逻辑中抽离出来,
美团技术团队
2018/03/13
9.3K1
从0到1:构建强大且易用的规则引擎
【猫头虎科技角】深入Drools:规则引擎的艺术与实践
在今天的高速发展的软件行业中,Drools作为一个高效、灵活的业务规则管理系统(BRMS),提供了一个桥梁,将复杂业务逻辑与应用程序代码分离。这篇文章将深入探讨Drools的内核机制、实现原理以及如何在项目中灵活运用。我们将通过详细的代码案例和操作命令,一步步展示如何利用Drools简化业务逻辑的实现。无论你是初学者还是在行业内有深厚的积累,本文都将为你提供宝贵的技术洞见。关键词包括:Drools, 规则引擎, 业务规则管理, Java, 规则定义语言(RDL)。
猫头虎
2024/04/07
1K0
【猫头虎科技角】深入Drools:规则引擎的艺术与实践
推荐阅读
相关推荐
物联网规则引擎技术
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验