Bkr Workflow Oeffentlich

40
© 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

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 of Bkr Workflow Oeffentlich

Page 1: Bkr Workflow Oeffentlich

© 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

Page 2: Bkr Workflow Oeffentlich

© 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

Page 3: Bkr Workflow Oeffentlich

© 2009 BKR Softwareberatung und –entwicklung GmbH

Projektumgebung

•Systemumgebung

•Architektur der Anwendung

•Backend Struktur

Page 4: Bkr Workflow Oeffentlich

© 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

Page 5: Bkr Workflow Oeffentlich

© 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

Page 6: Bkr Workflow Oeffentlich

© 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

Page 7: Bkr Workflow Oeffentlich

© 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

Page 8: Bkr Workflow Oeffentlich

© 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

Page 9: Bkr Workflow Oeffentlich

© 2009 BKR Softwareberatung und –entwicklung GmbH

BKR Micro-workflowFramework zur Definition und

Ausführung von Geschäftsprozessen

Page 10: Bkr Workflow Oeffentlich

© 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?

Page 11: Bkr Workflow Oeffentlich

© 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

Page 12: Bkr Workflow Oeffentlich

© 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.

Page 13: Bkr Workflow Oeffentlich

© 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

Page 14: Bkr Workflow Oeffentlich

© 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

Page 15: Bkr Workflow Oeffentlich

© 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.

Page 16: Bkr Workflow Oeffentlich

© 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

Page 17: Bkr Workflow Oeffentlich

© 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 }}

Page 18: Bkr Workflow Oeffentlich

© 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

Page 19: Bkr Workflow Oeffentlich

© 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; } }}

Page 20: Bkr Workflow Oeffentlich

© 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)

Page 21: Bkr Workflow Oeffentlich

© 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

Page 22: Bkr Workflow Oeffentlich

© 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.

Page 23: Bkr Workflow Oeffentlich

© 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.

Page 24: Bkr Workflow Oeffentlich

© 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.

Page 25: Bkr Workflow Oeffentlich

© 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 }}

Page 26: Bkr Workflow Oeffentlich

© 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.

Page 27: Bkr Workflow Oeffentlich

© 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.

Page 28: Bkr Workflow Oeffentlich

© 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.

Page 29: Bkr Workflow Oeffentlich

© 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; } }}

Page 30: Bkr Workflow Oeffentlich

© 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

Page 31: Bkr Workflow Oeffentlich

© 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

Page 32: Bkr Workflow Oeffentlich

© 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

Page 33: Bkr Workflow Oeffentlich

© 2009 BKR Softwareberatung und –entwicklung GmbH

workflow Diagramm

BKR Micro-workflow

Page 34: Bkr Workflow Oeffentlich

© 2009 BKR Softwareberatung und –entwicklung GmbH

workflow Diagramm

Die workflow Activity P1 ………

Wird in Java – Code umgesetzt……..

BKR Micro-workflow

Page 35: Bkr Workflow Oeffentlich

© 2009 BKR Softwareberatung und –entwicklung GmbH

BKR Micro-workflow

Page 36: Bkr Workflow Oeffentlich

© 2009 BKR Softwareberatung und –entwicklung GmbH

Der Kontrollfluss des Diagramms wird 1:1 umgesetzt….

BKR Micro-workflow

Page 37: Bkr Workflow Oeffentlich

© 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

Page 38: Bkr Workflow Oeffentlich

© 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.

Page 39: Bkr Workflow Oeffentlich

© 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.

Page 40: Bkr Workflow Oeffentlich

© 2009 BKR Softwareberatung und –entwicklung GmbH

Offene Fragen? Interesse?für weitere Infos wenden Sie sich an:[email protected] [email protected]