PeopleSoft データを表す WebSphere ビジネス・オブジェクトは、フラットまたは階層構造のどちらでも可能です。フラットなビジネス・オブジェクトの属性はすべて単純です。つまり、単一の値 (ストリングまたは整数) を表します。
階層ビジネス・オブジェクトは、単純属性に加え、単一カーディナリティーの子ビジネス・オブジェクトまたは子ビジネス・オブジェクトの配列を表す属性を持つことができます。さらに今度は、これらの各ビジネス・オブジェクトが単一カーディナリティーの子ビジネス・オブジェクトやビジネス・オブジェクトの配列などを持つことができます。
単一カーディナリティー関係は、親ビジネス・オブジェクト内の属性が単一の子ビジネス・オブジェクトを表す場合に発生します。この場合、子ビジネス・オブジェクトは 1 つのレコードのみを持つことができる PeopleSoft コレクションを表します。属性タイプは、子ビジネス・オブジェクトのタイプと同じです。
複数カーディナリティー関係は、親ビジネス・オブジェクト内の属性が子ビジネス・オブジェクトの配列を表す場合に発生します。この場合、子ビジネス・オブジェクトは複数のレコードを持つことができる PeopleSoft コレクションを表します。属性タイプは、子ビジネス・オブジェクトの配列のタイプと同じです。
コネクターは、すべての階層ビジネス・オブジェクトが単一 PeopleSoft コンポーネント・インターフェースを表すことを前提としています。階層ビジネス・オブジェクトは複数の PeopleSoft レコード内のデータを表すことができますが、コネクターは階層内の子ビジネス・オブジェクトそれぞれがコンポーネント・インターフェース内の単一コレクションを表すことを前提としています。コネクターは PeopleSoft の (基本となるデータベースではなく) コンポーネント・アーキテクチャーと処理機能を使用して、コンポーネント・レベルで定義されるビジネス・ロジックを活用します。
ビジネス・オブジェクトを定義する場合、次の状態が考えられます。
コネクターには、処理する各ビジネス・オブジェクトごとに PeopleSoft ビジネス・コンポーネントとコンポーネント・インターフェースが必要ですが、WebSphere Business Integration システムには、ビジネス・コンポーネント、コンポーネント・インターフェース、PeopleSoft 固有のビジネス・オブジェクトのいずれも用意されていないので、コネクターを使用するためにはこれらのオブジェクトを作成する必要があります。
前述の必要なオブジェクトを作成すると、Application Designer を使用して、コネクターがサポート・ビジネス・オブジェクトを処理するのに必要なクラス構造を作成できます。詳細については、"API の生成"を参照してください。
これらのオブジェクトの作成を支援するために、このセクションでは次について説明します。
図 6 に、2 つのページと 3 つのレコードを持つ単純なコンポーネント EMER_CONTACT を示します。示されているページ (PERSONAL_DATA_PANEL1) には、各従業員の緊急連絡先情報が格納されています。
前述の図は、個人データ・ページの各レベルで表示されるデータと、それを格納する対応するレコードとの関係を示します。
EMERGENCY_CNTCT レコード、および EMERGENCY_PHONE レコードが示すように、各レコードのキーは合成され、その親のキーとその独自の固有 ID を含んでいます。
すべてのコンポーネントが、例と同じようなわかりやすい方法でデータ・レコードを表すわけではありません。例えば、スクロール・レベルは個別のレコードまたは子レコードに常に対応するわけではありません。コンポーネントは、派生されたレコードや作業レコードを使用したり、関連する表示レコードを組み込んだり、複数のレベルで同じレコードを使用してデータを表したりすることがあります。このような状況では、コンポーネント・インターフェースの設計は例よりもさらに高度になり、処理ニーズを慎重に考慮する必要があります。
複雑なコンポーネントを使用する場合は、設計時に次の領域を考慮します。
コンポーネントのレベルを設計する際に、次のことを考慮します。
例えば、同じレコードから 3 つのキー (例えば、SETID、DEPTID、および EFFDT) を使用するページがあると仮定します。さらに、このページはスクロール・レベル 1 で EFFDT を使用して、指定された SETID および DEPTID のデータ履歴を戻すと仮定します。このページを含むコンポーネント・インターフェースを作成すると、すべてのキー・フィールドは同じレベル 0 プライマリー・レコードに存在するので、3 つのキーはすべてコレクション・レベル 0 に表示されます。このコンポーネント・インターフェースを使用してキーとして EFFDT を持つ一連の行を戻す場合、レベル 0 コレクションから EFFDT を手動で除去して、それをレベル 1 コレクションに追加する必要があります。こうすることで、コンポーネント・インターフェースがオンラインの場合と同じように動作します。
隠しフィールドは、必ずしもコンポーネント・プロセッサーにロードされるとは限りません。これらのフィールドを公開すると、アプリケーション・サービス・エラーになることがあります。ページ上で可視的に公開されないフィールドは、コネクターに公開しないことをお勧めします。
コンポーネント・インターフェースの読み取り専用とマークされたフィールドは、コネクターからアクセス可能ですが、値を戻すメソッドでのみ可能です。コネクターはこれらのフィールドに値を設定できません。したがって、対応する属性のアプリケーション固有テキストの get= FieldName パラメーターは指定しますが、set= FieldName パラメーターは空にしておきます。このような場合に set パラメーターを指定すると、メソッドを更新または作成操作で起動した場合にエラーが発生します。
詳細については、"属性レベルのアプリケーション固有情報"を参照してください。
図 7 に、EMER_CONTACTコンポーネントを含むコンポーネント・インターフェース (EMER_CONTACT_PROFILE) の例を示します。
左マージンにある 3 つの幅広の矢印は、コンポーネント・インターフェースのデータを格納する表 (PERSONAL_DATA、EMERGENCY_CNTCT、および EMERGENCY_PHONE) を指しています。2 つの細い矢印は、EMERGENCY_CNTCT 表のキー・フィールド (EMPLID と CONTACT_NAME) を示すキー・アイコンを指しています。
PeopleSoft では、コンポーネント・インターフェースがコンポーネントの必要な要素をサード・パーティーに公開するように設計されており、外部の統合アプリケーションに対してビジネス・プロセス・ロジック (PeopleCode、Field Edits、および PeopleSoft Security など) を透過的にします。したがって、コネクターはコンポーネント・インターフェースとデータベースの間のすべての処理をアプリケーションに依存します。
この依存関係により、検索ダイアログ処理の不足などの、ある制約が発生します。したがって、SearchInit、SearchSave、および RowSelect イベントは起動されず、これらに関連するすべての PeopleCode は実行されません。 この制約は、Menu PeopleCode やポップアップ・メニューなどの GUI またはオンライン処理にのみ関連するすべての PeopleCode イベントにも適用されます。
したがって、コネクターのコンポーネント・インターフェースを作成する前に、重要な動作が失われていないことと、コネクターがアクセスする前にすべての定義済みデータが配置されていることを確認します。このスキップされる動作の一部をコンポーネント・インターフェース内のユーザー定義メソッドとして、またはコンポーネント固有の PeopleCode (ビルド済みイベントなど) として実装できます。これらの対策を講じないと実行時エラーが発生することがあります。
EMER_CONTACT_PROFILE コンポーネント・インターフェースで表現されるデータをコネクターが処理できるようにするには、WebSphere Business Integration システムに PeopleSoft 固有のビジネス・オブジェクトを作成する必要があります。
図 8 に、階層構造の PeopleSoft 固有のビジネス・オブジェクトの例を示します。これは、WebSphere Business Integration システムに作成できるコンポーネント・インターフェースの一例を表します。
PSFT_EmergencyContact ビジネス・オブジェクトには、キー・フィールド・データを表す 2 つの単純属性 (EmpId と ContactName) があります。これらの属性は、それぞれ EMERGENCY_CNTCT レコード内の EMPLID と CONTACT_NAME に対応しています。PSFT_EmergencyContact にはまた、ビジネス・オブジェクト PSFT_EmergencyPhone の配列を表す配列属性 (EmergencyPhone[n]) もあります。
PSFT_EmergencyPhone ビジネス・オブジェクトには、キー・フィールド・データを表す 3 つの単純属性 (EmpId、ContactName、および PhoneType) があります。初めの 2 つの属性はキーとして機能し、親ビジネス・オブジェクトを一意的に識別します。 3 番目の属性は、同じ配列内の子とその他のビジネス・オブジェクトを一意的に区別します。