《Activiti工作流框架》专题(二)-Activiti工作流框架环境准备

1.准备开发环境

1.1.了解activiti开发库

在这里插入图片描述

1.2. 创建WEB工程,导入Activiti依赖包

在IDEA左边工作栏右键New选择创建Maven Project项目,创建一个名为ActivitiDemo的项目
在这里插入图片描述
点击Finish完成。
然后在pom.xml文件中添加以下依赖


  <dependencies>

	<!-- https://mvnrepository.com/artifact/org.activiti/activiti-engine -->
	<dependency>
		<groupId>org.activiti</groupId>
		<artifactId>activiti-engine</artifactId>
		<version>5.22.0</version>
	</dependency>

	<!-- https://mvnrepository.com/artifact/org.activiti/activiti-spring -->
	<dependency>
		<groupId>org.activiti</groupId>
		<artifactId>activiti-spring</artifactId>
		<version>5.22.0</version>
	</dependency>

	<dependency>
		<groupId>org.codehaus.groovy</groupId>
		<artifactId>groovy-all</artifactId>
		<version>2.4.3</version>
	</dependency>

	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-api</artifactId>
		<version>1.7.6</version>
	</dependency>

	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-jdk14</artifactId>
		<version>1.7.6</version>
	</dependency>

	<!-- 单元测试 -->
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.12</version>
		<scope>test</scope>
	</dependency>

	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.38</version>
	</dependency>
</dependencies>

<build>
	<plugins>
		<plugin>
			<artifactId>maven-war-plugin</artifactId>
			<configuration>
				<version>3.1</version>
			</configuration>
		</plugin>
		<!-- java编译插件 -->
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>2.3.2</version>
			<configuration>
				<source>1.8</source>
				<target>1.8</target>
				<encoding>UTF-8</encoding>
			</configuration>
		</plugin>
	</plugins>
</build>

1.3. 初始化表结构

1.3.1.使用activiti框架提供的建表语句

第一步:获得建表语句
在这里插入图片描述
第二步:创建数据库
在这里插入图片描述
第三步:执行SQL语句
在这里插入图片描述

1.3.2.使用activiti框架的自动建表功能

框架提供了和hibernate类似的自动建表功能
 不使用配置文件(不建议)

  /*
* 使用框架提供自动建表(不提供配置文件)
*/
@Test
public void createTable(){
    
    
	//创建一个流程引擎配置对象
	ProcessEngineConfiguration conf = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
	//设置数据源信息
	conf.setJdbcDriver("com.mysql.jdbc.Driver");
	conf.setJdbcUrl("jdbc:mysql:///activitidb?characterEncoding=utf-8");
	conf.setJdbcUsername("root");
	conf.setJdbcPassword("123");
	//设置自动建表
	conf.setDatabaseSchemaUpdate("true");
	//创建一个流程引擎对象,在创建流程引擎对象过程中会自动建表
	ProcessEngine processEngine = conf.buildProcessEngine();
}

1.3.3.使用配置文件

 要求配置文件名称必须为activiti-context.xml或者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.StandaloneProcessEngineConfiguration">
		<property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
		<property name="jdbcUrl" value="jdbc:mysql:///activitidb?characterEncoding=utf-8" />
		<property name="jdbcUsername" value="root" />
		<property name="jdbcPassword" value="123" />
		<property name="databaseSchemaUpdate" value="true" />
	</bean>
	
</beans>

@Test
public void createTable1(){
    
    
    ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti-context.xml","processEngineConfiguration").buildProcessEngine();
    System.out.println("------processEngine----:" + processEngine);
}

1.3.4.使用默认配置文件

<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.StandaloneProcessEngineConfiguration">
		<property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
		<property name="jdbcUrl" value="jdbc:mysql:///activitidb?characterEncoding=utf-8" />
		<property name="jdbcUsername" value="root" />
		<property name="jdbcPassword" value="123" />
		<property name="databaseSchemaUpdate" value="true" />
	</bean>

	<!-- 配置一个流程引擎工厂bean,用于创建流程引擎对象 -->
	<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
		<!-- 通过set方法注入流程引擎配置对象 -->
		<property name="processEngineConfiguration" ref="processEngineConfiguration" />
	</bean>
	
</beans>

@Test
public void createTable2(){
    
    
	ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
	System.out.println(processEngine);
}

然后运行该测试方法,如果运行成功,在数据库中应该会产生25张Activiti的相关数据表
在这里插入图片描述

1.3.5.Activiti表说明

下面是概括了几个常用的数据表

Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。

ACT_RE_*: 'RE’表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
ACT_RU_*: 'RU’表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
ACT_ID_*: 'ID’表示identity。 这些表包含身份信息,比如用户,组等等。
ACT_HI_*: 'HI’表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
ACT_GE_*: 通用数据, 用于不同场景下。

 流程部署相关表

act_re_deployement 部署对象表
act_rep_procdef  流程定义表
act_ge_bytearray 资源文件表
act_ge_prperty  主键生成策略表(对于部署对象表的主键ID)

 流程实例相关表

act_ru_execution 正在执行的执行对象表(包含执行对象ID和流程实例ID,如果有多个线程可能流程实例ID不一样)
act_hi_procinst 流程实例历史表
act_hi_actinst 存放历史所有完成的任务

 Task 任务相关表

act_ru_task 代办任务表 (只对应节点是UserTask的)
act_hi_taskinst 代办任务历史表 (只对应节点是UserTask的)

act_hi_actinst  所有节点活动历史表 (对应流程的所有节点的活动历史,从开始节点一直到结束节点中间的所有节点的活动都会被记录)

 流程变量表

act_ru_variable 正在执行的流程变量表
act_hi_variable 流程变量历史表

2.准备开发环境核心API

2.1.ProcessEngine对象 流程引擎对象

说明:

  1. 在Activiti中最核心的类,其他的类都是由他而来。

  2. 产生方式

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
  1. 可以产生RepositoryService
RepositoryService repositoryService =processEngine.getRepositoryService();
  1. 可以产生 RuntimeService
RuntimeService runtimeService = processEngine.getRuntimeService();
  1. 可以产生TaskService
TaskService taskService =processEngine.getTaskService();

各个Service的作用

Xxxservice 作用
RepositoryService 管理流程定义
RuntimeService 执行管理,包括启动,推进,删除流程实例等操作
TaskService 任务管理

2.2.RepositoryService

Activiti的仓库服务类。所谓的仓库指流程定义文档的两个文件:bpmn文件和流程图片
该service可以用来删除部署的流程定义。

2.3.RuntimeService

是Activiti的流程执行服务类,可以从这个服务类中获取很多关于流程执行的相关的信息。

2.4.TaskService

是Activiti的任务服务类。可以从这个类中获取任务的相关信息,如当前正在执行的个人待办和用户组待办任务。

2.5.HistoryService

是Activiti的查询历史信息的类,在一个流程执行完成后,这个对象为我们提供查询历史信息,可以跟踪流程实例对应所有待办节点的运行情况。

2.6.ProcessDefinition

流程定义类,可以从这里获得资源文件等。

2.7.ProcessInstance

代表流程定义的执行实例,当一个部署的流程图启动后,该流程只有一条流程实例数据,但是它的流程任务可以有多个,每个任务对应流程图中相应的流程节点。

猜你喜欢

转载自blog.csdn.net/BruceLiu_code/article/details/113597370