- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于UAP平台的单据模式化开发:总体介绍
What is it? UI工厂是一套基于NC-UAP的UI开发框架。 把常见的UI进行分类,分别抽取其中公有的代码,形成不同的UI模式。 What’s the problem? All-In-One UI Class 代码冗余 基于拷贝的“复用” 过多的技术细节 UI工厂的策略 “细分职责,高度重用” 低耦合,高内聚 Template Method Pattern Expert Pattern Example:BillUIBuffer来专门负责缓存多张单据和翻页等相关任务 UI工厂基本类图 单据模型(1) 单据模型(2) 主子表 默认形式 多子表 有多个子表.这种情况需要集成专门的多子表基类。其中聚合VO需要实现IExAggVO接口。 单表头 没有表体的卡片。实际实现时是把聚合VO的子表当成NULL处理。Controller实现ISingleController接口 单表体 没有表头的卡片,一般用于一些基本档案节点。实际实现时是把聚合VO的主表当成NULL处理。Controller实现ISingleController接口 UI状态 利用状态机模型来控制UI状态 逻辑集中 易于修改 扩展状态 按钮 ButtonManager 按钮的可用性与UI状态 预置按钮 自定义按钮 事件处理 按钮事件 BillEventHandler CardEventHandler 编辑事件 BeforeEdit AfterEdit BodyRowChange 业务动作处理 保存、删除、提交、审批、弃审…… BusinessAction 封装了对流程平台的调用 BDBusinessAction 不使用流程平台 自动处理锁和同步 支持自定义的业务处理类 www . ufsoft . com 基于UAP平台的单据模式化开发 周海 2005-3-10 基于UAP平台的单据模式化开发——总体介绍 面临的问题 3. 每个节点的开发存在大量重复劳动。 2. 业务节点数量庞大,单据开发任务繁重。 1. 项目急,用户要求快速响应。 5. 不利于新成员迅速融入开发团队。 4. 拷贝代码现象严重,代码复用性差。 如何解决? 快速 灵活 复用 ? 模式化开发 UAP平台 UI工厂 应用算法库 各种各样的业务单据 前面的问题集中体现在: 1. UI端工作繁杂,重复量大。 2. 重复编写各种算法,既浪费时间又不能保证最优。 模式化开发-UI工厂 1. 提供各种界面布局 3. 按钮状态的自动控制 5. 各种操作状态下数据展示 4. 按钮事件的默认处理 2. 提供界面事件响应接口 btnVo.setOperateStatus(new int[] {IBillOperate.OP_NOTEDIT, IBillOperate.OP_INIT}); 代码框架 -主要类间的关联 代码框架 -NC数据流图 DMO类 BO类 数据库 查询 更新 网络调用 缓存BillUIBuffer VO对象 UI类 PanelWrapper类 Panel类 BillModel BillItem 代码框架 -界面数据访问 CARD型UI 1) 表头数据得到表头Item的值:getBillCardPanel().getHeadItem(pk_corp) .getValue() 2) 表体数据得到列表的行数:getBillCardPanel().getBillModel().getRowCount();得到表体某一格的值:getBillCardPanel().getBodyValueAt(row,“pk_deptdoc”);得到选中的行:getBillCardPanel().getBillTable().getSelectedRow(); LIST型UI 1) 表头数据取数据:getBillListPanel().getHeadBillModel().getValueAt(row,“pk_deptdoc”);取行数:getBillListPanel().getHeadBillModel().getRowCount(); 2) 表体数据取数据: getBillListPanel().getBodyBillModel().getValueAt(row,pk_deptdoc); 常用的几种UI模板 卡片界面 * * * *
文档评论(0)