Flowable 中文文档

Flowable 中文文档

  • 指南
  • Java文档
  • 博客
  • Flowable UI
  • 加入交流群
  • 英文文档

›事件注册表用户指南

Flowable 开源

  • 开源详情

BPMN 用户指南

  • 入门指南
  • 配置
  • Flowable API
  • Spring 集成
  • Spring Boot
  • 部署
  • BPMN 2.0 简介
  • BPMN 2.0 构件
  • 流程实例迁移
  • JPA
  • 历史
  • 身份管理
  • REST API
  • LDAP 集成
  • 工具

CMMN 用户指南

  • 配置
  • Flowable CMMN API
  • Spring 集成
  • 部署
  • CMMN 1.1
  • 架构
  • REST API

事件注册表用户指南

  • 配置
  • Flowable 事件注册表 API
  • Spring 集成
  • 部署
  • 事件注册表介绍
  • REST API

DMN 用户指南

  • 配置
  • Flowable DMN API
  • Spring 集成
  • 部署
  • DMN 1.1 介绍
  • REST API

应用指南

  • Flowable应用程序
  • Flowable 设计器

免责声明

  • 免责声明

部署

事件注册表定义

事件注册表支持两种类型的定义:事件定义和通道定义。 事件定义使用 .event 扩展名,通道定义使用 .channel 扩展名。

当事件注册表引擎与流程引擎一起使用时,事件和通道定义可以与其他流程相关资源一起打包到业务存档(BAR)中。流程引擎部署服务将负责将事件和通道资源部署到事件注册表引擎。

注意

业务存档中用于自定义表达式函数的 Java 类不会被添加到类路径中。业务存档中事件和通道定义中使用的所有自定义类都应该存在于 Flowable (Event Registry) 引擎的类路径中。

事件定义

事件定义配置事件负载结构以及关联和租户检测。 部署事件定义时,新的定义将被插入到 FLW_EVENT_DEFINITION 表中。

以编程方式部署事件定义

部署事件定义可以这样做:

String eventDefinition = "path/to/definition-one.event"; //不要忘记 .event 扩展名!

repositoryService.createDeployment()
    .name("部署事件定义一")
    .addClasspathResource(eventDefinition)
    .deploy();

你可以使用其他方法将事件定义添加到部署中,比如 addInputStream。这是从外部文件部署事件定义的示例:

File eventFile = new File("/path/to/definition-two.event"); //不要忘记 .event 扩展名!

repositoryService.createDeployment()
    .name("部署事件定义二")
    .addInputStream(eventFile.getName(), new FileInputStream(eventFile))
    .deploy();

部署的名称可以是任何文本,但资源名称必须始终包含有效的事件定义资源名称后缀(".event")。

通道定义

通道定义配置传入或传出事件的源或目标目的地。 默认情况下,Flowable 事件注册表支持 JMS、Kafka 和 RabbitMQ 源和目标目的地,但也可以扩展其他适配器类型。 部署通道定义时,新的定义将被插入到 FLW_CHANNEL_DEFINITION 表中。

以编程方式部署通道定义

部署通道定义可以这样做:

String channelDefinition = "path/to/definition-one.channel"; //不要忘记 .channel 扩展名!

repositoryService.createDeployment()
    .name("部署通道定义一")
    .addClasspathResource(channelDefinition)
    .deploy();

你可以使用其他方法将事件定义添加到部署中,比如 addInputStream。这是从外部文件部署事件定义的示例:

File channelFile = new File("/path/to/definition-two.channel"); //不要忘记 .channel 扩展名!

repositoryService.createDeployment()
    .name("部署通道定义二")
    .addInputStream(channelFile.getName(), new FileInputStream(channelFile))
    .deploy();

部署的名称可以是任何文本,但资源名称必须始终包含有效的通道定义资源名称后缀(".channel")。

Java 类

包含在事件和通道中使用的自定义表达式函数的所有类都必须在执行决策时存在于引擎的类路径中。

但是,在部署事件或通道定义时,这些类不必存在于类路径中。

当你使用演示设置并想要添加自定义类时,你应该将包含你的类的 JAR 添加到 flowable-app-rest webapp lib 中。不要忘记也包含你的自定义类的依赖项(如果有的话)。或者,你可以将依赖项包含在 Tomcat 安装的库目录中,${tomcat.home}/lib。

创建单个应用程序

与其确保所有事件注册表引擎都在其类路径中包含所有委托类并使用正确的 Spring 配置, 你可以考虑将 flowable-rest webapp 包含在你自己的 webapp 中,这样就只有一个 EventRegistryEngine。

事件和通道定义的版本控制

在部署期间,Flowable 将为事件和通道定义分配版本,然后将其存储在 Flowable 数据库中。

对于每个事件和通道定义,执行以下步骤来初始化属性 key、version、name 和 id:

  • 定义 JSON 文件中的事件或通道 key 属性用作定义 key 属性。

  • JSON 文件中的 name 属性用作定义 name 属性。

  • 首次部署具有特定 key 的事件或通道定义时,分配版本 1。对于具有相同 key 的事件或通道定义的所有后续部署,版本将设置为当前部署的最大版本加 1。key 属性用于区分事件和通道定义。

  • id 属性是一个唯一数字,用于保证集群环境中事件和通道定义标识符的唯一性。

以下面的流程为例:

{
    "key": "myEvent",
    "name": "My event",
    ...

部署此事件定义时,它将如下所示:

id key name version

e29d4126-ed4d-11e6-9e00-7282cbd6ce64

myEvent

My event

1

假设我们现在部署同一事件定义的更新版本,但事件定义的 key 保持不变。事件定义表现在将包含以下条目:

id key name version

e29d4126-ed4d-11e6-9e00-7282cbd6ce64

myEvent

My event

1

e9c2a6c0-c085-11e6-9096-6ab56fad108a

myEvent

My event

2

当调用 eventRegistry.getEventModelByKey("myEvent") 时,它将使用版本 2 的事件定义,因为这是事件定义的最新版本。

如果我们创建第二个决策,如下所示并将其部署到 Flowable DMN,将向表中添加第三行。

{
    "key": "myNewEvent",
    "name": "My new event",
    ...

表将如下所示:

id key name version

e29d4126-ed4d-11e6-9e00-7282cbd6ce64

myEvent

My event

1

e9c2a6c0-c085-11e6-9096-6ab56fad108a

myEvent

My event

2

d317d3f7-e948-11e6-9ce6-b28c070b517d

myNewEvent

My new event

1

注意新事件定义的 key 与我们的第一个事件定义不同。即使名称相同,Flowable 事件注册表在区分事件和通道时只考虑 key 属性。因此,新的事件定义部署时版本为 1。

← Spring 集成事件注册表介绍 →
  • 事件注册表定义
    • 事件定义
    • 以编程方式部署事件定义
    • 通道定义
    • 以编程方式部署通道定义
    • Java 类
    • 创建单个应用程序
  • 事件和通道定义的版本控制
Flowable 中文文档
文档
指南Java文档
法律
免责声明政策开源协议
联系方式
邮箱: [email protected]
版权 © 2025 Flowable AG. 中文文档基于 Apache License 2.0 协议翻译