Task task = taskService.newTask(); 如何放入当前流程
时间: 2023-12-14 11:40:14 浏览: 182
要将任务添加到当前流程中,您需要使用流程引擎的 TaskService API 中的方法:
1. 首先,您需要获取当前流程实例的 ID。您可以使用以下代码获取它:
```
String processInstanceId = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult()
.getId();
```
其中,`processInstanceId` 是当前流程实例的 ID。
2. 然后,您可以使用以下代码将任务添加到当前流程实例中:
```
taskService.saveTask(task);
taskService.addCandidateGroup(task.getId(), "group1");
taskService.addCandidateUser(task.getId(), "user1");
taskService.setAssignee(task.getId(), "user1");
taskService.complete(task.getId());
```
在这里,您需要设置一些任务属性,例如任务候选组、候选人和任务负责人。最后,您需要使用 `complete` 方法完成任务。
请注意,添加任务后,您需要启动流程实例以使其生效。
相关问题
Task task = taskService.newTask(); task.setName("Review task"); // 设置审核人 task.setAssignee("pw"); // 更新流程变量 taskService.saveTask(task); execution.setVariable("taskId", task.getId()); // 获取当前任务的流程变量 Task tasks = taskService.createTaskQuery().taskId(task.getId()).singleResult();tasks为null帮忙解决
根据你提供的代码,可能出现`tasks`为`null`的原因有以下几种:
1. `taskService.saveTask(task)` 方法执行失败,导致任务没有被保存成功。你可以在该方法前后添加日志输出,检查是否出现异常信息。
2. 任务查询条件不正确,导致查询结果为`null`。你可以将`taskId`改为`id`,并且添加流程实例 ID 来限定查询条件,如下所示:
```
Task task = taskService.createTaskQuery()
.taskId(taskId)
.processInstanceId(execution.getProcessInstanceId())
.singleResult();
```
请确认以上几点是否符合你的实际情况,如果还有问题可以提供更多的代码和错误日志。
Task task = taskService.newTask(); 后在后面流程如何获取当前任务
在流程中,可以通过以下两种方式获取当前任务:
1. 通过任务处理器获取当前任务:
在任务处理器中,可以使用 `TaskService` 的 `createTaskQuery()` 方法创建一个任务查询,然后使用 `singleResult()` 方法获取当前任务。例如:
```
Task currentTask = taskService.createTaskQuery().singleResult();
```
2. 通过流程实例获取当前任务:
在流程实例中,可以使用 `TaskService` 的 `createTaskQuery()` 方法创建一个任务查询,然后使用 `processInstanceId()` 方法指定流程实例 ID 获取当前任务。例如:
```
Task currentTask = taskService.createTaskQuery()
.processInstanceId(processInstanceId)
.singleResult();
```
其中,`processInstanceId` 是当前流程实例的 ID。
阅读全文