A Global Element is a reusable object containing parameters that any number of elements in a flow can share. You typically reference a global element from connectors and components (such as filters) in your Mule project.
Use the global element to apply configuration details to multiple local elements in flows. Create one global element that details your connection, configuration or transport details. Simply reference the global element from any flow element that should use those same parameters. That way you can ensure consistency across flow elements.
When the parameters of the applicable flow elements must change, just change the details from the global element they reference.
Before venturing further into this topic, review the features of the Anypoint Studio Visual Editor to learn more about developing Mule applications using the Anypoint Studio graphical user interface and to understand the context in which we use these "global elements".
Global elements provide a number of benefits to you as a Mule application developer.
You can configure a global element just once, and share that configuration among processors of the same type. This is particularly useful when you have to define the connection details and login credentials for an external source, such as a SaaS application or database.
Rather than changing the same configuration multiple times within many like processors (for example, multiple connectors that hook into the same service, using one set of credentials) throughout the Mule flow, you can change the configuration once in the global element, and the changes apply to all Mule flow elements that reference the global element.
Some components require their properties be stored in a global element. In any case, we recommend you use global elements for the Advantages listed in the previous section.
Anypoint Studio Visual Editor
In the Anypoint Studio Visual Editor, click the Global Elements tab at the base of the canvas to access a list of all global elements in an application.
Click Create to add a new global element.
In the Choose Global Type wizard, navigate the directories or use the filter to select the type of global element you wish to create, then click OK.
Define the configurable parameters of your global element in the Global Element Properties window that appears, then click OK to save.
To create a new global element from within a local element you placed in your flow:
Click one of the pieces of your flow whose global element you want to create/configure. A box should appear around the element in the flow — take for instance, an IMAP connector that has been clicked on:
In the properties pane that appears below the canvas, click the plus icon next to the Connector Configuration or similar reference field dropdown menu. (Click the Edit icon to edit an existing global element you may have already created.)
Fill in the required fields for the type of global element you set out to create.
XML Editor or Standalone
In the XML Editor in Studio, or other text editor, open your XML configuration file for your Mule application.
Create a global element for your Mule flow element above and outside any <flow> you may have defined already in your application.
Define the attribute values that your local element will reference, within the global element you create.
To configure a local element in the flow to reference a global element, add a
connector-refattribute inside the local element, which appears inside the
<flow>. The example below has a global element for the Salesforce connector (
The flow includes a Salesforce connector (
sfdc:create) that references the global Salesforce element, named "Salesforce1":
<sfdc:create config-ref="Salesforce1" type="" doc:name="Salesforce Connector">
<?xml version="1.0" encoding="UTF-8"?> <mule xmlns:data-mapper="http://www.mulesoft.org/schema/mule/ee/data-mapper" xmlns:sfdc="http://www.mulesoft.org/schema/mule/sfdc" xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" 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.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd http://www.mulesoft.org/schema/mule/ee/data-mapper http://www.mulesoft.org/schema/mule/ee/data-mapper/current/mule-data-mapper.xsd http://www.mulesoft.org/schema/mule/sfdc http://www.mulesoft.org/schema/mule/sfdc/current/mule-sfdc.xsd 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/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd"> <sfdc:config name="Salesforce1" username="username" password="password" doc:name="Salesforce" securityToken="IQZjCdweSF45JD90Me2BWLLVDo"> <sfdc:connection-pooling-profile initialisationPolicy="INITIALISE_ONE" exhaustedAction="WHEN_EXHAUSTED_GROW"/> </sfdc:config> <flow name="Contacts_to_SFDC" doc:name="Contacts_to_SFDC"> ... <sfdc:create config-ref="Salesforce1" type="" doc:name="Salesforce Connector"> <sfdc:objects ref="#[payload]"/> </sfdc:create> </flow> </mule>
Although not required by the Mule runtime, the
name attribute for the security manager global element is now required in Anypoint Studio as of version 6.0.0.
If you are coding by hand in Anypoint Studio, be sure to define the
name attribute on the security-manager element to suppress errors that may be reported by Studio.
|If you find that you need to append the same string multiple times at various points in a flow, you might store such a piece of functionality inside a global element for a Transformer of type Append String, where the Message field would be where you store your string to append.|
Let’s see how to configure a global element for a typical HTTP listener you might test in an app you run locally in Studio, using its embedded Mule runtime engine.
Drag the HTTP listener onto the Anypoint Studio canvas to begin creating its global element. Select it with your mouse.
After clicking the HTTP listener in the flow, you see the HTTP listener pane at bottom. From there, focus in and click the plus sign.
Configure the HTTP listener to listen for HTTP requests; in this case,
Returning to the main HTTP listener pane, we see our HTTP listener references the global element by name in the Connector Configuration dropdown.
|In reality an app would not suffice with only an HTTP listener, however it is a widely used piece of functionality in Mule applications that you will naturally get used to setting up.|
Global element XML structure for the HTTP listener is as follows. The required fields for this connector’s global element are
<http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8081" doc:name="HTTP Listener Configuration">
If you are coding by hand, notice the global element is defined outside and above the
<?xml version="1.0" encoding="UTF-8"?> <mule xmlns:http="http://www.mulesoft.org/schema/mule/http" 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/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd"> <http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8081" doc:name="HTTP Listener Configuration"> <http:worker-threading-profile threadWaitTimeout="1500" maxBufferSize="10"/> </http:listener-config> <flow name="myNewProjectFlow1" doc:name="myNewProjectFlow1"> <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP Connector"/> </flow> </mule>
NEXT STEP: Use what you’ve learned to follow the Basic Studio Tutorial.