Proxy Message Flow

Hello everyone,
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.
Thanks

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.

Similar Messages

  • OSB:Publish to business service with for each in osb proxy message flow

    Hi,
    I have an external application that will make a call to my web-service and post a message to my queue "A" and i need to model my osb component such that it picks the message from that queue " A"and posts it to another queue "B". All this is done without any BPEL involved.
    for publishing the message i have created a business service that publishes a msg to the queue A and my proxy service is modelled such that it subscribes to this same queue A and publishes the msg to another business service (that posts it to a queue B).
    Everything is working fine but i have an issue in modelling my proxy message flow. If an external application sends a bulk msg i need to post the message one by one to my queue B. I have used for-each and Publish to BS but the msg doesn't get posted one by one. i know i am missing something please help me out.
    SOA Suite Version - 11.1.1.3

    Are you sure that your for-each definition is correct? Does the flow within the for-each get executed multiple times?
    You can check this by logging the variable to which you assign the message in the for-each. Don't forget to put the log level to Error, so you're sure that it's logged.
    Let's say you get a list of persons like the following xml in a variable personList
    <Persons>
    <Person>Glenn</Person>
    <Person>Prasanth</Person>
    </Persons>
    Your for-each definition should be the following.
    For each variable: person
    XPath: +./Person+
    In Variable: personList
    You don't mention the Persons element in the XPath expression since it is the root element of the XML. The root element is represented by . (dot).
    In the for-each, the variable person can be used like any other variable.

  • Invoke secured service in splitjoin in an osb proxy message flow

    Hello,
    I create a new Split-Join (in the OSB workshop application). Then
    I use an action "Invoke Service" to call a not secured business service. So far no problem. When I assign a security policy to my business service, the OSB does not accept. Here is the error message in the OSB workshop:
    [Parallel, Scope, Invoke Service] Binding contains Security policy assertions, which is not supported.
    Binding: "{http://testsplitjoin/v1}TestSplitJoinSOAPBinding"
    Service: "BusinessService TestSplitJoin/BusinessServiceNotSecure"     
    TestSplitJoin     SplitJoinTest.flow     line 43     1316955334516     3695
    How can I call a secured business service in a splitJoin?
    Thanks

    Are you sure that your for-each definition is correct? Does the flow within the for-each get executed multiple times?
    You can check this by logging the variable to which you assign the message in the for-each. Don't forget to put the log level to Error, so you're sure that it's logged.
    Let's say you get a list of persons like the following xml in a variable personList
    <Persons>
    <Person>Glenn</Person>
    <Person>Prasanth</Person>
    </Persons>
    Your for-each definition should be the following.
    For each variable: person
    XPath: +./Person+
    In Variable: personList
    You don't mention the Persons element in the XPath expression since it is the root element of the XML. The root element is represented by . (dot).
    In the for-each, the variable person can be used like any other variable.

  • Osb: Proxy Messaging Service retrieve only xml message that have the proper

    Hi All.
    I have a Proxy Service with Messaging Service type which read xml messages from a queue.
    The Request Message Type in the proxy is xml and I have provided the type information by declaring (in the element and type field) the XML schema type of the XML document exchanged.
    I need the proxy service to retrieve from the queue only the xml messages that have the proper schema.
    But when the proxy retrieves any xml msg in the queue regardless of their schema definition .
    Appreciate your input.
    Thx,
    Ross
    Edited by: user6677631 on Feb 25, 2013 9:52 AM
    Edited by: user6677631 on Feb 25, 2013 10:02 AM

    Selecting the XML schema for request type in a messaging proxy does not ensure the validation of incoming XML message against schema. Similarly if you create a WSDL based proxy the validation against WSDL definition will not happen automatically. Choosing XML as the type of message will only ensure that any malformed XMLs will be rejected before entering the message flow. For validating against schema you will need to explicitly add a validate action within the proxy message flow, if validation fails raise an error and roll back the message to the Queue or log the errored message and commit the message/publish to an error queue.

  • Proxy communication message flow,

    Hi all,
       Can any body help me out  in understanding the message flow in Proxy communication and how is it different from the flow that involves Techical Adapters?.How the mesage Id will  be created in Proxies for messages? .Lets suppose The scenario is  Proxy (ABAP) to Proxy (ABAP).Please explain in this perspective.Any good links,blogs ,Docs with useful explanation will be helpful to me .
    Thanks,
    Amar.

    Hi Amar,
    Hi,
    Please refer to these Blogs...
    Communication between SAP System & Webservice Using Proxies
    /people/siva.maranani/blog/2005/05/23/communication-between-sap-system-webservice-using-proxies
    ABAP Proxies in XI(Client Proxy)
    /people/ravikumar.allampallam/blog/2005/03/14/abap-proxies-in-xiclient-proxy
    ABAP Server Proxies
    /people/siva.maranani/blog/2005/04/03/abap-server-proxies
    Regards
    Mahesh

  • Getting servername or hostname in the proxy service message flow

    Is there a way to get the hostname in the OSB proxy service message flow without doing a java call out calling a POJO class?

    Thanks for the reply!
    I do not see any element in the inbound variable representing hostname
    Here is how the inbound variable looks like
    <con:endpoint name="ProxyService$GatewaySecurity$ProxyService$GatewayProxy" xmlns:con="http://www.bea.com/wli/sb/context">
    <con:service>
    <con:providerName>GatewaySecurity/resources/X509v3ServiceKeyProvider</con:providerName>
    </con:service>
    <con:transport>
    <con:uri>/GatewaySecurirty/ProxyService/GatewayProxy</con:uri>
    <con:mode>request-response</con:mode>
    <con:qualityOfService>best-effort</con:qualityOfService>
    <con:request xsi:type="http:HttpRequestMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tran:headers xsi:type="http:HttpRequestHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
    <http:Content-Type>application/soap+xml; charset=utf-8</http:Content-Type>
    </tran:headers>
    <tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8</tran:encoding>
    <http:query-parameters/>
    </con:request>
    <con:response xsi:type="http:HttpResponseMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tran:headers xsi:type="http:HttpResponseHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
    <http:Content-Type>application/soap+xml</http:Content-Type>
    </tran:headers>
    <tran:response-code xmlns:tran="http://www.bea.com/wli/sb/transports">0</tran:response-code>
    </con:response>
    </con:transport>
    <con:security>
    <con:transportClient>
    <con:username>&lt;anonymous></con:username>
    </con:transportClient>
    </con:security>
    </con:endpoint>>

  • Xslt in message flow

    hello,
    i have an XSLT document and i want to use it to make a transformation in the response message flow of my proxy service.
    i call a webservice through business service but i dont know which action,in the "response actions", corresponds to making an XSL transformation.
    I tried "replace" without success, the others actions seem not to be for transformation.
    in the xquery expression editor, i put my XSLT resource to execute.
    in "2. bind input", i dont know exactly what to put, there isn't any explication for "2. bind input" in the edocs.
    and for "3. bind variables", i have nothing (no variables have been found)
    could someone indicate me how to configure and use the result of my xslt in a message flow ?
    thank you very much.

    We built a custom service and invoked it asynchronously (non-blocking) using the Publish Action (with QoS as BestEffort) in the different places wherever we needed the audit functionality.
    And this service would do its work on the background as a part of a separate thread, thereby not impacting the actual service that was implementing the business logic.
    This is not optimal because there is still some time consumed for the publish action (though it is less) in the actual service with the business logic. But atleast this did allow us to overcome the limitation of the handlers to some extent.
    I generally do not prefer to use java callouts as the prerequisite is that the methods exposed need to be static, which might create some contention when many threads try to invoke the same java callout methods at the same time.
    Thanks,
    Patrick

  • Replacing default namespace in OSB message flow

    I'm in the process of setting up a simple OSB proxy and could use some help figuring out how to change a default namespace in the response from the business service.
    The proxy and business service use different namespaces which we'll call "http://foo.com/namespace/proxy" and "http://foo.com/namespace/business". In my routing request message flow, the contents of $body look like this and I'm able to use a Rename action with XQuery expression "./sof:*" to change "http://foo.com/namespace/proxy" to "http://foo.com/namespace/business":
    <sof:Execute xmlns:sof="http://foo.com/namespace/proxy">
    <sof:adminName>MyAdaptor</sof:adminName>
    <sof:request>
    [escaped payload omitted]
    </sof:request>
    </sof:Execute>
    This works fine, but in the response message flow, I need to revert the namespace and am having difficulty because the response uses a default namespace instead of using a prefix:
    <ExecuteResponse xmlns="http://foo.com/namespace/business">
    <ExecuteResult>
    [escaped payload omitted]
    </ExecuteResult>
    </ExecuteResponse>
    If I define a prefix P2L in the expression editor to correspond to "http://foo.com/namespace/business", I'm able to reference the ExecuteResponse element as "./P2L:ExecuteResponse", but then I get stuck.
    If I try use a Rename action to change the namespace for "./P2L:*", only the ExecuteResponse element is renamed to <sof:ExecutResponse xmlns:sof="http://foo.com/namespace/proxy">. Upstream in the calling application, there's an XML stream reader exception because (I assume) ExecuteResult is not found and parsed.
    I also tried using a Replace action against "./P2L:ExecuteResponse/@xmlns" to replace its contents with "http://foo.com/namespace/proxy". I also tried "./P2L:ExecuteResponse/@P2L:xmlns". Neither worked.
    Can anyone tell me what I'm doing wrong, or suggest a different approach? Assume that changing the calling application or business service is not an option.
    Thanks!

    >
    If I define a prefix P2L in the expression editor to correspond to "http://foo.com/namespace/business", I'm able to reference the ExecuteResponse element as "./P2L:ExecuteResponse", but then I get stuck.
    If I try use a Rename action to change the namespace for "./P2L:*", only the ExecuteResponse element is renamed to <sof:ExecutResponse xmlns:sof="http://foo.com/namespace/proxy">. Upstream in the calling application, there's an XML stream reader exception because (I assume) ExecuteResult is not found and parsed.
    >
    You pattern "./P2L:\*" matches just one element so it's ok that the payload's namespace wasn't touched. If you want to rename namespace for all elements try "//P2L:*". However, I'm not sure whether this is what you want. Try do describe what you do, what you want and what you get instead.
    >
    I also tried using a Replace action against "./P2L:ExecuteResponse/@xmlns" to replace its contents with "http://foo.com/namespace/proxy". I also tried "./P2L:ExecuteResponse/@P2L:xmlns". Neither worked.
    >
    I think it's not a good approach to replace content of xmlns as this attribute is not a common xml attribute.

  • Loop in message flow found

    Hi all
    I created a idoc to abap proxy for the xi adapter i used http destination with my destination defined in sm59.
    In sxbm_moni i get the error:
    LOOP_IN_MESSAGE_ROUTING
    Loop in message flow found: system is.00.metsapxd, pipeline CENTRAL with inbound adapter XI already processed
    Anyone know how to fix the error?
    Thx

    Hi,
      I think your end business system i.e. where proxy exists -- this application system is configured as "integration engine/HUB". Try to keep it as (SXMB_ADM -> Integration engine configuration) type of business system as "applicaiton system" instead of integration engine/server.
    Regards,
    Rao.Mallikarjuna

  • How to return "HTTP/1.0 401 Authorization Required" from OSB's Message Flow

    How can I return "HTTP/1.0 401 Authorization Required" header from OSB's Message Flow?
    Using of "HTTP Transport -> Authentification" is not possible, because I need flow condition. Transports Headers activity from design palette doesn't allow to send such headers.
    Practical usage: request for kerberos ticket by sending two headers: 401 and WWW-Authenticate: Negotiate...

    Can you briefly expand the use case for better understanding?
    HTTP Client---> Hand Shakes or what ever ----> HTTP Proxy (OSB )---> Pipeline----
    Philosophy behind pipeline is that it is designed to work on the request. Correct me if I'm wrong.
    What you are asking is ability to control the hand shake either in Pipeline or some way during proxy configuration. Unfortunately there is no configuration that is exposed for HTTP proxies in OSB to control that behavior.
    Manoj

  • XI Message flow

    I am trying to integrate a r/3 system with XI, can someone point me to possible data flow diagrams.
    What can be a possible scenario here...?
    Can someone also point me to the message flow within IR and ID for the above scenario..
    Regards
    Ravi

    Hi,
    Pipeline steps for XI Message flow steps , This might help you to understand
    Pipeline :
    When a source message reaches the Integration server
    the messages under goes this
    a) Receiver Determination:
    This steps determines the system that participates in the exchange of the message.
    b) Interface Detremination:
    For each receiver determine which interface will should receieve the message.
    c) Message Split:
    If more than one receievers are found, XI will instantiate new message for each receiver.
    d) Message Mapping:
    Mapping to transform the source message to destination message format.
    e) Technical Routing:
    Bind a specific destination and protocol to the message.
    f) Call outbound Adapter:
    Send the transformed message to the adapter or a proxy.
    Regards
    Agasthuri Doss

  • Action replace in message flow

    i try to change dynamically an email URI in message flow of a proxy service.
    so i use : <b>replace</b> ./ctx:transport/ctx:uri <b>in variable</b> outbound <b>with</b> "mailto:...."
    but it doesn't work, no change is made.
    is it normal ?

    Hi,
    I got it to work by using the insert action instead of reaplce: (if you print the value of outbound context variable, the uri element doesn't exist in that), so you have to insert, it can't do replace on a non-existent element)
    Insert
    <uri xmlns="http://www.bea.com/wli/sb/context">jms://localhost:7001/weblogic.jws.jms.QueueConnectionFactory/EchoServiceResponseQueue</uri>
    as first child of ./ctx:transport in outbound
    Letme know if it doesn't work.

  • Functionality of IF in OSB message flow

    Hi Team,
    am just confused about the functionality of IF in OSB message flow, either in a proxy or in a split-join.
    for example consider the following scenarios in  if-then stage,
    1. I write the condition as status="yes", then some process will be done.
    2. but what if I write just status? what can be the functionality of IF here?
    Please suggest the needful  thanks in advance.
    -Pruthvi Raj.

    but what if I write just status? what can be the functionality of IF here?
    Then the $status variable is evaluated. If it is not an empty sequence (), it is considered true (AKA exists).
    In other words, if there is anything in the $status variable, it is true. Unless it is a boolean false, of course, but all variables in OSB are strings, so that is not going to happen.
    Please note that Split-Join AKA Flow is a different codebase. Its variables are typed (vs strings in OSB), and hence if will behave differently for false value.
    Vlad @ genericparallel.com

  • Message Flow in Integration Engine

    Dear Friends,
    Kindly can someody share  how the message is flowing in Intergration engine after the message taken from Adapter engine.
    If you have any block diagram it will be helpful for me

    Hi Karthik,
    There are 6 stpes for the message processing thats only called
    PIPELINE Steps.
    what are all the steps involved in the Pipeline processing.
    Sender Adapter picks up the file from the file system, converts it to XML and places it in the payload of an XI-SOAP message. Then it posts this message to the Integration Server pipeline via http(s).
    XI pipeline steps are:-
    ->Sender Agreement
    ->Receiver Determination
    ->Interface Determination
    ->Interface Mapping
    ->Receiver Agreement.
    When a source message reaches the Integration server, it performs 6 steps before the message reaches the destination. The steps are:
    1) Receiver Determination: This steps determines the system that participates in the exchange of the message.
    2) Interface Determination: For each receiver determine which interface will should receiver the message.
    3) Message Split: If more than one receivers are found, Xi will instantiate new message for each receiver.
    4) Message Mapping: Mapping to transform the source message to destination message format.
    5) Technical Routing: Bind a specific destination and protocol to the message.
    6) Call outbound Adapter: Send the transformed message to the adapter or a proxy.
    One can examine these steps in Runtime Workbench using the Transaction: SXMB_MONI.
    message flow in XI
    The life cycle of the message is explained in detail by taking an example scenario. The file is picked up by the Sender File adapter and the data is inserted into DB table by Receiver DB Adapter.
           The adapter engine uses the messaging system to log the messages at every stage. This log is called the Audit Log. The audit log can be viewed from the runtime work bench (RWB) to look into the details of the lifecycle of the message. During our journey we will also have a look at the messages that are logged at different stages.
    Note: This article is targeted for the newbieu2019s who want to understand the message flow in Adapter Engine. So the insight into the message lifecycle is provided here by taking only the Technical adapters (File/ JDBC/ JMS/ Mail) into consideration. It doesnu2019t delve into the lifecycle of the messages that have reached XI Adapter Engine using RNIF/ BC/ CIDX adapters.
    ONWARD JOURNEY:
    Fig1. Message flow from Adapter Engine to Integration Server
    1.     For the message to be picked up by the communication channel, the channel should be associated with a sender agreement. Here creation of a communication channel doesnu2019t ensure the message to be polled and picked up by the adapter. The message reaches the adapter in its native message format. As the communication in SAP XI happens in XI message format, a module inside the adapter converts the message in native format into XI message format.
    2.     During this process, a message ID is generated for the message. To build the XI header (sender agreement details like the sender system, sender message interface and the interface namespace) the details are fetched by performing a CPA lookup(collaboration-partner-agreement are the configuration object details that have been created using the configuration time. The details are updated into the runtime cache when you activate the Configuration objects in Integration builder u2013Configuration time. This cache is referred to as CPA cache).
    3.     This message is then sent to module processor for further processing. During the process of sending the message to module processor, the message u201CApplication attempting to send an XI message asynchronously using connection AFWu201D is logged.
    4.     The module processor performs steps like structure conversion, communication channel specific conversions (that have been specified in the u201Cmodule tabu201D of the adapter channel). These conversion modules are executed in the same sequence as mention in the communication channel.
    5.     After the successful execution of the conversion modules, the appropriate module (call SAP adapter module) of the module processor is called which will send this message for persistent storage. This message is put into the Send Queue of the messaging system for further processing. Messages like u201CMessage trying to put into the send Queueu201D and u201CMessage successfully put into the queueu201D are logged during this process. A confirmation message (success/ failure) is sent back to the sender application at this stage. This confirmation message is used by the channel to perform various steps like deleting the file that has a processing mode as delete.
    6.     The message that has been put in the Send Queue has to be picked up and sent to the Integration Engine. The Adapter Engine and XI Integration server use XI Adapter for internal communication purposes. So the XI Adapter picks up message from the send queue and parses the XI message. In this process, the status of the message is set to DLNG and. Messages like u201CThe message was successfully retrieved from the send queue and message status set to DLNGu201Dare logged.
    7.     The XI adapter performs a SLD look up (System landscape Directory) to find the Integration server with which the Adapter framework has register itself.
    8.     On successful SLD look up, the message is sent via HTTP to the XI IS pipeline, using the pipeline URL (http://hostname:abap-httpport/sap/xi/engine?type=entry). . If this is successful, a message u201CThe message was successfully transmitted to endpoint http://hostname:8000/sap/xi/engine?type=entry using connection AFWu201D is logged and the message statues is set to DLVD means message has been successfully delivered to the endpoint( XI IS in this case)
    Fig2. Audit Log of message during onward journey
    RETURN JOURNEY:
    The return journey commences when the IS has successfully processed the message and delivers it to the Messaging system using the URL u201Chttp://hostname:50000/MessagingSystem/receive/AFW/XIu201D
    br>
    Fig3. Message flow from Integration Server to Adapter Engine
    1.     When the Integration Server (XI IS) finishes processing of the pipeline steps (like receiver determination, interface determination and interface mapping), the message has to be delivered to the required Receiving system. So the XI Integration server will send the message to the messaging system of the Adapter Engine (AE) using the mentioned above. Once the message is successfully received by messaging system, the message u201CThe message was successfully received by the messaging system. Profile: XI URL: http://hostname:50000/MessagingSystem/receive/AFW/XIu201D is logged.
    2.     As discussed Integration server and Adapter Engine use XI adapter for internal communication purposes. So the XI message that has been received by the messaging system URL is parsed by the XI Adapteru2019s protocol handler.
    3.     The XI message is put into the receive queue and persisted. During this stage messages like u201CUsing connection AFW. Trying to put the message into the request queue; Message successfully put into the queue.u201D are logged.
    4.     The XI messages that are put in the receive queue are retrieved by an application (Worker thread) and are sent to AFWListenerBean. AFWListenerBean is a module (an EJB) in Adapter Engine that is capable of parsing the XI message. On successful receive of the XI message by the AFWListenerBean, messages like u201CThe message was successfully retrieved from the request queue.u201D are logged and the status of the XI message is set to DLNG.
    5.     The AFWListenerBean reads the receiver agreement and the corresponding channel from the XI header to determine the appropriate adapter. In this stage the adapter channel is logged in the audit log. u201CDelivering to channel: XYZ_Channelu201D
    6.     The message is forwarded to the module processor where additional steps like structure conversions and extra modules specified in the adapter are performed.
    7.     The exit module is called and the message is sent to the appropriate adapter (DB Adapter in this case). The format conversion will be executed within the specific adapter and sent to the Receiving system (DB in this case) using the channel that has been determined by the AFWListenerBean and the required action is reformed (select statement is performed in this case). On successful processing of the message the status is set to DLVD.

  • Regarding message flow in sap xi

    HI
    i want to the flow of message from outbound system to inbound system completly.
    ie  i want to know ---which components like message interfaces,rd,id,sa,ra,.............such types.i want to know  the complete flow and after which step which is to be taken place.
    also i want to know the steps involved in pipeline and when it will be called in the above sequence.
    thanks in advance.

    Hi
    The steps involved in XI message flow are below.
    1.Receiver Identification - Determines which system to participate in an exchange with the incoming message.
    2.Interface Determination - For each receiver system determines which interfaces should receive a message.
    3.Message Split - If multiple receivers are found, XI will instatiate a new message for each receiver.
    4.Message Mapping - Call the mapping program to transfer the message structure to the receiver format.
    5.Technical routing - Bind a specific  destination and protocol to the message.
    6.Call adapter. Send the transformed message to the adapter or proxy.

Maybe you are looking for