テンプレートセットについて

ここではテンプレートセットの文法や書式など、具体的な記述方法について説明します。

テンプレートセットの使用方法

テンプレートセットを利用してサービスアダプタのコンフィグを作成するためには以下の手順が必要です。

  • テンプレートセットの作成

    まず初めに任意の名前を付けて「テンプレートセット」を作成します。

    テンプレートセットの作成
  • テンプレートコンフィグの作成

    モジュール ID を指定して「テンプレートコンフィグ」を作成します。 複数のモジュール ID についてテンプレートコンフィグを作成することも可能です。 なお、テンプレートセットは対象のモジュールがコマンドライン形式の場合のみ使用することができます。

    テンプレートコンフィグの作成

    作成後、サービスアダプタに適用するコンフィグの元となる内容を後述の「テンプレート変数」や「マクロコマンド」を交えて記述します。

    テンプレートコンフィグの記述
  • サービスアダプタの割り当て

    テンプレートセットに所属するサービスアダプタを割り当てます。 サービスアダプタはいずれか 1 つのテンプレートセットにのみ割り当てることが可能です。

    サービスアダプタの割り当て
  • テンプレート変数の設定

    テンプレートセットの展開時に置き換えられる「テンプレート変数」を作成します。

    テンプレート変数の作成

    テンプレート変数にはデフォルト値とサービスアダプタごとの個別値を設定できます。

    テンプレート変数の設定
  • コンフィグの反映

    テンプレートセットの内容をサービスアダプタに適用するには「コンフィグの反映」操作を行います。 サービスアダプタがテンプレートセットに所属していればテンプレートセットを展開した内容が、所属していなければサービスアダプタ個別の作業コンフィグの内容がそれぞれ反映されます。

    コンフィグの反映

テンプレートコンフィグ文法

テンプレートコンフィグの中には「マクロコマンド」を記述することができます。 マクロコマンドの文法は以下の通りです。

if-else

特定の条件に従い、出力する文字列を変更できます。

#if (【評価式1】)
  strings 1
#elseif (【評価式2】)
  strings 2
#else
  strings 3
#end

評価式ではテンプレート変数の値を比較します。 比較条件には「一致 (==)」または「不一致 (!=)」が使用できます。 例えばテンプレート変数 ${var_1} の値が文字列 value_1 と一致するかどうか比較する場合は「#if (${var_1} == “value_1”)」と記述します。

#elseif 及び #else は省略することができます。 また、#elseif は複数行記述することもできます。

foreach

テンプレートセットに所属しているすべてのサービスアダプタについてループ処理を行い、テンプレート変数の値を順に抽出できます。

#foreach(${【ループ変数名】} in ${【テンプレートセット名】})
  strings 1 ${【ループ変数名】.【テンプレート変数名1】}
  strings 2 ${【ループ変数名】.【テンプレート変数名2】}
  strings 3 ${【ループ変数名】.【テンプレート変数名3】}
#end

「ループ変数」は該当の foreach 文の中でのみ参照される変数です。ループ変数名には任意の変数名を記述することができます。

テンプレートセット名には自身の名前のほか、別のテンプレートセットの名前を指定することも可能です。

foreach 文は 2 段階までネストすることができます。

コメント

テンプレートコンフィグ中に任意のコメントを記述できます。

## this line is comment

コメントはコンフィグの反映時に出力されません。 特定の行のコンフィグを一時的に無効としたい場合にも利用できます。

コメントは行末に記述することもできます。

this is config ## this is comment

また、複数行に渡るコメントを記述することも可能です。

#* this line is comment
   and this line is comment too *#

テンプレート変数

「テンプレート変数」はテンプレートコンフィグの文中で参照される変数です。 変数名を文中に記述すると、コンフィグの反映時に自動的に変数値が展開されて出力されます。

テンプレート変数の記述は以下の形式で行います。

${【テンプレート変数名】}

テンプレート変数は「デフォルト値」とサービスアダプタごとの「個別値」を持ちます。 テンプレートセットの展開時にサービスアダプタごとの個別値が存在する場合は優先して読み出され、存在しない場合はデフォルト値が読み出されます。

システム定義変数

テンプレートセットには通常のテンプレート変数に加えて「システム定義変数」があらかじめ定義されています。 システム定義変数の種別は以下の通りです。

ループカウンタ

${loopCount}

マクロコマンド「foreach」内でのみ使用できます。 ループ処理が行われる毎にインクリメントされます。 初期値は「0」から開始されます。

