Messaging + Workflow Engine

Du hast eine Idee für ein Projekt?
Benutzeravatar
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Messaging + Workflow Engine

Beitragvon tabellar » Mittwoch 29. Juni 2005, 08:28

querdenker hat geschrieben:@tabellar:
Interesse besteht eigentlich in allen 3 Bereichen, d.h. EventManagment, Workflow und DB.
Magst du mir mal ein wenig mehr darüber erzählen?

mfg, querdenker


Wie bereits in anderen Threads angedeutet, befasse ich mich zur Zeit stark mit "Reaktiven Informations und Workflow Management Systemen". Grundthemen hierbei sind vor allem die computerbasierte Form der WAHRNEHMUNG durch Sammeln von Ereignissen und Nachrichten (Personenaktionen, Dokumenteneingang, Sensorenmeldungen, Telefonanlagenmeldungen, etc.), die HANDLUNGSENTSCHEIDUNG (Regeln, Normen, etc.) und schliesslich die AUSFÜHRUNG, welche wiederum Ereignisse und Nachrichten zur Folge hat und somit den KREISLAUF schliesst.

Das ganze ist natürlich in jeglicher Hinsicht komplex und hat prinzipiell eher einen "wissenschatlichen" Charakter. Trotzdem "schwebt" mir ein System vor, das einfach zu NUTZEN und gleichzeitig extrem flexibel in der WAHRNEHMUNG und AUSFÜHRUNG ist. "CSCW - computer supported collaboration work" ist der Oberbegriff für Workflowmanagement-, Groupware- und Collaboration Systeme. Reaktive Systeme stehen für "Ereignisgetriebene Systeme" wie z.B. Robotersysteme, GUIs oder auch den MENSCHEN, das wohl beste "reaktive System" :wink:.

Also, es gibt nicht all zu viele Menschen, die sich mit oben genannten Dingen beschäftigen. Aus diesem Grunde würde ich mich sehr freuen, hier im Forum ein paar Gleichgesinnte zu treffen, die über die Thematik diskutieren und ev. das ein oder andere Stück lauffähigen (Test) Code implementieren möchten. Python als sehr flexible und modulare Skriptsprache finde ich für so ein System otimal.


Mögliche Diskussionsthemen:
- Computerkommunikation in verteilten Netzen (XML, XML-RPC, Jabber, HTTP, Sockets, etc.)
- Architektur Gesamtsystem (eigener Server, Aufsatz auf Jabber, Zope, Apache_MOd, etc.)
- Architektur EventEngine (synchron, asynchron, DB-Trigger/Listener, Skalierbarkeit,, etc.)
- Workflow (Petri Netze, graphbasiert, blockstrukturiert, etc.)
- Aktivitätensteuerung (worklets, workitems, actorflow etc.)
- Agentenentwicklung ("Jabber", coffeeMachineAgent, asteriskPBXAgent, heatingAgent, etc.)
- Webservices
- Datenbank Integration
- FrontEnd Design

Das ganze soll in erster Linie SPASS machen und den IDEENREICHTUM ankurbeln :P .



Gruss Tabellar
Zuletzt geändert von tabellar am Samstag 2. Juli 2005, 07:43, insgesamt 2-mal geändert.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Mittwoch 29. Juni 2005, 21:56

Hoi tabellar,

klingt sehr interessant. Mithilfe kann ich leider nicht anbieten (keine Zeit), aber insb. die vier "A-Punkte" in Deiner Liste finde ich höchst interessant. Hast Du schon etwas in der Richtung geschrieben und vorliegen?

Wir wollen in der nächsten Zeit (das Wann hängt von Tempo der Beschaffungsabteilung unserer Uni ab) ein kleines Linux-Cluster einrichten und mein persönliches Bestreben ist es best. Teile meiner Datenauswertung mehr und mehr zu automatisieren.

Lange Rede, kurzer Sinn: Ab und an könnte ich Snippets von Dir testen. (Allerdings weiß ich wirklich arbeitsmäßig zur Zeit nicht, wo mir der Kopf steht.)

