@esfaenza/flow-builder 20.3.11 → 20.3.12
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 +28 -0
- package/fesm2022/esfaenza-flow-builder.mjs +331 -22
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +112 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -142,6 +142,7 @@ sono opzionali e rifiutano con `MissingService` se non sovrascritti.
|
|
|
142
142
|
| `listForms` / `listFormParameters` | astratti |
|
|
143
143
|
| `listEnumTypes`, `listEvents`, `listSubflowCandidates` | astratti |
|
|
144
144
|
| `describeObject`, `listFieldValues` | opzionali |
|
|
145
|
+
| `listEnumValues(enumType)` | opzionale — i **valori** di un tipo di enumerazione, cioe' i nomi scrivibili in `enumValue` (§4.2, §4.6). `listEnumTypes` e' l'altra meta' e non basta: quella dice quali tipi esistono, questa quali valori ha un tipo. `enumType` e' esattamente l'`objectType` della risorsa, del parametro o del **membro** di una classe (§4.7.1): la risposta e' del tipo, non del punto di uso, e la cache e' per nome del tipo. Lista vuota = "non lo so" — il valore si scrive a mano, e un tipo sconosciuto risponde vuoto, non 404 |
|
|
145
146
|
| `listStructures`, `describeStructure(className)` | opzionali — le classi e i loro membri per le risorse `Structure` (§4.7). `listStructures` e' l'**elenco delle classi** senza membri; `describeStructure` restituisce la **descrizione** di una classe (`className`, `label`, `members`), non un array nudo (§4.7.1). Senza, le classi non sono verificabili e il nome si scrive a mano: "non lo so", non "non esiste". I tre esiti sono distinti: `members` popolato = elenco autorevole, `members: []` = membri non dichiarati (si digita, nessuna accusa), rifiuto `StructureNotFound` = classe non registrata (si segnala la **classe**) |
|
|
146
147
|
|
|
147
148
|
| §6.5 Esecuzione | |
|
|
@@ -203,6 +204,14 @@ qualsiasi.
|
|
|
203
204
|
dalla mappa delle uscite invece di essere «ramo di errore» per tutti: su uno stage di
|
|
204
205
|
orchestrazione quel ramo e' lo **step rifiutato**, non un guasto.
|
|
205
206
|
|
|
207
|
+
La stessa mappa distingue i rami di **recupero da errore** (`isFaultRecovery`: Record\*,
|
|
208
|
+
ActionCall, ScriptCall, Wait) dagli altri, perche' lasciarne uno vuoto non significa «il
|
|
209
|
+
percorso finisce qui» ma «se questo fallisce l'interview termina `Failed` e le modifiche
|
|
210
|
+
vengono annullate» (§3.5). L'editor delle uscite lo dice come promemoria — non col colore
|
|
211
|
+
d'avviso, perche' rinunciare al recupero e' la scelta piu' comune — e il backend lo segnala
|
|
212
|
+
con `FAULT_CONNECTOR_MISSING`, che e' un `Warning` e non blocca niente. Lo stage di
|
|
213
|
+
orchestrazione ne resta fuori: la §7 non lo comprende.
|
|
214
|
+
|
|
206
215
|
Un tipo con un **discriminatore** compare come piu' voci, una per valore: il Collection
|
|
207
216
|
Processor e' «Ordina» e «Filtra», non «ordina o filtra». Sono due gesti diversi — un `Sort`
|
|
208
217
|
vuole `sortOptions`, un `Filter` vuole condizioni (§5.5) — e sceglierli dalla palette evita di
|
|
@@ -311,6 +320,25 @@ quindi l'editor dice di filtrare per le colonne della chiave invece di far cerca
|
|
|
311
320
|
nell'elenco non c'e'. Restano `<select>` i dizionari chiusi — tipi di dato, operatori,
|
|
312
321
|
enumerazioni — dove non c'e' niente da scrivere a mano.
|
|
313
322
|
|
|
323
|
+
**Valori di enum.** Un `Enum` ha due meta' e servono entrambe: l'`objectType` dice **quale tipo** —
|
|
324
|
+
e quello resta un `<select>`, perche' l'elenco dei tipi e' un dizionario chiuso — mentre i **valori**
|
|
325
|
+
di quel tipo arrivano da `listEnumValues(objectType)` e sono cio' che finisce in `enumValue` (§4.2,
|
|
326
|
+
§4.6). Senza la seconda chiamata all'utente resta una casella di testo su un insieme chiuso, che e'
|
|
327
|
+
il modo piu' facile di scrivere un valore che il runtime non riconoscera'. Li propone
|
|
328
|
+
`<fb-enum-value-picker>`, che il `<fb-value-editor>` monta al posto della casella di testo appena il
|
|
329
|
+
tipo della destinazione e' `Enum`: vale quindi in una condizione, in un filtro, nel valore iniziale
|
|
330
|
+
di una risorsa, in un parametro di action o di form, in un Assignment e in una `Map` di un Transform.
|
|
331
|
+
Cio' che si scrive e' il **nome**: `numericValue` viene mostrato accanto al valore — aiuta a
|
|
332
|
+
riconoscerlo in dati legacy — ma un numero in `enumValue` sarebbe un altro tipo (§13.18). Elenco
|
|
333
|
+
vuoto resta "non lo so" — primitiva non esposta, tipo senza valori dichiarati, `objectType` ancora
|
|
334
|
+
da scegliere — e allora il valore si digita; con l'elenco popolato un valore fuori elenco e' un
|
|
335
|
+
**avviso**, perche' nessun codice della §7 lo blocca ed e' l'editor ad accorgersene prima del runtime.
|
|
336
|
+
|
|
337
|
+
Perche' l'editor conosca il tipo della destinazione serve saperlo: in un Assignment arriva da
|
|
338
|
+
`getWritableReferences` (per corrispondenza esatta del nome: su `Cliente.Stato` resta ignoto), in una
|
|
339
|
+
condizione e in un filtro dal riferimento o dal campo a sinistra, in un Transform dal **membro** della
|
|
340
|
+
classe di destinazione. Dove il tipo non si sa, il campo resta generico invece di indovinare.
|
|
341
|
+
|
|
314
342
|
Lo stesso controllo, nella variante `<fb-name-picker>`, vale per **ogni altro nome che il flow
|
|
315
343
|
prende da fuori**: tipo di action e action, script, form, i nomi dei loro parametri di ingresso
|
|
316
344
|
e di uscita, il flow di uno step in background e dei suoi evaluation flow, il flow invocato da
|