盘古BPM体验地址    盘古BPM交流群盘古BPM交流群号:963222735

《Flowable基础八 Flowable 创建数据库表、数据库升级》

分享牛 12318℃


创建数据库表 Creating the database tables

在你的数据库中创建标的最简单方法是:

  • 在classpath中增加flowable-engine jar

  • 增加合适的数据库驱动

  • 在classpath中增加Flowable配置文件(flowable.cfg.xml),指向你的数据库(参考数据库配置)

  • 执行DbSchemaCreate类的main方法

    然而,通常只有数据库管理员可以在数据库中执行DDL语句,在生产环境中这也是最明智的选择。DDL的SQL脚本可以在Flowable下载页面或Flowable发布目录中找到,位于database子目录。引擎jar (flowable-engine-x.jar)的org/flowable/db/create包中也有一份(drop目录存放删除脚本)。SQL文件的格式为:

flowable.{db}.{create|drop}.{type}.sql

db为支持的数据库,而type为:

  • engine: 引擎执行所需的表,必需。

  • history: 存储历史与审计信息的表。当历史级别设置为none时不需要。请注意不使用这些表会导致部分使用历史数据的功能失效(如任务备注)。

MySQL用户请注意:低于5.6.4的MySQL版本不支持timestamps或包含毫秒精度的日期。更糟的是部分版本会在创建类似的列时抛出异常,而另一些版本则不会。当使用自动创建/升级时,引擎在执行时会自动修改DDL语句。当使用DDL文件方式建表时,可以使用通用版本,或使用文件名包含mysql55的特殊版本(用于5.6.4以下的任何版本)。特殊版本的文件中不会使用毫秒精度的列类型。

具体地说,对于MySQL的版本:

  • <5.6: 不支持毫秒精度。可以使用DDL文件(使用包含mysql55的文件)。可以使用自动创建/升级。

  • 5.6.0 - 5.6.3: 不支持毫秒精度。可以使用自动创建/升级。建议升级为较新版本的数据库。如果确实需要,可以使用包含mysql55的DDL文件。

  • 5.6.4+: 支持毫秒精度。可以使用DDL文件(默认的包含mysql的文件)。可以使用自动创建/升级。

请注意在Flowable表已经创建/升级后,再升级MySQL数据库,则需要手工修改列类型!

数据库表名说明 Database table names explained

Flowable的所有数据库表都以ACT_开头。第二部分是说明表用途的两字符标示符。服务API的命名也大略符合这个规则。

  • ACT_RE_*: 'RE’代表repository。带有这个前缀的表包含“静态”信息,例如流程定义与流程资源(图片、规则等)。

  • ACT_RU_*: 'RU’代表runtime。这些表存储运行时信息,例如流程实例(process instance)、用户任务(user task)、变量(variable)、作业(job)等。Flowable只在流程实例运行中保存运行时数据,并在流程实例结束时删除记录。这样保证运行时表小和快。

  • ACT_HI_*: 'HI’代表history。这些表存储历史数据,例如已完成的流程实例、变量、任务等。

  • ACT_GE_*: 通用数据。在很多场景中使用。

数据库升级 Database upgrade

在升级前,请确保你已经(使用数据库的备份功能)备份了数据库。

默认情况下,每次流程引擎创建时会进行版本检查,通常是在你的应用或者Flowable web应用启动的时候。如果Flowable库发现库版本与Flowable数据库表版本不同,会抛出异常。

要进行升级,首先需要将下列配置参数放入你的flowable.cfg.xml配置文件:

<beans >
    <bean id="processEngineConfiguration"      class="org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration">         <!-- ... -->
    <property name="databaseSchemaUpdate" value="true" />     
    <!-- ... -->   
    </bean> 
</beans>

同时,在classpath中加上合适的数据库驱动。升级你应用中的Flowable库,或者启动一个新版本的Flowable,并将它指向包含旧版本数据的数据库。将databaseSchemaUpdate设置为true。当Flowable发现库与数据库表结构不同步时,会自动将数据库表结构升级至新版本。

你还可以直接运行升级DDL语句,也可以从Flowable下载页面获取升级数据库脚本并运行。

转载请注明:分享牛 » 《Flowable基础八 Flowable 创建数据库表、数据库升级》