OSB call multiple Business Services and combine the responses into one

Dear All,
I am new to OSB and I have a use case that I need to solve. I have 3 web services and I imported their WSDLs into OSB and created 3 Business Services that goes with each WSDL. The scenario is like this.
Business Service 1: takes an input value as [Region] and returns a list of employee names.
Business Service 2: takes the list of employee names and returns the list of employee names with their job profile
Business Service 3: takes the list of employee names with their job profile and returns their contact information.
I need to return the result of Business Service 3 to the consumer. The consumer basically need to call the Proxy service with [Region] as the input value and the result should be the output of above Business service 3.
As I mentioned, I have WSDL for all the 3 Business Services, but, I do not have the WSDL for the Proxy Service. The Business Service WSDLs are all different and they do not match.
My question is it possible to achieve the above result without having a concrete WSDL for Proxy Service? Also, how can I go about solving this use case. I have gone through some articles that talk about Split-Join, and am really lost.
I really appreciate your kind reply on this.
Thanks in advance.
Regards,
Syama

You have multiple options:
1. Create a WSDL which has input similar to input of WS1 (only Region as input) and an output similar to output of WS3.
Create Proxy Service based on this WSDL. Then call all the thee business services one after the other and doing transformations/assigns as needed after each call. Finally map the result of BS3 to the similar output of your new WSDL on which the Proxy service is based.
2. Create an Any XML type of web service. Create a schema which has two elements, one for input and one for output. Input containing only Region and output containing all the details. All consumers need to send request according to input defined in schema and expect output defined in schema. Its similar to creating the WSDL but can be used in case your consumer do not want to call a Web Service but want to call an XML API over HTTP. Rest will be same as option 1.
Split join is needed to make calls in parallel, it wont be usable in your use case unless you expect a list og regions in the same request for each of which you need to gather same information by calling three services.

