2. Introduction
Referred to as "wrappers»
Processing blocks
Poll, Message Enricher, and Until Successful require you
to embed no more than one message processor within the
processing block
The other sub-group of scopes (which includes
Composite, Async and Sub Flow) accepts more than one
message processor
3. Composite, Async
and Sub Flow
Composite
The embedded building blocks are actually message sources (i.e. inbound
connectors) that listen in parallel on different channels for incoming messages
Whenever any of these receivers accepts a message, the Composite scope passes it
to the first message processor in the flow, thus triggering that flow
Async / Sub Flow
The embedded message processors form a single, combined message processor (or event) sequence
The Async scope sits in the parent flow sequence, and when it receives a message, it sends a copy of the
message on to the next message processor in the parent flow, while simultaneously (and asychronously)
processing another copy of the message through its own sequence of embedded message processors
The Sub Flow scope exists as a synchronous branch flow with respect to the parent flow. After it receives
a message from a Flow Reference component, it processes that message through the entire sequence of
embedded message processors, then passes the message back to the next message processor in the parent
flow for further processing. This process repeats each time a Flow Reference component in the main flow
"calls" the Sub Flow processing block
4. Synchronous and
Asynchronous
Synchronous
Means that processing on the main flow halts, and all the message processors in
the child flow execute before the parent flow resumes processing; in other words,
no processing takes place in the parent flow while the synchronous child flow is
executing
Asynchronous
Means that as soon as the child flow receives a message, it immediately sends one
copy of that message to the next message processor in the parent flow so that
processing in the parent flow continues, essentially uninterrupted
The asynchronous child flow also starts processing another copy of the message
with its own sequence of message processors
These two simultaneous processing branches continue independently until each
completes
5. Scopes Available in
Studio(1)
Async
Cache
Composite Source
Foreach
Message Enricher
Poll
Sub Flow
Transactional
Until Successful
6. Scopes Available in
Studio(2)
Async
Creates a block of message processors that execute asynchronously while the rest of the
flow continues to execute in parallel
Cache
Caches data produced by part of a flow. Wrap a cache scope around message processors
in your flow so that it caches the response events produced within the scope
Composite Source
To accept incoming messages from multiple input channels, place two or more message
sources into a Composite Source
A message entering the Composite Source on any supported channel triggers the
processing flow
7. Scopes Available in
Studio(3)
Foreach
Splits any type of message collection apart into individual messages for processing, and
then aggregate them again at the end of the scope
Message Enricher
Appends information to a message, often using an expression to determine what part of
the payload to evaluate so as to return an appropriate value to append to that payload
The message processor is executed and the enricher scope uses the result of that
execution to enrich the message coming into the scope
8. Scopes Available in
Studio(4)
Poll
Periodically polls an embedded message receiver for new messages
Sub Flow
A flow that is called by another flow
Sub flows inherit their properties from the flow reference and are always synchronous
This type of scope can be very useful when you need to reuse code at several points
within the same flow
9. Scopes Available in
Studio(5)
Transactional
Mule applies the concept of transactions to operations in application for which the result
cannot remain indeterminate
Where a series of steps in flow must succeed or fail as one unit, Mule uses a transaction
to demarcate such a unit
Until Successful
Attempts, at a specified interval, to route a message to an embedded message processor
until one of the following occurs:
it succeeds
the maximum number of retries is reached
an exception is thrown
Thus, Until Successful can prove useful in sending messages to resources, such as shared printers,
which might not always be immediately available