BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA
 ドキュメントのダウンロード   サイト マップ   用語集 
検索

WebLogic Integration データの変換

 前 次 目次 索引 PDFで表示  

実行時コンポーネントの使用法

WebLogic Integration は、com.bea.wlxt クラスを使用して、実行時データ変換をサポートします。この章では、このクラスを Java クラスと呼びます。Java クラスでは、バイナリ フォーマットと XML フォーマットとの間のデータ変換にさまざまな方法が使用されます。この Java クラスは、BPM (Business Process Management) のワークフローから開始される WebLogic Server を使用して EJB にデプロイするか、任意の Java アプリケーションに統合できます。

データ変換 Java クラスには、バイナリ データを XML に変換する parse() メソッドがいくつかあります。また、データ変換実行時コンポーネントには、XML データをバイナリ フォーマットに変換する serialize() メソッドもいくつかあります。バイナリ データ フォーマットは MFL ドキュメントを通じて記述されます。WebLogic Integration では、MFL ドキュメントを使用してバイナリ データを XML から読み込み、XML に書き込みます。MFL ドキュメントは parse() メソッドまたは serialize() メソッドで URL を使用して指定します。

以下の節では、WebLogic Integration 実行時データ変換ツールを使用してバイナリ データを XML に解析し、XML をバイナリにシリアライズする方法を示すサンプル コードを示します。

 


バイナリから XML へ

次のコード リストでは、parse() メソッドを使用してバイナリ データ ファイルを XML に解析しています。

コード リスト 6-1 バイナリから XML への Parse() メソッドのサンプル

1 import com.bea.wlxt.*;
2 import org.w3c.dom.Document;
3 import java.io.FileInputStream;
4 import java.net.URL;
5
6 public class Example
7 {
8 public static void main(String[ ] args)
9 {
10 try
11 {
12 WLXT wlxt = new WLXT();
13 URL mflDocumentName = new URL(“file:mymfl.mfl”);
14 FileInputStream in = new FileInputStream(“mybinaryfile”);
15
16 Document doc = wlxt.parse(mflDocumentName, in, null);
17 String xml = wlxt.getXMLText(doc, 0, 2);
18 System.out.println(xml);
19 }
20 catch (Exception e)
21 {
22 e.printStackTrace(System.err);
23 }
24 }
25}

このコードの次のシーケンスに注意してください。

  1. 行 12 で、Java クラスの新しいインスタンスがインスタンス化されています。

  2. 行 13 で、以前に Format Builder で作成された MFL ファイルの URL (Uniform Resource Locator) が作成されています。

  3. 行 14 および 15 で、mybinaryfile のバイナリ データに対する FileInputStream が作成されています。

  4. 行 16 で MFL ドキュメントの URL およびバイナリ データのストリームが、parse メソッドに渡されています。

  5. 行 17 以降で、parse メソッドにより、バイナリ データが W3C Document オブジェクトのインスタンスにコンバートされます。このインスタンスは、さらに getXMLText() メソッドを使用して XML テキストにコンバートされます(別の方法として、parse メソッドにより、バイナリ データを W3C Document オブジェクトのインスタンスにコンバートした後、W3C DOM API を通じてそのオブジェクトを直接操作することもできる)。

DTD を参照する XML 生成

WebLogic Integration のデータ変換ツールの parse() メソッドを使用して、DTD (Document Type Definition : 文書型定義) または XML スキーマで生成された XML ドキュメント内で DTD または XML スキーマへの参照を含むことができます。次のリストは、この機能を示します。

コード リスト 6-2 DTD 参照による XMLの生成のサンプル

1 import com.bea.wlxt.*;
2 import org.w3c.dom.Document
3 import java.io.FileInputStream;
4 import java.net.URL;
5
6 public class Example2
7 {
8 public static void main(String[ ] args)
9 {
10 try
11 {
12 WLXT wlxt = new WLXT();
13 URL mflDocumentName = new URL(“file:mymfl.mfl”);
14 FileInputStream in = new FileInputStream(“mybinaryfile”);
15
16 Documentdoc=wlxt.parse(mflDocumentName,in,"mydtd.dtd",
17 null);String xml = wlxt.getXMLText(doc, 0, 2);
18 System.out.println(xml);
19 }
20 catch (Exception e)
21 {
22 e.printStackTrace(System.err);
23 }
24 }
25 }

