本帖最后由 luolanqiang 于 2018-12-14 11:22 编辑
关于用户角色的授权,从服务器端的用户管理上授予角色是个传统的做法,但是很显然这很繁琐,并且由于购买的服务器用户数量有限,维护权限较高,不可能随便交给别人去维护后台。另外,如果一个服务器上发布多个项目文件,注册用户如何按照所属项目来区分开?又如何把授予角色的权限交给不同项目的不同单位去自行维护?这是要解决的问题。现在我们想一个办法把人员的权限分配交给使用单位,使我们设计的系统更具备通用性,以实现快速部署。还要解决的一个问题是,我们抛弃工作流的流程条,把工作流命令全部整合到按钮上去。
思路:
1、在服务器的用户管理上增加"自定义属性"以区分所属项目(同一个服务器有多个工程文件时,比较适用),同时自定义微信ID字段,以便于在对接企业微信客户端时使用,无需再建立微信ID数据库。
2、把项目基础信息维护和人员授权管理交给使用单位,维护对象:字典。
3、通过用户信息视图选择人员,过滤规则为属于本项目,本项目名称在项目基础信息字典中。(当然也可以把角色名称的维护整合进维护页面)
4、实现分级授权,某个项目文件如果使用单位不止一家,各家的信息管理员维护各家的信息,如果某家单位属于上级单位,可以授予它的信息管理员维护下属单位人员信息的权限,这个很简单,就对复选框进行所属单位字段过滤即可,不多叙述。
具体看工程文件。
PS:
1、用户基于项目过滤授权,实例中过滤出所属项目为A的用户进行授权,如果项目基础信息中选择本项目为B,则过滤出所属项目为B的用户。在工作流程的应用中,可以基于授权后的项目性质、所属单位等条件去过滤,非常灵活(就是实例中的“人员授权表”),实例中用户1被授权为信息管理员,本项目人员授权就是他的事了,开发者只需要管用户注册的事情。避免去后台繁琐的去选择用户的角色。
2、如果在工作流中涉及到推送微信提醒信息,则使用ODATA函数去查询用户信息视图中的“微信ID”字段即可。
3、授权页面中利用组合复选框+在里面+不在里面的过滤,实现已授权用户不再出现在可选择列表中、相同用户不能重复添加到列表中只能更新角色。
4、由于同一个用户可能有多个角色,在系统应用中当使用角色进行操作权限判断时,应设置条件为用户角色字段"包含指定字符串"XXXX。
5、如果多单位使用一个系统,而且各单位都有同样的用户角色,比如工程单位的总工程师这一角色,项目分部有,经理部有,监理部有,设计院也有,要判断当前登录用户是否具备当前工作的操作权限,如果这项工作的责任单位是明确的,则可以通过单位性质进行筛选,因为每家单位具备这个角色的人只有一个,那就可以筛选为:角色包含指定字符串”总工程师“,单位性质等于”设计院“,然后查询当前登录用户的用户名在授权表中基于这个条件过滤后是否存在(查询行数即可),如果为0,则不具备权限。
6、如果是审批流程,现在某用户提交一个方案,需要总工程师审批,每家单位都有可能提交这种审批流程,而且都是由各自的总工程师审批,但显然都是本单位的人员上报的,这时候就更好办了,先查询当前登录用户(提交人)所属的单位,然后查询这个单位总工程师这个角色是谁,返回用户名,作为审批流程担当者,同时返回微信ID,直接将工作流命令及微信推送命令都整合在提交按钮上,流程条没有用了。
另:工作流插件完全可以替代工作流程条,设计工作流程的时候,担当者随便选择,为任何人为空都可以这不重要,工作流命令会指定这些参数,与后台的工作流设计没有什么关系。但是,会签流程就不一样了,会签流程无法通过工作流命令去完成,但是可以通过批处理工作流命令去完成,但这个会签流程结束后的担当者一定要在设计的数据表工作流中明确,这个问题很头大,因为工作流设计的时候,无法精确的筛选出这个担当者。例如之前说的方案审批流程,先由工程部、安质部、综合部审批,然后会签流程到本单位总工程师,这时候麻烦了(别忘了系统是多项目多单位使用),我们要做到的是系统交付给任何单位使用快速部署,如果这样的话,我就需要每换一个项目我得先把工作流改一下,指定会签流程的后一个担当者是谁,实现不在快速部署。虽然我可以在页面上查询到本单位总工程师是谁,但无法引入到数据表设计的工作流中去,这时候需要换个思路,在工作流中指定担当者为Administrator(或者其他专用的跳转用户),然后页面上绑定担当者字段,并设置工作流激发命令(可利用文本框设置,具体参照这里https://gcdn.grapecity.com.cn/fo ... ad&tid=47491&extra=),当担当者为Administrator时,将担当者转移给总工程师。
活字格的工作流是个短板这是事实,但是活字格提供了工作流命令和批处理工作流命令,灵活一点运用的话是可以完全抛弃流程条的。
交流闲谈,高手请忽略。。。。。
|
|