3 Replies Latest reply on Sep 25, 2014 1:36 AM by James.Tran

    Is it possible to subscribe to Signal Event from the same process?

    James.Tran

      In the "Getting started with Oracle BPM Suite 11gR1" textbook, the author wrote that:

      Unlike Message Events, which can be used for communication across processes, a Signal Event can be used to send a trigger both inside - activities inside the same process can subscribe to the signal event published by the process - and outside the process.

      However, in the "Oracle® Fusion Middleware Modeling and Implementation Guide for Oracle Business Process Management 11g Release 1 (11.1.1.7)", section 20.10 has the following note:

      Use signal events to communicate with other processes. The process that broadcasts the signal event does not include itself in the broadcast list.

      I'm a bit confused by the above information. I'd be very grateful if you could confirm whether my following understanding is correct or not. Please also let me know if I missed out any important details.

      A Signal event can be used to send a trigger to activities inside the same process. However, since the process that broadcasts the signal event does not include itself in the receiver list, a process cannot use a Signal Start event to start a new instance of itself by sending out a Signal. Only activities within a process can subscribe to a topic using Signal Intermediate event.

      Thank you!

        • 1. Re: Is it possible to subscribe to Signal Event from the same process?
          Dan Atwood

          Hi James,

           

          I am probably the biggest fan of the "Getting Started with Oracle BPM Suite 11gR1 – A Hands-On Tutorial | Packt Publishing" book.  Although it needs to be updated for 12c, it's incredibly easy to read and was written by the Oracle BPM product managers.

           

          With that said, the excerpt you quoted from the book:

          James.Tran wrote:

          Unlike Message Events, which can be used for communication across processes, a Signal Event can be used to send a trigger both inside - activities inside the same process can subscribe to the signal event published by the process - and outside the process.

           

          This is unfortunately incorrect.  If you can hit the Oracle Support website, look at bug 13844200.  Not my place to agree or disagree with Support, but this has unfortunately been marked as "Not a bug".

           

          It is not a fix for the issue, there is a great blog post that Arun Parteek wrote when correlations were added into the product that gives an incredibly elaborate example of intra-process signal communication - http://beatechnologies.wordpress.com/2011/10/17/working-with-custom-correlation-in-oracle-bpm-suite-11g-ps4-feature-pack/

           

          Although this looks like he has a signal event used for intra-process communication, what he instead came up with is an elaborate workaround.  If you look at the blog post you will notice that he:

          1. Has a SendBookingEvent to send the signal from the process.
          2. The signal is then caught by a BPEL process (not the Oracle BPM process)
          3. The BPEL process then sends another signal
          4. The original Oracle BPM process then catches the signal thrown by the BPEL process.

           

          I've seen other techniques used enable intra-process Signal events in the last few years, but they're also just workarounds.

           

          Not what you were looking for, but there's some hope in 12c that just came out.  It now supports something called a correlated multicast subscription.  I'm hoping this can be used for intra-process Signal events.

           

          Hope this helps and wish I had a better answer on why this was marked by support as "Not a bug",

          Dan

          • 2. Re: Is it possible to subscribe to Signal Event from the same process?
            James.Tran

            Thanks a lot for the clear explanation . It's really helpful!

            • 3. Re: Re: Is it possible to subscribe to Signal Event from the same process?
              James.Tran

              Hi Dan,

               

              Last month, I didn't have access to Oracle Support to read the content of the bug 13844200 you mentioned in your answer. The good news is I do now .

               

              In Arun Pareek's blog, for the Cab Booking process, he throwed a "Send Booking Confirmation" signal using a Throw Signal event inside a sub-process and then caught the signal using a Catch Signal event in the main process.

              Capture.PNG

              So from the bug report and the original quote in the "Getting Started with Oracle BPM Suite 11gR1" book:

              Unlike Message Events, which can be used for communication across processes, a Signal Event can be used to send a trigger both inside - activities inside the same process can subscribe to the signal event published by the process - and outside the process.

              my understanding now is that within the main process, it is possible to catch all triggers thrown by its children. However, within child processes, is is NOT possible to catch triggers thrown by the parent process.

               

              It'd be great if you could help me confirm the following:

              1. Within the main process, is it possible to throw a trigger and catch it in a later step inside the main process?
              2. Within the sub-process, is it possible to throw a trigger and catch it in a later step inside the sub-process?

               

              If both of the above are true, then the book is correct with the exception of catching a trigger thrown by the parent in a child process.