onlyoffice连接器 二次开发 合同等制式模板化技术开发方案【三】

一、期望效果

        目前曹瑞版本onlyoffice已经实现:书签模式 和 控件模式,用以支持该方案。

【图1】字段绑定
【图2】模板发起
【图3】接入表单

思路讲解:

        业务系统开发中通常希望能够通过绑定form字段给word,从而达到双向同步效果,在产品和实际体验层面就会比传统的表单好很多。

        1、线下\线上制作好基础文件备用。

        2、开发字段绑定相关的业务功能或者说业务系统,这个部分是与onlyoffice无关的独立部件,但是本身逻辑也不简单。后面会着重讲。

        3、开发模板绑定业务功能或者说业务系统,这里与【2】并不冲突,模板化技术并不是只有字段绑定。后面会着重讲。

        4、对于模板设置固定数据,然后为word绑定form字段。

        5、业务系统验证功能,如【图3】。

二、字段绑定系统

        字段绑定有两种方式:

                书签模式:书签模式在线Demo

                控件模式:控件模式在线Demo

        这里着重讲书签模式。参考【图1】中,一般通过选中一段文字确定绑定字段的位置,也就是:word中选中文字->右侧【添加字段按钮】->设置字段配置。

        字段本身有很多配置功能可以搞,比如:amount字段就是金额大小写,字符串字段、人员选择器、部门选择器、字典、其他等等,这里实现起来不容易,但是在模板化技术中必不可少。

        这里需要关注:字段与绑定关系是一对多【图4】,比如说:【合同金额】这个字段在word文件中要出现很多次,并且每个地方的显示会不一样,有地方【小写】有地方【大写】,所以对于书签与字段关系通常采用以下设计:

bookmark1 -> amount

bookmark2 -> amount

【图4】

        

三、模板管理功能

        这里和【字段绑定】是要拆开讲的,【字段绑定】只是模板管理中的一块。在实际业务中我们发现,为了实现【图3】中的效果,实际上应该有:静态form+动态form两个部分组成,单一的靠某一个是行不通的。

        静态form用于处理无需绑定的数据,比如:合同分类,备注、record本身的关联信息、附件等等各种与当前业务表强关联的信息、字段等等,这部分数据哪怕是做成动态form,本身的意义并不大,而且会导致系统出问题的概率几何级别的上升。比如:【图5】。

        动态form用于处理比如合同文件中通用化较高的数据,比如:合同名称、甲方/乙方信息、金额、时间、条款等等常规数据,类似这样的字段对于经常使用业务系统的人来说,就有很大的价值做双向绑定了。

【图5】

四、通用模板数据中间转发层设计思路

        对于业务数据通常是有自己的增删查改接口的,对于比如:合同保存,从业务设计上可以由前端老师决定,是否需要调用特定的业务接口。也可以在模板管理功能中做出类似:save/update的转发层功能,表单数据提交、删除等动作全部由模板层转发,提高前端后端的通用性。

        这个模板层转发思路只作为启发,是否需要你可以自己多思考。各有各的好处。

五、关于作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/493021.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

word实现两栏格式公式居中,编号右对齐

1、确定分栏的宽度 选定一段文字 点击分栏:如本文的宽度为22.08字符 2、将公式设置为 两端对齐,首行无缩进。 将光标放在 公式前面 点击 格式-->段落-->制表位 在“制表位位置”输入-->11.04字符(22.08/211.04字符)&…

37. Three.js案例-绘制部分球体

37. Three.js案例-绘制部分球体 实现效果 知识点 WebGLRenderer WebGLRenderer 是Three.js中的一个渲染器类,用于将3D场景渲染到网页上。 构造器 WebGLRenderer( parameters : Object ) 参数类型描述parametersObject渲染器的配置参数,可选。 常用…

笔记本电脑需要一直插着电源吗?电脑一直充电的利弊介绍

笔记本电脑属于常用电子设备,它的便携性和功能性给我们带来了很多便利。但是,我们在使用笔记本电脑的时候,是否应该一直插着电源呢?这个问题可能困扰了很多人,因为不同的使用方式可能会对笔记本电脑的性能和寿命产生不…

深入理解延迟队列:原理、实现与应用

深入理解延迟队列:原理、实现与应用 1. 什么是延迟队列 延迟队列(Delayed Queue)是一种特殊的队列,它的特点是队列中的元素需要在指定的时间后才能被消费者获取和处理。与普通的先进先出(FIFO)队列不同&a…

内容与资讯API优质清单

作为开发者,拥有一套API合集是必不可少的。这个开发者必备的API合集汇集了各种实用的API资源,为你的开发工作提供了强大的支持!无论你是在构建网站、开发应用还是进行数据分析,这个合集都能满足你的需求。你可以通过这些免费API获…

jQuery总结(思维导图+二维表+问题)

关于什么是jQuery:(下面是菜鸟里的介绍) jQuery 是一个 JavaScript 库。 jQuery 极大地简化了 JavaScript 编程。 jQuery 很容易学习。 而jQuery对我的感受就是,链式运用的很形象,隐式迭代还有一些兼容性强的优点&…

python数据分析:介绍pandas库的数据类型Series和DataFrame

