UI工厂文档
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.3.1 标准的树管理型单据 . . . . . . . . . . . . . . . . . . . 102
6.3.2 多子表的树管理型单据 . . . . . . . . . . . . . . . . . . 107
6.3.3 虚拟主子表的树管理型单据 . . . . . . . . . . . . . . . 108 6.3.4 单表头的树管理型单据 . . . . . . . . . . . . . . . . . . 110
3.3.2 虚拟主子表的列表型单据 . . . . . . . . . . . . . . . . 70
第四章 如何制作管理型单据
74
4.1 管理型单据的类结构 . . . . . . . . . . . . . . . . . . . . . . . 74
4.2 管理型单据界面实例 . . . . . . . . . . . . . . . . . . . . . . . 75
UI工厂解决上述问题的基本策略就是:细分职责,高度重用。仔细分析客户端的各 种功能可以发现,有些功能间有较强的相互关联,而这些功能与其他功能间的关联却 是很弱的。对这些有较强关联的功能一般称其具有一定的内聚性( Cohension ). UI工厂 中把客户端的各种功能根据其内聚性分成若干组。针对每组功能,都抽象出一个 Class 来负责这部分“职责”。比如有一个 Buffer 来专门负责缓存多张单据和翻页等相关任 务;ButtonManager负责处理创建按钮以及维护按钮的状态。
MasterTable PK pk_master
pk_customer pk_deliverdate
DetailTable
PK pk_detail
FK1 pk_master pk_invmandoc number
图 1.2:主子表数据模型
2.3.2 快速搭建类框架 . . . . . . . . . . . . . . . . . . . . . . 29
2.3.3 开发出第一个卡片单据 . . . . . . . . . . . . . . . . . . 29
2.3.4 完善功能一:数据加载 . . . . . . . . . . . . . . . . . . 31
Event Handle
IController
Business Action
HYQueryDlg
图 1.1:UI工厂主要类关系图
能以及如何对其扩展是理解UI工厂的关键。
UI 继承ToftPanel,功能节点注册时需注册该类,是一个节点的入口类。在 UI 工厂的框 架中,相当于Mediator的角色。
UI工厂文档
模式化快速开发手册
刘剑 赖宏伟
2004年11月15日 版本:V0.01
目录
第一章 总体介绍
5
1.1 基本结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 单据模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.9 变体三:虚拟主子表的卡片型单据 . . . . . . . . . . . 47
2.3.10 多子表的卡片型单据 . . . . . . . . . . . . . . . . . . . 55
第三章 如何制作列表型单据
63
3.1 列表型单据的类结构 . . . . . . . . . . . . . . . . . . . . . . . 63
第七章 列表卡片类型单据
112
7.1 列表卡片型单据的类结构 . . . . . . . . . . . . . . . . . . . . . 112
7.2 列表的数据和单据数据的关系 . . . . . . . . . . . . . . . . . . 113
7.3 制作列表卡片型单据的步骤 . . . . . . . . . . . . . . . . . . . 113
1.3 BillUIBuffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 加载界面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 UI状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.2 树卡型单据的类结构 . . . . . . . . . . . . . . . . . . . . . . . 91
5.3 树卡型单据的界面示例 . . . . . . . . . . . . . . . . . . . . . . 92
5.4 开发树卡型单据的步骤 . . . . . . . . . . . . . . . . . . . . . . 92
2.3.5 完善功能二:对数据的增、删、改操作 . . . . . . . . . 34
2.3.6 完善功能三:前后台校验 . . . . . . . . . . . . . . . . . 38
2.3.7 变体一:单表体的卡片型单据 . . . . . . . . . . . . . . 44
2.3.8 变体二:单表头的卡片型单据 . . . . . . . . . . . . . . 47
1.9 Put it all together . . . . . . . . . . . . . . . . . . . . . . . . . . 23
第二章 如何制做卡片型单据
25
2.1 卡片型单据的类结构 . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 列表型单据界面示例 . . . . . . . . . . . . . . . . . . . . . . . 64
3.3 开发列表型单据的步骤 . . . . . . . . . . . . . . . . . . . . . . 64
3.3.1 真正主子表的列表型单据 . . . . . . . . . . . . . . . . 64
第六章 树管理类型单据
100
6.1 树管理型单据:树的数据和单据数据的关系 . . . . . . . . . . 100
6.2 树管理型单据的类结构 . . . . . . . . . . . . . . . . . . . . . . 101
6.3 开发树管理型单据的步骤 . . . . . . . . . . . . . . . . . . . . . 102
图1.1描述了UI工厂中为完成客户端的各种功能所涉及的主要的类。图里的名称更 多的是在描述一个角色的名称而不是实际的类名。可以把这个图想象成一个公司的组 织机构图,公司分成了若干的部门,每个部门各司其职,又相互协调。掌握这些类的功
UI
BillUIBuffer
BtnManager
Business Delegator
1.1 基本结构
经常可以看到这样的节点,UI相关所有的代码都写在一个 ClientUI 类中,而类的规 模通常在2000行左右,这使得日后对这些代码的工作比较困难。而且每个UI有很多相似 或者相同的功能,如果所有的代码都写在了一个类中,那么这些相似或者相同的代码就 只能通过拷贝的办法来实现代码的“重用”。这样的做法带来的很严重的代码冗余更增 加了代码维护的难度和工作量。
1.6 按钮 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6.1 平台相关按钮 . . . . . . . . . . . . . . . . . . . . . . . 11
1.6.2 自定义按钮 . . . . . . . . . . . . . . . . . . . . . . . . 12
1.7.1 按钮事件 . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.7.2 编辑事件 . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.8 业务动作处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
BillUIBuffer 前台业务数据的缓冲。
ButtonManager 按钮管理器,负责按钮的创建和运行期状态控制。
BusinessDelegator 业务委托类,负责和后台进行交互。除了BusinessAction中的任务, 其他所有和后台交互,即对XXXBO_Client调用都必须放到该类中,其他类必须通 过这个Delegator与后台交互。1
5.4.1 标准的树卡片型界面 . . . . . . . . . . . . . . . . . . . 93
5.4.2 多子表的树卡片型单据 . . . . . . . . . . . . . . . . . . 97
5.4.3 单表的树卡片型单据 . . . . . . . . . . . . . . . . . . . 98
2.2 卡片型单据界面示例 . . . . . . . . . . . . . . . . . . . . . . . 26
2.3 开发卡片型单据的步骤 . . . . . . . . . . . . . . . . . . . . . . 28
2.3.1 前期准备 . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1当然这只是一种规范性质的限制。没有任何办法能阻止使用者违反这个规范,就像没有办法能防止有人故意写 出有Bug的代码。但是这里强烈地建议严格按照这个规范来执行。
HYQueryDlg 查询对话框。支持增加常用条件页签。
1.2 单据模型
NC 中的多数节点所实现的功能,从技术的角度上看都是针对“单据”的相关操作。 这里的“单据”泛指所有能表示为主子表模型的业务数据,比如订单,合同等等。
1.6.3 扩展状态 . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6.4 设置子按钮 . . . . . . . . . . . . . . . . . . . . . . . . 16
1.7 事件处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
第八章 坚持模型驱动的单据开发方法
118
第一章 总体介绍
UI工厂是一套基于NC-UAP的UI开发框架。它的产生是通过对大量的业务节点的总 结,把常见的UI进行分类,分别抽取其中公有的代码,形成不同的UI基类。UI工厂综合 运用了单据模板,查询模板,打印模板,实现对这些基本构件的运用的最优化。UI工厂 提供了UI相关的常见任务的推荐实现方法,比如通过ButtonManager来统一管理界面按 钮的状态,使代码更清晰可读,等等。
4.2.1 真正主子表的管理型单据 . . . . . . . . . . 型单据 . . . . . . . . . . . . . . . . 83
第五章 树卡片类型单据
89
5.1 树卡单据:树的数据和单据数据的关系 . . . . . . . . . . . . . 90
IController 界面控制器。不要把它和 MVC 模式中的“C ”之间划上等号。它在这里相当 于一个配置文件的作用。在使用具体的模式时都有对应的IController实现,使用者 需要根据实际情况补充其中的信息。
EventHandler 按钮事件处理器。所有对按钮事件的处理都在这个类中实现。
BusinessAction 业务动作处理类。处理保存、审批等“业务”动作。具体参见1.8