english: (german see below)
target of this bkr-workflow framework is to use a workflow based framework wiithin your java-programms (micro-workflow) to improve operation and maintenance of your software system, exspecially for long running complex projects, where your staff is replaced during project runtime.
We developed it in a real software project with a project runtime of 7 yaers.
deutsch:
Ziel des bkr-workflow framework ist es die Weiterentwicklung und Pflege von Java Programmen in komplexen Softwareprojekten durch Einsatz eines workflow-frameworks (micro-workflow) sicherzustellen und zu verbessern. Dieses Vorgehen ist besonders gut geeignet um gleichartige Programmstrukturen zu erzeigen, auch wenn während der Projektlaufzeit wesentliche Teile der Mitarbeiter ersetzt werden müssen. Das System wurde im Rahmen eines komplexen Softwareentwicklungsprojektes entwickelt und dabei erfolgreich eingesetzt.
6. Technik – Aufbau und Architektur Backend-Struktur -- Anwendungsverteilung *) DTO = Data Transfer Object Anwendung A (ear, war) Application Server Anwendung B WEB-Server Anwendungsverteiler JobCard (mit DTO*) Anwendungs Liste (XML) JobCard
7. Anwendung (Ear) Backend-Struktur Technik – Aufbau und Architektur ac workflow ac ac ac acexecute acexecute acexecute acexecute av services bl db sv MainController (EJB) SchadenEJB ZahlungEJB VertragEJB … App Controller.XML ApplikationsKontrolle
15. BKR Micro-workflow Activity- Klassen-Hierarchie Activity CompositeActivity Sequence Conditional NullActivity Primitive While = Bedingung = Schleife = einfache Aktivität = Beendigung des WF = Reihe von A.
16.
17.
18.
19.
20.
21.
22.
23.
24. BKR Micro-workflow Ausführung eines Workflows (1) eine Aktivität Primitive-Instanz mit Performer-Instanz eine Bedingung Conditional-Instanz mit TestCondition-Instanz Primitive: Baustein des definierten Workflows, diesem Baustein kann für den Workflow ein Identifizierer (wichtig für Protokollierung, Fehlerbehandlung, ...) zugewiesen werden. Conditional: Baustein des definierten Workflows, diesem Baustein kann für den Workflow ein Identifizierer (wichtig für Protokollierung, Fehlerbehandlung, ...) zugewiesen werden. Performer: Baustein, der die Logik der Aktivität implementiert. Dieser Baustein kann ggf. von mehreren Aktivitäten / Primitive-Instanzen verwendet werden. TestCondition: Baustein, der die Logik der Bedingung implementiert. Dieser Baustein kann ggf. von mehreren Conditional-Instanzen verwendet werden. ja nein
25. BKR Micro-workflow ja nein Die Ausführung beginnt... der Workflow steuert die erste Aktivität / Bedingung an. Ausführung eines Workflows (2) class MyPerformer extends Performer { public void execute() { // Logik der Aktivität } }
26.
27. BKR Micro-workflow ja nein Ausführung eines Workflows (4) out in Eine Aktivität kann bestehende Einträge im workflow-Context auslesen und ggf. verändern. Zudem kann sie neue Einträge im workflow-Context ablegen.
28. BKR Micro-workflow ja nein Ausführung eines Workflows (5) Wenn die Ausführung einer Aktivität beendet ist, steuert der Workflow automatisch die nächste Aktivität / Bedingung an.
29. BKR Micro-workflow Ausführung eines Workflows (6) ja nein Wenn die Ausführung eine Bedingung erreicht, ist der weitere Weg durch den Workflow abhängig vom Ergebnis dieser Bedingung. public class MyCondition extends TestCondition { public boolean evaluate() { if (...) { return true ; } else { return false ; } } }
30. ActionControl: für jeden ac existiert ein UML Activity Diagramm existiert je ActionCode genau einmal. DataSet Modell DataSet ruft acexecute auf ruft workflow - services auf Beispiel: auf Anfrage Backend-Struktur BKR Micro-workflow workflow ac ac ac ac workflow
31. ActionControl - Execute: für jeden acexecute existiert ein UML Activity Diagramm modifiziert/validiert das Modell (Schadenmodell, Schadenaufnahmemodell) ist mehrfach verwendbar ruft workflow - services auf Beispiel: auf Anfrage BKR Micro-workflow Backend-Struktur ac workflow ac ac ac acexecute acexecute acexecute acexecute
32. workflow - Service: Eigenschaften wie acexecute stellt wiederverwendbare Teile eines acexecute dar BKR Micro-workflow Backend-Struktur ac workflow ac ac ac acexecute acexecute acexecute acexecute av services bl db sv
37. bkr micro - workflow: Vorteile für Fachbereich, Planer und Entwickler: Für jeden ActionCode existiert ein Activity Diagramm Hoher Dokumentationswert. Framework erzwingt „geregelte“ Programmierung Einarbeitung ist zu jeder Entwicklungsstufe des Systems möglich Die Anwendung bleibt auch in Zukunft wartbar Kann auch für andere Anwendungssysteme verwendet werden BKR Micro-workflow
38.
39.
40. Offene Fragen? Interesse? für weitere Infos wenden Sie sich an: [email_address] oder [email_address]
Hinweis der Redaktion
Frontend/Client: Java Swing GUI als sog. „Rich Client“ als Web Start Anwendung. Backend: Anwendungsverteiler als Servlet, Anwendungslogik als EJB und Java Klassen. Kommunikation Frontend/ Backend: Transfer-Objekte Datenbank: Oracle 9 oder 10; Zugriff über eigenen OR – Mapper (JRF - Framework)
ApplikationsKontrolle : nimmt Anfragen vom Anwendungsverteiler entgegen analysiert mit Hilfe des ActionCodes welche UseCase EJB (SchadenEJB, VertragEJB) aufgerufen wird ruft beim Berechtigungssystem die Rechte des Benutzers ab analysiert welche xml - Struktur für den ActionCode gilt und setzt den Datenstrom in ein DTO um ruft den zuständigen Anwendungs - Workflow auf workflow: auf den workflow block wird später genauer eingegangen. Zunächst folgt nun die Erklärung des bkr micro - workflow Systems.
Viele Entwickler innerhalb eines Projekts entwickeln ihren eigenen Stil. Dies hat oft zur Folge, dass die Wartung und Pflege einzelner Themenbereiche mehr oder weniger stark von einzelnen Entwicklern abhängt. Lange Projektlaufzeit führ unweigerlich zu Anpassungen bereits realisierter Anwendungsteile. Manchmal auch ohne die Planung anzupassen. Die Gefahr dabei: die Dokumentation des Systems weicht vom produktiven System ab.
Haupt-Bestandteile eines OFD: Aktivitäten, Bedingungen, verarbeitete/erzeugte Objekte
Das Sourcforge Projekt von D.Manolescu war unvollständig implementiert.