天天看點

工作流實戰_15_flowable 我發起的流程執行個體查詢

項目位址 ​​https://gitee.com/lwj/flowable.git​​
代碼分支 flowable-base
視訊講解位址 ​​https://space.bilibili.com/485524575/channel/detail?cid=94579​​
使用者名 密碼
0000001 test
0000002 test
0000003 test
0000004

文章目錄

  • ​​1. 示範![在這裡插入圖檔描述](https://s2.51cto.com/images/blog/202209/05171414_6315bde63027e51637.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)​​
  • ​​2. 代碼分享​​
  • ​​2.1. 檢視我發起的流程執行個體sql​​
  • ​​2.2. 檢視目前的執行人清單​​

1. 示範

2. 代碼分享

2.1. 檢視我發起的流程執行個體sql

SELECT DISTINCT
            t1.ID_ AS processInstanceId,
            t1.PROC_DEF_ID_ as processDefinitionId,
            t1.NAME_ AS formName,
            t1.TENANT_ID_ AS systemSn,
            t1.BUSINESS_KEY_ AS businessKey,
            t1.START_TIME_ AS startTime,
            t1.END_TIME_ AS endTime,
            t2.ID_ AS starterId,
            t2.FIRST_ as starter
        FROM
            act_hi_procinst t1
        LEFT JOIN act_id_user t2 ON t1.START_USER_ID_ = t2.ID_
        <where>
            <if test="userCode != null">and t1.START_USER_ID_ = #{userCode}</if>
            <if test="userName != null">and t2.FIRST_ like CONCAT('%',#{userName},'%')</if>
            <if test="formName != null">and t1.NAME_ like CONCAT('%',#{formName},'%')</if>
        </where>
      

2.2. 檢視目前的執行人清單

public List<User> getApprovers(String processInstanceId) {
        List<User> users = new ArrayList<>();
        List<Task> list = taskService.createTaskQuery().processInstanceId(processInstanceId).list();
        if (CollectionUtils.isNotEmpty(list)) {
            list.forEach(task -> {
                if (StringUtils.isNotBlank(task.getAssignee())) {
                    //1.審批人ASSIGNEE_是使用者id
                    User user = identityService.createUserQuery().userId(task.getAssignee()).singleResult();
                    if (user != null) {
                        users.add(user);
                    }
                    //2.審批人ASSIGNEE_是組id
                    List<User> gusers = identityService.createUserQuery().memberOfGroup(task.getAssignee()).list();
                    if (CollectionUtils.isNotEmpty(gusers)) {
                        users.addAll(gusers);
                    }
                } else {
                    List<IdentityLink> identityLinks = taskService.getIdentityLinksForTask(task.getId());
                    if (CollectionUtils.isNotEmpty(identityLinks)) {
                        identityLinks.forEach(identityLink -> {
                            //3.審批人ASSIGNEE_為空,使用者id
                            if (StringUtils.isNotBlank(identityLink.getUserId())) {
                                User user = identityService.createUserQuery().userId(identityLink.getUserId()).singleResult();
                                if (user != null) {
                                    users.add(user);
                                }
                            } else {
                                //4.審批人ASSIGNEE_為空,組id
                                List<User> gusers = identityService.createUserQuery().memberOfGroup(identityLink.getGroupId()).list();
                                if (CollectionUtils.isNotEmpty(gusers)) {
                                    users.addAll(gusers);
                                }
                            }
                        });
                    }
                }
            });
        }
        return users;
    }