BPEL SOA Suite Essentials for WLI Users

Oracle WLIファイル・コントロールとOracle File Adapterの比較

Daniel Amadei、Heidi Buelow著

Oracle WLIユーザーのためのOracle SOA Suite基礎講座シリーズの今回の記事では、Oracle WebLogic Integration(Oracle WLI)のファイル・コントロール機能とOracle BPEL Process Manager(Oracle BPEL PM)の対応する機能を比較します。

2009年5月公開

関連するダウンロード・リンク
 Oracle SOA Suite

[ 1ページ] [ 2ページ] [ 3ページ] [ 4ページ]

Oracle BPELでのXMLの受信、CSV形式への変換、FTPを使用したファイルの書込み

この最後のユースケースでは、ファイルを読み取り、カンマ区切り値(CSV)形式でデータを書き込みます。 今度は、ディレクトリ内のファイルをポーリングする方法を示します(最初のユースケースと同じメソッドを使用してファイルを読み取ることにより、 Oracle WLIの3つ目のユースケースとより厳密に対応づけることができます)。 プロセスではまず、ファイルをポーリングし、読取りサービスを使用してBPELプロセスを初期化します。 次に、CSV形式でデータをフォーマットし、FTPアダプタを使用してファイルを書き出します。

FTPサーバーを稼働し、このプロジェクトで使用するように構成しておく必要があります。 ローカルFTPをセットアップするには、サンプル・ファイル・フォルダからftpserver-1.0.0-M3.zipファイルを取得して、/tmp フォルダに解凍します。

次に、JAVA_HOME環境変数が、Java JDKのローカルのインストール場所に設定されていることを確認します。

FTPサーバーをWindowsのコマンド・プロンプトまたはUnixのシェルから起動するには、/tmp/ftpserver-1.0.0-M3/binディ レクトリに移動して、次のコマンドを実行します。

  • Windowsの場合
ftpd.bat res/conf/ftpd-typical.xml
                                    
  • Linuxの場合
ftpd.sh res/conf/ftpd-typical.xml
                                    

SOA Suiteサーバーはすでに、FTPクライアントを使用してFTPサーバーにアクセスするように構成されています。 この構成を新しく作成したFTPサーバーに合わせて変更します。 この手順は、コネクション・ファクトリの更新に、OC4JサーバーとWebLogicサーバーのどちらを使用する場合でもほぼ同じです。

  • OC4Jサーバー:アプリケーション・サーバー・コントロールをhttp://localhost:8888/emで 開きます。ただし、アプリケーション・サーバーがローカル・マシンではない場合は、サービスを配置したサーバーの名前でlocalhostを 置換します。 ユーザーoc4jadminでログインし、構成に応じたパスワードを入力します。 「 home」→「 applications」 →「 default」→「 FTP adapter」→「 Connection Factories」 →「 eis/DB/FTPAdapter」を選択して、この構成のプロパティを更 新します。 ホストには、FTPサーバーが稼働しているマシンのホスト名またはIPアドレスを入力します(SOA SuiteとFTPサーバーが同一マシン上に存在する場合はlocalhostと入力します)。 パスワード・フィールドにadminと 入力し、2ページ目に移動して、ユーザー名にadminと入力します。 「 Apply」 をクリックします。

  • WebLogic Server:サーバー・コンソールをhttp://localhost:7001/consoleで 開きます。ただし、WebLogicサーバーがローカル・マシンではない場合は、当該サーバーのホスト名とポート番号でlocalhost:7001を 置換します。 左側のナビゲーション・バーで、「 Deployments」を選択 します。 「 FTPAdapter」→「 Configuration」→「 Outbound Connection Pools」を選択します。 javax.resource.cci.ConnectionFactoryの 右側のプラス記号「 +」 を選択して開き、eis/Ftp/FtpAdapterがリストに含まれていることを確認します。 「 eis/Ftp/FtpAdapter」 を選択してプロパティを更新します。 ホストには、FTPサーバーが稼働しているマシンのホスト名またはIPアドレスを入力します(SOA SuiteとFTPサーバーが同一マシン上に存在する場合はlocalhostと入力します)。 パスワード・フィールドにadminと 入力し、ユーザー名にadminと入力します。 「 Save」 をクリックします。

