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

     前  次    新しいウィンドウで目次を開く     
ここから内容

ファイル コントロール

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

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

 


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

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

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

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

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

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

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

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

ファイル コントロールで SFTP (SSH File Transfer Protocol) を使用する方法について説明します。

サービス プロバイダ インタフェース

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

 


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

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

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

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

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

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

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

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

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

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

    図 6-1 コントロールの挿入 : ファイル


    コントロールの挿入 : ファイル

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

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

  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 型のファイルを操作する場合は、必要に応じて、[エンコーディング] フィールドに文字セット コードを入力することで文字セット エンコーディングを指定できます。このオプションは、[ディレクトリには、処理が必要な大きなファイルが格納される] オプションと一緒には使用できません。
    • 指定されたディレクトリに一度に 1 行ずつ読み込む必要のあるファイルが格納されている場合は、[ディレクトリには、処理が必要な大きなファイルが格納される] ボタンを選択します。大きなファイルをサポートする readLine() メソッドが作成されます。
    • レコード サイズまたは区切り文字列を指定して、行を定義できます。

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

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

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

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

ファイル コントロールで使用できるメソッドについては、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();
}

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

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

詳細については、FileControl インタフェースを参照してください。

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

 


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

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

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

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

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

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

表 6-1 コンフィグレーション
アノテーション
属性
説明
@FileControl.FileInfo
createMode
同じ名前の新しいファイルが作成される場合、ファイルを上書きするのか、または名前を変更するのかを指定する。

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

 
directory-name
ディレクトリの絶対パス名。ローカルでファイルに書き込むとき、指定したディレクトリがまだない場合は、ディレクトリが作成されて、新しいディレクトリにファイルが書き込まれる。
 
file-mask
ファイル名またはファイル マスク。
 
suffix-name
ファイル名を作成するために、タイムスタンプまたはインクリメントする索引と一緒に使用されるサフィックス。
 
suffix-type
ファイル名のサフィックスとして、タイムスタンプとインクリメントする索引のどちらを使用するのかを指定する。
FileControl.FTP
hostName
FTP ホストの名前。ftp://ftp.bea.com など。
 
localDirectory
リモート ファイル システムとローカル ファイル システムとの間でファイルを転送する場合に使用されるディレクトリ。リモート ファイルの読み込み時には、ファイルはリモート システムからローカル ディレクトリにコピーされてから読み込まれる。同様に、リモート ファイル システムへの書き込み時には、ファイルはローカル ディレクトリに書き込まれてからリモート システムにコピーされる。

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

 
password
FTP ユーザのパスワード。この属性を指定した場合は、ftp-password-alias 属性を指定できない。
 
passwordAlias
ユーザ パスワードのエリアス。エリアスは、パスワード ストア内でパスワードをルックアップする際に使用される。この属性を指定した場合は、ftp-password 属性を指定できない。
 
userName
FTP ユーザの名前。
@FileControl.IOOperation
encoding
ファイルの文字セット エンコーディング。
 
fileContent
ファイルに書き込まれる指定された変数の内容。
 
ioType
ファイル操作のタイプ (read、readline、write、または append)。
 
recordSize
レコード単位で処理されるファイル内の個々のレコードのサイズ (バイト単位)。

FileControl.SFtp アノテーションの詳細については、「SFTP 用のファイル コントロール アノテーション」を参照してください。

バイナリ ファイルを使って転送を行う際にファイル コントロールの FtpToLocal() を使用する場合は、以下のアノテーションをソース ビューに配置してください。

