# 文档通在线编辑技术说明文档

# 1.背景及综述

中标慧康文档通服务是一款去控件化、支持多人在线编辑的流式文档编辑器(支持标准格式的docx、xlsx、pptx) 本文档致力与阐述文档通服务接入OA的部分前端逻辑和全部后端逻辑,以及配置相关的常见问题。

# 2.文档通接入(前端)

注:本文档默认文档通服务以安装并按要求配置并启动。

# 2.1接入api.js

前端引入文档通api.js,并初始化nsoOffice前端组件, 在本期实现,其由wdtAdapter.js 静态加载实现 1725860824588.png

# 2.2 构建打开参数,维护nsoOffice对象

# 2.2.1 获取当前文档downloadUrl和callbackUrl

1725860900429.png

# 2.2.2 获取dockey

1725860928862.png

# 2.2.3 拼接params

1725860968554.png

# 2.3 获取token

请求地址:/rest/wdt_online/v1/get_jwt 
请求方式:POST
请求参数:@param params {payload : String}

请求接口获取文档通参数token, 并打开文档 1725861042576.png

# 3.文档通接入(后端)

# 3.1 token 生产

通过统一的加解密方式,生产token, 用于于文档通鉴权和后续的权限校验。token需要一个双方确定的密钥,在流版签配置中心后台配置。并在文档通服务配置。 1725861086279.png

同时需要确保与文档通服务配置保持一致。后台代码位置

com.seeyon.ctp.common.office.config.util.WdtJwtUtil

1725861159825.png

# 3.2 后台回调

文档通用于在文档变化、保存后会通过 前面的callbackUrl设置主动请求OA服务器以获取信息或者落地文档通服务器上的文件。 1725861183689.png

# 3.3 保存回调和dockey机制

由于文档通使用dockey作为文档的唯一标识,但同时这个dockey在触发了一个文档所有用户离开编辑界面一段时间后,会触发一个离线保存回调请求到OA服务器,此时需要OA服务器落地文件,并为当前文档生成一个新的dockey。旧的dockey将丢弃从用户打开该文档到触发离线保存期间的所有内容。 而对于OA而言,文档的唯一标识为ctp_file的主键fileId。为了配合文档通离线保存的机制,故本次对接中,dockey由fileId + "_" + update_date 拼接而成。

  1. 文档通在线文档在编辑过程中触发Ctrl+S 时,会主动触发保存回调到OA服务器,这个时候OA服务器应该从回调的请求中获取文档下载流下载并落地文件。
  2. OA可以通过nsoOffice对象通过saveFile2前端js方法强制文档通服务器触发保存回调请求。
  3. 当所有用户退出文档并一段时间后没有任何用户再打开该文档时,文档通将发起离线保存回调,并在回调请求返回后,更新该文档版本(如下图)

1725861312129.png

版本更新后,或者在版本更新期间重新对某fileId文件进行打开时,应该需要通过文档通提供的command请求的keystatus子请求去获取当前文档的保存情况,避免dockey更新不及时的问题。

1725861353233.png

# 4.文档通配置及检查清单

# 4.1 检查系统管理级菜单

在系统管理员后台管理界面-系统设置-流版签系统设置-在线编辑-文档通在线编辑中的三个配置(如图示) 1725861385676.png 检查三个配置:

  1. 文档通在线编辑服务器地址:文档通服务器的ip+port。保证配置正确无误,保证端口已放开。
  2. 文档通在线编辑密钥:保证与文档通部署时文档通服务配置的密钥完全一致。
  3. 文档通在线编辑回调地址:既OA的真实地址,保证端口放开。

# 4.2 检查网络连通性

检查完上述配置完全正确后,需要验证网络的连通。

  1. 保证文档通服务器能够ping通OA服务器,且端口放开
  2. 保证OA服务器能够ping通文档通服务器,且端口放开
  3. 保证用户OA客户端所在的网段,能够ping通OA/文档通服务器,且端口放开。 1725861484200.png
编撰人:liangyd、het