MuleSoft 快速指南



MuleSoft - Mule ESB 簡介

ESB 代表企業服務匯流排 (Enterprise Service Bus),它基本上是一個用於透過匯流排式基礎架構整合各種應用程式的中介軟體工具。從根本上說,它是一種旨在提供統一方法來在整合應用程式之間移動工作的架構。透過這種方式,藉助 ESB 架構,我們可以透過通訊匯流排連線不同的應用程式,並使它們能夠在不依賴彼此的情況下進行通訊。

ESB 的實現

ESB 架構的主要焦點是從彼此解耦系統,並允許它們以穩定和可控的方式進行通訊。ESB 的實現可以透過以下方式使用“匯流排”“介面卡”來完成:

  • “匯流排”的概念是透過像 JMS 或 AMQP 這樣的訊息伺服器實現的,用於將不同的應用程式彼此解耦。

  • “介面卡”的概念負責與後端應用程式通訊並將資料從應用程式格式轉換為匯流排格式,用於應用程式和匯流排之間。

透過匯流排從一個應用程式到另一個應用程式的資料或訊息傳遞採用規範格式,這意味著將存在一種一致的訊息格式。

介面卡還可以執行其他活動,例如安全、監控、錯誤處理和訊息路由管理。

ESB 的指導原則

我們可以將這些原則稱為核心整合原則。它們如下:

  • 編排 - 整合兩個或多個服務以實現資料和流程之間的同步。

  • 轉換 - 將資料從規範格式轉換為特定於應用程式的格式。

  • 傳輸 - 處理不同格式之間的協議協商,例如 FTP、HTTP、JMS 等。

  • 中介 - 提供多個介面以支援服務的多個版本。

  • 非功能一致性 - 還提供用於管理事務和安全的機制。

ESB 的需求

ESB 架構使我們能夠整合不同的應用程式,每個應用程式都可以透過它進行通訊。以下是一些關於何時使用 ESB 的指導原則:

  • 整合兩個或多個應用程式 - 當需要整合兩個或多個服務或應用程式時,使用 ESB 架構是有益的。

  • 將來整合更多應用程式 - 如果我們想將來新增更多服務或應用程式,那麼可以使用 ESB 架構輕鬆完成。

  • 使用多種協議 - 如果我們需要使用多種協議,例如 HTTP、FTP、JMS 等,ESB 是正確的選擇。

  • 訊息路由 - 如果我們需要基於訊息內容和其他類似引數進行訊息路由,則可以使用 ESB。

  • 組合和使用 - 如果我們需要釋出服務以進行組合和使用,則可以使用 ESB。

點對點整合與 ESB 整合

隨著應用程式數量的增加,開發人員面前的一個大問題是如何連線不同的應用程式?這種情況是透過手工編碼各種應用程式之間的連線來處理的。這稱為點對點整合

P2P Integration

僵化是點對點整合的最明顯的缺點。隨著連線和介面數量的增加,複雜性也會增加。P-2-P 整合的缺點導致我們轉向 ESB 整合。

ESB 是一種更靈活的應用程式整合方法。它將每個應用程式的功能封裝並公開為一組離散的可重用功能。沒有應用程式直接與其他應用程式整合,而是它們透過 ESB 整合,如下所示:

ESB Integration

為了管理整合,ESB 具有以下兩個元件:

  • 服務登錄檔 - Mule ESB 具有服務登錄檔/儲存庫,所有公開到 ESB 的服務都在此處釋出和註冊。它充當發現點,從中可以消費其他應用程式的服務和功能。

  • 集中式管理 - 顧名思義,它提供 ESB 內部發生的互動的交易流和效能檢視。

ESB 功能 - 通常使用 VETRO 首字母縮寫來總結 ESB 的功能。它如下:

  • V(驗證) - 顧名思義,它驗證模式驗證。它需要一個驗證解析器和最新的模式。一個例子是符合最新模式的 XML 文件。

  • E(豐富) - 它向訊息新增附加資料。目的是使訊息對目標服務更有意義和更有用。

  • T(轉換) - 它將資料結構轉換為規範格式或從規範格式轉換。示例包括日期/時間、貨幣等的轉換。

  • R(路由) - 它將路由訊息並充當服務端點的看門人。

  • O(操作) - 此功能的主要工作是呼叫目標服務或與目標應用程式互動。它們在後端執行。

VETRO 模式為整合提供了整體靈活性,並確保只有一致且經過驗證的資料才能在整個 ESB 中路由。

什麼是 Mule ESB?

Mule ESB 是 MuleSoft 提供的基於 Java 的輕量級且高度可擴充套件的企業服務匯流排 (ESB) 和整合平臺。Mule ESB 允許開發人員輕鬆快速地連線應用程式。無論應用程式使用什麼技術,Mule ESB 都能輕鬆整合應用程式,使它們能夠交換資料。Mule ESB 具有以下兩個版本:

  • 社群版
  • 企業版

Mule ESB 的一個優點是我們可以輕鬆地從 Mule ESB 社群版升級到 Mule ESB 企業版,因為這兩個版本都是基於相同的程式碼庫構建的。

Mule ESB 的特性和功能

Mule ESB 具有以下特性:

  • 它具有簡單的拖放式圖形設計。
  • Mule ESB 能夠進行視覺化資料對映和轉換。
  • 使用者可以使用數百個預構建的經過認證的聯結器。
  • 集中式監控和管理。
  • 它提供強大的企業安全執行功能。
  • 它提供 API 管理功能。
  • 它有安全的雲/本地連線資料閘道器。
  • 它提供服務登錄檔,所有公開到 ESB 的服務都在此處釋出和註冊。
  • 使用者可以透過基於 Web 的管理控制檯進行控制。
  • 可以使用服務流分析器進行快速除錯。

MuleSoft - Mule 專案

Mule 專案背後的動機是:

  • 使程式設計師的工作更簡單,

  • 需要輕量級且模組化的解決方案,該解決方案可以從應用程式級訊息傳遞框架擴充套件到企業範圍的高度可分散式框架。

Mule ESB 被設計為事件驅動型和程式化框架。它是事件驅動的,因為它與訊息的統一表示相結合,並且可以透過可插入模組進行擴充套件。它是程式化的,因為程式設計師可以輕鬆地植入一些額外的行為,例如特定的訊息處理或自定義資料轉換。

歷史

Mule 專案的歷史視角如下:

SourceForge 專案

Mule 專案於 2003 年 4 月作為 SourceForge 專案啟動,兩年後釋出了第一個版本並遷移到 CodeHaus。通用訊息物件 (UMO) API 是其架構的核心。UMO API 背後的想法是在保持它們與底層傳輸隔離的同時統一邏輯。

1.0 版本

它於 2005 年 4 月釋出,包含許多傳輸。其後許多其他版本的重點是除錯和新增新功能。

2.0 版本(採用 Spring 2)

Mule 2 採用了 Spring 2 作為配置和接線框架,但由於所需 XML 配置缺乏表達性,這被證明是一次重大改動。當 Spring 2 中引入了基於 XML Schema 的配置後,這個問題得到了解決。

使用 Maven 構建

簡化 Mule 使用(在開發和部署時)的最大改進是使用 Maven。從 1.3 版本開始,它開始使用 Maven 構建。

MuleSource

2006 年,MuleSource 公司成立,“以幫助支援和啟用快速發展的社群,在關鍵任務型企業應用程式中使用 Mule”。這被證明是 Mule 專案的關鍵里程碑。

Mule ESB 的競爭對手

以下是 Mule ESB 的一些主要競爭對手:

  • WSO2 ESB
  • Oracle Service Bus
  • WebSphere Message Broker
  • Aurea CX Platform
  • Fiorano ESB
  • WebSphere DataPower Gateway
  • Workday Business Process Framework
  • Talend Enterprise Service Bus
  • JBoss Enterprise Service Bus
  • iWay Service Manager

Mule 的核心概念

如上所述,Mule ESB 是一個基於 Java 的輕量級且高度可擴充套件的企業服務匯流排 (ESB) 和整合平臺。無論應用程式使用什麼技術,Mule ESB 都能輕鬆整合應用程式,使它們能夠交換資料。在本節中,我們將討論 Mule 的核心概念,這些概念使這種整合成為可能。

為此,我們需要了解其架構以及構建塊。

架構

Mule ESB 的架構具有三個層,即傳輸層、整合層和應用程式層,如下圖所示:

Mule Core Concept

通常,可以執行以下三種類型的任務來配置和自定義 Mule 部署:

服務元件開發

