国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

OA系統(tǒng)在線文檔編輯系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2023-11-24 05:10:56
關(guān)鍵詞:編輯器頁面文檔

吳 群

(常州機(jī)電職業(yè)技術(shù)學(xué)院通識(shí)教育部 江蘇常州 213164)

0 引言

隨著工作流引擎技術(shù)的不斷發(fā)展,基于工作流引擎的OA系統(tǒng)實(shí)現(xiàn)了業(yè)務(wù)流程走向的柔性擴(kuò)展與靈活調(diào)整,可配置的動(dòng)態(tài)表單滿足了用戶多變的需求。隨著應(yīng)用的深入,流程在流轉(zhuǎn)過程中除了結(jié)構(gòu)化內(nèi)容外,越來越多的非結(jié)構(gòu)化內(nèi)容也隨著業(yè)務(wù)的拓展被引用,經(jīng)常以文檔附件的形式附加在流程表單上[1]。用戶打開流程節(jié)點(diǎn)查看內(nèi)容時(shí),經(jīng)常需要下載附件使用相應(yīng)的文檔閱讀器才能打開內(nèi)容進(jìn)行查看和編輯,編輯完成后需要重新上傳附件進(jìn)行更新,由此對(duì)用戶造成一定的麻煩,甚至有些終端因沒有對(duì)應(yīng)的插件無法打開附件內(nèi)容。本文設(shè)計(jì)了將文檔附件通過文檔轉(zhuǎn)換服務(wù)統(tǒng)一轉(zhuǎn)換成Open Office XML格式,通過內(nèi)嵌Web在線編輯器讓用戶無需下載能直接在頁面中進(jìn)行瀏覽與編輯,完成編輯退出時(shí)實(shí)現(xiàn)文檔保存。

1 基本原理

本系統(tǒng)的目標(biāo)是用戶不需要安裝任何插件,任何電腦或手機(jī)都能通過標(biāo)準(zhǔn)瀏覽器實(shí)現(xiàn)文檔的在線編輯與瀏覽功能。首先構(gòu)建在線文檔編輯系統(tǒng),然后通過Java Script腳本引入文檔編輯器,通過文檔編輯器連接在線文檔編輯系統(tǒng),調(diào)用服務(wù)打開文檔,在瀏覽器中實(shí)現(xiàn)所有的編輯操作,還能控制用戶是否可以下載或打印,在線編輯結(jié)束后被編輯的文檔能自動(dòng)上傳到服務(wù)器端進(jìn)行保存[2],其本質(zhì)是調(diào)用Only Office平臺(tái)接口來實(shí)現(xiàn)在線文檔的編輯。Only Office平臺(tái)是一款開源軟件,集成了文檔、電子郵件、事件、任務(wù)和客戶關(guān)系管理工具的開源在線辦公套件[3],平臺(tái)能實(shí)時(shí)打開、編輯和協(xié)作處理DOC、DOCX、ODT、PPT、TXT、HTML等格式的文檔,具有豐富的文字處理功能,能按照設(shè)定的規(guī)則編輯文檔。

本文基于Only Office 平臺(tái)API接口與OA系統(tǒng)文檔接口進(jìn)行二次開發(fā),實(shí)現(xiàn)了文檔列表、文檔下載、文檔上傳、文檔編輯、保存文檔等處理邏輯,為OA系統(tǒng)實(shí)現(xiàn)對(duì)附件文檔的在線編輯功能[4]。

2 系統(tǒng)設(shè)計(jì)

2.1 服務(wù)調(diào)用流程

本系統(tǒng)封裝了Only Office平臺(tái)的功能,為其他系統(tǒng)提供API調(diào)用,當(dāng)OA系統(tǒng)的流程節(jié)點(diǎn)動(dòng)態(tài)加載頁面時(shí),分析頁面元素獲得需要編輯或?yàn)g覽的文檔訪問地址。節(jié)點(diǎn)顯示頁面引入Java Script腳本創(chuàng)建并加載文檔編輯器,同時(shí)將文檔訪問地址和穩(wěn)定的訪問權(quán)限傳遞給在線文檔編輯系統(tǒng),系統(tǒng)根據(jù)要編輯的文檔地址和用戶權(quán)限進(jìn)行文檔編輯器的參數(shù)配置,文檔編輯器根據(jù)設(shè)置參數(shù)請(qǐng)求下載文檔,同時(shí)根據(jù)參數(shù)控制文檔編輯器打開編輯顯示或只讀瀏覽模式。當(dāng)發(fā)現(xiàn)有多個(gè)文檔編輯器同時(shí)打開同一個(gè)文檔,且文檔在緩存區(qū)經(jīng)被修改還未關(guān)閉保存時(shí),Only Office平臺(tái)會(huì)通過Web Socket消息讓多個(gè)同時(shí)打開文檔編輯器中的內(nèi)容同步。當(dāng)處于編輯模式的文檔被文檔編輯器關(guān)閉時(shí),文檔編輯器會(huì)觸發(fā)調(diào)用在線文檔編輯系統(tǒng)的保存文檔接口,此時(shí)會(huì)根據(jù)文檔狀態(tài)下載保存最新的文檔并更新文件日志表。在線文檔編輯系統(tǒng)調(diào)用流程,如圖1所示。