@Retention(RetentionPolicy.RUNTIME)

    @Target({ElementType.TYPE, ElementType.METHOD})
    @PropertySet(
            prefix = 'FileTransferMode',
             externalConfig = false,
            optional = true,
            hasSetters = false
            )
    public @interface FileTransferMode
    {
        /**
         * このオプションでは、SFTP プロパティを名前/値ペアのリストとして指定する
         */
        @FeatureInfo(shortDescription = 'File Transfer Mode when using 
SFTP/FTP')
        TransferMode value() default TransferMode.BINARY;
    }
注意 : 上記のアノテーションを使用しないと、バイナリ ファイルが破損します。SFTP を使用している間は、この手順に従う必要があります。

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

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

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

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

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

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

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

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

 


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

SFTP (SSH File Transfer Protocol) は、安全で信頼性の高いファイル転送機能を提供する通信プロトコルです。通常は、SSH-2 プロトコルと一緒に使用します。

ファイル コントロールでは、ファイル システム上または FTP サーバ上のファイルの読み取り、ファイルへの書き込み、および追加がサポートされています。また、ファイル システム上または FTP サーバ上のファイルのコピー、名前変更、および削除もサポートされています。さらには、ファイル コントロールを使用して、SFTP サーバ上のファイルを操作することも可能です。

SFTP にはサービス プロバイダ インタフェース (SPI) が含まれており、サード パーティの SFTP クライアント実装にファイル イベント ジェネレータやファイル コントロールをプラグインできます。WLI が提供するデフォルトの SPI 実装では、SSHTools の SFTP クライアント API (J2SSH) が使用されています。RSA および DSA の両方のキー ペアがサポートされます。

J2SSH を使用するデフォルトの SFTP SPI 実装では、以下の認証方法がサポートされます。

ファイル コントロールを SFTP 用にコンフィグレーションする

ファイル コントロールを SFTP 用にコンフィグレーションするには、次の手順に従います。

  1. 新しいファイル コントロールを作成する」の説明に従って、ファイル コントロールを作成します。
  2. ファイル コントロールを右クリックして [編集] を選択します。
  3. ソース ビューのコードに @FileControl.SFtp を追加し、必要に応じてアノテーションを追加します (図 6-2 を参照)。
  4. 図 6-2 ファイル コントロールへの SFTP の追加


    ファイル コントロールへの SFTP の追加

SFTP 用のファイル コントロール アノテーション

ファイル コントロールでは、以下のアノテーションがサポートされます。

SFtpCustomProperty- このアノテーションを使用すると、認証用の追加プロパティを指定して名前/値ペアを定義できます。次に、このアノテーションの使用例を示します。
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD})
@PropertySet(
        prefix = "SFtpCustomProperty",
        externalConfig = false,
        optional = true,
        hasSetters = false
        )
public @interface SFtpCustomProperty
{
        @FeatureInfo(shortDescription = "SFTP property name")
        @AnnotationMemberTypes.Text
        String name() default Constants.ANNOTATION_VAL_NOT_SPECIFIED;
        @FeatureInfo(shortDescription = "SFTP property value")
        @AnnotationMemberTypes.Text
        String value() default Constants.ANNOTATION_VAL_NOT_SPECIFIED;
}

このアノテーションの属性は以下のとおりです。

Oracle Workshop for WebLogic の [プロパティ] ペインには、以下のアノテーション属性が表示されます (図 6-3 を参照)。

図 6-3 プロパティ ペイン
ファイル コントロールへの SFTP の追加
表 6-3 SFTP コンフィグレーション
アノテーション
属性
説明
FileControl.SFtp
authMethod
SFTP サーバに接続するための認証方法を指定する。認証方法としては、パスワードベース、ホストベース、公開鍵ベースなどがサポートされる。デフォルトの認証方法はパスワードベース。
 
customProperties
SFTP サーバでの認証に必要な追加プロパティを表す。これらのプロパティは、@SFtpCustomProperties アノテーションを使用して、名前/値ペアのリストとして指定できる。authMethodOTHER_AUTHENTICATION_METHOD に設定されている場合は、この属性を指定して、WLI では提供されていない認証方法を使用できる。authMethodHOST_BASED_AUTHENTICATION または PUBLIC_KEY_BASED_AUTHENTICATION に設定されている場合は、必要に応じて追加プロパティを指定できる。
 
