flowable查询已完成的任务
时间: 2023-06-19 12:03:02 浏览: 201
要查询已完成的任务,可以使用Flowable的历史服务。以下是一个示例代码片段,演示如何使用历史服务查询已完成的任务:
```
HistoryService historyService = processEngine.getHistoryService();
List<HistoricTaskInstance> completedTasks = historyService.createHistoricTaskInstanceQuery()
.taskCompleted()
.list();
for (HistoricTaskInstance task : completedTasks) {
System.out.println("Completed task: " + task.getName() + " (completed on " + task.getEndTime() + ")");
}
```
在此示例中,我们使用`createHistoricTaskInstanceQuery()`方法创建一个历史任务实例查询对象。然后,我们使用`taskCompleted()`方法过滤已完成的任务。最后,我们调用`list()`方法获取任务列表,并遍历每个任务以获取其名称和完成时间。
注意,要使用历史服务,您的流程必须已经启动,并且已经完成一些任务。如果您尚未启动流程或尚未完成任何任务,则无法查询已完成的任务。
相关问题
flowable查询最后一个节点完成的任务
要查询最后一个节点完成的任务,可以使用Flowable的历史记录服务(HistoryService)。具体步骤如下:
1. 获取HistoryService:
```java
HistoryService historyService = processEngine.getHistoryService();
```
2. 使用createHistoricActivityInstanceQuery()方法创建查询:
```java
HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery();
```
3. 设置查询条件,包括流程实例ID、节点类型、完成时间等:
```java
query.processInstanceId(processInstanceId) // 流程实例ID
.activityType("userTask") // 节点类型
.finished() // 已完成
.orderByHistoricActivityInstanceEndTime().desc(); // 按完成时间倒序排序
```
4. 调用list()方法获取查询结果列表:
```java
List<HistoricActivityInstance> activityInstances = query.list();
```
5. 从列表中获取最后一个节点的完成时间:
```java
if (!activityInstances.isEmpty()) {
Date lastCompletedTime = activityInstances.get(0).getEndTime();
// 根据需要对时间进行格式化等处理
}
```
注意:以上代码仅为示例,需要根据实际情况进行调整。
flowable 抄送任务
Flowable 中的抄送任务(ccTask)是一种特殊类型的任务,它并不需要被处理,而是用于通知和抄送其他人员。当流程实例中的一个任务被分配给某个人员时,通常需要让其他人员知道此任务已经被分配,并可能需要他们进行相应的操作或者了解任务的进展情况。
在 Flowable 中,可以通过以下方式创建抄送任务:
1. 在流程定义文件(.bpmn 文件)中,添加一个 UserTask 元素,并设置其 assignee 属性为实际处理任务的人员,同时设置其 candidateUsers、candidateGroups 或者 candidateStartUsers 属性为需要抄送的人员列表。
2. 在代码中,调用 TaskService 的 addCandidateGroup、addCandidateUser 或者 addCandidateStartUser 方法,为任务添加抄送人员。
抄送任务通常不需要被处理,因此在处理任务时,可以直接将其标记为已完成,而不需要进行实际的处理操作。此外,抄送任务也不会影响流程实例的进展状态,因此即使抄送任务未被处理,流程也可以继续向下执行。