Frage

würde Ich mag Sie über spezifische Probleme kennen - den Leser SO - gelöst haben mit Workflow-Engines und welche Bibliotheken / Frameworks Sie verwendet, wenn Sie nicht Ihre eigene Rolle. Ich möchte auch wissen, wann eine Workflow Engine nicht die beste Wahl war und ob / wie man etwas einfacher, wie eine Tasklist / Worklist / Aufgabenmanagement Typ Anwendung gewählt Zustandsmaschinen verwendet wird.

Fragen:

  • Welche Probleme haben Sie Workflow-Engines verwendet zu lösen?
  • Welche Bibliotheken / Frameworks haben Sie?
  • Wann hat eine einfachere State Machine / Task-Management-System wie ausreiche?
  • Bonus: Wie hat / haben Sie den Unterschied machen zwischen Task Management und Workflow Engine ?

Ich suche nach Erfahrungen aus erster Hand.

Einige der Ressourcen, die ich überprüft habe aus:

War es hilfreich?

Lösung

Ich bin auch voreingenommen, da ich der Hauptautor von die steinigen Pfad .

Ich habe entwickelt Workflow-Anwendungen für das US-State Department, das Genferen Zentrum für humanitäre Minenräumung, mehr Fortune 500-Kunden, und in jüngster Zeit das Washington DC Public School-System. Jedes Mal, wenn ich eine ‚Workflow Engine‘ gesehen habe, dass die eine Master-Referenz für die Geschäftsprozesse zu sein versuchte, habe ich eine Organisation gesehen mich an der Arbeit um das Werkzeug zu kämpfen. Dies kann aufgrund der Tatsache, dass diese Lösungen schon immer Verkäufer / Produkt getrieben, und dann mit einem taktischen Team von 'Beratern am Ende immer wieder die App Fütterung ... aber weil dieser, neige ich dazu, negativ zu reagieren, wenn ich das hören Vorteile der prozessbasierte Tools, die versprechen ‚um die Workflow-Definitionen an einem Ort zu zentralisieren und sie wiederholbar zu machen.‘

sagte, dass ich sehr viel wie Ruote - Ich habe seit einiger Zeit das Projekt verfolgt und soll ich brauche diese Art von Lösung, wird es das nächste Werkzeug sein, die ich bereit sein zu versuchen. Steiniger Pfad hat einen ganz anderen Zweck als ruote - wo Ruote Ruby im Allgemeinen nützlich ist, ist die steinige Pfad an Rails richtet Rahmen Web in Ruby geschrieben. Wo Ruote über langlebige Geschäftsprozesse und die zugehörigen Definitionen ist, ist die steinige Pfad zu State-basierten Workflow-Management und Tasking. Ehrlich gesagt, ich glaube, die Unterscheidung von außen sucht in sein könnte subtil - oft die gleichen Arten von Geschäftsprozessen können so oder so dargestellt werden -. Das Staat-and-Task-basierte Modell neigt allerdings zu meinem mentalen Modell zur Karte

Lassen Sie mich die Höhepunkte eines zustandsbasierten Workflow beschreiben. Kurz gesagt, stellen Sie sich einen Workflow rund um die Verarbeitung von so etwas wie ein Hypothekendarlehen oder einen Reisepass Erneuerung dreht. Da das Dokument bewegt ‚rund um das Büro‘, fährt er von Staat zu Staat. Stellen Sie sich vor, wenn Sie für das Dokument verantwortlich sind, und Ihr Chef Sie gebeten, alle paar Stunden für ein Status-Update, und wollte eine kurze Antwort ... Sie würde sagen Dinge wie: „Es ist in der Dateneingabe“ ... „Wir sind Prüfung die Anmeldeinformationen des Antragstellers jetzt“...‚wir warten auf Qualität Bewertung‘...‚wir sind fertig‘... und so weiter. Dies sind die Zustände in einem zustandsbasierten Workflow. Wir bewegen uns von Staat zu Staat über Übergänge - wie „genehmigen“, „anwenden“, Rückschlag“,‚verweigern‘, und so weiter diese neigen dazu, Verben zu sein Dinge wie dies modellieren die ganze Zeit in der Software als eine Zustandsmaschine.. .

Der nächste Teil eines Staates / aufgabenbasierten Workflow ist die Erstellung von Aufgaben. Eine Aufgabe ist eine Einheit der Arbeit, in der Regel mit einem Fälligkeitsdatum und Handhabungsvorschriften, die eine Arbeitseinheit (den Kreditantrag oder Reisepass Erneuerung, zum Beispiel) verbindet, an einen Benutzer „im Kasten“. Aufgaben können miteinander parallel geschehen oder sequentialy, und wir können Aufgaben automatisch erstellen, wenn wir Zustände eintreten, erstellen Aufgaben manuell als Menschen erkennen Arbeit Bedürfnisse zu erledigen und erfordern Aufgaben abgeschlossen sein, bevor wir auf einen neuen Zustand bewegen kann. All diese Art von Verhalten ist optional, und ein Teil der Workflow-Definition.

Der Kaninchenbau kann viel tiefer als diese gehen, und ich schrieb einen Artikel über sie für Issue # 4 von PragPub, die Pragmatische Programmierer Zeitschrift. Schauen Sie sich die reo Link oben, um eine aktualisierte PDF dieses Artikels.

Bei der Arbeit mit steinigem Pfad in den letzten Monate habe ich festgestellt, dass der Staat basiertes Modell abbildet wirklich gut zu erholsamen Webarchitekturen - insbesondere die Aufgaben und Zustandsübergänge abbilden schön wie verschachtelte Ressourcen. Erwarten Sie, um zukünftige Schreiben von mir zu diesem Thema zu sehen.

Andere Tipps

Ich bin voreingenommen, ich bin einer der Autoren von ruote .

Variante 1) Zustandsmaschine zu einer Ressource angebracht (Dokument, Bestellung, Rechnung, Buch, Möbelstück).

Variante 2) Zustandsmaschine in einer virtuellen Ressource mit dem Namen eine Aufgabe angebracht

Variante 3) Workflow-Engine zu interpretieren Workflow-Definitionen

Jetzt ist Ihre Frage „BPM“ getaggt können wir in „Business Process Management“ erweitert werden. Wie funktioniert diese Art von Management in jedem der Variante auftreten?

In der Variante 1 wird der Geschäftsprozess (oder Workflow) in der Anwendung verstreut. Die Zustandsmaschine auf die Ressource angebracht erzwingt einige der Aspekte des Workflows, sondern nur diejenigen, auf die Ressource bezogen. Es kann nach dem gleichen Geschäftsprozesse mit ihrer eigenen Zustandsmaschine andere Ressourcen.

In der Variante 2 kann der Workflow von der Zustandsmaschine um diese Ressource um die Aufgabe Ressource und repräsentierte konzentriert werden.

In der Variante 3 wird der Workflow in Kraft gesetzt durch eine Ressource der Interpretation einer Workflow-Definition (oder Geschäftsprozessdefinition) genannt.

Was passiert, wenn der Geschäftsprozess ändert? Lohnt es sich, eine Workflow-Engine, die in dem Geschäftsprozesse sind überschaubar Ressourcen?

Die meisten der Zustandsmaschine Bibliotheken haben 1 Satz Zustände + Übergänge. Workflow-Engines, die meisten von ihnen, Workflow-Definition Dolmetscher und sie mehrere verschiedene Workflows ermöglichen zusammen auszuführen.

Was werden die Kosten den Workflow zu ändern?

Die Varianten schließen sich nicht aus. Ich habe viele Beispiele gesehen, wo ein Workflow-Engine, die den Zustand mehrerer Ressourcen einige von ihnen ändert sich von Zustandsmaschinen bewacht.

