Questa documentazione è stata tradotta automaticamente dall'IA.
Il plugin Evento Pre-Azione offre un meccanismo di intercettazione per le operazioni, che può essere attivato dopo l'invio di una richiesta per un'operazione di creazione, aggiornamento o eliminazione, ma prima che venga elaborata.
Se un nodo "Termina flusso di lavoro" viene eseguito nel flusso di lavoro attivato, o se qualsiasi altro nodo non riesce a essere eseguito (a causa di un errore o di altre situazioni di mancato completamento), l'operazione del modulo verrà intercettata. In caso contrario, l'operazione prevista verrà eseguita normalmente.
Utilizzando il nodo "Messaggio di risposta" in combinazione, è possibile configurare un messaggio di risposta da restituire al client, fornendo indicazioni appropriate. Gli eventi pre-azione possono essere impiegati per la validazione aziendale o controlli logici, al fine di approvare o intercettare le richieste di operazioni di creazione, aggiornamento ed eliminazione inviate dal client.
Quando crea un flusso di lavoro, selezioni il tipo "Evento Pre-Azione":

Nel trigger di un flusso di lavoro di intercettazione, la prima cosa da configurare è la collezione corrispondente all'operazione:

Successivamente, selezioni la modalità di intercettazione. Può scegliere di intercettare solo il pulsante di operazione legato a questo flusso di lavoro, oppure di intercettare tutte le operazioni selezionate per questa collezione (indipendentemente dal modulo di origine e senza la necessità di legare il flusso di lavoro corrispondente):

Attualmente, i tipi di operazione supportati sono "Creazione", "Aggiornamento" ed "Eliminazione". È possibile selezionare contemporaneamente più tipi di operazione.
Se nella configurazione del trigger è stata selezionata la modalità "Attiva intercettazione solo quando viene inviato un modulo legato a questo flusso di lavoro", dovrà tornare all'interfaccia del modulo e legare questo flusso di lavoro al pulsante di operazione corrispondente:

Nella configurazione del legame del flusso di lavoro, selezioni il flusso di lavoro corrispondente. Di solito, il contesto predefinito per i dati di attivazione, "Interi dati del modulo", è sufficiente:

I pulsanti che possono essere legati a un Evento Pre-Azione attualmente supportano solo i pulsanti "Invia" (o "Salva"), "Aggiorna dati" ed "Elimina" nei moduli di creazione o aggiornamento. Il pulsante "Attiva flusso di lavoro" non è supportato (può essere legato solo a un "Evento Post-Azione").
In un "Evento Pre-Azione", ci sono due condizioni che causeranno l'intercettazione dell'operazione corrispondente:
Una volta soddisfatte le condizioni di intercettazione, l'operazione corrispondente non verrà più eseguita. Ad esempio, se l'invio di un ordine viene intercettato, i dati dell'ordine corrispondente non verranno creati.
In un flusso di lavoro di tipo "Evento Pre-Azione", per le diverse operazioni, il trigger contiene dati differenti che possono essere utilizzati come variabili nel flusso di lavoro:
| Tipo di Operazione \ Variabile | "Operatore" | "Identificatore ruolo operatore" | Parametro operazione: "ID" | Parametro operazione: "Oggetto dati inviato" |
|---|---|---|---|---|
| Crea una registrazione | ✓ | ✓ | - | ✓ |
| Aggiorna una registrazione | ✓ | ✓ | ✓ | ✓ |
| Elimina una o più registrazioni | ✓ | ✓ | ✓ | - |
La variabile "Dati del trigger / Parametri dell'operazione / Oggetto dati inviato" in un Evento Pre-Azione non rappresenta i dati effettivi presenti nel database, ma piuttosto i parametri correlati all'invio dell'operazione. Se necessita dei dati effettivi dal database, dovrà recuperarli tramite un nodo "Interroga dati" all'interno del flusso di lavoro.
Inoltre, per un'operazione di eliminazione, l'"ID" nei parametri dell'operazione è un valore singolo quando si mira a una singola registrazione, ma è un array quando si mira a più registrazioni.
Dopo aver configurato il trigger, può personalizzare la logica di valutazione pertinente nel flusso di lavoro. Tipicamente, utilizzerà la modalità di ramificazione del nodo "Condizione" per decidere se "Terminare il flusso di lavoro" e restituire un "Messaggio di risposta" preimpostato, basandosi sui risultati delle condizioni aziendali specifiche:

A questo punto, la configurazione del flusso di lavoro corrispondente è completa. Ora può provare a inviare dati che non soddisfano le condizioni configurate nel nodo "Condizione" del flusso di lavoro per attivare la logica di intercettazione del trigger. A quel punto, vedrà il messaggio di risposta restituito:

