BOS应用框架模块的设计与实现BOS应用框架的设计与实现(V2.0版)修订历史版本号修订日期修订者修订类型说明1.02009-10-10林培森新建2.02021-05-07林迅玄新增及补充第1页,总74页BOS应用框架模块的设计与实现第2页,总74页BOS应用框架模块的设计与实现前言本指南共分为六个章节,第一章介绍了BOS应用框架的概念和作用;第二章分析了BOS应用框架的总体架构,用例及功能设计;第三章分析了BOS应用框架的主要接口和类和核心业务逻辑的详细设计;第四章介绍了BOS应用框架的类体系以及在具体开发过程中的常用方法;第五章是FAQ及术语;第六章是二次开发常用接口及功能指南。本指南适用于EAS系统开发人员和二次开发人员以及想了解BOS应用框架的开发者。通过本指南的学习可以使开发人员初步了解BOS应用框架的基本原理以及BOS应用框架德设计及实现细节,掌握在BOS应用框架的基础上快速开发EAS具体业务的技巧。第3页,总74页BOS应用框架模块的设计与实现目录前言.......................................................................................................................2目录.......................................................................................................................3第一章概述.........................................................................................................61.1什么是应用框架........................................................................................61.2应用框架的作用........................................................................................61.3BOS应用框架...........................................................................................61.3.1BOS应用框架简介.........................................................................61.3.2BOS应用框架在系统中的层次.....................................................61.3.2BOS应用框架的作用.....................................................................7第二章应用框架总体设计.................................................................................82.1总体架构设计............................................................................................82.2用例设计....................................................................................................92.3表现层通用设计模式及功能说明..........................................................102.3.1取数虚模式....................................................................................102.3.2操作状态提示模式........................................................................112.3.3后台操作模式................................................................................112.3.4快速定位模式................................................................................122.3.5表头排序模式................................................................................122.3.6界面状态管理................................................................................122.3.7数据绑定模式................................................................................132.3.8表格设置模式................................................................................132.3.9通用校验框架模式........................................................................142.3.10通用异常框架模式......................................................................142.3.11树型结构的算法优化模式..........................................................152.3.12查看编辑界面的编辑与删除模式..............................................152.3.13打印设置用户相关性支持模式..................................................152.4业务逻辑层通用设计模式及功能说明..................................................162.4.1业务数据状态管理........................................................................162.4.2类体系............................................................................................18第三章应用框架详细设计...............................................................................233.1应用框架主要接口和类的设计..............................................................233.1.1客户端类继承体系........................................................................233.1.2服务端类继承体系........................................................................253.1.3批量框架(RPC改造)类详细设计...........................................303.2核心业务逻辑的设计..............................................................................333.2.1UI界面的创建流程.......................................................................333.2.2业务事件的响应流程....................................................................353.2.3序时簿界面读取数据的业务流程................................................363.2.4网络互斥处理流程........................................................................393.2.5批量框架处理流程........................................................................41第4页,总74页BOS应用框架模块的设计与实现第四章应用框架的具体实现...........................................................................434.1客户端......................................................................................................434.1.1UI界面的创建...............................................................................434.1.2UI对象生命周期监控...................................................................434.1.3UI界面的数据绑定.......................................................................444.1.4UI界面获取服务端数据对象.......................................................454.1.5各UI界面类常用API介绍..........................................................454.2服务端......................................................................................................614.2.1服务端两种批量操作的实现........................................................614.2.2服务端高效的对象更新方法的实现............................................62第五章FAQ及术语............................................................................................635.1FAQ..........................................................................................................635.1.1如何查询布署信息........................................................................635.1.2序时簿界面打开时会自动查询并显示所有的数据,如何在序时簿界面打开时自动加入一个过滤条件........................................................635.1.3新增一个功能按钮,如何在执行功能前检查列表是否有选中行........................................................................................................................635.1.4新增一个功能按钮,如何在功能执行完毕后刷新一下列表....635.1.5如何得到选中行的主键值或主键集合........................................635.1.6序时薄虚模式通过query查询的数据和通过query的sql查询数据不一致........................................................................................................635.1.7序时薄中表格定位默认只能定位id和名称字段,如何扩展可定位其他字段....................................................................................................635.1.8如何控制打开序时簿时是否弹出通用查询对话框....................635.1.9如何屏蔽序时簿界面表格右键菜单的“表格设置”菜单........645.2术语..........................................................................................................64第六章二次开发常用接口及功能指南...........................................................646.1通用UI页面(CoreUI)........................................................................646.1.1状态栏............................................................................................656.1.2附件................................................................................................656.1.3UI界面...........................................................................................656.2序时簿页面(ListUI)............................................................................666.2.1表格................................................................................................666.2.2合计行............................................................................................666.2.3查询功能........................................................................................676.2.4表格右键菜单................................................................................686.2.5其它................................................................................................696.3编辑界面(EditUI)...............................................................................716.3.1编辑界面增删查改功能................................................................716.3.2合计行............................................................................................726.4业务单据序时簿页面(CoreBillListUI)..............................................736.4.1表格................................................................................................736.4.2凭证................................................................................................736.5业务单据编辑界面(CoreBillEditUI).................................................74第5页,总74页BOS应用框架模块的设计与实现6.5.1BOTP(单据转换)..........................................................................746.5.2编辑界面分录.......................................................................................746.6左树右表序时簿界面(TreeListUI,TreeDetailListUI).....................746.6.1树节点............................................................................................746.6.2查询功能........................................................................................756.7其它..........................................................................................................756.7.1BOSUuid........................................................................................75第6页,总74页BOS应用框架模块的设计与实现第一章概述1.1什么是应用框架框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象组件及组件实例间交互的方法;一个框架是一个可复用的设计组件,它规定了应用的体系结构,阐明了整个设计、协作组件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法。应用框架则是指实现了某应用领域与业务无关的通用基础功能和底层服务的可重用组件。这样使用应用框架的编程人员就可以在一个基础结构和通用功能已经实现的基础上开发具体的业务功能或组件。1.2应用框架的作用应用框架强调的是软件的设计重用性和系统的可扩充性,它的主要作用包括抽象通用的组件模型,提供标准的基础服务,统一规范的编程模型,降低大型应用软件系统的开发难度,缩短开发周期,提高开发效率和质量。1.3BOS应用框架1.3.1BOS应用框架简介BOS应用框架(还是应该为EAS应用框架?)是BOS在长期的开发实践过程中,不断积累技术和经验,逐渐建立的一套符合企业信息化大部分应用场景的业务框架。开发人员无需关注太多细节就可以直接在应用框架的基础上开发具体的业务功能和组件。1.3.2BOS应用框架在系统中的层次BOS应用框架处于底层的BOS运行平台和高层的EAS应用系统之间,为EAS提供一个基础的运行框架,其所处的层次如图1.1所示:第7页,总74页BOS应用框架模块的设计与实现EAS应用系统WorkFlowMetaDataServices应用框架主体交互框架业务分类模版企业模型业务流程组织架构业务信息业务功能财务管理工具BOSStudio流程定制界面定制报表定制实体定制功能定制企业建模工具业务配置工具模型视图应用方案权限管理预警平台业务关联初始化管理参数配置设计模型流程实体界面功能查询人力资源管理客户关系管理供应链管理制造管理物流管理知识管理战略企业管理商业智能图3.1客户端和服务端的交互关系图1.3.2BOS应用框架的作用BOS应用框架在EAS系统的开发和应用中的作用主要体现为以下几点:(1)抽象通用的业务逻辑;如新增,修改,删除等。(2)集成并提供标准的基础服务;如网络互斥,权限等。(3)规范统一的编程模型;如单据,基础资料等。(4)统一编码规范和接口;(5)降低开发的复杂度,提高开发效率,(6)最大限度的实现系统的设计重用和代码重用。第8页,总74页BOS应用框架模块的设计与实现第二章应用框架总体设计2.1总体架构设计EAS应用框架的总体架构设计如图2.1所示:图2.1应用框架总体架构图从图2.1中可以看出,应用框架的总体架构按照软件架构设计分层的思想分为以下五层:第9页,总74页BOS应用框架模块的设计与实现(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.2用例设计BOS应用框架主要为两类角色提供服务:一种是对外的EAS的用户,另一种是对内的EAS的开发人员;其用例图如图2.2所示:第10页,总74页BOS应用框架模块的设计与实现图2.2应用框架的用例图从图2.2中可以看出,对于EAS的开发人员应用框架主要为其提供一些标准的基础服务和规范的业务逻辑的实现机制,而对于EAS的用户应用框架主要通过抽象出各业务的编辑界面和序时簿界面的通用的与业务无关的操作,从而为EAS的用户提供一些通用的基本功能。2.3表现层通用设计模式及功能说明2.3.1取数虚模式对于列表方式数据查询,应用框架统一使用虚模式进行取数。1.意图:第11页,总74页BOS应用框架模块的设计与实现在数据量较大的情况下,进行分批取数。2.动机:在信息系统中,数据查询是最常用的操作,但如果查询结果数据量很大情况下,一方面会增加网络传输的数据量,另一方面是一个耗时的过程,客户会出现一个可能较长时间的等待。这两方面都会降低软件的可用性。为解决这个问题,我们使用虚模式。如果列表中定义了主键,则先取前100条数据,然后在后台获取所有的数据ID值。如果没有定义主键,则使用top100等方式来获取。后一种方式不推荐使用。3.适用性:在数据量较大情况下非常有效。如果是海量数据,如查询结果很大,比如100000条以上,所有的ID获取也是一个不小的数据量与耗时过程,这时需要进行特殊处理。4.应用:ListUI中使用。2.3.2操作状态提示模式对于操作提示,应用框架统一了提示方式。如果界面中有状态条,则在状态条中提示;如果没有状态条,则为对应框方式处理。1.意图:在状态条中进行统一信息提示。2.动机:在企业信息管理系统中,用户与系统的交互非常多。在用户操作过程中,一些非法的提示、成功完成操作,不成功的操作,我们传统的做法是给用户一个对话框提示,显示这些信息。但这样一来,我们会增加用户的无意义的操作,中断用户的连续操作,对用户非常不友好。为了解决这类问题,对于一些系统的提示,采用状态条进行统一的提示,减少用户的一些无意义的操作。用户仅在状态栏就可以获取系统信息。3.适用性:对用户的一些常用而且连续的操作界面,我们这种模式大大方便用户的交互对于无状态栏或信息较多的情况无能为力。4.应用:CoreUI,EditUI2.3.3后台操作模式对于长时间的耗时操作,应用框架统一了处理机制,当前界面锁定,状态栏进度条提示。但用户可切换到其他业务界面继续操作。1.意图:长时间操作进行多线程处理,不影响其他任务。2.动机:在企业应用管理系统中,有一些长时间的操作功能,如过账、结账等功能。这时传统的做法会让用户等待,直到操作完成。这样用户这段时间内基本上对系统不可操作,大大降低了用户的可用性。为了解决这个问题,框架采用了对某些功能使用多线程机制,对于耗时操作第12页,总74页BOS应用框架模块的设计与实现新起一个线程来运行。这样其他任务还可以继续使用,增加了用户体验。3.适用性:对于一些操作提供了方便。长时间操作的当前操作页签会锁定,直到系统完成后释放。4.应用:CoreUI2.3.4快速定位模式对于列表方式数据查询,业务系统可定制定位字段,应用框架根据定制字段在列表中自动定位。1.意图:对于大数据量情况下,快速定位到用户期望操作的数据下。2.动机:对于大数据量的列表,框架已经使用了虚模式,但用户要在列表中找一条符合条件的数据,就可能需要拉动滑动条来查看,这对于用户来说是一件不愉快的事。为了解决这个问题,我们对常用的列使用了快速定模式,方便用户来进行查找操作。3.适用性:用户可快速地在列表中找到符合条件的记录。4.应用:ListUI2.3.5表头排序模式对于列表浏览界面,可通过单击表头来实现使用表头字段进行重新的全排序1.意图:对于列表数据,用户可自由地重新排序他希望的列。2.动机:对于大数据量的列表结果,通常我们做过滤时会让用户指定排序的列。但在结果查询后,用户也希望可以在结果集中进行重新排序,而不是进行重新过滤后指定排序字段。为了解决这个问题,我们允许用户对指定的表列头进行排序,而不需要重新在过滤中指定排序字段。3.适用性:用户可对结果集进行快速的重新排序。4.应用:ListUI表头排序。2.3.6界面状态管理对于新增、查看、编辑状态进行了统一处理。1.意图:对于编辑界面的状态处理进行管理。第13页,总74页BOS应用框架模块的设计与实现2.动机:对于通用的用户操作状态,我们给出一下统一的处理机制。如:查看状态下,所有的界面元素被锁定,切换到编辑状态时解锁,还原初始状态。3.适用性:用于对EAS中统一的操作管理机制。4.应用:EditUI及其子类。5.缺点及注意事项:对于业务状态决定的界面元素需要业务来完成。2.3.7数据绑定模式1.意图:统一规划界面数据与实体的关系。2.动机:由于控件与界面操作的实体没有任何关联,那么每个界面我们都需要开发人员手工对控件与实体的值进行同步处理,大家需要写很多重复代码,为了减少大家的工作量,并且可视化处理,同BOSStudio配合,来共同完成对象属性与控件属性的映射关系。3.适用性:可在数据编辑界面完成数据加载到控件,也可把控件的值写入对象中。4.应用:在定义了数据绑定的界面中。支持HD,HmD,HDD等常见结构。5.缺点及注意事项:数据绑定必须识别数据类型,控件类型。这样生成代码才能识别出来。2.3.8表格设置模式1.意图:统一表格的格式处理,如:列宽,列顺序,行高等情况。2.动机:由于表格的一些通用格式用户可以自己进行定义,那么统一进行格式数据管理也顺理成章。目前可以进行统一处理的格式有:统一的行高,列宽,列锁定(此列前所有列都被锁定),列次序,列隐藏。3.适用性:仅对于固定列的表格有意义。4.应用:所有ListUI的子类。5.缺点及注意事项:动态列的表格,由过滤条件来决定列的显示情况的不能处理。或者说需要业务的处理在应用框架表格设置后进行后续处理。2.3.9通用校验框架模式第14页,总74页BOS应用框架模块的设计与实现1.意图:统一数据校验处理机制。2.动机:通用校验框架主要实现了客户端的自动化校验以及支持扩展的自定义校验,并与通用异常框架结合,将校验产生的错误信息一次性抛出,改善了原有方式的用户交互性。通用校验框架主要负责客户端校验过程,服务器端的校验仍然按原有方式处理。3.适用性:对于实体属性自动化校验相对比较简单,几乎不需要用户的干预,只需为实体属性定义约束规则即可。针对一些复杂业务逻辑的校验,校验框架提供了自定义实体属性的校验方式,自定义校验使用命名约束实现,所有符合命名约束的方法将会被框架调用。4.应用:服务端,客户端均可使用。5.缺点及注意事项:对于已经存在的EAS代码升级不能平滑进行,需要开发人员修改程序代码。2.3.10通用异常框架模式1.意图:通用异常框架是为了解决业务系统中抛出的多异常的需求,使用通用异常处理框架,可以将多个异常封装成一个业务异常抛出,并能对抛出异常的信息进行自定义的格式化实现。2.动机:在服务器端的ControllerBean里面,经常要对值对象属性进行校验,并将校验错误的异常抛出。但是这样的异常分布太多,如果多个异常同是发生是并不能对于这些进行一次性校验,这样对于用户很难使用,也不友好。通用异常框架包装所有的可校验异常,可一次性抛出,方便用户一次性修改错误信息,很大程度上提高了软件的可用性。3.适用性:对于值对象属性的非法性等简单处理的异常进行统一包装。4.应用:服务端,客户端均可使用。5.缺点及注意事项:对于已经存在的EAS代码升级不能平滑进行,需要开发人员修改程序代码。2.3.11树型结构的算法优化模式1.意图:第15页,总74页BOS应用框架模块的设计与实现对于层次结构的数据避免了递归算法,提高数据查询效率。2.动机:使用特定的数据结构来避免树结构的递归处理算法,对于整棵树,可以一次性获取所有的节点数据,减少了数据的处理。约定,使用长编码来生成树结构的层次关系,这样使用长编码就可以一次得到一个节点的所有下级节点3.适用性:适用于树结构的数据维护中,并且对于树的排序没有特殊的要求情况下4.应用:所有EAS的树结构中。5.缺点及注意事项:对于编码的次序只能靠字符的次序来排列,不能由用户决定树结构的一个树排列次序。2.3.12查看编辑界面的编辑与删除模式1.意图:能够在编辑界面中对于数据进行修改与删除处理。2.动机:对于数据编辑界面,需要能够由查看状态切换到编辑状态,并且可以进行数据的删除操作。这种模式改进行了用户的体验,方便数据维护操作。3.适用性:对于所有的数据编辑,此模式都可使用。4.应用:可应用于EditUI的所有子类中。5.缺点及注意事项:暂无。2.3.13打印设置用户相关性支持模式1.意图:由于目前的打印设置的格式用户可自行定义,包括:页眉,页脚,内部字体等。因此有必要对于这类用户可自定义的格式进行保存处理,以方便用户下一次依然使用此设置。2.动机:用户对于目前表格中的页眉,页脚,字体等信息可以进行编辑与修改,但EAS原来没有考虑用户重用此类设置,倒致用户每次打印表格数据都要进行重复的工作,大大降低的EAS的可用性。因此,应用框架统一把此类需求进行整理,进行了一致的处理。3.适用性:适用于序时薄的界面中。4.应用:仅适用于EAS的ListUI的子类中。5.缺点及注意事项:第16页,总74页BOS应用框架模块的设计与实现仅适用于EAS的ListUI的子类中。2.4业务逻辑层通用设计模式及功能说明2.4.1业务数据状态管理业务数据状态属于数据的附加描述属性,表达业务数据经过的处理过程,例如:是否已生效、是否已审核,并据此进行相应的逻辑控制。业务数据状态根据业务数据的不同类型会有不同组合,例如:基础资料中可能只有是否生效状态,而单据中会有是否已审核及是否已关闭等状态。在应用架构中会抽象业务数据中存在的状态种类,并在超类体系里固化对某些通用状态的处理逻辑。状态配置表下表列出了所有已知的数据状态属性,这些属性将作为基础的状态属性供定义具体的业务对象时选择使用。状态名状态描述状态枚举类型属性名字段名说明生效状态0:暂存1:生效EffectedStatusEnumEffectedStatusFEffectedStatus暂存的业务数据不需要进行数据合法性检查,不参与统计报表和结账结算处理作废状态0:普通1:作废DeletedStatusEnumDeletedStatusFDeletedStatus作废的业务数据不参与统计报表和结账结算处理审核状态0:未审核1:已审核CheckedStatusEnumCheckedStatusFCheckedStatus冻结状态0:未冻结1:已冻结BlockedStatusEnumBlockedStatusFBlockedStatus冻结的业务对象禁止参与新的业务活动,但已经存在的业务活动不受影响。有的业务对象的冻结状态可能会进一步细分,如“客户”的冻结可能会包含:Postingblock、Orderblock、Deliveryblock、Invoicingblock下达状态0:未下达1:已下达ReleasedStatusEnumReleasedStatusFReleasedStatus订单类的单据一般会有下达状态预算审批状态0:未审批1:审批未通BudgetAuditedStatusEnumBudgetAuditedStatusFBudgetAuditedStatus第17页,总74页BOS应用框架模块的设计与实现过2:审批已通过交付状态0:未交付1:部分交付2:全部交付DeliveredStatusEnumDeliveredStatusFDeliveredStatusFI记账状态0:未记账1:已记账FIPostedStatusEnumFIPostedStatusFFIPostedStatusMA记账状态0:未记账1:已记账MAPostdStatusEnumMAPostdStatusFMAPostdStatus关闭(结清)状态0:未关闭1:已关闭ClosedStatusEnumClosedStatusFClosedStatus说明:属性对应的数据类型都是相应的枚举类型,类型为Int。字段的数据类型也使用Int。在com.kingdee.eas.framework包中定义了枚举类型供使用。使用方法所有基础的状态属性被定义于配置表中,已集成于BOSStudio中。如果业务对象要使用某个状态属性,可方便地选取即可。单据状态单据状态往往是由多个基础状态属性组合后对外的统一表现形式。以订单处理为例,可能表现为六种状态:在内部处理中,实际上选择了三个基础的状态属性来实现控制逻辑:作废状态、完成状态和关闭状态。控制逻辑的规则是:单据状态状态判断操作控制取消只要作废状态为1若单据进入取消状态,则只有恢复后才能进行其它所有单据操作关闭单据不是取消状态且关闭状态为1禁止除与取消相关外的其它操作计划单据不是取消状态也不是关闭状态,且完成状态为0(未下达)允许下达操作下达单据不是取消状态也不是关闭状态,且完成状态为1(下达)允许撤消操作进行中单据不是取消状态也不是关闭状态,且完成状态为2(进行中)完成单据不是取消状态也不是关闭状态,且完成状态为3(完成)允许关闭操作从编程的方便性考虑,推荐为单据状态定义自己的枚举,并为值对象增加一个getBillStatus方法。该方法通过计算基本属性的取值而得到对应的单据状态。第18页,总74页BOS应用框架模块的设计与实现需要注意的是,设置单据状态的操作仍将操作基本状态属性,并且在设置某个状态属性时可能需要根据控制逻辑同时设置其它属性。2.4.2类体系类体系内容CoreBase所有业务对象的超类|-ObjectBase普通业务对象的超类|-DataBase基础资料类业务对象的超类|-TreeBase层次数据类业务对象的超类|-CoreBillBase单据业务对象的超类,对应单据头部分|-BillBase财务类单据业务对象的超类,对应财务单据头部分|-CoreBillEntryBase单据业务对象的超类,对应单据体部分|-BillEntryBase财务类单据业务对象的超类,对应财务单据体部分CoreBase所有业务对象超类职责所有EAS业务对象的超类,具有ID属性,完成数据的基本维护功能。如,新增、修改、删除、暂存等操作。属性名称描述数据类型对应字段Id对象IDBOSUUIDFID方法名称描述addNew继承基类,添加时设置creator,createTime,lastUpdateUser,lastUpdateTime,等固定属性值。Update继承基类,添加时设置lastUpdateUser,lastUpdateTime,company等固定属性值。Submit设置业务数据生效,并保存save设为暂存状态,并保存cancel作废(逻辑删除),并保存cancelCancel取消作废状态,并保存checkStatusValid检查业务数据是否是有效canUpdate检查业务数据能否更新,逻辑条件是否满足更新要求(补充)isReferenced检查业务数据是否被引用,删除操作会调用第19页,总74页BOS应用框架模块的设计与实现此函数(补充)常见问题1.问:如何查询的布署信息?答:应用框架实体层是抽象类,没有EJB布置信息,也就是说应用框架不需要布署。2.问:CoreBase为什么没有effectedStatus属性?答:并不是每个业务对象都有此属性,我们这里进行了属性命名约束,如果要使业务对象生效,必须使用“effectedStatus”名称。如果子类没有此属性,则我们基类中的save与submit作用一致。3.这些基类声明的方法,子类不可以再一次定义,否则就会覆盖掉基类方法失去了基类的作用。ObjectBase普通业务对象超类属性名称描述数据类型对应字段CU控制单元连接属性——连接到控制单元中FcontrolUnitIDCreator创建者连接属性——连接到用户FcreatorIDCreateTime创建时间TimestampFcreateTimeLastUpdateUser最后修改者连接属性——连接到用户FLastUpdateUserIDLastUpdateTime最后修改时间TimestampFLastUpdateTime常见问题1.问:Creator、CreateTime、LastUpdateUser、LastUpdateTime作用及意义?答:所在普通业务对象的基本属性,由基类来维护,业务对象不能用作其他用途。DataBase基础资料超类属性名称描述数据类型Name名称(多语言)StringNumber编码Stringdescription描述(多语言)StringsimpleName简称String方法第20页,总74页BOS应用框架模块的设计与实现名称描述checkNameBlank名称是否为空checkNameDup名称是否重复checkNumberBlank编码是否为空checkNumberDup编码是否重复getFullDisplayName获取长名称getBizOUCoreBaseInfo的访问接口。注:名称与编码检查方法都是需要根据业务要求进行调用的,应用框架本身不调用。常见问题1.问:为何继承自DataBase的类没有自动进行名称及编码的检查?答:没办法统一检查机制,可能由于检查的条件不一样,如科目表使用全局的检查,就可直接调用如上的方法来完成。2.问:编码规则如何起作用?答:编码规则在DataBase类起作用。从DataBase的类如果定义了编码规则就会自动由基类来完成,子类不需要关心。TreeBase层次数据超类属性名称描述数据类型对应字段IsLeaf是否叶节点BooleanFIsLeafLevel所在级次IntegerFLevelLongNumber节点完整编号StringFLongNumber因为超类中定义的关系无法实例化,所以TreeBase并未定义parent关联属性。要求在子类中自行建立这个表示指向父节点的关联属性,并且约定属性名一定是parent。方法名称描述updateLeafByLongNumber父节点编号更新时重设所有子节点编号checkParentDataExist检查该编号下的父节点是否存在checkParentValid校验父节点的状态应为有效,父节点是否被删除。checkParentBeUsed校验父节点是否被其他数据使用。如果被使用则不能新建子节点。子第21页,总74页BOS应用框架模块的设计与实现类需要通过重载_isReference来定义引用逻辑getRoot获取根节点getChildren返回儿子节点集合getAllChildren返回所有后代节点集合deleteWithChildren删除自身及其所有后代节点moveTreeNode移动节点位置常见问题1.问:isLeaf、level、longNumber由基类处理吗?答:是的。子类不需要进行干预。2.问:检查编码重复的注意事项。答:原则:输入项必须完整,生成项可以没有,如level,isLeaf,longnumber等,传递给基类的值要求有id,number,name,description。CoreBillBase单据超类(单据头)属性名称描述数据类型对应字段Number单据编号StringFNumberhandleTime经办时间TimeStampFHandleTimeHandler经手人连接属性——连接到用户FhandlerIDDescription备注(多语言)StringFdescriptionhasEffected是否曾经生效BooleanFhasEffectedAuditor审核人连接属性——连接到用户FcheckIDsource...