版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
应用框架金蝶软件(中国)有限公司严冠裕单据发布代码结构及常用功能4BOS应用框架详细设计3BOS应用框架总体设计2BOS应用框架概述1目录开发常用接口介绍51.1什么是应用框架框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象组件及组件实例间交互的方法;它规定了应用的体系结构,阐明了整个设计、协作组件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法。应用框架则是指实现了某应用领域与业务无关的通用基础功能和底层服务的可重用组件。1.2应用框架的作用抽象通用的组件模型提供标准的基础服务统一规范的编程模型降低大型应用软件系统的开发难度缩短开发周期提高开发效率和质量1.3BOS应用框架BOS应用框架是BOS在长期的开发实践过程中,不断积累技术和经验,逐渐建立的一套符合企业信息化大部分应用场景的业务框架。开发人员无需关注太多细节就可以直接在应用框架的基础上开发具体的业务功能和组件。1.4BOS应用框架的作用抽象通用的业务逻辑;如新增,修改,删除等。集成标准的基础服务;如网络互斥,权限等。规范统一的编程模型;如单据,基础资料等。统一编码规范和接口;降低开发的复杂度,提高开发效率,最大限度的实现系统的设计重用和代码重用。单据发布代码结构及常用功能4BOS应用框架详细设计3BOS应用框架总体设计2BOS应用框架概述1目录开发常用接口介绍52.1总体架构表现层ORM-RPC协议层业务逻辑层持久对象层数据层单据发布代码结构及常用功能4BOS应用框架详细设计3BOS应用框架总体设计2BOS应用框架概述1目录开发常用接口介绍53.1BOS应用框架详细设计应用框架主要接口和类的设计客户端类继承体系服务端类继承体系核心业务逻辑的设计
UI界面的创建流程业务事件的响应流程3.2客户端类继承体系3.3客户端类继承体系CoreUIObjectEAS中所有UI的基类,从KDPanel派生,这样UI可以方便地嵌入到其它UI中,不包括业务逻辑CoreUI
所有UI界面对象的父类,集中处理服务ListUI
所有序时薄UI界面对象的父类
EditUI
所有编辑UI界面对象的父类
3.4客户端类继承体系CoreBillListUI,CoreBillEditUI
业务单据UI界面对象的父类
BillListUI,BillEditUI
CoreBillListUI,CoreBillEditUI的子类TreeListUI,TreeDetailListUI
树形层次结构序时薄UI界面对象的父类3.5服务端值对象类继承体系3.6服务端值对象类继承体系PropertyContainer
抽象定义了一个属性容器,EAS值对象的存储结构IObjectValue,AbstractBaseObjectValue
EAS所有值对象的抽象父类CoreBaseInfo
所有具有ID属性的值对象的抽象父类
3.7服务端
O
R
M
对象类继承体系3.8服务端ORM对象类继承体系IORMModel,ORMObject
ORM-RPC协议及服务的接口和实现IBOSObject,AbstractBOSObject
获取BOS运行引擎所需的上下文的接口和实现ICoreBase,CoreBase
所有ORM对象的抽象父类ICoreBillBase,CoreBillBaseEAS中所有业务单据ORM对象的抽象父类3.9服务端EJB对象类继承体系3.10服务端EJB对象类继承体系SessionBean
无状态会话Bean的一系列操作接口AbstractBizControllerBean
EJB操作的基本实现,获取数据库连接AbstractEntityControllerBeanORMapping引擎中数据访问对象(DAO)的获取和调用
AbstractCoreBaseControllerBeanEAS中具体业务值对象对应EJB的抽象父类3.11UI界面的创建流程3.12业务事件的响应流程3.13序时簿虚模式取数序时簿取数方法实模式虚模式虚模式取数的优点
取数效率高占用内存小设置tblMain.getDataRequestManager().setDataRequestMode(KDTDataRequestManager.VIRTUAL_MODE_PAGE);KDTDataRequestManager.REAL_MODE3.14序时簿虚模式取数的流程虚模式取数的原理每次只取当前显示页预取前一页和后一页单据发布代码结构及常用功能4BOS应用框架详细设计3BOS应用框架总体设计2BOS应用框架概述1目录开发常用接口介绍54.1开发常用接口及功能介绍业务单元发布后生成代码结构说明客户端服务端应用框架常用功能介绍开发常用接口介绍4.2生成代码结构主要开发类
XXXListUI.javaXXXEditUI.javaXXXControllerBean.java4.3生成代码
客户端生成代码:
AbstractXXXEditUI.java
AbstractXXXListUI.java
XXXEditUI.java
XXXListUI.java
AbstractXXXEditUI_perties
AbstractXXXEditUI_perties
AbstractXXXEditUI_perties
AbstractXXXEditUI.properties
AbstractXXXListUI_pertiesAbstractTXXXListUI_pertiesAbstractTXXXListUI_pertiesAbstractXXXListUI.properties4.4生成代码
服务端生成代码:
AbstractXXXControllerBean.java
AbstractXXXEntryControllerBean.java
XXXController.java
XXXControllerBean.java
XXXEntryController.java
XXXEntryControllerBean.java
AbstractXXXEditUIHandler.java
AbstractXXXListUIHandler.java
XXXEditUIHandler.java
XXXListUIHandler.java4.5生成代码
客户端服务端公共代码:
AbstractXXXInfo.java
AbstractXXXEntryInfo.java
IXXX.java
IXXXEntry.java
XXX.java
XXXEntry.java
XXXCollection.java
XXXEntryCollection.java
XXXFactory.java
XXXEntryFactory.java
XXXInfo.java
XXXEntryInfo.java4.6必须覆盖的框架方法编辑界面类(EditUI):
protectedIObjectValuecreateNewData(){
//returnnewXXXInfo();returnnull;}protectedICoreBasegetBizInterface()throwsException{
//returnXXXFactory.getRemoteInstance();returnnull;}protectedIObjectValuecreateNewDetailData(KDTabletable){
//returnnewXXXEntryInfo();returnnull;}4.7必须覆盖的框架方法列表界面类(ListUI):
protectedStringgetEditUIName(){
//returnXXXEditUI.class.getName();returnnull;}protectedICoreBasegetBizInterface()throwsException{
//returnXXXFactory.getRemoteInstance();returnnull;}4.8应用框架常用功能介绍UI界面的创建UI界面的数据绑定对序时簿查询的扩展UI界面右键表格设置EAS系统中各种类型ID的转换4.9UI界面的创建UI界面(窗口)的创建代码UIContextuiContext=newUIContext(this);IUIWindowiWindow=UIFactory.createUIFactory(UIFactoryName.MODEL).create(uiName,uiContext,null,OprtState.VIEW);iWindow.show();4.9UI界面的创建创建一个UI的panel对象,并加入到容器中。实例化一个UI,此实例化不能直接newUIContextuiContext=newUIContext(this);IUIObjectuiObject=UIFactoryHelper.initUIObject.(getEditUIName(),uiContext,null,OprtState.VIEW);***UIcurUI=(***UI)uiObject;在实例化完ui后转型成自己定义的ui,并根据业务需求添加到某个容器中。4.10UI界面的创建UI打开模式包括:
UIFactoryName.FIXTAB:固定页签打开方式。
UIFactoryName.NEWTAB:新页签打开方式。
UIFactoryName.NEWWIN:新窗口打开方式。
UIFactoryName.MODEL:模态窗口打开方式。UI打开模式包括:
OprtState.VIEW:查看OprtState.ADDNEW:新增OprtState.EDIT:编辑4.11UI界面的数据绑定序时簿界面的数据绑定
KDTable的setFormatXML方法:完成表格列的定义
KDTable的putBindContents方法:设置绑定关系
KDTalbe的doRequestRowSet事件:数据获取与显示编辑界面的数据绑定
loadFields和storeFields方法4.12对序时簿查询的扩展添加查询字段(Sql语句中的select子句内容)SelectorItemCollectionsic=newSelectorItemCollection();sic.add(newSelectorItemInfo("id"));sic.add(newSelectorItemInfo("name"));this.mainQuery.getSelectors().addObjectCollection(sic);EntityViewInfo对象mainQuery中添加查询条件:4.13对序时簿查询的扩展添加过滤条件(Sql语句中的where子句内容)FilterInfofilterInfo=newFilterInfo();StringBuffermaskString=newStringBuffer();filterInfo.getFilterItems().add(newFilterItemInfo("id",idLists,CompareType.INCLUDE));filterInfo.getFilterItems().add(newFilterItemInfo("fiVouchered",Boolean.TRUE));maskString.append("#0AND#1");filterInfo.setMaskString(maskString.toString());filterInfo.mergeFilter(this.mainQuery.getFilter(),"AND");this.mainQuery.setFilter(filterInfo);4.14对序时簿查询的扩展添加排序条件(Sql语句中的where子句内容)SorterItemInfosorterInfo=newSorterItemInfo("owner.number")sorterInfo.setSortType(SortType.ASCEND);this.mainQuery.getSorter().add(sorterInfo);4.15EAS中各种类型ID的转换BOSUuidIObjectPKString4.16EAS中各种类型ID的转换BOSUuid->IObjectPK
IObjectPKpk=newObjectUuidPK(uuid);IObjectPK->BOSUuid
BOSUuid.read(pk.toString());BOSUuid和IObjectPK->String
uuid.toString()和pk.toString();String->BOSUuid和IObjectPK
BOSUuiduuid=BOSUuid.read(id);
IObjectPKpk=newObjectUuidPK(uuid);4.17UI之间参数传递当从序事薄打开一个编辑窗口的时候,需要传递一些参数,传递和获取方式如下:
UIContextuiContext=newUIContext(this);uiContext.put(“name”,”tester”);
然后创建窗口时作为参数传入,在编辑窗口获取的方式如下:
tester=(String)uiContext.get(“name”);4.18上下文与资源文件
获取客户端的系统上下文参数
SysContextctx=SysContext.getSysContext()
UserInfouserInfo=(UserInfo)ctx.getCurrentUserInfo()获取某个资源文件的键值EASResource.getString("com.kingdee.eas.base.TestResource","periodName")单据发布代码结构及常用功能4BOS应用框架详细设计3BOS应用框架总体设计2BOS应用框架概述1目录开发常用接口介绍55.1开发常用接口介绍通用UI页面(CoreUI)序时簿页面(ListUI)编辑界面(EditUI)左树右表序时簿界面(TreeListUI,TreeDetailListUI)5.2通用UI页面(CoreUI)如何设置并显示状态栏中的信息如何开启附件功能并显示如何屏蔽表格右键菜单中的复制粘贴菜单如何添加一个序时簿中表格右键菜单项5.3设置并显示状态栏中的信息设置状态栏中信息:
设置状态栏消息:setMessageText(Stringstr);
设置状态栏图标:setMessageIcon(Iconicon);
设置状态栏背景色:setMessageBgcolor(Colorcolor);设置状态栏中信息:
showMessage();5.4如何开启附件功能并显示开启并显示附件的步骤:
覆盖ListUI和EditUI的isShowAttachmentAction方法;返回true在客户端的client\deploy\client目录下新建
attachCperties文件,并在文件中加入需要显示附件的单据的编辑界面的全路径类名参数。例如:
com.kingdee.eas.framework1.test.client.TestBizUnitEditUI=true将attachCperties文件放到服务端
server\deploy\fileserver.ear\easWebClient\deploy\client
目录下5.5屏蔽右键菜单的复制粘贴菜单只屏蔽粘贴菜单,保留复制菜单:
table.getStyleAttributes().setLocked(true)复制粘贴菜单都屏蔽掉:
在调用父类onload方法之前调用CoreUI的setCanCopyPaste方法,设置为false5.6添加序时簿中表格右键菜单项覆盖CoreUI的addCommonMenusToTable方法并在调用父类方法后加入自定义的菜单:publicvoidaddCommonMenusToTable(KDTabletable){super.addCommonMenusToTable(table);PopupMenuManagermgr=this.getPopupMenuManager(table);MenuSectionsection=newMenuSection("test");mgr.addMenuSection(section);JMenuItemmenuItem=newJMenuItem();menuItem.setName("test");menuItem.setText("test");section.insertAfter(menuItem);}
5.7序时簿页面(ListUI)表格中表头的排序功能查询功能表格右键菜单获取表格中所选单据的id集合5.8表格中表头的排序功能屏蔽表格中所有列表头的排序功能:
ListUI类中的isCanOrderTable
ListUI类中的isOrderForClickTableHead
如果屏蔽只需覆盖任意一个方法并返回fasle即可屏蔽表格中某些列的排序功能:
重写ListUI类中的getNotOrderColumns方法并返回不排序的表格列的绑定字段的集合
5.9查询功能
在查询前如何增加或修改查询条件:
在打开单据和执行通用过滤查询都要改变查询条件:重写ListUI的beforeExcutQuery方法
只在执行通用过滤查询时要改变查询条件:重写ListUI的prepareQuery方法5.10查询功能让单据查询时忽略CU过滤:重写ListUI的isIgnoreCUFilter方法:
true:忽略
false:过滤显示序时簿表格中的合计行:
重写ListUI的isFootVisible方法:
true:显示false:屏蔽5.11查询功能
设置打开序时簿前先弹出通用过滤对话框:
重写ListUI的initDefaultFilter方法:
true:弹框false:直接打开
确保查询方案中没有方案选中“下次直接以该方案进入”5.12表格右键菜单屏蔽序时簿中表格右键菜单:
CoreUI的tHelper对象提供的方法:
this.tHelper.getDisabledTables().add(table);table:需要屏蔽的表格对象(如:this.tblMain)获取序时簿中表格右键菜单项:
使用CoreUI的提供的方法:
this.getMenuManager(table).getMenu()5.13获取表格中所选单据的id集合ListUI的取Id方法:
protectedStringgetSelectedKeyValue()
获取默认表格(tblMain)选择列表第一行的的主键值
protectedArrayListgetSelectedIdValues()
获取默认表格(tblMain)所有选择行的主键值protectedfinalArrayListgetSelectIdForTableSelect(KDTabletable)
获取指定表格选择行的主键值5.14编辑界面(EditUI)增删查改功能合计行5.15增删查改功能在保存或提交单据之前和之后加入业务逻辑:覆盖EditUI的doBeforeSave和doAfterSave方法覆盖EditUI的doBeforeSubmit和doAfterSubmit方法判断单据是否被修改:
EditUI的isModify方法新增一个单据时如何初始化单据的字段:
重写EditUI的applyDefaultValue方法,对this.editData进行初始化5.16增删查改功能在修改单据后关闭时选择暂存还是提交单据:
重写EditUI的isModifySave方法:
true:暂存false:提交获取当前单据的id(PK):
EditUI的getSelectedKeyForAll方法判断或设置当前编辑对象是否获得对象更新锁:
EditUI的isHasObjectUpdateLock方法
EditUI的setHasObjectUpdateLock方法5.17合计行显示和设置编辑界面表格的合计行列:调用EditUI的setTableToSumField方法参数说明:
table:表格对象
columnFields:默认显示格式则传入:
{"colname1","colname2"}
如果自定义显示格式则传入:
{"colname1@0.0","colname2@#.##"}列表界面setIsCountAndSumRow(boolean)true:显示合计结果false:表格下方双击显示合计结果5.18左树右表序时簿界面TreeListUI和TreeDetailListUI树节点查询功能TreeListUI:多级别左树右表单据TreeDetailListUI:分组左树右表单据区别:
TreeListUI:树和表属同一实体,表中数据有多个级别,具有父子关系
TreeDetailListUI:树和表属不同实体,表中数据分为不同的组别,可以对组别进行增删查改5.19TreeListUI和TreeDetailListUI获取选中的树节点:
getSelectedTreeNode方法获取选中的树节点的id:
getSelectedNodeKeyValue方法判断和设置是否包含所有子孙节点:
isIncludeAllChildren或setIncludeAllChildren方法
isIsIncludeChild或setIsIncludeChild方法5.20树节点移动树节点功能:
isMoveTree方法
isMoveTree或isMoveGroup方法移动树节点到根节点下:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年白城职业技术学院单招职业适应性考试备考题库及答案解析
- 2026年广西科技师范学院单招职业适应性测试模拟试题及答案解析
- 2026年河南机电职业学院单招职业适应性测试备考题库及答案解析
- 2026年江苏商贸职业学院单招职业适应性考试备考试题及答案解析
- 2026年郑州铁路职业技术学院单招职业适应性测试备考试题及答案解析
- 2026年云南能源职业技术学院单招职业适应性考试参考题库及答案解析
- 2026年临夏现代职业学院单招职业适应性考试参考题库及答案解析
- 2026年龙岩学院单招职业适应性考试备考题库及答案解析
- 2026年聊城职业技术学院单招职业适应性测试模拟试题及答案解析
- 2026年遵义职业技术学院单招职业适应性测试模拟试题及答案解析
- 流转土地合同(2篇)
- 2024年生态环境执法大练兵比武竞赛理论考试题库-上(单选题)
- 俄罗斯进口冻肉合同范本
- 奇异的仿生学智慧树知到期末考试答案2024年
- 中心静脉导管堵塞原因及预防 护理讲课比赛
- 人教版-数学五年级上册 数的运算、式与方程 全套
- ERAS理念在肝切除治疗肝癌中的应用
- 【超星尔雅学习通】日本近现代文学选读网课章节答案
- GB/T 40047-2021个体防护装备运动眼面部防护滑雪镜
- 2020年新编市场营销16版复习重点全书名师精品资料
- 兽药营销课程资源库兽药产品策略课件
评论
0/150
提交评论