-->

Friday 27 June 2008

Process definition

NGinn process model is based on Petri nets extended with process-specific information. Picture below shows a basic Petri net. It consists of places (circles) and transitions (rectangles), connected with arrows.

 

I will not explain here how Petri net works - it can be found in many sources, for example here. Most important principle is that tokens (black dots) represent current process status. Each transition consumes tokens from its input places and produces tokens in output places, so effectively tokens move across the Petri net. In NGinn, we add two special places to the picture - a start place and an end place. Start place is the process starting point - process starts when a token is placed in the start place. End place is the finish point - process finishes when all tokens reach the end place. In the picture above, we could say P1 is the start place and P4 is the end place. 

Transitions in NGinn are called tasks. Tasks are the basic building block of a process and they represent various actions that are needed to complete the process. There are many types of tasks in NGinn, they will be described later. When a task completes, it consumes one or more tokens from its input places (which tokens are consumed depends of task 'join' type - described later) and produces one or more tokens in output places (how many tokens are produced depends on task 'split' type - also described later).

Places in NGinn have 'original' Petri-net meaning. They are just a places where tokens are held during periods of inactivity (when nothing happens in a process or when we are waiting for a task to complete).

NGinn idea is based on the YAWL language -process building blocks are generally the same, so you can read about YAWL to get the idea on how the process definition looks like. However, NGinn provides completely different implementation of the engine and process tasks.

No comments: