@esfaenza/flow-builder 20.3.20 → 20.3.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -14
- package/fesm2022/esfaenza-flow-builder.mjs +1143 -369
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +492 -82
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -1269,6 +1269,69 @@ interface FlowStartInterviewRequest {
|
|
|
1269
1269
|
inputs?: Record<string, unknown>;
|
|
1270
1270
|
debug?: boolean;
|
|
1271
1271
|
}
|
|
1272
|
+
/**
|
|
1273
|
+
* I comandi «Esegui» e «Debug» della barra dell'editor.
|
|
1274
|
+
*
|
|
1275
|
+
* Non e' una primitiva della §6.5: l'editor **non** esegue niente per conto suo. Raccoglie i
|
|
1276
|
+
* valori di ingresso in una finestra e li consegna all'applicazione ospite, che sa dove gira il
|
|
1277
|
+
* motore e con quale interfaccia lo si guarda — un runner suo, una scheda separata, un
|
|
1278
|
+
* debugger. Senza implementazione il comando fallisce con `MissingService`, che e' la risposta
|
|
1279
|
+
* onesta: un editor che finge di avviare un'esecuzione e' peggio di uno che dice di non poterlo
|
|
1280
|
+
* fare.
|
|
1281
|
+
*
|
|
1282
|
+
* Il flow si identifica per **nome e versione**, non per documento: si esegue cio' che e'
|
|
1283
|
+
* salvato, ed e' per questo che i due comandi sono spenti su un flow mai scritto e avvertono
|
|
1284
|
+
* quando ci sono modifiche non salvate.
|
|
1285
|
+
*/
|
|
1286
|
+
interface FlowRunRequest {
|
|
1287
|
+
flowName: string;
|
|
1288
|
+
/** Assente → l'ospite decide (di norma l'attiva, altrimenti l'ultima), come in §6.1. */
|
|
1289
|
+
version?: number;
|
|
1290
|
+
/**
|
|
1291
|
+
* I valori delle variabili `isInput`, per nome. Sono già convertiti al tipo dichiarato: un
|
|
1292
|
+
* `Number` e' un numero, non la stringa digitata. Un'istanza di classe segue la forma della
|
|
1293
|
+
* §4.7 (`{type, instance:{className, members}}`), la stessa in lettura e in scrittura.
|
|
1294
|
+
*/
|
|
1295
|
+
inputs?: Record<string, unknown>;
|
|
1296
|
+
/**
|
|
1297
|
+
* `true` sul comando «Debug». L'ospite ne fa cio' che vuole — traccia, breakpoint, passo
|
|
1298
|
+
* passo — ma il contratto ricorda che una traccia riporta i valori di **tutte** le risorse,
|
|
1299
|
+
* dati personali compresi (§6.5).
|
|
1300
|
+
*/
|
|
1301
|
+
debug: boolean;
|
|
1302
|
+
}
|
|
1303
|
+
/**
|
|
1304
|
+
* Cio' che l'ospite puo' **restituire** da `runFlow`/`debugFlow`, e che l'editor mostra nel
|
|
1305
|
+
* pannello «Debug».
|
|
1306
|
+
*
|
|
1307
|
+
* Esiste per un caso preciso: un flow che non ha schermate — un `AutoLaunched`, o
|
|
1308
|
+
* un'orchestrazione che gira tutta in background — non ha nessuna interfaccia in cui guardare
|
|
1309
|
+
* cosa e' successo. Non c'e' un form da compilare, non c'e' una finestra del runtime: c'e' solo
|
|
1310
|
+
* la traccia, e il posto in cui la si vuole e' l'editor, accanto al grafo su cui si sta
|
|
1311
|
+
* lavorando. Ogni voce della traccia porta un `elementName`, e il pannello lo usa per portare
|
|
1312
|
+
* l'utente sull'elemento.
|
|
1313
|
+
*
|
|
1314
|
+
* Restituire qualcosa e' **facoltativo**: un ospite che apre un suo runner e ci mostra tutto lì
|
|
1315
|
+
* risolve con `void`, e l'editor si limita a dire che l'esecuzione e' partita. Un ospite che
|
|
1316
|
+
* parla già la §6.5 puo' restituire il suo `FlowInterviewResult` così com'e': i campi
|
|
1317
|
+
* interattivi (token, `pendingScreen`) l'editor non li guarda, perche' non e' lui a condurre
|
|
1318
|
+
* l'esecuzione.
|
|
1319
|
+
*
|
|
1320
|
+
* `trace` e `resources` arrivano solo con `debug: true` e riportano i valori di **tutte** le
|
|
1321
|
+
* risorse, dati personali compresi (§6.5): il pannello lo dice in chiaro.
|
|
1322
|
+
*/
|
|
1323
|
+
interface FlowRunOutcome {
|
|
1324
|
+
status?: FlowInterviewStatus;
|
|
1325
|
+
steps?: number;
|
|
1326
|
+
/** L'elemento su cui l'esecuzione si e' fermata: il pannello ci porta sopra. */
|
|
1327
|
+
currentElementName?: string | null;
|
|
1328
|
+
trace?: FlowTraceEntry[];
|
|
1329
|
+
resources?: Record<string, FlowTypedValue>;
|
|
1330
|
+
outputs?: Record<string, FlowTypedValue>;
|
|
1331
|
+
/** `Failed` non e' un errore di trasporto: la chiamata e' riuscita, il flow e' fallito. */
|
|
1332
|
+
errors?: string[];
|
|
1333
|
+
fault?: string | null;
|
|
1334
|
+
}
|
|
1272
1335
|
interface FlowScreenResponseRequest {
|
|
1273
1336
|
continuationToken: string;
|
|
1274
1337
|
screenElementName?: string;
|
|
@@ -1564,6 +1627,29 @@ declare abstract class FlowBuilderApi {
|
|
|
1564
1627
|
* escluso quello corrente (§5.10).
|
|
1565
1628
|
*/
|
|
1566
1629
|
abstract listSubflowCandidates(excluding?: string): Promise<FlowSummary[]>;
|
|
1630
|
+
/**
|
|
1631
|
+
* «Esegui»: avvia il flow **salvato** con i valori raccolti dalla finestra.
|
|
1632
|
+
*
|
|
1633
|
+
* Chi integra l'editor la implementa. Non c'e' un default che «prova» il flow: l'editor non
|
|
1634
|
+
* ha un motore, e nascondere l'assenza dietro un'esecuzione finta e' il modo piu' veloce di
|
|
1635
|
+
* far credere che un flow funzioni.
|
|
1636
|
+
*
|
|
1637
|
+
* Il ritorno e' **facoltativo** ed e' l'unica cosa che l'editor sa dell'esecuzione: un
|
|
1638
|
+
* {@link FlowRunOutcome} finisce nel pannello «Debug» — stato, traccia, risorse, output —
|
|
1639
|
+
* mentre `void` significa «guardo altrove», e l'editor dice solo che e' partita. Serve
|
|
1640
|
+
* soprattutto ai flow **senza schermate**: lì non c'e' nessuna interfaccia del runtime in cui
|
|
1641
|
+
* vedere cos'e' successo, e la traccia accanto al grafo e' tutto cio' che si ha.
|
|
1642
|
+
*/
|
|
1643
|
+
runFlow(request: FlowRunRequest): Promise<FlowRunOutcome | void>;
|
|
1644
|
+
/**
|
|
1645
|
+
* «Debug»: come {@link runFlow}, ma `request.debug` e' `true` — ed e' il caso in cui il
|
|
1646
|
+
* ritorno conta davvero, perche' `trace` e `resources` esistono solo in debug (§6.5).
|
|
1647
|
+
*
|
|
1648
|
+
* Sono due metodi e non un flag perche' quasi sempre sono due strade diverse dell'ospite —
|
|
1649
|
+
* l'una avvia e basta, l'altra apre un ispettore — e perche' un ambiente puo' esporre l'una
|
|
1650
|
+
* senza l'altra: due `MissingService` distinti dicono quale delle due manca.
|
|
1651
|
+
*/
|
|
1652
|
+
debugFlow(request: FlowRunRequest): Promise<FlowRunOutcome | void>;
|
|
1567
1653
|
/**
|
|
1568
1654
|
* `POST /interviews` — avvia. Ricorda: `status: 'Failed'` **non** e' un errore
|
|
1569
1655
|
* di trasporto, e `debug: true` popola `trace` e `resources` con dati che
|
|
@@ -2676,15 +2762,43 @@ declare class FlowDocumentStore {
|
|
|
2676
2762
|
renameResource(collection: FlowResourceCollection, index: number, newName: string): void;
|
|
2677
2763
|
/**
|
|
2678
2764
|
* Riscrive ogni occorrenza di un nome nei campi che contengono riferimenti.
|
|
2679
|
-
*
|
|
2680
|
-
*
|
|
2765
|
+
*
|
|
2766
|
+
* L'implementazione sta in `core/flow-clipboard.ts` perche' la usa anche l'incolla, sul solo
|
|
2767
|
+
* frammento invece che sul documento: l'elenco dei campi-riferimento deve essere **uno**.
|
|
2681
2768
|
*/
|
|
2682
2769
|
private static rewriteReferences;
|
|
2683
|
-
/**
|
|
2684
|
-
|
|
2770
|
+
/**
|
|
2771
|
+
* Duplica uno o piu' node, ritornando i nomi creati.
|
|
2772
|
+
*
|
|
2773
|
+
* E' un copia-e-incolla nello stesso documento, e passa dallo stesso motore: e' cio' che gli
|
|
2774
|
+
* fa rinominare **tutto** cio' che collide — non solo il node, ma anche i suoi step, i campi
|
|
2775
|
+
* di uno screen dinamico e le sue screen action, che stanno nello stesso spazio dei nomi
|
|
2776
|
+
* (§3.3) — e riscrivere i riferimenti interni al blocco di conseguenza. Duplicare uno screen
|
|
2777
|
+
* dinamico copiandolo e basta produceva un `NAME_DUPLICATED` per ogni campo.
|
|
2778
|
+
*
|
|
2779
|
+
* Le uscite **verso l'esterno** non si copiano (duplicherebbero rami che l'utente non ha
|
|
2780
|
+
* disegnato); quelle interne al blocco sì, ed e' cio' che rende utile duplicare due elementi
|
|
2781
|
+
* collegati invece che uno alla volta.
|
|
2782
|
+
*/
|
|
2783
|
+
duplicateNodes(names: readonly string[], offset?: {
|
|
2685
2784
|
x: number;
|
|
2686
2785
|
y: number;
|
|
2687
|
-
}):
|
|
2786
|
+
}): string[];
|
|
2787
|
+
/**
|
|
2788
|
+
* Incolla gli appunti seguendo il piano già mostrato all'utente, in **un solo** passo di
|
|
2789
|
+
* storico: un incolla che si annulla in sette volte — un elemento, una variabile, un altro
|
|
2790
|
+
* elemento — non e' il gesto che l'utente ha compiuto.
|
|
2791
|
+
*
|
|
2792
|
+
* Ritorna i nomi creati, che sono cio' che va selezionato dopo: senza, la selezione resterebbe
|
|
2793
|
+
* sull'elemento da cui si e' copiato e il blocco appena incollato non si saprebbe dov'e'.
|
|
2794
|
+
*/
|
|
2795
|
+
pasteClipboard(payload: FlowClipboardPayload, plan: FlowPastePlan, options: {
|
|
2796
|
+
createMissingResources: boolean;
|
|
2797
|
+
offset?: {
|
|
2798
|
+
x: number;
|
|
2799
|
+
y: number;
|
|
2800
|
+
};
|
|
2801
|
+
}): string[];
|
|
2688
2802
|
/** Scrive la destinazione di un'uscita. `target` assente → il ramo si stacca del tutto. */
|
|
2689
2803
|
setConnector(fromName: string, outletKey: string, target: string | undefined, isGoTo?: boolean): void;
|
|
2690
2804
|
/** Rimuove un arco: il percorso finisce lì, che e' legittimo (§3.5). */
|
|
@@ -2700,6 +2814,200 @@ declare class FlowDocumentStore {
|
|
|
2700
2814
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FlowDocumentStore>;
|
|
2701
2815
|
}
|
|
2702
2816
|
|
|
2817
|
+
/**
|
|
2818
|
+
* Copia e incolla di **elementi** — la logica pura, senza Angular e senza storage.
|
|
2819
|
+
*
|
|
2820
|
+
* Il gesto e' quello che ci si aspetta da un editor, ma il contratto lo rende meno banale di
|
|
2821
|
+
* un `JSON.parse(JSON.stringify(...))`, e le tre cose che lo complicano sono tutte della §3.3:
|
|
2822
|
+
*
|
|
2823
|
+
* 1. **lo spazio dei nomi e' unico e case-insensitive.** Un elemento incollato non porta solo
|
|
2824
|
+
* il proprio nome: porta anche quelli dei suoi step di orchestrazione, dei campi di uno
|
|
2825
|
+
* screen dinamico e delle sue screen action, che sono nomi come gli altri (§5.2, §5.14).
|
|
2826
|
+
* Un omonimo e' `NAME_DUPLICATED`, quindi tutto cio' che collide va rinominato **prima**
|
|
2827
|
+
* di entrare nel documento;
|
|
2828
|
+
* 2. **rinominare non aggiorna i riferimenti** e nessuna primitiva lo fa (§13.8). Se il nome
|
|
2829
|
+
* cambia all'ingresso, i riferimenti interni al blocco vanno riscritti qui: le condizioni
|
|
2830
|
+
* che guardano un campo, i target dei connector interni, gli output automatici
|
|
2831
|
+
* (`Leggi_Ordine.Numero`);
|
|
2832
|
+
* 3. **un elemento non e' autosufficiente.** Referenzia risorse — variabili, formule, choice —
|
|
2833
|
+
* che nel flow di destinazione possono non esistere. Portarsele dietro e' il senso di
|
|
2834
|
+
* «copiare senza riconfigurare»; inventarle in silenzio no, ed e' per questo che
|
|
2835
|
+
* {@link planPaste} produce un **piano** che l'interfaccia mostra prima di applicarlo.
|
|
2836
|
+
*
|
|
2837
|
+
* Cio' che di proposito **non** si copia: le uscite che escono dal blocco. Un connector che
|
|
2838
|
+
* punta a un elemento rimasto nell'altro flow sarebbe `CONNECTOR_TARGET_UNKNOWN`, cioe' un
|
|
2839
|
+
* errore che blocca l'attivazione; quelle **interne** al blocco si conservano e si rimappano,
|
|
2840
|
+
* ed e' cio' che rende utile copiare due elementi insieme invece che uno alla volta.
|
|
2841
|
+
*/
|
|
2842
|
+
|
|
2843
|
+
/**
|
|
2844
|
+
* I campi il cui valore e' un riferimento a un node o a una risorsa.
|
|
2845
|
+
*
|
|
2846
|
+
* Elenco unico, condiviso con la rinomina: due elenchi che devono restare uguali diventano due
|
|
2847
|
+
* elenchi diversi al primo campo aggiunto, e il campo dimenticato non da' nessun errore —
|
|
2848
|
+
* lascia un riferimento al nome vecchio che si scopre solo alla validazione (§13.8).
|
|
2849
|
+
*/
|
|
2850
|
+
declare const FLOW_REFERENCE_FIELDS: ReadonlySet<string>;
|
|
2851
|
+
/**
|
|
2852
|
+
* Riscrive ogni occorrenza di un nome nei campi che contengono riferimenti.
|
|
2853
|
+
*
|
|
2854
|
+
* Cammina tutto cio' che gli si passa — un documento intero per la rinomina, il solo frammento
|
|
2855
|
+
* copiato per l'incolla — perche' i riferimenti compaiono in una ventina di posti diversi (§4)
|
|
2856
|
+
* e l'elenco dei posti sarebbe la cosa che si dimentica di aggiornare.
|
|
2857
|
+
*/
|
|
2858
|
+
declare function rewriteReferences(root: unknown, oldName: string, newName: string): void;
|
|
2859
|
+
/**
|
|
2860
|
+
* Marcatore del formato. Sta scritto dentro il payload perche' gli appunti viaggiano anche
|
|
2861
|
+
* fuori dall'editor (storage del browser, incolla di un JSON a mano): leggere qualcosa che non
|
|
2862
|
+
* e' nostro deve fallire con un messaggio, non con un documento rovinato.
|
|
2863
|
+
*/
|
|
2864
|
+
declare const FLOW_CLIPBOARD_KIND = "flow-builder/elements";
|
|
2865
|
+
declare const FLOW_CLIPBOARD_VERSION = 1;
|
|
2866
|
+
interface FlowClipboardNode {
|
|
2867
|
+
collection: FlowNodeCollection;
|
|
2868
|
+
node: FlowAnyNode;
|
|
2869
|
+
}
|
|
2870
|
+
interface FlowClipboardResource {
|
|
2871
|
+
collection: FlowResourceCollection;
|
|
2872
|
+
resource: Record<string, unknown>;
|
|
2873
|
+
}
|
|
2874
|
+
interface FlowClipboardPayload {
|
|
2875
|
+
kind: typeof FLOW_CLIPBOARD_KIND;
|
|
2876
|
+
version: number;
|
|
2877
|
+
/** Da dove viene: serve solo a dirlo nella finestra dell'incolla. */
|
|
2878
|
+
flowName?: string;
|
|
2879
|
+
/**
|
|
2880
|
+
* Il `processType` di origine. Non blocca niente: serve ad avvisare quando si incolla in un
|
|
2881
|
+
* flow di tipo diverso, dove le globali disponibili cambiano — `$Record` non esiste in uno
|
|
2882
|
+
* screen flow (§4.1).
|
|
2883
|
+
*/
|
|
2884
|
+
processType?: string;
|
|
2885
|
+
nodes: FlowClipboardNode[];
|
|
2886
|
+
/** Le risorse referenziate dal blocco, copiate per intero. */
|
|
2887
|
+
resources: FlowClipboardResource[];
|
|
2888
|
+
/**
|
|
2889
|
+
* Le radici referenziate dal blocco che non sono ne' fra i node ne' fra le risorse copiate:
|
|
2890
|
+
* globali (`$Flow`, `$Record`), elementi rimasti nel flow di origine, campi di uno screen non
|
|
2891
|
+
* copiato. Sono cio' che l'incolla non puo' portarsi dietro, e quindi cio' che va detto.
|
|
2892
|
+
*/
|
|
2893
|
+
externalReferences: string[];
|
|
2894
|
+
}
|
|
2895
|
+
declare function isClipboardPayload(value: unknown): value is FlowClipboardPayload;
|
|
2896
|
+
/**
|
|
2897
|
+
* I nomi **dichiarati** dentro un node, oltre al suo: step di orchestrazione, campi di screen
|
|
2898
|
+
* dinamico (contenitori compresi) e screen action. Stanno tutti nello stesso spazio dei nomi
|
|
2899
|
+
* del node (§3.3), quindi collidono come lui e vanno rinominati come lui.
|
|
2900
|
+
*
|
|
2901
|
+
* Si cammina la struttura sapendo **dove** stanno, invece di cercare ogni `name` nell'albero:
|
|
2902
|
+
* `inputParameters[].name` e' il nome di un parametro dell'action, non una risorsa del flow, e
|
|
2903
|
+
* rinominarlo perche' per caso coincide con un campo copiato romperebbe la chiamata.
|
|
2904
|
+
*/
|
|
2905
|
+
declare function innerNamesOf(node: FlowAnyNode): string[];
|
|
2906
|
+
/**
|
|
2907
|
+
* Le **radici** dei riferimenti presenti in un frammento: di `Leggi_Ordine.Numero` la radice e'
|
|
2908
|
+
* `Leggi_Ordine`, ed e' quella che deve esistere nella destinazione (§6.4 — l'elenco dei
|
|
2909
|
+
* riferimenti porta le radici, non i percorsi).
|
|
2910
|
+
*
|
|
2911
|
+
* I `targetReference` restano fuori: sono i connector, e quelli li tratta il taglio delle
|
|
2912
|
+
* uscite. Contarli come riferimenti farebbe comparire fra le dipendenze l'elemento a valle,
|
|
2913
|
+
* che e' esattamente cio' che copiare un blocco non si porta dietro.
|
|
2914
|
+
*/
|
|
2915
|
+
declare function referencedRootsOf(fragment: unknown): string[];
|
|
2916
|
+
/**
|
|
2917
|
+
* Costruisce gli appunti a partire dalla selezione.
|
|
2918
|
+
*
|
|
2919
|
+
* Le uscite si tengono **solo** se restano dentro il blocco; le altre si tolgono del tutto e
|
|
2920
|
+
* non si azzerano: un connector dichiarato senza destinazione e' `CONNECTOR_TARGET_MISSING`,
|
|
2921
|
+
* un avviso che l'utente non ha nessun modo di far sparire se non riaprendo il ramo, mentre un
|
|
2922
|
+
* ramo senza connector e' «il percorso finisce qui», che e' cio' che e' davvero successo (§3.5).
|
|
2923
|
+
*/
|
|
2924
|
+
declare function buildClipboardPayload(input: {
|
|
2925
|
+
nodes: FlowNodeRef[];
|
|
2926
|
+
resources: FlowResourceRef[];
|
|
2927
|
+
/** I nomi selezionati. Lo Start non si copia: e' uno per flow (§3.4). */
|
|
2928
|
+
names: readonly string[];
|
|
2929
|
+
flowName?: string;
|
|
2930
|
+
processType?: string;
|
|
2931
|
+
}): FlowClipboardPayload | null;
|
|
2932
|
+
interface FlowPasteRename {
|
|
2933
|
+
/** Cosa e' il nome: serve a raccontarlo («l’elemento», «il campo»). */
|
|
2934
|
+
kind: 'node' | 'inner' | 'resource';
|
|
2935
|
+
from: string;
|
|
2936
|
+
to: string;
|
|
2937
|
+
}
|
|
2938
|
+
interface FlowPasteResource {
|
|
2939
|
+
collection: FlowResourceCollection;
|
|
2940
|
+
name: string;
|
|
2941
|
+
/** `reused`: nella destinazione esiste già un nome uguale, e si usa quello. */
|
|
2942
|
+
status: 'new' | 'reused';
|
|
2943
|
+
}
|
|
2944
|
+
interface FlowPastePlan {
|
|
2945
|
+
nodeCount: number;
|
|
2946
|
+
renames: FlowPasteRename[];
|
|
2947
|
+
resources: FlowPasteResource[];
|
|
2948
|
+
/**
|
|
2949
|
+
* Riferimenti che nella destinazione non esistono e che l'incolla non puo' creare: globali di
|
|
2950
|
+
* un altro `processType`, elementi rimasti nel flow di origine. Diventeranno i normali
|
|
2951
|
+
* `REFERENCE_UNKNOWN` del pannello dei problemi.
|
|
2952
|
+
*/
|
|
2953
|
+
unresolved: string[];
|
|
2954
|
+
/** Il flow di origine aveva un altro `processType`: le globali disponibili sono altre (§4.1). */
|
|
2955
|
+
processTypeMismatch: string | null;
|
|
2956
|
+
}
|
|
2957
|
+
/**
|
|
2958
|
+
* Decide **prima** di toccare il documento cosa cambierebbe: quali nomi vanno rinominati, quali
|
|
2959
|
+
* risorse nascono e quali si riusano, cosa resta irrisolto. La finestra dell'incolla mostra
|
|
2960
|
+
* questo, e `applyPaste` lo esegue senza deciderne piu' niente.
|
|
2961
|
+
*
|
|
2962
|
+
* Una risorsa il cui nome esiste già nella destinazione si **riusa**: e' quasi sempre la stessa
|
|
2963
|
+
* variabile di prima (stesso flow, altra versione), e crearne una omonima sarebbe comunque
|
|
2964
|
+
* `NAME_DUPLICATED`. Rinominarla d'ufficio sarebbe peggio: i riferimenti del blocco
|
|
2965
|
+
* continuerebbero a puntare a quella esistente pur avendone appena creata una identica.
|
|
2966
|
+
*/
|
|
2967
|
+
declare function planPaste(payload: FlowClipboardPayload, target: {
|
|
2968
|
+
usedNames: readonly string[];
|
|
2969
|
+
processType?: string;
|
|
2970
|
+
}): FlowPastePlan;
|
|
2971
|
+
/**
|
|
2972
|
+
* Applica gli appunti a un documento di lavoro, seguendo il piano.
|
|
2973
|
+
*
|
|
2974
|
+
* L'ordine conta: **prima** si rinomina dentro il frammento — nomi dichiarati e riferimenti —
|
|
2975
|
+
* e **poi** si innesta. Riscrivere dopo l'innesto significherebbe camminare tutto il documento
|
|
2976
|
+
* per ogni nome, e riscrivere anche i riferimenti degli elementi che c'erano già: un elemento
|
|
2977
|
+
* di destinazione che citava `Priorita` finirebbe a citare `Priorita_copia`.
|
|
2978
|
+
*/
|
|
2979
|
+
declare function applyPaste(draft: FlowDefinition, payload: FlowClipboardPayload, plan: FlowPastePlan, options: {
|
|
2980
|
+
createMissingResources: boolean;
|
|
2981
|
+
offset?: {
|
|
2982
|
+
x: number;
|
|
2983
|
+
y: number;
|
|
2984
|
+
};
|
|
2985
|
+
}): string[];
|
|
2986
|
+
/** Il tipo dell'elemento a partire dalla collection: serve solo a raccontare il blocco. */
|
|
2987
|
+
declare function typeOfCollection(collection: FlowNodeCollection): string;
|
|
2988
|
+
|
|
2989
|
+
declare class FlowClipboardService {
|
|
2990
|
+
/** La copia in memoria: fonte di verita' quando lo storage non c'e' o rifiuta. */
|
|
2991
|
+
private memory;
|
|
2992
|
+
private readonly _revision;
|
|
2993
|
+
constructor();
|
|
2994
|
+
private storage;
|
|
2995
|
+
write(payload: FlowClipboardPayload): void;
|
|
2996
|
+
read(): FlowClipboardPayload | null;
|
|
2997
|
+
/**
|
|
2998
|
+
* C'e' qualcosa da incollare. E' un signal e non un booleano calcolato al momento perche' il
|
|
2999
|
+
* comando «Incolla» sta in una toolbar `OnPush`: senza un segnale che cambia, il pulsante
|
|
3000
|
+
* resterebbe spento fino al successivo giro di change detection.
|
|
3001
|
+
*/
|
|
3002
|
+
readonly hasContent: _angular_core.WritableSignal<boolean>;
|
|
3003
|
+
/** Da chiamare dove serve il valore aggiornato: rilegge lo storage e aggiorna il signal. */
|
|
3004
|
+
refresh(): boolean;
|
|
3005
|
+
/** Cambia a ogni scrittura, anche da un'altra scheda: chi vuole reagire osservi questo. */
|
|
3006
|
+
readonly revision: _angular_core.Signal<number>;
|
|
3007
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlowClipboardService, never>;
|
|
3008
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FlowClipboardService>;
|
|
3009
|
+
}
|
|
3010
|
+
|
|
2703
3011
|
declare class FlowValidationStore {
|
|
2704
3012
|
private readonly api;
|
|
2705
3013
|
private readonly destroyRef;
|
|
@@ -3084,6 +3392,13 @@ declare class FlowCanvasComponent {
|
|
|
3084
3392
|
readonly sides: typeof EFConnectableSide;
|
|
3085
3393
|
/** Il nome dell'elemento selezionato, `$start` per lo Start. */
|
|
3086
3394
|
readonly selectedName: _angular_core.InputSignal<string | null>;
|
|
3395
|
+
/**
|
|
3396
|
+
* La selezione **intera**, quando ne fa parte piu' di un elemento: la libreria sa selezionare
|
|
3397
|
+
* a rettangolo e con `Ctrl`+`A`, e i comandi che agiscono su un blocco (copia, duplica,
|
|
3398
|
+
* elimina) devono vederli tutti. `selectedName` resta l'elemento «corrente», quello di cui si
|
|
3399
|
+
* apre il form: un inspector che mostrasse cinque elementi insieme non saprebbe cosa mostrare.
|
|
3400
|
+
*/
|
|
3401
|
+
readonly selectedNames: _angular_core.InputSignal<readonly string[]>;
|
|
3087
3402
|
/**
|
|
3088
3403
|
* L'outline del backend, quando disponibile: da' la raggiungibilita' autoritativa (§6.4).
|
|
3089
3404
|
* Assente → si usa il calcolo locale.
|
|
@@ -3095,7 +3410,11 @@ declare class FlowCanvasComponent {
|
|
|
3095
3410
|
* perche' il canvas resti montabile da solo.
|
|
3096
3411
|
*/
|
|
3097
3412
|
readonly isEditable: _angular_core.InputSignal<boolean>;
|
|
3098
|
-
|
|
3413
|
+
/**
|
|
3414
|
+
* La selezione dopo il gesto: vuota se si e' cliccato nel vuoto. Il primo nome e' quello
|
|
3415
|
+
* «corrente» — chi ascolta ne fa la selezione singola.
|
|
3416
|
+
*/
|
|
3417
|
+
readonly selectionChange: _angular_core.OutputEmitterRef<string[]>;
|
|
3099
3418
|
readonly nodeOpened: _angular_core.OutputEmitterRef<string>;
|
|
3100
3419
|
readonly nodeRemoveRequested: _angular_core.OutputEmitterRef<string>;
|
|
3101
3420
|
readonly nodeDuplicateRequested: _angular_core.OutputEmitterRef<string>;
|
|
@@ -3202,15 +3521,22 @@ declare class FlowCanvasComponent {
|
|
|
3202
3521
|
* `removeNode` toglie anche i connector che lo puntavano.
|
|
3203
3522
|
*/
|
|
3204
3523
|
onRemoveClick(event: Event, name: string): void;
|
|
3524
|
+
/** Come ✎ e ×: `stopPropagation` perche' il clic non valga anche come selezione. */
|
|
3525
|
+
onDuplicateClick(event: Event, name: string): void;
|
|
3205
3526
|
connectorIdOf(node: FlowCanvasNode, outletKey: string): string;
|
|
3206
3527
|
targetIdOf(node: FlowCanvasNode): string;
|
|
3528
|
+
/**
|
|
3529
|
+
* Selezionato = corrente **oppure** parte del blocco selezionato. Senza il secondo caso, un
|
|
3530
|
+
* rettangolo che prende cinque elementi ne evidenziava uno, e i comandi che agiscono su tutti
|
|
3531
|
+
* e cinque sembravano agire su quello.
|
|
3532
|
+
*/
|
|
3207
3533
|
isSelected(node: FlowCanvasNode): boolean;
|
|
3208
3534
|
/** Etichette dei rami dichiarati senza destinazione, per il tooltip del badge. */
|
|
3209
3535
|
danglingLabels(node: FlowCanvasNode): string;
|
|
3210
3536
|
/** Classe della fascia colorata, per categoria del dizionario. */
|
|
3211
3537
|
categoryClass(node: FlowCanvasNode): string;
|
|
3212
3538
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlowCanvasComponent, never>;
|
|
3213
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlowCanvasComponent, "fb-flow-canvas", never, { "selectedName": { "alias": "selectedName"; "required": false; "isSignal": true; }; "outline": { "alias": "outline"; "required": false; "isSignal": true; }; "isEditable": { "alias": "isEditable"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "nodeOpened": "nodeOpened"; "nodeRemoveRequested": "nodeRemoveRequested"; "nodeDuplicateRequested": "nodeDuplicateRequested"; "elementDropped": "elementDropped"; }, never, never, true, never>;
|
|
3539
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlowCanvasComponent, "fb-flow-canvas", never, { "selectedName": { "alias": "selectedName"; "required": false; "isSignal": true; }; "selectedNames": { "alias": "selectedNames"; "required": false; "isSignal": true; }; "outline": { "alias": "outline"; "required": false; "isSignal": true; }; "isEditable": { "alias": "isEditable"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "nodeOpened": "nodeOpened"; "nodeRemoveRequested": "nodeRemoveRequested"; "nodeDuplicateRequested": "nodeDuplicateRequested"; "elementDropped": "elementDropped"; }, never, never, true, never>;
|
|
3214
3540
|
}
|
|
3215
3541
|
|
|
3216
3542
|
/** Il gesto scelto sulla palette: un tipo e, dove esiste, la sua variante (§5.6). */
|
|
@@ -3432,7 +3758,7 @@ declare class ReferencePickerComponent {
|
|
|
3432
3758
|
* percorso inesistente di uno scope che i percorsi li dichiara, perche' lì il backend
|
|
3433
3759
|
* risponderebbe `GLOBAL_UNKNOWN`.
|
|
3434
3760
|
*/
|
|
3435
|
-
readonly valueState: _angular_core.Signal<"
|
|
3761
|
+
readonly valueState: _angular_core.Signal<"member" | "empty" | "unknown" | "known" | "navigated" | "host" | "containerRoot" | "memberUnknown" | "memberNotWritable" | "pathUnverified" | "globalPathUntyped" | "globalPathInvalid">;
|
|
3436
3762
|
/** Le parole cambiano con la tappa: un campo di un'entita' non e' un membro di una classe. */
|
|
3437
3763
|
private readonly tailIsObject;
|
|
3438
3764
|
private readonly tailContainer;
|
|
@@ -3776,7 +4102,7 @@ declare class FormulaEditorComponent {
|
|
|
3776
4102
|
* dinamico — e riscriverla a ogni tasto costa. La **verifica** parte comunque durante la
|
|
3777
4103
|
* digitazione: usa la bozza locale, non cio' che e' arrivato al documento.
|
|
3778
4104
|
*/
|
|
3779
|
-
readonly commitOn: _angular_core.InputSignal<"
|
|
4105
|
+
readonly commitOn: _angular_core.InputSignal<"change" | "input">;
|
|
3780
4106
|
readonly expressionChange: _angular_core.OutputEmitterRef<string>;
|
|
3781
4107
|
private readonly area;
|
|
3782
4108
|
/**
|
|
@@ -4336,6 +4662,30 @@ declare class ElementDialogComponent {
|
|
|
4336
4662
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ElementDialogComponent, "fb-element-dialog", never, { "selectedName": { "alias": "selectedName"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "removeRequested": "removeRequested"; "duplicateRequested": "duplicateRequested"; "renamed": "renamed"; }, never, never, true, never>;
|
|
4337
4663
|
}
|
|
4338
4664
|
|
|
4665
|
+
declare class PasteDialogComponent {
|
|
4666
|
+
readonly payload: _angular_core.InputSignal<FlowClipboardPayload>;
|
|
4667
|
+
readonly plan: _angular_core.InputSignal<FlowPastePlan>;
|
|
4668
|
+
readonly confirmed: _angular_core.OutputEmitterRef<{
|
|
4669
|
+
createMissingResources: boolean;
|
|
4670
|
+
}>;
|
|
4671
|
+
readonly cancelled: _angular_core.OutputEmitterRef<void>;
|
|
4672
|
+
/** Predefinito acceso: e' il motivo per cui si copia un elemento invece di rifarlo. */
|
|
4673
|
+
readonly createMissingResources: _angular_core.WritableSignal<boolean>;
|
|
4674
|
+
readonly elementLabel: _angular_core.Signal<string>;
|
|
4675
|
+
readonly newResources: _angular_core.Signal<_esfaenza_flow_builder.FlowPasteResource[]>;
|
|
4676
|
+
readonly reusedResources: _angular_core.Signal<_esfaenza_flow_builder.FlowPasteResource[]>;
|
|
4677
|
+
/** I nomi degli elementi che cambiano: si distinguono da quelli interni perche' il rimedio e' diverso. */
|
|
4678
|
+
readonly nodeRenames: _angular_core.Signal<_esfaenza_flow_builder.FlowPasteRename[]>;
|
|
4679
|
+
readonly innerRenames: _angular_core.Signal<_esfaenza_flow_builder.FlowPasteRename[]>;
|
|
4680
|
+
/** Fuori mappa si mostra il nome tecnico: meglio una parola strana che nessuna parola. */
|
|
4681
|
+
resourceLabel(collection: FlowResourceCollection): string;
|
|
4682
|
+
setCreateMissingResources(value: boolean): void;
|
|
4683
|
+
confirm(): void;
|
|
4684
|
+
cancel(): void;
|
|
4685
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PasteDialogComponent, never>;
|
|
4686
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PasteDialogComponent, "fb-paste-dialog", never, { "payload": { "alias": "payload"; "required": true; "isSignal": true; }; "plan": { "alias": "plan"; "required": true; "isSignal": true; }; }, { "confirmed": "confirmed"; "cancelled": "cancelled"; }, never, never, true, never>;
|
|
4687
|
+
}
|
|
4688
|
+
|
|
4339
4689
|
declare class StartInspectorComponent {
|
|
4340
4690
|
private readonly store;
|
|
4341
4691
|
private readonly dictionaries;
|
|
@@ -4972,24 +5322,24 @@ declare class VersionPanelComponent {
|
|
|
4972
5322
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<VersionPanelComponent, "fb-version-panel", never, {}, { "closed": "closed"; "versionOpened": "versionOpened"; "notice": "notice"; }, never, never, true, never>;
|
|
4973
5323
|
}
|
|
4974
5324
|
|
|
4975
|
-
declare class
|
|
4976
|
-
private readonly api;
|
|
5325
|
+
declare class RunDialogComponent {
|
|
4977
5326
|
private readonly store;
|
|
4978
|
-
private readonly session;
|
|
4979
5327
|
private readonly dictionaries;
|
|
4980
5328
|
private readonly catalog;
|
|
4981
|
-
|
|
4982
|
-
readonly
|
|
4983
|
-
/**
|
|
4984
|
-
readonly
|
|
4985
|
-
readonly
|
|
4986
|
-
|
|
4987
|
-
readonly
|
|
4988
|
-
|
|
4989
|
-
|
|
4990
|
-
readonly
|
|
4991
|
-
|
|
4992
|
-
readonly
|
|
5329
|
+
/** `debug` cambia il titolo, l'avviso sui dati e quale primitiva verra' chiamata. */
|
|
5330
|
+
readonly mode: _angular_core.InputSignal<"run" | "debug">;
|
|
5331
|
+
/** Il flow che verra' eseguito: e' quello **salvato**, non il documento in mano. */
|
|
5332
|
+
readonly flowName: _angular_core.InputSignal<string | null>;
|
|
5333
|
+
readonly version: _angular_core.InputSignal<number | null>;
|
|
5334
|
+
/** Con modifiche non salvate si esegue la versione salvata: dirlo evita la sorpresa. */
|
|
5335
|
+
readonly isDirty: _angular_core.InputSignal<boolean>;
|
|
5336
|
+
/** L'ospite sta ancora rispondendo: il bottone resta spento invece di ripartire. */
|
|
5337
|
+
readonly isBusy: _angular_core.InputSignal<boolean>;
|
|
5338
|
+
readonly confirmed: _angular_core.OutputEmitterRef<Record<string, unknown>>;
|
|
5339
|
+
readonly cancelled: _angular_core.OutputEmitterRef<void>;
|
|
5340
|
+
readonly isDebug: _angular_core.Signal<boolean>;
|
|
5341
|
+
/** I valori compilati, come stringhe: la conversione al tipo avviene alla conferma. */
|
|
5342
|
+
private readonly rawValues;
|
|
4993
5343
|
/** Le variabili `isInput` del flow: il contratto verso chi lo invoca (§4.6). */
|
|
4994
5344
|
readonly inputVariables: _angular_core.Signal<FlowVariable[]>;
|
|
4995
5345
|
/**
|
|
@@ -4997,27 +5347,45 @@ declare class DebugPanelComponent {
|
|
|
4997
5347
|
* compila un membro alla volta: non c'e' un letterale con cui scriverla in un campo solo.
|
|
4998
5348
|
*/
|
|
4999
5349
|
private readonly membersByClass;
|
|
5000
|
-
/** I membri **scrivibili** di una classe: gli altri li calcola il backend. */
|
|
5001
|
-
membersOf(className: string | undefined): FlowStructureMember[];
|
|
5002
5350
|
/**
|
|
5003
|
-
* §4.6 — i valori
|
|
5004
|
-
*
|
|
5005
|
-
*
|
|
5351
|
+
* §4.6 — i valori dei tipi `Enum` che compaiono fra gli input. Un insieme chiuso merita una
|
|
5352
|
+
* tendina: qui si scrive un nome che il motore confrontera', e digitarlo e' il modo piu'
|
|
5353
|
+
* facile di sbagliarlo.
|
|
5006
5354
|
*/
|
|
5007
5355
|
private readonly valuesByEnumType;
|
|
5356
|
+
constructor();
|
|
5357
|
+
/** I membri **scrivibili** di una classe: gli altri li calcola il motore. */
|
|
5358
|
+
membersOf(className: string | undefined): FlowStructureMember[];
|
|
5008
5359
|
enumValuesOf(enumType: string | null | undefined): FlowEnumValue[];
|
|
5009
5360
|
isStructureVariable(variable: FlowVariable): boolean;
|
|
5010
|
-
|
|
5361
|
+
setValue(key: string, value: string): void;
|
|
5362
|
+
/** Il valore di un campo del form: serve a ripopolarlo se la finestra si ridisegna. */
|
|
5363
|
+
valueOf(key: string): string;
|
|
5364
|
+
/** Converte un valore del form nel tipo dichiarato: il tipo vince, anche in scrittura (§6.5). */
|
|
5365
|
+
private static coerce;
|
|
5366
|
+
/**
|
|
5367
|
+
* I valori da mandare. Un campo lasciato vuoto **non** si manda: mandare la stringa vuota
|
|
5368
|
+
* significherebbe assegnare, e un input non valorizzato e' un'altra cosa da un input a "".
|
|
5369
|
+
*/
|
|
5370
|
+
private collectInputs;
|
|
5371
|
+
confirm(): void;
|
|
5372
|
+
cancel(): void;
|
|
5373
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RunDialogComponent, never>;
|
|
5374
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RunDialogComponent, "fb-run-dialog", never, { "mode": { "alias": "mode"; "required": true; "isSignal": true; }; "flowName": { "alias": "flowName"; "required": false; "isSignal": true; }; "version": { "alias": "version"; "required": false; "isSignal": true; }; "isDirty": { "alias": "isDirty"; "required": false; "isSignal": true; }; "isBusy": { "alias": "isBusy"; "required": false; "isSignal": true; }; }, { "confirmed": "confirmed"; "cancelled": "cancelled"; }, never, never, true, never>;
|
|
5375
|
+
}
|
|
5376
|
+
|
|
5377
|
+
declare class DebugPanelComponent {
|
|
5378
|
+
/** L'esito dell'ultima esecuzione; `null` = non ne e' ancora stata lanciata una. */
|
|
5379
|
+
readonly outcome: _angular_core.InputSignal<FlowRunOutcome | null>;
|
|
5380
|
+
/** L'ultima esecuzione era in debug: senza, traccia e risorse non arrivano ed e' normale. */
|
|
5381
|
+
readonly wasDebug: _angular_core.InputSignal<boolean>;
|
|
5382
|
+
/** L'ospite sta ancora eseguendo: l'esito, se arriva, arriva dopo. */
|
|
5383
|
+
readonly isRunning: _angular_core.InputSignal<boolean>;
|
|
5384
|
+
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
5385
|
+
/** Chiede all'host di portare l'utente sull'elemento: e' l'ancora della traccia. */
|
|
5386
|
+
readonly elementFocused: _angular_core.OutputEmitterRef<string>;
|
|
5387
|
+
readonly cleared: _angular_core.OutputEmitterRef<void>;
|
|
5011
5388
|
readonly status: _angular_core.Signal<string | null>;
|
|
5012
|
-
readonly pendingScreen: _angular_core.Signal<_esfaenza_flow_builder.FlowPendingScreen | null>;
|
|
5013
|
-
readonly isWaitingForScreen: _angular_core.Signal<boolean>;
|
|
5014
|
-
/** §5.14 — l'attesa e' su uno step assegnato a una persona, non su un evento. */
|
|
5015
|
-
readonly isWaitingForStageStep: _angular_core.Signal<boolean>;
|
|
5016
|
-
readonly stageSteps: _angular_core.Signal<FlowStageStepState[]>;
|
|
5017
|
-
/** Lo step su cui c'e' un work item aperto: e' quello che si puo' concludere. */
|
|
5018
|
-
readonly waitingStageSteps: _angular_core.Signal<FlowStageStepState[]>;
|
|
5019
|
-
/** I valori con cui si conclude uno step, per nome di output. */
|
|
5020
|
-
readonly stepOutputs: _angular_core.WritableSignal<Record<string, string>>;
|
|
5021
5389
|
readonly trace: _angular_core.Signal<_esfaenza_flow_builder.FlowTraceEntry[]>;
|
|
5022
5390
|
/** Le risorse come righe ordinate: il tipo dichiarato vince in lettura (§6.5). */
|
|
5023
5391
|
readonly resourceRows: _angular_core.Signal<{
|
|
@@ -5030,49 +5398,19 @@ declare class DebugPanelComponent {
|
|
|
5030
5398
|
type: string;
|
|
5031
5399
|
value: string;
|
|
5032
5400
|
}[]>;
|
|
5033
|
-
/** Gli input che lo screen corrente riceve, per mostrarli accanto al form generico. */
|
|
5034
|
-
readonly screenInputRows: _angular_core.Signal<{
|
|
5035
|
-
name: string;
|
|
5036
|
-
type: string;
|
|
5037
|
-
value: string;
|
|
5038
|
-
}[]>;
|
|
5039
|
-
/** I nomi degli output dichiarati dallo screen, per generare i campi da compilare. */
|
|
5040
|
-
readonly screenOutputNames: _angular_core.Signal<string[]>;
|
|
5041
5401
|
/**
|
|
5042
|
-
*
|
|
5043
|
-
*
|
|
5044
|
-
*
|
|
5402
|
+
* L'ospite ha restituito qualcosa, ma niente di leggibile: nessuno stato, nessuna traccia,
|
|
5403
|
+
* nessun valore. Va distinto dal «non e' stata lanciata nessuna esecuzione», perche' il
|
|
5404
|
+
* rimedio e' diverso — lì si preme «Esegui», qui manca un pezzo dell'implementazione.
|
|
5045
5405
|
*/
|
|
5046
|
-
|
|
5047
|
-
setDebugEnabled(value: boolean): void;
|
|
5048
|
-
setInputValue(name: string, value: string): void;
|
|
5049
|
-
setScreenOutput(name: string, value: string): void;
|
|
5050
|
-
/** Converte un valore del form nel tipo dichiarato: il tipo vince, anche in scrittura (§6.5). */
|
|
5051
|
-
private static coerce;
|
|
5052
|
-
/** Converte i valori del form nel tipo dichiarato dalla variabile. */
|
|
5053
|
-
private coerceInputs;
|
|
5054
|
-
start(): Promise<void>;
|
|
5055
|
-
respond(navigation: FlowScreenNavigation): Promise<void>;
|
|
5056
|
-
setStepOutput(name: string, value: string): void;
|
|
5057
|
-
/** Gli output dichiarati dallo step, per generare i campi da compilare. */
|
|
5058
|
-
stepOutputNames(stepName: string | undefined): string[];
|
|
5059
|
-
/**
|
|
5060
|
-
* Conclude uno step come farebbe l'assegnatario. `Rejected` non e' un errore: e' l'esito che
|
|
5061
|
-
* prende il ramo «Step rifiutato» dello stage — e se quel ramo non c'e', l'interview fallisce.
|
|
5062
|
-
*/
|
|
5063
|
-
completeStep(stepName: string | undefined, status: FlowStageStepStatus): Promise<void>;
|
|
5064
|
-
private apply;
|
|
5065
|
-
private handleError;
|
|
5066
|
-
reset(): void;
|
|
5406
|
+
readonly isEmptyOutcome: _angular_core.Signal<boolean>;
|
|
5067
5407
|
close(): void;
|
|
5068
|
-
|
|
5408
|
+
clear(): void;
|
|
5409
|
+
/** L'etichetta dello stato, che non e' un errore anche quando dice «Fallita» (§6.5). */
|
|
5069
5410
|
statusLabel(): string;
|
|
5070
5411
|
statusNote(): string | null;
|
|
5071
|
-
canGoBack(): boolean;
|
|
5072
|
-
canFinish(): boolean;
|
|
5073
|
-
canPause(): boolean;
|
|
5074
5412
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DebugPanelComponent, never>;
|
|
5075
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DebugPanelComponent, "fb-debug-panel", never, {}, { "closed": "closed"; "elementFocused": "elementFocused"; }, never, never, true, never>;
|
|
5413
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DebugPanelComponent, "fb-debug-panel", never, { "outcome": { "alias": "outcome"; "required": false; "isSignal": true; }; "wasDebug": { "alias": "wasDebug"; "required": false; "isSignal": true; }; "isRunning": { "alias": "isRunning"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "elementFocused": "elementFocused"; "cleared": "cleared"; }, never, never, true, never>;
|
|
5076
5414
|
}
|
|
5077
5415
|
|
|
5078
5416
|
type SidePanel = 'inspector' | 'resources' | 'versions' | 'debug';
|
|
@@ -5082,6 +5420,7 @@ interface Notice {
|
|
|
5082
5420
|
}
|
|
5083
5421
|
declare class FlowBuilderComponent {
|
|
5084
5422
|
private readonly api;
|
|
5423
|
+
private readonly clipboard;
|
|
5085
5424
|
private readonly destroyRef;
|
|
5086
5425
|
/** Serve a `afterNextRender` chiamato fuori dal costruttore. */
|
|
5087
5426
|
private readonly injector;
|
|
@@ -5176,7 +5515,7 @@ declare class FlowBuilderComponent {
|
|
|
5176
5515
|
* capita anche solo per spostare un node, e una finestra che si apre a ogni click sarebbe
|
|
5177
5516
|
* insopportabile. Nel pannello laterale, invece, mostrare subito il form non costa nulla.
|
|
5178
5517
|
*/
|
|
5179
|
-
onSelectionChange(
|
|
5518
|
+
onSelectionChange(names: string[]): void;
|
|
5180
5519
|
/** Doppio click o bottone «✎» sul node: qui il dettaglio si apre. */
|
|
5181
5520
|
onNodeOpened(name: string): void;
|
|
5182
5521
|
/** Porta l'utente sull'elemento **e** ne apre il form: e' l'ancora dei problemi (§7). */
|
|
@@ -5187,9 +5526,9 @@ declare class FlowBuilderComponent {
|
|
|
5187
5526
|
openSelectedElement(): void;
|
|
5188
5527
|
closeDialog(): void;
|
|
5189
5528
|
/**
|
|
5190
|
-
* Evidenzia l'elemento sul canvas senza cambiare pannello.
|
|
5191
|
-
* Serve
|
|
5192
|
-
*
|
|
5529
|
+
* Evidenzia l'elemento sul canvas **senza** cambiare pannello.
|
|
5530
|
+
* Serve alla traccia del debug: portare l'utente sull'elemento e' il punto del pannello, ma
|
|
5531
|
+
* sostituirlo con l'inspector farebbe sparire la traccia che si stava leggendo.
|
|
5193
5532
|
*/
|
|
5194
5533
|
highlightElement(name: string): void;
|
|
5195
5534
|
/** Rilascio dalla palette: il punto di rilascio diventa `locationX`/`locationY` (§11). */
|
|
@@ -5209,6 +5548,45 @@ declare class FlowBuilderComponent {
|
|
|
5209
5548
|
*/
|
|
5210
5549
|
onNodeRenamed(newName: string): void;
|
|
5211
5550
|
onDuplicateNode(name: string): void;
|
|
5551
|
+
/** La selezione del canvas per intero; `selectedName` resta l'elemento «corrente». */
|
|
5552
|
+
readonly selectedNames: _angular_core.WritableSignal<string[]>;
|
|
5553
|
+
/** L'anteprima dell'incolla, mentre la finestra e' aperta. */
|
|
5554
|
+
readonly pastePreview: _angular_core.WritableSignal<{
|
|
5555
|
+
payload: FlowClipboardPayload;
|
|
5556
|
+
plan: FlowPastePlan;
|
|
5557
|
+
} | null>;
|
|
5558
|
+
/**
|
|
5559
|
+
* I nomi copiabili: la selezione meno lo Start (§3.4) e meno cio' che nel documento non c'e'
|
|
5560
|
+
* piu'. Il secondo filtro non e' teorico: dopo un annulla la selezione resta sul nome di un
|
|
5561
|
+
* elemento appena tolto, e senza il controllo il comando risultava attivo su niente.
|
|
5562
|
+
*/
|
|
5563
|
+
private copyableNames;
|
|
5564
|
+
readonly canCopy: _angular_core.Signal<boolean>;
|
|
5565
|
+
/** Il comando «Incolla» si accende quando negli appunti c'e' qualcosa, anche di un altro flow. */
|
|
5566
|
+
readonly canPaste: _angular_core.Signal<boolean>;
|
|
5567
|
+
copySelection(): void;
|
|
5568
|
+
/**
|
|
5569
|
+
* Prepara l'incolla: calcola il piano e apre la finestra. Non tocca il documento — cosa
|
|
5570
|
+
* cambierebbe si vede prima, ed e' l'unico momento in cui la scelta sulle risorse mancanti ha
|
|
5571
|
+
* ancora senso.
|
|
5572
|
+
*/
|
|
5573
|
+
startPaste(): void;
|
|
5574
|
+
cancelPaste(): void;
|
|
5575
|
+
confirmPaste(options: {
|
|
5576
|
+
createMissingResources: boolean;
|
|
5577
|
+
}): void;
|
|
5578
|
+
/** Duplica in loco, senza passare dagli appunti: stesso motore, nessuna domanda da fare. */
|
|
5579
|
+
duplicateSelection(): void;
|
|
5580
|
+
private duplicateNames;
|
|
5581
|
+
/** Porta la selezione sul blocco appena creato: senza, resterebbe su cio' da cui e' nato. */
|
|
5582
|
+
private selectNames;
|
|
5583
|
+
/**
|
|
5584
|
+
* Le scorciatoie. L'ascoltatore sta sull'**host** del builder e non sul documento: la libreria
|
|
5585
|
+
* si innesta in una pagina che non e' nostra, e `Ctrl`+`C` catturato globalmente ruberebbe la
|
|
5586
|
+
* copia all'applicazione ospite. Per la stessa ragione il gesto si ignora quando il fuoco e'
|
|
5587
|
+
* dentro un campo: lì `Ctrl`+`C` copia il testo, che e' cio' che l'utente si aspetta.
|
|
5588
|
+
*/
|
|
5589
|
+
onKeyDown(event: KeyboardEvent): void;
|
|
5212
5590
|
/** Riordina il grafo e **scrive** le coordinate nel documento (§3.5). */
|
|
5213
5591
|
autoLayout(): void;
|
|
5214
5592
|
undo(): void;
|
|
@@ -5243,6 +5621,38 @@ declare class FlowBuilderComponent {
|
|
|
5243
5621
|
setCopyLabel(value: string): void;
|
|
5244
5622
|
/** Scrive la copia e continua a lavorare su di essa (§6.2). */
|
|
5245
5623
|
confirmCopy(): Promise<void>;
|
|
5624
|
+
/** Quale delle due finestre e' aperta; `null` = nessuna. */
|
|
5625
|
+
readonly runMode: _angular_core.WritableSignal<"run" | "debug" | null>;
|
|
5626
|
+
/** La chiamata all'ospite e' in volo: il bottone della finestra resta spento. */
|
|
5627
|
+
readonly isStartingRun: _angular_core.WritableSignal<boolean>;
|
|
5628
|
+
/**
|
|
5629
|
+
* L'esito dell'ultima esecuzione, se l'ospite ne ha restituito uno.
|
|
5630
|
+
*
|
|
5631
|
+
* È tutto cio' che l'editor sa di un'esecuzione, e serve soprattutto ai flow **senza
|
|
5632
|
+
* schermate**: lì non si apre nessuna interfaccia del runtime, quindi senza questo pannello
|
|
5633
|
+
* non ci sarebbe **nessun** posto in cui vedere quali elementi sono stati eseguiti.
|
|
5634
|
+
*/
|
|
5635
|
+
readonly runOutcome: _angular_core.WritableSignal<FlowRunOutcome | null>;
|
|
5636
|
+
/** L'ultima esecuzione era in debug: senza, traccia e risorse non arrivano ed e' normale. */
|
|
5637
|
+
readonly wasRunInDebug: _angular_core.WritableSignal<boolean>;
|
|
5638
|
+
/**
|
|
5639
|
+
* Si esegue cio' che e' **salvato**: su un flow mai scritto non c'e' niente da avviare, e il
|
|
5640
|
+
* titolo del bottone lo dice invece di lasciare un comando che non risponde.
|
|
5641
|
+
*/
|
|
5642
|
+
readonly canRun: _angular_core.Signal<boolean>;
|
|
5643
|
+
openRun(mode: 'run' | 'debug'): void;
|
|
5644
|
+
closeRun(): void;
|
|
5645
|
+
/** Svuota il pannello: l'esito di prima non riguarda piu' il documento che si sta editando. */
|
|
5646
|
+
clearRunOutcome(): void;
|
|
5647
|
+
/**
|
|
5648
|
+
* Consegna gli ingressi all'ospite.
|
|
5649
|
+
*
|
|
5650
|
+
* La finestra si chiude **subito**, prima che la chiamata risponda: un'esecuzione puo' durare
|
|
5651
|
+
* quanto vuole — con schermate da compilare puo' finire minuti dopo — e tenere aperto il form
|
|
5652
|
+
* degli ingressi per tutto quel tempo coprirebbe proprio il grafo che si sta guardando. Il
|
|
5653
|
+
* pannello «Debug» prende il posto dell'attesa, e l'esito ci arriva quando arriva.
|
|
5654
|
+
*/
|
|
5655
|
+
confirmRun(inputs: Record<string, unknown>): Promise<void>;
|
|
5246
5656
|
createNewVersion(): Promise<void>;
|
|
5247
5657
|
activate(): Promise<void>;
|
|
5248
5658
|
/** §9.3 — prima opzione davanti a un conflitto. */
|
|
@@ -5278,5 +5688,5 @@ declare class SelectValueDirective implements AfterViewChecked {
|
|
|
5278
5688
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueDirective, "select[fbValue]", never, { "fbValue": { "alias": "fbValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5279
5689
|
}
|
|
5280
5690
|
|
|
5281
|
-
export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, DynamicScreenInspectorComponent, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, EnumValuePickerComponent, FALLBACK_COLLECTION_BY_TYPE, FALLBACK_TYPE_LABEL, FLOW_BUILDER_HTTP_CONFIG, FLOW_ELEMENT_ICONS, FLOW_ELEMENT_VARIANT_FIELDS, FLOW_ELEMENT_VARIANT_ICONS, FLOW_ERROR_FALLBACK_MESSAGE, FLOW_ERROR_HTTP_STATUS, FLOW_NAME_PATTERN, FLOW_NODE_COLLECTIONS, FLOW_NODE_HEIGHT, FLOW_NODE_WIDTH, FLOW_RESOURCE_COLLECTIONS, FLOW_VALUE_FIELDS, FLOW_VALUE_LITERAL_FIELDS, FieldAssignmentEditorComponent, FieldPickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, FormulaEditorComponent, FormulaValidationService, HttpFlowBuilderApi, NamePickerComponent, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, ObjectPickerComponent, OrchestratedStageInspectorComponent, ParameterEditorComponent, ProblemsPanelComponent, RecordFilterEditorComponent, ReferencePickerComponent, ResourcePanelComponent, SEVERITY_BUCKETS, SEVERITY_ICON, SEVERITY_LABEL, START_NODE_NAME, SelectValueDirective, StartInspectorComponent, StructureMemberPickerComponent, StructurePickerComponent, TYPES_WITH_AUTOMATIC_OUTPUT, TYPE_BY_COLLECTION, UNSUPPORTED_TYPES, ValueEditorComponent, VersionPanelComponent, allFieldsOf, areTypesComparable, canvasNodeId, checkConditionLogic, checkFlowName, describePathEntry, duplicateField, elementIcon, emptyFlowDefinition, fieldAt, filterReferences, flattenFields, flowNodeWidth, flowNodeWidthClass, insertField, isCustomConditionLogic, isEmptyReferenceFilter, isFieldResource, isGlobalReference, isNumericType, isPathInside, isTypeCheckedOperator, isValidFlowName, isValued, loadPathLevel, matchesReferenceFilter, moveCondition, moveField, navigatePath, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathKey, pathNotVerifiableMessage, referenceRoot, remapConditionLogic, removeCondition, removeField, resolvePath, samePath, screenActionNames, screenFieldNames, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName, valuedFieldOf, valuedFieldsOf, variantFieldOf, variantOf, variantPresetOf };
|
|
5282
|
-
export type { FieldAssignmentHolder, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasNode, FlowCatalogEntry, FlowCatalogParameter, FlowChoice, FlowCloneRequest, FlowCollectionProcessor, FlowCollectionProcessorType, FlowComparisonOperator, FlowComparisonOperatorEntry, FlowCondition, FlowConditionHolder, FlowConditionLogic, FlowConflictState, FlowConnectionKind, FlowConnector, FlowConnectorTarget, FlowConstant, FlowCreateRequest, FlowCustomError, FlowCustomErrorMessage, FlowCustomProperty, FlowDataType, FlowDataTypeEntry, FlowDecision, FlowDecisionRule, FlowDefinition, FlowDictionaries, FlowDictionaryEntry, FlowDynamicChoiceSet, FlowDynamicScreen, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowEnumValue, FlowErrorCategory, FlowExportQuery, FlowFieldDescription, FlowFieldUsage, FlowFieldValue, FlowFormKind, FlowFormula, FlowFormulaIssue, FlowFormulaUsage, FlowFormulaValidationRequest, FlowFormulaValidationResult, FlowGlobalVariableEntry, FlowInputFieldAssignment, FlowInputParameter, FlowInterviewResult, FlowInterviewStatus, FlowIssueSeverity, FlowLayoutDirection, FlowLayoutNodeInput, FlowLayoutOptions, FlowLayoutResult, FlowListQuery, FlowLoop, FlowNameCheck, FlowNameProblem, FlowNewVersionRequest, FlowNodeBase, FlowNodeCollection, FlowNodeRef, FlowObjectDescription, FlowObjectSummary, FlowOffsetUnit, FlowOrchestratedStage, FlowOutlet, FlowOutline, FlowOutlineConnection, FlowOutlineNode, FlowOutputFieldAssignment, FlowOutputParameter, FlowPalettePick, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowRecordValue, FlowReference, FlowReferenceFilter, FlowReferenceKind, FlowRegionContainerType, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenAction, FlowScreenField, FlowScreenFieldInputsRevisited, FlowScreenFieldNode, FlowScreenFieldPath, FlowScreenFieldType, FlowScreenFieldTypeEntry, FlowScreenNavigation, FlowScreenResponseRequest, FlowScreenTrigger, FlowScreenTriggerInitBehavior, FlowScreenValidationRule, FlowScriptPluginCall, FlowSeverityBucket, FlowSortOption, FlowSortOrder, FlowStage, FlowStageStep, FlowStageStepActionType, FlowStageStepAssignee, FlowStageStepConditionActionType, FlowStageStepRequest, FlowStageStepState, FlowStageStepStatus, FlowStageStepTypeEntry, FlowStart, FlowStartInterviewRequest, FlowStructureDescribed, FlowStructureDescription, FlowStructureInstance, FlowStructureMember, FlowSubflow, FlowSubflowInputAssignment, FlowSubflowOutputAssignment, FlowSummary, FlowTextTemplate, FlowTraceEntry, FlowTransactionModel, FlowTransform, FlowTransformType, FlowTransformValue, FlowTransformValueAction, FlowTriggerType, FlowTypedEntry, FlowTypedValue, FlowUnsupportedNode, FlowValidationIssue, FlowValidationResult, FlowValue, FlowVariable, FlowVersionStatus, FlowVersionSummary, FlowWait, FlowWaitEvent, NamePickerOption, PaletteGroup, PaletteItem, ParameterHolder, PathCatalog, PathContainer, PathContainerKind, PathEntry, PathLevel, PathLevelStatus, PathNavigation, PathNavigationRequest, PathResolution, PathStopReason, StructureMemberUsage, ValueMode };
|
|
5691
|
+
export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, DynamicScreenInspectorComponent, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, EnumValuePickerComponent, FALLBACK_COLLECTION_BY_TYPE, FALLBACK_TYPE_LABEL, FLOW_BUILDER_HTTP_CONFIG, FLOW_CLIPBOARD_KIND, FLOW_CLIPBOARD_VERSION, FLOW_ELEMENT_ICONS, FLOW_ELEMENT_VARIANT_FIELDS, FLOW_ELEMENT_VARIANT_ICONS, FLOW_ERROR_FALLBACK_MESSAGE, FLOW_ERROR_HTTP_STATUS, FLOW_NAME_PATTERN, FLOW_NODE_COLLECTIONS, FLOW_NODE_HEIGHT, FLOW_NODE_WIDTH, FLOW_REFERENCE_FIELDS, FLOW_RESOURCE_COLLECTIONS, FLOW_VALUE_FIELDS, FLOW_VALUE_LITERAL_FIELDS, FieldAssignmentEditorComponent, FieldPickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowClipboardService, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, FormulaEditorComponent, FormulaValidationService, HttpFlowBuilderApi, NamePickerComponent, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, ObjectPickerComponent, OrchestratedStageInspectorComponent, ParameterEditorComponent, PasteDialogComponent, ProblemsPanelComponent, RecordFilterEditorComponent, ReferencePickerComponent, ResourcePanelComponent, RunDialogComponent, SEVERITY_BUCKETS, SEVERITY_ICON, SEVERITY_LABEL, START_NODE_NAME, SelectValueDirective, StartInspectorComponent, StructureMemberPickerComponent, StructurePickerComponent, TYPES_WITH_AUTOMATIC_OUTPUT, TYPE_BY_COLLECTION, UNSUPPORTED_TYPES, ValueEditorComponent, VersionPanelComponent, allFieldsOf, applyPaste, areTypesComparable, buildClipboardPayload, canvasNodeId, checkConditionLogic, checkFlowName, describePathEntry, duplicateField, elementIcon, emptyFlowDefinition, fieldAt, filterReferences, flattenFields, flowNodeWidth, flowNodeWidthClass, innerNamesOf, insertField, isClipboardPayload, isCustomConditionLogic, isEmptyReferenceFilter, isFieldResource, isGlobalReference, isNumericType, isPathInside, isTypeCheckedOperator, isValidFlowName, isValued, loadPathLevel, matchesReferenceFilter, moveCondition, moveField, navigatePath, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathKey, pathNotVerifiableMessage, planPaste, referenceRoot, referencedRootsOf, remapConditionLogic, removeCondition, removeField, resolvePath, rewriteReferences, samePath, screenActionNames, screenFieldNames, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, typeOfCollection, uniqueFlowName, valuedFieldOf, valuedFieldsOf, variantFieldOf, variantOf, variantPresetOf };
|
|
5692
|
+
export type { FieldAssignmentHolder, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasNode, FlowCatalogEntry, FlowCatalogParameter, FlowChoice, FlowClipboardNode, FlowClipboardPayload, FlowClipboardResource, FlowCloneRequest, FlowCollectionProcessor, FlowCollectionProcessorType, FlowComparisonOperator, FlowComparisonOperatorEntry, FlowCondition, FlowConditionHolder, FlowConditionLogic, FlowConflictState, FlowConnectionKind, FlowConnector, FlowConnectorTarget, FlowConstant, FlowCreateRequest, FlowCustomError, FlowCustomErrorMessage, FlowCustomProperty, FlowDataType, FlowDataTypeEntry, FlowDecision, FlowDecisionRule, FlowDefinition, FlowDictionaries, FlowDictionaryEntry, FlowDynamicChoiceSet, FlowDynamicScreen, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowEnumValue, FlowErrorCategory, FlowExportQuery, FlowFieldDescription, FlowFieldUsage, FlowFieldValue, FlowFormKind, FlowFormula, FlowFormulaIssue, FlowFormulaUsage, FlowFormulaValidationRequest, FlowFormulaValidationResult, FlowGlobalVariableEntry, FlowInputFieldAssignment, FlowInputParameter, FlowInterviewResult, FlowInterviewStatus, FlowIssueSeverity, FlowLayoutDirection, FlowLayoutNodeInput, FlowLayoutOptions, FlowLayoutResult, FlowListQuery, FlowLoop, FlowNameCheck, FlowNameProblem, FlowNewVersionRequest, FlowNodeBase, FlowNodeCollection, FlowNodeRef, FlowObjectDescription, FlowObjectSummary, FlowOffsetUnit, FlowOrchestratedStage, FlowOutlet, FlowOutline, FlowOutlineConnection, FlowOutlineNode, FlowOutputFieldAssignment, FlowOutputParameter, FlowPalettePick, FlowPastePlan, FlowPasteRename, FlowPasteResource, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowRecordValue, FlowReference, FlowReferenceFilter, FlowReferenceKind, FlowRegionContainerType, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowRunOutcome, FlowRunRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenAction, FlowScreenField, FlowScreenFieldInputsRevisited, FlowScreenFieldNode, FlowScreenFieldPath, FlowScreenFieldType, FlowScreenFieldTypeEntry, FlowScreenNavigation, FlowScreenResponseRequest, FlowScreenTrigger, FlowScreenTriggerInitBehavior, FlowScreenValidationRule, FlowScriptPluginCall, FlowSeverityBucket, FlowSortOption, FlowSortOrder, FlowStage, FlowStageStep, FlowStageStepActionType, FlowStageStepAssignee, FlowStageStepConditionActionType, FlowStageStepRequest, FlowStageStepState, FlowStageStepStatus, FlowStageStepTypeEntry, FlowStart, FlowStartInterviewRequest, FlowStructureDescribed, FlowStructureDescription, FlowStructureInstance, FlowStructureMember, FlowSubflow, FlowSubflowInputAssignment, FlowSubflowOutputAssignment, FlowSummary, FlowTextTemplate, FlowTraceEntry, FlowTransactionModel, FlowTransform, FlowTransformType, FlowTransformValue, FlowTransformValueAction, FlowTriggerType, FlowTypedEntry, FlowTypedValue, FlowUnsupportedNode, FlowValidationIssue, FlowValidationResult, FlowValue, FlowVariable, FlowVersionStatus, FlowVersionSummary, FlowWait, FlowWaitEvent, NamePickerOption, PaletteGroup, PaletteItem, ParameterHolder, PathCatalog, PathContainer, PathContainerKind, PathEntry, PathLevel, PathLevelStatus, PathNavigation, PathNavigationRequest, PathResolution, PathStopReason, StructureMemberUsage, ValueMode };
|