User assignment 审批人
可以分配给一个用户 ,通过 humanPerformer 节点 的 sourceAssignmentExpression 节点 指定人员 . 现在 仅支持 formalExpressions 属性.
<process ... > ... <userTask id='theTask' name='important task' > <humanPerformer> <resourceAssignmentExpression> <formalExpression>kermit</formalExpression> </resourceAssignmentExpression> </humanPerformer> </userTask>
解释为受让人, 或者审批人, 只有一个审批人的任务. 由其在 代办任务中查看, 其他人是看不到的.
直接分配assignee 的用户任务,可以通过 taskService 检索到其 需要代办的任务列表:
List<Task> tasks = taskService.createTaskQuery().taskAssignee("kermit").list();
任务也可以开放给 候选人 列表.那么, potentialOwner 节点就用上了, 用法跟 humanPerformer 节点类似. 要注意的是:候选人必须制定候选人是用户,还是组, 否则无法解析定义的到底是什么东西
<process ... > ... <userTask id='theTask' name='important task' > <potentialOwner> <resourceAssignmentExpression> <formalExpression>user(kermit), group(management)</formalExpression> </resourceAssignmentExpression> </potentialOwner> </userTask>
列出候选人 所属的task 列表 ,代码如下:
List<Task> tasks = taskService.createTaskQuery().taskCandidateUser("kermit");
如果没有制定 user 或者group 默认以组方式查询 类似: group(accountancy)
<formalExpression>accountancy</formalExpression>
下面是通过activiti 提供的简单的描述方式,来定义审批人.比上面那种xml格式简单多了.
-
assignee attribute: 指定实际用户.
<userTask id="theTask" name="my task" activiti:assignee="kermit" />
跟 humanPerformer 定义效果一样
-
candidateUsers attribute: 指定候选人
<userTask id="theTask" name="my task" activiti:candidateUsers="kermit, gonzo" />
跟 potentialOwner定义效果一样. 不用再像 user(kermit) 这样输入, 因为他本身就是user节点. 直接输入用户代码就行了
-
candidateGroups attribute:指定候选人的组名
<userTask id="theTask" name="my task" activiti:candidateGroups="management, accountancy" />
同上, 直接写group name就行了
-
candidateUsers 和 candidateGroups can 在同一个task节点中可以同时存在
验证用户权限,在集成到业务系统中时需要用上监听:
<userTask id="task1" name="My task" > <extensionElements> <activiti:taskListener event="create" class="org.activiti.MyAssignmentHandler" /> </extensionElements> </userTask>
DelegateTask
也是通过 TaskListener
实现,来指定受让人,或者受让组(候选人/候选组)
public class MyAssignmentHandler implements TaskListener { public void notify(DelegateTask delegateTask) { // Execute custom identity lookups here // and then for example call following methods: delegateTask.setAssignee("kermit"); delegateTask.addCandidateUser("fozzie"); delegateTask.addCandidateGroup("management"); ... } }
如果你使用了spring,可以使用service 表达式实现, 如下,就定义了 通过 ldapServie 的 findManagerForEmployee 方法或者审批人.
<userTask id="task" name="My Task" activiti:assignee="${ldapService.findManagerForEmployee(emp)}"/>
获取受让人(候选人) 如出一辙:
<userTask id="task" name="My Task" activiti:candidateUsers="${ldapService.findAllSales()}"/>
注意: 方法返回值 必须是 String 或者 List<String> 类型:
public class FakeLdapService { public String findManagerForEmployee(String employee) { return "Kermit The Frog"; } public List<String> findAllSales() { return Arrays.asList("kermit", "gonzo", "fozzie"); } }
相关推荐
The detailed walkthrough provided in the assignment document guides students through each step of creating a new project in Xcode, defining the MVC components, and using Interface Builder to design ...
在本篇中,我们将深入探讨MATLAB编程语言及其在完成作业任务中的应用,特别是针对"Assignment 5_matlab_assignment_"这个项目。MATLAB(Matrix Laboratory)是一种强大的数值计算和数据分析软件,广泛应用于科学计算...
【标题】"Assignment-2.zip_assignment" 涉及的核心知识点是离散到频率变换(DTFT,Discrete-Time Fourier Transform)。 在数字信号处理领域,离散时间傅立叶变换(DTFT)是一个非常重要的概念。DTFT是将一个离散...
【标题】"Assignment 1_imageprocessing_composedi87_assignment_" 涉及的是一个关于图像处理的项目作业,很可能是计算机科学或相关领域的课程任务。在这个任务中,学生需要运用编程技能,尤其是图像处理技术,来...
Aurora Lane Assignment分配在设计高性能、高带宽的数据传输系统时起着至关重要的作用。Aurora是一种基于LVDS(低压差分信号)技术的串行链路协议,广泛应用于Xilinx FPGA(现场可编程门阵列)中的GTX或GTH收发器。...
【标题】"Assignment4_2.zip" 是一个压缩文件,通常用于存储多个相关文件或文件夹,便于传输和管理。在IT行业中,这样的文件格式广泛应用于项目协作、数据备份和软件分发。这类文件可以使用各种解压工具,如WinRAR、...
Assignment Information Theory
东北大学需求分析Assignment 2 solution 东北大学需求分析Assignment 2 solution 东北大学需求分析Assignment 2 solution 东北大学需求分析Assignment 2 solution 东北大学需求分析Assignment 2 solution东北大学...
"北航计算机研究生课程 算法设计与分析 Assignment_1" 本资源是北航计算机研究生课程中的算法设计与分析 Assignment_1,涵盖了动态规划和状态空间搜索等算法设计技术。 一、动态规划算法设计 在该Assignment中,...
在探索编译原理的深奥世界中, ASSIGNMENT 2 作为一次学习的契机,将我们带入了自动机理论和正则表达式的神秘领域。本篇文章将从非确定有限自动机(NFA)开始,逐步深入到确定有限自动机(DFA)、正则语言的补运算...
【标题】:“Assignment机器学习的代码” 在机器学习领域,编程作业(Assignment)通常涉及到一系列实践性的任务,目的是让学生深入理解和应用所学理论知识。这个压缩包“Assignment机器学习的代码”很可能包含了...
CS231N计算机视觉公开课的作业答案,只有assignment1,其中包含了作业,还有作业的答案,还有在网上下载的数据集,都在里面了。这个作业是用的anaconda的jupyter来做的。 如果后期的软件下载,或者如何打开使用,...
《Karel编程实践:Stanford编程方法学与Assignment1解析》 Karel编程语言,源自斯坦福大学的编程方法学课程,是一种简单的教学语言,专为初学者设计,特别是那些初次接触编程概念的学生。它的核心目标是通过一个名...
以下是一些可能在"Assignment 2 C++作业"中涉及的知识点: 1. **基础语法**:C++的基础包括变量、数据类型、运算符、控制结构(如if-else,switch,for,while循环)以及函数的使用。理解这些基本元素是完成任何C++...
CS231n的Assignment, 用Python3.6.3写的,大家可以参考一下,
### Static Single Assignment (SSA)形式详解 #### 一、SSA形式简介 **Static Single Assignment (SSA)** 形式是一种特殊的中间代码表示方法,在编译器优化领域扮演着极其重要的角色。SSA形式的核心思想是确保每个...
Coursera NLP课程第二周Assignment
"Assignment 2 chemistry_assignment_"这个标题暗示了这是一个针对化学学生的专题作业,旨在通过解决一系列问题来深化对化学原理的理解。在这个压缩包中包含的"Assignment 2 chemistry.pdf"文件,很可能是教师精心...
标题《【留学生作业代写资料assignment英文原版】Python作业之CSCI 3151: Assignment 2》和描述表明,这是一份国外大学计算机科学专业的Python作业资料,其中包含关于线性代数和多变量函数的微分学的复习和扩展理解...
"assignment1"这个标题可能指的是一个计算机科学或软件工程课程中的第一份编程作业,而"comp2396"可能是课程的编号,这通常由学校为每个课程分配。这个作业可能涵盖了特定的编程主题,如数据结构、算法、面向对象...