一种基于脚本的文书柔性生成技术
2021-03-24郭晓云
郭晓云
摘要:设计了一种基于自定义脚本语言的高可定制柔性文书生成方案,对文书整体结构进行抽象切分,形成内容片段,通过脚本控制片段的生成与文书合成,实现文书与数据的结合、文书自动生成、文书格式配置化控制。
关键词:文书生成;公文拟制;脚本语言;柔性生成;文本编辑器
中圖分类号:TP391.1 文献标识码:A
文章编号:1009-3044(2021)02-0190-02
1 背景
文书生成是信息系统的常见功能,场景应用广泛,业务系统的各类报告、办公系统的各类文书等很多都是由应用系统直接生成的,生成的格式一般是Word格式,也有PDF格式。传统的文书生成方案一般使用模板实现,即预先将要生成的文书制作成模板,然后再在程序中通过Word的书签功能、域功能等方式,定位并替换相应内容生成文书。也有部分软件采用报表组件实现,通过报表组件提供的方法进行内容设置和文书生成。这些方法虽然能满足信息系统的一般需求,但存在硬编码的缺点,即文书的格式形式完全依靠模板和程序代码,一旦需要修改文书格式和内容,如果模板修改无法满足,就必须修改代码,灵活性不够,无法满足用户更加柔性化的定制需求。比如自定义文书形式,实现文书内容格式的配置化更新等。
2 文书柔性生成需求分析
以办公系统的典型应用公文拟制为例,要满足用户快速拟制公文的要求,并为用户提供尽可能多的自由度,实现文书高度柔性生成,需满足以下要求:
1)应为用户提供尽量多的参阅信息,可方便快捷地利用一些范文、模板、资料,根据用户选择自动抽取其中的片段;
2)应可实现公文的快速排版,可自动填充公文中的一些要素,如文种、文号等,让用户将精力放在文书内容拟制上,提高公文的处理速度;
3)应可实现公文内容与数据的结合,提供与公文相关业务数据的自动汇总功能,可根据业务数据自动生成文书内容并插入到文档中,避免用户手工查找和填写,实现公文拟制过程与业务系统的融合,提高公文拟制的效率和质量。如直接从业务系统中获取本部门的财务收支数据,并生成文本内容插入到公文中,形成财务报告等;
4)应可实现公文生成的配置化控制,可通过修改配置脚本的方式来控制文书的格式、形式、内容等,无须修改程序,避免硬编码问题。
3 文书柔性生成的实现流程
要实现这些需求,首先必须对公文进行高度抽象化,提取公文的结构特征和处理方式。按照公文的一般格式,我们可将一份公文分解为文头、文体、文尾三部分,根据三部分的特征分别进行处理。
公文的文头、文尾一般是固定格式,内容基本不变,除了文种、编号、承办人等要素需要填充外,其他部分一般都是固定不变的。因此,可将文头文尾设置成固定模板,公文要素内容则根据公文的类型自动填充或是由用户自行选择,系统自动填充。按照常用公文种类系统可设计多套文头文尾的组合模板,如通知、通告、请示等,用户在拟制公文时,只需根据公文种类选择文种模板,系统可自动生成文头文尾,并可根据用户身份等信息自动填充文种、日期、责任人等要素。
文体部分是公文的主体部分,也是文书生成的主要目标。为了获得文体内容的高度柔性定制能力,可将文体部分抽象分解成若干文书片段的组合,每个文书片段是一段带格式的文本,通过这些文本片段的组合构成公文文体部分。根据文书片段内容是否与数据关联,文书片段可分为静态和动态两种。静态文书片段是指一些带格式的内容相对固定的文本片段,比如从业务资料、参考范文、文书模板中抽取的片段,一些公文的固定用法段落等。用户可通过系统提供的辅助编辑工具查找这些资料并选择需要的段落,这些段落将转化为静态文书片段,嵌入到公文中。动态文书片段则是指内容与业务数据相关联,可以动态变化的文本片段,比如一段包含单位人员总数的文本,人员总数内容根据业务系统的数据在文书生成过程中动态生成,从而实现与公文与业务系统数据的融合。
通过文头、文体、文尾的抽象和静态动态文本片段的组合可实现公文的柔性定制功能,文书柔性生成流程如图1所示。
4 文书柔性生成的技术实现
文书柔性生成的实现主要依赖两项技术,一是基于XML的文书快速拟制技术,二是嵌入式的数据指令脚本[1]。文书快速拟制技术将文书片段表示为XML格式的代码块,通过代码块的组合形成文档内容。嵌入式的数据指令脚本则是嵌入到XML中的特殊指令脚本片段,类似于JSP页面中嵌入的可执行指令块,脚本解析引擎可动态解析执行这些特殊指令,根据指令连接后台数据库获取数据,写入XML中,实现动态片段的数据关联查询功能。此外,在B/S应用中,文书在线编辑通常使用富文本编辑器实现,因此柔性生成功能应该嵌入到富文本编辑器中,需设计一个集成的在线快速文书拟制环境,提供参考资料查阅、动态数据连接等功能,让用户能快速组合各种文书片段,形成文书的最终脚本,并动态解析生成最终文书。
4.1 基于XML的文书快速拟制技术
XML是一种表现力非常强的语言,通过与Schema结合可以表示复杂的结构和语法。为了实现文书的柔性生成,可参考Office的Open XML 格式[2],定义类似的文书内容表述语言,将文书内容及格式以XML格式存储。文头、文尾是固定的,可预先使用Word设计好,然后通过保存为XML的方式形成文头文尾模板,其他的静态文本片段也可以用类似方式实现。各类文书、模板、范文等,都可将其转存为XML格式并保存到资料库中,通过文档检索和在线剪辑等方式,用户在拟制文书时可随时抽取资料库中的文书片段,再做少量的编辑调整即可。
Office的Open XML格式是微软从office 2007开始推出的基于XML的文件格式,在Office 2007之前的office 文件格式是一种二进制格式,兼容性差,且一旦损坏很难恢复,因此微软推出了Open XML格式,以XML格式表示office的word、excel等文档,并申请为国际标准(ISO/IEC 29500)[3]。Open XML的格式较复杂,文书片段的表示主要使用Open XML一些常用标签,如
采用Open XML标准,以XML格式表示文头、文尾、文书片段,形成对应的XML代码块。在快速拟制时,根据用户的选择和编辑,再将这些XML代码组合,增加XML文件头,就可以形成一篇完整文书。
文头、文尾中的文种、承办人等信息,有些可在用戶新建文书时,根据用户的选择自动填写在文头文尾的XML代码中,有些则可通过编辑器由用户自行输入。
为了提高用户编辑效率,可将一些格式标签设置为样式,通过编辑器的样式功能快速设置相应段落的格式。
4.2 嵌入式数据脚本语言
嵌入式数据脚本语言是系统自定义的类脚本语言,它是实现动态文书片段的技术基础。嵌入式脚本定义了一套标签体系,可嵌入在HTML代码中,脚本引擎会对这些脚本代码进行解析和执行,生成最终的文本片段。为了实现更加灵活的功能,脚本语言除了简单的脚本支持简单的取值外,还支持一定的语法规则,包括变量声明、变量赋值、逻辑判断、循环控制、算术运算、字符运算、数据库查询等。脚本引擎包括语法解析器和解释器,支持参数绑定和参数赋值,可在运行时动态解析和执行这些脚本,生成包含文本内容的自定义标签的XML代码块,这些代码块再通过XSLT样式表[4]转换为Open XML格式的文本块,形成动态文本片段,供用户拟制文书时使用。数据脚本的实现流程如图2所示。
以下为一段动态文本脚本片段示例,其中
4.3 与富文本编辑器的融合
5 结束语
本文介绍了一种柔性文书生成方案,通过将公文抽象为若干文书片段的组合,并提供基于自定义脚本的动态片段功能,实现了公文的高度可定制性,并可实现公文与数据内容的动态结合,为OA、ERP等对公文要求较高的信息系统提供了一种灵活的文书处理解决方案。
参考文献:
[1] 梁铭辉.脚本语言及其应用[J].通讯世界,2016(16):121-122.
[2] 陈卓.基于OpenXML的Web表单引擎模型[J].数字技术与应用,2015(4):98-99.
[3] ISO/IEC 29500-1:2016,Information technology—Document description and processing languages—Office Open XML File Formats[S].
[4] W3C.XSLT Namespace[EB/OL].(1999-03-28)[2020-05-29].www.w3.org/1999/XSL/Transform.
[5] Summernote team.summernote[EB/OL].[2020-05-29].https://summernote.org/.
【通联编辑:谢媛媛】