MuleSoft - 核心元件與配置



Mule 最重要的能力之一是它可以使用元件執行路由、轉換和處理,因此結合各種元素的 Mule 應用程式的配置檔案大小非常大。

以下是 Mule 提供的配置模式型別:

  • 簡單服務模式
  • 橋接
  • 驗證器
  • HTTP 代理
  • WS 代理

配置元件

在 Anypoint Studio 中,我們可以按照以下步驟配置元件:

步驟 1

我們需要將我們希望在 Mule 應用程式中使用的元件拖放到畫布上。例如,這裡我們使用 HTTP 監聽器元件,如下所示:

Configuring the Component

步驟 2

接下來,雙擊元件以獲取配置視窗。對於 HTTP 監聽器,如下所示:

Configuration Window

步驟 3

我們可以根據專案的需要配置元件。例如,我們為 HTTP 監聽器元件進行了配置:

HTTP Listener Component

核心元件是 Mule 應用中工作流程的重要構建塊之一。這些核心元件提供了處理 Mule 事件的邏輯。在 Anypoint Studio 中,要訪問這些核心元件,您可以從 Mule 調色盤中點選“核心”,如下所示:

App Mule Palette

以下是Mule 4 中各種核心元件及其工作原理

自定義業務事件

此核心元件用於收集有關流程以及處理 Mule 應用中業務事務的訊息處理器的資訊。換句話說,我們可以使用自定義業務事件元件在我們的工作流程中新增以下內容:

  • 元資料
  • 關鍵績效指標 (KPI)

如何新增 KPI?

以下是將 KPI 新增到 Mule 應用流程中的步驟:

步驟 1 - 按照 Mule 調色盤 → 核心 → 元件 → 自定義業務事件,將自定義業務事件元件新增到 Mule 應用的工作流程中。

步驟 2 - 點選元件以開啟它。

步驟 3 - 現在,我們需要為“顯示名稱”和“事件名稱”提供值。

步驟 4 - 要從訊息有效負載捕獲資訊,請按如下方式新增 KPI:

  • 為 KPI(跟蹤:元資料元素)指定一個名稱(鍵)和一個值。該名稱將在執行時管理器的搜尋介面中使用。

  • 指定一個值,該值可以是任何 Mule 表示式。

示例

下表包含 KPI 列表及其名稱和值:

名稱 表示式/值
學生學號 #[payload[‘RollNo’]]
學生姓名 #[payload[‘Name’]]

動態評估

此核心元件用於在 Mule 應用中動態選擇指令碼。我們也可以透過轉換訊息元件使用硬編碼指令碼,但使用動態評估元件是更好的方法。此核心元件的工作原理如下:

  • 首先,它評估一個表示式,該表示式應該會生成另一個指令碼。
  • 然後它評估該指令碼以獲得最終結果。

這樣,它允許我們動態選擇指令碼,而不是對其進行硬編碼。

示例

以下是如何透過 Id 查詢引數從資料庫中選擇指令碼並將該指令碼儲存在名為MyScript的變數中。現在,動態評估元件將訪問該變數以呼叫指令碼,以便它可以從UName查詢引數中新增名稱變數。

流程的 XML 配置如下所示:

<flow name = "DynamicE-example-flow">
   <http:listener config-ref = "HTTP_Listener_Configuration" path = "/"/>
   <db:select config-ref = "dbConfig" target = "myScript">
      <db:sql>#["SELECT script FROM SCRIPTS WHERE ID = 
         $(attributes.queryParams.Id)"]
      </db:sql>
   </db:select>
   <ee:dynamic-evaluate expression = "#[vars.myScript]">
      <ee:parameters>#[{name: attributes.queryParams.UName}]</ee:parameters>
   </ee:dynamic-evaluate>
</flow>

指令碼可以使用上下文變數,如訊息、有效負載、變數或屬性。但是,如果要新增自定義上下文變數,則需要提供一組鍵值對。

配置動態評估

下表提供了一種配置動態評估元件的方法:

欄位 描述 示例
表示式 DataWeave 表示式 它指定要評估為最終指令碼的表示式。 expression="#[vars.generateOrderScript]"
引數 DataWeave 表示式 它指定鍵值對。 #[{joiner: ' and ', id: payload.user.id}]

流程引用元件

如果要將 Mule 事件路由到同一 Mule 應用中的另一個流程或子流程並返回,那麼流程引用元件是正確的選擇。

特徵

