activity权限控制(代办任务查询)

阅读: 评论:0

activity权限控制(代办任务查询)

activity权限控制(代办任务查询)

文章目录

  • 前言
  • 一、待办任务查询
  • 二、办理人、候选人、候选组
    • 1.办理人:assignee
    • 2.候选人:candidateUsers
    • 3.候选组:candidateGroups


前言

  • activity提供有用户与用户组关联的权限,但是如果使用它,需要我们同步业务系统与工作流系统的数据,这样就使得系统变得复杂,维护成本增大。
  • 不用activity提供的用户权限,通过设置参数,把审核人、用户、组等组合过滤条件,对用户权限进行控制。

一、待办任务查询

1、根据办理人、候选人、候选组条件过滤
2、根据流程定义key、流程实例id等过滤
3、根据参数过滤
具体详细讲解,在代码备注中:

// 1、根据办理人、候选人、候选组条件过滤
TaskQuery taskQuery = ateTaskQuery().CandidateUser()).CandidateGroups())//支持多个角色.includeProcessVariables().active().orderByTaskCreateTime();// 2、根据流程定义key、id等过滤
taskQuery.processInstanceId("procInsId");// 3、根据参数过滤
taskQuery.processVariableValueEquals(参数名, "参数值");// 附加排序条件taskQuery = IsOrderByDesc() ? taskQuery.desc() : taskQuery.asc();

二、办理人、候选人、候选组

说明:
通过对待办任务组合查询,activity提供的过滤条件为:
1、优先判断办理人(审核人)assignee是否存在值,存在则按assignee过滤待办任务
2、再判断候选用户:candidateUsers、候选用户组:candidateGroups

备注:所谓的候选,就是还未确认该任务是谁,进入候选的都有可能领到任务,所以有个签领过程;候选人或候选者,签领后就确认审核人,在代码里,其实就是给assignee赋值。

java代码如下:

// 如果你明确只有审核人,可以直接添加审核人即可:.taskAssignee(“审核人”)
taskQuery = ateTaskQuery().CandidateUser()).CandidateGroups())//支持多个角色.includeProcessVariables().active();

条件过滤的部分SQL如下:

(RES.ASSIGNEE_ = 'linShi' 
or (RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' and (I.USER_ID_ = 'user1' or I.GROUP_ID_ IN ( 'groupId1' ) )

1.办理人:assignee

办理人只能指定一个人,赋值有两种方式:

代码如下(示例):

// 1、通过待办任务节点服务赋值(不需要签领)
taskService.setAssignee(taskId, assignee);// 2、通过签领进行赋值(存在候选人或候选组时,审核节点时需要签领)
taskService.claim(taskId, assignee);

对应的数据库中会在表ACT_RU_TASK会产生数据,Assignee_字段就是设置的办理人

2.候选人:candidateUsers

使用activiti:candiateUsers=”用户 1,用户 2,用户 3”的这种方式来实现设置一组候选人。
一般情况下,我们不是写死用户,而是通过参数来赋值:创建节点时,设置参数${“candidateUsers”},然后通过参数candidateUsers进行赋值。

代码如下(示例):

// userId1必须是候选人中的一个,即所有候选人都能看到即将办理的任务
Task task = ateTaskQuery().taskCandidateUser(userId1).singleResult();//某个候选人签收
taskService.Id(), userId1);//userId1签领后,其他候选人看不到该任务
task2 = ateTaskQuery().taskCandidateUser(userId2).singleResult();
assertNull(“找不到任务”+task2);

备注:某个候选人签收后,其他候选人就看不到该任务

3.候选组:candidateGroups

可以使用activiti:candidateGroups=”用户组1,用户组2,用户组3”的这种方式来实现设置一组候选人。
候选组,这个就是这只办理角色或者办理岗位,适合使用在办理人比较多的情况下,而且涉及到几个部门的情形。

代码如下(示例):

// groups1必须是候选组中的一个
Task task = ateTaskQuery().taskCandidateGroups(groups1).singleResult();//某个候选人签收
taskService.Id(), userId1);

备注:某个候选组签收后,只有签领得人才能看到该任务

如果你对工作流感兴趣,想了解更多,请点击
Java工作流管理系统(activity6.0)

本文发布于:2024-02-02 14:44:06,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170685624944492.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:代办   权限   activity
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23