json-to-bpmn-xml 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -1
- package/dist/index.js +5 -6
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# json-to-bpmn-xml
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/json-to-bpmn-xml)
|
|
4
|
+
|
|
3
5
|
Convert JSON workflow definitions into BPMN 2.0 XML.
|
|
4
6
|
|
|
5
7
|
## Features
|
|
@@ -9,6 +11,16 @@ Convert JSON workflow definitions into BPMN 2.0 XML.
|
|
|
9
11
|
- TypeScript support
|
|
10
12
|
- ESM module
|
|
11
13
|
|
|
14
|
+
## Supported Node Types
|
|
15
|
+
|
|
16
|
+
- start → Start Event
|
|
17
|
+
- end → End Event
|
|
18
|
+
- userTask → User Task
|
|
19
|
+
- serviceTask → Service Task
|
|
20
|
+
- exclusiveGateway → Exclusive Gateway
|
|
21
|
+
|
|
22
|
+
**Note**: This list is not final. Additional BPMN node types are planned and will be added in future releases.
|
|
23
|
+
|
|
12
24
|
## Installation
|
|
13
25
|
|
|
14
26
|
```bash
|
|
@@ -41,7 +53,7 @@ const xml = await convert(model);
|
|
|
41
53
|
|
|
42
54
|
```xml
|
|
43
55
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
44
|
-
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="process_1_definitions" targetNamespace="http://
|
|
56
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="process_1_definitions" targetNamespace="http://www.omg.org/spec/BPMN/20100524/MODEL" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
|
|
45
57
|
<bpmn:process id="process_1" name="Simple Process" isExecutable="false">
|
|
46
58
|
<bpmn:startEvent id="start">
|
|
47
59
|
<bpmn:outgoing>e1</bpmn:outgoing>
|
package/dist/index.js
CHANGED
|
@@ -82,14 +82,13 @@ var DefinitionsBuilder = class {
|
|
|
82
82
|
}
|
|
83
83
|
moddle;
|
|
84
84
|
build(process) {
|
|
85
|
-
|
|
85
|
+
const definitions = this.moddle.create("bpmn:Definitions", {
|
|
86
86
|
id: `${process.id}_definitions`,
|
|
87
|
-
targetNamespace: "http://
|
|
88
|
-
rootElements: [process]
|
|
89
|
-
$attrs: {
|
|
90
|
-
"xsi:schemaLocation": "http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
|
|
91
|
-
}
|
|
87
|
+
targetNamespace: "http://www.omg.org/spec/BPMN/20100524/MODEL",
|
|
88
|
+
rootElements: [process]
|
|
92
89
|
});
|
|
90
|
+
definitions.$attrs["xsi:schemaLocation"] = "http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd";
|
|
91
|
+
return definitions;
|
|
93
92
|
}
|
|
94
93
|
};
|
|
95
94
|
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/converter/BpmnConverter.ts","../src/constants/node-map.ts","../src/builders/node.builder.ts","../src/builders/flow.builder.ts","../src/builders/process.builder.ts","../src/builders/definitions.builder.ts","../src/elk.layout.ts","../src/builders/diagram.builder.ts","../src/index.ts"],"sourcesContent":["import { BpmnModdle } from \"bpmn-moddle\";\nimport { NodeBuilder } from \"../builders/node.builder\";\nimport { FlowBuilder } from \"../builders/flow.builder\";\nimport { ProcessBuilder } from \"../builders/process.builder\";\nimport { DefinitionsBuilder } from \"../builders/definitions.builder\";\nimport { DiagramBuilder } from \"../builders/diagram.builder\";\nimport { ProcessModel } from \"../types/process\";\nimport type { BPMNModdle, FlowNode } from \"bpmn-moddle\";\nimport format from \"xml-formatter\";\n\nexport class BpmnConverter {\n private moddle: BPMNModdle;\n private nodeBuilder: NodeBuilder;\n private flowBuilder: FlowBuilder;\n private processBuilder: ProcessBuilder;\n private definitionsBuilder: DefinitionsBuilder;\n private diagramBuilder: DiagramBuilder;\n\n constructor() {\n this.moddle = new BpmnModdle();\n this.nodeBuilder = new NodeBuilder(this.moddle);\n this.flowBuilder = new FlowBuilder(this.moddle);\n this.processBuilder = new ProcessBuilder(this.moddle);\n this.definitionsBuilder = new DefinitionsBuilder(this.moddle);\n this.diagramBuilder = new DiagramBuilder(this.moddle);\n }\n\n async convert(model: ProcessModel): Promise<string> {\n const elements = this.buildElements(model);\n const elementById = this.buildElementMap(elements);\n\n const flows = this.buildFlows(model, elementById);\n const flowMeta = this.buildFlowMeta(model, flows);\n\n const process = this.processBuilder.build(\n model.id,\n model.name,\n elements,\n flows,\n );\n\n const definitions = this.definitionsBuilder.build(process);\n definitions.diagrams = [\n await this.diagramBuilder.build(process, elements, flowMeta),\n ];\n\n const { xml } = await this.moddle.toXML(definitions);\n return this.normalizeXml(xml);\n }\n\n private buildElements(model: ProcessModel) {\n return model.nodes.map((node) => this.nodeBuilder.build(node));\n }\n\n private buildElementMap(elements: any[]) {\n return new Map(\n elements.map((el) => [String(el.id), el] as [string, FlowNode]),\n );\n }\n\n private buildFlows(model: ProcessModel, elementById: Map<string, FlowNode>) {\n return model.edges.map((edge, index) =>\n this.flowBuilder.build(edge, elementById, index),\n );\n }\n\n private buildFlowMeta(model: ProcessModel, flows: any[]) {\n return model.edges.map((edge, index) =>\n this.flowBuilder.buildMeta(edge, flows[index], index),\n );\n }\n\n private normalizeXml(xml: string) {\n return format(xml, {\n indentation: \" \",\n collapseContent: true,\n lineSeparator: \"\\n\",\n });\n }\n}","import { NodeType } from \"../types/Node\";\n\nexport const NODE_MAP: Record<NodeType, string> = {\n start: \"bpmn:StartEvent\",\n end: \"bpmn:EndEvent\",\n userTask: \"bpmn:UserTask\",\n serviceTask: \"bpmn:ServiceTask\",\n exclusiveGateway: \"bpmn:ExclusiveGateway\",\n parallelGateway: \"bpmn:ParallelGateway\",\n};","import type { BPMNModdle as BPMNModdleInstance } from \"bpmn-moddle\";\nimport { NODE_MAP } from \"../constants/node-map\";\nimport { INode } from \"../types/Node\";\n\nexport class NodeBuilder {\n constructor(private moddle: BPMNModdleInstance) {}\n\n build(node: INode) {\n const type = NODE_MAP[node.type];\n\n return this.moddle.create(type, {\n id: node.id,\n name: node.name,\n });\n }\n}\n","import type { BPMNModdle, FlowNode } from \"bpmn-moddle\";\nimport type { IEdge } from \"../types/edge\";\n\nexport interface FlowMeta {\n id: string;\n source: string;\n target: string;\n flow: any;\n}\n\nexport class FlowBuilder {\n constructor(private moddle: BPMNModdle) {}\n\n build(edge: IEdge, elementById: Map<string, FlowNode>, index: number) {\n const source = elementById.get(String(edge.source));\n const target = elementById.get(String(edge.target));\n\n const flow = this.moddle.create(\"bpmn:SequenceFlow\", {\n id: edge.id ?? `Flow_${index + 1}`,\n name: edge.name,\n sourceRef: source,\n targetRef: target,\n });\n\n if (source) {\n source.outgoing = [...(source.outgoing ?? []), flow];\n }\n\n if (target) {\n target.incoming = [...(target.incoming ?? []), flow];\n }\n\n return flow;\n }\n\n buildMeta(edge: IEdge, flow: any, index: number): FlowMeta {\n return {\n id: String(edge.id ?? `Flow_${index + 1}`),\n source: String(edge.source),\n target: String(edge.target),\n flow,\n };\n }\n}","import type { BPMNModdle } from \"bpmn-moddle\";\n\nexport class ProcessBuilder {\n constructor(private moddle: BPMNModdle) {}\n\n build(id: string, name: string | undefined, elements: any[], flows: any[]) {\n return this.moddle.create(\"bpmn:Process\", {\n id,\n name,\n isExecutable: false,\n flowElements: [...elements, ...flows],\n });\n }\n}","import type { BPMNModdle } from \"bpmn-moddle\";\n\nexport class DefinitionsBuilder {\n constructor(private moddle: BPMNModdle) {}\n\n build(process: any) {\n return this.moddle.create(\"bpmn:Definitions\", {\n id: `${process.id}_definitions`,\n targetNamespace: \"http://bpmn.io/schema/bpmn\",\n rootElements: [process],\n $attrs: {\n \"xsi:schemaLocation\":\n \"http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd\",\n },\n });\n }\n}","import ELK from \"elkjs\";\n\nconst elk = new ELK();\n\nexport async function layoutGraph(nodes: any[], edges: any[]) {\n const graph = {\n id: \"root\",\n\n layoutOptions: {\n \"elk.algorithm\": \"layered\",\n \"elk.direction\": \"RIGHT\",\n\n \"elk.layered.spacing.nodeNodeBetweenLayers\": \"120\",\n \"elk.spacing.nodeNode\": \"80\",\n\n \"elk.layered.nodePlacement.strategy\": \"NETWORK_SIMPLEX\",\n \"elk.layered.crossingMinimization.strategy\": \"LAYER_SWEEP\",\n \"elk.layered.considerModelOrder.strategy\": \"NODES_AND_EDGES\",\n },\n\n children: nodes.map((n) => ({\n id: n.id,\n width: n.width ?? 120,\n height: n.height ?? 80,\n })),\n\n edges: edges.map((e) => ({\n id: e.id,\n sources: [e.source],\n targets: [e.target],\n\n junctionPoints: [],\n })),\n };\n\n return await elk.layout(graph);\n}","import type { BPMNModdle } from \"bpmn-moddle\";\nimport { layoutGraph } from \"../elk.layout\";\nimport type { FlowMeta } from \"./flow.builder\";\n\nconst NODE_SIZE = {\n default: { width: 100, height: 80 },\n start: { width: 36, height: 36 },\n end: { width: 36, height: 36 },\n gateway: { width: 50, height: 50 },\n};\n\nfunction getBounds(type: string) {\n if (type === \"bpmn:StartEvent\" || type === \"bpmn:EndEvent\") {\n return NODE_SIZE.start;\n }\n\n if (type.endsWith(\"Gateway\")) {\n return NODE_SIZE.gateway;\n }\n\n return NODE_SIZE.default;\n}\n\nexport class DiagramBuilder {\n constructor(private moddle: BPMNModdle) {}\n\n async build(process: any, elements: any[], flows: FlowMeta[]) {\n const nodes = elements.map((el) => {\n const bounds = getBounds(el.$type);\n\n return {\n id: String(el.id),\n width: bounds.width,\n height: bounds.height,\n bpmnElement: el,\n };\n });\n\n const edges = flows.map((flow) => ({\n id: String(flow.id),\n source: String(flow.source),\n target: String(flow.target),\n flow: flow.flow,\n }));\n\n const layout = await layoutGraph(nodes, edges);\n\n const nodeMap = new Map(\n (layout.children ?? [])\n .filter((n: any) => n && n.id)\n .map((n: any) => [String(n.id), n]),\n );\n\n const shapes = elements\n .map((element) => {\n const pos = nodeMap.get(String(element.id));\n if (!pos) return null;\n\n const bounds = {\n x: Number(pos.x ?? 0),\n y: Number(pos.y ?? 0),\n width: Number(pos.width ?? NODE_SIZE.default.width),\n height: Number(pos.height ?? NODE_SIZE.default.height),\n };\n\n return this.moddle.create(\"bpmndi:BPMNShape\", {\n id: `${element.id}_di`,\n bpmnElement: element,\n bounds: this.moddle.create(\"dc:Bounds\", bounds),\n });\n })\n .filter(Boolean);\n\n const flowById = new Map(edges.map((f) => [String(f.id), f.flow]));\n\n const edgeWaypoints = (layout.edges ?? [])\n .map((edge: any) => {\n if (!edge || !edge.id) return null;\n\n const section = edge.sections?.[0];\n if (!section) return null;\n\n const points = [\n section.startPoint,\n ...(section.bendPoints ?? []),\n section.endPoint,\n ]\n .filter(\n (point) =>\n point &&\n point.x !== undefined &&\n point.y !== undefined &&\n !Number.isNaN(Number(point.x)) &&\n !Number.isNaN(Number(point.y)),\n )\n .map((point: any) => ({\n x: Number(point.x),\n y: Number(point.y),\n }));\n\n if (points.length < 2) return null;\n\n const flow =\n flowById.get(String(edge.id)) ??\n edges.find(\n (f) =>\n String(f.source) === String(edge.sources?.[0]) &&\n String(f.target) === String(edge.targets?.[0]),\n )?.flow;\n\n if (!flow) return null;\n\n return this.moddle.create(\"bpmndi:BPMNEdge\", {\n id: `${edge.id}_di`,\n bpmnElement: flow,\n waypoint: points.map((point) =>\n this.moddle.create(\"dc:Point\", {\n x: point.x,\n y: point.y,\n }),\n ),\n });\n })\n .filter(Boolean);\n\n const plane = this.moddle.create(\"bpmndi:BPMNPlane\", {\n id: \"BPMNPlane_1\",\n bpmnElement: process,\n planeElement: [...shapes, ...edgeWaypoints],\n });\n\n return this.moddle.create(\"bpmndi:BPMNDiagram\", {\n id: \"BPMNDiagram_1\",\n plane,\n });\n }\n}","import { BpmnConverter } from \"./converter/BpmnConverter\";\nimport type { ProcessModel } from \"./types/process\";\n\nexport async function convert(model: ProcessModel): Promise<string> {\n const converter = new BpmnConverter();\n return await converter.convert(model);\n}\n\nexport type { ProcessModel };\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/converter/BpmnConverter.ts","../src/constants/node-map.ts","../src/builders/node.builder.ts","../src/builders/flow.builder.ts","../src/builders/process.builder.ts","../src/builders/definitions.builder.ts","../src/elk.layout.ts","../src/builders/diagram.builder.ts","../src/index.ts"],"sourcesContent":["import { BpmnModdle } from \"bpmn-moddle\";\nimport { NodeBuilder } from \"../builders/node.builder\";\nimport { FlowBuilder } from \"../builders/flow.builder\";\nimport { ProcessBuilder } from \"../builders/process.builder\";\nimport { DefinitionsBuilder } from \"../builders/definitions.builder\";\nimport { DiagramBuilder } from \"../builders/diagram.builder\";\nimport { ProcessModel } from \"../types/process\";\nimport type { BPMNModdle, FlowNode } from \"bpmn-moddle\";\nimport format from \"xml-formatter\";\n\nexport class BpmnConverter {\n private moddle: BPMNModdle;\n private nodeBuilder: NodeBuilder;\n private flowBuilder: FlowBuilder;\n private processBuilder: ProcessBuilder;\n private definitionsBuilder: DefinitionsBuilder;\n private diagramBuilder: DiagramBuilder;\n\n constructor() {\n this.moddle = new BpmnModdle();\n this.nodeBuilder = new NodeBuilder(this.moddle);\n this.flowBuilder = new FlowBuilder(this.moddle);\n this.processBuilder = new ProcessBuilder(this.moddle);\n this.definitionsBuilder = new DefinitionsBuilder(this.moddle);\n this.diagramBuilder = new DiagramBuilder(this.moddle);\n }\n\n async convert(model: ProcessModel): Promise<string> {\n const elements = this.buildElements(model);\n const elementById = this.buildElementMap(elements);\n\n const flows = this.buildFlows(model, elementById);\n const flowMeta = this.buildFlowMeta(model, flows);\n\n const process = this.processBuilder.build(\n model.id,\n model.name,\n elements,\n flows,\n );\n\n const definitions = this.definitionsBuilder.build(process);\n definitions.diagrams = [\n await this.diagramBuilder.build(process, elements, flowMeta),\n ];\n\n const { xml } = await this.moddle.toXML(definitions);\n return this.normalizeXml(xml);\n }\n\n private buildElements(model: ProcessModel) {\n return model.nodes.map((node) => this.nodeBuilder.build(node));\n }\n\n private buildElementMap(elements: any[]) {\n return new Map(\n elements.map((el) => [String(el.id), el] as [string, FlowNode]),\n );\n }\n\n private buildFlows(model: ProcessModel, elementById: Map<string, FlowNode>) {\n return model.edges.map((edge, index) =>\n this.flowBuilder.build(edge, elementById, index),\n );\n }\n\n private buildFlowMeta(model: ProcessModel, flows: any[]) {\n return model.edges.map((edge, index) =>\n this.flowBuilder.buildMeta(edge, flows[index], index),\n );\n }\n\n private normalizeXml(xml: string) {\n return format(xml, {\n indentation: \" \",\n collapseContent: true,\n lineSeparator: \"\\n\",\n });\n }\n}","import { NodeType } from \"../types/Node\";\n\nexport const NODE_MAP: Record<NodeType, string> = {\n start: \"bpmn:StartEvent\",\n end: \"bpmn:EndEvent\",\n userTask: \"bpmn:UserTask\",\n serviceTask: \"bpmn:ServiceTask\",\n exclusiveGateway: \"bpmn:ExclusiveGateway\",\n parallelGateway: \"bpmn:ParallelGateway\",\n};","import type { BPMNModdle as BPMNModdleInstance } from \"bpmn-moddle\";\nimport { NODE_MAP } from \"../constants/node-map\";\nimport { INode } from \"../types/Node\";\n\nexport class NodeBuilder {\n constructor(private moddle: BPMNModdleInstance) {}\n\n build(node: INode) {\n const type = NODE_MAP[node.type];\n\n return this.moddle.create(type, {\n id: node.id,\n name: node.name,\n });\n }\n}\n","import type { BPMNModdle, FlowNode } from \"bpmn-moddle\";\nimport type { IEdge } from \"../types/edge\";\n\nexport interface FlowMeta {\n id: string;\n source: string;\n target: string;\n flow: any;\n}\n\nexport class FlowBuilder {\n constructor(private moddle: BPMNModdle) {}\n\n build(edge: IEdge, elementById: Map<string, FlowNode>, index: number) {\n const source = elementById.get(String(edge.source));\n const target = elementById.get(String(edge.target));\n\n const flow = this.moddle.create(\"bpmn:SequenceFlow\", {\n id: edge.id ?? `Flow_${index + 1}`,\n name: edge.name,\n sourceRef: source,\n targetRef: target,\n });\n\n if (source) {\n source.outgoing = [...(source.outgoing ?? []), flow];\n }\n\n if (target) {\n target.incoming = [...(target.incoming ?? []), flow];\n }\n\n return flow;\n }\n\n buildMeta(edge: IEdge, flow: any, index: number): FlowMeta {\n return {\n id: String(edge.id ?? `Flow_${index + 1}`),\n source: String(edge.source),\n target: String(edge.target),\n flow,\n };\n }\n}","import type { BPMNModdle } from \"bpmn-moddle\";\n\nexport class ProcessBuilder {\n constructor(private moddle: BPMNModdle) {}\n\n build(id: string, name: string | undefined, elements: any[], flows: any[]) {\n return this.moddle.create(\"bpmn:Process\", {\n id,\n name,\n isExecutable: false,\n flowElements: [...elements, ...flows],\n });\n }\n}","import type { BPMNModdle } from \"bpmn-moddle\";\n\nexport class DefinitionsBuilder {\n constructor(private moddle: BPMNModdle) {}\n\n build(process: any) {\n const definitions = this.moddle.create(\"bpmn:Definitions\", {\n id: `${process.id}_definitions`,\n targetNamespace: \"http://www.omg.org/spec/BPMN/20100524/MODEL\",\n rootElements: [process],\n });\n\n definitions.$attrs![\"xsi:schemaLocation\"] =\n \"http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd\";\n\n return definitions;\n }\n}\n","import ELK from \"elkjs\";\n\nconst elk = new ELK();\n\nexport async function layoutGraph(nodes: any[], edges: any[]) {\n const graph = {\n id: \"root\",\n\n layoutOptions: {\n \"elk.algorithm\": \"layered\",\n \"elk.direction\": \"RIGHT\",\n\n \"elk.layered.spacing.nodeNodeBetweenLayers\": \"120\",\n \"elk.spacing.nodeNode\": \"80\",\n\n \"elk.layered.nodePlacement.strategy\": \"NETWORK_SIMPLEX\",\n \"elk.layered.crossingMinimization.strategy\": \"LAYER_SWEEP\",\n \"elk.layered.considerModelOrder.strategy\": \"NODES_AND_EDGES\",\n },\n\n children: nodes.map((n) => ({\n id: n.id,\n width: n.width ?? 120,\n height: n.height ?? 80,\n })),\n\n edges: edges.map((e) => ({\n id: e.id,\n sources: [e.source],\n targets: [e.target],\n\n junctionPoints: [],\n })),\n };\n\n return await elk.layout(graph);\n}","import type { BPMNModdle } from \"bpmn-moddle\";\nimport { layoutGraph } from \"../elk.layout\";\nimport type { FlowMeta } from \"./flow.builder\";\n\nconst NODE_SIZE = {\n default: { width: 100, height: 80 },\n start: { width: 36, height: 36 },\n end: { width: 36, height: 36 },\n gateway: { width: 50, height: 50 },\n};\n\nfunction getBounds(type: string) {\n if (type === \"bpmn:StartEvent\" || type === \"bpmn:EndEvent\") {\n return NODE_SIZE.start;\n }\n\n if (type.endsWith(\"Gateway\")) {\n return NODE_SIZE.gateway;\n }\n\n return NODE_SIZE.default;\n}\n\nexport class DiagramBuilder {\n constructor(private moddle: BPMNModdle) {}\n\n async build(process: any, elements: any[], flows: FlowMeta[]) {\n const nodes = elements.map((el) => {\n const bounds = getBounds(el.$type);\n\n return {\n id: String(el.id),\n width: bounds.width,\n height: bounds.height,\n bpmnElement: el,\n };\n });\n\n const edges = flows.map((flow) => ({\n id: String(flow.id),\n source: String(flow.source),\n target: String(flow.target),\n flow: flow.flow,\n }));\n\n const layout = await layoutGraph(nodes, edges);\n\n const nodeMap = new Map(\n (layout.children ?? [])\n .filter((n: any) => n && n.id)\n .map((n: any) => [String(n.id), n]),\n );\n\n const shapes = elements\n .map((element) => {\n const pos = nodeMap.get(String(element.id));\n if (!pos) return null;\n\n const bounds = {\n x: Number(pos.x ?? 0),\n y: Number(pos.y ?? 0),\n width: Number(pos.width ?? NODE_SIZE.default.width),\n height: Number(pos.height ?? NODE_SIZE.default.height),\n };\n\n return this.moddle.create(\"bpmndi:BPMNShape\", {\n id: `${element.id}_di`,\n bpmnElement: element,\n bounds: this.moddle.create(\"dc:Bounds\", bounds),\n });\n })\n .filter(Boolean);\n\n const flowById = new Map(edges.map((f) => [String(f.id), f.flow]));\n\n const edgeWaypoints = (layout.edges ?? [])\n .map((edge: any) => {\n if (!edge || !edge.id) return null;\n\n const section = edge.sections?.[0];\n if (!section) return null;\n\n const points = [\n section.startPoint,\n ...(section.bendPoints ?? []),\n section.endPoint,\n ]\n .filter(\n (point) =>\n point &&\n point.x !== undefined &&\n point.y !== undefined &&\n !Number.isNaN(Number(point.x)) &&\n !Number.isNaN(Number(point.y)),\n )\n .map((point: any) => ({\n x: Number(point.x),\n y: Number(point.y),\n }));\n\n if (points.length < 2) return null;\n\n const flow =\n flowById.get(String(edge.id)) ??\n edges.find(\n (f) =>\n String(f.source) === String(edge.sources?.[0]) &&\n String(f.target) === String(edge.targets?.[0]),\n )?.flow;\n\n if (!flow) return null;\n\n return this.moddle.create(\"bpmndi:BPMNEdge\", {\n id: `${edge.id}_di`,\n bpmnElement: flow,\n waypoint: points.map((point) =>\n this.moddle.create(\"dc:Point\", {\n x: point.x,\n y: point.y,\n }),\n ),\n });\n })\n .filter(Boolean);\n\n const plane = this.moddle.create(\"bpmndi:BPMNPlane\", {\n id: \"BPMNPlane_1\",\n bpmnElement: process,\n planeElement: [...shapes, ...edgeWaypoints],\n });\n\n return this.moddle.create(\"bpmndi:BPMNDiagram\", {\n id: \"BPMNDiagram_1\",\n plane,\n });\n }\n}","import { BpmnConverter } from \"./converter/BpmnConverter\";\nimport type { ProcessModel } from \"./types/process\";\n\nexport async function convert(model: ProcessModel): Promise<string> {\n const converter = new BpmnConverter();\n return await converter.convert(model);\n}\n\nexport type { ProcessModel };\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "json-to-bpmn-xml",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "JSON to BPMN XML converter",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"bpmn-moddle": "^10.0.0",
|
|
31
31
|
"dagre": "^0.8.5",
|
|
32
32
|
"elkjs": "^0.11.1",
|
|
33
|
-
"json-to-bpmn-xml": "^1.0.
|
|
33
|
+
"json-to-bpmn-xml": "^1.0.1",
|
|
34
34
|
"xml-formatter": "^3.7.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|