


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
金蝶K3插件编程 6.1 插件编程概述 K/3运行平台为K/3 BOS开发的业务单据提供了稳定、标准的运行环境,但为了实现客户更加个性化的需求和保持K/3 BOS架构的开放性,还为客户化开发提供了插件编程机制,通过K/3 BOS业务单据和序时簿事件代理组件,把业务单据处理的关键事件接口抛出,客户可以接收这个事件代理组件,并对组件的抛出事件编程,从而实现个性化的事件处理方法,对K/3 BOS运行平台进行有效的扩充和扩展。 6.2 插件编程原理 6.2.1 什么是插件 插件(Plug-Ins)是一种专门为某一软件设计、用于功能扩充的程序。 通过插件可以实现客户个性化的定制。 插件不只是被动的接受宿主程序调用,更可以控制宿主程序以完成一些特定功能。 6.2.2 插件原理 插件原理静态图如下所示: 结合上图,可以对插件原理简单描述如下: 以事件驱动为基础: 插件(Plug-Ins)响应主程序发出的事件, 在事件处理过程中完成功能。 捕获事件: 通过应用程序代理对象(ApplicationProxy) 应用程序代理对象:就是对应用程序(宿主程序)本身的包装 包含很多事件,在应用程序(Application),也就是宿主程序中激发事件,在插件引用这个对象就可以响应这些事件。 相当于架在应用程序和插件之间的桥梁。 本身不包含任何业务功能,仅仅用来发出事件和传递数据。 结合宿主程序(Application)、程序代理(ApplicationProxy)和插件(Plug-Ins)之间的关系,可以画出如下的插件原理动态图: 6.2.3 应用程序代理对象(ApplicationProxy) 在插件编程的机制中,最关键的还是应用程序代理对象(ApplicationProxy),因为这个对象相当于宿主程序和插件之间的桥梁,宿主程序的代言人,本身并不包括任何业务功能仅仅用来发出事件和传递数据。它发出的事件越多,则插件可以扩展的功能点越多,对宿主程序的控制则越灵活; 为何不直接引用应用程序本身,而要代理搭桥? 首先,一个应用程序由多个组件(包)组成,如果插件要直接引用它们来捕获事件也可以的。但是这样的话就不得不引用很多个组件(包),不得不定义很多个接口来传入对象。这会给Plug-Ins开发者一种支离破碎的感觉。 更重要的,不把所有的组件及核心算法都暴露给插件的开发者。仅有选择地公布部分组件。 还有,在VB6.0中,插件将没有机会引用标准Exe的对象库 6.2.4 对插件支持的开发步骤 1. 建立一个应用程序代理(模型)类 class ApplicationProxy public: event1(); /事件 event2(Parameter,); /事件 Protect: RaiseEvent1 /发出事件 RaiseEvent2(Parameter,); /发出事件 ; 也可提供一些属性:DB连接对象,当前用户 2. 在应用程序的”关键点”抛出事件。 如(伪码):ApplicationProxy.RaiseEvent 3. 发出事件的方法在应用程序里面里调用 它对于插件的开发者应该是不可见,(不过在VB6.0里面不太容易实现,VB6.0中RaiseEvent必须是Public,所以会有一种被偷窥的感觉)。 4. 插件捕获到这些事件,这就是插件的核心! 什么是”关键点”这完全取决于你。 很明显”关键点”越多,Plug-Ins能完成的功能就愈多 事件所带的参数完全由你来决定,当然,参数应该和事件的上下文有关。 6.3 客户端插件编程 K/3 BOS为客户端插件的编写,特别封装了一个K/3 BOS运行平台事件代理组件包K3ClassEvents.dll,这个组件包括了三个接口组件,分别是BaseClassEvent, BillEvent和ListEvents。本节将着重说明如何在K/3 BOS客户端插件中如何才能接收单据和序时簿事件,并列出单据和序时簿代理组件包含的方法、属性、事件,以及提供给插件开发者使用的数据包结构。 6.3.1 插件公共入口方法 按如下步骤,客户可以在自己的插件中接收到K/3 BOS抛出的事件和数据包,编写自己的个性化需求代码。1. 在VB 6.0新建一个ActiveX dll类型的工程,工程的名称可以自由定义。 2. 把工程中默认添加的类名改为一个更贴切的名称。 3. 向工程中引用组件:K3ClassEvents 4. 在类中添加一个BillEvent类型(单据事件代理)的内部变量定义: Private WithEvents m_BillInterface As BillEvent 这样的定义可以让程序员对BillEvent类型的变量中的事件进行编程。 5. 实现K/3 BOS对插件要求的标准入口方法Show()和组件销毁方法: 插件的入口方法,K/3 BOS在检测到有插件时,生成插件实例后,首先就会调用本方法,把单据事件代理组件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. 至此,就可以对事件代理组件的事件编程,响应K/3 BOS抛出的单据处理事件(以上的步骤是针对单据事件代理组件BillEvent编写的,对于序时簿事件代理组件ListEvents,原理一样)。如下的代码,则是响应抛出的单据处理事件AfterLoadBill: Private Sub m_BillInterface_AfterLoadBill() MsgBox 接收、响应的是单据事件AfterLoadBill, ,金蝶提示 End Sub 综上所述,为了接收K/3 BOS运行平台抛出的事件,并对事件进行编程,必须定义一个类型为事件代理组件的对象变量,实现公共插件入口方法Show,并且用前面定义的对象变量接收方法Show传入的参数。 6.3.2 单据事件代理组件BillEvent BillEvent接口用来抛出业务单据运行时刻事件和业务单据模板信息(属性TableInfo,类型为KFO.Dictionary)以及业务单据的数据信息(属性Data,类型为KFO.Dictionary)。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版外汇市场交易手续费支付合同
- 2025年度航空航天材料采购合同规范范本
- 2025年度企业环保审批代办服务合同
- 2025版配餐服务食品安全责任协议书版范本
- 2025版历史文化遗址保护与修复居间服务协议
- 2025版挖掘机租赁项目安全生产责任书
- 2025版新能源充电桩售后服务及保障合同
- 2025版水利工程土方施工合同
- 2025年公积金贷款二手房买卖合同及合同解除条件条款
- 2025年度高端会所室内涂料施工服务协议
- 茂县生活垃圾资源化综合利用项目环评报告
- 蒙台梭利教学法PPT完整全套教学课件
- 4月份公路养护工作计划
- 保安员在岗培训法律-2
- 初中英语中考专题训练阅读理解-应用文篇
- YC/T 210.2-2006烟叶代码第2部分:烟叶形态代码
- GB/T 20671.1-2006非金属垫片材料分类体系及试验方法第1部分:非金属垫片材料分类体系
- 熵权法教学讲解课件
- 医师病理知识定期考核试题与答案
- 课堂因“融错·容错·溶措”而精彩
- 安宁疗护服务流程
评论
0/150
提交评论