001 | package org.activiti.explorer.conf; |
003 | import java.sql.Driver; |
004 | import java.util.ArrayList; |
005 | import java.util.List; |
007 | import javax.sql.DataSource; |
009 | import org.activiti.engine.FormService; |
010 | import org.activiti.engine.HistoryService; |
011 | import org.activiti.engine.IdentityService; |
012 | import org.activiti.engine.ManagementService; |
013 | import org.activiti.engine.ProcessEngine; |
014 | import org.activiti.engine.RepositoryService; |
015 | import org.activiti.engine.RuntimeService; |
016 | import org.activiti.engine.TaskService; |
017 | import org.activiti.engine.form.AbstractFormType; |
018 | import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl; |
019 | import org.activiti.explorer.form.MonthFormType; |
020 | import org.activiti.explorer.form.ProcessDefinitionFormType; |
021 | import org.activiti.explorer.form.UserFormType; |
022 | import org.activiti.spring.ProcessEngineFactoryBean; |
023 | import org.activiti.spring.SpringProcessEngineConfiguration; |
024 | import org.apache.commons.lang3.StringUtils; |
025 | import org.slf4j.Logger; |
026 | import org.slf4j.LoggerFactory; |
027 | import org.springframework.beans.factory.annotation.Autowired; |
028 | import org.springframework.context.annotation.Bean; |
029 | import org.springframework.context.annotation.Configuration; |
030 | import org.springframework.core.env.Environment; |
031 | import org.springframework.jdbc.datasource.DataSourceTransactionManager; |
032 | import org.springframework.jdbc.datasource.SimpleDriverDataSource; |
033 | import org.springframework.transaction.PlatformTransactionManager; |
036 | public class ActivitiEngineConfiguration { |
038 | private final Logger log = LoggerFactory.getLogger(ActivitiEngineConfiguration. class ); |
041 | protected Environment environment; |
044 | public DataSource dataSource() { |
045 | SimpleDriverDataSource ds = new SimpleDriverDataSource(); |
048 | @SuppressWarnings ( "unchecked" ) |
049 | Class<? extends Driver> driverClass = (Class<? extends Driver>) Class.forName(environment.getProperty( "jdbc.driver" , "org.h2.Driver" )); |
050 | ds.setDriverClass(driverClass); |
052 | } catch (Exception e) { |
053 | log.error( "Error loading driver class" , e); |
057 | ds.setUrl(environment.getProperty( "jdbc.url" , "jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" )); |
058 | ds.setUsername(environment.getProperty( "jdbc.username" , "sa" )); |
059 | ds.setPassword(environment.getProperty( "jdbc.password" , "" )); |
064 | @Bean (name = "transactionManager" ) |
065 | public PlatformTransactionManager annotationDrivenTransactionManager() { |
066 | DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(); |
067 | transactionManager.setDataSource(dataSource()); |
068 | return transactionManager; |
071 | @Bean (name= "processEngineFactoryBean" ) |
072 | public ProcessEngineFactoryBean processEngineFactoryBean() { |
073 | ProcessEngineFactoryBean factoryBean = new ProcessEngineFactoryBean(); |
074 | factoryBean.setProcessEngineConfiguration(processEngineConfiguration()); |
078 | @Bean (name= "processEngine" ) |
079 | public ProcessEngine processEngine() { |
083 | return processEngineFactoryBean().getObject(); |
084 | } catch (Exception e) { |
085 | throw new RuntimeException(e); |
089 | @Bean (name= "processEngineConfiguration" ) |
090 | public ProcessEngineConfigurationImpl processEngineConfiguration() { |
091 | SpringProcessEngineConfiguration processEngineConfiguration = new SpringProcessEngineConfiguration(); |
092 | processEngineConfiguration.setDataSource(dataSource()); |
093 | processEngineConfiguration.setDatabaseSchemaUpdate(environment.getProperty( "engine.schema.update" , "true" )); |
094 | processEngineConfiguration.setTransactionManager(annotationDrivenTransactionManager()); |
095 | processEngineConfiguration.setJobExecutorActivate(Boolean.valueOf( |
096 | environment.getProperty( "engine.activate.jobexecutor" , "false" ))); |
097 | processEngineConfiguration.setAsyncExecutorEnabled(Boolean.valueOf( |
098 | environment.getProperty( "engine.asyncexecutor.enabled" , "true" ))); |
099 | processEngineConfiguration.setAsyncExecutorActivate(Boolean.valueOf( |
100 | environment.getProperty( "engine.asyncexecutor.activate" , "true" ))); |
101 | processEngineConfiguration.setHistory(environment.getProperty( "engine.history.level" , "full" )); |
103 | String mailEnabled = environment.getProperty( "engine.email.enabled" ); |
104 | if ( "true" .equals(mailEnabled)) { |
105 | processEngineConfiguration.setMailServerHost(environment.getProperty( "engine.email.host" )); |
106 | int emailPort = 1025 ; |
107 | String emailPortProperty = environment.getProperty( "engine.email.port" ); |
108 | if (StringUtils.isNotEmpty(emailPortProperty)) { |
109 | emailPort = Integer.valueOf(emailPortProperty); |
111 | processEngineConfiguration.setMailServerPort(emailPort); |
112 | String emailUsernameProperty = environment.getProperty( "engine.email.username" ); |
113 | if (StringUtils.isNotEmpty(emailUsernameProperty)) { |
114 | processEngineConfiguration.setMailServerUsername(emailUsernameProperty); |
117 | String emailPasswordProperty = environment.getProperty( "engine.email.password" ); |
118 | if (StringUtils.isNotEmpty(emailPasswordProperty)) { |
119 | processEngineConfiguration.setMailServerPassword(emailPasswordProperty); |
123 | List<AbstractFormType> formTypes = new ArrayList<AbstractFormType>(); |
124 | formTypes.add( new UserFormType()); |
125 | formTypes.add( new ProcessDefinitionFormType()); |
126 | formTypes.add( new MonthFormType()); |
127 | processEngineConfiguration.setCustomFormTypes(formTypes); |
129 | return processEngineConfiguration; |
133 | public RepositoryService repositoryService() { |
134 | return processEngine().getRepositoryService(); |
138 | public RuntimeService runtimeService() { |
139 | return processEngine().getRuntimeService(); |
143 | public TaskService taskService() { |
144 | return processEngine().getTaskService(); |
148 | public HistoryService historyService() { |
149 | return processEngine().getHistoryService(); |
153 | public FormService formService() { |
154 | return processEngine().getFormService(); |
158 | public IdentityService identityService() { |
159 | return processEngine().getIdentityService(); |
163 | public ManagementService managementService() { |
164 | return processEngine().getManagementService(); |