Condizioni di notifica
Questo evento viene notificato al documento più volte durante la fase di salvataggio verso il servizio. Il parametro Phase indica a quale stato è arrivata la procedura di salvataggio e può valere da 0 a 3, come indicato nel seguente elenco:
- Fase = 0 - PRE SAVE: in questa fase a tutti i documenti in fase di salvataggio viene notificato che la procedura di salvataggio è iniziata. È possibile usare questa fase per sistemare lo stato reciproco dei sotto documenti.
- Fase = 1 - INSERTING: in questa fase vengono inseriti i documenti in stato Inserted. L'evento viene notificato a tutti i documenti in fase di salvataggio, che siano in stato Inserted o meno, subito prima dell'esecuzione della chiamata al servizio.
- Fase = 2 - UPDATING: in questa fase vengono aggiornati i documenti in stato Updated. L'evento viene notificato a tutti i documenti in fase di salvataggio, che siano in stato Updated o meno, subito prima dell'esecuzione della chiamata al servizio.
- Fase = 3 - DELETING: in questa fase vengono cancellati i documenti in stato Deleted. L'evento viene notificato a tutti i documenti in fase di salvataggio, che siano in stato Deleted o meno, subito prima dell'esecuzione della chiamata al servizio. La notifica per questa fase avviene in ordine inverso, ossia prima i documenti figli e poi i padri.
- Fase = 4 - LINKING: in questa fase vengono aggiornati i collegamenti dei documenti in stato Updated. L'evento viene notificato a tutti i documenti in fase di salvataggio che hanno almeno un collegamento verso un'altra entità o che sono contenuti in collection con molteplicità N:M, subito prima dell'esecuzione della chiamata al servizio.
Utilizzo consigliato
L'evento Before Save viene utilizzato per rendere coerenti i documenti ed i sotto documenti prima del salvataggio, oppure qualora la richiesta composta dal framework sia errata o incompleta.
Non deve essere utilizzato invece per effettuare validazioni o segnalare errori, infatti a tale scopo occorre utilizzare l'evento OnValidate.
Argomenti
| Document | Documento da salvare. |
| Skip | Parametro di output booleano. Se impostato a true segnala al framework di non effettuare la chiamata al servizio perché sarà gestita in autonomia. |
| Cancel | Parametro di output booleano. Se impostato a true segnala al framework di annullare la procedura di salvataggio a causa di errori occorsi. Poiché tutto il documento viene salvato nella stessa transazione, l'intero salvataggio verrà annullato. |
| Phase | È un numero intero da 0 a 3 che indica lo stato di avanzamento del salvataggio come indicato all'inizio dell'articolo. |
| Url Path | Parte di URL che verrà appeso all'endpoint del servizio per effettuare la chiamata. |
| Parameters | Parametri che verranno inviati durante la chiamata |
| Link | Questo parametro indica il link delle classi di servizi OData che sta per essere salvato. Vale sempre -1 se Phase è diverso da 4. |
- Durante la notifica di questo evento, il documento è ancora in stato modificato. È quindi possibile sapere quali modifiche sono state fatte e qual è il valore originale delle proprietà.
- Questo evento viene notificato in ogni fase a tutti i documenti in fase di salvataggio. Ad esempio, BeforeSave Fase 1 viene notificato sia ai documenti in stato Inserted che agli altri. Dopo aver notificato l'evento, l'operazione di inserimento viene effettuata solo per quelli in stato Inserted.
- L'evento con Phase=4 viene notificato solo per i documenti di servizi OData e vale 0 se il documento è contenuto in una collection con molteplicità N:M oppure un numero maggiore di 0 corrispondente al numero della proprietà del documento corrispondente al collegamento da salvare.
- I documenti di servizi OData contenuti in collection con molteplicità N:M non vengono salvati in quanto non sono figli propri del documento master.
- Si consiglia di aprire il sistema di debug per rendersi conto dell'effettivo ciclo di notifica degli eventi BeforeSave, anche in congiunzione con i corrispettivi eventi BeforeCommit ed AfterCommit del pannello DO.
- Qualora il servizio richieda l'autenticazione OAuth e l'AccessToken sia scaduto, il framework tenta di rinnovarlo automaticamente se è valorizzato anche il RefreshToken.
- Quando viene notificato questo evento, il framework ha già preparato la chiamata valorizzando opportunamente i parametri UrlPath e Parameters.
- Internamente verrà usata la funzione GetHTTP per effettuare la chiamata con la mappa dei parametri così com'è. Essa contiene già il parametro ID_HEADERS con gli header da aggiungere alla richiesta tra cui l'header per l'autenticazione (
Authorization: Bearer AccessToken). - La chiamata verso il servizio è di tipo POST per l'inserimento, PUT per l'aggiornamento e DELETE per la cancellazione.
Ultima modifica: 15/11/2021 / Validità: da 13.1.5700
evento