Groovy Component With Mule ESB
Learn how the Groovy component is used in Mule flows to integrate custom scripts. This tutorial shows you how to configure and utilize the Groovy component.
Join the DZone community and get the full member experience.
Join For FreeThe Groovy component is very similar to Python, Ruby or Java components. The Groovy component provides developers with the facilities to integrate custom scripts into a flow using the Groovy scripting engine.
As an example, you can write a custom script using Groovy language for an application, save it in a separate file and then configure the Groovy component to reference the file. Or, after placing the Groovy component on the Studio canvas you can type in the script through the Groovy Pattern Properties pane.
Place the Groovy component in the message processor region from the Mule palette.
Use the Advanced tab to configure the interceptors and property for the Groovy component.
Interceptors enable the developer to provide additional services to the component, such as the ability to log transactions and the ability to log the time for each transaction.
Configure these parameters to define attribute keys and their associated values. This enables the component to quickly look up a value associated with a key.
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd">
<flow name="sdfsffsdFlow">
<scripting:component doc:name="Groovy">
<scripting:script engine="Groovy"><![CDATA[a=10
b=20
sum=Integer.parseInt(a)+Integer.parseInt(b)]]></scripting:script>
</scripting:component>
</flow>
</mule>
Accessing Flow Variable in the Groovy Component
message.getInvocationProperty('myFlowVariable')
OR
message.getProperty('myFlowVariable',org.mule.api.transport.PropertyScope.INVOCATION)
OR
flowVars['myFlowVariable']
Accessing Session Variable in the Groovy Component
message.getSessionProperty('mySessionVariable')
OR
message.getProperty('mySessionVariable',org.mule.api.transport.PropertyScope.SESSION)
OR
sessionVars['mySessionVariable']
Setting a Property in the Groovy Component
Go to the Advanced tab and add a property.
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd">
<flow name="sdfsffsdFlow">
<scripting:component doc:name="Groovy">
<scripting:script engine="Groovy">
<property key="num1" value="#[flowVars.a]"/>
<property key="num2" value="#[flowVars.b]"/><![CDATA[sum=Integer.parseInt(num1)+Integer.parseInt(num2)]]></scripting:script>
</scripting:component>
</flow>
</mule>
Here is the video tutorial:
Now you know how to use the Groovy component with Mule ESB.
Opinions expressed by DZone contributors are their own.
Comments