スクリプトレット

<< 目次を表示 >>

ページ位置:  Enterprise Architectの操作 > ダイアグラム > ダイアグラム内の操作 >

スクリプトレット

スクリプトレット要素はJavaScriptコードを保持する要素です。JavaScriptコードで特別なAPIを利用し、ダイアグラム内の要素にアクセスし、それらの要素のプロパティや書式を編集できます。 例えば、フォントや背景色を設定したり、表示される文字列(要素名)を変更したりすることができます。スクリプトレットはダイアグラウを開いた際に自動的に実行される他、手動でいつでも実行できます。

 

各スクリプトレットは、標準のAPIに加えて、以下の3つのグローバルオブジェクトにアクセスできます。

 

 

 

利用手順:

スクリプトレットはどのダイアグラムにも配置できます。また、1つのダイアグラムに複数のスクリプトレットを配置することも、1つのスクリプトレットを複数のダイアグラムに配置することもできます。

ツールボックス

 

スクリプトレット要素を作成する手順は次の通りです。

  1. ツールボックスを開く
  2. 拡張表現グループにあるスクリプトレット要素を見つける
  3. 対象のダイアグラムにドラッグ&ドロップする

 

 

スクリプトレットでできないこと

スクリプトレット内のJavaScriptからは、モデル内の情報の更新や変更(追加・削除など)を行うことはできません。ダイアグラムに含まれる要素の情報を参照し、そのダイアグラムだけで適用される情報として更新することができます。この更新の処理結果はプロジェクトには書き込まれません。

 

 

スクリプトレットの内容編集

スクリプトレットのJavaScriptの内容を編集するには、スクリプトレット要素をダブルクリックしてください。コードエディタが起動し、現在のスクリプトの内容が表示されます。必要に応じてJavaScriptを編集し、Ctrl+Sキーで編集内容を保存できます。

 

 

スクリプトレットの例

以下の内容は、スクリプトレットのモデルテンプレートに含まれています。

 

//---   Example Scriptlet  ---

function Scriptlet1()

{

 var object as EA.DiagramObject;

 object = theDiagram.GetObjectByGrid("A","2");

 if(object)

 {

         Session.Output("Scriptlet1 for " + theDiagram.Name);

         object.BackgroundColor = parseInt("0x554444",16);

         object.FontColor = parseInt("0xeeeeee",16);

         object.Update();

 }

}

 

Scriptlet1();

 

 

スクリプトレットの実行

スクリプトレットは配置されているダイアグラムが開かれた場合に、ダイアグラムの内容を表示する前に自動で実行します。ダイアグラムに複数のスクリプトレットが配置されている場合には、前後方向の順序を元に実行順序が決まります。必要に応じて、いつでもスクリプトレットの内容を手動で実行できます。スクリプトレット要素を右クリックし、スクリプトの実行を選択してください。

 

スクリプトレットのデバッグ

スクリプトレットの内容をデバッグ実行することもできます。対象の要素を右クリックし、スクリプトのデバッグを選択してください。デバッグサブウィンドウが開き、スクリプトレットが持つスクリプトのデバッグを行うことできます。

 

要素グリッド機能とスクリプトレット

ダイアグラムがグリッドとして表示されている場合、APIを利用して、グリッドの指定された位置にある要素を取得することができます。位置の指定の書式は表計算ツールと類似していて、列には「A」、「B」、「C」、...、「AA」、「AB」などのラベルが付けられ、行には順番に番号が付けられています。

 

グリッド要素の外観を変更するには、GetObjectByGrid関数を使用して、対象になるDiagramObjectを取得します。

 

グリッド要素の値を変更するには、GetElementByGrid 関数を使用して、対象になる Element を取得します。

 

例えば、以下のように取得できます。

object = theDiagram.GetObjectByGrid("A", "2");

element = theDiagram.GetElementByGrid("A", "2");

 

 

参照: