盘古BPM体验地址    盘古BPM交流群盘古BPM交流群号:963222735

《Flowable基础二十 Flowable 自动部署资源》

分享牛 4632℃

Flowable 自动部署资源

    集成Spring还提供了部署资源的特殊方式。在流程引擎配置中,可以指定一组资源。当流程引擎被创建时,这些资源都会被扫描并部署。有过滤器用于阻止重复部署。只有当资源确实发生变化时,才会重新部署至Flowable数据库。在Spring容器经常重启(例如测试时)的时候,这很有用。

这里有个例子:

<bean id="processEngineConfiguration" class="org.flowable.spring.SpringProcessEngineConfiguration">
  ...  <property name="deploymentResources"
    value="classpath*:/org/flowable/spring/test/autodeployment/autodeploy.*.bpmn20.xml" />
</bean>
<bean id="processEngine" class="org.flowable.spring.ProcessEngineFactoryBean">
  <property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>

    默认情况下,这个配置会将符合这个过滤器的所有资源组织在一起,作为Flowable引擎的一个部署。重复检测过滤器将作用于整个部署,避免重复地部署未改变资源。有时这不是你想要的。例如,如果用这种方式部署了一组资源,即使只有其中的一个资源发生了改变,整个部署都会被认为已经改变,因此这个部署中所有的所有流程定义都会被重新部署。这将导致每个流程定义都会刷新版本号(流程定义id会变化),即使实际上只有一个流程发生了变化。

可以使用SpringProcessEngineConfiguration中的额外参数+deploymentMode+,定制部署的选择方式。这个参数定义了在一组符合过滤器的资源中,组织部署的方式。默认这个参数有3个可用值:

  • default: 将所有资源组织在一个部署中,整体用于重复检测过滤。这是默认值,在未设置这个参数时也会用这个值。

  • single-resource: 为每个资源创建一个单独的部署,并用于重复检测过滤。当你希望单独部署每一个流程定义,并且在它发生变化时创建新的流程定义版本,应该使用这个值。

  • resource-parent-folder: 为同一个目录下的资源创建一个单独的部署,并用于重复检测过滤。这个参数值可以为大多数资源创建独立的部署。同时仍可以通过将部分资源放在同一个目录下,将它们组织在一起。这里有一个将deploymentMode设置为single-resource的例子:

<bean id="processEngineConfiguration"     class="org.flowable.spring.SpringProcessEngineConfiguration"> 
  ...   <property name="deploymentResources" value="classpath*:/flowable/*.bpmn" />  
   <property name="deploymentMode" value="single-resource" /> </bean>

如果上述deploymentMode的参数值不能满足要求,还可以自定义组织部署的行为。创建SpringProcessEngineConfiguration的子类,并覆盖getAutoDeploymentStrategy(String deploymentMode)方法。这个方法决定了对于给定的deploymentMode参数值,使用何种部署策略。


这个策略配置是新的特性,非常的不错,5.x版本并你没有该功能。

转载请注明:分享牛 » 《Flowable基础二十 Flowable 自动部署资源》