2 Replies Latest reply: Aug 18, 2014 3:39 AM by simon0b101010 RSS

    "Conflicting receive" in BPM process

    simon0b101010

      Hi all,

       

      We have 2 BPM processes: a creation process and an update process. Those 2 processes are triggered by 2 business events: CreatedEvent and UpdatedEvent. The update process is basically doing a revert and a triggers a new CreatedEvent which starts a new creation process.

      At any time, some DeletedEvent might be received. In that situation, we have a sub process in the creation process that terminates the targeted instance. It is based on a correlation key composed of 3 properties (propertyA, propertyB and propertyC) and initiated at the beginning of the creation process.

       

      We have the following scenario:

      1. CreatedEvent raised -> creation process is triggered and completes normally with correlation key (propertyA='26869', propertyB='PR1' and propertyC='PR00000001')
      2. UpdatedEvent raised -> update process is triggered which triggers again the creation process with same correlation key (propertyA='26869', propertyB='PR1' and propertyC='PR00000001') and update process completes normally BUT the newly creation process fails at the begining with this message :

       

      Unhandled BPELFault:faultName: {{http://schemas.xmlsoap.org/ws/2003/03/business-process/}conflictingReceive}[[

      messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage}

      parts: {{

      summary=<summary>Conflicting receive.

      A similar receive activity is being declared in the same process.

      Another receive activity or equivalent (currently, onMessage branch in a pick activity) has already been enabled with the partnerLink "", operation name "{[...]/entities/events/edl/Event}DeletedEvent" and correlation set

      "

      {{http://xmlns.oracle.com/bpmn/bpmnProcess/TestComposite}propertyA=

      {http://xmlns.oracle.com/bpmn/bpmnProcess/TestComposite}propertyA=26869,

      {http://xmlns.oracle.com/bpmn/bpmnProcess/TestComposite}propertyB=

      {http://xmlns.oracle.com/bpmn/bpmnProcess/TestComposite}propertyB=PR1,

      {http://xmlns.oracle.com/bpmn/bpmnProcess/TestComposite}propertyC=

      {http://xmlns.oracle.com/bpmn/bpmnProcess/TestComposite}propertyC=PR00000001}" (or conversation ID).  Appendix A - Standard Faults in the BPEL 1.1 specification specifies a fault should be thrown under these conditions.

      Redeploy the process after removing the conflicting receive activities.

      </summary>}

       

      What you need to know is in some situation, this "create then update" process does work as expected but in a different scenario (different path in the creation process), it is failing with previous message. I have read about some post mentioning a solution based on adding a conversation id. But I think it would break my deletion process as if I have:

      A creation process with correlation key (propertyA='26869', propertyB='PR1' and propertyC='PR00000001', conversationId='abcd123')

      And if we get a DeletedEvent with correlation key (propertyA='26869', propertyB='PR1' and propertyC='PR00000001', conversationId='dsdsd456')

      It wouldn't work right?

       

      Am I missing something here?

       

      Thanks for your help.

       

      Simon.