flowable如何实现驳回
时间: 2023-12-20 15:19:25 浏览: 247
Flowable可以通过以下步骤实现驳回:
1. 在流程定义中添加一个驳回节点,该节点的流向指向需要驳回的节点。
2. 在需要驳回的节点之前添加一个并行网关,用于将驳回的流程和正常流程分开。
3. 在需要驳回的节点和并行网关之间添加一个连线,连线的条件表达式为驳回条件。
4. 在并行网关和需要驳回节点之间添加一个连线,连线的条件表达式为正常流转条件。
5. 在需要驳回的节点中添加一个监听器,用于在该节点执行前获取驳回节点的任务ID,并在流程变量中保存。
6. 在驳回节点中添加一个监听器,用于在该节点执行时获取驳回任务的ID,并使用该ID将任务驳回到驳回节点。
7. 在并行网关和正常流转节点之间添加一个连线,连线的条件表达式为正常流转条件。
通过以上步骤,就可以实现在流程中进行驳回操作了。
相关问题
flowable6.8驳回
以下是Flowable 6.8驳回的方法:
1.在BPMN模型中添加一个UserTask节点,用于处理驳回操作。
2.在UserTask节点的属性中,设置Assignee为${initiator},表示任务的处理人为流程的发起人。
3.在UserTask节点的属性中,设置Candidate Groups为${deptLeader},表示任务的候选组为部门领导。
4.在UserTask节点的属性中,设置Task Listener为class类型,Listener Type为complete,Class为org.flowable.engine.delegate.TaskListener,Implementation为Java Class的全限定名,如com.example.MyTaskListener。
5.在MyTaskListener中,实现notify方法,用于处理任务完成时的逻辑。在该方法中,可以通过task.getExecution().getVariable("status")获取流程的状态,如果状态为“驳回”,则将任务的处理人设置为流程的发起人,将任务的候选组设置为部门领导。
6.在BPMN模型中,将UserTask节点的Outgoing Sequence Flow连接到之前的节点,表示驳回操作完成后,流程将回到之前的节点。
以下是Java代码示例:
```java
public class MyTaskListener implements TaskListener {
@Override
public void notify(DelegateTask task) {
String status = (String) task.getExecution().getVariable("status");
if ("驳回".equals(status)) {
task.setAssignee((String) task.getExecution().getVariable("initiator"));
task.addCandidateGroup((String) task.getExecution().getVariable("deptLeader"));
}
}
}
```
flowable如何驳回
在Flowable中,驳回操作通常是通过撤销当前任务并将流程实例返回到之前的任务节点来实现的。具体步骤如下:
1. 首先,需要查询当前待办任务的ID和流程实例ID。
2. 调用`runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult()`方法获取当前流程实例的信息。
3. 调用`taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult()`方法获取当前待办任务的信息。
4. 调用`repositoryService.getBpmnModel(processDefinitionId)`方法获取当前流程定义的BPMN模型。
5. 根据BPMN模型获取当前任务的上一级任务节点。
6. 调用`taskService.addComment(taskId, processInstanceId, "驳回", comment)`方法添加一条评论。
7. 调用`taskService.complete(taskId)`方法完成当前任务。
8. 调用`runtimeService.createProcessInstanceModification(processInstanceId).cancelAllForActivity(task.getTaskDefinitionKey()).startBeforeActivity(previousTask.getTaskDefinitionKey()).execute()`方法撤销当前任务并将流程实例返回到上一级任务节点。
注意:如果要实现驳回操作,必须保证流程实例没有结束,否则无法进行撤销操作。
阅读全文
相关推荐
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)