Rouven: Verteilte Objekte synchron halten?!

Beitrag lesen

Hallo,

ich bräuchte mal einen Denkanstoß bzgl. eines Problems in unserer Systemarchitektur.
Ausgangspunkt ist ein Workflow-System, das auf einem Rechner X läuft. Unter laufen wird dabei verstanden, dass das System den Workflow kennt und entsprechend dem Kontrollfluss folgen kann.
Weiterhin gibt es mehrere Clients auf denen Benutzer eine Aufgabenliste finden. Nach Beenden einer Aufgabe teilt der Client dies dem Hauptsystem mit, das daraufhin den entsprechenden Teil des Workflows als erledigt abhakt und weiter läuft.
Daneben gibt es auch noch eine Modellierungsoberfläche auf der man das Workflow-Modell auch zur Laufzeit ändern kann.

Nun ist folgendes:
Wäre alles auf dem selben Rechner hätten wir kein Problem. Ein Status-Modell sorgt dafür, dass sich "arbeiten" und "bearbeiten" nicht in die Quere kommen. Was dafür allerdings erforderlich ist, ist die Kenntnis des EINEN Workflows. Nun haben wir aber das Problem, dass das System sich ja über mehrere Rechner verteilt. An der Kommunikation bin ich nur mittelbar beteiligt, mein aktueller Kenntnisstand ist ein Servlet oder gar direkte Socket-Kommunikation.
Wir überlegen jetzt krampfhaft, welche Daten man wann geschickterweise austauscht.
Bei einer einzigen Anwendung hätte ich gesagt engine.gibMirWorkflowDefinition und hätte als Ergebnis die Referenz auf die Definition gehabt. Damit hätten Modell- und Statusänderung auf der selben Instanz stattgefunden. Aber was nun in Anbetracht der Verteilung? Schicke ich eine Kopie des Workflows durch die Welt habe ich ein Riesenproblem die beiden synchron zu halten, weil Änderungen aus dutzenden Richtungen kommen können.
Hat jemand eine Idee, wir man doch mit allen Anwendungen auf der selben Instanz arbeiten kann? Wäre RMI vielleicht eine Lösung?

MfG
Rouven

--
-------------------
Computer programming is tremendous fun. Like music, it is a skill that derives from an unknown blend of innate talent and constant practice. Like drawing, it can be shaped to a variety of ends: commercial, artistic, and pure entertainment. Programmers have a well-deserved reputation for working long hours but are rarely credited with being driven by creative fevers. Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see. -- Larry OBrien and Bruce Eckel in Thinking in C#