では、まず新しいBPELプロジェクトを作成します。 JDeveloperでアプリケーションを右クリックして、「 New Project」を選択します。 GeneralのProjectsで、プロジェクト・タイプとして「 BPEL Process Project」を選択します。 プロセス名としてTransformXmlToRawDataAndWriteToFTPを 入力します。 テンプレート・タイプとして「 Empty BPEL Process」 を選択します。 「 Finish」を選択します。 プロジェクトが作成されます。

bpel_03_read2.png

Receive」アクティビティを Drop Activity Hereボックスにドラッグします。 正しい位置に移動するとアクティビティが黄色でハイライトされます。 左矢印をパートナー・リンクにドラッグして、ReceiveアクティビティをreadPartnerSchemaパー トナー・リンクと連結します。 Receiveプロパティのダイアログが開きます。 パートナー・リンクと操作は自動的に入力されています。 名前にReceive_Stocksと 入力し、「 Auto-Create Variable」ボタンを選択します。 Create Variableダイアログで、変数名をstocksXMLに 変更して、「 OK」をクリックします。 Receiveダイアログで、「 Create Instance」チェック・ボックスをオンにして、「 OK」をク リックします。

次に、CSVファイルを書き出すためのサービスを作成します。 FTPを使用してファイルを書き出します。

FTPアダプタを、BPELデザイン画面の右側にある Servicesペ インにドラッグします。 ウィザードが開きます。 「 Next」をクリックして、 手順1に進みます。 サービス名にFTPFileControlと入力し、「 Next」 をクリックします。

bpel_03_ftp1.png

ウィザードのこのページでは、FTP JNDI名を設定します。 これは、SOA Suiteのサーバー管理機能で構成したFTPです。 デフォルト値eis/FTP/FTPAdapterを受け入れ、前に編集した FTPセットアップを使用します。

bpel_03_ftp2.png

ファイル・タイプとして「 ASCII」を、操作タイプとして「 Put」を選択し、「 Next」 をクリックします。 ファイルの出力先ディレクトリを入力します。 このケースでは、出力先ディレクトリはFTPサーバー構造内に存在していなければなりません。 スラッシュ( /) を入力します。これにより、提供のサンプルFTPサーバーのデフォルトの場所にファイルが書き出されます。 File Naming ConventionにpartnerStocks%SEQ%.csv_と 入力します。 そのほかの値はデフォルトのまま変更せず、「 Next」をクリック します。

bpel_03_ftp3.png

次に、出力形式を設定します。 「 Define Schema For Native Format」ボタンを選択すると、Native Format Builderウィザードが開始されます。 手順1では、「 Create new native format」および「Delimited」ラジオ・ ボタンを選択して、「 Next」をクリックします。

Browse」ボタンを使用して、サンプル・ファイル・ディ レクトリにあるstocks.csvファイルを開きます。 下部のウィンドウにファイル内のテキストが表示されます。 「 Next」を選択します。

v

File contains multiple record instances」を選択して、「 Next」をクリックします。

bpel_03_write4.png

使用する名前空間を入力し、複数レコードの要素名にStocks、単一レコードの要素名にStockと 入力して、「 Next」をクリックします。

bpel_03_write5.png

Next」を3回クリックして形式指定のデフォルト値を受け 入れ、「 Finish」をクリックします。

bpel_03_write6.png

bpel_03_write7.png

bpel_03_write8.png

アダプタ・ウィザードに戻ると、指定したファイルの文字列データ定義の、新規に作成されたxsdファイルが表示されます。 「 Next」、「 Finish」 の順にクリックします。

bpel_03_write9.png

パートナー・リンク・ダイアログの「 OK」を選択します。

v

ここで、writeサービスを呼び出して、正しいメッセージ・タイプで必要な変数を作成してみます。 そのあと、入力データを出力データに変換して、終了します。

Invoke」アクティビティを Receiveアクティビティの直後にドラッグします。 InvokeアクティビティをFTPFileControlパー トナー・リンクに連結すると、 Invokeダイアログが開きます。

bpel_03_invoke3.png

InvokeにInvoke_FTPFileControlという名前をつけ、 Input Variableボックスの右側にある「 Automatically Create Input Variable」ボタンを選択し ます。

