activiti学习(二十二)

126 阅读2分钟

image.png 持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情

Activiti的使用

Activiti的自动部署机制。

自动部署资源

Activiti和Spring集成还有一个用于自动部署资源的功能。在Process Engine配置中,可以配置一组资源用于自动部署。创建流程引擎时,Activiti会扫描并部署我们配置的这些资源。我们也可以配置防止重复部署。只有当资源实际发生更改时,才会将新的资源部署到Activiti的数据库当中。这个功能有时候对我们很有用,因为Spring容器经常重新启动(例如测试的时候,可以自动部署一些测试资源)。
如下是一个配置的例子:

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

<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
  <property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>

默认情况下,上面的配置会把匹配的所有资源以分组的形式发布到Activiti引擎的单个部署中。防止重新部署未更改资源的适用于整个部署。在某些情况下,我们可能不希望重新部署整个资源。例如,如果以这种方式部署一组流程资源,而这些资源中只有一个流程定义发生了更改,则整个部署将被视为新的,并且该部署中的所有流程定义都将重新部署,从而生成每个流程定义的新版本,即使实际上只有一个流程定义发生了更改。
为了能够确定自定义部署,我们可以在SpringProcessEngineConfiguration中指定一个额外的属性deploymentMode。此属性定义从与筛选器匹配的资源集确定部署的方式。此属性默认支持3个值:

  • default:将所有资源分组到单个部署中,并对该部署应用重复检查。这是默认值,如果未指定值,将使用该值。
  • single-resource:为每个单独的资源创建单独的部署,并对该部署应用重复检查。将用于单独部署每个流程定义的值,并且仅在流程定义发生更改时创建新的流程定义版本。
  • resource-parent-folder:为共享同一父文件夹的资源创建单独的部署,并对该部署应用重复检查。这个值可用于为大多数资源创建单独的部署,但仍可以通过将一些资源放置在共享文件夹中对其进行分组。