Similar Messages

  • 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

  • OSB example calling multiple business services using a single proxy service???

    Hi,
    I have three business services created using http urls i.e.
    1. LoginBS
    2. GetListBS
    3. LogoutBS
    My requirement is to get a list of names from GetListBS using a single proxy service and to call GetListBS I have to first call LoginBS then GetListBS i.e. after authentication and then finally logout.
    Kindly help with a detailed example for this and I am new to OSB.
    Thanks,
    Vik

    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

  • OSB: Calling MTOM business service from non-MTOM proxy

    Hi,
    it is very easy to call non-MTOM business service from MTOM enabled proxy service, but I don't know how to do it in an opposite way. I have web service proxy (http) with binary data in Base64 in a soap body element and I'd like to call a business service (web service over http again) using MTOM format to send binary data in binary format (and not in Base64 as it is in proxy). Is it possible to somehow decode binary data from Base64 in a proxy service and send them from this proxy to a business service using MTOM?

    I understand the flow you propose, but I don't know how to pass decoded data from Java callout back to message flow. As far as I know I can only return primitives, String and XmlObject, because anything else can't be processed in message flow.Yes you are correct.But you can also return DataSource in java callout. Please http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/pojo.html
    Now the working solution/POC --Tested on my local linux box
    package manoj.javacallout.binary;
    import java.io.BufferedReader;
    import java.io.ByteArrayOutputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import javax.activation.DataSource;
    import javax.mail.util.ByteArrayDataSource;
    import com.sun.org.apache.xml.internal.security.utils.Base64;
    * TODO: I have use sun internal API for decoding for simplicity. You should modify this code with any base64 decoding library
    * Ideally should be using using http://commons.apache.org/downloads/download_codec.cgi
    * @author mneelapu
    public class Util {
         public static DataSource decodeBase64(DataSource ds) throws Exception {
         InputStream in=ds.getInputStream();
         BufferedReader bin = new BufferedReader(new InputStreamReader(in));
         byte[] decodedB64=Base64.decode(bin);
         ByteArrayDataSource decodedDS= new ByteArrayDataSource(decodedB64,"binary/octet-stream");
         return(decodedDS);
    Java Callout to decodeBase64
    Parameters
    javax.activation.DataSource=[ $body/* ]
    Result
    javax.activation.DataSource=response
    Now replace the $body with the decoded base64 response from java callout
    Replace [ node contents ] of [  undefined XPath  ]
    in [ body ] with [ $response ]
    Use $BEA_HOME/modules/javax.mail_1.4.jar for compiling.
    Let me know if this solves your problem.
    Thanks
    Manoj
    Edited by: mneelapu on Apr 20, 2009 3:23 PM

  • Hi. I made a modern resume from the pages template and then made a modern letter from the templates, how do I combine the two into one PDF file in Pages? Thank you.

    Hi. I made a resume from the modern template in Pages, then I made a letter from the modern template in Pages. How do I combine the two (cover letter and resume) into one PDF file. Thanks in advance.

    Open them both in Preview.app and drag the thumbnail of one into the other,
    Peter

  • I have three different ipods with music on them and have had to replace our computer as it was in a fire. How can we combine the ipods into one ipod.

    We had to replace our computer due to a fire and lost many of the fiels which were on them. Many were music files for the ipods, we have thre. Also, do not have ID's and passwords to the iTunes store.
    How can we combine the information so that they are all in each one or at least compbine everything into one ipod?

    Just so you know the method suggested by Nelsonleee will cost your $29.95 USD, Yamipod is free.

  • I have multiple apple IDs, I need to know them all, and combine them all into One ID?

    1. How do I see all the Apple IDs I Have?
    2. Can I combine these IDs down, so I have less confusion?
    Think apple will create a way to do this??

    Apple IDs can’t be merged.
    (120017)

  • When i bought my new iMac recently i transferred all my photos from pc to iPhotos  then i recd an update that gave me Photos  how do i combine the two into one photo library and which should i choose?

    When i recently bought my new iMac, i transferred my photos from the old pc.  then i recd an update which introduced the Photos...so now i have two photo repositories and i only want one.  how do i get them together and how can i easily find duplicates to delete?  and which library should i choose.

    When you launch Photos for the first time it will import all of your photos from iPhoto. iPhoto is going away eventually and Photos is the replacement. For the time being both apps will remain on your system but you should start using Photos exclusively for the future.

  • 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 combine movie clips into one?

    In one Aperture project I have 5 short (under 1 min) movie clips that I would like to combine into one "movie", and would like to know the quickest and easiest way to do this.  I am not interested in any editing other than combining the clips into one.  Thanks!

    In Aperture the only way to combine movie clips is to create a basic slideshow, but you will get better results (stabilization, effects, etc) in iMovie or Quicktime 7, if you have it.
    In Aperture:
    Create a slideshow with the "Classic" theme: Select the two video clips in the Browser and use:   File >New > Slideshow
    Set the Default Slideshow settings (Transitions, Text, background) as you like them.
    Arrange the clips in the Time Line in the order as you want them.
    Press the "Export" button in the upper right corner to export a new video. Reimport it to Aperture.
    Regards
    Léonie

  • 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)

  • Reg. the Business Service and Business System(Integration Directory).

    Hi,
            I have a small doubt reg. the Business Service and Business System. When do we need to go for creating a Business Service AND a Business System? I want to know the difference b/w them and the usage of a Business Service as compared to a Business System. Generally I create Business Systems in my configuration scinerioes. Could anybody pl. clarify on this?
    Regards,
    Murthy

    Murthy,
    It's been already discussed so many times, Juz give a search option in the thread, you will find a lot.
    Anyhow,Please refer the below threads.
    Re: Business Service <--> Business System
    Business service or Business system??
    Business Service and Business system
    Diff b/w Business service & Business System?
    Business Service / Business System
    business system and business service
    Best regards,
    raj.

  • Dynamic timeout for OSB proxy or business services

    The scenario we got here is that we will have multiple synchronous webservices implemented as OSB proxy services. These proxies will then invoke a common "routing" proxy that will determine which other OSB proxy or business services (JMS Request/Response) to call and does the dynamic routing.
    I understand that you can set a timeout at the business service level how long to wait for a response (at least when using the JMS transport). The problem is we got the requirement that the timeout value would be dependent on the role of the caller invoking the frontend webservice (this is done via some kind of lookup to determine the appropriate timeout setting for the invocation).
    Is this possible? I can't seem to find anything exposed in the transport header that allows me to set a timeout value during runtime. This means that the frontend proxy will be waiting for a response depending on the business service timeout setting. Can we implement a timeout in this frontend proxy somehow?
    Stumped right now over this. Thanks in advance for helping out.

    >
    Are there other reasons why you say it's not the most ideal way of development ?
    >
    Versioning binary files is always a pain. You can't compare them, you can't merge them ... Another point, if you put your jar archive with OSB artifacts under version control, you will most probably face issue related to end of line styles (mac, unix, windows).
    However, the most important point is usability. I want to version .proxy and .biz services to see right in IDE that I changed something and I should check that in for the others. I don't want to risk that I forget something. And I also want to see what other users committed, what sources they work on ... You loose all of that by versioning jar file. I would never go this way.

  • Calling a business service based on operation-soap action in Proxy service

    Hi,
    I have a requirement in which I have to call a business service based on operation-soap action defined in Proxy service wsdl.
    Like in below mentioned wsdl GetPartCostDelta and GetCurrencyList operations are there.But which ever operation I select,It just goes to one business service.
    Is there any way,I can route to some another business service based on the soap action
    proxy service WSDL
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ewopcd="urn:com:gm:gpd:schema:ewopartcostdelta" xmlns:gen="urn:com:gm:gpd:schema:genericfault" xmlns:tns="urn:com:gm:gpd:services:ewopartcostdeltaservice" targetNamespace="urn:com:gm:gpd:services:ewopartcostdeltaservice">
         <wsdl:types>
              <xs:schema>
                   <xs:import namespace="urn:com:gm:gpd:schema:ewopartcostdelta" schemaLocation="ewocostdelta.xsd"/>
                   <xs:import namespace="urn:com:gm:gpd:schema:genericfault" schemaLocation="servicefault.xsd"/>
              </xs:schema>
         </wsdl:types>
         <wsdl:message name="EWOCurrencyListRequest">
              <wsdl:part name="CurrencyListRequest" element="ewopcd:EWOCostDeltaInput"/>
         </wsdl:message>     
         <wsdl:message name="EWOCurrencyListResponse">
              <wsdl:part name="CurrencyListResponse" element="ewopcd:EWOCurrencyList"/>
         </wsdl:message>     
         <wsdl:message name="EWOPartCostDeltaRequest">
              <wsdl:part name="PartCostDeltaRequest" element="ewopcd:EWOCostDeltaInput"/>
         </wsdl:message>
         <wsdl:message name="EWOPartCostDeltaResponse">
              <wsdl:part name="PartCostDeltaResponse" element="ewopcd:EWOCostDeltaResult"/>
         </wsdl:message>
         <wsdl:message name="EWOPartCostDeltaServiceFault">
              <wsdl:part name="PartCostDeltaServiceFault" element="gen:ServiceFault"/>
         </wsdl:message>
         <wsdl:portType name="EWOPartCostDeltaPortType">
              <wsdl:operation name="GetCurrencyList">
                   <wsdl:input name="EWOCurrencyListRequest" message="tns:EWOCurrencyListRequest"/>
                   <wsdl:output name="EWOCurrencyListResponse" message="tns:EWOCurrencyListResponse"/>
                   <wsdl:fault name="EWOPartCostDeltaServiceFault" message="tns:EWOPartCostDeltaServiceFault"/>
              </wsdl:operation>
              <wsdl:operation name="GetPartCostDelta">
                   <wsdl:input name="EWOPartCostDeltaRequest" message="tns:EWOPartCostDeltaRequest"/>
                   <wsdl:output name="EWOPartCostDeltaResponse" message="tns:EWOPartCostDeltaResponse"/>
                   <wsdl:fault name="EWOPartCostDeltaServiceFault" message="tns:EWOPartCostDeltaServiceFault"/>
              </wsdl:operation>          
         </wsdl:portType>
         <wsdl:binding name="EWOPartCostDeltaBinding" type="tns:EWOPartCostDeltaPortType">
              <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
              <wsdl:operation name="GetCurrencyList">
                   <soap:operation soapAction="GetCurrencyList" style="document"/>
                   <wsdl:input>
                        <soap:body use="literal"/>
                   </wsdl:input>
                   <wsdl:output>
                        <soap:body use="literal"/>
                   </wsdl:output>
                   <wsdl:fault name="EWOPartCostDeltaServiceFault">
                        <soap:fault name="EWOCostDeltaServiceFault" use="literal"/>
                   </wsdl:fault>
              </wsdl:operation>
                        <wsdl:operation name="GetPartCostDelta">
                   <soap:operation soapAction="GetPartCostDelta" style="document"/>
                   <wsdl:input>
                        <soap:body use="literal"/>
                   </wsdl:input>
                   <wsdl:output>
                        <soap:body use="literal"/>
                   </wsdl:output>
                   <wsdl:fault name="EWOPartCostDeltaServiceFault">
                        <soap:fault name="EWOCostDeltaServiceFault" use="literal"/>
                   </wsdl:fault>
              </wsdl:operation>
         </wsdl:binding>
         <wsdl:service name="EWOPartCostDeltaService">
              <wsdl:port name="EWOPartCostDeltaPort" binding="tns:EWOPartCostDeltaBinding">
                   <soap:address location="https://localhost/EWOPartCostDelta"/>
              </wsdl:port>
         </wsdl:service>
    </wsdl:definitions>

    Did you try using the Operational branching node of OSB?
    You have copy the operation name from the inbound variable and populate the SOAP Header with that value into the SOAPAction tag.I think this will work.
    Thanks,
    Prabu

  • Specify filename in OSB File Trasport Business Service

    Hi All,
    Is it possible to specify the complete filename in OSB File Transport Business Service?
    the default behavior allows me to specify the prefix and suffix only, is it possible to override and specify the complete filename?
    Thanks,
    Tal

    Specifying the filename for outbound FTP transport in OSB the thread discusses with FTP BS and same would apply for File BS
    Manoj

Maybe you are looking for

  • Test in a LinkedList...

    if there is a way to know if my LinkedList is empty and the way to display the number of element(in this case "0"). If you know how to code it could you show me the way... thanks

  • HT1751 Is it possible to use single external iTunes Library from multiple computers (my mac book, pc, mac mini)

    Hi, I recently decided to maintain my itunes libraries distrubuted onto different computers. (such as mac mini, mac book, pc) I am planning to consolidate one of my iTunes library, move it to external source and configure external hard drive to be us

  • I Need to Change My Apple ID?

    Hey! Just got a new computer which jumped me from Snow Leopard to Mavericks, and I thought I'd try out iCloud. When I went to sign in, it said my Apple ID should be an email address, which it is not. I tried using my default email address instead, wh

  • ITunes 8.1 -- Update apps causes repeated window to log in

    Everytime I click on Applications and "check for updates" I am met with a login to account window. I put in my password and the window disappears then pops up again. It won't stop. Things I've tried: Rebooting Logging into iTunes account through acco

  • What are the advanteges and disadvanteges of using pl/sql over hibernate

    i knwo that pl/sql are well structure and provide a lot of functionalities with oracle databse , but my question is the hibernate might give some advnateges of scalability over pl/sql. so what are the advanteges and disadvanteges of using pl/sql over