# Self-Service-Formulare

## Übersicht

Sie können Self Service Forms verwenden, um strukturierte Daten von Benutzern zu erfassen. Dies kann genutzt werden, damit Benutzer Vorfälle melden oder Änderungen angeben, z. B. den Bedarf an einer neuen Arbeitsplatzkonfiguration in einem Büro.

„Self Service Forms“ ist eine optionale Funktion, die von RealmJoin Support für Ihren Tenant aktiviert werden kann. Wenn sie nicht aktiviert ist, können Sie Formulare dennoch auf der Einstellungsseite eingeben/vorbereiten, aber Benutzer können die Self Service Forms dann nicht sehen oder verwenden.

Wir werden einen Workflow verwenden, um „ein neues Haustier anzugeben“ als Beispiel zu zeigen.

<figure><img src="https://2298793958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FsHMLCDOPE9VpfxI0H3Uh%2Fimage.png?alt=media&#x26;token=ea570eab-d14a-450c-8959-dd18b3a2d50e" alt=""><figcaption><p>Formularbeispiel</p></figcaption></figure>

## Formulare verwenden

Mit dem ![](https://2298793958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FEoSZwvVn9NMFPA1LgGVn%2Fimage.png?alt=media\&token=0ef42605-f332-45bc-8a1d-503b842f8c12) Navigationspunkt können Benutzer ein Formular auswählen, ausfüllen und absenden.

<figure><img src="https://2298793958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FPUnJnLhYCdcgI9aTfJew%2Fimage.png?alt=media&#x26;token=6455eb83-923f-4a39-b871-43d73f2d43c5" alt=""><figcaption><p>Formularauswahl</p></figcaption></figure>

Wenn ein Benutzer ein Formular ausfüllt und absendet, werden dessen Inhalte per E-Mail an den in der Definition des Formulars angegebenen Empfänger gesendet. Die E-Mail wird über die Infrastruktur von RealmJoin versendet und stammt nicht von den E-Mail-Adressen Ihres Unternehmens.

<figure><img src="https://2298793958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FOk30wlZKDMEe3MWvzxS1%2Fimage.png?alt=media&#x26;token=c40cb2ea-113c-4b4f-9da0-ff085a808b65" alt=""><figcaption><p>Beispiel-E-Mail aus einem Formular</p></figcaption></figure>

{% hint style="info" %}
Wenn Self Service Forms für Ihren Tenant aktiviert sind, können alle Benutzer Formulare verwenden/einsenden.
{% endhint %}

## Einreichungen prüfen

Mit dem ![](https://2298793958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FzLUitkjFFMieHZaQppjS%2Fimage.png?alt=media\&token=bb07172e-904c-459d-a9a8-e73c48f18ae6) Navigationssymbol können Sie frühere Formularübermittlungen Ihrer Benutzer überprüfen.

<figure><img src="https://2298793958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FhW7xAk19PilNZOMOGodf%2Fimage.png?alt=media&#x26;token=adc9d2ba-359a-4fa1-b272-996d354c6b4f" alt=""><figcaption><p>Liste der Einreichungen</p></figcaption></figure>

Sie können nach Einreichungen suchen, indem Sie den Benutzernamen und den Formularnamen angeben, aber nicht nach Feldern in der Formularübermittlung.

Klicken Sie auf „Anzeigen“, um die ausgefüllten Formulardaten zu sehen. Die Ansicht ist schreibgeschützt.

## Einstellungsseite

Auf der Einstellungsseite von Self Service Forms können vorhandene Formulare verwaltet sowie Formulare hinzugefügt, bearbeitet und gelöscht werden.

### Formularliste auf der Einstellungsseite

<figure><img src="https://2298793958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FYfij5VCCe1WNBYeIe1Jl%2Fimage.png?alt=media&#x26;token=e6f11b7c-8a3e-42ba-aeaf-57f6b5fa8b08" alt=""><figcaption><p>Formularliste</p></figcaption></figure>

Verwenden Sie „Neues Formular“ oder „Bearbeiten“, um das Formular mithilfe von [JSON Schema](https://json-schema.org/)zu beschreiben. Damit wird festgelegt, welche Felder eingegeben werden müssen und welche Werte gültig sind. Die UI bietet einen Editor mit Syntaxprüfung und eine Vorschau des resultierenden Formulars.

Das Schema wird verwendet, um dynamisch ein Formular für den Benutzer zu erstellen. Verwenden Sie das Schema also im Grunde nicht nur, um die gewünschten Daten zu beschreiben, sondern auch, um implizit die UI des Formulars zu erstellen.

### Schema-Editor

Oberhalb des Editors gibt es zwei Felder. Verwenden Sie das linke Feld, um Ihrem Formular einen beschreibenden Namen zu geben. Verwenden Sie das rechte Feld, um die E-Mail-Adresse des Empfängers der vom Benutzer übermittelten Daten anzugeben.

<figure><img src="https://2298793958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FlDKKa8gI37FWDapkH2xh%2Fimage.png?alt=media&#x26;token=d13dbe12-150a-4503-ba1c-50d637962498" alt=""><figcaption><p>Beispiel für den Schema-Editor</p></figcaption></figure>

Sie können „Update JSON Form Preview“ verwenden, um unterhalb des Editors eine Vorschau des resultierenden Formulars zu erstellen.

<figure><img src="https://2298793958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FPqMhyTDusXhcaIcafvFu%2Fimage.png?alt=media&#x26;token=f04e8882-1d3c-4bd4-a032-2af26f763e59" alt=""><figcaption><p>Editor-Vorschau</p></figcaption></figure>

Nachdem Sie das Schema geändert haben, drücken Sie „Submit“, um Ihre Änderungen zu speichern. Es wird ein Fehler angezeigt, wenn die Syntaxprüfung fehlschlägt.

## JSON Schema

Die Verwendung von JSON Schema liegt außerhalb des Umfangs dieses Dokuments. Sie können Online-Schemageneratoren verwenden (wie [diesen hier](https://www.jsonschema.net/app)), um den Prozess zu vereinfachen.

Um zumindest einen Ausgangspunkt zu geben, betrachten wir das Schema aus unserem Beispiel

```json
{
  "title": "Person",
  "type": "object",
  "required": [
    "name",
    "date",
    "location",
    "pets"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Vor- und Nachname",
      "minLength": 4,
      "default": "- Ihr Name hier -"
    },
    "date": {
      "type": "string",
      "format": "date",
      "options": {
        "flatpickr": {}
      }
    },
    "location": {
      "type": "object",
      "title": "Ort",
      "properties": {
        "city": {
          "type": "string",
          "default": "San Francisco"
        },
        "state": {
          "type": "string",
          "default": "CA"
        },
        "citystate": {
          "type": "string",
          "description": "Dies wird automatisch aus den beiden vorherigen Feldern generiert",
          "template": "{{city}}, {{state}}",
          "watch": {
            "city": "location.city",
            "state": "location.state"
          }
        }
      }
    },
    "pets": {
      "type": "array",
      "format": "table",
      "title": "Haustiere",
      "uniqueItems": true,
      "items": {
        "type": "object",
        "title": "Haustier",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "cat",
              "dog",
              "bird",
              "reptile",
              "other"
            ],
            "default": "dog"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "default": [
        {
          "type": "dog",
          "name": "Walter"
        }
      ]
    }
  }
}
```

Jedes JSON Schema besteht aus Objekten. Jedes Objekt muss mindestens einen Typ und einen Namen haben.

### Typen

#### Objekt

„Komplexe“ Objekte, die andere untergeordnete Objekte enthalten, sollten den **object** Typ verwenden. In unserem Beispiel ist der Wurzelknoten „Person“ des Schemas von diesem Typ.

Sie können verpflichtende Felder mit dem Schlüsselwort **required** definieren. Diese Felder müssen ebenfalls im Schema definiert werden.

Verwenden Sie **properties** um die Eigenschaften jedes benötigten Feldes zu beschreiben; dazu gehört die Angabe eines Typs und eines Namens.

#### Array

Arrays ermöglichen es Ihnen, mehrere ähnliche **items** zu einer Liste hinzuzufügen. Verwenden Sie das **items** Schlüsselwort, um den Typ der Elemente usw. zu beschreiben.

#### Zeichenfolge

Einfach nur Text. Sie können diesen mit dem **Standard** Schlüsselwort vorab ausfüllen.

Um nur bestimmte Werte zuzulassen, können Sie das **enum** Schlüsselwort vorab ausfüllen.
