Skip to content

Latest commit

 

History

History
362 lines (343 loc) · 17.2 KB

File metadata and controls

362 lines (343 loc) · 17.2 KB

第2章 安装与运行Activiti

2.1 下载与运行Activiti

2.1.1 下载和安装JDK

2.1.2 下载和安装MySQL

2.1.3 下载和安装Activiti

  • 在浏览器输入 https://github.com/Activiti/Activiti/releases?after=7-201711-EA 进入 Activiti的GitHub网页;
  • 下载zip包并解压;
  • 将war文件夹的activiti-admin.war、activiti-app.war和activiti-rest.war拷贝到D:\Java\apache-tomcat-8.5.12\webapps目录下;
  • 执行D:\Java\apache-tomcat-8.5.12\bin\startup.bat;
  • 启动成功需要一分钟左右。

2.2 运行官方的Activiti示例

2.2.1 请假流程概述

2.2.2 新建用户

  • 在浏览器输入 http://localhost:8080/activiti-app 进入app项目登陆界面,输入用户名和密码(amdin/test)进入系统:
  • 点击【Identity Management】图标,进入用户管理界面
  • 选择【Users】面板,点击【Create User】按钮,新建用户
  • 输入用户信息
  • 创建两个用户worker和leader,列表如下

2.2.3 定义流程

  • 点击页面左上角的图标,进入主界面
  • 点击【Kickstart App】图标,进入流程界面
  • 点击【Create Process】按钮:设置流程名称
  • 在开始节点点击头像图标,创建第一个节点
  • 设置第一个节点
  • 继续创建第二个节点和流程结束节点:
  • 设置节点的【Assignments】
  • 选择分配给单个用户
  • 第一个节点的设置结果
  • 第二个节点的设置结果
  • 点击左上角的按钮,保存流程

2.2.4 发布流程

  • 创建应用
  • 设置应用信息
  • 准备将流程添加到应用,点击【Edit included models】进入添加页面
  • 点击流程,将流程添加到应用,右上角的图标变成实心的即表示添加成功
  • 流程添加完成
  • 准备应用发布,点击右上角的【Publish】按钮
  • 确认发布
  • 应用发布完成

2.2.5 启动与完成流程

  • 使用worker账号登陆系统,准备发起流程
  • 点击【Start process】,发起流程,可以点击Comments旁边的+号填入备注信息
  • 流程流转图,现阶段节点在worker这里
  • 点击【Complete】按钮,发起流程
  • 流程流转图,现阶段节点已转到leader这里
  • 使用 leader 账号登陆系统,leader登陆后的界面,有一个任务需要审核,点击右上角的【Complete】可以进行审核
  • 直接点击【Process】面板,可以查看流程详情
  • 点击【Task】面板右上角的【Complete】完成审核
  • 在浏览器输入 http://localhost:8080/activiti-admin 进入admin项目登陆界面,输入用户名和密码(amdin/admin)进入系统:
  • admin项目首页
  • 修改端口信息,记得修改密码信息为test,因为app项目的admin账号对应的密码是test:
  • 校验信息
  • 已发布的信息列表
  • 流程定义列表
  • 单个流程信息详情
  • 实例信息列表
  • 任务信息列表
  • 任务详细信息

2.2.6 流程引擎管理

2.3 安装开发环境

2.3.1 下载Eclipse

2.3.2 安装Activiti插件

2.4 编写第一个Activiti程序

2.4.1 如何运行本书示例

2.4.2 建立工程环境

  • 创建一个Java的Maven工程
  • Maven 依赖
<dependencies>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.11</version>
		<scope>test</scope>
	</dependency>
	<dependency>
		<groupId>org.activiti</groupId>
		<artifactId>activiti-engine</artifactId>
		<version>6.0.0</version>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-api</artifactId>
		<version>1.7.21</version>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-log4j12</artifactId>
		<version>1.7.21</version>
	</dependency>
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.47</version>
	</dependency>
