8张表:
SELECT * FROM act_re_deployment; -- 一 流程部署表
SELECT * FROM act_ge_bytearray; -- 二 流程二进制表
SELECT * FROM act_re_procdef; -- 三 流程定义表
SELECT * FROM act_ru_execution; -- 四 流程正在运行表
SELECT * FROM act_hi_procinst; -- 五 流程实例历史表
SELECT * FROM act_ru_task; -- 六 流程当前任务表
SELECT * FROM act_hi_taskinst; -- 七 流程历史任务表
SELECT * FROM act_hi_actinst; -- 八 流程历史活动节点表
先决工作:
//定义一个成员变量
RepositoryService repositoryService;
RuntimeService runtimeService;
TaskService taskService;
/**
* 获取流程引擎
*/
@Before
public void setUp() throws Exception {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
repositoryService = processEngine.getRepositoryService();
runtimeService = processEngine.getRuntimeService();
taskService = processEngine.getTaskService();
}
1 启动流程
测试代码:
/**
* 启动流程
*/
@Test
public void startProcess() {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("activiti_leave");
String processInstanceId = processInstance.getId();
String activityId = processInstance.getActivityId();
String definitionId = processInstance.getProcessDefinitionId();
System.out.println("流程实例ID:"+processInstanceId);
System.out.println("正在活动的节点ID:"+activityId);
System.out.println("流程定义ID:"+definitionId);
}
2 查询正在运行的实例
测试代码:
/**
* 查询正在运行的实例
*/
@Test
public void queryExecution(){
List<Execution> executionList = runtimeService.createExecutionQuery() //创建正在执行的流程查询对象
.processDefinitionKey("activiti_leave") //根据流程定义的key查询
.orderByProcessInstanceId() //根据流程实例id排序
.desc() //倒序
.list(); //查询出集合
for(Execution execution: executionList){
System.out.println("正在执行的流程对象的id: "+execution.getId());
System.out.println("所属流程实例的id:"+execution.getProcessInstanceId());
System.out.println("正在活动的节点的id: "+execution.getActivityId());
}
}
3 查询任务
测试代码:
/**
* 根据办理人查询任务
*/
@Test
public void queryTaskByAssignee(){
String assignee = "employee";
List<Task> taskList = taskService.createTaskQuery()
.processDefinitionKey("activiti_leave")
.taskAssignee(assignee)
.orderByTaskCreateTime()
.desc()
.list();
for(Task task: taskList){
System.out.println("任务id: "+task.getId());
System.out.println("任务名字: "+task.getName());
System.out.println("任务创建时间: "+task.getCreateTime());
System.out.println("办理人: "+task.getAssignee());
}
}
4 查询任务位置
测试代码:
/**
* 查询当前流程实例状态
*/
@Test
public void queryProInstanceStateByProInstanceId(){
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId("35001").singleResult();
if(processInstance == null){
System.out.println("当前流程已经完成");
}else{
System.out.println("当前流程实例ID:"+processInstance.getId());
System.out.println("当前流程所处的位置:"+processInstance.getActivityId());
}
}
5 完成任务
测试代码:
/**
* 根据办理人查询任务
*/
@Test
public void queryTaskByAssignee(){
String assignee = "employee";
List<Task> taskList = taskService.createTaskQuery()
.processDefinitionKey("activiti_leave")
.taskAssignee(assignee)
.orderByTaskCreateTime()
.desc()
.list();
for(Task task: taskList){
System.out.println("任务id: "+task.getId());
System.out.println("任务名字: "+task.getName());
System.out.println("任务创建时间: "+task.getCreateTime());
System.out.println("办理人: "+task.getAssignee());
}
}
Activiti系列回顾: