最近因为工作需要,在学习Activiti,记下相关笔记,方便日后查询,如有错误请指出,共同进步。
相关资料:Activiti用户手册学习,Activiti整合到springMVC项目的详细配置,Activiti源码
先准备一个springmvc项目,然后下载Activiti安装包,然后解压,将解压文件下的libs目录包都导入springmvc项目里(记得先复制到WEB-INF/lib目录里再导入到项目里,不然启动可能会报ClassNOtFoundException)。
同时还需要一些额外的依赖:
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.7</version>
</dependency>
<!-- jackson-core-2.7.0.jar、jackson-databind-2.7.0.jar -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
<version>2.3.0-rc1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
依赖导入完之后就是配置:
先在/WEB-INF/spring/目录下加一个xml文件,spring-activiti.cfg.xml(我也是刚开始学,这个配置文件名我也不知道是不是有什么要求)
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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">
<!-- 注意使用的 processEngineConfiguration bean 是 org.activiti.spring.SpringProcessEngineConfiguration 类。 -->
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
<!-- 设置建表策略,如果没有表,自动创建表 -->
<property name="databaseSchemaUpdate" value="true" />
<!-- 指定数据库类型 -->
<property name="databaseType" value="mssql" />
<!-- 数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 配置事务管理器,统一事务 -->
<property name="transactionManager" ref="transactionManager" />
</bean>
<!-- mybatis事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- mybatis配置数据源 -->
<!--定义一个jdbc数据源,创建一个驱动管理数据源的bean -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/activity?createDatabaseIfNotExist&useUnicode=true&characterEncoding=utf8" />
<property name="username" value="******" />
<property name="password" value="******" />
</bean>
<!-- 创建流程引擎对象 -->
<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>
<!-- 创建activiti提供的各种服务 -->
<!-- 工作流仓储服务 -->
<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="historyService" factory-bean="processEngine" factory-method="getHistoryService" />
<!-- 工作流管理服务-->
<bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" />
<bean id="formService" factory-bean="processEngine" factory-method="getFormService" />
<!-- 工作流唯一服务 -->
<!-- <bean id="IdentityService"factory-bean="processEngine"factory-method="getIdentityService"/> -->
</beans>
然后在web.xml里加上这个配置
<!-- 指定核心文件文件位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml,/WEB-INF/spring/spring-activiti.cfg.xml</param-value>
</context-param>
然后是Activiti的数据库,我用的是mysql数据库,建表语句在Activiti解压过的activiti-5.22.0\database\create文件夹里,里面有各种数据库的建表语句:
这些做完之后可以用main方法测试一下:
// 1.创建Activiti配置对象的实例
ProcessEngineConfiguration configuration = ProcessEngineConfiguration
.createStandaloneProcessEngineConfiguration();
// 2.设置数据库连接信息
// 设置数据库地址
configuration
.setJdbcUrl("jdbc:mysql://localhost:3306/activitymysql?createDatabaseIfNotExist&useUnicode=true&characterEncoding=utf8");
// 数据库驱动
configuration.setJdbcDriver("com.mysql.jdbc.Driver");
// 用户名
configuration.setJdbcUsername("root");
// 密码
configuration.setJdbcPassword("chenyong");
// 设置数据库建表策略
/**
* DB_SCHEMA_UPDATE_TRUE:如果不存在表就创建表,存在就直接使用
* DB_SCHEMA_UPDATE_FALSE:如果不存在表就抛出异常
* DB_SCHEMA_UPDATE_CREATE_DROP:每次都先删除表,再创建新的表
*/
/* configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);*/
// 3.使用配置对象创建流程引擎实例(检查数据库连接等环境信息是否正确)
ProcessEngine processEngine = configuration.buildProcessEngine();
System.out.println(processEngine);
如果能正常打印,并且能在tomcat启动应该就可以了。