数据库配置

有两种方法可以配置Activiti引擎将使用的数据库,第一种选择是定义数据库的JDBC属性:

  • jdbcUrl:数据库的JDBC URL。
  • jdbcDriver:针对特定数据库类型的驱动程序的实现。
  • jdbcUsername:连接到数据库的用户名。
  • jdbcPassword:连接数据库的密码。

基于提供的JDBC属性构造的数据源将具有默认的MyBatis连接池设置,可以选择以下属性来调整该连接池(取自MyBatis文档):

  • jdbcMaxActiveConnections:连接池在任何时候最多可以包含的活动连接数,默认值是10。
  • jdbcMaxIdleConnections:连接池在任何时候最多可以包含的空闲连接数。
  • jdbcMaxCheckoutTime:在强制返回连接之前,可以从连接池中检出连接的时间(以毫秒为单位),默认值为20000(20秒)。
  • jdbcMaxWaitTime:这是一个较低级别的设置,它使池有机会打印日志状态并在尝试耗时很长的情况下重新尝试获取连接(以避免在配置错误的池后永远静默失败),默认值为20000(20秒)。

示例数据库配置:

<property  name="jdbcUrl"  value="jdbc:h2:mem:activiti;DB\_CLOSE\_DELAY=1000"  />
<property  name="jdbcDriver"  value="org.h2.Driver"  />
<property  name="jdbcUsername"  value="sa"  />
<property  name="jdbcPassword"  value=""  />

基准测试表明,MyBatis连接池在处理大量并发请求时不是最有效或弹性最大的连接池,因此,建议使用javax.sql.DataSource实现,并将其注入到流程引擎配置中(例如DBCP、C3P0、Hikari、Tomcat连接池等):

<bean  id="dataSource"  class="org.apache.commons.dbcp.BasicDataSource"  >
  <property  name="driverClassName"  value="com.mysql.jdbc.Driver"  />
  <property  name="url"  value="jdbc:mysql://localhost:3306/activiti"  />
  <property  name="username"  value="activiti"  />
  <property  name="password"  value="activiti"  />
  <property  name="defaultAutoCommit"  value="false"  />
  
<bean  id="processEngineConfiguration"  class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">

  <property  name="dataSource"  ref="dataSource"  />
  ...

请注意,Activiti并未随附允许定义此类数据源的库,因此,你必须确保这些库位于类路径中。

不管你使用的是JDBC还是数据源方法,都可以设置以下属性:

  • databaseType:通常无需指定此属性,因为将从数据库连接元数据中自动分析该属性,仅在自动检测失败的情况下才应指定,可能的值:{h2、mysql、oracle、postgres、mssql、db2}。此设置将确定将使用哪些创建/删除脚本和查询,有关支持哪些类型的概述,请参见受支持的数据库部分。
  • databaseSchemaUpdate:允许设置策略以在流程引擎启动和关闭时处理数据库模式。

    • false(默认):创建流程引擎时,根据库检查数据库模式的版本,如果版本不匹配,则引发异常。
    • true:构建流程引擎后,将执行检查并在必要时执行模式更新,如果该模式不存在,则会创建该模式。
    • create-drop:在创建流程引擎时创建模式,并在关闭流程引擎时删除模式。


博弈
2.5k 声望1.5k 粉丝

态度决定一切


引用和评论

0 条评论