Activiti子流程扩展标签

项目地址:activiti-workflow
子流程(Sub-process)是一个包含其他节点,网关,事件等等的节点。 它自己就是一个流程,同时是更大流程的一部分。 子流程只能包含一个空开始事件, 不能使用其他类型的开始事件。
图形标记
子流程显示为标准的节点,圆角矩形。 这时子流程是折叠的,只显示名称和一个加号标记, 展示了高级别的流程总览:
在这里插入图片描述
• 内嵌子流程:定义在主流程内部
• 事务子流程:事件子流程是由事件触发的子流程。 事件子流程可以添加到流程级别或任意子流程级别。用于触发事件子流程的事件是使用开始事件配置的。 为此,事件子流程是不支持空开始事件的。 事件子流程可以被消息事件,错误事件,信号事件,定时器事件,或补偿事件触发。 开始事件的订阅在包含事件子流程的作用域(流程实例或子流程)创建时就会创建。当使用事件子流程时,事件是完全由它添加的子流程处理的。 当使用边界事件时,事件由父流程处理。
• 调用活动(子流程):关联外部一个独立的流程
使用
以调用活动为例:
先创建一个被调用的子流程信用管理流程
在这里插入图片描述
创建主流程订单流程
在这里插入图片描述
在子流程中可以设置入参和出参
在这里插入图片描述
设置参数
在这里插入图片描述
这里的源可以设置为是取主流程的那个流程变量,目标是子流程定义的变量名称,源表达可以没有。
源码分析
//子流程对象

public class CallActivity extends Activity {
   
    protected String calledElement;
    //是否使用主流程变量
    protected boolean inheritVariables;
    //入参
    protected List<IOParameter> inParameters = new ArrayList();
    //出参
    protected List<IOParameter> outParameters = new ArrayList();
    //业务Key
    protected String businessKey;
    //是否使用主流程业务key
    protected boolean inheritBusinessKey;
}

在官方提供的画布中是没有提供inheritVariables和inheritBusinessKey的设置的,需要自定义扩展。
activiti每次操作都会通过ProcessDefinitionUtil.getProcess(String processDefinitionId)将整个流程封装为一个链路,每个节点有关联的入口和出口。
最终通过一系列的调用会执行到这里org.activiti.bpmn.converter.BpmnXMLConverter#convertToBpmnModel
通过层层调用到达org.activiti.bpmn.converter.BaseBpmnXMLConverter#convertXMLToElement,这里主要是将BPMN文件解析为对应类型的对象,比如userTask标签对应的是UserTask对象。
而BaseBpmnXMLConverter的convertXMLToElement是一个抽象方法,activiti是如何确认执行哪一个子类。
看org.activiti.bpmn.converter.BpmnXMLConverter#convertToBpmnModel

 if (activeProcess != null) {
   
     //获取具体执行的子类,这里的xtr.getLocalName()为标签名
     BaseBpmnXMLConverter converter = convertersToBpmnMap.get(xtr.getLocalName());
     converter.convertToBpmnModel(xtr, model, activeProcess, activeSubProcessList);
 }

这里主要的就是convertersToBpmnMap了,在BpmnXMLConverter类里有

protected static Map<String, BaseBpmnXMLConverter> convertersToBpmnMap = new HashMap<String
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值