Integration コントロールを使用する

     前  次    目次     
ここから内容

ファイル コントロール

注意 : ファイル コントロールは、WebLogic Integration の使用許諾を受けた場合にのみ、BEA Workshop for WebLogic Platform で使用できます。

ファイル コントロールを使用すると、ファイル システム内でファイルの読み込みや書き込み、または追加を簡単に行えます。この節のトピックでは、ファイル コントロールの使用方法について説明します。コントロール インスタンスをビジネス プロセスに追加する方法については、「ビジネス プロセスでコントロールを使用する」を参照してください。

 


この節に含まれるトピック

概要 : ファイル コントロール

ファイル コントロールの概要を示します。

新しいファイル コントロールを作成する

BEA Workshop for WebLogic Platform のグラフィカルな設計インタフェースを使用して、新しいファイル コントロールを作成する方法について説明します

ファイル コントロールを使用する

ビジネス プロセスでファイル コントロールを使用する方法について説明します。デフォルトのメソッドやカスタマイズ可能なメソッドについて説明します。

サンプル : ファイル コントロール

ビジネス プロセスのコンテキストでファイル コントロールのサンプルを示します。

概要 : ファイル コントロール

ファイル コントロールを使用すると、ファイル システム内でファイルの読み込みや書き込み、または追加を簡単に行えます。ファイルの型は、XmlObject、RawData (バイナリ)、String のいずれかです。ファイル コントロールを作成するときに、指定したディレクトリに格納されているファイルに一致するファイル タイプを選択します。

また、ファイル コントロールは、コピー、名前の変更、削除などのファイル操作をサポートしています。特定のディレクトリに格納されているファイルのリストを取得することもできます。

新しいファイル コントロールを作成する

ファイル コントロールはファイルに対する操作を実行します。各ファイル コントロールは特定の操作を実行するようにカスタマイズします。

ここでは、新しいファイル コントロールの作成方法について説明し、Java ファイル内のファイル コントロールの宣言の例を示します。

コントロール インスタンスをビジネス プロセスに追加する方法については、「ビジネス プロセスでコントロールを使用する」を参照してください。

新しいファイル コントロールを作成する