Se il nodo "Termina flusso di lavoro" è configurato per uscire con uno stato di "Successo", la richiesta dell'operazione verrà comunque intercettata quando questo nodo viene eseguito, ma il messaggio di risposta restituito verrà visualizzato con uno stato di "Successo" (anziché "Errore"):

Combinando le istruzioni di base sopra, prendiamo come esempio uno scenario di "Invio Ordine". Supponiamo di dover verificare la disponibilità di magazzino di tutti i prodotti selezionati dall'utente al momento dell'invio di un ordine. Se la disponibilità di magazzino di un qualsiasi prodotto selezionato è insufficiente, l'invio dell'ordine viene intercettato e viene restituito un messaggio di avviso corrispondente. Il flusso di lavoro eseguirà un ciclo per controllare ogni prodotto finché la disponibilità di magazzino per tutti i prodotti non sarà sufficiente; a quel punto, procederà e creerà i dati dell'ordine per l'utente.
Gli altri passaggi sono gli stessi delle istruzioni. Tuttavia, poiché un ordine coinvolge più prodotti, oltre ad aggiungere una relazione molti-a-molti "Ordine" <-- M:1 -- "Dettaglio Ordine" -- 1:M --> "Prodotto" nel modello dati, è necessario aggiungere anche un nodo "Ciclo" nel flusso di lavoro "Evento Pre-Azione" per verificare iterativamente se la disponibilità di magazzino di ogni prodotto è sufficiente:

L'oggetto per il ciclo è selezionato come l'array "Dettaglio Ordine" dai dati dell'ordine inviato:

Il nodo di condizione all'interno del ciclo viene utilizzato per determinare se la disponibilità di magazzino dell'oggetto prodotto corrente nel ciclo è sufficiente:

Altre configurazioni sono le stesse dell'utilizzo di base. Quando l'ordine viene finalmente inviato, se un qualsiasi prodotto ha una disponibilità di magazzino insufficiente, l'invio dell'ordine verrà intercettato e verrà restituito un messaggio di avviso corrispondente. Durante i test, provi a inviare un ordine con più prodotti, dove uno ha disponibilità insufficiente e un altro ha disponibilità sufficiente. Potrà vedere il messaggio di risposta restituito:

Come può vedere, il messaggio di risposta non indica che il primo prodotto, "iPhone 15 pro", è esaurito, ma solo che il secondo prodotto, "iPhone 14 pro", lo è. Questo perché nel ciclo, il primo prodotto ha disponibilità di magazzino sufficiente, quindi non viene intercettato, mentre il secondo prodotto ha disponibilità insufficiente, il che intercetta l'invio dell'ordine.
L'Evento Pre-Azione stesso è iniettato durante la fase di elaborazione della richiesta, quindi supporta anche l'attivazione tramite chiamate API HTTP.
Per i flussi di lavoro legati localmente a un pulsante di operazione, può chiamarli in questo modo (usando come esempio il pulsante di creazione della collezione posts):
Il parametro URL triggerWorkflows è la chiave del flusso di lavoro; più chiavi di flusso di lavoro sono separate da virgole. Questa chiave può essere ottenuta passando il mouse sopra il nome del flusso di lavoro nella parte superiore della tela del flusso di lavoro:

Dopo che la chiamata di cui sopra è stata effettuata, verrà attivato l'Evento Pre-Azione per la collezione posts corrispondente. Una volta completata l'elaborazione sincrona del flusso di lavoro corrispondente, i dati verranno creati e restituiti normalmente.
Se il flusso di lavoro configurato raggiunge un "nodo di fine", la logica è la stessa di un'operazione dell'interfaccia: la richiesta verrà intercettata e non verranno creati dati. Se lo stato del nodo di fine è configurato come fallito, il codice di stato della risposta restituito sarà 400; se ha successo, sarà 200.
Se un nodo "Messaggio di risposta" è configurato anche prima del nodo di fine, il messaggio generato verrà restituito anche nel risultato della risposta. La struttura in caso di errore è:
La struttura del messaggio quando il "nodo di fine" è configurato per il successo è:
Poiché è possibile aggiungere più nodi "Messaggio di risposta" in un flusso di lavoro, la struttura dei dati del messaggio restituito è un array.
Se l'Evento Pre-Azione è configurato in modalità globale, non è necessario utilizzare il parametro URL triggerWorkflows per specificare il flusso di lavoro corrispondente quando si chiama l'API HTTP. È sufficiente chiamare direttamente l'operazione della collezione corrispondente per attivarlo.
Quando si attiva un evento pre-azione tramite una chiamata API HTTP, è necessario prestare attenzione anche allo stato di abilitazione del flusso di lavoro e alla corrispondenza della configurazione della collezione, altrimenti la chiamata potrebbe non avere successo o potrebbe verificarsi un errore.