您的位置:首页 > 其它

用EOM的眼光评判‘我要做全国最最好的标准权限组件和通用权限管理软件’4

2010-05-12 18:40 225 查看
四、软件构架设计

有了相同的功能设计、有了相同的数据库设计,不同的程序员依然能开发出不同的软件。而这些不同绝大多数是在程序上的不同,例如,命名不同、使用语句不同、算法不同、三层构架不同,可以说是半斤半两,难怪程序员之间相互看不起,都认为别人跟自己一样呢。其实当程序员水平上升到一定程度就会考虑到软件构架问题了。这个构架要比程序本身的技术实现要重要重要的多。

1、一般的权限管理

一般的权限管理并不关心程序的构架,无论是单一系统的权限管理、还是多系统权限管理,他们根据功能设计和数据库设计,将程序编出来就行了。最多考虑一下采用B/S还是C/S,最多考虑一下采用是C#还是JAVA?。稍好的程序员最多在程序内部考虑一下采用三层架构(界面层、逻辑层、数据层)还是不采用。

他们不关心构架主要原因:

1) 不清楚什么是构架。

2) 软件定位于单个系统,或多个系统,不考虑构架也能实现软件功能。

3) 自身编程水平还没有到达这个层面。

2、EOM权限管理

EOM则根据其定位,站在企业信息化整体的高度,所有应用系统都必须考虑软件的构架,否则无法实现其定位目标。就权限管理而言,由于权限管理定位于多企业多系统,则必然考虑到多企业多系统的现状。

1) 权限管理有两个版本:B/S和C/S。

2) 开发语言:C#,java或其他语言。

3) B/S和C/S公用相同的公共核心库和权限管理库,这些公共核心库和权限管理库都是标准权限管理模块,可供上层进行调用。

4) EOM提供两种权限管理方式,一个是系统方式,即完整的权限管理系统,另一个是标准模块方式,即可以向用户提供标准的权限管理功能,用户可以根据这些功能结合自己的界面形成自己的权限管理系统。

5) 权限管理即可以在企业内网运行,也可以在互联网运行。

6) 程序实现界面和处理的分离,所有处理都放在公共核心库和权限管理库之中,可以通过两种形式DLL或WebService来调用。

7) 程序采用参数多形式方式实现参数化:数据库、文本、XML等。

8) 通过参数化和接口方式实现特殊权限管理的需求。

附图:

1、现行企业权限管理示意图:

2、EOM权限管理系统架构图

3EOM的权限管理系统和标准权限管理模块

4企业内部多系统状况下的EOM权限管理示意图

5、多企业EOM权限管理示意图。

6、EOM特殊的权限管理处理示意图。

7、权限比对函数(部分)

此程序仅供参考,仅反映了软件的构架。

用户可以在界面一开始的时候,进行功能权限的比对

例如,在901系统中的003001001功能进行权限比对

If(Check_authority(“901”,”003001001”,””)==0) // 0 表示无权限,1表示有权限;

Return 0;

用户可以在界面中的某一操作时候进行比对。

例如,在901系统中的003001001功能中进行001001001操作的比对。

If(Check_authority(“901”,”003001001”,”001001001”)==0) // 0 表示无权限,1表示有权限;

Return 0;

private void check_authority(String appsys,String fucntion_code,String op_code)

{

int s=0;

string usr_name=get_usr_name();

string authority_mode = eomlib.get_sysparameter("authority_mode");//取系统参数

string aurthority_dll = eomlib.get_sysparameter("authority_dll");//取系统参数,参数中含DLL名和函数名,中间用逗号分开。

string authority_url = eomlib.get_sysparameter("get_authority_url");//取系统参数,参数中含URL名和函数名,中间用逗号分开。

switch(authority_mode)

{

case "eom":

s=eomlib.check_authority(usr_name,appsys_code,function_code,op_code);

break;

case "url":

s=iasglib.call_webservice(authority_url,usr_name,appsys_code,function_code,op_code);//调用外部webservice

break;

case "dll":

s=iasglib.call_dll(authority_dll,usr_name,appsys_code,function_code,op_code);//调用外部DLL

break;

default:

break;

}

return s;

}

private string get_usr_name()

{

return publicdata.usr_name;//用户名在用户登陆时被保存在公共变量publicdata之中

}

//--------------------此处为权限管理的WebService 的函数-----

[WebMethod(EnableSession = true)]

private int check_authority(string usr_name,string appsys_code,string function_code,string op_code)

{

return eomlib.eom_check_authority(usr_name,appsys_code,fucntion_code,op_code);

}

//--eomlib---此处为EOM公共库函数,其包含了权限管理的功能----------------------------

private int eom_check_authority(string usr_name,string appsys_code,string function_code,string op_code)

{

int s;

if(op_code.Trim().Length==0)//当操作代码为空的时候,表示只检查功能代码,反之检查操作代码。

s=check_function_authority(usr_name,appsys_code,function_code);

else

s=check_opertion_authority(usr_name,appsys_code,op_code);

return s;

}

private int check_function_authority(string usr_name,string appsys_code,string function_code)

{

int s=0;

string role_mode=eom.get_sysparameter("role_mode");

if(role_mode=="Y")

s=check_authority_with_role(usr_name,appsys_code,fucntion_code);

else

s=check_authority_with_function(usr_name,appsys_code,function_code);

return s;

}

private int check_authority_with_role(string usr_name,string appsys_code,string fucntion_code)

{

int s=0;

string role_name=get_role_name_with_usr_name(usr_name);//从用户角色表中查询出角色

string[] fucntion_code_tab=get_all_function_with_role_name(role_name);//按照角色将所有的功能代码都取出来。

foreach(string function_code in fucntion_code_tab)

{

s=check_function_with_usr_name(usr_name,appsys_code,fucntion_code_tab);//对用户功能表按照系统、功能、用户三个字段查询,查到且权限标志为1则返回1,否则返回0

if(s==1)

return s;

}

return s;

}

总结陈词

通过对权限管理一个典型的程序剖析,大家可以看到,用EOM来构建一个程序的基本流程。这流程是:首先关注权限管理在企业经营管理的中地位和作用,第二,给权限管理一个多企业多系统的定位,第三,给出权限管理的功能设计,第四,给出权限管理的数据库设计,这个数据库设计是站在EOM高度对权限管理的各元素的抽象,并共享其他相关的标准信息,第五,为了实现权限管理的定位,对软件进行了构架的设计,这个构架可以实现多企业多系统的权限管理的要求,也满足单企业多系统,即满足互联网也可以满足局域网,即可以满足B/S也可以满足C/S的各种选择。第六,就是按照以上五个部分用程序实现就行了。(程序实现并没有太多的难度的)。

EOM是一个全新的企业信息化的思路,它拓宽了程序员的视野,它所强调的企业经营理念,程序的定位,程序的抽象数据库设计,程序的软件构架,都将给程序员带了更多更深入的思考。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