一、期望效果
目前曹瑞版本onlyoffice已经实现:书签模式 和 控件模式,用以支持该方案。
思路讲解:
业务系统开发中通常希望能够通过绑定form字段给word,从而达到双向同步效果,在产品和实际体验层面就会比传统的表单好很多。
1、线下\线上制作好基础文件备用。
2、开发字段绑定相关的业务功能或者说业务系统,这个部分是与onlyoffice无关的独立部件,但是本身逻辑也不简单。后面会着重讲。
3、开发模板绑定业务功能或者说业务系统,这里与【2】并不冲突,模板化技术并不是只有字段绑定。后面会着重讲。
4、对于模板设置固定数据,然后为word绑定form字段。
5、业务系统验证功能,如【图3】。
二、字段绑定系统
字段绑定有两种方式:
书签模式:书签模式在线Demo
控件模式:控件模式在线Demo
这里着重讲书签模式。参考【图1】中,一般通过选中一段文字确定绑定字段的位置,也就是:word中选中文字->右侧【添加字段按钮】->设置字段配置。
字段本身有很多配置功能可以搞,比如:amount字段就是金额大小写,字符串字段、人员选择器、部门选择器、字典、其他等等,这里实现起来不容易,但是在模板化技术中必不可少。
这里需要关注:字段与绑定关系是一对多【图4】,比如说:【合同金额】这个字段在word文件中要出现很多次,并且每个地方的显示会不一样,有地方【小写】有地方【大写】,所以对于书签与字段关系通常采用以下设计:
bookmark1 -> amount
bookmark2 -> amount
三、模板管理功能
这里和【字段绑定】是要拆开讲的,【字段绑定】只是模板管理中的一块。在实际业务中我们发现,为了实现【图3】中的效果,实际上应该有:静态form+动态form两个部分组成,单一的靠某一个是行不通的。
静态form用于处理无需绑定的数据,比如:合同分类,备注、record本身的关联信息、附件等等各种与当前业务表强关联的信息、字段等等,这部分数据哪怕是做成动态form,本身的意义并不大,而且会导致系统出问题的概率几何级别的上升。比如:【图5】。
动态form用于处理比如合同文件中通用化较高的数据,比如:合同名称、甲方/乙方信息、金额、时间、条款等等常规数据,类似这样的字段对于经常使用业务系统的人来说,就有很大的价值做双向绑定了。
四、通用模板数据中间转发层设计思路
对于业务数据通常是有自己的增删查改接口的,对于比如:合同保存,从业务设计上可以由前端老师决定,是否需要调用特定的业务接口。也可以在模板管理功能中做出类似:save/update的转发层功能,表单数据提交、删除等动作全部由模板层转发,提高前端后端的通用性。
这个模板层转发思路只作为启发,是否需要你可以自己多思考。各有各的好处。