Standalone-Betrieb
Standalone ist der Zustand, den ein Dashlet annimmt, wenn es außerhalb jeder enaio-Umgebung läuft — ein einfacher Browser-Tab, ein Dev-Server oder jede Nicht-enaio-Einbettung: kein Bridge, keine Events. Es ist ein vollwertiger Zustand, kein Fehler.
1. Wie man in den Standalone-Zustand gelangt
Es gibt kein explizites Flag. Die Erkennungs-Zustandsmaschine
(siehe Umgebungen und Erkennung) läuft einfach
ab: wenn kein Rich-Client-Bridge und kein akzeptiertes Webclient-Event
innerhalb der Erkennungs-Obergrenze (detectionTimeoutMs, Standard
5000 ms) eintreffen, löst sich das Dashlet als Standalone auf. Es ist
niemals ein Hang — der Zustand wird in begrenzter Zeit erreicht und ist
über das normale init-Promise beobachtbar.
Zwei weitere Ecken erreichen denselben Zustand:
-
Top-Level-Fenster, kein konfigurierter Origin: Origin-Lernen funktioniert nur in einem iframe. Ein Top-Level-Fenster ohne konfigurierten Origin lernt nie und degradiert nach Ablauf der Erkennungs-Obergrenze in den Standalone-Zustand (siehe Origin-Konfiguration).
-
Foreign-origin-Host: Ein Webclient-artiges
onInit, das von einem Origin gepostet wird, die die Validierung scheitert, wird abgelehnt; nichts wird initialisiert, und das Dashlet degradiert innerhalb derselben begrenzten Obergrenze in den Standalone-Zustand.
2. Was ein Standalone-Dashlet tut
| Fläche | Verhalten |
|---|---|
|
Löst sich genau einmal auf und wird niemals abgelehnt, mit
|
|
Werden normal registriert; sie spielen das Standalone-Init nach und feuern nie Updates |
|
Wird mit dem begrenzten |
Alle sieben portablen Fassade-Methoden |
Wie |
Die Regel für Dashlet-Code: einen Fallback rendern, statt zu warten.
Das init-Promise ist der Ort für die Zweigung — wenn
ctx.environment === 'standalone' ist, zeigen Sie Ihre
Offline-/Degradierungs-UI und `await`en keinen Host-Aufruf.
3. Die Timeout-Mechanik
Jede Host-Interaktion, die auf eine Antwort wartet, ist begrenzt: das
Init-Warten durch die Erkennungs-Obergrenze (detectionTimeoutMs, Standard
5000 ms) plus einem 250-ms-Sicherheitsnetz, jeder Methodenaufruf durch den
Antwort-Timeout (timeoutMs, Standard 5000 ms). Ein Timeout wird mit dem
eigenständigen TimeoutError abgelehnt (Fehlername DashletTimeoutError,
trägt die Operation und die erzielte Timeout), so dass Dashlet-Code
„Host hat nie geantwortet" von jedem anderen Fehler unterscheiden kann:
import { TimeoutError } from 'ecmind-blue-dashlet';
await dashlet.openIndexData({ inNewTab: false, mode: 'view', objectId: '1024' })
.catch((e) => {
if (e instanceof TimeoutError) {
showFallback(); // Standalone oder toter Host — keine Retry-Schleife
}
throw e;
});
Der enaio-Vertrag definiert keine Antwortgarantie; die Grenze macht „keine Antwort" zu einem beobachtbaren Zustand.
4. Die Regler justieren
Aus DashletOptions:
| Option | Standard | Bedeutung im Standalone-Zusammenhang |
|---|---|---|
|
|
Erkennungs-Obergrenze: wie lange das Dashlet nach einer Bridge sucht /
auf ein |
|
|
Antwort-Timeout für jeden Methodenaufruf — im Standalone bestimmt er,
wie schnell jeder Fassade-Aufruf mit |
|
|
Rich-Client-Bridge-Poll-Intervall (kein Einfluss auf Standalone, aber Teil derselben Justierung: eine späte Bridge wird durch Polling innerhalb der Erkennungs-Obergrenze gefangen) |