BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Integration > DI トピック > WebLogic Integration データの変換 > フォーマット定義のビルド |
WebLogic Integration データの変換
|
フォーマット定義のビルド
フォーマット定義はバイナリ データの解析や作成に使用されるメタデータです。XML との間で相互に変換されるバイナリ データのフォーマット定義をビルドできます。
この項では、Format Builder を使用したフォーマット定義のビルドについて説明します。Format Builder は、データ統合のための、WebLogic Integration の設計時コンポーネントです。この章の内容は以下のとおりです。
データ フォーマットについて
次のフォーマットとドキュメント タイプについて理解しておくと、Format Builder の使用法を把握しやすくなります。
バイナリ(非 XML)データ
コンピュータは 2 進法に基づくため、アプリケーションでは、多くの場合、バイナリ フォーマットを使用してデータを表現します。バイナリ フォーマットで格納されるファイルは、コンピュータには読めますが、ユーザにとっては、必ずしも読むことできるデータではありません。バイナリ フォーマットは実行可能プログラムと数値データに使用され、テキスト フォーマットはテキストデータに使用されます。多くのファイルでは、バイナリとテキストのフォーマットが組み合わされます。通常、そのようなファイルは、テキスト フォーマットのデータが一部含まれていても、バイナリ ファイルと考えられます。
バイナリ データは、XML と異なり、自己記述型ではありません。言い換えると、バイナリ データには、データのグループ分け、フィールドへの分割、またはその他の形での配置に関する記述はありません。バイナリ データは、バイトのシーケンスを生成するアプリケーションの目的に応じて、整数、文字列、または図として解釈できるバイトのシーケンスです。
たとえば、次のバイナリ データ文字列があるとします。
2231987
この文字列についてはさまざまな解釈ができます。たとえば、
このデータ文字列の目的をはっきりと理解しなければ、アプリケーションは文字列を正しく解釈できません。
バイナリ データがアプリケーションによって理解されるようにするには、アプリケーション自体にデータのレイアウトを埋め込むことが必要です。バイナリ ファイルに含まれる文字データのコード化に使用される文字セットもさまざまです。たとえば、IBM メインフレーム上の文字データは、通常、EBCDIC 文字セットを使用してコード化されるのに対し、デスクトップ コンピュータ上のデータは ASCII または Unicode のいずれかでコード化されます。
Format Builder を使用すると、バイナリ データのレイアウトを記述するMFL (Message Format Language : メッセージ フォーマット言語) ファイルを作成できます。MFL は、データの各フィールドの他、フィールドのグループ分け(グループ)、反復および集約を記述する要素を含む XML 言語です。バイナリ レコードの階層、フィールドのレイアウト、そしてフィールドとグループのグループ分けは MFL ドキュメントで表現されます。この MFL ドキュメントは、実行時に XML ドキュメントとの間でデータを変換するために使用されます。
コード リスト 3-1 バイナリ データのサンプル
1234;88844321;SUP:21Sprockley's Sprockets01/15/2000123 Main St.;
Austin;TX;75222;555 State St.;Austin;TX;75222;PO12345678;666123;150;
Red Sprocket;
XML ドキュメント
XML (eXtensible Markup Language) は、急速に、Web 上での構造化ドキュメントおよび構造化データの汎用フォーマットになりつつあります。バイナリ データと異なり、XML は自己記述型です。つまり、XML は、データ ブロックの開始と終了を示すタグ ('<' および '>' で囲まれた語)を利用します。これらのタグは、互いに関連する各データ コンポーネントの階層を定義します。これらのコンポーネントは、構造化ドキュメントの各要素に当たります。
XML にはこのような特性があるため、プラットフォームに依存しないで、データを表示し構造化するのに適しています。XML は、構造をはっきりと示すことができるため、XML を使用するとアプリケーション間でのデータ交換が簡単になります。データは標準形式で表示されるため、異なるシステムにあるアプリケーションでも XML 解析ツールでデータを解釈できるので、を専用のバイナリ フォーマットを使用して解釈する必要がありません。
リスト3-2 に、XML ドキュメントのサンプルを示します。
コード リスト 3-2 XML ドキュメントのサンプル
<?xml version="1.0"?>
<PurchaseRequest>
<PR_Number>1234</PR_Number>
<Supplier_ID>88844321</Supplier_ID>
<Supplier_Name>Sprockley's Sprockets</Supplier_Name>
<Requested_Delivery_Date>2000-01-15T00:00:00:000</Requested_Delivery_Date>
<Shipping_Address>
<Address>
<Street>123 Main St.</Street>
<City>Austin</City>
<State>TX</State>
<Zip>75222</Zip>
</Address>
</Shipping_Address>
</PurchaseRequest>
DTD と XML スキーマ
最初の XML 勧告では、XML ドキュメント インスタンス で許可される要素、属性、および データ型を記述する方法は XML DTD (XML Document Type Definition : XML 文書型定義) だけでした。その後、コンテンツ モデルを記述するより柔軟で便利な方法が求められていることが明らかになり、XML スキーマ定義言語についての検討作業が開始されました。この XML スキーマ定義言語は、2001 年 5 月の最終勧告により使用できるようになりました。
XML ドキュメントは、関連付けられた DTD または XML スキーマで記述されたコンテンツ モデルに準拠する場合に、有効 とされます。XML ドキュメントの検証に XML パーサが必要とするメタデータは、DTD または XML スキーマのいずれかで伝達することができますが、XML スキーマ定義のほうが DTD と比較してより具体的です。すなわち、DTD よりも XML スキーマのほうが、コンテンツをより精密に制御できます。
リスト3-3 に、DTD のサンプルを示します。
コード リスト 3-3 DTD のサンプル
<!ELEMENT PurchaseRequest
(PR_Number,Supplier_ID,Supplier_Name?,
Requested_Delivery_Date,Shipping_Address,
Billing_Address,Payment_Terms,Purchase_Items)>
<!ELEMENT PR_Number (#PCDATA) >
<!ATTLIST PR_Number type CDATA #FIXED "nonNegativeInteger">
<!ELEMENT Supplier_ID (#PCDATA) >
<!ATTLIST Supplier_ID type CDATA #FIXED "nonNegativeInteger">
<!ELEMENT Supplier_Name (#PCDATA) >
<!ATTLIST Supplier_Name type CDATA #FIXED "string">
<!ELEMENT Requested_Delivery_Date (#PCDATA) >
<!ATTLIST Requested_Delivery_Date type CDATA #FIXED "timeInstant">
<!ELEMENT Shipping_Address (Address)>
<!ELEMENT Address (Street,City,State,Zip)>
<!ELEMENT Street (#PCDATA) >
<!ATTLIST Street type CDATA #FIXED "string">
<!ELEMENT City (#PCDATA) >
<!ATTLIST City type CDATA #FIXED "string">
<!ELEMENT State (#PCDATA) >
<!ATTLIST State type CDATA #FIXED "string">
<!ELEMENT Zip (#PCDATA) >
<!ATTLIST Zip type CDATA #FIXED "nonNegativeInteger">
リスト3-4 に、XML スキーマによる定義のサンプルを示します。
コード リスト 3-4 XML スキーマのサンプル
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<xsd:annotation>
<xsd:documentation>
This schema created for MFL MessageFormat PurchaseRequest.
</xsd:documentation>
</xsd:annotation>
<xsd:element name="PurchaseRequest">
<xsd:complexType content="elementOnly">
<xsd:sequence>
<xsd:element ref="PR_Number" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="Supplier_ID" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="Supplier_Name" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="Requested_Delivery_Date" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="Shipping_Address" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="PR_Number" type="xsd:nonNegativeInteger"/>
<xsd:element name="Supplier_ID" type="xsd:nonNegativeInteger"/>
<xsd:element name="Supplier_Name" type="xsd:string"/>
<xsd:element name="Requested_Delivery_Date" type="xsd:timeInstant"/>
<xsd:element name="Shipping_Address">
<xsd:complexType content="elementOnly">
<xsd:sequence>
<xsd:element ref="Address" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
MFL ドキュメント
MFL ドキュメント(単に、メッセージ フォーマット ドキュメントともいう)は、バイナリ データのレイアウトを記述するための特別な XML ドキュメントです。MFL ドキュメントは、データの各フィールドの他、フィールド(グループ)のグループ分け、反復および集約を記述する要素と属性を含む、mfl.dtd に準拠します。Format Builder を使用して、バイナリ レコードの階層、フィールドのレイアウト、フィールドとグループのグループ分けを定義すると、この情報は、MFL ドキュメントとして保存され、実行時変換に使用できます。MFL ドキュメントに取り込まれている情報を使用して、DTD または XML スキーマを生成できます。これらは、MFL ドキュメントにより生成される出力のコンテンツ モデルを記述します。
メッセージ フォーマット ドキュメントのトップレベル要素は、MessageFormat 要素で、メッセージ フォーマット名とバージョンを定義します。たとえば、WebLogic Integration と共にインストールされるサンプル po.mfl ドキュメントの ルート要素は、次のように記述されます。
<MessageFormat name='PurchaseRequest' version='2.01'>
WebLogic Integration は、現在、Message Format Language バージョン 2.02 をサポートしています。このバージョンでは、埋め込み、切り捨て、および削除に関する新機能をサポートします。Message Format Language バージョン 2.01 も引き続きサポートされます。
メッセージ フォーマット ドキュメントに割り当てられる名前は、MFL ドキュメントに基づいて生成される XML インスタンスのルート要素になります。たとえば、サンプル po.mfl ドキュメントを基に生成された XML ドキュメントでは、次が ルート要素になります。
<PurchaseRequest>
MFL ドキュメントには、次について定義する要素および属性もあります。
変換するデータの分析
メッセージ フォーマットを作成する前に、バイナリ データのレイアウトを理解する必要があります。従来のシステムの発注書についてのサンプル データ、およ発注書レコードに関する MFL および XML ドキュメントが WebLogic Integration と共にインストールされます。Purchase Order サンプルでは、WebLogic Integration によってデータが 1 つのフォーマットから別のフォーマットに変換される方法を示します。このサンプル データの詳細については、Purchase Order サンプルの実行を参照してください。
XML との間でバイナリ データを変換するには、バイナリ データの正確な記述を作成することが必要です。バイナリ データ(自己記述型でないデータ)の場合、以下の要素を指定する必要があります。
Format Builder を使用して、これらの要素をデータ変換に使用するフォーマット定義に組み込みます。
Format Builder の使用法
Format Builder を使うとバイナリ データに関するフォーマット記述を作成して、MFL ドキュメントに格納できます。記述には、データの詳細な解析から得られた階層情報と構造情報を含む必要があります。これらのフォーマット記述は MFL ドキュメントに格納されます。Format Builder を使用すると、データにフォーマット記述を適用する前にテストすることもできます。
Format Builder の呼び出し
Format Builder を呼び出すには、[スタート|プログラム|BEA WebLogic Platform 7.0|WebLogic Integration 7.0|Format Builder] を選択します。Format Builder のウィンドウが表示されます。
Format Builder のウィンドウの使用法
[Format Builder] ウィンドウは縦方向の 2 つのペインに分かれています。左ペイン(ナビゲーション ツリー)には、アクティブな MFL ドキュメントで定義されているグループとフィールドの構造的な関係が表示されます。右ペインには各項目を定義するプロパティが表示されます。
編集中のファイルの情報は [Format Builder] ウィンドウのタイトル バーに表示されます。
図3-1 [Format Builder] ウィンドウ
バイナリ データの構造は対象データに対応するフィールドとグループの組み合わせを使用してナビゲーション ツリーで定義されます。 以下のトピックでは、[Format Builder] ウィンドウのさまざまなツールを使用して、ウィンドウ内を移動しコマンドを実行する方法を説明します。
ナビゲーション ツリーの使い方
ナビゲーション ツリーは、バイナリ データの構造を階層レイアウトで表示します。ナビゲーション ツリーのルート ノード(Message node)は作成または編集される MFL ドキュメントに対応します。子ノードには、グループ名またはフィールド名が付けられます。フィールドはナビゲーション ツリーでリーフ ノードによって表されます。グループにはフィールドまたはその他のグループが含まれ、ナビゲーション ツリーでは非リーフ ノードで表されます。
各ノードのアイコンには、そのノードに関する情報がカプセル化されています。このアイコンを見ると、ノードがメッセージ、グループ、フィールド、コメント、または参照のいずれなのか、グループやフィールドが繰り返されるのか、グループが子の選択なのかどうか、グループやフィールドが省略可能なのかどうかがわかります。
ナビゲーション ツリーでは、メニューやツールバーを使用して、ノードの追加、削除、移動、コピー、または名前の変更を行うことができます(詳細については、Format Builder のメニュー バーの使い方およびツールバーの使い方を参照)。
次の表では、ナビゲーション ツリーに表示される各アイコンについて説明します。
Format Builder のメニュー バーの使い方 メニュー バーを使用すると、Format Builder の機能に迅速にアクセスできます。 図3-2 Format Builder のメニュー バー
使用できるメニュー項目は、ユーザがその時点までに実行したアクションとナビゲーション ツリーで現在選択しているノードによって異なります。使用できないメニュー項目は、メニュー内ではグレー表示されます。 メニューは、次のどちらかの方法で表示できます。
コマンドを実行するには、メニューから選択します。一部のコマンドは、メニューに示されているキーボード ショートカットを使用して実行することもできます(たとえば、〔Ctrl〕 + 〔key〕シーケンス)。Format Builder のメニューでは、各メニューで使用できるコマンドについて説明します。
ツールバーの使い方
また、よく使用されるコマンドには、ツールバーの各アイコンを使用してアクセスすることもできます。
図3-3 Format Builder のツールバー
コマンドを実行するには、ツールバーの該当するアイコンをクリックします。使用できないコマンドのアイコンは、グレー表示されます。 次の表では、Format Builder のツールバーの各アイコンについて説明します。
ショートカット メニューの使い方 ナビゲーション ツリーの項目を右クリックすると、その項目で最も頻繁に使用されるコマンドのメニューが表示されます。次の表では、ショートカット メニューから使用できるコマンドについて説明します。 注意: コマンドが使用できるかどうかは、ユーザが選択している項目およびその時点までに実行したアクションにより異なります。
ドラッグ アンド ドロップの使い方 ドラッグ アンド ドロップ機能を使って、ナビゲーションツリー内で項目のコピーや貼り付け、あるいは移動を行うことができます。 注意: ドラッグ アンド ドロップでは、コピーまたは移動の対象となるノードは、常に選択されたノードの兄弟として挿入されます。ノードをメッセージ フォーマット ノードにドラッグ アンド ドロップすると、そのノードは最後の子として挿入されます。 項目を移動する手順は次のとおりです。
項目をコピーして貼り付ける手順は次のとおりです。
メッセージ フォーマットの作成
メッセージ フォーマット定義ファイルを作成するには、まず、メッセージ フォーマット(メッセージ フォーマット ファイルのルート ノード)を作成します。
メッセージ フォーマットを作成する手順は次のとおりです。
図3-4 メッセージ フォーマットの詳細ウィンドウ
XML 要素の命名規則
メッセージ フォーマット ドキュメントのルート ノード、フィールド、グループ、および参照に割り当てる名前は、メッセージ フォーマット ドキュメントに基づいて生成される XML インスタンスでは、XML 要素名に変換されます。したがってこれらの名前は、次に示す XML の命名規則に準拠させる必要があります。
以下の文字列は有効な名前の例です。
以下の文字列は無効な名前の例です。
グループの作成
グループは、なんらかの関連があるフィールド、コメント、参照、およびその他のグループの集合です。たとえば、フィールド PAYDATE、HOURS、および RATE は、すべてPAYINFO グループを構成します。グループを、メッセージ フォーマット項目の子項目、別のグループの子、あるいはグループまたはフィールドの兄弟として作成できます。
グループを作成する手順は次のとおりです。
区切り記号の指定
Format Builder で正しい構文を入力して、区切り記号を指定できます。たとえば、タブ文字を区切り記号として指定する場合(‘¥u009’)、構成子 ¥t を入力して一致させます。
区切り記号として使用できる文字については、構成子を使用してその文字を区切り記号として指定する必要があります。次の表では、これらの文字に対応する構成子を示します。
詳細については、次の「URL」を参照してください。 http://java.sun.com/j2se/1.4/docs/api/java/util/regex/Pattern.html フィールドの作成 フィールドはアプリケーションにとってなんらかの意味を持つバイトのシーケンスです(たとえば、フィールド EMPNAME には従業員名が入力される)。フィールドは、メッセージ フォーマット ノードの子項目、グループの子、あるいはグループまたは別のフィールドの兄弟として作成できます。フィールド名は XML 出力で要素名として使用されるので、XML 要素の命名規則で説明する規則に準拠する必要があります。 フィールドを作成する手順は次のとおりです。
[Padding Mandatory] フィールド
WebLogic Integration の以前のバージョンでは、実行時に必須フィールドのデータが存在しない場合は、そのフィールドでの埋め込みは実行されませんでした。WebLogic Integration 7.0 では、デフォルト値が指定されている場合、XML - バイナリ変換中に、データを含まない必須フィールドにデフォルト値を使用してデータの埋め込みが行われます。デフォルト値が指定されておらず、しかも、変換時にフィールドにデータがない場合は、エラーが発生します。
注意: 必須フィールドの埋め込みは、バイナリ - XML 変換ではサポートされません。
あるグループが複数回指定されるが、データが提供されるのは 1 回の出現に対してだけの場合、この機能は役立ちます。デフォルト値が指定されている場合、必須フィールドの埋め込み機能が起動されると、データが提供されていないすべてのグループ出現を対象にして、デフォルト値を使用した埋め込みが行われます。
コメントの作成
コメントは、メッセージ フォーマットまたはメッセージ フォーマットによって変換されるデータについてのメモです。コメントはメッセージ フォーマット定義に含まれますが、ドキュメンテーションと参照用としてのみ使用されます。コメントに番号が付けられたり、コメントが XML やバイナリ データに変換されることはありません。コメントは、任意のメッセージ フォーマット、グループ、またはフィールドの子または兄弟として作成できます。
注意: 通常、コメントは説明対象のノードの前に置くことになっています。
コメントを作成する手順は次のとおりです。
図3-7 [Comment Detail] ウィンドウ
参照の作成
参照を使用すると、新しいコンテキストで既存のフィールドやグループのフォーマットを再利用できます。既存のフィールドまたはグループの参照を作成すると、同じフォーマットが使用されますが、参照フィールドまたは参照グループの [Optional] プロパティと [Occurrence] プロパティは変更できます。
たとえば、「請求先」 住所と「届け先 」住所がデータに含まれ、両方の住所で同じフォーマットを使用する場合、住所フォーマットは、1 度だけ作成して、そのフォーマットを参照することができます。すなわち、「請求先」住所の住所定義を作成し、「届け先 」住所では、その定義を参照できます。
注意: 参照項目には元の項目とまったく同じ名前が与えられます。そこで、参照の対象となるフィールドやグループを作成するときは、「住所」など、汎用的な名前を使用する必要があります。たとえば、前の例では、「請求先」グループの子として「住所」グループを作成し、「届け先」グループから「住所」グループを参照できます。
参照を作成する手順は次のとおりです。
パレットの操作
Format Builder のパレットを使用すれば、一般的に使用されるメッセージ フォーマット項目を格納して、必要に応じて、それらの項目をいつでもメッセージ フォーマット定義に挿入できます。
デフォルトのパレット(palette.xml)は、WebLogic Integration のインストール ディレクトリに保存されている MFL ドキュメントです。デフォルト パレットには、一般的なデータ フォーマット、リテラルおよび文字列があります。作成するメッセージ フォーマットでこれらの項目を使用することも、独自の項目をデフォルト パレットに追加することもできます。パレットで、独自の MFL ドキュメントを作成して使用したり、既存の MFL ドキュメントの項目を開いて使用したりすることもできます。
以下のトピックでは、パレットを使用するために必要な情報を提供します。
パレットを開く
パレットを開く手順は、次のとおりです。
ナビゲーション ツリーとパレットとの間では、項目をコピーできます。パレット内の項目は、ドラッグ アンド ドロップまたはショートカット メニューのコマンドを使用して整列できます。パレットの内容は、Format Builder を終了するときに自動的に保存されます。
注意: ナビゲーション ツリーとパレットとの間では、項目のコピーのみが許可されます。項目をウィンドウ間で移動することはできません。
パレットの [File] メニューの使い方
次の表で説明するコマンドは、パレットの [File] メニューから使用できます。
パレットのショートカット メニューの使い方 パレットの項目またはフォルダを右クリックすると、ショートカット メニューが表示されます。次の表では、ショートカット メニューから使用できるコマンドについて説明します。 注意: 選択した項目によっては、一部のコマンドを使用できない場合があります。
アクティブなメッセージ フォーマットの項目をパレットにコピーする Format Builder で現在開かれているドキュメントの項目をパレットにコピーする手順は次のとおりです。
注意: 別の項目の有無に依存する項目をパレットに追加することはできません。たとえば、フィールド参照やグループ参照を追加することや、Repeat Field が指定された項目を追加することは許可されません。
コメントの追加は可能ですが、コメントはユニークな名前を持たないのでパレット上で区別が付きにくいため、追加しないことをお勧めします。
項目のパレットから削除する
項目をパレットから削除する手順は次のとおりです。
パレットの項目をパレットからアクティブなメッセージ フォーマットにコピーする
パレットの項目を、Format Builder で現在開かれているメッセージ フォーマット ドキュメントにコピーする手順は次のとおりです。
メッセージ フォーマットの保存と格納
この節の手順に従ってメッセージ フォーマット ドキュメントをファイル システムに保存したり、リポジトリへの MFL ドキュメントの保存の説明に従って、ドキュメントをリポジトリに格納したりすることができます。
メッセージ フォーマット ファイルを初めて保存する手順は次のとおりです。
図3-10 [Save As] ダイアログ ボックス
既存のファイルの変更を保存するには、[File|Save] を選択します。
既存のファイルを新しい名前で保存するには、[File|Save As] を選択し、上記の手順 2 〜 4 を実行します。
既存のメッセージ フォーマット ファイルを開くかまたは検索する
この節の手順に従ってメッセージ フォーマット ドキュメントをファイル システム上で開いたり、リポジトリからの MFL ドキュメントの検索の説明に従って、リポジトリから検索したりすることができます。
既存のメッセージ フォーマット ファイルを開く手順は次のとおりです。
図3-11 [Open] ダイアログ ボックス
インターナショナライゼーション機能の使用
インターナショナライゼーション機能を含むように、個々のメッセージ ファイルのオプションを変更するか Format Builder のデフォルト オプションを設定することにより、Format Builder のインターナショナライゼーション機能を使用できます。詳細については、次のドキュメントを参照してください。
メッセージ フォーマットのオプションの変更
メッセージ フォーマット ファイルのオプションを変更する手順は次のとおりです。
Format Builder のオプションの設定
いくつかのオプションを設定すれば Format Builder の動作全体をコントロールできます。
Format Builder のオプションを設定する手順は次のとおりです。
Format Builder のメニュー
Format Builder では以下のメニューを使用できます。[File]、[Edit]、[Insert]、[View]、[Repository]、[Tools]、および、[Help]
以下の各節では、各メニューで使用できるコマンドについて説明します。
注意: ユーザがその時点までに実行したアクションおよびナビゲーション ツリーで選択している項目によっては、一部のコマンドは使用できないことがあります。
[File] メニュー
[File] メニューには次のコマンドがあります。
[Edit] メニュー [Edit] メニューには次のコマンドがあります。
[Insert] メニュー [Insert] メニューには次のコマンドがあります。
[View] メニュー [View] メニューには次のコマンドがあります。
[Repository] メニュー [Repository] メニューには次のコマンドがあります。 注意: リポジトリの使い方については、リポジトリ ドキュメントの検索と保存を参照してください。
[Tools] メニュー [Tools] メニューには次のコマンドがあります。
[Help] メニュー [Help] メニューには次のコマンドがあります。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |