13. Extensions and plugins
disl0.10.113. Extensions and plugins
Contents of DISL 0.1
Plugins provide what the declarative core does not: exotic shapes, special routers and layouts, domain-specific widgets, imports/exports, snapping to external data, custom actions. A specification declares every plugin it uses:
{
"plugins": {
"acme.bpmnRouter": {
"version": "^2.0.0",
"provides": ["routing", "layout"],
"required": false,
"fallback": { "routing": "orthogonal", "layout": "layered" },
"args": { "gridAware": { "type": "bool", "default": true } },
"doc": "Specialised BPMN router that keeps sequence flows off pool boundaries.",
"source": { "npm": "@acme/disl-bpmn-router", "integrity": "sha256-…" }
}
}
}
| Property | Type | Description |
|---|---|---|
version |
SemVer range | Accepted plugin versions. |
provides |
string[] | Extension points: shape, marker, lineEffect, routing, layout, snap, widget, action, celFunctions, import, export, persistenceFormat, collaboration. |
required |
bool | If true, runtimes without the plugin MUST refuse to open diagrams of the type for editing (read-only viewing MAY still be offered). If false, fallback is used. |
fallback |
map extension point → built-in name | Declarative fallbacks. |
args |
map → Attribute | Declared arguments with types, so uses of the plugin are validated. |
source |
object | Hints where implementations can be obtained (npm, maven, url, …) with integrity hashes. Runtimes MUST NOT download and execute code automatically without user or administrator approval. |
celFunctions |
{name, params, returns, cost, doc}[] |
Declarations of CEL functions the plugin adds, so validators can type-check expressions that use them. |
doc |
Doc |
Every plugin use ({ "plugin": "acme.bpmnRouter", "args": {…} }) references a declared plugin; args are validated against the declaration.
x- properties (2.8) carry tool-specific data. A group of related extension properties MAY be documented as a profile — a JSON Schema published by a vendor or community that constrains x-<prefix>-* properties. Specifications list profiles they use in language.profiles: ["https://…/simulation-profile.json"]; validators that know a profile validate accordingly.