此任務涉及開發或重用現有的 POJO 或 Spring Bean。POJO 是一個帶有屬性的類,它生成 get 和 set 方法,雲聯結器。另一方面,Spring Bean 包含用於豐富訊息的業務邏輯。

服務編排

此任務基本上提供了服務中介,其中涉及配置訊息處理器、路由器、轉換器和過濾器。

整合

Mule ESB 的最重要任務是整合各種應用程式,而不管它們使用的協議如何。為此,Mule 提供了允許在各種協議聯結器上接收和排程訊息的傳輸方法。Mule 支援許多現有的傳輸方法,或者我們也可以使用自定義傳輸方法。

構建塊

Mule 配置具有以下構建塊:

Building Blocks

Spring bean

Spring Bean 的主要用途是構建服務元件。構建 Spring 服務元件後,可以透過配置檔案定義它,如果沒有配置檔案,也可以手動定義。

代理 (Agents)

它本質上是在 Anypoint Studio(Mule Studio 之前的版本)中建立的服務。代理在啟動伺服器時建立,並在停止伺服器時銷燬。

聯結器 (Connector)

它是一個軟體元件,配置了特定於協議的引數。主要用於控制協議的使用。例如,JMS 聯結器配置了連線,此聯結器將在負責實際通訊的各種實體之間共享。

全域性配置 (Global Configuration)

顧名思義,此構建塊用於設定全域性屬性和設定。

全域性端點 (Global Endpoints)

它可以在“全域性元素”選項卡中使用,可以在流程中多次使用。

全域性訊息處理器 (Global Message Processor)

顧名思義,它觀察或修改訊息或訊息流。轉換器和過濾器是全域性訊息處理器的示例。

轉換器 (Transformers) − 轉換器的主要工作是將資料從一種格式轉換為另一種格式。它可以在全域性定義,並可以在多個流程中使用。

過濾器 (Filters) − 它是一個過濾器,用於決定應處理哪個 Mule 訊息。過濾器基本上指定了必須滿足才能處理訊息並將其路由到服務的條件。

模型 (Models)

與代理相反,它是 studio 中建立的服務的邏輯分組。我們可以自由地啟動和停止特定模型內的所有服務。

服務 (Services) − 服務是封裝我們的業務邏輯或元件的服務。它還專門為該服務配置路由器、端點、轉換器和過濾器。

端點 (Endpoints) − 可以將其定義為服務將傳入(接收)和傳出(傳送)訊息的物件。服務透過端點連線。

流程 (Flow)

訊息處理器使用流程來定義源和目標之間的訊息流。

Mule 訊息結構 (Mule Message Structure)

Mule 訊息完全封裝在 Mule 訊息物件中,它是透過 Mule 流程傳遞應用程式的資料。Mule 訊息的結構如下圖所示:

Message Structure

如上圖所示,Mule 訊息主要包含兩部分:

報頭 (Header)

它只是訊息的元資料,由以下兩個屬性進一步表示:

輸入屬性 (Inbound Properties) − 這些是由訊息源自動設定的屬性。使用者無法操作或設定它們。本質上,輸入屬性是不可變的。

輸出屬性 (Outbound Properties) − 這些屬性包含類似於輸入屬性的元資料,可以在流程過程中設定。它們可以由 Mule 自動設定,也可以由使用者手動設定。本質上,輸出屬性是可變的。

當訊息透過傳輸從一個流程的輸出端點傳遞到另一個流程的輸入端點時,輸出屬性將變為輸入屬性。

當訊息透過 flow-ref 而不是聯結器傳遞到新流程時,輸出屬性將保持為輸出屬性。

有效負載 (Payload)

訊息物件攜帶的實際業務訊息稱為有效負載。

變數 (Variables)

可以將其定義為關於訊息的使用者定義元資料。基本上,變數是處理訊息的應用程式使用的關於訊息的臨時資訊片段。它並非旨在與訊息一起傳遞到其目的地。它有以下三種類型:

流程變數 (Flow variables) − 這些變數僅適用於它們所在的流程。

會話變數 (Session variables) − 這些變數適用於同一應用程式中的所有流程。

記錄變數 (Record variables) − 這些變數僅適用於作為批處理一部分處理的記錄。

附件和額外有效負載 (Attachments and Extra Payload)

這些是關於訊息有效負載的一些額外元資料,並不一定每次都出現在訊息物件中。

MuleSoft - Mule 在我們的機器中

在前面的章節中,我們學習了 Mule ESB 的基礎知識。在本節中,讓我們學習如何安裝和配置它。

先決條件 (Prerequisites)

在計算機上安裝 Mule 之前,我們需要滿足以下先決條件:

Java 開發工具包 (JDK)

在安裝 MULE 之前,請驗證系統中是否有受支援版本的 Java。建議使用 JDK 1.8.0 來成功安裝 Mule。

作業系統 (Operating System)

Mule 支援以下作業系統:

  • MacOS 10.11.x
  • HP-UX 11iV3
  • AIX 7.2
  • Windows 2016 Server
  • Windows 2012 R2 Server
  • Windows 10
  • Windows 8.1
  • Solaris 11.3
  • RHEL 7
  • Ubuntu Server 18.04
  • Linux 核心 3.13+

資料庫 (Database)

不需要應用程式伺服器或資料庫,因為 Mule Runtime 作為獨立伺服器執行。但是,如果我們需要訪問資料儲存或想要使用應用程式伺服器,可以使用以下受支援的應用程式伺服器或資料庫:

  • Oracle 11g
  • Oracle 12c
  • MySQL 5.5+
  • IBM DB2 10
  • PostgreSQL 9
  • Derby 10
  • Microsoft SQL Server 2014

系統要求 (System Requirements)

在系統上安裝 Mule 之前,它必須滿足以下系統要求:

  • 至少 2 GHz CPU 或虛擬化環境中的 1 個虛擬 CPU
  • 至少 1 GB RAM
  • 至少 4 GB 儲存空間

下載 Mule (Download Mule)

要下載 Mule 4 二進位制檔案,請單擊連結 https://www.mulesoft.com/lp/dl/mule-esb-enterprise,它將引導您進入 MuleSoft 的官方網頁:

Download Mule

提供必要的詳細資訊後,您可以獲得 Zip 格式的 Mule 4 二進位制檔案。

安裝和執行 Mule (Install and Run Mule)

現在下載 Mule 4 二進位制檔案後,將其解壓縮併為解壓縮資料夾內的 Mule 目錄設定名為MULE_HOME的環境變數。

例如,在 Windows 和 Linux/Unix 環境中,可以為 Downloads 目錄中的 4.1.5 版本設定環境變數,如下所示:

Windows 環境

$ env:MULE_HOME=C:\Downloads\mule-enterprise-standalone-4.1.5\

Unix/Linux 環境

$ export MULE_HOME=~/Downloads/mule-enterprise-standalone-4.1.5/

現在,要測試 Mule 是否在系統中無錯誤地執行,請使用以下命令:

Windows 環境

$ $MULE_HOME\bin\mule.bat

Unix/Linux 環境

$ $MULE_HOME/bin/mule

以上命令將在前臺模式下執行 Mule。如果 Mule 正在執行,則無法在終端上發出任何其他命令。按終端中的ctrl-c命令將停止 Mule。

啟動 Mule 服務 (Start Mule Services)

我們可以將 Mule 作為 Windows 服務和 Linux/Unix 守護程式啟動。

Mule 作為 Windows 服務

要將 Mule 作為 Windows 服務執行,我們需要按照以下步驟操作:

步驟 1 − 首先,使用以下命令安裝它:

$ $MULE_HOME\bin\mule.bat install

步驟 2 − 安裝後,我們可以使用以下命令將 mule 作為 Windows 服務執行

$ $MULE_HOME\bin\mule.bat start

Mule 作為 Linux/Unix 守護程式

要將 Mule 作為 Linux/Unix 守護程式執行,我們需要按照以下步驟操作:

步驟 1 − 使用以下命令安裝它:

$ $MULE_HOME/bin/mule install

步驟 2 − 安裝後,我們可以使用以下命令將 mule 作為 Windows 服務執行:

$ $MULE_HOME/bin/mule start

示例 (Example)

以下示例將 Mule 作為 Unix 守護程式啟動:

$ $MULE_HOME/bin/mule start
MULE_HOME is set to ~/Downloads/mule-enterprise-standalone-4.1.5
MULE_BASE is set to ~/Downloads/mule-enterprise-standalone-4.1.5
Starting Mule Enterprise Edition...
Waiting for Mule Enterprise Edition.................
running: PID:87329

部署 Mule 應用程式 (Deploy Mule Apps)

