@esfaenza/flow-builder 20.3.37 → 20.3.38
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 +24 -12
- package/fesm2022/esfaenza-flow-builder.mjs +91 -110
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +87 -65
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -79,8 +79,11 @@ l'attributo di scope di Angular, quindi un CSS incapsulato non li raggiunge.
|
|
|
79
79
|
[flowName]="'ApprovazioneOrdine'"
|
|
80
80
|
[version]="null"
|
|
81
81
|
[author]="utenteCorrente"
|
|
82
|
+
[runOutcome]="esitoUltimaEsecuzione()"
|
|
83
|
+
[isRunning]="esecuzioneInCorso()"
|
|
82
84
|
(saved)="onSaved($event)"
|
|
83
85
|
(activated)="onActivated($event)"
|
|
86
|
+
(runRequested)="esegui($event)"
|
|
84
87
|
/>
|
|
85
88
|
```
|
|
86
89
|
|
|
@@ -91,11 +94,14 @@ l'attributo di scope di Angular, quindi un CSS incapsulato non li raggiunge.
|
|
|
91
94
|
| `author` | registrato sulla versione e mostrato nell'elenco |
|
|
92
95
|
| `defaultProcessType` | `processType` iniziale di un flow nuovo |
|
|
93
96
|
| `inspectorMode` | `'dialog'` (predefinito) apre il dettaglio dell'elemento in una finestra sopra il canvas; `'panel'` lo tiene nel pannello laterale |
|
|
97
|
+
| `runOutcome` | l'esito che l'host vuole far vedere nel pannello «Debug» dopo un `runRequested` (`FlowRunOutcome`); `null` → il pannello dice che non c'e' niente. Facoltativo: chi mostra l'esecuzione in una sua interfaccia non passa niente |
|
|
98
|
+
| `isRunning` | l'esecuzione annunciata e' ancora in corso. Solo l'host lo sa: accende il puntino sul tab «Debug» e tiene spento il bottone della finestra degli ingressi |
|
|
94
99
|
|
|
95
100
|
| Output | Quando |
|
|
96
101
|
|---|---|
|
|
97
102
|
| `saved` | dopo un salvataggio riuscito, con `FlowSaveResult`. Lo emette anche «Duplica», e in quel caso `flowName` e' quello della **copia**: la sessione si e' spostata su di essa, quindi l'host che tiene il nome da parte deve adottarlo |
|
|
98
103
|
| `activated` | dopo un'attivazione riuscita |
|
|
104
|
+
| `runRequested` | l'utente ha premuto **Esegui** o **Debug**, con `FlowRunRequest`: `debug`, `flowName`, `version`, `inputs` già convertiti, `processType`, `isDirty` e la `definition` in mano all'editor. **L'editor non esegue e non chiama niente**: cosa significhi eseguire — una navigazione, delle API dell'host, una dialog con l'interview dentro — lo decide l'host. Un host che non ascolta questo output fa sì che i due comandi non facciano niente: non c'e' nessuna primitiva che possa mancare, quindi nessun errore da mostrare |
|
|
99
105
|
|
|
100
106
|
Il componente vuole un'altezza: `<fb-flow-builder style="height: 100vh">`, oppure un
|
|
101
107
|
contenitore flex. Gli store sono provider **del componente**, quindi due builder sulla stessa
|
|
@@ -150,8 +156,7 @@ sono opzionali e rifiutano con `MissingService` se non sovrascritti.
|
|
|
150
156
|
|
|
151
157
|
| Esecuzione dall'editor | |
|
|
152
158
|
|---|---|
|
|
153
|
-
| `
|
|
154
|
-
| `startInterview`, `respondToScreen`, `resumeInterview`, `inspectInterview`, `abandonInterview` | opzionali — le primitive §6.5 dell'interview. **L'editor non le usa**: servono a chi implementa `runFlow`/`debugFlow` con un runner proprio (la demo lo fa) |
|
|
159
|
+
| `startInterview`, `respondToScreen`, `resumeInterview`, `inspectInterview`, `abandonInterview` | opzionali — le primitive §6.5 dell'interview. **L'editor non le usa**: servono a chi risponde a `runRequested` con un runner proprio (la demo lo fa) |
|
|
155
160
|
| `completeStageStep(request)` | opzionale — conclude uno step di orchestrazione (§5.14) |
|
|
156
161
|
|
|
157
162
|
**Errori.** Ogni metodo, in caso di rifiuto, deve fallire con un `FlowApiError`
|
|
@@ -639,24 +644,31 @@ ripiego dove `cloneFlow` non c'e' (e' opzionale). Un nome già usato lo rifiuta
|
|
|
639
644
|
generato dalle variabili `isInput` del documento — tipo dichiarato rispettato anche in scrittura,
|
|
640
645
|
istanze di classe compilate un membro alla volta (§4.7), enum per **nome** da `listEnumValues`
|
|
641
646
|
(§4.6). Un campo lasciato vuoto non viene mandato: non valorizzato e stringa vuota sono cose
|
|
642
|
-
diverse. Poi l'editor **passa la mano
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
**
|
|
647
|
+
diverse. Poi l'editor **passa la mano**, e non con una chiamata: emette `runRequested` con tutto
|
|
648
|
+
cio' che sa del momento — `debug`, `flowName`, `version`, `inputs`, `processType`, `isDirty`, la
|
|
649
|
+
`definition` in mano — e non esegue niente per conto suo. Cosa significhi eseguire lo decide
|
|
650
|
+
l'host: una navigazione, una chiamata alle sue API, una dialog con l'interview dentro, o niente.
|
|
651
|
+
Nessuna primitiva di `FlowBuilderApi` viene toccata, quindi non c'e' nessun `MissingService` da
|
|
652
|
+
mostrare: un host che non ascolta l'output fa sì che il comando non faccia niente. Si esegue la
|
|
653
|
+
versione **salvata**, quindi i comandi sono spenti su un flow mai scritto e la finestra avverte
|
|
654
|
+
quando ci sono modifiche non salvate — con `isDirty` nel payload, se l'host preferisce provare la
|
|
655
|
+
bozza che ha in `definition`.
|
|
656
|
+
|
|
657
|
+
**Il pannello «Debug».** Cosa l'ospite ha voluto ridare all'editor dell'ultima esecuzione,
|
|
658
|
+
passandolo all'input `runOutcome`: stato, output,
|
|
649
659
|
traccia degli elementi eseguiti — ogni riga porta all'elemento sul canvas — e risorse. Esiste per
|
|
650
660
|
un caso che altrimenti non ha risposta: un flow **senza schermate** (`AutoLaunched`, o
|
|
651
661
|
un'orchestrazione tutta in background) non apre nessuna interfaccia del runtime, quindi senza
|
|
652
|
-
questo pannello non ci sarebbe **nessun** posto in cui vedere cosa e' successo.
|
|
662
|
+
questo pannello non ci sarebbe **nessun** posto in cui vedere cosa e' successo. Passarlo e'
|
|
663
|
+
facoltativo — chi mostra tutto in casa sua non passa niente, e il pannello lo dice invece di
|
|
664
|
+
sembrare rotto. `trace` e
|
|
653
665
|
`resources` arrivano solo con `debug: true` (§6.5), e riportano i valori di tutte le risorse —
|
|
654
666
|
dati personali compresi: l'avviso e' in chiaro. Il pannello non conduce niente: guarda, e basta.
|
|
655
667
|
|
|
656
668
|
Come si implementa l'altra metà si vede nella demo
|
|
657
669
|
(`projects/flow-builder-example/src/app/runner`), e la scelta interessante e' **quando** aprire una finestra: un
|
|
658
|
-
flow che non ha niente da chiedere finisce da solo e l'esito
|
|
659
|
-
interattivo apre il runner e
|
|
670
|
+
flow che non ha niente da chiedere finisce da solo e l'esito va subito in `runOutcome`, mentre uno
|
|
671
|
+
interattivo apre il runner e ci mette l'ultimo risultato alla chiusura — così la traccia resta
|
|
660
672
|
comunque lì dove si stava lavorando. Il runner guida l'interview con le primitive della §6.5,
|
|
661
673
|
distingue le due attese di `Suspended` (`isWaitingForEvent` / `isWaitingForStageStep`), conclude
|
|
662
674
|
uno step al posto dell'assegnatario — rifiuto compreso, con la `interviewKey` nuova che sostituisce
|