Utilización de plantillas mediante programación

Para crear un nodo mediante programación, utilice el método ibm_ilog.diagram.Graph.createNode(). Cuando no se especifica ningún argumento, el método createNode crea una instancia de ibm_ilog.diagram.Node y la inicializa con la plantilla de nodos predeterminada (una forma rectangular y una forma de texto).
Para especificar una representación gráfica personalizada, el método Graph.createNode acepta un parámetro template que debe ser una serie de caracteres o la propiedad de un objeto JavaScript normal conforme con la especificación de serialización de GFX. Por ejemplo:
var graph = ...
var template = ibm_ilog.diagram.declareTemplate({ shape: {type:'rect'}, fill: 'blue'});
var node = graph.createNode(template);
Nota
En este ejemplo, los parámetros de la plantilla se definen como series. La función ibm_ilog.diagram.declareTemplate() opcional procesa la plantilla para el motor de plantillas, lo que da como resultado un mejor rendimiento. En la sección Enlaces puede consultar un ejemplo en que se definen parámetros de plantilla como propiedades de un objeto JavaScript.
Para cambiar plantillas de forma dinámica, utilice el método node.applyTemplate(). De este modo, puede cambiar la representación gráfica de la instancia del mismo nodo y mantener los valores del puerto de enlace. Por ejemplo:
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 se hace referencia a un subcomponente desde la instancia de nodo, es decir, la instancia de nodo define una referencia directa a uno de sus hijos, la plantilla puede etiquetar el subcomponente con la propiedad dojoAttachPoint. El valor de esta propiedad es el nombre de la propiedad de la referencia definida en la instancia de nodo. Por ejemplo:
[{
   dojoAttachPoint: 'baseShape',
   shape: {
       type: 'rect',
       ...
   }
   ...
}, {
   dojoAttachPoint: 'textShape',
   shape: {
       type: 'text',
       ...
   }
   ...
}]
Si utiliza esta plantilla, se establece una propiedad nueva en la instancia de nodo para cada entrada dojoAttachPoint de la plantilla y se le aplica a la forma correspondiente. Tras aplicar la plantilla, puede acceder a la forma rectangular mediante la propiedad node.baseShape y a la forma de texto mediante la propiedad node.textShape.