首先是我们已经对Activiti流程的开启有了了解之后,在进行下文
流程中用到最多的就是用户任务了,包括谁办理,什么时候办理,办理结果是什么,办理历史等等
下文先介绍下用户任务的办理相关操作
用户任务分类:
分为4中状态:未签收/待办理、已签收/办理中、运行中/办理中、已完成/已办结
首先,我们要了解下 TaskService 这个服务的作用:
1、查询分配给用户或组的任务
2、创建独立运行任务。这些任务与流程实例无关。
3、手工设置任务的执行者,或者这些用户通过何种方式与任务关联。
4、认领并完成一个任务。认领意味着一个人期望成为任务的执行者, 即这个用户会完成这个任务。完成意味着“做这个任务要求的事情”。 通常来说会有很多种处理形式。
状态:
通过TaskService来获得任务
API简述
从类 org.activiti.engine.impl.ServiceImpl 继承的字段
所有已实现的接口:TaskService
TaskService taskService = processEngine.getTaskService();
//这边我定义了几个通用 变量
//String userId = "Ypp";
//String userGroup = new String["Ypp1","Ypp101"];
1、未签收/待办理
那么流程开启之后,如何能让下一个办理人取得待办任务呢?
通过下面几种的方法,将取得指定签收人/办理人的待办数据
//单人待签收/待办理
List<Task> tasks = taskService.createTaskQuery().taskCandidateUser(userId).list();
//用户组待签收/待办理
List<Task> tasks = taskService.createTaskQuery().taskCandidateGroup(userGroup).list();
//进行签收操作,也就是将要接收办理这个任务
//这边可以使用循环,也可以通过其他方法,常用的是先加载一个任务待办列表到页面上,签收任务传递后台一个taskId
//task.getId() = taskId
taskService.claim(task.getId(), userId);//完成签收这个时候就任务Task的Assignee属性就有了值
//已经签收过的任务列表,某种意义上我理解为真正的办理人
List<Task> tasks = taskService.createTaskQuery().taskAssignee(userId).list();
2、办理
通过 1、未签收/待办理 中取得需要办理的任务Task之后
//调用 task.getId() = taskId 完成任务的办理,taskService服务自动流转到下一个办理节点
taskService.complete(task.getId());
//taskService.complete()方法 提供了重载,提供了3种方式供你选择
complete(String taskId)
complete(String taskId, Map<String,Object> variables)
complete(String taskId, Map<String,Object> variables, boolean localScope)
如果更深的了解如何流转的可以查看源码
---------------------------------------------------------------------------
插一下
任务并不一定要先签收再办理,可以直接到待办理中,而不是待签收中
可以把
taskService.claim(task.getId(), userId);方法
替换为
setAssignee(String taskId, String userId)
经过以上步骤,任务已经在 办理中状态了
3、已完成/已办结
任务的已完成(调用过complete方法)是指当前待办的任务状态,而非整个流程实例的完成状态
流程中数据使用到 historyService 服务
//查询指定用户发起的流程 (流程历史 用户发起 )
//finished 完成的流程
//unfinish 还在运行中的流程
List<HistoricActivityInstance> hais = 下面的3中方法
historyService.createHistoricProcessInstanceQuery().finished().startedBy(name).orderByProcessInstanceStartTime().desc().listPage(firstResult, maxResults);
//查询指定用户参与的流程信息 (流程历史 用户参与 )
List hpis = historyService.createHistoricProcessInstanceQuery().involvedUser(name).orderByProcessInstanceStartTime().desc().listPage(firstResult, maxResults);
//查询指定流程的任务流转路径 (流程历史 任务 流转 路经)
historyService.createHistoricTaskInstanceQuery().processInstanceId(processInstanceId).orderByHistoricTaskInstanceEndTime().asc().list();
//查看流程是否完整的运行完毕方法也有好几种
for (HistoricActivityInstance hai : hais) {
//如果下面的方法返回不是空,那就是已办结
hai.getEndTime()
}
//查看ACT_RU_TASK表
Long long = taskService.createTaskQuery().processInstanceId("processInstanceId").taskId("taskId").count();
//如果long为空,那么也是办结了
taskService.createTaskQuery()查询条件是可选的
可以是
taskService.createTaskQuery().processInstanceId("processInstanceId")
taskService.createTaskQuery().taskId("taskId")
或者其他更多条件
总结:
//流程在流转中对于当前办理人/组和签收人/组来说,都是可以进行动态调整变化的
//需要对程序进行特殊处理,添加监听或者其他方法
//得到用户组待签收
TaskService taskService = processEngine.getTaskService();
//单人待签收
//List<Task> tasks = taskService.createTaskQuery().taskCandidateUser(userId).list();
List<Task> tasks = taskService.createTaskQuery().taskCandidateGroup(userGroup).list();
for (Task task : tasks) {
// 签收
taskService.claim(task.getId(), userId);
}
//得到用户待办
tasks = taskService.createTaskQuery().taskAssignee(userId).list();
for (Task task : tasks) {
//办理
taskService.complete(task.getId());
}
//顺便查看历史看看
HistoryService historyService = processEngine.getHistoryService();
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(procId).singleResult();
对于更复杂的业务还在整理中,也有不足的地方,望大家共同进步。
文章是在Notepad++中编写的,格式上有差异谅解
相关推荐
本文档旨在为用户提供 Activiti 6.0 工作流的使用说明,帮助用户更好地理解和使用 Activiti 6.0 工作流引擎。 模型设计器 在 Activiti 6.0 中,模型设计器是设计业务流程的核心组件。模型设计器提供了可视化的界面...
在面试中,对这些核心服务的理解展示了你对Activiti工作流引擎的深入认识,包括流程的生命周期管理、任务的执行和跟踪,以及数据分析能力。熟悉这些API的使用不仅有助于解决实际开发问题,还能提高你在团队中的价值...
activiti5工作流官方文档汉化版activiti5工作流官方文档汉化版
Activiti工作流是一款开源的工作流程管理系统,主要用于企业的业务流程自动化。它基于模型驱动的设计理念,提供了丰富的API和图形化设计工具,使得开发者可以方便地创建、部署和管理工作流程。本操作手册旨在帮助...
代码示例涵盖了流程定义、启动流程、任务处理、服务任务的调用等多个方面,有助于加深对Activiti工作原理的理解。 总结,基于Activiti的工作流应用开发是一项复杂但高效的技术,通过理解工作流的基本概念、Activiti...
Activiti作为一个工作流引擎,允许开发者通过编程或使用图形化工具定义、执行和管理这些流程。 在Activiti中,流程定义是用BPMN 2.0(Business Process Model and Notation)语言编写的,这是一种国际标准,用于...
流程参与者可以通过用户界面参与到流程中,进行任务审批、提交信息等操作。Activiti还支持实时监控和跟踪流程实例,有助于管理者理解流程运行状态并作出相应调整。 4. **Activiti与Spring集成**: Spring Boot是一...
Activiti7工作流引擎教学视频 springboot-activiti是一个SpringBoot集成activiti实现在创建、部署流程、复制流程、删除流程以及流程规则配置,实现工单流程工作流流转和业务处理
activiti工作流文档,超详细,从0基础开始入门,包括数据库介绍、核心api等介绍,满足日常开发所需
整体而言,本教程作为Activiti入门学习材料,主要适用于对工作流引擎感兴趣并希望将其应用于实际项目开发中的Java开发者。通过本教程,开发者能够掌握Activiti框架的基础知识和高级应用,进而在构建企业协同办公系统...
Activiti工作流课程Activiti工作流课程Activiti工作流课程Activiti工作流课程Activiti工作流课程Activiti工作流课程
综上所述,《疯狂Workflow讲义:基于Activiti的工作流应用开发》是一份详尽的学习资源,适合对工作流技术感兴趣的开发者、系统架构师以及希望提升业务流程自动化水平的企业人员。通过深入学习,可以有效提升工作效率...
### Activiti工作流知识点概述 ...通过对工作流的自动化管理和优化,可以显著提高业务效率和响应速度。此外,Activiti还提供了丰富的API接口和可视化工具,使得开发者能够更加方便地定制和扩展业务流程。
总结来说,这个"Activiti 工作流取回的示例"涵盖了Activiti工作流引擎的关键操作,尤其是关于任务的取回和撤销。通过对这些示例的分析和实践,开发者能够增强对Activiti的理解,提升在企业级应用中实现高效工作流程...
Activiti工作流引擎是Java平台上的一个开源工作流管理系统,专为简化业务流程自动化而设计。它使用BPMN(Business Process Model and Notation)2.0标准进行流程建模,使得非技术人员也能理解并创建复杂的业务流程。...
2. BPMN 2.0标准:Activiti基于BPMN 2.0标准,学习BPMN图形符号和活动类型,如用户任务、服务任务、并发分支、事件等,是理解工作流设计的基础。 3. 工作流模型设计:学习使用 Activiti Designer 或 Eclipse 插件...
这款工作流最新版(activiti-6.0.0.Beta1)可能包含了对旧版本的改进和新功能的添加,旨在提升用户体验和性能。 在Activiti6中,你可以通过以下关键知识点来理解和使用这款工具: 1. **流程建模**:Activiti6支持...
Activiti工作流测试是针对Activiti这一开源工作流引擎进行的一种实践操作,旨在帮助开发者理解和掌握如何在实际项目中运用Activiti。Activiti是一个轻量级、高效且灵活的业务流程管理(BPM)系统,它能够处理业务...
【标题】"activiti工作流项目"是一个基于Java技术栈实现的工作流管理系统示例,它集成了SpringMVC、Hibernate和Activiti等关键组件。这个项目旨在演示如何在实际应用中利用Activiti来构建动态表单和处理各种流程审批...
### Activiti工作流23张表详细介绍 #### 一、Activiti数据库表结构概述 Activiti是一款开源的...通过对这些表的理解,我们可以更深入地了解Activiti的工作原理,同时也能更好地管理和优化基于Activiti的工作流应用。