OGE logoOGE

Extending the editor

Every extension point is data plus callbacks — no subclassing, no injected services. Properties providers add typed panel fields whose commits are undoable engine commands; palette and context-pad entries bring icons, labels, hotkeys and actions; renderers replace a type's shape; element templates pre-configure elements the way Camunda Modeler's do. Icons and shapes are built with the safe bpmnSvg builders and sanitized before they render — there is no raw-markup path.

propertiesProviders paletteProvider contextPadProvider renderers element templates

Properties providers

A provider returns groups of typed entries for the selected element — text, textarea, select, checkbox, expression, list or custom — and each entry's set(value) returns the engine command a commit runs, so every field is one undo step. A custom entry is drawn by an <ng-template ogeBpmnPropertiesEntry>. Select Review order to see the Service level group; the values land as oge:* attributes in the exported XML.

[propertiesProviders] select · checkbox · custom [ogeBpmnPropertiesEntry]
Empty diagram — pick an element from the palette

Process

IdProcess_1

Palette & context pad

Custom palette entries render after the built-ins and join the palette's roving tabindex; custom context-pad actions render beside the built-in ones for the selected element. Both take a bpmnSvg icon, a label (the accessible name and tooltip) and an optional single-character hotkey advertised with aria-keyshortcuts — keys the canvas already uses are never shadowed. Press M on the canvas to arm the templated Mail task, select an element and press R to mark it reviewed.

[paletteProvider] [contextPadProvider] hotkeys
Empty diagram — pick an element from the palette

Process

IdProcess_1

Renderers

[renderers] overrides a node type's shape: the renderer gets the node, its size and DI colors and returns a bpmnSvg tree in shape-local coordinates (or null for the built-in glyph). The tree is sanitized — unknown tags, on* handlers, href, style and external url() are dropped — and the editor still draws labels, markers, selection and badges. Exports use the same renderer.

[renderers] bpmnSvg exportSvg / exportPng
Empty diagram — pick an element from the palette

Process

IdProcess_1

Element templates

Templates follow Camunda Modeler's JSON shape: appliesTo, an optional elementType to morph to, and properties bound to an attribute, the documentation or a Zeebe / Camunda extension value. bpmnElementTemplatesProvider(templates) adds a Template select to every applicable element; applying writes every default in one undo step and records zeebe:modelerTemplate, after which the panel shows the template's fields. Select Ask for documents and pick Send mail.

bpmnElementTemplatesProvider OgeBpmnElementTemplate zeebe:modelerTemplate
Empty diagram — pick an element from the palette

Process

IdProcess_1