環境: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()); }
產生流程實例的方式: app
ProcessInstance processInstance = processEngine.getExecutionService() .startProcessInstanceByKey(ProvideUtils.AppcardJbpm, ProvideUtils.getApplyRoles(), entity.getId());說明:ProvideUtils.AppcardJbpm是常量,保存的是流程圖xml文件的key值;