hostName
ファイル イベント ジェネレータまたはコントロールが通信する SFTP サーバの名前または IP アドレス。
 
localDirectory
SFTP サーバからダウンロードしたファイルのコピー先となる、ローカル ファイル システム上のディレクトリへのパス。
 
passphrase
プライベート キーがパスフレーズで保護されている場合のパスフレーズ。この属性を指定した場合は、passphraseAlias を指定することはできない。この属性を指定する必要があるのは、authMethodHOST_BASED_AUTHENTICATION または PUBLIC_KEY_BASED_AUTHENTICATION に設定されている場合のみ。
 
passphraseAlias
プライベート キーがパスフレーズで保護されている場合のパスフレーズのパスワード エリアス。この属性を指定した場合は、passphrase を指定することはできない。この属性を指定する必要があるのは、authMethodHOST_BASED_AUTHENTICATION または PUBLIC_KEY_BASED_AUTHENTICATION に設定されている場合のみ。
 
password
SFTP サーバでの認証に使用するパスワード。この属性を指定した場合は、passwordAlias を指定することはできない。この属性を指定する必要があるのは、authMethodPASSWORD_BASED_AUTHENTICATION に設定されている場合のみ。
 
passwordAlias
SFTP サーバでの認証に使用するパスワード エリアス。この属性を指定した場合は、password を指定することはできない。この属性を指定する必要があるのは、authMethodPASSWORD_BASED_AUTHENTICATION に設定されている場合のみ。
 
port
SFTP デーモンを実行しているポート番号。デフォルトのポート番号は 22。
 
privateKey
SFTP サーバでの認証に使用するプライベート キー ファイルへのパス。authMethod 属性が HOST_BASED_AUTHENTICATION に設定されている場合、この属性はホストのプライベート キーを表す。authMethodPUBLIC_KEY_BASED_AUTHENTICATION に設定されている場合、この属性はユーザのプライベート キーを表す。この属性を指定する必要があるのは、authMethodHOST_BASED_AUTHENTICATION または PUBLIC_KEY_BASED_AUTHENTICATION に設定されている場合のみ。
 
userName
SFTP サーバでの認証に使用するユーザ名。WLI でサポートされているすべての認証方法では、この属性を設定する必要がある。

サービス プロバイダ インタフェース

WLI には SFTP 用のフレームワークが提供されるため、独自のライブラリを接続できます。SSHTools をインストールするには、次の手順に従います。

  1. http://sourceforge.net/projects/sshtools にある J2SSH 0.2.9 をローカル ディレクトリにダウンロードします。
  2. j2ssh-core-0.2.9.jarj2ssh-common-0.2.9.jarBEA_HOME\wli_10.3\lib ディレクトリにコピーします。
  3. 注意 : このパス名の中の BEA_HOME は、Oracle WebLogic Integration をインストールしたディレクトリです。

SPI には、以下の列挙型が含まれています。

SFtpVersion

この列挙は SSH のバージョンを表し、以下の定数が定義されています。

SFtpAuthMethod

この列挙は、SFTP サーバで使用する認証方法を表します。以下の定数が定義されています。

SFtpClientException

このクラスは、SFTP クライアント例外を表します。SFTP クライアント例外とは、SPI 実装から送出する必要のある汎用的な例外カテゴリです。SPI が実装されている場合は、例外を SFtpClientException でラップして上位レベルに送出することで、どのような例外でも送出できます。この例外のインタフェースは、以下に示すとおりです。

SFtpFile

この列挙は、SFTP サーバ上のファイルの属性を表します。表 6-4 に、この列挙のインタフェースの一覧を示します。

表 6-4 SFtp ファイル インタフェース
インタフェース
説明
public SFtpFile()
デフォルトのコンストラクタ。
public SFtpFile(String absolutePath)
ファイルのパスに基づいて SFtpFile オブジェクトを構築する。絶対パスにファイル名が含まれている場合は、そのファイル名を取得する。
public void setAbsolutePath(String absolutePath)
この SFtpFile オブジェクトによって表されるファイルの絶対パスを設定する。ファイル名が存在する場合は、指定された絶対パスからファイル名を取得する。
public String getAbsolutePath()
このオブジェクトによって表されるファイルの絶対パスを返す。
public String getFilename()
このオブジェクトによって表されるファイルの名前を返す。
public void setFileName(String filename)
このオブジェクトによって表されるファイルの名前を設定する。
public void setParent(String parent)
リモート サーバ上に存在するファイルのディレクトリを設定する。
public String getParent()
リモート サーバ上に存在するファイルのディレクトリを返す。
public void setSize(long size)
このオブジェクトによって表されるファイルのサイズを設定する。
public long size()
このオブジェクトによって表されるファイルのサイズを返す。
public void setModifiedTime(long time)
このオブジェクトによって表されるファイルの変更時間を設定する。
public long getModifiedTime()
このオブジェクトによって表されるファイルの変更時間を返す。
public void setFile(boolean isFile)
ファイルがディスク ファイルかどうかを識別するためのフラグを設定する。
public boolean isFile()
ファイルがディスク ファイルかどうかを示す値を返す。
public boolean isDirectory()
このオブジェクトによって表されるファイルがディレクトリかどうかを示す値を返す。
public void setDirectory(boolean isDirectory)
ファイルがディレクトリかどうかを識別するためのフラグを設定する。
public boolean canRead()
このオブジェクトによって表されるファイルが読み取り可能かどうかを示す値を返す。
public void setRead(boolean canRead)
このオブジェクトによって表されるファイルが読み取り可能かどうかを識別するフラグを設定する。
public boolean canWrite()
このオブジェクトによって表されるファイルが書き込み可能かどうかを示す値を返す。
public void setWrite(boolean canWrite)
このオブジェクトによって表されるファイルが書き込み可能かどうかを識別するフラグを設定する。
public boolean isLink()
このオブジェクトによって表されるファイルがリンクかどうかを示す値を返す。
public void setLink(boolean isLink)
このオブジェクトによって表されるファイルがリンクかどうかを識別するフラグを設定する。
public boolean isSocket()
このオブジェクトによって表されるファイルがソケットかどうかを示す値を返す。
public void setSocket(boolean isSocket)
このオブジェクトによって表されるファイルがソケットかどうかを識別するフラグを設定する。
public boolean isOpen()
このオブジェクトによって表されるファイルが開かれているかどうかを示す値を返す。
public void setOpen(boolean isOpen)
このオブジェクトによって表されるファイルが開かれているかどうかを識別するフラグを設定する。
public void setStageFilepath(String filepath)
ファイルがステージング (つまり、ファイルのパスがローカル ファイル システムにコピー) されているかどうかを設定する。
public String getStageFilepath()
ファイルのステージング パスを返す。このパスは、ファイルがローカルにコピーされた場所を表す。
public boolean equals(Object object)
2 つの SFTP ファイルが等しいかどうかを確認する。

SFtpClient

この列挙は、SFTP クライアント インタフェースを表します。サード パーティの SFTP クライアント実装をファイル イベント ジェネレータやファイル コントロールにプラグインするためには、SFTP クライアント インタフェースを実装する必要があります。このインタフェースが提供するメソッドを使用すると、SFTP サーバへの接続、SFTP サーバでの認証、ファイルの取得、ファイル一覧の作成、ファイルの名前変更や削除、および SFTP サーバへのファイルの転送などを行うことができます。表 6-5 では、このインタフェースについて説明します。