我們可以透過以下步驟部署 Mule 應用程式:

步驟 1 − 首先,啟動 Mule。

步驟 2 − Mule 啟動後,我們可以透過將 JAR 包檔案移動到$MULE_HOME中的apps目錄來部署 Mule 應用程式。

停止 Mule 服務 (Stop Mule Services)

我們可以使用stop命令停止 Mule。例如,以下示例將 Mule 作為 Unix 守護程式啟動:

$ $MULE_HOME/bin/mule stop
MULE_HOME is set to /Applications/mule-enterprise-standalone-4.1.5
MULE_BASE is set to /Applications/mule-enterprise-standalone-4.1.5
Stopping Mule Enterprise Edition...
Stopped Mule Enterprise Edition.

我們還可以使用remove命令從系統中刪除 Mule 服務或守護程式。以下示例刪除作為 Unix 守護程式的 Mule:

$ $MULE_HOME/bin/mule remove
MULE_HOME is set to /Applications/mule-enterprise-standalone-4.1.5
MULE_BASE is set to /Applications/mule-enterprise-standalone-4.1.5
Detected Mac OSX:
Mule Enterprise Edition is not running.
Removing Mule Enterprise Edition daemon...

MuleSoft - Anypoint Studio

MuleSoft 的 Anypoint Studio 是一個使用者友好的IDE(整合開發環境),用於設計和測試 Mule 應用程式。它是一個基於 Eclipse 的 IDE。我們可以輕鬆地從 Mule 調色盤中拖動聯結器。換句話說,Anypoint Studio 是一個基於 Eclipse 的 IDE,用於開發流程等。

先決條件 (Prerequisites)

在所有作業系統(即 Windows、Mac 和 Linux/Unix)上安裝 Mule 之前,我們需要滿足以下先決條件。

Java 開發工具包 (JDK) − 在安裝 Mule 之前,請驗證系統中是否有受支援版本的 Java。建議使用 JDK 1.8.0 來成功安裝 Anypoint。

下載和安裝 Anypoint Studio (Downloading and Installing Anypoint Studio)

在不同的作業系統上下載和安裝 Anypoint Studio 的過程可能會有所不同。接下來,以下是下載和安裝 Anypoint Studio 的步驟:

在 Windows 上

要在 Windows 上下載和安裝 Anypoint Studio,我們需要按照以下步驟操作:

步驟 1 − 首先,單擊連結 https://www.mulesoft.com/lp/dl/studio,並從下拉列表中選擇 Windows 作業系統以下載 studio。

Download Anypoint Studio

步驟 2 − 現在,將其解壓縮到‘C:\’根資料夾。

步驟 3 − 開啟解壓縮的 Anypoint Studio。

步驟 4 − 要接受預設工作區,請單擊“確定”。首次載入時,您將收到歡迎訊息。

步驟 5 − 現在,單擊“開始使用”按鈕以使用 Anypoint Studio。

在 OS X 上

要在 OS X 上下載和安裝 Anypoint Studio,我們需要按照以下步驟操作:

步驟 1 − 首先,單擊連結https://www.mulesoft.com/lp/dl/studio 並下載 studio。

Download Anypoint Studio on OS X

步驟 2 − 現在,將其解壓縮。如果您使用的是 OS Sierra 版本,請確保在啟動之前將解壓縮的應用程式移動到/Applications 資料夾

步驟 3 − 開啟解壓縮的 Anypoint Studio。

步驟 4 − 要接受預設工作區,請單擊“確定”。首次載入時,您將收到歡迎訊息。

步驟 5 − 現在,單擊開始使用按鈕以使用 Anypoint Studio。

如果您要將自定義路徑用於您的工作區,請注意 Anypoint Studio 不會擴充套件 Linux/Unix 系統中使用的 ~ 波浪號。因此,建議在定義工作區時使用絕對路徑。

在 Linux 上

要在 Linux 上下載和安裝 Anypoint Studio,我們需要按照以下步驟操作:

步驟 1 − 首先,單擊連結 https://www.mulesoft.com/lp/dl/studio,並從下拉列表中選擇 Linux 作業系統以下載 studio。

Download on Linux

步驟 2 − 現在,將其解壓縮。

步驟 3 − 接下來,開啟解壓縮的 Anypoint Studio。

步驟 4 − 要接受預設工作區,請單擊“確定”。首次載入時,您將收到歡迎訊息。

步驟 5 − 現在,單擊“開始使用”按鈕以使用 Anypoint Studio。

如果您要將自定義路徑用於您的工作區,請注意 Anypoint Studio 不會擴充套件 Linux/Unix 系統中使用的 ~ 波浪號。因此,建議在定義工作區時使用絕對路徑。

還建議安裝 GTK 版本 2 以在 Linux 中使用完整的 Studio 主題。

Anypoint Studio 的功能 (Features of Anypoint Studio)

以下是 Anypoint studio 的一些功能,可在構建 Mule 應用程式時提高生產力:

  • 它可以在本地執行時內立即執行 Mule 應用程式。

  • Anypoint studio 為我們提供了用於配置 API 定義檔案和 Mule 域的視覺化編輯器。

  • 它內嵌了單元測試框架,提高了生產力。

  • Anypoint Studio 提供了內建支援,可以直接部署到 CloudHub。

  • 它可以與 Exchange 整合,用於從其他 Anypoint Platform 組織匯入模板、示例、定義和其他資源。

MuleSoft - 探索 Anypoint Studio

Anypoint Studio 編輯器幫助我們設計應用程式、API、屬性和配置檔案。除了設計之外,它還幫助我們編輯它們。為此,我們有 Mule 配置檔案編輯器。要開啟此編輯器,請雙擊 **`/src/main/mule`** 中的應用程式 XML 檔案。

要使用我們的應用程式,Mule 配置檔案編輯器下有以下三個選項卡。

訊息流選項卡

此選項卡以視覺化方式顯示工作流程。它基本上包含一個畫布,幫助我們視覺化地檢查流程。如果要將 Mule 調色盤中的事件處理器新增到畫布中,只需拖放即可,它將反映在畫布中。

The Message Flow Tab

單擊事件處理器,即可獲取包含所選處理程式屬性的 Mule 屬性檢視。我們也可以編輯它們。

全域性元素選項卡

此選項卡包含模組的全域性 Mule 配置元素。在此選項卡下,我們可以建立、編輯或刪除配置檔案。

Global Elements Tab

配置 XML 選項卡

顧名思義,它包含定義 Mule 應用程式的 XML。在此處進行的所有更改都將反映在畫布以及訊息流選項卡下事件處理器的屬性檢視中。

Configuration XML Tab

檢視

對於活動編輯器,Anypoint Studio 透過檢視幫助我們以圖形方式顯示專案元資料和屬性。使用者可以移動、關閉以及在 Mule 專案中新增檢視。以下是 Anypoint Studio 中的一些預設檢視:

包資源管理器

包資源管理器檢視的主要任務是顯示 Mule 專案中包含的專案資料夾和檔案。我們可以透過單擊專案旁邊的箭頭來展開或摺疊 Mule 專案資料夾。可以透過雙擊開啟資料夾或檔案。請檢視其截圖:

Package Explorer

Mule 調色盤

Mule 調色盤檢視顯示事件處理器(例如作用域、過濾器和流控制路由器)以及模組及其相關操作。Mule 調色盤檢視的主要任務如下:

  • 此檢視幫助我們管理專案中的模組和聯結器。
  • 我們還可以從 Exchange 新增新元素。

請檢視其截圖:

Mule Palette

Mule 屬性

顧名思義,它允許我們編輯當前在畫布中選擇的模組的屬性。Mule 屬性檢視包括以下內容:

  • DataSense 資源管理器,提供有關有效負載資料結構的即時資訊。

  • 如有可用,則為輸入和輸出屬性或變數。

以下是截圖:

Mule Properties

控制檯

每當我們建立或執行 Mule 應用程式時,嵌入式 Mule 伺服器都會顯示 Studio 報告的事件和問題列表(如果有)。控制檯檢視包含該嵌入式 Mule 伺服器的控制檯。請檢視其截圖:

Console

問題檢視

在處理 Mule 專案時,我們可能會遇到許多問題。所有這些問題都顯示在問題檢視中。以下是截圖:

Problems View

透檢視

在 Anypoint Studio 中,它是在特定排列中的一組檢視和編輯器。Anypoint Studio 中有兩種型別的透檢視:

**Mule 設計透檢視** - 這是我們在 Studio 中獲得的預設透檢視。

