本文章代码对应的版本springboot1.5.9,activiti6.0,开发工具idea.
官网文档地址http://www.mossle.com/docs/activiti/index.html
官网对应的activiti.war包可直接下载部署到tomcat上启动,但是对应项目自身的业务操作不能用给定的前端页面操作,所以需要对应的开发集成.
1.idea安装activiti插件actiBPM,安装重启
2.引入activiti对应的maven包
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0</version>
</dependency>
3.配置resources
server:
port: 8081
spring:
###datascource
datasource:
url: jdbc:mysql://127.0.0.1:3306/db_activiti?useUnicode=true&characterEncoding=utf-8
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
# type: com.alibaba.druid.pool.DruidDataSource
activiti:
database-schema-update: true
check-process-definitions: true
process-definition-location-prefix: classpath:/process/
history-level: full #配置流程记录级别 none activiti audit full
#db-history-used: true
db-identity-used: false
4.resources下新建文件夹process,右击新建.bpmn文件
5.拖拽右侧工具画流程(这里就不讲具体的使用)
6.创建后续所需的服务
- RepositoryService:提供一系列管理流程部署和流程定义的API。
- RuntimeService:在流程运行时对流程实例进行管理与控制。
- TaskService:对流程任务进行管理,例如任务提醒、任务完成和创建任务等。
- IdentityService:提供对流程角色数据进行管理的API,这些角色数据包括用户组、用户及它们之间的关系。
- ManagementService:提供对流程引擎进行管理和维护的服务。
- HistoryService:对流程的历史数据进行操作,包括查询、删除这些历史数据。
- FormService:表单服务。
@Configuration
public class ActivitiConfig {
@Value("${spring.activiti.database-schema-update}")
private String databaseSchemaUpdate;
@Value("${spring.activiti.db-identity-used}")
private boolean dbIdentityUsed;
@Value("${spring.datasource.url}")
private String dbUrl;
@Bean
public ProcessEngine processEngine(DataSourceTransactionManager transactionManager, DataSource dataSource) throws IOException {
SpringProcessEngineConfiguration configuration = new SpringProcessEngineConfiguration();
/**
* 自动部署已有的流程文件
* 作用相当于 (据bpmn文件部署流程repositoryService.createDeployment().addClasspathResource("singleAssignee.bpmn").deploy();)
*/
Resource[] resources = new PathMatchingResourcePatternResolver().getResources(ResourceLoader.CLASSPATH_URL_PREFIX + "processes/*.bpmn");
configuration.setTransactionManager(transactionManager);
//设置数据源
configuration.setDataSource(dataSource);
//是否每次都更新数据库
//configuration.setDatabaseSchemaUpdate(databaseSchemaUpdate);
configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE);
//configuration.setAsyncExecutorActivate(false);
configuration.setDeploymentResources(resources);
//设置是否使用activti自带的用户体系
configuration.setDbIdentityUsed(dbIdentityUsed);
return configuration.buildProcessEngine();
}
/**
* 工作流仓储服务
*
* @param processEngine
* @return
*/
@Bean
public RepositoryService repositoryService(ProcessEngine processEngine) {
return processEngine.getRepositoryService();
}
/**
* 工作流运行服务
*
* @param processEngine
* @return
*/
@Bean
public RuntimeService runtimeService(ProcessEngine processEngine) {
return processEngine.getRuntimeService();
}
/**
* 工作流任务服务
*
* @param processEngine
* @return
*/
@Bean
public TaskService taskService(ProcessEngine processEngine) {
return processEngine.getTaskService();
}
/**
* 工作流历史数据服务
*
* @param processEngine
* @return
*/
@Bean
public HistoryService historyService(ProcessEngine processEngine) {
return processEngine.getHistoryService();
}
/**
* 工作流管理服务
*
* @param processEngine
* @return
*/
@Bean
public ManagementService managementService(ProcessEngine processEngine) {
return processEngine.getManagementService();
}
/**
* 工作流唯一服务
*
* @param processEngine
* @return
*/
@Bean
public IdentityService identityService(ProcessEngine processEngine) {
return processEngine.getIdentityService();
}
}
7.启动类加对应注解(不加会出现报错,一大坑)
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
此时,启动服务,无保报错则启动成功.同时数据库会生成24张对应表,即完成基本的集成.
processEngine是流程引擎核心,整个流程的关键所在.下一节主要讲常用流程的实现.