参考文档:

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;
}

Activiti解析.bpmn文件获得User Task节点的CandidateUsers特性的值的更多相关文章

  1. idea 2019 集成activiti, idea activiti 新建bpmn文件, 解决idea activiti中文乱码

    idea 在线安装activiti插件 1. File-->Settings 2. 点击Plugins, 右侧界面点击Marketplace后在搜索框搜索 actiBPM 注: 网络原因没有加载 ...

  2. 使用XML序列化器生成XML文件和利用pull解析XML文件

    首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...

  3. Activiti图表bpmn对应的xml文件

    当我们绘制了一个bpmn图表,实质是创建了一个xml文件, 右键bpmn文件open  with   xml edit <?xml version="1.0" encodin ...

  4. 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点

    使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...

  5. 解析xml文件 selectSingleNode取不到节点

    今天在做批量生成XML的时候,碰到一个情况 解析xml文件 selectSingleNode一直返回NULL. XML的格式开头有一句这个<CE401Message xmlns="ht ...

  6. Activiti 5.18 流程Model 转成 流程BPMN文件

    直接上代码吧 byte[] bpmnBytes = null; String filename = null; JsonNode editorNode = new ObjectMapper().rea ...

  7. JAVA使用SAX解析XML文件

    在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...

  8. JAVA中使用DOM解析XML文件

    XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...

  9. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...

随机推荐

  1. UVA11988-Broken Keyboard(数组模拟链表)

    Problem UVA11988-Broken Keyboard Accept: 5642  Submit: 34937 Time Limit: 1000 mSec Problem Descripti ...

  2. 转://对于11gR2的集群relink

    对于11gR2的集群relink参考MOS:Do I need to relink the Oracle Clusterware / Grid Infrastructure home after an ...

  3. 最近公共祖先(LCA)模板

    第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和树根结点的序号. 接下来N-1行每行包含两个正整数x.y,表示x结点和y结点之间有一条直接连接的边(数据保证可以构成树). 接下来M行 ...

  4. Windows下面安装并运行composer的步骤

    在composer官网下载得到:https://getcomposer.org/download/ Composer-Setup.exe 安装时注意:安装过程中,会提示你选择php安装目录.一直到ph ...

  5. 转载 多线程实际运用<第七篇>

    多线程实际运用<第七篇> 1.单线程采集100个页面 class Program { static int i = 6991275; static void Main(string[] a ...

  6. Mybatis集成(转)

    文章转自http://blog.csdn.net/l454822901/article/details/51829653 什么是Mybatis MyBatis 本是apache的一个开源项目iBati ...

  7. 梯度下降(Gradient Descent)

    在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法.这里就对梯度下降法做一个完整的总结. 1. 梯度 在微 ...

  8. centos7搭建filebeat

    filebeat的环境搭建 cd /home/elk wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4 ...

  9. POJ1251(Kruskal水题)

    https://vjudge.net/problem/POJ-1251 The Head Elder of the tropical island of Lagrishan has a problem ...

  10. Python写代码的时候为什么要注释?Sun因此被Oracle收购

    导读: 此块分为:1.注释的重要性 2.如何正确注释 注释的重要性 在我们看代码的时候,会遇到很多看不懂得代码,特别是在做项目的时候,代码的注释以及命名习惯的重要性就有了为什么这么说呢? 因为在很多情 ...