**Mule 除錯透檢視** - Anypoint Studio 提供的另一個透檢視是 Mule 除錯透檢視。

另一方面,我們還可以建立自己的透檢視,並可以新增或刪除任何預設檢視。

MuleSoft - 建立第一個 Mule 應用程式

在本章中,我們將使用 MuleSoft 的 Anypoint Studio 建立第一個 Mule 應用程式。要建立它,首先我們需要啟動 Anypoint Studio。

啟動 Anypoint Studio

單擊 Anypoint Studio 啟動它。如果這是第一次啟動,您將看到以下視窗:

Launching Anypoint Studio

Anypoint Studio 的使用者介面

單擊“轉到工作區”按鈕後,您將進入 Anypoint Studio 的使用者介面,如下所示:

User Interface of anypoint Studio

建立 Mule 應用程式的步驟

要建立 Mule 應用程式,請按照以下步驟操作:

建立新專案

建立 Mule 應用程式的第一步是建立一個新專案。這可以透過按照路徑 **檔案 → 新建 → Mule 專案** 來完成,如下所示:

Steps for Creating Mule Application

命名專案

如上所述,單擊新的 Mule 專案後,將開啟一個新視窗,要求輸入專案名稱和其他規範。為專案命名為“**TestAPP1**”,然後單擊“完成”按鈕。

Naming the Project

單擊“完成”按鈕後,將開啟為您的 Mule 專案(即“**TestAPP1**”)構建的工作區。您可以看到上一章中描述的所有**編輯器**和**檢視**。

TestAPP1

配置聯結器

在這裡,我們將為 HTTP 偵聽器構建一個簡單的 Mule 應用程式。為此,我們需要將 HTTP 偵聽器聯結器從 Mule 調色盤拖放到工作區中,如下所示:

Configuring the Connector

現在,我們需要配置它。單擊基本設定下的聯結器配置後的綠色“+”號,如上所示。

HTTP Listener Configuration

單擊“確定”後,它將帶您返回 HTTP 偵聽器屬性頁面。現在我們需要在“常規”選項卡下提供路徑。在此特定示例中,我們提供了“** /FirstAPP**”作為路徑名稱。

FirstApp Path Name

配置設定有效負載聯結器

現在,我們需要使用“設定有效負載”聯結器。我們還需要在“設定”選項卡下提供其值,如下所示:

Payload Connector

在此示例中提供的名稱是“**這是一個我的第一個 Mule 應用程式**”。

執行 Mule 應用程式

現在,儲存它並單擊“作為 Mule 應用程式執行”,如下所示:

Run as Mule Application

我們可以在控制檯中檢查它,它會部署應用程式,如下所示:

First Mule Application

這表明您已成功構建了第一個 Mule 應用程式。

驗證 Mule 應用程式

現在,我們需要測試我們的應用程式是否正在執行。**轉到 POSTMAN**(一個 Chrome 應用程式),輸入 URL:**http:/localhost:8081**。它顯示了我們在構建 Mule 應用程式時提供的訊息,如下所示:

Verifying Mule Application

MuleSoft - DataWeave 語言

DataWeave 本質上是一種 MuleSoft 表示式語言。它主要用於訪問和轉換透過 Mule 應用程式接收的資料。Mule 執行時負責執行我們 Mule 應用程式中的指令碼和表示式,DataWeave 與 Mule 執行時緊密整合。

DataWeave 語言的特性

以下是 DataWeave 語言的一些重要特性:

資料可以很容易地從一種格式轉換為另一種格式。例如,我們可以將 application/json 轉換為 application/xml。輸入有效負載如下:

{
   "title": "MuleSoft",
   "author": " tutorialspoint.com ",
   "year": 2019
}

以下是 DataWeave 的轉換程式碼:

%dw 2.0
output application/xml
---
{
   order: {
      'type': 'Tutorial', 
      'title': payload.title, 
      'author': upper(payload.author), 
      'year': payload.year
   }
}

接下來,**輸出**有效負載如下:

<?xml version = '1.0' encoding = 'UTF-8'?>
<order>
   <type>Tutorial</type>
   <title>MuleSoft</title>
   <author>tutorialspoint.com</author>
   <year>2019</year>
</order>

轉換元件可用於建立執行簡單和複雜資料轉換的指令碼。

我們可以訪問和使用我們需要的大多數 Mule 訊息處理器支援 DataWeave 表示式,從而在 Mule 事件的部分上使用核心 DataWeave 函式。

先決條件 (Prerequisites)

在我們的計算機上使用 DataWeave 指令碼之前,我們需要滿足以下先決條件:

  • 需要 Anypoint Studio 7 來使用 DataWeave 指令碼。

  • 安裝 Anypoint Studio 後,我們需要設定一個包含轉換訊息元件的專案才能使用 DataWeave 指令碼。

使用 DataWeave 指令碼(帶示例)的步驟

要使用 DataWeave 指令碼,我們需要按照以下步驟操作:

步驟 1

首先,我們需要像上一章那樣,使用**檔案 → 新建 → Mule 專案**設定一個新專案。

步驟 2

接下來,我們需要提供專案的名稱。對於此示例,我們將其命名為“**Mule_test_script**”。

步驟 3

現在,我們需要將**轉換訊息元件**從**Mule 調色盤選項卡**拖到**畫布**中。如下所示:

DataWeave Script

步驟 4

接下來,在**轉換訊息元件**選項卡中,單擊“預覽”以開啟“預覽”窗格。我們可以透過單擊“預覽”旁邊的空矩形來展開原始碼區域。

步驟 5

現在,我們可以開始使用 DataWeave 語言編寫指令碼了。

示例 (Example)

以下是將兩個字串連線成一個字串的簡單示例:

Transform Message Component

上述 DataWeave 指令碼具有鍵值對**({ myString: ("hello" ++ "World") })**,它將把兩個字串連線成一個字串。

MuleSoft - 訊息處理器和指令碼元件

指令碼模組使使用者能夠在 Mule 中使用指令碼語言。簡單來說,指令碼模組可以交換用指令碼語言編寫的自定義邏輯。指令碼可以用作實現或轉換器。它們可用於表示式計算,即用於控制訊息路由。

Mule 支援以下指令碼語言:

  • Groovy
  • Python
  • JavaScript
  • Ruby

如何安裝指令碼模組?

實際上,Anypoint Studio 自帶指令碼模組。如果在 Mule 調色盤中找不到該模組,則可以使用“+ 新增模組”來新增它。新增後,我們可以在 Mule 應用程式中使用指令碼模組操作。

實現示例

如前所述,我們需要將模組拖放到畫布中以建立工作區並在我們的應用程式中使用它。以下是一個示例:

Install Scripting Modules

我們已經知道如何配置 HTTP 偵聽器元件;因此,我們將討論如何配置指令碼模組。我們需要按照以下步驟配置指令碼模組:

步驟 1

從 Mule 調色盤搜尋指令碼模組,並將指令碼模組的**EXECUTE**操作拖到您的流中,如上所示。

步驟 2

現在,透過雙擊開啟“執行”配置選項卡。

步驟 3

在**常規**選項卡下,我們需要在**程式碼文字視窗**中提供程式碼,如下所示:

Code Text Window

步驟 4

最後,我們需要從執行元件中選擇**引擎**。引擎列表如下:

  • Groovy
  • Nashorn(javaScript)
  • jython(Python)
  • jRuby(Ruby)

以上執行示例在配置XML編輯器中的XML如下:

<scripting:execute engine="jython" doc:name = "Script">
   <scripting:code>
      def factorial(n):
         if n == 0: return 1
      return n * factorial(n-1)
      result = factorial(10)
   </scripting:code>
</scripting:execute>

訊息來源

Mule 4 的訊息模型比 Mule 3 簡化,使跨聯結器以一致的方式處理資料更容易,而不會覆蓋資訊。在 Mule 4 訊息模型中,每個 Mule 事件包含兩部分:**一條訊息及其關聯的變數**。

Mule 訊息包含有效負載及其屬性,其中屬性主要是元資料,例如檔案大小。

變數儲存任意使用者資訊,例如操作結果、輔助值等。

輸入

Mule 3 中的輸入屬性在 Mule 4 中變為屬性。我們知道輸入屬性儲存透過訊息源獲得的有效負載的附加資訊,但在 Mule 4 中,這是藉助屬性完成的。屬性具有以下優點:

  • 藉助屬性,我們可以輕鬆檢視哪些資料可用,因為屬性是強型別的。

  • 我們可以輕鬆訪問屬性中包含的資訊。

以下是 Mule 4 中典型訊息的示例:

Inbound

輸出

Mule 3 中的輸出屬性必須由 Mule 聯結器和傳輸顯式指定才能傳送附加資料。但在 Mule 4 中,可以使用 DataWeave 表示式分別設定每個屬性。它不會對主流程產生任何副作用。

例如,下面的 DataWeave 表示式將執行 HTTP 請求並生成標頭和查詢引數,而無需設定訊息屬性。這在下面的程式碼中顯示:

<http:request path = "M_issue" config-ref="http" method = "GET">
   <http:headers>#[{'path':'input/issues-list.json'}]</http:headers>
   <http:query-params>#[{'provider':'memory-provider'}]</http:query-params>
</http:request>

訊息處理器

Mule 從訊息源接收訊息後,訊息處理器的處理開始。Mule 使用一個或多個訊息處理器透過流程處理訊息。訊息處理器的主要任務是在訊息透過 Mule 流程時轉換、過濾、豐富和處理訊息。

Mule 處理器的分類

以下是基於功能的 Mule 處理器類別:

  • **聯結器** - 這些訊息處理器傳送和接收資料。它們還透過標準協議或第三方 API 將資料插入外部資料來源。

  • **元件** - 這些訊息處理器本質上很靈活,並且執行以各種語言(如 Java、JavaScript、Groovy、Python 或 Ruby)實現的業務邏輯。

  • **過濾器** - 它們過濾訊息,並僅允許基於特定條件繼續在流程中處理特定訊息。

  • **路由器** - 此訊息處理器用於控制訊息流的路由、重新排序或拆分。

  • **作用域** - 它們基本上包裝程式碼片段,用於定義流程內的細粒度行為。

  • **轉換器** - 轉換器的作用是轉換訊息有效負載型別和資料格式,以促進系統之間的通訊。

  • **業務事件** - 它們基本上捕獲與關鍵績效指標相關的資料。

  • **異常策略** - 這些訊息處理器處理訊息處理期間發生的任何型別的錯誤。

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(*tracking: meta-data* 元素)提供一個名稱(鍵)和一個值。該名稱將用於執行時管理器的搜尋介面。

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

示例 (Example)

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

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

動態評估

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

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

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

示例 (Example)

以下是如何透過 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>

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

配置動態評估

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

欄位 描述 示例 (Example)
表示式 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 事件完成執行引用流程後,它將返回到主流程。

示例 (Example)

為了更好地理解,**讓我們在 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 表示式的輸出。
  • 我們還可以將其配置為字串和表示式的任意組合。

示例 (Example)

下面的示例在瀏覽器中顯示“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 列名和型別
  • 固定寬度列名和型別

MuleSoft - 端點

端點基本上包括那些觸發或啟動 Mule 應用程式工作流程中處理的元件。它們在 Anypoint Studio 中稱為,在 Mule 的設計中心中稱為觸發器。Mule 4 中一個重要的端點是排程程式元件

排程程式端點

此元件基於時間條件工作,這意味著它使我們能夠在滿足基於時間的條件時觸發流程。例如,排程程式可以觸發一個事件,以每隔 10 秒啟動一個 Mule 工作流程。我們還可以使用靈活的 Cron 表示式來觸發排程程式端點。

關於排程程式的重要提示

使用排程程式事件時,需要注意以下幾點:

  • 排程程式端點遵循 Mule 執行時執行的機器的時區。

  • 假設 Mule 應用程式在 CloudHub 上執行,則排程程式將遵循 CloudHub 工作程式執行的區域的時區。

  • 在任何給定時間,只有一個由排程程式端點觸發的流程可以處於活動狀態。

  • 在 Mule 執行時叢集中,排程程式端點僅在主節點上執行或觸發。

配置排程程式的方法

如上所述,我們可以將排程程式端點配置為以固定間隔觸發,也可以提供 Cron 表示式。

配置排程程式的引數(對於固定間隔)

以下是將排程程式設定為定期觸發流程的引數:

頻率 - 它基本上描述了排程程式端點將觸發 Mule 流程的頻率。此時間單位可以從時間單位欄位中選擇。如果您沒有為此提供任何值,它將使用預設值 1000。另一方面,如果您提供 0 或負值,它也將使用預設值。

啟動延遲 - 這是應用程式啟動後第一次觸發 Mule 流程之前必須等待的時間量。啟動延遲的值以與頻率相同的時間單位表示。其預設值為 0。

時間單位 - 它描述了頻率和啟動延遲的時間單位。時間單位的可能值為毫秒、秒、分鐘、小時、天。預設值為毫秒。

配置排程程式的引數(對於 Cron 表示式)

實際上,Cron 是用於描述時間和日期資訊的標準。如果您使用靈活的 Cron 表示式來使排程程式觸發,則排程程式端點會跟蹤每一秒,並在 Quartz Cron 表示式與時間日期設定匹配時建立一個 Mule 事件。使用 Cron 表示式,事件可以只觸發一次或定期觸發。

下表給出了六個必需設定的日期時間表達式:

屬性
0-59
分鐘 0-59
小時 0-23
月份中的某一天 1-31
月份 1-12 或 JAN-DEC
星期幾 1-7 或 SUN-SAT

以下是一些排程程式端點支援的 Quartz Cron 表示式的示例:

  • ½ * * * * ? - 表示排程程式每天每 2 秒執行一次。

  • 0 0/5 16 ** ? - 表示排程程式從下午 4 點開始,每 5 分鐘執行一次,直到下午 4:55,每天如此。

  • 1 1 1 1, 5 * ? - 表示排程程式每年的一月一日和四月一日執行。

示例 (Example)

以下程式碼每秒記錄一次“hi”訊息:

<flow name = "cronFlow" doc:id = "ae257a5d-6b4f-4006-80c8-e7c76d2f67a0">
   <doc:name = "Scheduler" doc:id = "e7b6scheduler8ccb-c6d8-4567-87af-aa7904a50359">
      <scheduling-strategy>
         <cron expression = "* * * * * ?" timeZone = "America/Los_Angeles"/>
      </scheduling-strategy>
   </scheduler>
   <logger level = "INFO" doc:name = "Logger" 
      doc:id = "e2626dbb-54a9-4791-8ffa-b7c9a23e88a1" message = '"hi"'/>
</flow>

MuleSoft - 流程控制和轉換器

流程控制(路由器)

流程控制組件的主要任務是獲取輸入 Mule 事件並將其路由到一個或多個單獨的元件序列。它基本上是將輸入 Mule 事件路由到其他元件序列。因此,它也稱為路由器。選擇和散射-收集路由器是流程控制組件中最常用的路由器。

選擇路由器

顧名思義,此路由器應用 DataWeave 邏輯來選擇兩條或多條路由中的一條。如前所述,每條路由都是 Mule 事件處理程式的一個單獨序列。我們可以將選擇路由器定義為根據用於評估訊息內容的一組 DataWeave 表示式動態地透過流程路由訊息的路由器。

選擇路由器的示意圖

使用選擇路由器的效果就像在流程中新增條件處理或在大多數程式語言中新增if/then/else程式碼塊一樣。以下是具有三個選項的選擇路由器的示意圖。其中一個是預設路由器。

Choice Router

散射-收集路由器

另一個最常用的路由事件處理器是散射-收集元件。顧名思義,它基於散射(複製)和收集(合併)的基本原理。我們可以透過以下兩點來了解其工作原理:

  • 首先,此路由器將 Mule 事件複製(散射)到兩條或多條並行路由。條件是每條路由必須是一條或多條事件處理程式的序列,這就像一個子流程。在這種情況下,每條路由都將使用單獨的執行緒建立 Mule 事件。每個 Mule 事件都將擁有自己的有效負載、屬性和變數。

  • 接下來,此路由器從每條路由收集建立的 Mule 事件,然後將它們合併到一個新的 Mule 事件中。之後,它將此合併的 Mule 事件傳遞給下一個事件處理器。這裡的條件是,只有當每條路由都成功完成時,S-G 路由器才會將合併的 Mule 事件傳遞給下一個事件處理器。

散射-收集路由器的示意圖

以下是具有四個事件處理器的散射-收集路由器的示意圖。它並行執行每條路由,而不是順序執行。

Scatter Gather Router

散射-收集路由器的錯誤處理

首先,我們必須瞭解散射-收集元件中可能生成的錯誤型別。事件處理器中可能生成任何錯誤,導致散射-收集元件丟擲型別為Mule: COMPOSITE_ERROR的錯誤。此錯誤僅在每條路由失敗或完成之後才會由 S-G 元件丟擲。

為了處理此錯誤型別,可以在散射-收集元件的每條路由中使用try 範圍。如果try 範圍成功處理了錯誤,則路由肯定能夠生成 Mule 事件。

轉換器

假設我們想要設定或刪除任何 Mule 事件的一部分,轉換器元件是最佳選擇。轉換器元件的型別如下:

刪除變數轉換器

顧名思義,此元件獲取變數名並從 Mule 事件中刪除該變數。

配置刪除變數轉換器

下表顯示了配置刪除變數轉換器時需要考慮的欄位名稱及其說明:

序號 欄位和說明
1

顯示名稱 (doc:name)

我們可以自定義它以在我們的 Mule 工作流程中顯示此元件的唯一名稱。

2

名稱 (variableName)

它表示要刪除的變數的名稱。

設定有效負載轉換器

藉助set-payload元件,我們可以更新有效負載(可以是文字字串或 DataWeave 表示式)的訊息。不建議將此元件用於複雜的表示式或轉換。它可以用於簡單的選擇。

下表顯示了配置設定有效負載轉換器時需要考慮的欄位名稱及其說明:

欄位 用法 說明
值 (value) 必需 值欄位是設定有效負載所必需的。它將接受文字字串或 DataWeave 表示式,用於定義如何設定有效負載。示例例如“some string”。
MIME 型別 (mimeType) 可選 它是可選的,但表示分配給訊息有效負載的值的 MIME 型別。示例例如 text/plain。
編碼 (encoding) 可選 它也是可選的,但表示分配給訊息有效負載的值的編碼。示例例如 UTF-8。

我們可以透過 XML 配置程式碼設定有效負載:

使用靜態內容 - 以下 XML 配置程式碼將使用靜態內容設定有效負載:

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

使用表示式內容 - 以下 XML 配置程式碼將使用表示式內容設定有效負載:

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

上述示例將今天的日期附加到訊息有效負載“Hi”。

設定變數轉換器

藉助set variable元件,我們可以建立或更新變數以儲存值,這些值可以是簡單的文字值(如字串、訊息有效負載或屬性物件),以便在 Mule 應用程式的流程中使用。不建議將此元件用於複雜的表示式或轉換。它可以用於簡單的選擇。

配置設定變數轉換器

下表顯示了配置設定有效負載轉換器時需要考慮的欄位名稱及其說明:

欄位 用法 說明
變數名稱 (variableName) 必需 這是必需欄位,它表示變數的名稱。在給出名稱時,請遵循命名約定,例如它必須包含數字、字元和下劃線。
值 (value) 必需 值欄位是設定變數所必需的。它將接受文字字串或 DataWeave 表示式。
MIME 型別 (mimeType) 可選 它是可選的,但表示變數的 MIME 型別。示例例如 text/plain。
編碼 (encoding) 可選 它也是可選的,但表示變數的編碼。示例例如 ISO 10646/Unicode(UTF-8)。

示例 (Example)

以下示例將變數設定為訊息有效負載:

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

同樣,以下示例將變數設定為訊息有效負載:

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

MuleSoft - 使用 Anypoint Studio 的 Web 服務

REST Web 服務

REST 的全稱是表述性狀態轉移,它與 HTTP 繫結。因此,如果您想要設計一個專門在 Web 上使用的應用程式,REST 是最佳選擇。

使用 RESTful Web 服務

在下面的示例中,我們將使用 REST 元件和 MuleSoft 提供的一個公共 RESTful 服務,稱為美國航班詳細資訊。它包含各種詳細資訊,但我們將使用 GET:http://training-american-ws.cloudhub.io/api/flights ,它將返回所有航班詳細資訊。如前所述,REST 與 HTTP 繫結,因此此應用程式也需要兩個 HTTP 元件——一個是偵聽器,另一個是請求。下面的螢幕截圖顯示了 HTTP 偵聽器的配置:

Rest web Service

配置和傳遞引數

HTTP 請求的配置如下:

HTTP Request

現在,根據我們的工作區流程,我們使用了日誌記錄器,因此可以將其配置如下:

Convert the Payload

在訊息標籤中,我們編寫程式碼將有效負載轉換為字串。

應用程式測試

現在,儲存並執行應用程式,然後轉到POSTMAN檢查最終輸出,如下所示:

Testing the Application

您可以看到它使用REST元件提供航班詳細資訊。

SOAP元件

SOAP的全稱是**簡單物件訪問協議**(Simple Object Access Protocol)。它基本上是一個訊息協議規範,用於在Web服務的實現中交換資訊。接下來,我們將使用Anypoint Studio中的SOAP API透過Web服務訪問資訊。

使用基於SOAP的Web服務

在此示例中,我們將使用名為“國家資訊服務”(Country Info Service)的公共SOAP服務,該服務保留與國家資訊相關的服務。其WSDL地址為:http://www.oorsprong.org/websamples.countryinfo/countryinfoservice.wso?WSDL

首先,我們需要從Mule Palette中將SOAP使用者拖到畫布上,如下所示:

Consuming SOAP

配置和傳遞引數

接下來,我們需要像上面的示例一樣配置HTTP請求,如下所示:

Passing Arguments

現在,我們還需要配置Web服務使用者,如下所示:

Web Service Consumer

在WSDL位置處,我們需要提供上面提供的WSDL的Web地址(對於此示例)。提供Web地址後,Studio將自行搜尋服務、埠和地址。您無需手動提供。

從Web服務傳輸響應

為此,我們需要在Mule流中新增一個日誌記錄器並將其配置為提供有效負載,如下所示:

Transfer Responce

Responce from Web Service

應用程式測試

儲存並執行應用程式,然後轉到Google Chrome檢查最終輸出。鍵入**http://localhist:8081/helloSOAP**(此示例) ,它將按程式碼顯示國家名稱,如下面的螢幕截圖所示:

Final Output

MuleSoft - Mule 錯誤處理

新的Mule錯誤處理是Mule 4中最大和最重要的更改之一。新的錯誤處理可能看起來很複雜,但它更好且更高效。在本章中,我們將討論Mule錯誤的元件、錯誤型別、Mule錯誤的類別以及處理Mule錯誤的元件。

Mule錯誤的元件

Mule錯誤是Mule異常失敗的結果,具有以下元件:

描述

這是Mule錯誤的一個重要組成部分,它將提供關於問題的描述。其表示式如下:

#[error.description]

型別

Mule錯誤的“型別”元件用於描述問題。它還允許在錯誤處理程式內進行路由。其表示式如下:

#[error.errorType]

原因

Mule錯誤的“原因”元件提供了導致失敗的底層Java可丟擲物件。其表示式如下:

#[error.cause]

訊息

Mule錯誤的訊息元件顯示有關錯誤的可選訊息。其表示式如下:

#[error.errorMessage]

子錯誤

Mule錯誤的子錯誤元件提供內部錯誤的可選集合。這些內部錯誤主要由諸如Scatter-Gather之類的元素用於提供聚合的路由錯誤。其表示式如下:

#[error.childErrors]

示例 (Example)

如果HTTP請求以401狀態碼失敗,則Mule錯誤如下:

Description: HTTP GET on resource ‘https://:8181/TestApp’ 
failed: unauthorized (401)
Type: HTTP:UNAUTHORIZED
Cause: a ResponseValidatorTypedException instance
Error Message: { "message" : "Could not authorize the user." }
序號 錯誤型別和描述
1

轉換(TRANSFORMATION)

此錯誤型別表示在轉換值時發生錯誤。轉換是Mule執行時內部轉換,而不是DataWeave轉換。

2

表示式(EXPRESSION)

此錯誤型別表示在計算表示式時發生錯誤。

3

驗證(VALIDATION)

此錯誤型別表示發生驗證錯誤。

4

重複訊息(DUPLICATE_MESSAGE)

一種驗證錯誤,當訊息被處理兩次時發生。

5

重試耗盡(REDELIVERY_EXHAUSTED)

當從源重處理訊息的最大嘗試次數已用盡時,會發生此錯誤型別。

6

連線(CONNECTIVITY)

此錯誤型別表示在建立連線時出現問題。

7

路由(ROUTING)

此錯誤型別表示在路由訊息時發生錯誤。

8

安全(SECURITY)

此錯誤型別表示發生安全錯誤。例如,收到無效的憑據。

9

流最大大小超出(STREAM_MAXIMUM_SIZE_EXCEEDED)

當流允許的最大大小用盡時,會發生此錯誤型別。

10

超時(TIMEOUT)

它表示在處理訊息時超時。

11

未知(UNKNOWN)

此錯誤型別表示發生意外錯誤。