変数名をstocksCSVに変更します。 「 OK」 をクリックします。 「 OK」をクリックして、Invokeプロパティを設定しま す。

bpel_03_invoke4.png

次に、ファイルから読み取ったデータを、FTPの入力に必要な形式に変換する必要があります。

Transform」アクティビティをドラッグして、 Receiveアクティビティと Invokeア クティビティの間にドロップします。 ソースを「 stocksXML」に、ターゲットを「 stocksCSV」 に設定します。 変換ファイル名を入力して、「 Create」をクリックします。

bpel_03_transform00.png

今度は、フィールド名が異なるため、各フィールドを手動で連結する必要があります。 3つのフィールドを連結したあと、StocksをStocksに連結すると、for-each XSLT構造体が作成されます。または、下図のような結果になるように手動で構造体を追加します。 「 Save All」をクリックします。

bpel_03_transform1_small.png

これで、このユースケースの実装は完了しました。

FTPサーバーが稼働していることを確認したら、配置が可能です。 このプロセスは、ファイルをポーリングして、そのファイルが表示されるまで待ちます。 前のユースケースの出力ファイルpartnerStocks_1.xmlが、 このユースケースの入力ファイルになります。あるいは、サンプル・ディレクトリに用意されているpartnerStocks.xmlを 入力ファイルとして使用することもできます。 このプロセスの入力ディレクトリに、入力ファイルを移動またはコピーしてください。 ファイルが消えるのを待ち、FTPのデフォルトの出力ディレクトリ\tmp\ftpserver-1.0.0-M3\res\homeに、 新しい出力ファイルが作成されているかどうかを確認します。 ファイルの内容を表示します。 BPELコンソールで、監査証跡を表示することもできます。

bpel_03_outputfile.png

このユースケースは、ファイル内データの形式を変更する方法を示しています。 BPELプロセスを拡張して、別の方法でデータを操作することもできます。

以上で、ファイル・アダプタのさまざまな機能を示す3つのユースケースが完成しました。 この機能は、マウスのポイント/クリックによる宣言的な編集操作によってきわめて簡単に作成できます。 さまざまな形式のファイルの読取りと書込みをおこない、BPELプロセス内で目的の形式のデータに変換できます。

主要なポイントと推奨事項

この記事では、Oracle WLIとOracle BPEL PMについて、同期ファイル操作とデータ変換の各機能に焦点を当てて説明しました。

以下の表は、各機能がOracle WLIとOracle BPEL PMでどのように実現されているかに注目し、この記事で実際に使用した内容をまとめたものです。 どちらの製品も必要とされる機能を備えています。

機能 Oracle WLIでの実現方法 Oracle BPELでの実現方法
同期的なファイルの読取り ファイル・コントロール ファイル・アダプタ
同期的なファイルの書込み ファイル・コントロール ファイル・アダプタ
非同期のファイルの読取り(ポーリング) イベント生成により実装(別の記事で説明) ファイル・アダプタ
FTPのサポート ファイル・コントロール FTPアダプタ
同期的なファイル操作: コピー、削除、名前の変更 ファイル・コントロール ファイル・アダプタ
XMLのサポート XMLBeansの使用 ネイティブXML
特定の形式をもつコンテンツのサポート MFLの使用 ファイル・アダプタ

経験豊かなOracle WLIユーザーであれば、Oracle WLIのすべてのファイル処理機能は、Oracle BPEL PMにも用意されていることがわかるでしょう。

Oracle BPEL Process Managerによる設計では、ポイント/クリック操作による宣言型のユーザー・インタフェースが使用できます。これにより、新規ユーザーでも Oracle SOA Suiteの操作を簡単かつ迅速に習得し、すぐに使いこなせるようになります。


著者について
Daniel Amadei Daniel Amadeiは、 SOAおよび統合テクノロジーを専門とするシニア・コンサルタントです。 ここ数年はSOAを、Javaテクノロジーについては1999年から研究に取り組んでいます。BEA認定SOAアーキテクト、Sun認定エンタープライ ズ・アーキテクト(SCEA)などの資格を保有しています。
Heidi Buelow Heidi Buelowは、 SOAテクノロジーを専門とするOracle製品マネージャーです。 10年以上にわたり、ビジネス・プロセス管理システムのミドルウェアの開発に従事してきました。