2.2 主要業(yè)務(wù)表設(shè)計(jì)

用戶信息表和部門表與OA系統(tǒng)賬號(hào)進(jìn)行定時(shí)同步,上傳文件表記錄了每個(gè)用戶上傳的文件時(shí)間、編號(hào)、文件名、文件大小、文件類型、系統(tǒng)存放路徑及文件的MD5校驗(yàn)值,通過一對(duì)多的方式關(guān)聯(lián)文件日志表,文件日志表的日志ID是主鍵值,每次文件被修改后保存都記錄在該日志表中。在記錄文件日志表的同時(shí)會(huì)在文件對(duì)應(yīng)的路徑下,系統(tǒng)會(huì)以file_id-log_id保存多份文件多版本的修改稿,生成文檔修改過程。文件緩存表跟蹤當(dāng)前Only Office平臺(tái)上正在編輯或?yàn)g覽的文件,在多個(gè)用戶同時(shí)打開同一文件時(shí),通過傳遞同一個(gè)file_key值實(shí)現(xiàn)多人協(xié)同編輯或?yàn)g覽文檔最新變化。在線文檔編輯系統(tǒng)主要業(yè)務(wù)表如圖2所示。

圖2 在線文檔編輯系統(tǒng)主要業(yè)務(wù)表

3 系統(tǒng)實(shí)現(xiàn)

3.1 在線文檔編輯系統(tǒng)服務(wù)實(shí)現(xiàn)

在線文檔編輯系統(tǒng)主要由后端數(shù)據(jù)訪問實(shí)體層、業(yè)務(wù)邏輯控制層及前端被OA系統(tǒng)引用的頁面顯示層三部分組成。數(shù)據(jù)訪問層類通過MybatisPlus工具生成數(shù)據(jù)庫訪問實(shí)體類及相應(yīng)的服務(wù)接口,FileUpload類對(duì)應(yīng)上傳文件表file_info。字段ID為主鍵,字段upload_date為日期型,在數(shù)據(jù)轉(zhuǎn)換為JSON時(shí)以“yyyy-mm-dd”格式輸出。

業(yè)務(wù)邏輯控制層由多個(gè)工具類及Control控制器類實(shí)現(xiàn),文件控制器類實(shí)現(xiàn)了文檔的上傳、文檔列表、文檔下載、文檔顯示或編輯、編輯文檔保存回調(diào)與文檔編輯狀態(tài)查詢等接口邏輯。

文檔上傳(Upload),采用POST模式上傳文件,服務(wù)控制器收到文件后,首先判斷上傳文件名及后綴名,將文件存放到指定的目錄中,根據(jù)請(qǐng)求信息構(gòu)建FileUpload對(duì)象(文件名、存放路徑、上傳時(shí)間等信息),根據(jù)上傳的文件內(nèi)容計(jì)算文件的MD5碼值,同時(shí)將FileUpload對(duì)象寫入數(shù)據(jù)庫file_info表中,最后返回上傳成功消息。

文檔列表(/Filelist),采用GET模式請(qǐng)求file_info數(shù)據(jù)表中的信息。該接口返回JSON格式的上傳文件列表。

文檔下載(/Download),采用GET模式請(qǐng)求下載指定文檔內(nèi)容。下載文檔時(shí)根據(jù)文件唯一ID號(hào)得到文件名稱及存儲(chǔ)文件的實(shí)際路徑,打開文件時(shí),將文件寫入流,設(shè)置響應(yīng)頭,告知瀏覽器以附件的形式下載和文件大小,以application/octet-stream類型輸出數(shù)據(jù)。

