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;
}
Activiti解析.bpmn文件获得User Task节点的CandidateUsers特性的值的更多相关文章
- idea 2019 集成activiti, idea activiti 新建bpmn文件, 解决idea activiti中文乱码
idea 在线安装activiti插件 1. File-->Settings 2. 点击Plugins, 右侧界面点击Marketplace后在搜索框搜索 actiBPM 注: 网络原因没有加载 ...
- 使用XML序列化器生成XML文件和利用pull解析XML文件
首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...
- Activiti图表bpmn对应的xml文件
当我们绘制了一个bpmn图表,实质是创建了一个xml文件, 右键bpmn文件open with xml edit <?xml version="1.0" encodin ...
- 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点
使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...
- 解析xml文件 selectSingleNode取不到节点
今天在做批量生成XML的时候,碰到一个情况 解析xml文件 selectSingleNode一直返回NULL. XML的格式开头有一句这个<CE401Message xmlns="ht ...
- Activiti 5.18 流程Model 转成 流程BPMN文件
直接上代码吧 byte[] bpmnBytes = null; String filename = null; JsonNode editorNode = new ObjectMapper().rea ...
- JAVA使用SAX解析XML文件
在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...
- JAVA中使用DOM解析XML文件
XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
随机推荐
- 原生js删除元素
//删除id var idObject = document.getElementById('sidebar'); if (idObject != null) idObject.parentNode. ...
- PC端和移动APP端CSS样式初始化
CSS样式初始化分为PC端和移动APP端 1.PC端:使用Normalize.css Normalize.css是一种CSS reset的替代方案. 我们创造normalize.css有下面这几个目的 ...
- Lock和Condition在JDK中ArrayBlockingQueue的应用
ArrayBlockingQueue的实现思路简单描述,ArrayBlockingQueue的底对于互斥访问使用的一个锁.细节参考源码take和put方法: import java.util.conc ...
- 统计硬币 HDU - 2566 (三种解法:线性代数解法,背包解法,奇思妙想解法 >_< )
题号放这里自己去找吧. HDU-2566 这题最开始用的dp,然后,被同学用奇思妙想过了. >_< 开心! -_- !! 然后,被我线性代数给过了. 方法一:dp 将其化为01背包,只 ...
- docker swarm 实例
1.配置三台虚拟机 先在virtualbox上生成三个Linux主机,一个manager1(管理节点),两个工作节点worker1和worker2 1)manager1 userdeMacBook-P ...
- vue学习路由嵌套
1. 路由嵌套和参数传递 传参的两种形式: a.查询字符串:login?name=tom&pwd=123 {{$route.query}} ------ <li><route ...
- Qt之创建并使用静态链接库
1.创建静态链接库 静态库的工程名字 添加包含的模型 更改一下类的名字 我的静态编译库的工程. 写一个简单的静态哭的代码为后面测试静态库使用 cpp代码: #include "staticb ...
- Android学习之基础知识二(build.gradle文件详解)
一.详解build.gradle文件 1.Android Studio是采用Gradle来创建项目的,Gradle是非常先进的构建的项目的工具,基于Groovy领域特定的语言(DSL)来声明项目配置, ...
- day82
今日内容: 1.CBV源码分析: CBV:class base view(基于类的视图函数) FBV:function base view(基于方法的视图函数) 要想使用CBV首先需要导入 from ...
- libgdx学习记录26——Polygon多边形碰撞检测
libgdx中Math封装了Polygon这个类,它是由多个定点进行描述实现的,在进行物体间的碰撞时,物体轮廓有时候是不规则的,这时候可以用一个多边形勾勒出其大概的轮廓,对其进行模拟. Polygon ...