黃圣嫵,李曉琛,楊 宙,李 松
(廣東省建設工程質量安全檢測總站有限公司 廣州510500)
試驗室信息管理系統(LIMS)是試驗室管理的核心軟件,它負責管理試驗室的“人機料法環”等信息。完善和發展LIMS 具有學術意義和社會效益。目前,經過數十年的發展,LIMS 已經在各行各業[1-8]得到了廣泛的應用,一些LIMS 強國還制定了詳盡的LIMS 功能標準和驗收標準[9,10]。還有一些課題使用手持機對LIMS 進行了功能擴展和使用場所擴展,例如在采樣過程中使用手持機對樣品信息進行加強管理[11]。
本項目甲方單位已有LIMS 系統,但不能滿足日益增長的檢測進度管理要求,并且不能通過直接采購軟件解決,因此委托課題組解決檢測進度管理問題,包括原始樣品的拆分、流轉、養護、同一個樣品各檢測項目的進度等的管理,并將該管理功能接入既有LIMS 系統。課題組針對這些要求,進行了基于An?droid 前端和Springboot 后臺的LIMS 檢測進度管理軟件的設計與實現。本項目的研究內容是:在樣品從進入到離開檢測中心的過程中,記錄接觸它的人員、試驗室、設備供追溯。
本項目使用C/S架構,在后臺使用了Springboot框架、Thymeleaf框架等技術;在前端Android軟件使用了JSignature框架、WeUI框架等技術。簡而言之,選用的都是JAVA Springboot 家族的技術。選用這套技術的原因是:
⑴Springboot 框架使用自動配置依賴、注解等手段大大簡化了開發。以自動配置為例,只需在pom.xml 中進行少量配置,即可自動完成Spring-Data-Jpa、Web、Thymeleaf依賴。
⑵Spring-Data-Jpa 框架與Hibernate 一樣,是對JPA(Java Persistence Application Interface)規范的具體實現。Spring-Data-Jpa 的優點是單表操作的速度很快,適合該課題的具體情況。在此類ORM(Object Re?lational Mapping)技術中,JAVA 實體類的類名映射到數據庫的表名,JAVA 對象名映射到數據庫表中的一條記錄,JAVA 實體類屬性映射到數據庫表中的字段,通過JAVA 注解,容易實現數據的持久化和瞬時化,減輕數據庫操作的開發工作量。
⑶Thymeleaf框架簡化了HTML渲染。
⑷JSignature框架便于實現對手寫簽名的矢量圖捕捉和格式轉換。
⑸WeUI 是一個以HTML 和CSS 開發的UI 庫,通常用于微信公眾號的頁面美化,課題組將它用于課題中的Android軟件的美化。
課題組通過訪談、問卷等獲得了用戶需求,并通過名詞、動詞、形容詞整理等手段,整理成需求陳述。其中優先級較高的需求是:
⑴為每個試驗室、設備、樣品提供條碼,當樣品在各試驗室、各設備流轉時,可記錄樣品編號、流轉時間,可拍照上傳。
⑵記錄儀器設備使用前后的狀態。
⑶對試驗進度進行記錄和提醒(見圖1)。

圖1 檢測進度管理的用例Fig.1 Use Case of Testing Progress Management
公知常識,本階段應當發現5 種不同的類,分別是:客觀實體、角色、應記錄的事件、對象間的相互作用和必須說明的概念。從上一節“需求陳述”中不難發現,本項目可發現的類有:
⑴客觀實體:包括設備、試驗室、照片、樣品、菜單選項、手寫簽名;
⑵角色:檢測員、檢測分類負責人、科室主任、系統管理員、手持機、原有LIMS;
⑶應記錄的事件:設備使用記錄、樣品流轉、委托;
⑷對象間的相互作用:登錄、檢測超期提醒;
⑸沒有“必須說明的概念”。
限于篇幅,選取上述類中的“設備”類和“設備使用記錄”類進行說明,如圖2所示。

圖2 設備實體類和使用記錄實體類Fig.2 Equipment Entity Class and Use Record Entity Class
在分析階段,需要識別類之間的4 個關系,分別是:衍生、組合聚合、實例連接和消息連接。
例如“樣品”類和“試驗室”類之間的多對多的實例連接(見圖3),以及“樣品流轉控制”類與工具類、線程對象類、使用記錄類等類之間的復雜的靜態結構(見圖4)。

圖3 樣品和試驗室之間的實例連接Fig.3 Instance Connection between Sample Class and Lab Class

圖4 樣品流轉控制類與其他類間的結構Fig.4 Structure between Sample Flow Control Class and Other Classes
本項目甲方單位原有一套基于Struts 的LIMS 系統,因此項目將設計成單獨的一套系統,通過原有LIMS系統的接口接入(見圖5)。

圖5 本項目的應用架構Fig.5 Application Architecture of the Project
本項目的后臺部分將在Springboot 框架下開發,該框架通常分為“業務邏輯層、服務層、DAO 層”。其中,業務邏輯層包含了控制類和Bean;服務層包含了服務接口和對服務接口的實現;DAO 層包含了DAO接口和實體類。
將分析階段的成果,即“需要哪些類”中提及的類融入Springboot 框架之后,得到的新的類如圖6 所示。圖6中,控制類本身不進行邏輯處理,而是調度各種工具類、服務層類進行邏輯處理。本項目的典型的工具類如圖7所示。

圖6 本項目的Springboot三層架構Fig.6 The Springboot Three Layers Architecture of the Project

圖7 負責格式轉換的工具類StringUtilFig.7 Tool Class Named StringUtil Responsible for Format Conversion
其他的工具類包括:承擔“分頁、統計分頁后的總頁數、統計總記錄數”職責的名為FundPage的類、承擔“對圖片進行Base64 編碼、解碼”的名為ImageUtil 的類、承擔“使用靜態方法打印日志,無需每個類中定義日志對象”職責的名為LoggerUtil 的類、承擔“對輸入的數據加密后返回”職責的名為PswUtil的類。
詳細設計階段,需要向當前設計成果中加入通信、進程管理等底層支撐環境概念。以及需要將設計成果結合設計模式進行規范化梳理。例如,手持機部分,將采用adapter 設計模式,使前端顯示能適應各種變化。
本項目已投入運營,每一個樣品何時由誰從業務室轉入試驗室、何時由誰從試驗室轉入制樣室、何時由誰從制樣室轉入養護室、何時由誰從養護室轉入某臺試驗機、該試驗機何時由誰使用、使用前后的狀態如何、樣品上機前后的照片如何、相關人員的手寫簽名,均可通過手持機記錄在LIMS中(見圖8)。

圖8 運行效果展示Fig.8 Operation Effect Display
本項目旨在通過手持機記錄樣品的全生命期經歷,項目課題組通過對安卓前端、Springboot 后臺的設計與實現,解決了課題所提出的問題。目前該成果已投入使用,運行狀態良好,實現了課題的各項目標。