您的位置:首页 > 产品设计 > 产品经理

jbpm 关于动态用户组动态分配,及流程权限解决方案 思路分享

2010-10-22 13:40 239 查看
我这边需求场景是每个审批环节为下个审批节点选择某个角色后,下个节点的人员才能确定。jbpm原有的组用户这3张权限控制满足这种情况。

我分享一下现在的应急做法,(还是希望有别的更好的解决方案,大家分享出来共同学习)

思路:

1、我在系统中定义了一张流程权限控制记录表。

字段的话比如是:流程定义key,流程实例,taskname,初始任务接受人(一个非真实人名),角色ID,最终任务领用人。大概就这些字段。

2、流程图还是用<task assignee="#{groupleader}"这种方式,不用组方式(放弃那3张表)

3、申请人提交单子时,往这张表记录一条数据,“初始任务接受人”字段可以先存个groupleader字符串。

4、当前用户查看任务列表时,用当前用户的角色ID去查找“初始任务接受人”字段,能找到“初始任务接受人”字段的就可以findPersonalTasks(),查询任务列表了。(权限也差不多在这控制了)

5、打开查看一个任务提交审批意见时,先要用当前用户userId把jbpm数据库中存的“初始任务接受人”替换掉。用户组的方式jbpm有个任务领用接口takeTask(),但这里不能这么用。好在jbpm还有个接口可以投机取巧一下,就是转交任务接口assignTask(),可以将之前的“初始任务接受人(一个非真实人名)”替换掉了,将任务转交给自己。接下来在完成任务。

6、当然任务竞争领用之类的也可以在系统中控制了。

这样的话改造量最小,而且还在继续使用系统中人员、部门、角色、权限等现有数据。

有时候往往不能在流程发布时就能确定下个节点的审批人员,都要动态地。

这方式可行的最大一个点是转交任务接口assignTask(),要不是知道这个接口也不会这么设计了。

不过这种方案还是不够好,只是应急解决了,论坛中都在说IdentitySession,这个我不是很了解,现在还不能触类旁通。

希望大家对这个解决方案提出些质疑或漏洞。

希望大家有好的解决方案实例分享。

 

原文地址: http://jbpm.group.javaeye.com/group/topic/23056
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: