文/華修文
上海報(bào)業(yè)集團(tuán)成立于2013年10月28日,由解放日?qǐng)?bào)報(bào)業(yè)集團(tuán)和文匯新民聯(lián)合報(bào)業(yè)集團(tuán)整合重組而成。旗下?lián)碛薪夥湃請(qǐng)?bào)、文匯報(bào)、新民晚報(bào)等20多家報(bào)刊雜志、出版社。
解放日?qǐng)?bào)、文匯報(bào)、新民晚報(bào)三大報(bào)的重要新聞稿源大都由新華社供稿,因此上報(bào)集團(tuán)的采編系統(tǒng)與新華社衛(wèi)星供稿系統(tǒng)連接,通過采編分稿系統(tǒng),稿件自動(dòng)分類并導(dǎo)入采編系統(tǒng)庫,最后提供給記者編輯使用。
因?yàn)榄h(huán)境、網(wǎng)絡(luò)、設(shè)備、系統(tǒng)等不確定因素,所以為確保采編系統(tǒng)的供稿正常,技術(shù)處人員需要定時(shí)對(duì)采編分稿系統(tǒng)進(jìn)行檢查,原先檢查分稿系統(tǒng)的方式是人工檢查,技術(shù)人員每隔一小時(shí)對(duì)新華社接收稿件數(shù)和分稿總數(shù)進(jìn)行記錄并對(duì)比,這樣的檢查方式造成了很多問題。首先是檢查的時(shí)效性不高,往往要過很久才能發(fā)現(xiàn)漏稿,從而一定程度影響了出報(bào)的進(jìn)度,二是判斷漏稿困難,需要人工檢索,逐一對(duì)比后才能找出漏稿,造成工作效率低。
本文所闡述的上海報(bào)業(yè)集團(tuán)采編分稿監(jiān)控系統(tǒng)解決方案針對(duì)上訴問題,旨在通過明確的業(yè)務(wù)分工,并在保證采編系統(tǒng)內(nèi)核保密性的前提下,從而解決及時(shí)發(fā)現(xiàn)采編分發(fā)系統(tǒng)的漏稿,并對(duì)漏稿情況進(jìn)行提醒報(bào)警等問題。
上海報(bào)業(yè)集團(tuán)采編分稿監(jiān)控系統(tǒng)解決方案,即實(shí)時(shí)自動(dòng)監(jiān)控采編分稿系統(tǒng)的分類和入庫,對(duì)出現(xiàn)漏稿情況進(jìn)行提醒報(bào)警的工作。這樣做有以下幾個(gè)好處:
定時(shí)自動(dòng)檢查:采編分稿監(jiān)控系統(tǒng)會(huì)每隔15分鐘自動(dòng)檢查稿件的分發(fā)和入庫情況,無需人工操作,大大提高了檢查工作的效率。
漏稿提醒功能:在及時(shí)發(fā)現(xiàn)漏稿或者未分開稿件后,加以記錄,并自動(dòng)觸發(fā)頁面提醒和短信推送提醒,極大地提高了技術(shù)人員處理問題的工作效率。
業(yè)務(wù)保密:上海報(bào)業(yè)集團(tuán)的開發(fā)團(tuán)隊(duì)對(duì)集團(tuán)工作系統(tǒng)的業(yè)務(wù)邏輯非常清楚,整個(gè)業(yè)務(wù)系統(tǒng)的調(diào)研也不需要外包公司參與,從而減少了系統(tǒng)在開發(fā)時(shí)的調(diào)研時(shí)間。保證采編系統(tǒng)內(nèi)核保密性。
系統(tǒng)在功能結(jié)構(gòu)上采用的是模塊化結(jié)構(gòu),就是把整個(gè)監(jiān)控系統(tǒng)按功能劃分成幾個(gè)功能模塊,這種模塊結(jié)構(gòu)的特點(diǎn)是功能明確、操作方便簡(jiǎn)單、易于系統(tǒng)今后的功能擴(kuò)展,讓整個(gè)監(jiān)控系統(tǒng)具有可擴(kuò)展性。這樣既能滿足現(xiàn)有的監(jiān)控和報(bào)警的需求,又能適應(yīng)今后新的的監(jiān)控需求,可不斷完善升級(jí)。
b/s和c/s相結(jié)合后臺(tái)數(shù)據(jù)庫管理系統(tǒng)采用Sql Server2008,Web服務(wù)器操作系統(tǒng)采用Windows 2008 Server,Web服務(wù)器管理軟件采用運(yùn)行于Win2008上的IIS,開發(fā)工具采用Visual Studio2008,開發(fā)語言采用.Net和等。
整個(gè)系統(tǒng)由稿件的統(tǒng)計(jì)信息、報(bào)警提醒、日志記錄等構(gòu)成,以求達(dá)到監(jiān)控的及時(shí)性、準(zhǔn)確性。稿件統(tǒng)計(jì)信息主要統(tǒng)計(jì)接收到稿件數(shù)、分稿稿件數(shù)、接收到圖片數(shù)、分稿圖片數(shù)等,報(bào)警提醒主要以頁面提醒、聲音提醒、短信提醒等方式來體現(xiàn);日志記錄主要記錄未接收到文件的時(shí)間、未分發(fā)部分稿件的時(shí)間、未分稿明細(xì)等。如圖1所示。
圖1 系統(tǒng)模塊結(jié)構(gòu)圖
2.2.1 新華社稿件的接收和分稿
新華社稿件是通過衛(wèi)星進(jìn)行發(fā)送和接收的,然后將接收信息通過解碼器進(jìn)行解碼,再將解碼后的稿件寫入稿件接收服務(wù)器的共享文件夾中。每隔15分鐘采編服務(wù)器就會(huì)訪問共享目錄,讀取新的稿件,并根據(jù)稿件的屬性進(jìn)行分類,同時(shí)對(duì)分類好的稿件進(jìn)行分發(fā)處理,最后提供給用戶使用。如圖2所示
圖2 新華社稿件接收和分稿
2.2.2 主要功能簡(jiǎn)介
根據(jù)圖3,對(duì)系統(tǒng)的幾個(gè)主要的功能做一個(gè)簡(jiǎn)單的介紹。
2.2.2.1 稿件信息統(tǒng)計(jì)
稿件信息統(tǒng)計(jì)功能主要是由信息記錄、信息發(fā)布和定時(shí)檢查來實(shí)現(xiàn)的(見圖3)。
圖3 分稿系統(tǒng)主要功能
(1)信息記錄
信息記錄的工作流程如圖4所示,首先監(jiān)控系統(tǒng)會(huì)先遍歷錄入對(duì)比庫,提取上次輪詢后標(biāo)記為未分類的文件記錄,并在采編的分發(fā)數(shù)據(jù)庫中查找該文件的分發(fā)記錄,比對(duì)分發(fā)的類型集和分發(fā)記錄,看看分發(fā)類型集中的元素是不是和分發(fā)記錄相匹配。如果都已匹配則將比對(duì)庫中的記錄設(shè)置成已分類。如果沒有找到記錄或者找到的記錄與類型集中的元素不匹配,則將未匹配的元素作為屬性,未分類作為結(jié)果一起插入到比對(duì)庫。
隨后開始遍歷新華社稿件的共享目錄進(jìn)行遍歷,查找文件。根據(jù)最后一篇文件的接受時(shí)間判斷是不是在上次遍歷后新產(chǎn)生的文件。如果不是則跳過。如果是新文件,則打開這個(gè)的文件索引,尋找需要分發(fā)的類型集。以文件名為依據(jù),類型集為屬性,錄入到比對(duì)庫。
如果這個(gè)文件是文本文件的話,則在完成以上操作后,繼續(xù)查看下個(gè)文件。如果是圖片文件,則還要比對(duì)圖片文件是否已經(jīng)下載完成。
圖4 信息記錄
(2)信息發(fā)布
信息發(fā)布就是在網(wǎng)頁上顯示記錄下來的數(shù)據(jù)信息,如圖5所示,主要是用WebLogShowService、WebPhotoService、WebTextService來 調(diào) 取 數(shù) 據(jù), 用WebLogShow、WebPhotoClass、WebTextClass來存放調(diào)取后的數(shù)據(jù),隨后用ViewControl來整合并顯示數(shù)據(jù)、用Default將整合的數(shù)據(jù)顯示在網(wǎng)面上。
圖5 信息發(fā)布
(3)定時(shí)輪詢
圖6 定時(shí)輪詢
定時(shí)輪詢就是通過循環(huán)程序,定時(shí)啟動(dòng)遍歷程序,如圖6所示。定時(shí)輪詢是由matchtest、matchWenHui、matchXinMin三個(gè)循環(huán)程序組成,首先是由matchtest來調(diào)用matchWenHui和matchXinMin這兩個(gè)子程序,進(jìn)而再個(gè)子分別調(diào)用Check()進(jìn)行遍歷,檢查分類情況。
2.2.2.2 報(bào)警提醒
報(bào)警提醒主要由網(wǎng)頁報(bào)警、聲音報(bào)警、報(bào)警消息推送三部分組成,從視覺、聽覺等多方面提醒運(yùn)維人員處理報(bào)警信息。
(1)網(wǎng)頁報(bào)警
網(wǎng)頁報(bào)警就是當(dāng)有未分類和未匹配的情況發(fā)生時(shí),系統(tǒng)就會(huì)調(diào)用程序中的Color()函數(shù)。并將“最后接收文件時(shí)間”和“最后分稿時(shí)間”的底色從綠色改變成紅色。這樣醒目的設(shè)置,能夠讓技術(shù)人員更加及時(shí)有效的發(fā)現(xiàn)采編系統(tǒng)漏稿和未分發(fā)的情況。
(2)聲音報(bào)警
聲音報(bào)警基于頁面報(bào)警,當(dāng)頁面報(bào)警觸發(fā)時(shí),系統(tǒng)就會(huì)調(diào)用程序的Sound()函數(shù),進(jìn)而播放數(shù)據(jù)庫中的Sound.mp3文件。這樣的設(shè)置能讓技術(shù)人員在不方便查看監(jiān)控頁面的情況下,通過聲音的形式獲得監(jiān)控系統(tǒng)的報(bào)警提示,大大提高了技術(shù)人員的工作效率。
(3) 報(bào)警消息推送
報(bào)警消息推送主要以手機(jī)短信為主,報(bào)警消息推送主要以發(fā)現(xiàn)漏稿提醒的具體時(shí)間、漏稿內(nèi)容說明的推送為主要目的,以求達(dá)到信息的實(shí)時(shí)性、準(zhǔn)確性、有效性。
SendMessage在MessageService中以獨(dú)立線程的模式進(jìn)行工作;不過在所有的Service.Server進(jìn)程中,都會(huì)運(yùn)用統(tǒng)一的一套配置信息。而不同類型的Message信息則會(huì)以Adapter模式進(jìn)行擴(kuò)充。ServiceServer的Adapter將以配置方式動(dòng)態(tài)加載。
2.2.2.3 日志記錄
日志記錄主要記錄未接收到文件的時(shí)間、未分發(fā)部分稿件的時(shí)間、未分稿明細(xì)等。在出現(xiàn)未分稿的情況下,不需要再進(jìn)行人工檢索,逐一對(duì)比后才找出漏稿,系統(tǒng)能夠根據(jù)采編分稿規(guī)則,自動(dòng)找出漏稿,并記錄和顯示在日志系統(tǒng)中,極大的提高了技術(shù)人員的工作效率。
2.3 系統(tǒng)接口
對(duì)于集團(tuán)開發(fā)人員,提供了所有業(yè)務(wù)操作的接口,以便于展示調(diào)用。具體列表如下。
ReturnRecord 記錄返回自定義類FolderClass 遍歷基類PhotoFolderClass 圖片稿件遍歷時(shí)所指的自定義類,繼承了FolderClass TravelDataBase 數(shù)據(jù)庫中未分稿圖片稿件記錄遍歷函數(shù)TravelDirectory 遍歷所有日期文件夾的寫日期,確定新接收文件的寫入時(shí)間CheckPhotoDirectory 遍歷新接收文件的文件夾 ,根據(jù)文件類型和寫入時(shí)間判斷是否是所需要分稿的文字稿件Material 匹配實(shí)體基礎(chǔ)類FoundFile 根據(jù)文件路徑查找該文件的最后寫入時(shí)間FoundTitle 由全路徑訪問XML文件,返回的string未替換單引號(hào)OneToTwo 個(gè)位數(shù)前加零PhotoClass 圖片稿件實(shí)例CheckPhoto 檢查該稿件是否已經(jīng)分稿,并入庫InsertOrUpdateSQL 根據(jù)自定義類的實(shí)例,提交數(shù)據(jù)庫FoundRecord 根據(jù)參數(shù)查找記錄,若失敗且文件創(chuàng)建時(shí)間在23點(diǎn)后則需要根據(jù)標(biāo)題進(jìn)行擴(kuò)大范圍的查詢LoadObjectByPhotoName 根據(jù)文件名,在cache中查找是否有同名稿件AddCache 在cache中添加新的PhotoClass實(shí)例GetPhotoName 根據(jù)文件名提取數(shù)據(jù)庫中的稿件名TypeTransition 分類匹配實(shí)例PhotoQuestion 圖片稿件實(shí)體SQL函數(shù)自定義類ExecuteInsertSQL 根據(jù)PhotoClass實(shí)例向數(shù)據(jù)庫提交插入請(qǐng)求,并在日志表中記錄ExecuteUpdateSQL 根據(jù)PhotoClass實(shí)例向數(shù)據(jù)庫提交修改請(qǐng)求,并在日志表中記錄GetUnMatch 查找為完成分稿的圖片稿件記錄列表
PhotoLib 包含分稿系統(tǒng)所用數(shù)據(jù)庫的連接及其中各種關(guān)于圖片稿件sql函數(shù)的自定義類GetProduceDate 以稿件名為依據(jù),從分稿系統(tǒng)所用數(shù)據(jù)庫中取得分稿時(shí)間TextLib 包含分稿系統(tǒng)所用數(shù)據(jù)庫的連接及其中各種關(guān)于文字稿件sql函數(shù)的自定義類GetProduceDate 以稿件名為依據(jù),從分稿系統(tǒng)所用數(shù)據(jù)庫中取得分稿時(shí)間LastTime 記錄上次訪問的最后訪問時(shí)間和系統(tǒng)最后接收到的文件的寫入時(shí)間ExecuteLastTime 刪除3天前訪問時(shí)間的記錄GetLastTime 從數(shù)據(jù)庫中取得上次遍歷時(shí)間GetLastWriteTime 返回上次遍歷時(shí),最后傳送的文件的寫入時(shí)間SetLastTime 設(shè)置本次遍歷地執(zhí)行時(shí)間NoteLog 自定義的日志記錄類WriteLog 日志記錄函數(shù)GetSystemID 取得系統(tǒng)編號(hào),都以17位為準(zhǔn),年月日時(shí)分秒加3位自增漲編號(hào)ExecuteNoteLogDeleteSQL 刪除3天前已分稿記錄的函數(shù)SQLClass 數(shù)據(jù)庫連接自定義類GetKeyWord 依靠關(guān)鍵字查找參數(shù)CheckProgram 執(zhí)行檢查WriteFile 創(chuàng)建日志文件
......
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,伴隨著環(huán)境、網(wǎng)絡(luò)、設(shè)備、系統(tǒng)等不確定因素的增多,技術(shù)人員如何確保采編系統(tǒng)的供稿正常,如何及時(shí)有效地對(duì)采編分稿系統(tǒng)進(jìn)行檢查和處理,已成為工作中的重中之重。
上海報(bào)業(yè)集團(tuán)的“集團(tuán)采編分稿監(jiān)控系統(tǒng)解決方案”,在這些問題上做了有效的嘗試和突破,成功解決了實(shí)時(shí)監(jiān)控采編分稿系統(tǒng)的問題,同時(shí)滿足了采編系統(tǒng)保密性、監(jiān)控系統(tǒng)的安全性、開發(fā)成本低等方面的要求。集團(tuán)分稿監(jiān)控系統(tǒng)的建成為今后技術(shù)人員對(duì)于采編分稿的監(jiān)控提供了一個(gè)很好的工具,極大地提高維護(hù)人員的工作效率和處理相應(yīng)問題的時(shí)效性。
上海報(bào)業(yè)集團(tuán)的“集團(tuán)采編分稿監(jiān)控系統(tǒng)解決方案”的解決方法雖然實(shí)時(shí)監(jiān)控采編分稿系統(tǒng)的問題,但是還需要技術(shù)人員處理相關(guān)的問題。在今后的項(xiàng)目中,我們還會(huì)繼續(xù)研究,讓監(jiān)控系統(tǒng)能夠根據(jù)識(shí)別出來的報(bào)警提示,根據(jù)事先設(shè)定好的處理預(yù)案,自動(dòng)解決相應(yīng)問題,從而實(shí)現(xiàn)發(fā)現(xiàn)與解決問題的自動(dòng)化。