- MuleSoft - Discussion
- MuleSoft - Useful Resources
- MuleSoft - Quick Guide
- MuleSoft - Testing with MUnit
- MuleSoft - Mule exception Handling
- MuleSoft - Mule Error Handling
- Web Services Using Anypoint Studio
- Flow Control and Transformers
- MuleSoft - Endpoints
- Core Components & Their Configuration
- Message Processor & Script Components
- MuleSoft - DataWeave Language
- Creating First Mule Application
- MuleSoft - Discovering Anypoint Studio
- MuleSoft - Anypoint Studio
- MuleSoft - Mule in Our Machine
- MuleSoft - The Mule Project
- MuleSoft - Introduction to Mule ESB
- MuleSoft - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
MuleSoft - Message Processor & Script Components
The scripting modules faciptate users to use scripting language in Mule. In simple words, the scripting module can exchange custom logic written in scripting language. Scripts can be used as Implementations or transformers. They can be used for expression evaluation, i.e., for controlpng message routing.
Mule has the following supported scripting languages −
Groovy
Python
JavaScript
Ruby
How to Install Scripting Modules?
Actually, Anypoint Studio comes with the scripting modules. If you do not find the module in Mule Palette, then it can be added by using +Add Module. After adding, we can use the scripting module operations in our Mule apppcation.
Implementing Example
As discussed, we need to drag and drop the module into canvas for creating workspace and use it in our apppcation. Following is an example of it −
We already know how to configure the HTTP Listener component; hence we are going to discuss about configuring the Scripting Modules. We need to follow the steps written below to configure scripting module −
Step 1
Search for the Scripting module from Mule Palette and drag the EXECUTE operation of the scripting module into your flow as shown above.
Step 2
Now, open the Execute configuration tab by double cpcking on the same.
Step 3
Under the General tab, we need to provide the code in the Code text window as shown below −
Step 4
At last, we need to choose the Engine from the execute component. The pst of engines is as below −
Groovy
Nashorn(javaScript)
jython(Python)
jRuby(Ruby)
The XML of the above execution example in the Configuration XML editor is as follows −
<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 has a simppfied model than Mule 3 message making it easier to work with data in a consistent way across connectors without overwriting information. In Mule 4 message model, each Mule event consists of two things: a message and variables associated with it.
A Mule message is having payload and its attributes, where attribute is mainly metadata such as file size.
And a variable holds the arbitrary user information such as operation result, auxipary values, etc.
Inbound
The inbound properties in Mule 3 now becomes Attributes in Mule 4. As we know that inbound properties store additional information about the payload obtained through a message source, but this is now, in Mule 4, done with the help of attributes. Attributes have the following advantages −
With the help of attributes, we can easily see which data is available, because attributes are strongly typed.
We can easily access information contained in attributes.
Following is the example of a typical message in Mule 4 −
Outbound
The outbound properties in Mule 3 must be exppcitly specified by Mule connectors and transports in order to send additional data. But in Mule 4, each of those can be set separately, using a DataWeave expression for each one of them. It does not produce any side effect in the main flow.
For example, below DataWeave expression will perform a HTTP request and generates headers and query parameters without a need to set message properties. This is shown in the below code −
<http:request path = "M_issue" config-ref="http" method = "GET"> <http:headers>#[{ path : input/issues-pst.json }]</http:headers> <http:query-params>#[{ provider : memory-provider }]</http:query-params> </http:request>
Message Processor
Once Mule receives a message from a message source, the work of message processor starts. The Mule uses one or more message processors to process the message through a flow. The main task of message processor is to transform, filter, enrich and process the message as it passes through the Mule flow.
Categorization of Mule Processor
Following are the categories of Mule Processor, based on functions −
Connectors − These message processors send and receive data. They also plug data into external data sources via standard protocols or third-party APIs.
Components − These message processors are flexible in nature and perform business logic implemented in various languages pke Java, JavaScript, Groovy, Python or Ruby.
Filters − They filter the messages and allow only specific messages to continue to be processed in a flow, based on specific criteria.
Routers − This message processor is used to control the flow of message to route, resequencing or sppt.
Scopes − hey basically wrap snippets of code for the purpose of defining fine-grained behavior within a flow.
Transformers − The role of transformers is to convert message payload type and data format to faciptate communication between systems.
Business Events − They basically capture data associated with key performance indicators.
Exception strategies − These message processors handle errors of any type that occur during message processing.