1.Activiti的Eclipse插件Activiti Designer安装
Activiti有一个Eclipse插件,Activiti Eclipse Designer,可用于图形化建模、测试、部署 BPMN 2.0的流程。这样就不用我们自己去编写繁琐的流程文件了。
具体安装方法见手册。
打开 Help-> Install New Software.在如下面板中 , 点击 Add 按钮, 然后填入下列字段:
Name: Activiti BPMN 2.0 designer
Location: http://activiti.org/designer/update/
然后一步步的安装就可以了。
2.maven构造项目
添加依赖如下:
<!-- 测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- activiti相关依赖 -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>5.16</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-bpmn-converter</artifactId>
<version>5.16</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-bpmn-model</artifactId>
<version>5.16</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-bpmn-layout</artifactId>
<version>5.16</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.7</version>
</dependency>
<!-- 数据库连接 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
<!-- activiti与spring整合依赖 -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>5.16</version>
</dependency>
<!-- log4J日志相关依赖 -->
<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>
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 id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<!-- <property name="databaseSchemaUpdate" value="drop-create" /> -->
<property name="databaseSchemaUpdate" value="update" />
<property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf-8" />
<property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
<property name="jdbcUsername" value="root" />
<property name="jdbcPassword" value="admin" />
<!-- <property name="jobExecutorActivate" value="true" /> -->
</bean>
<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration"></property>
</bean>
</beans>
4.资源目录下log4j.properties打印日志的配置
log4j.rootLogger=DEBUG, CA
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
5.获取默认引擎进行测试
注: 此方式默认文件名字就是activiti.cfg.xml
public class AppTest {
/**
* 获取默认流程引擎,所有配置都是默认的
*/
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/**
* 布置流程 (操作数据表 act_re_deployment,act_re_procdef,act_ge_bytearray
*
*/
@Test
public void createDeployment() {
DeploymentBuilder builder = processEngine.getRepositoryService().createDeployment();
builder.addClasspathResource("MyProcess.bpmn");
builder.addClasspathResource("MyProcess.png");
Deployment deploy = builder.deploy();
System.out.println(deploy.getId());
}
}
6.手动加载配置文件的方式获取引引擎
6.1同样是资源目录配置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="databaseSchemaUpdate" value="drop-create" />
<property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf-8" />
<property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
<property name="jdbcUsername" value="root" />
<property name="jdbcPassword" value="admin" />
<property name="jobExecutorActivate" value="true" />
</bean>
</beans>
6.2手动加载方式activiti.cfg.xml
public class App {
@Test
public void createProcess() {
// 加载配置文件
ProcessEngine processEngine = ProcessEngineConfiguration
.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
RuntimeService runtimeService = processEngine.getRuntimeService();
repositoryService.createDeployment().addClasspathResource("MyProcess.bpmn").deploy();
String processId = runtimeService.startProcessInstanceByKey("myProcess").getId();
System.out.println("创建表成功,processId=" + processId);
}
}
7.Activiti创建各表的意义
Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。
ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程 实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等
ACT_GE_*: 通用数据, 用于不同场景下,如存放资源文件。
资源库流程规则表
1) act_re_deployment 部署信息表
2) act_re_model 流程设计模型部署表
3) act_re_procdef 流程定义数据表
运行时数据库表
1) act_ru_execution运行时流程执行实例表
2) act_ru_identitylink运行时流程人员表,主要存储任务节点与参与者的相关信息
3) act_ru_task运行时任务节点表
4) act_ru_variable运行时流程变量数据表
历史数据库表
1) act_hi_actinst 历史节点表
2) act_hi_attachment历史附件表
3) act_hi_comment历史意见表
4) act_hi_identitylink历史流程人员表
5) act_hi_detail历史详情表,提供历史变量的查询
6) act_hi_procinst历史流程实例表
7) act_hi_taskinst历史任务实例表
8) act_hi_varinst历史变量表
组织机构表
1)act_id_group用户组信息表
2)act_id_info用户扩展信息表
3)act_id_membership用户与用户组对应信息表
4)act_id_user用户信息表
这四张表很常见,基本的组织机构管理,关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足
通用数据表
1) act_ge_bytearray二进制数据表
2) act_ge_property属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录,