以下是此核心元件的特徵:

  • 此核心元件允許我們將整個引用流程視為當前流程中的單個元件。

  • 它將 Mule 應用程式分解為離散且可重用的單元。例如,一個流程定期列出檔案。它可能會引用另一個處理列表操作輸出的流程。

  • 這樣,與其附加所有處理步驟,我們可以附加指向處理流程的流程引用。下面的螢幕截圖顯示流程引用核心元件指向名為ProcessFiles的子流程。

Flow Reference Component

工作原理

可以透過以下示意圖瞭解流程引用元件的工作原理:

Main Working Flow

該圖顯示了當一個流程引用同一應用程式中的另一個流程時,Mule 應用程式中的處理順序。當 Mule 應用程式中的主要工作流程觸發時,Mule 事件會貫穿整個流程並執行,直到 Mule 事件到達流程引用。

到達流程引用後,Mule 事件會從頭到尾執行引用的流程。一旦 Mule 事件完成執行引用流程,它就會返回到主流程。

示例

為了更好地理解,讓我們在 Anypoint Studio 中使用此元件。在此示例中,我們使用 HTTP 監聽器獲取訊息,就像我們在上一章中所做的那樣。因此,我們可以拖放元件並進行配置。但是對於此示例,我們需要新增一個子流程元件並在其下設定有效負載元件,如下所示:

Component in Anypoint Studio

接下來,我們需要配置設定有效負載,方法是雙擊它。這裡我們給出值“子流程已執行”,如下所示:

Set Payload

成功配置子流程元件後,我們需要在主流程的“設定有效負載”之後設定流程引用元件,我們可以從 Mule 調色盤中將其拖放,如下所示:

Sub Flow Component

接下來,在配置流程引用元件時,我們需要在“通用”選項卡下選擇“流程名稱”,如下所示:

Choose Flow Name

現在,儲存並執行此應用程式。要測試此操作,請轉到 POSTMAN 並在 URL 位址列中鍵入http:/localhost:8181/FirstAPP,您將收到訊息“子流程已執行”。

Postman

日誌記錄器元件

名為日誌記錄器的核心元件幫助我們透過記錄重要資訊(如錯誤訊息、狀態通知、有效負載等)來監視和除錯 Mule 應用程式。在 AnyPoint Studio 中,它們顯示在控制檯中。

優勢

以下是日誌記錄器元件的一些優勢:

  • 我們可以在工作流程中的任何位置新增此核心元件。
  • 我們可以將其配置為記錄我們指定的字串。
  • 我們可以將其配置為我們編寫的 DataWeave 表示式的輸出。
  • 我們還可以將其配置為字串和表示式的任意組合。

示例

下面的示例在瀏覽器中顯示“Hello World”訊息(在“設定有效負載”中),並記錄該訊息。

Logger Component

以下是上述示例中流程的 XML 配置:

<http:listener-config name = "HTTP_Listener_Configuration" host = "localhost" port = "8081"/>
<flow name = "mymuleprojectFlow">
   <http:listener config-ref="HTTP_Listener_Configuration" path="/"/>
   <set-payload value="Hello World"/>
   <logger message = "#[payload]" level = "INFO"/>
</flow>

轉換訊息元件

轉換訊息元件(也稱為轉換元件)允許我們將輸入資料轉換為新的輸出格式。

構建轉換的方法

我們可以藉助以下兩種方法構建轉換:

拖放編輯器(圖形檢視) - 這是構建轉換的第一種也是最常用的方法。在這種方法中,我們可以使用此元件的視覺化對映器拖放傳入資料結構的元素。例如,在以下圖表中,兩個樹形檢視顯示了輸入和輸出的預期元資料結構。連線輸入和輸出欄位的線條表示兩個樹形檢視之間的對映關係。

Transfer Message Component

指令碼檢視 - 轉換的視覺化對映也可以藉助 DataWeave(Mule 程式碼的語言)來表示。我們可以為一些高階轉換進行編碼,例如聚合、規範化、分組、聯接、分割槽、透視和過濾。示例如下所示:

Transformation Source

此核心元件基本上接受變數、屬性或訊息有效負載的輸入和輸出元資料。我們可以為以下內容提供特定於格式的資源:

  • CSV
  • 模式
  • 平面檔案模式
  • JSON
  • 物件類
  • 簡單型別
  • XML 模式
  • Excel 列名稱和型別
  • 固定寬度列名稱和型別
廣告
© . All rights reserved.