Calling Asynch Service in a Parallel Flow (FlowN)

Hi,
In one of the processes, we have a requirement to call an Asynch Service within parallel flow, meaning that, the same Asynch Service would be called several times, with different payload, dependent on the number of lines, which is decided during the run time. When this Async Service is called, the expectation is, after the flow is completed, it will call back the exact location, where the call was made from, to the corresponding line.
This second Asynch Service is also depicted by a BPEL process. When we have multiple such calls made, the Receive after the invoke from the main process, fails, with the following message:
<conflictingReceive>
<part name="summary" >
<summary>Conflicting receive. Another receive activity or equivalent (currently, onMessage branch in a pick activity) has already been enabled with the partnerLink "MobileNumberPortabilityService", operation name "onResult" and correlation set "" (or conversation id). Appendix A - Standard Faults in the BPEL 1.1 specification specifies a fault should be thrown under these conditions. </summary>
</part>
</conflictingReceive>
When I looked into the conversation id of the sub-process, the conversation id seems to be the same for every process which got initiated as follows:
bpel://localhost/default/ROTelcoNewOrder~1.0/7358-BpInv14-BpSeq31.330-2
Given this scenario, how would the sub-process know to call back the exact instance (within the parallel flow), where the call came from, so that it can exactly join the location. Does it require a different kind of implementation, for parallel flows, please..
Any pointers or guidelines, please..
Thanks and Regards,
Vijay.

Vijay,
this may be caused by a bug in the FlowN (bugnumber 4944123), where the values used on the invokes are the same for all the calls. For an asynchronous call, this can be bypassed by making two loops based on the number of lines (loop 1 for invoke, loop 2 for receive). That way you won't have any trouble with the correlation as well.
Hth,
Mike

