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 ein POST 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.