• Aucun résultat trouvé

2 Le SDL de base

2.7 Action

2.7.4 Sortie

Output-node :: Signal-identifier [Expression ]*

[Signal-destination]

Direct-via

Signal-destination = Expression | Process-identifier

Direct-via = (Signal-route-identifier | Channel-identifier )-set

La longueur de l'[Expression]* doit être la même que le nombre d'identificateurs Sort-reference-identifiers qui figure dans la définition Signal-definition indiquée par l'identificateur Signal-identifier.

Chaque Expression doit avoir la même sorte que l'identificateur Sorte-identifier-reference correspondant (par position) qui figure dans la définition Signal-definition.

Pour chaque sous-ensemble homogène pouvant exister (voir 3), il doit exister au moins un trajet de communication (soit implicite vers son type de processus propre, soit explicite utilisant des trajets de signal et éventuellement des canaux) vers l'environnement ou vers un ensemble d'instances de processus ou de service ayant un identificateur Signal-identifier dans son ensemble de signaux d'entrée valides et provenant de l'ensemble d'instances de processus ou de service où le noeud Output-node est utilisé.

Pour chaque identificateur Signal-route-identifier dans le trajet Direct-via, il est nécessaire que l'Origine dans (l'un des) trajets Signal-route-path(s) du trajet de signal désigne:

a) soit un ensemble d'instances de processus qui contient le processus qui interprète le noeud Output-node ou qui contient un service qui interprète le noeud Output-node; ou bien

b) un service à l'intérieur du processus d'origine qui interprète le noeud Output-node.

De plus, le trajet Signal-route-path doit inclure l’identificateur Signal-identifier dans son ensemble d’identificateurs Signal-identifiers. Si l’Origine désigne un ensemble d'instances de processus et le signal est envoyé à partir d'un service, il doit alors exister un trajet de signal à l'intérieur du processus capable d'acheminer le signal du service émetteur au trajet de signal mentionné dans le trajet Direct-via.

Pour chaque identificateur Channel-identifier dans le trajet Direct-via, il doit exister un ou deux trajets de signal et zéro ou plusieurs canaux de sorte que le canal soit atteignable via ce trajet avec l'identificateur Signal-identifier du processus ou du service et le trajet Channel-path dans la direction à partir du processus doit inclure l'identificateur Signal-identifier dans son ensemble d'identificateurs Signal-identifiers.

Grammaire textuelle concrète

<output> ::=

output <output body>

<output body> ::=

<signal identifier>

[<actual parameters>]{, <signal identifier> [<actual parameters>]}*

[to <destination>] [ via [all ] <via path> ]

<destination> ::=

<PId expression> | <process identifier> | this

<via path> ::=

<via path element> {, <via path element>}*

<via path element> ::=

<signal route identifier>

| <channel identifier>

| <gate identifier>

L’expression <PId expression> de l’identificateur <process identifier> représente la destination Signal-destination. Il existe une ambiguïté syntaxique entre <PId expression> et <process identifier>. Si la <destination> peut être interprétée comme une expression <PId expression> sans violer aucune condition statique, elle est interprétée comme une expression <PId expression> sinon comme un identificateur <process identifier>. Ce dernier doit désigner un processus atteignable à partir du processus d'origine.

La construction via représente le trajet Direct-via. Le trajet <via path> est considéré comme une liste d'éléments <via path element>.

via all ne peut être spécifié que lorsqu'il n'existe pas de Signal-destination. via all représente une multidestination comme l'explique le Modèle.

this ne peut être spécifié que dans une définition <process type definition> et dans des parties englobées par une définition <process type definition>.

Grammaire graphique concrète

<output area> ::=

<output symbol> contains <output body>

<output symbol> ::=

<plain output symbol>

| <internal output symbol>

<plain output symbol> ::=

Sémantique

L'énoncé d'un identificateur Process-identifier dans une destination destination désigne la destination Signal-destination comme toute instance existante de l'ensemble des instances de processus désigné par l'identificateur Process-identifier. S'il n'existe pas d'instances, le signal est écarté.

