权限设置通常分为模块级别的权限设置,原子操作的权限设置,记录级别的权限设置。
模块级别的权限设置很简单,某个人或某个角色对没个模块有操作权限,要么就没有操作权限;
原子操作的权限设置,是指对页面的控件的操作权限,某个用户或某个角色对某个控件有操作权限,或没有操作权限。
记录级别的权限设置,通常也指数据的权限控制,某人或某角色对某些记录有查看权限,或对某个字段没有查看更新等操作权限。
在工作流集成自定义表单的时候,我们通常需要做的权限设置是指原子操作的权限设置。即控制一张表单在流程的多个节点上流转,每个节点对页面上各个控件的操作权限可能不一样;一张表单在多个用户或角色直接流转办理业务时,各用户对表单上各控件的操作权限可能不一样;
这样的需求,在工作流集成表单的过程中,有两种实现,在表单中设置权限控制和在流程的节点中设置。
不论用那种实现,都应该能满足同一张表单在流程的各个节点或多个用户角色之间流转,操作权限不一样;
表单中设置控件的操作权限:
这里是指用自定义表单工具,如果是开发的功能模块,一般都没有可视化的设计过程,那样对于权限设置,比较困难,没有可视化的过程,就需要手动的去设置。
在控件的属性页中,增加权限设置按钮,点击打开设置页面。可以按用户,角色,群组等来设置,还可以按流程的节点来设置。
设置完成的数据,编辑成xml的格式,保存在表单的页面中。当表单运行的时候,获取这些定义的格式串,再取出当前环境中的用户,角色,流程节点等进行比较。符合条件,则控制控件的属性,使得只读,禁用或不可见。
流程节点中的权限设置
在没有自定义表单工具的时候,定制或开发的模块中,要加入这些权限的控件比较麻烦,通常在集成工作流系统的时候,就会在工作流的流程定义节点中加入这些权限的设置,一般来说工作流系统都会带有流程设计器,在节点属性页中加入这些权限控制。
对业务表的字段的访问权限的控制,设置完成后生成xml格式数据,保存到业务流程建模的文件中,当运行流程时候,打开业务表单时,取出流程节点上设置的权限设置串,和当前的环境中比较,符合条件的作用于页面域,使得只读,禁用或不可见。
这两种方案中,在自定义表单中设置要简单一些。而且直观,直接对控件或字段进行设置,可以是伪列,不一定和字段一一对应。表单运行时,直接取出设置的权限,作用于页面控件。
在流程节点中设置,需要将业务表的结构读出,然后设置,页面运行时,需要建立流程的解释对象,然后获取流程节点中设置的权限,作用于页面的控件,还需要按一种约定的格式去做,例如,控件id=字段名这样的格式来做解释。