UNPKG

1.57 kBJavaScriptView Raw
1import BpmnTreeWalker from './BpmnTreeWalker';
2
3
4/**
5 * Import the definitions into a diagram.
6 *
7 * Errors and warnings are reported through the specified callback.
8 *
9 * @param {Diagram} diagram
10 * @param {ModdleElement} definitions
11 * @param {Function} done the callback, invoked with (err, [ warning ]) once the import is done
12 */
13export function importBpmnDiagram(diagram, definitions, done) {
14
15 var importer,
16 eventBus,
17 translate;
18
19 var error,
20 warnings = [];
21
22 /**
23 * Walk the diagram semantically, importing (=drawing)
24 * all elements you encounter.
25 *
26 * @param {ModdleElement} definitions
27 */
28 function render(definitions) {
29
30 var visitor = {
31
32 root: function(element) {
33 return importer.add(element);
34 },
35
36 element: function(element, parentShape) {
37 return importer.add(element, parentShape);
38 },
39
40 error: function(message, context) {
41 warnings.push({ message: message, context: context });
42 }
43 };
44
45 var walker = new BpmnTreeWalker(visitor, translate);
46
47 // traverse BPMN 2.0 document model,
48 // starting at definitions
49 walker.handleDefinitions(definitions);
50 }
51
52 try {
53 importer = diagram.get('bpmnImporter');
54 eventBus = diagram.get('eventBus');
55 translate = diagram.get('translate');
56
57 eventBus.fire('import.render.start', { definitions: definitions });
58
59 render(definitions);
60
61 eventBus.fire('import.render.complete', {
62 error: error,
63 warnings: warnings
64 });
65 } catch (e) {
66 error = e;
67 }
68
69 done(error, warnings);
70}
\No newline at end of file