-
Notifications
You must be signed in to change notification settings - Fork 58
/
exporter.go
83 lines (76 loc) · 2.78 KB
/
exporter.go
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
package bpmn_engine
import (
"github.com/nitram509/lib-bpmn-engine/pkg/bpmn_engine/exporter"
"github.com/nitram509/lib-bpmn-engine/pkg/spec/BPMN20"
)
// AddEventExporter registers an EventExporter instance
func (state *BpmnEngineState) AddEventExporter(exporter exporter.EventExporter) {
state.exporters = append(state.exporters, exporter)
}
func (state *BpmnEngineState) exportNewProcessEvent(processInfo ProcessInfo, xmlData []byte, resourceName string, checksum string) {
event := exporter.ProcessEvent{
ProcessId: processInfo.BpmnProcessId,
ProcessKey: processInfo.ProcessKey,
Version: processInfo.Version,
XmlData: xmlData,
ResourceName: resourceName,
Checksum: checksum,
}
for _, exp := range state.exporters {
exp.NewProcessEvent(&event)
}
}
func (state *BpmnEngineState) exportEndProcessEvent(process ProcessInfo, processInstance ProcessInstanceInfo) {
event := exporter.ProcessInstanceEvent{
ProcessId: process.BpmnProcessId,
ProcessKey: process.ProcessKey,
Version: process.Version,
ProcessInstanceKey: processInstance.instanceKey,
}
for _, exp := range state.exporters {
exp.EndProcessEvent(&event)
}
}
func (state *BpmnEngineState) exportProcessInstanceEvent(process ProcessInfo, processInstance ProcessInstanceInfo) {
event := exporter.ProcessInstanceEvent{
ProcessId: process.BpmnProcessId,
ProcessKey: process.ProcessKey,
Version: process.Version,
ProcessInstanceKey: processInstance.instanceKey,
}
for _, exp := range state.exporters {
exp.NewProcessInstanceEvent(&event)
}
}
func (state *BpmnEngineState) exportElementEvent(process ProcessInfo, processInstance ProcessInstanceInfo, element BPMN20.BaseElement, intent exporter.Intent) {
event := exporter.ProcessInstanceEvent{
ProcessId: process.BpmnProcessId,
ProcessKey: process.ProcessKey,
Version: process.Version,
ProcessInstanceKey: processInstance.instanceKey,
}
info := exporter.ElementInfo{
BpmnElementType: string(element.GetType()),
ElementId: element.GetId(),
Intent: string(intent),
}
for _, exp := range state.exporters {
exp.NewElementEvent(&event, &info)
}
}
func (state *BpmnEngineState) exportSequenceFlowEvent(process ProcessInfo, processInstance ProcessInstanceInfo, flow BPMN20.TSequenceFlow) {
event := exporter.ProcessInstanceEvent{
ProcessId: process.BpmnProcessId,
ProcessKey: process.ProcessKey,
Version: process.Version,
ProcessInstanceKey: processInstance.instanceKey,
}
info := exporter.ElementInfo{
BpmnElementType: string(BPMN20.SequenceFlow),
ElementId: flow.Id,
Intent: string(exporter.SequenceFlowTaken),
}
for _, exp := range state.exporters {
exp.NewElementEvent(&event, &info)
}
}