突然资讯网
首页 >> 科技 >> 正文

规则引擎是物联网平台的一个重要功能模块

日期:2020-10-30 17:46:18 来源:互联网 编辑:小狐 阅读人数:5

导语:规则引擎是物联网平台的一个重要功能模块,是处理复杂逻辑的引擎,主要对感知层搜集的数据进行处理,实现数据逻辑和上层业务的解耦;本文从产品的角度对此做出理解,我们一起来看一下。

规则引擎是物联网平台的一个重要功能模块(图1)

大型物联网平台都有规划规则引擎,而规则引擎到底是什么?这个组件有什么意义?具体该怎么做?这些是我在做的过程中不断问自己的问题,以下从产品角度聊聊我对这些问题的理解。

一、规则引擎是什么 1. 为什么叫规则引擎

我猜这个词是英译过来的,国外的网站叫rule engine,我们也就叫规则引擎了,其实我一直好奇为啥不翻译成规则发动机,虽然不高深,但是很好理解呀。

拆词理解就是:

规则,是运作规律所遵循的法则。

所以物联网平台的规则引擎就是对接入设备设定规则的,而规则的基本公式是如果A,那么B。

2. 为什么做规则引擎

物联网平台的基本功能就是对物的和对物产生的数据进行处理,数据的处理涉及数据的存储、流向、使用。

那么会自然的提出3个问题:

数据存储在哪里?

流转至什么地方?

怎么使用?

针对这3个问题都可以通过代码实现,但是不同的行业的业务规则复杂多样,通过代码实现的话代码量、逻辑分支、代码维护工作量会不可想象。

所以需要一种组件,可以将业务决策从代码中分离,易于编写、易于维护,基于这些需求,规则引擎应运而生。

其实这么解释总觉的有一点事后诸葛亮,一种组件的诞生肯定伴随的需求和功能的不断迭代,只是事后看起来清晰了很多。

二、规则引擎怎么做 1. 从实际场景出发

如果公式是如果A,那么B,那么通过下面几个例子看看A、B分别有什么。

场景1:

某个地库,红外感应器感应到有车移动,则旁边的10个灯亮,2分钟内车不动,灯灭。

A1:某类型红外设备感应到车移动B1:旁边10个灯开关属性设置为开

A2:某类型红外设备感应到2min内没有车移动B2:旁边10个灯开关属性设置为关

场景2:

某条街道,所有路灯夏季亮,灭,冬季亮,灭。

A1:街上的所有路灯】在【5月1日-8月31日的19点】B1:街上所有路灯的开关属性设置为开】

A2:街上的所有路灯】在【5月1日-8月31日的6点】B2:街上所有路灯的开关属性设置为关】

A3:街上的所有路灯】在【9月1日-4月30日的17点半】B3:街上所有路灯的开关属性设置为开】

A4:街上的所有路灯】在【9月1日-4月30日的7点】B4:街上所有路灯的开关属性设置为关】

场景3:

某个家,识别开门人员,非主人的话报警。

A:门感应器】在【感应到门开】B:报警】

场景4:

接下来的工作就是如何把这些信息整合成界面上易于操作的功能了。

2. 需求的抽象与逻辑的整合

把以上的ABCD进一步抽象:

条件:日期、时间、设备的类型、设备的范围、设备的某个属性、设备的某个属性的值。

逻辑关系:=、==、≥、≤、=、>、。

是不是很熟悉,在excel或者木疙瘩、axure等工具里有很多处理类似逻辑的地方。

规则引擎是物联网平台的一个重要功能模块(图2)

Excel对逻辑的处理

规则引擎是物联网平台的一个重要功能模块(图3)

木疙瘩对逻辑的处理

那么参考这些逻辑,整合出来的页面便是:

规则引擎是物联网平台的一个重要功能模块(图4)

简单的规则实现

等等,还有好多问题没有考虑清楚:

1条件间的逻辑关系是“与”还是“或”A与A

如果是“与”那恰好在某个点设备上报数据符合设定条件的情况在现实中存在吗?

如果是“与”用户创建了两个时间点的条件,那这条规则就没意义了吧?

2动作间的关系是“与”还是“或”B与B

3不合理的规则是按照正常自认为正常的逻辑写死在程序里还是让用户自己判断?

4规则什么时候生效,立即生效还是指定时间生效,还是周期生效?

没有标准答案…

其实以上问题没有标准的答案,做成什么样子都要根据现实的需求来。

3. 阿里云物联网平台的规则引擎

规则引擎是物联网平台的一个重要功能模块(图5)

阿里云物联网平台的规则引擎

规则引擎是物联网平台的一个重要功能模块(图6)

阿里云物联网平台规则引擎的数据流转

规则引擎是物联网平台的一个重要功能模块(图7)

阿里云物联网平台规则引擎的设备联动

