找回密码
 注册
关于网站域名变更的通知
查看: 368|回复: 1
打印 上一主题 下一主题

物联网平台的规则引擎与产品

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-11-2 13:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
规则引擎是物联网平台的一个重要功能模块,是处理复杂逻辑的引擎,主要对感知层搜集的数据进行处理,实现数据逻辑和上层业务的解耦;本文作者从产品的角度对此做出理解,我们一起来看一下。
大型物联网平台都有规划规则引擎,而规则引擎到底是什么?这个组件有什么意义?具体该怎么做?这些是我在做的过程中不断问自己的问题,以下从产品角度聊聊我对这些问题的理解。

一、规则引擎是什么1. 为什么叫规则引擎
我猜这个词是英译过来的,国外的网站叫rule engine,我们也就叫规则引擎了,其实我一直好奇为啥不翻译成规则发动机,虽然不高深,但是很好理解呀。
拆词理解就是:
  • 规则,是运作规律所遵循的法则。
  • 引擎来源于发动机,有时候直接被用来指代发动机,泛化后被用在很多地方,比如搜索引擎。
所以物联网平台的规则引擎就是对接入设备设定规则的,而规则的基本公式是如果A,那么B。

2. 为什么做规则引擎
物联网平台的基本功能就是对物的管理和对物产生的数据进行处理,数据的处理涉及数据的存储、流向、使用。
那么会自然的提出3个问题:
针对这3个问题都可以通过代码实现,但是不同的行业的业务规则复杂多样,通过代码实现的话代码量、逻辑分支、代码维护工作量会不可想象。
所以需要一种组件,可以将业务决策从代码中分离,易于编写、易于维护,基于这些需求,规则引擎应运而生。
其实这么解释总觉的有一点事后诸葛亮,一种组件的诞生肯定伴随的需求和功能的不断迭代,只是事后看起来清晰了很多。

二、规则引擎怎么做1. 从实际场景出发
如果公式是如果A,那么B,那么通过下面几个例子看看A、B分别有什么。
场景1:
某个地库,红外感应器感应到有车移动,则旁边的10个灯亮,2分钟内车不动,灯灭。
  • A1:[某类型红外设备]感应到[车移动],B1:[旁边10个灯][开关属性设置为开];
  • A2:[某类型红外设备]感应到[2min内没有车移动],B2:[旁边10个灯][开关属性设置为关];
场景2:
某条街道,所有路灯夏季19:00亮,6:00灭,冬季17:30亮,7:00灭。
  • 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:
某个家,识别开门人员,非主人的话报警。
场景4:
某个大型工厂,某类机器的温湿度数据转发至A服务(用于分析环境的服务),某类机器的运行参数,如高度、角度等数据转发至B服务(用于分析机器运转情况的服务)。
  • A1:[是X类机器的温度、适度],B1:[转发至A服务];
  • A2:[是Y类机器的高度、角度],B2:[转发至B服务];
以上几个场景可以看出A包括时间点、时间范围、日期范围、设备的属性值、设备的类型等,B可能是状态的变化、产生告警、转发数据等。
接下来的工作就是如何把这些信息整合成界面上易于操作的功能了。

2. 需求的抽象与逻辑的整合
把以上的ABCD进一步抽象:
  • 条件:日期、时间、设备的类型、设备的范围、设备的某个属性、设备的某个属性的值;
  • 逻辑关系:=、==、≥、≤、!=、>、<;
  • 执行动作:告警、转发、改变属性;
1)条件间的逻辑关系是“与”还是“或”?(A与A)
  • 如果是“与”,那恰好在某个点设备上报数据符合设定条件的情况在现实中存在吗?
  • 如果是“与”,用户创建了两个时间点的条件,那这条规则就没意义了吧?
2)动作间的关系是“与”还是“或”?(B与B)
既要将数据转发到别的服务上,又要让某个设备执行某个动作,合理吗?
3)不合理的规则是按照正常(自认为正常)的逻辑写死在程序里还是让用户自己判断?
4)规则什么时候生效,立即生效还是指定时间生效,还是周期生效?
没有标准答案…
其实以上问题没有标准的答案,做成什么样子都要根据现实的需求来。
对于某些简单的场景,规则引擎都没必要做,有些场景,没必要做数据转发。
阿里和华为都把规则引擎分为数据转发和设备联动,这个分法比较通用,而通用的另一面便是抽象,不贴合业务。
贴合业务近的平台可以按照自己的需求划分,比如规则引擎(定时联动、设备联动)、规则引擎(设备联动、告警)、规则引擎(数据转发、定时联动、设备联动)等等。
灵活的逻辑关系选择触发时效
规则的生效时间有如下设计:
  • 规则列表有一个是否启动的手动开关,打开后表示规则开始生效。
  • 是否指定时间生效设计在规则基础信息中,用的是明确的时间范围表单。
  • 是否指定周期生效同样设计在规则基础信息中,指定按照“周”循环,用户很明确知道怎么用,但是按照年、月循环的场景无法实现。

做的时候如何决策和平衡
参考同类型的产品会发现同样的功能如何做都存在优劣势,做好选择便是我们要考虑的问题;而决策的源头不仅是公司面临的实际需求、市场的变化、技术的选型都会影响最后的呈现,一点小小的不同便会导致大大的差别。
而这个软能力并非一蹴而就,我们可能需要一边往前走一边检验,是否做得好甚至还需要一点点运气。

  • TA的每日心情
    慵懒
    2020-9-2 15:07
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    2#
    发表于 2020-11-2 14:32 | 只看该作者
    规则引擎是物联网平台的一个重要功能模块
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-10 00:10 , Processed in 0.078125 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表