参考课件应用框架开发指南_第1页
参考课件应用框架开发指南_第2页
参考课件应用框架开发指南_第3页
参考课件应用框架开发指南_第4页
参考课件应用框架开发指南_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、应用框架开发指南目录应用框架概述4应用框架设计模型结构.通用设计模式及功能说明....1.6.取数虚模式4操作状态提示模式4操作模式5快速定位模式5表头排序模式5界面状态管理62.2.业务对象层........11.通用设计. 6业务数据状态管理6类体系9所有业务对象超类 CoreBase9普通业务对象超类 ObjectBase10基础资料超类 DataBase11层次数据超类 TreeBase12单据超类

2、 CoreBillBase(单据头)13单据超类 CoreBillEntryBase(单据体)14财务类单据超类 BillBase(单据头)14财务类单据超类 BillEntryBase(单据体)152.3.UI 层........8.通用设计. 15数据绑定15UI 元素的使能. 16UILoadListener16序时簿类 UI16类体系17通用基类 CoreUI17普通序时

3、簿类 ListUI17带通用的序时簿类 CommonQueryListUI19单据序时簿类 UI20层次数据序时簿类 UI20带拥有者的层次数据序时簿类 UI22带的层次数据序时簿 UI22带拥有者和的层次数据序时簿 UI23编辑类 UI23类体系23普通编辑类 UI24单据编辑类 UI253.应用框架典型范例263.1. . 26第2页,总26页应用框架开发指南4.5.总结错误!未定义书签。附录 A错误!未定义书签。5.1.应用框架 FQA错误!未定义书签。第3页,总26页应用框架开发指南 1. 应用框架概述应用框架初始目标即是实现基本数据结构及通用界面交互的处理。 2. 应用框架设计模型结

4、构2.1. 通用设计模式及功能说明2.1.1. 取数虚模式对于列表方式数据,应用框架统一使用虚模式进行取数。1. 意图:在数据量较大的情况下,进行分批取数。2. 动机:在系统中,数据是最常用的操作,但如果结果数据量很大情况下,一方面会增加网络传输的数据量,另一方面是一个耗时的过程,客户会出现一个可能较长时间的等待。这两方面都会降低的可用性。为解决这个问题,我们使用虚模式。如果列表中定义了主键,则先取前 100 条数据,然后在获取所有的数据 ID 值。如果没有定义主键,则使用 top 100 等方式来获取。后3.适用性:在数据量较大情况下非常有效。式不推荐使用。如果是海量数据,如结果很大,比如

5、100000 条以上,所有的 ID 获取也是一个不小的数据量与耗时过程,这时需要进行特殊处理。4.应用: ListUI 中使用。2.1.2. 操作状态提示模式对于操作提示,应用框架统一了提示方式。如果界面中有状态条,则在状态条中提示;如果没有状态条, 则为对应框方式处理。1.意图:在状态条中进行统一2.动机:提示。在企业作,不管理系统中,用户的交互非常多。在用户操作过程中,一些的提示、完成操的操作,我们传统的做法是给用户一个框提示,显示这些。但这样一来,我们会增加用户的无意义的操作,中断用户的连续操作,对用户非常不友好。为了解决这类问题,对于一些系统的提示,采用状态条进行统一的提示,减少用户的

6、一些无意义的操作。第4页,总26页应用框架开发指南用户仅在状态栏就可以获取系统3.适用性:。对用户的一些常用而且连续的操作界面,我们这种模式大大方便用户的交互。对于无状态栏或4.应用: CoreUI,EditUI较多的情况为力。2.1.3.操作模式对于长时间的耗时操作,应用框架统一了处理机制,当前界面锁定,状态栏进度条提示。但用户可切换到其他业务界面继续操作。1. 意图:长时间操作进行多线程处理,不影响其他任务。2. 动机:在企业应用管理系统中,有一些长时间的操作功能,如过账、结账等功能。这时传统的做待,直到操作完成。这样用户这段时间内基本上对系统不可操作,大大降低了用户的可用性。让用户等为了