リスト6-1リスト6-2 とでは、違いが見られるのは、行 16 だけです。つまり、この行 16 では、DTD ファイル(mydtd.dtd)を指定できる別の parse メソッドが呼び出されているため、生成される XML ドキュメントでは、DTD ファイルが参照されます。次の例では、生成される XML ドキュメントの DOCTYPE ステートメントを示します。ここでは、mydtd.dtd を参照しています。

<?xml version=”1.0”?>
<!DOCTYPE someRootNode SYSTEM ‘mydtd.dtd’>

このような parse メソッドにより、生成される XML に XML スキーマを参照させることができます。

Debug Writer の指定

WebLogic Integration でサポートされるすべての parse() メソッドでは、最後のパラメータとして、PrintWriter を渡すことができます。このパラメータが null でない場合、WebLogic Integration はデバッグ メッセージを指定した PrintWriter に印刷します。MFL ドキュメントとバイナリ データが一致しないとき変換をデバッグする必要がある場合に、この印刷が役立ちます。

デバッグ メッセージを印刷したくない場合、前のリストに示すように、このパラメータに null を渡します。

コード リスト 6-3 Debug Writer を渡す例

1 import com.bea.wlxt.*;
2 import org.w3c.dom.Document
3 import java.io.FileInputStream;
4 import java.io.PrintWriter;
5 import java.net.URL;
6
7 public class Example2
8 {
9 public static void main(String[ ] args)
10 {
11 try
12 {
13 WLXT wlxt = new WLXT();
14 URL mflDocumentName = new URL(“file:mymfl.mfl”);
15 FileInputStream in = new FileInputStream
16 (“mybinaryfile”);
17 Document doc=wlxt.parse(mflDocumentName,in,new
PrintWriter(System.out,true));
18 String xml = wlxt.getXMLText(doc, 0, 2);
19 System.out.println(xml);
20 }
21 catch (Exception e)
22 {
23 e.printStackTrace(System.err);
24 }
25 }
26 }

行 17 で、parse() メソッドの最後のパラメータとして、PrintWriter オブジェクトが System.out PrintStream から呼び出されます。このオブジェクトの呼び出しにより、次のようなデバッグ メッセージがコンソールに表示されます。

コード リスト 6-4 デバッグ出力

Parsing FieldFormat NAME at offset 0
Field NAME Found delimiter [;]
Field NAME type String offset 0 value=[John Doe]
Done FieldFormat NAME
Group PAYINFO repeat until delim=[*]
Parsing 1st instance of StructFormat PAYINFO at offset 18
Parsing FieldFormat PAYDATE at offset 18
.
.
.

 


XML からバイナリへの変換

次のサンプル コード リストは、WebLogic Integration ツールを使用して XML テキストをバイナリ フォーマットにコンバートする方法を示します。

コード リスト 6-5 XML からバイナリへの変換のサンプル

1 import com.bea.wlxt.*;
2 import java.io.FileInputStream;
3 import java.io.FileOutputStream;
4 import java.net.URL;
5
6 public class Example4
7 {
8 public static void main(String[ ] args)
9 {
10 try
11 {
12 WLXT wlxt = new WLXT();
13 URL mflDocumentName = new URL(“file:mymfl.mfl”);
14 FileInputStream in = new FileInputStream(“myxml.xml”);
15 FileOutputStream out = new FileOutputStream(“mybinaryfile”);
16
17 wlxt.serialize(mflDocumentName, in, out, null);
18 out.close();
19 }
20 catch (Exception e)
21 {
22 e.printStackTrace(System.err);
23 }
24 }
25 }

このコードの次のシーケンスに注意してください。

  1. 行 12 で、Java クラスの新しいインスタンスが作成されています。

  2. 行 13 で、MFL ファイルの URL が作成され、XML テキストを含むファイルに対する FileInputStream が作成されています。

  3. FileOutputStream もインスタンス化され、XML からバイナリへの変換によって生成される。バイナリ データが格納されます。

  4. 行 17 では serialize() メソッドが呼び出され、FileInputStream 'in' (myxml.xml) に含まれる XML データが、'mymfl.mfl' に記述されるバイナリ フォーマットに変換されます。生成されるこのバイナリ データは FileOutputStream ‘out’ (ファイル ‘mybinaryfile’) に書き込まれます。

ドキュメント オブジェクトのバイナリ フォーマットへの変換

