process diagram (Z.100)

Concrete graphical grammar

<process diagram> ::=
<frame symbol>
contains {< process heading >
{ {<process text area>}*
{<macro diagram> }*
{<type in process area>}*
{<process graph area> | <service interaction area> } }set }

[is associated with {<signal route identifiers>}*]

The <signal route identifiers> identify external signal routes connected to signal routes in the <process diagram>. It is placed outside the <frame symbol> close to the endpoint of the signal routes at the <frame symbol>.

<process text area> ::=
<text symbol> contains {
[<valid input signal set>]
{<signal definition>
| < signal list definition >
| < variable definition >
| <view definition>
| <imported variable specification>
| <imported procedure specification>
| <remote procedure definition>
| <remote variable definition>
| <data definition>
| <macro definition>
| <timer definition>
| <select definition> }* }

<process graph area> ::=
< start area > { <state area> |<in-connector area> }*

<service interaction area> ::=
{ <service area>
| < signal route definition area > }+

<service area> ::=
< graphical service reference >
| < service diagram >
| <graphical typebased service definition>
| <existing typebased service definition>


The following is applicable when the process definition contains a process graph. The additional semantics for the case when the process definition contains service-definitions are treated in service .

A process definition defines a set of processes. Several instances of the same process set may exist at the same time and execute asynchronously and in parallel with each other and with instances of other process sets in the system.

A process instance is a communicating extended finite state machine performing a certain sequence of actions, denoted as a transition, according to the reception of a given signal, whenever it is in a state. The completion of the transition results in the process instance waiting in another state, which is not necessarily different from the first one.

The concept of finite state machine has been extended in the following respects:

a) Variables and branching: the state resulting after a transition, other than the signal originating the transition, may be affected by decisions taken upon variables known to the process.

b) Spontaneous transition: it is possible to activate a transition spontaneously without the reception of any signal. This activation is non-deterministic, and thus makes the state to which it is attached unstable.

c) Save: with the save construct, the consumption order of signals may be specified to be different from their arrival order in the queue.

When a system is created, the initial processes are created in arbitrary order. The signal communication between the processes commences only when the initial processes have all been created. The formal parameters of these initial processes have no associated values i.e. they are "undefined".

Process instances exist from the time that a system is created or they can be created by create request actions of processes being interpreted; their interpretation start when their start action is interpreted; they may cease to exist by performing stop actions.

Signals received by process instances are denoted as input signals, and signals sent from process instances are denoted as output signals.

Signals may be consumed by a process instance only when it is in a state. The complete valid input signal set is the union of the set of signals in all signal routes leading to the set of instances denoted by the process definition, the <valid input signal set>, the implicit input signals introduced by the additional concepts and the timer signals.

Exactly one input port is associated with each process instance. When an input signal arrives at the process, it is put into the input port of the process instance.

The process is either waiting in a state or active, performing a transition. For each state, there is a save signal set (see also §2.6.5). When waiting in a state, the first input signal whose identifier is not in the save signal set is taken from the queue and consumed by the process. A transition may also be initiated as a spontaneous transition independent of any signals being present in the queue.

The input port may retain any number of input signals, so that several input signals are queued for the process instance. The set of retained signals are ordered in the queue according to their arrival time. If two or more signals arrive on different paths "simultaneously", they are arbitrarily ordered.

When the process is created, it is given an empty input port, and local variables are created.

The formal parameters are variables which are created either when the system is created (but no actual parameters are passed to them and therefore they are "undefined") or when the process instance is dynamically created.

To all process instances four expressions yielding a PId value may be used: self, parent, offspring and sender. They give a result for:

a) the process instance (self)

b) the creating process instance (parent)

c) the most recent process instance created by the process instance (offspring)

d) the process instance from which the last input signal has been consumed (sender)

self, parent, offspring and sender can be used in expressions inside the process instances.

For all process instances present at system initialization, the predefined parent expression always has the value Null.

For all newly created process instances the predefined expressions, sender and offspring have the value Null.