activiti task怎么获取业务标识
时间: 2023-07-23 17:37:32 浏览: 48
在Activiti中,每个任务(Task)都有一个关联的执行实例(Execution),而执行实例又与业务流程实例(Process Instance)相关联。因此,可以通过查询任务所关联的执行实例,进而获取与该任务相关联的业务标识。
具体来说,可以使用以下代码来获取当前任务的业务标识:
```
Task task = ...
String processInstanceId = task.getProcessInstanceId();
Execution execution = runtimeService.createExecutionQuery()
.processInstanceId(processInstanceId)
.singleResult();
String businessKey = execution.getProcessBusinessKey();
```
其中,`task.getProcessInstanceId()` 返回当前任务所属的流程实例ID,然后使用 `runtimeService` 根据流程实例ID 查询执行实例,最后通过 `execution.getProcessBusinessKey()` 获取与该执行实例相关联的业务标识。
相关问题
Activiti Task Service
Activiti Task Service是一个为Activiti工作流引擎提供任务管理功能的服务。它提供了对流程实例中任务的创建、读取、更新、删除等操作的支持。使用Activiti Task Service可以方便地管理工作流中的任务,实现对流程的控制。
activiti7获取上一任务节点task
在 Activiti 7 中,获取上一个任务节点的任务可以通过历史任务查询实现。可以通过以下步骤来获取上一个任务节点的任务:
1. 首先,获取当前任务的 ID。可以使用以下代码获取当前任务的 ID:
```java
String currentTaskId = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult()
.getId();
```
其中,`processInstanceId` 是当前流程实例的 ID。
2. 然后,使用当前任务 ID 查询历史任务。可以使用以下代码查询历史任务:
```java
List<HistoricTaskInstance> historicTasks = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(processInstanceId)
.orderByHistoricTaskInstanceEndTime()
.desc()
.list();
```
其中,`processInstanceId` 是当前流程实例的 ID。使用 `orderByHistoricTaskInstanceEndTime().desc()` 可以按照任务结束时间倒序排列历史任务。
3. 最后,找到上一个任务节点的任务。可以遍历历史任务列表,找到上一个任务节点的任务。可以使用以下代码实现:
```java
String previousTaskId = null;
for (HistoricTaskInstance historicTask : historicTasks) {
if (!historicTask.getId().equals(currentTaskId)) {
previousTaskId = historicTask.getId();
break;
}
}
```
在循环中,判断当前任务的 ID 是否与当前任务 ID 相等,如果不相等,则认为是上一个任务节点的任务。
通过上述步骤,你可以获取上一个任务节点的任务 ID(`previousTaskId`),然后可以根据需要进行进一步的操作。