一、IDEA安装activiti插件
在插件库中查找actiBPM,安装该插件,如果找不到该插件,请到插件库中下载该包手动安装,插件地址
http://plugins.jetbrains.com/plugin/7429-actibpm 安装后重启IDEA
二、activiti基础环境搭建
2.1 actiBPM插件使用示例
将需要用到的activiti包引入到工程中
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>5.17.0</version>
</dependency>
resources目录下创建diagrams文件夹
右键new,点击BpmnFeil,然后取个名
鼠标左键拖拽StartEvent到界面上,同样再弄几个其他图标
鼠标放到图标中心会变成黑白扇形,拖拽连线到另一个图标进行画图
生成png文件
右键点击hello.bpmn,选择Diagrams
点击箭头指的图标,选择生成位置即可
2.2 初始化activiti表结构
2.2.1 通过代码创建工作流使用的表
public class TestActiviti {
/**
* 使用代码创建工作流使用的23张表
*/
@Test
public void createTable(){
//创建引擎配置类
ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
configuration.setJdbcDriver("com.mysql.jdbc.Driver");
configuration.setJdbcUrl("jdbc:mysql://192.168.27.14:3306/activiti");
configuration.setJdbcUsername("root");
configuration.setJdbcPassword("root");
//不自动创建表,需要表存在 DB_SCHEMA_UPDATE_FALSE = "false";
//先删除表,再创建表 DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop";
//如果表不存在,先创建表 DB_SCHEMA_UPDATE_TRUE = "true";
configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
//创建工作流核心对象
ProcessEngine processEngine = configuration.buildProcessEngine();
System.out.println(processEngine);
}
}
2.2.2 通过配置文件方式配置数据库等,resourses目录下添加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://192.168.27.14:3306/activiti?characterEncoding=utf8"/>
<property name="jdbcUsername" value="root"/>
<property name="jdbcPassword" value="root"/>
<!-- 不自动创建表,需要表存在 "false";
先删除表,再创建表 "create-drop";
如果表不存在,先创建表"true";
-->
<property name="databaseSchemaUpdate" value="true"/>
</bean>
</beans>
@Test
public void createTable2(){
ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml")
.buildProcessEngine();
}
2.2.3 那么,能不能再给力一点?前面看到了两种创建ProcessEngine(流程引擎)的方式,而这里要简化很多,调用ProcessEngines的getDefaultProceeEngine方法时会自动加载classpath下名为activiti.cfg.xml文件。
@Test
public void createTable3(){
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
}
三、activiti核心api讲解
3.1ProcessEngine
在Activiti中最核心的类,其他的类都是由他而来,由工作流引擎可以创建各个Service,这些Service是调用工作流23张表的服务
@Test
public void getService(){
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//管理流程定义
RepositoryService repositoryService = processEngine.getRepositoryService();
//执行管理,包括启动、推进、删除流程实例等
RuntimeService runtimeService = processEngine.getRuntimeService();
//任务管理
TaskService taskService = processEngine.getTaskService();
//历史管理(执行完的数据的管理
HistoryService historyService = processEngine.getHistoryService();
//组织机构管理
IdentityService identityService = processEngine.getIdentityService();
//可选服务,任务表单管理
FormService formService = processEngine.getFormService();
ManagementService managementService = processEngine.getManagementService();
}
3.2 RepositoryService
是Activiti的仓库服务类。所谓的仓库指流程定义文档的两个文件:bpmn文件和流程图片。