activiti查询我的待办任务以及审批

activiti查询我的待办任务以及审批


前言

一、查询与我相关的流程

 if (StringUtils.equals(type, "0")) {
            List<String> relatedMyprocess = basUserInfoMapper.relatedMyprocess(userCode);
        }
        if (StringUtils.equals(type, "1")) {
            //查询所有我待办的流程
            List<String> map = basUserInfoMapper.taskCandidate(userCode);
            //赋值给返回结果集

            List<String> collect = map.stream()
                    .distinct()
                    .collect(Collectors.toList());
        }
        if (StringUtils.equals(type, "2")) {
            //查询所有我参与的流程
            List<Map<String, Object>> maps = basUserInfoMapper.hisTaskCandidate(userCode);


            List<String> collect1 = new ArrayList<>();
            //筛选所有我参与未结束的流程
            if (ObjectUtils.isNotEmpty(maps)) {
                //筛选出所有我参与的进行中的流程
                collect1 = maps.stream().filter(a -> a.get("END_TIME_") == null).map(a -> (String) a.get("BUSINESS_KEY_")).distinct().collect(Collectors.toList());


            }
        }
        if (StringUtils.equals(type, "3")) {
            //查询所有我发起的流程
            List<ProcessInstance> list = processEngine.getRuntimeService().createProcessInstanceQuery().startedBy(userCode).list();

            //查询所有我发起的未结束流程
            List<String> collect1 = list.stream().map(a -> a.getBusinessKey()).distinct().collect(Collectors.toList());

        }

对应的sql
basUserInfoMapper.relatedMyprocess

<select id="relatedMyprocess" resultType="String">
		SELECT DISTINCT
	a.BUSINESS_KEY_
FROM
	ACT_HI_PROCINST a,
	(
		SELECT DISTINCT
			RES.*
		FROM
			ACT_HI_TASKINST RES
		INNER JOIN ACT_HI_IDENTITYLINK HI ON HI.TASK_ID_ = RES.ID_
		WHERE
			HI.USER_ID_ = #{userId}
		OR RES.ASSIGNEE_ = #{userId}
		ORDER BY
			RES.ID_ ASC
	) b
WHERE
	a.PROC_INST_ID_ = b.PROC_INST_ID_ or a.START_USER_ID_ = #{userId}
	</select>

basUserInfoMapper.taskCandidate

  SELECT
		a.BUSINESS_KEY_
	FROM
		ACT_RU_EXECUTION a,
		(
			SELECT DISTINCT
				RES.*
			FROM
				ACT_RU_TASK RES
			INNER JOIN ACT_RU_IDENTITYLINK I ON I.TASK_ID_ = RES.ID_
			WHERE
			 (I.USER_ID_ = #{userId})
			ORDER BY
				RES.ID_ ASC
		) b
	WHERE
		a.PROC_INST_ID_ = b.PROC_INST_ID_
		AND a.BUSINESS_KEY_ IS NOT NULL

basUserInfoMapper.hisTaskCandidate

SELECT
	a.*
FROM
	ACT_HI_PROCINST a,
	(
		SELECT DISTINCT
			RES.*
		FROM
			ACT_HI_TASKINST RES
		INNER JOIN ACT_HI_IDENTITYLINK HI ON HI.TASK_ID_ = RES.ID_
		WHERE
			RES.ASSIGNEE_ IS NOT NULL
		AND RES.END_TIME_ IS NOT NULL
		AND (HI.USER_ID_ = #{userId})
		ORDER BY
			RES.ID_ ASC
	) b
WHERE
	a.PROC_INST_ID_ = b.PROC_INST_ID_

二、审批流程

1.流程审批

由于没有给前端提供task_id所以需要前端提供用户账号和businesskey来审批流程、businessKey能够找到proc_inst_id,再加上用户ID就可以在表ACT_RU_IDENTITYLINK中找到task_id
varialbes是流程判断条件即为排他网关那里输入的条件
(String) map.get(“ID_”)为任务ID即为ACT_RU_TASK的id字段的值
记录审批同意、驳回、结束、发起可以使用ACT_HI_TASKINST表中的DESCRIPTION_字段

//设置流程执行所需变量
            Map<String, Object> varialbes = new HashMap<>();
            //记录审批意见
            //如果意见不为空则提交意见
            if (StringUtils.isNotEmpty(proposal)) {
                taskService.addComment((String) map.get("ID_"), processInstance.getProcessInstanceId(), proposal);
            }

            varialbes.put("lczt", lczt);
              //设置实际审批人
            taskService.setAssignee((String) map.get("ID_"), userCode);
			taskService.complete((String) map.get("ID_"), varialbes);
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值