Activiti獲取當前活動(任務)的出口(動態生成提交按鈕)


  1、設置出口變量

    當一個任務有一個或多個出口時,可以在出口連線出設置判斷條件如圖:

 

    2、根據任務Id獲取出口集合

    public List<String> getOutGoingTransNames(String taskId) {
        List<String> transNames = new ArrayList<>();
        // 1.獲取流程定義
        Task task = this.taskService.createTaskQuery().taskId(taskId).singleResult();
        ProcessDefinitionEntity pd = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(task.getProcessDefinitionId());
        // 2.獲取流程實例
        ProcessInstance pi =runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult(); 
        // 3.通過流程實例查找當前活動的ID
        String activitiId = pi.getActivityId();
        // 4.通過活動的ID在流程定義中找到對應的活動對象
        ActivityImpl activity = pd.findActivity(activitiId);
        // 5.通過活動對象找當前活動的所有出口
         List<PvmTransition> transitions =  activity.getOutgoingTransitions();
        // 6.提取所有出口的名稱,封裝成集合
         for (PvmTransition trans : transitions) {
             String transName = (String) trans.getProperty("name");
             if(StringUtils.isNotBlank(transName)){
                 transNames.add(transName);
             }
        }
         if(transNames.size()==0){
             transNames.add("提交");//默認
         }
        return transNames;
    }

  3、應用

    在頁面展示的時候遍歷節點出口,在提交的時候傳入相應的提交出口名稱

    提交代碼:

     Map<String, Object> vars = new HashMap<>();
        vars.put("outcome", outcome);//outcome為提交按鈕的名稱
    // 完成任務
    taskService.complete(taskId,vars);

 

      

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM