原文连接:http://jhaij.iteye.com/blog/1882582
用户任务
user task 是一个需要由实际用户操作的节点. 当流程执行到这么一个用户任务节点时,会通过user(用户) 或者组(group) 在task中定义的 assigned 角色来创建一个新的用户任务.
id 必填 , name 可选
<userTaskid="theTask"name="Important task"/>
documentation 是描述信息,可选
<userTaskid="theTask"name="Schedule meeting"> <documentation> Schedule an engineering meeting for next week with the new hire. </documentation>
通过task获取方式如下:
task.getDescription()
到期日 必须是java.util.Date 类型, 或者 格式化后的String类型,或者null , 生成方式可以是表单输入,或者之前的service 任务生成.
<userTask id="theTask" name="Important task" activiti:dueDate="${dateVariable}"/>
也可以通过 TaskService
或者TaskListener
s , DelegateTask
.改变值
可以分配给一个用户 ,通过 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"); } }
相关推荐
2. 表单支持:Activiti 可以集成表单,使用户在执行任务时填写相关数据。 3. 用户界面:提供了一个基于 Web 的管理界面,方便查看和管理流程实例。 4. 运行时服务:提供了丰富的运行时服务,如启动流程实例、查询...
用户可以通过 Activiti Designer 工具创建流程图,包括任务(Task)、网关(Gateway)、事件(Event)等元素,以直观地设计和理解业务流程。 2. **部署与执行**:流程定义完成后,可以通过 Activiti 的 API 或管理...
- **TaskService**:用于管理用户任务,包括查询、领取、完成、删除任务以及设置变量。 - **IdentityService**:提供用户和组的管理功能,与Task关联。 - **ManagementService**:用于流程引擎的管理和维护,不常...
activiti没有撤回,由于业务的需求需要实现撤回,在参考别人代码后以两种方式实现了任意节点的跳转。代码真实可用,如有问题可联系我 第一种方式: 1、获取当前节点,获取跳转节点 2、获取节点的所有流出流向,把...
其中,`user task`表示用户需要参与的任务,而`multi-instance`是BPMN中的一个特性,用于创建多实例任务。 3. 多实例任务(Multi-instance Task):多实例任务是BPMN中的一个重要概念,允许任务根据一组数据集(如...
#### 一、多实例用户任务的基本概念与配置 Activiti是一个开源的工作流引擎,它提供了一种灵活的方式来定义业务流程,并且能够支持复杂的业务逻辑处理。其中,多实例任务是Activiti的一个重要特性,它可以用来实现...
利用Activiti提供的BPMN 2.0 XML文件,你可以描述出流程的各个环节,包括开始事件、结束事件、用户任务、服务任务、网关等。这些流程模型可以通过Ruoyi的后台管理界面导入到Activiti引擎中。 在Ruoyi中,你可以开发...
"Activiti用户指南.html"文件可能包含了这些章节的详细内容,而"Activiti用户指南_files"可能是相关的图片、样式表或其他辅助文件,用于提供更丰富的阅读体验。通过深入学习这个中文用户指南,开发者和业务分析师...
八、Activiti用户手册 《Activiti V5.21 用户手册 中文版》详细讲解了Activiti的安装、配置、设计、部署、监控等各个方面,是学习和使用Activiti的重要参考资料。阅读手册,你将了解到如何利用Activiti实现高效、...
### Activiti用户指南知识点总结 #### 1. Activiti简介 Activiti是一个轻量级、可扩展的流程引擎,它允许您创建企业级流程和工作流应用。Activiti遵循Apache V2许可证发布,源代码托管在GitHub上,允许用户查看、...
5. **表单集成**:Activiti 支持与表单系统的集成,用户在执行任务时可以填写相关表单,这些数据会被保存并用于后续流程。 6. **规则引擎集成**:Activiti 可以与Drools等规则引擎集成,实现动态决策。当流程运行到...
在"activiti6.0 自定义流程路径颜色和任务颜色"这个主题中,我们主要关注如何根据业务需求定制流程图的显示效果,特别是流程路径和任务节点的颜色。 首先,流程图的颜色定制对于理解和跟踪流程状态至关重要。默认...
它是基于BPMN 2.0标准的,这意味着你可以创建复杂的流程图,包括开始事件、结束事件、任务(用户任务和服务任务)、网关(并行和 Exclusive)、事件捕获等元素。这些元素可以通过Alfresco Studio或其他流程建模工具...
手册还深入讲解了 Activiti API,包括流程引擎 API 和服务,异常策略,如何与 Activiti 服务工作,包括部署流程,启动流程实例,完成任务,暂停和激活流程,以及通过 Activiti 引擎进行单元测试和调试。 关于事件...
Activiti 5.4 采用了 Apache 2.0 许可,这意味着它是免费且开源的,用户可以自由地使用、修改和分发源代码,为企业提供了灵活的使用选择。 2. **下载与获取** 用户可以通过官方网站或者其他开源软件仓库下载 ...
2. ** BPMN 2.0 支持 **:BPMN(Business Process Model and Notation)是一种国际标准的流程建模语言,Activiti 5.14 全面支持 BPMN 2.0,允许用户用图形化方式设计和管理业务流程,包括开始事件、结束事件、任务、...
- 自定义行为:如何编写自定义的用户任务行为、服务任务行为等,扩展Activiti的功能。 - 事件处理器:了解如何实现自定义事件处理器,处理特定的业务逻辑。 12. **最佳实践与案例分析** - 实战指导:提供实际...
这个“activiti6用户手册 英文”提供了关于Activiti 6版本的详细指南,帮助用户理解并充分利用该平台的各项功能。 1. **Activiti概述**:Activiti 是基于模型驱动的,它使用 BPMN 2.0(Business Process Model and ...
3. **表单和任务**:Activiti 支持与表单集成,允许用户在执行任务时填写相关信息。它提供了表单字段绑定和数据管理的能力,让业务逻辑与用户界面紧密结合。任务管理则包括任务分配、委托、评论和附件等功能。 4. *...
在Activiti中,任务可以被分配给一个用户或者一个组。组任务是指任务被指定给一个用户组,而不是单个用户。这样的设计允许任务由组内的任何成员处理,增加了流程的灵活性和效率。 2. **Group的概念** 在Activiti...