流程图:
完成上图的流程;
1.部署流程定义
// 1.发布流程
// 1)act_re_deployment 部署信息表
// 2)act_re_model 流程设计模型部署表
// 3)act_re_procdef 流程定义数据表
@Test
public void deploy() {
//获取流程引擎
ProcessEngine processEngine = ProcessEngines
.getDefaultProcessEngine();//会自动加载classPath下的activiti.cfg.xml配置文件
//获取仓库实例:管理流程定义
//所谓的仓库指流程定义文档的两个文件:bpmn文件和流程图片。
Deployment deployment = processEngine.getRepositoryService().createDeployment()
.addClasspathResource("diagrams/helloworld.bpmn")
.addClasspathResource("diagrams/helloworld.png")
.deploy();
//activiti 无法将名称 'extension' 解析为 'element declaration' 组件
//工作空间目录有中文,JAR包路径也不可以有中文
}
2.启动流程
//2.启动流程
// 1)act_ru_execution 运行时流程执行实例表
// 2)act_ru_identitylink 运行时流程人员表,主要存储任务节点与参与者的相关信息
// 3)act_ru_task 运行时任务节点表
// act_ru_variable 运行时流程变量数据表
@Test
public void startProcess() throws Exception {
//获取流程引擎
ProcessEngine processEngine = ProcessEngines
.getDefaultProcessEngine();//会自动加载classPath下的activiti.cfg.xml配置文件
//启动流程
//使用流程定义的Key启动流程
ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey("helloworld");
System.out.println("pid: " + pi.getId() + ",activitiId: " + pi.getActivityId());
}
3.查看个人任务
//3.查看个人任务
@Test
public void queryMyTask() throws Exception {
//指定任务办理者
String assignee = "王五";
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
List<Task> tasks = processEngine.getTaskService().createTaskQuery().taskAssignee(assignee).list();
if (tasks != null && tasks.size() > 0) {
for (Task task : tasks) {
System.out.println("TaskId: " + task.getId() + " TaskName: " + task.getName());
}
}
}
5.完成个人任务
//5.完成个人任务
@Test
public void completeTask() throws Exception{
String taskId = "15002";
//获取流程引擎对象
ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
//完成任务
processEngine.getTaskService().complete(taskId );
System.out.println("任务完成");
}