Flowable入门系列文章8 - 基本配置二

1、JNDI数据源配置

缺省情况下,Flowable的数据库配置包含在每个Web应用程序的WEB-INF / classes的db.properties文件中。这并不总是理想的,因为它要求
用户修改Flowable源文件中的db.properties并重新编译WAR文件,或者分解WAR并修改每个部署的db.properties。
通过使用JNDI(Java命名和目录接口)获取数据库连接,连接由Servlet容器完全管理,配置可以在WAR部署之外进行管理。这也允许更多
的控制连接参数比db.properties文件提供的更多。

1.1、组态

JNDI数据源的配置将根据您所使用的servlet容器应用程序而有所不同。以下说明适用于Tomcat,但对于其他容器应用程序,请参阅容器应用
程序的文档。
如果使用Tomcat,则JNDI资源在$ CATALINA_BASE / conf / [enginename] / [hostname] / [warname] .xml中配置(对于Flowable UI,通常
为$ CATALINA_BASE / conf / Catalina / localhost / flowable-app。 XML)。首次部署应用程序时,将从Flowable WAR文件复制默认上下
文,因此如果该文件已经存在,则需要将其替换。要更改JNDI资源,以便应用程序连接到MySQL而不是H2,例如,将文件更改为以下内
容:

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/flowable-app">
<Resource auth="Container"
name="jdbc/flowableDB"
type="javax.sql.DataSource"
description="JDBC DataSource"
url="jdbc:mysql://localhost:3306/flowable"
driverClassName="com.mysql.jdbc.Driver"
username="sa"
password=""
defaultAutoCommit="false"
initialSize="5"
maxWait="5000"
maxActive="120"
maxIdle="5"/>
</Context>
1.2、JNDI属性

要配置JNDI数据源,请在Flowable UI的属性文件中使用以下属性:

  • datasource.jndi.name:数据源的JNDI名称。
  • datasource.jndi.resourceRef:设置是否在J2EE容器中查找,例如,如果JNDI名称尚未包含前缀,则需要添加前缀“java:comp
    / env /”。默认值是“true”。

2、支持的数据库

下面列出的是Flowable用于引用数据库的类型(区分大小写!)。

流动的数据库类型示例JDBC URL笔记
H2JDBC:H2:TCP://本地主机/流动性默认配置数据库
MySQLJDBC:MySQL的://本地主机:3306 /流动 autoReconnect的=true使用mysql-connector-java数据库驱动程序进行测试
PostgresJDBC:在PostgreSQL://本地主机:5432 /流动性
DB2JDBC:DB2://本地主机:50000 /流动性
MSSQLjdbc:sqlserver:// localhost:1433;databaseName = flowable(jdbc.driver =com.microsoft.sqlserver.jdbc.SQLServerDriver)或者 jdbc:jtds:sqlserver://localhost:1433 / flowable(jdbc.driver =net.sourceforge .jtds.jdbc.Driver)使用Microsoft JDBC Driver 4.0(sqljdbc4.jar)和JTDS Driver进行测试

3、创建数据库表

为数据库创建数据库表最简单的方法是:

  • 将流动引擎JAR添加到您的类路径中
  • 添加一个合适的数据库驱动
  • 将一个Flowable配置文件(flowable.cfg.xml)添加到您的类路径中,指向您的数据库(请参阅数据库配置部分)
  • 执行DbSchemaCreate类的主要方法

但是,通常只有数据库管理员才能在数据库上执行DDL语句。在生产系统上,这也是最明智的选择。SQL DDL语句可以在Flowable下载页面
或Flowable分发文件夹的database子目录中找到。这些脚本也位于包org / flowable / db / create(drop文件夹包含drop语句)中的引擎
JAR(flowable-engine-x.jar)中。SQL文件的形式:

流动性{DB} {创建|落} {}类型.SQL。

其中db是任何受支持的数据库,类型是:

  • 引擎:引擎执行所需的表格。需要。
  • 历史记录:包含历史和审计信息的表。可选:历史级别设置为无时不需要。请注意,这也会禁用将数据存储在历史记录数据库中的一
    些功能(例如注释任务)。

MySQL用户请注意:低于5.6.4的MySQL版本不支持时间戳或毫秒级精度的日期。更糟糕的是,有些版本在创建这样的列时会抛出异常,而
其他版本则不会。在进行自动创建/升级时,引擎在执行时会改变DDL。当使用DDL文件的方法时,一个普通的版本和一个特殊的文件与
mysql55在它是可用的(这适用于任何低于5.6.4)。后一个文件将具有毫秒精度的列类型。

具体来说,以下适用于MySQL版本:

  • <5.6:没有可用的毫秒精度。DDL文件可用(查找包含mysql55的文件)。自动创建/更新可以直接使用。
  • 5.6.0 - 5.6.3:没有可用的毫秒精度。自动创建/更新将不起作用。建议无论如何升级到更新的数据库版本。如果真的需要,可以使用mysql 5.5的 DDL文件。
  • 5.6.4+:可用的毫秒精度。可用的DDL文件(包含mysql的默认文件)。自动创建/更新可直接使用。

请注意,在稍后升级MySQL数据库并且已经创建/升级Flowable表的情况下,需要手动完成列类型的更改!

4、数据库表名解释

Flowable的数据库名称都以ACT_开头。第二部分是表格用例的两字符识别。这个用例也将大致匹配服务API。

  • ACT_RE_ *:RE代表repository。带有此前缀的表格包含静态信息,如流程定义和流程资源(图像,规则等)。
  • **ACT_RU_ ** *:RU代表runtime。这些是包含流程实例,用户任务,变量,作业等的运行时数据的运行时表。Flowable仅在流程实例执行期间存储运行时数据,并在流程实例结束时删除记录。这使运行时间表小而快速。
  • ACT_HI_ *:HI代表history。这些表格包含历史数据,例如过去的流程实例,变量,任务等等。
  • ACT_GE_ *:general数据,用于各种用例。

5、数据库升级

确保在运行升级之前备份数据库(使用数据库备份功能)。

默认情况下,每次创建流程引擎时都会执行版本检查。这通常发生在您的应用程序或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>

**另外,为您的数据库添加一个合适的数据库驱动程序到类路径中。**升级应用程序中的Flowable库。或者启动一个新版本的Flowable并将其指
向包含旧版本数据的数据库。随着databaseSchemaUpdate设置为true可流动会自动的第一次,当它注意到图书馆和数据库架构不同步升级数
据库架构到最新版本。

**作为替代,您还可以运行升级DDL语句。**也可以运行Flowable下载页面上提供的升级数据库脚本。

上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值