Si aucun identificateur route-identifier n'est spécifié dans le trajet Direct-via et qu'aucune destination Signal-destination n'est spécifiée, tout processus pour lequel il existe un trajet de communication peut recevoir le signal.

Les valeurs acheminées par l'instance du signal sont les valeurs des paramètres réels dans la sortie. Si une <expression>

dans <actual parameters> est omise, aucune valeur n'est acheminée avec la place correspondante de l'instance du signal, c'est-à-dire que la place correspondante est «non définie».

La valeur du PId du processus d'origine est également acheminée par l'instance du signal.

Si un syntype est spécifié dans la définition du signal et qu'une expression est spécifiée dans la sortie, la vérification d'intervalles définie en 5.3.1.9.1 s'applique à l'expression.

L'instance du signal est ensuite remise à un trajet de communication capable de l'acheminer. L'ensemble des trajets de communication capables d'acheminer l'instance du signal peut être restreint par la clause via à l'ensemble des trajets mentionnés dans le trajet Direct-via.

Si la destination Signal-destination est Expression, l'instance de signal est délivrée à l'instance de processus désignée par Expression. Si cette instance n'existe pas, ou si elle est non atteignable à partir du processus d'origine, l'instance du signal est écartée.

Si la destination Signal-expression est Process-identifier, l'instance du signal est délivrée à une instance arbitraire de l'ensemble d'instances de processus désignés par l'identificateur Process-identifier. S'il n'existe pas de telle instance, l'instance du signal est écartée.

A titre d'exemple, si la destination Signal-destination est spécifiée comme Null dans un noeud Output-node, l'instance du signal sera écartée lorsque le noeud Output-node est interprété.

Si aucune destination Signal-destination n'est spécifiée, le récepteur est sélectionné en deux étapes. Tout d'abord, le signal est envoyé à un ensemble d'instances de processus atteignable par le trajet de communication capable d'acheminer l'instance du signal. Cet ensemble d'instances est choisi arbitrairement. Ensuite, lorsque l'instance du signal arrive à l'extrémité du trajet de communication, elle est délivrée à une instance arbitraire de l'ensemble d'instances de processus.

S'il n'est pas possible de sélectionner une instance, l'instance du signal est écartée.

Il faut noter que si l'on spécifie le même identificateur Channel-identifier ou le même identificateur Signal-route-identifier dans le trajet Direct-via de deux noeuds Output-nodes, cela ne signifie pas automatiquement que les signaux sont mis dans une file d'attente à l'accès d'entrée dans le même ordre que celui où les noeuds Output-nodes sont interprétés. Toutefois, l'ordre est préservé si les deux signaux sont acheminés par des canaux à retard identiques, ou acheminés uniquement par des canaux sans retard ou encore si le processus ou service d'origine et le processus ou service de destination sont définis dans le même bloc.

Modèle

Si plusieurs paires (identificateur <signal identifier> paramètres <actual parameters>) se trouvent spécifiées dans un corps <output body>, on a une syntaxe dérivée pour spécifier la séquence des sorties <output> ou des zones <output area>, dans le même ordre spécifié dans le corps <output body> d'origine, chacune contenant une seule paire de (identificateur <signal identifier> paramètres <actual parameters>). La clause to et la clause via sont répétées dans chacune des sorties <output> ou zones <output area>.

L'énoncé via all constitue une syntaxe dérivée pour l'acheminement multidestinataire du signal via les trajets de communication mentionnés dans le trajet <via path>; les signaux sont envoyés dans le même ordre d'apparition des éléments <via path element>, et à raison d'un signal par élément <via path element>. La multidestination désigne une séquence de sorties du même signal. Les valeurs acheminées avec chaque instance de signal résultant ne sont évaluées qu'une seule fois avant l'interprétation de la première sortie. Des variables implicites sont ensuite utilisées pour mémoriser les valeurs à utiliser avec chaque sortie. Si un même élément <via path element> apparaît plusieurs fois dans un trajet <via path>, un signal est émis pour chaque apparition.

L'énoncé this constitue une syntaxe dérivée pour désigner en tant qu'identificateur <process identifier> l'identificateur implicite <process identifier> pour l'ensemble des instances auquel appartient le processus exécutant la sortie.

2.7.5 Décision