新しいファイル コントロールを作成してビジネス プロセスに追加できます。新しいファイル コントロールを定義するには

  1. [パッケージ・エクスプローラー] ペインで、ファイル コントロールを追加するビジネス プロセス (Process.java ファイル) をダブルクリックします。ビジネス プロセスがデザイン ビューに表示されます。
  2. データ パレット をクリックし、ドロップダウン リストから Integration コントロールを選択して、アプリケーションの統合に使用するコントロールのリストを表示します。
  3. 注意 : [データ パレット] ビューが BEA Workshop for WebLogic Platform に表示されない場合は、メニュー バーArrow symbol[ウィンドウArrow symbolビューの表示Arrow symbolデータ パレット] をクリックします。
  4. [ファイル] を選択します。
  5. [Insert control: ファイル] ダイアログ ボックスが表示されます。

  6. [Insert control: ファイル] ダイアログ ボックスで、以下の情報を入力します。
    • [フィールド名] に、ビジネス プロセスから新しいファイル コントロール インスタンスにアクセスするときに使用する変数の名前を入力します。有効な Java 識別子を入力する必要があります。
    • [挿入位置] で、フィールド名をプロセス ファイルに挿入するポイントをドロップダウン リストから選択します。
    • これをコントロール ファクトリにするかどうかを決定し、[これを実行時に複数のインスタンスを作成できるコントロール ファクトリにする] チェック ボックスをチェックするか、チェックをはずします。コントロール ファクトリの詳細については、「コントロール ファクトリ : コントロールをまとめて管理する」を参照してください。
    • [次へ] をクリックします。
    • [コントロールの作成] ダイアログ ボックスが表示されます。

  7. [コントロールの作成] ダイアログ ボックスで、以下の情報を入力します。
    • [名前] フィールドに新しいコントロール拡張ファイルの名前を入力します。
    • 現在のプロジェクトのプロパティに設定されているようにコメントを追加するかどうかを決定し、[コメントの生成] チェック ボックスをチェックするか、チェックをはずします。
    • [次へ] をクリックします。
    • [Insert control: ファイル] ダイアログ ボックスが表示されます。

  8. [コントロールの挿入 - ファイル] ダイアログ ボックスで、以下の情報を入力します。
    • [ディレクトリ名] フィールドに、ファイル コントロールがファイルを探すディレクトリの名前を入力します。または、[参照] ボタンをクリックして、ハード ディスク上のディレクトリを探すこともできます。
    • ディレクトリ名は、ドライブとパスを指定した、ディレクトリの絶対パス名です。たとえば、有効なディレクトリ名は以下のとおりです。

      C:\directory  (Windows)
      /directory  (Unix)
      \\servername\sharename\directory  (Win32 UNC)

      ピリオド (.) を入力して現在の作業ディレクトリを指定することもできます。[ディレクトリ名] フィールドにフォワード スラッシュ (/) を入力すると、次のように解釈されます。

      • UNIX システム - ルート ディレクトリ
      • Windows システム - ユーザ ディレクトリのルート (たとえば、ユーザ ディレクトリが C:\bea の場合は C:)。
      • [ディレクトリ名] フィールドは必須です。[ディレクトリ名] フィールドに何も指定しないとエラーが発生します。

        注意 : ローカルでファイルに書き込むとき、指定したディレクトリがまだない場合は、ディレクトリが作成されて、新しいディレクトリにファイルが書き込まれます。
    • [ファイル名フィルタ] フィールドに、ファイル名フィルタ (ファイル名またはファイル マスク) を入力します。読み込み、書き込み、および追加操作の対象となるファイル名を使用します。このファイル名のフィールドにアスタリスク (*) などのワイルドカード文字を指定した場合、ファイル マスクとして使用されます。ワイルドカード文字は、ディレクトリ内のファイルのリストを取得するために指定します。その他の操作ではワイルドカード文字を使用できません。
    • [ファイル名フィルタ] フィールドはコントロールの挿入時には省略可能ですが、省略した場合は、ファイル操作の実行前にこのプロパティが動的に設定される必要があります。

    • [データのタイプ] メニューを使用して、ファイルに含まれるデータの型を選択します。ファイル タイプは、[ディレクトリ名] フィールドで指定したディレクトリに格納されているファイルのタイプを表します。この型に基づいて、ファイル コントロールの適切なメソッド (write(String data)write(XmlObject data)、または write(RawData data) など) が生成されます。たとえば、ディレクトリに XML ドキュメントが格納されている場合は、コントロールで生成される read/write メソッドが XmlObject 変数を受け付けるように、型を XmlObject に設定する必要があります。RawData および String 型の場合も同様です。
    • String または XmlObject 型のファイルを操作する場合は、必要に応じて、[エンコーディング] フィールドに文字セット コードを入力することで文字セット エンコーディングを指定できます。このオプションは、[ディレクトリには、処理が必要な大きなファイルが格納される] オプションと一緒には使用できません。
  9. 指定されたディレクトリに一度に 1 行ずつ読み込む必要のあるファイルが格納されている場合は、[ディレクトリには、処理が必要な大きなファイルが格納される] ボタンを選択します。大きなファイルをサポートする readLine() メソッドが作成されます。
  10. レコード サイズまたは区切り文字列を指定して、行を定義できます。

    • [レコード サイズ] フィールドにレコード サイズを入力すると、ファイルは一度にそのバイト数ずつ読み込まれます。
    • 扱っているファイルが String 型の場合に [区切り文字列] フィールドに文字を入力すると、それを区切り文字列としてレコードの終わりが定義され、ファイルはそのレコード単位で読み込まれます。[区切り文字列を含めてファイル コンテンツを読み込む] をクリックすると、レコード内に区切り文字列も含まれるようになります。
    • 警告 : 処理されるファイルに指定した区切り文字列が存在しない場合、アプリケーションの動作は予期されないものになります。

      レコード サイズまたは区切り文字列が指定されていない場合、ファイルは一度に 1 行ずつ処理されます。ライン フィード ('\n')、キャリッジ リターン ('\r')、またはキャリッジ リターンとそのすぐ後に続くライン フィードのいずれかがあると、1 行の終わりと見なされます。このファイル処理方法は、どのサイズのファイルでも使用できます。

      注意 : 行を定義する際に、レコード サイズと区切り文字列の両方を指定することはできません。
  11. [終了] をクリックします。

