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.

Similar Messages

  • 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

  • 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

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

  • Combine output  from two data sources for a line graph.

    Hello Experts,
    I need your help in following scenario.
    Scenario - We have a line graph created in VC. We have a numeric field in the data seris and a date field in the Category axis.
                      This is working fine.
    Requirement - Customer wants month names instead of dates on the category axis of the line graph.
    Problem - The RFC which is providing the data to line graph doesnot have a output field giving month names instead it has dates.
    Options Tried - Tried using 'Union' and 'Switch' operator with a RFC giving month names. Unfortunately this doesnot work.
                             One close try was with 'union' operator but it ignores the numeric fields.
    Any help would be highly appreciated.
    Thanks & Regards,
    Amit Kade

    Hello Sandeep,
    Thank you for the reply. I did try to do changes in RFC, I am calling a FM which gives me month names in my original RFC.
    But still the outpot of this FM is in a seperate table and anyways I will have to combine these two tables.
    Problem still remains the same.
    I tried using 'Filter' to convert date format but after applying filter my VC application is not deploying.
    Thanks,
    Amit Kade

  • How to combine output of two queries

    Hi, I have the following two OBIEE queries in one subject area:
    *1. number of daily new customers:*
    min(date)|customer unique number (aggregated in the pivot table as count distinct)
    day1 | 1000
    day2 | 1500
    *2. number of daily total customers:*
    date|count(distinct (customer unique number))
    day1 | 5000
    day2 | 9500
    How can I combine them based on date in one table?
    day1 | 5000| 1000
    day2 | 9500| 1500
    Thank you for your hints in advance

    *1. number of daily new customers:*
    *2. number of daily total customers:* Are these two measures coming from a same column in the presentation layer or two different columns? If two then simplay add two measures with your time dimension, it will give you your results. no need of combine with similar requests.

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

  • Dynamic routing for a Business Service with multiple operations

    I have two business services with multiple operations. Business service A (bsA) has operations OpA1 and OpA2. Business service B (bsB) has operations OpB1 and OpB2.
    Depending on incoming Proxy message and operation, I have to do one of the following
    1. If someValue = A and operation= Op1 then invoke operation opA1 of bsA
    2. If someValue = B and operation= Op1 then invoke operation opB1 of bsB
    3. If someValue = C and operation= Op1 then invoke operation opA1 of bsA AND* operation opB1 of bsB and return aggregate data of both invocations
    1. If someValue = A and operation= Op2 then invoke operation opA2 of bsA
    2. If someValue = B and operation= Op2 then invoke operation opB2 of bsB
    3. If someValue = C and operation= Op2 then invoke operation opA2 of bsA AND* operation opB2 of bsB and return aggregate data of both invocations
    Using a dynamic route node or dynamic routing options, I am able to achieve cases 1, 2, 4, and 5.
    But for cases 3 & 6, I can not use a route node. When I use a Service call out instead, then I am forced to create a Operational branch but that does not seem like the best design since for every new operation added to the business services, I have to add a new branch to the Operational branch and redo all the functionality for that branch.
    Basically, I am looking to achieve the functionality of the Route node ( no need to specify the operation ).
    Any thoughts/ideas on what the best design would be?
    thanks

    For cases 3 & 6, why don't you route to another proxy service where you can simple do two service callouts, merge output data somehow and return them to the first proxy?
    If you look for "special route feature", that could possibly call two services for a single message, I'm afraid you won't succeed.

  • We need to create one or more business services to connect to service provider in OSB

    Hi all,
        I posted some questions for OSB and received some responses helpful. And today, I have a question about it to clearing about business services in OSB.
        Based on oracle's documents, a business service will connect to (I mean it can communicate) service provider (backend service). I have a example: Backend service A provide two services getEmployeeInfo and updateEmployee. Will I create one or two business services to connect to A ( to use these services) ? I think I need only one ? Can anyone talk about this case ?
        Many thanks.

    Hi Beck,
    for your scenario you can use only one business service,
    1. As Karan already explain about wsdl,  you should create a Business Service using WSDL file then you can choose operation at testing time.
    2. if you don't want  to use a wsdl and you can create a SOAP type service then you can use WSA-Action  to identify the service at beckend . Using wsa-action you can send a operation name like :
    <wsa:Action>http://xmlns.oracle.com/pcbpel/adapter/db/dbAdapterMultiOperation/Project1/AnkitTest/insert(Operation Name)</wsa:Action>
    Here 2 different solutions for you Question.
    Thanks
    Ankit

  • 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

  • Same logiical system for 2 Business Service

    Hi All,
              Can two business services use the same Logical system name.
    Regards,
    XIer

    <i>We have a scenario where we want to send files and also another scenario where we have to send a file.</i>
    Not sure I got the point here
    Logical System Names make sense only when dealing with SAP systems when trying to post an Idoc. For File System's they have no use at all.
    Regards
    Bhavesh

  • Proxy service routing to business services

    Hi,
    I'm trying to route from a proxy service to one of two business services based on a value in a message - similar to the first AquaLogic tutorial, but I've written mine from the ground up. The message flow I've configured can decide which service to invoke, but then fails with this fault message: "Failed to get operation name from the incoming request." My two "business service" web services work fine by themselves. Does the proxy service's wsdl need to match up with the business services' wsdl's? What else could I be doing wrong?
    Thanks,
    Andrew

    I mapped the operation name using the ALSB console. When selecting the business service to route to when editing the message flow, you are required by the console to select an operation. My two business services have one operation each. I have selected the operations I want to use in the routing table. Since the ALSB console is providing me with a GUI tool to select the business service and operation, I'm expecting that it will take care of putting the operation name in the message after the routing step.

  • Combine 2 Business services having same schema

    All,
    This is a straight forward case, I am sure this is easy, but since Im a beginner I cant get quick answer.
    I am trying to achieve something like A+B=C, where A and B are 2 business services having exact schema, and C is my new Business service that is a combination of A and B.
    How do I achieve this in ALSB? please suggest
    Thanks

    does it mean that C is going to have two portTypes (portType of A and portType of B)?
    If that is the case then you can create your business service in ALSB and a proxy service. The proxy service will simply pass the inbound message to your business service.
    Hope it helps.

  • How can I Route to two proxies or business services with out split join

    Hi,
    How are you?
    I´m trying to use a proxy to invoke 2 other proxiers or more at the same time but when trying to build a Split Join is giving an Error about the Security that is in the WSDL which is WSSecurity, so far I think that SPlit Join can´t handle this and is a must right now so I´m trying to figure out how to Route a Message to two proxies or business services doesn´t matter if it is in a secuencial way.
    Hope somebody knows what to do.
    Kind Regards,
    Gerardo J

    Hi!
    Thanx for the response, That´s the way I´m implementing it at this moment and is working fine.
    Thanx in Advanced!
    Kind Regards,
    Gerardo J

  • OSB best practices to run business service on two different environments

    Hi.
    I am using Service Bus 11gR1
    Oracle Service Bus Version: [Oracle Service Bus L10N Dependencies 11.1 Fri Dec 4 17:43:22 EST 2009 ]
    Oracle Weblogic Server Version: [WebLogic Server 10.3.5.0 Fri Apr 1 20:20:06 PDT 2011 1398638 ]
    I deploy my OSB services on two different environments (development, production).
    How to setup business service to run on two different environments without changing source (business service transport Endpoint URI)?
    Thanks in advance.

    I am not sure of any tutorial.
    For your case if you just have one URI and you want to change the URI for the business service you can simply use the OSB Customization file.This is straight forward.
    If you have complex routing logic based on inputs fields ,you can follow the below steps,
    Create a simple table with Business Service Name,Env and URI as columns.
    Create a select DBAdapter to return the URI
    Create a business svc out the DBAdapter files
    Use the business service to fetch the URI and finally
    Use the URI override( ref - http://www.oracle.com/technetwork/middleware/service-bus/learnmore/index.html)
    Edited by: Prabu on Feb 21, 2012 8:10 PM

Maybe you are looking for

  • [FUBARed] Adobe Premiere CC (2014) Crashing

    Keeps crashing...wtf. ...knew I shouldn't have uninstalled the tried and tested "2013" version. EDIT: How do I download the old Adobe Premiere CC (not the one with "2014"). I need a stable version and I can't download the older version from Adobe lik

  • Will I loose all my things saved on iCloud if I delete the account?

    I cant remember the login to my iCloud account and was wondering if I were to delete that account and set up a new account if I will loose all my saved things?

  • Clearing vendor with customer

    HI gurus,      we have vendor as customer. I have created vendor master and customer master, and I defined the customer number in vendor master. but I didn't find fine "CLEARING VENDOR WITH CUSTOMER" indicator in Vendor master screen. I'm using ECC6

  • File sharing with PC and Diskaid: don't see files on iphone

    i downloaded FileApp and Diskaid,  But, the files don't transfer to my phone,Help!

  • Monitor input error

    Moved recently and Gateway 3250S, reconnected monitor input error showed up on monitor. Computer doctor did virtual diagnostic and said it was the graphics card. Plus fan wasn't working. Sent specs to purchase return hp Pavilion 6000 pro.MXLO180WRK.