IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Rational Discussion :

[SCRIPT] comment accéder aux détails d'un State/Activity Model


Sujet :

Rational

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 10
    Points
    10
    Par défaut [SCRIPT] comment accéder aux détails d'un State/Activity Model
    bonjour ^_^
    j'utilise depuis quelques semaines Rational Rose, j'ai beau avoir parcourue les sites et recherchée sur le web je n'ai toujours pas trouvé de solution à ce problème :

    j'aimerais pouvoir accéder en lecture/écriture à la documentation (une des propriétés du modèle) d'un State/Activity Model

    Par contre je n'ai aucun problème au niveau de la lecture/ écriture en ce qui concerne les cas d'utilisation, Classes, attrituts, opérations et modules

    Pourriez vous m'aider s'il vous plait ?

    merci d'avance.

    '-------------------------------------------------------------------
    ' voici le code que j'utilise ^_^
    '-------------------------------------------------------------------
    Sub Main

    ' Déclarations des variables usuelles
    Dim theUsecases As UseCaseCollection
    Dim theUseCase As UseCase
    Dim theClasses As ClassCollection
    Dim theModules As ModuleCollection
    Dim theModule As Module
    Dim theModel As Model
    Dim theClass As Class
    Dim theAtts As AttributeCollection
    Dim theAtt As Attribute
    Dim theOps As OperationCollection
    Dim theOp As Operation

    'get current model and prepare for uc, class, module search
    Set theModel = RoseApp.CurrentModel
    Set theUseCases = theModel.GetAllUseCases
    Set theClasses = theModel.GetAllClasses
    Set theModules = theModel.GetAllModules
    Set theSubSys = theModel.RootSubSystem

    ' write in use case documentation
    For i = 1 To theUseCases.Count
    Set theUseCase = theUseCases.GetAt(i)
    theUseCase.Documentation = "UseCase doc"
    Next i

    ' write in class documentation
    For j = 1 To theClasses.Count
    Set theClass = theClasses.GetAt(j)
    theClass.Documentation = "class doc"
    Next j

    ' write in attribute documentation
    For k = 1 To theClasses.Count
    Set theClass = theClasses.GetAt(k)
    Set theAtts = theClass.Attributes
    For l = 1 To theAtts.Count
    Set theAtt = theAtts.GetAt(l)
    theAtt.Documentation = "att doc"
    Next l
    Next k

    ' write in operation documentation
    For m = 1 To theClasses.Count
    Set theClass = theClasses.GetAt(m)
    Set theOps = theClass.Operations
    For n = 1 To theOps.Count
    Set theOp = theOps.GetAt(n)
    theOp.Documentation = "Op doc"
    Next n
    Next m

    ' write in component documentation
    For o = 1 To theModules.Count
    Set theModule = theModules.GetAt(o)
    theModule.Documentation = "Module/Component doc"
    Next o

    End Sub

  2. #2
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    Tout d'abord, regardes dans Rose ici : Help / Contents & Index / Rational Rose Extensibility Interface
    Tu y trouveras toute l'API.
    Sinon, sur une classe (Class), tu as la propriété StateMachine.
    Dans une StateMachine, tu as par exemple les propriétés suivantes :
    • Activities
    • States
    • ObjectInstances
    • SwimLanes

    Pour un State, tu as les méthodes :
    GetActions Retrieves actions
    GetAllSubActivities Recursively retrieves all subactivities
    GetAllSubDecisions Recursively retrieves all subdecisions
    GetAllSubStates Recursively retrieves all substates
    GetAllSubSynchronizations Recursively retrieves all subsynchronizations
    GetDoActions Retrieves all do actions
    GetEntryActions Retrieves all entry actions
    GetExitActions Retrieves all exit actions
    GetStateMachines Retrieves all state machines
    GetUserDefinedEvents Retrieves all user-defined events
    et plein d'autres trucs...

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    je te remercie ego

    (Ce que je cherche à faire c'est lire/modifier les documentations liés à chaque élement UML du document rose)

    je dois pas être douée j'arrive pas à récupérer ni les states ni les activities... dans le help j'ai pourtant bien lu qu'il s'agissait de collections et j'ai donc déclaré les variables dans ce sens...

    '--------------------------------------------------
    sub main
    Dim theStates As StateCollection
    Dim theActivities As ActivityCollection
    Set theModel = RoseApp.CurrentModel

    For j = 1 To theClasses.Count
    Set theClass = theClasses.GetAt(j)
    Set theStatemachine = theClass.StateMachine
    Set theActivities = theStatemachine.Activities ' ne fonctionne pas o_O
    Set theStates = theStatemachine.States ' ne fonctionne pas o_O
    Next j
    end sub
    '--------------------------------------------------------------------------


    ... je veux pas non plus abuser de votre aide

  4. #4
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    ça veut dire quoi ne marche pas ?
    C'est bien comme cela qu'il faut faire !?

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    désolé j'avais plus internet du coup j'ai pas pu te répondre de suite
    quand je lance le script (appui sur la flèche verte) il ne me met aucune erreur au lancement et quand j'arrive à la fonction qui contient les lignes de code concernant la statemachine -comme celles que j'ai écrites précedemment- il me fais une erreur :



    j'ai testé pour les states activities swinlanes et objectinstance et j'ai toujours la même erreur...

    ndt:j'utilise la version 2003 de rational rose
    ************************************************************
    j'arrive maintenant à voir si j'ai des machine à état dans les classes et use case :

    Sub main

    Dim theStateMachine As StateMachine
    Dim theStates As StateCollection
    Dim theState As State
    Dim theActivities As ActivityCollection
    Dim theActivity As Activity

    ViewPort.Clear
    ViewPort.Open


    For j = 1 To theClasses.Count
    Set theClass = theClasses.GetAt(j)
    Set theStateMachine = theClass.StateMachine

    If theStateMachine Is Nothing Then
    'theClass.CreateStateMachine
    Print "pas de machine a état"
    Else
    Print "The state machine exists"
    Print theStateMachine.Name

    Set theStates = theStatemachine.States
    For z = 1 To theStates.Count
    Set theState = theStates.GetAt(z)
    'Print "state ok"
    Print theState.Name
    Next z
    Set theActivities = theStatemachine.Activities
    For x = 1 To theActivities.Count
    Set theActivity = theActivities.GetAt(x)
    'Print "activity ok"
    Print theActivity.Name
    Next x
    End If
    next j
    end sub

    Mon dernier soucis reste que si je créée une machine à état directement dans le répertoire racine "UseCaseView" je sais pas comment la retrouver

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    voila où j'en suis actuellement :



    en fait il s'agit de la première étape de mon projet car ensuite je vais devoir interfacer rose avec une base ORACLE et je veux être sure qu'il est possible de lire et d'écrire à des endroits spécifiques du model notamment sur la documentation de chacun des élements.
    Mais pour l'instant je bute toujours sur la récupération d'un stateshart à la racine des packages...help me (cf."lilou dallas multipass" - le 5e élément -)

  7. #7
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    regardes peut être la méthode FindItems sur la classe Model en donnant le nom de ta statemachine qui est sous la use-case view.
    J'ai essayé et ça marche !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub Main
     Dim items As ItemCollection
     Dim it As RoseItem
     Dim sm As StateMachine
     Set items = RoseApp.CurrentModel.FindItems("toto")
     Set it = items.GetAt(1)
     Set sm  = it.TypeCast(sm)
     MsgBox sm.Documentation
    End Sub

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    merci ego

    le souci c'est que le script doit fonctionner pour n'importe quel projet et donc il ne connaitra pas les noms des stateshart ^_^
    ...encore un truc que j'avais pas dit au début désolé

  9. #9
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    Et bien, effectivement, on ne peut pas accéder à la StateMachine d'une Category ou d'un modèle comme cela. On ne peut le faire que via le FindItems avec le nom ou l'uid ou encore en récupérant les items sélectionnés.

    La "solution" étant maintenant de ne pas autoriser la création de statemachine ailleurs que sous une classe. Mais est-ce possible ?

    Ceci dit, il y a peut être une possibilité via l'utilisation des objets COM et donc l'écriture d'un programme en VB par exemple. Je peux regarder si dans l'outil SoDA de reporting de Rational on a accès au StateMachines des Category ou Operation (car on peut faire cela sous Rose). Si c'est le cas, c'est que l'API COM le permet.

    Veux-tu que je regarde cela ?

  10. #10
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Non ce ne sera pas utile merci de ton offre ^_^

    la première étape de mon projet visait à établir si l'on pouvait lire ou écrire les documentations des éléments UML dans un document ROSE en passant par le script avec ton aide j'ai pu en attester (même si on n'avait pas accès au state) et je t'en remercie.

    La seconde partie du projet c'est de savoir si le menu contextuel de la souris est personalisable (si ce n'est pas possible j'ai trouvé la solution avec le menu principal de ROSE):

    au fur et à mesure de la modélisation d'un projet ROSE
    l'utilisateur cliquera sur un élément (classe, UC, ...) et en cliquant sur le bouton droit de la souris on choisira un item (comme le delete, rename) faisant office de lien vers un script affichant une boite de dialogue

    Cette boite de dialogue sera un formulaire permettant de spécifier la nature et les propriétés de l'information à ajouter - et dans la documentation et dans la base ORACLE - la nature et les propriétés permettront de formaliser un identifiant unique en relation avec les identifiants existant sur la base ORACLE

    donc mon objectif à présent c'est de personnaliser le menu de la souris si c'est possible bien entendu ^_^
    je m'y attèle de ce pas...

  11. #11
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    Si tu me donnes une adresse email perso, je peux t'envoyer un cours sur l'extension de Rose où l'on parle entre autre des menus contextuels.

  12. #12
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci les doc sur l'extensions ROSE concernant les menus contextuels
    Mais faut il forcément faire un Add-in pour pouvoir ajouter un item dans le menu de la souris ? Est possible de le faire autrement comme lorsqu'on ajoute un item dans le menu principal de ROSE ?
    J'essaie de trouver une solution moins complexe ^_^ mais c'est pas gagné lol

  13. #13
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Je suis sur l'aide de Rational Rose
    en particulier sur l'exemple : "Sample Rational Rose Script Shortcut Menu Code"
    le hic c'est qu'il y a 3 p'tits points qui m'agaçent... :

    Set myAddIn = ... 'Get the add-in to which you want to add
    'shortcut menu items.


    je sais pas comment faire un add-in a chaque fois les exemples sont par morceaux incomplets... y'a des termites dans leur bibliothèque d'aide

    - et y'en a plus que 3 des ptits point dans l'autre exemple ("Sample Shortcut Menu Implementation Code") -

    tu connaitrais pas un exemple concret et complet de mise en oeuvre d'add-in, par hasard...

  14. #14
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    je vais regarder dans les TPs du cours envoyé

  15. #15
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    bon j'ai mis de coté cette partie du projet
    je préfère avancer sur d'autres parties
    mais si jamais tu trouves as une idée je suis toujours intéressée !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. COMMENT accès en lecture seul aux logs sqlserver 2008
    Par Rafter dans le forum Administration
    Réponses: 4
    Dernier message: 15/07/2013, 23h58
  2. comment ajouter une langue aux outils de ms office?
    Par redabadache3 dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 20/11/2005, 19h30
  3. [Scripts] Comment avoir les boutons style XP
    Par Didier69 dans le forum Général Dotnet
    Réponses: 26
    Dernier message: 18/05/2005, 15h28
  4. [JS][XP] Le SP2 bloque mes scripts, comment eviter sa?
    Par Devil666 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/04/2005, 12h29
  5. Réponses: 3
    Dernier message: 25/07/2002, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo