MuleSoft - Controllo di flusso e trasformatori

Controllo del flusso (router)

Il compito principale del componente Flow Control è prendere l'evento Mule di input e instradarlo a una o più sequenze separate di componenti. Fondamentalmente sta instradando l'evento Mule di input ad altre sequenze di componenti. Pertanto, è anche chiamato router. I router Choice e Scatter-Gather sono i router più utilizzati nel componente Flow Control.

Scelta del router

Come suggerisce il nome, questo router applica la logica DataWeave per scegliere uno tra due o più percorsi. Come discusso in precedenza, ogni route è una sequenza separata di processori di eventi Mule. Possiamo definire router di scelta come il router che instrada dinamicamente il messaggio attraverso un flusso secondo un insieme di espressioni DataWeave utilizzate per valutare il contenuto del messaggio.

Diagramma schematico di Choice Router

L'effetto dell'utilizzo del router Choice è come l'aggiunta di un'elaborazione condizionale a un flusso o a un file if/then/elseblocco di codice nella maggior parte dei linguaggi di programmazione. Di seguito è riportato il diagramma schematico di un Choice Router, con tre opzioni. Tra questi, uno è il router predefinito.

Router a dispersione

Un altro processore di eventi di routing più utilizzato è Scatter-Gather component. Come suggerisce il nome, funziona sui fondamenti di scatter (copia) e Gather (consolida). Possiamo capire il suo funzionamento con l'aiuto dei seguenti due punti:

  • Innanzitutto, questo router copia (Scatter) un evento Mule su due o più route parallele. La condizione è che ogni percorso deve essere una sequenza di uno o più processori di eventi che è come un flusso secondario. Ogni percorso in questo caso creerà un evento Mule utilizzando un thread separato. Ogni evento Mule avrà il proprio payload, attributi e variabili.

  • Successivamente, questo router raccoglie gli eventi Mule creati da ogni percorso e quindi li consolida insieme in un nuovo evento Mule. Successivamente, passa questo evento Mule consolidato al processore di eventi successivo. Qui la condizione è che il router SG passi un evento Mule consolidato al processore di eventi successivo solo quando ogni percorso è stato completato con successo.

Diagramma schematico del router Scatter-Gather

Di seguito è riportato il diagramma schematico di un router Scatter-Gather con quattro processori di eventi. Esegue ogni percorso in parallelo e non in sequenza.

Gestione degli errori da parte del router Scatter-Gather

Innanzitutto, dobbiamo conoscere il tipo di errore che può essere generato all'interno del componente Scatter-Gather. Qualsiasi errore potrebbe essere generato all'interno dei processori di eventi che portano il componente Scatter-Gather a generare un errore di tipoMule: COMPOSITE_ERROR. Questo errore verrà generato dal componente SG solo dopo che ogni route fallisce o viene completata.

Per gestire questo tipo di errore, a try scopepuò essere utilizzato in ogni percorso del componente Scatter-Gather. Se l'errore viene gestito con successo datry scope, quindi il percorso sarà sicuramente in grado di generare un evento Mule.

Transformers

Supponiamo di voler impostare o rimuovere una parte di qualsiasi evento Mule, il componente Transformer è la scelta migliore. I componenti del trasformatore sono dei seguenti tipi:

Rimuovere il trasformatore variabile

Come suggerisce il nome, questo componente prende un nome di variabile e rimuove quella variabile dall'evento Mule.

Configurazione della rimozione del trasformatore variabile

La tabella seguente mostra il nome dei campi e la loro descrizione da considerare durante la configurazione della rimozione del trasformatore variabile -

Suor n Campo e spiegazione
1

Display Name (doc:name)

Possiamo personalizzarlo per visualizzare un nome univoco per questo componente nel nostro flusso di lavoro Mule.

2

Name (variableName)

Rappresenta il nome della variabile da rimuovere.

Impostare il trasformatore del carico utile

Con l'aiuto di set-payloadcomponente, possiamo aggiornare il payload, che può essere una stringa letterale o un'espressione DataWeave, del messaggio. Non è consigliabile utilizzare questo componente per espressioni o trasformazioni complesse. Può essere usato per quelli semplici comeselections.

La tabella seguente mostra il nome dei campi e la loro descrizione da considerare durante la configurazione del set payload transformer -

Campo Utilizzo Spiegazione
Valore (valore) Obbligatorio Il valore archiviato è necessario per impostare un payload. Accetterà una stringa letterale o un'espressione DataWeave che definisce come impostare il payload. Gli esempi sono come "una stringa"
Tipo Mime (mimeType) Opzionale È facoltativo ma rappresenta il tipo MIME del valore assegnato al payload del messaggio. Gli esempi sono come testo / semplice.
Codifica (codifica) Opzionale È anche facoltativo ma rappresenta la codifica del valore assegnato al payload del messaggio. Gli esempi sono come UTF-8.

Possiamo impostare un payload tramite il codice di configurazione XML -

With Static Content - Il seguente codice di configurazione XML imposterà il payload utilizzando contenuto statico -

<set-payload value = "{ 'name' : 'Gaurav', 'Id' : '2510' }" 
   mimeType = "application/json" encoding = "UTF-8"/>

With Expression Content - Il seguente codice di configurazione XML imposterà il payload utilizzando il contenuto di Expression -

<set-payload value = "#['Hi' ++ ' Today is ' ++ now()]"/>

L'esempio precedente aggiungerà la data odierna con il payload del messaggio "Ciao".

Imposta trasformatore variabile

Con l'aiuto di set variablecomponente, possiamo creare o aggiornare una variabile per memorizzare valori che possono essere semplici valori letterali come stringhe, payload di messaggi o oggetti attributo, da utilizzare all'interno del flusso dell'applicazione Mule. Non è consigliabile utilizzare questo componente per espressioni o trasformazioni complesse. Può essere usato per quelli semplici comeselections.

Configurazione del trasformatore della variabile impostata

La tabella seguente mostra il nome dei campi e la loro descrizione da considerare durante la configurazione del set payload transformer -

Campo Utilizzo Spiegazione
Nome variabile (nomeVariabile) Obbligatorio È un campo obbligatorio e rappresenta il nome della variabile. Durante l'assegnazione del nome, seguire la convenzione di denominazione in quanto deve contenere numeri, caratteri e trattini bassi.
Valore (valore) Obbligatorio Il valore archiviato è necessario per impostare una variabile. Accetterà una stringa letterale o un'espressione DataWeave.
Tipo Mime (mimeType) Opzionale È facoltativo ma rappresenta il tipo MIME della variabile. Gli esempi sono come testo / semplice.
Codifica (codifica) Opzionale È anche facoltativo ma rappresenta la codifica della variabile. Gli esempi sono come ISO 10646 / Unicode (UTF-8).

Esempio

L'esempio seguente imposterà la variabile sul payload del messaggio:

Variable Name = msg_var
Value = payload in Design center and #[payload] in Anypoint Studio

Allo stesso modo, l'esempio seguente imposterà la variabile sul payload del messaggio:

Variable Name = msg_var
Value = attributes in Design center and #[attributes] in Anypoint Studio.