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