die Workflow-Engine, an einigen Stellen, wenn eine Prozessinstanz, die Hände eine Aufgabe (workitem) zu einem menschlichen Teilnehmer (resource Aufgabe erstellt läuft und in Zustand gebracht ':

ich auch Variante 3 + 2 eine Menge, für die menschliche Aufgaben verwenden ready ").

Sie können einen langen Weg mit Variante 2 alleine gehen (der Task-Manager-Variante).

Wir könnten auch erwähnen Variante 0), in denen es keine Zustandsmaschine ist, keine Workflow-Engine und den Geschäftsprozess (es) gestreut und / oder in der Anwendung fest einprogrammiert.

Sie können viele Fragen stellen, aber wenn man sich nicht die Zeit nehmen, die Antworten zu lesen und nehmen Sie nicht die Zeit, um auszuprobieren und zu experimentieren, werden Sie nicht sehr weit gehen, und erwirbt nie Gespür für wenn dieses oder jenes Werkzeug zu benutzen.

Auf einem früheres Projekt wurde ich am i Arbeits fügte einige Typen Workflow-Regeln auf eine Reihe von Regierungsformen in der Healhcare Industrie.

Formulare benötigt werden, durch den Endverbraucher ausgefüllt und in Abhängigkeit von einigen Antworten andere Formen geplant wurden zu einem späteren Zeitpunkt ausgefüllt werden. Es gab auch externe Ereignisse, die Formulare oder planen neue geplante cancel würde.

Probenfluss:

Patient aufgenommen -> Zeitplan Initial Prüfformular -> Zeitplan Quarterly Review Form -> Patient stirbt -> Abbrechen Review -> Zeitplan Entlastung Formular zur Bewertung

Viele andere Regeln wurden auf Dinge basiert wie Patientenalter, wo sie zugelassen wurden etc.

Dies war eine ASP.NET-Anwendung, die Regeln in der Datenbank im Grunde eine Tabelle waren. Ich fügte hinzu, Scripting, so dass ein Skript auf Formular vollständig ausgeführt würde, um zu bestimmen, was als nächstes zu tun ist. Das war ein schreckliches Design und wäre perfekt für eine richtige Workflow-Engine hat.

Überprüfen Sie rails_workflow Juwel - ich denke, das ist in der Nähe zu dem, was Sie suchen.

Ich bin einer der Autoren von Cadence Workflow Engine wir bei Uber entwickelt. Der Unterschied zwischen Cadence und der Mehrheit des bestehenden Workflow-Engines ist, dass es Entwickler ist fokussierte und ist äußerst flexibel und skalierbar (bis zu Zehntausenden Updates pro Sekunde und bis zu Milliarden von offener Workflows). Die Arbeitsabläufe werden als objektorientierte Programme, und den Motor, sicher geschrieben, dass der Zustand der Workflow-Objekte einschließlich Fadenstapel und lokale Variablen vollständig im Fall von Hostfehler erhalten bleibt.

  

Was Probleme haben Sie Workflow-Engines verwendet zu lösen?   Cadence ist für praktisch jede Backend-Anwendung des Lebens über eine einzige Anforderung Antwort verwendet. Anwendungsbeispiele sind:

  • Distributed CRON Jobs
  • Verwaltung ML / Datenleitungen
  • Als Reaktion auf geschäftliche Anlässe. Zum Beispiel Auslösungen bei Uber. Der Workflow kann Zustand akkumulieren basierend auf Ereignisse empfangen und Aktivitäten durchführen, wenn notwendig.
  • Services-Bereitstellung zu Mesos / Kubernetes
  • CI Pipeline Implementierung
  • Sicherstellen, dass mehrere Service-Anrufe beendet, wenn eine Anfrage empfangen wird. Einschließlich SAGA Muster Implementierung
  • Verwalten von menschlichen Arbeiter Aufgaben (ähnlich Amazon MTurk )
  • Medienverarbeitung
  • Customer Support Ticket Routing
  • Auftragsbearbeitung
  • Testing Service ähnlich wie ChaosMonkey

