バッチ
バッチはオブジェクトに対する複数の操作 (メソッド呼び出し) を集めてパッケージ化します。バッチは 1 回の操作で実行されます。
バッチによりパフォーマンスが大幅に改善される可能性があるので、アプリケーション・ロジックが、バッチ・アイテム間でのアプリケーションの介入なしで完了可能な一連の操作の実行に適している場合には、バッチの作成を検討してください。例えば、あるアプリケーションは、Folder オブジェクトを作成し、Document オブジェクトを作成し、フォルダー内に作成したドキュメントをファイリングする DynamicReferentialContainmentRelationship オブジェクトを作成し、すべて 1 つの UpdatingBatch オブジェクトに関連付けるかもしれません。Content Engine サーバーは、UpdatingBatch オブジェクトに関連付けられたリスト内での同じ順序に従ってこれらのオブジェクトを更新します。バッチ処理は、RetrievingBatch オブジェクトを使用して複数オブジェクトのプロパティー値を取得する場合に適しています。フェッチするプロパティーがオブジェクトごとに独立して指定され、サーバーへの 1 回のラウンド・トリップで、すべてのプロパティーのフェッチが実行されます。
バッチに含まれる各操作は、BatchItemHandle インスタンスとして参照されます。バッチは、抽象クラス Batch のサブクラスであり、BatchItemHandle インスタンスのリストが含まれています。バッチがトランザクション操作かどうかは、次のようにそのタイプによって異なります。
- UpdatingBatch 操作
このタイプのバッチ操作は、永続化されたオブジェクトを作成、更新および削除し、トランザクションとして実行されます。IndependentlyPersistableObject 参照は蓄積され、UpdatingBatch クラスのインスタンスが単一のトランザクションとして実行されます (インスタンスの updateBatch メソッド呼び出しによる)。バッチの実行は値を返さず、保留中のコミットがすべて成功するか、そうでなければ、すべて失敗します (失敗の時点で、トランザクションはロールバックされ、例外がスローされます)。
注: UpdatingBatch 操作には次の制約が適用されます。単一バッチ内でのメタデータ更新内容は、同一バッチ内のほかのバッチ・アイテムでは使用できません。UpdatingBatch インスタンスはトランザクション内で実行され、サーバー・サイドのメタデータ・キャッシュはトランザクション内では再ロードされません。メタデータの更新を使用できるようにするには、バッチ操作をコミットする必要があります。
- バッチ取得
このタイプのバッチ操作は、独立オブジェクトを取得するもので、トランザクションとしては実行されません。IndependentObject 参照が累積され、含まれているオブジェクトごとに更新 (取得) されるか、例外が個別に発生します。単一操作でのオブジェクトの保存と取得の場合、取得済みオブジェクトへの変更はすべてその場で実施されます。このため、既存の IndependentObject 参照は引き続き有効であり、変更内容が反映されます。