Konzepte,Ideen, Bücher über Prozesse in Webanwendungen?

pizza1234

Erfahrenes Mitglied
Hallo,
hat jemand von euch vielleicht ein paar Ideen, Bücher o.ä. , wie man von einander abhängende Prozesse in Webanwendungen am besten darstellt, programmiert usw.
Damit meine ich jetzt aber nicht den abgeschlossenen Prozess innerhalb einer Session, wie z.B bei einen Bestelllvorgang sondern eher so:

Es gibt zB. 5 Prozesse in einer Prozesskette, die der User tätigen muss, um an sein "Ziel" zu kommen.

Beispiel:
User loggt sich ein -> startet Prozess 1 -> Prozess 1 fertig -> relevante Informationen in DB -> User loggt sich aus.

User loggt sich ein -> will Prozess 2 starten -> Prozess 2 schaut, ob Prozess 1 fertig -> Prozess 1 fertig -> Prozess 2 wird gestartet ... usw.

User loggt sich ein -> will Prozess 3 starten -> Prozess 3 schaut, ob Prozess 1 fertig -> Prozess 1 fertig -> Prozess 3 wird gestartet ... usw.
....
...
User loggt sich ein -> will Prozess 5 starten -> Prozess 5 schaut, ob Prozess 4 fertig -> Prozess 4 noch nicht fertigt ->!!Hinweis:prozess 5 kann nicht gestartet werden ... usw.!!

User loggt sich ein -> will Prozess 4 beenden -> Prozess 4 schaut, ob Prozess 3 fertig -> Prozess 3 fertig -> Prozess 4 wird beendet ... usw.

User loggt sich ein -> will Prozess 5 starten -> Prozess 5 schaut, ob Prozess 4 fertig -> Prozess 4 fertig -> Prozess 5 wird gestartet -> ...Prozesskette ist beendet!


Jeder Prozess muss also schauen, ob der vorhergehende Prozess schon erledigt ist.
Als 1. Schwierigkeit besteht, das es nebenläufige Prozesse gibt. d.h es muss nicht jeder Prozess vom Vorgänger abhängig sein. dh. es kann Prozess 3 vor Prozess 2 gestartet werden , da beide von Prozess 1 abhängen.

User loggt sich ein -> will Prozess 3 starten -> Prozess 3 schaut, ob Prozess 1 fertig -> Prozess 3 wird gestartet ... usw.


Die 2. Schwierigkeit besteht darin, das sich die Prozessabhängigkeiten zB. aufgrund von Gesetzen ändern können oder ganz wegfallen können, d.h man muss flexibel bleiben, ohne ständig nachprogrammieren zu müssen.

Natürlich kann der Prozess 5 schauen, ob zb. in der DB bei Prozess 4 der Status auf 'erledigt' steht, allerdings muss er dazu auch erstmal wissen, das Prozess 4 sein Vorgänger ist.
Aber woher weiß er das?

Meine momentane Idee ist ein xml-file zur Konfiguration einerseits für die Darstellung(der View stellt die Prozessreihenfolge anhand des xml-files dar), andererseits für die Prozesse intern zB:
<prozesskette>
..
<prozess id="3">
<depends-on>2</depends-on>
<max-runtime value="dd">+30</maxruntime>
...
</prozess>
..
</prozesskette>

Die 3.Schwierigkeit besteht darin, das die Prozesse nicht automatisch die Datenbank wiederspiegeln.
Heißt zb.: Prozess 2 enstpricht nicht der Tabelle Prozess 2, sondern Prozess 2 bedeutet zb: 'Mailverkehr' und beinhaltet zB. die Tabellen mit ihren Fremdschlüsseln: User, Role, Mail, Prozesskette,...

Irgendwie sehe ich noch nicht ganz, wie ich das alles am besten und flexibelsten zusammenbekomme, so das die Anwendung skalierbar und die Prozesse administrierbar bleiben.
Ich hoffe, ich hab mich einigermaßen verständlich gemacht.
Ach so, soll laufen mit Spring, Hibernate, MySQL und Tomcat!

Vielleicht hat von euch einer ja sowas schon mal gemacht oder hat Ideen oder kennt ein paar Bücher.

Grüße
Peter
 
Ich würde sagen, es ist Zeit für ein vernünftiges Domänenmodell. Wie sollen Prozesse aussehen, wie sind sie miteinander verbunden? Gibt es Regeln, denen sie genügen müssen usw.

Auf den ersten Blick auf die Überschrift dachte ich es ginge um Prozesse im technischen Sinne. Aber was du brauchst ist eine Domänenanalyse, die ein gutes Domänenmodell hervorbringt. Das ist aber nix, bei dem man in einem Forum konkrete Antworten geben kann. Wenn es auf solche Fragen einfache und vor allem eindeutige Antworten gäbe, wäre ich wohl meinen Job los.

Als Buchempfehlung, wie man sowas designt kann ich dir Eric Evans' Domain Driven Design empfehlen. Hier werden die Grundkonstrukte von guten Domänenmodellen vorgestellt: Entities, ValueObjects, Repositories, Factories, Services usw. Ziel muss es sein ein Domänenmodell zu entwickeln in denen einzelne Teile (Klassen und Methoden) die Fachlichkeit (in deinem Fall das Modellieren von Prozessen) möglichst gut wiederspiegeln. Hierbei ist es weder wichtig, welche Programmiersprache du wählst, noch welche Technologien zum Einsatz kommen.

Darumherum hast du "Webapplikation" in den Raum geworfen. Das ist ein weites Feld. Grundsätzlich gibt es hier im Forum eine Reihe von Posts die au das Thema eingehen:

http://www.tutorials.de/forum/enter...ng-co/283835-strukturierung-webanwendung.html

Wie gesagt, sowas ist nichts, was man eben mal in einem Forum erläutert bekommt. Zumal man viel tiefer in die Materie und Anforderungen einsteigen müsste und Vorkenntnisse und Rahmenbedingungen kennen um konkrete technische Tipps zu geben.

Gruß
Ollie
 
Hi Ollie,

mit den Domainenmodell hast du natürlich Recht, es ist nur manchmal sehr schwierig, den Anfang zu finden. Manchmal reicht es ja auch schon, mit jemanden mal kurz drüber zu sprechen, der was (technisch) Ähnliches gemacht hat, sozuzsagen UBIQUITOUS LANGUAGE zwischen Entwicklern. ;-), um ein paar neue Impulse zu bekommen.

Ich werde mir das Buch auf jeden Fall mal besorgen.

Wen es interessiert, der kann hier mal eine kurze Zusammenfassung über DDD bekommen:
http://www.infoq.com/minibooks/domain-driven-design-quickly

Danke dir,
Peter
 

Neue Beiträge

Zurück