flowable 任务监听器动态设置办理人

2,054 阅读1分钟

任务监听器:针对UserTask节点
事件监听器:针对任意节点
使用场景:实际情况下可能会在节点开始或结束之后调用业务系统的接口去做同步数据之类的业务处理。

第一:任务监听有三种事件类型

1 . create :在任务创建且所有任务属性设置完成之后才触发。

2.assignment :在任务被分配给某个班里人之后触发,它是在create事件触发前被触发。

3.complete:在配置了监听器的上一个任务完成是触发,也就是说运行期任务删除之前触发。

第二:任务监听器的三种监听器执行类型

1.class:需要类的全路径 实例:

image.png 创建任务监听器实现TaskListener 接口,实现notify 方法

package top.theonly.workflow.listener;

import org.flowable.engine.TaskService;
import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.delegate.DelegateTask;

@Component
public class ApplyTaskListener implements TaskListener {

	@Autowired
    private TaskService taskService;

    @Override
    public void notify(DelegateTask delegateTask) {
        String assignee = (String) delegateTask.getVariable("assignee ");
        // delegateTask.setAssignee(assignee); // 历史表中的assignee还是为null
        taskService.setAssignee(delegateTask.getId(), startUserId);
    }
}

在任务监听器的notify方法中使用 taskService.setAssignee(String taskId, String assignee) 来设置该任务办理人

2.expression:定义一个表达式,类似EL的语法

image.png

3.delegateExpression:指的是一个实现监听接口

image.png

package top.theonly.workflow.listener;

import org.flowable.engine.TaskService;
import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.delegate.DelegateTask;

@Component(value = "taskBusinessCallListener")
public class ApplyTaskListener implements TaskListener {

	@Autowired
    private TaskService taskService;

    @Override
    public void notify(DelegateTask delegateTask) {
        String assignee = (String) delegateTask.getVariable("assignee ");
        // delegateTask.setAssignee(assignee); // 历史表中的assignee还是为null
        taskService.setAssignee(delegateTask.getId(), startUserId);
    }
}

欢迎加入我们:gitee.com/bsin-paas/a…