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

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

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

Similar Messages

  • OSB 11g - List business services with WLST

    Hi,
    We're using OSB 11.1.1.3 and 11.1.1.6 in several environments.
    We just need to use wlst scripting to keep track of all business services and their endpoint uri's automatically.
    We tried using some old scripts but found out that they don't work on 11g installations:
    We tried the following code:
    connect('weblogic','oracle10','t3://soavm2:7001')
    domainRuntime()
    sessionName = "FindServicesSession" + str(System.currentTimeMillis())
    sessionMBean = findService(SessionManagementMBean.NAME, SessionManagementMBean.TYPE)
    sessionMBean.createSession(sessionName)
    servConfMBean = findService(ServiceConfigurationMBean.NAME + "." + sessionName, ServiceConfigurationMBean.TYPE)
    alsbCore = findService(ALSBConfigurationMBean.NAME, ALSBConfigurationMBean.TYPE)
    allRefs=alsbCore.getRefs(Ref.DOMAIN)
    for ref in allRefs:
    typeId = ref.getTypeId()
    if typeId == "BusinessService":
    serviceDefinition = servConfMBean.getServiceDefinition(ref)
    endpointConfigration = serviceDefinition.getEndpointConfig()
    print endpointConfigration
    We get a "AttributeError: 'NoneType' object has no attribute 'getServiceDefinition'" error. It seems that it is related to metalink note "How To Modify Service Configurations By OSB JMX API [ID 1431254.1]". However the code provided there is for java through jmx, does anybody has a working example of how to do that on wlst?
    Thanks!
    p.d: already posted this question on wlst forum but got no answer...

    You may like to refer metalink note 1380705.1 and OSB java API (section "Using MBeans in a script")-
    http://docs.tpu.ru/docs/oracle/en/fmw/11.1.1.6.0/apirefs.1111/e15033/com/bea/wli/sb/management/configuration/SessionManagementMBean.html
    Regards,
    Anuj

  • Different number of Business service endpoint for prod/non prod env in OSB

    Hi,
    I have a scenario in my project. We have 2 managed servers in all non production environment and 4 servers in production environment.
    In non production environments, have added 2 end point uri in the business service. If we create customization file from this, it will have only 2 endpoint uri details.
    Now problem is how to get all 4 enpoint uri added for production environment. Dont know how if we try to add 2 uris in customization file will work fine or not. Also it will be very cumbersome as there are more than 100 business services.
    Tried with comma seperated urls, but load balancing is not happening. Same thing when cluster address is used.
    Any pointers on this will be helpful.
    Regards,
    Pravin
    Edited by: pravinkapile on Sep 29, 2009 9:39 PM

    Hi..
    There's several ways to do it.. What I prefer to do is to generate the customization files and have a seperate set for each environment. As you say hand modifying the customization files is a pain (and error prone), so I wrote a program to generate the customization files.. basically it runs against my local dev environment, creates an edit session, modifies the env values (these are held in a properties file (easier to maintain)), exports the customization files and sbconfig jars, then discards the edit session.
    I then use a wlst/jmx script to perform the imports and running the customization files, then after the customization is ran, then I have a section that modifies the business service with multiple endpoints to set them up to load balance/failover..
    this is the function in my utils script to set the load balancing/failover....
    #=======================================================================================
    # Routine to modify all Business Endpoints with multiple URI's to set the Loadbalancing
    # algorithm to Round-Robin -
    #   Input must be an editable instance of an ALSBConfigurationMBean.
    #=======================================================================================
    def configureMultipleBSEndpoints(domainService, alsbSession):
      try:
        # get the Service config MBean
        servConfMBean = getServiceConfigurationMBean(domainService, alsbSession.getSession())
        bsQuery = BusinessServiceQuery()
        bsRefs = alsbSession.getRefs(bsQuery)
        changesToCommit = cju.parseBoolString("false")
        for bsRef in bsRefs:
          modificationsMade = cju.parseBoolString("false")
          serviceDefinition = servConfMBean.getServiceDefinition(bsRef)
          endPointConfig = servConfMBean.getEndPointConfiguration(bsRef)
          if endPointConfig.getURIArray().__len__() > 1:       
            outBoundProps = endPointConfig.getOutboundProperties()
            if outBoundProps.getLoadBalancingAlgorithm() == LoadBalancingAlgorithmEnum.NONE:
              outBoundProps.setLoadBalancingAlgorithm(LoadBalancingAlgorithmEnum.ROUND_ROBIN)
              modificationsMade = cju.parseBoolString("true")
            if outBoundProps.getRetryApplicationErrors():
              outBoundProps.setRetryApplicationErrors(cju.parseBoolString("false"))
              modificationsMade = cju.parseBoolString("true")
            retryCount = endPointConfig.getURIArray().__len__() - 1
            if outBoundProps.getRetryCount() != retryCount:
              outBoundProps.setRetryCount(retryCount)
              modificationsMade = cju.parseBoolString("true")
            if outBoundProps.getRetryInterval() != 2:
              outBoundProps.setRetryInterval(2)
              modificationsMade = cju.parseBoolString("true")
            serviceOpsEntry = servConfMBean.getServiceOperations(bsRef)
            if cju.booleanToString(serviceOpsEntry.isTakingURIOfflineEnabled()) == "false":
              serviceOpsEntry.setTakingURIOfflineEnabled(cju.parseBoolString("true"))
              serviceOpsEntry.setDelayInterval(15);
              modificationsMade = cju.parseBoolString("true")
            if modificationsMade:
              print 'endpoint configuration modifications made to - ' + bsRef.getFullName()
              hmServiceOpEntries = HashMap()
              hmServiceOpEntries.put(bsRef, serviceOpsEntry)
              endPointConfig.setOutboundProperties(outBoundProps)
              serviceDefinition.setEndpointConfig(endPointConfig)
              servConfMBean.updateService(bsRef, serviceDefinition)
              servConfMBean.updateServiceOperations(hmServiceOpEntries)
              changesToCommit = cju.parseBoolString("true")
        return changesToCommit
      except:
        print "Unexpected error:", sys.exc_info()
        print 'Failed to Configure Business Service Multiple Endpoints LoadBalancing Algorithm '
        raise..Mark.

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

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

  • 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

  • Sending Idocs to R/3 Error when Business Service with a party is configured

    Hi All,
    I'm facing some issue when posting idocs (FINSTA) back to R/3 when Business Service with a party is configured in my Integration Directory. However, I do not have this problem, if the
    Business System without Party is configured. It seems that 'adapter specific' setting doesn't
    seem to work when you have a party.
    I have read the same problem faced by other SDN members as well, some suggested to have the latest patch to solve the problem. FYI, I'm using latest patch SP 15, but the problem still exist. The error that I have in the sxmb_moni is "Unable to convert sender XI party http://sap.com/xi/XI / XIParty / GABXI100 to an IDoc partner".
    Please assist. Thanks.

    Hi Arun,
    Thanks for reply.
    What do you mean by XI Party must map to a party in the R3 in the partner profile?
    For example, If my Party Name in Integration Directory is ABC01, I should create a partner profile of ABC01 in my R3? How if I have business service under the Party ABC001, what should I configure in my R3?
    Currently My Partner Profile in R3 is type 'B' - Bank.
    Thanks for helps.

  • How to call business service from xquery transformation in OSB ??

    Hi All,
    How to call business service from xquery transformation in OSB ??
    I need to assign the response variable of Business Service to a target element in XQuery Transformation Mapper file.
    It's urgent.
    Regards,
    Jyoti Nayak

    Transformation is to mapping the source and target of 2 different schemas.
    In your case you should have a XQuery transformation between, your Business Service output schema and the target schema.
    Thanks,
    Vijay

  • Developing Business Services with ADF BC

    Hello all,
    I was following the tutorial at http://www.oracle.com/technology/obe/obe1013jdev/10131/bslayer/bslayer.htm#t2s5, which is Developing Business Services with ADF Business Components
    AND i was wondering if i could add a custom validation that would: prevent the user from entering a Gender IF the credit limit is greater than 400? Is this possible? If so, could some point me in the right direction
    Cheers

    Hi,
    you have two options:
    1. add the validation on the ADF BC model using a method validator. This would compare the two attributes and throw an exception if the business rule is violated
    2. Use a ValueChange Listener on the credit limit field (in association with a autosubmit=true setting on the field) to enable the gender field through a Partial Page Refresh. To programmatically refresh a field using PPR, you create a binding of the component to refresh o a managed bean using its binding property. Then you call
    AdfFacesContext.getCurrentInstance().addPartialTarget(<component reference here>)
    Frank

  • 10.1.3.1 : Developing Business Services with ADF BC tuto issues

    Hi,
    I was doing a learning session at my office based on the 'Developing Business Services with ADF Business Components' tutorial : http://www.oracle.com/technology/obe/obe1013jdev/10131/bslayer/bslayer.htm. The topic Creating ADF Business Components > 9 shows how to create EOs, VOs, AM and the corresponding UML diagram.
    When using JDev 10.1.3.1 :
    * the diagram is not generated as expected,
    * the java domains are not created from DB domains.
    Under JDev 10.1.3.2 :
    * the java domains are created from DB domains,
    * the diagram has been generated on 1 out of 3 computers.
    Any clues on what's going on or any known bugs ?
    Thanks,
    Seb.

    Hi,
    Today in 10.1.3.1 the diagram generation just works. It seems the keepResident extension was causing troubles as the exception stack trace mentioned its name... I just removed it.
    But still, the domains are not generated as expected. I've made several tests even in a fresh installation of JDeveloper 10.1.3.1.
    Seb.

  • How to display more than one column with for each

    Hi guys,
    how to display more than one column with for each like below?
    for each
    Item1
    Item2
    Item3
    Item4
    Item5
    Item6
    Item7
    Item8
    Item9
    Item10
    End for each
    for each          
    Item1     Item2     Item3
    Item4     Item5     Item6
    Item7     Item8     Item9
    Item10          
    End for each

    Take a look at this to see if the solution provided would work for you: https://blogs.oracle.com/xmlpublisher/entry/multi_column_row_woes
    Won't you have more than 10 records in your data file ? If you are going to have only 10 items then you may be able to use position() function to limit it to 3 each..
    Take a look at this: https://blogs.oracle.com/xmlpublisher/entry/turning_rows_into_columns
    Thanks,
    Bipuser

  • OSB -is it possible to publish a business service to UDDI

    Hello
    we are now using OSR to manage all the services' registry. As the OSB has been in production for quite a long time, and there are many services (both business services and proxy services).
    It seems that the OSB can only publish proxy services to the UDDI, that means we have to register other serivces to the OSR manually(OMG, so much work!!), i am wondering : is there any better solution than that???
    thanks
    Regards
    Wen
    Edited by: Xu Wen on 2010-11-23 下午7:24

    OSR works fine with OSB, and services registered in OSR can be imported to OSB. but seems only proxy services from OSB can be published to OSR, that bothers me a bit ;)
    anyway appreciate ur help
    Regards
    Wen

  • OSB Business Service Retries for Read Timeout

    Hi,
    Is it possible to have retries configurable for Read Time out in Business Services in OSB ?
    What is the best practice alternative if we need to retry on a read time out with the same request ?

    You can configure your business service to retry.On the transport configuration tab of the business service configure the following:-
    Retry Count
    Retry Iteration Interval
    http://docs.oracle.com/cd/E14571_01/doc.1111/e15867/business_services.htm#i1096469

  • Business Service Issue for OSB 10.3.1 when call web service of SAP ECC 710

    Hello,
    1 . I was doing unit test for a business service which called a web service from SAP ECC 710 (This service is published directly from a RFC function module via SOA Manager);
    2 .The problem is when i use the OSB test console , which generate request message below:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    *<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">*
    *</soap:Header>*
    <soapenv:Body>
    <urn:Zmmjf503 xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
    <ContractInfo>string</ContractInfo>
    </urn:Zmmjf503>
    </soapenv:Body>
    </soapenv:Envelope>
    the response message is :
    <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
    <soap-env:Header>
    <n0:MessageID xmlns:n0="http://schemas.xmlsoap.org/ws/2004/08/addressing">
    uuid:4cbe5b84-474c-9abe-e100-00000ad00164
    </n0:MessageID>
    <n1:Action soap-env:mustUnderstand="1" xmlns:n1="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope"/>
    </soap-env:Header>
    <soap-env:Body/>
    </soap-env:Envelope>
    Above response indicates that the BS called the SAP Web server successfully , but seems the service didn't get the request message.
    3. The Web service can be called successfully via SoapUI . and i have checked the request message of soapUI; and it can work if i simply modify the request:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    *<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"></soap:Header>*
    <soapenv:Body>
    <urn:Zmmjf503 xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
    <ContractInfo>string</ContractInfo>
    </urn:Zmmjf503>
    </soapenv:Body>
    </soapenv:Envelope>
    and i got the correct response :
    <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
    <soap-env:Header/>
    <soap-env:Body>
    <n0:Zmmjf503Response xmlns:n0="urn:sap-com:document:sap:soap:functions:mc-style">
    <Recmsg><![CDATA[<?xml version="1.0" encoding="utf-8"?><DocumentResponse><STATE>0</STATE><HTBH></HTBH><MESSAGE></MESSAGE></DocumentResponse>]]></Recmsg>
    </n0:Zmmjf503Response>
    </soap-env:Body>
    </soap-env:Envelope>
    4 It bother me , as the only difference between the above two request messages is the Header(the first one contains a "carriage returns"):
    *<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">*
    *</soap:Header>*
    VS
    *<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"></soap:Header>*
    5 i thought that the soap engine should ignore the "carriage returns", seems it's a problem of SAP ECC710.
    DID anyone encouter this problem?? Thanks
    Regards
    Wen

    Thanks,Patrick,
    i have already removed the Soap:header, and it worked as well. what's more , using header " <soapenv:Header/>" worked.
    And i got these request messages via TCPMON, so it's exactly what were sent to SAP ECC710.
    The HTTP request which cannot work:
    POST /sap/bc/srt/rfc/sap/zmmjf_503/400/zmmjf_503_service/zmmjf_503_soapbinding HTTP/1.1
    Content-Type: text/xml; charset=utf-8
    Authorization: Basic enpoZmhlOnBhc3N3b3Jk
    SOAPAction: ""
    Transfer-Encoding: chunked
    User-Agent: Java1.6.0_05
    Host: 10.208.1.100:8000
    Accept: text/html, image/gif, image/jpeg, */*; q=.2
    Connection: Keep-Alive
    017a
    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    </soap:Header><soapenv:Body><urn:Zmmjf503 xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
    <ContractInfo>string</ContractInfo>
    </urn:Zmmjf503></soapenv:Body></soapenv:Envelope>
    0000
    THE HTTP request which can work:
    POST /sap/bc/srt/rfc/sap/zmmjf_503/400/zmmjf_503_service/zmmjf_503_soapbinding HTTP/1.1
    Content-Type: text/xml; charset=utf-8
    Authorization: Basic enpoZmhlOnBhc3N3b3Jk
    SOAPAction: ""
    Transfer-Encoding: chunked
    User-Agent: Java1.6.0_05
    Host: 10.208.1.100:8000
    Accept: text/html, image/gif, image/jpeg, */*; q=.2
    Connection: Keep-Alive
    016c
    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"/><soapenv:Body><urn:Zmmjf503 xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
    <ContractInfo>string</ContractInfo>
    </urn:Zmmjf503></soapenv:Body></soapenv:Envelope>
    0000
    Thing is that if i just use
    <soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"></soap:Header>
    to replace (which means i just simply remove the carriage return)
    <soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    </soap:Header>
    in the header field of OSB Test console, it can work!!!
    It's really a weird issue. and it bothers me so much ;)
    any suggestions?
    Regards
    Wen

  • OSB: Business Service Timeout for JCA Connection

    Hi,
    I am wondering if there's any way to configure timeout for a JCA connection in OSB? It's not configurable in Business Service.
    Thanks.

    Hi Anuj,
    I am using DbAdapter. As for operation, which operation are you referring to? Where do I check to verify this?
    Thanks.
    Edited by: user13298498 on May 21, 2012 11:01 PM

Maybe you are looking for

  • Xcode not saving source files

    Hi Has anyone else come across an issue where Xcode doesn't save source files before a build - despite setting the For Unsaved Files preference correctly? My Java students are using Xcode 3.1.1 to create and build Java Tool projects. We've noticed th

  • JDBC Sender -Not selecting records

    Hi all I have set up a JDBC sender. The communication channel monitor shows that "Polling interval started" but It is not retrieving data from the JDBC table using a select statement. This is a sql select statement. SELECT * FROM table there is also

  • Separating my iphone from a shared apple ID and itunes - will I die?

    stepwise, how do I remove my iphone and ipad from a shared apple ID to a new account? will my previously downloaded content disappear from my device?

  • Search Engine - Need One

    Can anyone recommend a search engine, with java api access that will run with weblogic 8.1? I want to be able to index, html, pdf, doc and query the results via a java api. Thanks

  • XSL file include problem.

    Hi Friends, We are facing problem while include our file inside XSL. we have code like below <xsl:for-each select="givingLanding/briefPageInclude">                               <xsl:variable name="pageUrl" select="pageUrl" />