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);
@Override
public 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、办理任务
需要事先查询任务是否存在
存在才能进行处理