ファイル コントロールのメソッド

ファイル コントロールで使用できるメソッドについては、FileControl インタフェースを参照してください。

サンプル : ファイル コントロールの宣言

新しいファイル コントロールを作成すると、その宣言が Java ファイルに表示されます。[ディレクトリには、処理が必要な大きなファイルが格納される] オプションを選択した場合の宣言のサンプルは以下のコードのようになります。

package requestquote;
import com.bea.control.FileControl;
import org.apache.beehive.controls.api.bean.ControlExtension;
import com.bea.wli.control.dynamicProperties.FileControlPropertiesDocument;
/*
 * カスタム ファイル コントロール。  
 */
@ControlExtension
@FileControl.FileInfo(directoryName = "C:/bea/")
public interface FileCntrl extends com.bea.control.FileControl {
	@FileControl.IOOperation(ioType = FileIOType.READLINE, delimiterString = "")
	String readline();
	static final long serialVersionUID = 1L;
	public FileCntrl create();
}

@jc:file および @jc:file-operation アノテーションに示される実際の属性は、コントロールの挿入時に使用したダイアログ ボックスで入力した値によって異なります。

@FileControl アノテーションは、ファイル コントロールの動作を制御します。@FileControl アノテーションのすべての属性は省略可能で、それぞれにデフォルト値があります。

詳細については、FileControl アノテーションを参照してください。

上のサンプルの TaxControlFile というファイル コントロールは、FileControl の拡張として宣言されています。@FileControl.Operation アノテーションでは、ファイル操作が readline (tax_file.txt をレコード単位で読み込む) であり、レコード サイズが指定されています。

ファイル コントロールを使用する

ファイル コントロールは、ファイルの読み込み、ファイルの書き込み、ファイルへのデータの追加など、ファイルに対する操作を実行します。ファイル コントロールを使用して、ファイルのコピー、名前の変更、削除も行えます。

通常は操作するファイルごとに個別のファイル コントロールをコンフィグレーションします。ファイル コントロールの設定はいくつかの方法で指定できます。1 つは、デザイン ビューでファイル コントロールのプロパティを設定する方法です。もう 1 つは、FileControl インタフェースの setProperties メソッドを呼び出す方法です。ファイル コントロールのコンフィグレーション プロパティは動的に変更できます。現在のプロパティ設定を取得するには、getProperties() メソッドを使用します。

ControlContext インタフェースを使用して、実行時にコントロールのプロパティにアクセスしたり、コントロール イベントを処理したりすることができます。コントロールを使用する開発者によって設定されたプロパティ値は、JWS、JSP、または Process.java ファイルでコントロールの宣言のアノテーションとして、または コントロール ファイルでインタフェース宣言、コールバック宣言、またはメソッド宣言のアノテーションとして格納されます。

次の節では、ファイル コントロールのコンフィグレーション方法について説明します。

ファイル コントロールのデフォルト動作を設定する

[プロパティー] ペインでコントロールのプロパティを設定することによって、デザイン ビューでファイル コントロールの動作を指定できます。これらのプロパティは、コード内でファイル コントロールを識別する @FileControl および @FileControl.Operation アノテーションの属性に対応しています。以下の属性は、ファイル コントロールのクラスレベルおよびメソッドレベルのコンフィグレーション属性を指定します。

表 7-1 コンフィグレーション
アノテーション
属性
説明
@FileControl
directory-name
ディレクトリの絶対パス名。ローカルでファイルに書き込むとき、指定したディレクトリがまだない場合は、ディレクトリが作成されて、新しいディレクトリにファイルが書き込まれる。
file-mask
ファイル名またはファイル マスク。
suffix-name
ファイル名を作成するために、タイムスタンプまたはインクリメントする索引と一緒に使用されるサフィックス。
suffix-type
ファイル名のサフィックスとして、タイムスタンプとインクリメントする索引のどちらを使用するのかを指定する。
@FileControl
(続き)
create-mode
同じ名前の新しいファイルが作成される場合、ファイルを上書きするのか、または名前を変更するのかを指定する。

