郭曉云


摘要:設計了一種基于自定義腳本語言的高可定制柔性文書生成方案,對文書整體結構進行抽象切分,形成內容片段,通過腳本控制片段的生成與文書合成,實現文書與數據的結合、文書自動生成、文書格式配置化控制。
關鍵詞:文書生成;公文擬制;腳本語言;柔性生成;文本編輯器
中圖分類號: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/.
【通聯編輯:謝媛媛】