序言
本文分享一個通過數(shù)據(jù)庫(ORACLE)的存儲過程,遵循“對修改封閉,對增加開放”的開閉原則,實(shí)現(xiàn)的可擴(kuò)展性極強(qiáng)的靈活接口方案。
背景
本人從事離散型MES系統(tǒng)的開發(fā)工作,近期負(fù)責(zé)了一個PCBA(電子、手機(jī))行業(yè)的MES系統(tǒng)二開工作。PCBA行業(yè)使用ATE工具(自動測試工具)進(jìn)行寫號、查號、置標(biāo)志位等工作,寫號查號等相關(guān)數(shù)據(jù)需要與MES系統(tǒng)進(jìn)行數(shù)據(jù)交互,同時MES系統(tǒng)也需要管控ATE工具的作業(yè)流程。如查號必須在寫號后,沒有寫號的工具不能進(jìn)行查號等流程管控。由于ATE工具的測試不須人員參與,所以MES系統(tǒng)需要開發(fā)相關(guān)接口給ATE工具端調(diào)用,進(jìn)行數(shù)據(jù)交互和流程管控等工作。
MES系統(tǒng)前期已有途程檢查,分配IMEI、MAC、BT數(shù)據(jù),過站等相關(guān)基礎(chǔ)接口可供ATE工具調(diào)用,基本能滿足要求。但在面對某些客戶定制化的需求時(如上傳軟件版本、記錄測試內(nèi)容),就必須在原有接口的基礎(chǔ)上增加或修改程序,然后把C#編寫的dll封裝成COM組件(因?yàn)锳TE工具使用C++編寫的),更新文檔,再通知ATE工具編寫人員重新連入新版本進(jìn)行編寫和調(diào)試,最后再更新現(xiàn)有工具的所有版本。別看流程描述起來比較簡單,但實(shí)際操作起來涉及到溝通、部門協(xié)作等問題,非常繁瑣累人。
基于上述原因,筆者思考是否有一個方案能夠靈活面對客戶的定制化需求,又不需涉及到太多變更,特別是重新編譯、重新連入和更新等操作。有志者事竟成,經(jīng)過一番研究與思考后,筆者決定采用“存儲過程”來進(jìn)行實(shí)現(xiàn)。