开始绘流程图,首先右击鼠标可以看到一下图标,都有相对应的意思
画好一个简易的流程过后,可以看到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.从中获取RuntimeService
RuntimeService 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());
}
执行完之后去看历史记录