bkr workflow oeffentlich
DESCRIPTION
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.TRANSCRIPT
© 2009 BKR Softwareberatung und –entwicklung GmbH
bkr micro-workflow
Mit einem workflow - orientierten Framework erfolgreich große JEE - Systeme realisieren
von Ralf Ruethlein Sept. 2009
© 2009 BKR Softwareberatung und –entwicklung GmbH
Agenda
• Projektumgebung, die zur Entwicklung des bkr micro - workflow Frameworks geführt hat.
SystemumgebungAufbau und Architektur
• BKR Micro-workflow Motivation Analyse Lösungsansatz Vorteile Definition und Bestandteile Beispiel
• Lessons Learned• Ausblick• Fragen / Diskussion
© 2009 BKR Softwareberatung und –entwicklung GmbH
Projektumgebung
•Systemumgebung
•Architektur der Anwendung
•Backend Struktur
© 2009 BKR Softwareberatung und –entwicklung GmbH
Systemumgebung
Clientsz. Bsp.:- Java-Swing-GUI,- JSF…
Anwendungs-Serverz. Bsp.: JBOSS…
Datenbank-Serverz. Bsp.: Oracle…
Hostz. Bsp.:s390…
LAN / VPN
Projektumgebung
© 2009 BKR Softwareberatung und –entwicklung GmbH
Architektur der Anwendung:
ServletBean
HTTP Server / Servlet Engine
JSP
LoginPasswort
TIER
Daten-banken
EJBEJB
EJBEJB
Java Klassen
Application Server
TIER TIER TIER
Java KlassenJava
Klassen
Projektumgebung
© 2009 BKR Softwareberatung und –entwicklung GmbH
Technik – Aufbau und Architektur
Backend-Struktur -- Anwendungsverteilung
Anwendung A (ear, war)
ApplicationServer
ApplicationServer
Anwendung B
WEB-ServerWEB-Server Anwendungsverteiler
JobCard (mit DTO*)
AnwendungsListe (XML)
JobCard
*) DTO = Data Transfer Object
© 2009 BKR Softwareberatung und –entwicklung GmbH
Anwendung (Ear)
Backend-Struktur
ac
workflow
ac acac
acexecute acexecute acexecute acexecute
avservices bl db sv
MainController (EJB)
SchadenEJB ZahlungEJBVertragEJB …App
Controller.XML
ApplikationsKontrolle
Technik – Aufbau und Architektur
© 2009 BKR Softwareberatung und –entwicklung GmbH
•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 „Anwendungsworkflow“ auf
•workflow:
•auf den workflow block wird später genauer eingegangen. Zunächst folgt nun die Erklärung des bkr micro - workflow Systems.
Technik – Aufbau und Architektur
© 2009 BKR Softwareberatung und –entwicklung GmbH
BKR Micro-workflowFramework zur Definition und
Ausführung von Geschäftsprozessen
© 2009 BKR Softwareberatung und –entwicklung GmbH
Motivation
•Wie können unterschiedliche „Programmierstile“ der einzelnen Entwickler verhindert, bzw. minimiert werden?
BKR Micro-workflow
•Wie kann eine vollständige Dokumentation des Gesamtsystems über die gesamte Laufzeit sichergestellt werden?•Wie kann ein einzelner „Action Code“ (workflow) über den gesamten Lebenszyklus vollständig richtig dokumentiert werden?•Wie kann die Einarbeitungszeit für neue MA minimiert werden?
© 2009 BKR Softwareberatung und –entwicklung GmbH
•Die Dynamik eines Action Codes soll in Form von OFDs (erweiterte Aktivitätsdiagramme) dargestellt werden. Eine Umsetzung in Programmcode soll analog des im OFD hinterlegten Ablaufs möglich sein.
Analyse des Problems:
BKR Micro-workflow
•Mittelfristig soll das Generieren von Code aufgrund der hinterlegten OFDs ermöglicht werden.•Ganze OFDs oder auch Teile daraus sollen wiederverwendbar sein.•Ein Rahmen soll gesucht und erweitert werden, der eine 1:1 Umsetzung des OFD in Programmcode erlaubt
© 2009 BKR Softwareberatung und –entwicklung GmbH
•Schaffung einer Komponente, die einen Rahmen für OFDs zur Verfügung stellt.
bkr micro - workflow
Lösungsansatz
BKR Micro-workflow
•basiert auf dem Micro-workflow Projekt von Dragos Manolescu (http://sourceforge.net/projects/micro-workflow)
•Funktionsumfang der erweiterten Komponente:
-Abbildung von Aktivitäten und Bedingungen.-Definition von Geschäftsprozessen/ Programmschritten.-Ausführung von Geschäftsprozessen/ Programmschritten.-Protokollierung der Ausführung.
© 2009 BKR Softwareberatung und –entwicklung GmbH
• modularer Aufbau des Codes möglich, führt zu größerer Wiederverwendbarkeit
Vorteile:
BKR Micro-workflow
• Abläufe müssen vor Implementierung genau in einem OFD dokumentiert werden, führt zu exakter Dokumentation
• kann über JUnit Testfälle geprüft werden, führt zu größerer Sicherheit bei Änderungen
• kompakte Komponente, Programmierer muss sich mit nur wenigen neuen Klassen vertraut machen
© 2009 BKR Softwareberatung und –entwicklung GmbH
Workflow-Definition: Aktivitäten• Activity-Klassen-Hierarchie
Mit diesen Klassen können die Aktivitäten des OFD nachgebildet werden: – Primitive: einzelne Aktivität– Sequence: Reihe von aneinanderhängenden Aktivitäten– Conditional: Bedingungen– While: Schleife– NullActivity: Beendet Ausführung des workflows
• ein workflow wird durch eine Kette von Activity-Objekten definiert
BKR Micro-workflow
© 2009 BKR Softwareberatung und –entwicklung GmbH
BKR Micro-workflow
Activity- Klassen-Hierarchie
Activity
CompositeActivity
Sequence
Conditional
NullActivity
Primitive
While
= Bedingung
= Schleife
= einfache Aktivität
= Beendigung des WF
= Reihe von A.
© 2009 BKR Softwareberatung und –entwicklung GmbH
BKR Micro-workflow
Verbindung Workflow/Logikschicht
• der Workflow ist durch eine Kette von Activity-Objekten definiert
• der Workflow steuert die Activity-Objekte an, der Pfad ergibt sich durch die Definition und die Ergebnisse der Bedingungen
• einfache Aktivitäten eines OFD werden durch eine Instanz der Primitive-Activity dargestellt
• hinter einer Primitive steht ein Performer-Objekt
• ein Performer implementiert die Zugriffe auf die Logikschicht
© 2009 BKR Softwareberatung und –entwicklung GmbH
BKR Micro-workflow
Performer
• implementiert die Logik einer einfachen Aktivität • kann ggf. von mehreren Primitive Instanzen verwendet
werden• ist von der abstrakten Basis-Klasse Performer abgeleitet• Beispiel-Implementierung:
class MyPerformer extends Performer { public void execute() { // Logik der Aktivität }}
© 2009 BKR Softwareberatung und –entwicklung GmbH
BKR Micro-workflow
Bedingungen im workflow:
• werden durch Conditional Instanzen dargestellt• eine Conditional Instanz besteht aus:
• einer TestCondition Instanz• einer then Activity Instanz (optional)• einer else Activity Instanz (optional)
• TestCondition Klassen müssen eine evaluate Methode bereitstellen, diese Methode muss den Rückgabetyp boolean haben
• der Rückgabewert entscheidet, ob mit der true oder der else Activity fortgesetzt wird
© 2009 BKR Softwareberatung und –entwicklung GmbH
BKR Micro-workflow
TestCondition:
• implementiert die Logik einer Bedingung• muss eine evaluate Methode bereitstellen, diese Methode
muss den Rückgabetyp boolean haben• werden von der abstrakten Basis-Klasse TestCondition
abgeleitet• Beispiel-Implementierung:
public class MyCondition extends TestCondition { public boolean evaluate() { if (...) { return true; } else { return false; } }}
© 2009 BKR Softwareberatung und –entwicklung GmbH
BKR Micro-workflow
• WorkflowContext-Klasse
Container, der während des Ablaufs des workflows verwendet wird. Er beinhaltet:
– durch Aktivitäten oder Bedingungen verarbeitete / erzeugte Objekte
– Meldungen (Fehler, Warnungen, Infos) von Aktivitäten oder Bedingungen (siehe WorkflowMessages-Klasse)
– Workflow-Call-Stack– Protokoll der Logging-Ereignisse (siehe LoggingStrategy-
Klasse)
weitere Bestandteile (1)
© 2009 BKR Softwareberatung und –entwicklung GmbH
BKR Micro-workflow
weitere Bestandteile (2)
• WorkflowMessages-KlasseListe, in der alle Meldungen des Workflows gesammelt werden.
• WorkflowMessages.Type-KlasseDefinierte Meldungstypen: ERROR, WARN, INFO
• WorkflowMessages.Entry-Klasseeinzelner Meldungslisten-Eintrag: hat einen Typ, einen Code und einen Text
© 2009 BKR Softwareberatung und –entwicklung GmbH
BKR Micro-workflow
weitere Bestandteile (3)
• LoggingStrategy-Interface
Während des Ablaufs des Workflows werden WorkflowEvents erzeugt. Diese Ereignisse können bei Bedarf protokolliert werden. Dazu wird eine Implementierung der LoggingStrategy an den WorkflowContext gehängt.Es wird eine DefaultLoggingStrategy bereitgestellt, die den Ablauf durch den Workflow hierarchisch darstellen kann.
© 2009 BKR Softwareberatung und –entwicklung GmbH
BKR Micro-workflow
weitere Bestandteile (4)
• WorkflowExecuter-Klasse
Hilfsklasse zur Ausführung eines Workflows. Sie wird mit einem Workflow-Objekt und einem WorkflowContext-Objekt initialisiert. Sollten bei der Ausführung Fehler auftreten, werden diese vom WorkflowExecuter detailliert protokolliert.
© 2009 BKR Softwareberatung und –entwicklung GmbH
BKR Micro-workflow
Ausführung eines Workflows (1)
eine Aktivität Primitive-Instanzmit Performer-Instanz
eine Bedingung Conditional-Instanzmit TestCondition-Instanzja nein
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. vonmehreren Aktivitäten / Primitive-Instanzen verwendet werden.
TestCondition: Baustein, der die Logik der Bedingung implementiert. Dieser Baustein kann ggf. vonmehreren Conditional-Instanzen verwendet werden.
© 2009 BKR Softwareberatung und –entwicklung GmbH
BKR Micro-workflow
ja nein
Die Ausführung beginnt... derWorkflow steuert die erste Aktivität / Bedingung an.
Ausführung eines Workflows (2)
class MyPerformer extends Performer { public void execute() { // Logik der Aktivität }}
© 2009 BKR Softwareberatung und –entwicklung GmbH
BKR Micro-workflow
ja nein
Ausführung eines Workflows (3)
in
• Die Aktivität / Bedingung kann auf Elemente im workflow-Context zugreifen.• Der workflow-Context stellt einen Container dar, der allen Aktivitäten / Bedingungen eines workflows während der Ausführung zur Verfügung steht.• Er stellt das Kommunikations-Medium zwischen den Aktivitäten / Bedingungen dar.• Die Benutzung ist vergleichbar mit einer Java Map: Elemente werden über Schlüssel abgelegt.
© 2009 BKR Softwareberatung und –entwicklung GmbH
BKR Micro-workflow
ja nein
Ausführung eines Workflows (4)
outin
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.
© 2009 BKR Softwareberatung und –entwicklung GmbH
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.
© 2009 BKR Softwareberatung und –entwicklung GmbH
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; } }}
© 2009 BKR Softwareberatung und –entwicklung GmbH
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
workflow
ac ac acac
workflow
Backend-Struktur
BKR Micro-workflow
© 2009 BKR Softwareberatung und –entwicklung GmbH
ac
workflow
ac acac
acexecute acexecute acexecute acexecute
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
© 2009 BKR Softwareberatung und –entwicklung GmbH
ac
workflow
ac acac
acexecute acexecute acexecute acexecute
avservices bl db sv
workflow - Service:
Eigenschaften wie acexecute
stellt wiederverwendbare Teile eines acexecute dar
BKR Micro-workflow
Backend-Struktur
© 2009 BKR Softwareberatung und –entwicklung GmbH
workflow Diagramm
BKR Micro-workflow
© 2009 BKR Softwareberatung und –entwicklung GmbH
workflow Diagramm
Die workflow Activity P1 ………
Wird in Java – Code umgesetzt……..
BKR Micro-workflow
© 2009 BKR Softwareberatung und –entwicklung GmbH
BKR Micro-workflow
© 2009 BKR Softwareberatung und –entwicklung GmbH
Der Kontrollfluss des Diagramms wird 1:1 umgesetzt….
BKR Micro-workflow
© 2009 BKR Softwareberatung und –entwicklung GmbH
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
© 2009 BKR Softwareberatung und –entwicklung GmbH
Lessons Learned
• Der Wildwuchs der Programme konnte gestoppt werden.• Neue Mitarbeiter können sich relativ schnell einarbeiten.• Der Überblick über das Gesamtsystem bleibt erhalten.• Die Wartbarkeit des Systems ist auch nach Einführung der 4. Stufe (nach insgesamt 5 Jahren Projekt) erhalten geblieben.
aber
•Der Feinheitsgrad der einzelnen OFDs muss reglementiert werden.•Den Überblick über die bereits vorhandenen workflows zu behalten gestaltet sich nicht immer einfach.
© 2009 BKR Softwareberatung und –entwicklung GmbH
Ausblick
• der nächste Schritt ist die Generierung des Programmcodes aus den OFDs heraus.
•als Fernziel ist die Adaption des Frameworks in die .Net Welt angedacht.
© 2009 BKR Softwareberatung und –entwicklung GmbH
Offene Fragen? Interesse?für weitere Infos wenden Sie sich an:[email protected] [email protected]