Mulesoft 简明教程

MuleSoft - Core Components & Configuration

Mule 最重要的能力之一是它可以使用组件执行路由、转换和处理,因此组合各种元素的 Mule 应用程序配置文件非常大。

Mule 提供的配置模式类型如下:

  1. Simple service pattern

  2. Bridge

  3. Validator

  4. HTTP proxy

  5. WS proxy

Configuring the component

在 Anypoint 工作室中,我们可以按照以下步骤配置组件:

Step 1

我们需要将希望在 Mule 应用程序中使用的组件拖动过来。例如,在此处,我们将 HTTP 侦听器组件用作如下所示:

configuring the component

Step 2

接下来,双击该组件以获取配置窗口。对于 HTTP 侦听器,如下所示:

configuration window

Step 3

我们可以根据项目的需要配置组件。例如,我们针对 HTTP 侦听器组件所执行的操作:

http listener component

核心组件是 Mule 应用程序中工作流程的一个重要组成部分。处理 Mule 事件的逻辑由这些核心组件提供。在 Anypoint 工作室中,要访问这些核心组件,可以从 Mule 调色板中单击“核心”,如下所示:

app mule palette

以下是各种 core components and their working in Mule 4

Custom Business Events

此核心组件用于收集有关 Mule 应用程序中处理业务交易的流以及消息处理程序的信息。换句话说,我们可以使用 Custom Business Event 组件在我们的工作流中添加以下内容:

  1. Metadata

  2. Key performance Indicators (KPIs)

How to add KPIs?

以下是为 Mule 应用程序中的流程添加关键绩效指标的步骤:

Step 1 - 按照 Mule Palette → Core → Components → Custom Business Event 添加 Custom Business Event 组件到 Mule 应用程序中的工作流中。

Step 2 - 单击组件以将其打开。

Step 3 - 现在,我们需要为显示名称和事件名称提供值。

Step 4 - 要从消息有效负载中捕获信息,请添加关键绩效指标,如下所示:

  1. 为 KPI(跟踪:元数据元素)提供名称(键),并提供值。名称将用于运行时管理器的搜索界面。

  2. 提供可能为任何 Mule 表达式的值。

Example

以下表格由名称和价值的 KPI 列表组成 −

Name

Expression/Value

Student RollNo

#[payload[‘RollNo’]]

Student Name

#[payload[‘Name’]]

Dynamic Evaluate

此核心组件用于在 Mule 应用程序中动态选择脚本。我们还可以通过转换消息组件使用硬核脚本,但使用 Dynamic Evaluate 组件是一个更好的方法。此核心组件的工作方式如下 −

  1. 首先,它会评估应该产生另一个脚本的表达式。

  2. 然后,它评估该脚本以得出最终结果。

通过这种方式,它允许我们动态选择脚本,而不是对其进行硬编码。

Example

以下是一个通过 ID 查询参数从数据库中选择脚本并将其存储在名为 MyScript 的变量中的示例。现在,动态评估组件将访问变量以调用脚本,以便它可以从 UName 查询参数中添加一个 name 变量。

流程的 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>

脚本可以使用消息、负载、变量或属性之类的上下文变量。但是,如果你想要添加自定义上下文变量,你需要提供一组键值对。

Configuring Dynamic Evaluate

以下表格提供了配置 Dynamic Evaluate 组件的方法 −

Field

Value

Description

Example

Expression

DataWeave expression

它指定要被评估为最终脚本的表达式。

expression="#[vars.generateOrderScript]"

Parameters

DataWeave expression

It specifies key-value pairs.

#[{joiner: ' and ', id: payload.user.id}]

Flow Reference Component

如果你想要在同一 Mule 应用程序中将 Mule 事件路由到另一个流或子流,那么流引用组件是正确的选择。

Characteristics

以下是此核心组件的特征 −

  1. 此核心组件允许我们像当前流中的单个组件一样对待整个引用流。

  2. 它将 Mule 应用程序分解成离散的可重用单元。例如,一个流正在定期列出文件。它可能会引用另一个处理列表操作输出的流。

  3. 通过这种方式,我们可以附加指向处理流的流引用,而不是附加整个处理步骤。下图显示流引用核心组件指向名为 ProcessFiles 的子流。

flow reference component

Working

通过以下图表可以了解流引用组件的工作原理 −

main working flow

该图表显示当一个流引用同一个应用程序中的另一个流时,Mule 应用程序中的处理顺序。当 Mule 应用程序中的主工作流被触发时,Mule 事件会一直传递并执行流,直到 Mule 事件到达流引用。

在到达流引用后,Mule 事件从头到尾执行引用流。一旦 Mule 事件完成执行引用流,它将返回到主流。

Example

为了更好地理解, let us use this component in Anypoint Studio 。在此示例中,我们将 HTTP 侦听器用于 GET 消息,正如我们在上一章节中所做的一样。因此,我们可以拖放组件并进行配置。但对于此示例,我们需要添加子流组件并在其下方设置有效负载组件,如下所示 −

component in anypoint studio

接下来,我们需要通过双击配置 Set Payload 。此处我们给出的值“子流已执行”,如下所示 −

set payload

在成功配置子流组件后,我们需要将流引用组件设置在主流中设置有效负载之后,该组件可从 Mule Palette 中拖放,如下所示 −

sub flow component

接下来,在配置流引用组件时,我们需要在通用选项卡下选择流名称,如下所示 −

choose flow name

现在,保存并运行此应用程序。要对此进行测试,请转至 POSTMAN,在 URL 栏中键入 http:/localhost:8181/FirstAPP ,然后您将收到消息“子流已执行”。

postman

Logger Component

名为记录器的核心组件通过记录重要信息来帮助我们监控和调试 Mule 应用程序,例如错误消息、状态通知、有效负载等。在 AnyPoint 工作室中,它们出现在 Console 中。

Advantages

以下是记录器组件的一些优点:

  1. 我们可以将此核心组件添加到工作流中的任何位置。

  2. 我们可以对其进行配置以记录我们指定的字符串。

  3. 我们可以将其配置为我们编写的 DataWeave 表达式的输出。

  4. 我们还可将其配置为字符串和表达式的任意组合。

Example

以下示例在浏览器中 Set Payload 中显示消息“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

转换消息组件(也称为传输组件)允许我们将输入数据转换为新的输出格式。

Methods to build Transformation

我们可以借助以下两个方法构建转换 −

Drag-and-Drop Editor (Graphical View) − 这是构建转换的第一种且是最常用的方法。在此方法中,我们可以使用此组件的可视化映射器来拖放传入数据结构的元素。例如,在以下示意图中,两个树视图显示了输入和输出的预期元数据结构。连接输入到输出字段的线表示两个树视图之间的映射。

transfer message component

Script View − 转换的可视化映射也可在 DataWeave(用于 Mule 代码的语言)的帮助下表示。我们可以对高级转换(例如聚合、规范化、分组、连接、分区、旋转和筛选)进行编码。示例如下 −

transformation source

此核心组件主要接受变量、属性或消息有效负载的输入和输出元数据。我们可以为以下内容提供特定于格式的资源 −

  1. CSV

  2. Schema

  3. Flat file Schema

  4. JSON

  5. Object class

  6. Simple Type

  7. XML Schema

  8. Excel 列名和类型

  9. 固定宽度列名称和类型