jbpm4.4 實現撤回功能

環境:spring jbpm java

主要實現類: spring

//撤回
	private void cancelApply(ApplyForCard applyForCard) {
		//撤回流程
		 //一、獲取當前流程執行的節點任務
		TaskService taskService = processEngine.getTaskService();
		Task task = taskService.createTaskQuery().processInstanceId(ProvideUtils.AppcardJbpm+"."+applyForCard.getId()).uniqueResult();
		//二、建立一個指向行業科員的流程
		RepositoryService repositoryService = processEngine.getRepositoryService();  
		ExecutionService executionService = processEngine.getExecutionService();
		ProcessInstance processInstance = executionService.findProcessInstanceById(ProvideUtils.AppcardJbpm+"."+applyForCard.getId());
		String processDefinitionId = processInstance.getProcessDefinitionId();
		 ProcessDefinition pd = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).uniqueResult();  
		 ProcessDefinitionImpl pdi = (ProcessDefinitionImpl)pd; 
		 ActivityImpl sourceActivity =  pdi.findActivity(task.getActivityName());
		 //撤回的目標
		 ActivityImpl destActivity=pdi.findActivity("行業科員");  
		 //建立鏈接
		 TransitionImpl transition = sourceActivity.createOutgoingTransition();  
		 transition.setName("to"+"行業科員");
		 transition.setDestination(destActivity);
		 //添加
		 sourceActivity.addOutgoingTransition(transition);
		 //執行撤回
		 taskService.completeTask(task.getId(),transition.getName());  
	}



說明:參數ApplyForCard是業務對象,綁定在某個流程實例中;

產生流程實例的方式: app

ProcessInstance processInstance = processEngine.getExecutionService()
				.startProcessInstanceByKey(ProvideUtils.AppcardJbpm, ProvideUtils.getApplyRoles(), entity.getId());
說明:ProvideUtils.AppcardJbpm是常量,保存的是流程圖xml文件的key值;
相關文章
相關標籤/搜索