劉曉東,孫陸楠,劉亞偉,關(guān)朋,戎錫鋒
(天津電氣科學(xué)研究院有限公司,天津 300180)
實(shí)驗(yàn)室信息管理系統(tǒng)(laboratory information management system,LIMS),是以實(shí)驗(yàn)室為中心,應(yīng)用局域網(wǎng),將信息技術(shù)與實(shí)驗(yàn)室管理理念相結(jié)合,對(duì)檢測(cè)數(shù)據(jù)和相關(guān)信息進(jìn)行收集、分析、報(bào)告和管理的系統(tǒng)[1-2]。LIMS在國(guó)外發(fā)達(dá)國(guó)家已經(jīng)得到廣泛應(yīng)用,而國(guó)內(nèi)實(shí)驗(yàn)室引入LIMS的時(shí)間較短[3]。據(jù)中國(guó)產(chǎn)業(yè)信息網(wǎng)發(fā)布的數(shù)據(jù)統(tǒng)計(jì),截至2018年我國(guó)國(guó)內(nèi)有檢測(cè)機(jī)構(gòu)3 947家且呈遞增趨勢(shì)[4]。LIMS的應(yīng)用也呈發(fā)展趨勢(shì),由于國(guó)內(nèi)第三方檢測(cè)實(shí)驗(yàn)室信息化建設(shè)初期主要關(guān)注業(yè)務(wù)、流程、財(cái)務(wù)等經(jīng)營(yíng)層面的問(wèn)題,而對(duì)于實(shí)驗(yàn)室任務(wù)計(jì)劃運(yùn)行、進(jìn)度的控制、流程變更等問(wèn)題關(guān)注的不夠。當(dāng)LIMS系統(tǒng)上線(xiàn)后,經(jīng)調(diào)研發(fā)現(xiàn)一些不足,一是,實(shí)驗(yàn)任務(wù)計(jì)劃需要人工來(lái)排程;二是,當(dāng)試驗(yàn)流程發(fā)生變更時(shí),需要修改后臺(tái)程序,操作費(fèi)時(shí)費(fèi)力。因此,開(kāi)發(fā)了排程系統(tǒng)和流程設(shè)計(jì)器。
排程系統(tǒng)一般用于高校排課[5]、生產(chǎn)車(chē)間排程[6],排程系統(tǒng)的設(shè)計(jì)將排程思想與實(shí)驗(yàn)室試驗(yàn)任務(wù)管理相結(jié)合,旨在合理安排試驗(yàn)任務(wù),保證試驗(yàn)進(jìn)度,提升效率。流程設(shè)計(jì)器針對(duì)LIMS流程經(jīng)常變動(dòng)而設(shè)計(jì),通過(guò)流程設(shè)計(jì)器,用戶(hù)可自己定義、編輯、發(fā)布流程,減少系統(tǒng)的運(yùn)維成本。
1)J2EE技術(shù)框架。Java2平臺(tái)企業(yè)版(java 2 platform enterprise edition,J2EE),是由SUN公司領(lǐng)導(dǎo)、多廠家共同制定并得到廣泛認(rèn)可的工業(yè)標(biāo)準(zhǔn),目前已經(jīng)成為使用最廣泛的Web程序設(shè)計(jì)技術(shù)。J2EE使用多層分布式應(yīng)用模型,應(yīng)用邏輯按功能劃分成組件,各個(gè)應(yīng)用組件根據(jù)他們所在的層分布在不同的機(jī)器上,J2EE為搭建具有可伸縮性、靈活性、易維護(hù)性的商務(wù)系統(tǒng)提供了良好的機(jī)制[7]。
2)JBPM工作流引擎。業(yè)務(wù)流程管理(java business process management,JBPM),它是一個(gè)開(kāi)源的、靈活的、易擴(kuò)展的可執(zhí)行流程語(yǔ)言框架[8-9]。JBPM采用圖形化開(kāi)發(fā)工具和JPDL(JBoss process definition language)來(lái)描述流程圖。JPDL的表示形式是 XML(extensible markup language)文件,它定義了這個(gè)流程圖的每個(gè)部分,如起始節(jié)點(diǎn)、結(jié)束節(jié)點(diǎn)、節(jié)點(diǎn)之間的轉(zhuǎn)換。通過(guò)圖形化流程定義,能夠直觀地描述業(yè)務(wù)流程。
3)SVG??煽s放矢量圖形(scalable vector graphics,SVG),他是使用XML來(lái)定義二維圖形和繪圖程序的語(yǔ)言。一般SVG用于定義基于網(wǎng)絡(luò)的矢量圖形,是萬(wàn)維網(wǎng)聯(lián)盟標(biāo)準(zhǔn)。HTML5支持內(nèi)聯(lián)SVG元素,通過(guò)瀏覽器即可創(chuàng)建SVG矢量圖。
LIMS功能和任務(wù)流程是依據(jù)ISO/IEC17025《檢測(cè)和校準(zhǔn)實(shí)驗(yàn)室能力的通用要求》[10]和原有實(shí)驗(yàn)室管理模式設(shè)計(jì)的,具有通用性和適用性。LIMS系統(tǒng)架構(gòu)如圖1所示。
圖1 LIMS系統(tǒng)架構(gòu)圖Fig.1 The system architecture chart of LIMS
1)數(shù)據(jù)層。數(shù)據(jù)是系統(tǒng)運(yùn)行的基礎(chǔ),主要包括:客戶(hù)信息、人員崗位信息、設(shè)備儀器信息、檢測(cè)標(biāo)準(zhǔn)庫(kù)、計(jì)量標(biāo)準(zhǔn)庫(kù)、報(bào)告模板庫(kù)等。由系統(tǒng)將基礎(chǔ)數(shù)據(jù)組織起來(lái),實(shí)現(xiàn)數(shù)據(jù)互通和共享,為數(shù)據(jù)統(tǒng)計(jì)、數(shù)據(jù)報(bào)表提供數(shù)據(jù)源。數(shù)據(jù)格式包括文字、圖片、文檔、聲音等。
2)業(yè)務(wù)層。業(yè)務(wù)層描述檢測(cè)實(shí)驗(yàn)室的核心業(yè)務(wù)流,包括合同簽訂流程和試驗(yàn)任務(wù)流程,業(yè)務(wù)流通過(guò)工作流引擎JBPM創(chuàng)建,用戶(hù)和開(kāi)發(fā)人員只需關(guān)心當(dāng)前任務(wù),當(dāng)前任務(wù)處理完成后的下一個(gè)節(jié)點(diǎn)將由工作流自動(dòng)引導(dǎo)流向。
3)應(yīng)用層。應(yīng)用層主要提供用戶(hù)可操作的界面,主要是對(duì)基礎(chǔ)數(shù)據(jù)的增、刪、改、查詢(xún)功能。不同崗位對(duì)任務(wù)的申請(qǐng)、審核、審批。數(shù)據(jù)統(tǒng)計(jì)圖表、報(bào)表的展示和導(dǎo)出等。LIMS系統(tǒng)可通過(guò)接口服務(wù)與排程系統(tǒng)和流程設(shè)計(jì)器進(jìn)行數(shù)據(jù)共享。
優(yōu)先級(jí)調(diào)度算法一般用于操作系統(tǒng)的作業(yè)調(diào)度,基于作業(yè)的緊迫程度,由外部賦予作業(yè)相應(yīng)的優(yōu)先級(jí),系統(tǒng)根據(jù)優(yōu)先級(jí)進(jìn)行調(diào)度[11]。排程系統(tǒng)引用了這個(gè)算法思想,首先通過(guò)試驗(yàn)任務(wù)的緊迫程度計(jì)算優(yōu)先級(jí)系數(shù),然后根據(jù)優(yōu)先級(jí)進(jìn)行排程,優(yōu)先級(jí)系數(shù)的計(jì)算如下式所示:
式中:r為優(yōu)先級(jí)系數(shù);st為服務(wù)時(shí)長(zhǎng);et為任務(wù)計(jì)劃完成時(shí)間;at為任務(wù)到達(dá)時(shí)間。
可知,r越大代表任務(wù)越緊迫,優(yōu)先級(jí)越高。
排程管理系統(tǒng)是對(duì)實(shí)驗(yàn)室的試驗(yàn)任務(wù)進(jìn)行排程,首先由用戶(hù)下發(fā)的任務(wù)卡對(duì)試驗(yàn)進(jìn)行分割,將整個(gè)試驗(yàn)分割成多個(gè)任務(wù)。其次,由系統(tǒng)依照試驗(yàn)任務(wù)類(lèi)型自動(dòng)判斷該試驗(yàn)所屬的實(shí)驗(yàn)室,并計(jì)算同一個(gè)實(shí)驗(yàn)室試驗(yàn)的優(yōu)先級(jí)系數(shù),而后自動(dòng)分配試驗(yàn)時(shí)間。優(yōu)先級(jí)高代表任務(wù)較為緊迫,系統(tǒng)會(huì)優(yōu)先安排試驗(yàn)。對(duì)于優(yōu)先級(jí)相同的實(shí)驗(yàn)系統(tǒng)則按照“先來(lái)先服務(wù)”的原則分配時(shí)間。為減少排程計(jì)劃變動(dòng)對(duì)試驗(yàn)任務(wù)計(jì)劃的影響,系統(tǒng)一旦為試驗(yàn)任務(wù)排好時(shí)間節(jié)點(diǎn),便一直執(zhí)行下去,至完成。以上只是正常預(yù)約排程,在實(shí)際操作過(guò)程中,發(fā)現(xiàn)還存在一些特殊情況,像任務(wù)加急處理、任務(wù)爽約,排程流程圖如圖2所示。
圖2 排程系統(tǒng)流程圖Fig.2 Flow chart of scheduling system
1)加急插隊(duì)處理?!凹蛹辈尻?duì)”同樣以?xún)?yōu)先級(jí)為插隊(duì)依據(jù),如果有更緊急的實(shí)驗(yàn)任務(wù)進(jìn)行“插隊(duì)”,要先判斷隊(duì)列中正在執(zhí)行任務(wù)是否小于等于“插隊(duì)”任務(wù)的優(yōu)先級(jí),如判斷條件為“真”,系統(tǒng)將截?cái)嗾趫?zhí)行的任務(wù),插入加急任務(wù),而隊(duì)列中的其他任務(wù)將依次順延。如判斷條件為“假”,系統(tǒng)自動(dòng)將任務(wù)插入到當(dāng)前正在執(zhí)行的任務(wù)之后。
2)爽約處理。“爽約”是指在工作預(yù)約排程后,由于某些特殊原因而未在預(yù)約的時(shí)間段內(nèi)進(jìn)行相應(yīng)的實(shí)驗(yàn)?!八s”分為“外因爽約”和“自身爽約”?!巴庖蛩s”是由于外來(lái)因素而的造成“爽約”;“自身爽約”是實(shí)驗(yàn)員由于自身原因而造成的“爽約”。對(duì)于“外因爽約”的任務(wù),系統(tǒng)先撤銷(xiāo)排程,然后將此任務(wù)“插隊(duì)”到原有優(yōu)先級(jí)別的隊(duì)列;對(duì)于“自身爽約”的任務(wù),在撤銷(xiāo)排程后將其按照新任務(wù)進(jìn)行重新排程。
排程系統(tǒng)的功能包括實(shí)驗(yàn)室管理、試驗(yàn)任務(wù)管理、試驗(yàn)排程看板、系統(tǒng)管理4大功能模塊。
實(shí)驗(yàn)室管理為用戶(hù)提供實(shí)驗(yàn)室信息(實(shí)驗(yàn)室名稱(chēng)、實(shí)驗(yàn)室類(lèi)型、業(yè)務(wù)范圍)的添加、修改、刪除功能。試驗(yàn)任務(wù)管理功能模塊可同步LIMS的試驗(yàn)任務(wù)信息、設(shè)置排程是否包含節(jié)假日、對(duì)試驗(yàn)任務(wù)進(jìn)行排程、撤銷(xiāo)試驗(yàn)任務(wù)排程、試驗(yàn)任務(wù)插隊(duì)、結(jié)束試驗(yàn)任務(wù)。排程看板以甘特圖的形式為用戶(hù)展示自動(dòng)排程結(jié)果,如圖3所示。
圖3 排程甘特圖Fig.3 Schedule gantt chart
用戶(hù)還可以通過(guò)手動(dòng)的方式對(duì)甘特圖進(jìn)行修改、添加、刪除試驗(yàn)時(shí)間節(jié)點(diǎn)。對(duì)于超期節(jié)點(diǎn),系統(tǒng)將顯示超期預(yù)警。用戶(hù)可為超期任務(wù)賦予更高權(quán)限,重新排程,也可以通過(guò)手動(dòng)修改甘特圖的時(shí)間節(jié)點(diǎn)來(lái)調(diào)節(jié)超期。系統(tǒng)管理主要提供系統(tǒng)用戶(hù)信息和權(quán)限等配置管理功能。
流程設(shè)計(jì)器利用工作流技術(shù),將每個(gè)流程的工作節(jié)點(diǎn)按照前后邏輯組織在一起,以流程驅(qū)動(dòng)任務(wù),在多個(gè)參與者之間,自動(dòng)傳遞執(zhí)行任務(wù)、信息和文檔。
首先利用SVG技術(shù)與JS(JavaScript)搭建繪圖前端,用戶(hù)通過(guò)瀏覽器以鼠標(biāo)拖曳的方式畫(huà)出流程的活動(dòng)和路徑,設(shè)置路徑和活動(dòng)屬性,將畫(huà)好的流程數(shù)據(jù)保存到JS對(duì)象中,以便JS數(shù)據(jù)對(duì)象轉(zhuǎn)換成JSON格式數(shù)據(jù)。同時(shí)將SVG流程圖的文檔對(duì)象模型元素轉(zhuǎn)成Base64編碼格式,確認(rèn)無(wú)誤后將表示流程圖的JSON字符串和表示流程圖片的Base64編碼傳輸?shù)胶笈_(tái)等待解析。待后臺(tái)接收到數(shù)據(jù)后,需要將JSON數(shù)據(jù)解析成JPDL的XML文件,也就是將SVG和JPDL的坐標(biāo)相互轉(zhuǎn)換。最后由系統(tǒng)將描述流程圖的JPDL文件與.PNG圖片打包并壓縮成ZIP格式的文件。這樣一個(gè)JBPM工作流文件就生成了,用戶(hù)可以通過(guò)瀏覽器發(fā)布流程。當(dāng)需要編輯流程時(shí),可通過(guò)瀏覽器打開(kāi)JPDL的XML文件,系統(tǒng)將JPDL表示的流程信息轉(zhuǎn)換成JSON格式的字符串再發(fā)送到前端,瀏覽器接收到數(shù)據(jù)后,進(jìn)行轉(zhuǎn)換解析,重新渲染出SVG圖像,通過(guò)瀏覽器用戶(hù)就可以自由操作流程節(jié)點(diǎn)和連線(xiàn)了。
LIMS的業(yè)務(wù)流程有系統(tǒng)通知流程、合同簽訂流程、檢測(cè)試驗(yàn)流程、付款流程、設(shè)備儀器檢定校準(zhǔn)流程,在流程節(jié)點(diǎn)發(fā)生變動(dòng)時(shí),可通過(guò)流程設(shè)計(jì)器對(duì)LIMS已有的工作流程進(jìn)行編輯、發(fā)布。
圖4表示流程設(shè)計(jì)器與LIMS的關(guān)系圖,定義好的流程發(fā)布后即對(duì)LIMS生效。
圖4 流程設(shè)計(jì)器與LIMS關(guān)系圖Fig.4 Relationship between process designer and LIMS
用戶(hù)可通過(guò)流程設(shè)計(jì)器定義新流程,編輯原有流程,設(shè)置流程節(jié)點(diǎn)的角色,增加版本號(hào),下載流程,發(fā)布流程、撤銷(xiāo)流程。當(dāng)原有流程經(jīng)用戶(hù)編輯后,生成一個(gè)新版本流程壓縮包,新版本流程只適用于新任務(wù),而對(duì)于已發(fā)起的任務(wù),則按照之前版本繼續(xù)運(yùn)行。流程角色用來(lái)設(shè)置被選中流程節(jié)點(diǎn)的指派人(單人)或所指派的崗位(多人)。流程業(yè)務(wù)管理用于流程的發(fā)布和撤銷(xiāo)。
排程系統(tǒng)和流程設(shè)計(jì)器屬于小型系統(tǒng),采用敏捷開(kāi)發(fā)模式,通過(guò)與LIMS用戶(hù)緊密協(xié)作,面對(duì)面溝通,頻繁迭代新的軟件版本,使軟件提早被用戶(hù)適應(yīng)和接受。目前兩款軟件已經(jīng)過(guò)在某第三方檢測(cè)機(jī)構(gòu)的測(cè)試運(yùn)行。經(jīng)測(cè)試,兩套應(yīng)用軟件運(yùn)行流暢、響應(yīng)時(shí)間短、能夠與已有的LIMS成功對(duì)接,實(shí)現(xiàn)數(shù)據(jù)共享,完成設(shè)計(jì)的功能。
經(jīng)測(cè)試,排程系統(tǒng)可為控制試驗(yàn)任務(wù)進(jìn)度和資源供應(yīng),提高實(shí)驗(yàn)室利用效率,縮短試驗(yàn)業(yè)務(wù)周期提供支持;流程設(shè)計(jì)器的應(yīng)用使用戶(hù)可直接在線(xiàn)編輯流程,發(fā)布流程,節(jié)約時(shí)間和運(yùn)維成本。
排程系統(tǒng)和流程設(shè)計(jì)器的開(kāi)發(fā)完善了現(xiàn)有的LIMS,完全支持與LIMS的通信接口,保證在不影響系統(tǒng)運(yùn)行的情況下實(shí)現(xiàn)系統(tǒng)間的數(shù)據(jù)通信,完成與LIMS的無(wú)縫對(duì)接。但作為相對(duì)獨(dú)立的兩個(gè)系統(tǒng),系統(tǒng)還提供了人工干預(yù)的功能,通過(guò)手動(dòng)錄入的形式將試驗(yàn)信息同步到排程系統(tǒng)和流程設(shè)計(jì)器的后臺(tái)數(shù)據(jù)庫(kù),因此,他們既能與各種B/S模式的信息系統(tǒng)進(jìn)行耦合,又能獨(dú)立運(yùn)行的軟件系統(tǒng)。