Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自camunda UserTask的钩子事件_Java_Spring Boot_Camunda - Fatal编程技术网

Java 来自camunda UserTask的钩子事件

Java 来自camunda UserTask的钩子事件,java,spring-boot,camunda,Java,Spring Boot,Camunda,我想从UserTask钩住事件,如本文所述: 我的听众: @Component @Slf4j public class MyListener { public MyListener() { log.debug("[MyListener] create"); } @EventListener public void onTaskEvent(DelegateTask taskDelegate) { log.deb

我想从UserTask钩住事件,如本文所述:

我的听众:

@Component
@Slf4j
public class MyListener {
    public MyListener() {
        log.debug("[MyListener] create");
    }

    @EventListener
    public void onTaskEvent(DelegateTask taskDelegate) {
        log.debug("[DelegateTask] id" + taskDelegate.getId());
    }

    @EventListener
    public void onTaskEvent(TaskEvent taskEvent) {
        log.debug("[TaskEvent] id" + taskEvent.getId());
    }
}
我添加了属性:

camunda.bpm.eventing.execution=true
camunda.bpm.eventing.history=true
camunda.bpm.eventing.task=true
依赖关系:

    <dependency>
        <groupId>org.camunda.bpm.springboot</groupId>
        <artifactId>camunda-bpm-spring-boot-starter</artifactId>
        <version>${camunda.spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
        <version>${springboot.version}</version>
    </dependency>
    ....
    and other

org.camunda.bpm.springboot
卡蒙达bpm弹簧启动机
${camunda.spring.version}
org.springframework.boot
弹簧靴启动器jdbc
${springboot.version}
....
及其他
版本: springboot=2.2.5.0版本 卡蒙达=7.13.0

启动BPM流程时,我不会查看来自onTaskEvent myListener的任何日志消息,只会在启动应用程序后查看“[myListener]create.”。 在驾驶舱中,我看到已启动的流程和活动任务。 如果userTask在bpm中已经有一个表达式类型taskListener,原因可能是什么? 有什么问题吗?也许需要更多的数据来理解它

谢谢。

  • 您是否检查了Spring类路径扫描是否正确地拾取并注册了@Component?如果侦听器实现没有意外地放置在Spring Boot应用程序类下面的包层次结构中,那么它将不会自动注册

  • 你是如何测试的?只有在运行SpringBootTest时,才会拾取Spring组件。使用@Rule ProcessEngineRule的普通Java测试是不够的

  • 如果组件被正确检测(并且新属性被正确发布),那么您应该能够观察到@EventListener方法被调用(例如,设置断点并检查调试器是否停止)

如果属性设置正确,您将看到类似的日志输出:

INFO  o.c.b.s.b.s.e.EventPublisherPlugin - EVENTING-001: Initialized Camunda Spring Boot Eventing Engine Plugin. 
INFO  o.c.b.s.b.s.e.EventPublisherPlugin - EVENTING-003: Task events will be published as Spring Events. 
INFO  o.c.b.s.b.s.e.EventPublisherPlugin - EVENTING-005: Execution events will be published as Spring Events. 
INFO  o.c.b.s.b.s.e.EventPublisherPlugin - EVENTING-007: History events will be published as Spring events.
  • 由于日志记录配置的原因,您可能看不到侦听器输出
无论如何,这里是一个轻量级的,它写入STOUT和一个日志文件。 (只需运行mvn测试并在目标文件夹中找到日志,或者在逐步完成该过程时查看控制台输出)