目錄
--2.SpringBoot集成Activiti(使用starter)
--3.SpringBoot集成Activiti(手動創建@Configuration配置類)
1>修改pom.xml
<activiti.version>6.0.0</activiti.version> <!-- activiti集成 --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>${activiti.version}</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring</artifactId> <version>${activiti.version}</version> </dependency>
2>創建application-activiti.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"> <!-- 注入數據源 --> <property name="dataSource" ref="dataSource"></property> <!-- 把事務交給spring 去管理 --> <property name="transactionManager" ref="transactionManager" /> <!-- flase: 默認值。activiti在啟動時,會對比數據庫表中保存的版本,如果沒有表或者版本不匹配,將拋出異常。 true: activiti會對數據庫中所有表進行更新操作。如果表不存在,則自動創建。 create_drop: 在activiti啟動時創建表,在關閉時刪除表(必須手動關閉引擎,才能刪除表)。 drop-create: 在activiti啟動時刪除原來的舊表,然后在創建新表(不需要手動關閉引擎)。 --> <property name="databaseSchemaUpdate" value="true"></property> </bean> <!-- 創建流程引擎對象 --> <bean id="processEngine" class="org.activiti.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="formService" factory-bean="processEngine" factory-method="getFormService" /> <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" /> <bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" /> <bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService" /> </beans>
3>啟動項目測試
25張表建立
2.SpringBoot集成Activiti(使用starter方式)
1>修改pom.xml
<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId> <version>6.0.0</version> </dependency>
2>修改application.yml配置環境變量
activiti:
database-schema-update: true
process-definition-location-prefix: "classpath*:/processes/*.bpmn"
history-level: full
db-history-used: true #配置生成history表,默認false,只會生成17張表
3>創建配置類
@Configuration public class ActivitiConfig extends AbstractProcessEngineAutoConfiguration { @Bean @Primary @ConfigurationProperties(prefix = "spring.datasource") public DataSource activitiDataSource() { return DataSourceBuilder.create().build(); } @Bean public SpringProcessEngineConfiguration springProcessEngineConfiguration( PlatformTransactionManager transactionManager, SpringAsyncExecutor springAsyncExecutor) throws IOException { return baseSpringProcessEngineConfiguration( activitiDataSource(), transactionManager, springAsyncExecutor); }
4>修改啟動類
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class})
public class ErpApplication {
public static void main(String[] args) {
SpringApplication.run(ErpApplication.class, args);
}
}
3.SpringBoot集成Activiti(使用配置類方式)
1>修改pom.xml
<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>6.0.0</version> <dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring</artifactId> <version>6.0.0</version> <dependency>
2>創建配置類
@Configuration public class ActivitiConfiguration { @Autowired private DataSource dataSource; @Autowired private PlatformTransactionManager platformTransactionManager; @Bean public SpringProcessEngineConfiguration springProcessEngineConfiguration(){ SpringProcessEngineConfiguration spec = new SpringProcessEngineConfiguration(); spec.setDataSource(dataSource); spec.setTransactionManager(platformTransactionManager); spec.setDatabaseSchemaUpdate("true"); Resource[] resources = null; // 啟動自動部署流程 try { resources = new PathMatchingResourcePatternResolver().getResources("classpath*:bpmn/*.bpmn"); } catch (IOException e) { e.printStackTrace(); } spec.setDeploymentResources(resources); return spec; } @Bean public ProcessEngineFactoryBean processEngine(){ ProcessEngineFactoryBean processEngineFactoryBean = new ProcessEngineFactoryBean(); processEngineFactoryBean.setProcessEngineConfiguration(springProcessEngineConfiguration()); return processEngineFactoryBean; } @Bean public RepositoryService repositoryService() throws Exception{ return processEngine().getObject().getRepositoryService(); } @Bean public RuntimeService runtimeService() throws Exception{ return processEngine().getObject().getRuntimeService(); } @Bean public TaskService taskService() throws Exception{ return processEngine().getObject().getTaskService(); } @Bean public HistoryService historyService() throws Exception{ return processEngine().getObject().getHistoryService(); } }
參考資料:
https://blog.csdn.net/yage124/article/details/103097696
https://www.jianshu.com/p/77fa5f932f4f
https://blog.csdn.net/weixin_38023579/article/details/103476955