BOS培训课件-应用框架_第1页
BOS培训课件-应用框架_第2页
BOS培训课件-应用框架_第3页
BOS培训课件-应用框架_第4页
BOS培训课件-应用框架_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

应用框架金蝶软件(中国)有限公司严冠裕单据发布代码结构及常用功能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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论