Workflows einrichten

Workflow für Ressourcen

Ab Version 3.3.0 wurde die bestehnde Workflowlösung für Ressourcen gegen eine wesentlich flexiblere Variante ausgetauscht. Die erlaubt nicht nur die Kontrolle von Ressourcen, sondern soll auch sukzessive auf Projekte ausgeweitet werden.

Grundsätzlich besteht dabie jeder Workflow aud drei Hauptkomponenten:

Workflow (gris_workflow):

ein Workflow, der einer Objektart (Ressource, Projekt) zugeordnet ist. Für Ressourcen kann darüber hinaus noch ein individueller Workflow pro Ressourcentyp festgelegt werden. Damit lassen sich beispielsweise Publikationen durch eine andere Vorgehensweise überprüfen, als Veranstaltungen.

Workflow Schritte (gris_workflow_step):

Jeder einzelne Workflow besteht aus individuellen Schritten. Die Anzahl dieser Schritte ist variabel, es muss jedoch mindestens ein Schritt (der sogenannte Show-Step) vorhanden sein, damit der Workflow abgeschlossen werden kann.

Workflow-Checks (gris_workflow_step_check):

Jeder Schritt kann mehrere Checks beinhalten, die geprüft werden müssen. Dafür wird jedem Check eine Gruppe zugeordnet, wleche die Berechtigung steuert. Administratoren können alle Check bearbeiten.

Weitere Definitionen

Show-Step:

Der Show-Step zeigt an, dass der Workflow vollständig durchlaufen und erfolgreich abgeschölossen wurde. In der Tabelle gris_workflow_step wird er in der Spalte gris_workflow_step_show durch eine 1 (sonst NULL) markiert.

Workflow-Gruppen:

Zu den Workflow-Gruppen zählen alle Gruppen, die in einem Workflow Änderungsrechte besitzen. Adminsitratoren besitzen diese Rechte ebenfalls.

Settings für den Workflow

reset_after_save:

Der Workflow wird nach jeder Änderung zurückgesetzt und das Objekt muss neu überprüft werden. Wird diese Einstellung nicht gesetzt, bleiben alle bisherigen Schritte und Checks auch nach dem Speichern bestehen. Änderungen an der Sichtbarkeit (show, Augensymbol) haben keinen Einfluss auf den Workflow.

Die Workflow-Gruppen sind vom Reset ausgenommen und setzen durch Änderungen den Workflow nicht zurück.

Optionen: 1 - Workflow zurücksetzen, 0 - Workflow nicht zurücksetzen

lock_after_check:

Der Workflow wird gesperrt, nachdem der erste Check druchgeführt wurde. Durch diese Einstellung wird reset_after_save außer Kraft gesetzt, denn das Editierformular wird dann nur noch für die Workflow-Gruppen angeboten.

Optionen: 1 - Workflow sperren, 0 - Workflow nicht sperren

lock_at_show:

Sobald der finale Schritt (Show-Step) erreicht wird, sperrt diese Einstellung das Objekt. Änderungen können dann nur nach von den Workflow-Gruppen vorgenommen werden. Auf Wunsch können diese das Obljekt über die Wartungsliste erneut für Änderungen freischalten. Allerdings wird dadurch der Workflow zurückgesetzt.

Optionen: 1 - Workflow sperren, 0 - Workflow nicht sperren

api_show_filter:

Den Show-Step bei der REST-API-Ausgabe filtern. Bei (1) werden nur geprüfte Einträge im Show-Step angezeigt, bei (0) alle Einträge unabhängig vom Workflow-Step.

In Verbindung mit show_entries_without_workflow kann die Anzeige der Einträge auf geprüfte und Objekte ganz ohne Workflow erweitert werden.

Optionen: 1 - nur geprüfte anzeigen, 0 - alle anzeigen

max_hits:

Die maximale Anzahl von Treffern in den Wartungslisten der Workflows.

Optionen: alle Werte von 1-n (natürliche Zahlen ohne Vorzeichen)

show_entries_without_workflow:

Objekten ohne Workflow werden in der API ausgegeben (1) oder komplett gefiltert (0).

Optionen: 1 - Objekte ohne Workflow anzeigen, 0 - Objekte nicht anzeigen

Durch die ersten drei Einstellungen erergeben sich folgende mögliche Abläufe:

Workflows und Settings in GRIS

Workflow-Varianten

Für die Workflows sind drei Grundvarianten denkbar:

„Liberale Variante“:

Alle drüfen die Einträge jederzeit ändern, ohne dass der Workflow zurückgesetzt wird. Die Workflow-Kontrolle läuft davon unabhängig ab und sperrt den Eintrag nicht.

