Flowable 中文文档

Flowable 中文文档

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

›CMMN 用户指南

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 设计器

免责声明

  • 免责声明

部署

外部资源

案例定义存储在 Flowable 数据库中。这些案例定义在使用服务任务或来自 Flowable 配置文件的 Spring bean 时可以引用委托类。这些类和 Spring 配置文件必须对所有可能执行案例定义的 CMMN 引擎可用。

Java 类

在案例定义中使用的所有自定义类(例如,在服务任务中使用的 PlanItemJavaDelegates)在启动案例实例时都必须存在于引擎的类路径中。

但是,在部署案例定义时,这些类不必存在于类路径中。这意味着,例如,在部署新的案例定义时,您的委托类不必在类路径中。

当您使用演示设置并想要添加自定义类时,您应该将包含这些类的 JAR 添加到 flowable-task 或 flowable-rest webapp 的 lib 目录中。别忘了也要包含您的自定义类的依赖项(如果有的话)。或者,您可以将依赖项包含在 Tomcat 安装目录的 libraries 目录中,${tomcat.home}/lib(或其他 Web 容器的类似位置)。

在案例实例中使用 Spring beans

当表达式或脚本使用 Spring beans 时,这些 beans 在执行案例定义时必须对引擎可用。如果您正在构建自己的 webapp 并按照Spring 集成章节中所述在上下文中配置 CMMN 引擎,这很简单。但请记住,如果您使用它,您还应该使用该上下文更新 Flowable task 和 rest webapps。

案例定义的版本控制

CMMN 没有版本控制的概念。这实际上是好事,因为可执行的 CMMN 文件可能会作为开发项目的一部分存在于版本控制系统仓库(如 Subversion、Git 或 Mercurial)中。但是,案例定义的版本是在部署过程中由引擎创建的。在部署期间,Flowable 会在将 CaseDefinition 存储到 Flowable 数据库之前为其分配一个版本。

对于部署中的每个案例定义,都会执行以下步骤来初始化属性 key、version、name 和 id:

  • XML 文件中的案例定义 id 属性用作案例定义的 key 属性。

  • XML 文件中的案例定义 name 属性用作案例定义的 name 属性。如果未指定 name 属性,则使用 id 属性作为名称。

  • 首次部署具有特定 key 的案例时,会分配版本 1。对于具有相同 key 的案例定义的所有后续部署,版本将被设置为比当前部署的最高版本高 1。key 属性用于区分案例定义。

例如,以下案例:

<definitions id="myDefinitions" >
  <case id="myCase" name="My important case" >
    ...

当部署此案例定义时,数据库中的案例定义将如下所示:

案例定义表
id key name version

676

myCase

My important case

1

假设我们现在部署同一案例的更新版本(例如,更改一些人工任务),但案例定义的 id 保持不变。案例定义表现在将包含以下条目:

更新后的案例定义表
id key name version

676

myCase

My important case

1

870

myCase

My important case

2

当调用 runtimeService.createCaseInstanceBuilder().caseDefinitionKey("myCase").start() 时,它将使用版本 2 的案例定义,因为这是该案例定义的最新版本。

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

<definitions id="myNewDefinitions" >
  <case id="myNewCase" name="My important case" >
    ...

表将如下所示:

添加新案例后的案例定义表
id key name version

676

myCase

My important case

1

870

myCase

My important case

2

1033

myNewCase

My important case

1

注意新案例的 key 与我们的第一个案例不同。尽管名称相同(我们可能也应该更改它),但 Flowable 在区分案例时只考虑 id 属性。因此,新案例部署时的版本为 1。

类别

部署和案例定义都有用户定义的类别。案例定义类别使用 CMMN XML 中的 targetNamespace 属性的值进行初始化: <definitions ... targetNamespace="yourCategory" ...

部署类别也可以在 API 中这样指定:

repositoryService
    .createDeployment()
    .category("yourCategory")
    ...
    .deploy();
← Spring 集成CMMN 1.1 →
  • 外部资源
    • Java 类
    • 在案例实例中使用 Spring beans
  • 案例定义的版本控制
  • 类别
Flowable 中文文档
文档
指南Java文档
法律
免责声明政策开源协议
联系方式
邮箱: [email protected]
版权 © 2025 Flowable AG. 中文文档基于 Apache License 2.0 协议翻译