阿里云把条件分成触发器和执行条件,好处是从代码的角度知道什么时候执行,比如:

到点就判断条件。

执行动作或者上报的数据符合逻辑就判断条件,执行动作。

这样的设计我理解,规则的执行只能根据设备上报的值或者时间点开始执行程序,只有一个时间范围的时候是无法运行的;但是有些程序员思维,尤其引入“触发器”概念对用户很不友好,见仁见智吧。

条件间逻辑关系与动作间逻辑关系:

1将条件分成触发器和执行条件,隐含的一层逻辑是触发器和执行条件间是“与”的关系。

2触发器间的关系明确定义为“或”可以为时间触发或者设备触发。这样设计是合理的,毕竟不管时间或者设备上报的属性/事件同时满足条件的情况几乎没有。

3执行条件间的关系明确说明定义为“与”

当室内温度低于23°C时,如果室内:有人或者有宠物则:打开空调,并将温度调节至26°C。

以上例子需要创建2条联动规则,但是也可以这么设置:

当室内:有人或者有宠物,如果室内:温度低于23°C时,则:打开空调并将温度调节至26°C。

也就是说如何使用,很大一部分由用户的脑洞决定。

4动作间定义了关系也是“与”这个设计我认为合理,如果确实有“或”的需求,设计的时候自己选择一个设置在规则中即可,到目前为止,没有碰到过必须是“或”的强需求。

规则的生效时间有如下设计:

规则列表有一个是否启动的手动开关,打开后表示规则开始生效。

是否指定时间生效设计在执行条件中,用的是明确的时间范围表单。

是否指定周期生效设计在触发器中,用的是cron表达式,很灵活,对使用者有一定要求。

规则引擎是物联网平台的一个重要功能模块(图8)

阿里云物联网平台规则引擎规则生效时间设计

4. 华为云IoTDA的规则引擎

规则引擎是物联网平台的一个重要功能模块(图9)

华为云IoTDA的规则引擎

规则引擎是物联网平台的一个重要功能模块(图10)

规则引擎是物联网平台的一个重要功能模块(图11)

华为云IoTDA规则引擎的设备联动

华为云就只有执行条件和执行动作,把生效周期和范围这个条件隐含在了规则的基本信息中,个人觉得这样设计对使用者更友好。

条件间逻辑关系与动作间逻辑关系:

1将生效周期和时间范围放在规则的基础信息中隐含的一层逻辑是生效时间和执行条件间是“与”的关系。

规则引擎是物联网平台的一个重要功能模块(图12)

时间与周期设计

2执行条件间通过灵活的选项让用户选择是“或”还是“与”设计很灵活,灵活的反面就是错误操作导致条件间相互矛盾,规则只判断不执行。

规则引擎是物联网平台的一个重要功能模块(图13)

灵活的逻辑关系选择

3动作间逻辑关系是指定“与”

4为了解决触发器的问题设置了触发时效,将时间点拉成了可设置的时间线。

规则引擎是物联网平台的一个重要功能模块(图14)

灵活的逻辑关系选择触发时效

规则的生效时间有如下设计:

规则列表有一个是否启动的手动开关,打开后表示规则开始生效。

是否指定时间生效设计在规则基础信息中,用的是明确的时间范围表单。

是否指定周期生效同样设计在规则基础信息中,指定按照“周”循环,用户很明确知道怎么用,但是按照年、月循环的场景无法实现。5. 做的时候如何决策和平衡

参考同类型的产品会发现同样的功能如何做都存在优劣势,做好选择便是我们要考虑的问题;而决策的源头不仅是公司面临的实际需求、市场的变化、技术的选型都会影响最后的呈现,一点小小的不同便会导致大大的差别。

而这个软能力并非一蹴而就,我们可能需要一边往前走一边检验,是否做得好甚至还需要一点点运气。

三、写在最后

物联网产品路上的点点滴滴,一起学习。

本文相关词条概念解析:

规则

规定出来供大家共同遵守的制度或章程叫规则。规则,是以一种可持续可预测的方式运用信息的系统性决策程序。规则是多种多样的。规则是国家机关、社会团体、企事业单位对某一事务或活动的行为准则作出具体规定的规范性文书。规则和守则、制度都属于行政规章类公务文书。规则只适用于对一定范围内的某一具体管理工作或某一公务活动进行规范。规则,一般指由群众共同制定、公认或由代表人统一制定并通过的,由群体里的所有成员一起遵守的条例和章程。规则具有普遍性,规则也指大自然的变化规律。它存在三种形式:明规则、潜规则、元规则,无论何种规则只要违背善恶的道德必须严惩不贷以维护世间和谐;明规则是有明文规定的规则,存在需要不断完善的局限性;潜规则是无明文规定的规则,约定俗成无局限性,可弥补明规则不足之处;元规则是一种以暴力竞争解决问题的规则,善恶参半,非道德之理的文明之道。

网友评论