Flowable源码注释(四十九)子流程相关解析处理器

本文深入探讨Flowable引擎中处理子流程的三个关键解析处理器:SubProcessParseHandler、EventSubProcessParseHandler和AdhocSubProcessParseHandler。通过源码注释,详细解析每个处理器的功能和在流程定义中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flowable源码地址:https://github.com/flowable/flowable-engine

Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated

子流程相关解析处理器,包路径:org.flowable.engine.impl.bpmn.parser.handler

SubProcessParseHandler 子流程解析处理器

/**
 * 子流程解析处理器
 *
 * @author Joram Barrez
 */
public class SubProcessParseHandler extends AbstractActivityBpmnParseHandler<SubProcess> {

    @Override
    protected Class<? extends BaseElement> getHandledType() {
        return SubProcess.class;
    }

    @Override
    protected void executeParse(BpmnParse bpmnParse, SubProcess subProcess) {

        // 策略模式,动态设置子流程解析行为
        subProcess.setBehavior(bpmnParse.getActivityBehaviorFactory().createSubprocessActivityBehavior(subProcess));

        bpmnParse.processFlowElements(subProcess.getFlowElements());
        processArtifacts(bpmnParse, subProcess.getArtifacts());

        // 没有用于事件子流程的数据对象
        /*
         * if (!(subProcess instanceof EventSubProcess)) { // parse out any data objects from the template in order to set up the necessary process variables Map<String, Object> variables =
         * processDataObjects(bpmnParse, subProcess.getDataObjects(), activity); activity.setVariables(variables); }
         * 
         * bpmnParse.removeCurrentScope(); bpmnParse.removeCurrentSubProcess();
         * 
         * if (subProcess.getIoSpecification() != null) { IOSpecification ioSpecification = createIOSpecification(bpmnParse, subProcess.getIoSpecification());
         * activity.setIoSpecification(ioSpecification); }
         */

    }

}

EventSubProcessParseHandler 事件子流程解析处理器

package org.flowable.engine.impl.bpmn.parser.handler;

import org.flowable.bpmn.model.BaseElement;
import org.flowable.bpmn.model.EventSubProcess;
import org.flowable.engine.impl.bpmn.parser.BpmnParse;

/**
 * 事件子流程解析处理器
 *
 * @author Joram Barrez
 */
public class EventSubProcessParseHandler extends AbstractActivityBpmnParseHandler<EventSubProcess> {

    @Override
    protected Class<? extends BaseElement> getHandledType() {
        return EventSubProcess.class;
    }

    @Override
    protected void executeParse(BpmnParse bpmnParse, EventSubProcess eventSubProcess) {
        eventSubProcess.setBehavior(bpmnParse.getActivityBehaviorFactory().createEventSubprocessActivityBehavior(eventSubProcess));
        bpmnParse.processFlowElements(eventSubProcess.getFlowElements());
        processArtifacts(bpmnParse, eventSubProcess.getArtifacts());
    }

}

AdhocSubProcessParseHandler 临时子进程解析处理器

package org.flowable.engine.impl.bpmn.parser.handler;

import org.flowable.bpmn.model.AdhocSubProcess;
import org.flowable.bpmn.model.BaseElement;
import org.flowable.bpmn.model.SubProcess;
import org.flowable.engine.impl.bpmn.parser.BpmnParse;

/**
 * 临时子进程解析处理器
 *
 * @author Tijs Rademakers
 */
public class AdhocSubProcessParseHandler extends AbstractActivityBpmnParseHandler<SubProcess> {

    @Override
    protected Class<? extends BaseElement> getHandledType() {
        return AdhocSubProcess.class;
    }

    @Override
    protected void executeParse(BpmnParse bpmnParse, SubProcess subProcess) {

        subProcess.setBehavior(bpmnParse.getActivityBehaviorFactory().createAdhocSubprocessActivityBehavior(subProcess));

        bpmnParse.processFlowElements(subProcess.getFlowElements());
        processArtifacts(bpmnParse, subProcess.getArtifacts());
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值