在业务审批过程中,确定审批人是非常重要的一步。而且,针对不同的业务场景,审批人也会不同。对于传统纸质审批流程,由于用笔记录等原因,审批人比较难以动态变更。而在数字化审批流程中,则可以通过技术手段方便地实现审批人的动态设置。
作为一款强大的数字流程引擎,Flowable在审批人的动态设置方面提供了良好的支持。本文将从多个角度对Flowable动态设置审批人进行分析。
一、Flowable的审批人指定方式
在Flowable中,有多种方式可以指定审批人。除了静态指定之外,还可以通过EL表达式、Java回调等方式动态计算得到审批人。其中,EL表达式常用于在流程定义中指定审批人,示例如下:
```
```
在具体业务场景中,变量${assignee}可以根据需要进行设置,如取自表单中的某些字段值、查询某个系统中的数据等。而Java回调需要自定义一个实现DelegateExecution的类,并重写execute方法,具体代码如下:
```
public class MyTaskListener implements TaskListener {
@Override
public void notify(DelegateTask task) {
task.setAssignee("张三");
}
}
```
然后在流程定义中配置该TaskListener即可:
```
```
上述代码中,myTaskListener即指向自定义的TaskListener类。
二、Flowable的候选人列表
在一些场景下,需要指定多个候选人,其中任意一人可审批通过即可。Flowable支持通过候选人列表来灵活设置审批人。在流程定义中,示例如下:
```
${[ '张三', '李四', '王五' ]} ]]>
```
上述代码中,通过调用TaskListener的回调方法来设置候选人列表。
三、Flowable的动态增减审批人
在一些需要协作处理的业务场景中,有时候需要动态地增加或减少审批人,以便更好地适应实际的业务需求。Flowable提供了领域API或者Java API以及脚本执行等方式支持动态改变审批人。其中,Java API应用场景较为灵活,值得具体分析。
在Java API中,可以通过设置ExecutionListener、TaskListener等方式动态地改变审批人。示例如下:
```
public class MyExecutionListener implements ExecutionListener{
public void notify(DelegateExecution execution) throws Exception {
//获取当前任务ID
String taskId = execution.getCurrentActivityId();
//获取当前任务处理的Task对象
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
//从表单中获取要增减的审批人,可以根据具体场景进行修改
List
//先清空任务的原审批人
taskService.setAssignee(taskId, null);
//动态增加新的审批人
for(int i=0;i
taskService.addUserIdentityLink(taskId, assigneeList.get(i), "candidate");
}
}
}
```
在上述代码中,通过获取当前任务ID和Task对象,再动态地设置审批人,可以在实际的业务场景中实现动态改变审批人的功能。
四、Flowable动态设置审批人的优势
相比于传统的审批流程,Flowable的动态设置审批人具有以下优势:
1. 提高了业务处理的灵活性和响应速度,使得处理流程更加高效。通过动态增减审批人,可以经验性地应对业务场景中的复杂变化,保证整个流程更加敏捷,同时也能够尽快处理业务。
2. 降低了业务运营成本。因为动态设置审批人的需求不需要开发人员参与,只需要在业务操作人员的指导下配置就行。从中长期来看,这能够更好地节省企业的成本。
3. 支持业务的数字化处理。通过数字化审批流程中动态设置审批人的需求实现,不仅可以将误判率降到最低,更可以通过数据收集为进一步的数据处理和分析打下基础。
综上所述,Flowable的动态设置审批人是一种非常优秀的解决方案,它能够降低运营成本,提高应对复杂业务场景的能力,同时也能够支持企业的数字化转型。然而,影响动态设置审批人的因素有很多,不同的意见冲突的情况下合理的设置审批人也会变得困难,需要我们根据具体场景进行了解。
扫码咨询 领取资料