1. 基本概念
1.1 客户端
- Document manager 文档管理器,比如网盘
- Document editor 文档编辑器,文档编辑的页面,包含了所有用户编辑文档的特性,如一个iframe页面,主要用于用户与文档编辑服务交互
1.2 服务器端
- Document storage service 文档存储服务,主要用于文档的存储 和 给Document manager(文档管理器)提供文档id、和文档url
- Document editing service 文档编辑服务,用于完成文档的预览和编辑,给 Document editor (文档编辑器)提供接口(都是nodejs的接口)
- Document command service 文档命令服务,可以用Document editing service(文档编辑服务)完成额外的命令(具体是什么命令?)
- Document conversion service 文档转换服务,用于将文档转换成合适的 Office Open XML (OOXML, OpenXML)格式,docx,xlsx,pptx
1.3 Documentserver包含的服务
- document editor
- document editing service
- document command service
- document conversion service
2. 打开文件流程
- 用户在浏览器中使用document manager打开文档,用于预览或者编辑
- 通过javascrpit api将document storage service 中的docId(文档id)和docUrl(文档url) 发送给 document editor
- document editor用docId和docUrl生成一个打开文件的请求,发送给document editing service
- document editing service从document storage service下载文档,同时将文档转换成OOXML格式,用于document editor更好的展现文档
- document editing service将文档发送给基于浏览器的document editor
- document editor 展现文档用于预览或编辑
3. 保存文档流程
- 用户在document editor中对文档进行编辑
- document editor 将文档的变更发送给document editing service
- 用户关闭 document editor
- document editing service监视文档的工作结束,并将从document editor 发送的变更收集到一个文件中
- document editing service调用callbackUrl 来通知 document storage service文档已编辑完成,并且访问编辑后的文档的url
- document storage service从document editing service下载最新的文档并存储
4.协同编辑
- 用户1和用户2 在document editor中打开同一个文档
- 用户1修改文档
- document editor将用户1的修改发送给document editing service
- document editing service将用户1的修改发送给用户2
- 用户2现在可以看到用户1的修改了
5.转化和下载文件
- 用户上传一个本地文件到 document manager
- document manager 上传文件到 document storage service
- document storage service 将文件发送给 document conversion service 利用 conversion API 将文件转换成OOXML
- document conversion service将文件转成OOXML格式
- document storage service 下载转换之后的文件