コネクターの動作

JText コネクターは、テキスト・ファイルまたはバイナリー・ファイルの交換を通じてアプリケーションと通信します。このコネクターは、ビジネス・オブジェクトを処理する際に、以下の基本タスクを実行します。

このセクションでは、以下のタスクについて説明します。また、データ・ハンドラーの処理がどのように行われるか、および JText コネクターが動詞をどのように処理するかについても説明します。

イベント通知

JText コネクターは、他のコネクターとは異なる方法でイベントを処理します。JText コネクターは、サード・パーティーのアプリケーションに依存するコネクターと異なり、イベント表を持ちません。その代わりに、コネクターはイベント・ディレクトリーをイベント表として使用します。

以下に、JText コネクターがイベントを処理するときに行う操作を示します。

  1. コネクターは、指定されたディレクトリー内の指定された拡張子が付いたファイルを検査することによりイベントをポーリングします。指定されたディレクトリー内に存在する指定された拡張子が付いたファイルは、イベントと同等と見なされます。コネクターは、イベント・ディレクトリーからイベント・ファイルを解釈せずに直接読み取ります。その後、いずれかの解析手法を使用して、どのサブセクションがどのビジネス・オブジェクトを表しているかを判別します。詳細については、特定のビジネス・オブジェクトのポーリングを参照してください。
  2. コネクターはデータ・ハンドラーのインスタンスを作成します (これはデータ・ビジネス・オブジェクトの JText メタオブジェクトで指定された値に基づきます)。
  3. コネクターは、データ・ハンドラー・インスタンスの getBO() または getBOByteArray() を呼び出し、この呼び出したメソッドにビジネス・オブジェクトを表すストリングまたはバイト配列を送信します。コネクターはビジネス・オブジェクトを表すそれぞれの要素をデータ・ハンドラーに受け渡します。1 つのファイルが複数のビジネス・オブジェクトを表している場合、コネクターはファイル全体ではなく、1 つの要素 (単一のビジネス・オブジェクトを表すストリングまたはバイト配列) のみを送信します。
  4. データ・ハンドラーは、ストリングまたはバイト配列をビジネス・オブジェクトに変換し、そのビジネス・オブジェクトをコネクターに戻します。データ・ハンドラーはエラーの報告やトレースの提供も行います。
  5. データ・ハンドラーはデフォルトの動詞処理を実行します。データ・ハンドラーの開発者は、動詞を設定するためにロジックを指定する必要がありますが、これは、コネクターがこのロジックを提供しないためです。データ・ハンドラーが動詞を設定する方法についての例は、「データ・ハンドラー・ガイド」を参照してください。
  6. ビジネス・オブジェクトの作成を妨げるエラーがデータ・ハンドラーで発生すると、コネクターは、ストリングまたはバイト配列を、拡張子 .fail を付けてアーカイブします。データ・ハンドラーの処理が成功すると、コネクターはビジネス・オブジェクトのサブスクリプションをチェックします。
  7. コネクターがビジネス・オブジェクトを統合ブローカーに正常に送信する場合は、イベント・ファイル内の任意のビジネス・オブジェクトの処理が失敗したかどうかによって、.success または .partial 拡張子が付いたファイルをアーカイブします。コネクターがビジネス・オブジェクトの送信に失敗した場合は、コネクターは .fail 拡張子が付いたファイルをアーカイブします。

JText コネクターは、ファイル名に基づき、アルファベット順にイベント・ファイルを処理します。JText コネクターは、構成によって、イベント・ディレクトリー内のすべてのファイルを選択したり、指定された拡張子が付いたファイルのみを選択できます。詳細については、複数のイベント・ファイルまたは複数のイベント・ディレクトリーの指定を参照してください。SortFilesOnTimestamp プロパティーにより、JText コネクターは、イベント・ファイルの最も古いものから最も新しいものまでを、ロケーションに関係なく、タイム・スタンプの順に処理することができます。つまり JText コネクターは、別々のディレクトリーに格納されているファイルを、それぞれのタイム・スタンプによって日時順に処理します。詳細については、SortFilesOnTimestampを参照してください。

PollQuantity プロパティーは、コネクターが任意のポーリング中に統合ブローカーに通知できるビジネス・オブジェクトの最大数を指定します。例えば、PollQuantity の値を 5 に設定し、コネクターがポーリングを行っているディレクトリー内に 2 つのファイルが存在すると想定します。最初のファイルにはビジネス・オブジェクトが 4 つあり、2 つ目のファイルには 12 のビジネス・オブジェクトがあるとします。コネクターは 1 度目のポーリング呼び出しのときに以下の手順を実行します。

  1. 最初のファイルから 4 つのビジネス・オブジェクトのすべてを送信し、処理が完了するごとに各ビジネス・オブジェクトをアーカイブします。
  2. 2 つ目のファイルの最初のビジネス・オブジェクトを送信します。

コネクターは 2 度目のポーリング呼び出しのときに、2 つ目のファイルの 2 から 6 番目のビジネス・オブジェクトを送信します。コネクターは 3 度目のポーリング呼び出しのときに、2 つ目のファイルの 7 から 11 番目のビジネス・オブジェクトを送信します。コネクターは 4 度目のポーリング呼び出しのときに、最後のビジネス・オブジェクトを送信します。コネクターは処理が完了するごとに各ビジネス・オブジェクトをアーカイブします。ファイル内のビジネス・オブジェクトのいずれかの処理が失敗した場合は、コネクターは .orig 拡張子を付けてファイル全体をアーカイブします。

詳細については、以下を参照してください。

図 3 はイベント通知操作を表します (図形の数字は、上記で説明した手順とは対応していません)。

図 3. イベント通知操作

イベント通知操作

イベント・アーカイブ

JText コネクターは、アーカイブを行うように構成されている場合には、イベント処理の完了後、1 つのビジネス・オブジェクトを表しているストリングまたはバイト配列を、ローカル・アーカイブ・ディレクトリー内のファイルに書き込みます。コネクターは下線 (_)、タイム・スタンプ、およびイベント状況に応じたファイル拡張子を持つ名前をそのファイルに付けます。引き渡されるデフォルトの拡張子は、successpartialunsuborig、および fail です。下線とタイム・スタンプは、ファイル名とファイル拡張子の間に追加されます。

タイム・スタンプでは、システム時刻の年、月、日、時、分、秒、ミリ秒がそれぞれ下線で区切られています。アーカイブされたファイル名は常に固有なので、コネクターが既存のファイルを同じ名前のファイルで上書きすることはありません。アーカイブされたファイル名の形式を以下に示します。

BOName_YYYY_MM_DD_HH_MM_SS_sss.[extension]
 

例えば、コネクターは、Customer.in という名前のファイルを正常に処理したときに、Customer_2003_11_15_18_24_59_999.success というファイル名に変更します。

JText コネクターは、フォーマット・エラーが発生したり、統合ブローカーへのビジネス・オブジェクトの送信に失敗した場合は、そのビジネス・オブジェクトを .fail ファイルにアーカイブします。また、コネクターがサブスクライブしない場合は、JText コネクターは、拡張子が .unsub のファイルにビジネス・オブジェクトをアーカイブします。ユーザーが上記のアーカイブ・ファイルをチェックして、フォーマット・エラーがあればそれを訂正したり、ビジネス・オブジェクトをサブスクライブする処理を開始したら、次にこれらのアーカイブ・ファイルの中のビジネス・オブジェクトを再サブミットしてください。

アーカイブに関する詳細は、イベント・アーカイブの指定を参照してください。

イベントおよびアーカイブ・ファイル用のデフォルトのファイル拡張子

JText コネクターは、イベント表やアーカイブ表を使用しないためイベント状況を更新する場合はファイル拡張子を変更します。表 1 は、IBM WebSphere Business Integration Adapter for JText がイベントおよびアーカイブ・ファイル用に引き渡すデフォルトのファイル拡張子の値を示しています。

表 1. デフォルトのファイル拡張子
ファイル・タイプ イベント状況/説明 デフォルトのファイル拡張子 引き渡されるデフォルト・ディレクトリー
イベント new
in
 

Windows: C:¥temp¥JTextConn¥Default¥Event

Linux: /tmp/JTextConn/Default/Event

OS/400: デフォルトなし

アーカイブ success (イベント・ファイル内のすべてのビジネス・オブジェクトが正常に処理された場合は、このファイルにはすべてのビジネス・オブジェクトが含まれます)
success
 

Windows: C:¥temp¥JTextConn¥Default¥Archive

Linux:

/tmp/JTextConn/Default/Archive

OS/400: デフォルトなし

アーカイブ success (イベント・ファイル内の一部のビジネス・オブジェクトの処理に失敗した場合は、このファイルには正常に処理されたビジネス・オブジェクトのみが含まれます)
partial
 

Windows:

