Workflows In Adempiere de

From ADempiere
Jump to: navigation, search
This Wiki is read-only for reference purposes to avoid broken links.

Workflows in Adempiere

  • Autor: Michael Heyduk, ObjectCode GmbH, 44534 Lünen, Germany www.ObjectCode.de
  • Adempiere-Version: 3.4.2s

Wie funktionieren Workflows in Adempiere?

Neben den einfachen statischen Workflows, die bereits aus Compiere bekannt sind, kennt Adempiere mittlerweile auch "echte", dynamische Workflows. Letztere können als vollwertige BPM-Lösung (Business Process Management) dienen. Mit dynamischen Workflows kann man komplexe Geschäftsprozesse in Unternehemn abbilden und damit steuern und überwachen.

Workflow-Typen

Adempiere kennt folgende drei Workflow-Typen:

  • Statischer Workflow
    • 1) General Workflow
      • Definition einer Abfolge von Windows, um eine Aufgabe zu bearbeiten.
      • Der Benutzer startet den Workflow manuell aus dem Menu und sollte im Anschluß die vorgegebenen Windows sequentiell abarbeiten.
    • Früher kannte Compiere nur diese Art der Workflows.
  • Dynamische Workflows
    • 2) Document Process Workflow
      • Der Workflow bezieht sich auf ein bestimmtes Adempiere-Dokument (Tabelle). Jedem Dokument ist ein Prozess zugeordnet.
      • Der Workflow startet beim Betätigen des "Process"-Buttons.
      • Diese Workflows haben einen definierten Start-Context (Dokument) und einen Verantwortlichen. (Start (Draft) --> Prepare (In Progress) Complete (Completed))
      • Wird z.B. benutzt für Dokumenten-Freigaben (4-Augen-Prinzip).
    • 3) Document Value Workflow
      • Workflow startet automatisch wenn ein Adempiere-Datensatz beim Speichern eine bestimmte Bedingung erfüllt.
      • Feld "Document Value Logic":
        • Wenn Bedingung=true, dann startet Workflow
        • Erstellung eines neuen Datensatzes detektieren: "@Created@=@Updated@"
        • Komplexe Logik möglich durch Verwendung von SQL, indem Prefix "SQL=" vorangestellt wird.
        • Bsp.: Starte Auftragsverifikations-Workflow, wenn ein BusinessPartner etwas über seinem CreditLimit bestellt hat: "SQL=EXISTS (SELECT * FROM C_BPartner bp WHERE C_Order. C_BPartner_ID=bp. C_BPartner_ID AND SO_CreditUsed > SO_CreditLimit)".
        • Hinweis: Es wird immer nur maximal EIN Workflow pro Datensatz gestartet!
      • Bsp.: Bestimmung der Kreditwürdigkeit, immer wenn ein neuer BusinessPartner angelegt wird. (Detektion Neuanlegen eines Datensatzes: Bedingung="Created = Updated")

Begrifflichkeiten

Workflows werden durch folgenden Entitäten definiert:

  • Workflow: Definition eines Geschäftsprozesses in Form eines Ablaufdiagramms, welches Aufgaben (Tasks), Knoten (Nodes) und Transitionen (Transitions) enthält.
  • Knoten (Node): Eine Aufgabe (zur Laufzeit eines Prozesses ist ein Knoten eine Aktivität). Kann automatisch vom System oder manuell durch einen Benutzer ausgeführt werden.
  • Transition: Übergang zwischen Knoten, der optional Bedingungen enthalten kann. Bei Eintritt der Bedingung an einer Transition wird der Quell-Knoten inaktiv und der (oder die) Zielknoten aktiv. Ein Knoten kann mehrere ein- und ausgehenden Transitionen besitzen!

Workflows werden zur Ausführungszeit durch folgenden Entitäten beschrieben:

  • Prozess (Process): Eine aktive Instanz eines Workflows.
  • Aktivität (Activity): Ein aktiver Knoten (Node). In einem Prozess können mehrere Aktivitäten gleichzeitig aktiv sein bzw. ausgeführt werden!

Ein Prozess besitzt folgendes Zustandsdiagramm:

* Not Started
** Running
*** Completed
** Suspended
*** Aborted
*** Terminated

Verantwortlichkeiten (Responsibles)

Der verantwortliche Benutzer aller Knoten wird im Workflow festgelegt und kann in den einzelnen Knoten überschrieben werden.

Bei Prozessausführung erhält der für die Aktivität verantwortliche Benutzer ein sogenanntes "Workitem" (Arbeitsaufgabe) dafür, dass ihn daran erinnert, dass er diese Aktivität abzuarbeiten hat. Die Workitems eines Benutzers befinden sich im Window "Workflow Activities", das über den gleichnamigen Button auf dem Home-Screen von Adempiere zu erreichen ist. Sie kann als ToDo-Liste betrachtet werden. Dort können Workitems akzeptiert, freigegeben, abgelehnt, angeschaut weitergeleitet und bearbeitet (Sprung zum zugehörigen Datensatz) werden. Wenn das Workitem nach einer definierten Zeit nicht bearbeitet worden ist, erhält der verantwortliche Benutzer eine Erinnerungs-Email.

