开始绘流程图,首先右击鼠标可以看到一下图标,都有相对应的意思
画好一个简易的流程过后,可以看到xml文件中已经有了
右击生成png格式的图片
图片点击后就是一个视图的效果
将流程文件部署
@Test
public void testDeploy() {//1.创建流程引擎ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//获取流程存储服务组件RepositoryService repositoryService = processEngine.getRepositoryService();//创建部署对象,配置部署信息Deployment deployment = repositoryService.createDeployment().name("请假流程").addClasspathResource("bpmn/leave.bpmn20.xml").addClasspathResource("bpmn/diagram.png").deploy();System.out.println("部署成功");System.out.println(deployment.getId());System.out.println(deployment.getName());System.out.println(deployment.getKey());processEngine.close();
}
执行成功后可以看到数据库里有相应的信息
部署成功后,我们就可以开始使用啦,老样子还是先创建个流程实例然后从里面获取运行管理类
// 启动流程实例
@Test
public void testStartProcess() {// 1.创建引擎ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();// 2.从中获取RuntimeServiceRuntimeService runtimeService = processEngine.getRuntimeService();// 3.根据流程定义的id启动流程ProcessInstance instance = runtimeService.startProcessInstanceByKey("leave");// 4.输出内容System.out.println("流程定义id = " + instance.getProcessDefinitionId());System.out.println("流程实例id = " + instance.getId());
}
这里注意到Assignee是几个问号的形式,没错别怀疑这是乱码了,因为先前的Name属性中不能输入中文噢
然后开始审批任务
// 完成任务
@Test
public void testCompletTask() {// 还是流程引擎ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();// 获取任务服务组件TaskService taskService = processEngine.getTaskService();//获取李勃蚊在leave中对应的任务 我们已知只有一个任务 可使用singleResult获取一个结果集Task task = taskService.createTaskQuery().processDefinitionKey("leave") // 流程的key.taskAssignee("李勃蚊") // 要查询的负责人.singleResult();// 因为可能有多个待办 所以是一个集合System.out.println("流程实例ID:" + task.getProcessInstanceId());System.out.println("任务ID:" + task.getId());System.out.println("任务负责人:" + task.getAssignee());System.out.println("任务名称:" + task.getName());taskService.complete(task.getId());
}
兰小鹏的审核也是一样的
// 完成任务
@Test
public void testCompletTask2() {// 还是流程引擎ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();// 获取任务服务组件TaskService taskService = processEngine.getTaskService();//获取李勃蚊在leave中对应的任务 我们已知只有一个任务 可使用singleResult获取一个结果集Task task = taskService.createTaskQuery().processDefinitionKey("leave") // 流程的key.taskAssignee("兰小鹏") // 要查询的负责人.singleResult();// 因为可能有多个待办 所以是一个集合System.out.println("流程实例ID:" + task.getProcessInstanceId());System.out.println("任务ID:" + task.getId());System.out.println("任务负责人:" + task.getAssignee());System.out.println("任务名称:" + task.getName());taskService.complete(task.getId());
}
执行完之后去看历史记录