Split joins in OSB

Hi,
Actually i do have a requirement where i need to call 2 business services simultaneously(in parallel) in OSB(Like using Flow activity in SOA) using split joins. Is it possible to call 2 business services parallely in OSB?
Can any one please help me out with any blogs or steps that i can follow to achieve this.
Your help is appreciated.
Thanks,
Naveen

That is not entirely true. Split Join itself is based on single operation, i.e. the input to split join will be a single message, but within the split join you can invoke multiple services in parallel. You can either dynamically decide the number of parallel flows at runtime (similar to FlowN) or you can have static number of parallel calls (like Flow activity of BPEL) within split join.
In case you want to call two business services in parallel, create a WSDL(if needed, in most cases you can reuse the WSDL of the Proxy Service itself for SplitJoin as well unless you are doing enrichment within Proxy before calling business services) for split join which has request message which contains data for both business services. Within the split join you can configure calls to both business services in parallel and you can also add transformations for each business services in respective branches.
You can than aggregate the response from both services if needed and return that as a response of split join.
Here is an example of Static Split Join:
http://www.xenta.nl/blog/2011/07/03/oracle-service-bus-implementing-aggregator-pattern-by-use-of-split-join/

Similar Messages

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

  • Dynamic Split Join:Parallel flow using OSB

    Hi,
    I am implementing a dynamic split join in OSB,where in the for -loop i am invoking a database adapter.
    If I select parallel='yes' in the for-loop settings, I get a random number of records from the database as an output.
    While on the other hand, on running the for-loop sequentially, i get the exact number of records i am expecting.
    Could anybody figure out why is this happening?
    Regards,
    Tarun

    If I understand correctly, this is what you are doing:
    Configure a For loop based on a repeating element in source XML (for ex. for each customer id in xml message).
    Inside each loop you are making a DB lookup and getting one record for each element (for ex. customer details of each customer id)
    Finally you are aggregating them in the same variable (join)
    The problem that you see is that if you do it in parallel then you do not see details of all customers in the out variable?
    If yes, then can you please let me know how you are updating the details of each record in the out variable.

  • For each sample example  in OSB without Split join

    Hi,
    Any body have sample example for For each in OSB without Split join......Thanks in advance

    I know this is an old thread, but I just ran into this same problem. Wow! That's a crappy 'feature'. I wasted 4 hours this morning on this thinking it was me doing something wrong in my xpath, but nope, you need to cast the counter to an int .......
    I hope they fix things like this in the next major release.
    Thanks for the solution.

  • Aggregating output of two BS in OSB Split join

    Hi,
    i am using split join to invoke two BS and after the each invoke activity in parallel branch i have placed assign activity and assigning output variable of in voke to reply activity output variable response.parameter . However in o/p i am getting response of only one BS. can any one help on how to aggregating output of two BS in OSB Split join . my output is coming like this
    <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
    <soap-env:Body>
    <ns2:NewOperationResponse xmlns:ns2="http://www.example.org/SjWsdl/">output</ns2:NewOperationResponse> -------->this is o/p of one BS. But i want to display O/p of two BS
    </soap-env:Body>
    </soap-env:Envelope>
    thanks in advance..
    Edited by: 11207106008 on Jun 26, 2012 10:11 PM
    Edited by: 11207106008 on Jun 26, 2012 10:12 PM
    Edited by: 11207106008 on Jun 26, 2012 10:13 PM

    Suppose you saves the response of each BS in variables: $response1 and $response2
    then you need to configure the replace action after the parallel branch like this:
    Replace node content of . in variable <variable name of reply variable> with <Expression>
    Where you can provide in <Expression> a simple XQuery expression to combine the two variable contents. (Choose a root node of your choice, I have used AggregatedResponse)
    <AggregatedResponse>
    {$response1, $response2}
    </AggregatedResponse>

  • OSB Split Join Repeat Until Question On XPath Condition

    I'm trying to use OSB File Transport to stream a very large XML document file into a service which will split the file into very many small XML documents. So, given a file like:
    <BookStore>
    <Book></Book>
    <Book></Book>
    ... (many more books)
    </BookStore>
    In the split join I want to use a 'repeat until' to process each Book until there are no more Books in the BookStore. Here's my question: What is the correct XPath expression to use as the Repeat Until terminating condition? (I'm an XPath novice.)
    Thanks for your help!!!

    Hi,
    Based on what I understood, you should be using a for each loop with the conditions as follows:
    Within the Split Join flow
    for each ( counter variable from 1 to Count (xpath of book) ) --> For my example it was count($request.parameter/sjpoc:Orders/sjpoc:Order) replace this with your xpath.
    - do your logic
    Snapshot just in case @ http://dl.dropbox.com/u/19901533/sj_foreach_snapshot.JPG
    Based on this the split and join would happen for n (based on count) number of Book tags.
    Let me know if my understanding is incorrect.
    Thanks,
    Patrick

  • OSB SPLIT JOin How to verify it is working parallel

    HI ,
    I am using Oracle service Bus 11.1.1.3 and I have following Requirement
    PS 1 : Receives the request ,validates the input and calls proxyservice 2 (using publish action )
    PS 2[Sb ] :Receives the req from Proxyservice 1 queries a DB using the DB Dapater and obtains a list of subscribers for the request .
    Each item of the list contains information about the subscriber metadata(data format,JMS endpoint) .For Each Subscriber calls Proxyservice 3 which the subscriber meta data info and the actual request received .
    PS 3 [SB ]: Receievs the subscriber meta data and the actual request XML .depending upon the format specified in the meta data for the subscriber performs transformation(using xquery) and post the transformed xml to the subscriber specific queue [JMS ].
    Proxyservice 3 is common for all subscriber depending upon the metadata different Xquery needs to be called for different subscriber [this is achieved using Dynamic xquery ].
    My requirement is i need to call Proxyservice 3 in parallel for all subscriber .
    OSB doesnot out of the box provide action for spanning multiple threads of a PS from another PS .
    I have tried using Split join .Have created a Split Join which will loop through the list of Subscribers returned in PS2 and call PS3 for Each loop (have specified paralle =yes in split join ).
    How do I confirm that PS3 is called in parallel for all the subscribers .
    Is there any other way I could implement this requirement of spanning multiple threads ?
    Thanks a regards ,
    Yamini

    HI Abhinav ,
    Thanks a lot for the help .I had tried with adding log actions at various places.
    Added a log action as the first action of the for loop (split join )
    Start of PS3 and End of PS3 ..
    Please find some of teh readings .
    Reading 1
    for loop ******************************: 2011-09-01T16:24:12.825+01:00
    for loop ******************************: 2011-09-01T16:24:12.965+01:00
    for loop ******************************: 2011-09-01T16:24:12.965+01:00
    for loop ******************************: 2011-09-01T16:24:13.137+01:00
    progate Input Time Stamp ::::: 2011-09-01T16:24:12.965+01:00 ODM
    Progate Input Time Stamp ::::: 2011-09-01T16:24:13.028+01:00 oye
    Progate Input Time Stamp ::::: 2011-09-01T16:24:13.121+01:00 hade
    Progate Input Time Stamp ::::: 2011-09-01T16:24:13.199+01:00 PAM
    JMSSSSS Posting: 2011-09-01T16:24:13.043+01:00 odm
    JMSSSSS Posting: 2011-09-01T16:24:13.043+01:00 oye
    JMSSSSS Posting: 2011-09-01T16:24:13.137+01:00 hades
    JMSSSSS Posting: 2011-09-01T16:24:13.199+01:00 PAM
    Reading 2:
    Calling the SplitJoin: 2011-08-31T17:54:20.914+01:00
    ending the SplitJoin: 2011-08-31T17:54:20.929+01:00
    THE COUNT ******************************: 2011-08-31T17:54:21.662+01:00
    THE COUNT ******************************: 2011-08-31T17:54:22.021+01:00
    Prooooooogate Input Time Stamp ::::: 2011-08-31T17:54:23.254+01:00 odm
    Prooooooogate Input Time Stamp ::::: 2011-08-31T17:54:23.269+01:00 pam
    JMSSSSS Posting: 2011-08-31T17:54:23.285+01:00 odm
    JMSSSSS Posting: 2011-08-31T17:54:23.363+01:00 pam
    As far as my analysis goes PS3 is executed in parallel but it is not instantaited at one go (all threads in parallel ) .
    I am not able to conclude the level of parallelism achieved using Split join ..
    Do let me know if I am missing anything
    Yamini

  • Split-Join, unable to set SOAP:HEADER in OSB at Invoke Service Component.

    Hi Experts,
        i created a Split-join for parallel processing and invoke third party services, but this service requires some mandatory elements in soap:header like WS-Addressing and, WSA-TO and some security infomation, but i don't know  how to pass header in invoke service step. Please help me to setup Header for Invoke services in split join.
    Please help me to resolve this issue.
    Thanks
    Ankit

    see this :https://forums.oracle.com/thread/951618
    not the most fancy way, but you can create some sort of  wrapper proxyservice in front of your business service to make it work

  • How to set SOAP Header When Calling Business Service (OSB) Using Split-Join

    Hi,
    We need to call WSDL based webservice which requires heading static content for successful call. As we need to call the same service parallely, hence we want to use Split-Join.
    Looked at couple of forum links, noted that we can't play with headers while working with Split-Join.
    For curiosity, just want to check any option other than using proxy as mediator in setting header information.
    Regards
    Venkata Madhu

    Venkata,
    You still have the option, if you hv n't tried this one.
    To enable this capability, you must declare the header parts along with the body parts in a single request/response message in the Split-Join WSDL and in the WSDL of the proxy or business services invoked by the Split-Join. With the message parts declared in the WSDLs, SOAP header content is available to Split-Joins in the request/response message variables.
    Following is an example of the message and binding definitions in the WSDL.
    Message
    <wsdl:message name="retrieveCustomerOverviewByIdRequestMessage">
    <wsdl:part name="retrieveCustomerOverviewByIdRequest"
    element="co:retrieveCustomerOverviewByIdRequest"/>
    *<wsdl:part name="serviceContext" element="sc:serviceContext"/>*
    </wsdl:message>
    Binding
    <wsdl:input>
    <soap:body use="literal" parts="retrieveCustomerOverviewByIdRequest"/>
    *<soap:header message="tns:retrieveCustomerOverviewByIdRequestMessage"part="serviceContext" use="literal"/>*
    </wsdl:input>
    hope it helps !!
    Regards,
    Abhinav

  • OSB Split-Join problem

    I am a bit confused as to how to design a split-join via Oracle workshop for weblogic
    I have imported a WSDL and can define how to decode my incoming request so that I can issue multuple service requests via a Parallel node
    When I try to configure the Invoke Service node - I can't sem to reference anything other than the WSDL I started with ???
    I thought I was supposed to be able to access any other Business (or Proxy) service (or even another Split-Join)
    Don't know if this is clear enough for anyone to be able to help

    When you configure Invoke Service you can choose any WSDL-based business or proxy service operation. Under Input Variable and Output Variable tabs you set message variables of appropriate types.

  • Error in Split-Join when invoke similliar B.Service with same namespace

    Hi Guys,
    I having a split-join that doing parallel spliting call out to business service. And i encounter this error.
    Severity and Description Path Resource Location Creation Time Id
    Error compiling the Schema Type System: error: sch-props-correct.2: Duplicate global type: GetabcParam@http://www.xx.xx.abc (Original global type found in file: null) SplitJoin.flow line 1 1265267604208 5245
    Can I know is this a limitation of the OSB or is a Bug? Or there is a more better way to implement this?
    Edited by: kpchong on Feb 4, 2010 7:51 AM

    I'm not sure if this is a known limitation or a bug. I faced this issue once, but needed quick fix so I didn't contact Oracle support at all.
    I remember that the problem emerged in case I had a SplitJoin with Parallel action and both branches used WSDL-based business services whose WSDL files imported the same (shared) XSD file. As I wrote before I needed quick fix, so I ended with re-adjusted namespaces just to overcome this issue. Ugly but effective.

  • Unexpected error compiling the runtime metadata for Split-Join.

    Hi Everyone,
    We are getting below error while restarting the managed servers on Weblogic. We are having 6 managed servers in our cluster. In one of the application in OSB10.3, we are using SplitJoin to call third party webservices. The application is getting deployed properly, and sometimes on one of the managed nodes, we are seeing below error during startup. The servers are coming into Running mode as per the console, but in logs we are seeing the error. No services are accessible on that particular managed node. We have to restart the server and by luck, it will come up properly. This is inconsistent behaviour from the managed servers. Below is the stack trace from stdout files. Any help would be greatly appreciated...
    <Jan 24, 2012 5:49:34 PM CST> <Error> <OSB FLOW Kernel> <BEA-2031003> <Split-Join deployment error during load notification: Unexpected error compiling the runtime metadata for Split-Join: "FISRecXferInqServiceV2_0/SplitJoin/RecXferInqSJ".
    com.bea.bpel.compiler.CompilerException: Unexpected error compiling the runtime metadata for Split-Join: "FISRecXferInqServiceV2_0/SplitJoin/RecXferInqSJ".
    com.bea.bpel.compiler.CompilerException: Unexpected error compiling the runtime metadata for Split-Join: "FISRecXferInqServiceV2_0/SplitJoin/RecXferInqSJ".
         at com.bea.alsb.flow.compiler.ProcessMetaDataFactory.create(ProcessMetaDataFactory.java:99)
         at com.bea.alsb.flow.resources.ResourceDeployer.deploy(ResourceDeployer.java:104)
         at com.bea.alsb.flow.resources.ResourceDeployer.access$100(ResourceDeployer.java:64)
         at com.bea.alsb.flow.resources.ResourceDeployer$LoadListener.onLoad(ResourceDeployer.java:545)
         at com.bea.wli.config.impl.ResourceListenerNotifier.sendLoadNotificationsInContext(ResourceListenerNotifier.java:239)
         Truncated. see log file for complete stacktrace
    >
    <Jan 24, 2012 5:49:34 PM CST> <Error> <ConfigFwk> <BEA-000000> <Failed in onLoad. Will not deliver the remainder of onLoad notifications to this listener.
    java.lang.RuntimeException: Unexpected error compiling the runtime metadata for Split-Join: "FISRecXferInqServiceV2_0/SplitJoin/RecXferInqSJ".
         at com.bea.alsb.flow.resources.ResourceDeployer$LoadListener.onLoad(ResourceDeployer.java:551)
         at com.bea.wli.config.impl.ResourceListenerNotifier.sendLoadNotificationsInContext(ResourceListenerNotifier.java:239)
         at com.bea.wli.config.impl.ResourceListenerNotifier.access$400(ResourceListenerNotifier.java:41)
         at com.bea.wli.config.impl.ResourceListenerNotifier$1.execute(ResourceListenerNotifier.java:152)
         at com.bea.wli.config.transaction.TransactionalTask._doExecute(TransactionalTask.java:217)
         Truncated. see log file for complete stacktrace
    com.bea.bpel.compiler.CompilerException: Unexpected error compiling the runtime metadata for Split-Join: "FISRecXferInqServiceV2_0/SplitJoin/RecXferInqSJ".
         at com.bea.alsb.flow.compiler.ProcessMetaDataFactory.create(ProcessMetaDataFactory.java:99)
         at com.bea.alsb.flow.resources.ResourceDeployer.deploy(ResourceDeployer.java:104)
         at com.bea.alsb.flow.resources.ResourceDeployer.access$100(ResourceDeployer.java:64)
         at com.bea.alsb.flow.resources.ResourceDeployer$LoadListener.onLoad(ResourceDeployer.java:545)
         at com.bea.wli.config.impl.ResourceListenerNotifier.sendLoadNotificationsInContext(ResourceListenerNotifier.java:239)
         Truncated. see log file for complete stacktrace

    Most 8.1 development was done with Workshop (the version before Eclipse integration). It is not set up to do Workshop Framework builds with Eclipse OOTB.
    If you are going to use Eclipse, then I would guess that your builds would be best done using Ant or similar. Check out the wls web service samples that install with the product and see if you can use any of those as a basis for using ANT in Eclipse.
    This is only theory, as I have not worked extensively with 8.1.

  • Split/Join, Invoke Service and SOAP Header in osb10.3 wls10.3

    Hi gurus,
    Are Split/Join able to invoke external services with a custom SOAP header?
    I have a split join to call 2 external business services in parallel. Those 2 external services requires a custom SOAP Header
    <soapenv:Header>
    <v1:ConsumerRequestHeader>
    <v1:requestSessionID>TEST_1</v1:requestSessionID>
    <v1:requestTimestamp>2011-06-16T16:57:54.943+02:00</v1:requestTimestamp>
    </v1:ConsumerRequestHeader>
    </soapenv:Header>
    All WSDLs were configured by the instructions of this link : http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/eclipsehelp/tasks.html#wp1150628, but in my debuging, the SOAP header is disappeared when calling those external services from the splitjoin. (No problem if designing and testing with the ProxyService. but Proxyservice is useless here because of parallel processing)
    When designing with OSB Workshop IDE, there is no way to pass the custom SOAP header to the "Invoke Service", only the body request/response message.
    My question is, Split/Join automatically uses its header to pass it into the invoke call ?
    Please advise...
    Thanks,

    see this :https://forums.oracle.com/thread/951618
    not the most fancy way, but you can create some sort of  wrapper proxyservice in front of your business service to make it work

  • Invoke secured service through Split-Join

    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]
    The WSDL Binding for BusinessService "OSB/1_0/BusinessServices/TestBS" is not supported: The service feature "WS-Security" is not supported.
    How can I call a secured business service in a splitJoin?
    Thanks

    Well, another way is a custom WSDL.
    The problem, I believe, is not the PS or BS by themselves, but the WSDL Split-Join "sees" from them. So, if you make a version of the same WSDL with no offending policies and supply it to Split-Join, it should work. I suspect you'd still have to build the intermediate PS with that stripped WSDL though.
    In fact, forget about PS. Strip the policy from WSDL and add them to the BS from a policy resource. I would believe Split-Join in this case will not see the policies, while BS would use the ones configured for it.
    Vlad
    http://vladimirdyuzhev.com

  • Propagating Error from Split join to Calling Proxy Service

    Hi All,
    In our project we are calling a split join service, from a Proxy Service, which in turn calls another Proxy Service.
    i.e:
    Proxy Service1 (PS1) <-> SplitJoin Service (SjS) <-> Proxy Service2 (PS2)
    Requirement:
    All the service calls are two way service calls and local protocol is being used. When an error occurs in PS2 we need to propagate the error with detailed error details to the PS1 via the SjS in order to achieve the following
    1. Achieving rollback of the Transaction
    2. Logging the detailed error report of PS2 in PS1
    Issue:
    But we are not getting the detailed error in the PS1. On further analysis we found dat the fault variable in the split join is empty in its error handling flow.
    We have used reply with error activity in PS2 to propagate the fault to the split join and reply with soap fault option in split join to propagate the fault to the PS1.
    We need to propagate the detailed report as error only, in order to achieve the rollback. So kindly suggest me the ways to get the detailed error report in PS1? i.e: getting the detailed error report of PS2 in split join fault variable and propagating the same to PS1.
    Regards,
    Balaji R

    Balaji,
    Try to enable Execution and Message(Terse Level) Tracing for the OSB services to see where fault message is going
    and
    In PS2 try with Reply with Success.
    as Reply with failure returns the fault variable back and Reply with success will send the content of (PS2)$body back as a response and then u can capture the fault from faulted body and send it to PS1.
    Regards,
    Abhinav Gupta
    Edited by: Abhinav on Aug 28, 2012 3:06 PM

Maybe you are looking for

  • My ipod touch 4G will only show apple logo, and can't be turned on and off?

    It eventually runs out of battery but that doesn't change anything. All i can do is hold down the power and home screen button simultaneosly for a while. After this it flashes white then black then back to logo. Anyone know what to do? I plug it into

  • How To Setup My ITunes Library

    Hi, I have ripped and stored some songs from my CD collections. But my iMac brock down and I still haven't  finished ripping the CDs. So aftering sending my iMac to repare, "how do I set up my (NEW) ITunes Library. So that I can continue rippng the s

  • Use of swings- one class calling the gui class

    Hi, I have a class Manager and a class ManagerGUI. My ManagerGUI class looks somehting like this- public class ManagerGUI extends JFrame String name; JPanel namePanel; JTextField nameInput; JLabel nameLabel; Manager empAgent; ManagerGUI(Manager ea) s

  • Alv sorting

    hi need to sort alv data, but the entries are like header and item means first line is of header data and if has items then       the items will be displayed starting from second line but some columns for all items       will be empty (means header d

  • Show file names on still images in Premiere CS6

    I need to know if there is a method in Premiere CS6 to have the file names of still images displayed, without manually making title cards for each one. I have over 400 images to treat and any automated process would be helpful.