Wann werden Workflow-Engines verwendet?


41

Ich habe in der Vergangenheit als Programmierer an einigen Workflow-Engines gearbeitet, hatte aber nie eine Ahnung, warum wir die Workflow-Engines überhaupt ausgewählt haben. Und als Programmierer weiß ich, dass es mindestens 100 Möglichkeiten gibt, etwas zu tun, wenn Sie Code schreiben, aber nur wenige sind die besten!

Ich verstehe immer noch nicht, welche Anwendungsfälle am besten durch Workflow-Engines (oder vielmehr deren Konzept) gelöst werden können, als eine gute DI-fähige Anwendung zu entwerfen. Ich suche nach allgemeinen Merkmalen für domänenneutrale Anwendungsfälle, bei denen Workflow-Engines eine der besten Optionen darstellen.

Meine Frage lautet also: Was sind die allgemeinen Merkmale einer Anforderung, die als Signal für die Entscheidung für eine gute Workflow-Engine und die Codierung um diese herum verwendet werden können?


1
Was ist eine DI-fähige Anwendung?
Newman

Ich entschied mich für die Abhängigkeitsinjektion, aber es
erforderte

1
@JasonTrue Oh, also haben auch Sie Windows Workflow Foundation verwendet!
Gilles

@ Gilles wie konntest du das sagen? : P
JasonTrue

Antworten:


22

Eine Workflow-Engine ist nützlich, wenn Sie von Anfang bis Ende arbeiten müssen, aber es gibt viele verschiedene Pfade / Logik / Regeln, um dahin zu gelangen.

Nehmen wir zum Beispiel an, ich schreibe ein Programm, das Inhalte veröffentlicht. In meinem Fall durchläuft die Veröffentlichung einen Überprüfungsprozess, eine rechtliche und dann eine endgültige Genehmigung. Ich schreibe das Programm auf, das meine Prozesslogik und -schritte implementiert. Nun, diese Arbeit ist großartig für mich und meine Firma. Also entscheide ich mich, dass andere mein Programm verwenden sollen.

Leider veröffentlicht nicht jeder Inhalt mit demselben Prozess. Anstatt separate Prozesse für jeden einzelnen Fall zu schreiben, würden wir einen Workflow-Prozess implementieren, sodass das Programm flexibel ist, um allen gerecht zu werden. Egal wie viele Schritte, Regeln oder Logik zwischen diesen beiden Punkten liegen, das Ergebnis ist das gleiche.

Wenn Sie also Prozesse haben, die von Anfang bis Ende variabel sind, verwenden Sie einen Workflow. Wenn derselbe Prozess von allen verwendet werden kann, benötigen Sie keinen Workflow.


Aber wie verbindet sich das mit der realen Welt? Sie hätten beispielsweise eine Datenbank mit dem Verfolgungsstatus "Prozessdatensätze" gemäß einem Statusdiagramm , müssen dann aber noch die Benutzeroberflächen und Warnungen, E / A-Nachrichten über Messagingsysteme, ETL-Jobs usw. codieren Sie sich in der Mitte eines Kommunikationsknotens auf und führen Sie ihn aus. Ist die "Workflow-Engine" eine ausgefallene Methode, um das Zustandsdiagramm einzurichten und "auszuführen"?
David Tonhofer

@ David - Bis zu einem gewissen Grad ja.
Jon Raynor

19

Ich weiß, dass Sie nach Anwendungsfällen gefragt haben, aber es ist einfacher, die Vorteile aufzulisten, als sich alle möglichen Anwendungsfälle vorzustellen. Die Vorteile hängen natürlich von der Engine und der Sprache ab, die Sie vergleichen, aber im Allgemeinen:

  1. Wenn Sie Regeln als Daten anstelle von Code beibehalten, müssen Sie sie nicht erneut kompilieren, damit Sie Änderungen schnell testen, zur Laufzeit ändern usw. Dies ist jedoch kein großer Vorteil, wenn Sie sie nicht erst erneut kompilieren müssen.

  2. Es ist vernünftigerweise zu erwarten, dass Benutzer die Regeln bearbeiten. Sie können sie möglicherweise auf eine Weise interaktiv basteln, die nicht durchführbar ist, wenn ein Programmierer Code für sie schreibt.

  3. Das Behalten von Regeln als Daten ermöglicht das Schreiben von Tools zum Visualisieren und Ändern der Daten.

  4. Das Behalten von Regeln als Daten erleichtert die Metaprogrammierung - Sie können Code schreiben, um die Daten zu analysieren und komplexer einzufügen, was für Code sehr schwierig wäre.

