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-dynamic": "^12.2.0",
|
||||
"@angular/router": "^12.2.0",
|
||||
"@bpmn-io/dmn-migrate": "^0.4.3",
|
||||
"@ngx-formly/core": "^5.10.22",
|
||||
"@ngx-formly/material": "^5.10.22",
|
||||
"@sentry/browser": "^5.30.0",
|
||||
@ -2610,6 +2611,36 @@
|
||||
"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": {
|
||||
"version": "0.2.0",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"@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": {
|
||||
"version": "0.2.0",
|
||||
"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-dynamic": "^12.2.0",
|
||||
"@angular/router": "^12.2.0",
|
||||
"@bpmn-io/dmn-migrate": "^0.4.3",
|
||||
"@ngx-formly/core": "^5.10.22",
|
||||
"@ngx-formly/material": "^5.10.22",
|
||||
"@sentry/browser": "^5.30.0",
|
||||
|
@ -1,3 +1,5 @@
|
||||
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 { getDiagramTypeFromXml } from '../_util/diagram-type';
|
||||
import isEqual from 'lodash.isequal';
|
||||
import { migrateDiagram } from '@bpmn-io/dmn-migrate';
|
||||
|
||||
@Component({
|
||||
selector: 'app-diagram',
|
||||
@ -138,11 +139,15 @@ export class DiagramComponent implements ControlValueAccessor, AfterViewInit, On
|
||||
}
|
||||
|
||||
openDiagram(xml?: string, diagramType?: FileType) {
|
||||
console.log('openDiagram > diagramType', diagramType);
|
||||
this.diagramType = diagramType || getDiagramTypeFromXml(xml);
|
||||
|
||||
console.log('openDiagram > this.diagramType', this.diagramType);
|
||||
|
||||
this.xml = xml;
|
||||
const modeler = this.initializeModeler(diagramType);
|
||||
|
||||
return this.zone.run(() => {
|
||||
return this.zone.run(async () => {
|
||||
const isDMN = diagramType === FileType.DMN;
|
||||
|
||||
if (!xml) {
|
||||
@ -154,7 +159,9 @@ export class DiagramComponent implements ControlValueAccessor, AfterViewInit, On
|
||||
// Add an arbitrary string to get the save button to enable
|
||||
if (isDMN) {
|
||||
// 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 {
|
||||
// BPMN Modeler returns a Promise
|
||||
this.modeler.importXML(xml).then(
|
||||
@ -376,4 +383,8 @@ export class DiagramComponent implements ControlValueAccessor, AfterViewInit, On
|
||||
return `${this.fileName}_${dateString}.${this.diagramType}`;
|
||||
}
|
||||
}
|
||||
|
||||
private async convertDMN(xml: string) {
|
||||
return await migrateDiagram(xml);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user