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;
        }
  • 相关阅读:
    python数据结构之图的实现方法
    大数据将如何颠覆信任危机
    大数据将如何颠覆信任危机
    JQuery的入门(二)
    递归思想
    Jquery的入门(一)
    如果让你写一个消息队列,该如何进行架构设计啊?
    如何解决消息队列的延时以及过期失效问题?消息队列满了以后怎么处理?有几百万消息持续积压 几小时.怎么解决?
    如何保证消息的顺序性?
    如何保证消息在传送的过程中不会丢失?(如何保证消息的可靠性传输?)
  • 原文地址:https://www.cnblogs.com/rgqancy/p/7081192.html
Copyright © 2011-2022 走看看