DOCUframe, Geschäftsprozesse und Workflows
Ein Workflow wird in der Regel eingesetzt, um einen arbeitsteiligen, wiederkehrenden Geschäftsprozeß geregelt ablaufen zu lassen. Dies kann manuell geschehen oder aber eleganter und weniger fehleranfällig durch die IT-technische Unterstützung in Form eines Workflowsystems.
Die Grundidee von DOCUframe ist die umfassende Unterstützung von Geschäftsprozessen. DOCUframe der Firma GSD enthält daher ein sehr flexibles Workflowsystem. Die Flexibiltät wird vorallem dadurch erreicht, dass jedes Objekt in DOCUframe Bestandteil eines Workflows sein kann und die genaue Ausgestaltung der einzelnen Workflowschritte detailliert über die in DOCUframe integrierte Programmiersprache DOCUcontrol erfolgen kann.
Die Definition des Workflows kann in einem grafischen Editor oder auch in Form einer Listendarstellung erfolgen. Dies ist lizenzabhängig:
Beispielworkflow im grafischen Workflow-Editor
Neben sequentiellen Abfolgen von Workflowschritten sind natürlich wie in der obigen Abbildung zu sehen auch Verzweigungen möglich.
Darstellung des Workflows in Listenform
Wie erwähnt kann jedes Objekt in DOCUframe, also z.B. ein Dokument oder ein Vorgang an den gewünschten Workflow gekoppelt werden. Mit dieser Verbindung zwischen Objekt und Workflow wird dieser auch gestartet
Starten eines Workflows
Dazu wird zunächst das gewünschte Objekt selektiert (hier ein PDF-Dokument) und im Menü „Dokument“ der Menüpunkt „Workflow starten…“ aufgerufen.
Ein Workflow kann auch mit der DOCUcontrol-Funktion „DBBeginWorkflow“ zu einem definierbaren Zeitpunkt initiiert werden.
Die einzelnen Workflow-Aktionen werden im Minutentakt abgearbeitet. Dieses Default-Intervall kann aber auch angepasst werden.
Der Workflow-Prozess
Zu jedem gestarteten Workflow gehört ein Workflowprozess. Die interne Abarbeitung der Workflowprozesse übernimmt der Verarbeitungsserver, der z.B. auch für die Ausführung der Datenaustauschmakros und vieler anderer Aufgaben, die bei DOCUframe im Hintergrund abgearbeitet werden, zuständig ist.
Wer SAP-Systeme kennt kann die Threads des DOCUframe Verarbeitungsserver mit den SAP Hintergrund- oder Batchprozessen vergleichen.
Die Abarbeitung der Schritte der gestarteten Workflows lässt sich in DOCUframe verfolgen (Menü „Einstellungen“ –> Workflow –> Prozesse):
Workflow-Aktionen und Workflow-Makros
Jedem Workflow-Schritt und jeder Workflow-Verzweigung kann man nun eine Workflow-Aktion und ein Workflow-Makro zuordnen. In der Workflow-Aktion kann z.B. auch die Startzeit für den nächsten Workflow-Schritt geändert werden (Default: 1 Minute) oder aber der Workflow-Schritt beim Vorliegen bestimmter Bedingungen auch abgebrochen oder wiederholt werden.
Im Gegensatz zu der Workflow-Aktion kann man das einem Workflow-Schritt zuordenbare Workflow-Makro auch mit Parametern versorgt werden, die im Parametereingabefeld definiert werden können.
Das Workflow-Makro für den Schritt 1 in dem Beispielworkflow sieht folgendermaßen aus, wobei hier die Möglichkeit einer Parametrisierung des Workflow-Makros nicht genutzt wird:
INT Workflow( WfStatus WfStatus, DBSTRINGSET &Params ) PDF Dok; Trace("Workflowschritt 1"); Dok = WfStatus.Objekt; IF( DBOLock( Dok, WRITE_NOWRITE, FLAT ) ) IF( DBORefresh( Dok, FLAT ) ) Dok.Beschreibung = "Erzeugt durch WF-Schritt 1"; DBOStore( Dok, FLAT ); ENDIF DBOUnlock( Dok, WRITE_NOWRITE, FLAT ); ELSE Trace( " <- Fehler beim Sperren" ); ENDIF RETURN( WFR_OPERATION1 );
Mit einem Parameter für die den Beschreibungstext des Dokuments sieht das Makro wie folgt aus:
INT Workflow( WfStatus WfStatus, DBSTRINGSET &Params ) PDF Dok; Trace("Workflowschritt 1"); Dok = WfStatus.Objekt; IF( DBOLock( Dok, WRITE_NOWRITE, FLAT ) ) IF( DBORefresh( Dok, FLAT ) ) Dok.Beschreibung = DBStrGetField( Params, "Beschreibung" );; DBOStore( Dok, FLAT ); ENDIF DBOUnlock( Dok, WRITE_NOWRITE, FLAT ); ELSE Trace( " <- Fehler beim Sperren" ); ENDIF RETURN( WFR_OPERATION1 );
Im Workflowschritt wird der Wert des Parameters festgelegt:
Bei beiden Alternativen wird neben einer Kontrollausgabe mittels Trace-Funktion in das DOCUframe-Monitor-Programm in dem Workflow-Step lediglich die Beschreibung des Dokuments geändert, das mit dem Workflow verbunden wurde.
Analog sind die Workflow-Makros für die Schritte 2 bis 4 aufgebaut.
Das Workflow-Makro für die Verzweigung ist folgendermaßen aufgebaut:
INT Workflow( WfStatus WfStatus, DBSTRINGSET &Params ) PDF Dok; INT RC; Trace("Verzweigung"); Dok = WfStatus.Objekt; IF ( Dok.Name == "Antrag.pdf" ) RC = WFR_OPERATION1; ELSE RC = WFR_OPERATION2; ENDIF RETURN( RC );
Ist der Name des Dokuments „Antrag.pdf“ dann wird der 1. Workflow-Folgeschritt ausgeführt. Dazu ist die Workflow-Konstante WFR_OPERATION1 zurückzugeben. Dieser Folgeschritt entspricht dem Schritt 3 im Gesamtworkflow. Im Alternativfall kommt der Folgeoperation 2 durch Rückgabe der Workflow-Konstante WFR_OPERATION2 zum Zuge. Dieser entspricht dem Schritt 4 im Workflow:
Neben den Workflow-Makros gibt es wie bereits erwähnt die Workflow-Aktionen. Auch in Code einer Workflow-Aktion könnten wir die gewünschte Änderung der Beschreibung unseres Dokuments unterbringen. Schritt 1 würde dann so aussehen:
INT WfOperation( WfStatus WfStatus ) PDF Dok; Trace("Workflowschritt 1"); Dok = WfStatus.Objekt; IF( DBOLock( Dok, WRITE_NOWRITE, FLAT ) ) IF( DBORefresh( Dok, FLAT ) ) Dok.Beschreibung = "Erzeugt durch WF-Schritt 1"; DBOStore( Dok, FLAT ); ENDIF DBOUnlock( Dok, WRITE_NOWRITE, FLAT ); ELSE Trace( " <- Fehler beim Sperren" ); ENDIF RETURN( WFR_OPERATION1 );
Zum Abschluss dieser kurzen Einführung in das Workflowsystem von DOCUframe starten wir den Workflow mit folgendem PDF-Dokument.
Starten eines Workflows in DOCUframe
Das Feld Beschreibung des Dokuments ist zunächst leer. Jetzt starten wir den Workflow „Antragsbearbeitung“:
Im Workflow-Prozessmonitor können wir den Fortschritt beobachten.
Schritt 1 ist ausgeführt, Schritt 2 steht zur Ausführung an:
Zu diesem Zeitpunkt hat das Beschreibungsfeld des Dokuments den Inhalt „Erzeugt durch WF-Schritt 1“:
Da der Name des Dokuments ungleich „Antrag.pdf“ ist, erwarten wir, dass nach dem Durchlaufen der Verzweigung Schritt 4 ausgeführt wird.
IF( Dok.Name == "Antrag.pdf" ) RC = WFR_OPERATION1; // --> Schritt 3 ELSE RC = WFR_OPERATION2; // --> Schritt 4 ENDIF
Im Monitor können wir die Abfolge der Workflowschritte sehen:
Wie erwartet wird nach den Schritten 1 und 2 der Schritt 4 ausgeführt.
Und im Beschreibungsfeld des Dokuments steht ebenfalls das erwartete Ergebnis „Erzeugt durch WF-Schritt 4“:
Das Workflowsystem von DOCUframe ist durch DOCUcontrol äußerst flexibel, dessen Möglichkeiten das obige kleine Beispiel nur erahnen lässt.
[of_autor]