次のサンプル リストは、W3C ドキュメント オブジェクトをバイナリ フォーマットに変換する方法を示します。

コード リスト 6-6 ドキュメント オブジェクトのバイナリ フォーマットへの変換

1  import com.bea.wlxt.*;
2 import java.io.FileOutputStream;
3 import java.net.URL;
4
5 import org.w3c.dom.Document;
6
7 import org.apache.xerces.parsers.DOMParser;
8
9 public class Example5
10 {
11 public static void main(String[] args)
12 {
13 // XML をドキュメント オブジェクトに解析する
14 Document doc = null;
15 try
16 {
17 DOMParser parser = new DOMParser();
18 parser.parse("myxml.xml");
19 doc = parser.getDocument();
20 }
21 catch (Exception e)
22 {
23 e.printStackTrace(System.err);
24 System.exit(1);
25 }
26
27 try
28 {
29 WLXT wlxt = new WLXT();
30 URL mflDocumentName = new URL("file:mymfl.mfl");
31 FileOutputStream out = new
FileOutputStream("mybinaryfile");
32
33 wlxt.serialize(mflDocumentName, doc, out, null);
34 out.close();
35 }
36 catch (Exception e)
37 {
38 e.printStackTrace(System.err);
39 }
40 }
41 }

このサンプルは、Java クラスの serialize() メソッドにドキュメント オブジェクトを 指定する方法を示します。アプリケーションにすでに Document オブジェクト形式の XML が含まれる場合や、DOM API を使用して Document オブジェクトが作成済みであればこの方法が便利です。行 14 〜 25 では、ファイル myxml.xmlに含まれる XML テキストが XML パーサを使用して Document オブジェクトに変換されます。このドキュメント オブジェクトは行 33 に渡され、MFL ファイル「mymfl.mfl」によって指定されたバイナリ フォーマットにコンバートされます。

Debug Writer の指定

serialize メソッドは、デバッグ メッセージのロギング用の PrintWriter パラメータ指定もサポートします。PrintWriter オブジェクトで serialize メソッドを呼び出すサンプルを次に示します。

wlxt.serialize(mflDocumentName, in, out, new
PrintWriter(System.out, true));

この呼び出しにより、コンソールには、デバッグ メッセージが、次のように表示されます。

コード リスト 6-7 デバッグ出力

Processing xml and mfl nodes tcp1
Processing xml node NAME
Checking MFL node NAME
Found matching MFL node NAME
Writing field NAME value John Doe
Processing xml node PAYINFO
Checking MFL node PAYINFO

 


XML から XML への変換

WebLogic Integration データ変換ツールには、XSLT を介して XML を変換するメソッドもあります。XSLT は、このようの変換のために設計された言語です。Java クラスは、 XSLT スタイルシートを XML ドキュメントに適用する transform() メソッドを提供します。XSLT スタイルシートは、XML ドキュメントのノードで実行される変換を記述する XML ドキュメントです。スタイルシートを使用すれば、XML ドキュメントを HTML、PDF、または別の XML 固有言語に変換できます。

次のサンプル コード リストは、Java クラスによって提供されるメソッドの 1 つを使用した XML ドキュメントの変換方法を示します。

コード リスト 6-8 XML から XML への変換

1  import com.bea.wlxt.*;
2 import java.io.FileInputStream;
3 import java.io.FileOutputStream;
4 import java.net.URL;
5
6 import org.xml.sax.InputSource;
7
8 public class Example7
9 {
10 public static void main(String[] args)
11 {
12
13 try
14 {
15 WLXT wlxt = new WLXT();
16 URL stylesheet = new URL("file:mystylesheet.xsl");
17 FileInputStream in = new FileInputStream("myxml.xml");
18 FileOuputStream out = new FileOutputStream
19 (“myoutputfile”)
20
21 wlxt.transform(new InputSource(in), out, stylesheet);
22
23 out.close();
24 }
25 catch (Exception e)
26 {
27 e.printStackTrace(System.err);
28 }
29 }
30 }

このコードの次のシーケンスに注意してください。

  1. 行 15 で WLXT のインスタンスが作成されます。

  2. 行 16 で、すでに作成されている XSLT スタイルシートの URL が作成されます。

  3. 行 17で、、XML テキストを含むファイルに対して FileInputStream が作成されます。

  4. XSLT 変換によって作成されるテキストに対する FileOutputStream も作成されます。

  5. 行 21 で Java クラスの transform() メソッドが呼び出され、myxml.xml ファイル内の XML が、mystylesheet.xsl スタイルシートに従って変換されます。変換の出力は myoutputfile ファイルに書き込まれます。

