1. 程式人生 > >Activity工作流筆記之——根據任務ID獲取當前活動物件的連線名稱集合

Activity工作流筆記之——根據任務ID獲取當前活動物件的連線名稱集合

/**二:已知任務ID,查詢ProcessDefinitionEntity物件,從而獲取當前任務完成之後的連線名稱,並放置到List<String>集合中*/
	@Override
	public List<String> findOutComeListByTaskId(String taskId) {
		//返回存放連線的名稱集合
		List<String> list = new ArrayList<String>();
		//1:使用任務ID,查詢任務物件
		Task task = taskService.createTaskQuery()
								.taskId(taskId)
								.singleResult();
		//2:獲取流程定義ID
		String processDefinitionId = task.getProcessDefinitionId();
		//3:查詢ProcessDefinitionEntity物件
		ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(processDefinitionId);
		
		//獲取流程例項ID
		String processInstanceId = task.getProcessInstanceId();
		//獲取流程例項
		ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
		//獲取當前活動ID
		String activityId = pi.getActivityId();
		
		//4:獲取當前的活動
		ActivityImpl activityImpl = processDefinitionEntity.findActivity(activityId);
		
		//5:獲取當前活動完成之後連線的名稱
		List<PvmTransition> pvmList = activityImpl.getOutgoingTransitions();
		if(pvmList != null && pvmList.size()>0) {
			for(PvmTransition pvm:pvmList) {
				String name = (String) pvm.getProperty("name");
				if(StringUtils.isNotBlank(name)) {
					list.add(name);
				}else {
					list.add("預設提交");
				}
			}
		}
		
		return list;
	}