dmn-auto-layout
v0.1.0-alpha.0
Published
Layout DMN decision requirements diagrams by generating DMN DI
Readme
dmn-auto-layout
Generate complete DMN Diagram Interchange (DI) from semantic DMN XML. Existing DMN DI is always replaced with one canonical Decision Requirements Diagram.
Install
npm install dmn-auto-layoutRequires Node.js 22.12 or newer. Browser builds are also supported.
Library usage
import { layoutDiagram } from 'dmn-auto-layout';
import diagramXML from './diagram.dmn';
const {
xml: diagramWithLayoutXML,
warnings
} = await layoutDiagram(diagramXML);
console.log(diagramWithLayoutXML);
console.warn(warnings);layoutDiagram resolves with { xml, warnings }. Warnings use the exported
LayoutWarning shape. Invalid or unsupported input rejects with an exported
LayoutError.
Runtime and cancellation
XML parsing and serialization are asynchronous; layout computation is synchronous
and CPU-bound. Run large or untrusted diagrams in a Web Worker or Node.js
worker_threads worker to keep it off the application event loop or browser main
thread.
An in-flight layout cannot be interrupted with an AbortSignal. To enforce a
deadline, run one layout per worker and terminate that worker when the deadline
expires.
Command line
The package includes a command-line interface:
# replace the file in place
npx dmn-auto-layout diagram.dmn
# write the result elsewhere
npx dmn-auto-layout diagram.dmn --output diagram.layouted.dmn
# transform standard input to standard output
cat diagram.dmn | npx dmn-auto-layout - > diagram.layouted.dmn--stdout writes a file input's layout XML to standard output without changing
the input. Layout warnings are emitted as JSON lines to standard error. Use
dmn-auto-layout --help for the full command reference.
Resources
Development
npm install
npm run all
npm run test:inspectnpm run test:inspect generates and opens test/output/index.html, rendering
each fixture's input and generated output side by side.
License
MIT
