BPEL Correlation and inMemoryOptimization + completionPersistPolicy

Hello,
I have a problem and I would like to know if it is "as expected" or if there is some workaround.
I have :
- a parent BPEL using a reference of type "Adapter JMS : request/reply".
- declared the properties "inMemoryOptimization" (false) and "completionPersistPolict" (On) on the parent BPEL
- a child BPEL which expose a service of type "Adapter JMS : consume message" and has a reference of type "Adapter JMS : produce message".
The child BPEL set the JMSCorrelationID in the response with the JMSMessageID of the request.
The parent BPEL just invoke the partner link (adapter jms : request/reply).
If I test my SOA composite like this, all is fine. The parent BPEL call the child BPEL and the response of the child BPEL is correlated correctly.
Now if I deploy the same SOA composite while setting the "inMemoryOptimization" to "true" and "completionPersistPolicy" to "Faulted", then the correlation doesn't work anymore.
I suspect that the behaviour is "as expected" since I disabled the BPEL persistence (but it's kind of annoying).
Can someone confirme that it is normal ? And also if possible what is the minimum persistence policy needed for the correlation feature ?
thanks in advance,
mathieu

This is a feature that we would like to provide in the BPEL SE. In the immediate future we may be able to address this in part specifically the case you mentioned. The other cases that also needs to be addressed is where the incoming message's correlation ID matches with a running instance, but doesn't get consumed because the instance never took the path of consuming the message. These other use cases will be addressed as a feature later.
thanks,
-Kiran B

Similar Messages

  • BPEL Correlation and timeouts

    Hello,
    I'd like to ask question regarging BPEL correlation and timeouts.
    According to BPEL SE lifecycle schema - if BPEL SE receives message with defined correlation and value of the correlator in message doesn't match any active process instance BPEL keeps message waiting for process instance with particular correlation value
    This behaviour is undesirable in situations where no process with particular correlator ever appears.
    If the BPEL client is connected via HTTP/SOAP BC, then client timeout will just terminate HTTP connection to binding component, message exchange between BC and BPEL isn't closed.
    I cannot manage to cancel connection due to timeout from EJB (if BPEL client is EJB, so it is connected via JavaEE SE).
    Is there any possibility in BPEL SE to refuse messages correlated to non-existing process instances? Or is there any possibility to set client timeout from SOAP BC or J2EE SE on message-exchange level?
    Vladimir

    This is a feature that we would like to provide in the BPEL SE. In the immediate future we may be able to address this in part specifically the case you mentioned. The other cases that also needs to be addressed is where the incoming message's correlation ID matches with a running instance, but doesn't get consumed because the instance never took the path of consuming the message. These other use cases will be addressed as a feature later.
    thanks,
    -Kiran B

  • Issue with BPEL Correlation on Invoke 11g

    The scenario is like...
    One initial receive -> Invoke to a Web Service -> Receive from JMS Q -> End of the process.
    I have applied BPEL Correlation on Invoke by creating property alias with Output Message Type.Pattern I have also used.
    Now, when I run the composite, the instance is in error but no error message.
    On the other hand, if I use the Input message type for correlation property alias, the BPEL process proceeds. But my requirement is to do the correlation on output variable of invoke which needs to be checked against receive input variable.
    Can any one suggest some resolution here?
    Thanks.

    Hi,
    Here the option what I can think of is that use some unique element that you passing in first invoke for correlation and customize the external service to ask them to have your passed value as part of their queue values, That way you can correlate the messages and once correlated based on unique value you match up the tokens.
    Suggesting this work around as, correlation will always need token, which is passed as an input to the first Invoke. so defining correlation based on output token is not possible.
    If you find something please do share.
    -Umesh

  • Process not getting correlated and going into manual recovery stage

    Hi
    I have developed a bpel process which implements correlation. I have unit tested it and is working fine. But am encountering issues in case of load.
    The process which should correlate to the running process is going into manual recovery and the correlation is not happening. Whenever is restart the managed server, and then recover the instance things are getting completed and correlation is happening.
    Can some one suggest what might be the problem in this case
    Thanks in advance

    Sumit,
    This occurs because your process has not dehydrated to the dehydration store yet.
    The process has not failed but it is waiting for a response from some partner link in your BPEL process. This can be common when calling async ESBs and the ESB fails.
    To try and debug this you will need to look at the domain.log and see if any error is generated. Have a look at your BPEL process and see what partner link cal cause a failure yet not send a response back.
    Is the DB adapter the only partner link or are there others?
    cheers
    James

  • BPEL Correlation

    Hi All,
    I want to do some hands on in BPEL correlation. Can anyone suggest me where i can find about the basics of correlation concepts and tutorial on using Correlation in BPEL? Any help appreciated.
    Thanks & Regards,
    Ayyadurai

    one of these?
    http://blogs.bpel-people.com/2009/04/writing-singleton-bpel-process.html
    http://swapnil-soa.blogspot.com/2008/01/correlation-this-post-would-effort-to.html
    hth,
    Peter Paul

  • Correlation and multiple branches with flowN

    Hi All,
    I would like to ask a question about correlation.I am trying to spawn "n" processes (Process B) from a master process(Process A), and than collect the responses from these instances.I have an array as an input to Process A, and have a flowN activity.In this activity,I simply perform an assign(to assign the varible in the array by an index, to the input variable of invoke), an invoke and a receive activities.
    I have added correlation to the invoke as initiate correlation, and I added the same set to the receive activity.When I run the sample, unfortunately I get "Cannot initiate a correlation set more than once." error and the process is cancelled.In fact, the values for each array iteration is different, so I would expect to initiate n correlations for my waiting receive activities.
    Am I doing something wrong or isn't that the way it has to be done?

    No, I have inserted a scope into flowN sequence and defined a scope variable to use.From the audit trail, I can see I have successfully assigned the array variable to the scope variable.For an input of 2 list elements,the first flowN branch is successfully completed but the second branch has a faulted invoke with the message:
    "Cannot initiate a correlation set more than once."
    If I remove the correlation sets from the invoke and receive and leave the correlation to BPEL Engine, I get the following message:
    Conflicting receive.
    Another receive activity or equivalent (currently, onMessage branch in a pick activity) has already been enabled with the partnerLink "CalleeProcess", 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.
    Message was edited by:
    Caglar Kara

  • Creating a Web Service to handle flow between BPEL process and XML Gateway

    I am new to Web Services. I have never created one, yet I have the task of designing the following for a project.
    Any help as to what steps I need to take would be very very helpful. There is a lot of information on XML, SOA and WSDL out there that it can get very confusing, and sometimes you just need someone to point the way
    What I need to do is create a Custom Send and a Custom Receive Program (both web services) handle the message flow between an Enterprise BPEL processes and a Deployed XML Gateway.
    BPEL compresses this XML business object document (for faster transmission), and sends remotely to this Custom Receive web service, which in turn calls a decompress java program and then send the document to the XML gateway inbound web service.
    The Custom Send web service does just the opposite. It needs to take the business object document from XML gateway, call the compress java program and then send to the Enterprise BPEL.
    In a nutshell...these Custom Send/Receive Web services handle the message flow between the Enterprise BPEL process and the Deployed XML Gateway.
    What I need help on...
    -Creating this in JDeveloper- where do I get started?
    -How does a web service receive a compressed file sent to me via BPEL? Does it just sit there waiting for it?
    -Is this a synchronous or asynchronous design?
    -Will this be 2 web services (Send and Receive) or do I make 1 with 2 functionalities
    -How do I call the java compress/decompress program within the web service? (this java function is already created and ready to be called)
    -Is this decompressed business object file an XML schema and an XML message? Or just a message?
    -I need to send this to the XML Gateway Web Service to load. How does that work?
    -I have a Generic XML Gateway WSDL file...I assume I need to take all the info I get and map it to this template? Is this true? How do I do that?
    Like I said, any help would be appreciated. Links answers to my many questions would be fabulous.
    -Jason

    If you are talking about simple XML transformation of the SOAP payload between the client calling your service and the final destination of the message you are routing, the ESB approach may be a better fit.
    If you have more complex transformation in mind, with major processing and rework of the message in the intermediary, you may be better of with using the POJO approach. Write your service and embed a callout to the other service in your implementation. If the two services share the same Java Model, you may even be able to re-use the same Java Bean.
    To get SOAP Element instead of Java bean, you just need to use the noDataBinding option with either genProxy and topDownAssemble (or assemble). See the WS-Guide [1] for details. Chapter 18 will give you all the details about the different WSA command line parameters.
    Hope this helps,
    -Eric
    [1] http://download-west.oracle.com/docs/cd/B31017_01/web.1013/b28974/toc.htm

  • Looking to use BPEL Instance and counter inside of a transformation

    I'm trying to find a way to include the BPEL instance and a counter within a BPEL transformation to create a unique key.
    Example, picking up files with multiple lines and no unique keys, each file is processed as a unique BPEL instance (key 1), and would like to use the row number (of the file, but not specified in the file) as the second key.
    My process takes a file from a file adapter and loads it into a database adapter if that helps.
    Any ideas would be appreciated.

    We ended up finding a Node-set Function -> Position to return the position inside of the dataset.

  • Correlation Problem: unable to Use Correlation and Activate correlation

    Hello,
    i have created correlation name in correlation list and assigned involved messages and assigned proper field in correlaton in properties .i am able to view my correlation name in the properties of both receive steps ,but when i assign it to use correlation and move cursor to activate correlation .value in use correlation is not holding the value and holding space ,the same is happening to activate correlation field.
    I am using PI 7.1.
    Please let me know if you have really overcome this issue.
    Regards,
    Vishal K
    Edited by: vishal kharat on Aug 3, 2011 6:15 PM

    it seems there is no way.
    See note 1797073
    Is there someone with a better solution?

  • Understanding asynchronous BPEL processes and threading

    Hi everybody,
    I have a question regarding asynchronous BPEL processes and threading.
    I have an asynchronous BPEL process which delivers a message (picked up from a JMS topic) to a repository (via for instance an ICAN server). This transaction must be time-sensitive, i.e. first-in is first-out.
    If I have several threads running concurrently I have no guarantee that the messages are delivered in the same order that they where generated. It seems that the suggested way around this problem is to use single-threading.
    So here's the part that I do not understand:
    An asynchronous request does not wait for a response. If I use single-threading then what happens to that single-thread if for some reason (for instance the ICAN server is not responding) the BPEL instance is dehydrated? Is the thread still allocated for waiting for the first response or does it go back and pick up the next thing on the topic? If the next thing on the topic is picked up then how can I be sure that the messages are delivered in the correct order? If the thread is still allocated to the single instance then does that not kindda go against the whole concept of an asynchronous process?
    I hope some one can explain this to me.
    Thank you in advance.
    Kind regards,
    Mathias
    PS. This question is an attempt of a different angle on another forum thread: Asynchronuos BPEL - how to get the order of messages right?

    Hi again,
    A quick follow up question:
    Is there any way to have several BPEL processes running on the same server with different settings for how many threads to use?
    It seems that the only way to set number of threads used by BPEL is to use the configuration in the BPEL console? This is an domain setting - which means that all processes deployed to the server is effected the same way?
    I am asking because I am facing a scenario where I need one BPEL process to read from a AQ queue (well actually a topic) with a single thread and another BPEL process - deployed to the same BPEL server - to read from the same AQ queue with multiple threads.
    Does anyone have any idea of how to do this? Can it be done?
    Any suggestions, hints or reference to any documentation would be very much appreciated.
    Thank you in advance,
    Aagaard

  • Invoke BPEL process and display result in BAM chart?

    Hi,
    I was wondering if there is any way to invoke a BPEL process and display the result back in BAM chart (Active Studio).
    I have in mind the Actionable Reports and getting the BPEl process populate the BAM Data Object to show the result back. Let me know if there's anything to connect these ideas to do the whole thing.
    The reason for this requirement is to have a single User Interface for having BAM charts and a query operation (synchronous BPEL process).
    Any inputs are welcome.
    Thanks in advance.
    Vikas

    Yes, this can be done with the help of Alert and setting up a external Action.
    Please refer the following document for more details.
    http://www.oracle.com/technology/products/integration/bam/10.1.3/TechNotes/TechNote_BAM_CallingExternal_WebServices.pdf
    regards
    Laj

  • Accessing Business rules from BPEL, OESB and OSB

    How to aceess Business rules from BPEL, OESB and OSB ?

    Hey you can use Decision Service in BPEL process. You have "Decide" activity for this. However, no idea about ESB or OSB.

  • Correlated and non correlated Query

    hello
    I am confuse in correlated and non-correlated query? below query is correlated or non correlated ? why?
    SELECT FIRST_NAME,LAST_NAME FROM EMPLOYEES E WHERE department_id in
    (SELECT D.DEPARTMENT_ID FROM DEPARTMENTS D WHERE D.DEPARTMENT_ID=E.DEPARTMENT_ID)
    Thanks

    (SELECT D.DEPARTMENT_ID
       FROM DEPARTMENTS D
      WHERE D.DEPARTMENT_ID=E.DEPARTMENT_ID)is a correlated subquery. There is a correlation between this query and a table in the outer query (in this case the join condition between EMPLOYEES and DEPARTMENTS).
    Justin

  • Custom BPEL Workflow and Content DB

    Hi,
    I am trying to register my custom BPEL workflow and trying to run from ContentDB default site, I can see that request in my request report but I can not see that process in BPEL Console.
    1) Is there any place I can see logs?
    2) Any good documentation apart from B31268-02 Admin Guide?
    It just opens my worklist application
    Regards,
    Jigar

    Hi Anand,
    See BPEL Worl Flow and ContentDB
    Thanks,
    Jigar

  • Global Correlation and Network Participation - what's the value of it ???

    Hi security gurus!
    Can someone please shed me more light on the value of Global Correlation and Network Participation available at IPS 7.x
    We've enabled it on the clients IPS appliances and now the only information I see is some cryptic reports seen at IDM gadgets.
    It says that the reputation filtering is 100% under Percentage of malicious packets indentified. So what ?
    How would I know exactly what those packets are and where did they come from?
    Other metrics are Global Correlation inspection and Traditional IPS Detection techniques are 0%
    What does it mean? Doesn't something work ? Why are they 0% ?
    How is this normally sold to the customer if there's no credible information about it?
    Eugene

    Hi,
    I think this link will help you http://docs.oracle.com/cd/B14117_01/network.101/b10776/listener.htm

Maybe you are looking for