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());
}
}