A mule application can have single or multiple mule flows. Mule applications can be completed using only flow or flows. It not necessary to use sub-flow.
A Mule Flow has three sections:
Source: This section contains the connector such as Listener, Scheduler.
Process: Contains any kind of components, connectors, or message processors which needs to achieve a problem.
Error handling: Handle the error occurs in the Process.
A sub-flow has only one section.
sub-flow doesn’t have any event sources and error handler section. sub-flow can be used as a reference flow of a Mule flow.
Error Handling: Every Mule flow has it’s own Error Handling section where as sub-flow doesn’t have. If any error occurred in the sub-flow, it will propagate the error to the parent flow by default. The error will be handled according the implementation in the parent flow Error handling section.