1、原因
UFLO不允许驳回到开始节点,这导致了如果发起人在填写好表单,并且发起流程时,无法知道到达“巴长审核”节点,需要再次点击“填写申请”的流程,这样用户需要操作2次,显得比较繁琐。
2、解决办法
2.1、修改代码
CentralServletHandler.java是控制台的Servlet核心处理类。测试用如下方式可以跳过“填写申请”,直接进入到巴长审核阶段。
public void startProcess(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
long processId=Long.valueOf(req.getParameter("processId"));
/*** 开始 @author qin*@date:2020年3月25日 下午12:37:55**/
// String token = req.getHeader("token");
// String userId = JwtTokenUtil.getUserId(token);
// String userName = JwtTokenUtil.getRealName(token);
StartProcessInfo startProcessInfo = new StartProcessInfo("0510f511a7bca2797fb8a73c02955825","admin");
/*** 结束 @author qin*@date:2020年3月25日 下午12:39:55**/
startProcessInfo.setCompleteStartTask(true);
String variables=req.getParameter("variables");
Map<String,Object> variableMaps=buildVariables(variables);
if(variableMaps!=null){
startProcessInfo.setVariables(variableMaps);
}
ProcessInstance processInstance = processService.startProcessById(processId, startProcessInfo/*null*/);
/*----------------qin--------------------*/
System.out.println("获取下一节点task");
List<Task> l = taskService.loadTaskList(processInstance.getId());
for (Task task : l) {
System.out.println("task id"+task.getId());
taskService.start(task.getId());
taskService.complete(task.getId());
break;
}
/*----------------qin--------------------*/
}
核心添加的代码为:
/*----------------qin--------------------*/
System.out.println("获取下一节点task");
List<Task> l = taskService.loadTaskList(processInstance.getId());
for (Task task : l) {
System.out.println("task id"+task.getId());
taskService.start(task.getId());
taskService.complete(task.getId());
break;
}
/*----------------qin--------------------*/
2.2、配置节点
只能设置为如下
3、测试
如下图所示,已经成功的启动并自动完成了“填写申请”节点