注意 : create-mode="rename=old" を指定してファイルの名前を変更する場合は、新しいファイル名の suffix-name および suffix-type 属性を必ず指定すること。サフィックスの属性が指定されていない場合、ファイル コントロールは古いファイルの名前を変更するのではなく、古いファイルを上書きする。

ftp-host-name
FTP ホストの名前。ftp://ftp.bea.com など。
ftp-user-name
FTP ユーザの名前。
ftp-password
FTP ユーザのパスワード。この属性を指定した場合は、ftp-password-alias 属性を指定できない。
ftp-password-
alias
ユーザ パスワードのエリアス。エリアスは、パスワード ストア内でパスワードをルックアップする際に使用される。この属性を指定した場合は、ftp-password 属性を指定できない。
ftp-local-
directory
リモート ファイル システムとローカル ファイル システムとの間でファイルを転送する場合に使用されるディレクトリ。リモート ファイルの読み込み時には、ファイルはリモート システムからローカル ディレクトリにコピーされてから読み込まれる。同様に、リモート ファイル システムへの書き込み時には、ファイルはローカル ディレクトリに書き込まれてからリモート システムにコピーされる。

注意 : これは、ファイル コントロールの一時作業ディレクトリ。ユーザ アーカイブ ディレクトリとして扱われてはならない。ftp-local-directory のコンテンツは、FTP 操作の実行後に削除される。

@FileControl.Operation
io-type
ファイル操作のタイプ (read、readline、write、または append)。
file-content
ファイルに書き込まれる指定された変数の内容。
record-size
レコード単位で処理されるファイル内の個々のレコードのサイズ (バイト単位)。
encoding
ファイルの文字セット エンコーディング。

@FileControl アノテーションの属性を使用したファイル コントロールのデフォルト動作の指定については、FileControl アノテーションを参照してください。

FileControl インタフェースのメソッドを使用する

ファイル コントロールを宣言してコンフィグレーションすると、そのメソッドをアプリケーションから呼び出してファイル操作を実行したり、コンフィグレーションを変更したりできます。名メソッドの詳細については、FileControl インタフェースを参照してください。

ファイル操作の実行やファイル コントロールの再コンフィグレーションには、FileControl インタフェースの以下のメソッドを使用します。

表 7-2 メソッド
メソッド
説明
setProperties
コントロールのプロパティを設定する。
getProperties
コントロールのプロパティを取得する。
getFiles
DynamicProperties.xsd で定義されている FileControlFileListDocument XML Beans ドキュメントを返す。
rename
現在のファイルの名前を変更する。
delete
現在のファイルを削除する。
copy
現在のファイルを別の場所にコピーする。
reset
処理中の操作 (readLinereadRecord および append) を終了してコントロールをリセットする。

ファイル コントロールでは、ファイルが格納されるのを待機するコールバックは提供されません。ビジネス プロセスでファイルが格納されるのを待機する必要がある場合は、ファイル イベント ジェネレータ機能を使用します。ビジネス プロセスでは、特定のディレクトリでのファイル処理が必要になる場合、メッセージ ブローカ サブスクライブ コントロールを使用してチャネルをサブスクライブできます。次に、ファイル イベント ジェネレータをコンフィグレーションして、目的のディレクトリにファイルが格納されたときに、ファイルの内容を保持する関連付けられたチャネルにメッセージをパブリッシュするようにします。

ファイル読み込み中のエラー処理

ファイル コントロールは、read() メソッドで例外が発生するとエラー ハンドラを呼び出します。(例外はファイルの内容が無効な場合に発生します)。エラー ハンドラは error ディレクトリにファイルを移動します。ただし、error ディレクトリがコンフィグレーションされていない場合、エラー ハンドラは「ファイルまたはディレクトリが存在しません」という例外を送出します。例外に関する有益な情報を参照できるように、エラー ハンドラによって送出される例外はログに記録され、WebLogic Server Console にも表示されます。また、元の例外は再送出されます。

サンプル : ファイル コントロール

この節では、ビジネス プロセスのコンテキストで使用されるファイル コントロールのサンプルを示します。このサンプルでは、ファイル コントロール インスタンスは、ユーザの要求にトリガされて、指定された場所にファイルを書き込みます。このサンプルでは、クライアント要求ノードを含む新しいビジネス プロセスを作成済みであることを前提としています。

ビジネス プロセスを次の図に示します。

ビジネス プロセスは「File Request」というクライアント要求ードで開始されます。クライアント要求ノードは、クライアントがプロセスに要求を送信するプロセス内のポイントを表します。この場合、クライアントはプロセスの fileRequest() メソッドを呼び出して、新しい顧客の情報を格納したファイルをファイル システムに書き込みます。

要求されたファイルをファイル システムに書き込むように、ビジネス プロセスを設計するには、次の手順を実行します。

ファイル コントロールのインスタンスをプロジェクトに作成するには

このシナリオでは、ファイル コントロールの 1 つのインスタンスをビジネス プロセスに追加します。

  1. データ パレットの [Controls] タブの [追加] をクリックして、ビジネス プロセスが対話できるリソースを表すコントロールのリストを表示します。
  2. [Integration Controls] をクリックし、[File] を選択します。[コントロールの挿入] ダイアログ ボックスが表示されます。
  3. [ファイルの挿入] ダイアログ ボックスで、以下の操作を実行します。
    1. このコントロールの変数名前として myFile と入力します。
    2. [使用する新しい File コントロールを作成] オプションが選択されていることを確認します。次に、[新しい名前] フィールドに「myFile」と入力します。
    3. 以下のフィールドに値を入力します。
    4. ディレクトリ名 - ファイル コントロールがファイルを書き込む場所を入力します。ファイル システム内の任意の場所を指定できます。このサンプルでは、ディレクトリ名は C:/temp/customers です。

      [file-mask] - ファイルの名前を入力します。たとえば、CustFile.xml と入力します。

      [file-type] - ドロップダウン リストから XmlObject を選択します。

    5. [作成] をクリックして [コントロールの挿入] ダイアログ ボックスを閉じます。
    6. ファイル コントロールのインスタンスが myFile という名前でプロジェクト内に作成され、[コントロール] フォルダの下に表示されます。

  4. [ファイルArrow symbol保存] を選択して、これまでの作業を保存します。
ビジネス プロセスにコントロール送信ノードを設計してファイル コントロールと対話するには
  1. データ パレットmyFile コントロール インスタンスを展開します。次に、以下のメソッドをクリックします。
  2. FileControlPropertiesDocument write(com.bea.xml.XmlObject someData)
  3. データ パレットからメソッドをドラッグして、[File Request] ノードのすぐ後に挿入されるように、デザイン ビューFileWrite ビジネス プロセスにドロップします。このノードには、デフォルトで write という名前が付きます。
  4. ノードの名前を write から Write CustFile に変更します。
  5. Write CustFile ノードをダブルクリックします。ノード ビルダが開き、[一般的な設定] タブが表示されます。
  6. [コントロール] フィールドに [myFile] が表示され、[メソッド] フィールドで以下のメソッドが選択されていることを確認します。
  7. FileControlPropertiesDocument write(com.bea.xml.XmlObject someData)
  8. [データの送信] タブをクリックして、ノード ビルダに 2 番目のタブを開きます。[コントロールが予期する値] フィールドには、write() メソッドが予期するデータ型 XmlObject someData が設定されています。
  9. [割り当てる変数を選択します] フィールドで、矢印をクリックしてプロジェクト内の変数のリストを表示します。次に、requestCustFile(InputDocument) を選択します。変数が存在していない場合は、[変数の新規作成...] を選択して作成できます。
  10. [適用] および [閉じる] をクリックします。
  11. クライアント要求ノード (File Request) をダブルクリックしてノード ビルダを表示します。
  12. [データの受信] をクリックして、ノード ビルダの 2 番目のタブを開きます。[コントロールが返す値] フィールドに、予期されるデータ型 (この場合は InputDocument CustFile) が表示されます。[割り当てる変数を選択します] フィールドで、矢印をクリックしてプロジェクト内の変数のリストを表示します。次に、requestCustFile(InputDocument) を選択します。
  13. [適用] および [閉じる] をクリックします。

これで、ファイル コントロール ノードの設計は完了しました。

実行時に、XmlObject 型の変数をクライアント要求メソッドに渡します。ファイル システムの指定された場所に顧客ドキュメントが書き込まれます。


  ページの先頭       前  次