mirror of
https://github.com/sartography/cr-connect-bpmn.git
synced 2025-02-02 11:56:50 +00:00
Converts DMN files to 1.3
This commit is contained in:
parent
442b3e847a
commit
97e020ea9a
63
package-lock.json
generated
63
package-lock.json
generated
@ -18,6 +18,7 @@
|
|||||||
"@angular/platform-browser": "^12.2.0",
|
"@angular/platform-browser": "^12.2.0",
|
||||||
"@angular/platform-browser-dynamic": "^12.2.0",
|
"@angular/platform-browser-dynamic": "^12.2.0",
|
||||||
"@angular/router": "^12.2.0",
|
"@angular/router": "^12.2.0",
|
||||||
|
"@bpmn-io/dmn-migrate": "^0.4.3",
|
||||||
"@ngx-formly/core": "^5.10.22",
|
"@ngx-formly/core": "^5.10.22",
|
||||||
"@ngx-formly/material": "^5.10.22",
|
"@ngx-formly/material": "^5.10.22",
|
||||||
"@sentry/browser": "^5.30.0",
|
"@sentry/browser": "^5.30.0",
|
||||||
@ -2610,6 +2611,36 @@
|
|||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@bpmn-io/dmn-migrate": {
|
||||||
|
"version": "0.4.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@bpmn-io/dmn-migrate/-/dmn-migrate-0.4.3.tgz",
|
||||||
|
"integrity": "sha512-l4VOUoqGV9Me13EFDJZVOmw+lM0+gKaafzhXpK2z6gcqiwJhsBQ4J4AFHkJmCeZqpZaOUQLAG2klieIJVG5q6w==",
|
||||||
|
"dependencies": {
|
||||||
|
"dmn-moddle": "^8.0.0",
|
||||||
|
"ids": "^1.0.0",
|
||||||
|
"min-dash": "^3.5.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@bpmn-io/dmn-migrate/node_modules/dmn-moddle": {
|
||||||
|
"version": "8.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/dmn-moddle/-/dmn-moddle-8.0.4.tgz",
|
||||||
|
"integrity": "sha512-7pVmt6Jr44cEleQeaitYx1InSEgU993LBbskEug/UUwfoR72ZdszHiSwfDIP5hUnc+dJylIgMbz10MXbQSld7g==",
|
||||||
|
"dependencies": {
|
||||||
|
"min-dash": "^3.0.0",
|
||||||
|
"moddle": "^5.0.1",
|
||||||
|
"moddle-xml": "^8.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@bpmn-io/dmn-migrate/node_modules/moddle-xml": {
|
||||||
|
"version": "8.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/moddle-xml/-/moddle-xml-8.0.8.tgz",
|
||||||
|
"integrity": "sha512-JzW8wUCH7Qze7eh0T8A1exi7QJg6hRgq+uw8goHNP5Q7pWTGrLj83S+NgA/94M2I0JmqnK9hw3sCbyiKVOjc4Q==",
|
||||||
|
"dependencies": {
|
||||||
|
"min-dash": "^3.0.0",
|
||||||
|
"moddle": "^5.0.1",
|
||||||
|
"saxen": "^8.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@bpmn-io/element-templates-validator": {
|
"node_modules/@bpmn-io/element-templates-validator": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@bpmn-io/element-templates-validator/-/element-templates-validator-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@bpmn-io/element-templates-validator/-/element-templates-validator-0.2.0.tgz",
|
||||||
@ -23097,6 +23128,38 @@
|
|||||||
"to-fast-properties": "^2.0.0"
|
"to-fast-properties": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@bpmn-io/dmn-migrate": {
|
||||||
|
"version": "0.4.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@bpmn-io/dmn-migrate/-/dmn-migrate-0.4.3.tgz",
|
||||||
|
"integrity": "sha512-l4VOUoqGV9Me13EFDJZVOmw+lM0+gKaafzhXpK2z6gcqiwJhsBQ4J4AFHkJmCeZqpZaOUQLAG2klieIJVG5q6w==",
|
||||||
|
"requires": {
|
||||||
|
"dmn-moddle": "^8.0.0",
|
||||||
|
"ids": "^1.0.0",
|
||||||
|
"min-dash": "^3.5.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"dmn-moddle": {
|
||||||
|
"version": "8.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/dmn-moddle/-/dmn-moddle-8.0.4.tgz",
|
||||||
|
"integrity": "sha512-7pVmt6Jr44cEleQeaitYx1InSEgU993LBbskEug/UUwfoR72ZdszHiSwfDIP5hUnc+dJylIgMbz10MXbQSld7g==",
|
||||||
|
"requires": {
|
||||||
|
"min-dash": "^3.0.0",
|
||||||
|
"moddle": "^5.0.1",
|
||||||
|
"moddle-xml": "^8.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"moddle-xml": {
|
||||||
|
"version": "8.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/moddle-xml/-/moddle-xml-8.0.8.tgz",
|
||||||
|
"integrity": "sha512-JzW8wUCH7Qze7eh0T8A1exi7QJg6hRgq+uw8goHNP5Q7pWTGrLj83S+NgA/94M2I0JmqnK9hw3sCbyiKVOjc4Q==",
|
||||||
|
"requires": {
|
||||||
|
"min-dash": "^3.0.0",
|
||||||
|
"moddle": "^5.0.1",
|
||||||
|
"saxen": "^8.1.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"@bpmn-io/element-templates-validator": {
|
"@bpmn-io/element-templates-validator": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@bpmn-io/element-templates-validator/-/element-templates-validator-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@bpmn-io/element-templates-validator/-/element-templates-validator-0.2.0.tgz",
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
"@angular/platform-browser": "^12.2.0",
|
"@angular/platform-browser": "^12.2.0",
|
||||||
"@angular/platform-browser-dynamic": "^12.2.0",
|
"@angular/platform-browser-dynamic": "^12.2.0",
|
||||||
"@angular/router": "^12.2.0",
|
"@angular/router": "^12.2.0",
|
||||||
|
"@bpmn-io/dmn-migrate": "^0.4.3",
|
||||||
"@ngx-formly/core": "^5.10.22",
|
"@ngx-formly/core": "^5.10.22",
|
||||||
"@ngx-formly/material": "^5.10.22",
|
"@ngx-formly/material": "^5.10.22",
|
||||||
"@sentry/browser": "^5.30.0",
|
"@sentry/browser": "^5.30.0",
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
import { FileType } from 'sartography-workflow-lib';
|
import { FileType } from 'sartography-workflow-lib';
|
||||||
|
|
||||||
export const getDiagramTypeFromXml = (xml: string): FileType => (xml && xml.includes('dmndi:DMNDiagram') ? FileType.DMN : FileType.BPMN);
|
export const getDiagramTypeFromXml = (xml: string): FileType => {
|
||||||
|
return (xml && /dmn\.xsd|dmndi:DMNDiagram/.test(xml) ? FileType.DMN : FileType.BPMN);
|
||||||
|
};
|
||||||
|
@ -29,6 +29,7 @@ import { bpmnModelerConfig } from './bpmn-modeler-config';
|
|||||||
import { dmnModelerConfig } from './dmn-modeler-config';
|
import { dmnModelerConfig } from './dmn-modeler-config';
|
||||||
import { getDiagramTypeFromXml } from '../_util/diagram-type';
|
import { getDiagramTypeFromXml } from '../_util/diagram-type';
|
||||||
import isEqual from 'lodash.isequal';
|
import isEqual from 'lodash.isequal';
|
||||||
|
import { migrateDiagram } from '@bpmn-io/dmn-migrate';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-diagram',
|
selector: 'app-diagram',
|
||||||
@ -138,11 +139,15 @@ export class DiagramComponent implements ControlValueAccessor, AfterViewInit, On
|
|||||||
}
|
}
|
||||||
|
|
||||||
openDiagram(xml?: string, diagramType?: FileType) {
|
openDiagram(xml?: string, diagramType?: FileType) {
|
||||||
|
console.log('openDiagram > diagramType', diagramType);
|
||||||
this.diagramType = diagramType || getDiagramTypeFromXml(xml);
|
this.diagramType = diagramType || getDiagramTypeFromXml(xml);
|
||||||
|
|
||||||
|
console.log('openDiagram > this.diagramType', this.diagramType);
|
||||||
|
|
||||||
this.xml = xml;
|
this.xml = xml;
|
||||||
const modeler = this.initializeModeler(diagramType);
|
const modeler = this.initializeModeler(diagramType);
|
||||||
|
|
||||||
return this.zone.run(() => {
|
return this.zone.run(async () => {
|
||||||
const isDMN = diagramType === FileType.DMN;
|
const isDMN = diagramType === FileType.DMN;
|
||||||
|
|
||||||
if (!xml) {
|
if (!xml) {
|
||||||
@ -154,7 +159,9 @@ export class DiagramComponent implements ControlValueAccessor, AfterViewInit, On
|
|||||||
// Add an arbitrary string to get the save button to enable
|
// Add an arbitrary string to get the save button to enable
|
||||||
if (isDMN) {
|
if (isDMN) {
|
||||||
// DMN Modeler takes a callback
|
// DMN Modeler takes a callback
|
||||||
this.modeler.importXML(xml, (e, w) => this.onImport(e, w || e && e.warnings));
|
// Convert any v1.1 or 1.2 DMN files to v1.3
|
||||||
|
const convertedXML = await this.convertDMN(xml);
|
||||||
|
this.modeler.importXML(convertedXML, (e, w) => this.onImport(e, w || e && e.warnings));
|
||||||
} else {
|
} else {
|
||||||
// BPMN Modeler returns a Promise
|
// BPMN Modeler returns a Promise
|
||||||
this.modeler.importXML(xml).then(
|
this.modeler.importXML(xml).then(
|
||||||
@ -376,4 +383,8 @@ export class DiagramComponent implements ControlValueAccessor, AfterViewInit, On
|
|||||||
return `${this.fileName}_${dateString}.${this.diagramType}`;
|
return `${this.fileName}_${dateString}.${this.diagramType}`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async convertDMN(xml: string) {
|
||||||
|
return await migrateDiagram(xml);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user