Version 2

    Motivation

    The goal of this theory is to define a new type of state machine that can be used as the basis of workflow definitions.  Up until now, state models have not been satisfactory for the purpose of workflow modeling :

      petri nets : too low level

      uml state diagrams : limited concurrency, no runtime semantics

      uml activity diagrams : no runtime semantics

     

     

    Definition

    A process definition is a directed graph consisting of nodes and transitions.  Nodes have a set of leaving transitions.  Optionally, one of the leaving transitions of a node can be marked as the default transition.   One node in the graph is marked as the start-state.   No transitions are allowed to arrive in the start-state.  Zero or more nodes in the graph are end-states.  End-states are not allowed to have leaving transitions.

     

    Execution

     

    Starting a process instance

    A process instance is one execution of a process definition.  A token is a part of a process instance that has one pointer to reference a node in the state definition graph.  To start a process instance, a leaving transition of the start-state has to be selected.   A process instance is started by creating one token (the root token) and pass the token over the specified leaving transition.  If no transition is specified when starting the process instance, the default transition is taken. 

     

    Calculating the next state

    Every node can have its own behaviour when a token arrives over an incoming transition.  Nodes can stop passing the token, in which case the node behaves like a state.  The node can pass the incoming token over a leaving transition.  Nodes can also create child-tokens of the incoming token and pass those over one of its leaving transitions. 

     

    A tree of tokens

    At process execution, each path of execution in a process instance is represented by a token.  Each process instance starts with a root token.  Nodes (e.g. fork) can create child tokens of the arriving token.  This implies that the complete state of a process instance is represented as a tree of tokens.