このセクションでは、ビジネス・オブジェクト動詞の処理における以下の機能について説明します。
変更後イメージとは、ビジネス・オブジェクトに対するすべての変更が行われた後の、ビジネス・オブジェクトの状態です。デルタとは、キー値と変更されるデータのみを格納している、更新操作で使用されたビジネス・オブジェクトです。このコネクターは、変更後イメージのみをサポートし、ビジネス・オブジェクト・デルタはサポートしません。コネクターは更新の要求ビジネス・オブジェクトを受け取ると、ビジネス・オブジェクトが更新後のデータの必要な状態を表していると仮定します。
したがって、コネクターが Update
動詞を持つ要求ビジネス・オブジェクトを受け取ると、コンポーネント・インターフェース内のビジネス・オブジェクトの現在の表現を変更して、ソース・ビジネス・オブジェクトと正確に一致するようにします。これを行うために、コネクターは単純属性値を変更して、子ビジネス・オブジェクトを追加または除去します。
コネクターが子ビジネス・オブジェクトを変更する方法の例として、仮に
PSFT_EmergencyContact
ビジネス・オブジェクトには、単一カーディナリティーの子を表す属性と子ビジネス・オブジェクトの配列を表す属性の
2
つの追加属性があるとします。配列の子は、それぞれ自分自身の子ビジネス・オブジェクトの配列を含むことができます。
図 9 に、ID が 2345 の従業員の
PSFT_EmergencyContact の現在の状態を示します。ArrayData
属性は、3 つのレコード (A、B、および C) を表します。これらのうち、2
つのレコードの配列属性は、2 つの追加レコードを表します。
図 9. 更新前のデータの状態

図 10
に、ビジネス・オブジェクト要求を示します。このビジネス・オブジェクトは、新規の単一カーディナリティーの子ビジネス・オブジェクトを含み、またその配列には別のビジネス・オブジェクトが含まれています。
図 10. 更新要求で表わされるデータ

更新を処理するために、コネクターはコンポーネント・インターフェースに次の変更を行います。
- PSFT_EmergencyContact 内の単純属性と
PSFT_EmergencyPhone ビジネス・オブジェクトを更新します。
- PSFT_SingleData ビジネス・オブジェクトを作成します。
- 子ビジネス・オブジェクトの A、B、F、および G 内の単純属性を更新します。
- 子ビジネス・オブジェクトの C、D、および E を削除します。
- 子ビジネス・オブジェクトの H、I、および J を作成します。
コネクターは、受け取る各要求ビジネス・オブジェクトが変更後イメージを表していることを前提とするので、更新のためにコネクターに送られる各ビジネス・オブジェクトに有効な既存の子ビジネス・オブジェクトがすべて組み込まれていることが重要です。子ビジネス・オブジェクトの単純属性が何も変更されなくても、子ビジネス・オブジェクトがソース・ビジネス・オブジェクトに組み込まれている必要があります。
ただし、更新操作時にコネクターが、必要な子ビジネス・オブジェクトを削除しないように防止することができます。ソース・ビジネス・オブジェクトに組み込まれていない子ビジネス・オブジェクトをコネクターが保持するように指示するには、子または子の配列を表す属性に関してアプリケーション固有情報を使用します。このためには、KeepRelationship
を true に設定します。詳細については、"属性レベルのアプリケーション固有情報"を参照してください。
このセクションでは、コネクターが要求として受け取るビジネス・オブジェクトを作成、検索、更新、または削除する際の手順を説明します。コネクターは階層ビジネス・オブジェクトを再帰的に処理します。つまり、個々のビジネス・オブジェクトをすべて処理するまで、子ビジネス・オブジェクトそれぞれに対して同じステップを実行します。
下記に概要を説明する処理のさまざまな時点において、コネクターは 2
つのビジネス・オブジェクトを比較して、それらが同じかどうかを確認します。例えば、更新操作時に、コネクターは特定のビジネス・オブジェクトがビジネス・オブジェクトの配列内に存在するかどうかを判断します。この検査を行うために、コネクターはビジネス・オブジェクトと配列内の各ビジネス・オブジェクトを比較します。2
つのビジネス・オブジェクトが同一であるには、次の 2
つの条件を満たす必要があります。
- 比較されるビジネス・オブジェクトのタイプが同じでなければなりません。例えば、PSFT_Customer
ビジネス・オブジェクトは、その属性がすべて正確に一致していても、PSFT_Contact
ビジネス・オブジェクトと同一とは見なされません。
- 2
つのビジネス・オブジェクト内のすべてのキー属性には、同一の値が格納されている必要があります。両方のキー属性に
CxIgnore
が設定されていると、コネクターはそれらを同一と見なします。しかし、片方のビジネス・オブジェクトではキー属性に
CxIgnore
が設定されているが、もう一方では設定されていない場合、ビジネス・オブジェクトは同一と見なされません。
ビジネス・オブジェクトを作成する場合、コネクターは、操作が成功したときには
(操作によりビジネス・オブジェクトが変更されたかどうかに関係なく)
VALCHANGE、操作が失敗したときには FAIL のいずれかの状況を戻します。
コネクターは、階層ビジネス・オブジェクトを作成する場合、次のステップで行います。
- トップレベルのビジネス・オブジェクトのコンポーネント・インターフェースの新しいインスタンスを作成します。
- PeopleSoft の
SetFieldName(value)
メソッドを使用して、コンポーネント・インターフェース内のプロパティーにビジネス・オブジェクト内の属性の値を設定します。
- 重要:
- キー属性のアプリケーション固有情報の UID パラメーターの評価が
false
の場合、ビジネス・オブジェクトを作成するビジネス・プロセスには、属性の新規の固有
ID
値が指定されている必要があります。ビジネス・オブジェクトに必要な値がない場合、コネクターはエラーをログに記録します。
キー属性のアプリケーション固有情報の UID パラメーターの評価が
true の場合は、アプリケーションで固有 ID
を生成する必要があります。この場合、属性の値または Default Value
プロパティーには、ストリング NEXT
が設定されている必要があります。つまり、プロセス・オブジェクトを作成するビジネス・プロセスに値
NEXT が設定されていない場合は、属性の Default Value
プロパティーにこの値が設定されている必要があります。ビジネス・オブジェクトが
Default Value プロパティーを使用して、ストリング NEXT
を指定する場合は、コネクターの UseDefaults プロパティーの評価が
true である必要があります。詳細については、"UseDefaults"を参照してください。
属性の値に対して 固有 ID が設定されておらず、またストリング NEXT
が Default Value
プロパティーに指定されていない場合、アプリケーションによりキーの重複エラーがログに記録されます。
- すべての Required
属性に値が設定されていることを確認し、この値が不足する場合はエラーをスローします。Required
属性の詳細については、"Required プロパティー"を参照してください。
- 各子ビジネス・オブジェクトと子ビジネス・オブジェクトの各配列をコンポーネント・インターフェースに再帰的に挿入します。つまり、コネクターは子ビジネス・オブジェクトと、その子に組み込まれるすべての子ビジネス・オブジェクトを作成します。
- 注:
- 単一カーディナリティーの子ビジネス・オブジェクトを表す属性のビジネス・オブジェクト定義で、子が必要
(つまり、Required プロパティーの評価が true)
と指定する場合、検索では行を戻す必要があります。行を戻さないと、コネクターはエラーを戻し、処理を停止します。ただし、子が必須でなく、属性が空の場合、コネクターは属性を無視します。
- コネクターは、データを書き込んでコミットする Save()
メソッドを呼び出します。
- コネクターが固有 ID を生成する場合、このメソッドの実行時に生成されます。
- アプリケーションが固有 ID
を生成する場合、コネクターはこのメソッドの実行後にアプリケーションで設定されたキー値を検索します。
- 注:
- InterChange Server Express
が統合ブローカーの場合、InterChange Server Express
はビジネス・オブジェクトを相互参照するためにこの ID が必要なので、ID
を同時に送る必要があります。
- ビジネス・オブジェクトのアプリケーション固有情報に
setInteractiveMode が false
と定義されている場合、この時点ですべての PeopleCode 編集が行われます。すべての PeopleCode エラーは、PSMessage コレクション・キューにパブリッシュ
(パブリック化) されます。
- 同じキー値を持つコンポーネント・インターフェースのインスタンスがすでに存在する場合、アプリケーションは重複エラーを戻し、コネクターが
FAIL 戻りコードを送信します。
属性プロパティーの詳細については、"ビジネス・オブジェクトの属性プロパティー"を参照してください。アプリケーション固有情報の指定方法の詳細については、"属性レベルのアプリケーション固有情報"を参照してください。
ビジネス・オブジェクトを検索する場合、コネクターは、操作が成功したときには
(操作によりビジネス・オブジェクトが変更されたかどうかに関係なく)
VALCHANGE、操作が失敗したときには FAIL
のいずれかの状況を戻します。
コネクターは、階層ビジネス・オブジェクトを検索する場合、次のステップで行います。
- InterChange Server Express
から受け取るトップレベルのビジネス・オブジェクトからすべての子ビジネス・オブジェクトを除去します。
- トップレベルのビジネス・オブジェクトに対応するコンポーネント・インターフェースを検索します。
コネクターはソース・ビジネス・オブジェクト内のキー値を使用して、コンポーネント・インターフェースをインスタンス化します。検索の結果、次のいずれかのアクションが実行されます。
- コンポーネント・インターフェースのインスタンスを検出すると、コネクターは処理を継続します。
- コンポーネント・インターフェースのインスタンスを検出できず、トップレベルのビジネス・オブジェクトには、アプリケーション内に対応するコンポーネント・インターフェースがないことを示す場合、コネクターは
FAIL を戻します。
- 複数のコンポーネント・インターフェースのインスタンスを検出すると、コネクターは
MULTIPLE_HITS を戻します。
- 注:
- ビジネス・オブジェクトには、コンポーネント・インターフェースのどのプロパティーにも対応しない属性を設定することができます。検索中に、コネクターはトップレベルのビジネス・オブジェクト内のこのような属性は変更しません。受け取った値に設定されたままです。子ビジネス・オブジェクトの場合、コネクターは検索時に、このような属性にデフォルト値を設定します。
- ビジネス・オブジェクト配列に対応するコンポーネント・インターフェースのすべてのコレクションを再帰的に検索します。
コネクターは、それぞれの親ビジネス・オブジェクト内のキーとそれぞれの子の固有キーを使用して、コンポーネント・インターフェース・インスタンスまたはコンポーネント・インターフェース・コレクションからデータ行を選択します。戻された各行について、コネクターは次のアクションを実行します。
- 正しいタイプの新規の個別ビジネス・オブジェクトを作成します。
- 戻された行の値に基づいて、すべての現行ビジネス・オブジェクトの属性を設定します。
- すべての現行ビジネス・オブジェクトの子を再帰的に検索します。
- 現行ビジネス・オブジェクトを、そのすべての子とともに該当する親の配列に挿入します。
- 注:
- コネクターはビジネス・オブジェクトの配列に値を設定する際に、一意であることを強制しません。一意であることを確認するのは、アプリケーションで行う必要があります。アプリケーションから重複する子ビジネス・オブジェクトが戻されると、コネクターは
InterChange Server Express に重複する子ビジネス・オブジェクトを戻します。
- トップレベルのビジネス・オブジェクトの単一カーディナリティーの子それぞれに関して、コレクションを再帰的に検索します。コネクターは、それぞれの親ビジネス・オブジェクト内のキーとそれぞれの子の固有キーを使用して、コンポーネント・インターフェース・インスタンスまたはコンポーネント・インターフェース・コレクションからデータ行を選択します。コネクターは、次を実行します。
- ビジネス・オブジェクトの定義で子が必須であると指定されている場合、検索で行が戻される必要があります。子が必須ではなく、検索から行が戻されずにコンポーネント・インターフェース内に子が存在しないことを示すと、コネクターは親の単一カーディナリティー属性を空のままにしておきます。検索で複数の行を戻す場合、検索は失敗します。
- 子ビジネス・オブジェクトにより組み込まれたすべての子をコレクションから再帰的に検索します。
- ビジネス・オブジェクトを、そのすべての子とともに、親ビジネス・オブジェクトの該当する属性に挿入します。
ビジネス・オブジェクトを検索する場合、コネクターは、操作が成功したときには
(操作によりビジネス・オブジェクトが変更されたかどうかに関係なく)
VALCHANGE、操作が失敗したときには
FAIL、操作により複数行が返されたときには MULTIPLE_HITS
という状況を戻します。
コネクターは、階層ビジネス・オブジェクトを検索する場合、次のステップで行います。
- InterChange Server Express
から受け取るトップレベルのビジネス・オブジェクトからすべての子ビジネス・オブジェクトを除去します。
- トップレベルのビジネス・オブジェクトに対応するコンポーネント・インターフェースを検索します。
コネクターは、ソース・ビジネス・オブジェクトの検索キーであるこれらの属性の値を使用して、コンポーネント・インターフェースをインスタンス化します。(検索キー属性に対するアプリケーション固有情報の指定の詳細については、属性レベルのアプリケーション固有情報を参照してください。)
検索の結果、次のいずれかのアクションが実行されます。
- コンポーネント・インターフェースのインスタンスを検出すると、コネクターは処理を継続します。
- コンポーネント・インターフェースのインスタンスを検出できず、トップレベルのビジネス・オブジェクトには、アプリケーション内に対応するコンポーネント・インターフェースがないことを示す場合、コネクターは
FAIL を戻します。
- 複数のコンポーネント・インターフェースのインスタンスを検出すると、コネクターは
MULTIPLE_HITS を戻します。
- 注:
- ビジネス・オブジェクトには、コンポーネント・インターフェースのどのプロパティーにも対応しない属性を設定することができます。検索中に、コネクターはトップレベルのビジネス・オブジェクト内のこのような属性は変更しません。受け取った値に設定されたままです。子ビジネス・オブジェクトの場合、コネクターは検索時に、このような属性にデフォルト値を設定します。
- ビジネス・オブジェクト配列に対応するコンポーネント・インターフェースのすべてのコレクションを再帰的に検索します。
コネクターは、それぞれの親ビジネス・オブジェクト内のキーとそれぞれの子の固有キーを使用して、コンポーネント・インターフェース・インスタンスまたはコンポーネント・インターフェース・コレクションからデータ行を選択します。戻された各行について、コネクターは次のアクションを実行します。
- 正しいタイプの新規の個別ビジネス・オブジェクトを作成します。
- 戻された行の値に基づいて、すべての現行ビジネス・オブジェクトの属性を設定します。
- すべての現行ビジネス・オブジェクトの子を再帰的に検索します。
- 現行ビジネス・オブジェクトを、そのすべての子とともに該当する親の配列に挿入します。
- 注:
- コネクターはビジネス・オブジェクトの配列に値を設定する際に、一意であることを強制しません。一意であることを確認するのは、アプリケーションで行う必要があります。アプリケーションから重複する子ビジネス・オブジェクトが戻されると、コネクターは
InterChange Server Express に重複する子ビジネス・オブジェクトを戻します。
- トップレベルのビジネス・オブジェクトの単一カーディナリティーの子それぞれに関して、コレクションを再帰的に検索します。コネクターは、それぞれの親ビジネス・オブジェクト内のキーとそれぞれの子の固有キーを使用して、コンポーネント・インターフェース・インスタンスまたはコンポーネント・インターフェース・コレクションからデータ行を選択します。コネクターは、次を実行します。
- ビジネス・オブジェクトの定義で子が必須であると指定されている場合、検索で行が戻される必要があります。子が必須ではなく、検索から行が戻されずにコンポーネント・インターフェース内に子が存在しないことを示すと、コネクターは親の単一カーディナリティー属性を空のままにしておきます。検索で複数の行を戻す場合、検索は失敗します。
- 子ビジネス・オブジェクトにより組み込まれたすべての子をコレクションから再帰的に検索します。
- ビジネス・オブジェクトを、そのすべての子とともに、親ビジネス・オブジェクトの該当する属性に挿入します。
ビジネス・オブジェクトを更新する場合、コネクターは、操作が成功したときには
(操作によりビジネス・オブジェクトが変更されたかどうかに関係なく)
VALCHANGE、操作が失敗したときには FAIL
のいずれかの状況を戻します。
コネクターは、階層ビジネス・オブジェクトを更新する場合、次のステップで行います。
- ソース・ビジネス・オブジェクト内のキー値を使用して、対応するコンポーネント・インターフェースのインスタンスを検索します。検索したコンポーネント・インターフェースは、PeopleSoft
アプリケーション内のデータの現在の状態を正確に表しています。
- 検索が失敗し、トップレベルのビジネス・オブジェクトがアプリケーションに存在しないことを示すと、コネクターは
BO_DOES_NOT_EXIST を戻します。
- 検索に成功すると、コネクターは検索したコンポーネント・インターフェースとソース・ビジネス・オブジェクトを比較して、コンポーネント・インターフェース内の変更が必要な子ビジネス・オブジェクトを判別します。ただし、コネクターはソース・ビジネス・オブジェクト内の単純属性と検索したコンポーネント・インターフェース内の単純属性を比較しません。コネクターはすべての単純属性の値を更新します。
- トップレベルのビジネス・オブジェクトのすべての単一カーディナリティーの子を再帰的に更新します。
ビジネス・オブジェクト定義で属性が子ビジネス・オブジェクトに含まれていることが必須にされている場合、ソース・ビジネス・オブジェクトと検索したコンポーネント・インターフェースの両方に子ビジネス・オブジェクトが存在する必要があります。両方に存在しない場合は、更新が失敗し、コネクターはエラーを戻します。
コネクターは、次のいずれかの方法で、単一カーディナリティーの子ビジネス・オブジェクトの更新を処理します。
- ソース・ビジネス・オブジェクトと検索したコンポーネント・インターフェースの両方に子ビジネス・オブジェクトが存在する場合、コネクターはコンポーネント・インターフェース内の子ビジネス・オブジェクトを再帰的に更新します。
- 注:
- ソース・ビジネス・オブジェクトと検索したコンポーネント・インターフェースは一致する必要があります。2
つの階層オブジェクトに同じ単一カーディナリティーを持つ子が別の順序で含まれている場合、コネクターはエラーを戻し、処理を停止します。
- ソース・ビジネス・オブジェクトには子が存在するが、検索したコンポーネント・インターフェースには存在しない場合、コネクターはコンポーネント・インターフェース内に子ビジネス・オブジェクトを再帰的に作成します。
- 重要:
- キー属性のアプリケーション固有情報の UID パラメーターの評価が
false
の場合、ビジネス・オブジェクトを作成するビジネス・プロセスには、属性の新規の固有
ID
値が指定されている必要があります。ビジネス・オブジェクトに必要な値がない場合、コネクターはエラーをログに記録します。
キー属性のアプリケーション固有情報の UID パラメーターの評価が
true の場合は、アプリケーションで固有 ID
を生成する必要があります。この場合、属性の値または Default Value
プロパティーには、ストリング NEXT
が設定されている必要があります。つまり、プロセス・オブジェクトを作成するビジネス・プロセスに値
NEXT が設定されていない場合は、属性の Default Value
プロパティーにこの値が設定されている必要があります。ビジネス・オブジェクトが
Default Value プロパティーを使用して、ストリング NEXT
を指定する場合は、コネクターの UseDefaults プロパティーの評価が
true である必要があります。詳細については、"UseDefaults"を参照してください。
属性の値に対して 固有 ID が設定されておらず、またストリング NEXT
が Default Value
プロパティーに指定されていない場合、アプリケーションによりキーの重複エラーがログに記録されます。
- 検索したコンポーネント・インターフェースには子が存在するが、ソース・ビジネス・オブジェクトには存在しない場合、コネクターはコンポーネント・インターフェースから子ビジネス・オブジェクトを再帰的に削除します。ただし、親のアプリケーション固有情報の
KeepRelationship パラメーターの評価が true
の場合、コネクターは子ビジネス・オブジェクトを保存します。
更新操作時に子ビジネス・オブジェクトを削除する場合、コネクターは PeopleSoft
の deleteItem()
メソッドを使用して、コンポーネント・インターフェース・インスタンスから対応するコレクションを削除します。コネクターは、レベル
1 以上のコレクションのみを物理的または論理的に削除します。
アプリケーション固有情報の指定方法の詳細については、"属性レベルのアプリケーション固有情報"を参照してください。
- 検索したコンポーネント・インターフェースのすべての単純属性が更新されます。ただし、ソース・ビジネス・オブジェクト内の対応する属性に
CxIgnore 値が指定されている属性は除きます。
- 検索したコンポーネント・インターフェースのすべての配列を、次のいずれかの方法で処理します。
- ソース・ビジネス・オブジェクトの配列と検索したコンポーネント・インターフェースの配列の両方に子が存在する場合、コネクターはコンポーネント・インターフェース内の子ビジネス・オブジェクトを再帰的に更新します。
- ソース・ビジネス・オブジェクトの配列には子が存在するが、検索したコンポーネント・インターフェースの配列には存在しない場合、コネクターはコンポーネント・インターフェース内に子ビジネス・オブジェクトを再帰的に作成します。
- 検索したコンポーネント・インターフェースの配列には子が存在するが、ソース・ビジネス・オブジェクトの配列には存在しない場合、コネクターはコンポーネント・インターフェースから子ビジネス・オブジェクトを再帰的に削除します。
- 重要:
- ビジネス・オブジェクトを作成するビジネス・プロセスで、ソース・ビジネス・オブジェクト内の複数カーディナリティーのビジネス・オブジェクトが固有
(つまり、配列には同じビジネス・オブジェクトのコピーが複数存在しない)
であることを確認する必要があります。コネクターがソース配列内で重複するビジネス・オブジェクトを受け取ると、ビジネス・オブジェクトを
2 度処理し、予測できない結果が生じることがあります。
- 注:
- コネクターは、データの整合性を確実にするために検索中はデータをロックします。
コネクターはトップレベルのビジネス・オブジェクトは削除しません。ただし、トップレベルのビジネス・オブジェクトが
Update
動詞を使用し、またソース・データを表す要求ビジネス・オブジェクトに子ビジネス・オブジェクトが存在しない場合は、子ビジネス・オブジェクトを物理的に削除します。
詳細については、"更新操作"を参照してください。
コネクターは、作成または更新処理のためのビジネス・オブジェクトを受け取るたびに、コンポーネント・インターフェースにすべての変更を保管するか、またはなにも保管しません。コネクターが、データ変更の一部を保管することは決してありません。
