模块管理常规功能自定义系统的设计与实现(31--第三阶段 权限设计[1])

系统的各种权限设计(1)



视频讲解在线观看:视频讲解链接  http://i.youku.com/jfok1972


       本系统的现在已可以设计的权限一共有四种类型。
        1、模块的操作权限:包括可浏览,增改删,附件的CRUD操作,审核,审批,附加功能的操作(这个前面忘了介绍了,在下面会介绍一下)。
        2、模块记录的可视权限:通俗的讲,就是哪些记录你能看,哪些记录你不能看。
        3、字段的只读权限:对于具有可新增和可修改权限的人,进一步限制哪些字段是只读的。
        4、字段的可视权限:哪些字段你不能看到。

        以上4种权限也都是在前台系统里直接配置即可生效。
下面来分别简单介绍一下各个权限设计和实现过程。

一、模块的操作权限:在前面的模块设计过程中已经有了此权限的介绍,一个模块加入系统后,需要在角色中设置此模块的权限。包括:可浏览、可新增、可修改、可删除、附加浏览、附件新增、附件修改、附件删除、可审核、可审批、可直接修改,另外还包括了每一个附加功能的可执行权限。以下即为另一系统的一个权限设置界面:
模块管理常规功能自定义系统的设计与实现(31--第三阶段 权限设计[1])_第1张图片

可浏览如果没有选中,表示该操作员不能查看此模块。反应在前台就是在菜单项里没有该模块的菜单。
可新增,可修改,可删除等表示为模块的toolbar中有相应的按钮。附件操作的权限也是每个模块单独设置的,可以让不同人去分别管理不同模块的附件。下面来看看截图:
模块管理常规功能自定义系统的设计与实现(31--第三阶段 权限设计[1])_第2张图片

下面来看看附加功能是如何加进去的。在系统的管理模块中,有一个模块附加功能的管理模块。该模块定义了所有的系统中使用到的附加功能,包括系统模块使用到的。前面看见过一个就是“模块”管理中的“导入模块”这个按钮,就是一个附加功能。有的附加功能还可以创建一个窗口进行操作后再进行提交数据,就象前面介绍的对模块设置“附加字段”的功能。

模块管理常规功能自定义系统的设计与实现(31--第三阶段 权限设计[1])_第3张图片
       
每个模块功能的字段包括:
        
模块管理常规功能自定义系统的设计与实现(31--第三阶段 权限设计[1])_第4张图片

对于上图中合同付款计划的8个附加功能,来看看放在什么地方:

模块管理常规功能自定义系统的设计与实现(31--第三阶段 权限设计[1])_第5张图片

对于附加权限的执行,是一定要手工编码的了,一般是发送一个ajax请求到服务器端去处理,前台会由extjs mvc来捕获菜单点击事件来执行。例如对于“自动计划”这个附加功能。将会执行下面的js代码:
AgreementPlanAutoCreate : function(agreementId, grid) {
		Ext.Ajax.request({
					url : 'agreementplan/autocreate.do',
					params : {
						agreementId : agreementId
					},
					success : function(response) {
						var message = Ext.decode(response.responseText);
						if (message.success == false)
							Jfok.system.warnInfo(message.msg);
						else
							Jfok.system.smileInfo('此合同的付款计划已自动生成!');
						grid.store.reload();
					},
					failure : function(response) {
						window.alert('重新生成合同付款计划失败!');
					}
				})

	}

后台会由spring mvc来处理这个请求,完成相应的操作,并返回操作结果。
/**
	 * 自动建立合同付款计划
	 * @param agreementId  当前选中合同的id号
	 * @param request
	 * @return
	 */
	@RequestMapping("/autocreate.do")
	public @ResponseBody
	ActionResult AutoCreate(String agreementId, HttpServletRequest request) {
		ActionResult result = new ActionResult();
		String r = agreementPlanService.AutoCreateAgreementPlan(Integer.parseInt(agreementId), request);
		if (r == null)
			;
		else {
			result.setSuccess(false);
			result.setMsg(r);
		}
		return result;
	}

}

对于模块审批权限的各级部门和审批人员的定义,例子模块中没有用到,不作介绍了。

这种权限的设置是所有系统都会有的,设计的方法也有多种,只要能完成功能就可以了。



你可能感兴趣的:(模块管理常规功能自定义系统的设计与实现(31--第三阶段 权限设计[1]))