表 6-5 SFtp クライアント インタフェース
インタフェース
説明
public void setAuthenticationMethod(SFtpAuthMethod authMethod)
クライアントが SFTP サーバに接続するために使用する認証メソッドを設定する。SPI でサポートされる認証方法の一覧については、「SFtpAuthMethod」を参照。
public SFtpAuthMethod getAuthenticationMethod()
クライアントが SFTP サーバに接続するために使用する認証メソッドを返す。
public void setSshVersion(SFtpVersion sshVersion)
クライアントが SFTP サーバに接続するために使用する SSH バージョンを設定する。SPI でサポートされる SSH バージョンの一覧については、「SFtpVersion」を参照。
public SFtpVersion getSshVersion()
クライアントが SFTP サーバに接続するために使用する SSH バージョンを返す。
public void setAcceptUnknownHostKeys(boolean accept)
不明な SFTP サーバからの公開鍵を受諾するかどうかを設定する。このメソッドを使用すると、デフォルトの動作 (不明な SFTP サーバからの公開鍵を受諾し、既知のホスト ファイルを更新する) をオーバーライドできる。
public boolean acceptUnknownHostKeys()
不明な SFTP サーバからの公開鍵を受け付け、既知のホストのファイルを更新する。
public void connect() throws SFtpClientException
コンフィグレーションされた認証方法に基づいて SFTP サーバに接続する。実際の SFTP クライアント API (たとえば J2SSH) から例外が送出された場合、その例外は SFtpClientException にラップされて呼び出し側に送出される。
public void setUserName(String userName)
SFTP サーバでの認証に使用するユーザ名を設定する。ユーザ名は、PASSWORD_BASED_AUTHENTICATION で必須で、HOST_BASED_AUTHENTICATION および PUBLIC_KEY_BASED_AUTHENTICATION でも必須。
public String getUserName()
クライアントが SFTP サーバでの認証に使用するユーザ名を返す。
public String getHostname()
クライアントが接続する SFTP サーバのホスト名を返す。
public int getPort()
SFTP デーモンを実行しているポート番号を返す。
public void setPassword(char[] pwd)
認証方法が PASSWORD_BASED_AUTHENTICATION に設定されている場合に、認証に使用するパスワードを設定する。
public void setPassPhrase(char[] phrase)
プライベート キーがパスワードで保護されている場合に、そのプライベート キー ファイルのパスフレーズを設定する。このメソッドは、認証方法が HOST_BASED_AUTHENTICATION または PUBLIC_KEY_BASED_AUTHENTICATION に設定されている場合のみ使用する。
public void setPrivateKeyFile(String path)
認証方法が HOST_BASED_AUTHENTICATIONまたは PUBLIC_KEY_BASED_AUTHENTICATION に設定されている場合に、認証に使用するプライベート キー ファイルのパスを設定する。
public void setCustomProperties(HashMap<String, Object> props)
SFTP サーバでの認証時にユーザが指定できる追加プロパティを設定する。サード パーティの SFTP クライアントで追加プロパティが必要になる場合には、この方法で SPI を拡張できる。
public HashMap<String, Object> getCustomProperties()
SFTP サーバでの認証時にユーザが使用できる追加プロパティを返す。
public String pwd() throws SFtpClientException
現在のリモート作業ディレクトリの絶対パス名を返す。例外を送出する場合は、その例外を SFtpClientException でラップする必要がある。呼び出し側には、このラップされた例外が返される。
public void cd(String dir) throws SFtpClientException
SFTP サーバ上の作業ディレクトリを変更する。例外を送出する場合は、その例外を SFtpClientException でラップする必要がある。呼び出し側には、このラップされた例外が返される。
public void mkdir(String dir) throws SFtpClientException
SFTP サーバ上にディレクトリを作成する。そのディレクトリがすでに存在する場合は、メソッドが失敗して例外が送出される。パスは、絶対パスか、現在の作業ディレクトリとの相対パスで指定できる。例外を送出する場合は、その例外を SFtpClientException でラップする必要がある。呼び出し側には、このラップされた例外が返される。
public void mkdirs(String dir) throws SFtpClientException
ディレクトリを作成する。ディレクトリのセットを再帰的に作成することもできる。例として、ディレクトリへのパスが /tmp/test/test1/test2 の場合を考える。tmp ディレクトリがすでに存在する場合は、このメソッドを実行することでディレクトリ testtest1、および test2 が作成される。このメソッドは、いずれかのディレクトリがすでに存在する場合でも失敗しない。パスは、絶対パスか、現在の作業ディレクトリとの相対パスで指定できる。例外を送出する場合は、その例外を SFtpClientException でラップする必要がある。呼び出し側には、このラップされた例外が返される。
public void rm(String path) throws SFtpClientException
SFTP サーバ上のファイルを削除する。パスは、絶対パスか、現在の作業ディレクトリとの相対パスで指定できる。例外を送出する場合は、その例外を SFtpClientException でラップする必要がある。呼び出し側には、このラップされた例外が返される。
public void rmdir(String path) throws SFtpClientException
SFTP サーバ上のディレクトリを削除する。削除するディレクトリへのパスは、絶対パスか、現在の作業ディレクトリとの相対パスで指定できる。例外を送出する場合は、その例外を SFtpClientException でラップする必要がある。呼び出し側には、このラップされた例外が返される。
public void rename(String oldPath, String newPath) throws SFtpClientException
SFTP サーバ上のファイルの名前を変更する。パスは、絶対パスか、現在の作業ディレクトリとの相対パスで指定できる。例外を送出する場合は、その例外を SFtpClientException でラップする必要がある。呼び出し側には、このラップされた例外が返される。
public List<SFtpFile> list(String path) throws SFtpClientException
指定されたパスのディレクトリ内で、SFTP サーバで使用できるファイルのリストを返す。指定されたパスがファイルを表す場合は、そのファイルに関する詳細が返される。ユーザは、SFtpFile オブジェクトを指定し、SFtpFile オブジェクトのリストを返す必要がある。ディレクトリやファイルへのパスは、絶対パスか、現在の作業ディレクトリとの相対パスで指定できる。例外を送出する場合は、その例外を SFtpClientException でラップする必要がある。呼び出し側には、このラップされた例外が返される。
public List<SFtpFile> list() throws SFtpClientException
現在の作業ディレクトリ内で、SFTP サーバで使用できるファイルのリストを返す。ユーザは、SFtpFile オブジェクトを指定し、SFtpFile オブジェクトのリストを返す必要がある。例外を送出する場合は、その例外を SFtpClientException でラップする必要がある。呼び出し側には、このラップされた例外が返される。
public abstract InputStream get(String s, SFtpFileTransferMode sftpfiletransfermode)
throws SFtpClientException;
SFTP サーバ上のファイルをストリームとして取得する。パスは、絶対パスか、現在の作業ディレクトリとの相対パスで指定できる。例外を送出する場合は、その例外を SFtpClientException でラップする必要がある。呼び出し側には、このラップされた例外が返される。
public abstract void get(String s, String s1, SFtpFileTransferMode sftpfiletransfermode)
throws SFtpClientException;
SFTP サーバ上のファイルを取得し、ローカル ファイル システム上のローカル システムにコピーする。パスは、絶対パスか、現在の作業ディレクトリとの相対パスで指定できる。例外を送出する場合は、その例外を SFtpClientException でラップする必要がある。呼び出し側には、このラップされた例外が返される。
public abstract void get(String s, OutputStream outputstream, SFtpFileTransferMode sftpfiletransfermode)
throws SFtpClientException;
SFTP サーバ上のファイルを取得し、ファイルのコンテンツを出力ストリームにコピーする。パスは、絶対パスか、現在の作業ディレクトリとの相対パスで指定できる。例外を送出する場合は、その例外を SFtpClientException でラップする必要がある。呼び出し側には、このラップされた例外が返される。
public abstract void put(String s, String s1, SFtpFileTransferMode sftpfiletransfermode)
throws SFtpClientException;
ローカル ファイル システム上のファイルをリモート SFTP サーバにコピーする。SFTP サーバ上のファイルへのパスとしては、ファイルまたはディレクトリを指定できる。パスは、絶対パスか、現在の作業ディレクトリとの相対パスで指定できる。例外を送出する場合は、その例外を SFtpClientException でラップする必要がある。呼び出し側には、このラップされた例外が返される。
public abstract void put(InputStream inputstream, String s, SFtpFileTransferMode sftpfiletransfermode)
throws SFtpClientException;
ファイルのコンテンツを、SFTP サーバのリモート SFTP サーバのストリームからコピーする。SFTP サーバ上のファイルへのパスとしては、ファイルまたはディレクトリを指定できる。パスは、絶対パスか、現在の作業ディレクトリとの相対パスで指定できる。例外を送出する場合は、その例外を SFtpClientException でラップする必要がある。呼び出し側には、このラップされた例外が返される。
public void disconnect() throws SFtpClientException
SFTP サーバから切断し、このクライアントが保持するすべてのリソースをクリーンアップする。例外を送出する場合は、その例外を SFtpClientException でラップする必要がある。呼び出し側には、このラップされた例外が返される。

