


全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
金蝶K3插件編程 6.1 插件編程概述 K/3運(yùn)行平臺為K/3 BOS開發(fā)的業(yè)務(wù)單據(jù)提供了穩(wěn)定、標(biāo)準(zhǔn)的運(yùn)行環(huán)境,但為了實現(xiàn)客戶更加個性化的需求和保持K/3 BOS架構(gòu)的開放性,還為客戶化開發(fā)提供了插件編程機(jī)制,通過K/3 BOS業(yè)務(wù)單據(jù)和序時簿事件代理組件,把業(yè)務(wù)單據(jù)處理的關(guān)鍵事件接口拋出,客戶可以接收這個事件代理組件,并對組件的拋出事件編程,從而實現(xiàn)個性化的事件處理方法,對K/3 BOS運(yùn)行平臺進(jìn)行有效的擴(kuò)充和擴(kuò)展。 6.2 插件編程原理 6.2.1 什么是插件 插件(Plug-Ins)是一種專門為某一軟件設(shè)計、用于功能擴(kuò)充的程序。 通過插件可以實現(xiàn)客戶個性化的定制。 插件不只是被動的接受宿主程序調(diào)用,更可以控制宿主程序以完成一些特定功能。 6.2.2 插件原理 插件原理靜態(tài)圖如下所示: 結(jié)合上圖,可以對插件原理簡單描述如下: 以事件驅(qū)動為基礎(chǔ): 插件(Plug-Ins)響應(yīng)主程序發(fā)出的事件, 在事件處理過程中完成功能。 捕獲事件: 通過應(yīng)用程序代理對象(ApplicationProxy) 應(yīng)用程序代理對象:就是對應(yīng)用程序(宿主程序)本身的包裝 包含很多事件,在應(yīng)用程序(Application),也就是宿主程序中激發(fā)事件,在插件引用這個對象就可以響應(yīng)這些事件。 相當(dāng)于架在應(yīng)用程序和插件之間的橋梁。 本身不包含任何業(yè)務(wù)功能,僅僅用來發(fā)出事件和傳遞數(shù)據(jù)。 結(jié)合宿主程序(Application)、程序代理(ApplicationProxy)和插件(Plug-Ins)之間的關(guān)系,可以畫出如下的插件原理動態(tài)圖: 6.2.3 應(yīng)用程序代理對象(ApplicationProxy) 在插件編程的機(jī)制中,最關(guān)鍵的還是應(yīng)用程序代理對象(ApplicationProxy),因為這個對象相當(dāng)于宿主程序和插件之間的橋梁,宿主程序的代言人,本身并不包括任何業(yè)務(wù)功能僅僅用來發(fā)出事件和傳遞數(shù)據(jù)。它發(fā)出的事件越多,則插件可以擴(kuò)展的功能點越多,對宿主程序的控制則越靈活; 為何不直接引用應(yīng)用程序本身,而要代理搭橋? 首先,一個應(yīng)用程序由多個組件(包)組成,如果插件要直接引用它們來捕獲事件也可以的。但是這樣的話就不得不引用很多個組件(包),不得不定義很多個接口來傳入對象。這會給Plug-Ins開發(fā)者一種支離破碎的感覺。 更重要的,不把所有的組件及核心算法都暴露給插件的開發(fā)者。僅有選擇地公布部分組件。 還有,在VB6.0中,插件將沒有機(jī)會引用標(biāo)準(zhǔn)Exe的對象庫 6.2.4 對插件支持的開發(fā)步驟 1. 建立一個應(yīng)用程序代理(模型)類 class ApplicationProxy public: event1(); /事件 event2(Parameter,); /事件 Protect: RaiseEvent1 /發(fā)出事件 RaiseEvent2(Parameter,); /發(fā)出事件 ; 也可提供一些屬性:DB連接對象,當(dāng)前用戶 2. 在應(yīng)用程序的”關(guān)鍵點”拋出事件。 如(偽碼):ApplicationProxy.RaiseEvent 3. 發(fā)出事件的方法在應(yīng)用程序里面里調(diào)用 它對于插件的開發(fā)者應(yīng)該是不可見,(不過在VB6.0里面不太容易實現(xiàn),VB6.0中RaiseEvent必須是Public,所以會有一種被偷窺的感覺)。 4. 插件捕獲到這些事件,這就是插件的核心! 什么是”關(guān)鍵點”這完全取決于你。 很明顯”關(guān)鍵點”越多,Plug-Ins能完成的功能就愈多 事件所帶的參數(shù)完全由你來決定,當(dāng)然,參數(shù)應(yīng)該和事件的上下文有關(guān)。 6.3 客戶端插件編程 K/3 BOS為客戶端插件的編寫,特別封裝了一個K/3 BOS運(yùn)行平臺事件代理組件包K3ClassEvents.dll,這個組件包括了三個接口組件,分別是BaseClassEvent, BillEvent和ListEvents。本節(jié)將著重說明如何在K/3 BOS客戶端插件中如何才能接收單據(jù)和序時簿事件,并列出單據(jù)和序時簿代理組件包含的方法、屬性、事件,以及提供給插件開發(fā)者使用的數(shù)據(jù)包結(jié)構(gòu)。 6.3.1 插件公共入口方法 按如下步驟,客戶可以在自己的插件中接收到K/3 BOS拋出的事件和數(shù)據(jù)包,編寫自己的個性化需求代碼。1. 在VB 6.0新建一個ActiveX dll類型的工程,工程的名稱可以自由定義。 2. 把工程中默認(rèn)添加的類名改為一個更貼切的名稱。 3. 向工程中引用組件:K3ClassEvents 4. 在類中添加一個BillEvent類型(單據(jù)事件代理)的內(nèi)部變量定義: Private WithEvents m_BillInterface As BillEvent 這樣的定義可以讓程序員對BillEvent類型的變量中的事件進(jìn)行編程。 5. 實現(xiàn)K/3 BOS對插件要求的標(biāo)準(zhǔn)入口方法Show()和組件銷毀方法: 插件的入口方法,K/3 BOS在檢測到有插件時,生成插件實例后,首先就會調(diào)用本方法,把單據(jù)事件代理組件BillEvent實例對象按地址傳給插件,使插件可以接收代理組件拋出的事件 Public Sub Show(ByVal oBillInterface As Object) Set m_BillInterface = oBillInterface End Sub 在插件被銷毀時,確保會同時銷毀對代理組件的引用 Private Sub Class_Terminate() Set m_BillInterface = Nothing End Sub 6. 至此,就可以對事件代理組件的事件編程,響應(yīng)K/3 BOS拋出的單據(jù)處理事件(以上的步驟是針對單據(jù)事件代理組件BillEvent編寫的,對于序時簿事件代理組件ListEvents,原理一樣)。如下的代碼,則是響應(yīng)拋出的單據(jù)處理事件AfterLoadBill: Private Sub m_BillInterface_AfterLoadBill() MsgBox 接收、響應(yīng)的是單據(jù)事件AfterLoadBill, ,金蝶提示 End Sub 綜上所述,為了接收K/3 BOS運(yùn)行平臺拋出的事件,并對事件進(jìn)行編程,必須定義一個類型為事件代理組件的對象變量,實現(xiàn)公共插件入口方法Show,并且用前面定義的對象變量接收方法Show傳入的參數(shù)。 6.3.2 單據(jù)事件代理組件BillEvent BillEvent接口用來拋出業(yè)務(wù)單據(jù)運(yùn)行時刻事件和業(yè)務(wù)單據(jù)模板信息(屬性TableInfo,類型為KFO.Dictionary)以及業(yè)務(wù)單據(jù)的數(shù)據(jù)信息(屬性Data,類型為KFO.Dictionary)。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025簡易店鋪轉(zhuǎn)讓合同模板
- 2025年度企業(yè)形象識別系統(tǒng)CIS建設(shè)設(shè)計與實施合同
- 心電監(jiān)護(hù)儀器使用流程
- 戀愛婚姻生活中的道德規(guī)范
- 疼痛護(hù)理常規(guī)
- 2025亞馬遜美容個護(hù)市場深度洞察報告
- 三晉卓越聯(lián)盟·2024-2025學(xué)年高三5月質(zhì)量檢測卷(25-X-635C)歷史(B)
- 浙江省六校(杭州二中 溫州中學(xué) 金華一中 紹興一中 舟山中學(xué) 衢州二中)聯(lián)盟2025屆高三5月模擬預(yù)測卷英語試卷+答案
- 小兒營養(yǎng)性缺鐵性貧血的臨床護(hù)理
- 醫(yī)學(xué)倫理學(xué)情景劇
- 項目六 車輛舒適系統(tǒng)故障檢修-教學(xué)課件-unlimit
- 工程物料五金商品清單大全及價格
- JJF(津) 02-2020 交、直流電焊機(jī)焊接電源校準(zhǔn)規(guī)范高清-現(xiàn)行
- DB34T1859-2020 巖棉薄抹灰外墻外保溫系統(tǒng)應(yīng)用技術(shù)規(guī)程
- 休克的超聲評估
- (精心整理)林海雪原閱讀題及答案
- 高中生物必修二全套課件
- 溝槽支護(hù)及土方開挖專項施工方案
- 安踏案例分析
- 四年級下冊語文文言文閱讀理解專項精選練習(xí)
- 五年級人教PEP版英語下冊連詞成句專項積累練習(xí)
評論
0/150
提交評論