Book Image

Oracle BPM Suite 11g: Advanced BPMN Topics

Book Image

Oracle BPM Suite 11g: Advanced BPMN Topics

Overview of this book

Oracle BPM Suite is a popular and highly capable business process management system with extensive integration capabilities. BPMN, one of the most widely used process modeling notations, includes advanced capabilities for inter-process communication, working of arrays of data, and handling exceptions. However, these very same areas are often poorly understood. This book gives you the knowledge to create professional process models using these advanced features of BPMN."Oracle BPM Suite 11g: Advanced BPMN Topics" is the only book available that provides coverage of advanced BPMN topics for Oracle BPM Suite, helping to fill in the gaps left by the product documentation, and giving you the information that you need to know to use BPMN to its full potential.This book covers the important theory behind inter-process communication, working with arrays and handling exceptions in BPMN, along with detailed, step-by-step practical exercises that demonstrate and consolidate this theoretical knowledge.Throughout the book we'll cover topics including different types of sub-processes, initializing and manipulating arrays, using the multi-instance embedded sub-process, fault propagation and more.With "Oracle BPM Suite 11g: Advanced BPMN Topics" in hand, you'll gain detailed and practical experience in using the advanced features of BPMN to create professional BPMN processes with Oracle BPM.
Table of Contents (12 chapters)
Oracle BPM Suite 11g: Advanced BPMN Topics
About the Authors
About the Reviewers

Send and receive tasks

The send task allows you to send a message to a receive task in another process, and the receive task allows you to receive a message from a send task in another process. The send task is similar to the throw message event; however, you cannot use the send task to invoke a process that starts with a message start event. There are no send and receive tasks for signals, only for messages. Send and receive tasks also allow you to attach boundary events (which will be discussed in Chapter 4, Handling Exceptions) to them. This is an important difference.

You can use the receive task to start a process, however, in this case, you must set the Create Instance property and there must be a single start node of type "none" immediately before the receive task.

The following diagram shows three processes that use the methods we have discussed to communicate with each other. The dotted arrows indicate where throw and catch message events are used by Process3 to invoke Process1, and by Process1 to return some data to Process3 when it is finished. The red arrows indicate where send and receive message tasks are used by Process1 to invoke Process2, and by Process2 to return some data to Process1 when it is finished.

Let us consider what happens when an instance of Process3 is executed:

  1. Process3 starts.

  2. Process3 throws a message event to start Process1.

  3. Right away, Process3 goes on to Activity.

  4. At the same time (more or less,) Process1 starts.

  5. Process1 sends a message to start Process2.

  6. Right away, Process1 goes on to Do something.

  7. At the same time (more or less), Process2 starts.

  8. Process2 goes on to Do something else.

  9. While all of this is going on, when Process3 finished doing Activity, it went on to CatchEvent and paused there waiting for a response back from Process1.

  10. Similarly, when Process1 finished Do something, it went on to ReceiveTask and paused there waiting for a response back from Process2.

  11. When Process2 finished Do something else, it sent a response (in this case by sending a message) back to Process1.

  12. Process1 wakes up upon receiving a response (message) from Process2 and then sends its response (by throwing a message event) back to Process3.

  13. Process3 wakes up upon receiving a response (catching a message event) from Process1 and then moves on to its end.