安装pandas pip install pandas -i https://mirrors.aliyun.com/pypi/simple/ 使用pandas 直接导入即可 import pandas as pd pandas的数据结构 pandas提供了两种主要的数据结构:Series 和 DataFrame,类似于python提供list列表,dict字典,…

安装opnet14.5遇到的问题

安装opnet遇到的问题 我是按照这个教程来安装的。 然后遇到了两个问题&#xff1a; 1、“mod_dirs”目录问题 Can’t enable ETS scripting support due to missing files。 This is likely because:<opnet_release_dir>\sys\lib is notinclude in the “mod_dirs” pre…

SLAAC如何工作?

SLAAC如何工作&#xff1f; IPv6无状态地址自动配置(SLAAC)-常见问题 - 苍然满关中 - 博客园 https://support.huawei.com/enterprise/zh/doc/EDOC1100323788?sectionj00shttps://www.zhihu.com/question/6691553243/answer/57023796400 主机在启动或接口UP后&#xff0c;发…

6.3.1 MR实战:计算总分与平均分

在本次实战中&#xff0c;我们的目标是利用Apache Hadoop的MapReduce框架来处理和分析学生成绩数据。具体来说&#xff0c;我们将计算一个包含五名学生五门科目成绩的数据集的总分和平均分。这个过程包括在云主机上准备数据&#xff0c;将成绩数据存储为文本文件&#xff0c;并…

空天地遥感数据识别与计算--数据分析如何助力农林牧渔、城市发展、地质灾害监测等行业革新

在科技飞速发展的时代&#xff0c;遥感数据的精准分析已经成为推动各行业智能决策的关键工具。从无人机监测农田到卫星数据支持气候研究&#xff0c;空天地遥感数据正以前所未有的方式为科研和商业带来深刻变革。然而&#xff0c;对于许多专业人士而言&#xff0c;如何高效地处…

基于langchain的Agent(实现实时查询天气)

心血来潮&#xff0c;玩一下Agent&#xff0c;实现了多轮对话功能 import requests, jsonfrom langchain.agents import load_tools from langchain.agents import initialize_agent from langchain_community.llms.tongyi import Tongyi from langchain.memory import Conver…

《剑网三》遇到找不到d3dx9_42.dll的问题要怎么解决?缺失d3dx9_42.dll是什么原因?

《剑网三》游戏运行中d3dx9_42.dll缺失问题深度解析与解决方案 在畅游《剑网三》的武侠世界时&#xff0c;不少玩家可能会遇到系统提示“找不到d3dx9_42.dll”的报错信息。这一突如其来的问题不仅让游戏进程受阻&#xff0c;还可能让玩家陷入困惑与无奈。我将为大家深入剖析这…

springboot443旅游管理系统(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统旅游管理系统信息管理难度大&#xff0c;容错率低&#…

OneCode:开启高效编程新时代——企业定制出码手册

一、概述 OneCode 的 DSM&#xff08;领域特定建模&#xff09;出码模块是一个强大的工具&#xff0c;它支持多种建模方式&#xff0c;并具有强大的模型转换与集成能力&#xff0c;能够提升开发效率和代码质量&#xff0c;同时方便团队协作与知识传承&#xff0c;还具备方便的仿…

OpenCV(python)从入门到精通——运算操作

加法减法操作 import cv2 as cv import numpy as npx np.uint8([250]) y np.uint8([10])x_1 np.uint8([10]) y_1 np.uint8([20])# 加法,相加最大只能为255 print(cv.add(x,y))# 减法&#xff0c;相互减最小值只能为0 print(cv.subtract(x_1,y_1))图像加法 import cv2 as…

git 删除鉴权缓存及账号信息

在Windows系统下 清除凭证管理器中的Git凭据 按下Win R键&#xff0c;打开“运行”对话框&#xff0c;输入control&#xff0c;然后回车&#xff0c;打开控制面板。在控制面板中找到“用户账户”&#xff0c;然后点击“凭据管理器”。在凭据管理器中&#xff0c;找到“Windows…

【Linux进程】进程间的通信

目录 1. 进程间通信 1.1 进程间通信的目的 2. 管道 2.1 什么是管道 2.2. 匿名管道 匿名管道的特性 管道的4种情况 联系shell中的管道 2.3. 命名管道 代码级建立命名管道 2.4. 小结 总结 1. 进程间通信 进程间通信&#xff08;Inter-Process Communication&#xff0c;IPC&…

leecode494.目标和

这道题目第一眼感觉就不像是动态规划&#xff0c;可以看出来是回溯问题&#xff0c;但是暴力回溯超时&#xff0c;想要用动态规划得进行一点数学转换 class Solution { public:int findTargetSumWays(vector<int>& nums, int target) {int nnums.size(),bagWeight0,s…

会话守护进程

会话&&守护进程 文章目录 会话&&守护进程1.会话1.概念和特性2.创建会话3.getsid和setsid函数getsid函数setsid 函数 4.代码 2.守护进程3.创建守护进程模型守护进程创建步骤&#xff1a;两个函数 完整代码&#xff1a; 1.会话 1.概念和特性 进程组&#xff0c…