Folgende Verantwortlichkeiten gibt es:

  • Benutzer (User): Konkreter Benutzer/Mitarbeiter des Unternehmens. Wenn kein Benutzer im Prozess spezifiziert ist, wird der Benutzer zum Verantwortlichen gemacht, der den Prozess gestartet hat.
  • Organization: Der zuständige Leiter der Organisation.
  • Rolle (Role): Irgendein Benutzer, der diese Rolle inne hat.

Aktivitäten

Knoten/Aktivitäten führen bei Aktivierung eine Aktion aus. Je nach "Start Mode" wird die Ausführung der Aktivität entweder "automatisch" vom System angestoßen oder "manuell" explizit vom verantwortlichen Benutzer. Analog verhält es sich mit dem "Finish Mode" einer Aktivität. "Automatische" Aktivitäten werden abgeschlossen, sobald die aufgerufene Applikation/Aktion beendet ist. Aktivitäten mit "Manuellem" FinishMode müssen vom Benutzer explizit terminiert bzw. als Fertig markiert werden.

Aktionen (Actions) einer Aktivität bei Aktivierung

  • Apps Process – Startet einen definierten Prozess
  • Apps Report – Starten eines Reports, Notiz an Benutzer senden
  • Document Action – Ausführen einer Aktion auf einem Dokument (Processen, etc.)
  • Email – Senden einer Email zu einem definierten Empfänger
  • Set Variable – Setzen eines Wertes einer Spalte auf der Tabelle, die den Workflow ausgelöst hat
  • User Choice – Rückfrage beim benutzer und ggf. Setzen der IsApproved-Spalte eines Dokumentes
  • User Form* Aufrufen einer definierten Form
  • User Window* Aufrufen eines definierten Windows
  • Wait (Sleep) – Warte eine definierte Zeitdauer, bis die Aktivität als beendet gemeldet wird

Transitionen/Übergänge (Transitions)

  • leer = ohne Bedingung, Übergang zum folgenden Knoten findet sofort statt.
  • Approval (default)
  • Bedingung
    • AND/OR
    • @Variable@/Constant Operator @Variable@/Constant
  • Transitionen werden in der Reihenfolge ihrer Sequence abgearbeitet
  • Wenn es mehr als eine ausgehende Transition gibt:
    • XOR split = nur erste Transition verfolgen
    • AND split = alle Transition verfolgen
  • Wenn es mehr als eine eingehende Transition gibt:
    • XOR join = wenn erste Transition "ankommt", wird der Workflow fortgesetzt
    • AND join = erst wenn alle eingehenden Transitionen angekommen sind, wird der Workflow fortgesetzt

Priorität

Aktivitäten besitzen eine Priorität, wonach sie angeordnet und abgearbeitet werden. Es können Regeln definiert werden, um die Prioritäten auch zur Laufzeit zu ändern (z.B. jeden Tag wird die Priorität um 5 erhöht).

Adempiere-Funktionalität

Adempiere unterstützt Workflows durch:

  • Window "Workflow" zur Definition von Workflows.
  • Window "Workflow-Editor" zur einfachen grafischen Definition von Workflows.
    • Steht zur Zeit nur im Swing-Client zur Verfügung.
    • Ist funktional sehr rudimentär.
  • Ausführung der Workflows durch interne Workflow-Engine
  • Workflow-Monitor (Windows "Workflow Activities", "Workflow Activities (All)", "Workflow Process) zur Beobachtung und Auswertung von Prozessen und Aktivitäen. Hier können Aktivitäten auch gelöscht oder einem anderen Benutzer zugewiesen werden.
  • Darstellung der Aktivitäten (Workitems), die einem Benutzer zugeordnet sind (Button "Workflow Activities" on Home-Screen)

Schnittstellen zu XPDL / BPEL

Leider Fehlanzeige ;-)

Fazit

Endlich kann man mit Adempiere-Bordmitteln komplexe Geschäftsprozesse modellieren.

Leider ist sowohl die Erstellung der Prozesse als auch die Pflege sehr schwierig und unübersichtlich. Der Workflow-Editor ist da leider auch keine große Hilfe. Hier ist sicherlich noch Raum für Verbesserungen. Schade ist auch, dass es keine Schnittstellen zu den standardisierten Prozess-Beschreibungssprachen wie BPEL oder XPDL gibt.

Beispiele

Quellen

Dieser Artikel entstand aus einer Einarbeitung in die Adempiere-Workflows. Dabei wurden unterschiedliche Artikel gesichtet und hier zusammengefasst. Die meist englischen Artikel habe ich dabei ins Deutsche übersetzt.