初期化メソッド

Java クラスは、MFL ドキュメントと XSLT スタイルシートを前処理するためのメソッドをいくつか提供します。これらのドキュメントが前処理されると、内部的にキャッシュされ、parse()serialize()、または transform() メソッドで参照されるときに再利用されます。MFL ドキュメントや XSLT スタイルシートが事前に処理されてキャッシュされるため、前処理により、これらのメソッドのパフォーマンスは大幅に改善されます。この方法は、同じ MFL ドキュメントや XSLT スタイルシートが繰り返し使用される EJB オブジェクト、またはサーブレットでデータ変換が使用されるときに特に便利です。

Java クラスでは、java.util.Properties オブジェクトまたは Properties ファイルのファイル名をパラメータに使用する init() メソッドが 2 つ提供されます。この init() メソッドは、WLXT.stylesheets および WLXT.MFLDocuments のプロパティを Properties オブジェクトから取り出します。各プロパティには前処理とキャッシュの対象となるドキュメントをカンマで区切ったリストが含まれることになっています。これらのドキュメントが後で parse()serialize()、または transform() メソッドで参照される場合、前処理されたバージョンがキャッシュから取り出されます。

次のサンプル リストは、init()メソッドを使用して、Java クラスのインスタンスを初期化する方法を示します。

コード リスト 6-9 myconfig.cfg プロパティ ファイル

WLXT.MFLDocuments=file:mymfl.mfl
WLXT.stylesheets=file:mystylesheet.xsl

コード リスト 6-10 myconfig.cfg ファイルを使用した init() メソッドのサンプル ソース コード

1  import com.bea.wlxt.*;
2 import java.io.FileInputStream;
3 import java.io.FileOutputStream;
4 import java.net.URL;
5
6 import org.xml.sax.InputSource;
7 import org.w3c.dom.Document;
8
9 public class Example8
10 {
11 public static void main(String[ ] args)
12 {
13
14 WLXT wlxt = null;
15
16 // プロパティ ファイルを使用して WLXT を初期化する
17 try
18 {
19 wlxt = new WLXT();
20 wlxt.init("myconfig.cfg");
21 }
22 catch (Exception e)
23 {
24 e.printStackTrace(System.err);
25 }
26
27 // バイナリ データを XML に解析する
28 Document doc = null;
29 try
30 {
31 URL mflDocumentName = new URL("file:mymfl.mfl");
32 FileInputStream in = new FileInputStream("mybinaryfile");
33
34 doc = wlxt.parse(mflDocumentName, in, null);
35 }
36 catch (Exception e)
37 {
38 e.printStackTrace(System.err);
39 }
40
41 try
42 {
43 URL stylesheet = new URL("file:mystylesheet.xsl");
44 FileOutputStream out = new FileOutputStream
45 (“myoutputfile”)
46
47 wlxt.transform(doc, out, stylesheet);
48
49 out.close();
50 }
51 catch (Exception e)
52 {
53 e.printStackTrace(System.err);
54 }
55 }
56 }

行 20 では、init() メソッドにより、myconfig.cfg ファイルでリストされたドキュメントをオブジェクトが前処理します。このため、2 つのドキュメント(MFL ドキュメントとスタイルシート)は、処理が済んでおりオブジェクト内にキャッシュされてから、次のように指定されます。

Java API のマニュアル

Java クラスの使用法に関する詳しい説明については、WebLogic Integration Javadoc で com.bea.wlxt を参照してください。Javadoc は、WebLogic Integration をインストールしたディレクトリの下にある docs¥apidocs ディレクトリにもあります。

Business Process Management への実行時プラグイン

Business Process Management (BPM) の Data Integration プラグインは、従来のシステムで使用されていたバイナリ フォーマットと XML との間でのデータ変換をサポートすることにより、アプリケーション間での情報交換を簡単にします。言い換えれば、Data Integration プラグインが提供する BPM アクションを使用して、XML とバイナリ間での変換機能にアクセスできます。

また、Data Integration プラグインは、次の機能も提供します。

次の図に、WebLogic Integration Data Integration ツールと BPM の関係を示します。

図6-1 BPM への実行時プラグイン


 

 

ページの先頭 前 次