Cet article à pour objectif de vous démontrez trois (3) façons de procéder afin de conserver des données globalement dans PowerAMC afin que l’on puisse utiliser ces données d’un script VB à l’autre.
La première méthode consiste à sauvegarder les données dans un dictionnaire de données à l’aide d’identifiant formé de clefs unique. À titre d’exemple le script ci-dessous créer la donnée « 2 » identifié par la clef « ‘Ma clef d’identification et liste toute les clefs et données contenu dans le dictionnaire de données global courant.
Compatible avec PowerDesigner/PowerAMC 16.5
'Propriétés globale 'UserDataDictionary As Object 'Cette propriété retourne une chaîne en provenance d'un dictionnaire de données. Cette chaine est conservée globalement 'et n'est pas persisté. Chaque chaine est associée à une clé unique. 'Exemple : Option Explicit ' Créer et assigner ma clef UserDataDictionary.Add "Ma clef d'identification", 1 ' Assigne mes données ou modifie mes données existantes If UserDataDictionary.Exists("Ma clef d'identification") Then UserDataDictionary("Ma clef d'identification") = 2 End If ' NOTE: Une donnée doit être assignée à une clef (.Add) avant qu'elle ' puisse être accédée avec la syntaxe UserDataDictionary(clef). ' Il n'est pas recommandé d'énuméré toute les données contenu dans le ' dictionnaire de données compte tenu que d'autres scripts on ' peut-être crées des données pour leurs propres besoins. Output "Nous avons trouvé " & UserDataDictionary.Count & " donnée(s) dans le dictionnaire" Dim key For Each key In UserDataDictionary.Keys Output " Clef => " & key & " Donnée => " & CStr(UserDataDictionary(key)) Next ' Énuméré les valeurs Dim value, I I = 0 For Each value In UserDataDictionary I = I + 1 Output "[Enregistrement " & CStr(I) & "]: Donnée => " & CStr(value) Next ' Supression des données de la clef sélectionnée If UserDataDictionary.Exists("Ma clef d'identification") Then UserDataDictionary.Remove "Ma clef d'identification" End If If UserDataDictionary.Exists("Ma clef d'identification") Then Output "Hum! les données auraient dû être supprimées!" Else Output "La suppression des données à été complétée" End If
Le code ci-dessous permet de supprimer toute les données contenu dans le dictionnaire de données de la session courante ayant cours.
' Suppression de toute les données ' AVERTISSEMENT : Cette suppression pourrait rendre inopérant les autres scripts en cours qui utilisent le dictionnaire de données UserDataDictionary.RemoveAll
Il existe deux autres façon de procéder. Vous pouvez :
- définir une variable globale (dim) dans un fichier xem ou xdb afin d’utiliser cette variable lors de l’exécution subséquente de scripts VB ;
- créer (à l’aide d’un script VB) un objet “PdCommon/ExtendedObject” afin de conserver l’information au sein de tous les processus qui seront exécuté par vos multiples scripts VB.
Dim Modl1, Obj1, Obj2 ' Création d'un modèle de type Libre Set Modl1 = CreateModel(PdFrm.Cls_Model) ' Création d'un objet étendu Set Obj1 = Modl1.ExtendedObjects.CreateNew() ' Assignation de son Nom et de son Code obj1.SetNameAndCode "Identification de l'object", "ObjectID" ' Création d'un objet étendu Set Obj2 = Modl1.ExtendedObjects.CreateNew() ' Assignation de son Nom et de son Code obj2.SetNameAndCode "Global Unique Identifier Definition", "GUID"
A noter que si vous ne désirez pas conserver ces données dans le modèle lors de sa sauvegarde. Vous pouvez supprimer les objets étendu à l’aide de la méthode ci-dessous.
' Suppression de l'objet ObjectID Modl1.ExtendedObjects.Remove(obj1) ' Suppression de l'objet GUID Modl1.ExtendedObjects.Remove(obj2)