コネクターの動作方法

このセクションでは、以下について説明します。

PeopleSoft アプリケーションとの対話

始動時に、PeopleSoft アプリケーション・サーバーに接続するために使用するセッション・オブジェクトを作成します。アプリケーション・サーバーに接続すると、サポート・ビジネス・オブジェクトに対応するすべてのコンポーネント・インターフェースの API に、コネクターがアクセスできます。サーバーには、イベント通知のためにアダプターに組み込まれている、PeopleCode およびアプリケーション・デザイナー・オブジェクトへのアクセス機能も用意されています。

各コンポーネント・インターフェース (および、それに関連するビジネス・コンポーネント、レコード、フィールド、スクロール、および PeopleCode) には、コネクターが PeopleSoft に関する階層構造の WebSphere ビジネス・オブジェクトを処理するために必要な情報がすべて格納されています。各コンポーネント・インターフェースはビジネス・コンポーネントのデータと処理ロジックをカプセル化しているため、コネクターはこの処理ロジックを複製しません。例えば、コネクターは重複レコードの検査、編集表の検証、またはセキュリティーを明示的に処理する必要はありません。

コネクター内、または PeopleSoft アプリケーション内でのオンライン処理時にエラーが発生した場合、コネクターのアプリケーション固有のコンポーネントからコネクター・フレームワークに戻りコード FAIL が送られ、さらにそれがコネクター・フレームワークから InterChange Server Express に送られます。コネクターとアプリケーション・サーバーとの接続が失われると、コネクターのアプリケーション固有のコンポーネントにより、戻りコード APPRESPONSETIMEOUT が送られて terminate() メソッドが呼び出されます。

ビジネス・オブジェクト内のデータをコネクターが処理する方法の詳細については、コネクター用のビジネス・オブジェクトについてを参照してください。

ビジネス・オブジェクト要求の処理

コネクターは、アプリケーション内のデータを変更するビジネス・オブジェクト要求を受け取ると、階層ビジネス・オブジェクトを再帰的に処理します。つまり、コネクターは、ビジネス・オブジェクトに関連するコンポーネント・インターフェースのすべてのレベルのデータを処理するまで、子ビジネス・オブジェクトをそれぞれ処理します。

コネクターは、InterChange Server Express からのビジネス・オブジェクト要求を処理する場合、次の順序でセッション・オブジェクトから PeopleSoft API を呼び出します。

  1. コネクターは、getComponent("ciName") メソッドを使用して、ビジネス・オブジェクトに関連したコンポーネント・インターフェースを戻します。コンポーネント・インターフェースの名前は、各ビジネス・オブジェクトのビジネス・オブジェクト・レベルでアプリケーション固有情報のプロパティーに格納されます。
  2. ビジネス・オブジェクトでデータの作成または変更が要求されると、コネクターはアプリケーションに値の挿入または変更を行います。ビジネス・オブジェクトによりデータの検索が要求されると、コネクターはアプリケーションから値を取得します。

    ビジネス・オブジェクト内のデータをコネクターが処理する方法の詳細については、コネクター用のビジネス・オブジェクトについてを参照してください。コネクター固有のプロパティーの詳細については、"コネクター固有のプロパティー"を参照してください。

  3. すべての子ビジネス・オブジェクトを含め、ビジネス・オブジェクト全体に関する作成または更新要求を処理した後、コネクターはコンポーネント・インターフェースの Save() メソッドを呼び出します。成功すると、Save() メソッドにより 1 つの COMMIT ステートメントが実行されます。ビジネス・オブジェクトのアプリケーション固有情報で setInteractiveModefalse と定義される場合、Save() メソッドを呼び出すと、基本となるコンポーネントのレコードとフィールドに関連したすべての FieldEdit ビジネス・ロジックが起動されます。 すべての PeopleCode エラーが、PSMessage コレクション・キューにパブリッシュされます。
  4. 作成要求時に PeopleSoft システムで固有 ID が生成される場合、コネクターは標準の PeopleSoft 自動番号付け機能 (組み込み機能) を使用して、一番最近に使用された ID を検索し、ビジネス・オブジェクトに新しい ID を設定します。
  5. コネクターは、関連するコンポーネント・インターフェースに用意されているすべてのビジネス・ロジックを使用して処理します。

コネクターがビジネス・オブジェクト要求を処理する際に接続エラーが検出されると、コネクターのアプリケーション固有コンポーネントにより致命的エラーがログに記録され、戻りコード APPRESPONSETIMEOUT が送信されて、電子メール通知が起動されます。その後、コネクターは終了します。

