zoukankan      html  css  js  c++  java
  • 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;
        }
  • 相关阅读:
    算法 quick sort
    非常多学ThinkPHP的新手会遇到的问题
    原创jQuery插件之图片自适应
    管理线程之向线程函数传递參数
    [LeetCode]94.Binary Tree Inorder Traversal
    数据库基本概念
    Eclipse4.4 安装java反编译插件Eclipse Class Decompiler
    广义线性模型
    代理模式
    多态之中的一个(继承和虚函数)
  • 原文地址:https://www.cnblogs.com/rgqancy/p/7081192.html
Copyright © 2011-2022 走看看