MuleSoft - Kontrola przepływu i transformatory
Kontrola przepływu (routery)
Głównym zadaniem komponentu Flow Control jest przyjęcie zdarzenia wejściowego Mule i skierowanie go do jednej lub więcej oddzielnych sekwencji komponentów. Zasadniczo jest to kierowanie zdarzenia wejściowego Mule do innej sekwencji komponentów. Dlatego jest również nazywany routerami. Routery Choice i Scatter-Gather to najczęściej używane routery w ramach komponentu Flow Control.
Choice Router
Jak sugeruje nazwa, ten router stosuje logikę DataWeave, aby wybrać jedną z dwóch lub więcej tras. Jak wspomniano wcześniej, każda trasa jest oddzielną sekwencją procesorów zdarzeń Mule. Możemy zdefiniować routery wyboru jako router, który dynamicznie kieruje wiadomość przez przepływ zgodnie z zestawem wyrażeń DataWeave używanych do oceny treści wiadomości.
Schemat ideowy routera Choice
Efekt użycia routera Choice jest taki sam, jak dodanie przetwarzania warunkowego do przepływu lub pliku if/then/elseblok kodu w większości języków programowania. Poniżej znajduje się schemat ideowy routera Choice z trzema opcjami. Wśród nich jeden jest routerem domyślnym.
Router scatter-Gather
Innym najczęściej używanym procesorem zdarzeń routingu jest Scatter-Gather component. Jak sama nazwa wskazuje, działa na podstawach rozpraszania (kopiowania) i gromadzenia (konsolidacji). Możemy zrozumieć jego działanie za pomocą następujących dwóch punktów -
Po pierwsze, ten router kopiuje (Scatter) zdarzenie Mule na dwie lub więcej równoległych tras. Warunkiem jest to, że każda trasa musi być sekwencją co najmniej jednego procesora zdarzeń, co przypomina podstrumień. Każda trasa w tym przypadku utworzy wydarzenie Mule przy użyciu osobnego wątku. Każde zdarzenie Mule będzie miało swój własny ładunek, atrybuty i zmienne.
Następnie ten router gromadzi utworzone zdarzenia Mule z każdej trasy, a następnie konsoliduje je razem w nowe wydarzenie Mule. Następnie przekazuje to skonsolidowane zdarzenie Mule do następnego procesora zdarzeń. Tutaj warunek jest taki, że router SG przekaże skonsolidowane zdarzenie Mule do następnego procesora zdarzeń tylko wtedy, gdy każda trasa zostanie pomyślnie zakończona.
Schematyczny diagram routera Scatter-Gather
Poniżej znajduje się schematyczny diagram routera Scatter-Gather z czterema procesorami zdarzeń. Wykonuje każdą trasę równolegle, a nie sekwencyjnie.
Obsługa błędów przez router Scatter-Gather
Po pierwsze, musimy mieć wiedzę na temat rodzaju błędu, jaki można wygenerować w komponencie Scatter-Gather. Każdy błąd może zostać wygenerowany w procesorach zdarzeń, powodując, że składnik Scatter-Gather zgłosi błąd typuMule: COMPOSITE_ERROR. Ten błąd zostanie zgłoszony przez składnik SG tylko wtedy, gdy każda trasa ulegnie awarii lub zostanie ukończona.
Aby obsłużyć ten typ błędu, a try scopemoże być użyty w każdej trasie komponentu Scatter-Gather. Jeśli błąd zostanie pomyślnie obsłużony przeztry scope, wtedy trasa na pewno będzie mogła wygenerować zdarzenie Mule.
Transformers
Załóżmy, że jeśli chcemy ustawić lub usunąć część dowolnego wydarzenia Mule, komponent Transformer jest najlepszym wyborem. Komponenty transformatora są następujących typów -
Usuń transformator zmienny
Jak sama nazwa wskazuje, ten komponent przyjmuje nazwę zmiennej i usuwa tę zmienną ze zdarzenia Mule.
Konfigurowanie usuwania zmiennego transformatora
Poniższa tabela przedstawia nazwy pól i ich opis, które należy uwzględnić podczas konfigurowania usuwania transformatora zmiennego -
Sr.No | Pole i wyjaśnienie |
---|---|
1 | Display Name (doc:name) Możemy to dostosować, aby wyświetlać unikalną nazwę tego komponentu w naszym przepływie pracy Mule. |
2 | Name (variableName) Reprezentuje nazwę zmiennej do usunięcia. |
Ustaw transformator obciążenia
Z pomocą set-payloadkomponentu, możemy zaktualizować ładunek, który może być literałem lub wyrażeniem DataWeave wiadomości. Nie zaleca się używania tego komponentu w przypadku złożonych wyrażeń lub przekształceń. Może być używany do prostych, takich jakselections.
Poniższa tabela przedstawia nazwy pól i ich opis, które należy uwzględnić podczas konfigurowania transformatora ustawionego ładunku -
Pole | Stosowanie | Wyjaśnienie |
---|---|---|
Wartość (wartość) | Obowiązkowy | Podana wartość jest wymagana do ustawienia ładunku. Akceptuje literał ciągu lub wyrażenie DataWeave definiujące sposób ustawiania ładunku. Przykłady są jak „jakiś ciąg” |
Typ MIME (mimeType) | Opcjonalny | Jest opcjonalna, ale reprezentuje typ MIME wartości przypisanej do ładunku wiadomości. Przykłady są jak tekst / zwykły. |
Kodowanie (kodowanie) | Opcjonalny | Jest również opcjonalny, ale reprezentuje kodowanie wartości przypisanej do ładunku wiadomości. Przykłady są podobne do UTF-8. |
Możemy ustawić ładunek poprzez kod konfiguracyjny XML -
With Static Content - Poniższy kod konfiguracyjny XML ustawi ładunek przy użyciu zawartości statycznej -
<set-payload value = "{ 'name' : 'Gaurav', 'Id' : '2510' }"
mimeType = "application/json" encoding = "UTF-8"/>
With Expression Content - Poniższy kod konfiguracyjny XML ustawi ładunek przy użyciu zawartości wyrażenia -
<set-payload value = "#['Hi' ++ ' Today is ' ++ now()]"/>
W powyższym przykładzie dzisiejsza data zostanie dołączona do ładunku wiadomości „Cześć”.
Ustaw transformator zmienny
Z pomocą set variablekomponentu, możemy utworzyć lub zaktualizować zmienną do przechowywania wartości, które mogą być prostymi wartościami literałów, takimi jak ciągi znaków, ładunki wiadomości lub obiekty atrybutów, do wykorzystania w przepływie aplikacji Mule. Nie zaleca się używania tego komponentu w przypadku złożonych wyrażeń lub przekształceń. Może być używany do prostych, takich jakselections.
Konfigurowanie ustawionego transformatora zmiennego
Poniższa tabela przedstawia nazwy pól i ich opis, które należy uwzględnić podczas konfigurowania transformatora ustawionego ładunku -
Pole | Stosowanie | Wyjaśnienie |
---|---|---|
Nazwa zmiennej (nazwa zmiennej) | Obowiązkowy | Jest wymagane i reprezentuje nazwę zmiennej. Nadając nazwę, należy postępować zgodnie z konwencją nazewnictwa, aby zawierała cyfry, znaki i podkreślenia. |
Wartość (wartość) | Obowiązkowy | Pole wartości jest wymagane do ustawienia zmiennej. Akceptuje dosłowny ciąg lub wyrażenie DataWeave. |
Typ MIME (mimeType) | Opcjonalny | Jest opcjonalna, ale reprezentuje typ MIME zmiennej. Przykłady są jak tekst / zwykły. |
Kodowanie (kodowanie) | Opcjonalny | Jest to również opcjonalne, ale reprezentuje kodowanie zmiennej. Przykłady są takie jak ISO 10646 / Unicode (UTF-8). |
Przykład
Poniższy przykład ustawi zmienną na ładunek wiadomości -
Variable Name = msg_var
Value = payload in Design center and #[payload] in Anypoint Studio
Podobnie, poniższy przykład ustawi zmienną na ładunek wiadomości -
Variable Name = msg_var
Value = attributes in Design center and #[attributes] in Anypoint Studio.