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 列名称和类型
  • 固定宽度列名称和类型
广告