④内部公开请勿外传版权所有©1993-2012金蝶软件(中国)有限公司④内部公开请勿外传K/3产品部K/3CloudV1.0技术开发培训----BOS业务插件开发④内部公开请勿外传P2课程简介:本课程介绍K/3CloudBOS业务插件的开发及配置,以功能讲解辅之案例演练帮助学员快速掌握K/3CloudBOS平台的核心功能。讲师:肖光雁课程说明:④内部公开请勿外传P3概述业务插件概览如何开发插件案例演练目录④内部公开请勿外传P4概述业务插件概览如何开发插件案例演练目录④内部公开请勿外传P5K/3Cloud分层架构图展示层SilverlightWeb客户端WPF桌面客户端服务层动态表单UI生成服务内核层表单动态生成引擎动态表单控制服务Web服务器动态表单视图模型动态表单控制器动态表单数据模型扩展逻辑层动态表单编程接口表单生成插件表单逻辑服务表单操作缺省值计算函数业务插件动态表单元数据应用服务器动态表单逻辑组件动态表单服务端插件动态表单服务端编程接口数据库服务器元数据业务数据校验规则客户端公共编程模型+客户端插件+第三方设备集成接口移动客户端Office客户端HttpHttp业务服务④内部公开请勿外传P6概述业务插件概览如何开发插件案例演练目录④内部公开请勿外传P7BOS业务插件用以解决什么问题?标准业务对象的的业务逻辑应用:标准业务对象没有实现的控制;已有操作和服务未支持的功能;更灵活的控制方式和客户化定制;客户二次开发的需求;快速开发、快速实施、快速应用;可配置,可测试,快速部署;有哪些插件?Web层表单插件列表插件表单构建插件App层服务插件BOS业务插件开发概览④内部公开请勿外传P8插件接口特性使用C#4.0支持继承和扩展已封装业务插件;组织控制;基础资料分配………支持插件顺序支持动态语言IronPython2.6.1BOS业务插件开发概览④内部公开请勿外传P9BOS业务插件开发概览—插件分类表单插件用于单个表单编辑界面运行于Web层列表插件用于列表运行于Web层④内部公开请勿外传P10BOS业务插件开发概览–插件分类服务插件挂在操作上的服务插件,对于操作进行扩展和校验器配合使用运行于App层插件配置入口操作列表–编辑操作④内部公开请勿外传P11BOS业务插件开发概览–插件分类表单构建插件对于表单界面进行自定义的插件运行于Web层自定义菜单、控件④内部公开请勿外传P12BOS业务插件开发概览动态表单元数据结构④内部公开请勿外传P13BOS业务插件开发概览动态表单元数据结构④内部公开请勿外传P14概述业务插件概览如何开发插件–接口结构–插件中常用的对象说明–具体的代码示例案例演练目录④内部公开请勿外传P15概述业务插件概览如何开发插件–接口结构–插件中常用的对象说明–具体的代码示例案例演练目录④内部公开请勿外传P16如何开发插件–接口结构表单插件和列表插件继承层次表单单据单据列表基础资料插件针对对象动态表单单据基础资料Kingdee.BOS.Core.dll④内部公开请勿外传P17如何开发插件–接口结构AbstractBillPlugIn接口动态表单视图插件编程模型接口定义了视图模型扩展允许通过接口处理视图,实现特定业务需求④内部公开请勿外传P18如何开发插件–接口结构OnBillInitialize视图模型初始化事件AfterBindData绑定数据后事件处理接口BeforeF7Select基础资料弹出前事件BeforeClosed窗口关闭前事件AbstractBillPlugIn的ViewPlugin插件接口④内部公开请勿外传P19如何开发插件–接口结构BarItemClick菜单单击事件处理扩展接口AfterBarItemClick菜单单击事件后BeforeDoOperation操作调用前事件AfterDoOperation操作调用完成后事件ButtonClick按钮单击事件AfterButtonClick按钮单击后事件AbstractBillPlugIn的ViewPlugin插件接口④内部公开请勿外传P20如何开发插件–接口结构ListViewClick列表项目单击事件TreeNodeClick树控件单击事件TreeDragDrop树控件拖拽EntityRowClick分录行单击事件AbstractBillPlugIn的ViewPlugin插件接口④内部公开请勿外传P21如何开发插件–接口结构AbstractBillPlugIn的ModelPlugIn接口动态表单数据模型插件编程接口定义了数据模型扩展允许通过接口处理数据,以实现特定业务需求④内部公开请勿外传P22如何开发插件–接口结构CreateNewData数据模型创建实体对象事件AfterCreateNewData数据模型创建实体对象完成后事件BeforeUpdateValue数据更新前事件DataChanged数据改变后事件AbstractBillPlugIn插件方法④内部公开请勿外传P23如何开发插件–接口结构CreateNewEntryRow创建分录行事件BeforeDeleteRow删除分录行事件AfterDeleteRow删除分录后事件AbstractBillPlugIn插件方法④内部公开请勿外传P24如何开发插件–接口结构列表插件接口继承AbstractListPlugInIListViewPlugInIListModelPlugIn④内部公开请勿外传P25如何开发插件–接口结构AbstractListPlugIn的ViewPlugIn接口序时簿视图插件编程模型接口定义了序时簿视图模型扩展允许通过接口处理视图,实现特定业务需求④内部公开请勿外传P26如何开发插件–接口结构ListInitialize视图模型初始化事件AfterGetData完成取数后事件FormatCellValue列表格式化接口AbstractListPlugIn的ViewPlugIn接口④内部公开请勿外传P27如何开发插件–接口结构BeforeButtonClick按钮和菜单单击前事件AfterButtonClick按钮和菜单单击后事件CellDbButtonClick单元格双击事件AbstractListPlugIn的ViewPlugIn接口④内部公开请勿外传P28如何开发插件–接口结构AbstractListPlugIn的ModelPlugIn接口序时簿数据模型插件编程接口定义了序时簿数据模型扩展允许通过接口处理数据,以实现特定业务需求④内部公开请勿外传P29如何开发插件–接口结构PrepareFilterParameter准备过滤条件CreateFilterEditorControl触发创建过滤条件控件事件BatchCopyData复制单据事件AfterBatchCopyData复制单据完毕事件AbstractListPlugIn插件方法④内部公开请勿外传P30如何开发插件–接口结构服务插件插件特性IOperationServicePlugin一般会附加校验器运行于App层事务保护插件针对对象操作Kingdee.BOS.Core.dll④内部公开请勿外传P31如何开发插件–接口结构服务插件接口服务插件AbstractOperationServicePlugIn应用服务器插件与业务数据更新操作在一个事务执行校验器插件AbstractValidator在服务插件的OnAddValidators加入④内部公开请勿外传P32如何开发插件–接口结构AbstractOperationServicePlugIn插件方法OnPreparePropertys可以定制加载指定字段到实体里OnAddValidators添加自定义数据校验器④内部公开请勿外传P33如何开发插件–接口结构AbstractOperationServicePlugIn插件方法BeforeExecuteOperationTransaction执行操作事务前事件AfterExecuteOperationTransaction执行操作事务后事件BeginOperationTransaction调用操作事件前触发(支持事务)EndOperationTransaction调用操作事件完毕(支持事务)④内部公开请勿外传P34如何开发插件–接口结构表单构建插件继承层次表单单据叙事簿基础资料插件针对对象动态表单单据基础资料Kingdee.BOS.Core.dll④内部公开请勿外传P35如何开发插件–接口结构AbstractDynamicWebFormBuilderPlugIn插件方法CreateControl构建界面元素事件AfterCreateControl构建界面元素后事件CreateMainMenu构建菜单事件AfterCreateMainMenu构建菜单后事件④内部公开请勿外传P36如何开发插件–接口结构表单插件调用过程由控制器创建视图、模型、插件代理初始化视图、模型由插件服务注册到插件代理插件代理初始化插件加载数据,通知插件创建数据,创建表单数据包表单操作插件服务调用代理,发送事件通知插件代理调用插件,执行事件返回执行结果④内部公开请勿外传P37业务插件插件调用过程④内部公开请勿外传P38业务插件插件调用过程④内部公开请勿外传P39如何开发插件–接口结构动态语言支持IronPython脚本语言支持和C#交互调用事件接口和C#完全一致更加简练明白④内部公开请勿外传P40概述业务插件概览如何开发插件–接口结构–插件中常用的对象说明–具体的代码示例案例演练目录④内部公开请勿外传P41如何开发插件–常用对象View对象属性this.View(View接口)this.View的常用属性BillBusinessInfo(界面业务对象元数据)LayoutInfo(布局元数据)Model(动态表单模型接口)OpenParameter(页面调用时传入的参数)方法GetFieldEditor(获取界面控件对象)ShowMessage(显示信息)④内部公开请勿外传P42如何开发插件–常用对象View对象更改界面控件状态this.View.GetFieldEditor示例:///summary///设置金额列精度////summary///paramname=iScale/param///paramname=strField/paramprivatevoidSetColumnScale(shortiScale,stringstrField){this.View.GetFieldEditorDecimalFieldEditor(strField,-1).Scale=iScale;}④内部公开请勿外传P43如何开发插件–常用对象View对象显示信息this.View.ShowMessage示例:if(e.CurParentId==0){this.View.ShowMessage(“请先选择顶层组织。”);return;}④内部公开请勿外传P44如何开发插件–常用对象Model对象属性this.View.Model(动态表单模型接口)This.View.Model的常用属性DataObject当前对象的数据实体方法GetEntryCurrentRowIndex(获取分录当前行索引)GetEntryRowCount(获取分录行数量)CreateNewEntryRow(新建分录行)GetValue(获取字段(对象)值)SetValue(设置字段(对象)值)④内部公开请勿外传P45如何开发插件–常用对象Model对象获取单据属性:例如分录集合this.View.Model.DataObject示例:///summary///获取分录集合////summaryDynamicObject