[]
基于数据管理器的协作模式,明确了由 SpreadJS 数据管理器所管理的表格状态如何参与实时协作。
数据管理器是前端数据建模与数据传输层,用于实现以下功能:
定义数据表
配置数据源
建立数据表之间的关联关系
定义数据视图
统筹本地及远程数据相关操作
数据管理器负责管理结构化的表格状态,并不直接提供用户交互功能。
目前,仅集算表支持基于数据管理器的协作功能。
协作功能仅同步满足以下条件的状态数据:
可在数据管理器运行环境中持久化存储
支持序列化处理
能够在不同客户端间确定性复现
交由外部系统管控的状态数据,不会进行协作同步。
以下表格层级状态支持同步:
数据表定义信息
列定义及元数据
视图定义
数据表关联关系
层级结构配置
表格参数与布局配置
可序列化的数据源配置
针对上述各类结构状态做出的所有修改,均可参与实时协作同步。
仅当表格采用data配置项、使用基于JSON的内存本地数据时,数据集的变更操作才会进行协作同步。
支持的数据格式:
data(JSON对象格式)
在此使用模式下,以下数据集变更操作可参与协作同步:
记录字段数值修改
数据记录新增与删除
数据表列结构调整
数据层级结构改动
行固定与取消固定状态变更
该模式下,数据集状态完全由数据管理器统一管控,且会纳入协作快照之中。
以下使用场景下,数据集相关变更不会参与协作同步:
启用dataSourceOption.remote并搭配网址传输配置(包含开启autoSync: true)时:
支持表格编辑操作
数据管理器会将数据变更推送至后端远程服务
协作系统不会同步数据集的各类变更
数据一致性交由后端服务自行维护,具备序列化能力的配置类状态依旧正常同步。
使用如下函数类数据处理器时:
GC.Data.RemoteReadHandler
GC.Data.RemoteChangeHandler相关配置无法完成序列化
对应表格无法参与实时协作
通过CSV、XML格式初始化数据集内容时:
表格配置类状态可正常同步
数据集的数据变更操作不予同步
该协作模式不支持在线状态标识功能,例如选区状态、光标位置等信息均无法同步展示。
已实现同步的状态数据,支持本地撤销操作。
为保障数据一致性,客户端接收到远端发起的操作后,会清空本地撤销操作记录栈。
对于体量较大的数据集状态,可采用分片形式分开存储,以此缩减协作快照的文件体积。