电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

金蝶EAS-基类继承体系.docx

金蝶EAS-基类继承体系.docx_第1页
1/27
金蝶EAS-基类继承体系.docx_第2页
2/27
金蝶EAS-基类继承体系.docx_第3页
3/27
1.总体架构设计EAS应用框架的总体架构设计如图2.1所示:图2.1应用框架总体架构图从图2.1中可以看出,应用框架的总体架构按照软件架构设计分层的思想分为以下五层:(1)首先,在表现层,应用框架通过UI界面在客户端向EAS的用户提供业务功能操作和展示的界面,UI界面对象通过ORM远程对象的工厂类(XXXFactory类)获得ORM远程对象,并使用EAS的ORM-RPC协议获得服务端业务服务的调用接口,UI界面和ORM远程对象使用值对象做为参数进行交互;(2)其次,在ORM-RPC协议层,ORM远程对象通过EJBFactory获得相应的服务端EJB组件对象,并调用调用服务端EJB组件对象提供的业务服务,ORM远程对象和EJB组件对象也使用值对象做为参数进行交互;(3)然后,在业务逻辑层,EJB组件对象再通过ORMappingDAO来创建数据访问对象(DAO),获取数据库访问接口,进行相关数据库访问,EJB组件对象和数据访问对象使用值对象的抽象接口做为参数进行交互;(4)最后,在持久对象层,数据访问对象(DAO)拼装KSQL语句并且通过KSQL引擎解析成SQL语句到数据层中的数据库中进行数据访问。2.业务对象层继承体系应用框架在业务对象层建立了一些典型业务对象,可用做设计人员建立自己的业务对象的超类。这些用做超类的业务对象,既定义了对象属性,也提供了业务方法。例如,层次数据的超类TreeBase在数据保存时会自动维护level、isLeaf和longNumber的正确性。2.1.业务对象类体系类体系内容CoreBase所有业务对象的超类|-ObjectBase普通业务对象的超类|-DataBase基础资料类业务对象的超类|-TreeBase层次数据类业务对象的超类|-CoreBillBase单据业务对象的超类,对应单据头部分|-BillBase财务类单据业务对象的超类,对应财务单据头部分|-CoreBillEntryBase单据业务对象的超类,对应单据体部分|-BillEntryBase财务类单据业务对象的超类,对应财务单据体部分2.1.1.所有业务对象超类CoreBase职责所有EAS业务对象的超类,具有ID属性,完成数据的基本维护功能。如,新增、修改、删除、暂存等操作。属性名称描述数据类型对应字段Id对象IDBOSUUIDFID方法名称描述addNew继承基类,添加时设置creator,createTime,lastUpdateUser,lastUpdateTime,等固定属性值。Update继承基类,添加时设置lastUpdateUser,lastUpdateTime,company等固定属性值。Submit设置业务数据生效,并保存save设为暂存状态,并保存cancel作废(逻辑删除),并保存cancelCancel取消作废状态,并保存checkStatusValid检查业务数据是否是有效canUpdate检查业务数据能否更新,逻辑条件是否满足更新要求(补充)isReferenced检查业务数据是否被引用,删除操作会调用此函数(补充)2.1.2.普通业务对象超类ObjectBase属性名称描述数据类型对应字段CU控制单元连接属性——连接到控制单元中FcontrolUnitIDCreator创建者连接属性——连接到用户FcreatorIDCreateTime创建时间TimestampFcreateTimeLastUpdateUser最后修改者连接属性——连接到用户FLastUpdateUserIDLastUpdateTime最后修改时间TimestampFLastUpdateTime注:创建人与创建时间,可以由业务指定。胡锦敏2006-7-3决定开放给业务来使用。方法名称描述2.1.3.基础资料超类DataBase属性名称描述数据类型Name名称(多语言)StringNumber编码Stringdescription描述(多语言)StringsimpleName简称String方法名称描述checkNameBlank名称是否为空checkNameDup名称是否重复checkNumberBlank编码是否为空checkNumberDup编码是否重复注:名称与编码检查方法都是需要根据业务要求进行调用的,应用框架本身不调用。2.1.4.层次数据超类TreeBase属性名称描述数据类型对应字段IsLeaf是否叶节点BooleanFIsLeafLevel所在级次IntegerFLevelLongNumber节点完整编号StringFLongNumberdisplayName显示名称(多语言)StringFDisplayName因为超类中定义的关系无法实例化,所以TreeBase并未定义parent关联属性。要求在子类中自行建立这个表示指向父节点的关联属性,并且约定属性名一定是parent。DisplayName由树结构的所有级次的名称连接而成,连接符“_”,由框架统一维护。如果长度超长,由前往后截取字符串处理。方法名称描述updateLeafByLongNumber父节点编号更新时重设所有子节点编号checkParentDataExist检查该编号下的父节点是否存在checkParentValid校验父节点的状态应为有效,父节点是否被删除。checkParentBeUsed校验父节点是否被其他数据使用。如果被使用则不能新建子节点。子类需要通过重载_isReference来定义引用逻辑getRoot获取根节点getChildren返回儿子节点集合getAllChildren返回所有后代节点集合deleteWithChildren删除自身及其所有后代节点moveTreeNode移动节点位置2.1.5.单据超类CoreBillBase(单据头)属性名称描述数据类型对应字段Number单据编号StringFNumberhandleTime经办时间TimeStampFHandleTimeHandler经手人连接属性——连接到用户FhandlerIDDescription备注(多语言)StringFdescriptionhasEffected是否曾经生效BooleanFhasEffectedAuditor审核人连接属性——连接到用户FcheckIDsourceBillId原始单据IDStringFsourceBillIDsourceFunction来源功能StringFsourceFunction方法名称描述checkOut结清(关闭)业务数据passAudit审核通过UnpassAudit设置为未审核状态Freeze冻结业务数据Unfreeze解冻业务数据CheckStatusFreeze检查业务数据是否被冻结CheckNumberDup检查单据编号是否重复CheckNumberBlank检查单据编号是否为空checkHandleTimeBlank检查经办时间是否为空checkHandlerBlank检查经办人是否为空CheckLineExist检查是否至少有一条分录getOwnedSys获取所属系统。generateVoucher生成凭证deleteVoucher删除凭证:若没有生成过凭证,则返回false。saveRelations暂存关联关系SubmitRelations保存并递交关联关系getBizOUCoreBillBaseInfo的访问接口。可选的方法:1.protectedSystemEnumgetOwnedSys():定义单据所属的系统。通常情况下一种单据所属的系统是确定的,可以在单据对象的扩展属性予以定义。超类负责处理这种情况。对于一种类型的单据被实例化到不同系统的情况,可以增加实体属性,并重载这个方法。2.1.6.单据超类CoreBillEntryBase(单据体)属性名称描述数据类型对应字段Sequence单据分录序列号(定义为序列属性即使用{seq})IntegerFSequence2.1.7.财务类单据超类BillBase(单据头)属性名称描述数据类型对应字段Company公司连接属性——连接到公司FcompanyID2.1.8.财务类单据超类BillEntryBase(单据体)属性名称描述数据类型对应字段3.服务端对象继承体系3.1.服务端值对象类继承体系EAS系统服务端值对象的主要接口和类的继承关系如图3.2所示:图3.2服务端值对象类图从图3.2中可以看出,服务端值对象的接口和类结构主要包含以下几个部分:(1)IMarshalObject接口:定义了值对象序列化和反序列化操作的接口(2)IPropertyContainer接口及其实现类PropertyContainer类:抽象定义了一个属性容器,类似于Map的键值对方式的存储结构,是EAS所有值对象的基类;(3)IObjectValue接口及其实现类AbstractBaseObjectValue抽象类:EAS所有具体业务值对象的抽象父类,它分别继承IPropertyContainer接口和PropertyContainer类,定义并提供了对值对象中属性的基本操作接口及实现;(4)CoreBaseInfo抽象类:所有具有ID属性的值对象的抽象父类,它继承自AbstractBaseObjectValue类,提供了对值对象ID属性的封装;3.2.服务端ORM对象类继承体系EAS系统服务端ORM对象的主要接口和类的继承关系如图3.3所示:图3.3服务端ORM对象类图从图3.3中可以看出,服务端ORM对象的接口和类结构主要包含以下几个部分:(1)IORMModel接口及其实现类ORMObject抽象类:IORMModel是ORM-RPC所定义的接口,实现该接口的对象方能使用ORM-RPC进行远程调用;ORMObject是EAS中所有ORM对象的基类,属于ORM-RPC服务的一个部分;(2)IBOSObject接口及其实现类AbstractBOSObject抽象类:IBOSObject是BOS运行引擎所定义的接口,里面包含了BOS运行引擎所需的上下文管理及对象标识;BOS运行引擎通过该接口来获取运行期信息,并访问模型信息提供服务;它们分别继承自IORMModel接口和ORMObject类,定义了获取BOS运行引擎所需的上下文及对象标识的接口和实现;(3)IBizCtrl接口及其实现类AbstractBizCtrl抽象类:封装EAS中EJB调用所定义的接口,它们分别继承自IBOSObject接口和AbstractBOSObject类,通过该接口可以屏蔽EJB组件部署方式对应用的影响;(4)ICoreBase接口及其实现类CoreBase抽象类:EAS中所有业务ORM对象的抽象父类,它们分别继承自IBizCtrl接口和AbstractBizCtrl类,定义并实现了EAS中对具体业务值对象EJB组件的调用接口。3.3.服务端EJB组件对象类继承体系EAS系统服务端EJB的主要接口和类的继承关系如图3.4所示:图3.4服务端EJB类图从图3.4中可以看出,服务端EJB的接口和类结构主要包含以下几个部分:(1)SessionBean接口:定义了无状态会话Bean的一系列操作接口(2)AbstractBizControllerBean抽象类:SessionBean和BizController接口的实现类,它提供了SessionBean接口一系列EJB操作的基本实现及获取数据库连接的实现;(3)AbstractEntityControllerBean抽象类:EAS所有具体业务值对象对应EJB的抽象父类,它继承AbstractBizControllerBean类,封装了ORMapping引擎中数据访问对象(DAO)的获取和调用;(3)CoreBaseController接口及其实现类AbstractCoreBaseControllerBean抽象类:EAS中具体业务值对象对应EJB的抽象父类,它们分别继承自BizController接口和AbstractEntityControllerBean类,定义并实现了EAS中具体业务值对象的基本业务逻辑(增删改查)接口。4.客户端UI层继承体系UI层提供数据的展现方式与客户端控制逻辑。EAS系统客户端的主要接口和类的继承关系如图3.1所示:图3.1客户端UI界面类图从图3.1中可以看出,客户端的接口和类结构主要包含以下几个部分:(1)IUIObject接口:抽象定义所有界面对象基础操作的接口(2)CoreUIObject抽象类:无业务语义的所有UI界面对象的抽象类,它继承KDPanel类(这样就可以方便地将一个UI嵌入到其它UI中),实现IUIObject界面对象接口;(3)CoreUI类:所有UI界面对象的父类,它继承自CoreUIObject抽象类,实现了创建UI界面需要的基本的初始化操作、事件的监听和响应以及一些最基础的业务功能(如:网络互斥的调用,关联工作流的处理);(4)ListUI抽象类:所有序时薄UI界面对象的父类,它继承自CoreUI类,实现了创建序时薄UI界面需要的基本的初始化操作、事件的监听和响应以及基础的业务功能,如(通用过滤,数据的查询与显示,关联编辑界面的管理等);(5)EditUI抽象类:所有编辑UI界面对象的父类,它继承自CoreUI类,实现了创建编辑UI界面需要的基本的初始化操作、事件的监听和响应以及基础的业务功能,如(通过编码规则获取编码,业务对象状态管理等);(6)CoreBillListUI,CoreBillEditUI抽象类:业务单据UI界面对象的父类,它分别继承自ListUI和EditUI抽象类,实现了单据类UI界面的一些基础业务功能,如(BOTP等);(7)TreeListUI抽象类:树形层次结构序时薄UI界面对象的父类,它继承自ListUI抽象类,实现了对树形层次结构数据展现的支持,提供KDTree与KDTable的关联处理,支持层次分类数据本身的编辑功能。4.1.序时簿类UI序时簿是EAS规范地展现数据的方式,提供查询过滤的能力,可以进行表格数据的定位处理,并可打开维护数据的编辑类界面。序时簿使用查询对象来执行查询,使用KDTable来展现数据。4.1.1.类体系类体系内容CoreUIEAS的UI最高超类,继承BOS定义的CoreUIObject(从KDPanel派生,这样UI可以方便地嵌入到其它UI中)。|-ListUI序时簿类UI的最高超类,有通用过滤功能,提供数据查询与显示,关联编辑界面的管理等。|-CoreBillListUI单据序时簿类UI的超类。支持针对单据类的通用操作处理,例如结清、冻结、审核等。处理状态过滤与显示。|-BillListUI财务单据序时簿类UI的超类。暂时没有业务处理,以后添加。|-TreeListUI层次数据序时簿的UI超类。支持层次数据的展现,提供KDTree与KDTable的关联处理,支持层次分类数据本身的编辑。|-ComboTreeListUI带拥有者的层次数据序时簿的UI超类。适用于层次数据本身还有分类的情形,例如物料按仓位分类。|-TreeDetailListUI层次数据序时簿的UI超类。支持层次数据的展现,提供KDTree与KDTable的关联处理,支持层次分类数据本身的编辑。|-ComboTreeDetailListUI带拥有者的层次数据序时簿的UI超类。适用于层次数据本身还有分类的情形,例如科目按科目表分类。4.1.2.通用基类CoreUI完成了通用职责处理,在此,进行了权限、License、网络控制的通用处理。4.1.3.普通序时簿类ListUI从CoreUI继承下来。具有快速定位、通用过滤等基本功能。类方法介绍普通序时簿类UI从com.kingdee.eas.framework.client.ListUI继承。通过BOSStudio完成UI对象的创建、更改继承Query对象的类型以及KDTable控件绑定等。必须重载的方法:1.protectedabstractStringgetEditUIName():指示关联的编辑UI对象名示例:protectedStringgetEditUIName(){return“com.kingdee.eas.basedata.assistant.client.CurrencyEditUI”;}2.protectedabstractIObjectBasegetBizInterface():获取列表对应实体的业务接口,以便调用业务方法。要求实体必须从ObjectBase及其子类派生。示例:protectedIObjectBasegetBizInterface(){returnCurrencyFactory.getRemoteInstance();}3.protectedString[]getLocateNames()返回可定位的列名数组。默认实现。//业务系统可重载实现下面方法,返回合适的字符串数组(表格列名),来达到定位的目的。protectedString[]getLocateNames(){String[]locateNames=newString[2];locateNames[0]=IFWEntityStruct.dataBase_Number;locateNames[1]=IFWEntityStruct.dataBase_Name;returnlocateNames;}4.protectedFilterInfogetDefaultFilterForQuery()//默认进行当前CU的过滤。子类可重载。protectedFilterInfogetDefaultFilterForQuery(){FilterInfofilter=newFilterInfo();filter.getFilterItems().add(newFilterItemInfo("CU",SysContext.getSysContext().getCurrentCU(),CompareType.EQUALS));returnfilter;}可选的方法:1.protectedvoidprepareUIContext(UIContextuiContext,java.awt.event.ActionEvente):允许构造传递给EditUI的UIContext。利用这个方法,你可以加入需要的任何对象并传递给EditUI。示例:protectedvoidprepareUIContext(UIContextuiContext,java.awt.event.ActionEvente){//检查是否按下新建按钮if(e.getSource()==btnAddNew)uiContext.put(“myObject”,null);elseuiContext.pub(“myObject”,getMyObject());}2.protectedStringgetEditUIModal():产生编辑UI的方式,缺省是Dialog方式。可以重载这个方法,指定其它的模式。示例:protectedStringgetEditUIModal(){returnUIFactoryName.EDITWIN;}3.protectedbooleaninitDefaultFilter():设置默认过滤条件。该方法被onLoad调用。4.protectedvoidrefresh(ActionEvente):界面刷新方法。通过传递的参数e可以知道触发事件源。在ListUI的缺省实现中,refresh是靠调用execQuery把数据重新获取一遍来达到刷新的效果的。派生类可以依据实际情况来定义更合理的刷新策略。5.protectedStringgetKeyFieldName():获取KDTable中的主键列名称,供编辑/删除时获取主键用。默认值为"id"。注意:BOS自动生成KDTable的列时,使用的是query对象名.id的形式,与超类中约定并不一致。要么在设计期将列名修改,要么在重载该方法返回正确的列名。4.1.4.带通用查询的序时簿类CommonQueryListUI界面样式。超类为CommonQueryListUI,从ListUI继承。在超类基础上增加了对通用查询对话框的管理。类方法介绍带通用查询的序时簿类UI从com.kingdee.eas.framework.client.CommonQueryListUI继承。可选的方法:1.protectedvoidprepareCommonQueryParam(CommonQueryParamparam):在该方法中定义要传递给通用查询对话框的参数。超类的该方法已经把查询对象放到了param中,通常可不必再重载。如果有特别的需要,则按通用查询对话框的要求进行设置。示例(用一个自己编写的过滤页面替换掉通用过滤页面):protectedvoidprepareCommonQueryParam(CommonQueryParamparam){super.prepareCommonQueryParam(param);param.setShowFilter(false);//不显示通用过滤页面param.addPanel(newMyQueryPanel());//加入自己的过滤页面}4.1.5.单据序时簿类UI超类为CoreBillListUI,从ListUI继承。在超类基础上增加了对单据通用操作的处理。4.1.6.层次数据序时簿类UI超类为TreeListUI,从ListUI继承。在超类基础上,增加了一个KDTree,以管理层次数据。除支持在KDTable中展现数据的编辑外(该能力从ListUI继承),还支持Tree本身的编辑(典型如地址簿分类的编辑)。类方法介绍层次数据序时簿类UI从com.kingdee.eas.framework.client.TreeListUI继承。通过BOSStudio完成UI对象的创建、更改继承Query对象的类型以及处理控件绑定等。KDTree上每个节点的类型为KDTreeNode类型。必须重载的abstract方法:1.protectedabstractStringgetQueryFieldName():点击树上节点时形成过滤条件时的字段,例如地址簿序时簿界面右边的地址列表要依据左边Tree上选中的地址分类而刷新,此处则返回Address.class即可。2.protectedabstractITreeBasegetTreeInterface():获取层次数据实体的业务接口,以便调用业务方法。要求实体必须从TreeBase及其子类派生。可选的方法:1.protectedvoidbuildTreeFilter():构造查询子节点数据的过滤条件。在TreeListUI中默认实现为在EntityViewInfo中添加一个getQueryFieldName()=treeNodeInfo的过滤条件,即查询对象的某个属性关联到Tree节点所代表的对象。超类认为这种查询条件是是最常见的情况,例如地址簿对象有一个属性指向关联的地址簿分组对象。该默认实现依赖于getQueryFieldName纯虚方法。如果你需要构造的查询条件不是这种形式,则需要重载本方法自行设定过滤条件。示例:protectedvoidbuildTreeFilter(){KDTreeNodetreeNode=(KDTreeNode)treeMain.getLastSelectedPathComponent();AddressClassInfoinfo=(AddressClassInfo)treeNode.getUserObject();//清空并加入自己的过滤条件(通讯地址包含被选中地址簿分类的名称=>仅示意而已)FilterItemCollectionitems=mainQuery.getFilter().getFilterItems();items.clear();items().add(newFilterItemInfo("postalAddress",info.getClassName(),CompareType.LIKE))}2.protectedStringgetGroupEditUIName():指示Tree关联的类别编辑UI对象名,如果界面需要实现类别编辑,则需要重载该方法。3.protectedStringgetGroupEditUIModal():与ListUI类似,表示产生类别编辑UI的方式。4.protectedvoidprepareGroupUIContext(UIContextuiContext,ActionEvente):类似于ListUI对关联EditUI的处理方式,允许构造传递给GroupEditUI的UIContext。超类默认对于新增类别,传入了当前选中的节点对象(默认为是新增节点的父节点,通过UIContext.PARENTNODE传递)。5.protectedStringgetRootName():定义一个虚拟根节点的显示名称,默认返回null,即不需要虚拟根节点。此时,所有节点都依据实际的数据构造,可能会有多个一级节点。继承类可以重载,定义虚拟根结点。示例(地址簿序时簿需要定义一个虚的根节点):protectedStringgetRootName(){return"地址分类";}6.protectedvoidinitTree():初始化构造Tree。一般情况下请不要重载这个方法,除非你决定用自己的ITreeBuilder接口的实现类替换掉超类默认提供的LNTreeBuilder。7.protectedILNTreeNodeCtrlgetLNTreeNodeCtrl():返回与LNTreeBuilder配合使用的ILNTreeNodeCtrl实现类。超类提供默认的实现类DefaultLNTreeNodeCtrl。在特定情况下需要重载,例如菜单树需要根据权限进行过滤而不是仅根据longnumber过滤时。8.protectedbooleanisMoveTree()是否要确认进行节点移动。//如果需要对话框提示,请重载,默认不需要。protectedbooleanisMoveTree(){returntrue;}Tree的构造机制及如何扩展?树的构造由ITreeBuidler接口定义。主要的方法是:publicJTreebuildTree(JTreetree):构建树,若传入tree为null,则新建树。publicvoidrefreshTreeNode(KDTreeNodetreeNode):重新取数,刷新节点。针对EAS处理层次数据采用长编码(longnumber)的情况,应用框架提供了LNTreeBuilder这个特定实现类。与此配合,又定义了ILNTreeNodeCtrl接口和该接口的实现类DefaultLNTreeNodeCtrl。1.LNTreeBuilder:实现ITreeBuilder接口,提供树的构建能力。2.ILNTreeNodeCtrl接口:根据父结点信息,获取指定层次子孙结点信息。主要的方法是:publicAbstractObjectCollectiongetChildren(TreeBaseInfoparentNodeInfo,intlevel):获取指定结点的指定级次的子孙结点。若parent==null,则获取从1到指定级次的结点。3.DefaultLNTreeNodeCtrl:实现ILNTreeNodeCtrl接口,完成根据longnumber获取下级节点数据的能力。如果有不基于longnumber方式的层次数据,可通过实现ITreeBuilder接口予以扩展。4.1.7.带拥有者的层次数据序时簿类UI超类为ComboTreeListUI,从TreeListUI继承。4.1.8.带分类的层次数据序时簿UI超类为TreeDetailListUI,从ListUI继承。类方法介绍层次数据序时簿类UI从com.kingdee.eas.framework.client.TreeListUI继承。通过BOSStudio完成UI对象的创建、更改继承Query对象的类型以及处理控件绑定等。KDTree上每个节点的类型为KDTreeNode类型。必须重载的abstract方法:1.protectedabstractStringgetQueryFieldName():点击树上节点时形成过滤条件时的字段,例如地址簿序时簿界面右边的地址列表要依据左边Tree上选中的地址分类而刷新,此处则返回Address.class即可。2.protectedabstractITreeBasegetTreeInterface():获取层次数据实体的业务接口,以便调用业务方法。要求实体必须从TreeBase及其子类派生。3.protectedabstractStringgetGroupEditUIName():关联的类别编辑UI对象名,如果界面需要实现类别编辑,则需要重载该方法。4.TreeDetailListUI中,protectedabstractIObjectPKgetSelectedTreeKeyValue();子类必须重载实现,否则不能实现定位与移动。示例:IObjectPKdetail=newObjectUuidPK(getSelectedKeyValue());try{MyTreeDetailInfotreeInfo=(MyTreeDetailInfo)getBizInterface().getValue(detail);IObjectPKtree=newObjectUuidPK(treeInfo.getTree().getId());returntree;}catch(Exceptionex){handUIException(ex);returnnull;}5.可选的方法:参考层次数据序时簿类UI。4.1.9.带拥有者和分类的层次数据序时簿UI超类为ComboTreeDetailListUI,从TreeDetalListUI继承。4.2.编辑类UI4.2.1.类体系类体系内容CoreUIEAS的UI最高超类,继承BOS定义的CoreUIObject(从KDPanel派生,这样UI可以方便地嵌入到其它UI中)。|-EditUI编辑类UI的超类,支持实体对象的编辑能力,与ObjectBase配合使用。|-BillEditUI单据编辑类UI的超类,与BillBase配合使用。4.2.2.普通编辑类UI超类为EditUI,从CoreUI继承。EditUI支持实体对象的编辑,提供新增、删除、提交、暂存、作废数据、放弃作废、打印及上一条、下一条等功能。EditUI支持的实体对象必须从ObjectBase及其子类继承。类方法介绍普通编辑类UI从com.kingdee.eas.framework.client.EditUI继承。通过BOSStudio完成UI对象的创建、更改继承Entity对象的类型以及处理控件绑定等。必须重载的方法:1.protectedIObjectValuecreateNewData():新建业务对象,并设置初始值。示例:protectedIObjectValuecreateNewData(){CurrencyInfoinfo=newCurrencyInfo();//设定初值info.setCreator(sysContext.getOperator());info.setIsoCode(defaultIsoCode);info.setSign(defaultSign);returninfo;}2.protectedabstractIObjectBasegetBizInterface():获取实体对象的业务接口,供调用后台方法使用。示例:protectedIObjectBasegetBizInterface(){returnCurrencyFactory.getRemoteInstance();}可选的方法:1.protectedvoidverifyInput()throwsException:校验输入的合法性。可以直接检查空或范围等条件,也可以调用服务端提供的校验方法。可使用SysUtil.abort方法中断操作流程,并视情况弹出提示框及设置输入焦点。示例:protectedvoidverifyInput()throwsException{if(isNull(txtNum.getText())){MsgBox.showWarning(“编号不能为空”);txtNum.requestFocus();SysUtil.abort();}//可能抛出异常但无须捕获,最外层有缺省的异常处理器getBizInterface().checkNameDup(editData);//…其它检查代码}2.loadFields/storeFields:作用请参考前面通用设计方法的说明。3.getMessageIcon()/getMessageBgcolor()/getMessageText()设置状态栏提示图标、背景色、提示文字。示例:protectedIcongetMessageIcon(){returnSHOW_MESSAGE_ICON_DEFAULT;}protectedColorgetMessageBgcolor(){returnnewColor(0x0F,0x88,0x28);}protectedStringgetMessageText(){returnSHOW_MESSAGE_TEXT_OK;}4.showSaveSuccess/showSubmitSuccess子类可重载这些处理方式。默认情况下,如果有状态栏则使用状态栏处理,如果保存成功则绿色背景闪烁三次;否则使用消息对话框显示。示例:protectedvoidshowSaveSuccess(){MsgBox.ShowInfo(“success!”);}4.2.3.单据编辑类UI超类为BillEditUI,从EditUI继承。BillEditUI支持单据对象的编辑,除继承了EditUI的能力外,还可处理单据行的新增和删除。BillEditUI支持的实体对象必须从BillBase及其子类继承。类方法介绍单据编辑类UI从com.kingdee.eas.framework.client.BillEditUI继承。通过BOSStudio完成UI对象的创建、更改继承Entity对象的类型以及处理控件绑定等。必须重载的方法:1.protectedIObjectValuecreateNewDetailData():新建单据行,并设置初始值。示例:protectedIObjectValuecreateNewDetailData(){VoucherEntryInfoinfo=newVoucherEntryInfo();//设定初值info.setCreator(sysContext.getOperator());info.setXXX…returninfo;}可选的方法:1.loadLineFields/storeLineFields:数据绑定方法,针对单据行。若不能利用BOSStudio在设计期全部定义好绑定关系,则需要编码完成。2.protectedvoidafterAddLine(IObjectValuelineData):通知方法,允许在增加单据行后做相关处理。protectedvoidafterAddLine(IObjectValuelineData){//计算合计值并显示calcTotalAmount();}3.protectedvoidafterRemoveLine(IObjectValuelineData):通知方法,允许在删除单据行后做相关处理。4.protectedvoidafterSelectLine(IObjectValuelineData):通知方法,允许在选中单据行后做相关处理。

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

金蝶EAS-基类继承体系.docx

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信