und viele andere

Der andere Satz von Anwendungsfällen basieren auf der Portierung bestehenden Workflow-Engines auf Cadence laufen. Kann praktisch jede vorhandene Motor Workflow Spezifikationssprache läuft auf Cadence portiert werden. Es gibt mehrere interne Uber-Systeme, die portiert wurden. Auf diese Weise ein einzelner Backend-Service kann mehrere Domain-spezifische Leistung Workflow-Systeme.

  

Was Bibliotheken / Frameworks haben Sie?

Cadence ist ein eigenständiges Service in Go geschrieben mit Go und Java Client-Bibliotheken. Die einzige externe Abhängigkeit ist die Speicherung. Cassandra und SQL-Datenbanken unterstützt.

Cadence unterstützt auch asynchronen Querbereich (unter Verwendung von Terminologie AWS) replication.

  

Wann hat eine einfachere State Machine / Task-Management-System wie ausreiche?

Innerhalb Uber des Cadence-Dienst wird von unserem Team verwaltet. So der Aufwand für den Aufbau beliebige benutzerdefinierte Zustandsmaschine / Task-Management ist immer höher als die Verwendung von Cadence. Auch außerhalb des Unternehmens müssen der Service und die Lagerung für sie eingerichtet werden. Wenn Sie bereits eine SQL-Datenbank die Bereitstellung von Diensten haben, ist trivial durch ein Docker Bild. Die Docker sind auch einen lokalen Cadence-Service für die Entwicklung auf einem Personal Computer oder Laptop laufen verwendet.

rollte ich meine eigene Workflow-Engine zur Unterstützung der Verarbeitung von Dokumenten entwickelt Phased - Katalogisierung, das Senden für die Bildverarbeitung (wir mit Schwärzung sw arbeiten), erforderlich, wenn der Validierung zu senden, dann loslassen und schließlich an den Client zurück versenden. In unserem Fall haben wir eine Fülle von Dokumenten zu verarbeiten, so manchmal müssen wir jeden Dienst separat zu steuern, Lieferung und Ressourcen Nutzung auszuführen. Einfach im Konzept, aber hohe Leistung und verteilen benötigte Verarbeitung und wir could't jeden aus dem Regal Produkt finden, das die Rechnung für uns passen.

Ich habe eine Erfahrung mit der Verwendung von Activiti BPMN 2.0-Engine für den Umgang mit High-Performance und High-Throughput-Daten Transferprozesse in einer Infrastruktur von Netzknoten. Die grundlegende Aufgabe bestand darin, zu ermöglichen Konfiguration und Überwachung solcher Übertragungsvorgänge und jeden Netzwerkknoten steuern (dh. Anfrage node1 eine Datendatei zu node2 über spezifische Transportschicht zu senden).

Es könnte Tausende von Prozessen sein zu einem Zeitpunkt ausgeführt wird und insgesamt zehn oder niedrige Hunderttausende Prozesse pro Tag.

Es gab Reihe von verschiedenen Prozessdefinitionen, aber es war nicht unbedingt erforderlich, dass ein Bediener des Systems benutzerdefinierten Workflows erstellen kann. So der primäre Anwendungsfall für die BPM-Motor war sich robust, skalierbar und ermöglichen die Überwachung der einzelnen Prozessablauf sein.

Am Ende es im Grunde gearbeitet, aber was wir aus diesem Projekt gelernt habe, war, dass ein BPMN-Plattform, oder besser gesagt die Activiti Motor speziell, war nicht die beste Wette für einen solchen Hochdurchsatz-System.