</dependencies>

2.4.3 创建配置文件

  • 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 -->
	<bean id="processEngineConfiguration"
		class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/act?
            useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=UTC&amp;useSSL=false" />
		<property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
		<property name="jdbcUsername" value="root" />
		<property name="jdbcPassword" value="1234" />
		<property name="databaseSchemaUpdate" value="true" />
	</bean>
</beans>

2.4.4 创建流程文件

  • 流程文件MyFirstProcess.bpmn(两个节点)

  • xml内容

<?xml version="1.0" encoding="UTF-8"?>
<definitions ...">
  <process id="myProcess" name="My process" isExecutable="true">
    <startEvent id="startevent1" name="Start"></startEvent>
    <endEvent id="endevent1" name="End"></endEvent>
    <userTask id="usertask1" name="Write Vacation"></userTask>
    <userTask id="usertask2" name="Audit"></userTask>
    <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
    <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="usertask2"></sequenceFlow>
    <sequenceFlow id="flow3" sourceRef="usertask2" targetRef="endevent1"></sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_myProcess">
    <bpmndi:BPMNPlane bpmnElement="myProcess" id="BPMNPlane_myProcess">
      <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
        <omgdc:Bounds height="35.0" width="35.0" x="220.0" y="250.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
        <omgdc:Bounds height="35.0" width="35.0" x="701.0" y="250.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1">
        <omgdc:Bounds height="55.0" width="105.0" x="320.0" y="240.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="usertask2" id="BPMNShape_usertask2">
        <omgdc:Bounds height="55.0" width="105.0" x="521.0" y="240.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
        <omgdi:waypoint x="255.0" y="267.0"></omgdi:waypoint>
        <omgdi:waypoint x="320.0" y="267.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
        <omgdi:waypoint x="425.0" y="267.0"></omgdi:waypoint>
        <omgdi:waypoint x="521.0" y="267.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3">
        <omgdi:waypoint x="626.0" y="267.0"></omgdi:waypoint>
        <omgdi:waypoint x="701.0" y="267.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

2.4.5 加载流程文件与启动流程

  • 自动创建数据库表
public class App {
	public static void main(String[] args) {
		// 新建流程引擎
		ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();

		// 关闭流程引擎
		engine.close();
	}
}
  • 运行结果(数据库中已自动创建28张表)
04:04:56,050 [main] INFO  org.activiti.engine.impl.db.DbSqlSession  - 
performing create on engine with resource org/activiti/db/create/activiti.mysql.create.engine.sql
04:04:56,080 [main] INFO  org.activiti.engine.impl.db.DbSqlSession  - 
Found MySQL: majorVersion=5 minorVersion=7
04:05:25,503 [main] INFO  org.activiti.engine.impl.db.DbSqlSession  - 
performing create on history with resource org/activiti/db/create/activiti.mysql.create.history.sql
04:05:25,511 [main] INFO  org.activiti.engine.impl.db.DbSqlSession  - 
Found MySQL: majorVersion=5 minorVersion=7
04:05:29,757 [main] INFO  org.activiti.engine.impl.db.DbSqlSession  - 
performing create on identity with resource org/activiti/db/create/activiti.mysql.create.identity.sql
04:05:29,764 [main] INFO  org.activiti.engine.impl.db.DbSqlSession  - 
Found MySQL: majorVersion=5 minorVersion=7
04:05:31,511 [main] INFO  org.activiti.engine.impl.ProcessEngineImpl  - ProcessEngine default created
04:05:31,790 [main] INFO  org.activiti.engine.ProcessEngines  - initialised process engine default
  • 表act_re_deployment新增1条记录

  • 表act_ge_bytearray新增2条记录

  • 第1条记录详情,xml格式文档

  • 第2条记录详情,图片格式的流程

  • 创建流程

