1、固定分配
2、表达式分配
UEL-value
支持UEL表达式进行配置进行处理,是动态的
例如:${assignee}
可以在流程节点中添加动态表达式作为动态的分配
UEL表达式需要在一开始进行赋值才能启动流程实例
UEL-method
${userBean.getUserId()}
userBean是Spring中的一个bean,该表达式标识为调用该对象的方法
UEL-method和UEL-value结合
${userService.getUserById(userId)}
userId为传入的流程变量,userService为Spring中的Bean类
其中userId作为参数传入该方法中
其他
表达式支持多种解析多种基础类型
bean,list,array,map,……
例如:
${order.price>20&&order.price<100}
3、监听器分配
可以用监听器完成负责人的指定
在流程设计的时候就不需要指定assignee
在listener中新建一个监听器
任务监听器
主要监听用户节点的执行动态,总共有4个生命周期
监听器类型

- java类
- 表达式
- 委托表达式
例如:
自定义Java 类监听器
实现TaskListener 接口
重载其中的notify方法,在其中进行逻辑的触发
/*** <p>* 自定义任务监听器* </p>** @author xupu* @since 2022/2/28 16:46*/public class MyTaskListener implements TaskListener {protected static Logger logger = LoggerFactory.getLogger(TaskListener.class);@Overridepublic void notify(DelegateTask delegateTask) {//可以在此设置流程变量//默认是create级别,可以进行判断事件类型进行不同的处理log.info("事件执行顺序===========================================================");if ("create".equals(eventName)) {log.info("创建:create=========");//在此指定流程执行人delegateTask.setAssignee("");} else if ("assignment".endsWith(eventName)) {log.info("指派:assignment========");} else if ("complete".endsWith(eventName)) {log.info("完成:complete===========");} else if ("delete".endsWith(eventName)) {log.info("销毁:delete=============");}}}
然后在流程定义中进行绑定监听器

4、办理任务
需要事先查询任务是否存在
存在才能进行处理

