• Aucun résultat trouvé

2 Le SDL de base

2.6 Comportement

2.6.8 Transition

Grammaire abstraite

Transition :: Graph-node *

(Terminator | Decision-node ) Graph-node :: Task-node |

Output-node |

Create-request-node |

Call-node |

Set-node |

Reset-node

Terminator :: Nextstate-node |

Stop-node |

Return-node

Grammaire textuelle concrète

<transition> ::=

{<transition string> [<terminator statement>] }

| <terminator statement>

<transition string> ::=

{<action statement>}+

<action statement> ::=

[<label>] <action> <end>

<action> ::=

<task>

| <output>

| <create request>

| <decision>

| <transition option>

| <set>

| <reset>

| <export>

| <procedure call>

| <remote procedure call>

<terminator statement> ::=

[<label>] <terminator> <end>

<terminator> ::=

<nextstate>

| <join>

| <stop>

| <return>

Lorsque le terminateur <terminator> d'une <transition> est omis, la dernière action dans la <transition> doit contenir une décision <decision> terminale (voir 2.7.5) ou une option <transition option> terminale, sauf pour toutes les <transition>

contenues dans les décisions <decision> et les options <transition option>.

Grammaire graphique concrète

<transition area> ::=

[<transition string area>] is followed by { <state area>

| <nextstate area>

| <decision area>

| <stop symbol>

| <merge area>

| <out-connector area>

| <return area>

| <transition option area> }

<transition string area> ::=

{ <task area>

| <output area>

| <set area>

| <reset area>

| <export area>

| <create request area>

| <procedure call area>

| <remote procedure call area>}

[is followed by <transition string area>]

Une transition consiste en une séquence d'actions qui doivent être effectuées par le processus.

La zone <transition area> correspond à Transition et la zone <transition string area> correspond au Graph-node*.

Sémantique

Une transition réalise une séquence d'actions. Pendant la transition, les données du processus peuvent être manipulées et des signaux peuvent être envoyés. La transition s'arrêtera lorsque le processus entrera dans un état, ou lors d'un arrêt ou d'un retour ou d'un transfert de contrôle à une autre transition.

2.6.8.2 Terminateur de transition 2.6.8.2.1 Etat suivant

Grammaire abstraite

Nextstate-node :: State-name

Le nom State-name spécifié dans un état suivant doit porter le même nom que l'état à l'intérieur du même graphe Process-graph, Service-graph ou Procedure-graph.

Grammaire textuelle concrète

<nextstate>::=

nextstate <nextstate body>

<nextstate body> ::=

{<state name> | <dash nextstate>}

Grammaire graphique concrète

<nextstate area> ::=

<state symbol> contains <nextstate body>

Sémantique

Un état suivant représente un terminateur d'une transition. Il spécifie l'état qu'aura le processus, le service ou la procédure lors de l'achèvement d'une transition.

2.6.8.2.2 Branchement

Un branchement modifie le flot dans un corps <body> en exprimant que l'instruction <action statement> suivante qui doit être interprétée est celle qui contient le même nom <connector name>.

Grammaire textuelle concrète

<join> ::=

join <connector name>

On doit avoir exactement un seul nom <connector name> correspondant à un branchement <join> à l'intérieur du même corps <body>. La règle concernant le corps <process type body> est énoncée en 6.3.1.

Grammaire graphique concrète

<merge area> ::=

<merge symbol> is connected to <flow line symbol>

<merge symbol> ::=

<flow line symbol>

<flow line symbol> ::=

___________

<out-connector area> ::=

<out-connector symbol> contains <connector name>

<out-connector symbol> ::=

<in-connector symbol>

Pour chaque zone <out-connector area> d’une zone <process graph area>, on doit avoir une seule et unique zone

<in-connector area> dans cette zone <process graph area>. La règle concernant la zone <process type graph area> est énoncée en 6.3.1.

Une zone <out-connector area> correspond à un branchement <join> dans la grammaire textuelle concrète. Si une zone

<merge area> est incluse dans une zone <transition area>, elle est équivalente à la spécification d'une zone

<out-connector area> dans la zone <transition area> qui contient un unique nom <connector name> et à l'adjonction d'une zone <in-connector area> avec le même nom <connector name> au symbole <flow line symbol> dans la zone

<merge area>.

Sémantique

Dans la syntaxe abstraite, un branchement <join> ou une zone <out-connector area> provient de la chaîne <transition string> dans laquelle la première instruction <action statement> ou zone d'action a le même nom <connector name>

associé.

2.6.8.2.3 Arrêt Grammaire abstraite

Stop-node :: ( )

Un noeud Stop-node ne doit pas être situé à l'intérieur d'un graphe Procedure-graph.

Grammaire textuelle concrète

<stop> ::=

stop

Grammaire graphique concrète

<stop symbol> ::=

Sémantique

L'arrêt provoque l'arrêt immédiat du processus ou du service qui l'interprète.

Dans le cas d'un processus, cela signifie que les signaux bloqués à l'accès d'entrée sont supprimés et que les variables et les temporisateurs créés pour le processus, l'accès d'entrée et le processus cessent d'exister.

Dans le cas d'un service, cela signifie que les signaux du service seront écartés jusqu'à ce que l'instance de processus cesse d'exister.

2.6.8.2.4 Retour Grammaire abstraite

Return-node :: ( )

Un noeud Return-node doit être situé à l'intérieur d'un graphe Procedure-graph.

Grammaire textuelle concrète

<return> ::=

return [<expression>]

Grammaire graphique concrète

<return area> ::=

<return symbol>

[is associated with <expression>]

<return symbol> ::=

L'<expression> dans un retour <return> ou dans une zone <return area> est permise si et seulement si la portée qui l'englobe est un opérateur ou une procédure ayant un résultat <procedure result>.

Sémantique

Un noeud Return-node est interprété de la manière suivante:

a) toutes les variables créées par l'interprétation du noeud Procedure-start-node cesseront d'exister;

b) l'interprétation du graphe Procedure-graph est terminée et l'instance de procédure cesse d'exister;

c) désormais, l'interprétation du processus, du service ou de la procédure appelant continue au noeud suivant l'appel.

Modèle

Le modèle de retour avec une expression est défini en 2.4.6.

2.7 Action