Mule ESB supports three architectural approaches: Flows, Services, and Configuration Patterns. Flows are recommended as the preferred approach for most applications as they provide the most flexibility to arrange message processing building blocks. Services were previously the main approach but Flows were introduced to allow more customization. Configuration Patterns provide pre-configured patterns optimized for common use cases that can be set up through the XML editor.