Hitachi

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


7.13.2 マッピング定義の設定

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

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

〈この項の構成〉

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

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

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

表7‒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

変換元ノードへの条件設定

×

×

×

(凡例)

○:定義できます。

×:定義できません。

−:該当しません。

表7‒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

×

×

変換元ノードへの条件設定

×

×

(凡例)

○:定義できます。

×:定義できません。

−:該当しません。

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

(2) 構文規則

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

表7‒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の構文規則を次の表に示します。

表7‒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) ファンクションの設定

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

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

図7‒57 定義例(ファンクションの設定)

[図データ]

(6) ノード条件設定

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

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

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

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

表7‒22 ノード条件の方式

#

ノード条件の方式

概要

1

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

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

2

条件式

「<左辺><演算><右辺>」の形式で指定した条件に対してboolean値を返します。左辺および右辺には,変換元ノードやファンクションなどを指定します。

3

二つの条件の論理積・論理和

「<条件1><演算><条件2>」上記#1,#2の条件を2つ,andまたはorで組み合わせて指定した条件に対してboolean値を返します。

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

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

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

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

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

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

図7‒58 定義例(ノード条件設定1)

[図データ]

(b) 条件式

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

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

条件式の項目

指定できる値

左辺

次のどれかを指定できます。

  • "position()"で指定するポジション関数

  • 条件設定で指定できる変換元ノード

    変換元ノードは相対パスでも指定できます。

  • 条件設定で指定できるほかのファンクション

演算

「=」,「!=」,「>」,「<」,「>=」,「<=」のどれかを指定できます。

右辺

次のどれかを指定できます。

  • アポストロフィ(')で囲んだ値(空文字は指定できません)。

    値にアポストロフィ(')またはアンパサンド(&)を含める場合,次の例のように,アポストロフィは「&apos;」,アンパサンドは「&amp;」の実体参照の表現にしてください。

    (例)「a & 'b'」の場合,「a &amp; &apos;b&apos;」と定義します。

  • 条件設定で指定できる変換元ノード

    変換元ノードは相対パスでも指定できます。

  • 条件設定で指定できるほかのファンクション

注※

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

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

図7‒59 定義例(ノード条件設定2)

[図データ]

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

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

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

  • 条件式

  • 二つの条件の論理積・論理和

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

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

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

図7‒60 定義例(ノード条件設定3)

[図データ]

(d) 条件の否定をとる

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

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

図7‒61 定義例(ノード条件設定4)

[図データ]

(7) ノードパスの設定

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

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

(a) 論理名の指定

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

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

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

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

図7‒62 定義例(ノードパスの設定1)

[図データ]

(b) 名前空間の指定

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

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

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

図7‒63 定義例(ノードパスの設定2)

[図データ]

[図データ]

(c) 相対パス指定

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

表7‒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"と指定します。