ユーザは、これらのメソッドを実装するだけでなく、SFtpClient の実装内に以下のコンストラクタを定義する必要があります。

AbstractSFtpClient

このクラスは、SFtpClient インタフェースを実装し、SFtpClient インタフェース内のすべてのメソッドのデフォルト実装を提供します。これらの実装済みメソッドの多くは変更なしで使用できますが、このクラスでは、ユーザ名、パスワード、プライベート キー、パスフレーズ、認証方法、カスタム プロパティなど、さまざまなプロパティを設定できます。

SFtpClientFactory

このクラスは、SFtpClient のファクトリ クラスを表します。このクラスを使用することで、SFtpClient のインスタンスを作成できます。WLI コンソールを使用してサード パーティの SFTP クライアント実装をファイル イベント ジェネレータやファイル コントロールに追加するためには、このクラスを実装する必要があります。詳細については、「SPI をコンフィグレーションする」を参照してください。この実装クラスがコンフィグレーションされていない場合は、SFtpClientFactory のデフォルト実装が使用されます。デフォルト実装は、com.bea.wli.sftp.j2ssh.impl.J2SSHSFtpClientFactory によって提供され、SSHTools の SFTP クライアント実装 (J2SSH) に依存します。

SPI をコンフィグレーションする

SPI を使用してサード パーティの SFTP クライアント実装をプラグインするには、次の手順に従います。

  1. Web ブラウザ (Internet Explorer など) を開き、アドレス バーに http://adminserver:port/wliconsole という URL を入力します。
  2. 注意 : ここで、adminserver は Oracle WebLogic Integration の管理サーバのホスト名または IP アドレスで、port はそのサーバのリスン ポートです。たとえば、「http://localhost:7001/wliconsole」のように入力すると、Oracle WebLogic Integration Administration Console を開くことができます。
  3. コンソール ウィンドウにユーザ名とパスワードを入力します。
  4. Oracle WebLogic Integration Administration Console のホーム ページが表示されます。

    注意 : Oracle WebLogic Integration Administration Console はパスワードで保護されています。サーバを起動する前に、コンフィグレーション ウィザードを使用して WLI ドメインを作成する必要があります。コンフィグレーション ウィザードを使用したドメイン作成の詳細については、「WebLogic ドメインの作成」を参照してください。
  5. 左ペインの [システム コンフィグレーション] をクリックします。
  6. 左ペインの SFTP の下にある [コンフィグレーション] をクリックします。
  7. [現在の SFTP 設定] ページが表示されます。

  8. [現在の SFTP 設定] ページの [コンフィグレーション] をクリックします。
  9. 以下のプロパティを入力します。
    • [SFTP クライアント ファクトリ] : SFTP クライアント ファクトリのサード パーティ実装を表すクラス名を指定します。このプロパティが指定されていない場合は、デフォルト実装が使用されます。
    • [サーバー キーを受諾] : ハンドシェイク中に不明な SFTP サーバから送信された公開鍵を受諾するかどうかを設定します。デフォルトでは、不明な SFTP サーバからの公開鍵が受諾されます。このエントリによって既知のホスト ファイルが更新され、その SFTP サーバに接続されます。この動作をオフにすると、SFTP サーバのエントリが既知のホスト ファイルに含まれている場合にのみ、そのサーバとの接続が確立されます。

SPI 実装をサーバ クラス パスに追加する

SPI 実装をサーバ クラス パスに追加するには、次の手順に従います。

  1. \BEA_Home\DOMAIN_HOME\bin にある setDomainEnv.cmd\sh ファイルを編集します。
  2. SPI 実装を含む jar ファイルを POST_CLASSPATH に追加します。

SFTP 参照実装

WLI で使用できる SFTP 参照実装は、\BEA_Home\wli_10.3\samples\sftp_ref_impl ディレクトリに格納されています。ソース ファイルをビルドするために使用するデフォルトのビルド スクリプトも用意されています。この参照実装は、SSH Tools の J2SSH に基づいています。

SFTP 参照実装をビルドする

SFTP 参照実装をビルドするには、次の手順に従います。

  1. commEnv.cmd スクリプトを実行します。このスクリプトは、\BEA_Home\wlserver_10.3\commom\bin ディレクトリにあります。
  2. ディレクトリ パスを \BEA_Home\wli_10.3\samples\sftp_ref_impl に変更します。
  3. 生成済みのアーティファクトを削除するため、ant clean を実行します。
  4. jar ファイルをビルドするため、ant deploy を実行します。jar ファイルが \BEA_Home\wli_10.3\samples\sftp_ref_impl\build\ar に作成されます。
  5. jar ファイルを再デプロイするには、ant redeploy を実行します。
  6. SPI をコンフィグレーションする」および「SPI 実装をサーバ クラス パスに追加する」の説明に従って参照実装をプラグインします。

