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