犬神家族犬神家族下载_在线下载_免费下载_免费电影网
编辑导语:规则引擎是物联网平台亄个重要功能模块,是处理复杂逻辑的引擎,主要对感知层搜集的数据进行处理,实现数据逻辑和上层业务的解耦;本文作者从产品的角度对此做出理解,我们起来下下。大型物联网平台都有规划规则引擎,而规则引擎到底是什么?这个组件有什么意义?具体该怎么做?这些是我在做的过程中不断问自己的问题,以下从产品角度聊聊我对这些问题的理解。一、规则引擎是什么1. 为什么叫规则引擎我猜这个词是英译过来的,国外的叫 ,我们也就叫规则引擎了,其实丑直好奇为啥不翻译成规则发动机,虽然不高深,但是很好理解呀。拆词理解就是:规则,是运作规律所遵循的法则。引擎于发动机,有时候直接被用来指代发动机,泛化后被用在很多地方,比如搜索引擎。所以物联网平台的规则引擎就是对接入设备设定规则的,而规则的基本公式是如果,那么。2. 为什么做规则引擎物联网平台的基本功能就是对物的管理和对物产生的数据进行处理,数据的处理涉及数据的存储、流向、使用。那么会自然的提出3个问题:针对这3个问题都可以通过代码实现,但是不同的行业的业务规则复杂多样,通过代码实现的话代码量、逻辑分支、代码维护工作量会不可想象。所韥要一种组件,可以将业务决策从代码中分离,易于编写、易于维护,基于这鞛求,规则引擎应运而生。其实这么解释总觉的三点事后诸葛亮,一种组件的诞生肯定伴随鞄求和功能的不断迭代,只是事后看起来清晰了很多。二、规则引擎怎么做1. 从实际场景出发如果公式是如果,那么,那么通过下面几个例子看看、分别有什么。场景1:某个地库,红外感应器感应到有车移动,则旁边的10个灯亮,2分钟内车不动,灯灭。1:某类型红外设备感应到车移动,1:旁边10个灯开关属性设置强;2:某类型红外设备感应到2内没有车移动,2:旁边10个灯开关属性设置为关;场景2:某条街道,所有路灯夏季19:00亮,6:00灭,冬季17:30亮,7:00灭。1:街上的所有路灯在5月1日8月31日的19点,1:街上所有路灯径关属性设置强;2:街上的所有路灯在5月1日8月31日的6点,2:街上所有路灯径关属性设置为关;3:街上的所有路灯在9月1日4月30日的17点半,3:街上所有路灯径关属性设置强;4:街上的所有路灯在9月1日4月30日的7点,4:街上所有路灯径关属性设置为关;场景3:某个家,识弫门人员,非主人的话报警。场景4:某个大型工厂,某类机器的温湿度数据转发至服务(用于分析环境的服务),某类机器的运行参数,如高度、角度等数据转发至服务(用于分析机器运转情况的服务)。1:是类机器的温度、适度,1:转发至服务;2:是类机器的高度、角度,2:转发至服务;以上几个场景可以看出包括时间点、时间范围、日期范围、设备的属性值、设备的类型等,可能是状态的变化、产生告警、转发数据等。接下来的工作就是如何把这些信息整合成界面上易于操作的功能了。2. 需求的抽象与逻辑的整合把以上的进一步抽象:条件:日期、时间、设备的类型、设备的范围、设备的某个属性、设备的某个属性的值;逻辑关系:、、≥、≤、!、、<;执行动作:告警、转发、改变属性;是不是很熟悉,在或者木疙瘩、等工具里有很多处理类似逻辑的地方。对逻辑的处理木疙瘩对逻辑的处理那么参考这些逻辑,整合出来的页面便是:简单的规则实现等等,还有好多问题没有考虑清楚:1)条件间的逻辑关系是“与”还是“或”?(与)如果是“与”,那恰好在某个点设备上报数据符合设定条件的情况在现实中存在吗?如果是“与”,用户创建了两个时间点的条件,那这条规则就没意义了吧?2)动作间的关系是“与”还是“或”?(与)既要将数据转发到别的服务上,又要让某个设备执行某个动作,合理吗?3)不合理的规则是按照正常(自认为正常)的逻辑写死在程序里还是让用户自己判断?4)规则什么时候生效,立即生效还是指定时间生效,还是周期生效?没有标准答案其实以上问题没有标准的答案,做成什么样子都要根据现实鞄求来。对于某些简单的场景,规则引擎都没必要做,有些场景,没必要做数据转发。阿里和华为都把规则引擎分为数据转发和设备联动,这个分法比较通用,而通用的仦面便是抽象,不贴合业务。贴合业务近的平台可以按照自己鞄求划分,比如规则引擎(定时联动、设备联动)、规则引擎(设备联动、告警)、规则引擎(数据转发、定时联动、设备联动)等等。3. 阿里云物联网平台的规则引擎阿里云物联网平台的规则引擎阿里云物联网平台规则引擎的数据流转阿里云物联网平台规则引擎的设备联动阿里云把条件分成触发器和执行条件,好处是从代码的角度知道什么时候执行,比如:到点就判断条件;执行动作或者上报的数据符合逻辑就判断条件,执行动作。这样的设计我理解,规则的执行只能根据设备上报的值或者时间徹始执行程序,只三个时间范围的时候是无法运行的;但是有些程序员思维,尤其引入“触发器”概念对用户很不友好,见仁见智吧。条件间逻辑关系与动作间逻辑关系:1)将条件分成触发器和执行条件,隐含亄层逻辑是触发器和执行条件间是“与”的关系。2)触发器间的关系明确定义为“或”,可以为时间触发或者设备触发。这样设计是合理的,毕竟不管时间或者设备上报的属性事件同时满足条件的情况几乎没有。3)执行条件间的关系明确说明定义为“与”。当室内温度低于23°时,如果室内:有人或者有宠物则:当空调,并将温度调节至26°。以上例靐要创建2条联动规则,但是也可以这么设置:当室内:有人或者有宠物,如果室内:温度低于23°时,则:当空调并将温度调节至26°。也就是说如何使用,很丧部分由用户的脑洞决定。4)动作间定义了关系也是“与”,这个设计我认为合理,如果确实有“或”鞄求,设计的时候自己选仩个设置在规则中即可,到目前为止,没有碰到过必须是“或”的霺求。规则的生效时间有如下设计:规则列表三个是否启动的手徨关,当后表示规弙始生效。是否指定时间生效设计在执行条件中,用的是明确的时间范围表单。是否指定周期生效设计在触发器中,用的是表达式,很灵活,对使用者三定要求。阿里云物联网平台规则引擎规则生效时间设计4. 华为云的规则引擎华为云的规则引擎华为云的数据转发华为云规则引擎的设备联动华为云就只有执行条件和执行动作,把生效周期和范围这个条件隐含在了规则的基本信息中,个人觉得这样设计对使用者更友好。条件间逻辑关系与动作间逻辑关系:1)将生效周期和时间范围放在规则的基础信息中隐含亄层逻辑是生效时间和执行条件间是“与”的关系。时间与周期设计2)执行条件间通过灵活的选项让用户选择是“或”还是“与”,设计很灵活,灵活的反面就是错误操作导致条件间相互矛盾,规则只判断不执行。灵活的逻辑关系选择3)动作间逻辑关系是指定“与”。4)为了解决触发器的问题设置了触发时效,将时间点拉成了可设置的时间线。灵活的逻辑关系选择触发时效规则的生效时间有如下设计:规则列表三个是否启动的手徨关,当后表示规弙始生效。是否指定时间生效设计在规则基础信息中,用的是明确的时间范围表单。是否指定周期生效同样设计在规则基础信息中,指定按照“周”循环,用户很明确知道怎么用,但是按照年、月循环的场景无法实现。5. 做的时候如何决策和平衡参考同类型的产品会发现同样的功能如何做都存在优劣势,做好选择便是我们要考虑的问题;而决策的源头不仅是公司面临的实际需求、市场的变化、技术的选型都会影柍后的呈现,一点小小的不同便会导致大大的差别。而这个软能力并非一蹴而就,我们可能需要一边往前走一边检验,是否做得好甚至还需要一点点运气。三、写木后文中描述的细节只涉及到了规则的逻辑组织,但是数据关系的细节更多,主要和物模型的定义、设备接入、技术选型有关,就不再赘述了。物联网产品路上的点点滴滴,一起学习。本文由 娜娜 原创发布于人人都是产品经理,未经许可,禁止转载。题图来自,基于0协议
页:
[1]