37activiti - 用户任务(工作流定义的角色组)

简介: 37activiti - 用户任务(工作流定义的角色组)
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<Task> list = processEngine.getTaskService()//
                .createTaskQuery()//
                .taskCandidateUser(userId)//指定组任务查询
                .list();


目录
相关文章
|
4月前
|
SQL
若依框架---角色与权限
若依框架---角色与权限
300 0
|
11月前
|
存储 数据库
13activiti - 流程管理定义(部署流程定义)
13activiti - 流程管理定义(部署流程定义)
59 0
|
4月前
|
XML API 数据格式
工作流JBPM操作API组任务
工作流JBPM操作API组任务
37 1
|
11月前
15activiti - 流程管理定义(删除流程定义)
15activiti - 流程管理定义(删除流程定义)
80 0
|
4月前
|
API
工作流JBPM操作API删除流程&部署流程
工作流JBPM操作API删除流程&部署流程
36 0
|
4月前
|
安全 开发者
自定义全局角色,实现按岗赋权
Dataphin作为企业级数据建设和治理平台,提供了丰富的产品功能,在日常使用的过程中,如何分配权限是管理员一直关心的问题。Dataphin V4.0版本支持自定义全局角色功能,帮助管理员实现按岗赋权,使管理员能够自由配置每个角色在Dataphin中的菜单和功能权限,确保平台的权限安全。
|
4月前
|
测试技术 API Python
创建一个自定义的工作流
阿里云云效工作流(Alibaba Cloud Workflow)是一个强大的自动化工具,可以帮助您实现各种业务流程的自动化
68 2
|
4月前
|
Kubernetes API 数据安全/隐私保护
k8s学习-基于角色的权限控制RBAC(概念,模版,创建,删除等)
k8s学习-基于角色的权限控制RBAC(概念,模版,创建,删除等)
131 0
|
11月前
|
XML Java 数据库
36activiti - 用户任务(组任务)
36activiti - 用户任务(组任务)
57 0
36activiti - 用户任务(组任务)