activi工作流学习

  • 概念及简介
  • eclipse插件安装
  • 第一步:
  • 第二步:
  • 第三步:
  • 第四步:
  • 第五步:
  • 工程创建
  • 流程图绘制
  • 工作流表说明
  • 创建工作流表
  • 部署流程
  • 启动流程实例
  • 查看流程任务
  • 完成任务
  • 查看历史任务


概念及简介

这个网上很多,大家自己查阅就行了
由于IDEA的activiti插件比较难用,反人类设计,所以使用eclipse进行设计学习.此次我使用的是氧气版eclipse.

eclipse插件安装

第一步:

activities工作流自动审批 工作流activity教程_bc

第二步:

activities工作流自动审批 工作流activity教程_System_02

第三步:

Name: Activiti BPMN 2.0 designer

Location: http://activiti.org/designer/update/

将这两个内容填入即可.其中name可变.

activities工作流自动审批 工作流activity教程_activities工作流自动审批_03


填写完成后点击OK

第四步:

activities工作流自动审批 工作流activity教程_数据_04


完成后一直点击OK,finish即可.

第五步:

点击Window-preferences

出现Activiti说明安装成功.将这里点上勾

activities工作流自动审批 工作流activity教程_activities工作流自动审批_05

工程创建

建一个springboot工程,maven管理.
pom文件引入依赖

<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.21</version>
</dependency>
<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-engine</artifactId>
			<version>6.0.0</version>
</dependency>

流程图绘制

更新完成后.开始画一个简单的流程图.

resources目录下,右键新建other,

创建该文件

activities工作流自动审批 工作流activity教程_activities工作流自动审批_06


activities工作流自动审批 工作流activity教程_数据_07


面板中绘制一个简单的流程图.

点击流程

activities工作流自动审批 工作流activity教程_System_08


activities工作流自动审批 工作流activity教程_System_09


完成后保存即可生成一个

activities工作流自动审批 工作流activity教程_数据_10


这样的文件.

这样,流程图操作完成.

工作流表说明

Activiti使用到的表都是ACT_开头的。

  • ACT_RE_: RE表示repository(存储),RepositoryService接口所操作的表。带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。
  • ACT_RU_: RU表示runtime,运行时表-RuntimeService。这是运行时的表存储着流程变量,用户任务,变量,职责(job)等运行时的数据。Activiti只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。 这就保证了这些运行时的表小且快。
  • ACT_ID_: ID表示identity (组织机构),IdentityService接口所操作的表。用户记录,流程中使用到的用户和组。这些表包含标识的信息,如用户,用户组,等等。
  • ACT_HI_: HI表示history,历史数据表,HistoryService。就是这些表包含着流程执行的历史相关数据,如结束的流程实例,变量,任务,等等
  • ACT_GE_: 全局通用数据及设置(general),各种情况都使用的数据。

表分类

表名

说明

通用数据

ACT_GE_BYTEARRAY

通用的流程定义和流程资源

ACT_GE_PROPERTY

系统相关属性

流程历史记录

ACT_HI_ACTINST

历史的流程实例

ACT_HI_ATTACHMENT

历史的流程附件

ACT_HI_COMMENT

历史的说明性信息

ACT_HI_DETAIL

历史的流程运行中的细节信息

ACT_HI_IDENTITYLINK

历史的流程运行过程中用户关系

ACT_HI_PROCINST

历史的流程实例

ACT_HI_TASKINST

历史的任务实例

ACT_HI_VARINST

历史的流程运行中的变量信息

用户用户组表

ACT_ID_GROUP

身份信息-组信息

ACT_ID_INFO

用户扩展信息表

ACT_ID_MEMBERSHIP

身份信息-用户和组关系的中间表

ACT_ID_USER

身份信息-用户信息

流程定义表

ACT_RE_DEPLOYMENT

部署单元信息

ACT_RE_MODEL

模型信息

ACT_RE_PROCDEF

已部署的流程定义

运行实例表

ACT_RU_EVENT_SUBSCR

运行时事件

ACT_RU_EXECUTION

运行时流程执行实例

ACT_RU_IDENTITYLINK

运行时用户关系信息

ACT_RU_JOB

运行时作业

ACT_RU_TASK

运行时任务

ACT_RU_VARIABLE

运行时变量表