(Settings: reset_after_save = 0, lock_after_check = 0, lock_at_show = 0)

„Reset & Lock-Variante“:

Alle drüfen die Einträge jederzeit ändern. Dadurch wird der Workflow allerdings zurückgesetzt. Nach Erreichen des Show-Steps wird der Eintrag gesprerrt.

(Settings: reset_after_save = 1, lock_after_check = 0, lock_at_show = 1)

“ Restriktive Variante“:

Nach dem ersten Check wird der Eintrag gesperrt und bleibt auch nach Erreichen des Show-Steps nicht editierbar. Die Workflow-Gruppen können den Eintrag zwar freigeben, setzen damit aber den Workflow zurück.

(Settings: reset_after_save = 1, lock_after_check = 1, lock_at_show = 1)

Selbstvertsändlich sind auch andere Kombinationen möglich. Diese sollten allerdings vorher individuell geprüft werden, damit die Workflows terminieren.

Beispiele

Drei Workflows

INSERT INTO `gris_workflow` (`gris_workflow_name`, `gris_workflow_description`, `gris_workflow_object_table`) VALUES
('Ressourcen', 'Workflow zur Qualitätskontrolle von Ressourcen', 'gris_resource'),
('Projekte', 'Workflow zur Qualitätskontrolle von Projekten', 'gris_project'),
('Events', 'Workflow zur Qualitätskontrolle von Events', 'gris_resource');

Zweistufiger Workflow mit je zwei Checks

INSERT INTO `gris_workflow_step` (`gris_workflow_id`, `gris_workflow_step_name`, `gris_workflow_step_color`, `gris_workflow_step_next`, `gris_workflow_step_show`, `gris_workflow_step_order`, `gris_workflow_step_check_order`, `gris_workflow_step_checkname`, `gris_workflow_step_check_group`) VALUES
(1, 'Erstkontrolle', '660000', 2, NULL, 1, 1, 'Qualitätsmanagement', 2),
(1, 'Erstkontrolle', '660000', 2, NULL, 1, 2, 'Bibliothek', 1),
(1, 'Endkontrolle', '006666', 3, NULL, 2, 1, 'Qualitätsmanagement', 2),
(1, 'Endkontrolle', '660066', 3, NULL, 2, 2, 'Bibliothek', 1),
(1, 'Überprüft', '006600', 0, 1, 3, 0, NULL, 3);

Einstufiger Workflow mit drei Checks

INSERT INTO `gris_workflow_step` (`gris_workflow_id`, `gris_workflow_step_name`, `gris_workflow_step_color`, `gris_workflow_step_next`, `gris_workflow_step_show`, `gris_workflow_step_order`, `gris_workflow_step_check_order`, `gris_workflow_step_checkname`, `gris_workflow_step_check_group`) VALUES
(2, 'Kontrolle', '660000', 2, NULL, 1, 1, 'Drittmittel', 2),
(2, 'Kontrolle', '660000', 2, NULL, 1, 2, 'Verwaltung', 1),
(2, 'Kontrolle', '660000', 2, NULL, 1, 3, 'Statistik', 4),
(2, 'Überprüft', '006600', 0, 1, 2, 0, NULL, 3);

Einstufiger Workflow mit einem Check

INSERT INTO `gris_workflow_step` (`gris_workflow_id`, `gris_workflow_step_name`, `gris_workflow_step_color`, `gris_workflow_step_next`, `gris_workflow_step_show`, `gris_workflow_step_order`, `gris_workflow_step_check_order`, `gris_workflow_step_checkname`, `gris_workflow_step_check_group`) VALUES
(3, 'Kontrolle', '660000', 2, NULL, 1, 1, 'Verwaltung', 1),
(3, 'Überprüft', '006600', 0, 1, 2, 0, NULL, 3);

Fehlerbehebung

Entfernen ungültiger Workflow-Einträge bei Ressourcen

In älteren GRIS-Versionen konnte der Wechsel des Ressourcentyps bei bestehenden Ressourcen dazu führen, dass alte Workflow-Einträge nicht gelöscht wurden. Das führt später zur fälschlichen Ansicht in mehreren Listen.

SELECT gris_resource_id, gris_resourcetype.gris_resourcetype_name, gris_workflow_relations.gris_workflow_id as "IST", gris_resourcetype.gris_workflow_id as "SOLL"
FROM gris_workflow_relations, gris_resource, gris_resourcetype
WHERE gris_workflow_relations_object_id = gris_resource_id
AND gris_resource.gris_resourcetype_id = gris_resourcetype.gris_resourcetype_id
AND gris_workflow_relations.gris_workflow_id != gris_resourcetype.gris_workflow_id;