flowable集成spring boot ----任务监听器

任务监听器

任务监听器(task listener)用于在特定的任务相关事件发生时,执行自定义的Java逻辑或表达式。

任务监听器包含下列属性:

flowable集成spring boot ----任务监听器_第1张图片

event(事件)(必填):触发任务监听器的任务事件类型。可用的事件有:
#create(创建):当任务已经创建,并且所有任务参数都已经设置时触发。
#assignment(指派):当任务已经指派给某人时触发。请注意:当流程执行到达用户任务时,在触发create事件之前,会首先触发assignment事件。这顺序看起来不太自然,但是有实际原因的:当收到create事件时,我们通常希望能看到任务的所有参数,包括办理人。

#complete(完成):当任务已经完成,从运行时数据中删除前触发。

#delete(删除):在任务即将被删除前触发。请注意任务由completeTask正常完成时也会触发。

class:需要调用的委托类
这个类必须实现org.flowable.engine.delegate.TaskListener接口。

package com.example.demo.listener;

import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.delegate.DelegateTask;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyTaskCreateListener implements TaskListener {
  private static final Logger log = LoggerFactory.getLogger(MyTaskCreateListener.class);

  @Override
  public void notify(DelegateTask delegateTask) {
       log.info("MyTaskCreateListener");
  }
}

flowable集成spring boot ----任务监听器_第2张图片

expression:(不能与class属性一起使用):指定在事件发生时要执行的表达式。

用法见另一篇文章:flowable集成spring boot ----流程动态赋值

delegateExpression:指定一个能够解析为TaskListener接口实现类的对象的表达式。
需要实现org.flowable.engine.delegate.JavaDelegate接口,并在execute方法中提供所需逻辑。当流程执行到达该活动时,会执行方法中定义的逻辑,并按照BPMN 2.0的默认方法离开活动。

哭泣,这里我遇到了问题,按说只要实现了org.flowable.engine.delegate.JavaDelegate接口的委托类,或者实现org.flowable.engine.delegate.TaskListener都可以使用委托表达式进行java服务调用,
在这里插入图片描述这是我的实现类:

package com.example.demo.delegate;


import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import java.util.Map;

@Component("myTaskDelegate")
public class MyTaskDelegate implements JavaDelegate {
    private static final Logger log = LoggerFactory.getLogger(JavaDelegate.class);

    @Override
    public void execute(DelegateExecution delegateExecution) {
        Map<String, Object> variables = delegateExecution.getVariables();
        log.info(variables.toString());

    }
}

用户手册也是这么写的,但是我用flowable6.7.0两种实现都报错,报错信息如下,两种实现方式报错一样(spring boot 为2.5.4,本来是2.3.4-release怀疑是不是版本不对换了一下版本)

flowable集成spring boot ----任务监听器_第3张图片

,使用6.6.0实现TaskListener的类可以,实现JavaDelegate依然不行,提示该类没有实现TaskListener,报错如下:
org.flowable.common.engine.api.FlowableIllegalArgumentException: Delegate expression ${myTaskDelegate} did not resolve to an implementation of interface org.flowable.task.service.delegate.TaskListener

有木有人知道这是什么原因导致的

你可能感兴趣的:(spring,boot,java,intellij-idea)