C:¥temp¥JTextConn¥Default¥Archive

Linux:

/tmp/JTextConn/Default/Archive

OS/400: デフォルトなし

アーカイブ unsubscribed
unsub
 

Windows:

C:¥temp¥JTextConn¥Default¥Archive

Linux:

/tmp/JTextConn/Default/Archive

OS/400: デフォルトなし

アーカイブ entire original event file (このファイルは処理に失敗したビジネス・オブジェクトがある、またはアンサブスクライブされたビジネス・オブジェクトがある場合にのみ作成される。ただし、このイベント・ファイルにビジネス・オブジェクトが 1 つしか含まれていない場合も同様。)
orig
 

Windows: C:¥temp¥JTextConn¥Default¥Archive

Linux:

/tmp/JTextConn/Default/Archive

OS/400: デフォルトなし

アーカイブ fail
fail
 

Windows: C:¥temp¥JTextConn¥Default¥Archive

Linux:

/tmp/JTextConn/Default/Archive

OS/400: デフォルトなし

出力 out
out
 

Windows: C:¥temp¥JTextConn¥Default¥Out

Linux:

/tmp/JTextConn/Default/Out

OS/400: デフォルトなし

重要:
同じファイルに同時にアクセスしてこのファイルを処理しているアプリケーションが複数存在する場合に、アプリケーションのアクセス・シーケンスは重要です。ファイル・ロックや不完全なデータによる問題を避けるために、任意のファイル上で実行されるすべての操作を解析してください。
注:
コネクターは、イベント・ディレクトリー内のすべてのファイルを入力ファイルとして扱う場合にも拡張子を付けます。コネクターがアーカイブされたファイルをイベントとして扱わないようにするために、入力ファイルの拡張子をアーカイブ・ファイルの拡張子と同じにしないか、あるいは入力ファイルとアーカイブ・ファイルをそれぞれ別のディレクトリーに保管するようにしてください。

新しいファイル拡張子、イベント、ディレクトリー、および出力ディレクトリーの指定に関する詳細については、表 9 を参照してください。

要求処理

コネクターは、サービス呼び出し要求を処理するとき、ビジネス・オブジェクトを出力ストリングまたは出力バイト配列に変換し、ファイルに書き込みます。

ただし、コネクターはビジネス・オブジェクトを変換する前に、そのビジネス・オブジェクトが動的なファイルの命名のために構成されているかどうかについて判別します。これは、ビジネス・オブジェクトに動的子メタオブジェクトが含まれているかどうかで判別します。このケースでは、コネクターは動的に出力ファイルの名前を付けたり、コネクターが生成する出力ファイルの名前を戻したりします。

このセクションでは、以下の場合のサービス呼び出し要求処理について説明します。

データ・ビジネス・オブジェクトが動的ファイル命名を指定しない 場合

データ・ビジネス・オブジェクトが動的ファイルの命名を指定しない場合は、コネクターはサービス呼び出し要求を処理するために以下の操作を実行します。

  1. コネクターはビジネス・オブジェクト要求を受け取ります。
  2. コネクターは、ビジネス・オブジェクト・レベルの AppSpecificInfo プロパティーに以下の行が含まれているかどうかを判別します。
    cw_mo_JTextConfig = DynChildMOAttrName
     
  3. コネクターはトップレベルの JText メタオブジェクトの構成をチェックして、呼び出すデータ・ハンドラーを判別します。デフォルトではこのメタオブジェクトが NameValue データ・ハンドラーを表す MO_DataHandler_DefaultNameValueConfig データ・ハンドラーのメタオブジェクトを指定します。
  4. コネクターは適切なデータ・ハンドラーのインスタンスを作成してそこにビジネス・オブジェクトを送信します。
  5. データ・ハンドラーは、ビジネス・オブジェクトをストリングまたはバイト配列に変換します (これは構成に戻されます)。データ・ハンドラーはエラーの報告やトレースの提供も行います。
  6. コネクターは、戻されたストリングまたはバイト配列をファイルに書き込みます。

要求を処理するようにコネクターを構成するための情報は、要求処理の指定を参照してください。

データ・ビジネス・オブジェクトに動的子メタオブジェクトが含まれる 場合

