虚拟实验室化学交互框架

交互现状和重构目标

日期 修改人 修改内容
2021年5月31日 王伟超 初稿

架构现状与问题

由于历史原因,旧底层交互模块(以下简称SR交互)已经变得难以维护和扩展,且上层组件和应用都直接依赖于它,导致SR交互难以被替代,主要表现如下:

  • 通用组件对SR库深度依赖(甚至新功能只能基于它的事件框架去实现)
  • 有一些实验交互的业务被写入SR库中(无极旋转、无极拖动)
  • SR框架是一个很“重”的事件回调框架,文档缺失,学习成本较大
  • SR交互(AC接口)也被Lua环境使用

重构前的架构分层图

架构重构目标

为了便于解决以上的问题,需要对交互进行重构和架构分层,以期望达到:SR库不再那么“不可替代”,旧功能可以改得动,新功能可以加的上。
具体的重构的目标拆解如下:

  • 当断则断:不直接依赖SR库
  • 不偷懒:SR库提供的交互功能,脱离SR框架,提取为实验组件。如对象点击、子部件滑动、绕轴旋转
  • 历史遗留问题解决:直接写到SR库的实验逻辑,抽离为实验组件,如双手握。
  • 精简业务接口:只按需抽象接口,实验交互业务不再依赖非业务所需的功能

重构后的架构分层图

新架构图如下,其中新增1层交互业务层,包括基础外设属性,基础交互。这2个组件只包含与交互关联的业务抽象(接口),不包含具体的实现,具体的实现由第三方组件通过适配层进行适配实验。以达到对SR交互解耦的目的。

PS:架构在重构中会进行调整,此图会持续更新

架构分层详细设计

重构进展情况

基于工程院当前制度,无法独立的进行重构计划(没有专门的重构单据),只能根据业务单据需求,逐步、根据需要地进行重构。优先满足功能单据。
目前的重构进展如下:

已完成 未开始/未完成
基础(对象)交互 基础(外设)交互
已有实验交互(20+)对接基础交互 基础外设属性
(旧)SR交互适配基础交互 SR外设2.0适配基础外设(替换外设2.0需要)
(新)VR手势交互适配基础交互 SR交互功能的提取
重构后缺失的功能组件化
提供新的AC替代接口
Lua端去除对SR的AC接口使用
应用层去除对SR的依赖