12

源(SOURCE)

它表示在流的源中發生錯誤。

13

源響應(SOURCE_RESPONSE)

它表示在流的源中處理成功響應時發生錯誤。

在上面的示例中,您可以看到mule錯誤的訊息元件。

錯誤型別

讓我們藉助其特徵來了解錯誤型別:

  • Mule錯誤型別的第一個特徵是它包含**名稱空間和識別符號**。這使我們能夠根據其域區分型別。在上面的示例中,錯誤型別是**HTTP: UNAUTHORIZED**。

  • 第二個重要特徵是錯誤型別可能具有父型別。例如,錯誤型別**HTTP: UNAUTHORIZED**具有**MULE:CLIENT_SECURITY**作為父型別,而**MULE:CLIENT_SECURITY**又具有名為**MULE:SECURITY**的父型別。此特徵將錯誤型別確立為更全域性專案的規範。

錯誤型別的種類

以下是所有錯誤所屬的類別:

任何(ANY)

此類別下的錯誤是在流中可能發生的錯誤。它們並不嚴重,可以輕鬆處理。

嚴重(CRITICAL)

此類別下的錯誤是無法處理的嚴重錯誤。以下是此類別下的錯誤型別列表:

序號 錯誤型別和描述
1

過載(OVERLOAD)

此錯誤型別表示由於過載問題而發生錯誤。在這種情況下,將拒絕執行。

2

致命JVM錯誤(FATAL_JVM_ERROR)

此錯誤型別表示發生致命錯誤。例如,堆疊溢位。

自定義錯誤型別(CUSTOM Error Type)

自定義錯誤型別是我們定義的錯誤。在對映或引發錯誤時可以定義它們。我們必須為這些錯誤型別提供特定的自定義名稱空間,以便將它們與Mule應用程式中的其他現有錯誤型別區分開來。例如,在使用HTTP的Mule應用程式中,我們不能使用HTTP作為自定義錯誤型別。

Mule錯誤的類別

廣義地說,Mule中的錯誤可以分為兩類,即**訊息錯誤和系統錯誤**。

訊息錯誤

此類Mule錯誤與Mule流有關。每當Mule流中出現問題時,Mule都會丟擲訊息錯誤。我們可以在錯誤處理程式元件內部設定出錯時(On Error)元件來處理這些Mule錯誤。

系統錯誤

系統錯誤表示在系統級別發生的異常。如果沒有Mule事件,則系統錯誤由系統錯誤處理程式處理。系統錯誤處理程式處理以下型別的異常:

  • 應用程式啟動期間發生的異常。
  • 連線到外部系統失敗時發生的異常。

如果發生系統錯誤,Mule會向註冊的偵聽器傳送錯誤通知。它還會記錄錯誤。另一方面,如果錯誤是由連線故障引起的,Mule將執行重新連線策略。

處理Mule錯誤

Mule有以下兩個錯誤處理程式來處理錯誤:

出錯時錯誤處理程式(On-Error Error Handlers)

第一個Mule錯誤處理程式是“出錯時”(On-Error)元件,它定義了可以處理的錯誤型別。如前所述,我們可以在類似作用域的錯誤處理程式元件內部配置“出錯時”元件。每個Mule流只包含一個錯誤處理程式,但是此錯誤處理程式可以包含任意數量的“出錯時”作用域。

  • 首先,每當Mule流引發錯誤時,正常的流執行都會停止。

  • 接下來,流程將轉移到已經具有“出錯時”元件以匹配錯誤型別和表示式的錯誤處理程式元件

  • 最後,錯誤處理程式元件將錯誤路由到匹配錯誤的第一個“出錯時”作用域

Handling Messaging

以下是Mule支援的兩種型別的“出錯時”元件:

出錯時傳播(On-Error Propagate)

“出錯時傳播”元件執行但會將錯誤傳播到下一級並中斷所有者的執行。如果由“出錯時傳播”元件處理,則事務將回滾。

出錯時繼續(On-Error Continue)

與“出錯時傳播”元件類似,“出錯時繼續”元件也執行事務。唯一的條件是,如果所有者已成功完成執行,則此元件將使用執行的結果作為其所有者的結果。如果由“出錯時繼續”元件處理,則事務將提交。

嘗試作用域元件(Try Scope Component)

“嘗試作用域”是Mule 4中提供的眾多新功能之一。它的工作方式類似於JAVA的try塊,我們習慣於將可能出現異常的程式碼括起來,以便在不中斷整個程式碼的情況下進行處理。

我們可以將一個或多個Mule事件處理器包裝在“嘗試作用域”中,然後,“嘗試作用域”將捕獲並處理這些事件處理器丟擲的任何異常。“嘗試作用域”的主要工作原理圍繞其自身的錯誤處理策略,該策略支援在其內部元件而不是整個流上進行錯誤處理。這就是為什麼我們不需要將流提取到單獨的流中的原因。

示例 (Example)

以下是“嘗試作用域”使用示例:

Try Scope

配置“嘗試作用域”以處理事務

眾所周知,事務是一系列不應部分執行的操作。事務範圍內的所有操作都在同一執行緒中執行,如果發生錯誤,則應導致回滾或提交。我們可以按以下方式配置“嘗試作用域”,以便它將子操作視為事務。

Configuring Try Scope
  • 無關緊要 [預設] − 如果我們在try塊上選擇此配置,則子操作將不被視為事務。在這種情況下,錯誤既不會導致回滾也不會導致提交。

  • 始終開始(ALWAYS_BEGIN) − 它表示每次執行作用域時都將啟動一個新事務。

  • 開始或加入(BEGIN_OR_JOIN) − 它表示如果流的當前處理已啟動事務,則加入它。否則,啟動一個新的事務。

MuleSoft - Mule異常處理

對於每個專案而言,異常的發生是不可避免的。因此,捕獲、分類和處理異常非常重要,以防止系統/應用程式處於不一致的狀態。Mule應用程式隱式地應用了一種預設的異常處理策略,該策略會自動回滾所有掛起的交易。

Mule中的異常

在深入探討異常處理之前,我們應該瞭解可能發生的異常型別,以及開發人員在設計異常處理程式時必須考慮的三個基本問題。

哪個傳輸很重要?

在設計異常處理程式之前,這個問題非常重要,因為並非所有傳輸都支援事務。

檔案HTTP不支援事務。因此,如果在這些情況下發生異常,我們必須手動處理它。

資料庫支援事務。在這種情況下設計異常處理程式時,我們必須記住資料庫事務可以自動回滾(如果需要)。

對於REST API,我們應該記住它們應該返回正確的HTTP狀態碼。例如,找不到資源時返回404。

要使用哪個訊息交換模式?

在設計異常處理程式時,我們必須注意訊息交換模式。可以是同步(請求-回覆)或非同步(fire-forget)訊息模式。

同步訊息模式基於請求-回覆格式,這意味著此模式將期望一個響應,並將被阻塞,直到返回響應或超時。

非同步訊息模式基於fire-forget格式,這意味著此模式假定請求最終將被處理。

這是什麼型別的異常?

一個非常簡單的規則是,您將根據異常的型別來處理它。知道異常是由系統/技術問題還是業務問題引起非常重要。

系統/技術問題(例如網路中斷)引起的異常應透過重試機制自動處理。

另一方面,由業務問題(例如無效資料)引起的異常不應透過應用重試機制來解決,因為在不解決根本原因的情況下重試是沒有意義的。

為什麼要對異常進行分類?

眾所周知,並非所有異常都是相同的,對異常進行分類非常重要。在高級別,異常可以分為以下兩種型別:

業務異常

業務異常發生的主要原因是資料錯誤或流程錯誤。這類異常通常不可重試,因此不建議配置回滾。即使應用重試機制也沒有意義,因為在不解決根本原因的情況下重試是沒有用的。為了處理此類異常,處理應該立即停止,並將異常作為響應傳送到死信佇列。還應該向運維人員傳送通知。

非業務異常

非業務異常發生的主要原因是系統問題或技術問題。這類異常是可重試的,因此最好配置重試機制來解決這些異常。

異常處理策略

Mule具有以下五種異常處理策略:

預設異常策略

Mule將此策略隱式應用於Mule流程。它可以處理流程中的所有異常,但也可以透過新增catch、Choice或Rollback異常策略來覆蓋。此異常策略將回滾任何掛起的交易並記錄異常。此異常策略的一個重要特性是,即使沒有事務,它也會記錄異常。

作為預設策略,Mule在流程中發生任何錯誤時都會實現它。我們無法在AnyPoint Studio中配置它。

