Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004)...

32
Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19 Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen

Transcript of Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004)...

Page 1: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004)

Ideas Make the Future

Folie 1

OOP 2005: Session Mi 19

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen

Page 2: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 2

Zur Person

Matthias Hertel

Leiter der Entwicklung bei der Firma

AP Automation + Productivity AG

Realisierung eines ERP Systems für den fertigenden Mittelstand auf der Basis von modernen Internet Technologien:

(D)HTML, XHTML, WebServices, eCommerce

Siehe auch http://www.mathertel.de

Page 3: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 3

Agenda

Sensibilisierung für das Problemfeld (Architektur, Prozesse)

Wo liegt das Problem ?

UI

WebServices

Automatisierung von Vorgängen

Track and Guide-Pattern

Relevanz

Proof of Concept

Einfache Realisierung

Beispiel

Abgrenzungen

Warum nicht Workflow

Andere Patterns

Page 4: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 4

Focus: Web-Applikationen

Service orientierte Applikationen

WebService basierte Architekturen

Stateless (State = DB-Content)

Heute:

WebServices als RPC Ersatz

Morgen:

Asynchroner Austausch von Nachrichten

Leicht verständliches Szenario. Die Problematik ist auf komplexere Situationen übertragbar.

Browser

Web Server

Applikations-Server

DB

Netzwerk

Fremd-Systeme

Sub-Systeme

Page 5: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 5

Wo liegt das Problem ?

Problemfeld 1:

Die veränderten Laufzeitumgebungen

Verlust der kompakten Programmierung von Prozessen

Implementierung von unabhängigen Services, Wiederverwendbarkeit

Problemfeld 2:

Neue Anforderungen an Prozess- und Applikations-Kommunikation

Leichte Kopplung von Komponenten

Trennung von Benutzerführung + Transaktionslogik in Sub-Systeme

Beispiel: Buchausleihe

Problemfeld 3:

Automatisierung von Vorgängen

„altbekanntes“ immer noch aktuelles Problem auf Applikationsniveau

Page 6: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 6

Unternehmen planen Prozesse

Üblicherweise wird nur der „optimale“ Prozess definiert

Selten auch die Ausnahmen (ad-hoc)

Welche Teile des Prozesses sind überhaupt prozessrelevant ?

Login

Auswahl

Antrag

Prüfung

Abholen

Ende

Page 7: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 7

veränderten Laufzeitumgebungen (1)

Programmierung der '80er:

Prozess = Maske = Menüeintrag

Monolitische Realisierungen (Bananencode)

Trennung von Menüsystem und Prozessen war „State of the Art“

Einfache Prozesse, nicht Systeme übergreifend

Papier-Schnittstellen

Pseudo-Code:

Matchcode = SuchMaske();PrimärerSchlüssel = SelektionsListe(Matchcode);DatensatzMaske(PrimärerSchlüssel);Daten = DatenErfassung ();Transaktion(PrimärerSchlüssel, Daten)ErgebnisAnzeige ()

Page 8: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 8

veränderten Laufzeitumgebungen (2)

Programmierung der '90er

Eventgesteuert

Prozess = Programm / Modul

Prozess innerhalb eines klar abgegrenzten (großen) Programmbereiches

Komplexere Prozesse sind möglich

Prozesse im Bereich der Benutzerführung werden im Programm Code nicht mehr klar formuliert

class DatensatzMaske {

Function Button1_OnClick() … Function Button2_OnClick() …

}

Page 9: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 9

Architektur-Problem: kein Prozess

Events und die Codierung der passenden Handler sind über viele Dateien, Klassen und WebServices verstreut

An keiner Code-Stelle ist der Ablauf des Prozesses implementierbar

Probleme:

Wie findet man Prozess-Zusammenhänge ?

Wo sind „Schleichwege“ ?

Wo testen – z. B. nach Änderung eines Sub-Systems ?

„Richtige“ Reihenfolge der Bedienungsschritte ?

Keine Prozess-ID / Prozess-Referenz

Page 10: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 10

Message orientierte WebServices

Heute:

RPC style WebService Aufrufe: aktives Warten auf Antworten

Das funktioniert nur bei passenden Protokollen (z.B. http, https)

Zukunft:

Nachrichtenaustausch ohne direkte Antwort

Protokoll unabhängig

Routing

Keine garantierten Antwortzeiten

Page 11: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 11

Zeit Problem 1

Unsichere Verbindungen

Schlüssel zu Standortübergreifenden Prozessen.

Lost Netzwerk-Packages / Resent

DNS und Http-Timeouts

Nicht verfügbare Sub-Systeme oder externe

Kommunikationspartner WAN Übertragungen

WAN = zeitkritisch

Page 12: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 12

Zeit Problem 2

Message orientierte Webservice Verbindungen

unterstützt auch sehr lang laufende Anfragen

