上篇介绍了如何安装Activiti的IDE插件,本篇将介绍Activiti项目的构建和核心API。
项目初始化
创建项目
选择菜单File->New->Other…,创建Activiti Project

此时,生成一个类似Maven项目结构的Activiti项目,其src/main/resources
目录下存在一个名为diagrams的包
导入Activiti项目相关jar包
- 选中项目,右键New->Folder,新建lib目录
- 将下列jar包复制到lib目录下



- 展开lib目录,选中所有jar包,右键Build Path->Add To Build Path。此时,项目所需的jar就被导入了
生成Activiti相关数据表及其核心对象
在src/test/java
下创建类TestActiviti,新增测试方法createTable
package junit;
import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngineConfiguration; import org.junit.Test;
public class TestActiviti {
@Test public void createTable() { ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration(); processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver"); processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8"); processEngineConfiguration.setJdbcUsername("root"); processEngineConfiguration.setJdbcPassword("123456");
processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine(); System.out.println("processEngine="+processEngine); } }
|
上面这段代码生成了支撑Activiti的23张数据表及其核心对象——流程引擎对象processEngine,其步骤如下
- 首先,调用ProcessEngineConfiguration类的createStandaloneProcessEngineConfiguration方法生成流程引擎配置对象实例processEngineConfiguration
- 接着,通过processEngineConfiguration对象的setJdbcDriver、setJdbcUrl、setJdbcUsername、setJdbcPassword分别设置数据库驱动、地址、用户名、密码
- 然后,通过processEngineConfiguration对象的setDatabaseSchemaUpdate方法设置数据表的生成策略。其总共有三种策略,选择其中的一种即可
- DB_SCHEMA_UPDATE_FALSE,不自动创建表,工作流相关表必须先创建,否则抛异常
- DB_SCHEMA_UPDATE_CREATE_DROP,每次先删除旧表,再创建新表
- DB_SCHEMA_UPDATE_TRUE,如果表不存在,则自动创建表,否则,直接使用
- 最后,通过processEngineConfiguration对象的buildProcessEngine方法生成核心的流程引擎对象processEngine
在Activiti中,在创建核心的流程引擎对象时会自动建表。如果程序正常执行,mysql会自动建库,然后创建23张表。
小结
- Activiti工作流框架的核心是流程引擎ProcessEngine,其完整功能的实现还需要创建23张底层的数据库表作为支撑
- 在实际情况中,需要先创建ProcessEngineConfiguration对象,设置数据库相关属性及数据库表生成策略,再生成核心的ProcessEngine对象
项目所用到的jar包
下载地址:项目所需jar包
密码:fre5
定义配置文件
在上一节中,学习了使用代码生成数据库表以及获取流程引擎,本节将引入一个配置文件activiti.cfg.xml。
继续上一节的项目,在src/main/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.StandaloneProcessEngineConfiguration"> <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8"> </property> <property name="jdbcUsername" value="root"></property> <property name="jdbcPassword" value="123456"></property> <property name="databaseSchemaUpdate" value="true" ></property> </bean> </beans>
|
对比上一节中的代码,可以发现,两者的配置是一致的。
在TestActiviti中增加测试方法createTable2,获取流程引擎配置对象
@Test public void createTable2() { ProcessEngine processEngine = ProcessEngineConfiguration .createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine(); System.out.println("processEngine="+processEngine); }
|
这样,完整的TestActiviti就如下所示
package junit;
import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngineConfiguration; import org.junit.Test;
public class TestActiviti {
@Test public void createTable() {
ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration .createStandaloneProcessEngineConfiguration(); processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver"); processEngineConfiguration .setJdbcUrl("jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8"); processEngineConfiguration.setJdbcUsername("root"); processEngineConfiguration.setJdbcPassword("123456");
processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine(); System.out.println("processEngine=" + processEngine); }
@Test public void createTable2() { ProcessEngine processEngine = ProcessEngineConfiguration .createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine(); System.out.println("processEngine="+processEngine); } }
|
从createTable2方法可以看出,通过引入配置文件可以使java代码更加简洁
流程引擎的作用
**ProccessEngine是Activiti中最核心的类,其他的类都是由它而来,通过流程引擎,可以创建各个Service,这些Service是调用工作流23张表的服务 **,其分类和作用如下:
服务 |
作用 |
RepositoryService |
管理流程定义 |
RuntimeService |
执行管理,包括启动、推进、删除流程实例等操作 |
TaskService |
任务管理 |
HistoryService |
历史管理(执行完的数据的管理) |
IdentityService |
组织机构管理 |
FormService nguage |
一个可选服务,任务表单管理 |
ManagerService |
—— |
总结
创建流程引擎主要有两种方式
- 纯代码方式,通过代码创建流程引擎以及生成数据库表
- 引入配置文件activiti.cfg.xml,通过加载配置文件来创建流程引擎和数据库表