7、解决这个问题,框架采用了对某些功能使用多线程机制,对于耗时操作新起一个线程来运行。这样其他任务还可以继续使用,增加了用户体验。3.适用性:对于一些操作提供了方便。长时间操作的当前操作页签会锁定,直到系统完成后4.应用: CoreUI。2.1.4. 快速定位模式对于列表方式数据1.意图:,业务系统可定制定位字段,应用框架根据定制字段在列表中自动定位。对于大数据量情况下,快速定位到用户期望操作的数据下。2. 动机:对于大数据量的列表,框架已经使用了虚模式,但用户要在列表中找一条符合条件的数据,就可能需要拉动滑动条来查看,这对于用户来说是一件不愉快的事。为了解决这个问题,我们对常用的列使用了快速定模

8、式,方便用户来进行查找操作。3. 适用性:用户可快速地在列表中找到符合条件的4.应用: ListUI。2.1.5. 表头排序模式对于列表浏览界面,可通过单击表头来实现使用表头字段进行重新的全排序。第5页,总26页应用框架开发指南1. 意图:对于列表数据,用户可2. 动机:地重新排序他希望的列。对于大数据量的列表结果,通常我们做过滤时会让用户指定排序的列。但在结果以在结果集中进行重新排序,而不是进行重新过滤后指定排序字段。后,用户也希望可为了解决这个问题,我们3.适用性:用户对指定的表列头进行排序,而不需要重新在过滤中指定排序字段。用户可对结果集进行快速的重新排序。4.应用:ListUI 表头排

9、序。2.1.6. 界面状态管理对于新增、查看、编辑状态进行了统一处理。1.意图:2.动机:3.适用性:4.应用:2.2. 业务对象层应用框架在业务对象层建立了一些典型业务对象,可用做设计建立的业务对象的超类。这些用做超类的业务对象,既定义了对象属性,也提供了业务会自动维护 level、isLeaf 和 longNumber 的正确性。例如,层次数据的超类 TreeBase 在数据保存时2.2.1. 通用设计2.2.2. 业务数据状态管理业务数据状态属于数据的附加描述属性,表达业务数据经过的处理过程,例如:是否已生效、是否已审核,并据此进行相应的逻辑。业务数据状态根据业务数据的不同类型会有不同组

10、合,例如:基础资料中可能只有是否生效状态,而单据中会有是否已审核及是否已关闭等状态。在应用架构中会抽象业务数据中的状态种类,并在超类体系里固化对某些通用状态的处理逻辑。第6页,总26页应用框架开发指南状态配置表下表列出了所有已知的数据状态属性,这些属性将作为基础的状态属性供定义具体的业务对象时选择使用。第7页,总26页状态名状态描述状态枚举类型属性名字段名说明生效状态0:暂存1:生效EffectedStatusEnumEffectedStatusFEffectedStatus暂存的业务数据不需要进行数据 检查,不参与统计报表和结账结算处理作废状态0:普通1:作废DeletedStatusEnu

11、mDeletedStatusFDeletedStatus作废的业务数据不参与统计报表和结账结算处理审核状态0:未审核1:已审核CheckedStatusEnumCheckedStatusFCheckedStatus冻结状态0:未冻结1:已冻结BlockedStatusEnumBlockedStatusFBlockedStatus冻结的业务对象参与新的业务活动, 但已经的业务活动不受影响。有的业务对象的冻结状态可能会进一步细分,如“客户”的冻结可能会包含:Posting block、Order block、Delivery block、Invoicing block下达状态0:未下达1:已下达R

12、eleasedStatusEnumReleasedStatusFReleasedStatus订单类的单据会有下达状态预算审批状态0:未审批1:审批未通过 2:审批已通过BudgetAuditedStatu sEnumBudgetAuditedS tatusFBudgetAuditedS tatus交付状态0:未交付1:部分交付2:全部交付DeliveredStatusEnu mDeliveredStatu sFDeliveredStatu s应用框架开发指南说明:1、 属性对应的数据类型都是相应的枚举类型,类型为 Int。字段的数据类型也使用 Int。2、 在 com.kingdee.eas.

13、framework 包中定义了枚举类型供使用。使用所有基础的状态属性被定义于配置表中,已集成于 BOS Studio 中。如果业务对象要使用某个状态属性,可方便地选取即可。单据状态单据状态往往是由多个基础状态属性组合后对外的统一表现形式。以订单处理为例,可能表现为六种状态:在内部处理中,实际上选择了三个基础的状态属性来实现逻辑的规则是:逻辑:作废状态、完成状态和关闭状态。从编程的方便性考虑,推荐为单据状态定义的枚举,并为值对象增加一个 getBillStatus。该通过计算基本属性的取值而得到对应的单据状态。需要注意的是,设置单据状态的操作仍将操作基本状第8页,总26页单据状态状态操作取消关闭

