首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

11、ERP设计之 系统基础治理(BS)- 平台化设计-业务单据模板

2013-10-08 
11、ERP设计之 系统基础管理(BS)- 平台化设计-业务单据模板ShareERP 2013-09-07业务单据,是系统基础数据的

11、ERP设计之 系统基础管理(BS)- 平台化设计-业务单据模板
ShareERP 2013-09-07

        业务单据,是系统基础数据的重要输入/出口,因为系统的业务单据太多,不太可能每笔单据都单独编写程序来处理,统一按单据的行为、流程来封装成接口。当业务功能增加,只须增加相应的接口API就行,业务单据核心保持不变。这样就大大减少我们编码的冗余性,也不必写太多的重复增删改等代码,可维护性提高,特别是我们小作坊式的开发,代码重用非常重要。

      业务单据种类:普通编辑单据、模式编辑单据、树形编辑单据、查询统计分析单据、图表统计分析单据、参照引用单据。各种业务单据,代表着不同的业务录入输出方式,可能每个设计人员的喜好不一样,笔者也见到很多软件的业务单据界面,大同小异。如下窗口继承图:

 

    11、ERP设计之 系统基础治理(BS)- 平台化设计-业务单据模板

业务单据的基本元素:数据存储功能(增、删、改、浏览、输入/出)、数据和功能权限、业务审批、打印作业、操作日志、扩展应用功能、单据引用、单据联查、数据过滤查询、栏目自定义等。

 

        业务单据接口定义:

           //单据管理接口

           IVoucherMgr = interface         

           //事件域

               MainPostEvent(); //主表提交事件

               SubPostEvent();//从表提交事件

               GridClick(); //从表表格单击事件

           //方法域 在接口实现类,为虚拟方法,让子类可重载

               DoDBAppend(); //单据增单 

               DoDBEdit();  //单据编辑

               DoDBPost();  //单据保存

               DoDBDelete();//单据删除

DoDBCancel(); //单据放弃保存

DoDBChange();//单据变更

DoDBPrint(iPrintType: integer) ;  //单据打印、预览、自定义

DODBRefresh(); //单据刷新

DODBCopyData();//复制单据

DoExport(iExportType: Integer; bOpenFile: Byte);//单据输出

DoFilter(iFilterType: Integer); //单据过滤

               DoAttFiles(); //单据附件管理

               DoVoucherLogs();//单据日志管理

               ChangeVoucherState(iType: Integer);单据审核状态操作 

               Browser(Browser: Integer); //数据浏览

               End;

                           

              IEditVoucher = interface(IVoucherMgr)//编辑单据接口

              IQueryVoucher = interface(IVoucherMgr) //查询单据接口

              IMakeVoucher = interface(IQueryVoucher)//单据参照引用                           

    

        业务单据当然不止上面接口那么少,以上只是代码片段。                                    

        业务单据UI管理接口:UI管理,放在单据管里面,方便动态数据源绑定,即然是单据内部就不必公开此接口,只须实现UI管理类,外部传入一个UI窗口父类窗口即可。

 

        TVoucherUI = class

        private

           fUIList: TList; //UI指针存储列表

           fUIParent: TWinControl; //UI窗口父类窗口

        public       

           //创建

           constructor Create( AUIParent: TWinControl); override; 

           //创建主表栏目UI(

       procedure MakeVouherHeadr(const cViewName: string);virtual;

   //创建录入表格UI

           functionCreateGrid(const cViewName: string; bFooter: Boolean):TcxGridTableView; virtual;

        //创建子表表格栏目UI

       procedure MakeGridColumns(Atv: TcxGridTableView; const cViewName:string); virtual;  

       end;

 

      单据UI管理分为两个部分,设计时和运行时UI,设计时就像开发环境IDE一样,具有UI控件数据源功能,UI显示位置调整,不必太丰富的显示控制。主要是编辑控件类、数据源绑定方式、脚本控制、显示格式、数据类型、分组、行为控制等。运行时UI是由设计时定义好UI界面,是最终要与操作用户交互显示的界面。

 

      单据主从表栏目与数据字典:加载数据字典初始化主从表栏目描述,在UI绑定时应读取字典,将字典描述写入[单据项目字段表]中,这样每次运行时,就不必总是去读取字典,只读取模板的[单据项目字段表]即可。更新字段字典时,可通过批量更新栏目。

 

 

      总结:平台化设计,业务单据模板管理不一定要强大,但如果要提供用户定制化,就必须做好单据管理功能。

 

下篇:系统基础管理(BS)- 模块及菜单设计  待续……

来源:分享ERP  http://www.shareerp.com联系QQ: 908916944

热点排行