activiti工作流表API

创建工作流表

activiti.cfg.xml配置文件

<?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">
<bean id="processEngineConfiguration"
          class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="jdbcDriver" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=UTF8&autoReconnect=true&failOverReadOnly=false&useSSL=false" />
        <property name="jdbcUsername" value="root"/>
        <property name="jdbcPassword" value="123456" />
        <property name="databaseSchemaUpdate" value="true"/>
    </bean>

</beans>
@Test
	public void createActiviti() {
		//读取配置文件 创建ProcessEngine实例 生成activiti23张表
		ProcessEngineConfiguration pec = ProcessEngineConfigurationImpl
				.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
		ProcessEngine pe = pec.buildProcessEngine();
	}

运行后数据库生成23张表

activities工作流自动审批 工作流activity教程_bc_11

部署流程

// 读取配置文件 创建ProcessEngine实例 生成activiti23张表
	ProcessEngineConfiguration pec = ProcessEngineConfigurationImpl
			.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
	ProcessEngine pe = pec.buildProcessEngine();

	/**
	 * 部署设计资源 即之前创建的流程设计图
	 */
	@Test
	public void deploy() {
		pe.getRepositoryService().createDeployment().addClasspathResource("MyProcess.png")
				.addClasspathResource("MyProcess.bpmn").name("第一个工作流").deploy();
	}

结果:

activities工作流自动审批 工作流activity教程_数据_12


这张表中生成数据

activities工作流自动审批 工作流activity教程_bc_13


——————————————————

activities工作流自动审批 工作流activity教程_数据_14


这张表生成数据

activities工作流自动审批 工作流activity教程_System_15


activities工作流自动审批 工作流activity教程_System_16


这张表生成

activities工作流自动审批 工作流activity教程_System_17


部署工作流程序这个阶段就结束

启动流程实例

/**
	 * 启动流程实例
	 * 此时act_ru_execution act_ru_task 两张表中有数据
	 */
	@Test
	public void start() {
		//通过id启动  启动时赋予流程执行人即 刚才${}中的值
		Map<String, Object> map = new HashMap<>();
		//如果是多个人同时的话,这里user的值可以用,隔开
		//或者说还有 student techer这种的 再put就行了
		map.put("user", "小妹");
		ProcessInstance pi = pe.getRuntimeService().startProcessInstanceById("myProcess:1:10004",map);
	}

创建实例还有这些方法:
startProcessInstanceByKey()
startProcessInstanceByKeyAndTenantId()
startProcessInstanceByMessage()
startProcessInstanceByMessageAndTenantId()

查看流程任务

/**
	 * 查看流程任务
	 */
	@Test
	public void findTask() {
		//创建流程查询
		List<Task> list = pe.getTaskService().createTaskQuery().list();
		list.forEach(item->{
			System.out.println("任务id"+item.getId());
			System.out.println("任务名称"+item.getName());
			System.out.println("任务创建时间"+item.getCreateTime());
			System.out.println("任务执行人"+item.getAssignee());
		});
	}

执行结果:

任务id22506
任务名称工作流
任务创建时间Wed Jan 22 09:45:56 CST 2020
任务执行人小妹

完成任务

/**
	 * 完成任务
	 * 此时act_ru_execution act_ru_task 两张表中没有数据
	 * 相对应的 在历史表中有数据
	 */
	@Test
	public void completeTask() {
		Task task = pe.getTaskService().createTaskQuery().singleResult();
		pe.getTaskService().complete(task.getId());//通过任务id来完成任务
	}

查看历史任务

/**
	 * 查看历史任务数据
	 */
	@Test
	public void findHistoryTask() {
		HistoricTaskInstance hti = pe.getHistoryService().createHistoricTaskInstanceQuery().singleResult();
		System.out.println("历史任务id"+hti.getId());
		System.out.println("历史任务名称"+hti.getName());
		System.out.println("历史任务创建时间"+hti.getCreateTime());
		System.out.println("历史任务结束时间"+hti.getEndTime());
		System.out.println("历史任务执行人"+hti.getAssignee());
	}

结果:

历史任务id22506
历史任务名称工作流
历史任务创建时间Wed Jan 22 09:45:56 CST 2020
历史任务结束时间Wed Jan 22 10:00:29 CST 2020
历史任务执行人小妹