Pilotage de PowerAMC à l'aide de scripts

Lorsque vous manipulez des modèles de grande taille ou plusieurs modèles à la fois, il peut être fastidieux d'effectuer des tâches répétitives, telles que modifier des objets à l'aide de règles globales, importer ou générer des nouveaux formats ou encore vérifier des modèles. De telles opérations peuvent être automatisées à l'aide de scripts.

Vous pouvez lire et modifier n'importe quel objet PowerAMC en utilisant un langage de script tel que Java, VBScript, C#, ou de nombreux autres langages. Dans ce chapitre, nous nous focalisons principalement sur la rédaction de code VBScript destiné à être exécuté dans la boîte de dialogue Edition/Exécution d'un script, mais vous pouvez également appeler des compléments à partir des menus de PowerAMC (voir Lancement des scripts et de compléments depuis les menus) ou scripter l'application PowerAMC via OLE automation (voir OLE Automation et compléments).

Le script suivant illustre la syntaxe de base de VBScript appliquée à la manipulation des modèles et objets PowerAMC, ce qui inclut :
' Ceci est un commentaire VBScript. 
Dim var ' Déclaration d'une variable locale
var = 1 ' Affectation d'une valeur pour un type simple
Set var = ActiveModel ' Affectation d'une valeur pour un objet. ActiveModel est une propriété globale PowerAMC
If not var is Nothing Then ' Condition sur un objet, testant pour savoir s'il est 'null'
   Dim objt ' Déclaration d'une autre variable locale
   For Each objt In ActiveModel.Children ' Boucle sur la collection d'objets enfant
      DescribeObject objt ' Appel de procédure avec objt comme paramètre (sans parenthèses). La procédure est définie ci-dessous.      
   Next
Else
   output "Il n'y a pas de modèle actif" ' Output est une procédure PowerAMC qui écrit du texte dans la fenêtre Résultats
End If

' Ceci est une procédure - un méthode qui ne renvoie pas de valeur
Sub DescribeObject(objt)
   Dim desc ' Déclaration de variable dans la procédure
   desc = ComputeObjectLabel(objt) ' Appel de fonction avec objt comme paramètre (avec parenthèses). La fonction est définie ci-dessous. 
                                   ' On récupère la valeur renvoyée par la fonction dans la variable desc
   output desc ' Affiche la description de l'objet dans le résultat
End Sub

' Ceci est une fonction - une méthode qui renvoie une valeur
Function ComputeObjectLabel(objt)
   Dim label ' Déclaration d'une variable locale pour stocker le libellé de l'objet
   label = "" ' Initialisation de la variable de libellé avec une valeur par défaut
   If objt is nothing then
      label = "Aucun objet"
   ElseIf objt.IsShortcut() then ' IsShortcut est une fonction PowerAMC disponible sur les objets
      label = objt.Name & " (shortcut)" ' Concaténation de deux chaînes
   Else
      On Error Goto 0 ' Désactive l'abandon d'exécution de script sur erreur
      label = objt.Name ' Assigne la propriété Nom de l'objet à la variable locale
      On Error Resume Next ' Réactive l'exécution de script en cas d'erreur
   End If
   ComputeObjectLabel = label ' La valeur est renvoyée en affectant une variable implicite avec le même nom que la fonction
End Function
Remarque : VBScript peut également être utilisé pour créer des vérifications personnalisées, des gestionnaires d'événements, des transformations et des méthodes dans un fichier d'extension (voir Fichiers d'extension) et être incorporé dans ou appelé depuis de templates de GTL (voir Macro .execute_vbscript et Macro .vbscript).
Les exemples dans ce chapitre sont destinés à introduire les concepts et techniques de base permettant de contrôler PowerAMC à l'aide de script. Pour obtenir une documentation complète sur le métamodèle PowerAMC, sélectionnez Aide > Aide sur les objets du métamodèle. Pour une documentation complète sur VBScript, voir le site Microsoft MSDN.