SA コード

${system.sa_code}

対象のサービスアダプタの「SAコード」が出力されます。 ユニークな識別子として利用することができます。 マクロコマンド「foreach」内で使用する場合は以下のように記述します。

${【ループ変数名】.system.sa_code}

作業コンフィグ

${sa_working_config_【モジュールID】}

対象のサービスアダプタに設定された「作業コンフィグ」が出力されます。 末尾の「モジュールID」で指定したIDを持つモジュールの「作業コンフィグ」が読み出されます。 例えばモジュール ID が 0 の作業コンフィグを読み出す場合は「${sa_working_config_0}」と記述します。 コマンドライン形式のモジュールのみ対応しています。

「#」文字

${system.sharp}

「#」文字が出力されます。 テンプレートコンフィグ中に「コメント」マクロコマンドと一致する文字列を記述する場合に利用することができます。

エスケープ処理

テンプレートコンフィグ内において、定義済のテンプレート変数やマクロコマンドと一致する文字列を出力する必要がある場合、先頭に「\」を記述します。 但しコメントに関してはエスケープ処理を適用できません。 テンプレートコンフィグ中に「##」や「#*」を含む文字列を記述する必要がある場合は、システム定義変数「${system.sharp}」を使用してください。

this is config and parameter is \${var}
this is config and parameter is \#if

CSV インポート/エクスポート

テンプレートセットの各設定値のうち、「テンプレート変数」と「テンプレート所属 SA」の設定値は CSV ファイルによるインポート/エクスポートに対応しています。 エクスポートした CSV ファイルは Excel やテキストエディタなどのアプリケーションを使って編集できます。 編集した CSV ファイルをインポートすると、「テンプレート変数」と「テンプレート所属 SA」の設定値が上書きされます。

CSV ファイルフォーマット

CSV ファイルのフォーマットは以下の通りです。 テンプレート変数名の順序は記述された順に保持されます。

インポート時には [sa_label] 列の値は無視されます。また列ごと省略することも可能です。

[name]    ,[sa_label],variableA   ,variableB   ,variableC   , ...
[default] ,          ,defaultValue,defaultValue,defaultValue, ...
SA-code1  ,SA-label1 ,value       ,value       ,value       , ...
SA-code2  ,SA-label2 ,value       ,value       ,value       , ...
SA-code3  ,SA-label3 ,value       ,value       ,value       , ...
                          :
                          :

文字コード

エクスポート時、マルチバイト文字は Shift-JIS 形式で出力されます。

インポート時にマルチバイト文字を含む場合は同様に Shift-JIS 形式のみをサポートしています。

CSV の編集例

CSV エクスポート直後の状態の例です。 次の例ではこの状態を元に変更を加える方法について説明しています。

[name],[sa_label],var_A,var_B,var_C
[default],,default_A,,default_C
tssXXXXXXX1,拠点1,A-1,B-1,C-1
tssXXXXXXX2,拠点2,A-2,B-2,
tssXXXXXXX3,拠点3,,B-3,
tssXXXXXXX4,拠点4,,B-4,
tssXXXXXXX5,拠点5,A-5,B-5,C-5

テンプレート変数の値を変更する

CSV ファイル内の各変数値の値を書き換えることで変更が適用されます。

次の例では変数値 A-1 を A-1-modified に変更しています。

[name],[sa_label],var_A,var_B,var_C
[default],,default_A,,default_C
tssXXXXXXX1,拠点1,A-1-modified,B-1,C-1
tssXXXXXXX2,拠点2,A-2,B-2,
tssXXXXXXX3,拠点3,,B-3,
tssXXXXXXX4,拠点4,,B-4,
tssXXXXXXX5,拠点5,A-5,B-5,C-5

さらにテンプレート変数 var_C の tssXXXXXXX3 の個別値 C-3 を新しく設定します。

[name],[sa_label],var_A,var_B,var_C
[default],,default_A,,default_C
tssXXXXXXX1,拠点1,A-1-modified,B-1,C-1
tssXXXXXXX2,拠点2,A-2,B-2,
tssXXXXXXX3,拠点3,,B-3,C-3
tssXXXXXXX4,拠点4,,B-4,
tssXXXXXXX5,拠点5,A-5,B-5,C-5

新しい変数を追加する

[name] 行に変数名列を追加することで変数定義を追加することができます。 列を追加/削除した場合はすべての行で要素数を一致させる必要があります。

次の例では変数 var_D を新しく追加し、デフォルト値と個別値を設定しています。

