欢迎来到天天文库
浏览记录
ID:39317522
大小:38.02 KB
页数:3页
时间:2019-06-30
《金蝶K3插件编程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、金蝶K3插件编程6.1插件编程概述K/3运行平台为K/3BOS开发的业务单据提供了稳定、标准的运行环境,但为了实现客户更加个性化的需求和保持K/3BOS架构的开放性,还为客户化开发提供了插件编程机制,通过K/3BOS业务单据和序时簿事件代理组件,把业务单据处理的关键事件接口抛出,客户可以接收这个事件代理组件,并对组件的抛出事件编程,从而实现个性化的事件处理方法,对K/3BOS运行平台进行有效的扩充和扩展。6.2插件编程原理6.2.1什么是插件?插件(Plug-Ins)是一种专门为某一软件设计、用于功能扩充的程序。?通过插件可以实现客户个性化的定制。?插件不只是被动的接受宿主程序
2、调用,更可以控制宿主程序以完成一些特定功能。6.2.2插件原理插件原理静态图如下所示:结合上图,可以对插件原理简单描述如下:?以事件驱动为基础:?插件(Plug-Ins)响应主程序发出的事件,?在事件处理过程中完成功能。?捕获事件:通过应用程序代理对象(ApplicationProxy)?应用程序代理对象:就是对应用程序(宿主程序)本身的包装?包含很多事件,在应用程序(Application),也就是宿主程序中激发事件,在插件引用这个对象就可以响应这些事件。?相当于架在应用程序和插件之间的桥梁。?本身不包含任何业务功能,仅仅用来发出事件和传递数据。结合宿主程序(Applicat
3、ion)、程序代理(ApplicationProxy)和插件(Plug-Ins)之间的关系,可以画出如下的插件原理动态图:6.2.3应用程序代理对象(ApplicationProxy)在插件编程的机制中,最关键的还是应用程序代理对象(ApplicationProxy),因为这个对象相当于宿主程序和插件之间的桥梁,宿主程序的代言人,本身并不包括任何业务功能仅仅用来发出事件和传递数据。它发出的事件越多,则插件可以扩展的功能点越多,对宿主程序的控制则越灵活;为何不直接引用应用程序本身,而要代理搭桥??首先,一个应用程序由多个组件(包)组成,如果插件要直接引用它们来捕获事件也可以的。但
4、是这样的话就不得不引用很多个组件(包),不得不定义很多个接口来传入对象。这会给Plug-Ins开发者一种支离破碎的感觉。?更重要的,不把所有的组件及核心算法都暴露给插件的开发者。仅有选择地公布部分组件。?还有,在VB6.0中,插件将没有机会引用标准Exe的对象库6.2.4对插件支持的开发步骤1.建立一个应用程序代理(模型)类classApplicationProxy{public:event1();//事件event2(Parameter,…);//事件Protect:RaiseEvent1//发出事件RaiseEvent2(Parameter,…);//发出事件…};也可提供
5、一些属性:DB连接对象,当前用户…2.在应用程序的”关键点”抛出事件。如(伪码):ApplicationProxy.RaiseEvent3.发出事件的方法在应用程序里面里调用它对于插件的开发者应该是不可见,(不过在VB6.0里面不太容易实现,VB6.0中RaiseEvent必须是Public,所以会有一种被偷窥的感觉)。4.插件捕获到这些事件,这就是插件的核心!什么是”关键点”这完全取决于你。很明显”关键点”越多,Plug-Ins能完成的功能就愈多事件所带的参数完全由你来决定,当然,参数应该和事件的上下文有关。6.3客户端插件编程K/3BOS为客户端插件的编写,特别封装了一个K
6、/3BOS运行平台事件代理组件包K3ClassEvents.dll,这个组件包括了三个接口组件,分别是BaseClassEvent,BillEvent和ListEvents。本节将着重说明如何在K/3BOS客户端插件中如何才能接收单据和序时簿事件,并列出单据和序时簿代理组件包含的方法、属性、事件,以及提供给插件开发者使用的数据包结构。6.3.1插件公共入口方法按如下步骤,客户可以在自己的插件中接收到K/3BOS抛出的事件和数据包,编写自己的个性化需求代码。1.在VB6.0新建一个ActiveXdll类型的工程,工程的名称可以自由定义。2.把工程中默认添加的类名改为一个更贴切的名
7、称。3.向工程中引用组件:K3ClassEvents4.在类中添加一个BillEvent类型(单据事件代理)的内部变量定义:PrivateWithEventsm_BillInterfaceAsBillEvent这样的定义可以让程序员对BillEvent类型的变量中的事件进行编程。5.实现K/3BOS对插件要求的标准入口方法Show()和组件销毁方法:'插件的入口方法,K/3BOS在检测到有插件时,生成插件实例后,首先就会调用本方法,把单据事件代理组件BillEvent实例对象按地址传给插件,
此文档下载收益归作者所有