activiti5.20简单介绍(十) -- spring和业务关联

Activiti天生支持spring,所以与spring的集成是非常方便的。

1.依赖

 

		<!-- spring-activiti集成 -->
		<dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring</artifactId>
            <version>${activiti.version}</version>
        </dependency>

Activiti与spring集成需要依赖activiti-spring的包

2.配置

Spring集成的核心配置类:org.activiti.spring.SpringProcessEngineConfiguration

 

	<!-- spring配置 -->
	<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
		数据源配置
		<property name="dataSource" ref="dataSource"></property>

		数据库连接信息
		<property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"></property>
		<property name="jdbcUsername" value="root"></property>
		<property name="jdbcPassword" value="root123"></property>
		自动创建表
		<property name="databaseSchemaUpdate" value="true"></property>

		关闭JobExecutor的自动启动
		<property name="jobExecutorActivate" value="false"></property>

		配置自定义缓存
		<property name="processDefinitionCache">
			<bean class="com.vclouds.workflow.cache.MyCache" />
		</property>
		
	</bean>

其他的配置与之前类似

 

3.创建引擎

spring集成就需要使用spring来讲引擎创建出来。

 

	<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
		<property name="processEngineConfiguration" ref="processEngineConfiguration" />
	</bean>

 

4.事务管理

spring集成之后就必须使用事务管理,即必须配置事务,否则会出现数据无法提交的情况

 

	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>

 

5.创建服务

利用工厂的方式创建各个服务类对象

 

	利用工厂方式得到服务类对象
	<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" />

 

6.业务信息依托流程

业务信息需要通过流程进行一系列的操作,业务的一些信息需要在流程的运行过程中不断变动,不断更新,如果当前业务在流程中没有更新操作,那么这个业务信息就是一成不变的,就不是一个完整的业务信息,需要脱离流程进行操作,所以使用到流程的话需要将业务信息关联到流程。

7.流程关联业务信息

流程关联业务可以使用流程变量,在当前流程运行过程中,流程变量都可以获取,也就是在当前流程过程中,业务数据始终跟随,这样在做一些更新业务信息的操作就非常方便了。

当然,activiti也提供了一个关联业务的字段,在流程执行对象表中的BusinessKey列,使用这个字段,可以自定义规则将所需要的业务信息存放到当前字段,可以通过当前字段获得业务信息,也可以通过业务信息得到当前字段的值;

例如:Business类是业务类,其中id为主键,那么就可以将当前字段设置为Business:id,其中Business为当前业务类的simpleName,中间使用:分隔,id为业务主键,这样得到业务字段值的时候就可以查找业务信息,同时也可以通过字段值查询流程信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值