Activiti——HelloWorld-模拟流程执行(三)

来源:互联网 发布:nginx 500错误日志 编辑:程序博客网 时间:2024/06/13 09:00

1.流程图

【流程原图】
【注释图】  


  

2.部署流程定义

 /** * 部署流程定义 */@Testpublic void deploymentProcessDefinition() {Deployment deployment = processEngine.getRepositoryService()// 与流程定义和部署对象相关的Service.createDeployment()// 创建一个部署对象.name("HelloWorld入门程序")// 添加部署的名称.addClasspathResource("diagrans/helloword.bpmn")// 从类路径(classpath)下加载文件,一次只能加载一个文件.addClasspathResource("diagrans/helloword.png")// 从类路径(classpath)下加载文件,一次只能加载一个文件.deploy();// 完成部署System.out.println("=======打印部署对象信息========");System.out.println("流程ID:" + deployment.getId());// 流程ID:2501System.out.println("流程部署名称:" + deployment.getName());// 流程部署名称:HelloWorld入门程序System.out.println(deployment);// DeploymentEntity[id=1,name=HelloWorld入门程序]}
这里使用RepositoryService部署流程定义

addClasspathResource 从类路径(classpath)下加载文件,一次只能加载一个文件

3.启动流程实例

 /** * 启动流程实例 */@Testpublic void startProcessInstance() {// 流程定义的KeyString processDefinitionKey = "helloworld";ProcessInstance processInstance = processEngine.getRuntimeService()// 与正在执行的流程实例和执行对象相关的Service.startProcessInstanceByKey(processDefinitionKey);// 使用流程定义的key启动流程实例,key对应helloworld.bpmn文件中id的属性System.out.println("流程实例ID:" + processInstance.getId());// 流程实例ID:5001System.out.println("流程定义ID:" + processInstance.getProcessDefinitionId());// 流程定义ID:helloworld:1:2504}
这里使用RuntimeService启动流程实例


4.查看个人任务

/** * 查看我的个人任务 */@Testpublic void queryMyTasks() {String assignee = "张三";List<Task> list = processEngine.getTaskService()// 获得任务相关的Service.createTaskQuery()// 创建任务查询对象.taskAssignee(assignee)// 指定个人任务查询:办理人.list();// 任务列表打印if (list != null && list.size() > 0) {for (Task task : list) {System.out.println("任务ID:" + task.getId());System.out.println("任务名称:" + task.getName());System.out.println("任务的创建时间:" + task.getCreateTime());System.out.println("任务的办理人:" + task.getAssignee());System.out.println("流程实例ID:" + task.getProcessInstanceId());System.out.println("执行对象ID:" + task.getExecutionId());System.out.println("流程定义ID:" + task.getProcessDefinitionId());System.out.println("==============快乐分割线=================");}}/**打印预期效果: 任务ID:5004任务名称:提交申请任务的创建时间:Mon Jun 05 16:16:47 CST 2017任务的办理人:张三流程实例ID:5001执行对象ID:5001流程定义ID:helloworld:1:2504==============快乐分割线=================*/}


这里使用TaskService完成任务查询



4.完成我的任务

/** * 完成我的任务 */@Testpublic void completeMyTasks() {String taskId = "5004";processEngine.getTaskService()//获取正在执行任务管理相关的Service.complete(taskId);System.out.println("完成的任务ID:"+taskId);}




备注:此时流程依次执行的顺序是

【张三】发起申请(启动流程实例)——> 【张三】查看个人任务并完成任务——> 【李四】查看个人任务并完成任务——>【王五】查看个人任务并完成任务——>流程结束。


源码下载