Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編
Excelでマッピングを定義するには,表形式XMLスキーマ定義ファイルを基に,各オブジェクトに変換元ノードや変換先ノードなどの値を設定します。
ここでは,マッピング定義の入出力値に定義できる項目,および各項目の設定方法について説明します。
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スキーマ定義ファイルの定義詳細」を参照してください。
各オブジェクトの入出力値に対応する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' 条件 ] |
オペレータ | ::= '=' | '!=' | '>' | '<' | '>=' | '<=' |
値※ | ::= "'" [^']+ "'" |
オブジェクトに変換元ノードを設定する場合,Inputに変換元ノードのパスを絶対パスで指定します。相対パスでの指定はサポートされません。ノードパスの設定方法については,「(7) ノードパスの設定」を参照してください。
また,定義項目によっては変換元ノードにノード条件を設定できます。ノード条件の設定方法については,「(6) ノード条件設定」を参照してください。
変換先ノードを設定するには,CopyObjects(変換先ノードへのマッピング)のOutputに変換先ノードのパスを指定します。ノードパスの設定については「(7) ノードパスの設定」を参照してください。
ファンクションには,ほかのオブジェクトで定義したファンクション名を指定します。ファンクション名は,波括弧({ })で囲まれた部分に指定します。
定義例を次の図に示します。
図6-53 定義例(ファンクションの設定)
ノード条件を設定できる項目で変換元ノードを設定した場合,変換元ノードの各要素にノード条件を設定できます。
ノード条件を指定できる変換元ノードまたはファンクションの種類については,表6-18および表6-19を参照してください。
ノード条件は各要素の後ろの角括弧([ ])で囲まれた部分に指定します。
ノード条件は,次のどれかの方式で設定します。
表6-22 ノード条件の方式
# | ノード条件の方式 | 概要 |
---|---|---|
1 | boolean値を返すノードまたはファンクション | 変換元ノードまたはファンクションを指定すると,その存在有無によってboolean値を返します。 |
2 | 条件式 | 「<左辺><演算><右辺>」の形式で指定した条件に対してboolean値を返します。左辺および右辺には,変換元ノードやファンクションなどを指定します。 |
3 | 二つの条件の論理積・論理和 | 「<条件1><演算><条件2>」上記#1,#2の条件を2つ,andまたはorで組み合わせて指定した条件に対してboolean値を返します。 |
ノード条件設定の変換元ノードパスは,絶対パス,または条件設定対象ノードからの相対パスのどちらかで指定します。ノードパスの指定については,「(7) ノードパスの設定」を参照してください。
ただし,条件設定の対象となるノードの子孫ノードを条件で使用する場合,絶対パスの指定・相対パスの指定に関係なく,データ変換定義画面にインポートしたあと相対パスとして参照されます。
ファンクションの指定方法については,「(5) ファンクションの設定」を参照してください。
変換元ノードまたはファンクションを指定すると,その存在有無によってboolean値を返します。
ノードまたはファンクションの有無を条件に設定した場合の定義例を次の図に示します。
図6-54 定義例(ノード条件設定1)
「<左辺><演算><右辺>」の形式で指定した条件式に対してboolean値を返します。左辺,演算,右辺に指定できる値を次の表に示します。
表6-23 条件式の各項目に指定できる値
条件式の項目 | 指定できる値 |
---|---|
左辺 | 次のどれかを指定できます。
|
演算 | 「=」,「!=」,「>」,「<」,「>=」,「<=」のどれかを指定できます。 |
右辺 | 次のどれかを指定できます。
|
条件式を設定した場合の定義例を次の図に示します。
図6-55 定義例(ノード条件設定2)
「<条件1><演算><条件2>」の形式で,2つの条件をandまたはor演算で組み合わせた論理積・論理和でboolean値を返します。<条件>には次のどれかを指定します。
条件に複数の「二つの条件の論理積・論理和」が存在する場合は,論理積が優先されます。ただし,「二つの条件の論理積・論理和」の前後を丸括弧(( ))で囲んだ場合,その論理式が優先されます。
また,これらの条件の否定をとることもできます。詳細は「(d) 条件の否定をとる」を参照してください。
二つの条件の論理積・論理和を条件に設定した場合の定義例を次の図に示します。
図6-56 定義例(ノード条件設定3)
「not(<条件>)」の形式で,条件の否定をとることができます。
条件の否定をとる場合の定義例を次の図に示します。
図6-57 定義例(ノード条件設定4)
変換元ノードまたは変換先ノードのパスを指定する場合の,論理名および名前空間の指定方法について説明します。
また,ノード条件設定で変換元ノードの相対パスを指定する方法についても説明します。
変換元ノードおよび変換先ノードの論理名は,「"$"+論理名」の形式でルート要素の前に指定します。
データ変換定義画面の変換元ノードが複数ある場合,変換元ノードの論理名指定は必須です。変換元ノードが1つしかない場合,論理名の指定は任意です。
なお,変換先ノードでは論理名の指定は任意です。
定義例を次の図に示します。
図6-58 定義例(ノードパスの設定1)
変換元ノードおよび変換先ノードのパス中の各要素名には,Namespacesに定義した名前空間接頭辞を使用できます。名前空間接頭辞の定義方法は「6.14.1 Namespaces(名前空間情報)」を参照してください。
名前空間接頭辞は,「名前空間接頭辞+":"+要素名」の形式で指定します。
定義例を次の図に示します。
図6-59 定義例(ノードパスの設定2)
ノード条件を設定する場合,変換元ノードのパスは,条件設定対象のノードからの相対パスで指定できます。相対パスは,次の表に示すノードについて指定できます。それ以外の記述方式(「..」や「//」など)は使用できません。
表6-24 相対パスの指定方法
相対パスで指定するノード | 指定方法 |
---|---|
条件設定の対象となるノード | ピリオド(.)を指定します。
|
条件設定の対象となるノードの子孫ノード | 条件設定の対象となるノードの,子ノードからのパスを指定します。
|
All Rights Reserved. Copyright (C) 2012, 2019, Hitachi, Ltd.