Gruß,
Christian
BlackJack

Beitragvon BlackJack » Mittwoch 29. Juni 2005, 21:57

Mir viel spontan das hier ein: Don't Let Architecture Astronauts Scare You. :twisted:
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Mittwoch 29. Juni 2005, 22:04

Na, BlackJack, ein konstruktiver Beitrag war das jetzt ja nicht gerade ... aber ein verdammt witziger :D

Da ich die vorhergehenden Posts nicht gelesen habe, kann ich nicht beurteilen, wie real die Gefahr ist (ich werde das Lesen auch nicht nachholfen). Aber über das eine oder andere tatsächliche Snippet, daß meine Arbeit erleichtert werde ich mich weiß Gott nicht beschweren.

Gruß,
Christian
Benutzeravatar
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Beitragvon tabellar » Donnerstag 30. Juni 2005, 00:49

BlackJack hat geschrieben:Mir viel spontan das hier ein: Don't Let Architecture Astronauts Scare You. :twisted:


Hi BlackJack,

hm, ein wirklich netter Artikel! Die Frage ist nur, ob Du jetzt mit deinem Link eher auf den Textinhalt oder auf den "Werbelink" am Ende des Artikels hinweisen wolltest :roll: . Nun, ich denke du meintest wohl eher die Architecture Astronauts" Geschichte :wink: .

Wäre ja im Grunde eigentlich eine ganz witzige Bezeichnung... In Wirklichkeit bin ich eher "Bodenständig", hab aber trotzdem natürlich eine blühende Phantasie. Das was ich oben beschriegen habe ist keine Phantasterei, sondern wirklich ein Projekt von mir, das ich im Prinzip schon mehrere Jahre verfolge. Natürlich habe ich auch die aktuellen Hype Namen (XML, RPC, REAKTIV, JABBER, ASTERISK, etc.) verwendet, damit das ganze bei Euch auch ankommt...

Verschiedene Teile des Systems habe ich schon beieinander:
EventEngine, EventBindings, WorkflowNotation, -templates, -Instanzen, Worklets, JabberAgenten, etc. (alles DB basierend, asynchron...) Es müssen eben ziemlich viele Komponenten miteinander verbunden werden und genau deshalb wende ich mich an Euch ... Das Thema Workflow z.B. ist natürlich ein weites Feld und wenn man mal ein wenig rumgooglet, wird man feststellen, dass man da lange suchen muss, bis man halbwegs mal nen roten Faden erkennt. Geschweige denn wie man aus dem roten Faden dann vielleicht mal einen Pullover stricken kann.

Die oben genannten Themen findet man im GOOGLE meist nur unter Diplomarbeiten, Forschungsarbeiten oder sonstigen, meist universitären Einrichtungen. Natürlich auch bei SAP, aber die legen ihre Architektur und Gedanken auch nicht im Internet ab, sondern verkaufen sie teuer M$ ... Auch findet man solche Themen im C't oder IX (z.B. Systemadministration mit Jabber etc. ). Aber sonst sieht es recht mau aus ... Diese Themen beschäftigen mich wirklich und ich hab den Anspruch, mich mit diesen Dingen auseinander zu setzten und auch umzusetzen...

Einer meiner Hauptantriebe ist unter anderem folgender, dass die sicherlich tolle Email bald nicht mehr richtig zu gebrauchen ist. Zu viel Spam schwirrt umeinander und wichtige Information fallen dann gern unten durch...

Tabellar

PS:
Wenn Ideen verbreiten, dann doch hier im IDEEN Forum, oder :wink: ?
Benutzeravatar
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Beitragvon tabellar » Donnerstag 30. Juni 2005, 10:43

CM hat geschrieben:...Wir wollen in der nächsten Zeit (das Wann hängt von Tempo der Beschaffungsabteilung unserer Uni ab) ein kleines Linux-Cluster einrichten und mein persönliches Bestreben ist es best. Teile meiner Datenauswertung mehr und mehr zu automatisieren.

