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

来源:互联网 发布:怎样成为网络歌手软件 编辑:程序博客网 时间:2024/05/22 01:29

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总结:

这里写图片描述

原创粉丝点击