- Endpoint routing (providing location transparency) so that we do not care about the physical location of the endpoint.
- Endpoint abstraction (interface transparency) so that we do not care about the exact data formats required by the endpoint because the OSB will take care of transformations.
- Load balancing so that we do not care about which of multiple service implementations will actually service a request.
- Throttling so that we do not care about how use of services is restricted.
- Enrichment so that we do not care about how additional data is provided to the request to match the expected request and response formats.
- Simple synchronous composition so that we do not care if our abstract service call is actually made up of two or more physical service calls.
- Protocol conversion so that we do not care what physical transports are being used.
- Sync/async abstraction so that we can treat services as fire and forget or query response according to the needs of the client.
Use BPEL for:
- Complex composition of parallel flows that involve more than a couple of services.
- Long running compositions that may run for minutes, hours or days.
- Asynchronous compositions that require correlation of requests and responses.
- Process abstraction that enables us to track processes and their interactions with multiple services.
- Human workflow
Related blog topics: