プログラムによるテンプレートの使用

プログラムでノードを作成するには、ibm_ilog.diagram.Graph.createNode() メソッドを使用します。引数が指定されない場合、createNode メソッドは、ibm_ilog.diagram.Node インスタンスを作成し、これをデフォルト・ノード・テンプレート (長方形形状およびテキスト形状) で初期化します。
カスタム・グラフィカル表現を指定するため、Graph.createNode メソッドが template パラメーターを受け入れますが、このパラメーターはストリング、または GFX シリアライゼーション仕様に準拠する簡潔な JavaScript オブジェクト・プロパティーでなければなりません。例:
var graph = ...
var template = ibm_ilog.diagram.declareTemplate({ shape: {type:'rect'}, fill: 'blue'});
var node = graph.createNode(template);
メモ
この例では、テンプレート・パラメーターがストリングとして定義されています。オプションの ibm_ilog.diagram.declareTemplate() 関数により、テンプレーティング・エンジンのテンプレートが処理され、より良好なパフォーマンスが得られます。 テンプレート・パラメーターを JavaScript オブジェクト・プロパティーとして定義する例については、バインディング セクションを参照してください。
テンプレートを動的に変更するには、node.applyTemplate() メソッドを使用します。このようにすれば、同じノード・インスタンスのグラフィカル表現を変更し、リンク・ポート設定を保持することができます。例:
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'});
サブコンポーネントがノード・インスタンスから参照される、すなわち、ノード・インスタンスがその子のいずれかへの直接参照を定義する場合、テンプレートは、dojoAttachPoint プロパティーでそのサブコンポーネントにタグを付けることができます。このプロパティーの値は、ノード・インスタンスで定義される参照のプロパティー名です。例:
[{
   dojoAttachPoint: 'baseShape',
   shape: {
       type: 'rect',
       ...
   }
   ...
}, {
   dojoAttachPoint: 'textShape',
   shape: {
       type: 'text',
       ...
   }
   ...
}]
このテンプレートを使用すると、新規のプロパティーが、テンプレート内の各 dojoAttachPoint エントリーのノード・インスタンスに設定され、対応する形状に適用されます。 テンプレートの適用後、node.baseShape プロパティーにより長方形形状にアクセスし、node.textShape プロパティーによりテキスト形状にアクセスします。