Lange Rede, kurzer Sinn: Ab und an könnte ich Snippets von Dir testen. (Allerdings weiß ich wirklich arbeitsmäßig zur Zeit nicht, wo mir der Kopf steht.)

Gruß,
Christian


Hi Christian,

gestern Nacht habe ich erstmal BlackJack geantwortet, jetzt komme ich auch zu Deinem Post. In welche Richtung möchtest Du denn Deine Datenauswertung automatisieren??? :?:

Gruss
Tabellar
BlackJack

Beitragvon BlackJack » Donnerstag 30. Juni 2005, 15:33

tabellar hat geschrieben:
BlackJack hat geschrieben:Mir viel spontan das hier ein: Don't Let Architecture Astronauts Scare You. :twisted:


hm, ein wirklich netter Artikel! Die Frage ist nur, ob Du jetzt mit deinem Link eher auf den Textinhalt oder auf den "Werbelink" am Ende des Artikels hinweisen wolltest :roll: . Nun, ich denke du meintest wohl eher die Architecture Astronauts" Geschichte :wink: .


Ich meinte natürlich den Artikel. Mal etwas konstruktiver: Ich fand Deine Ideebeschreibung furchtbar schwammig und es waren halt die üblichen Buzzwords (XML...) drin. Lies Dir Deinen Artikel nochmal durch und stell Dir vor jemand weiss gar nicht worum es geht. Ich glaube, das ich zumindest eine vage Vorstellung habe, aber es bleibt trotzdem ziemlich diffus. Was hat man sich unter so einem System vorzustellen? Welches Problem löst es? Wie/warum ist es besser als die bestehenden Lösungen -- sofern es welche gibt?

Wenn Du Leute zum mitarbeiten suchst, dann müssen die verstehen worum's geht und Interesse an am basteln von so einem Framework haben oder wie CM Interesse an konkreten Ergebnissen.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 30. Juni 2005, 17:53

Also ganz ehrlich.. ich habe die Beschreibung gelesen und erstmal gar nicht verstanden, da ist BlackJacks Kritik durchaus berechtigt..
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Beitragvon tabellar » Donnerstag 30. Juni 2005, 22:58

BlackJack hat geschrieben:Wenn Du Leute zum mitarbeiten suchst, dann müssen die verstehen worum's geht und Interesse an am basteln von so einem Framework haben oder wie CM Interesse an konkreten Ergebnissen.


Leonidas hat geschrieben:Also ganz ehrlich.. ich habe die Beschreibung gelesen und erstmal gar nicht verstanden, da ist BlackJacks Kritik durchaus berechtigt...


ok, ok ... ich geb ja zu, dass ich das ganze recht schwammig ausdrückte. Ich hatte das ganze schon viel genauer, hab es dann aber wieder gekürzt und "allgemeiner" aufgeschrieben... :roll:

@BlackJack:
Ich hab mir mal für die Architecture Astronauts Geschichte einen Avatar ausgesucht. Ich denke, der passt erst mal :wink: Ich hab sogar wirklich mit dem Entwerfen, Planen und Bauen von Gebäuden zu tun...

Auch mal etwas konstruktiver. Die mir vorschwebende "Plattform" hat drei Schwerpunkte:

- Schaffung einer (reaktiven) Kommunikationsplattform, die flexibel auf eintreffende Nachrichten reagieren kann (EventEngine + EventHandler).

- Schaffung eines flexiblen und robusten Workflowsystems, das auf der EventEngine aufsetzt und so die Möglichkeit bietet, Aktivitäten nach gewissen Ablaufschemen (Workflows) anzustossen und zu steuern. Ergebnisse der Workflows sind dann Arbeitslisten für Personen oder Maschinen und Programme, die in einem entsprechenden Kontext stehen.

