SSM整合Activiti
我们简单回顾一下;
经过前面对工作流流程:从部署,启动,再到完成以及完成之后不同人员的审批处理
工作流当中流程变量的使用,压缩包的部署方式,排他性网关以及并行网关;
经过这些介绍,相比大家已经对工作流不陌生了,今天我们就来将它整合到我们的Spring当中。
同样我们应该创建项目;
需要导入的依赖有,SSM的核心依赖包,文件上传,,Activiti的依赖,此外我们应该在</plugins>,当中加入一个指定字符的设置,代码如下所示:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin>
在完成了上述操作之后,我们就完成了项目环境的搭建,
之后我们需要的配置文件有,SSM的核心配置文件,Activiti的核心配置文件,日志文件,以及Mybatis的自动生成插件,下面主要对工作流的配置文件进行介绍,以及在其它文件当中的一些相关的操作:
首先来看工作流的核心配置文件:
<?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"> <!-- 创建一个流程引擎的配置对象 这里我们使用的是Spring提供的流程引擎对象--> <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"> <property name="dataSource" ref="dataSource"></property> <property name="transactionManager" ref="transactionManager"></property> <!-- 设置数据库schema的更新方式 --> <property name="databaseSchemaUpdate" value="true"/> <!-- 是否启动jobExecutor --> <property name="jobExecutorActivate" value="false"/> 解释一下这里为什么设置这个:
原因是:
job executor activation JobExecutor是一个管理一系列激活timer和异步消息的线程的组件。在单元测试里可以使用ManagementService.createJobQuery查询线程,使用ManagementService.executeJob执行线程的方法。 默认情况下JobExecutor在流程引擎启动的时候激活状态。可以通过以下方式关闭。 <property name="jobExecutorActivate" value="false" />
因为我们要将其交给Spring来管理所以应该将他自己管理关闭,所以我们设置为false;
<!--配置邮件服务器--> </bean> <!-- 创建一个流程引擎bean --> <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean"> <property name="processEngineConfiguration" ref="processEngineConfiguration"/> </bean> <!--定义Service服务--> <!-- 工作流仓储服务 --> <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="identityService" factory-bean="processEngine" factory-method="getIdentityService"/> <bean id="formService" factory-bean="processEngine" factory-method="getFormService"></bean> </beans>
之后我们来说一下,关于这个配置文件的相关配置有两种方式,模糊搜索和直接:
首先是模糊搜索:
我们在web.xml当中我们来这只模糊查找:
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext*.xml</param-value> </init-param> </servlet>
我们在配置前端控制器的时候指定加载的文件指定为模糊查找的*,但是用了这种方法,我们就必须将工作流的配置文件改为AppllicationContext开头的文件,虽然是我们将它整合进入SSM,各种的服务对象都是由spring提供好的,但当名字变了以后我们就不能再用默认加载配置文件的方式去获取流程引擎对象了,虽然说我们再整个项目单中不会用到流程引擎对象(l流程引擎对象是由Spring产生并创建好了各种服务类以供使用),但是你要创建工作流的表除了将之前创建的复制过来的方法之外,就是使用下面的方式来创建:
@Test public void cc(){ //得到流程引擎的方式一 ProcessEngineConfiguration pec = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration(); pec.setJdbcUrl("jdbc:mysql://localhost:3306/yunplatform?characterEncoding=utf-8"); pec.setJdbcDriver("com.mysql.jdbc.Driver"); pec.setJdbcUsername("root"); pec.setJdbcPassword("root2"); pec.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); ProcessEngine processEngine = pec.buildProcessEngine(); }
可以创建一个测试类去创建这些表,就不用卸载,正文当中了;
但是这样创建的表是空表,你若是要之前的数据,小编建议还是复制过来的好;
第二种方式就是直接导入:
这种方法不用改名称,只需要再SSM的核心配置文件当中敲入以下语句即可:
<!-- 加入工作流的单独配置 --> <import resource="applicationContext-activiti.xml"></import>
这儿是小编改过文件名之后的写法,大家可以步改,但做法就是这个做法;
以上我们就完成了配置文件这一操作,这样基本的环境以及配置就完成了,接下来做的就只是,开发Controller进行测试即可,因为对于工作流来说,服务层以及持久层是不用我们开发的,我们只需要开发的就是表现层,所以小编就不演示了,大家可以自行去测试;
以上我们就完成了整合,在下一篇文章当中我们会将邮件发送的方式在进行介绍。
敬请期待!!!!
版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/qq_42112846