activiti5.13+Spring3.1.2+hibernate3.6.7整合

              新项目开始,因为以前对jbpm4比较熟悉,这次打算采用新的工作流框架,决定使用activiti5,下面是activiti5对Spring的整合
                首先是lib的选择
                activiti5的lib    
                activiti5内部采用mybatis作为持久化框架,所以还需要,mybatis的版本一定要和activiti5所用的版本对应。
               activiti5内部采用的是sl4j管理日志,所以还需要
               activiti5采用joda-time来处理时间
               剩下的就是spring跟hibernate的依赖jar

  
              lib包选择好以后,开始配置applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"    
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns:p="http://www.springframework.org/schema/p"     
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:jee="http://www.springframework.org/schema/jee" 
       xmlns:tx="http://www.springframework.org/schema/tx"    
       xmlns:aop="http://www.springframework.org/schema/aop"    
       xsi:schemaLocation="http://www.springframework.org/schema/beans    
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd    
           http://www.springframework.org/schema/context    
           http://www.springframework.org/schema/context/spring-context-3.0.xsd 
           http://www.springframework.org/schema/jee
           http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
           http://www.springframework.org/schema/tx   
           http://www.springframework.org/schema/tx/spring-tx-3.0.xsd    
           http://www.springframework.org/schema/aop    
           http://www.springframework.org/schema/aop/spring-aop-3.0.xsd    
           ">
	<context:annotation-config />
	<context:component-scan base-package="org.ch01.sys"/>

		
	<!-- 建立数据源 -->
	<bean
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<value>classpath:jdbc.properties</value>
		</property>
	</bean>
    
    <!-- 配置数据库连接池(c3p0) -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<!-- 基本信息 -->
		<property name="jdbcUrl" value="${jdbcUrl}"></property>
		<property name="driverClass" value="${driverClass}"></property>
		<property name="user" value="${username}"></property>
		<property name="password" value="${password}"></property>
		<!-- 其他配置 -->
		<!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
		<property name="initialPoolSize" value="3"></property>
		<!--连接池中保留的最小连接数。Default: 3 -->
		<property name="minPoolSize" value="3"></property>
		<!--连接池中保留的最大连接数。Default: 15 -->
		<property name="maxPoolSize" value="5"></property>
		<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
		<property name="acquireIncrement" value="3"></property>
		<!-- 控制数据源内加载的PreparedStatements数量。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0 -->
		<property name="maxStatements" value="8"></property>
		<!-- maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0 -->
		<property name="maxStatementsPerConnection" value="5"></property>
		<!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
		<property name="maxIdleTime" value="1800"></property>
	</bean>
	
	
    
    <!-- 把数据源注入给session工厂 -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="packagesToScan">
			<list><value>org.ch01.sys.entity</value></list>
		</property>
		<!--  配置映射文件 -->
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hbm2ddl.auto">update</prop>	
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop> 
			</props>
		</property>
	</bean>
	
	<!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" p:sessionFactory-ref="sessionFactory"/>
    
    <!-- 使用声明式配置事物(事务通知) -->
    <!--Spring中常用事务类型:
         REQUIRED       支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
         SUPPORTS       支持当前事务,如果当前没有事务,就以非事务方式执行。
         MANDATORY      支持当前事务,如果当前没有事务,就抛出异常。
         REQUIRES_NEW   新建事务,如果当前存在事务,把当前事务挂起。
         NOT_SUPPORTED  以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
         NEVER          以非事务方式执行,如果当前存在事务,则抛出异常。    
     -->
    <!-- transaction-manager引用上面的事务管理器 -->       
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
      <tx:attributes>
        <tx:method name="*" propagation="REQUIRED"/>
      </tx:attributes>     
    </tx:advice>   
    
    <!-- 将通知应用到指定的切入点 -->
     <aop:config> 
       <!--指定切入点 -->
      <aop:pointcut id="txService" expression="execution(* org.ch01.sys.service.*.*.*(..))"/>
      <!--  advice-ref引用上面的事务通知,pointcut-ref指定上面配置的切入点 -->
      <aop:advisor advice-ref="txAdvice" pointcut-ref="txService"/>
    </aop:config>
    
    
  <!-- activiti5集成spring配置 -->
  <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
    <property name="dataSource" ref="dataSource" />
    <property name="transactionManager" ref="transactionManager" />
    <property name="databaseSchemaUpdate" value="true" />
    <property name="jobExecutorActivate" value="false" />
  </bean>
  
  <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
    <property name="processEngineConfiguration" ref="processEngineConfiguration" />
  </bean>
  
  <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" />
    
    


</beans>


 



  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值