系统总框架-X邦

获得积分
资料库会员登录
搜索: [高级搜索]
下载首页 | 资源分类 | 下载排行
您的位置: 首页 > 市场 开发 实施 管理 > 系统设计
 
分类导航
下载排行
最新资源
系统总框架-X邦
资源大小:8.98 KB 资源类型:文档
下载积分: 0
更多
-->
下载统计:总下载:0,本月下载:0,本周下载:0,今日下载:0
发表评论 错误报告 加入收藏夹
资源介绍
系统总框架设计思想

申明:仅针对chis5.0系统[2001-9-1]或最新的日期版本
      本手册仅限于程序员使用
      北京众邦慧智计算机系统集成公司保留最终解释权利
      未取得所有者许可,任何人或团体不得以任何形式传播

目录:
系统基类组成
用户管理及验证
报表生成器设计原理
Data层与Logic层的分层思想

系统基类组成:
Unit_global_varrant.pas 系统全局变量
Unit_RootMainForm.pas 系统主窗口基类
Unit_frmMainBase.pas 系统主窗口
ChildForm.pas 系统子窗口基类
ChildPrintForm.pas 系统普通打印子窗口
ChildPrintFormCube.pas 系统交叉表打印子窗口

一 Unit_global_varrant.pas 系统全局变量
  functionSelectMessageBox(Text:string;CaptionNum:integer;Flags:integer):Integer
MessageBox的取代
  Function _AddAllFields(DestClientDataSet: TClientDataSet):Boolean;
动态把数据集中的所有字段建立成字段对象
  procedure ShowLineedt(stgReport:TDsnStage;iRepControlsNum:integer) ;
允许控件可编辑
  procedure HideLineedt(stgReport:TDsnStage;iRepControlsNum:integer) ;
不允许控件可编辑
  function ConvertDigit(iDigit:Double): String;
把数字串转换未大写字符串
  function UpperDigit(iDigit:integer):string;
把单个数字转换为大写字符串
  function DigitDW(iDW:integer):string;
把位数转换为大写金额位数
  function TrancCurrentNo(iNum: Integer):String;
  Function NBGetAdapterAddress(ino:Integer) : String;
获得第几张网卡的物理地址
  function GetMac:string;
获得网卡号

二 Unit_RootMainForm.pas 系统主窗口基类
主要是针对运行期动态设计FORM,对业务系统没有影响。技术涉及到Delphi的RTTI和Windows 流技术,如果了解Delphi的RTTI,这部分很好了解。

三 Unit_frmMainBase.pas 系统主窗口
主要是每一个子系统专门添加代码用的框架,没有任何技术与业务含量。

四 ChildForm.pas 系统子窗口基类
最主要的方法是
procedure TfrmChildForm.LoadFormStream;
1 把所有的Dcom置上gv_Appserver
2 把与录入控件关联的Dcom.Connected := True
3 如果保存过界面,把界面取出放到ChildStage上,ChileStage是一个可运行期设计的面板

五 ChildPrintForm.pas 系统普通打印子窗口
这里有几个ClientDataSet承揽报表的恢复和SQL,参数,数据的管理
cdsUpdateSQL, 报表SQL和格式
cdsSQLParams 报表参数
cdsReportDataSet 报表数据
cdsReportStoreProcDataSet 用存储过程做成的报表的数据
Function GetReport(iReport_code : Integer):boolean;  //取报表信息
把报表根据报表号从rt_report_data,rt_reprot_params中取出,放到
cdsUpdateSQL, cdsSQLParams
Function GetData:boolean;                            //取数据
把数据放到cdsReportDataSet或cdsReportStoreProcDataSet
Function PrintReport:boolean;                        //打印
打印报表
Function PreviewReport:boolean;                      //打印预览
用“大白板”显示报表
Procedure InitPrintForm;
为了运行期恢复控件,运行期注册类
procedure AddReportParams;
无用,本来这个函数在unit QRExpbld,QRExpbld只为运行期设计QuickRep表达式
    Procedure RepData_SaveAS;
把报表数据保存到txt文件中

六 ChildPrintFormCube.pas 系统交叉表打印子窗口
由于对交叉表没有使用过,所以无法描述,请经验丰富者填写这部分


用户管理及验证
由以下数据结构构成了用户管理的基础
xt_subsys 子系统表,每个子系统的许可证就放在此
xt_group 哪个子系统有哪些用户组
xt_func 每个子系统的每个用户组具有什么功能
xt_user_group 每个子系统的每个用户组有哪些用户
xt_user 每个子系统的每一个用户组的每个用户的关联信息,这是整个用户管理的核心,重点字段有:subsys_id,user_group,user_name,pass_word,user_mi
xt_user_interface 如果某个子系统在运行期设计并保存了某个Form,就在此表有一条记录

在主程序中专门有一个线程在探测用户是否在线,用户是否达到了使用的上限。


报表生成器设计原理
1 生成SQL,与Delphi中写SQL一样,参数也是:开头
2 运行验证SQL,配置参数类型,初始值,字典编号应该是这个参数所对应的TagSQL
3 拖控件,连接数据源[选cdsReportDataSet],连接数据字段[选cdsReportDataSet中的
字段],或做表达式计算,或用系统信息
4 预览,保存报表
5 找到报表号,在程序中,通过GetReport(报表号),把报表从数据库Blob字段中调出,恢复到dsnstage,GetData,获得数据,打印。
整个系统最关键的技术就是DSN,QuickRep,一个用于运行期设计,一个用于打印,打印的技术全部可以参考QuickRep,运行器设计就是充分利用RTTI和windows的拖动消息,这Delphi比较中级的技术,可以参考一书,有详细介绍,核心思想就是流与类信息。
设计报表的难点就是弄清楚几个BAND的作用

Data层与Logic层的分层思想
站在层次模型的角度上分为:
业务表示层 多种业务表示方式
业务逻辑层 多种业务组合,流程
实体映射层 对多个异构数据库的屏蔽和统一
数据服务层 数据视图,数据操作[增删改,外键,存储过程,触发器,备份,复制,恢复]的处理
我们目前欠缺通信安全层
每一层根据抽象和聚合又可细分为多个层次,不可简单认为两层或三层或N层,未来软件是在层次模型基础上的分布协作式计算的组件环境,高内聚,低耦合,异步连接,对等计算是未来的发展方向

Data 层专门放置实体数据集[entry DataSet],Data层是对数据结构的一个映射,
Logic层专门放置事务数据集[transaction DataSet],Logic层是对业务规则的一个映射,
客户端Client是站在客户角度上数据与业务的一个结合表示

Data层专用于表中记录的增删改数据查询,与具体业务规格无关。
Logic层专用于业务流程与业务算法,具体写表操作交给Data层,这是设计的初衷。
客户端只管输入输出,与Logic无关
下载地址
 下载地址1
按字母检索

下载须知:
大部份资源无需注册即可下载
需要积分的资源要在会员中心注册会员并用 积分体系中提示的方法赚取积分才能下载。

免责声明:
所有资源只能用于参考学习,不能用于任何商业用途,否则后果自负!