器材交互详细设计

更新记录

版本 日期 修改人 修改内容
1.0.0 2020年6月12日 蔺浪(510525) 新建文档

1 原型

1.1 地址

[ND12820_3]颗粒关联资源缓存&颗粒是否可打开查询优化

1.2 需求分析

[ND12820_3]颗粒关联资源缓存&颗粒是否可打开查询优化-需求分析

2 关键技术方案

2.1 依赖资源提取

  • 实验组件/器材/药品的依赖资源信息,记录在其资源包中的“Meta.json”文件中,从该文件获取依赖资源信息;
  • 实验颗粒的依赖资源信息,记录在其资源包中的“main.ndlab”文件中,从该文件获取依赖资源信息。

2.2 依赖资源记录

  • 实验组件/器材/药品,缓存中的资源文件本身就具有缓存意义,其依赖资源已经记录在“Meta.json”文件中,无需额外进行缓存记录;
  • 实验颗粒获取其依赖的资源信息时,需要对实验颗粒资源进行解压和解析,属耗时操作;在实验资源缓存目录中创建数据库文件,以数据表来记录解析过的实验颗粒的依赖资源信息。

2.3 依赖资源查询

  • 实验组件/器材/药品依赖资源查询,直接获取meta数据中记录的依赖资源信息返回;
  • 实验颗粒依赖资源查询,从缓存数据库查询该颗粒是否存在依赖资源信息记录;没有记录则解压并解析实验颗粒文件,提取依赖资源信息,并记录到缓存数据库中。

2.4 依赖资源检测

  • 查询其依赖资源信息,在资源缓存目录中遍历检测对应的资源(组件/器材/药品/资源)文件是否存在,并递归检测依赖资源的依赖资源。

3 组件图/时序图

3.1 组件图

依赖资源相关组件图

3.2 时序图

依赖资源相关时序图

3.3 核心类图

依赖资源相关核心类图

4 数据库设计

4.1 数据库文件

  • 资源中心初始化时,(如果数据库文件不存在)在资源缓存目录下创建数据库文件rescache.db,用以记录解压解析过的实验颗粒的依赖资源信息;获取实验颗粒的依赖资源信息时,一律优先从数据库数据表中查询,查询不到记录时,再进行颗粒解压解析。

4.2 数据表设计

4.2.1 颗粒依赖资源数据表

  • CourseDepTable
  • 用以记录解压解析过的实验颗粒的依赖资源信息

数据表结构

字段 类型 主键 外键 唯一 条件 非空 排序规则 默认
courseid string 主键 唯一 非空 Null
depresjson string Null

数据字段说明

字段 作用 数据源 备注
courseid 记录实验颗粒唯一ID 实验颗粒文件名_文件大小 因本地颗粒文件无统一规划ID,暂定此方案
depresjson 记录实验颗粒依赖的资源信息 从实验颗粒描述文件提取 为空则该实验颗粒不依赖其它资源

5 数据结构设计

5.1 依赖资源记录项

CourseDepResMeta

  • 内部
  • 实验颗粒依赖资源描述
  • 用于反序列化依赖资源信息为字符串存储到数据库(数据表CourseDepTable中depresjson字段内容)
属性/字段 类型 说明
ResCode string 资源编码
ResType string 资源类型

CourseDepRecordItem

  • 内部
  • 实验颗粒依赖资源记录项
  • 用于构造从数据库解析的颗粒依赖资源记录
属性/字段 类型 说明
CourseID string 颗粒ID
DepResJson string 依赖资源Json描述

5.2 依赖资源信息项

LabResource

  • 公开
  • 实验资源[器材/药品/组件]信息
  • 用于对外反馈实验颗粒依赖资源信息
属性/字段 类型 说明
ResType LabResourceType 实验资源类型
ResCode string 实验资源编码

LabResourceType

  • 公开
枚举 说明
Equip 器材/组件(实验颗粒中资源无法明确区分组件与器材)
Drug 药品

6 API接口设计

6.1 获取依赖资源接口

6.1.1 获取实验颗粒依赖资源

接口签名:

bool GetCourseDepRes(string courseFile, out List<LabResource> labResources)

接口说明:

  • 获取实验颗粒依赖资源(组件/器材/药品等)信息
  • 优先从缓存数据库查询实验颗粒依赖资源记录
  • 未查询到记录,则解压并解析颗粒,提取依赖资源信息并添加记录到数据库

参数说明:

参数名 类型 说明
courseFile string 实验颗粒文件路径
labResources out List<LabResource> 依赖资源信息(解析失败或者没有依赖资源信息,该值为空或者空列表)

LabResource:

属性 类型 说明
ResType LabResourceType 实验资源类型
ResCode string 实验资源编码

LabResourceType:

枚举值 说明
Equip 器材/组件(实验颗粒中记载的依赖资源无法区分组件与器材)
Drug 药品

返回值说明

类型 说明
bool 成功获取到实验颗粒依赖资源信息?

6.2 检测依赖资源接口

6.2.1 检测组件依赖资源

接口签名:

bool CheckCompDepResExists(string compCode)

接口说明:

  • 检查组件以及依赖资源(组件/器材/药品/语言包等)在缓存中是否存在?

参数说明:

参数名 类型 说明
compCode string 组件编码

返回值说明

类型 说明
bool 依赖资源在缓存中是否都存在?

6.2.2 检测器材依赖资源

接口签名:

bool CheckEquipDepResExists(string equipCode)

接口说明:

  • 检查器材以及依赖资源(组件/器材/药品/语言包等)在缓存中是否存在?

参数说明:

参数名 类型 说明
equipCode string 器材编码

返回值说明

类型 说明
bool 依赖资源在缓存中是否都存在?

6.2.3 检测药品依赖资源

接口签名:

bool CheckDrugDepResExists(string drugCode)

接口说明:

  • 检查药品以及依赖资源(组件/器材/药品/语言包等)在缓存中是否存在?

参数说明:

参数名 类型 说明
drugCode string 药品编码

返回值说明

类型 说明
bool 依赖资源在缓存中是否都存在?

6.2.4 检测实验颗粒依赖资源

接口签名:

bool CheckCourseDepResExists(string courseFile)

接口说明:

  • 检查实验颗粒以及依赖资源(组件/器材/药品/语言包等)在缓存中是否存在?

参数说明:

参数名 类型 说明
courseFile string 实验颗粒文件路径

返回值说明

类型 说明
bool 依赖资源在缓存中是否都存在?

@startuml
autonumber 10 10 “[000]”
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response

autonumber stop
Bob -> Alice : dummy

autonumber resume “Message 0 “
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response

autonumber stop
Bob -> Alice : dummy

autonumber resume 1 “Message 0 “
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
@enduml