智慧水电数据平台云控制设计方案(三)
编写:冯迅
版本:1.0
日期:2018-10-29
一、目标需求
1.1 需求背景
云控制服务的管理和编辑界面,负责将生产运营中的规程、流程、决策方案的数据化,采用包含所有生产要素(设备和人员)的工作流的方式表达,对各生产的各部门流程优化赋能。具体需求主要为:
以图形化的方式完成跨系统、跨领域、跨部门的云控制流程的编辑、设计功能;
部署基于WEB的界面,使业务人员可以免安装软件,随时随地访问;
可以实现管理流程图的导出(图像文件)和流程文件的输出(BPMN格式),并保存写入MySQL或MongoDB数据库;
支持对众多流程的浏览和查询;
能够识别和管理跨领域流程的关键属性,并对流程的输入变量、输出变量、算子进行识别、分类、管理,从而保证后台服务对流程控制的正确处理;
1.2 内部定义
流程:是指水电企业生产管理过程中,一件工作从产生到结束的所有处理环节和事项。日常的定时规程、人员手动执行、即时发生的事件都可以触发一件工作流程,流程总是在某一个工作任务中,接收输入信息,判断处理该信息,然后输出一些结果信息或执行一个,而当满足一定逻辑条件后就根据流向转移到下一个任务阶段。
业务流程建模和表示法(BPMN): BPMN是当前通用的描述工作流的图模一体化表达方式,具有相对较为完善的理论以及较多市场化产品的支持,因此云控制系统的策略数据表示方式采用 BPMN v2.0 格式方案。
注:传统流程图很少包含足够的细节来构建一套可被计算机识别并执行的信息化系统,BPMN即业务流程建模表示法(BPMN - Business Process Modeling Notation),是由对象管理组织(Object Management Group, Inc.)开发的一套标准,主要用于提供被所有业务用户理解的一套标记语言,这些用户包括业务分析者、软件开发者以及业务管理者与监管者,并且打通了业务流程设计与流程实现之间的隔阂。
- 开源流程引擎Activiti:Activiti是领先的轻量级、以java为中心的开源BPMN引擎,支持现实世界的流程自动化需求,是新一代的业务自动化平台。
1.3 参考资料
二、软件功能
水电云控制的策略流程数据,在规则上已经由 BPMN 规范化,因此流程的编辑界面主要是体现在两方面:
- 一是流程的图形化编辑,进行逻辑建模;
- 二是对流程中的各个节点的属性进行填写、配置。
- 三是完成保存、上载、检验、发布等系统功能。
2.1 主要逻辑
软件的主要逻辑按照流程来表示如下:
- 开发阶段,应首先保证主逻辑流程的功能;
- 其次,必需完成一级子逻辑流程的功能;
- 最后,开发完成二级子流程的功能。
2.2 界面设计
当前主要考虑在开源软件Activiti的基础上做再开发,因此保留Activiti软件原生编辑界面:
流程图编辑界面应具有以下要素:
- 基于Web的框架,可被主流浏览器访问
- 页面正中的流程图编辑框
- 页面正上方的菜单栏
- 页面左侧的BPMN图元选择栏
- 页面右侧的图元属性栏
2.2.1 绘图编辑框
流程图编辑框的风格以Activiti为基础,注意保证如下设计功能:
- 图形编辑常用的复制、粘贴、剪切、回撤(undo)、重做(redo)应分别支持热键;
- 可以从左侧图元选择栏拖拽图元到编辑框;
- 选中某个图元节点后,在右侧相应的属性框的内容跟着切换;
-
选中现有某个图元后,右边可弹出下一步骤可选择的图元,选择下个图元后流程连线会自动连接。
2.2.2 菜单栏和工具栏
菜单栏应尽量简洁,必须保证的下拉菜单及功能有:
-
文件 栏,至少应包含下列功能选项:
- 新建
- 打开
- 保存
- 另存为
- 导出为图片
- 上载
-
编辑 栏,至少应包含功能选项:
- 复制
- 粘贴
- 回撤
- 重做
-
视图 栏,至少应包含功能选项:
- 放大
- 缩小
- 缩放至适合
-
发布 栏,至少应包含功能选项:
- 配置连接
- 发布流程
工具栏应包含以下常用功能图标(点击链接查看参考图标图片):
2.3 系统功能
除绘图编辑外,以下的系统功能应保证实现:
2.3.1 用户登录管理
输入页面地址首次登录时应跳转到登陆页面,输入用户名和密码。用户核对正确后方能够进入流程编辑、管理页面。
2.3.2 流程保存
直接将编辑好的流程以XML序列化的文本格式(.bpmn文件)保存到本地主机。
2.3.3 保存为图片
考虑到BPMN流程的图形化要求,页面上的流程设计图应能够导出为SVG、PNG、JPG等常用格式的图片文件。
2.3.4 上载流程
流程数据以 xml 格式保存在MySQL/MongoDB数据库中,在前端界面中,应能配置上载的数据库的连接方式,包括:主机地址、数据库名、用户名、密码等。
上载过程分为两步,一是对流程数据进行即时检验,二是将流程保存到数据服务器主机,见2.1节主要逻辑图。
2.3.5 发布流程
发布流程,需要将本流程中所有的输入数据的信息,以 JSON格式发布到综合数据平台 Kafka消息总线上,见《Part2:联动流程的后台和数据接口》。
2.4 数据和属性
节点的属性配置应遵从 BPMN2.0规范 和《Part1:基于流程引擎的数据设计》的设计规定。
2.4.1 流程
-
流程(process)的属性必须包括:
- 编号(id):字符串型,如
Process_1
- 名称(name):中文字符串型,如
检修流程
- 可执行(isExecutable):字符串型,如
true
或false
- 编号(id):字符串型,如
-
流程(process)的可选属性包括:
- 作者(athor):中文字符串型,如
张三
- 审批(reviewer):中文字符串型,如
李四
- 日期(date):日期型字符串,如
2018-10-30 20:21:45
- 作者(athor):中文字符串型,如
2.4.2 开始事件
其中任意图元节点都具备的数据属性
-
开始事件
本文档1.0版本的开始事件仅包括以下三种:空开始事件、消息开始事件、定时开始事件。
- 所有三种开始事件(startEvent)的属性必须包括:
- 编号(id):字符串型,如
StartEvent_1
- 名称(name):中文字符串型,如
开始检修
- 编号(id):字符串型,如
-
空开始事件
的属性还必须包括:
- 触发器(initiator):JSON型,如
{"message" : {"id" : "PDP4GCVADJKS00000258"}}
或{"timer" : {"date" : "2018-10-30 20:21:45"}}
。 填写触发器等于是用 JSON指明触发的全部信息要素,所以必须定义触发方式message
或timer
,作为子对象。message
子对象主要是实时触发流程,需要写明触发点编号“id”,timer
子对象主要是定时触发流程,需要写明触发时间“date” 或 巡查周期“cycle”。
- 触发器(initiator):JSON型,如
-
消息开始事件
的属性必须包括:
- 消息编号(id):字符串型,如
PDP4GCVADJKS00000258
,当该消息到来时,即触发流程。
- 消息编号(id):字符串型,如
-
定时开始事件
的属性必须包括:
- 执行时间(date):日期字符串型,如
2018-10-30 20:21:45
,当该时间到来即触发流程。 - 巡查周期(cycle):整数型,代表周期巡查的间隔时间,以秒为单位。
- 执行时间(date):日期字符串型,如
- 任务