All diese Dinge können direkt mit Code geschehen (z. B. - Schreiben Sie einen C # -Parser, um alle Regeln eines bestimmten Typs zu finden, und generieren Sie Code für weitere Regeln. Fügen Sie ihn dynamisch in eine Assembly ein, sodass die Assembly entladen werden kann. Schreiben Sie Tools für Benutzer können dies auch mit Ihrem Visualizer und Editor tun. Dies kann jedoch abhängig von Ihrer Sprache sehr viel schwieriger sein (Programmierer, die Lisp verwenden, können die Punkte 1-4 als "Programmieren" bezeichnen).


5
Keines davon ist tatsächlich ein Vorteil in einem relativ komplexen Projekt jeglicher Größe. Sie werden feststellen, dass Sie die Regeln eines anderen Benutzers endlos "debuggen", die in die produktive Umgebung geworfen wurden, ohne ausreichende Tests oder Dokumentation.
James Anderson

+1 für Lisp-Referenz - Code ist Daten und umgekehrt.
Michael H.

2
@JamesAnderson: Mit der Ausnahme, dass der Kunde jetzt seine eigenen Nicht-Programmierer (Workflow-Berater) für die Fehlerbehebung seiner eigenen Regeln bezahlen kann, ohne einen Support-Fall beim Softwarehersteller einreichen zu müssen.
rwong

3

IMHO der einzige Fall, in dem Sie diese Art von Dingen verwenden sollten, ist, wenn es von weniger wertvollen Benutzern konfiguriert werden kann. Wenn Sie Ihr Problem lösen können, indem Sie ihnen ein Werkzeug geben, dann arbeiten Sie wieder an etwas Wichtigerem als an einem.

Wenn Sie es dennoch für sie einrichten müssen, können Sie sich 10 verschiedene Möglichkeiten vorstellen, um mit einem vertrauten Tool das gleiche Ergebnis zu erzielen, und es wird viel einfacher zu unterstützen und anzupassen sein.


3

Das sieht aus wie eine alte Frage, taucht aber in freier Wildbahn häufig auf. Ich stimme Jons Antwort zu . Ich habe festgestellt, dass Workflow-Engines in den folgenden Szenarien sehr produktiv sind:

  1. Es gibt einen zugrunde liegenden Geschäftsprozess, den Sie durch Ihre Software darstellen / implementieren möchten.
  2. Es gibt eine einzelne (möglicherweise zusammengesetzte) Geschäftseinheit, an der in allen oder einigen Phasen des Prozesses gearbeitet wird. In dem von Jon angegebenen Beispiel wäre diese Entität oder dieses Workflow-Element ein Inhalt oder ein Artikel. Betrachten Sie die Fehlerverfolgung als ein weiteres Beispiel für einen Workflow. Ein Fehler wechselt zwischen verschiedenen Zuständen, basierend auf einer Aktion, die ein Benutzer ausführt.
  3. Verwenden Sie Workflows, um Ihre Prozesse zu modellieren, nur wenn Sie erwarten, dass sich der Geschäftsprozess ändert. Mit "Änderung" meine ich die Abfolge oder Aktion, die als Ergebnis einer Benutzeraktion oder eines Benutzerübergangs ausgeführt wird.

Seien Sie sehr vorsichtig und kritisch, um festzustellen, ob Ihre Problemdomäne / -anforderungen einen Geschäftsprozess aufweisen. Versuchen Sie nicht, ihn in einen Workflow "einzupassen".


Was mir an dieser Antwort gefällt, ist der Teil über das "Modellieren" Ihres Prozesses, dh das Zeichnen auf einem Whiteboard. Ich denke, das wird sehr veranschaulichen, ob eine Workflow-Engine (basierend auf den Vorschlägen in diesen Antworten)
angewendet würde

1

Ich verwende einige Richtlinien, um Workflow-Engines vorzuschlagen.

1) Wenn die Business Analysten keinen codierenden Hintergrund haben, aber Diagramme zeichnen können.

Moderne Workflow-Engines verwenden die Notation zur Geschäftsprozessmodellierung oder die weniger leistungsfähigen Versionen von SharePoint und ähnlichen Systemen. Mit diesen können technisch kompetente, jedoch von der Programmierung herausgeforderte Mitglieder des Teams viele Arbeitsabläufe entwerfen und entwickeln.

2) Wenn Sie den Arbeitsfortschritt überwachen müssen, führen Sie Eskalationen durch, wechseln Sie zwischen computergesteuerten Prozessen und menschengesteuerten Prozessen hin und her.

Überwachung und Selbstreferenz sind Markenzeichen moderner Workflow-Engines.


-2

Aus HR-Sicht sind Workflow-Engines sehr wichtig.

  1. Sie bieten einen strukturierten Prozess, auch wenn er jedes Mal gleich ist.
  2. Sie sorgen für Transparenz

    • Wer hat die Änderung beantragt?
    • Wann wurde es angefordert,
    • Wer hat zugestimmt etc.

    Diese Transparenz hilft, den Prozess voranzutreiben und die Eigenverantwortung zu fördern.

Vorausgesetzt, die Formulare sind integriert und intelligent und unterstützen die Geschäftslogik. Dies wirkt sich auch dramatisch auf die Zeitachse, die Verarbeitungseffizienz und die Datenqualität aus. Sicherheit ist ebenfalls ein wichtiger Aspekt, und das Enthalten vertraulicher Informationen in einem sicheren System ist Papierformularen vorzuziehen, die darauf warten, unterschrieben zu werden. Es ist auch viel mobiler. Nach einer kürzlichen Implementierung teilte mir ein Manager mit, dass es ihm viel Ärger erspart habe, wenn ihm auf Reisen Dinge zum Unterschreiben zugestellt wurden.

Im Auftrag der Personalabteilung: Es lebe der Workflow !!!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.