The Send Task in Context

6-20 Modeling and Implementation Guide for Oracle Business Process Management The throw message event can be used to invoke the following types of processes and services: ■ Other BPMN processes ■ BPEL processes ■ SOA service adapters ■ Mediators that are exposed as services Process analysts may add message throw events to a process to define where a process must invoke another process or service. However, process developers are typically responsible for implementing the connectivity with other processes. Additionally, they are typically responsible for creating and implementing the services invoked by the message throw event. For information on how implement message throw events, see Communicating With Other BPMN Processes and Services Using Message Events in the Oracle Fusion Middleware Modeling and Implementation Guide for Oracle Business Process Management. Message throw events are often used to invoke other BPMN processes by calling the message start event of another process. See Section 6.2.3, Introduction to the Message Start Event for more information. Message throw events are also frequently used with message catch events to receive a response from the process or service invoked. However, they are always used asynchronously. After the message throw event sends a message to another process or service, the toke immediately moves to the next flow object of the process. If your process receives a response synchronously, you should use the service task to invoke the process or service. See Section 6.4.1, Introduction to the Service Task for more information.

6.4.7 Introduction to the Message Catch Event

The message catch intermediate event enables you to receive a message from another process or service. Figure 6–24 shows the default notation for the message catch event. Figure 6–24 The Message Catch Event The message catch is represented by two concentric circles with a yellow envelope in the middle. The message catch event is frequently used with the message throw event to communicate with another BPMN process. See Section 6.4.8 for information on how message throw events with message catch event. Note: The send and receive tasks perform similar functionality to the throw and catch message events. However, you cannot use the message throw event to invoke a process that is initiated with a message receive task. Modeling Business Processes with Oracle BPM 6-21 For information on how implement message throw events, see Communicating With Other BPMN Processes and Services Using Message Events in the Oracle Fusion Middleware Modeling and Implementation Guide for Oracle Business Process Management.

6.4.8 Using Message Throw and Catch to Communicate Between Processes

You can use combinations of throw and catch events to invoke and communicate with other BPMN processes. When using a throw event to invoke another process, the following conditions must be met: ■ The process being invoked must be an asynchronous process. Although you can use a message throw to invoke a synchronous process, there is no mechanism for catching messages synchronously from the process. If you invoke a synchronous process you should use the service task. See Section 6.4.1, Introduction to the Service Task for more information. ■ The first time you use a throw event it must be paired to the message start event of the other process. This is required to trigger the process instance. After the instance has been trigger, you can use subsequent message throw events that are caught by the second process. Processes that begin with a message start and end with a message end event are exposed as services that can be used by other process and services within an Oracle BPM application. Processes invoked from another process are not considered child processes. This is important to consider when designing processes that use the terminate end event as a process end point. For example, a terminate event in the calling process does not terminate processes invoked with a message throw event Figure 6–25 shows the basic behavior when using throw and catch event to invoke a process and receive a response. Figure 6–25 Using Message Throw and Catch Events Between Processes This figure shows two processes: Process A and Process B. The following steps outline a possible scenario when using the message throw and catch events to communicate between processes. 1. Process A is invoked. 2. The token of Process A reaches a message throw event that is configured to invoke Process B. 3. The message throw event sends a message to the message start event of Process B. 4. The token of Process A proceeds to the next flow object. 5. The message start event triggers an instance of Process B.