Flowable DMN引擎配置详解

Flowable DMN引擎配置详解

【免费下载链接】flowable-engine A compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users. 【免费下载链接】flowable-engine 项目地址: https://gitcode.com/GitHub_Trending/fl/flowable-engine

概述

Flowable DMN引擎是Flowable项目中的决策模型与规则引擎组件,用于执行DMN(Decision Model and Notation)标准定义的决策表。本文将详细介绍如何配置Flowable DMN引擎,包括创建引擎实例、数据库配置、与流程引擎集成等内容。

创建DMN引擎实例

基础配置方式

Flowable DMN引擎可以通过XML配置文件进行配置,默认配置文件名为flowable.dmn.cfg.xml。最简单的获取DMN引擎实例的方式是使用DmnEngines工具类:

DmnEngine dmnEngine = DmnEngines.getDefaultDmnEngine()

这种方式会从classpath中查找flowable.dmn.cfg.xml文件,并根据文件中的配置构建引擎实例。

配置示例

以下是一个典型的配置示例:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

  <bean id="dmnEngineConfiguration" class="org.flowable.dmn.engine.impl.cfg.StandaloneDmnEngineConfiguration">
    <property name="jdbcUrl" value="jdbc:h2:mem:flowable;DB_CLOSE_DELAY=1000" />
    <property name="jdbcDriver" value="org.h2.Driver" />
    <property name="jdbcUsername" value="sa" />
    <property name="jdbcPassword" value="" />
    <property name="databaseSchemaUpdate" value="true" />
    <property name="strictMode" value="false"/>
  </bean>
</beans>

虽然使用了Spring的配置格式,但Flowable DMN并不依赖Spring环境,只是借用了Spring的依赖注入能力。

编程式配置

除了使用XML配置外,也可以通过编程方式创建配置:

DmnEngine dmnEngine = DmnEngineConfiguration.createStandaloneInMemDmnEngineConfiguration()
  .setDatabaseSchemaUpdate(DmnEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
  .setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")
  .buildDmnEngine();

配置类选择

Flowable提供了几种预定义的配置类,适用于不同环境:

  1. StandaloneDmnEngineConfiguration:独立运行模式,Flowable自行管理事务
  2. StandaloneInMemDmnEngineConfiguration:单元测试专用,使用H2内存数据库
  3. SpringDmnEngineConfiguration:Spring环境集成专用

与流程引擎集成

可以将DMN引擎集成到Flowable流程引擎中,实现统一管理:

<bean id="dmnEngineConfiguration" class="org.flowable.dmn.engine.impl.cfg.StandaloneDmnEngineConfiguration">
    <!-- DMN引擎配置 -->
</bean>

<bean id="dmnEngineConfigurator" class="org.flowable.dmn.engine.configurator.DmnEngineConfigurator">
    <property name="dmnEngineConfiguration" ref="dmnEngineConfiguration" />
</bean>

<bean id="processEngineConfiguration" class="org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration">
    <property name="configurators">
      <list>
        <ref bean="dmnEngineConfigurator" />
      </list>
    </property>
    <!-- 流程引擎其他配置 -->
</bean>

集成后可以通过流程引擎的部署API同时部署BPMN和DMN资源。

数据库配置

JDBC直接配置

<property name="jdbcUrl" value="jdbc:h2:mem:flowable_dmn;DB_CLOSE_DELAY=1000" />
<property name="jdbcDriver" value="org.h2.Driver" />
<property name="jdbcUsername" value="sa" />
<property name="jdbcPassword" value="" />

连接池参数(基于MyBatis连接池):

  • jdbcMaxActiveConnections:最大活动连接数(默认10)
  • jdbcMaxIdleConnections:最大空闲连接数
  • jdbcMaxCheckoutTime:连接最大检出时间(毫秒,默认20000)
  • jdbcMaxWaitTime:最大等待时间(毫秒,默认20000)

使用DataSource

推荐使用专业连接池(如HikariCP、Tomcat JDBC等):

<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/flowable_dmn" />
  <property name="username" value="flowable" />
  <property name="password" value="flowable" />
  <property name="defaultAutoCommit" value="false" />
</bean>

<bean id="dmnEngineConfiguration" class="org.flowable.dmn.engine.impl.cfg.StandaloneDmnEngineConfiguration">
    <property name="dataSource" ref="dataSource" />
</bean>

通用配置参数

  • databaseType:数据库类型(h2|mysql|oracle|postgres|db2|mssql),通常自动检测
  • databaseSchemaUpdate:数据库模式更新策略
    • false:检查版本,不匹配则抛出异常(默认)
    • true:检查并自动更新模式
    • create-drop:创建模式并在引擎关闭时删除

JNDI数据源配置

在Servlet容器中使用JNDI数据源可以实现更灵活的配置管理。以Tomcat为例:

  1. $CATALINA_BASE/conf/Catalina/localhost/flowable-app.xml中配置:
<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. 在配置文件中指定JNDI名称:
spring.datasource.jndi-name=jdbc/flowableDB
datasource.jndi.resourceRef=true

自定义属性

可以在配置中使用系统属性:

<property name="jdbcUrl" value="${jdbc.url:jdbc:h2:mem:flowable;DB_CLOSE_DELAY=1000}" />

也可以通过PropertyPlaceholderConfigurer指定属性文件位置:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location" value="file:/opt/conf/flowable.properties" />
</bean>

支持的数据库

数据库类型JDBC URL示例说明
h2jdbc:h2:tcp://localhost/flowable_dmn默认数据库
mysqljdbc:mysql://localhost:3306/flowable_dmn?autoReconnect=true需mysql-connector-java驱动
oraclejdbc:oracle:thin:@localhost:1521:xe
postgresjdbc:postgresql://localhost:5432/flowable_dmn
db2jdbc:db2://localhost:50000/flowable_dmn
mssqljdbc:sqlserver://localhost:1433;databaseName=flowable_dmn需Microsoft JDBC Driver或JTDS驱动

数据库表结构

Flowable DMN使用Liquibase管理数据库模式变更。主要表包括:

  • ACT_DMN_DATABASECHANGELOG:Liquibase变更记录
  • ACT_DMN_DATABASECHANGELOGLOCK:Liquibase锁表
  • ACT_DMN_DECISION_TABLE:决策表元数据
  • ACT_DMN_DEPLOYMENT:部署元数据
  • ACT_DMN_DEPLOYMENT_RESOURCE:部署资源

数据库升级

升级前务必备份数据库。Flowable会在引擎启动时检查版本,如果发现版本不匹配会抛出异常。

【免费下载链接】flowable-engine A compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users. 【免费下载链接】flowable-engine 项目地址: https://gitcode.com/GitHub_Trending/fl/flowable-engine

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值