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
ProcessParseHandler 流程解析处理器
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89package org.flowable.engine.impl.bpmn.parser.handler; import java.util.List; import org.flowable.bpmn.model.BaseElement; import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.EventListener; import org.flowable.bpmn.model.ImplementationType; import org.flowable.bpmn.model.Process; import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType; import org.flowable.common.engine.impl.event.FlowableEventSupport; import org.flowable.engine.impl.bpmn.parser.BpmnParse; import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntity; import org.flowable.engine.impl.util.CommandContextUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 流程解析处理器 * * @author Joram Barrez */ public class ProcessParseHandler extends AbstractBpmnParseHandler<Process> { private static final Logger LOGGER = LoggerFactory.getLogger(ProcessParseHandler.class); public static final String PROPERTYNAME_DOCUMENTATION = "documentation"; @Override public Class<? extends BaseElement> getHandledType() { return Process.class; } @Override protected void executeParse(BpmnParse bpmnParse, Process process) { if (!process.isExecutable()) { // 忽略id为“{}”的不可执行进程。设置属性isExecutable=“true”以部署此流程。 LOGGER.info("Ignoring non-executable process with id='{}'. Set the attribute isExecutable="true" to deploy this process.", process.getId()); } else { bpmnParse.getProcessDefinitions().add(transformProcess(bpmnParse, process)); } } protected ProcessDefinitionEntity transformProcess(BpmnParse bpmnParse, Process process) { ProcessDefinitionEntity currentProcessDefinition = CommandContextUtil.getProcessDefinitionEntityManager().create(); bpmnParse.setCurrentProcessDefinition(currentProcessDefinition); /* * 映射对象模型-bpmn xml: * 流程定义id -> 由activiti引擎生成 * 流程定义主键 -> bpmn id (必要的) * 流程定义名称 -> bpmn 名称 (可选) */ currentProcessDefinition.setKey(process.getId()); currentProcessDefinition.setName(process.getName()); currentProcessDefinition.setCategory(bpmnParse.getBpmnModel().getTargetNamespace()); currentProcessDefinition.setDescription(process.getDocumentation()); currentProcessDefinition.setDeploymentId(bpmnParse.getDeployment().getId()); if (bpmnParse.getDeployment().getEngineVersion() != null) { currentProcessDefinition.setEngineVersion(bpmnParse.getDeployment().getEngineVersion()); } createEventListeners(bpmnParse, process.getEventListeners()); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Parsing process {}", currentProcessDefinition.getKey()); } bpmnParse.processFlowElements(process.getFlowElements()); processArtifacts(bpmnParse, process.getArtifacts()); return currentProcessDefinition; } protected void createEventListeners(BpmnParse bpmnParse, List<EventListener> eventListeners) { if (eventListeners != null && !eventListeners.isEmpty()) { for (EventListener eventListener : eventListeners) { // 提取特定事件类型(如果有) FlowableEngineEventType[] types = FlowableEngineEventType.getTypesFromString(eventListener.getEvents()); if (ImplementationType.IMPLEMENTATION_TYPE_CLASS.equals(eventListener.getImplementationType())) { getEventSupport(bpmnParse.getBpmnModel()).addEventListener(bpmnParse.getListenerFactory().createClassDelegateEventListener(eventListener), types); } else if (ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION.equals(eventListener.getImplementationType())) { getEventSupport(bpmnParse.getBpmnModel()).addEventListener(bpmnParse.getListenerFactory().createDelegateExpressionEventListener(eventListener), types); } else if (ImplementationType.IMPLEMENTATION_TYPE_THROW_SIGNAL_EVENT.equals(eventListener.getImplementationType()) || ImplementationType.IMPLEMENTATION_TYPE_THROW_GLOBAL_SIGNAL_EVENT.equals(eventListener.getImplementationType()) || ImplementationType.IMPLEMENTATION_TYPE_THROW_MESSAGE_EVENT.equals(eventListener.getImplementationType()) || ImplementationType.IMPLEMENTATION_TYPE_THROW_ERROR_EVENT.equals(eventListener.getImplementationType())) { getEventSupport(bpmnParse.getBpmnModel()).addEventListener(bpmnParse.getListenerFactory().createEventThrowingEventListener(eventListener), types); } else { // 事件监听器不支持的实现类型:{}元素{} LOGGER.warn("Unsupported implementation type for EventListener: {} for element {}", eventListener.getImplementationType(), bpmnParse.getCurrentFlowElement().getId()); } } } } protected FlowableEventSupport getEventSupport(BpmnModel bpmnModel) { return (FlowableEventSupport) bpmnModel.getEventSupport(); } }
最后
以上就是哭泣发卡最近收集整理的关于Flowable源码注释(四十八)流程解析处理器的全部内容,更多相关Flowable源码注释(四十八)流程解析处理器内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复