Mulesoft 简明教程
MuleSoft - Message Processor & Script Components
脚本模块让用户可以在 Mule 中使用脚本语言。简而言之,脚本模块可以交换用脚本语言编写的自定义逻辑。脚本可以用作实施或转换器。它们可用于表达式评估,即,用于控制消息路由。
Mule 支持以下脚本语言:
-
Groovy
-
Python
-
JavaScript
-
Ruby
How to Install Scripting Modules?
事实上,Anypoint Studio 随脚本模块一起提供。如果您在 Mule Palette 中找不到该模块,则可以使用 +Add Module 添加该模块。添加后,我们可以在 Mule 应用程序中使用脚本模块操作。
Implementing Example
正如所讨论的,我们需要将该模块拖放到画布中以创建工作区并在应用程序中使用它。以下是一个示例:
我们已经知道如何配置 HTTP Listener 组件;因此,我们将讨论配置脚本模块。我们需要按照以下编写步骤配置脚本模块:
Step 1
从 Mule Palette 中搜索脚本模块,然后将脚本模块的 EXECUTE 操作拖动到您的流程中,如上所示。
Step 2
现在,通过双击打开 Execute 配置选项卡。
Step 3
在 General 选项卡下,我们需要在 Code text window 中提供代码,如下所示: −
Step 4
最后,我们需要从执行组件中选择 Engine 。以下是引擎列表: −
-
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>
Message Sources
Mule 4 采用简化的 Mule 3 消息模型,使其在连接器中以一致的方式处理数据变得更加容易,而不会覆盖信息。在 Mule 4 消息模型中,每个 Mule 事件包含两部分内容: a message and variables associated with it 。
Mule 消息包含有效负载及其属性,其中属性主要是元数据,例如文件大小。
变量保存任意用户信息,例如操作结果、辅助值等。
Inbound
Mule 3 中的入站属性现在成为 Mule 4 中的属性。众所周知,入站属性存储通过消息源获得的有关有效负载的附加信息,但在 Mule 4 中,这是借助属性完成的。属性具有以下优点: −
-
在属性的帮助下,我们可以轻松查看哪些数据可用,因为属性是强类型的。
-
我们可以轻松访问属性中包含的信息。
以下是 Mule 4 中典型消息的示例: −
Outbound
为了发送附加数据,必须由 Mule 连接器和传输中明确指定 Mule 3 中的出站属性。但在 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>
Message Processor
一旦 Mule 从消息源接收消息,消息处理器的任务就开始了。Mule 使用一个或多个消息处理器通过流处理消息。消息处理器的主要任务是在消息通过 Mule 流时对其进行转换、筛选、丰富和处理。
Categorization of Mule Processor
以下是基于功能划分的 Mule 处理器类别: −
-
Connectors − 这些消息处理器发送和接收数据。它们还通过标准协议或第三方 API 将数据插入外部数据源。
-
Components − 这些消息处理器本质上很灵活,以 Java、JavaScript、Groovy、Python 或 Ruby 等各种语言实现的业务逻辑。
-
Filters − 它们筛选消息,仅允许根据特定条件在流中继续处理特定消息。
-
Routers − 此消息处理器用于控制消息的流向路由、重新排序或拆分。
-
Scopes − 它们基本上封装代码片段,目的是在流中定义细粒度的行为。
-
Transformers - 转换器的作用是转换消息有效负载类型和数据格式,以促进系统之间的通信。
-
Business Events - 它们基本上捕获与关键绩效指标相关的数据。
-
Exception strategies - 这些消息处理程序处理消息处理期间发生的任何类型的错误。