I am new to OSB and proxy services. I have some questions:
1. In proxy message flow, what is the difference between Pipeline node and routing node?
2. How to call more than one backend?
Any help is appreciated.
Use a pipeline pair node to define request and response processing.
Routing is used to specify the target service.
2. You can use service_callout to call the backend and you could do as many backend calls as you want.
1. Insert a pipeline-pair
2. insert a stage into it.
3. insert a service_callout and call the backend service.
if you want to call a business-service use routing.
If you want to do something before calling the service use pipeline pair.
you would still have to use route node to call the final service.
eg: 1. changing value of input variables etc.
2. call a Database to validate something in input.
3. validating the response variable from the route.
In the message flow Pipeline Pair is added to do processing on the request before sending it to an external service or processing of the response which is received from the external service. This processing may include transformations, logging/reporting, validations and enrichment as well which can be done by calling other services using Service Callout.
Route is the node you use to send the request to an external service via a business service or even another Proxy Service within OSB which performs a set of functionality.
Pipeline pair and route both are optional, you can have a service with just pipeline pair and still call one or more backend services using Publish or Service Callout. You can also have a service without pipeline pair and just Route node and still do transformation in the Route node.
The choice is yours to design the service message flow in a logical way.
To answer your second question, there are multiple ways to invoke more than one backend service.
You can use Service Callout and Publish in the Pipelines to call any number of backend services. You can also call multiple backends by using Route action in Route node for one backend and having Service CAllouts in the Request actions section of Route action. You can also use Split Join if you want to call multiple backend services in parallel.
Again, it is upto you to design the message flow in a logical way.
For example, for a use case of creating an order in a backend system for a customer, Lets say you have to call a service A to get some customer data based on customer id and then send customer data to another backend service B to create order for that customer. Then ideally you should have a service callout in Request pipeline to Service A, as this is enrichment and then use a Route to call the backend service B to create the Order with enriched customer data.