Similar Messages

  • Parallel Flow invokes async services with incorrect parameters

    Hi
    I'm calling an async service using 2 partnerlinks in a parallel flow.
    The input variables are being assigned correctly but one of the invokes is using the wrong values.
    The problem appears to be around the use of a shared variable (Invoke_initiate_InputVariable) that is 'copied' to each of the invoke variables
    On invocation both services are iincorrectly nvoked with:
    <Invoke_initiate_InputVariable>
         <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="payload">
              <HumanTaskProcessRequest xmlns="http://itv.com/HumanTask">
                   <Production/>
                   <HumanTask>
                        <Title>Title2</Title>
                        <Priority>2</Priority>
                        <UserGroups>STC</UserGroups>
                   </HumanTask>
              </HumanTaskProcessRequest>
         </part>
    </Invoke_initiate_InputVariable>
    I can get the process to work if I remove all references to the variable Invoke_initiate_InputVariable - can anyone explain this behaviour?
    Example BPEL code:
    <process name="ParallelTest" targetNamespace="http://itv.com/ParallelTest"
    xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
    xmlns:ns1="http://itv.com/HumanTask"
    xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    xmlns:client="http://itv.com/ParallelTest"
    xmlns:ora="http://schemas.oracle.com/xpath/extension"
    xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc">
    <partnerLinks>
    <partnerLink name="client" partnerLinkType="client:ParallelTest"
    myRole="ParallelTestProvider"
    partnerRole="ParallelTestRequester"/>
    <partnerLink myRole="HumanTaskRequester" name="HumanTask_1"
    partnerRole="HumanTaskProvider"
    partnerLinkType="ns1:HumanTask"/>
    <partnerLink myRole="HumanTaskRequester" name="HumanTask_2"
    partnerRole="HumanTaskProvider"
    partnerLinkType="ns1:HumanTask"/>
    </partnerLinks>
    <variables>
    <variable name="inputVariable"
    messageType="client:ParallelTestRequestMessage"/>
    <variable name="outputVariable"
    messageType="client:ParallelTestResponseMessage"/>
    <variable name="Invoke_initiate_InputVariable"
    messageType="ns1:HumanTaskRequestMessage"/>
    <variable name="Invoke_1_initiate_InputVariable"
    messageType="ns1:HumanTaskRequestMessage"/>
    <variable name="Invoke_2_initiate_InputVariable"
    messageType="ns1:HumanTaskRequestMessage"/>
    <variable name="Receive_1_onResult_InputVariable"
    messageType="ns1:HumanTaskResponseMessage"/>
    <variable name="Receive_2_onResult_InputVariable"
    messageType="ns1:HumanTaskResponseMessage"/>
    </variables>
    <sequence name="main">
    <receive name="receiveInput" partnerLink="client"
    portType="client:ParallelTest" operation="initiate"
    variable="inputVariable" createInstance="yes"/>
    <assign name="Assign_2">
    <copy>
    <from expression="'A Title'"/>
    <to variable="Invoke_initiate_InputVariable" part="payload"
    query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:Title"/>
    </copy>
    <copy>
    <from expression="5"/>
    <to variable="Invoke_initiate_InputVariable" part="payload"
    query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:Priority"/>
    </copy>
    <copy>
    <from expression="'GRA'"/>
    <to variable="Invoke_initiate_InputVariable" part="payload"
    query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:UserGroups"/>
    </copy>
    </assign>
    <flow name="Flow_1">
    <sequence name="Sequence_1">
    <assign name="Assign_1">
    <copy>
    <from variable="Invoke_initiate_InputVariable"/>
    <to variable="Invoke_2_initiate_InputVariable"/>
    </copy>
    <copy>
    <from expression="'Title2'"/>
    <to variable="Invoke_2_initiate_InputVariable"
    part="payload"
    query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:Title"/>
    </copy>
    <copy>
    <from expression="2"/>
    <to variable="Invoke_2_initiate_InputVariable"
    part="payload"
    query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:Priority"/>
    </copy>
    <copy>
    <from expression="'STC'"/>
    <to variable="Invoke_2_initiate_InputVariable"
    part="payload"
    query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:UserGroups"/>
    </copy>
    </assign>
    <invoke name="Invoke_2" partnerLink="HumanTask_2"
    portType="ns1:HumanTask" operation="initiate"
    inputVariable="Invoke_2_initiate_InputVariable"/>
    <receive name="Receive_2" partnerLink="HumanTask_2"
    portType="ns1:HumanTaskCallback" operation="onResult"
    variable="Receive_1_onResult_InputVariable"
    createInstance="no"/>
    </sequence>
    <sequence name="Sequence_1">
    <assign name="Assign_1">
    <copy>
    <from variable="Invoke_initiate_InputVariable"/>
    <to variable="Invoke_1_initiate_InputVariable"/>
    </copy>
    <copy>
    <from expression="'Title1'"/>
    <to variable="Invoke_1_initiate_InputVariable"
    part="payload"
    query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:Title"/>
    </copy>
    <copy>
    <from expression="3"/>
    <to variable="Invoke_1_initiate_InputVariable"
    part="payload"
    query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:Priority"/>
    </copy>
    <copy>
    <from expression="'NTC'"/>
    <to variable="Invoke_1_initiate_InputVariable"
    part="payload"
    query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:UserGroups"/>
    </copy>
    </assign>
    <invoke name="Invoke_1" partnerLink="HumanTask_1"
    portType="ns1:HumanTask" operation="initiate"
    inputVariable="Invoke_1_initiate_InputVariable"/>
    <receive name="Receive_1" partnerLink="HumanTask_1"
    portType="ns1:HumanTaskCallback" operation="onResult"
    variable="Receive_2_onResult_InputVariable"
    createInstance="no"/>
    </sequence>
    </flow>
    <invoke name="callbackClient" partnerLink="client"
    portType="client:ParallelTestCallback" operation="onResult"
    inputVariable="outputVariable"/>
    </sequence>
    </process>

    Thanks Marc, I've done what you suggested but it hasn't fixed the problem.
    Here is the updated process with scopes and local variables:
    <process name="ParallelTest" targetNamespace="http://itv.com/ParallelTest" xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20" xmlns:ns1="http://itv.com/HumanTask" xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:bpelx="http://schemas.oracle.com/bpel/extension" xmlns:client="http://itv.com/ParallelTest" xmlns:ora="http://schemas.oracle.com/xpath/extension" xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc">
         <partnerLinks>
              <partnerLink name="client" partnerLinkType="client:ParallelTest" myRole="ParallelTestProvider" partnerRole="ParallelTestRequester"/>
              <partnerLink myRole="HumanTaskRequester" name="HumanTask_1" partnerRole="HumanTaskProvider" partnerLinkType="ns1:HumanTask"/>
              <partnerLink myRole="HumanTaskRequester" name="HumanTask_2" partnerRole="HumanTaskProvider" partnerLinkType="ns1:HumanTask"/>
         </partnerLinks>
         <variables>
              <variable name="inputVariable" messageType="client:ParallelTestRequestMessage"/>
              <variable name="outputVariable" messageType="client:ParallelTestResponseMessage"/>
              <variable name="Invoke_initiate_InputVariable" messageType="ns1:HumanTaskRequestMessage"/>
              <variable name="Receive_1_onResult_InputVariable" messageType="ns1:HumanTaskResponseMessage"/>
              <variable name="Receive_2_onResult_InputVariable" messageType="ns1:HumanTaskResponseMessage"/>
         </variables>
         <sequence name="main">
              <receive name="receiveInput" partnerLink="client" portType="client:ParallelTest" operation="initiate" variable="inputVariable" createInstance="yes"/>
              <assign name="Assign_2">
                   <copy>
                        <from expression="'A Title'"/>
                        <to variable="Invoke_initiate_InputVariable" part="payload" query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:Title"/>
                   </copy>
                   <copy>
                        <from expression="5"/>
                        <to variable="Invoke_initiate_InputVariable" part="payload" query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:Priority"/>
                   </copy>
                   <copy>
                        <from expression="'GRA'"/>
                        <to variable="Invoke_initiate_InputVariable" part="payload" query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:UserGroups"/>
                   </copy>
              </assign>
              <flow name="Flow_1">
                   <sequence name="Sequence_2">
                        <scope name="Scope_2">
                             <variables>
                                  <variable name="Invoke_2_initiate_InputVariable" messageType="ns1:HumanTaskRequestMessage"/>
                             </variables>
                             <sequence name="Sequence_2">
                                  <assign name="Assign_1">
                                       <copy>
                                            <from variable="Invoke_initiate_InputVariable"/>
                                            <to variable="Invoke_2_initiate_InputVariable"/>
                                       </copy>
                                       <copy>
                                            <from expression="'Title2'"/>
                                            <to variable="Invoke_2_initiate_InputVariable" part="payload" query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:Title"/>
                                       </copy>
                                       <copy>
                                            <from expression="2"/>
                                            <to variable="Invoke_2_initiate_InputVariable" part="payload" query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:Priority"/>
                                       </copy>
                                       <copy>
                                            <from expression="'STC'"/>
                                            <to variable="Invoke_2_initiate_InputVariable" part="payload" query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:UserGroups"/>
                                       </copy>
                                  </assign>
                                  <invoke name="Invoke_2" partnerLink="HumanTask_2" portType="ns1:HumanTask" operation="initiate" inputVariable="Invoke_2_initiate_InputVariable"/>
                                  <receive name="Receive_2" partnerLink="HumanTask_2" portType="ns1:HumanTaskCallback" operation="onResult" variable="Receive_2_onResult_InputVariable" createInstance="no"/>
                             </sequence>
                        </scope>
                   </sequence>
                   <sequence name="Sequence_1">
                        <scope name="Scope_1">
                             <variables>
                                  <variable name="Invoke_1_initiate_InputVariable" messageType="ns1:HumanTaskRequestMessage"/>
                             </variables>
                             <sequence name="Sequence_3">
                                  <assign name="Assign_1">
                                       <copy>
                                            <from variable="Invoke_initiate_InputVariable"/>
                                            <to variable="Invoke_1_initiate_InputVariable"/>
                                       </copy>
                                       <copy>
                                            <from expression="'Title1'"/>
                                            <to variable="Invoke_1_initiate_InputVariable" part="payload" query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:Title"/>
                                       </copy>
                                       <copy>
                                            <from expression="3"/>
                                            <to variable="Invoke_1_initiate_InputVariable" part="payload" query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:Priority"/>
                                       </copy>
                                       <copy>
                                            <from expression="'NTC'"/>
                                            <to variable="Invoke_1_initiate_InputVariable" part="payload" query="/ns1:HumanTaskProcessRequest/ns1:HumanTask/ns1:UserGroups"/>
                                       </copy>
                                  </assign>
                                  <invoke name="Invoke_1" partnerLink="HumanTask_1" portType="ns1:HumanTask" operation="initiate" inputVariable="Invoke_1_initiate_InputVariable"/>
                                  <receive name="Receive_1" partnerLink="HumanTask_1" portType="ns1:HumanTaskCallback" operation="onResult" variable="Receive_1_onResult_InputVariable" createInstance="no"/>
                             </sequence>
                        </scope>
                   </sequence>
              </flow>
              <invoke name="callbackClient" partnerLink="client" portType="client:ParallelTestCallback" operation="onResult" inputVariable="outputVariable"/>
         </sequence>
    </process>

  • Cancelling an async call in parallel flow activity

    Hi all,
    As known, each branch of a parallel flow activity must be completed for rest of the BPEL execution continues. Let me expose a scenario:
    Imagine you need to get the current market value of the euro. You have 3 different sources of information that deliver the same result. Using parallel flow activity, you perform calls to these 3 sources. Once the first source calls back, it´s not necessary to wait for the others callback, because you already have the information that you need in your hands. How can I cancel the other waiting async calls? In WLI, we set up the parallel flow as AND or OR type. Using AND (+) means that all branch must be completed so that the process continues. Using OR (-) means that once the first branch is finished, the others will be ignored (cancelled) and the process continues. How can I get the same feature in BPEL?

    Hi Gustavo,
    There may be easier way to do this, but somehow it's not striking at the moment. In the meantime, you can try the following and see. If i get more robust and easier solution, i'll post it here.
    Just thinking aloud here:
    1) Throw a fault e.g. ResponseRecieved in each branch as soon as the branch recieves a response. The fault has to be handled in a fault handler associated with a scope containing the parallel flow. You can leave the fault handler "empty" (no-oos) and proceed with the rest of the activities.
    The above should allow the control to proceed with the activities next to the flow.
    OR
    2) In each flow, as soon as you receive a response after receive activity, invoke a callback port type of the rest of the asynchronous calls and send a dummy callback message. This should mark the completion of the receive activities in other branches. I think correlaiton needs to be handled here.
    Please try if you have not already done so and let me know.
    Thanks-
    www.ibiztrack.com
    BPEL/ESB Training:
    http://www.ibiztrack.com/html/oracle-bpel-soa-training.html

  • Parallel Flow in BPEL not working.

    We are using 10.1.3.4.We have a designed a process in bpel where we have parallel flows .Each flow has an invoke activity that calls an external service.
    Each partnerlink has property "nonBlockingInvoke" specified.
    We have also added the property in bpel.xml as below:
    <configurations>
    <property name="inMemoryOptimization">true</property>
    <property name="completionPersistPolicy">faulted</property>
    <property name="completionPersistLevel">All</property>
    </configurations>
    Now after adding the above property along with property "nonBlockingInvoke" specified for each partnerlink we are getting a timeout error.
    once I remove the configuration property it works .Even if we remove the nonBlockingInvoke property then it works.But unfortunately as per our requirement we need parallel processing and inMemory optimisation both.
    Any help on this regards will be highly appreciated.
    my bpel.xml
    <?xml version = '1.0' encoding = 'UTF-8'?>
    <BPELSuitcase>
    <BPELProcess id="SyncParallelFlow" src="SyncParallelFlow.bpel">
    <partnerLinkBindings>
    <partnerLinkBinding name="client">
    <property name="wsdlLocation">SyncParallelFlow.wsdl</property>
    </partnerLinkBinding>
    <partnerLinkBinding name="BPELTest1">
    <property name="wsdlLocation">BPELTest1Ref.wsdl</property>
    <property name="nonBlockingInvoke">true</property>
    </partnerLinkBinding>
    <partnerLinkBinding name="BPELTest2">
    <property name="wsdlLocation">BPELTest2Ref.wsdl</property>
    <property name="nonBlockingInvoke">true</property>
    </partnerLinkBinding>
    </partnerLinkBindings>
    <configurations>
    <property name="inMemoryOptimization">true</property>
    <property name="completionPersistPolicy">faulted</property>
    <property name="completionPersistLevel">All</property>
    </configurations>
    </BPELProcess>
    </BPELSuitcase>

    Well, remember inMemoryOptimization works only for Synchronous-Transient (Without any dehydration in between) processes.
    When you set nonBlockingInvoke=true, then each invoke happens in a seperate thread/transaction, which forces dehydration in the process.
    That's the reason in your case it's not working.
    Hope this explains.
    Thanks-
    [email protected]
    http://www.ibiztrack.com

  • Parallel flows not initiating parallely

    Hi All,
    I have a flowN activity in my BPEL process (PROC1), which creates parallel flows.
    Inside each parallel flows I'm calling a another process (PROC2) through partner link.
    In my PROC2 I have HumanTask activity, which sends email to the Approver's and waits till that person responds.
    The problem is
    For EG:
    If 2 parallel flows created dynamically, two mails has to send to 2 different approvers(one from each parallel flow) @ same time, but in my case first one flow started its process and the second one starts after the first gets completed.
    Could anyone help me how to rectify this.
    Thanks
    Viki

    Hi Marc,
    Thanks for your response.
    I found the problem.
    In PROC2 , I created a partner link for PROC3 (globally).
    From each branch of flowN inside PROC2, I'm invoking PROC3, it seems frm each branch call goes to global PROC3 partner link .So parallel flow not working,it works sequentially.
    May be if put the partner link inside the scope or something like I create instance of partner link inside each branch would be the best way to solve my problem.
    I created a partner link inside my flowN scope , its giving error like not finding wsdl location.
    Tell me is it possible to create Partner link inside scope activity.
    Thanks
    Viki

  • Call web service from human task

    Hi All,
    I have a requirement to call webservice inside human task flow. I have three participant in my human task flow. Let suppose A, B and C. When A approves then task will be assigned to B and when B approves it will go for C.
    My requirement is that, when A approves , then i need to call one external webservice to update database. I did not get any option to call webservice inside human task flow.
    Please help.
    Regards,
    Sunil

    Thanks userN for your wonderful reply but i have one more question.
    As per your instructions i have enabled call back events in Human task flow. In this way i got while loop inside my BPEL. In onTaskAssigned operation i am now trying to call external web service. My requriment is to call external service and get data from service. After getting response from the webservice, i want to assign it to next participant.
    But in this case, when user B approves, it goes to onTaskAssigned block and i am able to make external web service also but mean time, it has been assigned to User C which i do not want.
    I want Human task flow to wait for the webservice response then only assign it to next participant.
    Please help, is there any option to do it.
    Regards,
    Sunil

  • How to implement a call back service?

    hi all,
    i have a method which calls a particular function module. i want to achieve the following two things in the code:
    1. after calling the function module, i want the program flow to get paused - it should wait for a notification from the function module to proceed further.
    2. the function module should send a call back to the method intimating that it is done with the job.
    due to the scenario, synchronous call wil not solve the purpose. i need to use explicit wait and notificaion / call back service.
    any help would be greatly appreciated. thank you.
    rgds,
    ram

    Hello. Have you taken a look at  CALL FUNCTION ... STARTING NEW TASK ...
    See example below. Regards, Peter
    DATA: INFO LIKE RFCSI,
    Result of RFC_SYSTEM_INFO function
          SEMAPHORE(1) VALUE SPACE,    "For WAIT condition
          MSG(80)      VALUE SPACE.    "Handling of exceptions
          RET_SUBRC LIKE SY-SUBRC.     "Handling of SUBRC
    CALL FUNCTION 'RFC_SYSTEM_INFO'
         STARTING NEW TASK 'INFO'
         DESTINATION 'NONE'
         PERFORMING RETURN_INFO ON END OF TASK
         EXCEPTIONS
             COMMUNICATION_FAILURE = 1 MESSAGE MSG
             SYSTEM_FAILURE        = 2 MESSAGE MSG.
    IF SY-SUBRC = 0.
      WRITE: 'Wait for reply'.
      WAIT UNTIL SEMAPHORE = 'X'.
      IF RET_SUBRC <> 0.
         WRITE MSG.
      ELSE.
        WRITE: / 'Destination =', INFO-RFCDEST.
      ENDIF.
    ELSE.
      WRITE MSG.
    ENDIF.
    FORM RETURN_INFO USING TASKNAME.
      RECEIVE RESULTS FROM FUNCTION 'RFC_SYSTEM_INFO'
          IMPORTING  RFCSI_EXPORT = INFO
          EXCEPTIONS
             COMMUNICATION_FAILURE = 1 MESSAGE MSG
             SYSTEM_FAILURE        = 2 MESSAGE MSG.
      RET_SUBRC = SY-SUBRC. "Set RET_SUBRC
      SEMAPHORE = 'X'. "Reset semaphore
    ENDFORM.

  • No document flow updated in Service Order regarding MM flow i.e. PR, PO, GR

    Hello,
    On creating a service order in CRM, the purchase requisition is created automatically in R/3 for the spare parts entered.
    But this PR information is not getting updated in the service order's document flow in CRM.
    I analysed the flow and found that PR gets successfully created and sends back the document flow data to CRM inbound queue.
    The BDoc type involved is CRM_SRV_XTN.
    In it's Extended part, there is a field called ORDERADM_H_GUID which is correctly filled in the BAPIMTCS structure in R/3 which is converted to probably XML format through macro MOVE_CASTING and sent to CRM inbound queue (function module BAPI_CRM_SAVE).
    However, on debugging the respective inbound queue in CRM, I noticed that the field ORDERADM_H_GUID value is not the same as filled in R/3 but some CONSTANT value like 00230023002300560023002300230023 in all the cases.
    Also, FYI, the fieldu2019s value in R3 after conversion looks like as following u2013
    #########################0000000000 ########䣴Ώ삷#耀諣뢮########     48F4038FC0B70093E10080008AE3B8AE
    While in CRM i.e. FM BAPI_CRM_SAVE it looks as follows u2013
    #########################0000000000 ########################     48F4038FC0B70093E10080008AE3B8AE
    So there I feel that the value what is sent from R/3 is not the same as recieved in CRM, on XML conversion.
    Please advise what could be the reason for this anomaly.
    Thanks and regards,
    Manish

    unfortunately document flow in PS is not like in SD
    only in ECP there is a limited possibility
    you can see the line item report and activate the relationship browser which will give the details of the documents related to that posting
    other than that nothing

  • Parallel flow using same Partnerlink

    Hi all,
    This is what i'm trying to do: i have a process that splits up in two parallel processes which are EXACTLY the same (only input differs very slightly). Later on these processes converge again to one.
    So, I decided to build a process A that calls upon process B twice, using flow to have it in parallel. I realized I had to do something about getting the receive right. The thing to use looks to be the Correlation Set. However, Correlation set documentation is very meagre. I can't seem to understand the working of the 109.CorrelationSets example, as it looks to use a double correlation (?). It just confuses me.
    I really need some help here, and would appreciate a very simple working example.
    What I really need to know is:
    - what steps to take (BPELDEV guide isn't enough help)
    - where to place correlation (on invoke or receive in process A ?, on receive or reply in process B?)
    - how to set the correlation value, or is it always derived on the basis of the "query" in the bpws:PropertyAlias?
    Thanks in advance!

    Hi,
    This is probably related to the fact that you cannot have two concurrently enabled activities with the same partner link, operation, and correlation set (this constraint can be found in the BPEL spec.) The correlation sets won't help you here because correlation sets are there to do instance routing (i.e. route an inbound message to the right process instance) but the problem here is not to route to the right process instance, but to route to the appropriate "receive" action... If there are two competing receive actions, the engine just go nuts, and this is why the above constraint was introduced in the BPEL spec.
    One way to go around (assuming that the interaction between A and B is based on asynchronous send/receive), is to first send the two messages in a flow, and then wait for the response with a single receive (rather than two separate receive actions). Something like this:
    <sequence>
    <flow>
    <invoke (send asynchronous message to B), no output variable here!>
    <invoke (send asychrnous message to B), again, no output variable here!>
    </flow>
    set variable counter to 1
    <while counter <= 2>
    <receive one message from B>
    increment variable counter by 1
    </while>
    </sequence>
    With a colleague, we have written a more complicated version of this scenario, where we effectively can receive messages through the same partner link not from 2 process instances, but from any arbitrary number of process instances. See http://www.serviceinteraction.com and download the code sample for "one-to-many send/receive with dynamically determined partners".
    I can send you the full Oracle BPEL project for this example if you think it would help. But I think that with the above information you should be able to proceed.
    Regards
    Marlon Dumas (m . dumas @ qut . edu . au)

  • Oracle Service Bus 10.3 - Invoke a REST service in split join flow

    Hi
    I am using WebLogic Workshop to design a split-join service that needs to call 2 services and combine their responses.
    Service A - WSDL based service
    Service B - REST service
    In the split join flow I am able to invoke Service A just fine. However I do not have a way to call Service B. When I open the invoke dialog it only list WSDL based services.
    Does this mean in a split join I can only invoke WSDL based services or is this a bug in Weblogic Workshop.
    I can get around this by creating a WSDL based proxy that calls the REST service but was hoping I do not have to go down this route.
    Any guidance is appreciated.
    Thanks,
    -Nilay

    I think that Split-Joins are implemented in BPEL. Just look at your .flow file and you will see all those BPEL directives. That's why you probably need your service to be described by WSDL, so you are probably on the right way.
    http://technology.amis.nl/blog/1273/invoking-http-services-from-oracle-bpel-pm-soa-enabling-php-servlets-rss

  • OSB called stateful service & extracting Set-Cookie Transport header

    I need to call a Stateful Web service which returns a JSessionId (Set-Cookie) which I need to use to subsequent service calls. In my message flow, a service callout calls a web service which returns a JSessionId which is part of the Transport Header. I need to extract this value into a variable and use it to call a couple of other web service calls using Service callouts. I have tried numerous things listed below but failed
    1)     In the service callout Response actions, I have added a Transport header to capture this into a variable but in vain
    2)     Added a Transport header in the Response action on the main pipeline
    3)     Used Inbound variable to extract however it turns up empty.
    any useful ideas would be appreciated. Thanks

    When you call the external service it returns a SessionID in the header?
    If that is the case then test the service from sbconsole debug console and in the invocation trace check the value of $inbound variable within the context of service callout and check if external service has actually added a transport header for session ID.

  • CVP call server service?

    How call server service(ICM,SIP,IVR) are intercommunicating. i was gone through comprehensive call flow, when call hits on CVP with help of SIP service and communicate with ICM using ICM service.
    HOw ICM and SIP service are communicating.

    Hi Bala,
    The call server uses a central messaging bus to allow each service to communicate. All the messages between these services passes via Message Bus.
    Regards,
    Senthil

  • Error while calling ejb service call from BPM service

    Hi,
    We are using the Oracle 11.1.1.5.0
    We are calling ejb service call from BPM service to update the data to Oracle database.
    We are getting the below error when we executing the ejb service call from BPM Service.
    <Error> <EJB> <BEA-010026> <Exception occurred du
    ring commit of transaction Name=[EJB oracle.bpm.bpmn.engine.ejb.impl.BPMNDeliver
    yBean.handleCallback(java.lang.String,java.lang.String,java.lang.String,int,bool
    ean)],Xid=BEA1-45B91984D57960994897(30845116),Status=Rolled back. [Reason=javax.
    transaction.xa.XAException: JDBC driver does not support XA, hence cannot be a p
    articipant in two-phase commit. To force this participation, set the GlobalTrans
    actionsProtocol attribute to LoggingLastResource (recommended) or EmulateTwoPhas
    eCommit for the Data Source = EBSConnection],numRepliesOwedMe=0,numRepliesOwedOt
    hers=0,seconds since begin=1,seconds left=60,XAServerResourceInfo[SOADataSource_
    base_domain]=(ServerResourceInfo[SOADataSource_base_domain]=(state=rolledback,as
    signed=soa_server1),xar=SOADataSource,re-Registered = false),XAServerResourceInf
    o[ArCnTaskForms@EBSConnection@EBSConnection_base_domain]=(ServerResourceInfo[ArC
    nTaskForms@EBSConnection@EBSConnection_base_domain]=(state=rolledback,assigned=s
    oa_server1),xar=weblogic.jdbc.wrapper.JTSEmulateXAResourceImpl@fa5476,re-Registe
    red = false),SCInfo[base_domain+soa_server1]=(state=rolledback),properties=({web
    logic.jdbc.remote.EBSConnection=t3://192.168.10.114:8001, weblogic.transaction.n
    ame=[EJB oracle.bpm.bpmn.engine.ejb.impl.BPMNDeliveryBean.handleCallback(java.la
    ng.String,java.lang.String,java.lang.String,int,boolean)]}),local properties=({w
    eblogic.jdbc.jta.SOADataSource=[ No XAConnection is attached to this TxInfo ]}),
    OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=soa
    server1+192.168.10.114:8001+basedomain+t3+, XAResources={eis/tibjms/Queue, eis
    /activemq/Queue, WLStore_base_domain_BPMJMSFileStore, WLStore_base_domain__WLS_s
    oa_server1, eis/fioranomq/Topic, eis/jbossmq/Queue, eis/Apps/Apps, eis/websphere
    mq/Queue, eis/AQ/aqSample, WLStore_base_domain_SOAJMSFileStore, eis/aqjms/Queue,
    WSATGatewayRM_soa_server1_base_domain, eis/sunmq/Queue, eis/pramati/Queue, SSCo
    nnectionDS_base_domain, eis/tibjms/Topic, eis/tibjmsDirect/Queue, eis/wls/Queue,
    eis/tibjmsDirect/Topic, EDNDataSource_base_domain, eis/wls/Topic, eis/aqjms/Top
    ic, RL3TST_base_domain, ArCnTaskForms@EBSConnection@EBSConnection_base_domain, S
    OADataSource_base_domain, WLStore_base_domain_UMSJMSFileStore_auto_2},NonXAResou
    rces={})],CoordinatorURL=soa_server1+192.168.10.114:8001+base_domain+t3+): weblo
    gic.transaction.RollbackException: Could not prepare resource 'ArCnTaskForms@EBS
    Connection@EBSConnection_base_domain
    JDBC driver does not support XA, hence cannot be a participant in two-phase comm
    it. To force this participation, set the GlobalTransactionsProtocol attribute to
    LoggingLastResource (recommended) or EmulateTwoPhaseCommit for the Data Source
    = EBSConnection
    at weblogic.transaction.internal.TransactionImpl.throwRollbackException(
    TransactionImpl.java:1881)
    at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(Se
    rverTransactionImpl.java:345)
    at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTran
    sactionImpl.java:239)
    at weblogic.ejb.container.internal.BaseLocalObject.postInvoke1(BaseLocal
    Object.java:622)
    at weblogic.ejb.container.internal.BaseLocalObject.__WL_postInvokeTxRetr
    y(BaseLocalObject.java:455)
    at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(Sess
    ionLocalMethodInvoker.java:52)
    at oracle.bpm.bpmn.engine.ejb.impl.BPMNDeliveryBean_of8dk6_ICubeDelivery
    LocalBeanImpl.handleCallback(Unknown Source)
    at com.collaxa.cube.engine.dispatch.message.instance.CallbackDeliveryMes
    sageHandler.handle(CallbackDeliveryMessageHandler.java:47)
    at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(Dispatc
    hHelper.java:140)
    at com.collaxa.cube.engine.dispatch.BaseDispatchTask.process(BaseDispatc
    hTask.java:88)
    at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTas
    k.java:64)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
    utor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
    .java:908)
    at java.lang.Thread.run(Thread.java:662)
    Caused by: javax.transaction.xa.XAException: JDBC driver does not support XA, he
    nce cannot be a participant in two-phase commit. To force this participation, se
    t the GlobalTransactionsProtocol attribute to LoggingLastResource (recommended)
    or EmulateTwoPhaseCommit for the Data Source = EBSConnection
    at weblogic.jdbc.wrapper.JTSXAResourceImpl.prepare(JTSXAResourceImpl.jav
    a:83)
    at weblogic.transaction.internal.XAServerResourceInfo.prepare(XAServerRe
    sourceInfo.java:1327)
    at weblogic.transaction.internal.XAServerResourceInfo.prepare(XAServerRe
    sourceInfo.java:513)
    at weblogic.transaction.internal.ServerSCInfo$1.run(ServerSCInfo.java:36
    8)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTunin
    gWorkManagerImpl.java:528)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
    .>
    <12 Oct, 2012 12:34:40 PM IST> <Error> <oracle.soa.bpel.engine.dispatch> <BEA-00
    0000> <failed to handle message
    javax.transaction.xa.XAException: JDBC driver does not support XA, hence cannot
    be a participant in two-phase commit. To force this participation, set the Globa
    lTransactionsProtocol attribute to LoggingLastResource (recommended) or EmulateT
    woPhaseCommit for the Data Source = EBSConnection
    at weblogic.jdbc.wrapper.JTSXAResourceImpl.prepare(JTSXAResourceImpl.jav
    a:83)
    at weblogic.transaction.internal.XAServerResourceInfo.prepare(XAServerRe
    sourceInfo.java:1327)
    at weblogic.transaction.internal.XAServerResourceInfo.prepare(XAServerRe
    sourceInfo.java:513)
    at weblogic.transaction.internal.ServerSCInfo$1.run(ServerSCInfo.java:36
    8)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTunin
    gWorkManagerImpl.java:528)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
    >
    <12 Oct, 2012 12:34:40 PM IST> <Error> <oracle.soa.bpel.engine.dispatch> <BEA-00
    0000> <Failed to handle dispatch message ... exception ORABPEL-05002
    Message handle error.
    error while attempting to process the message "com.collaxa.cube.engine.dispatch.
    message.instance.CallbackDeliveryMessage"; the reported exception is: Error comm
    itting transaction:; nested exception is: javax.transaction.xa.XAException: JDBC
    driver does not support XA, hence cannot be a participant in two-phase commit.
    To force this participation, set the GlobalTransactionsProtocol attribute to Log
    gingLastResource (recommended) or EmulateTwoPhaseCommit for the Data Source = EB
    SConnection
    This error contained an exception thrown by the message handler.
    Check the exception trace in the log (with logging level set to debug mode).
    ORABPEL-05002
    Message handle error.
    error while attempting to process the message "com.collaxa.cube.engine.dispatch.
    message.instance.CallbackDeliveryMessage"; the reported exception is: Error comm
    itting transaction:; nested exception is: javax.transaction.xa.XAException: JDBC
    driver does not support XA, hence cannot be a participant in two-phase commit.
    To force this participation, set the GlobalTransactionsProtocol attribute to Log
    gingLastResource (recommended) or EmulateTwoPhaseCommit for the Data Source = EB
    SConnection
    This error contained an exception thrown by the message handler.
    Check the exception trace in the log (with logging level set to debug mode).
    at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(Dispatc
    hHelper.java:207)
    at com.collaxa.cube.engine.dispatch.BaseDispatchTask.process(BaseDispatc
    hTask.java:88)
    at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTas
    k.java:64)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
    utor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
    .java:908)
    at java.lang.Thread.run(Thread.java:662)
    >
    Could any body help on this issue.It is little bit urgent for us to resolve.
    Thanks in advance.

    Thanks Sudipto Desmukh,
    The link is helpful me to resolve this issue.
    Thanks,
    Narasimha E

  • Calling web service from oracle forms 10g

    Problem Description:
    I'm following the steps as per the doc:
    http://www.oracle.com/technology/products/forms/htdocs/10gr2/howto/webservicefromforms/ws_10_1_3_from_forms.html
    to create a java stub to call external web service and then use java importer in oracle forms to call this web service from oracle forms.
    WSDL for external web service used is http://gend:83/DesignService.svc?wsdl
    The service was developed by us.
    Calling the web service using JDeveloper works fine but when I complie in Oracle Forms it returns wrong number of types of arguments in call SENDHELLO.
    The code from oracle form to call web service is as below:
    DECLARE
    jo ora_java.jobject;
    xo ora_java.jobject;
    rv varchar2(2000);
    ex ora_java.jobject;
    str varchar2(100);
    BEGIN
    jo := GendServiceClient.new;
    rv := GendServiceClient.sendHello('Nora');
    EXCEPTION
    WHEN ORA_JAVA.JAVA_ERROR then
    message('Unable to call out to Java, ' ||ORA_JAVA.LAST_ERROR);
    WHEN ORA_JAVA.EXCEPTION_THROWN then
    ex := ORA_JAVA.LAST_EXCEPTION;
    message(Exception_.toString(ex));
    END;
    Any help/ideas on this is greatly appreciated. Thanks.
    Edited by: KE Nora Loera on Jun 1, 2012 1:24 PM

    My primary skill is PL/SQL but the only information I found on Oracle's site to call a web service from a 10g Form was creating a jar file and importing the java class. Since I don't want to ask our corporate IT to make changes on the UNIX box for the jar files I went a different route.
    I use UTL_HTTP.BEGIN_REQUEST to call a URL then load I load the data to a table as a CLOB since we have more than 4000 characters. Now I need to parse the XML and load it into a form. I have never done this so if there is a helpful site please let me know. I have looked at several sites but none do what I want.
    Thanks

  • Calling web service from oracle forms fails with ORA_JAVA.JAVA_ERROR

    Problem Description:
    I'm following the steps as per the doc:
    http://www.oracle.com/technology/products/forms/htdocs/10gr2/howto/webservicefromforms/ws_10_1_3_from_forms.html
    to create a java stub to call external web service and then use java importer in oracle forms to call this web service from oracle forms.
    WSDL for external web service used is http://www.webservicex.net/CurrencyConverter.asmx?wsdl
    Calling the web service using JDeveloper works fine but from Oracle Forms returns ORA_JAVA.JAVA_ERROR; Unable to call out to Java, Invalid object type for argument 1
    The code from oracle form to call web service is as below:
    DECLARE
    jo ora_java.jobject;
    rv ora_java.jobject;
    ex ora_java.jobject;
    outString varchar2(2000);
    BEGIN
    jo:= CurrencyConvertorStub.new;
    --This will get the exchange rate from US Dollars to UK Sterling.
    rv:= CurrencyConvertorStub.ConversionRate(jo,'CAD','USD');
    message (float_.floatValue(RV));
    EXCEPTION
    WHEN ORA_JAVA.JAVA_ERROR then
    message('Unable to call out to Java, ' ||ORA_JAVA.LAST_ERROR);
    WHEN ORA_JAVA.EXCEPTION_THROWN then
    ex := ORA_JAVA.LAST_EXCEPTION;
    outString := Exception_.toString(ex);
    message(outString);
    END;
    Any help/ideas on this is greatly appreciated. Thanks.

    Yes, it is the message line - so basically this call fails => rv:= CurrencyConvertorStub.ConversionRate(jo,'CAD','USD'); and control goes in the exception block
    WHEN ORA_JAVA.JAVA_ERROR then
    message('Unable to call out to Java, ' ||ORA_JAVA.LAST_ERROR);
    Below is the code from java stub that was generated using JDeveloper by using web services stub/skeleton and associating the WSDL
    public Double ConversionRate(String FromCurrency, String ToCurrency) throws Exception
    URL endpointURL = new URL(endpoint);
    Envelope requestEnv = new Envelope();
    Body requestBody = new Body();
    Vector requestBodyEntries = new Vector();
    String wrappingName = "ConversionRate";
    String targetNamespace = "http://www.webserviceX.NET/";
    Vector requestData = new Vector();
    requestData.add(new Object[] {"FromCurrency", FromCurrency});
    requestData.add(new Object[] {"ToCurrency", ToCurrency});
    requestBodyEntries.addElement(toElement(wrappingName, targetNamespace, requestData));
    requestBody.setBodyEntries(requestBodyEntries);
    requestEnv.setBody(requestBody);
    Message msg = new Message();
    msg.setSOAPTransport(m_httpConnection);
    msg.send(endpointURL, "http://www.webserviceX.NET/ConversionRate", requestEnv);
    Envelope responseEnv = msg.receiveEnvelope();
    Body responseBody = responseEnv.getBody();
    Vector responseData = responseBody.getBodyEntries();
    return (Double)fromElement((Element)responseData.elementAt(0), java.lang.Double.class);
    }

Maybe you are looking for

  • Sqvi for bsas gives error

    Dear All When i try to create a query for the BSAS table, i get error BSAS-PRODPER not defined in ABAP dictionary BSAS-PROPMANO not defined in ABAP dictionary. Document 1500000000 was posted in company code 1000 lease help me resolve this issue. rega

  • PID and fuzzy logic toolkit

    He I'm trying to create a motor position control using the PID toolkit. Is there a step response feature or another function that shows the response of the PID system, percent overshoot, settling time, etc? If not, is there a way I can create a step

  • Why is my outlook mail so slow?

    I have relatively new (several months) system and it is slower than my iphone or ipad.  What can I do to speed it up?

  • Oracle-validated  generates strange user id 54321 for oracle

    Hi! When installing OEL 5.5 x86_64 on both physical and virtual servers, using both kickstart and manual installation, I have noticed following thing oracle user id is 54321 as opposed to "standart" user id 500. Is this expected behaviour or do I hav

  • Dissapearing Items?

    I have had this problem for a while now, adding files to the library, closing itunes then coming back and there all gone. But just now i noticed 2 things i bought from the music store are gone. I have looked everywhere but i cant find them. It cost $