Activiti 5.17 使用Spring加载配置文件。
实现的方法在 org.activiti.engine.impl.cfg.BeansConfigurationHelper 类中。
public static ProcessEngineConfiguration parseProcessEngineConfiguration(Resource springResource, String beanName) { DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader xmlBeanDefinitionReader = new XmlBeanDefinitionReader(beanFactory); xmlBeanDefinitionReader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_XSD); xmlBeanDefinitionReader.loadBeanDefinitions(springResource); ProcessEngineConfigurationImpl processEngineConfiguration = (ProcessEngineConfigurationImpl) beanFactory.getBean(beanName); processEngineConfiguration.setBeans(new SpringBeanFactoryProxyMap(beanFactory)); return processEngineConfiguration; }
然后,用 XmlBeanDefinitionReader 加载 activiti.cfg.xml 引擎的配置文件;
从 beanFactory 中通过beanName 获得 processEngineConfiguration 的实例 (这里 beanName = "processEngineConfiguration" 参见前面文章中的 activiti.cfg.xml的内容),
并将 beanFactory 赋给 processEngineConfiguration。
这样,在 processEngineConfiguration 中就可以通过beanFactory直接获取配置文件中的bean。
Activiti 利用Spring 的几行代码,完成了类的配置、加载和获取操作。