enhancement
major
minor
defect
critical
major
minor
major
#30065
React-Oberfläche: Workflow-Administration mit BPMN-Editor, Schrittansichten aus dem View-Designer und Aufgabenbearbeitung (BPE)
Abgespalten von #30047. Fortsetzung von #29767, verwandt: #29108.
Kontext
Die Prozess-Engine (BPE) hatte bisher nur eine klassische Oberfläche: die Workflow-Administration von tl-bpe-modeler (BPMN-Editor, Eigenschaften, Freigeben/Abkündigen, Hochladen, Kopieren, Export) und die Aufgabenbearbeitung (Prozess starten, aktuelle Aufgaben, Schritt abschließen mit Wahl des Übergangs). Danach kann eine React-Anwendung Prozesse vollständig ohne die klassische Oberfläche modellieren und ausführen.
Funktion
- Workflow-Administration als Abschnitt "Workflows" der React-Administration: Liste der Workflows, BPMN-Editor (bpmn-js) mit Bearbeiten/Speichern/Abbrechen, Eigenschaften des im Diagramm gewählten Elements, Neu, BPML-Datei hochladen, Aus BPML-Datei aktualisieren, Kopieren, Freigeben/Zurückziehen, Löschen, BPML-Datei exportieren. Nicht gespeicherte Diagrammänderungen werden beim Wechsel des Workflows nachgefragt; das Speichern der Eigenschaften übernimmt eine offene Diagrammänderung mit. Eine ausgewählte Verbindung wird außerhalb der Bearbeitung entlang ihres Verlaufs hervorgehoben. Ein Workflow, von dem bereits Prozesse gestartet wurden, kann nicht gelöscht werden (auch nicht mehr im klassischen Modellierer); er wird stattdessen zurückgezogen.
- Schrittansichten: Für eine manuelle Aufgabe wird eine Ansicht der React-Oberfläche am Prozessmodell hinterlegt (Attribut ManualTask#view, eine BPML-Erweiterung, wandert mit Export/Import des Workflows) und mit dem View-Designer gestaltet ("Schrittansicht gestalten"). Eine neue Schrittansicht beginnt mit einem Formular über die Felder der Prozessdaten.
- Aufgabenbearbeitung (Ansichten von tl-bpe-view, die eine Anwendung an der Stelle ihrer Wahl zeigt, z.B. als Navigationspunkt oder eingebettet in eine eigene Ansicht): eigene Aufgaben, Prozess starten mit einem Formular für die Prozessdaten (Pflichtfelder werden geprüft) - wahlweise mit Auswahl des Workflows in einem Auswahlfeld oder fest für einen Workflow über eine eigene Start-Schaltfläche der Anwendung (bpeStartEvent) -, Bearbeitung eines Schritts in seiner Schrittansicht (oder einem Standardformular), Abschließen mit Wahl des nächsten Schritts. Fehler eines Übergangs sperren ihn, Warnungen werden bestätigt, verlangt ein Übergang zusätzliche Angaben (Formulartyp der Kante), fragt der Abschlussdialog sie ab.
Lösung
Allgemeine Bausteine in tl-layout-view / tl-layout-react
- Datentyp tl.view:ViewDefinition: eine Ansichtskonfiguration in einem Attribut; TL-Script viewParse(xml) und viewFields(type).
- <dynamic-view>: bettet eine Ansicht ein, deren Konfiguration ein TL-Script-Ausdruck liefert (wie <view-ref> mit <bind>). Innerhalb eines <form> teilt eine eingebettete Ansicht das Formular.
- Der View-Designer arbeitet auf Entwurfsquellen: Dateien wie bisher und eine Ansicht im Attribut eines Objekts (Aktion <open-view-designer attribute="..."/>, Speichern mit Prüfung des Schreibrechts); Speichern bestätigt, was gespeichert wurde.
- StateHandler.canSave(): ein Element, dessen Änderungen die umgebende Ansicht speichert, lässt die Nachfrage bei ungespeicherten Änderungen nur Verwerfen anbieten. Die Nachfrage spricht allgemein von Änderungen statt von Formularen.
Aufteilung der BPE-Module
- tl-bpe: ohne Oberfläche und ohne Abhängigkeit auf tl-layout-formeditor. Die Logik der Modellierer-Kommandos (BPMLDefinitions: anlegen, importieren, aktualisieren, kopieren, exportieren, freigeben/zurückziehen, löschbar) und der Aufgabenbearbeitung (ProcessExecutions, Decision: Aufgaben einer Person, startbare Ereignisse, Startereignis eines Workflows nach Namen, Start auch mit vorbereitetem Prozessobjekt, Entscheidungen mit Fehlern und Warnungen, Abschließen) als Java-API und TL-Script-Funktionen bpml* und bpe*. Die klassischen Kommandos nutzen dieselbe Logik.
- tl-bpe-classic (neu): die klassische Aufgabenbearbeitung (com.top_logic.bpe.layout.*, Layout-Templates, JSPs), PDF-Export mit tl-layout-formeditor, Namensschemata für Testskripte. Die Klassennamen sind unverändert.
- tl-bpe-modeler: klassischer Modellierer, hängt von tl-bpe-classic ab.
- tl-bpe-view (neu): <bpmn-editor>, Workflow-Administration (Overlay der React-Administration), Schrittansicht der manuellen Aufgabe, Ansichten der Aufgabenbearbeitung. Das Modul fügt keinen Navigationspunkt hinzu; der Entwicklerartikel bpe/react-ui zeigt, wie eine Anwendung die Ansichten einbindet.
Weitere Änderungen
- Migrationsskripte können eine Abhängigkeit, die das Modul nicht mehr hat, ausdrücklich aufgeben (<dropped-dependencies>); die Prüfung auf verlorene Abhängigkeiten akzeptiert genau diese, der Skript-Generator trägt sie selbst ein. Das nächste Migrationsskript von tl-bpe gibt so tl-layout-formeditor auf.
- InitialProcessSetup importiert jede Workflow-Datei in einer eigenen Transaktion; eine fehlerhafte Datei wird zurückgerollt und beim nächsten Start erneut versucht, statt einen halb importierten Workflow zu hinterlassen.
- Die Beschriftung eines Prozesses kommt aus einer Modellannotation von tl.bpe.execution:ProcessExecution, sodass ein Prozesstyp eine eigene Beschriftung definieren kann.
- tl-demo-react enthält die BPE mit einem Demo-Prozess "Urlaubsantrag" (Prozessdaten mit Pflichtfeldern, Schrittansichten, Ablehnung mit Ablehnungsformular); die Aufgabenseite steht unter Demos -> Prozesse, mit einer Schaltfläche "Urlaubsantrag stellen".
Migration
Anwendungen mit klassischer Oberfläche, die tl-bpe direkt (nicht über tl-bpe-modeler) einbinden und die klassische Aufgabenbearbeitung (Layout-Templates tl-bpe/startProcess*.template.xml, tl-bpe/advanceProcess*.template.xml, Klassen unter com.top_logic.bpe.layout) oder den PDF-Export nutzen, ergänzen die Abhängigkeit tl-bpe-classic:
{{{#!xml <dependency>
<groupId>com.top-logic</groupId>
<artifactId>tl-bpe-classic</artifactId>
</dependency> }}}
Anwendungen über tl-bpe-modeler oder tl-bpe-app erhalten tl-bpe-classic transitiv. Eine React-Anwendung bindet tl-bpe-view ein und zeigt die Aufgabenseite (bpe/tasks.view.xml) dort, wo sie sie haben will.
Weitere Änderungen, die eigene Abhängigkeiten und eigenen Code betreffen können:
- tl-bpe bringt tl-layout-formeditor nicht mehr mit. Eine Anwendung, die Klassen oder Layouts des Formular-Editors nutzt und das Modul bisher nur über tl-bpe erhielt, deklariert tl-layout-formeditor selbst (oder erhält es über tl-bpe-classic).
- com.top_logic.bpe.modeler.copy.DeepCopy heißt jetzt com.top_logic.bpe.util.DeepCopy (Modul tl-bpe); Importe anpassen.
- BPMLUpdateCommand.updateCollaboration(Collaboration, Source, boolean) und BPMLUpdateCommand.updateCollaborationInTransaction(...) entfallen. Ersatz ist BPMLDefinitions.updateCollaboration(...) (mit Source oder BinaryContent); die Transaktion öffnet der Aufrufer selbst.
Verifikation
tl-demo-react (/view/, root / root1234): Administration -> Workflows (Workflow anlegen, kopieren, freigeben, im Editor ändern und speichern, Eigenschaften, Schrittansicht von "Antrag prüfen" gestalten), Demos -> Prozesse -> "Prozess starten" (Auswahl des Workflows) bzw. "Urlaubsantrag stellen" (direkt das Startformular), Schritt in seiner Schrittansicht bearbeiten, abschließen mit Genehmigen bzw. Ablehnen (Ablehnungsformular). Klassischer Modellierer und Prozess-Cockpit in tl-demo unverändert geprüft.