コネクターの動作

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 は、JText アダプターが、イベント・ファイルとアーカイブ・ファイル用に引き渡すデフォルトのファイル拡張子の値を示しています。

表 1. デフォルトのファイル拡張子
ファイル・ タイプ イベント状況/説明 デフォルトのファイル拡張子 引き渡されるデフォルト・ディレクトリー
イベント new
in
Linux:
/tmp/JTextConn/Default/Event
Windows:
C:¥temp¥JTextConn¥Default¥Event
i5/OS:
デフォルトなし
アーカイブ success (イベント・ファイル内の すべてのビジネス・オブジェクト が正常に処理された場合は、このファイルにはすべてのビジネス・ オブジェクトが含まれます)
success
Linux:
/tmp/JTextConn/Default/Archive
Windows:

C:¥temp¥JTextConn¥Default¥Archive
i5/OS:
デフォルトなし
アーカイブ success (イベント・ファイル内の一部の ビジネス・オブジェクトの 処理に失敗した場合は、このファイルには正常に 処理されたビジネス・オブジェクト のみが含まれます)
partial
Linux:
/tmp/JTextConn/Default/Archive
Windows:

C:¥temp¥JTextConn¥Default¥Archive
i5/OS:
デフォルトなし
アーカイブ unsubscribed
unsub
Linux:
/tmp/JTextConn/Default/Archive
Windows:

C:¥temp¥JTextConn¥Default¥Archive
i5/OS:
デフォルトなし
アーカイブ entire original event file (このファイルは処理に失敗したビジネス・オブジェクトがある、またはアンサブスクライブされたビジネス・オブジェクトがある場合にのみ作成される。ただし、このイベント・ファイルにビジネス・オブジェクトが 1 つしか含まれていない場合も同様。)
orig
Linux:
/tmp/JTextConn/Default/Archive
Windows:
C:¥temp¥JTextConn¥Default¥Archive
i5/OS:
デフォルトなし
アーカイブ fail
fail
Linux:
/tmp/JTextConn/Default/Archive
Windows:

C:¥temp¥JTextConn¥Default¥Archive
i5/OS:
デフォルトなし
出力 out
out
Linux: /tmp/JTextConn/Default/Out
Windows:
C:¥temp¥JTextConn¥Default¥Out
i5/OS:
デフォルトなし

重要:
同じファイルに同時にアクセスしてこのファイルを処理しているアプリケーション が複数存在する場合に、アプリケーションのアクセス・シーケンスは重要です。ファイル・ロック や不完全なデータによる問題を避けるために、任意のファイル上で実行される すべての操作を解析してください。

注:
コネクターは、イベント・ディレクトリー内のすべてのファイルを 入力ファイルとして扱う場合にも拡張子を付けます。コネクターが アーカイブされたファイルをイベントとして扱わないようにするために、入力ファイルの拡張子をアーカイブ・ファイルの拡張子と同じにしないか、あるいは入力ファイルとアーカイブ・ファイルをそれぞれ別のディレクトリーに保管するようにしてください。

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

要求処理

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

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

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

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

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

  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 コネクターが、統合ブローカー InterChange Server Express から宛先アプリケーションへの要求を処理するときの、JText コネクターのコンポーネントを示します。

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

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

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

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

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

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

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

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

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

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

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

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

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

Copyright IBM Corp. 2004, 2005