Workflow¶
In GEVER haben viele Inhaltstypen einen assozierten Workflow (z.B. Ordnungspositionen, Dossiers, Aufgaben, ...).
Der aktuelle Workflow-State eines Objekts ist der Einfachheit halber als
review_state
direkt in der GET Repreäsentation
eines Objekts enthalten:
HTTP/1.1 200 OK
Content-Type: application/json
{
"@context": "http://www.w3.org/ns/hydra/context.jsonld",
"@id": "https://example.org/dossier-15",
"@type": "opengever.dossier.businesscasedossier",
"...": "...",
"review_state": "dossier-state-active"
}
Für die restlichen Aspekte des Workflows eines Objekts wird der @workflow
Endpoint verwendet:
-
GET
/
(path)/@workflow
¶ Liefert die Workflow-Informationen zu dem durch path addressierten Objekt zurück.
Die Workflow-Informationen enthalten die Workflow-History (und darin enthalten, der aktuelle Workflow-State) und die für dieses Objekt möglichen Workflow-Transitionen.
Beispiel-Request:
GET /dossier-15/@workflow HTTP/1.1 Accept: application/json
Beispiel-Response:
HTTP/1.1 200 OK Content-Type: application/json { "history": [ { "action": null, "actor": "john.doe", "comments": "", "review_state": "dossier-state-active", "time": "2016-08-02T17:08:50+00:00" }, { "action": "dossier-transition-resolve", "actor": "john.doe", "comments": "", "review_state": "dossier-state-resolved", "time": "2016-08-02T17:08:54+00:00" } ], "transitions": [ { "@id": "http://example.org/dossier-15/@workflow/dossier-transition-reactivate", "title": "dossier-transition-reactivate" } ] }
Dieses Dossier befindet sich zur Zeit im Status abgeschlossen (
dossier-state-resolved
, letzter Eintrag in der Workflow-History).In diesem Beispiel ist die einzig von diesem Workflow-State ausgehende Transition, das Dossier wiederzueröffnen (
dossier-transition-reactivate
). Diese Transition kann ausgeführt werden, indem einPOST
Request auf die entsprechende URL durchgeführt wird:
-
POST
/
(path)/@workflow/
(transition)¶ Führt für das durch path addressierte Objekt die Workflow-Transition transition durch.
Beispiel-Request:
POST /dossier-15/@workflow/dossier-transition-reactivate HTTP/1.1 Accept: application/json
Beispiel-Response:
HTTP/1.1 200 OK Content-Type: application/json { "action": "dossier-transition-reactivate", "actor": "john.doe", "comments": "", "review_state": "dossier-state-active", "time": "2016-08-02T15:20:21+00:00" }
Workflow-Schema¶
Gewisse Workflow Transitions, wie bspw. der Dossier-Abschluss, erwarten je nach Konfiguration weiter Angaben. Diese Schemas können mit einem Request auf den zusätzlichen API Endpoint @workflow-schema
abgefragt werden. Mit dem Rückgabewert kann ein entsprechendes Formular generiert werden.
Workflow-Informationen für Massen-Transitionen¶
Dieser Endpoint liefert Informationen über die Workflow-Transitionen, die einem bestimmten Objekt zugeordnet sind.
Diese Information ist notwendig, um Massen-Transitionen in einer Benutzeroberfläche zu ermöglichen. Das UI kann anhand eines bestimmten Referenztyps (z. B. des ersten Objekts einer Liste) eine einheitliche Liste von Transitionen für alle Objekte dieser Auflistung anzeigen.
Beispiel-Request:
GET .../dossier-1/@workflow-bulk-transition HTTP/1.1 Accept: application/jsonBeispiel-Antwort:
HTTP/1.1 200 OK Content-Type: application/json { "@id": ".../dossier-1/@workflow-bulk-transition", "transitions": [ { "source_state_id": "dossier-state-active", "target_state_id": "dossier-state-resolved", "transition_id": "dossier-transition-resolve", "workflow_id": "opengever_dossier_workflow" }, { "source_state_id": "dossier-state-resolved", "target_state_id": "dossier-state-active", "transition_id": "dossier-transition-reactivate", "workflow_id": "opengever_dossier_workflow" } ] }