【Activiti工作流】4.准备开发环境(配置文件)和核心api的介绍

我们上一次已经搭建了Activiti工作流工程的环境,
1.在Eclipse中加入了Activiti插件
2.创建了Activiti工程
3.引入了所需要的jar包
4.创建了加载流程引擎配置,和获取流程引擎实例的类
5.创建了工作流工程需要的数据库
6.使用流程引擎生成了工作流所需要的23张表。


我们加载流程引擎配置,和获取流程引擎实例的类如下:
package junit;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.junit.Test;


public class TestActiviti {
	/**使用代码创建工作流需要的23张表*/
	@Test
	public void createTable(){
		//流程引擎ProcessEngine对象,所有操作都离不开引擎对象
		ProcessEngineConfiguration processEngineConfiguration = 
				ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();
		//连接数据库的配置
		processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");
		processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/zhucoder2017?useUnicode=true&characterEncoding=utf8");
		processEngineConfiguration.setJdbcUsername("root");
		processEngineConfiguration.setJdbcPassword("1234");
	
		//三个配置
		//1.先删除表,再创建表:processEngineConfiguration.DB_SCHEMA_UPDATE_CREATE_DROP="create-drop"
		//2.不能自动创建表,需要表存在:processEngineConfiguration.DB_SCHEMA_UPDATE_FALSE="false"
		//3.如果表存在,就自动创建表:processEngineConfiguration.DB_SCHEMA_UPDATE_TRUE="true"
		processEngineConfiguration.setDatabaseSchema(processEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
		//获取工作流的核心对象,ProcessEngine对象
		ProcessEngine processEngine=processEngineConfiguration.buildProcessEngine();
		System.out.println("processEngine:"+processEngine+"Create Success!!");
	}
}

我们这里只是一个测试类,其实真正加载流程引擎,我们是使用配置文件配置,然后利用
spring框架的依赖注入来完成流程引擎的参数配置和实例获取的。

接下来我们来添加并制定配置文件:

1.添加并制定配置文件
在Actiiti5中定制流程必定会操作到数据库,如果都像上面那样写一大段代码会非常麻烦,
所以我们可以把数据库连接配置写入配置文件。
在Activiti5的官方示例中并没有现成的配置文件,所以先得找到Activiti的样例工程。
(Activiti的样例工程下载: http://download.csdn.net/detail/u013517797/9764657)
在activiti-rest\WEB-INF\classes下有activiti-context.xml文件:


我们把该文件拷贝到我们之前创建的Activiti的工程中,放置在src/java/resources下:

重命名为activiti-cfg.xml

我们把之前的所有配置删除,我们从头开始编写该配置文件:


我们添加如下配置:
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	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
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">


	<!-- 流程引擎的配置对象 -->
	<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
		<!-- 流程引擎配置对象的相关参数 -->
		<!-- 1.连接数据库的配置 -->
		<property name="jdbcDriver" value="com.mysql.jdbc.Driver"/>
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/zhucoder2017?useUnicode=true&amp;characterEncoding=utf8"/>
		<property name="jdbcUsername" value="root"/>
		<property name="jdbcPassword" value="1234"/>
		<!-- 没有表就创建表 -->
		<property name="databaseSchemaUpdate" value="true"/>
	</bean>


</beans>
上面代码配置ProcessEngineConfiguration对象,主要定义数据库的连接配置和建表策略。


2.配置log4j.properties日志文件
接下来配置log4j.properties日志配置文件
我们把刚刚activiti-rest样例工程的log4j.properties日志文件拷贝到
我们工程的src/java/resources下即可:



里面的配置就是log4j的基础配置:
log4j.rootLogger=INFO, CA

# ConsoleAppender
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%d{hh\:mm\:ss,SSS} [%t] %-5p %c %x - %m%n

3.重写加载类
我们配置了配置文件,我们就使用加载配置文件的方式获取流程引擎配置对象。
在之前的TestActiviti类中我们创建一个新的方法,来编写该代码:
public void createTable_2(){
	//流程引擎ProcessEngine对象,所有操作都离不开引擎对象
	ProcessEngineConfiguration processEngineConfiguration = 
			ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti-cfg.xml");
	//获取工作流的核心对象,ProcessEngine对象
	ProcessEngine processEngine=processEngineConfiguration.buildProcessEngine();
	System.out.println("processEngine:"+processEngine+"Create Success!!");
}

我们使用了createProcessEngineConfigurationFromResource方法,通过加载资源文件
的方式获取流程引擎配置对象,进而使用该对象创建流程引擎实例。

运行之后,由于我们配置了log4j日志,所以在控制台可以看到引擎实例创建成功:


速度也比第一次快,因为23张基础表已经创建过了。


当然上面那个代码可以更简洁,使用“链式编程”直接获取工作流实例:
@Test
public void createTable_2(){
	//获取工作流的核心对象,ProcessEngine对象
	ProcessEngine processEngine = 
			ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti-cfg.xml").buildProcessEngine();
	System.out.println("processEngine:"+processEngine+"Create Success!!");
}

引擎对象创建完毕之后,我们就要学习一下Activiti的核心API了。


4.核心API
1.ProcessEngine
说明:
1)在Activiti中最核心的类,其他的类都是由他而来。
2)产生方式:
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
在前面看到了两种创建ProcessEngine(流程引擎)的方式,而这里要简化很多,调用ProcessEngines的getDefaultProceeEngine方法时会自动加载classpath下名为activiti.cfg.xml
文件。

