create (Z.100)

Concrete graphical grammar

<create request area> ::=
<create request symbol> contains <create body>

<create request symbol> ::=

<create body> ::=
{ <process identifier> | this } [<actual parameters>]

<process interaction area> ::=
{ <process area>
| <create line area>
| <signal route definition area>}+

<create line area> ::=
<create line symbol>
is connected to {<process area> <process area>}

<create line symbol> ::=

Semantics

The create action causes the creation of a process instance in the same block. The created process parent has the same PId value as the creating process self. The created process self and the creating process offspring expressions both have the same unique, new PId value.

When a process instance is created, it is given an empty input port, variables are created and the actual parameter expressions are interpreted in the order given, and assigned to the corresponding formal parameters. Then the process starts by interpreting the start in the process graph.

The created process then executes asynchronously and in parallel with other processes.

If an attempt is made to create more process instances than specified by the maximum number of instances in the process definition, then no new instance is created, the offspring expression of the creating process has the value Null and interpretation continues.

If an <expression> in <actual parameters> is omitted, the corresponding formal parameter has no value associated, i.e. it is "undefined".

The arrowhead on the <create line symbol> indicates the <process area> of a process upon which a create action is performed. <create line symbols are optional, but if used then there must in the process at the originating end of the <create line symbol> be a create request for the process at the arrowhead end of the <create line symbol>.

Model

Stating this is derived syntax denoting the implicit <process identifier> for the set of instances of which the process executing the create is a member.