在Activiti bpmn工作流程中使用带有TimerCatchingEvents的ServiceTasks时表现不一致

问题描述 投票:1回答:1

当将ServiceTasks与IntermediateTimerEvents一起使用时,有时由于ACT_RU_JOB表中引发的异常而未执行服务任务。 ACT_RU_JOB表中的EXCEPTION_MSG_列填充为表达式中使用的未知属性:#{serviceTask1.execute(execution)。该特定工作的价值。

请参阅下面随附的activiti工作流图像,以获得清晰的用例图。

注意:我正在使用使用maven的spring-boot微服务来运行工作流程。

  spring-boot version: 1.5.5.RELEASE
  activity version: 5.22.0

 Activity and Connection Pool dependencies in pom.xml:  
  <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-spring-boot-starter-basic</artifactId>
        <version>${activiti.version}</version>
    </dependency>
  Connection Pooling dependency:
  <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jdbc</artifactId>
  </dependency>

  application.properties configuration attached below:
  spring.activiti.job-executor-activate=false
  spring.activiti.async-executor-enabled=true
  spring.activiti.async-executor-activate=true

  spring.datasource.tomcat.initial-size=15
  spring.datasource.tomcat.max-active=100

分析:我遇到的错误不一致。

activiti workflow

Github上的项目链接:https://github.com/cloudnativeview/spring-activiti-bpmn-kickstart

spring-boot activiti
1个回答
-1
投票

完全可以预见异常,因为在启动流程实例时未设置适当的流程变量。 Activiti引擎也无法解析命名的bean serviceTask1

Activiti 5.22.0 userguide docs(在文件activiti-5.22.0.zip内部)中,更准确地说是8.5.3部分。 Java服务任务,您有4种方法来声明如何调用Java逻辑。

  • 指定实现JavaDelegate或ActivityBehavior的类。
  • 评估一个解析为委托对象的表达式。
  • 调用方法表达式。
  • 计算值表达式。

在BPMN流程定义文件中,您正在使用method expression技术调用服务任务Java逻辑。如果要成功调用方法,则必须确保bean serviceTask1是执行过程中的过程变量或Spring上下文中的命名对象。

不幸的是,您没有向BPM引擎提供有关在何处使用Java逻辑查找bean的必要信息。

我建议您执行以下步骤。

  1. 从提供的链接中阅读技术和用户指南文档(第8.5.3章Java服务任务)。
  2. 尝试通过指定实现JavaDelegate或ActivityBehavior的类的方式]调用Java逻辑。以我的拙见,使用Activiti BPM引擎进行首次接触要容易得多。
© www.soinside.com 2019 - 2024. All rights reserved.