Activiti解析.bpmn文件獲得User Task節點的CandidateUsers特性的值


參考文檔:

http://www.cnblogs.com/mingforyou/p/5351332.html

http://blog.csdn.net/jackyrongvip/article/details/9256531

 

    /**
     * getJobProcessDefinitionMap
     * 查找UserTask節點中CandidateUsers不空的流程,並按照CandidateUser分類存儲流程列表。
     * @param  @return    設定文件
     * @return Map<String,Set<ProcessDefinition>>    DOM對象
     * @throws 
     * @since  CodingExample Ver 1.1
     */
    private Map<String,Set<ProcessDefinition>> getJobProcessDefinitionMap() {
        Map<String, Set<ProcessDefinition>> jobProcessDefinitionCaditateMap = new HashMap<String,Set<ProcessDefinition>>();

        List<ProcessDefinition> processDefinitionList = findLastVersionProcessDefinition();

        for(ProcessDefinition processDefinition : processDefinitionList){
            BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
            List<org.activiti.bpmn.model.Process> processList = bpmnModel.getProcesses();
            if(processList != null && processList.size() > 0){
                for(org.activiti.bpmn.model.Process process : processList){
                    if(process != null){
                        Collection<FlowElement> flowElementCollection = process.getFlowElements();
                        if(flowElementCollection != null && flowElementCollection.size() > 0){
                            for(FlowElement flowElement : flowElementCollection){
                                if(flowElement instanceof UserTask){
                                    UserTask userTask = (UserTask)flowElement;
                                    List<String> candidateUsers = userTask.getCandidateUsers();
                                    if(candidateUsers != null && candidateUsers.size() > 0){
                                        for(String candidateUser : candidateUsers){
                                            if(!StringUtils.isBlank(candidateUser)){
                                                Set<ProcessDefinition> processDefinitionCaditateSet = null;
                                                if(jobProcessDefinitionCaditateMap.containsKey(candidateUser)){
                                                    processDefinitionCaditateSet = jobProcessDefinitionCaditateMap.get(candidateUser);
                                                }else{
                                                    processDefinitionCaditateSet = new HashSet<ProcessDefinition>();
                                                    jobProcessDefinitionCaditateMap.put(candidateUser, processDefinitionCaditateSet);
                                                }
                                                if(!processDefinitionCaditateSet.contains(processDefinition)){
                                                    processDefinitionCaditateSet.add(processDefinition);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        return jobProcessDefinitionCaditateMap;
    }

 


免責聲明!

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



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