配置

创建ProcessEngine

1.ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine()分析


配置_第1张图片
image.png
  • 根据flowable.cfg.xml文件配置构造引擎


  

    
    
    
    

    

    

    
    
  


  • 配置XML实际上是一个Spring配置。这并不意味着Flowable只能在Spring环境中使用!我们只是在内部利用Spring的解析和依赖注入功能来构建引擎

ProcessEngineConfiguration分析

  1. 有多个类可用于定义processEngineConfiguration。这些类表示不同的环境,并相应地设置默认值
  • StandaloneProcessEngineConfiguration:流程引擎以独立方式使用,Flowable将负责所有交易
  • StandaloneInMemProcessEngineConfiguration:这是一个用于单元测试目的的便利类。Flowable将负责所有交易
  • SpringProcessEngineConfiguration:在Spring环境中使用流程引擎时使用
  • JtaProcessEngineConfiguration:在引擎以独立模式运行时使用JTA事务

数据库配置

  1. 定义数据库的JDBC属性:
  • dbcUrl:数据库的JDBC URL。
  • jdbcDriver:实现特定数据库类型的驱动程序。
  • jdbcUsername:用于连接数据库的用户名。
  • jdbcPassword:连接数据库的密码
  1. 基于提供的JDBC属性构造的数据源将具有默认的MyBatis连接池设置
  • jdbcMaxActiveConnections:任何时候连接池最多可以包含的活动连接数。默认值为10
  • jdbcMaxIdleConnections:任何时候连接池最多可以包含的空闲连接数
  • jdbcMaxCheckoutTime:在强制返回连接之前,可以从连接池中检出连接的时间量(以毫秒为单位)。默认值为20000(20秒)
  • jdbcMaxWaitTime:这是一个低级别设置,它为池提供了一个机会来打印日志状态,并在它花费异常时间的情况下重新尝试获取连接(以避免在池配置错误时永远无声地失败)默认值是20000(20秒)

在处理大量并发请求时,MyBatis连接池不是最有效或最有弹性的。因此,建议我们使用一个javax.sql.DataSource实现并将其注入流程引擎配置(例如HikariCP,Tomcat JDBC连接池等)


  
  
  
  
  




  
  ...
  • databaseSchemaUpdate:设置策略以在流程引擎启动和关闭时处理数据库模式
    • false (默认值):在创建流程引擎时检查库模式的版本,如果版本不匹配则抛出异常
    • true:构建流程引擎时,将执行检查,并在必要时执行架构更新。如果架构不存在,则创建它
    • create-drop:在创建流程引擎时创建架构,并在关闭流程引擎时删除架构
  1. 数据库表名称解释
    Flowable的数据库名称都以ACT_开头。第二部分是表的用例的双字符标识。此用例也将大致匹配服务API
  • ACT_RE_ *:RE代表repository。具有此前缀的表包含静态信息,例如流程定义和流程资源(图像,规则等)
  • ACT_RU_ *:RU代表runtime。这些是包含流程实例,用户任务,变量,作业等的运行时数据的运行时表。Flowable仅在流程实例执行期间存储运行时数据,并在流程实例结束时删除记录。这使运行时表保持小而快
  • ACT_HI_ *:HI代表history。这些是包含历史数据的表,例如过去的流程实例,变量,任务等
  • ACT_GE_ *:general数据,用于各种用例

Job Executor(从6.0.0版开始)

  1. Flowable v5的异步执行程序是一种在Flowable引擎中执行异步作业的更高性能和更友好的数据库方式
  2. 如果在Java EE 7下运行,ManagedAsyncJobExecutor则可以使用JSR-236兼容容器来管理线程。为了启用它们,应该在配置中传递线程工厂

作业执行者激活

  1. AsyncExecutor是一个管理线程池以触发计时器和其他异步任务的组件,其他实现也是可能的(例如,使用消息队列)
  2. 默认情况下,AsyncExecutor未激活且未启动。通过以下配置,可以与Flowable Engine一起启动异步执行程序

部署缓存配置

所有流程定义都被缓存(在解析之后),以避免每次需要流程定义时都会访问数据库,并且流程定义数据不会更改。默认情况下,此缓存没有限制。要限制流程定义缓存,请添加以下属性:
···

···
注入自己的缓存实现。这必须是实现org.flowable.engine.impl.persistence.deploy.DeploymentCache接口的bean:


  

事件处理程序

  1. 事件监听器实现
    事件监听器的唯一要求是实现org.flowable.engine.delegate.event.FlowableEventListener
public class MyEventListener implements FlowableEventListener {

  @Override
  public void onEvent(FlowableEvent event) {

    if(event.getType() == FlowableEngineEventType.JOB_EXECUTION_SUCCESS) {
      System.out.println("A job well done!");
    } else if (event.getType() == FlowableEngineEventType.JOB_EXECUTION_FAILURE) {
      System.out.println("A job has failed...");
    } else {
      System.out.println("Event received: " + event.getType());
    }
  }

//如果事件监听器中的行为不是关键业务,则建议返回false(异常被忽略)
  @Override
  public boolean isFailOnException() {
    // The logic in the onEvent method of this listener is not critical, exceptions
    // can be ignored if logging fails...
    return false;
  }
/**
  * 确定此事件侦听器是在事件发生时立即触发还是由getOnTransaction()方法确定的事务生命周期事件触发
  * 支持的事务生命周期事件的值包括:COMMITTED,ROLLED_BACK,COMMITTING,ROLLINGBACK
  */
  @Override
  public boolean isFireOnTransactionLifecycleEvent() {
    return false;
  }

  @Override
  public String getOnTransaction() {
    return null;
  }
}
  1. org.flowable.engine.delegate.event.BaseEntityEventListener:一个事件侦听器基类,可用于侦听特定类型的实体或所有实体的实体相关事件
    • 隐藏掉类型检查,并提供4种方法应覆盖:onCreate(..),onUpdate(..)并onDelete(..)创建实体时,更新或删除。对于所有其他与实体相关的事件,onEntityEvent(..) 调用它

你可能感兴趣的:(配置)