Höhere Ausfallsicherheit

keine garantierten Antwortzeiten

nicht einmal http-Timeout

Page 13: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 13

Zeit Problem 3

Benutzerinteraktion

Bestandteil einer Prozessdefinition

Modellierbar

keine garantierte Bearbeitungszeiten(Steuererklärung)

Page 14: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 14

Problem des aktiven Wartens

Ein Prozess wartet auf Antwort…

Wie ?

Sleep ()

Nicht wirklich !

Betriebssystem Prozess läuft weiter !

Polling

CPU Last

Aktiver Thread ?

Offener Port und ereignisgesteuerter Programmablauf

Typisch für WebServices

1 Port und Dispatcher – System (WebServer)

Empfangslogik (Prozessmodell) liegt verteilt in den WebService Methoden

Page 15: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 15

Automatisierung von Vorgängen

Ereignisse

Zeit : Zeitpunkt / Zeitdauer

Eingehende Nachrichten

Eingaben eines Benutzers

Ablauf einer Aktion (Sequenzen)

Aktionen

Transaktionen

Bei der Automatisierung von Vorgängen ist die Erweiterbarkeit und Modellierbarkeit der Prozessmodelle gefragt.

Page 16: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 16

Login

Auswahl

Antrag

Prüfung

Abholen

Beispiel: Buchausleihe mit Autorisierung

Ende

Anfrage

manuelle Entscheidung

aktuelleAnfragen

Entscheidung

Page 17: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 17

Login

Auswahl

Antrag

Prüfung

Abholen

Beispiel: Buchausleihe mit Autorisierung

Ereignisse (Events) bestimmen die Schlüsselstellen

Eingänge und Ausgänge

Entscheidungen sind zu treffen

Nutzdaten, State sind entscheidungsrelevant(Benutzer, Buch, Anfragestatus)

Ende

manuelle Entscheidung

aktuelleAnfragen

Entscheidung

Exception Sub-SystemAnfrage

Page 18: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 18

Sub-System: manuelle Entscheidung

Beispiel für ein Subsystem

„lang laufender“ Entscheidungsprozess

Aufnahme von zu entscheidenden Fragestellungen

Ja / Nein Antworten

Eigene kleine Web Applikation

Eintragen von neuen Fragen über einen WebService

Antworten werden per WebService zurückgegeben

Austausch der Nachricht jeweils nur in eine Richtung

Keine synchronen (RPC WebService) Entscheidungen

Page 19: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 19

Sub-System: manuelle Entscheidung

Keys: Benutzer + Buch

Keine „schnelle“, datengestützte Entscheidung bei der ein RPC Aufruf möglich wäre

Externe Applikation mit eigenem Web.

Service

Enter

Rem

ove

Store

UI Proxy

Ans

wer

Page 20: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 20

Track and Guide-Pattern

Umgangsspachlich:

„Sag' mir was du zu tun gedenkst

und ich sage dir wo es lang geht.“

Ansatz: Sag' mir viel (Alles)

Weiche Entscheidung: Benutzerführung

Harte Entscheidung: Zugriffsrechte (Role based Security, RBAC, zentrale Kontrolle)

Zentrale Implementierung

Vermittlung ohne weitere eigene Funktionalität (Benutzerführung)

oder aktives Element in der Prozessgestaltung (Modellierung)

Name -> Name Mapping

Voraussetzung:

Funktionen, UI arbeiten mit Referenzen URLs oder Namespaces die auf ein einheitliches Messageschema abgebildet werden können

Page 21: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 21

Track and Guide-Pattern

Time

Gleich mehr…

Queue

Track

Guide

Messages

Page 22: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 22

Page 23: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 23

Fall 1: Aufruf einer Web-Seite

newUrl = TAG.UrlRequest (url + "/enter")

if (newUrl != null)

Redirect(newUrl)

...

[ Implementierung der Seite ]

...

void button1.click() {

newUrl = TAG.UrlRequest(url + "/call");

if (newUrl != null)

Redirect(newUrl);

} // button1.click

Events:

Vor dem Ausführen (Aufbau) der Seite ist zu prüfen, ob der Aufruf zulässig ist.

Bei alle Ausgängen (Funktionen / Hyperlinks) wird eine Entscheidung aus dem TAG benötigt.

Aufbau der Message:

Url der Seite

Parameter der Seite

Benutzer-ID (implizit)

Umleitung

Nächster Prozessschritt

Page 24: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 24

[ Empfangen einer Soap Nachricht ]

newUrl = TAG.SoapRequestEnter (namespace + "/func");

...

[ Ausführung ]

...

TAG.SoapRequestLeave (namespace + "/func");

return (result);

Fall 2: Aufruf eines Webservices zur Kontrolle

Events:

Vor dem Ausführen der Funktionalität ist zu prüfen, ob der Aufruf zulässig ist.

