@auditcore/bpmn-vue
v0.5.1
Published
Vue-3-Oberfläche für den FlowAudit-BPMN-Editor: Editor, Eigenschaften, Sammlung, Prüfbehörden-Ansichten, Web Component und eigenständige App (MIT)
Readme
@auditcore/bpmn-vue
Zweck
Vue-3-Oberfläche des FlowAudit-BPMN-Editors mit Eigenschaften-Panel, Sammlung, Prüfansichten und Export – als Vue-Bibliothek, Web Component <flowaudit-bpmn-editor> und eigenständige App.
Für Anwendungen, die Prozesse der Verwaltungs- und Kontrollsysteme im Browser bearbeiten: Werkzeugleiste, Palette, deklaratives Eigenschaften-Panel, Diagramm-Infos, Rechtsgrundlagen-Erfassung, Sammlung als Ordnerbaum mit Drag-and-drop, Tags, Filter, Hinweisliste, Durchlauftest, Soll/Ist- und Versionsvergleich, Exportdialog, Anreicherung, Suche, Tastenkürzel. Alles ist lokal gebündelt, keine CDN-Abhängigkeit.
Installation
Standardweg ist die npm-Registry; npm löst die übrigen @auditcore-Pakete
der Abhängigkeitshülle selbst auf:
npm install @auditcore/bpmn-vueOhne Registry-Zugang (Intranet, offline) bleibt der signierte Tarball aus
dem GitHub-Release von auditcore; dann gehört jedes Paket der Hülle
ausdrücklich in die package.json:
npm install @auditcore/bpmn-vue@https://github.com/janpow77/auditcore/releases/download/v<release>/auditcore-bpmn-vue-0.2.1.tgzAnleitung für Vue, React und Web Components mit Integritätsprüfung und
vendor/-Ablage:
frontend-installation.md.
Abhängigkeitshülle: dazu @auditcore/bpmn-editor, @auditcore/bpmn-flowaudit, @auditcore/ui-core und @auditcore/common; Peer-Abhängigkeit vue ^3.5. Stile: @auditcore/bpmn-vue/style.css. Drei Ausgaben: Vue-Bibliothek (dist/), Web Component (dist-wc/, Import @auditcore/bpmn-vue/web-component, ein einzelnes Modul) und eigenständige App (dist-standalone/).
Im auditcore-Repository gehört das Paket zum npm-Workspace (npm ci im
Stamm, Bau mit npm run build -w @auditcore/bpmn-vue).
Schnellstart
import { restPorts } from '@auditcore/bpmn-vue'
import '@auditcore/bpmn-vue/style.css'
// Speicher, Rechtsgrundlagen, KA/BK, Profile, Prüfung und ESI über den REST-Vertrag
const ports = restPorts({ baseUrl: '/api/bpmn' })
const storage = ports.storage<!-- nur Editor -->
<FlowauditEditor v-model:xml="xml" :name="name" :profile="profile" :ports="ports"
@save="onSave" @selection-change="onSelect" />
<!-- Sammlung (Ordnerbaum, Tags, Filter, Info-Spalte, Gruppenübersicht) + Editor -->
<FlowauditWorkbench :storage="storage" :profile="profile" :ports="ports" author="Prüferin" />Einbindung
Vue: FlowauditEditor und FlowauditWorkbench aus @auditcore/bpmn-vue
(siehe Schnellstart); Profile aus @auditcore/bpmn-flowaudit/profiles,
Speicher im Browser mit InMemoryStorage aus @auditcore/bpmn-flowaudit.
Web Component: @auditcore/bpmn-vue/web-component ist ein einzelnes
ES-Modul mit Vue, Kern, Fachschicht, gebündelten Profilen und CSS. Das Element
rendert im Light DOM; der Import registriert es einmal.
<script type="module" src="/static/flowaudit-bpmn-editor.js"></script>
<flowaudit-bpmn-editor api-base="/api/bpmn" diagram-id="antragsverfahren" locale="de"></flowaudit-bpmn-editor>Attribute: src, api-base, diagram-id, name, author, locale,
theme, readonly, profile. Objekt-Eigenschaften: xml, storage,
ports, profileData, comments. Ereignisse (CustomEvent, Nutzdaten in
detail): ready, change, save, selection-change,
diagram-info-change, error. Methoden: getXml(), getSvg(),
select(id), reload().
React: @auditcore/bpmn-react ist eine native React-Fassung derselben
Oberfläche (kein Wrapper um die Web Component). Beide rendern aus dem
framework-freien Kern @auditcore/bpmn-flowaudit/ui; Stores und Composables
dieses Pakets binden dessen Controller an Vue.
Eigenständige App: dist-standalone/ spricht den REST-Vertrag
docs/bpmn/rest-api.md; die API-Basis kommt aus window.FLOWAUDIT_CONFIG,
<meta name="flowaudit-api-base"> oder ?api=….
Übersicht, Palette und Aktionen des Hosts (ab 0.3.0)
Stile: @auditcore/bpmn-vue/style.css enthält die Grundstile von diagram-js
(aus @auditcore/bpmn-editor) und die Oberfläche. Ein weiterer CSS-Import ist
nicht nötig. Fehlen die Grundstile, zeichnet der Browser Knickpunkte und
Segment-Anfasser einer gewählten Linie als schwarze Flächen.
Übersicht einer Ebene (GroupOverview): cards (aus
store.cards.value, framework-frei collectionCards(collection, folderId))
ergibt je Unterordner eine Karte mit Beschreibung und Diagrammen, dazu eine
Karte für die Diagramme der Ebene selbst. Beschreibungen sind inline
bearbeitbar; describe-folder(id, text) und describe-diagram(id, text) gehen
an store.describeFolder bzw. store.describeDiagram:
- Ordnerbeschreibung →
Folder.description→StoragePort.saveCollection(Wire-Felddescription). - Diagrammbeschreibung → Diagramm-Info im XML (
flowaudit:diagrammInfo,beschreibung) →StoragePort.saveDiagram. Gelesen wird sie ausDiagramEntry.info.description.
Der StoragePort bleibt unverändert. Ein Host, der Beschreibungen zusätzlich in
eigenen Spalten führt, gleicht sie in saveCollection/saveDiagram ab.
Aktionen des Hosts: Die Bibliothek zeigt sie nur an und meldet den Klick; die Bedeutung kennt allein der Host.
<FlowauditEditor
:host-actions="[{ id: 'matrix', label: 'Kontrollmatrix (XLSX)', group: 'export' }, { id: 'abgleich', label: 'Abgleich starten' }]"
@host-action="(id) => runHostAction(id)"
/>
<GroupOverview
:cards="store.cards.value"
:folder-actions="[{ id: 'matrix', label: 'Kontrollmatrix für den Ordner' }]"
@folder-action="(id, folderId, diagramIds) => runFolderAction(id, folderId, diagramIds)"
/>hostActions: { id: string; label: string; group?: 'export' }[]– ohnegroupim Menü „Prüfen“ (Abschnitt „Weitere Aktionen“), mitgroup: 'export'im Exportdialog („Weitere Ausgaben“). Keine zusätzlichen Schaltflächen in der Werkzeugleiste. Ereignishost-action(id).folderActions: { id: string; label: string }[]– kleines Menü „Mehr“ je Ordnerkarte. Ereignisfolder-action(id, folderId, diagramIds);diagramIdssind alle Diagramme des Ordners einschließlich Unterordnern.FlowauditWorkbenchreicht beide durch und meldethost-action(id, diagramId)sowiefolder-action(id, folderId, diagramIds).
Palette: „Elemente“ und „Pool mit Rolle“ als Symbole, große Kacheln oder
Liste; die Wahl steht im Browser unter auditcore.bpmn.paletteView.
Ansichten der Übersicht, Vorschaubilder und Seitenbereiche (ab 0.5.0)
Ansichten: GroupOverview bietet Kacheln, Liste und – mit einer Quelle für
Vorschaubilder – Vorschaubilder; umgeschaltet im Menü im Kopf, gemerkt unter
auditcore.bpmn.overviewView. Karten mit vielen Diagrammen nehmen die ganze
Zeile ein.
Vorschaubilder: thumbnails erwartet eine Quelle nach
createThumbnails({ storage, render }). FlowauditWorkbench erzeugt sie
selbst; ein Host mit eigener Workbench verbindet sie so:
import { createSvgThumbnailRenderer, createThumbnails, defaultEditorFactory, createCollectionStore } from '@auditcore/bpmn-vue'
const thumbnails = createThumbnails({ storage, render: createSvgThumbnailRenderer(defaultEditorFactory, 'de') })
const store = createCollectionStore(storage, { onDiagramSaved: thumbnails.invalidate })
// <GroupOverview :thumbnails="thumbnails" … />Liefert der StoragePort optional thumbnail(id) (Bild-URL, etwa serverseitig
gerendert), wird diese verwendet; sonst rendert der Browser – höchstens zwei
Diagramme gleichzeitig, erst beim Sichtbarwerden.
Seitenbereiche: PanelResizer ist die Trennlinie zu einem Seitenbereich
(ziehen, Pfeiltasten, Pos1/Ende, Doppelklick für die Standardbreite; die
kleine Schaltfläche klappt ein, eingeklappt bleibt eine schmale Leiste).
FlowauditEditor nutzt sie für die Eigenschaften, FlowauditWorkbench für die
Diagrammsammlung; Breite und Zustand stehen unter
auditcore.bpmn.panel.properties bzw. auditcore.bpmn.panel.collection.
Strg+Alt+P blendet die Eigenschaften ein und aus.
<PanelResizer v-model:width="panel.width" v-model:open="panel.open" :bounds="COLLECTION_PANEL" edge="left" name="Diagrammsammlung" />API-Überblick
Wichtige Eigenschaften von FlowauditEditor: xml, name, diagramId,
profile, profiles, ports, locale, theme, readonly, lockApproved
(freigegebene Stände schreibgeschützt, Standard an), comments, approvals,
author, compareSources, palette, roleAliases, replacements,
hiddenActions, editorFactory. Über die Komponenten-Referenz: getXml(),
getSvg(), select(id), highlightKey(kind, value). Die vollständigen Props
und Ereignisse stehen unten (generiert).
Exporte der Einstiegspunkte aus package.json#exports (64):
| Einstieg | Name | Art | Kurzbeschreibung (erste JSDoc-Zeile) | Modul |
|---|---|---|---|---|
| @auditcore/bpmn-vue | BaseDialog | Vue-Komponente | – | components/base/BaseDialog.vue |
| @auditcore/bpmn-vue | COLLECTION_PANEL | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | CollectionStore | Typ | – | stores/collectionStore |
| @auditcore/bpmn-vue | CollectionTree | Vue-Komponente | – | components/collection/CollectionTree.vue |
| @auditcore/bpmn-vue | CompareSource | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | CreateEditorOptions | Re-Export | – | ./editor/defaultFactory |
| @auditcore/bpmn-vue | DiagramInfoColumn | Vue-Komponente | – | components/collection/DiagramInfoColumn.vue |
| @auditcore/bpmn-vue | EditorContext | Schnittstelle | – | stores/context |
| @auditcore/bpmn-vue | EditorFactory | Re-Export | – | ./editor/defaultFactory |
| @auditcore/bpmn-vue | EditorLike | Re-Export | – | ./editor/defaultFactory |
| @auditcore/bpmn-vue | EditorPorts | Re-Export | – | ./stores/context |
| @auditcore/bpmn-vue | EditorStore | Typ | – | stores/editorStore |
| @auditcore/bpmn-vue | FaIcon | Vue-Komponente | – | components/base/FaIcon.vue |
| @auditcore/bpmn-vue | FieldDescriptor | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | FlowauditEditor | Vue-Komponente | – | components/FlowauditEditor.vue |
| @auditcore/bpmn-vue | FlowauditWorkbench | Vue-Komponente | – | components/FlowauditWorkbench.vue |
| @auditcore/bpmn-vue | GroupOverview | Vue-Komponente | – | components/collection/GroupOverview.vue |
| @auditcore/bpmn-vue | I18n | Schnittstelle | – | i18n/useI18n |
| @auditcore/bpmn-vue | IssueList | Vue-Komponente | – | components/views/IssueList.vue |
| @auditcore/bpmn-vue | LISTS | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | LegalBasisEditor | Vue-Komponente | – | panels/legal/LegalBasisEditor.vue |
| @auditcore/bpmn-vue | ListDescriptor | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | Locale | Re-Export | – | ./i18n/useI18n |
| @auditcore/bpmn-vue | MESSAGES_DE | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | MESSAGES_EN | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | OverviewView | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | PROPERTIES_PANEL | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | PanelBounds | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | PanelResizer | Vue-Komponente | – | components/base/PanelResizer.vue |
| @auditcore/bpmn-vue | PanelState | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | PropertiesPanel | Vue-Komponente | – | panels/PropertiesPanel.vue |
| @auditcore/bpmn-vue | RestCatalogue | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | RestEsi | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | RestLegalSearch | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | RestOptions | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | RestProfiles | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | RestStorage | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | RestValidation | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | SelectionStore | Typ | – | stores/selectionStore |
| @auditcore/bpmn-vue | TABS | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | TabDefinition | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | ThumbnailRenderer | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | Thumbnails | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | ToolbarAction | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | ValidationStore | Typ | – | stores/validationStore |
| @auditcore/bpmn-vue | bindEditorCore | Funktion | Vue view of an editor controller: reactive state and the instance as computed. | stores/editorStore |
| @auditcore/bpmn-vue | bindSelectionCore | Funktion | – | stores/selectionStore |
| @auditcore/bpmn-vue | bindValidationCore | Funktion | – | stores/validationStore |
| @auditcore/bpmn-vue | createCollectionStore | Funktion | – | stores/collectionStore |
| @auditcore/bpmn-vue | createEditorStore | Funktion | – | stores/editorStore |
| @auditcore/bpmn-vue | createI18n | Funktion | – | i18n/useI18n |
| @auditcore/bpmn-vue | createSelectionStore | Funktion | – | stores/selectionStore |
| @auditcore/bpmn-vue | createSvgThumbnailRenderer | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | createThumbnails | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | createValidationStore | Funktion | – | stores/validationStore |
| @auditcore/bpmn-vue | defaultEditorFactory | Konstante | – | editor/defaultFactory |
| @auditcore/bpmn-vue | provideEditorContext | Funktion | – | stores/context |
| @auditcore/bpmn-vue | provideI18n | Funktion | – | i18n/useI18n |
| @auditcore/bpmn-vue | readPanel | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | restPorts | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
| @auditcore/bpmn-vue | useEditorContext | Funktion | – | stores/context |
| @auditcore/bpmn-vue | useI18n | Funktion | Injected i18n, or a German default when used standalone. | i18n/useI18n |
| @auditcore/bpmn-vue | useStore | Funktion | – | composables/useStore |
| @auditcore/bpmn-vue | writePanel | Re-Export | – | @auditcore/bpmn-flowaudit/ui |
Props und Ereignisse der Vue-Komponenten
BaseDialog
| Prop | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| open | boolean | ja | – | – |
| title | string | ja | – | – |
| width | string | nein | '640px' | – |
| subtitle | string | nein | '' | – |
| Ereignis | Nutzdaten | Beschreibung |
|---|---|---|
| update:open | [value: boolean] | – |
| close | [] | – |
CollectionTree
| Prop | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| store | CollectionStore | ja | – | – |
| selectedDiagram | string \| null | ja | – | – |
| openDiagram | string \| null | ja | – | – |
| Ereignis | Nutzdaten | Beschreibung |
|---|---|---|
| select-diagram | [id: string \| null] | – |
| open-diagram | [id: string] | – |
DiagramInfoColumn
| Prop | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| store | CollectionStore | ja | – | – |
| entry | DiagramEntry | ja | – | – |
| Ereignis | Nutzdaten | Beschreibung |
|---|---|---|
| open | [id: string] | – |
| deleted | [] | – |
FaIcon
| Prop | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| name | string | ja | – | – |
| size | number | nein | 18 | – |
| label | string | nein | '' | – |
FlowauditEditor
| Prop | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| xml | string | ja | – | – |
| name | string | nein | '' | – |
| diagramId | string | nein | undefined | – |
| profile | ProfileData \| null | nein | null | – |
| profiles | ProfileSummary[] | nein | () => [] | – |
| ports | EditorPorts & { validation?: ValidationPort } | nein | () => ({}) | – |
| locale | Locale | nein | 'de' | – |
| readonly | boolean | nein | – | – |
| lockApproved | boolean | nein | true | – |
| comments | Comment[] | nein | () => [] | – |
| approvals | Approval[] | nein | () => [] | – |
| author | string | nein | '' | – |
| compareSources | CompareSource[] | nein | () => [] | – |
| palette | readonly PaletteColor[] | nein | undefined | – |
| roleAliases | RoleAlias[] | nein | () => [] | – |
| replacements | Record<string, string> | nein | () => ({}) | – |
| hiddenActions | ToolbarAction[] | nein | () => [] | – |
| hostActions | HostAction[] | nein | () => [] | Actions of the host in the „Prüfen“ menu or (group export) in the export dialog. |
| saving | boolean | nein | – | – |
| editorFactory | EditorFactory | nein | undefined | – |
| theme | 'auto' \| 'light' \| 'dark' | nein | undefined | – |
| Ereignis | Nutzdaten | Beschreibung |
|---|---|---|
| update:xml | [xml: string] | – |
| update:name | [name: string] | – |
| update:comments | [comments: Comment[]] | – |
| save | [payload: { xml: string; info: DiagramInfo \| null }] | – |
| new | [] | – |
| analysis | [] | – |
| share | [] | – |
| export-excel | [] | – |
| host-action | [id: string] | – |
| approve | [payload: { xml: string; info: DiagramInfo }] | – |
| selection-change | [elementId: string \| null] | – |
| error | [message: string] | – |
| ready | [] | – |
| info-change | [info: DiagramInfo \| null] | – |
FlowauditWorkbench
| Prop | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| storage | StoragePort | ja | – | – |
| profile | ProfileData \| null | nein | null | – |
| profiles | ProfileSummary[] | nein | () => [] | – |
| ports | EditorPorts & { validation?: ValidationPort } | nein | () => ({}) | – |
| locale | Locale | nein | 'de' | – |
| author | string | nein | '' | – |
| roleAliases | RoleAlias[] | nein | () => [] | – |
| editorFactory | EditorFactory | nein | undefined | – |
| hostActions | HostAction[] | nein | () => [] | – |
| folderActions | FolderAction[] | nein | () => [] | – |
| Ereignis | Nutzdaten | Beschreibung |
|---|---|---|
| open | [id: string] | – |
| error | [message: string] | – |
| host-action | [id: string, diagramId: string] | – |
| folder-action | [id: string, folderId: string, diagramIds: string[]] | – |
GroupOverview
| Prop | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| overview | Overview | ja | – | – |
| profile | ProfileData \| null | nein | null | – |
| issues | ValidationIssue[] | ja | – | – |
| title | string | ja | – | – |
| cards | FolderCard[] | nein | () => [] | – |
| topLevel | boolean | nein | true | – |
| readonly | boolean | nein | false | – |
| folderActions | FolderAction[] | nein | () => [] | – |
| thumbnails | Thumbnails \| null | nein | null | – |
| Ereignis | Nutzdaten | Beschreibung |
|---|---|---|
| open | [id: string] | – |
| describe-folder | [id: string, text: string] | – |
| rename-folder | [id: string, name: string] | – |
| describe-diagram | [id: string, text: string] | – |
| folder-action | [id: string, folderId: string, diagramIds: string[]] | – |
IssueList
| Prop | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| issues | ValidationIssue[] | ja | – | – |
| running | boolean | nein | – | – |
| error | string \| null | nein | – | – |
| Ereignis | Nutzdaten | Beschreibung |
|---|---|---|
| jump | [elementId: string] | – |
LegalBasisEditor
| Prop | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| items | LegalBasis[] | ja | – | – |
| port | LegalSearchPort | nein | – | – |
| profileId | string | nein | – | – |
| disabled | boolean | nein | – | – |
| Ereignis | Nutzdaten | Beschreibung |
|---|---|---|
| update | [items: LegalBasis[]] | – |
PanelResizer
| Prop | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| width | number | ja | – | – |
| open | boolean | ja | – | – |
| bounds | PanelBounds | ja | – | – |
| edge | PanelEdge | ja | – | – |
| name | string | ja | – | – |
| Ereignis | Nutzdaten | Beschreibung |
|---|---|---|
| update:width | [width: number] | – |
| update:open | [open: boolean] | – |
PropertiesPanel
| Prop | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
| comments | Comment[] | ja | – | – |
| author | string | ja | – | – |
| palette | readonly PaletteColor[] | nein | – | – |
| Ereignis | Nutzdaten | Beschreibung |
|---|---|---|
| update:comments | [value: Comment[]] | – |
Konfiguration
Sprache locale (de/en, createI18n, MESSAGES_DE/MESSAGES_EN),
Farbschema theme (auto/light/dark), Ports (legalSearch, catalogue,
esi, validation, Speicher) – über REST mit restPorts bzw. RestStorage,
RestLegalSearch, RestCatalogue, RestProfiles, RestValidation, RestEsi
oder eigene Implementierungen. Das Eigenschaften-Panel ist deklarativ: Reiter
in TABS, Felder und Listen in LISTS.
Herkunft und Charakterisierung
Neuimplementierung im Clean-Room; portiert wurde nur FlowAudit-eigener Code aus
dem audit_designer (Paritätsinventar docs/bpmn/paritaet-audit-designer.md).
Tests mit Vitest und @vue/test-utils, Ende-zu-Ende mit Playwright gegen die
Demo (npm run test:e2e). Dokumentation: docs/bpmn/frontend.md.
Abhängigkeiten
@auditcore/[email protected], @auditcore/[email protected] (Fachschicht und UI-Kern ./ui), @auditcore/[email protected] (Fokusfalle der Dialoge); Peer
vue@^3.5.0. Die Web Component bündelt Vue mit.
Sicherheit und Datenschutz
Netzwerkzugriffe nur über die konfigurierten Ports (REST gegen api-base
bzw. die Callbacks eines eigenen storage); keine CDN- oder Fremdaufrufe.
Diagramme, Kommentare und Freigaben liegen beim Speicher der Anwendung; die
Demo speichert im Browser. Freigegebene Stände sind standardmäßig
schreibgeschützt (lockApproved).
Lizenz und Herkunftsnachweis
MIT (LICENSE). Clean-Room-Erklärung: Dieses Paket enthält keinen Code,
keine Styles und keine Icons aus bpmn-js, bpmn-js-properties-panel,
@bpmn-io/properties-panel oder bpmn-font. Genutzt werden nur diagram-js und
bpmn-moddle (MIT) über den eigenen Kern @auditcore/bpmn-editor. Portiert
wurde ausschließlich FlowAudit-eigener Code aus dem audit_designer
(Paritätsinventar: docs/bpmn/paritaet-audit-designer.md). Die Icons sind
eigene SVG-Pfade (24 px, currentColor).
Änderungen
Siehe CHANGELOG.md.
