@esfaenza/flow-builder 20.3.17 → 20.3.18
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 +59 -8
- package/fesm2022/esfaenza-flow-builder.mjs +727 -108
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +314 -76
- package/package.json +1 -1
- package/styles/flow-builder.css +1 -1
package/index.d.ts
CHANGED
|
@@ -256,6 +256,54 @@ interface FlowScreenField {
|
|
|
256
256
|
/** Come una regola di Decision: rivalutata sui valori appena inviati (§5.2). */
|
|
257
257
|
visibilityRule?: FlowConditionHolder;
|
|
258
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* §5.2 — una **screen action**: un'action del flow i cui risultati finiscono negli **altri campi
|
|
261
|
+
* della stessa schermata**. E' il caso «inserisci il codice fiscale e, se la persona e' già a
|
|
262
|
+
* sistema, nome e cognome compaiono da soli», e senza di essa lo si farebbe spezzando lo screen in
|
|
263
|
+
* due con un elemento Action in mezzo.
|
|
264
|
+
*
|
|
265
|
+
* Identificazione e parametri sono **gli stessi** di un elemento Action (§5.9), codici di
|
|
266
|
+
* validazione compresi. Cambia una cosa sola, e riguarda l'editor: l'`assignToReference` di un
|
|
267
|
+
* `outputParameters` accetta anche i **campi di questa schermata**, che ovunque altrove sono di sola
|
|
268
|
+
* lettura.
|
|
269
|
+
*/
|
|
270
|
+
interface FlowScreenAction {
|
|
271
|
+
/**
|
|
272
|
+
* Il nome con cui la citano i `triggers`, e la radice di `Cerca.nome` con l'output automatico. Vive
|
|
273
|
+
* nello spazio dei nomi **comune** (§3.3): un'action omonima di una variabile o di un node e'
|
|
274
|
+
* `NAME_DUPLICATED`, ed e' l'unica cosa che tiene quel riferimento non ambiguo.
|
|
275
|
+
*/
|
|
276
|
+
name?: string;
|
|
277
|
+
actionType?: string;
|
|
278
|
+
/** Obbligatorio: senza, `ACTION_NAME_MISSING`; fuori catalogo, `ACTION_UNKNOWN`. */
|
|
279
|
+
actionName?: string;
|
|
280
|
+
inputParameters?: FlowInputParameter[];
|
|
281
|
+
outputParameters?: FlowOutputParameter[];
|
|
282
|
+
/**
|
|
283
|
+
* Rende gli output leggibili come `<NomeAction>.<NomeOutput>`. **Non scrive in nessun campo**: e'
|
|
284
|
+
* la forma da proporre quando il risultato serve a una condizione, non a precompilare (§5.2).
|
|
285
|
+
*/
|
|
286
|
+
storeOutputAutomatically?: boolean;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* §5.2 — cosa fa scattare una screen action all'arrivo sulla schermata. L'unico valore ammesso e'
|
|
290
|
+
* `runOnLoad`: il `runOnRevisit` della specifica Salesforce e'
|
|
291
|
+
* `SCREEN_TRIGGER_INIT_BEHAVIOR_UNKNOWN`.
|
|
292
|
+
*/
|
|
293
|
+
type FlowScreenTriggerInitBehavior = 'runOnLoad' | string;
|
|
294
|
+
/**
|
|
295
|
+
* §5.2 — chi invoca una screen action, e quando. Sta separato dalle `actions` perche' **piu' trigger
|
|
296
|
+
* possono invocare la stessa action**.
|
|
297
|
+
*
|
|
298
|
+
* Senza ne' `triggerFieldName` ne' `initBehavior` non scatterebbe mai: `SCREEN_TRIGGER_WITHOUT_CAUSE`.
|
|
299
|
+
*/
|
|
300
|
+
interface FlowScreenTrigger extends FlowConditionHolder {
|
|
301
|
+
/** Una delle `actions` **dello stesso screen**: altrimenti `SCREEN_ACTION_UNKNOWN`. */
|
|
302
|
+
screenActionName?: string;
|
|
303
|
+
/** Un campo **di questo screen**: altrimenti `SCREEN_TRIGGER_FIELD_UNKNOWN`. */
|
|
304
|
+
triggerFieldName?: string;
|
|
305
|
+
initBehavior?: FlowScreenTriggerInitBehavior;
|
|
306
|
+
}
|
|
259
307
|
/**
|
|
260
308
|
* §5.2 — lo screen dinamico: **descrive i propri campi**, invece di referenziare un form.
|
|
261
309
|
*
|
|
@@ -276,6 +324,10 @@ interface FlowDynamicScreen extends FlowNodeBase {
|
|
|
276
324
|
/** Nome di uno stage dichiarato: alimenta l'indicatore di avanzamento. */
|
|
277
325
|
stageReference?: string;
|
|
278
326
|
fields?: FlowScreenField[];
|
|
327
|
+
/** Le action invocabili dai campi di questa schermata (§5.2). */
|
|
328
|
+
actions?: FlowScreenAction[];
|
|
329
|
+
/** Chi le invoca, e quando: due pezzi perche' piu' trigger possono chiamare la stessa action. */
|
|
330
|
+
triggers?: FlowScreenTrigger[];
|
|
279
331
|
connector?: FlowConnector;
|
|
280
332
|
}
|
|
281
333
|
type FlowAssignmentOperator = 'Assign' | 'Add' | 'Subtract' | 'AddAtStart' | 'AssignCount' | 'RemoveFirst' | 'RemoveAll' | 'RemovePosition' | 'RemoveAfterFirst' | 'RemoveBeforeFirst' | 'RemoveUncommon' | string;
|
|
@@ -284,12 +336,12 @@ interface FlowAssignmentItem {
|
|
|
284
336
|
operator?: FlowAssignmentOperator;
|
|
285
337
|
value?: FlowValue;
|
|
286
338
|
}
|
|
287
|
-
/** §5.
|
|
339
|
+
/** §5.3 — le operazioni sono eseguite nell'ordine dichiarato. */
|
|
288
340
|
interface FlowAssignment extends FlowNodeBase {
|
|
289
341
|
assignmentItems?: FlowAssignmentItem[];
|
|
290
342
|
connector?: FlowConnector;
|
|
291
343
|
}
|
|
292
|
-
/** §5.
|
|
344
|
+
/** §5.4 — una regola per ramo; l'ordine e' semantico. */
|
|
293
345
|
interface FlowDecisionRule extends FlowConditionHolder {
|
|
294
346
|
name?: string;
|
|
295
347
|
label?: string;
|
|
@@ -301,7 +353,7 @@ interface FlowDecision extends FlowNodeBase {
|
|
|
301
353
|
defaultConnector?: FlowConnector;
|
|
302
354
|
defaultConnectorLabel?: string;
|
|
303
355
|
}
|
|
304
|
-
/** §5.
|
|
356
|
+
/** §5.5 */
|
|
305
357
|
interface FlowLoop extends FlowNodeBase {
|
|
306
358
|
collectionReference?: string;
|
|
307
359
|
assignNextValueToReference?: string;
|
|
@@ -314,7 +366,7 @@ interface FlowSortOption {
|
|
|
314
366
|
sortOrder?: FlowSortOrder;
|
|
315
367
|
doesPutEmptyStringAndNullFirst?: boolean;
|
|
316
368
|
}
|
|
317
|
-
/** §5.
|
|
369
|
+
/** §5.6 — `assignNextValueToReference` e' l'elemento in esame, non la destinazione. */
|
|
318
370
|
interface FlowCollectionProcessor extends FlowNodeBase, FlowConditionHolder {
|
|
319
371
|
collectionProcessorType?: FlowCollectionProcessorType;
|
|
320
372
|
collectionReference?: string;
|
|
@@ -323,7 +375,7 @@ interface FlowCollectionProcessor extends FlowNodeBase, FlowConditionHolder {
|
|
|
323
375
|
sortOptions?: FlowSortOption[];
|
|
324
376
|
connector?: FlowConnector;
|
|
325
377
|
}
|
|
326
|
-
/** §5.
|
|
378
|
+
/** §5.7 */
|
|
327
379
|
interface FlowRecordLookup extends FlowNodeBase {
|
|
328
380
|
object?: string;
|
|
329
381
|
filterLogic?: FlowConditionLogic;
|
|
@@ -338,12 +390,12 @@ interface FlowRecordLookup extends FlowNodeBase {
|
|
|
338
390
|
storeOutputAutomatically?: boolean;
|
|
339
391
|
outputReference?: string;
|
|
340
392
|
outputAssignments?: FlowOutputFieldAssignment[];
|
|
341
|
-
/** Modellato ma non tradotto in query (§5.
|
|
393
|
+
/** Modellato ma non tradotto in query (§5.7). */
|
|
342
394
|
relatedRecords?: unknown[];
|
|
343
395
|
connector?: FlowConnector;
|
|
344
396
|
faultConnector?: FlowConnector;
|
|
345
397
|
}
|
|
346
|
-
/** §5.
|
|
398
|
+
/** §5.8 */
|
|
347
399
|
interface FlowRecordCreate extends FlowNodeBase {
|
|
348
400
|
object?: string;
|
|
349
401
|
inputReference?: string;
|
|
@@ -371,7 +423,7 @@ interface FlowRecordUpdate extends FlowNodeBase {
|
|
|
371
423
|
interface FlowRecordDelete extends FlowNodeBase {
|
|
372
424
|
object?: string;
|
|
373
425
|
inputReference?: string;
|
|
374
|
-
/** Senza filtri e' un **errore**, non un avviso (§5.
|
|
426
|
+
/** Senza filtri e' un **errore**, non un avviso (§5.8). */
|
|
375
427
|
filters?: FlowRecordFilter[];
|
|
376
428
|
connector?: FlowConnector;
|
|
377
429
|
faultConnector?: FlowConnector;
|
|
@@ -379,7 +431,7 @@ interface FlowRecordDelete extends FlowNodeBase {
|
|
|
379
431
|
interface FlowRecordRollback extends FlowNodeBase {
|
|
380
432
|
connector?: FlowConnector;
|
|
381
433
|
}
|
|
382
|
-
/** §5.
|
|
434
|
+
/** §5.9 */
|
|
383
435
|
interface FlowActionCall extends FlowNodeBase {
|
|
384
436
|
actionType?: string;
|
|
385
437
|
actionName?: string;
|
|
@@ -404,7 +456,7 @@ interface FlowScriptPluginCall extends FlowNodeBase {
|
|
|
404
456
|
connector?: FlowConnector;
|
|
405
457
|
faultConnector?: FlowConnector;
|
|
406
458
|
}
|
|
407
|
-
/** §5.
|
|
459
|
+
/** §5.10 — i `name` sono le variabili isInput/isOutput del flow **invocato**. */
|
|
408
460
|
interface FlowSubflowInputAssignment {
|
|
409
461
|
name?: string;
|
|
410
462
|
value?: FlowValue;
|
|
@@ -420,7 +472,7 @@ interface FlowSubflow extends FlowNodeBase {
|
|
|
420
472
|
storeOutputAutomatically?: boolean;
|
|
421
473
|
connector?: FlowConnector;
|
|
422
474
|
}
|
|
423
|
-
/** §5.
|
|
475
|
+
/** §5.11 */
|
|
424
476
|
interface FlowWaitEvent extends FlowConditionHolder {
|
|
425
477
|
name?: string;
|
|
426
478
|
label?: string;
|
|
@@ -438,7 +490,7 @@ interface FlowWait extends FlowNodeBase {
|
|
|
438
490
|
defaultConnectorLabel?: string;
|
|
439
491
|
faultConnector?: FlowConnector;
|
|
440
492
|
}
|
|
441
|
-
/** §5.
|
|
493
|
+
/** §5.12 */
|
|
442
494
|
interface FlowCustomErrorMessage {
|
|
443
495
|
errorMessage?: string;
|
|
444
496
|
isFieldError?: boolean;
|
|
@@ -447,12 +499,12 @@ interface FlowCustomErrorMessage {
|
|
|
447
499
|
interface FlowCustomError extends FlowNodeBase {
|
|
448
500
|
customErrorMessages?: FlowCustomErrorMessage[];
|
|
449
501
|
}
|
|
450
|
-
/** §5.
|
|
502
|
+
/** §5.13 */
|
|
451
503
|
interface FlowTransformValueAction {
|
|
452
504
|
transformType?: FlowTransformType;
|
|
453
505
|
/**
|
|
454
506
|
* Il campo di destinazione, oppure — se il target e' una `Structure` — il nome del
|
|
455
|
-
* **membro** della classe (§5.
|
|
507
|
+
* **membro** della classe (§5.13, §4.7).
|
|
456
508
|
*/
|
|
457
509
|
outputFieldApiName?: string;
|
|
458
510
|
value?: FlowValue;
|
|
@@ -475,7 +527,7 @@ interface FlowUnsupportedNode extends FlowNodeBase {
|
|
|
475
527
|
[key: string]: unknown;
|
|
476
528
|
}
|
|
477
529
|
/**
|
|
478
|
-
* §5.
|
|
530
|
+
* §5.14 — i tre tipi di step. `stepMuleSoft` non esiste in questo sistema
|
|
479
531
|
* (`ELEMENT_NOT_SUPPORTED`); l'elenco autoritativo e' il dizionario `stageStepTypes`.
|
|
480
532
|
*/
|
|
481
533
|
type FlowStageStepActionType = 'stepBackground' | 'stepInteractive' | 'stepApproval' | string;
|
|
@@ -487,7 +539,7 @@ interface FlowStageStepAssignee {
|
|
|
487
539
|
/** Il nome di un *evaluation flow* che decide una condizione di ingresso o di uscita. */
|
|
488
540
|
type FlowStageStepConditionActionType = 'EvaluationFlow' | string;
|
|
489
541
|
/**
|
|
490
|
-
* §5.
|
|
542
|
+
* §5.14 — uno step di uno stage.
|
|
491
543
|
*
|
|
492
544
|
* Due cose che non si vedono dal tipo:
|
|
493
545
|
* - gli step **non hanno un ordine di esecuzione**: parte quello le cui `entryConditions`
|
|
@@ -510,9 +562,9 @@ interface FlowStageStep {
|
|
|
510
562
|
assignees?: FlowStageStepAssignee[];
|
|
511
563
|
/** `"0"` o `"1"`: il modello lo porta come stringa. */
|
|
512
564
|
requiresMultiMemberApproval?: string;
|
|
513
|
-
/** *Se* lo step si applica: se non si avverano, viene saltato (§5.
|
|
565
|
+
/** *Se* lo step si applica: se non si avverano, viene saltato (§5.14). */
|
|
514
566
|
entryConditions?: FlowCondition[];
|
|
515
|
-
/** *Quando* lo step libera lo stage: se restano false, lo stage va in stallo (§5.
|
|
567
|
+
/** *Quando* lo step libera lo stage: se restano false, lo stage va in stallo (§5.14). */
|
|
516
568
|
exitConditions?: FlowCondition[];
|
|
517
569
|
/** Evaluation flow che decide l'ingresso: deve restituire `isOrchestrationConditionMet`. */
|
|
518
570
|
entryActionName?: string;
|
|
@@ -520,7 +572,7 @@ interface FlowStageStep {
|
|
|
520
572
|
exitActionName?: string;
|
|
521
573
|
exitActionType?: FlowStageStepConditionActionType;
|
|
522
574
|
inputParameters?: FlowInputParameter[];
|
|
523
|
-
/** `assignToReference` e' facoltativo: l'output e' già referenziabile (§5.
|
|
575
|
+
/** `assignToReference` e' facoltativo: l'output e' già referenziabile (§5.14). */
|
|
524
576
|
outputParameters?: FlowOutputParameter[];
|
|
525
577
|
/** `true` → usa `outputConfigParams` come output finti, senza eseguire lo step. */
|
|
526
578
|
debugSimulateStep?: boolean;
|
|
@@ -531,7 +583,7 @@ interface FlowOrchestratedStage extends FlowNodeBase {
|
|
|
531
583
|
connector?: FlowConnector;
|
|
532
584
|
/**
|
|
533
585
|
* **Non** e' un ramo di guasto: e' il ramo percorso quando uno step viene rifiutato.
|
|
534
|
-
* Senza, un rifiuto fa fallire l'interview (§5.
|
|
586
|
+
* Senza, un rifiuto fa fallire l'interview (§5.14).
|
|
535
587
|
*/
|
|
536
588
|
faultConnector?: FlowConnector;
|
|
537
589
|
}
|
|
@@ -684,7 +736,7 @@ interface FlowComparisonOperatorEntry extends FlowDictionaryEntry {
|
|
|
684
736
|
/** Tipi a cui l'operatore si applica; vuoto o assente = qualunque tipo. */
|
|
685
737
|
appliesTo?: FlowDataType[] | null;
|
|
686
738
|
}
|
|
687
|
-
/** §5.
|
|
739
|
+
/** §5.3 — operatore di assegnazione. */
|
|
688
740
|
interface FlowAssignmentOperatorEntry extends FlowDictionaryEntry {
|
|
689
741
|
/** Ha senso solo su destinazioni collection; altrove e' un avviso. */
|
|
690
742
|
expectsCollection?: boolean;
|
|
@@ -707,7 +759,7 @@ interface FlowGlobalVariableEntry extends FlowDictionaryEntry {
|
|
|
707
759
|
requiresRecordTrigger?: boolean;
|
|
708
760
|
}
|
|
709
761
|
/**
|
|
710
|
-
* §5.
|
|
762
|
+
* §5.14 — i tipi di step di uno stage di orchestrazione (`stageStepTypes`).
|
|
711
763
|
* Le colonne dicono cosa il tipo pretende: senza, l'editor dovrebbe cablare i tre nomi.
|
|
712
764
|
*/
|
|
713
765
|
interface FlowStageStepTypeEntry extends FlowDictionaryEntry {
|
|
@@ -804,14 +856,14 @@ interface FlowFieldDescription {
|
|
|
804
856
|
/**
|
|
805
857
|
* `false` → non si puo' filtrare su questo campo. Non e' un dettaglio: la chiave di
|
|
806
858
|
* un'entita' con chiave composta puo' essere **non filtrabile** (porta la forma canonica
|
|
807
|
-
* della chiave), e il filtro «per identificativo» va scritto una colonna alla volta (§5.
|
|
859
|
+
* della chiave), e il filtro «per identificativo» va scritto una colonna alla volta (§5.8).
|
|
808
860
|
*/
|
|
809
861
|
isFilterable?: boolean;
|
|
810
862
|
isSortable?: boolean;
|
|
811
|
-
/** Aggiornabile da un Update: altrimenti `FIELD_NOT_UPDATEABLE` (§5.
|
|
863
|
+
/** Aggiornabile da un Update: altrimenti `FIELD_NOT_UPDATEABLE` (§5.8). */
|
|
812
864
|
isUpdateable?: boolean;
|
|
813
865
|
/**
|
|
814
|
-
* Valorizzabile da un Create: altrimenti `FIELD_NOT_CREATEABLE` (§5.
|
|
866
|
+
* Valorizzabile da un Create: altrimenti `FIELD_NOT_CREATEABLE` (§5.8). **Non** e' lo stesso
|
|
815
867
|
* insieme di `isUpdateable` — la colonna di una chiave naturale la scrive chi crea il record
|
|
816
868
|
* e non si cambia dopo, un identificativo generato dal database e' l'opposto.
|
|
817
869
|
*/
|
|
@@ -904,7 +956,7 @@ interface FlowCatalogEntry {
|
|
|
904
956
|
}
|
|
905
957
|
/**
|
|
906
958
|
* Parametro dichiarato da un'action, uno script o un form.
|
|
907
|
-
* Con il catalogo popolato un parametro inesistente e' un **errore** (§5.
|
|
959
|
+
* Con il catalogo popolato un parametro inesistente e' un **errore** (§5.9).
|
|
908
960
|
*/
|
|
909
961
|
interface FlowCatalogParameter {
|
|
910
962
|
name: string;
|
|
@@ -1163,11 +1215,11 @@ interface FlowPendingScreen {
|
|
|
1163
1215
|
canPause?: boolean;
|
|
1164
1216
|
}
|
|
1165
1217
|
/**
|
|
1166
|
-
* §5.
|
|
1218
|
+
* §5.14 — lo stato che un assegnatario comunica concludendo uno step.
|
|
1167
1219
|
* `Pending` non e' accettato in scrittura: e' `INVALID_REQUEST`.
|
|
1168
1220
|
*/
|
|
1169
1221
|
type FlowStageStepStatus = 'Completed' | 'Rejected' | 'Cancelled' | 'Pending' | string;
|
|
1170
|
-
/** Lo stato di uno step, come lo riporta l'ispezione di una sospesa (§5.
|
|
1222
|
+
/** Lo stato di uno step, come lo riporta l'ispezione di una sospesa (§5.14, §6.5). */
|
|
1171
1223
|
interface FlowStageStepState {
|
|
1172
1224
|
stepName?: string;
|
|
1173
1225
|
label?: string | null;
|
|
@@ -1207,7 +1259,7 @@ interface FlowInterviewResult {
|
|
|
1207
1259
|
*/
|
|
1208
1260
|
isWaitingForEvent?: boolean;
|
|
1209
1261
|
isWaitingForStageStep?: boolean;
|
|
1210
|
-
/** Con `isWaitingForStageStep`: lo stato di ogni step dello stage corrente (§5.
|
|
1262
|
+
/** Con `isWaitingForStageStep`: lo stato di ogni step dello stage corrente (§5.14). */
|
|
1211
1263
|
stageSteps?: FlowStageStepState[];
|
|
1212
1264
|
isSuccess?: boolean;
|
|
1213
1265
|
}
|
|
@@ -1229,7 +1281,7 @@ interface FlowResumeRequest {
|
|
|
1229
1281
|
debug?: boolean;
|
|
1230
1282
|
}
|
|
1231
1283
|
/**
|
|
1232
|
-
* §5.
|
|
1284
|
+
* §5.14 — `POST /interviews/{key}/stage-step`: un assegnatario conclude uno step.
|
|
1233
1285
|
* Se lo stage si sospende di nuovo, la risposta porta una `interviewKey` **nuova** e la
|
|
1234
1286
|
* vecchia non e' piu' valida.
|
|
1235
1287
|
*/
|
|
@@ -1407,7 +1459,7 @@ declare abstract class FlowBuilderApi {
|
|
|
1407
1459
|
* `POST /flows/references/writable` — le variabili **piu' le globali assegnabili**, per i
|
|
1408
1460
|
* campi di destinazione. Le globali assegnabili sono **due**, `$Flow.CurrentStage` e
|
|
1409
1461
|
* `$Flow.ActiveStages`: quelle dell'host sono sempre di sola lettura e il catalogo non ha un
|
|
1410
|
-
* flag per dichiararne una scrivibile (§5.
|
|
1462
|
+
* flag per dichiararne una scrivibile (§5.3). La primitiva le comprende già, l'editor non le
|
|
1411
1463
|
* aggiunge. Restano fuori i campi di `$Record`, che dipendono dallo schema: quelli arrivano da
|
|
1412
1464
|
* `listFields(object, 'updateable')` (§6.4).
|
|
1413
1465
|
*
|
|
@@ -1509,7 +1561,7 @@ declare abstract class FlowBuilderApi {
|
|
|
1509
1561
|
abstract listEvents(): Promise<FlowCatalogEntry[]>;
|
|
1510
1562
|
/**
|
|
1511
1563
|
* `GET /flows/subflow-candidates?excluding=` — solo i flow con una versione attiva,
|
|
1512
|
-
* escluso quello corrente (§5.
|
|
1564
|
+
* escluso quello corrente (§5.10).
|
|
1513
1565
|
*/
|
|
1514
1566
|
abstract listSubflowCandidates(excluding?: string): Promise<FlowSummary[]>;
|
|
1515
1567
|
/**
|
|
@@ -1523,14 +1575,14 @@ declare abstract class FlowBuilderApi {
|
|
|
1523
1575
|
/** `POST /interviews/resume` — riprende un'esecuzione in pausa. */
|
|
1524
1576
|
resumeInterview(request: FlowResumeRequest): Promise<FlowInterviewResult>;
|
|
1525
1577
|
/**
|
|
1526
|
-
* `POST /interviews/{key}/stage-step` — un assegnatario conclude uno step (§5.
|
|
1578
|
+
* `POST /interviews/{key}/stage-step` — un assegnatario conclude uno step (§5.14).
|
|
1527
1579
|
* Se lo stage si sospende di nuovo, la risposta porta una `interviewKey` **nuova**: la
|
|
1528
1580
|
* vecchia non e' piu' valida e va sostituita, non conservata.
|
|
1529
1581
|
*/
|
|
1530
1582
|
completeStageStep(request: FlowStageStepRequest): Promise<FlowInterviewResult>;
|
|
1531
1583
|
/**
|
|
1532
1584
|
* `GET /interviews/{key}` — ispeziona una sospesa senza consumarla.
|
|
1533
|
-
* Con `isWaitingForStageStep` porta `stageSteps` con lo stato di ognuno (§5.
|
|
1585
|
+
* Con `isWaitingForStageStep` porta `stageSteps` con lo stato di ognuno (§5.14).
|
|
1534
1586
|
*/
|
|
1535
1587
|
inspectInterview(interviewKey: string): Promise<FlowInterviewResult>;
|
|
1536
1588
|
/** `DELETE /interviews/{key}` — abbandona. */
|
|
@@ -1684,7 +1736,7 @@ interface FlowOutlet {
|
|
|
1684
1736
|
*
|
|
1685
1737
|
* Vale sui soli elementi che possono fallire (Record*, ActionCall, ScriptCall, Wait):
|
|
1686
1738
|
* il `faultConnector` di un `OrchestratedStage` porta `kind: 'Fault'` ma e' il ramo
|
|
1687
|
-
* dello **step rifiutato** (§5.
|
|
1739
|
+
* dello **step rifiutato** (§5.14), non un ramo di guasto, e la §7 non lo comprende.
|
|
1688
1740
|
*/
|
|
1689
1741
|
isFaultRecovery?: boolean;
|
|
1690
1742
|
read(node: FlowAnyNode): FlowConnector | undefined;
|
|
@@ -1721,7 +1773,7 @@ declare const TYPES_WITH_AUTOMATIC_OUTPUT: ReadonlySet<string>;
|
|
|
1721
1773
|
*/
|
|
1722
1774
|
declare const FLOW_ELEMENT_ICONS: Record<string, string>;
|
|
1723
1775
|
/**
|
|
1724
|
-
* Il glifo delle varianti (§5.
|
|
1776
|
+
* Il glifo delle varianti (§5.6): due voci di palette dello stesso tipo con lo stesso simbolo
|
|
1725
1777
|
* si distinguerebbero solo dall'etichetta, e sulla palette il simbolo e' la prima cosa che si
|
|
1726
1778
|
* guarda. La chiave e' `tipo:variante`.
|
|
1727
1779
|
*/
|
|
@@ -1734,7 +1786,7 @@ declare const FLOW_ELEMENT_VARIANT_ICONS: Record<string, string>;
|
|
|
1734
1786
|
declare function elementIcon(type: string, label?: string, variant?: string): string;
|
|
1735
1787
|
|
|
1736
1788
|
/**
|
|
1737
|
-
* I tipi che sulla palette valgono per **piu' di una voce** — FRONTEND.md §5.
|
|
1789
|
+
* I tipi che sulla palette valgono per **piu' di una voce** — FRONTEND.md §5.6.
|
|
1738
1790
|
*
|
|
1739
1791
|
* Il Collection Processor e' un solo tipo di node con un discriminatore
|
|
1740
1792
|
* (`collectionProcessorType`: `Sort` o `Filter`), e i campi rilevanti cambiano con esso: un
|
|
@@ -1919,7 +1971,7 @@ declare function valuedFieldsOf(value: FlowValue | undefined | null): (keyof Flo
|
|
|
1919
1971
|
declare function valuedFieldOf(value: FlowValue | undefined | null): keyof FlowValue | undefined;
|
|
1920
1972
|
|
|
1921
1973
|
/**
|
|
1922
|
-
* Gli step di uno stage di orchestrazione — FRONTEND.md §5.
|
|
1974
|
+
* Gli step di uno stage di orchestrazione — FRONTEND.md §5.14.
|
|
1923
1975
|
*
|
|
1924
1976
|
* Tre regole del contratto che non si vedono guardando il tipo, e che qui stanno in un posto
|
|
1925
1977
|
* solo perche' le usano l'inspector, lo spazio dei nomi del documento e la validazione locale:
|
|
@@ -1939,14 +1991,14 @@ declare function stepsOf(stage: FlowOrchestratedStage | undefined): FlowStageSte
|
|
|
1939
1991
|
/**
|
|
1940
1992
|
* Il nome dello step il cui output un riferimento sta leggendo, se e' uno degli step passati.
|
|
1941
1993
|
* `undefined` quando il riferimento e' legittimo. Serve a impedire nell'editor la condizione
|
|
1942
|
-
* che referenzia l'output di un altro step (§5.
|
|
1994
|
+
* che referenzia l'output di un altro step (§5.14, punto 4): la strada corretta e' scrivere
|
|
1943
1995
|
* quel risultato in una variabile con `outputParameters.assignToReference` e condizionare
|
|
1944
1996
|
* su quella.
|
|
1945
1997
|
*/
|
|
1946
1998
|
declare function stageStepOutputReferenced(reference: string | undefined, steps: FlowStageStep[]): string | undefined;
|
|
1947
1999
|
/**
|
|
1948
2000
|
* L'unico output che il runtime legge da un evaluation flow di condizione. Dichiararne altri
|
|
1949
|
-
* e' `STAGE_ACTION_INVALID` (§5.
|
|
2001
|
+
* e' `STAGE_ACTION_INVALID` (§5.14, punto 7).
|
|
1950
2002
|
*/
|
|
1951
2003
|
declare const ORCHESTRATION_CONDITION_OUTPUT = "isOrchestrationConditionMet";
|
|
1952
2004
|
|
|
@@ -1993,6 +2045,18 @@ declare function allFieldsOf(screen: FlowDynamicScreen | undefined): FlowScreenF
|
|
|
1993
2045
|
* Chi vuole i **soli** riferimenti proponibili usa `isFieldResource`.
|
|
1994
2046
|
*/
|
|
1995
2047
|
declare function screenFieldNames(definition: FlowDefinition | undefined): string[];
|
|
2048
|
+
/**
|
|
2049
|
+
* §3.3, §5.2 — i nomi delle **screen action** di tutti gli screen dinamici del documento.
|
|
2050
|
+
*
|
|
2051
|
+
* Stanno nello spazio dei nomi comune per la stessa ragione dei campi e degli step: con
|
|
2052
|
+
* `storeOutputAutomatically` il nome dell'action e' la **radice** di un riferimento (`Cerca.nome`), e
|
|
2053
|
+
* un'omonimia con una variabile — o con una `Structure` chiamata `Cerca` — renderebbe quel riferimento
|
|
2054
|
+
* ambiguo. Quindi entrano in `usedNames` e un omonimo e' `NAME_DUPLICATED`.
|
|
2055
|
+
*
|
|
2056
|
+
* Ci entrano **tutte**, anche senza output automatico: il nome e' unico o non lo e', e farlo dipendere
|
|
2057
|
+
* da un flag significherebbe che accendere quel flag fa comparire un errore altrove.
|
|
2058
|
+
*/
|
|
2059
|
+
declare function screenActionNames(definition: FlowDefinition | undefined): string[];
|
|
1996
2060
|
/**
|
|
1997
2061
|
* §5.2 — il campo e' una risorsa del flow (`kind: "ScreenField"`), quindi referenziabile
|
|
1998
2062
|
* per nome ovunque e **di sola lettura**.
|
|
@@ -2127,7 +2191,7 @@ declare class FlowDictionaryStore {
|
|
|
2127
2191
|
readonly paletteCategories: _angular_core.Signal<string[]>;
|
|
2128
2192
|
elementType(value: string): FlowElementTypeEntry | undefined;
|
|
2129
2193
|
/**
|
|
2130
|
-
* Le varianti di un tipo, cioe' i valori del suo discriminatore (§5.
|
|
2194
|
+
* Le varianti di un tipo, cioe' i valori del suo discriminatore (§5.6). L'unico oggi e' il
|
|
2131
2195
|
* Collection Processor. Elenco vuoto = tipo senza varianti, **oppure** dizionario non
|
|
2132
2196
|
* disponibile: in entrambi i casi la palette mostra una voce sola, che e' l'unica cosa
|
|
2133
2197
|
* onesta da fare quando non si sa quali varianti esistano.
|
|
@@ -2167,11 +2231,11 @@ declare class FlowDictionaryStore {
|
|
|
2167
2231
|
isGlobalScopeVerifiable(scope: string | undefined | null): boolean;
|
|
2168
2232
|
/** I percorsi noti di uno scope, già prefissati: `$User.Email`. */
|
|
2169
2233
|
globalPathsOf(scope: string | undefined | null): string[];
|
|
2170
|
-
/** §5.
|
|
2234
|
+
/** §5.14 — la voce di `stageStepTypes` di un `actionType`. */
|
|
2171
2235
|
stageStepType(value: string | undefined | null): FlowStageStepTypeEntry | undefined;
|
|
2172
2236
|
/** `stepBackground` vuole `actionName`; il fallback serve se il dizionario non lo dichiara. */
|
|
2173
2237
|
stageStepRequiresActionName(actionType: string | undefined | null): boolean;
|
|
2174
|
-
/** `stepInteractive` e `stepApproval` vogliono gli assegnatari (§5.
|
|
2238
|
+
/** `stepInteractive` e `stepApproval` vogliono gli assegnatari (§5.14). */
|
|
2175
2239
|
stageStepRequiresAssignees(actionType: string | undefined | null): boolean;
|
|
2176
2240
|
dataType(value: string | undefined | null): FlowDataTypeEntry | undefined;
|
|
2177
2241
|
/** §4.6, §4.7 — `Object`, `Enum` e `Structure` richiedono `objectType`. */
|
|
@@ -2282,7 +2346,7 @@ declare class FlowCatalogStore {
|
|
|
2282
2346
|
}
|
|
2283
2347
|
|
|
2284
2348
|
/**
|
|
2285
|
-
* Navigazione dei percorsi puntati — FRONTEND.md §4.4, §4.7, §4.7.1, §5.2, §5.
|
|
2349
|
+
* Navigazione dei percorsi puntati — FRONTEND.md §4.4, §4.7, §4.7.1, §5.2, §5.8.
|
|
2286
2350
|
*
|
|
2287
2351
|
* La specifica e' cambiata su questo punto: i percorsi con il punto **si verificano**. Un percorso
|
|
2288
2352
|
* di relazione (`Cliente.Citta`) si naviga un segmento alla volta e l'ultimo si verifica come un
|
|
@@ -2305,7 +2369,7 @@ declare class FlowCatalogStore {
|
|
|
2305
2369
|
* - **scrivibile** non vuol dire la stessa cosa nei due mondi: un membro porta il proprio
|
|
2306
2370
|
* `isWritable`, un campo no — fuori da un Create o da un Update il contesto non c'e', quindi
|
|
2307
2371
|
* basta che sia `isCreateable` **oppure** `isUpdateable`, e un campo che non e' ne' l'uno ne'
|
|
2308
|
-
* l'altro e' `TARGET_NOT_WRITABLE` in qualunque contesto (§5.
|
|
2372
|
+
* l'altro e' `TARGET_NOT_WRITABLE` in qualunque contesto (§5.8).
|
|
2309
2373
|
*/
|
|
2310
2374
|
|
|
2311
2375
|
/** Una tappa navigabile: un'entita' dello schema, oppure una classe (§4.7). */
|
|
@@ -2534,12 +2598,15 @@ declare class FlowDocumentStore {
|
|
|
2534
2598
|
readonly nodeByName: _angular_core.Signal<Map<string, FlowNodeRef>>;
|
|
2535
2599
|
readonly resources: _angular_core.Signal<FlowResourceRef[]>;
|
|
2536
2600
|
/**
|
|
2537
|
-
* §3.3 — l'insieme dei nomi già usati
|
|
2538
|
-
*
|
|
2539
|
-
*
|
|
2540
|
-
*
|
|
2541
|
-
*
|
|
2542
|
-
*
|
|
2601
|
+
* §3.3 — l'insieme dei nomi già usati, che e' **uno solo**: node, risorse e le **tre** cose che non
|
|
2602
|
+
* sono ne' l'uno ne' l'altro ma il cui nome e' la radice di un riferimento — step di orchestrazione,
|
|
2603
|
+
* campi di screen dinamico e screen action.
|
|
2604
|
+
*
|
|
2605
|
+
* Il controllo di unicita' che guarda solo le variabili lascia passare una variabile omonima di un
|
|
2606
|
+
* node (§13.5); quello che dimentica gli step lascia passare uno step omonimo di una variabile;
|
|
2607
|
+
* quello che dimentica i campi o le action lascia passare un omonimo che e' `NAME_DUPLICATED` come
|
|
2608
|
+
* gli altri — e lì il danno e' peggiore, perche' quel nome **e' un riferimento**: un campo si legge
|
|
2609
|
+
* per nome, e il nome di un'action e' la radice dei suoi output automatici (`Cerca.nome`, §5.2).
|
|
2543
2610
|
*/
|
|
2544
2611
|
readonly usedNames: _angular_core.Signal<string[]>;
|
|
2545
2612
|
/** Gli archi derivati dal documento, Start incluso. */
|
|
@@ -2854,6 +2921,27 @@ declare class FlowEditorSession {
|
|
|
2854
2921
|
private static readonly warned;
|
|
2855
2922
|
private static warnOnce;
|
|
2856
2923
|
private applySaveResult;
|
|
2924
|
+
/**
|
|
2925
|
+
* Duplica: scrive il flow **sotto un altro nome** e sposta la sessione sulla copia
|
|
2926
|
+
* (§6.2, «Duplica»).
|
|
2927
|
+
*
|
|
2928
|
+
* Due strade, e la differenza non e' un dettaglio di implementazione: `cloneFlow` copia cio'
|
|
2929
|
+
* che il backend ha **salvato**, quindi su un documento con modifiche in corso la copia
|
|
2930
|
+
* nascerebbe senza quelle modifiche — senza nessun errore, e chi duplica per mettere al
|
|
2931
|
+
* sicuro cio' che ha appena scritto si ritroverebbe la versione vecchia. Per questo la
|
|
2932
|
+
* primitiva si usa solo su un documento pulito; altrimenti la copia si crea con `createFlow`
|
|
2933
|
+
* mandando il documento in mano. La stessa strada e' il ripiego quando `cloneFlow` non c'e':
|
|
2934
|
+
* e' opzionale, e `createFlow` no (§10).
|
|
2935
|
+
*
|
|
2936
|
+
* La sessione si sposta sulla copia perche' e' cio' che «salva con nome» significa: restare
|
|
2937
|
+
* sull'originale farebbe finire il salvataggio successivo nel flow sbagliato. Chi monta il
|
|
2938
|
+
* builder lo scopre dall'output `saved`, il cui `flowName` e' quello nuovo.
|
|
2939
|
+
*/
|
|
2940
|
+
saveAs(targetFlowName: string, options?: {
|
|
2941
|
+
label?: string;
|
|
2942
|
+
}): Promise<FlowSaveResult>;
|
|
2943
|
+
/** La copia creata dal documento in lavorazione, modifiche non salvate comprese. */
|
|
2944
|
+
private createCopy;
|
|
2857
2945
|
/** Copia la versione corrente in una nuova bozza (§8.1): il comando delle versioni chiuse. */
|
|
2858
2946
|
createNewVersion(): Promise<FlowSaveResult>;
|
|
2859
2947
|
/**
|
|
@@ -3014,7 +3102,7 @@ declare class FlowCanvasComponent {
|
|
|
3014
3102
|
/** Rilascio di un elemento dalla palette: tipo + punto nel sistema del canvas. */
|
|
3015
3103
|
readonly elementDropped: _angular_core.OutputEmitterRef<{
|
|
3016
3104
|
type: FlowElementType;
|
|
3017
|
-
/** La variante scelta sulla palette, dove il tipo ne ha (§5.
|
|
3105
|
+
/** La variante scelta sulla palette, dove il tipo ne ha (§5.6). */
|
|
3018
3106
|
variant?: string;
|
|
3019
3107
|
x: number;
|
|
3020
3108
|
y: number;
|
|
@@ -3125,7 +3213,7 @@ declare class FlowCanvasComponent {
|
|
|
3125
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>;
|
|
3126
3214
|
}
|
|
3127
3215
|
|
|
3128
|
-
/** Il gesto scelto sulla palette: un tipo e, dove esiste, la sua variante (§5.
|
|
3216
|
+
/** Il gesto scelto sulla palette: un tipo e, dove esiste, la sua variante (§5.6). */
|
|
3129
3217
|
interface FlowPalettePick {
|
|
3130
3218
|
type: FlowElementType;
|
|
3131
3219
|
variant?: string;
|
|
@@ -3179,7 +3267,7 @@ declare class ElementPaletteComponent {
|
|
|
3179
3267
|
/**
|
|
3180
3268
|
* L'etichetta del ramo di fault, presa dalla mappa delle uscite invece di scrivere «ramo di
|
|
3181
3269
|
* errore» per tutti: su uno stage di orchestrazione quel ramo **non** e' un guasto, e' lo step
|
|
3182
|
-
* rifiutato (§5.
|
|
3270
|
+
* rifiutato (§5.14). Un tipo nuovo eredita l'etichetta giusta senza toccare la palette.
|
|
3183
3271
|
*/
|
|
3184
3272
|
faultLabel(item: PaletteItem): string | null;
|
|
3185
3273
|
categoryClass(category: string): string;
|
|
@@ -3210,6 +3298,18 @@ declare class ReferencePickerComponent {
|
|
|
3210
3298
|
* `WasVisited` e `HasError` (§4.3).
|
|
3211
3299
|
*/
|
|
3212
3300
|
readonly elementsOnly: _angular_core.InputSignal<boolean>;
|
|
3301
|
+
/**
|
|
3302
|
+
* Destinazioni in piu' rispetto a cio' che la primitiva restituisce, e oggi ce n'e' **un solo**
|
|
3303
|
+
* chiamante: l'`assignToReference` di una **screen action**, che accetta i campi della schermata
|
|
3304
|
+
* che si sta modificando (§5.2). Altrove quei campi sono di sola lettura, e
|
|
3305
|
+
* `POST /flows/references/writable` continua a escluderli — giustamente: un Assignment che ci
|
|
3306
|
+
* scrive resta `TARGET_NOT_WRITABLE`. Non e' quindi una scorciatoia per aggiungere riferimenti che
|
|
3307
|
+
* il backend non conosce: e' l'unico punto in cui la regola del contratto e' diversa.
|
|
3308
|
+
*
|
|
3309
|
+
* Entrano **sia** fra le proposte **sia** fra le radici: senza le radici un nome scritto a mano
|
|
3310
|
+
* verrebbe accusato di non esistere.
|
|
3311
|
+
*/
|
|
3312
|
+
readonly extraReferences: _angular_core.InputSignal<FlowReference[]>;
|
|
3213
3313
|
readonly valueChange: _angular_core.OutputEmitterRef<string | undefined>;
|
|
3214
3314
|
/**
|
|
3215
3315
|
* L'elenco come arriva dalla primitiva, **senza** il filtro di tipo.
|
|
@@ -3274,10 +3374,10 @@ declare class ReferencePickerComponent {
|
|
|
3274
3374
|
/**
|
|
3275
3375
|
* I segmenti come riferimenti navigati: `Richiesta.Cliente.Email`, col tipo del segmento. Un
|
|
3276
3376
|
* segmento di sola lettura non si propone in un campo di destinazione, a meno che da lì il
|
|
3277
|
-
* percorso continui: `Richiesta.Cliente` non si assegna, ma `Richiesta.Cliente.Email` sì (§5.
|
|
3377
|
+
* percorso continui: `Richiesta.Cliente` non si assegna, ma `Richiesta.Cliente.Email` sì (§5.8).
|
|
3278
3378
|
*/
|
|
3279
3379
|
/**
|
|
3280
|
-
* §5.
|
|
3380
|
+
* §5.3 — dentro una globale dell'host **niente** e' scrivibile, per quanto il membro si dichiari
|
|
3281
3381
|
* tale: le globali le risolve un componente che non ha modo di scriverle, e proporle come
|
|
3282
3382
|
* destinazione farebbe attivare un flow che poi fallisce davanti all'utente. L'eccezione sono i
|
|
3283
3383
|
* campi del record che innesca, che si assegnano (§4.1).
|
|
@@ -3332,7 +3432,7 @@ declare class ReferencePickerComponent {
|
|
|
3332
3432
|
* percorso inesistente di uno scope che i percorsi li dichiara, perche' lì il backend
|
|
3333
3433
|
* risponderebbe `GLOBAL_UNKNOWN`.
|
|
3334
3434
|
*/
|
|
3335
|
-
readonly valueState: _angular_core.Signal<"
|
|
3435
|
+
readonly valueState: _angular_core.Signal<"empty" | "unknown" | "member" | "known" | "navigated" | "host" | "containerRoot" | "memberUnknown" | "memberNotWritable" | "pathUnverified" | "globalPathUntyped" | "globalPathInvalid">;
|
|
3336
3436
|
/** Le parole cambiano con la tappa: un campo di un'entita' non e' un membro di una classe. */
|
|
3337
3437
|
private readonly tailIsObject;
|
|
3338
3438
|
private readonly tailContainer;
|
|
@@ -3370,7 +3470,7 @@ declare class ReferencePickerComponent {
|
|
|
3370
3470
|
clear(): void;
|
|
3371
3471
|
describe(reference: FlowReference): string;
|
|
3372
3472
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ReferencePickerComponent, never>;
|
|
3373
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ReferencePickerComponent, "fb-reference-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "dataType": { "alias": "dataType"; "required": false; "isSignal": true; }; "isCollection": { "alias": "isCollection"; "required": false; "isSignal": true; }; "objectType": { "alias": "objectType"; "required": false; "isSignal": true; }; "writableOnly": { "alias": "writableOnly"; "required": false; "isSignal": true; }; "elementsOnly": { "alias": "elementsOnly"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
3473
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ReferencePickerComponent, "fb-reference-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "dataType": { "alias": "dataType"; "required": false; "isSignal": true; }; "isCollection": { "alias": "isCollection"; "required": false; "isSignal": true; }; "objectType": { "alias": "objectType"; "required": false; "isSignal": true; }; "writableOnly": { "alias": "writableOnly"; "required": false; "isSignal": true; }; "elementsOnly": { "alias": "elementsOnly"; "required": false; "isSignal": true; }; "extraReferences": { "alias": "extraReferences"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
3374
3474
|
}
|
|
3375
3475
|
|
|
3376
3476
|
declare class ObjectPickerComponent {
|
|
@@ -3607,7 +3707,7 @@ declare class StructureMemberPickerComponent {
|
|
|
3607
3707
|
/**
|
|
3608
3708
|
* Un segmento che esiste ma non e' scrivibile, scelto dove serve una destinazione: capita su un
|
|
3609
3709
|
* documento scritto altrove, e va detto qui invece di lasciarlo scoprire dall'attivazione. Su un
|
|
3610
|
-
* campo di record "scrivibile" vuol dire `createable` **oppure** `updateable` (§5.
|
|
3710
|
+
* campo di record "scrivibile" vuol dire `createable` **oppure** `updateable` (§5.8).
|
|
3611
3711
|
*/
|
|
3612
3712
|
readonly isNotWritable: _angular_core.Signal<boolean>;
|
|
3613
3713
|
readonly notWritableMessage: _angular_core.Signal<"Questo campo non si scrive ne’ creando ne’ aggiornando un record: assegnarlo e’ TARGET_NOT_WRITABLE." | "Questo membro e’ calcolato: si legge, ma assegnarlo e’ TARGET_NOT_WRITABLE.">;
|
|
@@ -3848,7 +3948,7 @@ declare class ConditionEditorComponent {
|
|
|
3848
3948
|
readonly allowFormula: _angular_core.InputSignal<boolean>;
|
|
3849
3949
|
/**
|
|
3850
3950
|
* `false` dove il modello porta **solo** la lista di condizioni, senza un campo per la
|
|
3851
|
-
* logica: gli `entryConditions` / `exitConditions` di uno step di orchestrazione (§5.
|
|
3951
|
+
* logica: gli `entryConditions` / `exitConditions` di uno step di orchestrazione (§5.14).
|
|
3852
3952
|
* Mostrare i pulsanti della logica lì scriverebbe un campo che il contratto non prevede.
|
|
3853
3953
|
*/
|
|
3854
3954
|
readonly allowLogic: _angular_core.InputSignal<boolean>;
|
|
@@ -3889,7 +3989,7 @@ declare class ConditionEditorComponent {
|
|
|
3889
3989
|
*/
|
|
3890
3990
|
hasTypeMismatch(condition: FlowCondition): boolean;
|
|
3891
3991
|
typeMismatchMessage(condition: FlowCondition): string;
|
|
3892
|
-
readonly logicMode: _angular_core.Signal<"and" | "or" | "
|
|
3992
|
+
readonly logicMode: _angular_core.Signal<"and" | "or" | "custom" | "formula">;
|
|
3893
3993
|
readonly customLogic: _angular_core.Signal<string>;
|
|
3894
3994
|
/** Feedback immediato sull'espressione: la verita' resta della validazione backend. */
|
|
3895
3995
|
readonly customLogicError: _angular_core.Signal<string | null>;
|
|
@@ -3954,12 +4054,12 @@ declare class RecordFilterEditorComponent {
|
|
|
3954
4054
|
/**
|
|
3955
4055
|
* Avviso da mostrare quando la lista e' vuota. Un Delete senza filtri e' un **errore**,
|
|
3956
4056
|
* un Update senza filtri e' solo un avviso — ma aggiorna tutti i record dell'entita'
|
|
3957
|
-
* (§5.
|
|
4057
|
+
* (§5.8, §13.10).
|
|
3958
4058
|
*/
|
|
3959
4059
|
readonly emptyWarning: _angular_core.InputSignal<string | null>;
|
|
3960
4060
|
readonly emptyWarningSeverity: _angular_core.InputSignal<"error" | "warn">;
|
|
3961
4061
|
readonly changed: _angular_core.OutputEmitterRef<(holder: FilterHolder) => void>;
|
|
3962
|
-
/** Tutti i campi, filtrabili o no: serve solo a riconoscere le chiavi composte (§5.
|
|
4062
|
+
/** Tutti i campi, filtrabili o no: serve solo a riconoscere le chiavi composte (§5.8). */
|
|
3963
4063
|
private readonly allFields;
|
|
3964
4064
|
readonly filters: _angular_core.Signal<FlowRecordFilter[]>;
|
|
3965
4065
|
readonly operators: _angular_core.Signal<_esfaenza_flow_builder.FlowDictionaryEntry[]>;
|
|
@@ -3975,12 +4075,12 @@ declare class RecordFilterEditorComponent {
|
|
|
3975
4075
|
private readonly types;
|
|
3976
4076
|
constructor();
|
|
3977
4077
|
/**
|
|
3978
|
-
* §5.
|
|
4078
|
+
* §5.8 — l'identificativo esiste ma **non e' filtrabile**: e' il caso di una chiave composta,
|
|
3979
4079
|
* dove `Id` porta la forma canonica della chiave e le colonne filtrabili sono altre. Dirlo
|
|
3980
4080
|
* evita la ricerca di un campo che nell'elenco non c'e' e non ci sara'.
|
|
3981
4081
|
*/
|
|
3982
4082
|
readonly identifierNotFilterable: _angular_core.Signal<boolean>;
|
|
3983
|
-
readonly logicMode: _angular_core.Signal<"and" | "or" | "
|
|
4083
|
+
readonly logicMode: _angular_core.Signal<"and" | "or" | "custom" | "formula">;
|
|
3984
4084
|
readonly customLogic: _angular_core.Signal<string>;
|
|
3985
4085
|
readonly showEmptyWarning: _angular_core.Signal<boolean>;
|
|
3986
4086
|
addFilter(): void;
|
|
@@ -4023,6 +4123,12 @@ declare class ParameterEditorComponent {
|
|
|
4023
4123
|
readonly showOutputs: _angular_core.InputSignal<boolean>;
|
|
4024
4124
|
/** `true` → gli output vanno all'output automatico, e i parametri sono ignorati. */
|
|
4025
4125
|
readonly outputsDisabledReason: _angular_core.InputSignal<string | null>;
|
|
4126
|
+
/**
|
|
4127
|
+
* Destinazioni in piu' per `assignToReference`, oltre a quelle scrivibili. Serve alle **screen
|
|
4128
|
+
* action**, dove un output si assegna a un campo della schermata (§5.2): e' l'unico posto in cui
|
|
4129
|
+
* quei campi sono una destinazione, e per questo non e' un default ma un parametro del chiamante.
|
|
4130
|
+
*/
|
|
4131
|
+
readonly extraTargets: _angular_core.InputSignal<FlowReference[]>;
|
|
4026
4132
|
readonly changed: _angular_core.OutputEmitterRef<(holder: ParameterHolder) => void>;
|
|
4027
4133
|
readonly inputs: _angular_core.Signal<FlowInputParameter[]>;
|
|
4028
4134
|
readonly outputs: _angular_core.Signal<FlowOutputParameter[]>;
|
|
@@ -4051,7 +4157,7 @@ declare class ParameterEditorComponent {
|
|
|
4051
4157
|
setOutputName(index: number, name: string): void;
|
|
4052
4158
|
setOutputTarget(index: number, reference: string | undefined): void;
|
|
4053
4159
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ParameterEditorComponent, never>;
|
|
4054
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ParameterEditorComponent, "fb-parameter-editor", never, { "holder": { "alias": "holder"; "required": true; "isSignal": true; }; "catalogParameters": { "alias": "catalogParameters"; "required": false; "isSignal": true; }; "inputTitle": { "alias": "inputTitle"; "required": false; "isSignal": true; }; "outputTitle": { "alias": "outputTitle"; "required": false; "isSignal": true; }; "showInputs": { "alias": "showInputs"; "required": false; "isSignal": true; }; "showOutputs": { "alias": "showOutputs"; "required": false; "isSignal": true; }; "outputsDisabledReason": { "alias": "outputsDisabledReason"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
|
|
4160
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ParameterEditorComponent, "fb-parameter-editor", never, { "holder": { "alias": "holder"; "required": true; "isSignal": true; }; "catalogParameters": { "alias": "catalogParameters"; "required": false; "isSignal": true; }; "inputTitle": { "alias": "inputTitle"; "required": false; "isSignal": true; }; "outputTitle": { "alias": "outputTitle"; "required": false; "isSignal": true; }; "showInputs": { "alias": "showInputs"; "required": false; "isSignal": true; }; "showOutputs": { "alias": "showOutputs"; "required": false; "isSignal": true; }; "outputsDisabledReason": { "alias": "outputsDisabledReason"; "required": false; "isSignal": true; }; "extraTargets": { "alias": "extraTargets"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
|
|
4055
4161
|
}
|
|
4056
4162
|
|
|
4057
4163
|
interface FieldAssignmentHolder {
|
|
@@ -4061,7 +4167,7 @@ declare class FieldAssignmentEditorComponent {
|
|
|
4061
4167
|
private readonly catalog;
|
|
4062
4168
|
readonly holder: _angular_core.InputSignal<FieldAssignmentHolder>;
|
|
4063
4169
|
readonly object: _angular_core.InputSignal<string | undefined>;
|
|
4064
|
-
/** `createable` su un Create, `updateable` su un Update: lo decide il chiamante (§5.
|
|
4170
|
+
/** `createable` su un Create, `updateable` su un Update: lo decide il chiamante (§5.8). */
|
|
4065
4171
|
readonly usage: _angular_core.InputSignal<FlowFieldUsage>;
|
|
4066
4172
|
readonly title: _angular_core.InputSignal<string>;
|
|
4067
4173
|
readonly disabledReason: _angular_core.InputSignal<string | null>;
|
|
@@ -4161,6 +4267,13 @@ declare class ElementInspectorComponent {
|
|
|
4161
4267
|
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
4162
4268
|
readonly removeRequested: _angular_core.OutputEmitterRef<string>;
|
|
4163
4269
|
readonly duplicateRequested: _angular_core.OutputEmitterRef<string>;
|
|
4270
|
+
/**
|
|
4271
|
+
* Il nuovo nome, dopo la rinomina. La selezione dell'editor e' **il nome**: se non la
|
|
4272
|
+
* riportiamo sul nome nuovo, `selectedName` punta a un elemento che non esiste piu' e il
|
|
4273
|
+
* form del tipo — che sta dietro `@if (node())` — spariva, lasciando la dialog mezza vuota
|
|
4274
|
+
* finche' non la si chiudeva e riapriva.
|
|
4275
|
+
*/
|
|
4276
|
+
readonly renamed: _angular_core.OutputEmitterRef<string>;
|
|
4164
4277
|
readonly isStart: _angular_core.Signal<boolean>;
|
|
4165
4278
|
readonly reference: _angular_core.Signal<_esfaenza_flow_builder.FlowNodeRef | undefined>;
|
|
4166
4279
|
readonly node: _angular_core.Signal<FlowAnyNode | undefined>;
|
|
@@ -4196,7 +4309,7 @@ declare class ElementInspectorComponent {
|
|
|
4196
4309
|
y: number;
|
|
4197
4310
|
}>;
|
|
4198
4311
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ElementInspectorComponent, never>;
|
|
4199
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ElementInspectorComponent, "fb-element-inspector", never, { "selectedName": { "alias": "selectedName"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "removeRequested": "removeRequested"; "duplicateRequested": "duplicateRequested"; }, never, never, true, never>;
|
|
4312
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ElementInspectorComponent, "fb-element-inspector", never, { "selectedName": { "alias": "selectedName"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "removeRequested": "removeRequested"; "duplicateRequested": "duplicateRequested"; "renamed": "renamed"; }, never, never, true, never>;
|
|
4200
4313
|
}
|
|
4201
4314
|
|
|
4202
4315
|
declare class ElementDialogComponent {
|
|
@@ -4207,6 +4320,8 @@ declare class ElementDialogComponent {
|
|
|
4207
4320
|
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
4208
4321
|
readonly removeRequested: _angular_core.OutputEmitterRef<string>;
|
|
4209
4322
|
readonly duplicateRequested: _angular_core.OutputEmitterRef<string>;
|
|
4323
|
+
/** Il nuovo nome dopo una rinomina: la selezione dell'editor deve seguirlo. */
|
|
4324
|
+
readonly renamed: _angular_core.OutputEmitterRef<string>;
|
|
4210
4325
|
private readonly panel;
|
|
4211
4326
|
readonly isStart: _angular_core.Signal<boolean>;
|
|
4212
4327
|
private readonly reference;
|
|
@@ -4216,8 +4331,9 @@ declare class ElementDialogComponent {
|
|
|
4216
4331
|
close(): void;
|
|
4217
4332
|
onRemoveRequested(name: string): void;
|
|
4218
4333
|
onDuplicateRequested(name: string): void;
|
|
4334
|
+
onRenamed(name: string): void;
|
|
4219
4335
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ElementDialogComponent, never>;
|
|
4220
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ElementDialogComponent, "fb-element-dialog", never, { "selectedName": { "alias": "selectedName"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "removeRequested": "removeRequested"; "duplicateRequested": "duplicateRequested"; }, never, never, true, never>;
|
|
4336
|
+
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>;
|
|
4221
4337
|
}
|
|
4222
4338
|
|
|
4223
4339
|
declare class StartInspectorComponent {
|
|
@@ -4280,7 +4396,7 @@ declare class OrchestratedStageInspectorComponent extends NodeInspectorBase {
|
|
|
4280
4396
|
readonly conditionOutputName = "isOrchestrationConditionMet";
|
|
4281
4397
|
/**
|
|
4282
4398
|
* I flow proponibili come step in background o come evaluation flow. Una lista vuota
|
|
4283
|
-
* significa "non lo so": in quel caso il campo resta scrivibile a mano (§5.
|
|
4399
|
+
* significa "non lo so": in quel caso il campo resta scrivibile a mano (§5.10, §7).
|
|
4284
4400
|
*/
|
|
4285
4401
|
private readonly flowCandidates;
|
|
4286
4402
|
constructor();
|
|
@@ -4306,14 +4422,14 @@ declare class OrchestratedStageInspectorComponent extends NodeInspectorBase {
|
|
|
4306
4422
|
stepNameError(step: FlowStageStep): string | null;
|
|
4307
4423
|
/**
|
|
4308
4424
|
* Il nome dello step il cui output una condizione sta leggendo: e' irrisolvibile finche'
|
|
4309
|
-
* quello step non ha girato (§5.
|
|
4425
|
+
* quello step non ha girato (§5.14, punto 4). `undefined` quando va tutto bene.
|
|
4310
4426
|
*/
|
|
4311
4427
|
stepOutputInConditions(step: FlowStageStep): string | undefined;
|
|
4312
4428
|
/** Lo step tiene un output senza destinazione: e' lecito, ma vale la pena dirlo. */
|
|
4313
4429
|
hasSimulatedOutputs(step: FlowStageStep): boolean;
|
|
4314
4430
|
addStep(): void;
|
|
4315
4431
|
removeStep(index: number): void;
|
|
4316
|
-
/** Sposta lo step nell'ordine d'**esame**: non e' un ordine di esecuzione (§5.
|
|
4432
|
+
/** Sposta lo step nell'ordine d'**esame**: non e' un ordine di esecuzione (§5.14). */
|
|
4317
4433
|
moveStep(index: number, direction: -1 | 1): void;
|
|
4318
4434
|
private patchStep;
|
|
4319
4435
|
setStepLabel(index: number, label: string): void;
|
|
@@ -4346,7 +4462,7 @@ declare class OrchestratedStageInspectorComponent extends NodeInspectorBase {
|
|
|
4346
4462
|
setEntryActionName(index: number, actionName: string): void;
|
|
4347
4463
|
setExitActionName(index: number, actionName: string): void;
|
|
4348
4464
|
onParametersChanged(index: number, mutate: (holder: ParameterHolder) => void): void;
|
|
4349
|
-
/** Il ramo del rifiuto e' disegnato: senza, un rifiuto fa fallire l'interview (§5.
|
|
4465
|
+
/** Il ramo del rifiuto e' disegnato: senza, un rifiuto fa fallire l'interview (§5.14). */
|
|
4350
4466
|
readonly hasRejectionBranch: _angular_core.Signal<boolean>;
|
|
4351
4467
|
/** C'e' almeno uno step il cui rifiuto e' un esito previsto. */
|
|
4352
4468
|
readonly hasApprovalStep: _angular_core.Signal<boolean>;
|
|
@@ -4412,6 +4528,10 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
|
|
|
4412
4528
|
/** I tipi di enumerazione: dizionario chiuso, quindi `<select>` e non combo (§4.6). */
|
|
4413
4529
|
private readonly enumTypes;
|
|
4414
4530
|
constructor();
|
|
4531
|
+
/** Scarta la risposta di un tipo che non e' piu' quello scelto: la corsa e' fra risposte, non fra tipi. */
|
|
4532
|
+
private applyActions;
|
|
4533
|
+
/** Stessa regola per i parametri, che dipendono da tipo **e** nome dell'action. */
|
|
4534
|
+
private applyActionParameters;
|
|
4415
4535
|
readonly componentOptions: _angular_core.Signal<NamePickerOption[]>;
|
|
4416
4536
|
/**
|
|
4417
4537
|
* Le schermate che **non** sono anche componenti: una voce senza `formKind` vale `Any` e
|
|
@@ -4629,6 +4749,88 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
|
|
|
4629
4749
|
/** `ObjectProvided`: oggetto e campo si scrivono in un unico `<Oggetto>.<Campo>` (§5.2). */
|
|
4630
4750
|
setProvidedObject(value: string | undefined): void;
|
|
4631
4751
|
setProvidedField(value: string | undefined): void;
|
|
4752
|
+
readonly screenActions: _angular_core.Signal<FlowScreenAction[]>;
|
|
4753
|
+
readonly screenTriggers: _angular_core.Signal<FlowScreenTrigger[]>;
|
|
4754
|
+
/** Quale action e' aperta nel dettaglio; `null` = solo l'elenco. */
|
|
4755
|
+
private readonly actionSelection;
|
|
4756
|
+
readonly selectedActionIndex: _angular_core.Signal<number | null>;
|
|
4757
|
+
readonly selectedAction: _angular_core.Signal<FlowScreenAction | undefined>;
|
|
4758
|
+
private readonly actionTypes;
|
|
4759
|
+
private readonly actionsOfType;
|
|
4760
|
+
private readonly actionParameters;
|
|
4761
|
+
readonly actionTypeOptions: _angular_core.Signal<NamePickerOption[]>;
|
|
4762
|
+
readonly actionOptions: _angular_core.Signal<NamePickerOption[]>;
|
|
4763
|
+
readonly actionParameterCatalog: _angular_core.Signal<FlowCatalogParameter[]>;
|
|
4764
|
+
selectAction(index: number | null): void;
|
|
4765
|
+
/**
|
|
4766
|
+
* Le destinazioni **in piu'** per gli output di una screen action: i campi di **questa**
|
|
4767
|
+
* schermata. È l'unico posto in cui un campo di screen e' scrivibile (§5.2) —
|
|
4768
|
+
* `POST /flows/references/writable` continua a escluderlo, e giustamente: un Assignment che ci
|
|
4769
|
+
* scrive resta `TARGET_NOT_WRITABLE`. Quindi l'allargamento e' qui, non nel picker.
|
|
4770
|
+
*/
|
|
4771
|
+
readonly screenFieldTargets: _angular_core.Signal<FlowReference[]>;
|
|
4772
|
+
/** I campi che raccolgono un valore: gli unici che un'action possa riempire, e gli unici che innescano. */
|
|
4773
|
+
private valueFieldsOfScreen;
|
|
4774
|
+
/**
|
|
4775
|
+
* I campi proponibili come innesco. Sono **i campi di questa schermata**, non i riferimenti in
|
|
4776
|
+
* generale: un trigger che nomina altro e' `SCREEN_TRIGGER_FIELD_UNKNOWN` (§5.2).
|
|
4777
|
+
*/
|
|
4778
|
+
readonly triggerFieldOptions: _angular_core.Signal<NamePickerOption[]>;
|
|
4779
|
+
/** Le action **di questo screen**: un `screenActionName` fuori da qui e' `SCREEN_ACTION_UNKNOWN`. */
|
|
4780
|
+
readonly screenActionOptions: _angular_core.Signal<NamePickerOption[]>;
|
|
4781
|
+
/**
|
|
4782
|
+
* §5.2 — un'action senza `outputParameters` e senza `storeOutputAutomatically` viene invocata e
|
|
4783
|
+
* il suo risultato si perde: `SCREEN_ACTION_WITHOUT_OUTPUTS`, avviso.
|
|
4784
|
+
*/
|
|
4785
|
+
actionLosesResult(action: FlowScreenAction): boolean;
|
|
4786
|
+
/** §5.2 — nessuno la invoca: l'action e' scritta ma nessun trigger la cita. */
|
|
4787
|
+
actionHasNoTrigger(action: FlowScreenAction): boolean;
|
|
4788
|
+
/** §5.2 — senza campo e senza `initBehavior` il trigger non scattera' mai: `SCREEN_TRIGGER_WITHOUT_CAUSE`. */
|
|
4789
|
+
triggerHasNoCause(trigger: FlowScreenTrigger): boolean;
|
|
4790
|
+
/**
|
|
4791
|
+
* §5.2 — l'unico valore ammesso e' `runOnLoad`. Il `runOnRevisit` della specifica Salesforce e'
|
|
4792
|
+
* `SCREEN_TRIGGER_INIT_BEHAVIOR_UNKNOWN`, e vale la pena dirlo qui: chi arriva da quella
|
|
4793
|
+
* specifica lo scrive per abitudine.
|
|
4794
|
+
*/
|
|
4795
|
+
triggerInitIsUnknown(trigger: FlowScreenTrigger): boolean;
|
|
4796
|
+
/**
|
|
4797
|
+
* §3.3 — il nome dell'action, con lo **stesso** controllo del nome di uno step: la regexp e le
|
|
4798
|
+
* occorrenze in `usedNames`, che le action le comprende già. Una sola occorrenza e' questa action,
|
|
4799
|
+
* due sono un omonimo — e qui l'omonimia non e' formale, perche' con l'output automatico quel nome
|
|
4800
|
+
* e' la radice di `Cerca.nome`.
|
|
4801
|
+
*/
|
|
4802
|
+
actionNameError(action: FlowScreenAction): string | null;
|
|
4803
|
+
/** Il blocco condizioni di un trigger: mai `undefined`, altrimenti l'editor non si apre. */
|
|
4804
|
+
triggerConditions(trigger: FlowScreenTrigger): FlowConditionHolder;
|
|
4805
|
+
/**
|
|
4806
|
+
* Un'action nuova. Il nome sta nello spazio dei nomi **comune** (§3.3): con l'output automatico la
|
|
4807
|
+
* si legge come `<NomeAction>.<NomeOutput>`, e un omonimo di una variabile — o di una `Structure`
|
|
4808
|
+
* chiamata come lei — renderebbe ambiguo quel riferimento. `usedNames` le comprende già, quindi qui
|
|
4809
|
+
* non c'e' niente da aggiungere all'elenco.
|
|
4810
|
+
*/
|
|
4811
|
+
addScreenAction(): void;
|
|
4812
|
+
removeScreenAction(index: number): void;
|
|
4813
|
+
private patchAction;
|
|
4814
|
+
/**
|
|
4815
|
+
* Rinominare un'action riscrive i trigger che la citano: sono l'unico posto che la nomina, e
|
|
4816
|
+
* lasciarli indietro trasformerebbe una rinomina in `SCREEN_ACTION_UNKNOWN`.
|
|
4817
|
+
*/
|
|
4818
|
+
setActionName(index: number, value: string): void;
|
|
4819
|
+
/** Cambiare tipo cambia l'insieme delle action e dei loro parametri: com'e' su un elemento Action. */
|
|
4820
|
+
setActionType(index: number, value: string): void;
|
|
4821
|
+
setActionTarget(index: number, value: string): void;
|
|
4822
|
+
setActionStoreOutput(index: number, value: boolean): void;
|
|
4823
|
+
onActionParametersChanged(index: number, mutate: (holder: ParameterHolder) => void): void;
|
|
4824
|
+
/** Un trigger nuovo. Se un'action e' aperta, nasce già collegata a quella. */
|
|
4825
|
+
addScreenTrigger(): void;
|
|
4826
|
+
removeScreenTrigger(index: number): void;
|
|
4827
|
+
private patchTrigger;
|
|
4828
|
+
setTriggerProperty(index: number, property: 'screenActionName' | 'triggerFieldName' | 'initBehavior', value: string): void;
|
|
4829
|
+
/**
|
|
4830
|
+
* Le condizioni di un trigger sono una regola come quella di una Decision (§5.2). Assenti,
|
|
4831
|
+
* l'action gira a ogni cambio del campo: un blocco vuoto si omette invece di scriverlo (§2).
|
|
4832
|
+
*/
|
|
4833
|
+
onTriggerConditionsChanged(index: number, mutate: (holder: FlowConditionHolder) => void): void;
|
|
4632
4834
|
setScreenText(property: string, value: string): void;
|
|
4633
4835
|
/** I flag con default `true` si scrivono solo quando si nega, per non sporcare il diff. */
|
|
4634
4836
|
setScreenFlag(flag: 'allowBack' | 'allowFinish' | 'allowPause' | 'showHeader' | 'showFooter', value: boolean): void;
|
|
@@ -4803,7 +5005,7 @@ declare class DebugPanelComponent {
|
|
|
4803
5005
|
readonly status: _angular_core.Signal<string | null>;
|
|
4804
5006
|
readonly pendingScreen: _angular_core.Signal<_esfaenza_flow_builder.FlowPendingScreen | null>;
|
|
4805
5007
|
readonly isWaitingForScreen: _angular_core.Signal<boolean>;
|
|
4806
|
-
/** §5.
|
|
5008
|
+
/** §5.14 — l'attesa e' su uno step assegnato a una persona, non su un evento. */
|
|
4807
5009
|
readonly isWaitingForStageStep: _angular_core.Signal<boolean>;
|
|
4808
5010
|
readonly stageSteps: _angular_core.Signal<FlowStageStepState[]>;
|
|
4809
5011
|
/** Lo step su cui c'e' un work item aperto: e' quello che si puo' concludere. */
|
|
@@ -4875,6 +5077,8 @@ interface Notice {
|
|
|
4875
5077
|
declare class FlowBuilderComponent {
|
|
4876
5078
|
private readonly api;
|
|
4877
5079
|
private readonly destroyRef;
|
|
5080
|
+
/** Serve a `afterNextRender` chiamato fuori dal costruttore. */
|
|
5081
|
+
private readonly injector;
|
|
4878
5082
|
protected readonly store: FlowDocumentStore;
|
|
4879
5083
|
protected readonly dictionaries: FlowDictionaryStore;
|
|
4880
5084
|
protected readonly session: FlowEditorSession;
|
|
@@ -4993,12 +5197,46 @@ declare class FlowBuilderComponent {
|
|
|
4993
5197
|
onElementPicked(pick: FlowPalettePick): void;
|
|
4994
5198
|
private createElement;
|
|
4995
5199
|
onRemoveNode(name: string): void;
|
|
5200
|
+
/**
|
|
5201
|
+
* La selezione dell'editor e' il **nome** dell'elemento: dopo una rinomina il nome vecchio
|
|
5202
|
+
* non esiste piu' e va sostituito, altrimenti inspector e dialog restano puntati sul vuoto.
|
|
5203
|
+
*/
|
|
5204
|
+
onNodeRenamed(newName: string): void;
|
|
4996
5205
|
onDuplicateNode(name: string): void;
|
|
4997
5206
|
/** Riordina il grafo e **scrive** le coordinate nel documento (§3.5). */
|
|
4998
5207
|
autoLayout(): void;
|
|
4999
5208
|
undo(): void;
|
|
5000
5209
|
redo(): void;
|
|
5001
5210
|
save(): Promise<void>;
|
|
5211
|
+
/** Il modulo del duplicato e' aperto. */
|
|
5212
|
+
readonly isCopyOpen: _angular_core.WritableSignal<boolean>;
|
|
5213
|
+
readonly copyName: _angular_core.WritableSignal<string>;
|
|
5214
|
+
readonly copyLabel: _angular_core.WritableSignal<string>;
|
|
5215
|
+
private readonly copyNameInput;
|
|
5216
|
+
/**
|
|
5217
|
+
* Si duplica un flow che esiste: su uno mai salvato il comando e' «Crea», e il nome lo si
|
|
5218
|
+
* scrive nell'intestazione.
|
|
5219
|
+
*/
|
|
5220
|
+
readonly canDuplicate: _angular_core.Signal<boolean>;
|
|
5221
|
+
/**
|
|
5222
|
+
* Il nome della copia non e' verificabile lato client — i nomi dei flow stanno nel catalogo
|
|
5223
|
+
* del backend, ed e' lui a rifiutare un doppione con `AlreadyExists` (§6.2). Qui si fermano
|
|
5224
|
+
* le due cose che si sanno senza chiedere: la forma del nome tecnico e l'uguaglianza con
|
|
5225
|
+
* l'originale, che duplicare non e'.
|
|
5226
|
+
*/
|
|
5227
|
+
readonly copyNameProblem: _angular_core.Signal<string | null>;
|
|
5228
|
+
/**
|
|
5229
|
+
* Cosa verra' copiato. Con modifiche non salvate la copia le comprende, perche' nasce dal
|
|
5230
|
+
* documento in mano e non dalla versione salvata: dirlo evita la domanda «devo salvare
|
|
5231
|
+
* prima?», che ha risposte opposte nei due casi.
|
|
5232
|
+
*/
|
|
5233
|
+
readonly copyHint: _angular_core.Signal<"La copia comprende le modifiche non salvate; l’originale resta come e’ ora." | "La copia nasce come versione 1 di un flow nuovo.">;
|
|
5234
|
+
startCopy(): void;
|
|
5235
|
+
cancelCopy(): void;
|
|
5236
|
+
setCopyName(value: string): void;
|
|
5237
|
+
setCopyLabel(value: string): void;
|
|
5238
|
+
/** Scrive la copia e continua a lavorare su di essa (§6.2). */
|
|
5239
|
+
confirmCopy(): Promise<void>;
|
|
5002
5240
|
createNewVersion(): Promise<void>;
|
|
5003
5241
|
activate(): Promise<void>;
|
|
5004
5242
|
/** §9.3 — prima opzione davanti a un conflitto. */
|
|
@@ -5034,5 +5272,5 @@ declare class SelectValueDirective implements AfterViewChecked {
|
|
|
5034
5272
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueDirective, "select[fbValue]", never, { "fbValue": { "alias": "fbValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5035
5273
|
}
|
|
5036
5274
|
|
|
5037
|
-
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, screenFieldNames, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName, valuedFieldOf, valuedFieldsOf, variantFieldOf, variantOf, variantPresetOf };
|
|
5038
|
-
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, FlowScreenField, FlowScreenFieldInputsRevisited, FlowScreenFieldNode, FlowScreenFieldPath, FlowScreenFieldType, FlowScreenFieldTypeEntry, FlowScreenNavigation, FlowScreenResponseRequest, 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 };
|
|
5275
|
+
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 };
|
|
5276
|
+
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 };
|