Activiti 5.22 Modeler自定义属性 使用时取出

接上一篇博客

https://blog.csdn.net/BovinLee/article/details/90673442

,activiti加入了自定义属性,可使用时如何取出来呢,网上也说的五花八门,但我发现都好复杂并且有些博客讲的只晒了部分代码,这对新手来说白开心一场,本博客主要是讲解如何取出自定义属性:

上一篇博客的自定义属性的xml长这样子:

当然我项目中不是这个属性,但结构是一样的,如下图:

Activiti 5.22 Modeler自定义属性 使用时取出_第1张图片

这里就是在取的时候需要用一个handler处理一下:

import org.activiti.bpmn.model.ExtensionElement;
import org.activiti.bpmn.model.UserTask;
import org.activiti.engine.impl.bpmn.parser.BpmnParse;
import org.activiti.engine.impl.bpmn.parser.handler.UserTaskParseHandler;
import org.activiti.engine.impl.pvm.process.ActivityImpl;

import java.util.List;
import java.util.Map;

public class ExtensionUserTaskParseHandler extends UserTaskParseHandler {
    @Override
    protected void executeParse(BpmnParse bpmnParse, UserTask userTask) {
        //调用上层的解析
        super.executeParse(bpmnParse, userTask);
        //userTask有获取拓展元素的集合
        Map> extensionElements = userTask.getExtensionElements();
        ActivityImpl activity = bpmnParse.getCurrentScope().findActivity(userTask.getId());
        for (String ex:extensionElements.keySet()) {
            for (ExtensionElement e:extensionElements.get(ex)) {
                System.out.println(e.getNamespacePrefix()+"="+e.getName()+":"+e.getElementText());
                //把key即自定义属性名和value(自定义属性值)存入activity的属性中
                activity.setProperty(ex, e.getElementText());
            }
        }
    }
}

需要在activiti的xml配置文件中启用该解析器,配置如下图:

Activiti 5.22 Modeler自定义属性 使用时取出_第2张图片

重启应用,就可以用activity.getProperty("selectoffice")得到自定义属性了,activity(ActivityImpl) 这个的获取方法不用说了吧,百度一下;当然如果在设计modelor时没有给自定义属性赋值,则解析不到额。

debug信息:

Activiti 5.22 Modeler自定义属性 使用时取出_第3张图片

 

你可能感兴趣的:(Activiti)