设置流程定义图bpmn
assignee :申请人、审核人
相关操作的表
-- act_re_procdef 流程定义表
-- act_re_deployment 部署表
-- act_ge_property 通用属性表 id 生成策略
-- act_ru_execution 执行对象,流程实例,流程对象
-- act_ru_task 任务表
入门示例:
1. 创建流程引擎及工作流数据表
- 数据库及表可以自动创建,
可以在配置数据库连接时,实现自动创建数据库和表
- 取得ProcessEngine对象
先取得ProcessEngineConfiguration 对象 ,再由该对象来构建ProcessEngine
2. 部署流程
影响的表:
act_re_procdef :流程定义表 :
该表的key属性 是bpmn 的 id决定
该表的name属性 是bpmn 的name 属性决定
act_re_deployment:部署表 :id是由act_ge_property的 next_dbid决定
act_ge_property :通用属性表
3. 启动流程
4. 查看我的个人任务
5. 完成我的个人任务
示例代码:
package com;
import java.util.List;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;
public class ActivitiTest {
/**
* 建表并创建流程引擎对象(核心对象)
*/
@Test
public void createProcessEngine() {
// 获取流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
System.out.println(processEngine);
}
/**
* 部署流程定义 影响的表: act_re_procdef : 流程定义表 : 该表的key属性 是bpmn 的 id决定 该表的name属性
* 是bpmn 的name 属性决定 act_re_deployment:部署表 :id是由act_ge_property的 next_dbid决定
* act_ge_property :通用属性表
*/
@Test
public void deploy() {
// 获取流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取仓库服务的实例
Deployment deployment = processEngine.getRepositoryService()//
.createDeployment()//
.addClasspathResource("bpmn/hello.bpmn")//
.addClasspathResource("bpmn/hello.png")//
.name("报销单流程").deploy();
System.out.println(deployment.getId() + " " + deployment.getName());
}
/**
* 启动流程
*/
@Test
public void startProcess() {
// 获取流程引擎对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 启动流程
// 使用流程定义的key启动流程实例,默认会按照最新版本启动流程实例
ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey("helloprocess");
System.out.println("pid:" + pi.getId() + ",activitiId:" + pi.getActivityId());
}
/**
* 查看任务
* @throws Exception
*/
@Test
public void queryMyTask() throws Exception {
// 指定任务办理者
String assignee = "李四";
// 获取流程引擎对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 查询任务的列表
List<Task> tasks = processEngine.getTaskService().createTaskQuery()// 创建任务查询对象
.taskAssignee(assignee)// 指定个人任务办理人
.list();
// 遍历结合查看内容
for (Task task : tasks) {
System.out.println("taskId:" + task.getId() + ",taskName:" + task.getName());
System.out.println("*************************");
}
}
/**
* 办理任务
* @throws Exception
*/
@Test
public void completeTask() throws Exception {
String taskId = "404";
// 获取流程引擎对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 完成任务
processEngine.getTaskService()
.complete(taskId);
System.out.println("完成任务!");
}
}本文出自 “老牛Java” 博客,请务必保留此出处http://liuyj.blog.51cto.com/2340749/1732941
原文地址:http://liuyj.blog.51cto.com/2340749/1732941