# Entscheidungen & Genehmigungen

Fordere ein Urteil an — Genehmigen, Ablehnen oder Änderungen — und lass deinen Workflow darauf verzweigen, ohne Labels zu lesen.

## Entscheidungen & Genehmigungen

Viele Requests existieren, um genau eine Sache zu bekommen: ein Ja, ein Nein oder ein 'so nicht'. Die Entscheidungsfrage erfasst dieses Urteil in einer Form, auf die deine Automation direkt verzweigen kann, ohne raten zu müssen, welches Feld die Antwort trug.

<h2 id="why">Warum eine eigene Fragenart</h2>

<p>
  Jede Auswahl hat bereits einen <a href="/de/requests/field-keys#option-keys">Optionsschlüssel</a>, sodass ein Workflow auf jedes Radio
  verzweigen kann. Was ein Workflow nicht kann, ist über jedes Formular mit einer Genehmigung hinweg zu wissen, welcher Schlüssel „Ja"
  bedeutet: Das Radio der einen Person heißt <code>sign_off</code>, das der anderen <code>approved</code>.
</p>

<p>
  Die <strong>Entscheidungsfrage</strong> legt die Namen fest. Sie ist eine Einzelauswahl-Frage mit dem Feldschlüssel <code>decision</code>,
  deren drei Optionen die Optionsschlüssel <code>approve</code>, <code>decline</code> und <code>changes</code> tragen. Ihre Labels bleiben
  dir überlassen zum Umformulieren und Übersetzen; die Schlüssel darunter bewegen sich nie. Wählt die empfangende Person eine aus, endet der
  Request mit einem <strong>Ergebnis</strong>. Jedes Radio mit dem Schlüssel <code>decision</code>, dessen Optionen diese drei Schlüssel
  tragen, zählt — die Vorlage setzt sie nur für dich.
</p>

<h2 id="insert">Eine zu deinem Formular hinzufügen</h2>

/</strong> im Editor und wähle <strong>Entscheidung</strong> — „Genehmigen, ablehnen oder Änderungen anfordern".',
    },
    {
      title: 'Labels umformulieren',
      description:
        'Du bekommst eine Frage mit dem Titel „Genehmigen Sie das?" und den Auswahlmöglichkeiten Genehmigen, Ablehnen und Änderungen anfordern. Formuliere jede davon in deine eigenen Worte um — „Freigeben", „Zurückweisen", „Zur Überarbeitung zurückschicken". Übersetze sie wie jeden anderen Inhalt.',
    },
    {
      title: 'Nach dem Warum fragen, wenn nötig',
      description:
        'Ein Urteil allein erklärt sich selten von selbst. Füge danach eine Langtext-Frage hinzu und zeige sie nur bei Ablehnen und Änderungen mit <a href="/de/building-forms/conditional-logic">bedingter Logik</a>.',
    },
    {
      title: 'Veröffentlichen',
      description:
        'Requests, die aus dieser veröffentlichten Version erstellt werden, enden mit einem Ergebnis. Wie jeder Feldschlüssel existiert decision erst, sobald das Formular veröffentlicht ist.',
    },
  ]}
/>

> ⚠️ **Nur die Vorlage erzeugt ein Ergebnis**
> <p>
>     Das Ergebnis wird aus der Frage gelesen, deren Feldschlüssel <code>decision</code> ist, und nur, wenn der Schlüssel der gewählten Option
>     einer der drei ist. Ein von Hand gebautes Radio mit den Optionen Genehmigen, Ablehnen und Änderungen leitet genau diese Schlüssel ab,
>     funktioniert also ohne die Vorlage; ein Radio mit anderen Labels funktioniert, sobald du die drei Schlüssel in der{' '}
>     <a href="/de/requests/field-keys#option-keys">Schlüsseltabelle</a> einträgst.
>   </p>
>   <ul>
>     <li>
>       Löschst du eine der drei Optionen oder änderst ihren Schlüssel, warnt dich das Veröffentlichen: „Der Entscheidungsfrage fehlt eine
>       Option zum Genehmigen, Ablehnen oder Anfordern von Änderungen, daher können Anfragen ohne Ergebnis abgeschlossen werden." Alle drei
>       müssen vorhanden sein — eine Entscheidung, die nur genehmigen kann, kann nicht ablehnen.
>     </li>
>     <li>
>       Eine Entscheidungsfrage innerhalb einer <a href="/de/building-forms/repeating-groups">Wiederholungsgruppe</a> ist eine gewöhnliche
>       Frage und wird für das Ergebnis ignoriert.
>     </li>
>   </ul>

<h2 id="values">Die drei Werte</h2>

<p>
  Diese drei Werte sind ein öffentlicher Vertrag, wie ein Feldschlüssel: eine Automation, ein Agent und eine Tabellenkalkulationsformel
  lesen sie alle. <strong>Fügst du eine vierte Option hinzu, ist ihre Wahl eine gewöhnliche Antwort, kein Urteil</strong> — dieser Request
  wird ohne Ergebnis abgeschlossen, statt mit einem Wert, den dein Empfänger noch nie gehört hat.
</p>

<h2 id="where">Wo das Ergebnis erscheint</h2>

```
{
  "id": "evt_...",
  "type": "request.completed",
  "test": false,
  "data": {
    "request": {
      "id": "kd7...",
      "externalId": "run-42",
      "status": "completed",
      "outcome": "changes",
      "context": { "case_id": "CASE-9" }
    },
    "answers": {
      "decision": "changes",
      "reason": "Please split the line items per site."
    }
  }
}
```

<p>
  Verzweige auf <code>data.request.outcome</code>. <strong>status</strong> sagt, ob der Request abgeschlossen ist; <strong>outcome</strong>{' '}
  sagt, wie die empfangende Person entschieden hat. Ein abgelaufener oder stornierter Request hat einen Status und kein Ergebnis, ebenso ein
  abgeschlossener Request bei einem Formular ohne Entscheidungsfrage.
</p>

<h2 id="agents">Von einem Agenten aus</h2>

<p>
  Das MCP-Tool heißt <code>editor_insertDecisionQuestion</code> und nimmt einen Titel und die drei Labels in der Sprache des Formulars
  entgegen. Ein Agent, der keinen Callback-Endpunkt hosten kann, fragt stattdessen <code>request_get</code> ab und liest{' '}
  <code>outcome</code>, sobald der Status <code>pending</code> verlässt.{' '}
  <a href="/de/developers/mcp-server#requests">Requests auf dem MCP-Server →</a>
</p>

<div class="not-prose grid gap-3 sm:grid-cols-2">
  - [Callbacks & Signieren](/de/requests/callbacks) — Die vollständige Payload und wie du sie verifizierst.
  - [Die Requests-Seite](/de/requests/managing-requests) — Nach Ergebnis filtern und einem Request folgen.
  - [Bedingte Logik](/de/building-forms/conditional-logic) — Nur bei Bedarf nach einem Grund fragen.
  - [Fragetypen](/de/building-forms/field-types) — Jede andere Frage, die du stellen kannst.
</div>
