序
一位领导一再强调每个人都是产品,确实作为一个多年编码的程序员,我们都需要有这样的格局眼光。之前要求联动预警可以拖拽配置,这里就分享一下个人的设计想法。
一、技术实现准备
规则解析:使用表达式引擎JEXL(号称目前最快,灵活)
拖拽实现:前端说有插件(H5还是很强大)
拖拽配置:抽象出一个简易的设计界面(对元素抽象处理)
二、界面设计
产品御用设计界面Axure用的真差,将就看吧。界面也画的粗,有个大致意思吧。主要有三个界面:
- 设备功能配置
配置各类设备的功能,指令下发平台、功能码等信息
- 上报数据格式设置
平台推送数据格式配置,方便推送数据存储、解析、为联动规则提供字段来源
- 预警可视化配置
抽象的简易设计界面,配合前端实现拖拽配置预警、联动。注意提供联动测试按钮,也就是根据上报格式设置的json串模拟一条上报数据,调用上报数据接收接口。
大致界面
设备功能配置
上报数据格式设置
预警可视化配置
三、设计思路解释
1、设备功能配置、上报数据格式设置都是为拖拽配置提供配置基础的。上报数据格式另外其实也为推送数据提供存储便利,上报数据采用主数据行存储,从数据列存储,比如主数据存字段是比较固定的字段,从数据为扩展字段,可冗余设备上报数据差异。
上报数据格式:
{"deviceCode":[{"val":"设备编码"},{"val":"abc0001"}],"dy":[{"val":"电压"},{"val":"250V"}],"dl":[{"val":"电流"},{"val":"25A"}],"maxDy":[{"val":"最大电压"},{"val":"300V"}]}
平台推送过来除了告知值,同时告知字段意思,这个平台对接设备肯定是知道的,业务系统就不一定知道了。
2、拖拽的设备可设置厂家、型号、编码,都可为空,根据这里设置的厂家、型号找上报数据格式,如果都为空默认使用配置的通用格式对数据进行解析。(如果上报数据格式设置没有配置全面,可能没有对应的格式)
针对接收上报数据过程中没有匹配到格式,应该设计一个专门的异常管理模块,方便运维人员健壮配置。
- 被联动动作来源设备功能配置,也是根据厂家、型号进行查询,下拉选择,如果厂家、型号空,则默认自行根据上报数据设备编码查询到的厂家、型号匹配查找。(如果设备功能配置没有配置全面,可能出现没有匹配到,联动失败)
针对联动失败的,也归并到异常管理模块,记录数据,方便运维开发找原因。
- 联动箭头元素的设置,规则字段也是来源上报数据格式设置。后台上报数据解析使用表达式引擎对设置的规则进行解析,触发本级联动与下级设备联动。
表达式解析异常的,也归并到异常管理模块,记录数据,方便运维开发找原因。
四、设计总结
1、拖拽元素抽象的还不够,部分点可能没有想到
2、设备功能配置,有参的功能配置还要考虑,没有想到好的设计办法
3、数据采取主从行列方式存储,表连接查询、列表展示将增加前端展示的难度。主从字段要提前分明,后期有连接查询需求可将从列变更到主列字段。