物联网规则引擎设计
2020-11-30 本文已影响0人
Lupino
规则引擎是要用来解决设备联动,数据监控,消息通知等。
这里面的逻辑有些复杂,并且有很多未知情况。
我设计的时候考虑到这些问题,所有规则引擎必须是一个开放性的,可扩展的。
规则必须是一门语言,而且运行在一个可控的沙箱里面。
我选择了 Lisp, 构建一个 Lisp 语言解释器还是相对简单,在这个语言上添加特有的函数支持,规则引擎就有了。
那谁来写 Lisp 规则呢?
-
设计一个 Web 管理,在里面写 Lisp 代码,设置一个规则,让规则引擎执行。
-
设计一个自动生成 Lisp 代码,让规则引擎执行。
这两种都需要,对于傻瓜式,然后会通过手机应用,设置一些参数,然后自动生成 Lisp 代码。
对于专业用户,直接写 Lisp 代码。
对于设备联动,可以抽象成两个设备间的联动。
对规则引擎沙箱限制只能有两个设备, 一个源设备,一个目标设备。
当然目标设备可以没有。
我们可以让设备自己跟自己联动, 也可以更另外的设备进行联动。
设备监控,阈值分析,通过 Lisp 代码判断,并执行 消息通知。
异常检测也在规则引擎的一个函数,只要执行就能进行异常检测。
这是目前规则引擎集成的,我们可以按需增加Lisp语言的函数,来增加新功能。