分享
 
 
 

PB通用类库和业务类库的设计思想(一)

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

通用类库和业务类库的设计思想

在我们利用PB进行MIS系统开发时,有很多业务是通用的,并且有很多组件是可以复用的。为了提高MIS系统的开发效率,缩短开发周期,有必要把一些公用对象抽象出来,以便作二次开发。

这些通用的对象,一部分是针对基本功能进行扩充的,我叫它通用类库,采用加ufc_前缀的方式命名, 一部分是针对业务功能进行扩充的,采用加wfc_前缀的方式命名。

以下先从整体上描述整个类库的框架, 然后在从具体的类库来描述各个模块。

一、数据库框架

我们假定现在有两个MIS系统需要开发,分别是"应用系统1"和"应用系统2",其中应用系统1中有两年的数据,分别是年份1和年份2。为了实现系统功能的同一管理和代码在最大可能的重用,我们设计了整个系统的数据库框架:

如上图,我们分别对应用系统1的年份1和年份2以及应用系统2分别建立三个数据库: A1、A2和B。如果还有更多的应用系统的话,我们都可以建立更多的数据库与之对应。

这里,为什么应用系统1中年份1和年份2要建立两个数据库呢?由于很多MIS系统中,每自然年或者逻辑年后,系统的数据库都需要进行备份和封存,上一年的数据库一般就不允许再进行修改操作。这样,我们可以建立一个新的数据库来存放新一年的数据,应用软件可以在不进行任何修改的情况下实现多年数据的管理,并且能保证数据量不会过分膨胀。

把应用系统的数据库按年份来管理后,就产生了权限管理、数据库连接、数据库结转等问题,为了实现系统权限、用户等的统一管理,我们不在每一个具体的和业务有关的数据库中建立相关的表,而是再建立一个系统数据库S,通过它来对应用系统数据库进行连接和管理。在这个数据库中,一般包括以下表:系统用户表(User)系统角色表(Role),系统权力表(Power),角色模块权力表(RoleRPower),用户模块权力表(UserRPower),用户角色表(UserRRole),系统模块表(Module),系统对象表(Object),模块对象表(ModuleRObject)等权限管理表,为了实现其它一些通用的系统管理功能,还有一些通用的表,主要是:系统参数表(SysParm),系统字典表(SysTypeInfo),系统序列号表(SysSequence),表属性表(SysTable),

列属性表(SysColumn),系统消息表(SysMsg) ,历史表(HisTbl),事件日志表(EventLog),书签表(BookMark),系统程序表(Program),帐套表(AccountSet)等等。

数据库这样一改造后,权限管理分成了两部分,数据库权限管理和应用系统权限管理, 数据库权限管理通过数据库管理系统本身提供的功能来设置,应用系统权限通过应用程序来设置, 同时我们的应用程序也要改造了, 应用系统首先连接系统数据库S, 根据其连接的身份决定是否进行数据库管理(创建和维护帐套以及备份数据库等)还是连接业务系统,如果连接用户是系统数据库S的管理员,则打开数据库管理界面。 如果只是系统数据库S的普通操作员,则从S的帐套表中读出帐套信息,显示业务系统登录对话框,根据输入的业务系统连接身份以及选择的帐套,连接业务数据库A1或A2,连接成功后,根据其在业务系统中定义的权限(UserRight表)来决定其下一步的方向, 是打开业务系统管理界面,还是业务系统操作界面。 我们看看改造后的系统登录流程:

数据库这样改造后,系统的安全性获得了极大的提高,对于数据库管理员有至高无上的权力,它可以创建系统数据库S的连接用户,赋予其普通的数据库连接权限和对帐套表的SELECT权限, 它连接上系统数据库S后,可以创建帐套(即业务数据库),设置其数据库连接参数:用户名和密码等, 这些连接参数可以不必透露给业务系统管理员,而只需把在系统数据库S上创建的普通连接账号告诉业务系统用户就行了。 业务系统用户利用此账号来连接系统数据库S,然后从帐套表中取出所有的有效帐套,弹出业务系统登录对话框, 选择一个帐套以及业务系统的登录用户名与密码,进行登录,系统首先必须根据帐套获取此帐套实际连接的数据库以及登录的用户名与密码,假如我们是选择了A2, 利用表中设置的用户名和密码(当然是加过密的喽),连接A2数据库,然后从系统用户表(User)中检验其系统用户身份,通过后,才能登录到系统中。 这样,系统就建立了对两个数据库的连接。

除此之外,如果考虑到业务系统的本地化、个性化,在C/S构架下,我们可以再在每个业务系统的本地自动创建一个文件型数据库,一般可以采用Access和SQLAnyWhere来实现,也可以采用自己的格式来定义。在其中可以创建一些通用表:个性化表(Preference),方案表(Scheme),语言表(Language)等。

这样构架后, 一个MIS系统的数据就由三个数据库组成, 系统中必须保持对这三个数据库的连接, 在PB中,我采用了三个事务连接来管理,分别为:SQLSys, SQLCom , SQLLoc。

接下来,将在这个数据库架构下,进行通用类库搭建。

(待续)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有