次のセクションでは、要求動詞の処理について説明します。

作成要求の処理

InterChange Server Express が Create 動詞を使用してビジネス・オブジェクト要求を送信すると、コネクターは PeopleSoft の Create() メソッドを使用してコンポーネント・インターフェースの新しいインスタンスを作成します。トランザクションの進行で、インスタンスからすべての PeopleSoft ビジネス・ロジックが渡される場合、インスタンスはアプリケーションに保管されます。アプリケーションに作成されるオブジェクトに、すべての子ビジネス・オブジェクトなどの、ビジネス・オブジェクトに格納されるすべての値が格納されます。

作成操作の処理の詳細については、"作成操作"を参照してください。

検索要求の処理

InterChange Server Express が Retrieve 動詞を使用してビジネス・オブジェクト要求を送信すると、コネクターは PeopleSoft の Get() メソッドを使用して対応するコンポーネント・インターフェースの固有のインスタンスが存在することを確認します。この Get() メソッドによりコンポーネント・インターフェースがインスタンス化され、コネクターがその値をビジネス・オブジェクトにロードできるようになります。コネクターが InterChange Server Express に戻すビジネス・オブジェクトは、コンポーネント・インターフェースのインスタンスと正確に一致します。

つまり、InterChange Server Express に戻されるビジネス・オブジェクトの各単純属性の値は、コンポーネント・インターフェースの対応するプロパティー・フィールドの値と一致します。また、戻されたビジネス・オブジェクトが階層構造の場合、各配列内の個々のビジネス・オブジェクト数は、その配列に関するコンポーネント・インターフェース内のレベルまたはコレクションの数に一致します。

検索操作の処理の詳細については、"検索操作"を参照してください。

更新要求の処理

InterChange Server Express が Update 動詞を使用してビジネス・オブジェクト要求を送信すると、コネクターはコンポーネント・インターフェースの既存のインスタンスを変更します。トランザクションの進行で、インスタンスからすべての PeopleSoft ビジネス・ロジックが渡される場合、インスタンスはアプリケーションに保管されます。

アプリケーションで更新されるオブジェクトは、要求ビジネス・オブジェクトと正確に一致します。コネクターによりすべての単純なプロパティー・フィールドが更新されます。ただし、要求ビジネス・オブジェクト内の対応する属性に値 CxIgnore がある場合は除きます。要求ビジネス・オブジェクト内に格納されているすべての子ビジネス・オブジェクトを挿入します。コネクターは、その KeepRelationship アプリケーション固有情報パラメーターの値に基づいて、要求ビジネス・オブジェクトに存在しない子ビジネス・オブジェクトを削除または保持します。

更新操作の処理の詳細については、"更新操作"を参照してください。

削除要求の処理

PeopleSoft がトランザクションの削除をサポートしないため、コネクターもサポートしません。論理削除の処理の標準の振る舞いは、Update 動詞を使用してビジネス・オブジェクトの EffectiveStatus 属性の状況を「I」(非アクティブ) に変更することです。

ただし、コネクターがオブジェクト全体の削除をサポートするようにするには、次を実行します。

  1. PeopleSoft 内の削除を実行するユーザー定義の PeopleCode メソッドを作成する。
  2. 適切なコンポーネント・インターフェースでこのメソッドを公開する。

存在要求の処理

InterChange Server Express が Exists 動詞を使用して階層ビジネス・オブジェクト要求を送信すると、コネクターはコンポーネント・インターフェースのインスタンスを検査します。コネクターのアプリケーション固有コンポーネントから、アプリケーションにインスタンスが存在する場合は SUCCEED が戻され、オブジェクトが存在しない場合は FAIL が戻されます。

アプリケーション・イベントの処理

イベント通知には、次の 3 つの主要なプロセスが関係します。

イベントのパブリッシュ

イベントをコネクターのイベント表にパブリッシュするために、PeopleSoft アプリケーションはアダプターに組み込まれている PeopleCode オブジェクトおよびアプリケーション・デザイナー・オブジェクトを使用します。これらのオブジェクトの詳細については、"イベント処理コンポーネント"を参照してください。

イベントのパブリッシュ・プロセスでは、cw_publish_events() 関数を使用し ます。この関数は FUNCLIB_CW レコードの FieldFormula イベントに格納されています。この関数は、イベントに関係するコンポーネントの SavePostChg() PeopleCode で宣言し、呼び出す必要があります。

注:
この手順では、コンポーネント・インターフェースを使用しません。

