15.activiti工作流-工作流定义的角色组(了解)

1.流程图

这里写图片描述
流程图中任务节点的配置:
这里写图片描述
分配任务负责的组
使用 candidate groups 属性指定 任务负责组
代码:

<userTask id=“usertask1” name=“审批” activiti:candidateGroups=“部门经理”>
</userTask>    

其中部门经理表示一个用户组的角色

2.测试代码

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

    //部署流程定义,启动流程实例
    @Test
    public void testTask() throws Exception {
        // 1 发布流程
        InputStream inputStreamBpmn = this.getClass().getResourceAsStream("taskProcess.bpmn");
        InputStream inputStreamPng = this.getClass().getResourceAsStream("taskProcess.png");
        processEngine.getRepositoryService()//
                        .createDeployment()//
                        .addInputStream("userTask.bpmn", inputStreamBpmn)//
                        .addInputStream("userTask.png", inputStreamPng)//
                        .deploy();

        /**在部署流程定义和启动流程实例的中间,设置组任务的办理人,向Activity表中存放组和用户的信息*/
        IdentityService identityService = processEngine.getIdentityService();//认证:保存组和用户信息
        identityService.saveGroup(new GroupEntity("部门经理"));//建立组
        identityService.saveGroup(new GroupEntity("总经理"));//建立组
        identityService.saveUser(new UserEntity("小张"));
        identityService.saveUser(new UserEntity("小李"));
        identityService.saveUser(new UserEntity("小王"));
        identityService.createMembership("小张", "部门经理");//建立组和用户关系
        identityService.createMembership("小李", "部门经理");//建立组和用户关系
        identityService.createMembership("小王", "总经理");//建立组和用户关系


        // 2 启动流程
        ProcessInstance pi = processEngine.getRuntimeService()//
                            .startProcessInstanceByKey("taskProcess");
        System.out.println("pid:" + pi.getId());
    }

    //查询我的个人任务列表
    @Test
    public void findMyTaskList(){
        String userId = "唐僧";
        List<Task> list = processEngine.getTaskService()//
                        .createTaskQuery()//
                        .taskAssignee(userId)//指定个人任务查询
                        .list();
        for(Task task:list ){
            System.out.println("id="+task.getId());
            System.out.println("name="+task.getName());
            System.out.println("assinee="+task.getAssignee());
            System.out.println("assinee="+task.getCreateTime());
            System.out.println("executionId="+task.getExecutionId());

        }
    }

    //查询组任务列表
    @Test
    public void findGroupList(){
        String userId = "小李";//小张,小李可以查询结果,小王不可以,因为他不是部门经理
        List<Task> list = processEngine.getTaskService()//
                        .createTaskQuery()//
                        .taskCandidateUser(userId)//指定组任务查询
                        .list();
        for(Task task:list ){
            System.out.println("id="+task.getId());
            System.out.println("name="+task.getName());
            System.out.println("assinee="+task.getAssignee());
            System.out.println("assinee="+task.getCreateTime());
            System.out.println("executionId="+task.getExecutionId());
            System.out.println("##################################");

        }
    }

    //查询组任务成员列表
    @Test
    public void findGroupUser(){
        String taskId = "4408";
        List<IdentityLink> list = processEngine.getTaskService()//
                        .getIdentityLinksForTask(taskId);
        for(IdentityLink identityLink:list ){
            System.out.println("userId="+identityLink.getUserId());
            System.out.println("taskId="+identityLink.getTaskId());
            System.out.println("piId="+identityLink.getProcessInstanceId());
            System.out.println("######################");
        }
    }

    //完成任务
    @Test
    public void completeTask(){
        String taskId = "5108";
        processEngine.getTaskService()//
                    .complete(taskId);//
        System.out.println("完成任务");
    }
}

3.分配任务负责的组(IdentityService)

/*在部署流程定义和启动流程实例的中间,设置组任务的办理人,向Activiti表中存放组和用户的信息/
IdentityService identityService = processEngine.getIdentityService();//认证:保存组和用户信息
identityService.saveGroup(new GroupEntity(“部门经理”));//建立组
identityService.saveGroup(new GroupEntity(“总经理”));//建立组
identityService.saveUser(new UserEntity(“小张”));//建立用户
identityService.saveUser(new UserEntity(“小李”)); //建立用户
identityService.saveUser(new UserEntity(“小王”)); //建立用户
identityService.createMembership(“小张”, “部门经理”);//建立组和用户关系
identityService.createMembership(“小李”, “部门经理”);//建立组和用户关系
identityService.createMembership(“小王”, “总经理”);//建立组和用户关系
表结构介绍
act_id_group:角色组表
act_id_user:用户表:
act_id_membership:用户角色表
指定组任务的办理人,查询组任务
String userId = “小张”;//小张,小李可以查询结果,小王不可以,因为他不是部门经理角色
List list = processEngine.getTaskService()//
.createTaskQuery()//
.taskCandidateUser(userId)//指定组任务查询
.list();

Activiti总结:

这里写图片描述

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:C马雯娟 返回首页