黃圣嫵,李曉琛,楊 宙,李 松
(廣東省建設(shè)工程質(zhì)量安全檢測(cè)總站有限公司 廣州510500)
試驗(yàn)室信息管理系統(tǒng)(LIMS)是試驗(yàn)室管理的核心軟件,它負(fù)責(zé)管理試驗(yàn)室的“人機(jī)料法環(huán)”等信息。完善和發(fā)展LIMS 具有學(xué)術(shù)意義和社會(huì)效益。目前,經(jīng)過數(shù)十年的發(fā)展,LIMS 已經(jīng)在各行各業(yè)[1-8]得到了廣泛的應(yīng)用,一些LIMS 強(qiáng)國(guó)還制定了詳盡的LIMS 功能標(biāo)準(zhǔn)和驗(yàn)收標(biāo)準(zhǔn)[9,10]。還有一些課題使用手持機(jī)對(duì)LIMS 進(jìn)行了功能擴(kuò)展和使用場(chǎng)所擴(kuò)展,例如在采樣過程中使用手持機(jī)對(duì)樣品信息進(jìn)行加強(qiáng)管理[11]。
本項(xiàng)目甲方單位已有LIMS 系統(tǒng),但不能滿足日益增長(zhǎng)的檢測(cè)進(jìn)度管理要求,并且不能通過直接采購(gòu)軟件解決,因此委托課題組解決檢測(cè)進(jìn)度管理問題,包括原始樣品的拆分、流轉(zhuǎn)、養(yǎng)護(hù)、同一個(gè)樣品各檢測(cè)項(xiàng)目的進(jìn)度等的管理,并將該管理功能接入既有LIMS 系統(tǒng)。課題組針對(duì)這些要求,進(jìn)行了基于An?droid 前端和Springboot 后臺(tái)的LIMS 檢測(cè)進(jìn)度管理軟件的設(shè)計(jì)與實(shí)現(xiàn)。本項(xiàng)目的研究?jī)?nèi)容是:在樣品從進(jìn)入到離開檢測(cè)中心的過程中,記錄接觸它的人員、試驗(yàn)室、設(shè)備供追溯。
本項(xiàng)目使用C/S架構(gòu),在后臺(tái)使用了Springboot框架、Thymeleaf框架等技術(shù);在前端Android軟件使用了JSignature框架、WeUI框架等技術(shù)。簡(jiǎn)而言之,選用的都是JAVA Springboot 家族的技術(shù)。選用這套技術(shù)的原因是:
⑴Springboot 框架使用自動(dòng)配置依賴、注解等手段大大簡(jiǎn)化了開發(fā)。以自動(dòng)配置為例,只需在pom.xml 中進(jìn)行少量配置,即可自動(dòng)完成Spring-Data-Jpa、Web、Thymeleaf依賴。
⑵Spring-Data-Jpa 框架與Hibernate 一樣,是對(duì)JPA(Java Persistence Application Interface)規(guī)范的具體實(shí)現(xiàn)。Spring-Data-Jpa 的優(yōu)點(diǎn)是單表操作的速度很快,適合該課題的具體情況。在此類ORM(Object Re?lational Mapping)技術(shù)中,JAVA 實(shí)體類的類名映射到數(shù)據(jù)庫(kù)的表名,JAVA 對(duì)象名映射到數(shù)據(jù)庫(kù)表中的一條記錄,JAVA 實(shí)體類屬性映射到數(shù)據(jù)庫(kù)表中的字段,通過JAVA 注解,容易實(shí)現(xiàn)數(shù)據(jù)的持久化和瞬時(shí)化,減輕數(shù)據(jù)庫(kù)操作的開發(fā)工作量。
⑶Thymeleaf框架簡(jiǎn)化了HTML渲染。
⑷JSignature框架便于實(shí)現(xiàn)對(duì)手寫簽名的矢量圖捕捉和格式轉(zhuǎn)換。
⑸WeUI 是一個(gè)以HTML 和CSS 開發(fā)的UI 庫(kù),通常用于微信公眾號(hào)的頁(yè)面美化,課題組將它用于課題中的Android軟件的美化。
課題組通過訪談、問卷等獲得了用戶需求,并通過名詞、動(dòng)詞、形容詞整理等手段,整理成需求陳述。其中優(yōu)先級(jí)較高的需求是:
⑴為每個(gè)試驗(yàn)室、設(shè)備、樣品提供條碼,當(dāng)樣品在各試驗(yàn)室、各設(shè)備流轉(zhuǎn)時(shí),可記錄樣品編號(hào)、流轉(zhuǎn)時(shí)間,可拍照上傳。
⑵記錄儀器設(shè)備使用前后的狀態(tài)。
⑶對(duì)試驗(yàn)進(jìn)度進(jìn)行記錄和提醒(見圖1)。
圖1 檢測(cè)進(jìn)度管理的用例Fig.1 Use Case of Testing Progress Management
公知常識(shí),本階段應(yīng)當(dāng)發(fā)現(xiàn)5 種不同的類,分別是:客觀實(shí)體、角色、應(yīng)記錄的事件、對(duì)象間的相互作用和必須說明的概念。從上一節(jié)“需求陳述”中不難發(fā)現(xiàn),本項(xiàng)目可發(fā)現(xiàn)的類有:
⑴客觀實(shí)體:包括設(shè)備、試驗(yàn)室、照片、樣品、菜單選項(xiàng)、手寫簽名;
⑵角色:檢測(cè)員、檢測(cè)分類負(fù)責(zé)人、科室主任、系統(tǒng)管理員、手持機(jī)、原有LIMS;
⑶應(yīng)記錄的事件:設(shè)備使用記錄、樣品流轉(zhuǎn)、委托;
⑷對(duì)象間的相互作用:登錄、檢測(cè)超期提醒;
⑸沒有“必須說明的概念”。
限于篇幅,選取上述類中的“設(shè)備”類和“設(shè)備使用記錄”類進(jìn)行說明,如圖2所示。
圖2 設(shè)備實(shí)體類和使用記錄實(shí)體類Fig.2 Equipment Entity Class and Use Record Entity Class
在分析階段,需要識(shí)別類之間的4 個(gè)關(guān)系,分別是:衍生、組合聚合、實(shí)例連接和消息連接。
例如“樣品”類和“試驗(yàn)室”類之間的多對(duì)多的實(shí)例連接(見圖3),以及“樣品流轉(zhuǎn)控制”類與工具類、線程對(duì)象類、使用記錄類等類之間的復(fù)雜的靜態(tài)結(jié)構(gòu)(見圖4)。
圖3 樣品和試驗(yàn)室之間的實(shí)例連接Fig.3 Instance Connection between Sample Class and Lab Class
圖4 樣品流轉(zhuǎn)控制類與其他類間的結(jié)構(gòu)Fig.4 Structure between Sample Flow Control Class and Other Classes
本項(xiàng)目甲方單位原有一套基于Struts 的LIMS 系統(tǒng),因此項(xiàng)目將設(shè)計(jì)成單獨(dú)的一套系統(tǒng),通過原有LIMS系統(tǒng)的接口接入(見圖5)。
圖5 本項(xiàng)目的應(yīng)用架構(gòu)Fig.5 Application Architecture of the Project
本項(xiàng)目的后臺(tái)部分將在Springboot 框架下開發(fā),該框架通常分為“業(yè)務(wù)邏輯層、服務(wù)層、DAO 層”。其中,業(yè)務(wù)邏輯層包含了控制類和Bean;服務(wù)層包含了服務(wù)接口和對(duì)服務(wù)接口的實(shí)現(xiàn);DAO 層包含了DAO接口和實(shí)體類。
將分析階段的成果,即“需要哪些類”中提及的類融入Springboot 框架之后,得到的新的類如圖6 所示。圖6中,控制類本身不進(jìn)行邏輯處理,而是調(diào)度各種工具類、服務(wù)層類進(jìn)行邏輯處理。本項(xiàng)目的典型的工具類如圖7所示。
圖6 本項(xiàng)目的Springboot三層架構(gòu)Fig.6 The Springboot Three Layers Architecture of the Project
圖7 負(fù)責(zé)格式轉(zhuǎn)換的工具類StringUtilFig.7 Tool Class Named StringUtil Responsible for Format Conversion
其他的工具類包括:承擔(dān)“分頁(yè)、統(tǒng)計(jì)分頁(yè)后的總頁(yè)數(shù)、統(tǒng)計(jì)總記錄數(shù)”職責(zé)的名為FundPage的類、承擔(dān)“對(duì)圖片進(jìn)行Base64 編碼、解碼”的名為ImageUtil 的類、承擔(dān)“使用靜態(tài)方法打印日志,無(wú)需每個(gè)類中定義日志對(duì)象”職責(zé)的名為L(zhǎng)oggerUtil 的類、承擔(dān)“對(duì)輸入的數(shù)據(jù)加密后返回”職責(zé)的名為PswUtil的類。
詳細(xì)設(shè)計(jì)階段,需要向當(dāng)前設(shè)計(jì)成果中加入通信、進(jìn)程管理等底層支撐環(huán)境概念。以及需要將設(shè)計(jì)成果結(jié)合設(shè)計(jì)模式進(jìn)行規(guī)范化梳理。例如,手持機(jī)部分,將采用adapter 設(shè)計(jì)模式,使前端顯示能適應(yīng)各種變化。
本項(xiàng)目已投入運(yùn)營(yíng),每一個(gè)樣品何時(shí)由誰(shuí)從業(yè)務(wù)室轉(zhuǎn)入試驗(yàn)室、何時(shí)由誰(shuí)從試驗(yàn)室轉(zhuǎn)入制樣室、何時(shí)由誰(shuí)從制樣室轉(zhuǎn)入養(yǎng)護(hù)室、何時(shí)由誰(shuí)從養(yǎng)護(hù)室轉(zhuǎn)入某臺(tái)試驗(yàn)機(jī)、該試驗(yàn)機(jī)何時(shí)由誰(shuí)使用、使用前后的狀態(tài)如何、樣品上機(jī)前后的照片如何、相關(guān)人員的手寫簽名,均可通過手持機(jī)記錄在LIMS中(見圖8)。
圖8 運(yùn)行效果展示Fig.8 Operation Effect Display
本項(xiàng)目旨在通過手持機(jī)記錄樣品的全生命期經(jīng)歷,項(xiàng)目課題組通過對(duì)安卓前端、Springboot 后臺(tái)的設(shè)計(jì)與實(shí)現(xiàn),解決了課題所提出的問題。目前該成果已投入使用,運(yùn)行狀態(tài)良好,實(shí)現(xiàn)了課題的各項(xiàng)目標(biāo)。