Combine response of two business services in OSB

Scenario:
I have a proxy service which ahs two business service call outs depending on the system name passed to it(e.g. 'ABC', 'XYZ')
1. If the request contains 'SysName' = 'ABC', service related to 'ABC' gets called. The response is generated. (This is working.)
2. If the request contains 'SysName' = 'XYZ', service related to 'XYZ' gets called. The response is generated. (This is working.)
3. If the request contains 'SysName' = 'ALL', both the services related to 'ABC' and 'XYZ' systems should get call. The generated reponse should contains response of both the services.
Please note that, the XSDs for reqeust/response of both 'ABC' and 'XYZ' services are same.
Could you guide on steps to combine response of two business services?
Thanks-
Sachin

Hi Sachin ,
Yes u can can combine any number of service responses by using service callouts in separate/indivisual stages as it would be better to debug and trace the message flow.
U can give explicitly user defined response variable names for the service callouts action and used them in ur pipeline (eg.response pipeline)where ever u want.
U can create an xml structure like this where u r variables $responsebody_1.responsebody_2 are those which u hv defined while configuring the service callout action against the SOAP Response Body/Response Document Variable what ever u r using for calling BS
<body>
<response_1>{$responsebody_1}<response_1>
<response_2>{$responsebody_2}<response_2>
</body>
and in the end use replace actionin the last stage of response pipeline to replace the entire body/node contents with the above mentioned xml structure to combiine both responses from BS
Regards ,
Abhinav

