1. Getting Started

1. Getting Started

BPMN Design Hints

BPMN Design Hints

Business Process Model and Notation (BPMN) is a graph-oriented notation standard favored by business analysts and designers to model the flow of activities for analysis, documentation, and execution. Process Developer uses this standard by default for designing executable BPEL processes.
Organize High Level and Detailed Views of a Process
Organize your process into units of work, represented by scopes. A scope is a container for any number of activities and control flows. Collapse the scopes, using a right-mouse menu item. Collapsed scopes create a high-level view of a process, as the example shows.
high level view of process -- 3 scopes
Select the plus sign (+) or the right-mouse menu option, Go Into Activity, to view the activities contained in the scope, as shown below. Select the navigation trail at the top of the window to return to the full view of the process.
drill down into scope
Select Horizontal or Vertical Layout
Select the layout suitable for your process and individual activities in the process.
If activities are contained, for example inside a sequence, the parent container sets the layout. If activities are connected with links, you can select a different layout for each connected activity. In the example below, the horizontal sequence containing three activities is linked to a vertically aligned activity.
Horizontal and vertical layout
Use Structured Control Flows
Take advantage of the structure built into activities.
The if, pick, and fork join activities are each pre-built with two paths, as shown in the example. You can add more paths or delete existing paths as desired. For example, execute several activities in parallel by adding multiple paths to the fork join.
If, Pick and Fork Join
Add Activities to a Path of If, Pick, Fork Join
Drag any activity from the palette to the implicit sequence, as shown by the blue border in the fork join example. Each new activity you add to a path is in sequence, as shown on the right-hand path.
Add activity to Fork Join paths
Add End Events to Paths of If, Pick, Fork Join
If no activities follow a fork join, if, or pick, you can remove the merge diamond by adding end events, as shown in the fork join example.
Add end event to Fork Join paths
Add and Delete a Path of If, Pick, Fork Join
Use the right-mouse menu to add or delete a path, as shown in the fork join example.
Add path to Fork Join
Double-click to Add Expressions and Conditions
Quickly add a condition to an if, while, or repeat until by double-clicking on the activity label. The appropriate builder opens. Double-click also opens an assign activity and the transition builder for a link.
Use Boundary Events for a Streamline View of Event Handling
You can create an uncluttered view of process events by using boundary events instead of normal scope handlers.
In the following example, you see in the top picture a scope with a catch and an onEvent handler. The onEvent throws a fault to the catch to cancel a loan application. In the bottom picture, the same events occur by using an interrupting onEvent which links to the cancellation work.
The bottom picture is easier to understand. Note that interrupting onEvent and onAlarm events are Informatica Business Process Manager extensions to WS-BPEL 2.0
Figure 1: Scope with normal catch and event handlers:
Normal scope handlers
interrupting boundary event
More examples
Here are some notes on BPMN Usage
  • A none intermediate event is traditionally used to note a milestone in the process. For example, the quote request is now in progress. At such a milestone, it is common that someone would want to be able to assign to a status variable. Thus an intermediate none event labeled in progress would, under the covers, assign the string in progress to the status variable. Alternately, a none intermediate event can be implemented as an empty.
  • Drag a message catch event to a boundary of a bordered activity and it becomes an OnEvent event handler. Drag it to an event-based gateway and it becomes an OnMessage. Drag it anywhere else and it becomes a receive. A message catch event is a waiting event, waiting for something to trigger it.
    Message Catch events
  • Drag a message throw event to the canvas and select the implementation desired: invoke, people, or reply. A message throw event is an outbound event, generating an event.
    Message throw events


Updated March 09, 2020