@esfaenza/flow-builder 20.3.12 → 20.3.14

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 CHANGED
@@ -90,7 +90,7 @@ l'attributo di scope di Angular, quindi un CSS incapsulato non li raggiunge.
90
90
  | `version` | la versione da aprire; assente → l'attiva se c'e', altrimenti l'ultima (§6.1) |
91
91
  | `author` | registrato sulla versione e mostrato nell'elenco |
92
92
  | `defaultProcessType` | `processType` iniziale di un flow nuovo |
93
- | `inspectorMode` | `'dialog'` (predefinito) apre il dettaglio dell'elemento in una finestra sopra il canvas, come il flow builder di Salesforce; `'panel'` lo tiene nel pannello laterale |
93
+ | `inspectorMode` | `'dialog'` (predefinito) apre il dettaglio dell'elemento in una finestra sopra il canvas; `'panel'` lo tiene nel pannello laterale |
94
94
 
95
95
  | Output | Quando |
96
96
  |---|---|
@@ -334,10 +334,29 @@ vuoto resta "non lo so" — primitiva non esposta, tipo senza valori dichiarati,
334
334
  da scegliere — e allora il valore si digita; con l'elenco popolato un valore fuori elenco e' un
335
335
  **avviso**, perche' nessun codice della §7 lo blocca ed e' l'editor ad accorgersene prima del runtime.
336
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.
337
+ **Un campo a `null` e' assente.** Il valore ha un campo per tipo e va valorizzato **uno e un solo**
338
+ campo (§4.2); la §2 dice che cio' che non c'e' si omette, ma un backend che serializza tutte le
339
+ proprieta' `System.Text.Json` senza `IgnoreNullValues` lo fa di default manda
340
+ `{"enumValue": "InIstruttoria", "formulaExpression": null, …}`: un solo valore e sette caselle piene
341
+ di niente. Riconoscere il campo con `!== undefined` faceva vincere il primo letto, cioe'
342
+ `formulaExpression`: l'editor apriva la **formula** (vuota) e il valore, pur presente nel documento,
343
+ spariva dalla vista — e il conteggio dei campi accusava `VALUE_AMBIGUOUS`. La regola sta in
344
+ `core/flow-value.util.ts` (`isValued`, `valuedFieldOf`, `valuedFieldsOf`) e la usano l'editor del
345
+ valore e quello delle condizioni: `null` e `undefined` significano la stessa cosa, mentre
346
+ `booleanValue: false`, `numberValue: 0` e `stringValue: ''` restano valori.
347
+
348
+ Perche' l'editor conosca il tipo della destinazione serve saperlo, e i percorsi non fanno eccezione:
349
+ `POST /flows/references` elenca le **radici** e non i percorsi, quindi su `Richiesta.Stato` la
350
+ corrispondenza esatta del nome non trova niente. Il tipo si ricava allora navigando la catena —
351
+ `core/reference-path` innesta l'elenco dei riferimenti su `core/path-navigation`: trova il prefisso
352
+ dichiarato piu' lungo (§4.1), naviga il resto un segmento alla volta e prende il tipo dell'**ultimo**
353
+ segmento. Lo usano l'Assignment (su `getWritableReferences`), le condizioni e i filtri sui record —
354
+ dove la radice e' l'entita', quindi `Cliente.Citta` si risolve come il campo che e'. In un Transform
355
+ il tipo viene dal **membro** della classe di destinazione, che l'inspector già descrive.
356
+
357
+ Dove il tipo non si sa — catena interrotta, catalogo assente, segmento inesistente, percorso radicato
358
+ sull'output automatico di un elemento (che il backend non verifica, §7) — il campo resta generico
359
+ invece di indovinare: un elenco chiuso di valori sbagliati e' peggio di una casella di testo.
341
360
 
342
361
  Lo stesso controllo, nella variante `<fb-name-picker>`, vale per **ogni altro nome che il flow
343
362
  prende da fuori**: tipo di action e action, script, form, i nomi dei loro parametri di ingresso