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

接上一篇博客

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

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

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

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

这里就是在取的时候需要用一个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<String, List<ExtensionElement>> 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配置文件中启用该解析器,配置如下图:

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

debug信息:

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值