Page 1 sur 1

Java et les messages d'un diagramme de séquences

MessagePublié: Mer 16 Déc 2009, 20:23
par Hervé
J'ai une question à poser à cette communauté:
j'essaie par tous les moyens d'accéder, via du Java et l'API EA 7.5, aux messages contenus dans un diagramme de séquences quelconque sans succès.
En revanche, j'arrive très bien à en découdre avec les "control flow" d'un diagramme d'activité.

Je passe par la collection de DiagramLink à partir de l'objet Diagram.
(http://www.sparxsystems.com/uml_tool_gu ... agram.html)

Quelqu'un aurait-il déjà expérimenté cela et pourrait me dire si cela vient d'un manque/bug de l'API ou bien un mauvais usage de celle-ci ?
Merci par avance.

Re: Java et les messages d'un diagramme de séquences

MessagePublié: Jeu 17 Déc 2009, 11:21
par Yves
Bonjour Hervé,

Je n'ai jamais essayé d'accéder aux messages d'un diagramme de séquence par l'API mais en lisant la doc d'un DiagramLink je lis : "A DiagramLink is an object that holds display information about a connector between two elements in a specific diagram".
Est-ce que ce n'est pas plutôt aux connecteurs qu'il faudrait accéder ? En effet un connecteur est décrit par
"A Connector object represents the various kinds of connectors between UML elements."
De plus en faisant une requête SQL sur la table t_connector avec le type Connector_type = 'Sequence' on retrouve bien les messsages des diagrammes de séquence.

Tu peux le vérifier en créant un Custom Search de type SQL contenant par exemple la requête suivante :

SELECT Name FROM t_connector where connector_type = 'Sequence' and UPPER(Name) LIKE UPPER( '%<Search Term>%')

Je ne sais pas si cette requête fonctionne avec toutes les bases de données. Si tu as une erreur de syntaxe corrige en fonction de ta base (par défaut un EAP est en MS ACCESS).

Re: Java et les messages d'un diagramme de séquences

MessagePublié: Jeu 17 Déc 2009, 11:44
par Hervé
Merci pour cette réponse si rapide,

Je ne doute pas que l'information existe dans la BD d'EA car mes messages sont bien apparants dans mes diagrammes de séquences au sein d'EA et l'usage du générateur de doc RTF interne les retrouve très bien. C'est bien en utilisant l'API Java que je me confronte au pb. Et je ne peux pas faire autrement que de passer par l'API Java car ce besoin que j'expose ici est inclut dans un projet plus large.

De plus, mon besoin est bien de parcourir les messages contenus dans un diagramme afin de fournir une liste d'information les concernants. Et cela est possible uniquement en parcourant cette liste des "DiagramLinks" de l'objet "Diagram", qui, eux-même, sont associés à une instance de la classe "Connector" (cf l'hyperlien que j'avais fourni dans mon post précédent).

Il faudrait que j'essaye de faire la même chose en utilisant l'API VB ou .Net pour voir les disparités entre les API. Mais j'ai, hélas, peur que je n'arrive pas à mes fins en utilisant l'API Java :(

Re: Java et les messages d'un diagramme de séquences

MessagePublié: Jeu 17 Déc 2009, 14:40
par Yves
Je pense que dans EA le connecteur représente le message. Le problème est que l'API ne semble
pas forcément permettre l'accès à toutes les propriétés du message. J'ai cependant le sentiment que les paramètres spécifiques d'un message doivent s'obtenir dans la propriété CustomProperties d'un connecteur. Il y a aussi la propriété Properties qui doit contenir des propriétés spécifiques.

Re: Java et les messages d'un diagramme de séquences

MessagePublié: Jeu 17 Déc 2009, 15:34
par Hervé
Oui, tout à fait. Le connecteur représente le message dans le cas d'un diagramme de séquence. Néanmoins il faut savoir à quel diagramme se rattache ce message. C'est bien dans ce cas de figure qu'on se doit de passer par l'objet Diagram puis par sa propriété DiagramLinks, collection de DiagramLink, qui est la représentation du connecteur au sein du diagramme.

Si on souhaite connaître les informations relatives à un message, il faut effectivement puiser au sein des propriétés de l'objet Connector. Par exemple, si on souhaite connaître la contrainte sur un message il faut passer par ce chemin : connector.GetClientEnd().GetConstraint();
ou bien encore pour le numéro de séquence du message : connector.GetSequenceNo();

Il est, en revanche, à noter, que la condition d'exécution d'un message (le champ "condition") n'est pas, à ma connaissance, accessible par l'API Java. Encore une fois :(

Re: Java et les messages d'un diagramme de séquences

MessagePublié: Jeu 17 Déc 2009, 16:34
par Yves
Quand je regarde dans la table t_connector je vois que la condition associée à un message est stockée dans la colonne BTM_MID_LABEL. As tu quelque chose d'approchant dans l'API Java ?

Re: Java et les messages d'un diagramme de séquences

MessagePublié: Jeu 17 Déc 2009, 18:05
par Hervé
Pour ce qui concerne la condition sur un message : ce n'est pas évident de faire la correspondance, non. Je ne trouve rien d'approchant.

Pour en revenir à l'accès aux connecteurs d'un diagramme de séquence, on peut toujours passer par l'identifiant du diagramme auquel il est rattaché (c'est un attribut de l'objet Connector). Mais c'est pas vraiment fait dans une logique objet tout ça. Il faut alors passer par les connecteurs liés aux éléments du diagramme (ça on le sait car la fonctionnalité fonctionne depuis l'API) puis rattacher le tout au diagramme qu'on est en train de traiter (en prenant en compte que pour un connecteur on a un "client end" et un "supplier end" représentant la source et la destinateur du message.

Un brin compliqué pour ce que je cherchais à faire simplement.

Re: Java et les messages d'un diagramme de séquences

MessagePublié: Jeu 17 Déc 2009, 19:17
par Yves
En fait si ton besoin est d'afficher les messages d'un diagramme tu fais comme tu l'as indiqué :
- Tu récupères la collection de Diagram Links
- Pour chaque Diagram Link tu récupères son Connector
- Tu analyses les propriétés du connector et tu peux éventuellement accéder à ses objets dépendants

Si jamais tu n'arrives pas à récupérer toutes les propriétés qui t'intéressent au travers de l'API tu attaques la base en direct avec l'ID de l'objet.

Re: Java et les messages d'un diagramme de séquences

MessagePublié: Ven 18 Déc 2009, 10:30
par Hervé
Ok, merci bcp pour ton soutien. Ca m'a été très utile. Je me suis notament mis à utiliser la fonctionnalité de recherche par requête SQL, ce que je ne faisais pas du tout jusqu'à présent.