Die wichtigsten Herausforderungen waren die Aufgabenausführung Priorisierung, DB-Verriegelung, Ausführung Wiederholungen selbst die wenigen über die BPM zu nennen. So hatten wir Gewohnheit zu entwickeln, diese Handhabung, zum Beispiel:

  • Handling von Wiederholungen in der BPM für die Fälle, wenn ein Knoten keinen freien Arbeiter für bestimmte Aufgabe hatte, oder wenn der Knoten nicht läuft wurde.
  • Ausführung von parallelen Übertragungsaufgaben in einem einzigen Prozess und die Synchronisation der Ergebnisse (Erfolg / Misserfolg).

Ich weiß nicht, ob andere BPMN Motoren für solches Szenario wäre besser geeignet, da BPMN meist für gedacht lang laufende Geschäftsaufgaben Interaktion mit dem Benutzer bestehen, bei denen die Leistung ist wahrscheinlich nicht das gleiche Problem wie in unserem Fall war.

Ich bin einer der Autoren von Imixs-Workflow-. Imixs-Workflow-ist eine Open-Source-Workflow-Engine auf Basis von BPMN 2.0 und vollständig in den Java EE Technologie-Stack integriert.
Ich entwickle Workflow-Engines von mir seit mehr als 10 Jahren. Ich werde versuchen, Ihre Frage kurz zu beantworten:

> Welche Probleme haben Sie Workflow-Engines verwendet zu lösen?

Mein persönliches Ziel, als ich begann, darüber nachzudenken, Workflow-Engines war schwer zu vermeiden Codding die Business-Logik in meiner Anwendung. Viele Dinge in einer Business-Anwendung können wieder verwendet werden, so dass es sinnvoll, sie konfigurierbar zu halten macht. Zum Beispiel:

  • Aussenden einer Mitteilung
  • sehen offene Aufgaben
  • eine Aufgabe zu einer Person zugeordnet
  • beschreibt die aktuelle Aufgabe

Aus dieser Funktionsliste können Sie sehen, ich spreche von Menschen orientierte Workflows. Kurz gesagt: Ein am Menschen orientierte Antworten Workflow-Engine, die Fragen: Wer für eine Aufgabe zuständig ist und wer muss nächste informiert werden? Und das sind die typischen Fragen der Geschäftsanforderungen.

> Was Bibliotheken / Frameworks haben Sie?

Vor 5 Jahren begannen wir mit Schwerpunkt Imixs-Workflow-Engine Neuimplementierung auf BPMN 2.0 . BPMN ist der gemeinsame Standard für die Prozessmodellierung. Und die überraschende Sache für mich war, dass wir auch sehr komplexe Geschäftsprozesse plötzlich in der Lage zu beschreiben waren, die sichtbar gemacht und ausgeführt werden können. Ich jedem empfehlen BPMN zu verwenden, um Geschäftsprozesse zu modellieren.

> Wann hat eine einfachere State Machine / Task-Management-System wie ausreiche?

Eine einfache Zustandsmaschine ist ausreichend, wenn Sie nur den Status eines Business-Objekt verfolgen möchten. Dies ist der Fall, wenn Sie das ‚Status‘ Attribut in Ihr Objektmodell beginnen einzuführen. Aber für den Fall, müssen Sie Geschäftsprozesse mit Aufgaben, Protokollierung und Kontrolle fließen, dann eine Zustandsmaschine ist nicht mehr ausreichend.

> Bonus: Wie hat / haben Sie den Unterschied zwischen Task Management und Workflow-Engine machen

Das ist genau der Punkt, an dem viele Workflow-Engines unterscheiden hier erwähnt. Für einen Menschen-zentrierten Workflow Sie müssen in der Regel eine Task-Management-Aufgaben zwischen menschlichen Akteuren zu verteilen. Für eine Prozessautomatisierung, ist dieser Punkt nicht so relevant. Es genügt, wenn der Motor bestimmte Aufgaben ausführt. Task-Management und Workflow-Engines verglichen werden kann, weil Task-Management immer eine Funktion einer Workflow-Engine ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top