Wie man einfachen Workflow aus bestehendem Code macht?

8

Ich habe mehrere Aufgaben erstellt, jede nimmt eine Eingabe, eine Ausführungsfunktion, die ihren Status aktualisiert, und eine Funktion, um die Ausgabe dieser Aufgabe zu erhalten. Sie werden seriell oder parallel ausgeführt. Einige Ausgaben sind List, also gibt es auch Loops.

%Vor%

Ich möchte aus diesen Aufgaben einen Workflow machen und dann die Workflow-Strukturinformationen verwenden, um eine dynamische GUI zu erstellen und die Ausgaben jeder Aufgabe zu überwachen. Muss ich ein Workflow-Ausführungssystem von Grund auf schreiben oder gibt es eine einfache Alternative?

Gibt es eine Workflow-Engine, der ich (in XML) meine Java-Klassen, Eingabe- und Ausgabe- und Ausführungsfunktionen geben und ausführen lassen kann?

    
SMUsamaShah 24.09.2014, 11:15
quelle

7 Antworten

2

Besuche Aktivität . Dies ist nicht streng darauf ausgelegt, Ihren Anwendungsfall zu lösen, aber Sie können die Prozess-Engine verwenden und anpassen, um Ihnen zu helfen, da sie ausschließlich in Java geschrieben ist. Die Aktivität ist eher eine Prozessmodellierungs-Engine, so dass sie nicht zur parallelen Steuerung von Tasks zur Laufzeit ausgelegt ist, sondern Sie erhalten viele Dinge, die Sie "out of the box" wiederverwenden können.

  • Sie erhalten Aufgaben, die basierend auf der XML-Datei
  • verlinken
  • Sie erhalten Ihre GUI für die kostenlose Verknüpfung von Aufgaben (basierend auf Eclipse)
  • Sie erhalten die grafische Benutzeroberfläche im Webbrowser, um laufende Prozesse zu durchsuchen, neu zu starten und den aktuellen Status der Aufgaben anzuzeigen: Ссылка
  • Sie erhalten die Reporting-Engine kostenlos, wo Sie Berichte und Diagramme sehen können ("wie lange die Aufgaben dauerten", "wie lange der Prozess lief"
  • )
  • Sie erhalten die REST-API kostenlos. Andere Anwendungen können den aktuellen Status Ihrer Anwendung über einfache REST-Aufrufe abrufen

Wenn du in diese Richtung gehst, wirst du viele Dinge kostenlos bekommen. Vom Programmierpunkt von View aus können Sie beispielsweise von Task class von Activity api erben. Spät, wenn die Aufgabe abgeschlossen ist, rufen Sie

auf %Vor%

Sie können auch einen anderen Weg gehen. Wenn Sie also angeben, dass Ihre Klasse, die im Hintergrund berechnet wird, CalculationTask heißt, können Sie CalculatinTasks mit der neuen Instanz der Aktivitätsaufgabe verbinden. Dadurch erhalten Sie eine Brücke zur Activity Process Engine. Du kannst also etwas wie

machen %Vor%     
walkeros 01.10.2014, 07:03
quelle
4

In der Java-Welt wird Ihr Anwendungsfall als BPM (Business Process Management) bezeichnet.

In der .Net-Welt wird dies als Windows Workflow Foundation (WWF) bezeichnet.

Es gibt viele Java-basierte Open-Source-BPM-Tools. Der, den ich mag, ist jBPM .

Dies ist leistungsfähiger und kann mit Regel-Engines wie Drools integriert werden.

Beispiel jBPM Screenshot:

Auch Activiti ist eine weitere gute Wahl.

Beispiel Activiti Screenshot:

    
thangamanikasi 01.10.2014 13:08
quelle
2

Apache Camel ist ein Open-Source-Integrationsframework, das als leichtgewichtiges Workflow-System verwendet werden kann. Routen können mit Java, XML, Groovy oder Scala DSL definiert werden. Apache Camel enthält integrierte Überwachungskapazitäten. Außerdem können Sie externe Überwachungswerkzeuge wie Hawtio verwenden.

Sehen Sie sich auch Work Flow in Camel vs BPM an.

    
Peter Keller 01.10.2014 19:00
quelle
2

Vielleicht kann Ihnen State Chart XML (SCXML) helfen. Derzeit ist es ein Working Draft-Spezifikation von W3C veröffentlicht.

SCXML stellt eine generische, statusmaschinebasierte Ausführungsumgebung basierend auf Harel State Tables zur Verfügung.

Die Apache-Grundlagen bieten eine Java-Implementierung, die wir (meine Firma) derzeit verwenden, um Zustandsübergänge bei "Jobs" durchzuführen. Hier ist die Apache Commons SCXML Implementierung

    
Alboz 02.10.2014 12:23
quelle
2

Wenn Ihre Analyse zeitaufwendig ist und Sie kein sofortiges Feedback benötigen, benötigen Sie vielleicht gar keine Workflow-Engine, sondern einen Batch-Prozessor . Sehen Sie sich das Projekt Spring Batch an, das zusammen mit Camel Apache (siehe meine andere Antwort für weitere Informationen zu dieser Option).

    
Peter Keller 03.10.2014 19:18
quelle
1

Werfen Sie einen Blick auf Copper Engine Ссылка

Im Gegensatz zu Activiti und so ist es nicht erforderlich, eine Tonne XML zu schreiben, nur um einen einfachen Workflow zu ermöglichen

    
NewlessClubie 03.10.2014 15:49
quelle
1

Ich würde definitiv das Apache Storm-Projekt in Erwägung ziehen. Storm ist eine leicht erweiterbare, parallele Berechnungs-Engine. Unter den vielen Funktionen, die es zu verwalten, Fehlertoleranz und allgemeine Einfachheit (im Vergleich zu anderen ähnlichen Technologien wie Hadoop, glaube ich), werden Sie wahrscheinlich für ein Prototyp-System attraktiv sein.

Workflows wären analog zu Storm-Topologien; die verschiedenen Aufgaben wären Streams; und die verschiedenen Methoden in den Aufgaben würden spouts und bolts entsprechen. Außerdem unterstützt Storm mehrere Programmiersprachen in seiner API, wie Hadoop.

Storm wurde ursprünglich von Twitter entwickelt und dann wie andere Projekte wie Cassandra (Facebook) und Hadoop selbst (Yahoo!) Open Source. Für Sie als Nutzer bedeutet das, dass es für den tatsächlichen Gebrauch gebaut wurde, anstatt als rein theoretisches Konzept. Es ist auch ziemlich kampferprobt.

Ich hoffe, dass Ihnen das nützlich war und wünsche Ihnen viel Erfolg bei Ihrem Projekt!

    
Juan Carlos Coto 05.10.2014 03:13
quelle

Tags und Links