文档章节

Activiti源码浅析:Activiti的活动授权机制

Yemon
 Yemon
发布于 2016/05/17 10:32
字数 242
阅读 7
收藏 0

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操作方法:

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. public IdentityLinkEntity addIdentityLink(String userId, String groupId, String type) {  
  2.    IdentityLinkEntity identityLinkEntity = new IdentityLinkEntity();  
  3.    getIdentityLinks().add(identityLinkEntity);  
  4.    identityLinkEntity.setTask(this);  
  5.    identityLinkEntity.setUserId(userId);  
  6.    identityLinkEntity.setGroupId(groupId);  
  7.    identityLinkEntity.setType(type);  
  8.    identityLinkEntity.insert();  
  9.    if (userId != null && processInstanceId != null) {  
  10.      getProcessInstance().involveUser(userId, IdentityLinkType.PARTICIPANT);  
  11.    }  
  12.    return identityLinkEntity;  
  13.  }  

注意,IdentityLink有一个Type,有一些默认的Type:

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. public void addCandidateUser(String userId) {  
  2.   addIdentityLink(userId, null, IdentityLinkType.CANDIDATE);  
  3. }  


[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. public void addCandidateGroup(String groupId) {  
  2.   addIdentityLink(null, groupId, IdentityLinkType.CANDIDATE);  
  3. }  


2. IdentityLink与权限过滤

如下查询语句对应于“用户kermit待签收任务列表”的调用过程:

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. Preparing: select distinct RES.* from AC  
  2. 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 ( ? , ? ) )   
  3.   
  4. Parameters: kermit(String), admin(String), management(String)  

其中admin和management来自于用户群组关系查询接口:

UserEntityManager.findGroupsByUser("kermit")

本文转载自:http://blog.csdn.net/hj7jay/article/details/51181321

共有 人打赏支持
Yemon
粉丝 10
博文 322
码字总数 23853
作品 0
广州
架构师
私信 提问
基于Activiti扩展的工作流引擎OpenWebFlow

开源地址:https://github.com/bluejoe2008/openwebflow(欢迎star) 1. OpenWebFlow概述 OpenWebFlow是基于Activiti扩展的工作流引擎。Activiti (官方网站http://activiti.org/,代码托管在...

白乔
2017/10/18
0
9
推荐csdn里的几篇activiti基础入门及提高的博客

昨天有个网友加qq询问我有没有非maven搭建的activiti项目的demo,因为我博客中写了一个用maven,我当时没有,于是晚上回家尝试了一下,结果比较容易就实现了。 之后和那个网友聊了一下,他说...

涂宗勋
2016/04/20
338
0
Alfresco 宣布开始Activiti业务流程管理BPM引擎开发项目

Alfresco软件今天宣布开发Activiti业务流程管理(BPM)开源项目的开始,其首席架构师由业务流程管理BPM的专家,汤姆.贝延斯担任。该Activiti计划是一项新的基于Apache许可的开源BPM平台,从基...

YipChooli
2010/06/07
0
0
基于 Activiti 的工作流引擎--openwebflow

OpenWebFlow是基于Activiti(官方网站http://activiti.org/)扩展的工作流引擎,它扩展的功能包括: 完全接管了Activiti对活动(activity)权限的管理。Activiti允许在设计model的时候指定每...

白乔
2016/09/27
3.7K
1
activiti源码编译

分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) activiti源码编译,近期有人问activiti 源码编译的一些问题,这里打算总结一下。因为...

分享达人
2016/05/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

flutter Expanded用法

使用的地方:一个分类,类似京东的,左右两边都可以滑动 Widget build(BuildContext context) { return Row(children: [ Column( children: <Widget>[ Ex......

大灰狼wow
12分钟前
1
0
Java8 Map中新增的方法使用总结

前言 得益于 Java 8 的 default 方法特性,Java 8 对 Map 增加了不少实用的默认方法,像 getOrDefault, forEach, replace, replaceAll, putIfAbsent, remove(key, value), computeIfPresent,......

kaixin_code
22分钟前
1
0
@TransactionConfiguration

@TransactionConfiguration过时与替代写法 @TransactionConfiguration 替代写法

miaojiangmin
24分钟前
0
0
浅谈Vue响应式(数组变异方法)

很多初使用Vue的同学会发现,在改变数组的值的时候,值确实是改变了,但是视图却无动于衷,果然是因为数组太高冷了吗? 查看官方文档才发现,不是女神太高冷,而是你没用对方法。 看来想让女...

开元中国2015
25分钟前
1
0
Elasticsearch通关教程(五):如何通过SQL查询Elasticsearch

  这篇博文本来是想放在全系列的大概第五、六篇的时候再讲的,毕竟查询是在索引创建、索引文档数据生成和一些基本概念介绍完之后才需要的。当前面的一些知识概念全都讲解完之后再讲解查询是...

SEOwhywhy
45分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部