[name],[sa_label],var_A,var_B,var_C,var_D
[default],,default_A,,default_C,default_D
tssXXXXXXX1,拠点1,A-1,B-1,C-1,D-1
tssXXXXXXX2,拠点2,A-2,B-2,,D-2
tssXXXXXXX3,拠点3,,B-3,,D-3
tssXXXXXXX4,拠点4,,B-4,,
tssXXXXXXX5,拠点5,A-5,B-5,C-5,

サービスアダプタの割り当てを変更する

SA コード行を追加/削除することでテンプレート所属 SA の設定を変更することができます。

次の例では tssXXXXXXX3 の割り当てを解除し、さらに新しく tssXXXXXXX6 の割り当てを追加しています。

[name],[sa_label],var_A,var_B,var_C
[default],,default_A,,default_C
tssXXXXXXX1,拠点1,A-1,B-1,C-1
tssXXXXXXX2,拠点2,A-2,B-2,
tssXXXXXXX4,拠点4,,B-4,
tssXXXXXXX5,拠点5,A-5,B-5,C-5
tssXXXXXXX6,拠点6,A-6,B-6,C-6

テンプレートセット設定例

テンプレートセットを使用する際の設定例を記載します。

テンプレートセットの作成

例としてテンプレートセット「template_set_1」を作成します。

テンプレートコンフィグの作成

ここではモジュール 0 及びモジュール 1 についてサービスアダプタのコンフィグを設定するものと仮定します。 それぞれのモジュールについて以下のようにテンプレートコンフィグを作成します。

  • モジュール 0

    command_1 this is an example
    #if (${param_pattern} == "name_only")
    command_2 ${name}
    #elseif (${param_pattern} == "name_and_address")
    command_2 ${name} ${address}
    #end
    #foreach (${l} in ${template_set_1})
    command_3 ${l.name}_${loopCount} ${l.address}
    #end
  • モジュール 1

    #if (${use_module_1} == "true")
    <sample>
      <param_1>value_1</param_1>
      <param_2>value_2</param_2>
      <param_3>value_3</param_3>
    </sample>
    #end

サービスアダプタの割り当て

以下の 3 台のサービスアダプタを template_set_1 に割り当てます。

SA コード Distribution ID
tssXXXXXXX1 0001-0000-0000-0000-0000-0000-0000-0001
tssXXXXXXX2 0001-0000-0000-0000-0000-0000-0000-0002
tssXXXXXXX3 0001-0000-0000-0000-0000-0000-0000-0003

テンプレート変数の設定

以下のテンプレート変数を作成し、デフォルト値、個別値をそれぞれ設定します。

- address name param_pattern use_module_1
デフォルト値     name_only true
tssXXXXXXX1 10.0.0.1 SA1 name_and_address  
tssXXXXXXX2 10.0.0.2 SA2    
tssXXXXXXX3 10.0.0.3 SA3   false

コンフィグの反映

コンフィグの反映を行うとテンプレートセットの展開が行われ、以下のコンフィグがそれぞれのサービスアダプタに適用されます。

  • tssXXXXXXX1

    • モジュール 0

      command_1 this is an example
      command_2 SA1 10.0.0.1
      command_3 SA1_0 10.0.0.1
      command_3 SA2_1 10.0.0.2
      command_3 SA3_2 10.0.0.3
    • モジュール 1

      <sample>
        <param_1>value_1</param_1>
        <param_2>value_2</param_2>
        <param_3>value_3</param_3>
      </sample>
  • tssXXXXXXX2

    • モジュール 0

      command_1 this is an example
      command_2 SA2
      command_3 SA1_0 10.0.0.1
      command_3 SA2_1 10.0.0.2
      command_3 SA3_2 10.0.0.3
    • モジュール 1

      <sample>
        <param_1>value_1</param_1>
        <param_2>value_2</param_2>
        <param_3>value_3</param_3>
      </sample>
  • tssXXXXXXX3

    • モジュール 0

      command_1 this is an example
      command_2 SA3
      command_3 SA1_0 10.0.0.1
      command_3 SA2_1 10.0.0.2
      command_3 SA3_2 10.0.0.3
    • モジュール 1

      (N/A)
      

ここまでがテンプレートセットを使用する上での基本的な操作の流れになります。 以降、サービスアダプタの割り当てやテンプレート変数値の変更を行いコンフィグの反映を行う度に、自動的にその内容に応じたコンフィグが出力されます。