二开案例.表单插件.表单插件运行机制
【生命周期】
开始->
----------------------------------------------------------设计时----------------------------------------------------------
程序猿编写插件代码->
编译插件工程获得组件->
BOSIDE给单据注册插件,生成元数据XML->
----------------------------------------------------------运行时----------------------------------------------------------
用户登录星空->
用户打开单据,元数据XML被合成为运行时元数据实例FormMetadata(BusinessInfo+LayoutInfo)->
BOS平台生成单据的View和Model,此时表单插件被实例化后放入EventsProxy->
BOS平台使用EventsProxy有序触发插件的各种事件->
用户关闭单据>
插件实例销毁回收->
结束
【运行层级】
View层、Model层。
【案例演示】
下面将以采购订单的菜单点击事件为例,详细介绍表单插件的运行机制。
<1>编写表单插件,代码如下,编译后将组件放入应用服务器WebSite\bin目录下,重启IIS。
using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Util; using System; using System.ComponentModel; namespace Jac.XkDemo.BOS.Business.PlugIn { /// <summary> /// 【表单插件】Test /// </summary> [Description("【表单插件】Test"), HotUpdate] public class TestFormPlugIn : AbstractDynamicFormPlugIn { public override void BarItemClick(BarItemClickEventArgs e) { base.BarItemClick(e); if (e.BarItemKey.Equals("test", StringComparison.OrdinalIgnoreCase)) { // TODO } } } }
<2>登录BOSIDE,扩展采购订单,注册表单插件。
保存后,获得增量元数据XML如下。
采购订单标准插件如下图。
采购订单标准插件XML如下图。
此时,设计时的插件有9个。
<3>用户demo登录金蝶云星空,打开采购订单。
界面打开前,BOS平台会构建采购订单的运行时元数据实例FormMetadata(BusinessInfo+LayoutInfo),其中包含了设计时注册的9个插件,可使用VS2022调试插件(https://vip.kingdee.com/article/117230406226751232),观察变量View.BillBusinessInfo.GetForm().FormPlugins获取插件信息,如下图。
此时的插件集合,只是插件类的定义描述,尚未实例化。
<4>采购订单的运行时元数据实例构建完后,BOS平台会继续构建单据的View和Model,同时会将表单插件实例化,并存放到View和Model的EventsProxy属性的PlugIns集合中,可使用VS2022调试调试插件,观察变量View.EventsProxy获取运行时的插件实例信息,如下图。
此时的插件集合,已经完成了实例化和初始化,随时等待被BOS平台调用。
注意:此时的插件数量是12个,比设计时多了3个。因为运行时平台会动态注入插件,用户也可以二开动态注入插件。
插件实例化过程由Form的CreateFormPlugIn方法实现:
BillView.EventsProxy定义如下:
BillModel.EventsProxy定义如下:
<5>用户点击采购订单主菜单上的菜单test,BOS平台通过采购订单的View的EventsProxy的FireBarItemClick方法触发菜单点击事件BarItemClick,所有表单插件的BarItemClick事件都会被触发。
DynamicFormViewPlugInProxy.FireBarItemClick方法定义如下:
核心逻辑:遍历插件实例集合,逐个调用插件的BarItemClick方法。
BarItemClick事件触发位置:
<6>用户关闭采购订单,View被销毁,表单插件实例也随之被销毁回收。
---------------------------------------------------------------------------------------------------------
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.表单插件.表单插件运行机制
本文2024-09-23 04:01:03发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-162573.html
- 鼎新e-GoB2雲端ERP B2 線上課程G4進銷存開帳.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程F2-1廠商資料建立.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程H1生管參數設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C8自動分錄拋轉.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程F5詢價單.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程H4物料需求計算.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C5帳務管理.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C2-1會計科目建立(畫面介紹).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程I5託工單.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程G2基本資料-倉庫資料建立.pdf