MuleSoft - 核心组件和配置


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

以下是 Mule 提供的配置模式类型 -

  • 简单的服务模式
  • 验证器
  • HTTP代理
  • WS代理

配置组件

在 Anypoint studio 中,我们可以按照以下步骤来配置组件 -

步骤1

我们需要拖动我们希望在 Mule 应用程序中使用的组件。例如,这里我们使用 HTTP 侦听器组件,如下所示 -

配置组件

第2步

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

配置窗口

步骤3

我们可以根据项目的要求配置组件。举例来说,我们为 HTTP 监听器组件做了 -

HTTP 侦听器组件

核心组件是 Mule 应用程序中工作流程的重要构建块之一。处理 Mule 事件的逻辑是由这些核心组件提供的。在 Anypoint studio 中,要访问这些核心组件,您可以单击 Mule Palette 中的 Core,如下所示 -

应用骡调色板

以下是各种核心组件及其在 Mule 4 中的工作情况-

定制商务活动

该核心组件用于收集有关流以及处理 Mule 应用程序中业务事务的消息处理器的信息。换句话说,我们可以使用自定义业务事件组件在我们的工作流程中添加以下内容 -

  • 元数据
  • 关键绩效指标 (KPI)

如何添加KPI?

以下是在 Mule 应用程序的流程中添加 KPI 的步骤 -

步骤 1 - 按照 Mule Palette → Core → Components → Custom Business Event,将自定义业务事件组件添加到 Mule 应用程序中的工作流程中。

步骤 2 - 单击组件​​将其打开。

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

步骤 4 - 要从消息有效负载中捕获信息,请添加 KPI,如下所示 -

  • 指定 KPI 的名称(键)(跟踪:元数据元素)和值。该名称将用于 Runtime Manager 的搜索界面。

  • 给出一个值,可以是任何 Mule 表达式。

例子

下表包含具有名称和值的 KPI 列表 -

姓名 表达/值
学生名册编号 #[有效负载['RollNo']]
学生姓名 #[有效负载['名称']]

动态评估

该核心组件用于在 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>

该脚本可以使用上下文变量,例如消息、有效负载、变量或属性。但是,如果要添加自定义上下文变量,则需要提供一组键值对。

配置动态评估

下表提供了配置动态评估组件的方法 -

场地 价值 描述 例子
表达 数据编织表达式 它指定要在最终脚本中求值的表达式。 表达式=“#[vars.generateOrderScript]”
参数 数据编织表达式 它指定键值对。 #[{加入者:'和',id:payload.user.id}]

流量参考组件

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

特征

以下是该核心组件的特征 -

  • 这个核心组件允许我们将整个引用流视为当前流中的单个组件。

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

  • 这样,我们可以附加指向处理流程的流程引用,而不是附加整个处理步骤。下面的屏幕截图显示流参考核心组件指向名为ProcessFiles的子流。

流量参考组件

在职的

Flow Ref 组件的工作原理可以借助下图来理解 -

主要工作流程

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

到达流程引用后,Mule 事件从头到尾执行引用的流程。一旦 Mule 事件执行完 Ref Flow,它就会返回到主流程。

例子

为了更好地理解,让我们在 Anypoint Studio 中使用这个组件。在这个例子中,我们使用 HTTP 监听器来获取消息,就像我们在上一章中所做的那样。因此,我们可以拖放组件并进行配置。但对于这个例子,我们需要添加一个子流组件并在其下设置有效负载组件,如下所示 -

Anypoint Studio 中的组件

接下来,我们需要通过双击来配置Set Payload 。这里我们给出的值是“子流程已执行”,如下所示 -

设置有效负载

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

子流组件

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

选择流程名称

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

邮差

记录器组件

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

优点

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

  • 我们可以在工作流程中的任何位置添加这个核心组件。
  • 我们可以将其配置为记录我们指定的字符串。
  • 我们可以将其配置为我们编写的 DataWeave 表达式的输出。
  • 我们还可以将其配置为字符串和表达式的任意组合。

例子

下面的示例在浏览器的设置有效负载中显示消息“Hello World”,并记录该消息。

记录器组件

以下是上述示例中流程的 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>

传输消息组件

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

构建转型的方法

我们可以借助以下两种方法来构建我们的转换 -

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

传输消息组件

脚本视图- 转换的可视化映射也可以在 DataWeave(一种 Mule 代码语言)的帮助下表示。我们可以为一些高级转换进行编码,例如聚合、标准化、分组、连接、分区、旋转和过滤。下面给出了示例 -

转换源

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

  • CSV
  • 模式
  • 平面文件架构
  • JSON
  • 对象类
  • 简单型
  • XML模式
  • Excel 列名称和类型
  • 固定宽度列名称和类型