记得我们获取流程引擎实例的时候创建了23张表:

分别有RE/RU/ID/HI/GE开头的表,其中
A.'RE'表示repository, 这个前缀的表包含了
流程定义和流程静态资源 (图片,规则,等等)。
B.'RU'表示runtime。 这些运行时的表,包含流程实例,任务,
变量,异步任务,等运行中的数据。 
C.'ID'表示identity。 这些表包含身份信息,比如用户,组等等。
D.'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
E.'GE'表示通用数据, 用于不同场景下,如存放资源文件。


同理,我们processEngine流程引擎实例,可以获取3个service,分别处理
开头为RE/RU/ID/HI/GE的表:
3)可以产生RepositoryService
是Activiti的仓库服务类。所谓的仓库指流程定义文档的两个文件:bpmn文件和流程图片。
A.产生方式
RepositoryService repositoryService=processEngine.getRepositoryService();


B.可以产生DeploymentBuilder,用来定义流程部署的相关参数
DeploymentBuilder deploymentBuilder=repositoryService.createDeployment();


C.删除流程定义
repositoryService.deleteDeployment(deploymentId);


4)可以产生RuntimeService
是activiti的流程执行服务类。可以从这个服务类中获取很多关于流程执行相关的信息。
产生方式:
RuntimeService runtimeService=processEngine.getRuntimeService();


5)可以产生TaskService
是activiti的任务服务类。可以从这个类中获取任务的信息。
产生方式:
TaskService taskService=processEngine.getTaskService();


6)可以产生HistoryService
是activiti的查询历史信息的类。在一个流程执行完成后,这个对象为我们
提供查询历史信息。
产生方式:
HistoryService historyService=processEngine.getHistoryService();


其它的Service的产生方式类似,这里不再赘述。



各个Service的作用:
RepositoryService 管理流程定义
RuntimeService 执行管理,包括启动、推进、删除流程实例等操作
TaskService 任务管理
HistoryService 历史管理(执行完的数据的管理)
IdentityService 组织机构管理
FormService 一个可选服务,任务表单管理
ManagerService


具体API的使用我们在之后的工程实例中带领大家学习。

附录-Activiti开发的整个流程:

转载请注明出处:http://blog.csdn.net/acmman/article/details/57423054

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光仔December

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值