获取流程节点
@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;
}
跳转流程节点
Flowable6已经实现了流程节点间的跳转,本次就初探一下相关的API。
相关的示例代码在Flowable的开源代码中可以找到,具体的位置如下:
\\modules\\flowable-engine\\src\\test\\java\\org\\flowable\\engine\\test\\api\\runtime\\changestate
代码:
@RequestMapping("/backToStep")
public Object backToStep(String procInstId,String currentSid,String sid) {
runtimeService.createChangeActivityStateBuilder().
processInstanceId(procInstId). //流程实例id
moveActivityIdTo(currentSid,sid). //流程节点的id 是定义审批流时的id 第一个参数当前节点 第二个参数想要跳转的节点 Activity表的ACT_ID_
changeState();
return "page/demo/workflowTrackPage";
}