camunda 审批不通过
时间: 2023-08-20 16:04:06 浏览: 171
工作流审批和驳回
5星 · 资源好评率100%
在Camunda中,任务审批不通过通常意味着将任务退回给上一个处理人或者直接结束任务流程。以下是两种实现方式:
1. 将任务退回给上一个处理人
可以使用TaskService的setAssignee()方法将任务重新分配给上一个处理人。示例代码如下:
```java
@Autowired
private TaskService taskService;
public void rejectTask(String taskId) {
Task currentTask = taskService.createTaskQuery().taskId(taskId).singleResult();
String assignee = currentTask.getAssignee();
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(currentTask.getProcessInstanceId())
.finished()
.taskAssignee(assignee)
.orderByHistoricTaskInstanceEndTime()
.desc()
.list()
.get(0);
taskService.setAssignee(taskId, historicTaskInstance.getAssignee());
taskService.setVariable(taskId, "approved", false);
taskService.complete(taskId);
}
```
2. 直接结束任务流程
如果任务不需要退回给上一个处理人,可以直接使用TaskService的complete()方法结束任务流程。示例代码如下:
```java
@Autowired
private TaskService taskService;
public void rejectTask(String taskId) {
taskService.setVariable(taskId, "approved", false);
taskService.complete(taskId);
}
```
在以上两种方式中,我们都使用了TaskService的setVariable()方法来设置一个名为"approved"的变量,用于记录任务是否被审批通过。在流程中,可以使用该变量来进行条件判断,例如:如果"approved"变量为false,则流程进入"审批不通过"分支。
阅读全文