IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> [8]深入浅出工作开源框架Camunda:用户查看任务权限控制 -> 正文阅读

[Java知识库][8]深入浅出工作开源框架Camunda:用户查看任务权限控制

在Camunda的WebApp中,其是通过管理员的认证授权来实现的。默认情况下,新建的用户是没有任何权限的。比如咱们创建一个用户user2
在这里插入图片描述
当用户user2登录后,其登录页面是一个空白的页面,如下图示意。
在这里插入图片描述
即使当前启动了一个流程,而且流程里面有一个任务就需要user2来处理,其登录进来后还是上面的页面。那在给User2授权之前,数据库里面发生了什么事情呢?我们可以看到数据库的ACT_RU_AUTHORIZATION表新增了一条数据。

select * from ACT_RU_AUTHORIZATION where USER_ID_ ='user2'

在这里插入图片描述
同时在认证授权界面,其也会多出一条记录。从上面来看,其Resource Type的值为7,那么不同的数值到底代表什么意思呢?
咱们可以找出Camunda的代码查看。“7”代表的是用户任务。

package org.camunda.bpm.engine.authorization;
import org.camunda.bpm.engine.EntityTypes;
/**
 * <p>The set of built-in {@link Resource} names.</p>
 *
 * @author Daniel Meyer
 *
 */
public enum Resources implements Resource {

  APPLICATION(EntityTypes.APPLICATION, 0),
  USER(EntityTypes.USER, 1),
  GROUP(EntityTypes.GROUP, 2),
  GROUP_MEMBERSHIP(EntityTypes.GROUP_MEMBERSHIP, 3),
  AUTHORIZATION(EntityTypes.AUTHORIZATION, 4),
  FILTER(EntityTypes.FILTER, 5),
  PROCESS_DEFINITION(EntityTypes.PROCESS_DEFINITION, 6),
  TASK(EntityTypes.TASK, 7),
  PROCESS_INSTANCE(EntityTypes.PROCESS_INSTANCE, 8),
  DEPLOYMENT(EntityTypes.DEPLOYMENT, 9),
  DECISION_DEFINITION(EntityTypes.DECISION_DEFINITION, 10),
  TENANT(EntityTypes.TENANT, 11),
  TENANT_MEMBERSHIP(EntityTypes.TENANT_MEMBERSHIP, 12),
  BATCH(EntityTypes.BATCH, 13),
  DECISION_REQUIREMENTS_DEFINITION(EntityTypes.DECISION_REQUIREMENTS_DEFINITION, 14),
  REPORT(EntityTypes.REPORT, 15),
  DASHBOARD(EntityTypes.DASHBOARD, 16),
  OPERATION_LOG_CATEGORY(EntityTypes.OPERATION_LOG_CATEGORY, 17),
  @Deprecated
  OPTIMIZE(EntityTypes.OPTIMIZE, 18),
  HISTORIC_TASK(EntityTypes.HISTORIC_TASK, 19),
  HISTORIC_PROCESS_INSTANCE(EntityTypes.HISTORIC_PROCESS_INSTANCE, 20),
  SYSTEM(EntityTypes.SYSTEM, 21);

  String name;
  int id;

  Resources(String name, int id) {
    this.name = name;
    this.id = id;
  }

  public String resourceName() {
    return name;
  }

  public int resourceType() {
    return id;
  }

}

其资源的实体类型的枚举如下:

package org.camunda.bpm.engine;
/**
 * @author Sebastian Menski
 */
public class EntityTypes {

  public static final String APPLICATION = "Application";
  public static final String ATTACHMENT = "Attachment";
  public static final String AUTHORIZATION = "Authorization";
  public static final String FILTER = "Filter";
  public static final String GROUP = "Group";
  public static final String GROUP_MEMBERSHIP = "Group membership";
  public static final String IDENTITY_LINK = "IdentityLink";
  public static final String TASK = "Task";
  public static final String HISTORIC_TASK = "HistoricTask";
  public static final String USER = "User";
  public static final String PROCESS_INSTANCE = "ProcessInstance";
  public static final String HISTORIC_PROCESS_INSTANCE = "HistoricProcessInstance";
  public static final String PROCESS_DEFINITION = "ProcessDefinition";
  public static final String JOB = "Job";
  public static final String JOB_DEFINITION = "JobDefinition";
  public static final String VARIABLE = "Variable";
  public static final String DEPLOYMENT = "Deployment";
  public static final String DECISION_DEFINITION = "DecisionDefinition";
  public static final String CASE_DEFINITION = "CaseDefinition";
  public static final String EXTERNAL_TASK = "ExternalTask";
  public static final String TENANT = "Tenant";
  public static final String TENANT_MEMBERSHIP = "TenantMembership";
  public static final String BATCH = "Batch";
  public static final String DECISION_REQUIREMENTS_DEFINITION = "DecisionRequirementsDefinition";
  public static final String DECISION_INSTANCE = "DecisionInstance";
  public static final String REPORT = "Report";
  public static final String DASHBOARD = "Dashboard";
  public static final String METRICS = "Metrics";
  public static final String TASK_METRICS = "TaskMetrics";
  public static final String CASE_INSTANCE = "CaseInstance";
  public static final String PROPERTY = "Property";
  public static final String OPERATION_LOG_CATEGORY = "OperationLogCatgeory";
  public static final String OPTIMIZE = "Optimize";
  public static final String OPERATION_LOG = "OperationLog";
  public static final String INCIDENT = "Incident";
  public static final String SYSTEM = "System";
}

在这里插入图片描述
那么如何才能让user2能够看到自己的任务呢?这个时候就需要借助于Camunda的权限管理。管理员登录权限控制系统,然后在权限控制里面添加用户user2可以查看任务。
在这里插入图片描述
但是即使赋予了user2查看任务的权限之后,即使当前有任务需要user2处理,其还是不能查询除任何的任务。
在这里插入图片描述
这个时候,还需要赋予给user2的任务查询权限。
在这里插入图片描述
这个时候user2就能查看到用户任务。
在这里插入图片描述

在回到数据库表来看user2的权限记录,总共有三条记录,其资源类型(resource_type)的值为0,5,7;

  APPLICATION(EntityTypes.APPLICATION, 0),
  FILTER(EntityTypes.FILTER, 5),
  TASK(EntityTypes.TASK, 7),

分别代表:

  • 应用权限
  • 任务过滤权限
  • 任务菜单权限

在这里插入图片描述
上面当有任务流转到用户的时候,如何进行权限设置,才能让user2看到其需要处理的任务并进行处理!但是由的时候,需要让user2能够看到虽然不是他自己审批的,但是他能看到所有的还未完成的流程的任务,或者指定的任务;这个时候应该如何做呢?
比如说,当前有一个任务是要由user1来处理,我们登录到user2的账户并来到task列表的页面。我们发现user2的里面没有任何的有关user1的任务。
在这里插入图片描述
这个时候,我给user2加一个查看所有任务的权限。

在这里插入图片描述
这个时候,我们在来刷新user2的用户任务列表,我们发现用户user2能看到所有的任务了!
在这里插入图片描述
上图可以知道,其实user2看到的是user1当前的任务~

当前,也可以在分配权限的时候,指定具体的任务ID,那么其就只能看到制定的任务。我们可以把这个功能用于任务的传阅:即当前用户只能查看,不能对当前的任务做任何改动操作~

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 07:54:27  更:2022-05-08 07:57:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:33:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码