2009-08-11 5 views
1

Ich suche nach einer guten Bibliothek für die Verarbeitung von Aufgaben (oder "Operationen", wie wir sie in unserem Domänenmodell nennen) für Java oder .NET. Wir speichern jede Operation in db auszuführen und dann benötigen wir einen Mechanismus zum Abrufen nicht verarbeiteter Tasks von db, verarbeiten sie und aktualisieren db record mit korrektem Status ('verarbeite OK'/'Prozessfehler').Java/.NET-Aufgaben, die Bibliothek bearbeiten

Der Trick ist, dass der Betrieb voneinander abhängen kann. Wenn zum Beispiel 'Operation Zahlung' verarbeitet wird, kann das System feststellen, dass wir 'Operation Check Payment Data' vorher durchführen müssen - also sollte es eine neue Operationszeile in db anlegen, 'Operation Payment' ausführen, 'Operation Check Payment Data' ausführen 'in der nächsten Runde und nach Abschluss des Vorgangs zurück zur Verarbeitung' Operation Zahlung '.

Ich zeige Ihnen, wie wir das zur Zeit bewältigen.

Wir haben db Tabelle 'Operationen'. Cron-artiger Mechanismus wird jede Minute ausgeführt und ruft die ersten 100 unverarbeiteten Operationen aus db ab und verarbeitet sie. Wenn das System (während der Verarbeitung) feststellt, dass eine andere Operation (B) zur Ausführung der aktuellen Operation (A) erforderlich ist, wird eine neue Operation (B) erstellt, und die Ausführung der aktuellen Operation (A) wird angehalten. Next Minute Cron ruft Operationen A und B ab. Operation A wird abgerufen, da sie nicht verarbeitet wird, aber das System erkennt, dass die abhängige Operation B bereits erstellt wurde, sodass sie nicht erneut erstellt wird. Operation B wird verarbeitet und der Status 'verarbeitet OK' wird in der richtigen Zeile in db gespeichert. Next Minute Cron ruft Operation A von db ab und kann sie schließlich ausführen, da die abhängige Task abgeschlossen ist.

Wir suchen nach Möglichkeiten, um es einfacher, besser und eleganter zu machen.

+0

@michael: Könnten Sie nicht Windows Workflow Foundation (http://msdn.microsoft.com/en-us/netframework/aa663328.aspx) dafür verwenden? –

+0

Ich muss es überprüfen. Auch wenn ich mich noch für Open-Source-Alternative (vor allem Java) interessieren kann. – mgamer

Antwort