データ・ビジネス・オブジェクトに動的子メタオブジェクトが含まれる場合は、コネクターはサービス呼び出し要求を処理するために以下の操作を実行します。

  1. コネクターはビジネス・オブジェクト要求を受け取ります。
  2. コネクターはビジネス・オブジェクト・レベルの AppSpecificInfo プロパティーに以下のテキストが含まれているかどうかを判別します。
    cw_mo_JTextConfig = DynChildMOAttrName
     

    注:
    ビジネス・オブジェクトのアプリケーション固有の情報が動的子メタオブジェクトを指定しておらず、このような子を含まない場合は、コネクターは "データ・ビジネス・オブジェクトが動的ファイル命名を指定しない 場合"に従ってビジネス・オブジェクトを処理します。
  3. コネクターは動的子メタオブジェクトの OutFileName 属性から出力ファイルの名前を取得します。
  4. コネクターはトップレベルの JText メタオブジェクトの構成をチェックして、呼び出すデータ・ハンドラーを判別します。デフォルトではこのメタオブジェクトが NameValue データ・ハンドラーを表す MO_DataHandler_DefaultNameValueConfig データ・ハンドラーのメタオブジェクトを指定します。
  5. コネクターは適切なデータ・ハンドラーのインスタンスを作成してそこにビジネス・オブジェクトを送信します。
  6. データ・ハンドラーは、ビジネス・オブジェクトをストリングまたはバイト配列に変換します (これは構成に戻されます)。データ・ハンドラーはエラーの報告やトレースの提供も行います。
  7. コネクターは、戻されたストリングまたはバイト配列を、上のステップ 3 で取得した名前を持つファイルに書き込みます。

図 4 に、JText コネクターが、統合ブローカーからの宛先アプリケーションに対する要求を処理しているときのコネクター・コンポーネントを示します。

図 4. ビジネス・オブジェクト要求操作

ビジネス・オブジェクト要求操作

データ・ハンドラー処理の仕組み

コネクターは、データ・ハンドラー・インスタンスを使用して、ビジネス・オブジェクトと、イベント・ファイルから読み取ったストリングまたはバイト配列との間で、変換を行います。データ・ハンドラーはエラーの報告やトレースの提供も行います。

コネクターはトップレベルの JText メタオブジェクト内の EventDataHandler 属性と OutputDataHandler 属性の値に基づいてデータ・ハンドラーのインスタンスを作成します。これらの属性は、コネクターがデータ・ハンドラーのインスタンスを作成するために使用するデータ・ハンドラーのメタオブジェクトを識別します。データ・ハンドラーのメタオブジェクトは引き渡されたデータ・ハンドラー、またはカスタム・データ・ハンドラーを表せます。詳細については、「データ・ハンドラー・ガイド」を参照してください。

コネクターは、DataProcessingMode メタオブジェクトの設定を基に、インターフェース (ストリングまたはバイト配列) を判別します。このメタオブジェクトの詳細については、表 9 を参照してください。

コネクターは構成情報を受け取ると、以下の手順を実行します。

  1. データ・ハンドラーをインスタンス化します。
  2. データ・ハンドラーの TracingSubSystem 属性をコネクターの名前に対して設定するために、データ・ハンドラーの setOption() メソッドを呼び出します。データ・ハンドラーは、書き込むトレース・メッセージにコネクターの名前を含めるためにこの値を使用します。

データ・ハンドラーの作成と構成が完了すると、コネクターはビジネス・オブジェクトに、またはビジネス・オブジェクトからデータの変換を行うためにデータ・ハンドラー内の適切なメソッドを呼び出します。

getBO(String) (または getBO(byte[])) メソッドと getStringFromBO() (または getByte ArrayFromBO()) メソッドは、それぞれ、トップレベルの親のビジネス・オブジェクトとすべての子ビジネス・オブジェクトからなるビジネス・オブジェクト階層全体を送信するか、これらを受信するかのどちらかです。

いずれの場合も、データ・ハンドラーはすべてのメタオブジェクト・データをフィルターに掛けて、ビジネス・オブジェクト固有のデータのみを受け渡します。本製品で提供されている各データ・ハンドラーは、この機能を備えています。カスタム・データ・ハンドラーを使用する場合は、この機能を備えていなければなりません。

要求に対するビジネス・オブジェクト動詞の処理

JText コネクターは要求を処理する際に、1 つの動詞を他の動詞と分けて処理しません。コネクターは動詞がビジネス・オブジェクトと関連付けられているかどうかにかかわらず、更新、検索、削除を行わずにファイルに書き込みます。

JText コネクターは要求を処理する際に、以下の条件が true の場合に CxIgnore の値を持つすべての属性をそれらのデフォルト値に設定します。

Copyright IBM Corp. 2004