- Schaffung von sogenannten "Agenten" (ist leider ein Modewort, aber ich finde es passt ), die im "Sinne" der Plattform Ereignisse, Aktionen, Messwerte von der "Umwelt" einsammeln und diese dann in das System einpflegen. Die Agenten können wiederum auch Aktionen ausführen. Agenten fungieren also als Sensoren und Aktoren.

Ein Motivationspunkt zur Erstellung eines solche Systems ist, dass man erst mal lernen muss, wie überhaupt Kommunikations- und Arbeitsabläufe zusammenhängen. Hat man diese Zusammenhänge dann beieinander, ist der nächste (schwierige) Schritt, diese Abläufe zu beschreiben und zu visualisieren. Dies nennt man dann Workflow Notation oder auch ganz toll "Prozessbeschreibung". Spannend wird es dann, wenn man das ganze auf dem Rechner umsetzen möchte.

Es gibt drei Softwaresysteme, die mich im Moment massgeblich beeinflussen. Das ist zum einen das Jabber Projekt, das weit mehr als nur ein IM System ist und zum anderen das Asterisk Projekt, eine softwarebasierte (VoIP) Telefonanlage, die schon fast wie eine "eierlegende Wollmilchsau" verschiedenste Kommunikationsdienste und -protokolle miteinander verbindet (IAX, SIP, H.323,ISDN, Voicemessage, VoiceMenü, Email, Fax, SMS, etc.) . Das dritte mich stark beeinflussende System ist das Workflow System ADEPT (AristaFlow), das an der Uni Ulm entwickelt und in diversen Krankenhäusern eingesetzt wird. Es ist eines der modernsten Workflow Management Systeme. Die Workflowbeschreibung ist graphen und blockbasiert und sehr einfach in der Darstellung.

Mein Ziel ist es nun, diese verschiedensten Funktionalitäten in einem System zu vereinen, das sich wiederum auf mehreren Rechnern (Netzen) befinden kann.

Gruss Tabellar

PS:
Es ist wirklich sehr schwierig, das alles (in kurze) Worte zu fassen...
Zuletzt geändert von tabellar am Samstag 2. Juli 2005, 06:59, insgesamt 2-mal geändert.
BlackJack

Beitragvon BlackJack » Freitag 1. Juli 2005, 21:03

Hm, ergeignisgetrieben klingt nach Twisted. Kennst Du das Framework? Kann vielleicht als Basis verwendet werden.
Benutzeravatar
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Beitragvon tabellar » Freitag 1. Juli 2005, 21:28

BlackJack hat geschrieben:Hm, ergeignisgetrieben klingt nach Twisted. Kennst Du das Framework? Kann vielleicht als Basis verwendet werden.


Twisted hab ich mir mal im Zusammenhang mit der SQLator Geschichte von Leonidas angeschaut. Ist ja ein ziemlich dickes Paket...

Meine Prototyp EventEngine läuft im Moment so, dass ein Verzeichnis incrementell in einer while-Schleife gelesen, die darin enthaltenen XML Message Dateien ausgewertet und anschliessend die entsprechenden Objekte wieder angestossen werden. Das hatte bisher einen ziemlichen Vorteil durch das Entkoppeln der Programme und ist natürlich sehr flexiblel.

Neben der Dateischnittstelle habe ich auch eine Jabber-SSL-Schnittstelle (die EventEngine selbst ist ein Jabber Client), die Messages von anderen Jabber Clients im XML Format annimmt und ebenfalls als Datei im EngineVerzeichnis ablegt. So kann ich mit Standard Jabber Clients über Jabber Messages mit der der ServerEngine kommunizieren, ohne selbst ein GUI/CLI zu basteln...

Die finale Schnittstelle der EventEngine soll eine Socket Schnittstelle sein, die ähnlich wie ein ChatServer agiert und entsprechende Nachrichten in einer Message Queue zwischenspeichert und dann anschliessend weiterleitet (routet) ....

