一:activiti简介
二:activiti使用
1.IDEA使用activiti 插件(用于绘制流程图)
在IDEA安装activiti插件
在resource目录下新建actiBPM文件
绘制*.bpmn文件:
改名为*.xml文件,并打开:
生成*.png图片:
2.示例springboot集成activiti
添加数据库连接配置:
spring.datasource.driverClassName = com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://172.18.179.131:3306/mysql spring.datasource.username = root spring.datasource.password = root spring.datasource.max-active=20 spring.datasource.max-idle=8 spring.datasource.min-idle=8 spring.datasource.initial-size=10
添加pom依赖:
<!--activiti依赖--> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring</artifactId> <version>6.0.0</version> </dependency> <!--mysql驱动依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <!--连接池依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.19</version> </dependency>
添加数据库连接池初始化:
package com.zcx.springstudy.config; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.core.env.Environment; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource;
@Configuration public class DruidConfiguration { @Autowired Environment env; /** * 数据源:配置DruidDataSource * @return */ @Bean public DataSource dataSource() { DruidDataSource ds = new DruidDataSource(); ds.setUrl(env.getProperty("spring.datasource.url")); ds.setDriverClassName(env.getProperty("spring.datasource.driverClassName")); ds.setPassword(env.getProperty("spring.datasource.password")); ds.setUsername(env.getProperty("spring.datasource.username")); ds.setInitialSize(2);//初始化时建立物理连接的个数 ds.setMaxActive(20);//最大连接池数量 ds.setMinIdle(0);//最小连接池数量 ds.setMaxWait(60000);//获取连接时最大等待时间,单位毫秒。 ds.setValidationQuery("SELECT 1");//用来检测连接是否有效的sql ds.setTestOnBorrow(false);//申请连接时执行validationQuery检测连接是否有效 ds.setTestWhileIdle(true);//建议配置为true,不影响性能,并且保证安全性。 ds.setPoolPreparedStatements(false);//是否缓存preparedStatement,也就是PSCache return ds; } /** * 事务:配置DataSourceTransactionManager * @param dataSource * @return */ @Bean("dataSourceTransactionManager") public DataSourceTransactionManager dataSourceTransactionManager(DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } }
添加acitiviti引擎及自动部署:
package com.zcx.springstudy.config; import org.activiti.engine.*; import org.activiti.spring.SpringProcessEngineConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource; import java.io.IOException; @Configuration public class ActivitiConfuguration { @Bean public ProcessEngine processEngine(DataSourceTransactionManager transactionManager, DataSource dataSource) throws IOException { SpringProcessEngineConfiguration configuration = new SpringProcessEngineConfiguration(); //自动部署已有的流程文件 Resource[] resources = new PathMatchingResourcePatternResolver().getResources(ResourceLoader.CLASSPATH_URL_PREFIX + "diagrams/*.png"); configuration.setTransactionManager(transactionManager); configuration.setDataSource(dataSource); configuration.setDatabaseSchemaUpdate("true"); configuration.setDeploymentResources(resources); configuration.setDbIdentityUsed(false); return configuration.buildProcessEngine(); } @Bean public RepositoryService repositoryService(ProcessEngine processEngine) { return processEngine.getRepositoryService(); } @Bean public RuntimeService runtimeService(ProcessEngine processEngine) { return processEngine.getRuntimeService(); } @Bean public TaskService taskService(ProcessEngine processEngine) { return processEngine.getTaskService(); } @Bean public HistoryService historyService(ProcessEngine processEngine) { return processEngine.getHistoryService(); } @Bean public ManagementService managementService(ProcessEngine processEngine) { return processEngine.getManagementService(); } @Bean public IdentityService identityService(ProcessEngine processEngine) { return processEngine.getIdentityService(); } }
启动类:
package com.zcx.springstudy; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController @MapperScan("com.zcx.springstudy") public class SpringStudyApplication { public static void main(String[] args) { SpringApplication.run(SpringStudyApplication.class, args); } }