Activiti整合到springMVC项目的详细配置

来源:互联网 发布:访客网络影响网速吗 编辑:程序博客网 时间:2024/05/29 15:43

注:本次教程全部在Activiti-5.16.4版本下测试通过
首先需要配置好springMVC的项目,这里就不再赘述,(有时间也会写一个springMVC简单教程),即在springMVC原有项目上添加Activiti工作流配置。

一、添加所需jar包

从官网上下载对应的版本,在里面找到Activiti所需jar包,这里我添加了Activiti提供的11个jar,分别为:

activiti-bpmn-converter-5.16.4.jaractiviti-bpmn-layout-5.16.4.jaractiviti-bpmn-model-5.16.4.jaractiviti-common-rest-5.16.4.jaractiviti-engine-5.16.4.jaractiviti-image-generator-5.16.4.jaractiviti-json-converter-5.16.4.jaractiviti-process-validation-5.16.4.jaractiviti-rest-5.16.4.jaractiviti-simple-workflow-5.16.4.jaractiviti-spring-5.16.4.jar

同时也需要如下5个jar包,

mybatis-3.2.5.jarslf4j-api-1.7.6.jarslf4j-log4j12-1.7.6.jarcommons-lang3-3.3.2.jarjoda-time-2.1.jar

全部拷贝到WEB-INF/lib目录下即可。

二、添加spring配置信息

在WEB-INF/applicationContext.xml配置文件中,添加如下代码:

<!-- spring负责创建流程引擎的配置文件 -->    <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">           <!-- 数据源 -->        <property name="dataSource" ref="dataSource2" />        <!-- 配置事务管理器,统一事务 -->        <property name="transactionManager" ref="transactionManager" />        <!-- 设置建表策略,如果没有表,自动创建表 -->        <property name="databaseSchemaUpdate" value="true" />        <!-- 是否启动jobExecutor -->         <!-- <property name="jobExecutorActivate"value="false" /> -->    </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"/> -->

解释:
其中dataSource2为activiti数据库(将在第三步详细介绍),建议单独管理,这样可以避免跟业务数据库中数据产生冲突,也方便流程数据的管理,只需再定义一个新的数据源即可,如下:

<bean id="dataSource2" class="org.springframework.jdbc.datasource.DriverManagerDataSource">        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>        <property name="url" value="jdbc:mysql://localhost:3306/activiti?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;zeroDateTimeBehavior=convertToNull&amp;transformedBitIsBoolean=true"></property>        <property name="username" value="root"></property>        <property name="password" value=""></property>     </bean>

其中transactionManager为spring统一事务管理,如果你使用的是Hibernate,定义如下:

<bean id="transactionManager"   class="org.springframework.orm.hibernate4.HibernateTransactionManager">        <property name="sessionFactory" ref="sessionFactory"></property></bean>

如果使用的是spring-jpa,定义如下:

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">          <property name="entityManagerFactory" ref="entityManagerFactory" />  </bean>

三、创建activiti数据库

从官网下载并解压的文件中找到database文件下的各类数据库脚本,这里用的是mysql数据库,所以把其中mysql的脚本拷贝出来,新建一个mysql数据库,名为activiti,分别运行

activiti.mysql.create.engine.sqlactiviti.mysql.create.identity.sqlactiviti.mysql.create.history.sql

这三个sql脚本,它们分别创建了12张、4张、8张表,共24张表格,请核对是否全部创建成功。
注:可能是因为mysql版本或者其它原因,创建datetime格式的字段时不能有长度定义,所以需要把上述三个sql脚本中的datetime(3)改为datetime,另外把activiti.mysql.create.engine.sql中的CURRENT_TIMESTAMP(3)改为CURRENT_TIMESTAMP

四、单元测试

public static void main(String[] args) {        // 1.创建Activiti配置对象的实例        ProcessEngineConfiguration configuration = ProcessEngineConfiguration                .createStandaloneProcessEngineConfiguration();        // 2.设置数据库连接信息        // 设置数据库地址        configuration                .setJdbcUrl("jdbc:mysql://localhost:3306/activiti?createDatabaseIfNotExist&amp;useUnicode=true&amp;characterEncoding=utf8");        // 数据库驱动        configuration.setJdbcDriver("com.mysql.jdbc.Driver");        // 用户名        configuration.setJdbcUsername("root");        // 密码        configuration.setJdbcPassword("");        // 设置数据库建表策略        /**         * 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);    }

运行无异常即说明Activiti已整合到springMVC中。

0 0
原创粉丝点击