流程节点跳转

获取流程节点

  @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";
		}

Flowable 中节点任意跳转

Flowable各流程节点跳转_flowable 跳转 addflowelement-CSDN博客