14、计划下达 进行中完成只要作废状态为 1单据不是取消状态且关闭状态为 1单据不是取消状态也不是关闭状态, 且完成状态为 0(未下达)单据不是取消状态也不是关闭状态, 且完成状态为 1(下达)单据不是取消状态也不是关闭状态, 且完成状态为 2(进行中)单据不是取消状态也不是关闭状态, 且完成状态为 3(完成)若单据进入取消状态,则只有恢复后才能进行其它所有单据操作除与取消相关外的其它操作下达操作撤消操作关闭操作FI记账状态0:未记账1:已记账FIPostedStatusEnumFIPostedStatusFFIPostedStatusMA记账状态0:未记账1:已记账MAPostdStatusEnu

15、mMAPostdStatusFMAPostdStatus关闭(结清)状态0:未关闭1:已关闭dStatusEnumdStatusFdStatus应用框架开发指南态属性,并且在设置某个状态属性时可能需要根据逻辑同时设置其它属性。2.2.3. 类体系2.2.4. 所有业务对象超类 CoreBase职责所有 EAS 业务对象的超类,具有 ID 属性,完成数据的基本维护功能。如,新增、修改、删除、暂存等操作。属性第9页,总26页名称描述addNew继承基类, 添加时设置 creator , createTime, lastUpdateUser, lastUpdateTime,等固定属性值。Update

16、继 承 基 类 , 添 加 时 设 置 lastUpdateUser, lastUpdateTime, company 等固定属性值。Submit设置业务数据生效,并保存save设为暂存状态,并保存cancel作废(逻辑删除),并保存名称描述数据类型对应字段Id对象 IDBOSUUIDFID类体系内容CoreBase所有业务对象的超类|- ObjectBase|- DataBase|- TreeBase|-CoreBillBase|- BillBase|- CoreBillEntryBase|-BillEntryBase普通业务对象的超类基础资料类业务对象的超类层次数据类业务对象的超类单据业务

17、对象的超类,对应单据头部分财务类单据业务对象的超类,对应财务单据头部分单据业务对象的超类,对应单据体部分财务类单据业务对象的超类,对应财务单据体部分应用框架开发指南常见问题1.问:如何的布署?答:应用框架实体层是抽象类,没有 EJB 布置2.问:CoreBase 为什么没有 effectedStatus 属性?,也就是说应用框架不需要布署。答:并不是每个业务对象都有此属性,我们这里进行了属性命名约束,如果要使业务对象生效,必须使用“effectedStatus”名称。如果子类没有此属性,则我们基类中的 save 与 submit 作用一致。3.这些基类的,子类不可以再一次定义,否则就会覆盖掉基

18、类,失去了基类的作用。2.2.5. 普通业务对象超类 ObjectBase属性第10页,总26页名称描述名称描述数据类型对应字段CU单元连接属性 连接到控制单元中FcontrolUnitIDCreator创建者连接属性 连接到用户FcreatorIDCreateTime创建时间TimestampFcreateTimeLastUpdateUser最后修改者连接属性 连接到用户FLastUpdateUserIDLastUpdateTime最后修改时间TimestampFLastUpdateTimecancelCancel取消作废状态,并保存checkStatusValid检查业务数据是否是有效ca

19、nUpdate检查业务数据能否更新,逻辑条件是否满足更新要求(补充)isReferenced检查业务数据是否被,删除操作会调用此函数(补充)应用框架开发指南常见问题1.问:Creator、CreateTime、LastUpdateUser、LastUpdateTime 作用及意义?答:所在普通业务对象的基本属性,由基类来维护,业务对象不能用作其他用途。2.2.6. 基础资料超类 DataBase属性注:名称与编码检查都是需要根据业务要求进行调用的,应用框架本身不调用。常见问题1.问:为何继承自 DataBase 的类没有自动进行名称及编码的检查?答:没办法统一检查机制,可能由于检查的条件不一样

20、,如科目表使用全局的检查,就可直接调用如上的来完成。2.问:编码规则如何起作用?答:编码规则在 DataBase 类起作用。从 DataBase 的类如果定义了编码规则就会自动由基类来完成,第11页,总26页名称描述checkNameBlank名称是否为空checkNameDup名称是否重复checkNumberBlank编码是否为空checkNumberDup编码是否重复getBizOUCoreBaseInfo 的接口。名称描述数据类型Name名称(多语言)StringNumber编码Stringdescription描述(多语言)StringsimpleNameString应用框架开发指南

