acriviti_5.22,获取流程全部的UserTask节点

在这里插入图片描述

import com.alibaba.fastjson.JSON;
import com.iwmake.activiti.IwmakeActivitiApplication;
import com.iwmake.activiti.contant.ActivitiConstantActive;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.*;
import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.impl.RepositoryServiceImpl;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.util.ObjectUtils;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @author hsj
 * @description:acriviti_5.22,获取流程全部的UserTask节点
 * @date 2021/11/16 10:50
 */
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = IwmakeActivitiApplication.class)
public class ActivitiTest {

    @Autowired
    RepositoryService rep;
    @Autowired
    RuntimeService runservice;
    @Autowired
    FormService formservice;
    @Autowired
    IdentityService identityservice;
    @Autowired
    TaskService taskservice;
    @Autowired
    HistoryService histiryservice;

    /**
     * @Description:acriviti_5.22,获取流程全部的UserTask节点
     *              然后org.activiti.engine.delegate.TaskListener。notify(DelegateTask delegateTask)完成动态设置审批人
     *              注意:审批人在一开始发起流程时候用户选择指定
     * @author HeShengjin 2356899074@qq.com
     * @date 2021/11/16 11:34
     */
    @Test
    public void parseBpmnGetUserTask(){
        //流程定义ID
        String processDefinitionId = "product:1:10004";

        List<ActivityImpl> listUserTask = new ArrayList<>();

        // 获得历史活动记录实体(通过启动时间正序排序,不然有的线可以绘制不出来)
        List<HistoricActivityInstance> historicActivityInstances = histiryservice
                .createHistoricActivityInstanceQuery().processDefinitionId(processDefinitionId).list();

        //根据当前任务获取当前流程的流程定义,然后根据流程定义获得所有的节点:
        ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl)rep).getDeployedProcessDefinition(processDefinitionId);

        for (int i = 0; i < historicActivityInstances.size(); i++) {// 对历史流程节点进行遍历
            ActivityImpl activityImpl = def
                    .findActivity(historicActivityInstances.get(i).getActivityId());// 得 到节点定义的详细信息
            //跳过null值
            if(activityImpl == null){continue;}
            //只需要UserTask节点:ActivitiConstantActive.ACTIVITY_TYPE_4_USERTASK =  "userTask"
            //       ActivitiConstantActive.ACTIVITY_TYPE = "type"
            if(ActivitiConstantActive.ACTIVITY_TYPE_4_USERTASK.equals(activityImpl.getProperty(ActivitiConstantActive.ACTIVITY_TYPE))){
               if(!checkExesist(activityImpl,listUserTask)){
                   listUserTask.add(activityImpl);
               }
            }
        }
        //打印
        printUserTask(listUserTask);
    }

    private void printUserTask(List<ActivityImpl> listUserTask) {
        if(ObjectUtils.isEmpty(listUserTask)){
            //null
            return;
        }
        Iterator<ActivityImpl> iterator = listUserTask.iterator();
        while (iterator.hasNext()){
            ActivityImpl activity = iterator.next();
            log.info("{},{}", activity.getId(),JSON.toJSONString(activity.getProperties()));
//            11:30:34.188 [main] INFO  c.i.a.g.ActivitiTest - [printUserTask,83] - deptleaderaudit0,{"name":"一级审批","taskDefinition":{"businessCalendarNameExpression":{"expressionText":"dueDate"},"candidateGroupIdExpressions":[{"expressionText":"部门总监"},{"expressionText":"部门经理"}],"candidateUserIdExpressions":[],"customGroupIdentityLinkExpressions":{},"customUserIdentityLinkExpressions":{},"key":"deptleaderaudit0","nameExpression":{"expressionText":"一级审批"},"taskFormHandler":{"deploymentId":"10001","formPropertyHandlers":[]},"taskListeners":{"assignment":[{}],"create":[{}]}},"type":"userTask"}
//            11:30:34.189 [main] INFO  c.i.a.g.ActivitiTest - [printUserTask,83] - generalmanager1,{"name":"二级审批","taskDefinition":{"businessCalendarNameExpression":{"expressionText":"dueDate"},"candidateGroupIdExpressions":[{"expressionText":"总经理助理"},{"expressionText":"boss"},{"expressionText":"总经办"}],"candidateUserIdExpressions":[],"customGroupIdentityLinkExpressions":{},"customUserIdentityLinkExpressions":{},"key":"generalmanager1","nameExpression":{"expressionText":"二级审批"},"taskFormHandler":{"deploymentId":"10001","formPropertyHandlers":[]},"taskListeners":{"assignment":[{}],"create":[{}]}},"type":"userTask"}
//            11:30:34.190 [main] INFO  c.i.a.g.ActivitiTest - [printUserTask,83] - finacemanage2,{"name":"生成出货单,产品出库","taskDefinition":{"businessCalendarNameExpression":{"expressionText":"dueDate"},"candidateGroupIdExpressions":[{"expressionText":"财务主管"}],"candidateUserIdExpressions":[],"customGroupIdentityLinkExpressions":{},"customUserIdentityLinkExpressions":{},"key":"finacemanage2","nameExpression":{"expressionText":"生成出货单,产品出库"},"taskFormHandler":{"deploymentId":"10001","formPropertyHandlers":[]},"taskListeners":{"assignment":[{}],"create":[{}]}},"type":"userTask"}
//            11:30:34.190 [main] INFO  c.i.a.g.ActivitiTest - [printUserTask,83] - openinvoice3,{"name":"开出发票","taskDefinition":{"businessCalendarNameExpression":{"expressionText":"dueDate"},"candidateGroupIdExpressions":[{"expressionText":"财务主管"}],"candidateUserIdExpressions":[],"customGroupIdentityLinkExpressions":{},"customUserIdentityLinkExpressions":{},"key":"openinvoice3","nameExpression":{"expressionText":"开出发票"},"taskFormHandler":{"deploymentId":"10001","formPropertyHandlers":[]},"taskListeners":{"assignment":[{}],"create":[{}]}},"type":"userTask"}
//            11:30:34.191 [main] INFO  c.i.a.g.ActivitiTest - [printUserTask,83] - revicemoney4,{"name":"收款","taskDefinition":{"businessCalendarNameExpression":{"expressionText":"dueDate"},"candidateGroupIdExpressions":[{"expressionText":"财务主管"}],"candidateUserIdExpressions":[],"customGroupIdentityLinkExpressions":{},"customUserIdentityLinkExpressions":{},"key":"revicemoney4","nameExpression":{"expressionText":"收款"},"taskFormHandler":{"deploymentId":"10001","formPropertyHandlers":[]},"taskListeners":{"assignment":[{}],"create":[{}]}},"type":"userTask"}
//            11:30:34.192 [main] INFO  c.i.a.g.ActivitiTest - [printUserTask,83] - modifyapply5,{"name":"调整申请","taskDefinition":{"assigneeExpression":{"expressionText":"${applyuserid}"},"businessCalendarNameExpression":{"expressionText":"dueDate"},"candidateGroupIdExpressions":[],"candidateUserIdExpressions":[],"customGroupIdentityLinkExpressions":{},"customUserIdentityLinkExpressions":{},"key":"modifyapply5","nameExpression":{"expressionText":"调整申请"},"taskFormHandler":{"deploymentId":"10001","formPropertyHandlers":[]},"taskListeners":{"assignment":[{}],"create":[{}]}},"type":"userTask"}
        }
    }

    private boolean checkExesist(ActivityImpl activityImpl, List<ActivityImpl> listUserTask) {
        if(ObjectUtils.isEmpty(listUserTask)){
            //null
            return false;
        }
        Iterator<ActivityImpl> iterator = listUserTask.iterator();
        while (iterator.hasNext()){
            ActivityImpl activity = iterator.next();
            if(activity.getId().equals(activityImpl.getId())){
                //存在
                return true;
            }
        }
        //else
        return false;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值