Configure isDeployChangedOnly for embedded engine in Spring

Thank you thorben, your answer was very helpful.

I extend existing SpringProcessEngineConfiguration to add property deployChangedOnly and override method autoDeployResources.

Here is example of final configuration:

<bean id="processEngineConfiguration" class="com.my.ProcessEngineConfiguration">
	<property name="processEngineName" value="default" />
	<property name="dataSource" ref="processEngineDS" />
	<property name="transactionManager" ref="blTransactionManager" />
	<property name="history" value="full" />
	<property name="databaseSchemaUpdate" value="noop" />
	<property name="deploymentResources" value="classpath*:process/*.bpmn" />
	<property name="deployChangedOnly" value="true" />
	<property name="authorizationEnabled" value="true" />
	<property name="jobExecutorActivate" value="true" />
	<property name="jobExecutorDeploymentAware" value="false" />
	<property name="idGenerator">
		<bean class="org.camunda.bpm.engine.impl.persistence.StrongUuidGenerator" />
	</property>
</bean>

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

<bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" />
<bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService" />
<bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" />
<bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" />
<bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" />

My SpringProcessEngineConfiguration class:

public class ProcessEngineConfiguration extends SpringProcessEngineConfiguration {
    protected boolean deployChangedOnly;
    
    protected void autoDeployResources(ProcessEngine processEngine) {
        if (deploymentResources!=null && deploymentResources.length>0) {
          RepositoryService repositoryService = processEngine.getRepositoryService();

          DeploymentBuilder deploymentBuilder = repositoryService
            .createDeployment()
            .enableDuplicateFiltering(deployChangedOnly)
            .name(deploymentName)
            .tenantId(deploymentTenantId);

...
see method SpringProcessEngineConfiguration.autoDeployResources
...
      }

    public boolean isDeployChangedOnly() {
        return deployChangedOnly;
    }

    public void setDeployChangedOnly(boolean deployChangedOnly) {
        this.deployChangedOnly = deployChangedOnly;
    }
}
3 Likes