


全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
金蝶K3插件編程 6.1 插件編程概述 K/3運(yùn)行平臺(tái)為K/3 BOS開發(fā)的業(yè)務(wù)單據(jù)提供了穩(wěn)定、標(biāo)準(zhǔn)的運(yùn)行環(huán)境,但為了實(shí)現(xiàn)客戶更加個(gè)性化的需求和保持K/3 BOS架構(gòu)的開放性,還為客戶化開發(fā)提供了插件編程機(jī)制,通過K/3 BOS業(yè)務(wù)單據(jù)和序時(shí)簿事件代理組件,把業(yè)務(wù)單據(jù)處理的關(guān)鍵事件接口拋出,客戶可以接收這個(gè)事件代理組件,并對(duì)組件的拋出事件編程,從而實(shí)現(xiàn)個(gè)性化的事件處理方法,對(duì)K/3 BOS運(yùn)行平臺(tái)進(jìn)行有效的擴(kuò)充和擴(kuò)展。 6.2 插件編程原理 6.2.1 什么是插件 插件(Plug-Ins)是一種專門為某一軟件設(shè)計(jì)、用于功能擴(kuò)充的程序。 通過插件可以實(shí)現(xiàn)客戶個(gè)性化的定制。 插件不只是被動(dòng)的接受宿主程序調(diào)用,更可以控制宿主程序以完成一些特定功能。 6.2.2 插件原理 插件原理靜態(tài)圖如下所示: 結(jié)合上圖,可以對(duì)插件原理簡(jiǎn)單描述如下: 以事件驅(qū)動(dòng)為基礎(chǔ): 插件(Plug-Ins)響應(yīng)主程序發(fā)出的事件, 在事件處理過程中完成功能。 捕獲事件: 通過應(yīng)用程序代理對(duì)象(ApplicationProxy) 應(yīng)用程序代理對(duì)象:就是對(duì)應(yīng)用程序(宿主程序)本身的包裝 包含很多事件,在應(yīng)用程序(Application),也就是宿主程序中激發(fā)事件,在插件引用這個(gè)對(duì)象就可以響應(yīng)這些事件。 相當(dāng)于架在應(yīng)用程序和插件之間的橋梁。 本身不包含任何業(yè)務(wù)功能,僅僅用來(lái)發(fā)出事件和傳遞數(shù)據(jù)。 結(jié)合宿主程序(Application)、程序代理(ApplicationProxy)和插件(Plug-Ins)之間的關(guān)系,可以畫出如下的插件原理動(dòng)態(tài)圖: 6.2.3 應(yīng)用程序代理對(duì)象(ApplicationProxy) 在插件編程的機(jī)制中,最關(guān)鍵的還是應(yīng)用程序代理對(duì)象(ApplicationProxy),因?yàn)檫@個(gè)對(duì)象相當(dāng)于宿主程序和插件之間的橋梁,宿主程序的代言人,本身并不包括任何業(yè)務(wù)功能僅僅用來(lái)發(fā)出事件和傳遞數(shù)據(jù)。它發(fā)出的事件越多,則插件可以擴(kuò)展的功能點(diǎn)越多,對(duì)宿主程序的控制則越靈活; 為何不直接引用應(yīng)用程序本身,而要代理搭橋? 首先,一個(gè)應(yīng)用程序由多個(gè)組件(包)組成,如果插件要直接引用它們來(lái)捕獲事件也可以的。但是這樣的話就不得不引用很多個(gè)組件(包),不得不定義很多個(gè)接口來(lái)傳入對(duì)象。這會(huì)給Plug-Ins開發(fā)者一種支離破碎的感覺。 更重要的,不把所有的組件及核心算法都暴露給插件的開發(fā)者。僅有選擇地公布部分組件。 還有,在VB6.0中,插件將沒有機(jī)會(huì)引用標(biāo)準(zhǔn)Exe的對(duì)象庫(kù) 6.2.4 對(duì)插件支持的開發(fā)步驟 1. 建立一個(gè)應(yīng)用程序代理(模型)類 class ApplicationProxy public: event1(); /事件 event2(Parameter,); /事件 Protect: RaiseEvent1 /發(fā)出事件 RaiseEvent2(Parameter,); /發(fā)出事件 ; 也可提供一些屬性:DB連接對(duì)象,當(dāng)前用戶 2. 在應(yīng)用程序的”關(guān)鍵點(diǎn)”拋出事件。 如(偽碼):ApplicationProxy.RaiseEvent 3. 發(fā)出事件的方法在應(yīng)用程序里面里調(diào)用 它對(duì)于插件的開發(fā)者應(yīng)該是不可見,(不過在VB6.0里面不太容易實(shí)現(xiàn),VB6.0中RaiseEvent必須是Public,所以會(huì)有一種被偷窺的感覺)。 4. 插件捕獲到這些事件,這就是插件的核心! 什么是”關(guān)鍵點(diǎn)”這完全取決于你。 很明顯”關(guān)鍵點(diǎn)”越多,Plug-Ins能完成的功能就愈多 事件所帶的參數(shù)完全由你來(lái)決定,當(dāng)然,參數(shù)應(yīng)該和事件的上下文有關(guān)。 6.3 客戶端插件編程 K/3 BOS為客戶端插件的編寫,特別封裝了一個(gè)K/3 BOS運(yùn)行平臺(tái)事件代理組件包K3ClassEvents.dll,這個(gè)組件包括了三個(gè)接口組件,分別是BaseClassEvent, BillEvent和ListEvents。本節(jié)將著重說(shuō)明如何在K/3 BOS客戶端插件中如何才能接收單據(jù)和序時(shí)簿事件,并列出單據(jù)和序時(shí)簿代理組件包含的方法、屬性、事件,以及提供給插件開發(fā)者使用的數(shù)據(jù)包結(jié)構(gòu)。 6.3.1 插件公共入口方法 按如下步驟,客戶可以在自己的插件中接收到K/3 BOS拋出的事件和數(shù)據(jù)包,編寫自己的個(gè)性化需求代碼。1. 在VB 6.0新建一個(gè)ActiveX dll類型的工程,工程的名稱可以自由定義。 2. 把工程中默認(rèn)添加的類名改為一個(gè)更貼切的名稱。 3. 向工程中引用組件:K3ClassEvents 4. 在類中添加一個(gè)BillEvent類型(單據(jù)事件代理)的內(nèi)部變量定義: Private WithEvents m_BillInterface As BillEvent 這樣的定義可以讓程序員對(duì)BillEvent類型的變量中的事件進(jìn)行編程。 5. 實(shí)現(xiàn)K/3 BOS對(duì)插件要求的標(biāo)準(zhǔn)入口方法Show()和組件銷毀方法: 插件的入口方法,K/3 BOS在檢測(cè)到有插件時(shí),生成插件實(shí)例后,首先就會(huì)調(diào)用本方法,把單據(jù)事件代理組件BillEvent實(shí)例對(duì)象按地址傳給插件,使插件可以接收代理組件拋出的事件 Public Sub Show(ByVal oBillInterface As Object) Set m_BillInterface = oBillInterface End Sub 在插件被銷毀時(shí),確保會(huì)同時(shí)銷毀對(duì)代理組件的引用 Private Sub Class_Terminate() Set m_BillInterface = Nothing End Sub 6. 至此,就可以對(duì)事件代理組件的事件編程,響應(yīng)K/3 BOS拋出的單據(jù)處理事件(以上的步驟是針對(duì)單據(jù)事件代理組件BillEvent編寫的,對(duì)于序時(shí)簿事件代理組件ListEvents,原理一樣)。如下的代碼,則是響應(yīng)拋出的單據(jù)處理事件AfterLoadBill: Private Sub m_BillInterface_AfterLoadBill() MsgBox 接收、響應(yīng)的是單據(jù)事件AfterLoadBill, ,金蝶提示 End Sub 綜上所述,為了接收K/3 BOS運(yùn)行平臺(tái)拋出的事件,并對(duì)事件進(jìn)行編程,必須定義一個(gè)類型為事件代理組件的對(duì)象變量,實(shí)現(xiàn)公共插件入口方法Show,并且用前面定義的對(duì)象變量接收方法Show傳入的參數(shù)。 6.3.2 單據(jù)事件代理組件BillEvent BillEvent接口用來(lái)拋出業(yè)務(wù)單據(jù)運(yùn)行時(shí)刻事件和業(yè)務(wù)單據(jù)模板信息(屬性TableInfo,類型為KFO.Dictionary)以及業(yè)務(wù)單據(jù)的數(shù)據(jù)信息(屬性Data,類型為KFO.Dictionary)。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 老公坐牢協(xié)議書
- 炒貨機(jī)閑置轉(zhuǎn)讓協(xié)議書
- 租金分配協(xié)議書
- 財(cái)產(chǎn)質(zhì)押協(xié)議書
- 英皇文化協(xié)議書
- 股權(quán)待持協(xié)議書
- 北京市勞動(dòng)合同協(xié)議書
- 退伙退股協(xié)議書
- 學(xué)校招廚師合同協(xié)議書
- 均質(zhì)機(jī)出售轉(zhuǎn)讓協(xié)議書
- JJG 1029-2007渦街流量計(jì)
- 高技能人才培訓(xùn)基地的風(fēng)險(xiǎn)管理制度
- 藥食同源培訓(xùn)教材課件
- 雞鴨屠宰生產(chǎn)企業(yè)安全風(fēng)險(xiǎn)分級(jí)管控資料
- 5S點(diǎn)檢表1(日檢查表)
- 工程物料五金商品清單大全及價(jià)格
- 訂單評(píng)審記錄表
- 河北XX鋼鐵2#高爐2017年擴(kuò)容大修(方案)
- (精心整理)林海雪原閱讀題及答案
- 19、38本翻譯附件104-bs10中文版
- 溝槽支護(hù)及土方開挖專項(xiàng)施工方案
評(píng)論
0/150
提交評(píng)論