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 ...
随机推荐
- mysql列的处理
MySQL 添加列,修改列,删除列 示例:ALTER TABLE tb_financial MODIFY CREATE_TIME DATETIME(3) DEFAULT NULL COMMENT '录 ...
- BZOJ3295:[CQOI2011]动态逆序对(CDQ分治)
Description 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计 ...
- 【转】MySQL理解索引、添加索引的原则
索引用于快速找出在某个列中有一特定值的行.不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行,还需要考虑每次读入数据页的IO开销.而如果采取索引,则可以根据索引指向的页以及记录在 ...
- Oracle 中的一些重要V$ 动态性能视图,系统视图和表
v$database:数据库的信息,如数据库名,创建时间等. v$instance 实例信息,如实例名,启动时间. v$parameter 参数信息,select * from v$parameter ...
- leetcode 104. Maximum Depth of Binary Tree 111. Minimum Depth of Binary Tree
104: class Solution { public: int maxDepth(TreeNode* root) { if(root == NULL) ; int left = maxDepth( ...
- 深入浅出的webpack构建工具---ParallelUglifyPlugin优化压缩(十)
webpack默认提供了UglifyJS插件来压缩JS代码,但是它使用的是单线程压缩代码,也就是说多个js文件需要被压缩,它需要一个个文件进行压缩.所以说在正式环境打包压缩代码速度非常慢(因为压缩JS ...
- Vue2 第一天学习
个人小总结:1年多没有写博客,感觉很多知识点生疏了,虽然工作上能解决问题,但是当别人问到某个知识点的时候,还是迷迷糊糊的,所以坚持写博客是硬道理的,因为大脑不可能把所有的知识点记住,有可能某一天忘了, ...
- springcloud单个服务内存使用详情
查看单个进程的服务占用率 [root@insure dev]# ps -aux|grep claimoauth root ? Sl Dec27 : java -jar /opt/dev/claimoa ...
- 分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较
Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成.不过,略有遗憾的是,据说在淘宝内部,dub ...
- android RadioGroup中设置selector后出现多个别选中的RadioButton的解决办法
在一个RadioGroup组中假如有三个或者以上的RadioButton,当然你需要给这些RadioButton设置selector.设置其中的一个为默认选中状态(在xml中设置).当程序在手机上运行 ...