Utilisation de modèles à l'aide d'un programme

Pour créer un noeud à l'aide d'un programme, utilisez la méthode ibm_ilog.diagram.Graph.createNode(). Lorsqu'aucun argument n'est spécifié, la méthode createNode crée une instance ibm_ilog.diagram.Node et l'initialise avec le modèle de noeud par défaut (une forme rectangulaire et une forme de texte).
Pour spécifier une représentation graphique personnalisée, la méthode Graph.createNode accepte un paramètre template qui doit être une chaîne ou une propriété d'objet JavaScript simple conforme à la spécification de sérialisation GFX. Par exemple :
var graph = ...
var template = ibm_ilog.diagram.declareTemplate({ shape: {type:'rect'}, fill: 'blue'});
var node = graph.createNode(template);
Note
Dans cet exemple, les paramètres de modèle sont définis en tant que chaînes. La fonction ibm_ilog.diagram.declareTemplate() facultative traite le modèle pour le moteur de modélisation, ce qui se traduit par de meilleures performances. Vous trouverez dans la section Liaisons un exemple de définition de paramètres de modèle en tant que propriétés d'objet JavaScript.
Pour modifier dynamiquement le modèle, utilisez la méthode node.applyTemplate(). Vous pouvez ainsi modifier la représentation graphique de la même instance de noeud et conserver les paramètres de port de lien. Par exemple :
var graph = ...
var template = ibm_ilog.diagram.declareTemplate({ shape: {type:'rect'}, fill: 'blue'});
var node = graph.createNode(template);
// ...
// later, the template is changed for a new one
node.applyTemplate({ shape: {type:'ellipse'}, fill: 'red'});
Si un sous-composant est référencé à partir de l'instance de noeud (en d'autres termes, l'instance de noeud définit une référence directe vers l'un de ses enfants), le modèle peut baliser le sous-composant avec la propriété dojoAttachPoint. La valeur de cette propriété est le nom de la propriété définie sur l'instance de noeud. Par exemple :
[{
   dojoAttachPoint: 'baseShape',
   shape: {
       type: 'rect',
       ...
   }
   ...
}, {
   dojoAttachPoint: 'textShape',
   shape: {
       type: 'text',
       ...
   }
   ...
}]
Si vous utilisez ce modèle, une nouvelle propriété est définie pour chaque entrée dojoAttachPoint du modèle et elle s'applique à la forme correspondante. Une fois que vous avez appliqué le modèle, vous accédez à la forme rectangulaire par le biais de la propriété node.baseShape et à la forme de texte via la propriété node.textShape.