Flowable6-整合Spring

Flowable6-整合Spring_第1张图片

ProcessEngineFactoryBean

ProcessEngine 可配置为一个普通的Spring bean. 整合的时候我们需要用到 org.flowable.spring.ProcessEngineFactoryBean 类.


    ...



  

请注意, 这个 processEngineConfigurationbean 现在使用的是org.flowable.spring.SpringProcessEngineConfiguration 类.


Transactions

下面是我们在这个例子中使用的Spring配置文件. 显示的部分包含dataSource, transactionManager, processEngine和Flowable引擎服务.

将DataSource传递给SpringProcessEngineConfiguration时, Flowable在
org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy 内部使用包装传递的DataSource.

这样做是为了确保从DataSource和Spring事务检索到的SQL能够很好地协同工作. 这意味着它不再需要代理的数据源自己可以在Spring中配置.

虽然它仍然可能通过一个 TransactionAwareDataSourceProxy 进入 SpringProcessEngineConfiguration.



  
    
    
    
    
  

  
    
  

  
    
    
    
    
  

  
    
  

  
  
  
  
  

...

表达式

当使用 ProcessEngineFactoryBean时, 默认情况下, BPMN进程中的所有表达式将看到所有的Spring bean. 可以使用配置映射来限制要在表达式中显示的bean(甚至没有)


  ...
  
    
      
    
  



为了让所有的bean都不暴露, 只需在 SpringProcessEngineConfiguration 上传递一个空的列表作为beans属性. 当没有设置bean属性时, 上下文中的所有Spring bean都将可用.

现在, 可以在表达式中使用暴露的bean: 例如, hello.bpmn20.xml
显示了如何使用UEL方法表达式来调用Spring bean上的方法:



  

    
    

    
    

    

  



自动资源部署

Spring集成还具有用于部署资源的特殊功能. 在流程引擎配置中, 您可以指定一组资源. 在创建流程引擎时, 所有这些资源都将被扫描和部署.

有适当的过滤, 防止重复部署. 只有当资源实际发生变化时, 才会重新部署到Flowable DB.


  ...
  



  

默认情况下, 上面的配置会将与过滤器匹配的所有资源归入到Flowable引擎的单个部署中. 重复过滤防止重新部署不变的资源适用于整个部署.

在某些情况下, 这可能不是你想要的. 例如, 如果以这种方式部署一组流程资源, 并且这些资源中只有一个流程定义发生了变化, 则整个部署将被视为新的, 并且该部署中的所有流程定义将被重新部署.

为了能够自定义部署方式, 你可以指定一个附加属性SpringProcessEngineConfiguration, deploymentMode. 该属性定义了部署将从匹配过滤器的一组资源中查找. 这个属性默认支持3个值:
default: 将所有资源分组到一个部署中, 并对该部署重复过滤. 这是默认值.

single-resource: 为每个单独的资源创建一个单独的部署, 并对该部署重复过滤. 这时您将每个流程定义分开部署, 并且只有在流程定义版本已更改时才创建新流程定义版本.

resource-parent-folder: 为共享相同父文件夹的资源创建单独的部署, 并对该部署重复过滤. 可以使用此值为大多数资源创建单独的部署,但仍可以通过将其放置在共享文件夹中对其进行分组。以下是如何指定single-resource配置的示例deploymentMode:


  ...
  
  

你可能感兴趣的:(Flowable6-整合Spring)