Activiti源码浅析:Activiti的活动授权机制
1. IdentityLink与TaskEntity
An identity link is used to associate a task with a certain identity. For example: - a user can be an assignee (= identity link type) for a task - a group can be a candidate-group (= identity link type) for a task
TaskEntity包含了一系列的IdentityLink操作方法:
 public IdentityLinkEntity addIdentityLink(String userId, String groupId, String type) {
    IdentityLinkEntity identityLinkEntity = new IdentityLinkEntity();
    getIdentityLinks().add(identityLinkEntity);
    identityLinkEntity.setTask(this);
    identityLinkEntity.setUserId(userId);
    identityLinkEntity.setGroupId(groupId);
    identityLinkEntity.setType(type);
    identityLinkEntity.insert();
    if (userId != null && processInstanceId != null) {
      getProcessInstance().involveUser(userId, IdentityLinkType.PARTICIPANT);
    }
    return identityLinkEntity;
  }
注意,IdentityLink有一个Type,有一些默认的Type:
  public void addCandidateUser(String userId) {
    addIdentityLink(userId, null, IdentityLinkType.CANDIDATE);
  }
  public void addCandidateGroup(String groupId) {
    addIdentityLink(null, groupId, IdentityLinkType.CANDIDATE);
  }
2. IdentityLink与权限过滤
如下查询语句对应于“用户kermit待签收任务列表”的调用过程:
Preparing: select distinct RES.* from AC
T_RU_TASK RES inner join ACT_RU_IDENTITYLINK I on I.TASK_ID_ = RES.ID_ WHERE RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' and ( I.USER_ID_ = ? or I.GROUP_ID_ IN ( ? , ? ) ) Parameters: kermit(String), admin(String), management(String)
其中admin和management来自于用户群组关系查询接口:
UserEntityManager.findGroupsByUser("kermit")
Activiti源码浅析:Activiti的活动授权机制的更多相关文章
- Activiti源码浅析:Activity与Task
		最近由于接触到Activiti工作流引擎,因此粗读了一下它的源码. 总结了一些内容如下,这些内容一般的doc上都是没有提及的. 1. model.Activity与model.Task Activit ... 
- activiti源码分析学习
		activiti源码分析学习导语 目前项目中用activiti来做工作流的相关工作,最近遇到一些情况下,公司二次开发的流程图渲染出现了问题,会造成流程图出不来的情况.初步分析数据库中记录以及简单的代码 ... 
- 【深入浅出jQuery】源码浅析--整体架构
		最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ... 
- 【深入浅出jQuery】源码浅析2--奇技淫巧
		最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ... 
- Struts2源码浅析-ConfigurationProvider
		ConfigurationProvider接口 主要完成struts配置文件 加载 注册过程 ConfigurationProvider接口定义 public interface Configurat ... 
- (转)【深入浅出jQuery】源码浅析2--奇技淫巧
		[深入浅出jQuery]源码浅析2--奇技淫巧 http://www.cnblogs.com/coco1s/p/5303041.html 
- HashSet其实就那么一回事儿之源码浅析
		上篇文章<HashMap其实就那么一回事儿之源码浅析>介绍了hashMap, 本次将带大家看看HashSet, HashSet其实就是基于HashMap实现, 因此,熟悉了HashMap ... 
- Android 手势识别类 ( 三 ) GestureDetector 源码浅析
		前言:上 篇介绍了提供手势绘制的视图平台GestureOverlayView,但是在视图平台上绘制出的手势,是需要存储以及在必要的利用时加载取出手势.所 以,用户绘制出的一个完整的手势是需要一定的代码 ... 
- Android开发之Theme、Style探索及源码浅析
		1 背景 前段时间群里有伙伴问到了关于Android开发中Theme与Style的问题,当然,这类东西在网上随便一搜一大把模板,所以关于怎么用的问题我想这里也就不做太多的说明了,我们这里把重点放在理解 ... 
随机推荐
- 【openstack报错】【metadata问题】‘http://169.254.169.254/2009-04-04/meta-data/instance-id’ failed : url error [[Errno 111] Connection refused]
			[时间]2014年2月25日 [平台]ubuntu 12.04.3 openstack havana with nova-network in multi-host [日志]实例启动时输出的日志内容 ... 
- HW5.35
			import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ... 
- 设置Windows 远程协助与远程桌面
			家庭局域网组建完成后,即可通过远程协助解决各种问题,或联机玩游戏等. 使用Windows 7\8\10 远程协助与远程桌面 Windows 8系统中自带了远程协助功能,家庭用户只需要做简单的设置,就可 ... 
- Google的IP地址一览表,加上代理服务器
			Bulgaria 93.123.23.1 93.123.23.2 93.123.23.3 93.123.23.4 93.123.23.5 93.123.23.6 93.123.23.7 93.123. ... 
- IAR 编译错解决Error[e16]: Segment NEAR_Z (size: 0x16d align: 0) is too long for segment definition. At least 0x83 more bytes needed.
			Error[e16]: Segment NEAR_Z (size: 0x16d align: 0) is too long for segment definition. At least 0x83 ... 
- ASP.NET MVC- EF返回连接池用ADO.NET方式访问数据库
			用习惯了ADO.NET的方式去访问数据库,虽然ADO.NET写的代码没有EF简洁,可是也并不麻烦.而且EF在进行多表查询的那种方式是,EF需要先去数据库里定义外键,再进去一次代码生成,然后才能用INC ... 
- Ecshop图片不清晰怎么办?
			很多人说缩略图的质量不高,模糊,那是因为gd库生成缩略图时,默认生成jpg缩略图或商品图的质量是75.可以通过修改生成缩略图质量的默认值来提高缩略图的质量. 找到includes/cls_image. ... 
- Android真机抓屏- Android Screen Monitor
			一般运行Android应用程序有两种方式一种是设置Android虚拟设备模拟器,通过Android Virtual Manger进行管理,一种是插入USB数据线直接真机上进行调试,但是如果电脑配置比 ... 
- ALERT日志中常见监听相关报错之中的一个:ORA-609错误的排查
			參考MOS文档有: Troubleshooting Guide ORA-609 : Opiodr aborting process unknown ospid (文档 ID 1121357.1) Al ... 
- 【39】明智而审慎第使用private继承
			1.private继承意味着,根据某物实现出,继承父类的实现,关闭父类的接口,并不是Is-A的关系,不满足里氏代换,继承的内容访问权限都修改为private. 2.那么问题来了,复合也表达根据某物实现 ... 
