[]
        
首页
开发者学堂
文档
论坛
市场
生态机会
活动
在线咨询 立即试用
(Showing Draft Content)

基于数据管理器的协作模式

基于数据管理器的协作模式,明确了由 SpreadJS 数据管理器所管理的表格状态如何参与实时协作。

数据管理器是前端数据建模与数据传输层,用于实现以下功能:

  • 定义数据表

  • 配置数据源

  • 建立数据表之间的关联关系

  • 定义数据视图

  • 统筹本地及远程数据相关操作

数据管理器负责管理结构化的表格状态,并不直接提供用户交互功能。

目前,仅集算表支持基于数据管理器的协作功能。

协作适用范围

协作功能仅同步满足以下条件的状态数据:

  • 可在数据管理器运行环境中持久化存储

  • 支持序列化处理

  • 能够在不同客户端间确定性复现


    交由外部系统管控的状态数据,不会进行协作同步。

可同步状态内容

1. 表格结构与配置信息

以下表格层级状态支持同步:

  • 数据表定义信息

  • 列定义及元数据

  • 视图定义

  • 数据表关联关系

  • 层级结构配置

  • 表格参数与布局配置

  • 可序列化的数据源配置

    针对上述各类结构状态做出的所有修改,均可参与实时协作同步。

2. 数据集状态(仅本地数据)

仅当表格采用data配置项、使用基于JSON的内存本地数据时,数据集的变更操作才会进行协作同步。


支持的数据格式:

  • data(JSON对象格式)

在此使用模式下,以下数据集变更操作可参与协作同步:

  • 记录字段数值修改

  • 数据记录新增与删除

  • 数据表列结构调整

  • 数据层级结构改动

  • 行固定与取消固定状态变更

该模式下,数据集状态完全由数据管理器统一管控,且会纳入协作快照之中。

不可同步内容

以下使用场景下,数据集相关变更不会参与协作同步:

基于网址的远程数据源

启用dataSourceOption.remote并搭配网址传输配置(包含开启autoSync: true)时:

  • 支持表格编辑操作

  • 数据管理器会将数据变更推送至后端远程服务

  • 协作系统不会同步数据集的各类变更

    数据一致性交由后端服务自行维护,具备序列化能力的配置类状态依旧正常同步。

基于函数处理器的远程数据源

使用如下函数类数据处理器时:

GC.Data.RemoteReadHandler
GC.Data.RemoteChangeHandler
  • 相关配置无法完成序列化

  • 对应表格无法参与实时协作

CSV/XML格式数据

通过CSV、XML格式初始化数据集内容时:

  • 表格配置类状态可正常同步

  • 数据集的数据变更操作不予同步

特殊使用规则

无在线状态感知

该协作模式不支持在线状态标识功能,例如选区状态、光标位置等信息均无法同步展示。

撤销操作机制

已实现同步的状态数据,支持本地撤销操作。

为保障数据一致性,客户端接收到远端发起的操作后,会清空本地撤销操作记录栈。

分片存储机制

对于体量较大的数据集状态,可采用分片形式分开存储,以此缩减协作快照的文件体积。