public class App {
	public static void main(String[] args) {
		// 新建流程引擎
		ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
		// 存储服务
		RepositoryService repositoryService = engine.getRepositoryService();
		// 运行时服务
		RuntimeService runtimeService = engine.getRuntimeService();
		// 任务服务
		TaskService taskService =engine.getTaskService();
		// 部署服务
		repositoryService.createDeployment().addClasspathResource("MyFirstProcess.bpmn").deploy();
		// process的id属性
		ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess");
		
		// 普通员工完成请假的任务
		Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
		System.out.println("当前流程节点:" + task.getName());
		taskService.complete(task.getId());
		
		// 经理审批任务
		task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
		System.out.println("当前流程节点:" + task.getName());
		taskService.complete(task.getId());
		
		// 流程结束
		task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
		System.out.println("流程结束:" + task);
		// 关闭流程引擎
		engine.close();
	}
}
  • 运行结果
04:34:35,090 [main] INFO  org.activiti.engine.compatibility.DefaultActiviti5CompatibilityHandlerFactory  
- Activiti 5 compatibility handler implementation not found or error during instantiation : 
- org.activiti.compatibility.DefaultActiviti5CompatibilityHandler. Activiti 5 backwards compatibility disabled.
04:34:35,196 [main] INFO  org.activiti.engine.impl.ProcessEngineImpl  - ProcessEngine default created
04:34:35,202 [main] INFO  org.activiti.engine.ProcessEngines  - initialised process engine default
当前流程节点:Write Vacation
当前流程节点:Audit
流程结束:null

2.5 本章小结

查看MySql库中所有表的大小和记录数

  • 打开数据库 preformance_schema ,执行下面的语句
SELECT
	TABLE_NAME,
	DATA_LENGTH,
	INDEX_LENGTH,
	(DATA_LENGTH + INDEX_LENGTH) AS length,
	TABLE_ROWS,
	concat(
		round(
			(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024,
			3
		),
		'MB'
	) AS total_size
FROM
	information_schema. TABLES
WHERE
	TABLE_SCHEMA = 'act'
ORDER BY
	TABLE_ROWS DESC
  • 运行结果
TABLE_NAME	DATA_LENGTH	INDEX_LENGTH	length	TABLE_ROWS	total_size
act_hi_actinst	16384	65536	81920	24	0.078MB
act_ge_bytearray	98304	16384	114688	14	0.109MB
act_hi_taskinst	16384	16384	32768	12	0.031MB
act_re_deployment	16384	0	16384	7	0.016MB
act_re_procdef	16384	16384	32768	7	0.031MB
act_hi_procinst	16384	49152	65536	6	0.063MB
act_ge_property	16384	0	16384	4	0.016MB
act_re_model	16384	49152	65536	0	0.063MB
act_id_group	16384	0	16384	0	0.016MB
act_ru_job	16384	65536	81920	0	0.078MB
act_ru_identitylink	16384	81920	98304	0	0.094MB
act_hi_varinst	16384	0	16384	0	0.016MB
act_procdef_info	16384	32768	49152	0	0.047MB
act_evt_log	16384	0	16384	0	0.016MB
act_ru_execution	16384	98304	114688	0	0.109MB
act_id_user	16384	0	16384	0	0.016MB
act_hi_identitylink	16384	0	16384	0	0.016MB
act_ru_variable	16384	65536	81920	0	0.078MB
act_hi_detail	16384	0	16384	0	0.016MB
act_ru_event_subscr	16384	32768	49152	0	0.047MB
act_ru_timer_job	16384	65536	81920	0	0.078MB
act_hi_comment	16384	0	16384	0	0.016MB
act_ru_deadletter_job	16384	65536	81920	0	0.078MB
act_id_membership	16384	16384	32768	0	0.031MB
act_hi_attachment	16384	0	16384	0	0.016MB
act_ru_task	16384	65536	81920	0	0.078MB
act_id_info	16384	0	16384	0	0.016MB
act_ru_suspended_job	16384	65536	81920	0	0.078MB