Similar Messages

  • How to keep data integrity with the two business service in OSB 10.3.1.0

    How to keep data integrity with the two business service in OSB 10.3.1.0
    In our customer system, customer want to keep data integerity between two businness service. I thinks this is XA transaction issue.
    Basing customer requirment, I created a testcase but I can't keep data integerity, For detail information, please refer the attached docs.

    Can you please explain what you meant my data integrity in your use case?
    Manoj

  • Combine output of two business services

    Hi,
    I need a solution for the following problem.
    I have two dataservices(DS1 and DS2) whose return type is C.
    Now I want to combine these data services output at service bus level.
    The return type for final output should also be C, basically a kind of union transformation.
    For dataservice (DS1 and DS2), I have craeted two buisness services (BS1 and BS2)
    I wnat to do the union at proxy service.
    But I donot know how to call two business services at same time and how to combine their output.
    Should I use service callout???
    Please help me, I am pretty new to service bus

    You can use Service callout to invoke DS1 and DS2 and assign the responses to different variables. After the two callouts are made define an xquery transformation that takes these two variables as input and returns desired output. In ALSB pipeline use output of this transformation to replace body.

  • Calling two Business service using split join in osb

    Hi,
    While trying to call two business service using Split Join in osb i am getting selection failure message in Bpel em console. i am using invoke activity to invoke the BS and assign to assign the input. in the assign i am assigning *$request.payload/input* to input.payload . In the em console i am getting input like this
    receiveInput
    Jun 19, 2012 5:05:45 PM Received "process" call from partner "bpelprocess1_client"
    <payload>
    <inputVariable>
    <part name="payload">
    <client:process>xxxxx</client:process>
    </part>
    </inputVariable>
    Assign (pending)
    Jun 19, 2012 5:05:48 PM Error in evaluate <from> expression at line "65". The result is empty for the XPath expression : "/client:process/client:input".
    <payload>
    <client:process>xxxxxx</client:process>
    Jun 19, 2012 5:05:48 PM The following exception occurred while attempting to execute operation copy at line 63
    <payload>
    <bpelFault>
    <faultType>0</faultType>
    <selectionFailure/>
    </bpelFault>
    Jun 19, 2012 5:05:57 PM "BPELFault" has not been caught by a catch block.
    Jun 19, 2012 5:06:00 PM The transaction was rolled back. The work performed for bpel instance "650002" was rolled back, but the audit trail has been saved for this instance.If this is a sync request, please resubmit the request from the client. If it is an async request, please recover from the recovery console by resubmitting the invoke message.
    Can anyone help on this?
    Thanks in Advance...

    maybe this one helps a bit, it's the same pattern
    http://www.xenta.nl/blog/2011/07/03/oracle-service-bus-implementing-aggregator-pattern-by-use-of-split-join/
    if you're using a dynamic split join easiest way is to do something like
    assing <yourresponse/> to $response
    at this moment your assign an empty placeholder to the response variable
    now you go into the for-each looping and for each iteration you need to insert the response of your bpel call in the $response variable
    so in the looping as last step you add something like
    insert $mybpelresponse/rootelement into $response/yourresponse
    with the insert it will insert the reponse 1..x times into the $response variable (so actually aggregating all the responses for you)

  • OSB - Response timer when business service call external webservice slowly.

    I am a new bie about OSB, i am developing and testing business service OSB call external webservice. When i test by business service on osb console then time response is 10s, but when i program by C# call external webservice then time response is 0,000026s.
    pls help me.

    I am a new bie about OSB, i am developing and testing business service OSB call external webservice. When i test by business service on osb console then time response is 10s, but when i program by C# call external webservice then time response is 0,000026s.
    pls help me.

  • Provide authenticated username as parameter to a business service in OSB 12c

    Dear OSB/OSB experts,
    I have the following issue:
    1. I have a web service that would accept username as a parameter in the SOAP request in order to do some internal authorization checks (filtering database rows, tables, etc.)
    2. I want to connect that web service as business service in OSB 12c
    3. The proxy service should NOT accept username as parameter
    4. The proxy service should be protected via OWSM policy for authentication (either against the WLS authentication providers or through SAML tokens validation)
    Based on the above is there any mechanism in the implementation of the proxy service to get the authenticated username from the security context and provide it as a parameter to the business service?
    The authentication policy could use SAML tokens between two WLS domains - one will be running the WLS where proxy service clients will be running and the other - for the SOA 12c.
    Many thanks in advance,
    Anatoli

    HI,
    u can use Conditional Branching
    http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/userguide/modelingmessageflow.html#wp1061670
    Split join would be used in case u need to split your request and call your Business Service in Serial/parallel & then gather resposnes from multiple callouts to have single response
    http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/userguide/splitjoin.html#wp1137258
    Abhinav

  • How to publish to different Business service in OSB

    Hi,
    I have a xml,based on the RecordType I need to send to two Business services.
    If 00020=Then i publish to LOSS BS
    if 00030=Then to Gain Business service.
    Then XML is as below.
    +<body>+
    +<CSSiteAndMeter>+
    +<Header>+
    +...+
    +</Header>+
    +<Detail>+
    +<RecordType>00010</RecordType>+
    +<RecordTypeLiteral>METERID</RecordTypeLiteral>+
    +</Detail>+
    +<Detail>+
    +<RecordType>00020</RecordType>+
    +<RecordTypeLiteral>LOSS</RecordTypeLiteral>+
    +</Detail>+
    +<Detail>+
    +<RecordType>00010</RecordType>+
    +<RecordTypeLiteral>METERID</RecordTypeLiteral>+
    +</Detail>+
    +<Detail>+
    +<RecordType>00030</RecordType>+
    +<RecordTypeLiteral>GAIN</RecordTypeLiteral>+
    +</Detail>+
    +<Trailer>+
    +...+
    +</Trailer>+
    +</CSSiteAndMeter>+
    +</body>+
    How do i do in OSB,though there is a IF condition in OSB which i can do by cheking the Record Type='00020',but i need the Record Type =00010 also while publishing, like below
    +<Detail>+
    +<RecordType>00010</RecordType>+
    +<RecordTypeLiteral>METERID</RecordTypeLiteral>+
    +</Detail>+
    +<Detail>+
    +<RecordType>00020</RecordType>+
    +<RecordTypeLiteral>LOSS</RecordTypeLiteral>+
    +</Detail>+

    HI,
    u can use Conditional Branching
    http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/userguide/modelingmessageflow.html#wp1061670
    Split join would be used in case u need to split your request and call your Business Service in Serial/parallel & then gather resposnes from multiple callouts to have single response
    http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/userguide/splitjoin.html#wp1137258
    Abhinav

  • Best practices for Calling Multiple Business Services in OSB

    Hi All,
    I have a requirement where I need to call multiple business services in OSB. We are presently calling them sequentially in a proxy pipeline. I was wondering if we could accomplish the same task in a better way. Each of the business services are mutually exclusive.
    Thanks in Advance,
    Rudraksh

    Hi Eric,
    Thanks for the response. We figured that it is possible to call multiple services with Split Join. However, we ran into the issue you described. We had a blocking call and had to wait until each of the services returned a response.
    However, we needed a Async model for our design and felt that this might not be a right fit.
    We are now looking at implementing the publish option with QoS configured as this fits our usecase better. Thanks for the help again.
    Rudraksh

  • Using a uddi key to create a business service in OSB

    I want to be able to use a service registry key when creating a business service in OSB. I've found documentation on how to do this in Oracle ESB, but not in OSB.
    From the documentation for OSB, I can only find a way to synchronize the business services imported from the service registry (when i search through the imported services there is no mention of the uddi key that i can see). I can choose to auto-import when setting up the registry, but I'm not sure exactly what this behavior does.
    From the console documentation (http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/consolehelp/uddi.html)
    "You can use the Auto-Import Status page to synchronize changes to a service with those present in the registry. Upon any changes to a service in the registry, Oracle Service Bus provides notification of the change on the Auto-Import Status page which lists all out-of-sync services. You can then synchronize the service in the Oracle Service Bus Console with the corresponding service in the UDDI registry."
    This setting seems to automatically update the endpoint of the business service wihtout that administrator having to do anything, but what is actually being done? Is the service bus updating the endpoint as soon as it has been notified of a change or when i view/call the service is the endpoint being looked up?
    Am I missing something??
    Edited by: user498458 on Apr 27, 2009 11:30 AM

    I took your advice and re factored the Receive class so it had all the functionality I needed except two methods which would then be overridden in the derived classes. What I had a hard time understanding is once an object of class say SpecialReceive extends Receive it can be referred to as Receive yet still maintain that it's a SpecialReceive.
    What I mean is if I give a Receive object to some method and this method has no idea that this object is actually SpecialReceive and it calls a method say run() which gets overridden by the SpecialReceive. I thought that since this method has no idea what type of Receive this object is it will execute Receive's run(). But it actually does know what type of class it is and it executes the right run() method (the one that SpecialReceive overrides).
    After I realized this there is no more need for casting.
    Thanks everyone for your contributions.

  • Problem in creating JMS business service in OSB

    Hi all
    I am creating a JMS business service in osb:request /response is TEXT
    It write to "*QueueSend*"-which is my URI endpoint
    I have a MDB which read from "*QueueSend*" and write to "*QueueReceive*"
    i have given the *"Response Endpoint*" in jms business service to point to "*QueueReceive*"
    When i send the msg, it write to QueueSend and mdb writes it to QueueReceive but JMS business service doesn't read from QueueReceive,it just wait a long .......
    What is the problem??
    Thanks
    Rohan

    Hi Rohan,
    Are you able to see consumers on "QueueReceive"?
    If no, then your BS is not listening on this queue. Check the end-point again. Check server logs to know if any error occured while BS tried to connect with Queue. Restart your server which has this queue and then the OSB, and try again.
    Regards,
    Anuj

  • Having multiple Stored procedure in a single Business Service in OSB

    Hi,
    Please let me know is it possible to have multiple Stored Procedure inside one business service in OSB.
    Regards,
    Abdul

    Hello Abdul,
    It is not possible to serve multiple stored procedures/functions with one business service because one business service can be based on one adapter only and one DB adapter can interface one DB component only. You may have one stored procedure which internally makes call to all other procedures as per your requirement and from OSB, call this single stored procedure using one business service.
    Regards,
    Anuj

  • Dynamic csf-key to Business service of OSB?

    We have created single Business Service which is getting called from one proxy service to execute different Web Service end points.
    For different end point execution I want to pass different authentication parameters.
    Currently we have configured User Id and Password through single csf-key through policy.
    Since csf-key is secured option to pass authentication parameters to end point,  is it possible to configure dynamic csf-key to Business service of OSB?

    Create a business service using file transport and type "Text".
    Obtain the file name and assign to $body in ur proxy service stage and publish to the business service u just created.

  • Calling Secured Business Service from OSB

    Hi,
    I am trying to call a Service which is secured.
    the Request SOAP message is like :
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:ns="urn:crmondemand/ws/activity/10/2004"
    xmlns:act="urn:/crmondemand/xml/activity"
    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    *<soapenv:Header>*
    *     *<wsse:Security>**
    *          *<wsse:UsernameToken>**
    *               *<wsse:Username>USERX</wsse:Username>**
    *               *<wsse:Password type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">PASSWORD</wsse:Password>**
    **          </wsse:UsernameToken>**
    *     </wsse:Security>*
    *</soapenv:Header>*
    <soapenv:Body>
    ========================
    ========================
    </soapenv:Body>
    </soapenv:Envelope>
    I have created a business service and attached the service to Proxy service.
    I am new to OSB.I am unable to change the header data.In the forums i found couple of responses pointing to create
    Policy file or creating service account which were not clear to me.Dear expert , please guide me what exactly need to be done in this case.
    Thanks in advance,
    Regards,
    Chandra

    hi,
    Finally i have done it with the help of documentation.
    solution is :
    In the service configuration --> Policy -->select OWSM policy bindings (your domain should be configured with OWSM extention))
    select predefined oracle/wss_username_token_client_policy from in the OWSM configuration window
    next login to the em console: http://localhost:7001/em
    In the left hand side pane Go to Weblogic Domain -> select <your domain name>
    In the central pallete Weblogic Domain drop down goto secutiry --> Credentials.
    Here create a map with name : oracle.wsm.security (if not exists)
    Create a key by selecting the map as :oracle.wsm.security
    Key name : Sample_KEY
    Type : password
    Username: The username you are expecting in the soap header
    Password: The password you are expecting in the soap header
    Now go back to your service configuration -> Policy -> select the policy that you have added.
    there you can see the properties button enabled.click on it...
    there for the default_value = basic_credentials give the over_ride value as Sample_KEY (the key name you have mapped to the map)
    Regards,
    Chandra sekhar kommalapati

  • How to control transactions (WS-AT) between two web services in OSB?

    Could someone tell me if the OSB can have 2 diferents web services controlled by an unique transaction?
    For instance: in the OSB there are two wsdl, each one with its own Business Service and ProxyService respectively. In my vb.net aplication I started a transaction, called the first web service succefully and from the second web service I got an exception. I expected the first web service undo its work because the vb.net aplication excute a rollback command. Is this possible? How can I do? Any sample or tip will be helpfull.
    If I was developing without OSB, I would rely on WS-AT as shown in http://www.codeproject.com/Articles/38793/6-Steps-to-Enable-Transactions-in-WCF for two web services dot net, or for one web service dot net and other java, http://www.ibm.com/developerworks/websphere/library/techarticles/0707_lo/0707_lo.html.
    My question is basically: Is still possible to keep a single transaction between multiple web services when they are mediated by OSB? If so, is there a example showing how?

    Hi,
    When you create the proxy server, you have to check "Transaction required" box on Message Handling page...
    http://docs.oracle.com/cd/E17904_01/doc.1111/e15867/proxy_services.htm#i1316487
    Cheers,
    Vlad

  • Proxy business services in osb

    In osb if i want to get data from a client then what is the procedure
    I am using a business service whose endpointuri is a proxy service (protocol http)
    And this business service is inturn called by my local proxy service
    Is this procedure correct ?
    if not then what is the correct procedure how many proxy and business services do i need to get data from my client
    Thanks,
    Rahul

    How many Proxy Services and Business Services to use depends on the use case.
    For example, if your client will initiate a transaction when it has some data to send to another system then you will have to configure following flow:
    First system (wants to send some data)--> Proxy Service(to receive data from Client) --> Business Service (to call the second system) --> second system web service API
    Another scenario in which you need to get some data from the second system when requested by the first system (query scenario) the above flow would still remain the same.
    Addition of another Proxy service depends on specific use case and scope of re-usability etc. For example if you want to fetch data from a system and that query can be reused in various processes or can also be called from various client applications then you can create a wrapper Proxy above the Business service and call this Proxy Service instead of calling the business service from your Proxy.
    Domain structure also is a deciding factor, for example if you want to call a Proxy in one domain from another domain you can use a Business Service in the requesting domain.