文檔保存回調(diào)(Callback),該接口支持GET和POST兩種模式,接口接收Only Office回調(diào)時(shí)Json Object格式的請(qǐng)求參數(shù),參數(shù)中包含的文檔狀態(tài)共有文檔開始編輯、文檔準(zhǔn)備保存、文檔保存錯(cuò)誤、文檔被關(guān)閉、文檔保存錯(cuò)誤等7種。本接口讀取文檔狀態(tài),當(dāng)文檔狀態(tài)值為文檔準(zhǔn)備保存狀態(tài)(其值為2)時(shí),分析請(qǐng)求參數(shù)中當(dāng)前被保存文檔的下載地址,接口根據(jù)該下載地址完成文件下載,并將下載的文件放到指定的位置,同時(shí)更新文件日志表。

文檔編輯(/Edit),采用GET模式請(qǐng)求編輯文檔??刂破鞲鶕?jù)文件ID號(hào)和用戶ID號(hào)查詢文檔基礎(chǔ)配置,獲取文檔唯一標(biāo)識(shí)、文檔名稱、文檔類型、文檔下載地址、打開文件的權(quán)限等數(shù)據(jù),根據(jù)文件屬性,生成本次編輯文檔的Key值,并將文件信息及Key值記錄到文件緩存表中,同時(shí)將所有參數(shù)傳送到前端顯示頁面。

前端顯示層由Only Office平臺(tái)的JS腳本配合文件控制器顯示或編輯文檔接口配合Thymeleaf標(biāo)簽動(dòng)態(tài)生成參數(shù),實(shí)現(xiàn)對(duì)前端文檔編輯器內(nèi)容及界面進(jìn)行控制。

前端頁面代碼中,通過[[${xxx}]]形式獲取文檔編輯接口中文檔的相關(guān)屬性數(shù)據(jù),由此控制前端文檔編輯窗口的顯示樣式及模式,參數(shù)中Type類型分三種:桌面型、嵌入型和移動(dòng)型,分別用于不同的設(shè)備顯示與編輯。Document屬性中Filetype用于標(biāo)識(shí)編輯文件的類型,主要有WORD文檔、PPT等,Key是該文檔在Open Office平臺(tái)中的唯一標(biāo)識(shí),當(dāng)多用戶協(xié)作時(shí),使用相同的標(biāo)識(shí)。Title表示當(dāng)前編輯的文檔標(biāo)題,URL地址是在線文檔編輯器讀取被編輯文檔的下載地址,當(dāng)指定Key值文檔被首次打開時(shí),Only Office平臺(tái)中還沒有緩存該文檔,平臺(tái)通過URL下載文檔,然后通過轉(zhuǎn)換服務(wù)將文檔轉(zhuǎn)換成Open Office XML格式,顯示在前端文檔編輯器中。當(dāng)其他人員或再次打開相同Key值的文檔時(shí),只要該文檔還在Only Office平臺(tái)緩存中且沒有被關(guān)閉,則平臺(tái)將不會(huì)通過URL再次下載文檔,且所有同時(shí)打開的多人可同步顯示文檔的變化。Permission控制文檔是否能被編輯、下載及打印。EditConfig是對(duì)在線編輯器的配置,其中Callbackurl地址是Only Office平臺(tái)在文檔需要保存時(shí)的回調(diào)接口。參數(shù)中還有控制文檔使用的語言、顯示比例、是否進(jìn)行文檔內(nèi)容語法檢查及是否打開審計(jì)模式等,通過標(biāo)簽動(dòng)態(tài)生成的文檔參數(shù)。

3.2 Only Office平臺(tái)搭建

Only Office安裝有兩種方式:一種采用腳本或源代碼編譯進(jìn)行安裝(下載地址:http://download.onlyoffice.com/install/install.sh);另一種使用Docker鏡像安裝,這是比較方便和官方推薦的安裝方法,首先必須在當(dāng)前操作系統(tǒng)上安裝Docker容器服務(wù),然后才能使用Docker鏡像來安裝。采用Docker鏡像安裝可以自動(dòng)配置Only Office的所有依賴項(xiàng),從而減少安裝和配置的復(fù)雜度。具體安裝方法:①查詢Docker鏡像:docker search onlyoffice;②拉取Docker鏡像:sudo docker pull onlyoffice/documentserver;③查看Docker鏡像:docker images;④創(chuàng)建并啟動(dòng)Only Office平臺(tái)容器:sudo docker run-i-t-d-p 8080:80 onlyoffice/documentserver,通過訪問http://localhost:8080,說明Only Office平臺(tái)搭建成功。

3.3 前端嵌入文檔編輯器

使用Java script腳本可以將Only Office文檔/電子表格/演示文檔編輯器集成到自己的網(wǎng)頁中,并能配置和管理文檔編輯器。

在網(wǎng)頁中使用div占位符標(biāo)簽:

可以通過config對(duì)象實(shí)現(xiàn)對(duì)文檔編輯器進(jìn)行配置:

var docEditor = new DocsAPI.DocEditor( "placeholder ", config);

config = {

"document" : {

"fileType" : "docx" ,

"key" : "Khirz6zTPdfd7" ,

"title" : "示例文檔標(biāo)題.docx" ,

"url" : "https://abc.com/example-document.docx"

}, "documentType" : "word" ,

"editorConfig" : {

"callbackUrl" : "https://abc.com/callback.ashx"

}

泛微OA Ecology平臺(tái)是一個(gè)基于工作流引擎的在線業(yè)務(wù)管理平臺(tái),具有配置靈活、開發(fā)代碼及成本低等特性,其缺點(diǎn)是對(duì)接的插件及第三方平臺(tái)是商業(yè)廠家,對(duì)開源產(chǎn)品的對(duì)接,官方?jīng)]有任何支持,本系統(tǒng)開發(fā)是對(duì)泛微OA平臺(tái)進(jìn)行分析后,通過嵌入頁面的方式實(shí)現(xiàn)前端對(duì)接,后端通過OA接口API對(duì)接用戶信息、文檔權(quán)限及表單內(nèi)容的讀取,讓OA用戶不安裝任何插件的情況下實(shí)現(xiàn)在線文檔的顯示與編輯,在線文件編輯如圖3所示。

圖3 在線編輯文檔

本系統(tǒng)采用Java語言開發(fā),主要實(shí)現(xiàn)了文件上傳、文件下載、文件列表查詢、文件保存及文檔編輯瀏覽等功能,系統(tǒng)連接了Only Office平臺(tái)與OA系統(tǒng),為OA系統(tǒng)提供文檔管理與編輯服務(wù),同時(shí)調(diào)用Only Office文檔在線編輯服務(wù)為用戶提供在線編輯預(yù)覽功能。

4 結(jié)束語

本文基于Only Office平臺(tái),采用Java Spring Boot框架,構(gòu)建了在線文檔編輯系統(tǒng),系統(tǒng)對(duì)接基于工作流引擎的OA辦公關(guān)聯(lián)系統(tǒng),實(shí)現(xiàn)用戶權(quán)限控制、文檔在線編輯與預(yù)覽、文檔多版本切換及多用戶協(xié)作編寫同一文檔,有效提高工作效率、節(jié)約辦公成本。本系統(tǒng)的OA流程辦公平臺(tái)為上海泛微公司的Ecology產(chǎn)品,目前官方對(duì)接均為WPS、永中等商業(yè)在線文檔編輯平臺(tái),本文基于開源技術(shù)設(shè)計(jì)開發(fā)的在線文檔編輯系統(tǒng)對(duì)接Ecology產(chǎn)品有著積極的參考意義。

猜你喜歡
編輯器頁面文檔
刷新生活的頁面
有人一聲不吭向你扔了個(gè)文檔
你距離微信創(chuàng)作達(dá)人還有多遠(yuǎn)?
車輛段收發(fā)車運(yùn)行圖編輯器的設(shè)計(jì)與實(shí)現(xiàn)
基于RI碼計(jì)算的Word復(fù)制文檔鑒別
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
基于VLIW目標(biāo)機(jī)的ELF二進(jìn)制編輯器設(shè)計(jì)與實(shí)現(xiàn)
不讓他人隨意下載Google文檔
電腦迷(2012年4期)2012-04-29 06:12:13
同一Word文檔 縱橫頁面并存
銀河編輯器,艷壓“星際2”?
铁力市| 广水市| 尼木县| 永仁县| 赤壁市| 积石山| 小金县| 方山县| 大田县| 长沙市| 连平县| 宁强县| 静海县| 白山市| 平乡县| 汾西县| 新建县| 宾阳县| 嘉祥县| 武义县| 呼玛县| 昌吉市| 建水县| 孟津县| 清河县| 金乡县| 柳河县| 绵阳市| 新干县| 安国市| 偃师市| 平利县| 大丰市| 郁南县| 清徐县| 延津县| 红河县| 千阳县| 江口县| 甘孜| 赫章县|