Nach erfolgreichem Ausführen weitere Prozessschritte einleiten.

Aufbau der Message:

Namespace des WebServices

+ Name der Methode

Enter / Leave

Parameter (XMLDom) der Parameter

Benutzer-ID (implizit)

Exception

Time / Queue

Page 25: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 25

[ Empfangen einer Soap Nachricht ]

newUrl = TAG.SoapRequest (namespace + "/func");

// Ausführung im TAG System

return;

Fall 3: Aufruf eines Webservices zur Automatisierung

Explizite Anstoß eines (automatisierten) Prozesses

Events:

Der Aufruf ist der Event

Aufbau der Message:

Namespace des WebServices

+ Name der Methode

Parameter (XMLDom) der Parameter

Benutzer-ID (implizit)

Exception Time / Queue

Page 26: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 26

Implementierung der Entscheidungen

Allgemeine Anforderungen:

Eigenständiger Prozess (Service)

Stateless

Keine Hybride Implementierung (kein UI)

Notwendige Elemente:

Synchroner Aufruf

Empfang von Messages eines einheitlichen Schemas

Abbilden der Anwendungsfälle auf dieses Message Schema

Speicherung von Messages (Time, Queue)

Speicherung von „Variablen“ einer Prozessdefinition

Page 27: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 27

Implementierung der Entscheidungen (Code)

Time

Queue

Track

Guide

Messages

Key = user + book; // keine ProzessInstanz-ID

switch (message) {

case "../AntragEnter":

if (Vars[key, "Genehmigt"] == true)

return("../Abholen");

case "../Entscheidung":

Vars.Add(key, Erlaubnis);

return(null);

case "../AbholenLeave":

Vars.Delete(key);

return(null);

case "Timer-Zeitablauf":

Vars.Delete(key);

return(null);

} // switch

Variablen

Prozess

Page 28: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 28

Implementierung der Entscheidungen

Hintergrundsprozess

Der Hintergrundsprozess implementiert „nur“ die Loopbacks der Time und Queue Messages.

Der Hintergrundsprozess kann jederzeit beendet und wieder gestartet werden, da er selbst keine lang laufenden Aktivitäten implementiert.

Sehr lang laufende, automatische Prozesse sind durch die Queue realisierbar und ebenfalls unterbrechbar

Reboot von Servern, Restart ist möglich

Page 29: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 29

Implementierung der Entscheidungen

Entscheidungsfunktionalität

Eine kompakte manuelle Codierung ist möglich.

Die Entscheidungsfunktionalität wird nur bei Bedarf aufgerufen (SOA).

Transaktionsfähig

State

Speicherung der Variablen (~ Prozess-Instanz)

Keine Prozess-Instanz-ID

Speicherung von Messages (Time / Queue)

Die Speicherung von mehreren Message Objekten ermöglicht nebenläufige Vorgänge.

Page 30: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 30

Implementierung der Entscheidungen (ML)

Problem: BPEL4WS / Workflow Sprachen sind nicht für eine Message zentrierte Modellierung ausgelegt.

In BPEL4WS gibt es Events, aber das Prozessabbild wird unüberschaubar.

Prozessschritte sind beim TAG Ansatz „nur“ logische Zusammenfassung von Messages in der Modellierung.

Ziel:

Generierung von Code aus BPEL4WS „ähnlichen“ Metadaten.

Software Factories

Domain Specific Languages

Page 31: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 31

"Ähnlichkeiten mit ... Patterns„

Im Unterschied zum State-Pattern bestimmt der Object.State nicht das primäre Verhalten sondern die Message.

Interaktion und Schnittstellen sind speziell auf einheitliche Nachrichten zugeschnitten.

Namespaces/Urls können auch Ist/Soll Werte sein.

Das Track and Guide-Pattern eignet sich besonders für Service-Orientierte Architekturen und ist selbst nach SOA Grundsätzen aufgebaut.

Stateless und gut skalierbar.

Page 32: Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (15.10.2004) Ideas Make the Future Folie 1 OOP 2005: Session Mi 19.

Software Pattern für lang laufende Prozesse in WebService orientierten Applikationen (2.12.2004) Folie 32

Ausblick

Workflow Engine

Trennung in die tatsächliche Engine und zusätzliche Elemente der Benutzerführung (TO DO Liste)

Emailempfang und -senden passt in das Konzept.

Verteilbar, da segmentierbar nach Prozess und Benutzer

Benutzerführung

Abbild des Kernprozesses und Zuordnung der aktuellen Dateien in der Anzeige zu einem Prozessschritt

Da die enter/leave Messages auf Hyperlinks abgebildet werden können kann aus einer TODO Liste direkt in die Web Anwendung gesprungen werden (incl. Parameter der URL)

Prozessmodellierung als (Ver-)Middelware ?