Modélisation UML & SysML

Expertise et articles Blog sur UML, SysML, et Enterprise Architect

jeudi, 18 mai 2017 17:19

Script EA pour désactiver la notation rectangulaire d'éléments Archimate

Écrit par
Évaluer cet article
(0 Votes)

archimate logo

EA User Group London 2017

J'ai suivi aujourd'hui une formation intéressante sur la modélisation Archimate 3 avec Enterprise Architect à l'EA User Group par l'un des partenaires de Sparx Systems en Grande Bretagne.

Lors de la définition des éléments "business role archimate" dans un diagramme métier, la notation rectangulaire des éléments devait être désactivée (celle-ci étant activée par défaut). EA ne permet pas de modifier la notation rectangulaire pour plusieurs éléments du diagramme; il a fallu lancer un clic droit sur chaque élément et sélectionner Advanced > Disable Rectangle Notation. Cette opération étant trop répétitive, la réalisation d'un script m'a paru appropriée dans ce contexte.

Remarque : le code du script est disponible à la fin de cet article.

Le diagramme métier Archimate suivant présente un exemple simple dans lequel la notation rectangulaire doit être désactivée :

sparx enterprise architect archimate 3 business diagram

Une fois le script installé, sélectionner les éléments à modifier, clic droit > Scripts > Disable Rectangle Notation.

Résultat : 

archimate business roles actor rectangle disabled

Script diagramme EA : Disable Rectangle Notation diagram

Le code suivant doit être copé dans un nouveau script, sous un groupe de type "Diagram Group" :

option explicit
!INC Local Scripts.EAConstants-VBScript
' Script Name: Disable Rectangle Notation
' Author: Guillaume FINANCE
' Purpose: disable the rectangle notation on the selected objects in a diagram
' Date: 18/05/2017
sub OnDiagramScript()
' Get a reference to the current diagram
dim currentDiagram as EA.Diagram
set currentDiagram = Repository.GetCurrentDiagram()
if not currentDiagram is nothing then
' Get a reference to any selected connector/objects
dim selectedObjects as EA.Collection
set selectedObjects = currentDiagram.SelectedObjects
dim currentDiagramObject as EA.DiagramObject
dim style
dim i
if selectedObjects.Count > 0 then
' One or more diagram objects are selected
for i = 0 to selectedObjects.Count - 1
set currentDiagramObject = selectedObjects.GetAt( i )
currentDiagramObject.Style = Replace(currentDiagramObject.Style , "UCRect=1;", "UCRect=0;")
currentDiagramObject.Update()
next
currentDiagram.Update()
else
Session.Prompt "This script requires to select objects to update", promptOK
end if
else
Session.Prompt "This script requires a diagram to be visible", promptOK
end if
end sub
OnDiagramScripts

Remarque : le code de la version opposée (Enable Rectangle Notation) est identique à l'exception de la ligne suivante :

 currentDiagramObject.Style = Replace(currentDiagramObject.Style , "UCRect=0;", "UCRect=1;")