U810.0插件开发和注册 U8API和插件框架
U810.0插件开发和注册
袁昌龙
U8平台及公共开发部
2011-02-23
目录
1 插件开发....................................................................................................................................... 2
1.1 插件事件定义 .................................................................................................................... 2 1.2 插件上下文 ........................................................................................................................ 2 1.3 特别注意............................................................................................................................ 3 2 插件注册....................................................................................................................................... 3
2.1 注册同步插件 .................................................................................................................... 4 2.2 注册异步插件 .................................................................................................................... 7
第 1 页,共 8 页
U810.0插件开发和注册 U8API和插件框架
1 插件开发
按照设计时约定,U8插件事件定义采用如下规范:包括一个errMsg参数(最后一个),同时返回值一般为bool类型。
1.1 插件事件定义
典型插件事件定义如下:
bool PluginEventInterface(...,string errMsg) 插件最后一个参数为返回错误信息,参数名可以不为errMsg,可定义为其他任何名称并且大小写不受限制;插件执行成功与否,通过返回Bool类型值判断。
其他参数,不同档案或单据不一样,可以在“UAP”目录下的“U8API资源管理器”中,请选择关注的档案或单据的事件节点下查看,在此不赘述。
1.2 插件上下文
插件事件接口参数中,没有定义Login、连接对象等环境参数,但在插件内部可以通过上下文对象获取这些信息,如下代码(VB)所示:
第 2 页,共 8 页
U810.0插件开发和注册 U8API和插件框架
'********** 获取插件上下文信息:登录对象、连接、事件ID *************** '请引用TLB文件:U8SOFT\\UFMOM\\U8APIFramework\\UFIDA.U8.MomServiceCommon.tlb '获取插件上下文 Dim envCtxCache As New UFIDA_U8_MomServiceCommon.MomCallContextCache Dim envCtx As UFIDA_U8_MomServiceCommon.MomCallContext Set envCtx = envCtxCache.CurrentMomCallContext '从上下文获取U8Login对象 Dim login As Object Set login = envCtx.U8Login '从上下文获取帐套库连接对象 Dim conn As ADODB.Connection Set conn = envCtx.BizDbConnection '从上下文获取事件ID Dim eventId As String eventId = envCtx.EventIdentity '获取其它用户自定义上下文 ' If envCtx.HasEnvContext(\用户自定义上下文ID\' userCtxValue = envCtx.GetEnvContext(\用户自定义上下文ID\' End If '*********** end ***************************************************** 1.3 特别注意
插件开发特别需要注意:
1) 开发的插件接口必须与相应的档案或单据的插件事件定义相匹配。如果不匹配,则不允许注册在该插件事件下;一个插件事件下可以定义多个插件,而一个插件则必须属于某个插件事件; 2) 插件事件接口参数中,没有定义Login、连接对象等环境参数,但在插件内部可以通过上下文对象获取这些信息,按如上代码所示。
2 插件注册
在“开始”->“程序”->“用友ERP-U8”->“UAP”目录下找到“U8API资源管理器”,单击,登录,进入“U8API资源管理器”。为方便统一管理,在注册插件之前,先查找插件所属的业务模块,然后找到相应的插件事件。在插件事件节点下,可以看到两种类型的插件节点:同步
第 3 页,共 8 页
U810.0插件开发和注册 U8API和插件框架
插件和异步插件。在“同步插件”下注册插件,会注册同步插件;在“异步插件”下注册插件,会注册异步插件。
2.1 注册同步插件
右键单击“同步插件”,选择“所有任务”->“注册同步插件”,弹出“注册新的同步插件”对话框,填入插件编码和插件名称(注意插件编码不要和已有的插件编码重复,会自动检验!)。然后选择该插件关联的帐套,如果不选,默认关联所有的帐套,即“ALL”,如下图1所示:
图 1 注册同步插件
另外,需要重点说明的是,对同步插件而言,支持按顺序执行插件。在注册的时候,可以设置插件的执行顺序,比如,有三个插件:同步插件1、同步插件2和同步插件3,现在需要将它们的执行顺序调整为:先执行同步插件2,然后执行同步插件1,最后执行同步插件3。可以单击同步插件2的“设置插件执行顺序”,弹出对话框,通过方向键和调整同步插件2的执行顺序,将同步插件2的调整至同步插件1前执行即可,如下图2所示:
第 4 页,共 8 页
U810.0插件开发和注册 U8API和插件框架
图 2 调整同步插件执行顺序
设置完插件的基本信息后,需要进行重要的“插件定义”,单击“插件定义/描述”页签,单击“修改”,选择“插件类型”(即是.net插件,还是Com插件),如下图3所示:
图 3 插件定义
第 5 页,共 8 页