1、項目型插件系統(tǒng)的研究背景
計算機輔助工藝設(shè)計軟件(CAPP)在國內(nèi)發(fā)展已有二十多年的歷史,但由于工藝過程復(fù)雜而且充滿個性化,它一直沒有得到很好的發(fā)展。天河軟件技術(shù)有限公司推出的智能化、集成化工藝設(shè)計平臺系統(tǒng)――THCAPP,以其完善的系統(tǒng)需求定義和先進的系統(tǒng)設(shè)計,受到了用戶的廣泛好評,F(xiàn)在使用THCAPP軟件的用戶已經(jīng)遍布全國。
隨著軟件工程在產(chǎn)品的研發(fā)中廣泛應(yīng)用,THCAPP軟件也步入了快速發(fā)展階段:用戶數(shù)量不斷增加,功能不斷豐富、完善。但是,快速發(fā)展的THCAPP軟件不可避免的出現(xiàn)了以下這個問題:創(chuàng)立于十年前的THCAPP軟件的原型已經(jīng)被市場廣泛認可,后續(xù)版本的開發(fā)工作只是在這個原型的基礎(chǔ)上進行功能的擴展。為了在保證與THCAPP以前版本軟件兼容的前提下,彌補軟件原型在靈活性和擴展性方面的不足,我們有必要在THCAPP軟件中引入“框架+插件”這樣一種結(jié)構(gòu)的構(gòu)建模式。
在采用THCAPP軟件的企業(yè)用戶中,由于各個企業(yè)的規(guī)模不同,開發(fā)產(chǎn)品的差異,造成了用戶需求的千差萬別,不同企業(yè)之間的需求甚至?xí)霈F(xiàn)矛盾的情況。為了滿足用戶的各種需求,使產(chǎn)品具有頑強的生命力,只有引入“框架+插件” 結(jié)構(gòu),使軟件產(chǎn)品在整體上是融合的,在各個功能上具有相對獨立性,而這些獨立的功能能夠進行單獨的開發(fā),形成具有完善功能的獨立模塊,并且能夠很好的融入到整個軟件產(chǎn)品中的方法是解決軟件原型風(fēng)險最好的辦法。
2、插件系統(tǒng)分析
現(xiàn)在,我們經(jīng)常使用的一些國外公司或個人開發(fā)的優(yōu)秀軟件產(chǎn)品都是采用的
“框架+插件”這種體系結(jié)構(gòu),其中最著名的軟件包括:AutoCAD、 PhotoShop和ACDSee。分析一下這些軟件的開發(fā)模型:整個軟件產(chǎn)品為一個良好的框架,具有完成軟件產(chǎn)品應(yīng)用的基本功能以及插件管理功能,負責(zé)為插件的運行提供一個整體的可靠的運行環(huán)境;而高級的功能則通過各個獨立的插件來完成。插件是在自己要求的運行環(huán)境中,具有獨立,完整功能的模塊。產(chǎn)品的框架部分可以認為是一個插件的運行平臺,插件部分除了實現(xiàn)具體功能外還要按照平臺的要求實現(xiàn)標(biāo)準(zhǔn)接口,保證插件在平臺內(nèi)正確運行;平臺則通過通用的方法調(diào)用不同插件來實現(xiàn)功能的擴展。這樣,只要框架的結(jié)構(gòu)是良好和合理的,能夠適應(yīng)未來的變化,那么市場的變化帶來的各種新的需求就可以采用開發(fā)實現(xiàn)相應(yīng)功能的新插件來實現(xiàn)。軟件的生命力就有了保證。
國外軟件采用的“框架+插件”結(jié)構(gòu)代表著軟件行業(yè)的主流技術(shù),不同公司的不同產(chǎn)品,甚至同一個公司的不同產(chǎn)品之間,都會用不同的插件實現(xiàn)不同的功能。THCAPP插件系統(tǒng)的設(shè)計思路就是借鑒這種“框架+插件” 結(jié)構(gòu),在THCAPP程序的不同對象中調(diào)用不同的插件,實現(xiàn)特定范圍的功能。
過多的插件會增加用戶使用THCAPP軟件的難度;而且,一種功能插件會同時對多個對象產(chǎn)生不同的影響。所以得出以下結(jié)論:在THCAPP軟件中,應(yīng)該將所有的插件由單獨的系統(tǒng)進行統(tǒng)一的管理,實現(xiàn)插件的功能查看,產(chǎn)品隸屬,插件注冊和插件注銷等功能,簡化用戶的操作。
鑒于以上的情況,需要這樣一種解決方案:通過提供插件模板對插件接口進行規(guī)范;通過簡單的開發(fā)基礎(chǔ)培訓(xùn)使用戶具有進行簡單的編寫代碼的能力;通過針對THCAPP軟件中的某種單一的功能,封裝出THCAPP功能組件,同樣通過培訓(xùn)讓用戶掌握相關(guān)功能組件的使用方法,讓那個用戶自己編寫符合自己要求的插件,由插件系統(tǒng)統(tǒng)一管理。這樣,即在THCAPP軟件中實現(xiàn)了“框架+插件”的結(jié)構(gòu),保證了軟件的可擴展性,又通過培訓(xùn)用戶自主開發(fā)插件的模式,規(guī)避了維護插件的風(fēng)險,節(jié)省了雙方的資金,提高了軟件的競爭力,使公司和用戶實現(xiàn)“雙贏”成為了可能。
3、項目型插件系統(tǒng)的目標(biāo)
THCAPP中進行“框架+插件”的結(jié)構(gòu)改造,引入項目型插件系統(tǒng)的目的包含以下幾個方面:
完成THCAPP插件系統(tǒng)的開發(fā)工作,實現(xiàn)插件的瀏覽、注冊/注銷、二次注冊、調(diào)用、以及與系統(tǒng)交互等功能。實現(xiàn)“框架+插件”的系統(tǒng)結(jié)構(gòu)。
完成項目型插件系統(tǒng)的插件模板源代碼以及示例插件程序的源代碼的編寫工作。插件模板必須具有簡單、方便、易于維護的特征,爭取做到:讓沒有編程經(jīng)驗的用戶通過簡單的培訓(xùn)就能編寫滿足自己需求的插件。
完成集成型插件系統(tǒng)組件DLL的開發(fā)工作,提交動態(tài)鏈接庫文件:接口文件、以及運行庫文件。開發(fā)與特定PDM軟件集成的示例插件,證實集成型插件系統(tǒng)的可行性。
完成功能組件的開發(fā)工作,涵蓋THCAPP軟件中一些常用的功能(如:工藝文件的創(chuàng)建、篩選、刪除等)。從底層支持插件系統(tǒng)功能的全面性。
通過對THCAPP軟件的使用用戶——國內(nèi)大、中、小型制造企業(yè)的工藝工作進行的縝密調(diào)研,結(jié)果,幾乎所有的用戶都對這種簡單的軟件升級方式表示了期待。但是,不同的用戶,由于他們編程技術(shù)水平與需求功能的復(fù)雜程度有很大的差異,必須制定一套相對簡單、實用的插件開發(fā)規(guī)則,以方便用戶進行自定義插件的開發(fā)工作,便于插件系統(tǒng)的推廣。
在實施了THCAPP的企業(yè)用戶群中,每個企業(yè)每年都會提出一些有關(guān)功能實用性、以及操作簡便性方面的要求。這些要求一般都是用戶根據(jù)自己的特殊狀況提出的,不同用戶提出的要求甚至是對立的,我們很難從中總結(jié)出通用性的需求,供新版本的CAPP軟件進行開發(fā)工作。
項目型插件系統(tǒng)的主要功能就是擴展THCAPP的功能,通過用戶自己開發(fā)出的符合自己企業(yè)特色、實現(xiàn)自己功能要求的插件,彌補THCAPP軟件在可操作性方面的不足。
4、插件系統(tǒng)關(guān)鍵技術(shù)
4.1 系統(tǒng)總體設(shè)計方案
為保證與以前版本的THCAPP軟件的兼容性,插件系統(tǒng)應(yīng)該是獨立于THCAPP主程序,但通過被THCAPP主程序調(diào)用,才能實現(xiàn)其功能的動態(tài)鏈接庫組件。如圖1所示:
圖1 插件系統(tǒng)總體設(shè)計方案
插件系統(tǒng)包含插件管理模塊和多個功能插件。
插件管理模塊的功能是實現(xiàn)各功能插件的列表顯示、功能查看和二次注冊的調(diào)用,不負責(zé)實現(xiàn)任何插件的實際功能;
功能插件由THCAPP主程序的用戶為實現(xiàn)特定的功能,在我們提供的插件模板的基礎(chǔ)上自主開發(fā)的COM組件,除了實現(xiàn)各自的需求功能外,所有通過插件模板生成的插件還需要具有以下的功能:向插件管理模塊反饋插件信息、進行系統(tǒng)注冊與反注冊、通過消息機制與CAPP主程序進行通信。
項目型插件系統(tǒng)的結(jié)構(gòu),如圖2所示:
圖2 項目型插件系統(tǒng)結(jié)構(gòu)
接口層:
接口層是整個插件系統(tǒng)的入口,通過插件模板的設(shè)計,系統(tǒng)只需要獲取少量的傳入數(shù)據(jù)信息,通過執(zhí)行插件,就會通過一定的規(guī)則,向主程序傳遞規(guī)范的傳出數(shù)據(jù),實現(xiàn)插件的功能。
接口層實現(xiàn)插件管理功能,包括插件的引入、刪除、插件的列表選擇、以及運行選定的插件。
插件層
插件層就是用戶通過插件模板開發(fā)出的所有插件,插件模板實現(xiàn)了系統(tǒng)注冊模塊中插件的注冊與反注冊的工作;規(guī)范了用戶參數(shù)的類型;并且通過調(diào)用API函數(shù),定義了一些常用的THCAPP的消息常數(shù)(比如刷新消息等),供用戶插件使用。
用戶在開發(fā)自己的插件時,需要將插件相關(guān)信息設(shè)置到插件模板中的插件信息反饋模塊的特定常量中,以便接口調(diào)用。
數(shù)據(jù)層
數(shù)據(jù)層的作用是由插件刷新THCAPP主程序運行的Oracle數(shù)據(jù)庫中的數(shù)據(jù),真正實現(xiàn)插件的功能。包括參數(shù)規(guī)范模塊、CAPP功能組件和數(shù)據(jù)操作模塊。
通過CAPP功能組件調(diào)用數(shù)據(jù)操作模塊,操作底層Oracle數(shù)據(jù)庫中的數(shù)據(jù),避免了用戶直接操作數(shù)據(jù)帶來的風(fēng)險,節(jié)約了培訓(xùn)成本與用戶的工作。
4.2 關(guān)鍵技術(shù)及解決途徑
插件的識別問題
插件采用動態(tài)鏈接庫(DLL)文件的形式,在一臺機器的成百上千的DLL文件,如何識別指定的DLL文件是否為插件系統(tǒng)的插件,能夠被插件系統(tǒng)調(diào)用,就成為插件系統(tǒng)設(shè)計能否成功的前提條件。
插件系統(tǒng)中設(shè)計的解決思路是:在插件系統(tǒng)中,除了對插件進行系統(tǒng)注冊外,還得通過管理模塊對插件進行特定的二次注冊,這樣就可以解決插件的識別問題。
對于項目型插件系統(tǒng),在注冊表的指定位置設(shè)置子鍵,將插件信息(主要是VB程序創(chuàng)建組件對象時需要的組件名稱和庫名稱)記錄到這個子鍵下,插件管理組件顯示插件列表時,從這個位置讀取所有插件的信息顯示。運行插件時,也是從讀取插件信息創(chuàng)建插件對象。
對于集成型插件系統(tǒng),在THCAPP主程序的配置文件中,記錄所有插件的GUID值,由于插件都是從系統(tǒng)的基接口中派生的,所以,通過GUID值和基接口類型,就可以運行插件了。
插件的運行問題
讀取插件信息后,如何正確的運行插件也是一個需要解決的關(guān)鍵技術(shù)。
對于項目型插件系統(tǒng),通過插件模板,規(guī)范插件的接口。創(chuàng)建插件對象后,調(diào)用特定的接口,就可以運行插件了。
對于集成型插件系統(tǒng),由于是與THCAPP主程序進行無縫集成,在對象層接口對應(yīng)的MFC類文件中,定義相關(guān)的接口對象,通過激發(fā)事件或傳遞消息運行插件。
插件的通信問題
插件與插件系統(tǒng)、插件與THCAPP主程序、甚至插件與插件之間都需要進行數(shù)據(jù)交互或消息傳遞。
在插件系統(tǒng)中,定義一些通用的消息。在接收消息時,遍歷這些消息,分別實現(xiàn)這些消息的響應(yīng)函數(shù)就可以了。
插件的通信能力是插件系統(tǒng)必不可少的功能。通過消息傳遞模塊或消息接口定義通用消息,為以后版本中,通用消息的擴展提供了可能。
5、示例程序
THCAPP項目型插件系統(tǒng)包括插件維護模塊和插件兩大部分。插件維護模塊的功能是:添加、維護、刪除、運行插件,標(biāo)準(zhǔn)DLL組件,可以被CAPP或其他應(yīng)用程序調(diào)用;而插件就是實現(xiàn)某些特定的功能。
調(diào)用THCAPP二次開發(fā)插件系統(tǒng),首先會運行“插件維護模塊”,顯示“插件管理”管理對話框,如圖3所示:
圖3 插件管理對話框
默認的,“插件管理”窗口會列出天河公司提供的公用插件,用戶根據(jù)插件模板自己開發(fā)的插件,通過第一次的注冊后也會出現(xiàn)在這個列表中,供用戶選擇使用。
選擇某個插件,單擊“下一步”按鈕就運行插件對應(yīng)的DLL文件。實現(xiàn)這一步的前提就是用戶使用天河公司提供的項目型插件模板進行自己插件的開發(fā)工作,并不修改模板的接口,破壞兼容性。
下面將以“批量修改工藝文件狀態(tài)”這個插件作為實例,簡單的講講項目型插件的創(chuàng)建方法。
詳細的系統(tǒng)設(shè)計
雖然,一般看來系統(tǒng)設(shè)計工作與具體的軟件開發(fā)沒有多大的關(guān)聯(lián),但是詳細、完善的系統(tǒng)設(shè)計可以讓你的開發(fā)工作少走很多彎路。
“批量修改工藝文件狀態(tài)”插件的實現(xiàn)目標(biāo),就是將指定節(jié)點下的所有工藝文件全部修改到一種狀態(tài)。在這期間,需要運行插件的用戶設(shè)置修改后工藝文件狀態(tài)參數(shù),并且設(shè)定是否需要包含子節(jié)點中的工藝文件。插件要求提供指定節(jié)點下工藝文件的現(xiàn)有狀態(tài),供用戶瀏覽;還要包含不能進行“狀態(tài)修改”操作的工藝文件的列表。
通過上述的系統(tǒng)分析,得出至少需要三步向?qū)Р僮鞑拍軐崿F(xiàn)需求。下面就是進行代碼的編寫工作了。
在插件模板上開發(fā)新的插件
插件模板是由天河公司提供給用戶使用的在項目型插件系統(tǒng)中開發(fā)自定義插件的工具。在THCAPP的安裝路徑下,有模板的壓縮包文件。
復(fù)制插件模板,用VB打開模板工程,修改工程名和接口名,在圖3所示的“插件管理”窗口中,進行插件注冊操作,需要用到修改后的工程名和接口名,他們是插件組件的唯一標(biāo)識,非常重要,不能隨便修改。如4圖所示,“批量修改工藝文件狀態(tài)”插件的工程名變?yōu)?ldquo;THEditFilesStateLib”、接口名變?yōu)?ldquo;ITHEditFilesState”。
圖4 插件工程
在窗體文件中,復(fù)制“picDlgBck”控件數(shù)組,在這個插件中復(fù)制三頁,在每一頁放置不同的控件。并編寫與這些控件有關(guān)的代碼。
第一頁如圖5所示,用以設(shè)置修改后工藝文件的狀態(tài),以及“是否包含子節(jié)點中的工藝文件”、“是否顯示工藝文件信息”的狀態(tài)參數(shù)。
圖5 插件第一頁
第二頁如圖6所示,添加“ListView”列表控件,用以顯示指定節(jié)點下包含的工藝文件的信息(名稱、創(chuàng)建者、當(dāng)前狀態(tài))。如果在第一頁設(shè)置了“包含子節(jié)點中的工藝文件”狀態(tài),則需要顯示指定節(jié)點下的所有文件信息。
圖6 插件第二頁
第三頁如圖7所示,功能是提示第二頁顯示的工藝文件是否能進行修改工藝文件狀態(tài)的操作,圖7中表示所有工藝文件的狀態(tài)都可以被修改成圖5中指定的狀態(tài)。不能進行修改的工藝文件會被顯示在提示之下的“ListView”控件中。
圖7 插件第三頁
最后在“完成”按鈕的單擊事件中,編寫實現(xiàn)需求的代碼,一般地,這需要調(diào)用天河公司為二次開發(fā)插件提供的各種組件的接口功能函數(shù)。實現(xiàn)修改工藝文件狀態(tài)的功能比較簡單,只要遍歷用戶選擇的工藝文件,依次調(diào)用“THCAPPPDMDEVLib”組件的“THCAPPNDO”接口的“ChangeFileState”函數(shù)就可以了。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.oesoe.com/
本文標(biāo)題:THCAPP中項目型插件系統(tǒng)的設(shè)計與實現(xiàn)
本文網(wǎng)址:http://www.oesoe.com/html/solutions/14019316133.html