詳細については、"cw_publish_events() 関数"を参照してください。

イベントのポーリング

コネクターは、構成可能で定期的な間隔でイベント表をポーリングします。イベントの検索は、最初は状況により、次にコネクター・プロパティー ConnectorID の値により行います。この値が null またはブランクの場合、プロパティーは検索に使用されません。コネクターがイベントを処理すると、状況をただちに INPROGRESS (値 3) に更新します。コネクターの初期設定時は、保留中の INRPOGRESS イベントは READYFORPOLL (値 0) にリセットされます。

コネクターは CW_EVENT_CI コンポーネント・インターフェースの Find() メソッドを使用してイベント表をポーリングします。このメソッドは、状況が READYFORPOLL であるイベントのコレクションを戻します。コネクターはコレクションをループ処理して、CW_EVENT_TBL にリストされているすべてのビジネス・オブジェクトの名前を取得します。

コネクターは API を使用してプロパティー値を設定および取得して、コレクションで戻された各イベントのイベント情報を収集します。また、サブスクライブされるビジネス・オブジェクトを検査して判別します。使用する InterChange Server Express に固有のサブスクリプション情報については、ブローカーのインプリメンテーション・ガイドを参照してください。

詳細については、"イベントおよびアーカイブ表"を参照してください。

イベントのアーカイブ

CW_EVENT_CI コンポーネント・インターフェースがインスタンス化される間に、コネクターは処理する各イベントに関してユーザー定義のメソッド cw_archive_events() を呼び出します。PeopleCode 形式のこのメソッドにより、アーカイブ・フラグが Y に設定されます。このフラグが設定されると、ユーザーが Save() メソッドを呼び出す際に、SavePostChg() PeopleCode によりイベントがアーカイブされます。アーカイブ表にイベントが処理された日付と時刻も記録されます。

注:
SavePostChg() PeopleCode は、プロジェクトに組み込まれています。

アーカイブ表は、イベント・ヒストリーの照会またはイベント処理の問題のトラブルシューティングに使用することができます。例えば、アンサブスクライブされるイベントはすべて、unsubscribed の状況になっています。

イベントの処理に関連した潜在的な障害ポイントが存在するため、イベント管理プロセスでは、イベントがアーカイブ表に挿入されるまで、イベント表からイベントを削除しません。

イベント通知プロセス・フロー

図 2 に、イベント通知プロセス・フローを示します。統合ブローカーは InterChange Server Express です。

図 2. イベント通知プロセス・フロー


次に、図 2 に示すステップを説明します。

  1. ユーザーがコンポーネントに変更をオンラインで保管すると、SavePostChg() メソッドが cw_publish_events() 関数を呼び出します。
  2. 4 つのパラメーターを使用する cw_publish_events() 関数で、次が実行されます。

    詳細については、"cw_publish_events() 関数"を参照してください。

  3. コネクターは、CW_EVENT_TBL 内のイベントを優先順位でソートします。
  4. コネクターは、その PollFrequency 構成プロパティーで指定された間隔でイベント表からイベントをポーリングして、イベントを選別します。しかしその数は PollQuantity 構成プロパティーで指定された数を超えません。ポーリングを行うために、コネクターは CW_EVENT_CI コンポーネントをインスタンス化して、Find() メソッドを呼び出します。
    注:
    コネクターは、要求処理に使用されたスレッドとは別のスレッドを使用します。
  5. イベント表から取り出された各レコードについて、コネクターはレコードがイベント・データをサブスクライブするかどうかを検査します。

    データがサブスクライブされない場合、コネクターはイベント・レコードを CW_EVENT_TBL から CW_ARCHIVE_TBL に移動し、状況を unsubscribed にします。

  6. データがサブスクライブされる場合、コネクターはイベント・レコードのキー・フィールドを使用して該当するコンポーネント・インターフェースをインスタンス化し、ここからイベントの完全なデータを検索します。
  7. コネクターは、コンポーネント・インターフェースから完全なイベント・データを検索した後で、該当するアプリケーション固有のビジネス・オブジェクトをインスタンス化します。
  8. コネクターは、アプリケーション固有のビジネス・オブジェクトを InterChange Server Express に送信します。
  9. コネクターは cw_archive_events() 関数を呼び出します。この関数でアーカイブ・フラグを Y に設定し、状況と処理時間を適切に設定します。アーカイブ・フラグが設定されると、SavePostChg() PeopleCode によりイベント情報がアーカイブ表にコピーされ、イベント表からイベントが削除されます。

Copyright IBM Corp. 2004