需求分析和概念原型——工业互联网云端管理系统
一.项目概述
本课题是关于工业物联网设备监控与管理系统服务端的设计与开发。该系统是一个集分级用户管理,设备情况监控,设备控制与数据转发于一体的多边平台。各级用户拥有不同权限,可以对所属的不同设备进行监控或操作。可以做到对设备情况进行远程诊断,远程重启等操作,减少维修人员到现场的次数,大大减少人力成本,方便设备管理。
二.用例分析
需求分析:
从需求中提取用例一般需要经过以下步骤:①从需求表述中找出用例;②描述用例的开始和结束的状态;③对用例按照子系统或者不同方面进行分类;④进一步逐一分析用例和参与者的交互过程。
本项目分为五级用户:
一级用户:设备生产商
二级用户:总代理商
三级用户:分销商
四级用户:某大集团管理员(比如中石油)
五级用户:某个分厂管理员,及其属下的值班员
(所谓“直系”的概念,是指对用户1而言,其他用户是直接由用户1创建,或者其他用户直接创建了用户1)
1.对于一级用户(设备生产商)来说,拥有最大权限,可以创建任意下级用户。其拥有的设备,一般有三种状态——未分配/已分配给直系下级用户/损坏。一级用户可以查看下级用户的同时,查看分配给下级用户的所有设备,还可以处理来自直系下级用户上报的问题设备。
2.对于二级用户(总代理商),是设备生产商与市场的中间人,用于帮助生产商销售设备。二级用户所拥有的设备有三种状态——未分配/已分配给直系下级用户/损坏。二级用户可以查看下级用户拥有哪些设备,可以向一级用户报告有问题设备,还可以处理直系下级用户上报的问题设备。
3.对于三级用户(分销商),从直系上级用户手中购买设备,可以出售给四级/五级用户。三级用户的设备有三种状态——未出售/已出售/损坏。三级用户可以查看直系下级用户以及下级用户拥有的设备,可以向直系上级用户报告有问题设备,还可以处理直系下级用户上报的问题设备。
4.对于四级用户(某大集团),从直系上级用户手中购买设备,并将设备分配给其属下的多个工厂使用。四级用户可以查看旗下每个工厂拥有哪些设备和设备的状态,可以处理五级用户上报的问题设备,可以向直系上级用户上报问题设备。
5.对于五级用户(某大集团旗下某工厂),从直系上级用户得到设备后,便可以添加设备并使用,并向直系上级报告有问题设备。同时,为了保证设备运行正常,可以创建值班员账号,让值班员实时监测设备状态。当值班员观察到设备状态异常时,会提醒五级用户,之后五级用户可以视情况重启或者关闭设备。另外,对于损坏的设备,值班员可以向五级用户上报。
以下为用例图
三.业务分析
根据前述的用例分析,可以发现,六种用户(包括值班员在内)可以分别看做一个类,设备可以看做一个类。
为了方便显示用户对设备可能进行的操作,特地将这些操作剥离出来,代码实现时,针对设备的操作,应包括在用户类中。
UML类图如下:
四.数据模型
通过以上的分析,可以得出以下几张主要数据表。
1.用户表
实际应用中,每一条用户链,所包含的用户层数可能未必一致。
而数据表中的6种用户角色,实际对应的是6种用户等级(可以把值班员等级看做6),
实际的用户链可能有以下几种:
1.设备生产商->代理商->分销商->大集团->工厂管理->值班员(1->2->3->4->5>6)
2.设备生产商->代理商->分销商->工厂管理->值班员(1->2->4->5->6)
3.设备生产商->大集团->工厂管理->值班员(1->4->5->6)
4.设备生产商->工厂管理->值班员(1->5->6)
字段名 | 类型 | 备注 |
---|---|---|
id | int | 数据表id,唯一,主键 |
username | varchar | 用户登录名 |
password | varchar | 用户登录密码 |
type | tinyint | 用户类型 |
nickname | varchar | 用户资料名称 |
address | varchar | 用户所在地址 |
create_time | timestamp | 用户创建时间 |
login_time | timestamp | 用户登录时间 |
parent_id | int | 创建该用户的上级用户的id |
.......... | ........ | .............. |
2.执行器表
由于设备在实际使用前,会经过多级用户的手中,因此需要增加相应字段
字段名 | 类型 | 备注 |
---|---|---|
id | int | 数据表id |
device_label | varchar | 设备自身标识 |
nickname | varchar | 设备名称,五级用户添加 |
discription | varchar | 对执行器特性的描述 |
add_time | timestamp | 生产商添加设备的时间 |
status | tinyint | 未分配/异常/已分配/在使用 |
ownbyUser2 | bit | 是否分配给了二级用户 |
user2_id | int | 二级用户的id |
ownbyUser3 | bit | 是否分配给了三级用户 |
user3_id | int | 三级用户的id |
ownbyUser4 | bit | 是否分配给了四级用户 |
user4_id | int | 四级用户的id |
ownbyUser5 | bit | 是否分配给了五级用户 |
user5_id | int | 五级用户idw |
switch_id | int | 执行器连接的网关的id |
link_port | int | 执行器连接的网关的端口 |
3.网关表
字段名 | 类型 | 备注 |
---|---|---|
id | int | 数据表id |
device_label | varchar | 设备自身标识 |
add_time | timestamp | 生产商添加设备的时间 |
mac_addr | txt | 网关自身的mac地址 |
status | tinyint | 未分配/异常/已分配/在使用 |
ownbyUser2 | bit | 是否分配给了二级用户 |
user2_id | int | 二级用户的id |
ownbyUser3 | bit | 是否分配给了三级用户 |
user3_id | int | 三级用户的id |
ownbyUser4 | bit | 是否分配给了四级用户 |
user4_id | int | 四级用户的id |
ownbyUser5 | bit | 是否分配给了五级用户 |
user5_id | int | 五级用户id |
4.执行器数据表
与执行器绑定的传感器,会将不同类型的执行器状态参数打包,从网关传到云端服务器,云端服务器可以存储执行器状态参数包,也可以通过解析数据包,向五级用户或者值班员展示设备状态。
字段名 | 类型 | 备注 |
---|---|---|
id | int | 数据表id |
data | text | 传感器发送的数据 |
device_id | int | 执行器的id |
add_time | timestamp | 数据发送时间 |
五.概念原型
概念原型作为一种虚拟的,理想化的软件产品形式,可以通过用例+数据模型的方式得出概念原型。
该项目的概念原型中,有多级的用户参与,操作对象为设备,设备包括执行器和网关,因此需要有对应的数据模型类,包括用户类,设备类,状态数据类。
工作流程:
一般而言,设备在一级四级用户之间,更多的只是分配,真正使用设备(网关+执行器)的是五级用户。对于一级四级用户,对于设备的操作更多是查看自身所有的设备,自己创建的下级用户,以及下级用户所拥有的设备的情况。五级用户如果打算将设备投入使用,会选择某些设备,给设备添加必要工作信息,并连接云端服务器。云端服务器会在设备首次连接时检验其身份是否合法,之后合法设备可以通过绑定在其上的传感器,向云端发送有关设备状态的数据,云端会保存数据。如果五级用户或者值班员想要查看某台设备的运行状态,云端会解析数据,展示在前台页面。如果云端检测到设备状态异常,会向值班员发送异常状态提醒,值班员可以将异常情况向五级用户上报,五级用户可以通过前台页面向设备下发命令,使其停止、重启或执行其他操作。