Im Moment bin ich gerade am abstimmen der EventEngine und der Workflow Komponente (Message Format, Db Architektur, etc.) . Die EventEngine muss beim Durchlaufen des Workflows sauber, je nach eingestelltem incrementellen Zeitwert robust durchlaufen. Das sieht wie folgt aus: Workflows sind bei mir graphenbasiert. D.h., so ein Workflow besteht aus Knoten und Kanten, welche somit das Ablaufschema darstellen. Wird also eine Workflow Instanz (WFI) gestartet (instantiiert), werden die einzelnen Knoten aktiviert und diese schicken nach fertiggestellter Arbeit Nachrichten zur EventEngine zurück, welche wiederum neue Aktionen auslösen können. Der Kreislauf der Maschine ist somit geschlossen.

Bei der Workflow-Architektur orientiere ich mich am Maschinenmodell von Alan Turing (1936), eine der ersten Rechenmaschinen, die auch heute noch von entscheidender Bedeutung für die Berechenbarkeit von Algorithmen ist. Sie ist ein gutes Modell für den Ablauf von Zustandsübergängen, das Hauptthema schlechthin bei Workflows.

Tabellar
Zuletzt geändert von tabellar am Samstag 2. Juli 2005, 09:58, insgesamt 2-mal geändert.
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Beitragvon querdenker » Samstag 2. Juli 2005, 09:08

@tabellar: Nachricht erhalten :wink:

Ich kämpf mich gerade ein wenig durch die Beschreibung(en) und versuche mir ein Bild davon zu machen, wie das ablaufen soll(kann/könnte).
Mit anderen Worten - ich hab da im Moment noch nicht so den Durchblick :oops: Ehrlich gesagt haben mich die ganzen Buzzwords ein wenig abgeschreckt.

Ich fange jetzt erstmal an, mir das ganze mal als Ablaufplan aufzuzeichnen

mfg, querdenker
Benutzeravatar
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Beitragvon tabellar » Samstag 2. Juli 2005, 10:35

querdenker hat geschrieben:...Ehrlich gesagt haben mich die ganzen Buzzwords ein wenig abgeschreckt.


Sorry nochmal, wird nicht wieder vorkommen. Ich wollte eben nicht nur technischen Kram, sondern auch allgemeines rüberbringen... :roll:

querdenker hat geschrieben:...Ich fange jetzt erstmal an, mir das ganze mal als Ablaufplan aufzuzeichne


Das Wichtigste am ganzen ist den Mechanismus der "Maschine" zu erkennen. Alles andere sind dann "nur" noch Details... 8) Ganz kurz nochmal das Wichtigste zum Verständnis:

EventEngine:
Nimmt Nachrichten entgegen, vergleicht diese mit entsprechenden Ereignisregeln (EventBindings) und leitet diese dann an entsprechende Verbrauchermethoden (Objekte) weiter. Diese Methoden senden dann nach Methodenende wiederum Nachrichten an die EventEngine zurück. Dies ist der Kreislauf, den man auch "Ereignis getrieben" bezeichnet.

Workflow:
Eine Abfolge von verschiedenen Vorgängen kann man in einem Ablaufschema (Workflow) darstellen. Zur Darstellung und Umsetzung auf dem Rechner verwende ich eine graphische Beschreibung. D.h. , das Ablaufschema besteht im Groben aus Knoten und Kanten. Diese Ablaufbeschreibungen sind in der Datenbank verankert.

Nachricht:

Bsp.1: Wird jetzt zB. eine Nachricht "Starte WorkflowTyp Nr. 1" an die EventEngine (EE) gesendet, wird der Workflow vom Typ Nr. 1 gestartet. Jedes einzelne Element (Knoten, Kanten, etc.) sendet dann wiederum eine Nachricht an die EE zurück und somit "läuft" die Maschine.

Bsp.2: Empfängt die EE zB. eine Nachricht "Telefonanruf von XYZ", kann zB. ein Objekt aufgerufen werden, welches ein Pop Up Fenster erzeugt und die Daten des Anrufers anzeigt.

