一.流程图
test1.bpmn,流程图画好之后保存,自动生成test1.png
二.配置信息请参照一的方法
2.1 部署流程定义
//用来获得activiti.cfg.conf文件的信息.调用ProcessEngines的getDefaultProceeEngine方法时会自动加载classpath下名为activiti.cfg.xml文件。
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/**
* 部署流程定义(操作数据表:act_re_deployment、act_re_procdef、act_ge_bytearray)
*/
@Test
public void test4() {
// 获得一个部署构建器对象,用于加载流程定义文件完成流程定义的部署
DeploymentBuilder builder = processEngine.getRepositoryService()
.createDeployment();
// 加载流程定义文件
builder.addClasspathResource("test1.bpmn");
builder.addClasspathResource("test1.png");
// 部署流程定义
Deployment deployment = builder.deploy();
System.out.println(deployment.getId());
}
输出结果:201
2.2查询流程定义列表
/**
* 查询流程定义列表
*/
@Test
public void test5() {
/*
* processEngine.getRepositoryService().createDeploymentQuery().list();
* processEngine
* .getRuntimeService().createProcessInstanceQuery().list();
* processEngine.getTaskService().createTaskQuery().list();
*/
// 流程定义查询对象,用于查询表act_re_procdef
ProcessDefinitionQuery query = processEngine.getRepositoryService()
.createProcessDefinitionQuery();
// 添加过滤条件
query.processDefinitionKey("qjlc");
// 添加排序条件
query.orderByProcessDefinitionVersion().desc();
// 添加分页查询
query.listPage(0, 10);
List<ProcessDefinition> list = query.list();
for (ProcessDefinition pd : list) {
System.out.println(pd.getId());
}
}
输出结果:qjlc:2:2042.3 启动流程实例
什么是流程实例?根据一个流程定义具体的一次执行过程就是一个流程实例,一个流程定义对应多个流程实例(一对多关系).启动流程实例会向表act_ru_execution插入一条数据
/**
* 根据流程定义的id启动一个流程实例
*/
@Test
public void test6() {
String processDefinitionId = "qjlc:1:4";
ProcessInstance processInstance = processEngine.getRuntimeService()
.startProcessInstanceById(processDefinitionId);
System.out.println(processInstance.getId());
}
输出结果:3012.4 查询任务列表
/**
* 查询任务列表
*/
@Test
public void test7() {
TaskQuery query = processEngine.getTaskService().createTaskQuery();
String assignee = "王五";
query.taskAssignee(assignee);
List<Task> list = query.list();
for (Task task : list) {
System.out.println(task.getId() + " " + task.getName());
}
}
输出结果:304 提交请假申请
2.5 办理任务
/**
* 办理任务
*/
@Test
public void test8(){
String taskId= "802";
processEngine.getTaskService().complete(taskId);
}