21、子类不需要关心。2.2.7. 层次数据超类 TreeBase属性因为超类中定义的无法实例化,所以 TreeBase 并未定义 parent 关联属性。要求在子类中自行建立这个表示指向父节点的关联属性,并且约定属性名一定是 parent。常见问题1. 问:isLeaf、level、longNumber 由基类处理吗? 答:是的。子类不需要进行干预。2. 问:检查编码重复的注意事项。第12页,总26页名称描述updateLeafByLongNumber父节点编号更新时重设点编号checkParentDataExist检查该编号下的父节点是否checkParentValid校验父节点的状态应为有效,

22、父节点是否被删除。checkParentBeUsed校验父节点是否被其他数据使用。如果被使用则不能新建子节点。子类需要通过重载_isReference 来定义 逻辑getRoot获取根节点getChildren返回儿子节点集合getAllChildren返回所有后代节点集合deleteWithChildren删除自身及其所有后代节点moveTreeNode移动节点位置名称描述数据类型对应字段IsLeaf是否叶节点BooleanFIsLeafLevel所在级次IntegerFLevelLongNumbe r节点完整编号StringFLongNum ber应用框架开发指南答:原则:输入项必须完整,

23、生成项可以没有,如 level,isLeaf,longnumber 等,传递给基类的值要求有 id,number,name,description。2.2.8. 单据超类 CoreBillBase(单据头)属性第13页,总26页名称描述checkOut结清(关闭)业务数据passAudit审核通过UnpassAudit设置为未审核状态ze冻结业务数据Unze解冻业务数据CheckStatusze检查业务数据是否被冻结CheckNumberDup检查单据编号是否重复CheckNumberBlank检查单据编号是否为空checkHandleTimeBlank检查经办时间是否为空checkHandl

24、erBlank检查经办人是否为空名称描述数据类型对应字段Number单据编号StringFNumberhandleTime经办时间TimeStampFHandleTimeHandler经手人连接属性连接到用户FhandlerIDDescription备注(多语言)StringFdescriptionhasEffected是否曾经生效BooleanFhasEffectedAuditor审核人连接属性连接到用户FcheckIDsourceBillId原始单据 IDStringFsourceBillIDsourceFunction来源功能StringFsourceFunction应用框架开发指南可选

25、的:1. protected System getOwnedSys():定义单据所属的系统。通常情况下一种单据所属的系统是确定的,可以在单据对象的扩展属性予以定义。超类负责处理这种情况。对于一种类型的单据被实例化到不同系统的情况,可以增加实体属性,并重载这个。常见问题1.问:单据生成凭证的处理?答:校验是否已经生成过凭证,如果已经生成过则抛异常。2.问:单据关联处理。答:处理所有的分录关联。分为暂存与提交两类。2.2.9. 单据超类 CoreBillEntryBase(单据体)属性常见问题2.2.10.财务类单据超类 BillBase(单据头)属性第14页,总26页名称描述数据类型对应字段名称

26、描述数据类型对应字段Sequence单据分录序列号(定义为序列属性即使用seq)IntegerFSequenceCheckLineExist检查是否至少有一条分录getOwnedSys获取所属系统。generateVoucher生成凭证deleteVoucher删除凭证:若没有生成过凭证,则返回 false。saveRelations暂存关联submitRelations保存并递交关联应用框架开发指南2.2.11.财务类单据超类 BillEntryBase(单据体)属性2.3. UI 层UI 层提供数据的展现方式与客户端逻辑。2.3.1. 通用设计2.3.2. 数据绑定数据绑定主要分为两种类型

27、:类界面的数据绑定和编辑类界面的数据绑定。对于类界面,数据绑定是一个从 Query 对象到 KDTable 的单向过程。通常在设计期定义完绑定后,1.2.3.在代码中再关注绑定问题。相关是:由 KDTable 的 setFormatXML完成列的定义由 KDTable 的 putBindContents 传递绑定在 KDTalbe 的 doRequestRowSet中完成数据的获取与显示对于编辑类界面,由 loadFields 和 storeFields定义了 Entity 对象与界面控件双向的绑定。和如果对象是聚合类型的数据(例如单据)并选择 KDTable 显示单据体,则进一步由 load

28、LineFieldsstoreLineFields 定义了单据行与 KDTable 的绑定会由 BOS 自动生成。注意:不管是完全不使用 BOS Studio 来定义绑定。如果在 BOS Studio 中定义绑定,那么这些,还是只有部分控件使用 BOS Studio 定义了绑定,你都需要重载这些,并通过手工编码来把所有绑定补充完整。这是因为超类依赖于这些来管理绑定。第15页,总26页示例:假设币别编辑界面没有为 isoCode 在设计期定义绑定,那么需要补充定义:public void loadFields()super.loadFields();名称描述数据类型对应字段Company公司连接

29、属性连接到公司FcompanyID应用框架开发指南2.3.3. UI 元素的使能对 UI 元素进行使能有两种:一是利用 setOprtState,二是利用 checkActionStatus。在 BOS 的 UI 设计器中,可以利用状态编辑视图定义各种状态下控件的使能情况。BOS 会自动生成反映满足这种定义的 setOprtState。当然,也可以不用 BOS 的定义能力而重载后完全自行编码,尤其是在需要定义逻辑时:例如控件的使能可能需要检查当 OprtState 处于某种状态时,某些数据是否同时符合要求。而 checkActionStatus会在按钮的响应完毕后被调用,作为一种推荐的检查控件

30、使能的统一位置。checkActionStatus 的调用频率比较高,故检查逻辑最好比较简单。注意:这种方式与 UI 的 OprtState 没有,视为对 OprtState 机制的一种补充。2.3.4. UILoadListener应用框架提供一种扩展机制,在加载 UI 对象和注销 UI 对象时加入自定义的处理逻辑。public interface IUILoadListener extends EventListenerpublic void load(UILoadEvent e); public void unload(UILoadEvent e);例如,想实现用户功能,可以按如下步骤进

