activiti查询任务人已处理任务
时间: 2023-12-10 18:41:30 浏览: 38
您可以使用 Activiti 提供的任务查询 API 来查询已经处理过的任务。以下是一个示例代码片段:
```java
List<HistoricTaskInstance> tasks = historyService.createHistoricTaskInstanceQuery()
.taskAssignee("userId")
.finished()
.list();
for (HistoricTaskInstance task : tasks) {
System.out.println("Task name: " + task.getName());
System.out.println("Task assignee: " + task.getAssignee());
System.out.println("Task start time: " + task.getStartTime());
System.out.println("Task end time: " + task.getEndTime());
}
```
这段代码将查询已经完成的、由 "userId" 处理的任务,并将结果打印出来。您可以根据需要更改查询条件。
相关问题
activiti如歌查询正在执行的任务使用API实现
要查询正在执行的任务,可以使用Activiti提供的TaskQuery接口。具体实现步骤如下:
1. 获取ProcessEngine实例:
```java
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
```
2. 获取TaskService:
```java
TaskService taskService = processEngine.getTaskService();
```
3. 创建TaskQuery对象:
```java
TaskQuery taskQuery = taskService.createTaskQuery();
```
4. 添加查询条件,比如当前任务的处理人:
```java
taskQuery.taskAssignee("当前任务的处理人");
```
5. 获取查询结果:
```java
List<Task> taskList = taskQuery.list();
```
6. 遍历查询结果,获取任务信息:
```java
for (Task task : taskList) {
System.out.println("任务ID:" + task.getId());
System.out.println("任务名称:" + task.getName());
System.out.println("任务处理人:" + task.getAssignee());
// 其他任务信息
}
```
这样就可以通过API查询正在执行的任务了。
activiti5 手动结束任务
在 Activiti 5 中,可以通过以下方式手动结束任务:
1. 使用 TaskService 的 complete 方法,传入任务 ID 和任务处理人 ID:
```java
taskService.complete(taskId, userId);
```
2. 使用 TaskService 的 complete 方法,传入任务 ID 和一个 Map 类型的参数,其中包含了任务处理的结果和变量:
```java
Map<String, Object> variables = new HashMap<>();
variables.put("result", "approved");
variables.put("comment", "ok");
taskService.complete(taskId, variables);
```
在这种情况下,可以在 BPMN 文件中定义一个输出参数,将结果和变量传递给下一个任务。
需要注意的是,在手动结束任务后,需要重新启动流程实例才能继续执行后续任务。可以使用 RuntimeService 的 signal 方法启动流程实例:
```java
runtimeService.signal(executionId);
```
其中,executionId 是流程实例 ID。