Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編

[目次][用語][索引][前へ][次へ]

6.12.2 マッピング定義の設定

Excelでマッピングを定義するには,表形式XMLスキーマ定義ファイルを基に,各オブジェクトに変換元ノードや変換先ノードなどの値を設定します。

ここでは,マッピング定義の入出力値に定義できる項目,および各項目の設定方法について説明します。

<この項の構成>
(1) 入出力値に定義できる項目
(2) 構文規則
(3) 変換元ノードの設定
(4) 変換先ノードの設定
(5) ファンクションの設定
(6) ノード条件設定
(7) ノードパスの設定

(1) 入出力値に定義できる項目

CopyObjects(変換先ノードへのマッピング)やConcatenateObjects(文字列連結ファンクション)などオブジェクトのInputには,データ変換定義画面上の変換元ノードのパスまたはファンクション名を設定します。CopyObjects(変換先ノードへのマッピング)のOutputには,データ変換定義画面の変換先ノードのパスを設定します。また,入力値に変換元ノードを指定する場合,ノード条件を設定できます。

マッピング定義の各項目で定義できるノードおよびファンクション,ならびに変換元ノードへの条件設定の可否を表に示します。

表6-18 入出力値の定義項目(ノード)

入出力値の定義項目 設定できるノード 変換元ノードへの条件設定可否
オブジェクト 項目 変換元ノード 変換先ノード
単純内容 複合内容 属性 any要素 anyAttribute属性 単純内容 複合内容 属性 any要素 anyAttribute属性
CopyObjects(変換先ノードへのマッピング) Input
Output
Dependency × × × × ×
ConcatenateObjects(文字列連結ファンクション) Input × × ×
SubstringObjects(部分文字列取得ファンクション) Input × × ×
LengthObjects(文字数取得ファンクション) Input × × ×
ContainObjects(文字列調査ファンクション) Input × × ×
TrimObjects(空白除去ファンクション) Input × × ×
FormatObjects(数値フォーマット変換ファンクション) Input × × ×
CalculateObjects(数値演算ファンクション) Input1 × × ×
Input2 × × ×
RoundObjects(端数処理ファンクション) Input × × ×
SumObjects(総和ファンクション) Input × × ×
NotObjects(否定演算ファンクション) Input × × ×
BitOpObjects(論理演算ファンクション) Input1 × × ×
Input2 × × ×
ShiftObjects(シフト演算ファンクション) Input × × ×
NameObjects(ノード名取得ファンクション) Input × ×
CountObjects(ノード数取得ファンクション) Input × ×
ExistObjects(ノード調査ファンクション) Input × ×
LoopObjects(くり返しファンクション) Input × × ×
RelationalPath × × ×
SortKey × × ×
ChooseObjects(選択ファンクション) Condition × × ×
OutputValue × × ×
ReplaceObjects(値置換えファンクション) Input × × ×
RadixObjects(基数変換ファンクション) Input × × ×
CustomObjects(カスタムファンクション) Input
変換元ノードへの条件設定 × × ×

(凡例)
○:定義できます。
×:定義できません。
−:該当しません。

表6-19 入出力値の定義項目(ファンクション)

入出力値の定義項目 設定できるファンクション
オブジェクト 項目 文字列連結 部分文字列取得 文字数取得 文字列調査 空白除去 数値フォーマット変換 数値演算 端数処理 総和 否定演算 論理演算 シフト演算 ノード名取得 ノード数取得 ノード調査 くり返し 選択 値置換え 基数変換 カスタム 定数 XPath
CopyObjects(変換先ノードへのマッピング) Input
Output
Dependency × × × × × × × × × × × × × × × × × × × × ×
ConcatenateObjects(文字列連結ファンクション) Input × ×
SubstringObjects(部分文字列取得ファンクション) Input × ×
LengthObjects(文字数取得ファンクション) Input × ×
ContainObjects(文字列調査ファンクション) Input × ×
TrimObjects(空白除去ファンクション) Input × ×
FormatObjects(数値フォーマット変換ファンクション) Input × × × × ×
CalculateObjects(数値演算ファンクション) Input1 × × × × ×
Input2 × × × × ×
RoundObjects(端数処理ファンクション) Input × × × × ×
SumObjects(総和ファンクション) Input × × × × × × × × × × × × × × × × × × × × ×
NotObjects(否定演算ファンクション) Input × × × × × × × × × × ×
BitOpObjects(論理演算ファンクション) Input1 × × × × × × × × × × ×
Input2 × × × × × × × × × × ×
ShiftObjects(シフト演算ファンクション) Input × × × × × × × × × × ×
NameObjects(ノード名取得ファンクション) Input × × × × × × × × × × × × × × × × × × × × ×
CountObjects(ノード数取得ファンクション) Input × × × × × × × × × × × × × × × × × × × × ×
ExistObjects(ノード調査ファンクション) Input × × × × × × × × × × × × × × × × × × × × ×
LoopObjects(くり返しファンクション) Input × × × × × × × × × × × × × × × × × × × × × ×
RelationalPath × × × × × × × × × × × × × × × × × × × × × ×
SortKey × × × × × × × × × × × × × × × × × × × × × ×
ChooseObjects(選択ファンクション) Condition × ×
OutputValue ×
ReplaceObjects(値置換えファンクション) Input × ×
RadixObjects(基数変換ファンクション) Input × × × × × ×
CustomObjects(カスタムファンクション) Input × ×
変換元ノードへの条件設定 × ×