31、行:1. 在 BOS Studio 中定义UI 对象的扩展属性。此处定义功能编号和功能描述。2. 编写 IUILoadListener 的实现类,在 load中UI 元数据,获取扩展属性中定义的,注信册用户息。;在 unload中UI 元数据,获取扩展属性中定义的,注销用户2.3.5. 序时簿类 UI序时簿是 EAS 规范地展现数据的方式,提供过滤的能力,可以进行表格数据的定位处理,并可打开,使用 KDTable 来展现数据。维护数据的编辑类界面。序时簿使用对象来执行第16页,总26页/ editData强类型txtIsoCode.setText(editData.getIsoCode();p

32、ublic void storeFields()super.storeFields(); editData.setIsoCode(txtIsoCode.getText();应用框架开发指南2.3.6. 类体系2.3.7. 通用基类 CoreUI完成了通用职责处理,在此,进行了权限、License、网络的通用处理。2.3.8. 普通序时簿类 ListUI从 CoreUI 继承下来。具有快速定位、通用过滤等基本功能。类普通序时簿类 UI 从 com.kingdee.eas.framework.ListUI 继承。通过 BOS Studio 完成UI 对象的创建、更改继承 Query 对象的类型以及

33、 KDTable 控件绑定等。必须重载的:第17页,总26页类体系内容CoreUI|- ListUI|- CommonQueryListUI|- CoreBillListUI|- BillListUI|- TreeListUI|- ComboTreeListUI|- TreeListUI|- ComboTreeListUIEAS 的 UI 最高超类,继承 BOS 定义的 CoreUIObject(从KDPanel 派生,这样 UI 可以方便地嵌入到其它 UI 中)。 序时簿类 UI 的最高超类,有通用过滤功能,提供数据与显示,关联编辑界面的。带通用框的序时簿类UI 的超类。适用于基础资料、带过

34、滤条件的等。(暂时保留,下一版删除,功能已经都放入 ListUI 中)单据序时簿类UI 的超类。支持单据类的通用操作处理, 例如结清、冻结、审核等。处理状态过滤与显示。财务单据序时簿类 UI 的超类。暂时没有业务处理,以后添加。层次数据序时簿的 UI 超类。支持层次数据的展现,提供KDTree 与 KDTable 的关联处理,支持层次 数据本身的编辑。带拥有者的层次数据序时簿的 UI 超类。适用于层次数据本身还有 的情形,例如物料按仓位 。层次数据序时簿的 UI 超类。支持层次数据的展现,提供KDTree 与 KDTable 的关联处理,支持层次 数据本身的编辑。带拥有者的层次数据序时簿的 U

35、I 超类。适用于层次数据本身还有 的情形,例如科目按科目表 。应用框架开发指南1.protected abstract String getEditUIName():指示关联的编辑 UI 对象名2.protected abstract IObjectBase getBizInterface():获取列表对应实体的业务接口,以便调用业务。要求实体必须从 ObjectBase 及其子类派生。3.protected StringgetLocateNames()返回可定位的列名数组。默认实现。4.protectedFilterInfogetDefaultFilterForQuery()可选的:1. p

36、rotected void prepareUIContext(UIContext uiContext, java.awt.event.ActionEvente):构造传递给 EditUI 的 UIContext。利用这个,你可以加入需要的任何对象并传递给 EditUI。第18页,总26页示例:protected void prepareUIContext(UIContext uiContext, java.awt.event.ActionEvent e)/ 检查是否按下新建按钮if (e.getSource() = btnAddNew)uiContext.put(“myObject”, nul

37、l);else/默认进行当前 CU 的过滤。子类可重载。protected FilterInfo getDefaultFilterForQuery()FilterInfo filter = new FilterInfo(); filter.getFilterItems().add(newFilterItemInfo(CU,SysContext.getSysContext().getCurrentCU(),CompareType.EQUALS);return filter;/业务系统可重载实现下面,返回合适的字符串数组(表格列名),来达到定位的目的。protected String getLoc

38、ateNames()String locateNames = new String2; locateNames0 = IFWEntityStruct.dataBase_Number; locateNames1 = IFWEntityStruct.dataBase_Name; return locateNames;示例:protected IObjectBase getBizInterface()return CurrencyFactory.getRemoteInstance();示例:protected String getEditUIName()return “com.kingdee.eas

39、.basedata.assistant.CurrencyEditUI”;应用框架开发指南2.protected String getEditUIModal():产生编辑 UI 的方式,缺省是 Dialog 方式。可以重载这个指定其它的模式。,3.4.protected boolean initDefaultFilter():设置默认过滤条件。该被 onLoad 调用。protected void refresh(ActionEvent e):界面刷新。通过传递的参数e 可以知道触发源。在ListUI 的缺省实现中,refresh 是靠调用 execQuery 把数据重新获取一遍来达到刷新的效果

40、的。派生类可以依据实际情况来定义更合理的刷新策略。protected String getKeyFieldName():获取 KDTable 中的主键列名称,供编辑/删除时获取主键用。默认值为id。注意:BOS 自动生成 KDTable 的列时,使用的是 query 对象名.id 的形式,与超类中约定并不一致。要么5.在设计期将列名修改,要么在重载该返回正确的列名。常见问题1.问:序时簿界面打开时会自动答:重载 initDefaultFilter(filterItem)。也可弹出一个并显示所有的数据,加入一个过滤条件应该怎么做?,为 mainQuery 对象(类型是 EntityViewInf

41、o)增加过滤条件框(例如通用框),让用户指定过滤条件。2.问:我增加了一个按钮,想在执行完毕的时候刷新一下列表,该怎么做?答:在 actionPerformed最后一行加调用 exceQuery()的代码即可。3.问:我增加了一个按钮,想在执行前先检查列表是否有选中的行,该怎么做?答:在 actionPerformed第一行加调用 checkSelected()的代码即可。该在检查到没有选中的行时,会弹出框提示用户,并且不再继续执行 actionPerformed中后面的代码。4.问:如何得到选中行的主键值?答:使用 getSelectedKeyValue即可2.3.9. 带通用的序时簿类 C

42、ommonQueryListUI界面样式。超类为 CommonQueryListUI,从 ListUI 继承。在超类基础上增加了对通用框的管理。类带通用的序时簿类 UI 从 com.kingdee.eas.framework.CommonQueryListUI 继承。可选的:第19页,总26页示例:protected String getEditUIModal()return UIFactoryName.EDITWIN;uiContext.pub(“myObject”, getMyObject();应用框架开发指南1. protected void prepareCommonQueryPara

43、m(CommonQueryParam param):在该中定义要传递给通用框的参数。超类的该已经把对象放到了 param 中,通常可不必再重载。如果有特别的需要,则按通用框的要求进行设置。常见问题1. 问:打开带通用的序时簿类 UI,缺省会弹出通用框,我怎么调整这个行为?答:超类使用 getDefaultFilterInited()来判定 UI 是否已设置了缺省的 filter。当没有设置时,就会弹出通用框。你可以重载 initDefaultFilter,设置缺省的 filter 并返回true(不设置 filter 也没有,主要是返回 true 即可)。2.3.10.单据序时簿类 UI超类为

44、 CoreBillListUI,从 ListUI 继承。在超类基础上增加了对单据通用操作的处理。2.3.11.层次数据序时簿类 UI超类为 TreeListUI,从 ListUI 继承。在超类基础上,增加了一个 KDTree,以管理层次数据。除支持在KDTable 中展现数据的编辑外(该能力从 ListUI 继承),还支持 Tree 本身的编辑(典型如地址簿的编辑)。类层次数据序时簿类 UI 从 com.kingdee.eas.framework.TreeListUI 继承。通过 BOS Studio 完成UI 对象的创建、更改继承 Query 对象的类型以及处理控件绑定等。KDTree 上每

45、个节点的类型为 KDTreeNode类型。必须重载的 abstract:1. protected abstract String getQueryFieldName():点击树上节点时形成过滤条件时的字段,例如地址簿序时簿界面右边的地址列表要依据左边 Tree 上选中的地址可。而刷新,此处则返回 Address.class 即2. protected abstract ITreeBase getTreeInterface():获取层次数据实体的业务接口,以便调用业务方法。要求实体必须从 TreeBase 及其子类派生。第20页,总26页示例(用一个编写的过滤页面替换掉通用过滤页面):prote

46、cted void prepareCommonQueryParam(CommonQueryParam param)super.prepareCommonQueryParam(param); param.setShowFilter(false); / 不显示通用过滤页面param.addPanel(new MyQueryPanel(); / 加入的过滤页面应用框架开发指南可选的:1.protected void buildTreeFilter():构造子节点数据的过滤条件。在 TreeListUI 中默认实现为在EntityViewInfo 中添加一个 getQueryFieldName()=t

47、reeNodeInfo 的过滤条件,即对象的某个属性关联到 Tree 节点所代表的对象。超类认为这种条件是是最常见的情况,例如地址簿对象有一个属性指向关联的地址簿分组对象。该默认实现依赖于 getQueryFieldName 纯虚。如果你需要构造的条件不是这种形式,则需要重载本自行设定过滤条件。2.protected String getGroupEditUIName():指示 Tree 关联的类别编辑 UI 对象名,如果界面需要实现类别编辑,则需要重载该。3.4.protected String getGroupEditUIModal():与 ListUI 类似,表示产生类别编辑 UI 的方

48、式。protected void prepareGroupUIContext(UIContext uiContext, ActionEvent e):类似于 ListUI 对关联 EditUI 的处理方式,构造传递给 GroupEditUI 的 UIContext。超类默认对于新增类别,传入了当前选中的节点对象(默认为是新增节点的父节点,通过 UIContext.PARENTNODE 传递)。protected String getRootName():定义一个虚拟根节点的显示名称,默认返回 null,即不需要虚拟根节点。此时,所有节点都依据实际的数据构造,可能会有多个一级节点。继承类可以重载

49、,定义虚拟根结点。5.6.protected void initTree():初始化构造 Tree。情况下请不要重载这个,除非你决定用的ITreeBuilder 接口的实现类替换掉超类默认提供的 LNTreeBtected ILNTreeNodeCtrl getLNTreeNodeCtrl():返回与 LNTreeBuilder 配合使用的 ILNTreeNodeCtrl 实现类。超类提供默认的实现类 DefaultLNTreeNodeCtrl。在特定情况下需要重载,例如菜单树需要根据权限进行过滤而不是仅根据 longnumber 过滤时。protected boolean

50、 isMoveTree() 是否要确认进行节点移动。7.8.第21页,总26页/如果需要框提示,请重载,默认不需要。protected boolean isMoveTree()return true;示例(地址簿序时簿需要定义一个虚的根节点):protected String getRootName()return 地址;示例:protected void buildTreeFilter()KDTreeNode treeNode = (KDTreeNode)treeMain.getLastSelectedPathComponent(); AddressClassInfo info = (AddressClassInfo)treeNode.getUserObject();/ 清空并加入的过滤条件(通讯地址包含被选中地址簿的名称=仅示意而已) FilterItemCollection items = mainQuer

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论