Maybe you are looking for

  • Fazer devolução de nota fiscal

    Prezados,           Qual o  procedimento a ser feito no SAP, uma vez que no sistema a nota foi cancelada, mas na SEFAZ não. Como vamos fazer a devolução da nota se a mesma está cancelada? O prazo de cancelamento do SEFAZ já passou. Garato, Fernando M

  • Excise and cess

    gys please help me with this ..... like im doing a factory sale 4.7 using taxinn configured settings for cin.... va01,vl01n.vl02,vf01,j1iin. i am able to see the excise duty BED against jexp ( % BED ) in order and billing document but in excise invoi

  • Itune.exe -Corrupt File message

    I have an Ipod Nano which has been working fine for a long while. Today for no apparent reason, I got I got the following error message when I attached the ipod to the usb wire: "itune.exe-corrupt file ipod_control/iTune/iTunesPrefs is corrupt and un

  • Can't move pictures to trash

    I can't move pictures to the trash (in the Source side-bar). It's like the Trash 'album' is readonly. When I try to move pictures to the trash by dragging & dropping, the picture(s) disappear from the album but nothing shows up in the trash. BTW, the

  • How do I get rid of the tab under my row of tabs, saying "Retrieving buttons from My Web Search"?

    Hi, Under my row of tabs, there is a row that says "Retrieving buttons from My Web Search". This has been appearing for the past 3 days and I have no idea how to remove it. It is obviously failing to retrieve any 'buttons' from my 'web search'. On th