L'action Script permet à un utilisateur de cadre d'architecture de générer un script dans le noeud ou dans la cellule. Vous pouvez utiliser le script afin de créer un document de projet et l'attacher au noeud ou à la cellule.
Dans l'exemple suivant, vous allez spécifier une action dans un noeud de diagramme de cadre d'architecture qui permettra à l'utilisateur d'exécuter un script qui génère un modèle à partir d'un autre modèle. Le résultat de cet exemple est le même que celui d'une action Génération, mais le script est conçu pour démontrer les fonctionnalités que vous pouvez définir sous forme de script dans vos propres projets. Vous pouvez, par exemple, rédiger un script pour vous connecter à une base de données directe et procéder à son reverse engineering dans une cellule. Pour plus d'informations sur la rédaction de scripts à utiliser dans vos modèles et projets, voir "Méthodes (Profile)" dans le chapitre Extension de vos modèles à l'aide de profils du manuel Personnalisation et extension de PowerAMC.
Avant de spécifier une action Script, vous devez commencer par créer une méthode script sur la métaclasse FrameworkAction dans une définition étendue de modèle, puis l'attacher à votre projet. Dans le cas présent, le script suivant s'appelle GenererModele, et va générer un MPD :
Sub %Method%(obj)
' Ceci est une méthode exemple qui peut être utilisée avec l'action script
' Elle génère un MPD à partir d'un MCD de cellule source et l'attache à la cellule courante
' Etapes :
' 1- Lire la cellule source : trouvée par son code "mySourceCell"
' 2- Lire la modèle source : premier document dans la cellule source
' 3- Générer un MPD à partir du modèle source
' 4- Attacher le modèle généré à la cellule courante
' 5- Définir l'action courante comme action source pour le nouveau document
' => Ceci empêchera de générer deux fois si l'action n'est pas muliple
If obj Is Nothing Then Exit Sub
Dim sourceCell, targetCell, modelDoc, sourceModel, targetModel
' Le script est définir sur l'action, donc la cellule courante n'est que le parent de l'action
Set targetCell = obj.Parent
' Vérifions d'abord si nous pouvons exécuter l'action sur la cellule courante
' Pour les action non-multiple, CanExecute ne doit renvoyer true que la première fois
If obj.CanExecute(targetCell) Then
' Obtenir la cellule source
Set sourceCell = FindCellByCode(targetCell.Parent, "mySourceCell") ' Voir le code de fonction sous l'instruction End Sub
' Obtenir le modèle source (supposé être le premier dans sa liste d'artefacts)
Set modelDoc = sourceCell.ArtifactDocuments.Item(0)
Set sourceModel = modelDoc.TargetModelObject
' Générer le MPD
Set targetModel = sourceModel.GenerateModel (Nothing, PdPDM.cls_Model)
' Attacher le modèle généré à la cellule courante
Set modelDoc = targetModel.SourceModelDocument
targetCell.AttachDocument(modelDoc)
' Définir l'action courante comme source pour le nouveau modèle
obj.SetAsSource(modelDoc)
Else
' Dans cet exemple, l'action est supposée être non-multiple
' Par conséquent, CanExecute échoue si elle est déjà une action source pour un document existant
output "L'action a déjà été exécutée"
End If
End Sub
' FindCellByCode function (Global Script function):
Function FindCellByCode (fmx, Code)
Set FindCellByCode = Nothing
Dim Cell
For Each Cell In fmx.cells
If Cell.Code = Code Then
Set FindCellByCode = Cell
Exit For
End If
Next
End Function
>>