Throw and catch events
Throw and catch events provide a mechanism to communicate with another process or service. Specifically, you can use throw events to invoke:
Another BPMN process
A BPEL process
An adapter
A mediator that is exposed as a service
Any other component that is exposed as a service
Throw events are usually asynchronous. As soon as the throw event is executed, the process continues with the next task. It does not wait for a response. It is possible for a throw event to be synchronous, in the sense that you can invoke a synchronous service with a throw event and it can reply on the same connection—as opposed to sending a callback later. You can specify that you want to wait for a synchronous reply using the Synchronous property on the throw event. If you want to invoke a synchronous service or process, you could alternatively use a service task .
It is also important to understand that processes invoked through throw/catch events (and also those invoked through send/receive tasks) are not child processes of the invoking process, they are peers . This will be important later on when we discuss exception handling .
You can throw a message or a signal using a throw event. Throwing a message is the equivalent of sending a SOAP message to a service. Throwing a signal is the equivalent of publishing an event into the event delivery network. You can use a throw event to invoke a process that starts with a receive task, but only if that receive task has the Create New Instance property set.