Indice

ECA attivate dalla modifica di Entità

Procedure eseguite quando viene inserito, modificato o eliminata una Entità
Aggiornata il:
Stato: 🟩Pronta

Un caso piuttosto frequente nella costruzione di app è la necessità di una procedura che, quando viene modificata una Entità, ne modifica automaticamente altre. Una procedura di questo tipo è di solito formata almeno dai seguenti elementi:

1un Evento Presave content entityattiva la procedura quando sta per essere salvata una Entità di un certo tipo 
2una serie di Azioni e Condizionirealizzano il comando
3un'Azione o più Azioni Mostra un messaggio all'utenteavvisa l'Utente di aver modificato altre Entità

Come esempio, costruiamo per la app "Vicinato" una procedura che allinea lo Stato della Richiesta allo Stato del Prestito concesso in risposta alla Richiesta.  La procedura risultante è questa:

Vediamo passo passo come costruirla:

 crea la proceduraIn Configurazione - ECA clicca Add new model.  Clicca l'icona ℹ️ e in Etichetta digita un nome per la procedura
1attiva la procedura quando viene salvato un Prestito (nuovo o modificato)Aggiungi un Evento Presave content entity. In Type (and bundle) seleziona il tipo di Entità "Contenuto: Prestito". L'Entità che ha attivato la procedura è memorizzata nel Token entity.
2assegna alla procedura i privilegi di Amministratore, per consentire all'Utente di modificare lo Stato della Richiesta su cui non avrebbe diritti di modifica.Aggiungi l'Azione User: switch current account. In User ID digita "1", che è l'identificativo di Amministratore
memorizza nel Token "richiesta" la Richiesta corrispondente al PrestitoAggiungi l'Azione Entity: load. In Name of Token digita "richiesta" per creare il Token in cui memorizzare l'Entità Richiesta. In Load entity from seleziona Type and ID. In Tipo di Entità seleziona Contenuto, perché la Richiesta è una Entità di questo tipo. Copia dalla gerarchia dei Token il Token corrispondente al Campo del Prestito che contiene l'identificativo della Richiesta [node:field_richiesta_prestito:target_id]. In ID Entità incolla quel Token modificandolo in [entity:field_richiesta_prestito:target_id], perché l'Entità da cui prelevare quel Campo è il Prestito memorizzato nel Token entity.
distingui cosa fare in base allo Stato del PrestitoAggiungi un gateway (rombo).  Da qui partono tre percorsi alternativi (2a) (2b) (2c)
2ase il Prestito è "in corso", anche la Richiesta va messa "in corso"

Dal gateway aggiungi una Azione. Sul connettore che va dal gateway a questa Azione aggiungi la Condizione Compare two scalar values. Copia dalla gerarchia il Token che contiene il Campo Stato del Prestito [node:field_stato_prestito:value]. In First value incolla quel Token modificandolo in [entity:field_stato_prestito:value]. In Second value digita il nome interno dello Stato "in_corso". In questo modo le Azioni che seguono sono eseguite solo se lo Stato del Prestito è "in corso".

Associa all'Azione la funzione Entity: set field value. In Nome del Campo digita il nome del Campo che memorizza lo Stato della Richiesta "field_stato_richiesta". In Valore del Campo digita "in_corso". In Entità digita "richiesta".

2bse il Prestito è "concluso", anche la Richiesta va messa "conclusa"Come 2a, stavolta verificando che lo Stato del Prestito sia "concluso" e imponendo alla Richiesta lo Stato "conclusa"
2cse il Prestito è "concesso", la Richiesta è "accettata"Come 2a, stavolta verificando che lo Stato del Prestito sia "concesso" e imponendo alla Richiesta lo Stato "accettata"
3avvisa l'Utente che è stato cambiato lo Stato della RichiestaAggiungi l'Azione Mostra un messaggio all'utente. In Messaggio digita "Lo Stato della Richiesta [richiesta] è stato allineato a quello del Prestito"