回滾異常策略

假設如果無法找到糾正錯誤的解決方案,該怎麼辦?一個解決方案是使用回滾異常策略,它將回滾事務,並向父流程的入站聯結器傳送訊息以重新處理訊息。當我們想要重新處理訊息時,此策略也非常有用。

示例 (Example)

此策略可以應用於銀行交易,其中資金存入支票/儲蓄賬戶。我們可以在此處配置回滾異常策略,因為如果事務過程中發生錯誤,此策略會將訊息回滾到流程的開頭以重新嘗試處理。

捕獲異常策略

此策略捕獲在其父流程中丟擲的所有異常。它透過處理父流程丟擲的所有異常來覆蓋Mule的預設異常策略。我們可以使用捕獲異常策略來避免將異常傳播到入站聯結器和父流程。

此策略還確保當發生異常時,流程處理的事務不會回滾。

示例 (Example)

此策略可以應用於航班預訂系統,在這個系統中,我們有一個流程用於處理來自佇列的訊息。訊息增強器在訊息上新增一個屬性來分配座位,然後將訊息傳送到另一個佇列。

現在,如果此流程中發生任何錯誤,則訊息將丟擲異常。在這裡,我們的捕獲異常策略可以新增一個帶有適當訊息的標頭,並將該訊息從流程推送到下一個佇列。

選擇異常策略

如果您想根據訊息內容處理異常,那麼選擇異常策略將是最佳選擇。此異常策略的工作原理如下:

  • 首先,它捕獲父流程中丟擲的所有異常。
  • 接下來,它檢查訊息內容和異常型別。
  • 最後,它將訊息路由到相應的異常策略。

在選擇異常策略中,將定義多個異常策略,例如Catch或Rollback。如果沒有在此異常策略下定義策略,則它將訊息路由到預設異常策略。它從不執行任何提交、回滾或使用活動。

引用異常策略

這指的是在單獨的配置檔案中定義的通用異常策略。當訊息丟擲異常時,此異常策略將引用在全域性catch、rollback或choice異常策略中定義的錯誤處理引數。與選擇異常策略一樣,它也不執行任何提交、回滾或使用活動。

MuleSoft - 使用 MUnit 進行測試

我們知道單元測試是一種可以測試原始碼的各個單元以確定它們是否適合使用的的方法。Java程式設計師可以使用Junit框架編寫測試用例。同樣,MuleSoft也有一個名為MUnit的框架,允許我們為我們的API和整合編寫自動化測試用例。它非常適合持續整合/部署環境。MUnit框架的最大優勢之一是我們可以將其與Maven和Surefire整合。

MUnit的特性

以下是Mule MUnit測試框架的一些非常有用的特性:

  • 在MUnit框架中,我們可以使用Mule程式碼和Java程式碼建立Mule測試。

  • 我們可以在Anypoint Studio中以圖形方式或XML方式設計和測試我們的Mule應用程式和API。

  • MUnit允許我們輕鬆地將測試整合到現有的CI/CD流程中。

  • 它提供自動生成的測試和覆蓋率報告;因此,人工工作最少。

  • 我們還可以使用本地資料庫/FTP/郵件伺服器,透過CI流程使測試更易於移植。

  • 它允許我們啟用或停用測試。

  • 我們還可以使用外掛擴充套件MUnit框架。

  • 它允許我們驗證訊息處理器呼叫。

  • 藉助MUnit測試框架,我們還可以停用端點聯結器以及流程入站端點。

  • 我們可以使用Mule堆疊跟蹤檢查錯誤報告。

Mule MUnit測試框架的最新版本

MUnit 2.1.4是Mule MUnit測試框架的最新版本。它需要以下硬體和軟體要求:

  • MS Windows 8+
  • Apple Mac OS X 10.10+
  • Linux
  • Java 8
  • Maven 3.3.3、3.3.9、3.5.4、3.6.0

它與Mule 4.1.4和Anypoint Studio 7.3.0相容。

MUnit和Anypoint Studio

如前所述,MUnit完全整合在Anypoint Studio中,我們可以在Anypoint Studio中以圖形方式或XML方式設計和測試我們的Mule應用程式和API。換句話說,我們可以使用Anypoint Studio的圖形介面執行以下操作:

  • 建立和設計MUnit測試
  • 執行我們的測試
  • 檢視測試結果以及覆蓋率報告
  • 除錯測試

因此,讓我們開始逐一討論每個任務。

建立和設計MUnit測試

啟動新專案後,它會自動向我們的專案新增一個名為src/test/munit的新資料夾。例如,我們啟動了一個名為test_munit的新Mule專案,您可以在下圖中看到,它在我們的專案下添加了上述資料夾。

Designing MUnit Tests

現在,啟動新專案後,有兩種基本方法可以在Anypoint Studio中建立新的MUnit測試:

  • 右鍵單擊流程 - 在此方法中,我們需要右鍵單擊特定的流程並從下拉選單中選擇MUnit。

  • 使用嚮導 - 在此方法中,我們需要使用嚮導建立測試。它允許我們為工作區中的任何流程建立測試。

我們將使用“右鍵單擊流程”方法為特定流程建立測試。

首先,我們需要在工作區中建立流程,如下所示:

Test MUnitFlow

現在,右鍵單擊此流程並選擇MUnit以為此流程建立測試,如下所示:

Select MUnit

它將建立一個新的測試套件,其名稱與包含流程的XML檔案相同。在本例中,test_munit-test-suite是新的測試套件的名稱,如下所示:

Flow Execution

以下是上述訊息流程的XML編輯器:

XML Editor

現在,我們可以透過將其從Mule調色盤拖動到測試套件中新增MUnit訊息處理器。

Validation Assert

如果您想透過嚮導建立測試,則按照檔案→新建→MUnit操作,它將引導您進入以下MUnit測試套件:

MUnit Test Suite

配置測試

在Mule 4中,我們有兩個新的部分,即MUnitMUnit工具,它們共同擁有所有MUnit訊息處理器。您可以將任何訊息處理器拖到您的MUnit測試區域。如下面的螢幕截圖所示:

Configuring the Test

現在,如果您想在Anypoint Studio中編輯套件或測試的配置,則需要按照以下步驟操作:

步驟 1

轉到包資源管理器,右鍵單擊套件或測試的.xml檔案。然後,選擇屬性

步驟 2

現在,在“屬性”視窗中,我們需要點選執行/除錯設定。之後點選新建

步驟 3

在最後一步,在選擇配置型別視窗下點選MUnit,然後點選確定

Edit Launch Configuration

執行測試

我們可以執行測試套件以及單個測試。首先,我們將瞭解如何執行測試套件。

執行測試套件

要執行測試套件,右鍵單擊包含測試套件的Mule畫布的空白部分。這將開啟一個下拉選單。現在,點選執行MUnit套件,如下所示:

Running a Test Suite

稍後,我們可以在控制檯中看到輸出。

執行測試

要執行特定的測試,我們需要選擇特定的測試並右鍵單擊它。我們將獲得與執行測試套件時相同的下拉選單。現在,點選執行MUnit測試選項,如下所示:

Running a Test

之後,可以在控制檯中看到輸出。

檢視和分析測試結果

Anypoint Studio在左側資源管理器窗格的MUnit選項卡中顯示MUnit測試結果。您可以找到綠色顯示的成功測試和紅色顯示的失敗測試,如下所示:

Generate Report

我們可以透過檢視覆蓋率報告來分析測試結果。覆蓋率報告的主要功能是提供一個指標,說明MUnit測試已成功執行了多少Mule應用程式。MUnit覆蓋率基本上基於已執行的MUnit訊息處理器的數量。MUnit覆蓋率報告提供以下指標:

  • 應用程式整體覆蓋率
  • 資源覆蓋率
  • 流程覆蓋率

要獲取覆蓋率報告,我們需要在MUnit選項卡下點選“生成報告”,如下所示:

Analyzing Test Result

除錯測試

我們可以除錯測試套件以及單個測試。首先,我們將瞭解如何除錯測試套件。

除錯測試套件

要除錯測試套件,右鍵單擊包含測試套件的Mule畫布的空白部分。這將開啟一個下拉選單。現在,點選除錯MUnit套件,如下圖所示:

Debugging the Test

然後,我們可以在控制檯中看到輸出。

除錯測試

要除錯特定的測試,我們需要選擇特定的測試並右鍵單擊它。我們將獲得與除錯測試套件時相同的下拉選單。現在,點選除錯MUnit測試選項。它顯示在下面的螢幕截圖中。

Debugging a Test
廣告
© . All rights reserved.