newxy标签实现部门管理、用户权限管理
作者:胡立新
一、功能简介
这个工程演示了部门管理、用户权限管理,没有使用角色这一环。在系统权限和用户身份不是很复杂的环境下这种运用是对用户权限管理的可行办法。
相关用语说明如下:
1、顶级部门,相对于部门来说的,是部门的上一级,一个系统有一个顶级部门。
2、部门,相对于顶级部门来说明的,是顶级部门的分支,一个系统有多个部门(结合“顶级部门”的说明有循环定义之嫌,此处的说明方法暂理解成“参验”)。
3、用户,软件系统的操作人员,有系统管理员,业务人员,系统管理员只有一个,业务人员可有多个,可有不同的权限。
4、业务,通常说成事务、商业功能模块。为避免与数据的“事务”概念相混淆,用“业务”一词。一个系统可有多个业务。
5、用户—业务,指特定用户与可操作的业务之间的关联。一个用户可操作多项业务,但不同用户对同一项业务操作权限的细分(增、删、改、查等)可能不同。对公共业务不必登记,用户操作时不必作权限检查。
以上用语对应数据库的四个表,“项级部门”、“部门”对应同一个表。
下面是数据库表间关系图:
这个工程的用户由管理员建立,如果由用户自己注册应作修改。
管理员分配好用户权限后,用户登录时可将相关权限读出保存到会话中或某个单例中,用户操作业务时,对其是否有权限作出判断。这工作由运用系统的开发者去完成。
二、目的
建立这个工程的最主要目的是演示如何将newxy新坐标的标签用于开发中。次要目的是作为一个可以复用的功能模块供开发者使用,如果开发者面对的是一个权限及用户身份不很复杂的情况,可以将这个工程作为部门及用户权限管理模块。
这个工程有一个类,是为初始化系统及刷新web上下文设计的。该类有三个共有方法,两个较重要:
public static void contextInitialized(PageContext pageContext)throws Exception
public static void contextInitialized(ServletContext context)throws Exception
条一个方法供jsp页面或标签调用,如:
<%
net.newxy.model.dub.Initial.contextInitialized(pageContext);
%>
第二个方法供后台java代码调用。Web服务器启动时应调用此方法,如:
import javax.servlet.*;
import javax.servlet.http.*;
public class ListenerSetCodes extends HttpServlet implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
javax.servlet.ServletContext context=sce.getServletContext();
try{
net.newxy.model.dub.Initial.contextInitialized(context);
}catch(Exception e){
……
}
}
……
}
本工程因为要便于开发者复用,对这个类的方法调用放在jsp文件中,而不是放在struts的action中。开发者应在web服务器启动时调用第二个方法。
三、流程
1、系统部署后首先将“顶级部门”改为客户单位名。
2、增加或修改部门,已有的部门不能删除,如果不用,可以掛起(非激活状态)。
3、定义业务,业务是运用系统的功能模块简称,这种简称是开发人员与客户共同理解的。
以上应由开发人员在系统部署后定义。
以下由系统管理员完成
4、为每个部门建立用户,也可修改用户信息,包括所属部门。
5、为每个用户选择他可以操作的业务,并细化每个业务的操作权限(数据的增、删、改、查等)。