1、把当前流程实例节点展示到前端
@RequestMapping(value = "backToStepPage")
public ModelAndView backToStepPage(String procInstId,String currentSid) {
String procDefId = runtimeService.createProcessInstanceQuery().processInstanceId(procInstId).singleResult().getProcessDefinitionId();
//获取所有节点信息
List<Process> processes = repositoryService.getBpmnModel(procDefId).getProcesses();
List<FlowElement> flowElementList = new ArrayList<> ();
processes.stream().forEach(p->{
flowElementList.addAll(p.getFlowElements().stream()
.filter(start ->start instanceof StartEvent )
.collect(Collectors.toList()));
flowElementList.addAll(p.getFlowElements().stream()
.filter(start ->start instanceof UserTask )
.collect(Collectors.toList()));
flowElementList.addAll(p.getFlowElements().stream()
.filter(start ->start instanceof EndEvent )
.collect(Collectors.toList()));
});
ModelAndView model = new ModelAndView("page/demo/backToStep");
model.addObject("flowElementList",flowElementList);
model.addObject("procInstId",procInstId);
model.addObject("currentSid",currentSid);
return model;
}
2、执行跳转代码
@RequestMapping("/backToStep")
public Object backToStep(String procInstId,String currentSid,String sid) {
runtimeService.createChangeActivityStateBuilder().
processInstanceId(procInstId).
moveActivityIdTo(currentSid,sid).
changeState();
return "page/demo/workflowTrackPage";
}