(凡例)
○:定義できます。
×:定義できません。
−:該当しません。

各オブジェクトの定義項目および定義例の詳細は,「6.14 表形式XMLスキーマ定義ファイルの定義詳細」を参照してください。

(2) 構文規則

各オブジェクトの入出力値に対応するBNFを次の表に示します。

表6-20 各オブジェクトの入出力値に対応するBNF

オブジェクト/項目 対応するBNF
Copy/Input 条件付き入力パスまたはファンクション
Concatenate/Input
Substring/Input
Length/Input
Contain/Input
Trim/Input
Format/Input
Calculate/Input1
Calculate/Input2
Round/Input
Not/Input
BitOp/Input1
BitOp/Input2
Shift/Input
Choose/OutputValue
Radix/Input
Custom/Input
Sum/Input
Name/Input
Count/Input
Exist/Input
Loop/Input 条件付き入力パス
Loop/RelationalPath
Copy/Output 出力パス
Copy/Dependency ファンクション
Loop/SortKey 入力パス
Choose/Condition 条件

注※
入力相対パスは使用できません。

これらのBNFの構文規則を次の表に示します。

表6-21 BNFの構文規則

BNF BNFの構文規則
入力パス ::= [ 変数 ] ( '/' ノード )+
条件付き入力パス ::= [ 変数 ] ( '/' ステップ )+
ファンクション ::= '{' NCName '}'
出力パス ::= [ 変数 ] ( '/' ノード )+
条件 ::= 基本式 | ( 'not(' 条件 ')' ) | '(' 条件 ')'
変数 ::= '$' NCName
ステップ ::= ノード [ '[' 条件 ']' ]
ノード ::= ( [ '@' ] [ 名前空間接頭辞 ':' ] NCName ) | '#any' | '#anyAttribute'
名前空間接頭辞 ::= NCName
基本式 ::= 入力パス | 入力相対パス | ファンクション | 条件式 | 複合条件式
条件式 ::= ( 'position()' | 入力パス | 入力相対パス | ファンクション ) オペレータ ( 値 | ファンクション | 入力パス | 入力相対パス )
入力相対パス ::= '.' | ノード ( '/' ノード )*
複合条件式 ::= or式
or式 ::= and式 [ 'or' and式 ]
and式 ::= 条件 [ 'and' 条件 ]
オペレータ ::= '=' | '!=' | '>' | '<' | '>=' | '<='
::= "'" [^']+ "'"

注※
値は1文字以上,かつ1,024文字以内で指定できます。ただし,実体参照表現は1文字として扱われます。

(3) 変換元ノードの設定

オブジェクトに変換元ノードを設定する場合,Inputに変換元ノードのパスを絶対パスで指定します。相対パスでの指定はサポートされません。ノードパスの設定方法については,「(7) ノードパスの設定」を参照してください。

また,定義項目によっては変換元ノードにノード条件を設定できます。ノード条件の設定方法については,「(6) ノード条件設定」を参照してください。

(4) 変換先ノードの設定

変換先ノードを設定するには,CopyObjects(変換先ノードへのマッピング)のOutputに変換先ノードのパスを指定します。ノードパスの設定については「(7) ノードパスの設定」を参照してください。

(5) ファンクションの設定

ファンクションには,ほかのオブジェクトで定義したファンクション名を指定します。ファンクション名は,波括弧({ })で囲まれた部分に指定します。

定義例を次の図に示します。

図6-53 定義例(ファンクションの設定)

[図データ]

(6) ノード条件設定

ノード条件を設定できる項目で変換元ノードを設定した場合,変換元ノードの各要素にノード条件を設定できます。

ノード条件を指定できる変換元ノードまたはファンクションの種類については,表6-18および表6-19を参照してください。

ノード条件は各要素の後ろの角括弧([ ])で囲まれた部分に指定します。

ノード条件は,次のどれかの方式で設定します。

表6-22 ノード条件の方式

# ノード条件の方式 概要
1 boolean値を返すノードまたはファンクション 変換元ノードまたはファンクションを指定すると,その存在有無によってboolean値を返します。
2 条件式 「<左辺><演算><右辺>」の形式で指定した条件に対してboolean値を返します。左辺および右辺には,変換元ノードやファンクションなどを指定します。
3 二つの条件の論理積・論理和 「<条件1><演算><条件2>」上記#1,#2の条件を2つ,andまたはorで組み合わせて指定した条件に対してboolean値を返します。

ノード条件設定の変換元ノードパスは,絶対パス,または条件設定対象ノードからの相対パスのどちらかで指定します。ノードパスの指定については,「(7) ノードパスの設定」を参照してください。

ただし,条件設定の対象となるノードの子孫ノードを条件で使用する場合,絶対パスの指定・相対パスの指定に関係なく,データ変換定義画面にインポートしたあと相対パスとして参照されます。

ファンクションの指定方法については,「(5) ファンクションの設定」を参照してください。

(a) boolean値を返すノードまたはファンクション

変換元ノードまたはファンクションを指定すると,その存在有無によってboolean値を返します。

ノードまたはファンクションの有無を条件に設定した場合の定義例を次の図に示します。

図6-54 定義例(ノード条件設定1)

[図データ]

(b) 条件式

「<左辺><演算><右辺>」の形式で指定した条件式に対してboolean値を返します。左辺,演算,右辺に指定できる値を次の表に示します。

表6-23 条件式の各項目に指定できる値

条件式の項目 指定できる値
左辺 次のどれかを指定できます。
  • "position()"で指定するポジション関数
  • 条件設定で指定できる変換元ノード
    変換元ノードは相対パスでも指定できます。
  • 条件設定で指定できるほかのファンクション
演算 「=」,「!=」,「>」,「<」,「>=」,「<=」のどれかを指定できます。
右辺 次のどれかを指定できます。
  • アポストロフィ(')で囲んだ値(空文字は指定できません)。
    値にアポストロフィ(')またはアンパサンド(&)を含める場合,次の例のように,アポストロフィは「&apos;」,アンパサンドは「&amp;」の実体参照の表現にしてください。
    (例)「a & 'b'」の場合,「a &amp; &apos;b&apos;」と定義します。
  • 条件設定で指定できる変換元ノード
    変換元ノードは相対パスでも指定できます。
  • 条件設定で指定できるほかのファンクション

注※
相対パスの指定方法については,「(7)(c) 相対パス指定」を参照してください。

条件式を設定した場合の定義例を次の図に示します。

図6-55 定義例(ノード条件設定2)

[図データ]

(c) 二つの条件の論理積・論理和

「<条件1><演算><条件2>」の形式で,2つの条件をandまたはor演算で組み合わせた論理積・論理和でboolean値を返します。<条件>には次のどれかを指定します。

条件に複数の「二つの条件の論理積・論理和」が存在する場合は,論理積が優先されます。ただし,「二つの条件の論理積・論理和」の前後を丸括弧(( ))で囲んだ場合,その論理式が優先されます。

また,これらの条件の否定をとることもできます。詳細は「(d) 条件の否定をとる」を参照してください。

二つの条件の論理積・論理和を条件に設定した場合の定義例を次の図に示します。

図6-56 定義例(ノード条件設定3)

[図データ]

(d) 条件の否定をとる

「not(<条件>)」の形式で,条件の否定をとることができます。

条件の否定をとる場合の定義例を次の図に示します。

図6-57 定義例(ノード条件設定4)

[図データ]

(7) ノードパスの設定

変換元ノードまたは変換先ノードのパスを指定する場合の,論理名および名前空間の指定方法について説明します。

また,ノード条件設定で変換元ノードの相対パスを指定する方法についても説明します。

(a) 論理名の指定

変換元ノードおよび変換先ノードの論理名は,「"$"+論理名」の形式でルート要素の前に指定します。

データ変換定義画面の変換元ノードが複数ある場合,変換元ノードの論理名指定は必須です。変換元ノードが1つしかない場合,論理名の指定は任意です。

なお,変換先ノードでは論理名の指定は任意です。

定義例を次の図に示します。

図6-58 定義例(ノードパスの設定1)

[図データ]

(b) 名前空間の指定

変換元ノードおよび変換先ノードのパス中の各要素名には,Namespacesに定義した名前空間接頭辞を使用できます。名前空間接頭辞の定義方法は「6.14.1 Namespaces(名前空間情報)」を参照してください。

名前空間接頭辞は,「名前空間接頭辞+":"+要素名」の形式で指定します。

定義例を次の図に示します。

図6-59 定義例(ノードパスの設定2)

[図データ]

[図データ]

(c) 相対パス指定

ノード条件を設定する場合,変換元ノードのパスは,条件設定対象のノードからの相対パスで指定できます。相対パスは,次の表に示すノードについて指定できます。それ以外の記述方式(「..」や「//」など)は使用できません。

表6-24 相対パスの指定方法

相対パスで指定するノード 指定方法
条件設定の対象となるノード ピリオド(.)を指定します。

指定例
変換元ノードのパスが"/root/comp-elem1/simple-elem1"で,条件設定の対象が"simple-elem1"の場合,"simple-elem1"の有無を条件にするときは"/root/comp-elem1/simple-elem1[.]"と指定します。
条件設定の対象となるノードの子孫ノード 条件設定の対象となるノードの,子ノードからのパスを指定します。

指定例
変換元ノードのパスが"/root/comp-elem1/simple-elem1"の場合,条件設定の対象が"comp-elem1"で,"simple-elem1"の有無を条件にするときは"/root/comp-elem1[simple-elem1]/simple-elem1"と指定します。
条件設定の対象が"root"で,"simple-elem1"の有無を条件にするときは"/root[comp-elem1/simple-elem1]/comp-elem1/simple-elem1"と指定します。