実装をテストするアプリケーションを設計する

ここでは、SFTP 実装をテストするアプリケーションを設計する例を示します。

  1. ファイル コントロールでビジネス プロセス (process.java) を作成します。
  2. [ソース] ビューで、ファイル コントロールに @FileControl.SFtp を追加します。
  3. アプリケーションをビルドしてデプロイします。

ビジネス プロセスの詳細については、『ビジネス プロセス構築ガイド』および『チュートリアル : 初めてのビジネス プロセス設計』を参照してください。

 


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

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

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

図 6-4 ファイル コントロールのサンプル

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

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

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

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

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

  1. データ パレットサンプル ファイル コントロール をクリックし、ドロップダウン リストから Integration コントロールを選択して、アプリケーションの統合に使用するコントロールのリストを表示します。
  2. [ファイル] を選択します。
  3. [コントロールの挿入 : ファイル] ダイアログ ボックスが表示されます。

  4. [コントロールの挿入 : ファイル] ダイアログ ボックスで、このコントロールのフィールド名として myFile と入力し、[次へ] をクリックします。
  5. [名前] フィールドに MyFile と入力し、[次へ] をクリックします。
  6. [コントロールの作成] で以下を入力します。
    • [ディレクトリ名] - ファイル コントロールがファイルを書き込む場所を入力します。ファイル システム内の任意の場所を指定できます。このサンプルでは、ディレクトリ名は C:/temp/customers です。
    • [データのタイプ] - ドロップダウン リストから XmlObject を選択します。
  7. [終了] をクリックします。
  8. ファイル コントロールのインスタンスが myFile という名前でプロジェクト内に作成され、データ パレット に表示されます。

  9. [ファイル|保存] を選択して作業内容を保存します。
ビジネス プロセスにコントロール送信ノードを設計してファイル コントロールと対話するには
  1. データ パレットmyFile コントロール インスタンスを展開します。次に、以下のメソッドをクリックします。
  2. FileControlPropertiesDocument write(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 型の変数をクライアント要求メソッドに渡します。ファイル システムの指定された場所に顧客ドキュメントが書き込まれます。


  ページの先頭       前  次