Les programmes VBScript et les programmes OLE Automation sont très similaires. Vous pouvez aisément créer des programmes VB ou VBA, si vous savez utiliser VBScript. Cependant il existe quelques différences. L'exemple de programme suivant révèle ce qui différencie OLE Automation de VBScript.
Le programme VBScript suivant vous permet de dénombrer les classes définies dans un MOO et d'afficher leur nombre dans la fenêtre Résultats de PowerAMC, puis de créer un autre MOO et d'afficher son nom dans cette même fenêtre.
Pour cela, les étapes suivantes sont nécessaires :
'* Purpose: This script displays the number of classes defined in an OOM in the output window. Option Explicit ' Main function ' Get the current active model Dim model Set model = ActiveModel If model Is Nothing Then MsgBox "There is no current model." ElsIf Not Model.IsKindOf(PdOOM.cls_Model) Then MsgBox "The current model is not an OOM model." Else ' Display the number of classes Dim nbClass nbClass = model.Classes.Count Output "The model '" + model.Name + "' contains " + CStr(nbClass) + " classes." ' Create a new OOM Dim model2 set model2 = CreateModel(PdOOM.cls_Model) If Not model2 Is Nothing Then ' Copy the author name model2.author = model.author ' Display a message in the output window Output "Successfully created the model '" + model2.Name + "'." Else MsgBox "Cannot create an OOM." End If End If
Pour faire de même avec un programme OLE Automation, vous devez le modifier de la manière suivante :
Ajouter la définition de l'application PowerAMC.
Invoquer la fonction CreateObject pour créer une instance de l'objet PowerAMC Application.
Préfixer toutes les fonctions globales (ActiveModel, Output, CreateModel) par l'objet PowerAMC Application.
Libérer l'objet PowerAMC Application.
Spécifier des types pour les variables "model" and "model2".
'* Purpose: This script displays the number of classes defined in an OOM in the output window. Option Explicit ' Main function Sub VBTest() ' Defined the PowerDesigner Application object Dim PD As PdCommon.Application ' Get the PowerDesigner Application object Set PD = CreateObject("PowerDesigner.Application") ' Get the current active model Dim model As PdCommon.BaseModel Set model = PD.ActiveModel If model Is Nothing Then MsgBox "There is no current model." ElsIf Not model.IsKindOf(PdOOM.cls_Model) Then MsgBox "The current model is not an OOM model." Else ' Display the number of classes Dim nbClass nbClass = Model.Classes.Count PD.Output "The model '" + model.Name + "' contains " + CStr(nbClass) + " classes." ' Create a new OOM Dim model2 As PdOOM.Class Set model2 = PD.CreateModel(PdOOM.cls_Model) If Not model2 Is Nothing Then ' Copy the author name model2.Author = Model.Author ' Display a message in the output window PD.Output "Successfully created the model '" + model2.Name + "'." Else MsgBox "Cannot create an OOM." End If End If ' Release the PowerDesigner Application object Set PD = Nothing End Sub