当前位置: 首页 > 知识库问答 >
问题:

在activiti bpmn工作流中使用带有TimerCatchingEvents的ServiceTasks行为不一致

柴华灿
2023-03-14

当将ServiceTasks与IntermediateTimerEvents一起使用时,有时由于在ACT_RU_JOB表中引发异常,它没有执行服务任务。ACT_RU_JOB表中EXCEPTION_MSG_列填充了表达式#{serviceTask1.execute(execution).value中使用的未知属性。

请参阅活动工作流图像,我已附在下面的清晰图片的用途。

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

  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

分析:我上面得到的错误是不一致的。

活动工作流

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

共有1个答案

裴甫
2023-03-14

该异常完全是意料之中的,因为在启动流程实例时没有设置适当的流程变量。此外,Activiti引擎无法解析命名beanserviceTask1

从Activiti 5.22.0用户指南文档(在文件Activiti-5.22.0.zip中),更准确地说是8.5.3节。Java服务任务您有4种方法声明如何调用Java逻辑。

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

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

不幸的是,您没有向BPM引擎提供必要的信息,说明在哪里可以找到具有Java逻辑的bean。

我建议你采取以下步骤。

  1. 从提供的链接中阅读技术和用户指南文档(第8.5.3章.Java服务任务)。
  2. 尝试通过指定实现JavaDelegate或ActivityBehavior的类来调用Java逻辑。以我的浅见,初次接触Activiti BPM引擎要容易得多。
 类似资料:
  • 我正试着用带Spring的泽西。但无论如何,我不明白为什么Spring依赖项没有被注入到Rest类中。 我的web.xml文件如下所示 My ApplicationContext.xml是标准的,并指定组件扫描的基本包:

  • 我有一个简单的应用程序,它应该根据提供的URL加载一些简单的JSP页面 http://localhost:9191/mypath/-- 在IntelliJ中使用应用程序时,上述URL按预期工作。 然而,在使用-java-jar应用程序启动应用程序时。jar——Spring。配置。位置=文件:/应用属性,它为上述所有URL返回404。 无法找出原因,如果有人能指出我可能错过的任何东西,我将不胜感激。

  • 我正在尝试使用一个包含多行数据的Excel工作表,并使用行中的一个值作为新工作簿名称为每一行创建单独的工作簿。这些工作簿将保存为逗号分隔的工作簿,以便它们可以上传到机器的控制器中。我可以手动打开一个新工作簿并从基本工作簿中获取单元格的外部引用,但对如何编写循环以使其自动在行中移动并创建新工作簿以及如何使用其中一个值作为新工作簿的名称感到困惑。 基本工作簿的结构是从A到J的行,其中A列包含我要将新工

  • 我对spring boot和创建我的第一个应用程序非常陌生。创建数据源时,我使用了带有前缀的@ConfigurationProperties和要从Application.Property中读取的属性。 但是,这个设置似乎对我不起作用,我的程序没有运行。 我的pom.xml文件包含: 我的存储库类: 我的主要类: 请让我知道如果我需要提供任何其他信息以及。

  • 这是我在使用Angular 1.5应用程序发出请求时Chrome控制台中得到的: XMLHttpRequest无法加载http://localhost:8080/api/oauth/token.对预检请求的响应没有通过权限改造检查:请求的资源上没有“访问控制允许起源”标头。因此不允许访问起源“http://localhost:8000”。响应的HTTP状态代码为401。 当我删除OAuth2配置时

  • 这个方法的问题是它总是返回零。看起来没有使用它的参数。然而,如果我按照下面的方式来写,那么一切都运行得很好。有没有人知道为什么第一种方法不起作用?