Ich hoffe, das Verständnis wird langsam besser ... :oops:
Gruss Tabellar
Benutzeravatar
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Beitragvon tabellar » Sonntag 3. Juli 2005, 11:19

Hallo zusammen,

nachdem querdenker und ich ein paar PNs austauschten, wollen wir nun wieder hier im "öffentlichen" Forum weiterdiskutieren. Vielleicht noch ganz kurz zu mir, ich bin "Praktiker" und möchte Dinge nicht nur theoretisch abhandeln, sondern auch umsetzen und anwenden können :wink: .

Ich verwende zum veranschaulichen von Dingen gerne Beispiele. Als Beispiel für das EventHanding habe ich mal folgendes, typisches GUI Beispiel gewählt.

Code: Alles auswählen

#Event Beispiel
from Tkinter import *
import tkMessageBox
root=Tk()
root.title("Event Bsp.:")

#EvBindingFct
def butt1EvHandler(event):
    print "EvType:",event.type
    tkMessageBox.showinfo("Event Info !!!", "Das <Button-1> Event hat dieses Dialogfenster ausgeloest!")

label=Label(root,text="Bitte mit linker Maustaste anklicken ... ")
label.bind("<Button-1>", butt1EvHandler)
label.pack()
root.mainloop()


Was passiert: Das Python Programm empfängt vom Widget "label" ein Ereignis "<Button-1>". Das entsprechende EventBinding dazu label.bind("<Button-1>", butt1EvHandler) ruft die dazugehörige EvHandler Funktion butt1EvHandler(event) auf und führt sie aus.

Genau dieses Prinzip gilt es in der oben genannten Plattform umzusetzen. Ein Plattform Objekt (Widget) schickt eine Ereignisnachricht an die EvEngine, diese prüft die Nachricht, ob es eine dazugehörige Funktion gibt (EventBinding) und wenn es diese gibt, wird sie dann entsprechend ausgeführt. Die Schwierigkeit am ganzen ist, dass das alles sich in einer DB abspielt und natürlich auch dynamisch zur Laufzeit konfigurierbar ist...

Das Thema Workflow würde ich gerne nochmal etwas allgemeiner angehen: Was für Erfahrungen gibt es bzgl. Workflowmanagement Systemen hier im Forum? Interessant sind hierbei schlechte und gute Erfahrungen. Was könnte an den Systemen besser sein? Was für Wünsche bestehen??? Diese "Erfahrungen" würde ich dann gerne mit meinem bisherigen Workflow Modell vergleichen und ev. anpassen.

Gruss Tabellar :wink:
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Sonntag 3. Juli 2005, 19:18

tabellar hat geschrieben:In welche Richtung möchtest Du denn Deine Datenauswertung automatisieren???


Hoi tabellar,

na, das hat natürlich zunächst einmal NICHTS damit zu tun, was Du hier schreibst. Es geht dabei schlicht darum ein Dutzend Standaloneprogramme (größtenteils mit Fortran 77) mit grausigem UI zusammenzufassen, vielleicht neuzuschreiben, ggf. neue Algorithmen zu implementieren und mit einem gescheiten (G)UI zu versehen (im Moment sitze ich an einem Misch aus GUI und commandline interface).
Aber ich hätte auch Lust die Verbindung aus Cluster und Meßrechner besser zu gestalten und aus dem Cluster selbst ebenfalls mehr herauszuholen.

Je mehr ich aber hier lese, desto mehr zweifele ich, ob ich Dich nicht mißverstanden habe und Du eigentlich an etwas ganz Anderem sitzt ... womit ich in dieselbe Kerbe haue, wie meine Vor-Schreiber hier: Das war vielleicht doch etwas unklar.

Wie wäre es Du gibst mal einen Link auf eine Webseite, auf der Du das Projekt vorstellst und auch Code präsentierst? Dann würdest Du erst so richtig für Dich tromeln und man würde Dich und Dein Anliegen womöglich besser verstehen.

Gruß,
Christian

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder