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 自动部署资源》