defineApplication haben. Dieser deklariert:
- Identität — universeller Bezeichner, Anzeigename, Beschreibung.
- Berechtigungen — unter welcher Rolle ihre Logikfunktionen und Frontend-Komponenten ausgeführt werden.
- Variablen (optional) — Schlüssel–Wert-Paare, die Ihrem Code als Umgebungsvariablen zur Verfügung gestellt werden.
- Pre-install-/Post-install-/Uninstall-Hooks (optional) — siehe Logikfunktionen.
src/application-config.ts
universalIdentifier-Felder sind deterministische IDs, die Ihnen gehören. Erzeugen Sie sie einmal und halten Sie sie über Synchronisierungen hinweg stabil.applicationVariableswerden zu Umgebungsvariablen für Ihre Funktionen und Frontend-Komponenten. In Logikfunktionen (serverseitig) sind sie alsprocess.env.VARIABLE_NAMEverfügbar. In Frontend-Komponenten verwenden SiegetApplicationVariable('VARIABLE_NAME')austwenty-sdk/front-component. Variablen, die mitisSecret: truegekennzeichnet sind, werden nur in Logikfunktionen injiziert. Frontend-Komponenten erhalten nur nicht-geheime Variablen.- Die Standardrolle wird automatisch aus der Rollen-Datei erkannt, die mit
defineApplicationRole()markiert ist – Sie müssen sie nicht ausdefineApplication()referenzieren. - Pre-Installations-, Post-Installations- und Deinstallationsfunktionen werden während des Manifest-Builds automatisch erkannt — Sie müssen sie in
defineApplication()nicht referenzieren. - Die explizite Übergabe von
defaultRoleUniversalIdentifierwird für die Abwärtskompatibilität weiterhin unterstützt, ist jedoch zugunsten vondefineApplicationRole()veraltet. serverVariablessind instanzbezogene Konfigurationen und Geheimnisse (z. B. API-Schlüssel). Im Gegensatz zuapplicationVariableshaben sie im Manifest keinen Wert definiert – die Workspace-Operatorin bzw. der Workspace-Operator trägt sie in den App-Einstellungen ein, und sie werden erst dann in Logikfunktionen eingespeist, wenn sie gesetzt sind.- Beide Arten von Variablen akzeptieren
isDeprecated: true. Verwenden Sie dies, um eine Variable außer Betrieb zu nehmen, anstatt sie zu löschen: Wenn der Schlüssel deklariert bleibt, wird der gespeicherte Wert beibehalten (beim Löschen wird der vom Operator eingegebene Wert zerstört), und die Variable wird weiterhin injiziert, sodass Ihr Code darauf zurückfallen kann —process.env.NEW_API_KEY ?? process.env.API_KEY. Eine veraltete Variable verschwindet aus den App-Einstellungen, sobald sie keinen Wert mehr hat, und wird niemals bei der Konfigurationsprüfung der App berücksichtigt, sodassisDeprecatedgegenüberisRequiredVorrang hat. - Um eine benutzerdefinierte Konfigurationsoberfläche im Tab Settings der App anzuzeigen (anstelle des standardmäßigen Variablenkonfigurationsbereichs), deklarieren Sie eine Front-Komponente mit
defineSettingsFrontComponent()in einer eigenen Datei. Pro App ist nur eine zulässig. Systemverwaltete Bereiche (Auto-Upgrade, App-URL, Verbindungen) bleiben immer sichtbar.
Variablentypen
SowohlapplicationVariables als auch serverVariables akzeptieren einen optionalen type (und für SELECT / MULTI_SELECT eine options-Liste). Unterstützte Typen: TEXT (Standard), BOOLEAN, NUMBER, NUMERIC, DATE, DATE_TIME, SELECT, MULTI_SELECT, ARRAY, RAW_JSON, RICH_TEXT.
src/application-config.ts
type beeinflusst nur die Darstellung und Validierung – er wählt das passende Eingabefeld in der UI der Arbeitsbereichseinstellungen aus (Schalter, Zahlenfeld, Dropdown, Datumsauswahl, JSON-Editor, …) und ermöglicht es dem Build, deine Konfiguration zu validieren (zum Beispiel müssen SELECT / MULTI_SELECT nicht-leere options deklarieren). Er ändert nicht, wie der Wert deinen Code erreicht.
Werte werden immer als Strings bereitgestellt – das ist inhärent bei Umgebungsvariablen (process.env.* enthält ausschließlich Strings). Wenn deine Logikfunktion ausgeführt wird, serialisiert der Executor jeden Wert anhand seines deklarierten type beim Aufbau von process.env, sodass das Stringformat konsistent ist, unabhängig davon, wie der Wert gesetzt wurde (Manifest-Standardwert, Einstellungs-UI oder eine vorherige Version):
Wandle den String zurück in den erwarteten Typ um:
getApplicationVariable('VARIABLE_NAME') lesen – der zurückgegebene Wert ist ein String; wandle ihn bei Bedarf um.
Standard-Funktionsrolle
Die mitdefineApplicationRole() deklarierte Rolle steuert, worauf die Logikfunktionen und Frontend-Komponenten der App zugreifen können:
- Die zur Laufzeit in Ihre Logikfunktionen injizierten Token werden aus dieser Rolle abgeleitet. Ein Aufruf, der als Person agiert, wird zusätzlich durch die Möglichkeiten dieser Person eingeschränkt und kann daher niemals eine der beiden Berechtigungen überschreiten. Siehe Wessen Zugriff ein Aufruf verwendet.
- Der typisierte API-Client ist auf die dieser Rolle gewährten Berechtigungen beschränkt.
- Befolgen Sie das Least-Privilege-Prinzip: Deklarieren Sie nur die Berechtigungen, die Ihre Funktionen benötigen.
src/roles/default-role.ts. Die vollständige Referenz finden Sie unter Rollen & Berechtigungen.
Marktplatz-Metadaten
Wenn Sie planen, Ihre App zu veröffentlichen, steuern diese optionalen Felder, wie Ihre App im Marktplatz erscheint:logoUrl und screenshots sind veraltete Aliase von logo und galleryImages. Externe absolute URLs (http:// oder https://) werden für diese Felder nicht unterstützt: Sie werden beim Build mit einer Warnung gelöscht. Bundle stattdessen die Bilder im public/ Ordner deiner App.