(1). 概述
在前面,CamundaBpmAutoConfiguration类上有配置一个Properties,固名思义:这是一个配置类,由于:配置类是我们的研发常用的基本信息,所以,可以把它理解成业务模型,通过配置项,我们可以对Caunda进行一些开关配置.
(2). CamundaBpmProperties
package org.camunda.bpm.spring.boot.starter.property;
// camunda.bpm
@ConfigurationProperties(CamundaBpmProperties.PREFIX)
public class CamundaBpmProperties {
	public static final String PREFIX = "camunda.bpm";
	public static final String UNIQUE_ENGINE_NAME_PREFIX = "processEngine";
	public static final String UNIQUE_APPLICATION_NAME_PREFIX = "processApplication";
	public static final String[] DEFAULT_BPMN_RESOURCE_SUFFIXES = new String[]{"bpmn20.xml", "bpmn" };
	public static final String[] DEFAULT_CMMN_RESOURCE_SUFFIXES = new String[]{"cmmn11.xml", "cmmn10.xml", "cmmn" };
	public static final String[] DEFAULT_DMN_RESOURCE_SUFFIXES = new String[]{"dmn11.xml", "dmn" };
	// ***************************************************************************
	// 定义默认的部署的资源路径表达式
	// ***************************************************************************
	static String[] initDeploymentResourcePattern() {
		final Set<String> suffixes = new HashSet<>();
		// "dmn11.xml", "dmn"
		suffixes.addAll(Arrays.asList(DEFAULT_DMN_RESOURCE_SUFFIXES));
		// "bpmn20.xml", "bpmn"
		suffixes.addAll(Arrays.asList(DEFAULT_BPMN_RESOURCE_SUFFIXES));
		// "cmmn11.xml", "cmmn10.xml", "cmmn" 
		suffixes.addAll(Arrays.asList(DEFAULT_CMMN_RESOURCE_SUFFIXES));
		final Set<String> patterns = new HashSet<>();
		for (String suffix : suffixes) {
		  patterns.add(String.format("%s**/*.%s", CLASSPATH_ALL_URL_PREFIX, suffix));
		}
		return patterns.toArray(new String[patterns.size()]);
	} // end initDeploymentResourcePattern
	static StringJoiner joinOn(final Class<?> clazz) {
	  return new StringJoiner(", ", clazz.getSimpleName() + "[", "]");
	}
	public static String getUniqueName(String name) {
	  return name + RandomStringUtils.randomAlphanumeric(10);
	}
	//
	private String processEngineName = ProcessEngines.NAME_DEFAULT;
	private Boolean generateUniqueProcessEngineName = false;
	private Boolean generateUniqueProcessApplicationName = false;
	
	private String idGenerator = IdGeneratorConfiguration.STRONG;
	private Boolean jobExecutorAcquireByPriority = null;
	private Integer defaultNumberOfRetries = null;
	/**
	* the history level to use
	*/
	private String historyLevel = ProcessEngineConfiguration.HISTORY_FULL;
	/**
	* the default history level to use when 'historyLevel' is 'auto'
	*/
	private String historyLevelDefault = ProcessEngineConfiguration.HISTORY_FULL;
	/** 启用自动部署(默认会对:"bpmn20.xml", "bpmn" , "cmmn11.xml", "cmmn10.xml", "cmmn" , "dmn11.xml", "dmn")进行部署
	* enables auto deployment of processes
	*/
	private boolean autoDeploymentEnabled = true;
	/**
	 * 定这句话默认的资源路径
	* resource pattern for locating process sources
	*/
	private String[] deploymentResourcePattern = initDeploymentResourcePattern();
	/**
	* default serialization format to use
	*/
	private String defaultSerializationFormat = Defaults.INSTANCE.getDefaultSerializationFormat();
	private URL licenseFile;
	/**
	 * camunda是否启用
	* deactivate camunda auto configuration
	*/
	private boolean enabled = true;
	/**
	 * metrics与监控相关
	* metrics configuration
	*/
	@NestedConfigurationProperty
	private MetricsProperty metrics = new MetricsProperty();
	/**
	 * 数据库配置
	 * 主要用于配置:schmea/tablePrefix/
	* database configuration
	*/
	@NestedConfigurationProperty
	private DatabaseProperty database = new DatabaseProperty();
	/**
	* 配置事件监听(execution/task/history)
	* Spring eventing configuration
	*/
	@NestedConfigurationProperty
	private EventingProperty eventing = new EventingProperty();
	/**
	* JPA configuration
	*/
	@NestedConfigurationProperty
	private JpaProperty jpa = new JpaProperty();
	/**
	*  定时任务信息配置
	*  corePoolSize/maxPoolSize/queueCapacity/keepAliveSeconds/deploymentAware
	* job execution configuration
	*/
	@NestedConfigurationProperty
	private JobExecutionProperty jobExecution = new JobExecutionProperty();
	/**
	* webapp configuration
	* 定义web的静态文件路径
	*/
	@NestedConfigurationProperty
	private WebappProperty webapp = new WebappProperty();
	@NestedConfigurationProperty
	private AuthorizationProperty authorization = new AuthorizationProperty();
	// ***************************************************************
	// 扩展性属,允许通过map对SpringProcessEngineConfiguration对象的属性进行应用
	// ***************************************************************
	@NestedConfigurationProperty
	private GenericProperties genericProperties = new GenericProperties();
	
	// 管理员配置信息
	// camunda:
	//   bpm:
	//     admin-user:
	//       id: admin
	//       password: admin
	@NestedConfigurationProperty
	private AdminUserProperty adminUser = new AdminUserProperty();
	@NestedConfigurationProperty
	private FilterProperty filter = new FilterProperty();
}  
(3). 总结
CamundaBpmProperties代表我们开发人员,可以配置的一些配置信息,Camunda能够给我们的配置我基本都写了注释.
