Activiti之对用户任务签收办理操作

下文先介绍下用户任务的办理相关操作

用户任务分类:

分为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 

// 完成签收这个时候就任务Task的Assignee属性就有了值
taskService.claim(task.getId(), userId);

已经签收过的任务列表,某种意义上我理解为真正的办理人

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():还在运行中的流程

下面的3种方法:

historyService.createHistoricProcessInstanceQuery()
				.finished()
				.startedBy(name)
				.orderByProcessInstanceStartTime()
				.desc()
				.listPage(firstResult, maxResults);

查询指定用户参与的流程信息 (流程历史 用户参与 )

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();
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Activiti6是一个开源的工作流管理系统,为企业提供了一套完整的流程管理解决方案。其中,中文用户指南和操作手册是帮助开发人员使用Activiti6来开发工作流程的重要文档。 中文用户指南详细介绍了Activiti6的基本概念和术语,以及如何在系统中创建和管理工作流程。它提供了逐步的教程和示例,以帮助开发人员快速上手。用户指南还包含了一些最佳实践和常见问题的解答,使用户能够更好地理解和使用Activiti6的功能。 操作手册则更加注重于具体的操作步骤和技术细节。它从安装和配置Activiti6开始,介绍了工作流的各个组件和功能,并提供了详细的示例代码和截图。操作手册的目的是帮助开发人员了解Activiti6的API接口和调用方法,以及如何根据自己的需求进行定制开发。 对于开发人员来说,这两本文档是使用Activiti6进行工作流开发的必备参考。用户指南提供了更全面的理论知识和实践指导,而操作手册则更注重于实际操作和开发技巧。通过仔细阅读和实践这两本文档,开发人员可以迅速掌握Activiti6的使用方法,高效地开发出符合需求的工作流系统。 ### 回答2: Activiti是一个流程管理和工作流引擎,它提供了一个开发api,可以用于在应用程序中集成activiti的功能。Activiti6是Activiti引擎的最新版本,它在Activiti5的基础上进行了大量改进和优化。 Activiti6的中文用户指南和操作手册是为帮助用户理解和使用Activiti6而编写的。该指南详细介绍了Activiti6的各个方面,包括环境搭建、流程定义、流程实例管理、任务处理等。 在指南中,用户将了解到如何在自己的应用程序中使用Activiti6开发api。首先,用户需要配置Activiti6引擎以及相关的数据库和依赖项。然后,用户可以使用Activiti6提供的api来定义流程、管理流程实例和任务、查询流程数据等。 开发api可以帮助用户使用Activiti6的各种功能,例如: 1.流程定义:用户可以使用api来定义和管理流程的各个元素,如流程部署、流程定义和流程实例。 2.任务处理:用户可以使用api来查询和处理待办任务,如签收任务、完成任务和指派任务。 3.流程控制:用户可以使用api来控制流程的执行,如启动流程实例、中止流程实例和暂停流程实例。 4.流程数据查询:用户可以使用api来查询和分析流程的运行数据,如查询已完成的流程实例、查询任务历史记录等。 通过参考Activiti6中文用户指南和操作手册,用户可以快速上手并充分发挥Activiti6的功能。同时,用户也可以在开发过程中遇到问题时,参考该手册中的常见问题解答和示例代码来解决问题。 ### 回答3: Activiti 6 是一个开源的工作流引擎,它提供了丰富的功能和灵活的编程接口,方便开发人员对工作流进行定制和扩展。以下是关于 Activiti 6 中文用户指南和操作手册的开发 API 的一些说明: 1. 工作流引擎API: Activiti 6 提供了一组用于创建、管理和执行工作流的核心API。开发人员可以使用这些API创建流程定义,管理流程实例、任务和历史记录,以及查询工作流引擎的状态。这些API的使用方法在用户指南中有详细的说明和示例代码。 2. 任务API: Activiti 6 的任务API允许开发人员对任务进行操作,例如创建、分配、完成和撤销任务。通过这些API,可以实现任务的自动化处理和流转。用户指南提供了示例代码和详细说明,帮助开发人员理解和使用任务API。 3. 事件API: Activiti 6 支持事件机制,可以在工作流的不同阶段触发特定的事件。开发人员可以通过事件API注册事件监听器,并在特定的事件发生时执行自定义的逻辑。这对于实现工作流的扩展和定制非常有帮助。用户指南中介绍了事件API的使用方法和示例代码。 4. 表单API: Activiti 6 提供了一套用于创建和管理表单的API。开发人员可以使用这些API创建表单并将其与工作流引擎关联。用户指南详细介绍了如何使用表单API创建各种类型的表单,并将其与工作流相关联的步骤。 在用户指南和操作手册中,开发人员可以找到关于 Activiti 6 开发API的详细说明、示例代码和最佳实践建议。这些资源将帮助开发人员快速入门并利用 Activiti 6 强大的功能来构建定制化的工作流应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值