springboot与flowable(8):候选人
一、流程绘制和部署
创建流程图
绘制如下流程图
给人事审批添加候选人
给经理审批添加两个候选人
保存导出流程图
部署流程定义
@Test void contextLoads() { DeploymentBuilder deployment = repositoryService.createDeployment(); deployment.addClasspathResource("process01/HolidayDemo1.bpmn20.xml"); deployment.name("候选人案例"); Deployment deploy = deployment.deploy(); System.out.println("deploy.getId() = " + deploy.getId()); }
二、拾取操作
发起流程
/** * 发起流程 */ @Test public void startProcess() { String id = "HolidayDemo1:1:93caf684-2af9-11ef-910c-644ed7087863"; // 给人事审批候选人进行赋值 Map variables = new HashMap(); variables.put("candidate1", "zhangsan"); variables.put("candidate2", "lisi"); variables.put("candidate3", "wangwu"); // 根据流程定义ID启动流程 ProcessInstance processInstance = runtimeService.startProcessInstanceById(id, variables); }
查看act_ru_task表发现assignee字段中审批人是空的。
根据候选人查询待办信息,并将候选人变更为审批人,进行审批。
/** * 根据用户查询待办信息 */ @Test public void findFlow() { List list = taskService.createTaskQuery().taskCandidateUser("zhangsan").list(); // 根据id进行审批 for (Task task : list) { // 把zhangsan由候选人变更为审批人 taskService.claim(task.getId(), "zhangsan"); completeTask(task.getId()); } } /** * 根据Id审批任务 */ public void completeTask(String taskId) { // 定义经理审批候选人 Map variables = new HashMap(); variables.put("candidate4", "youwangzi1"); variables.put("candidate5", "youwangzi2"); taskService.complete(taskId, variables); }
查看运行时用户关系信息表。
三、归还与指派
归还操作:审批人 -> 候选人
/** * 根据用户查询待办信息 */ @Test public void findFlow() { List list = taskService.createTaskQuery().taskCandidateUser("zhangsan").list(); // 根据id进行审批 for (Task task : list) { // 把zhangsan由候选人变更为审批人 taskService.claim(task.getId(), "zhangsan"); // 可以通过unclaim()方法将审批人归还回候选人。 taskService.unclaim(task.getId()); // completeTask(task.getId()); } }
指派新的审批人
/** * 根据用户查询待办信息 */ @Test public void findFlow() { List list = taskService.createTaskQuery().taskCandidateUser("zhangsan").list(); // 根据id进行审批 for (Task task : list) { // 将当前任务指派给youwangzi用户进行审批 task.setAssignee("youwangzi"); } }
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。