インスタンス・リストにエントリーを追加
インスタンス・リストには各種のオブジェクトを追加できます。その方法には、次の2通りがあります。
フィルタを使用する。AddToListメソッドに新しく追加されたオプションのBusinessObjectType()パラメーターにより、フィルターで複数の種類のビジネス・オブジェクトを同じインスタンス・リストに追加できます。このパラメータにブランクまたはNullが渡された場合、またはこのパラメーターが指定されていない場合、デフォルトではフィルターを所有しているビジネス・オブジェクトが指定されます。
リレーション・ハンドラーを使用する。親子リレーションでは、オプションでリレーション・ハンドラーを指定する方法が唯一の方法です。これはRDMLファンクションのひとつで、親オブジェクトと子オブジェクトのリレーションを動的に「拡張」するために呼び出されます。この処理を行うと、ルート・オブジェクトまたは親オブジェクトを最初にインスタンス・リストに追加するだけで、フィルターのパフォーマンスが向上します。このファンクションの例は「リレーション・ハンドラーのサンプル」で紹介しています。
オブジェクトの親子リレーションが存在する場合、プログラム上の識別子がインスタンス・リストで使用されている形式と同様の形式で階層リレーションが最初から存在しているものと見なされます。
例えば、ProductオブジェクトがAKey1(#Product_Number)で自分自身を一意に識別している場合、子BOMsとCostsにもAKey1の値と同じ(かつ正しい)製品番号が設定されているものと見なされます。また、どちらのオブジェクトとも、この他にAKeyNとNKeyNの値を使用して自分自身を一意に識別します。
この時点で、このサンプルのインスタンス・リストには、複数のオブジェクト(Products、BOMs、Costs)が存在するため、新しい注意事項を考慮する必要があります。例えば、BOMを右クリックして、製品の詳細を表示するよう指定したとします。
製品:詳細コマンド・ハンドラーが起動し、表示されます。
コマンド・ハンドラーが現在のインスタンス・リストを取得しても、実際に取得されるのは現在選択されているBOMインスタンス・リストのエントリーです。GetCurrentInstanceメソッドはインスタンスのBusinessObjectTypeの値をオプションで返すため、プログラムでこの状態を識別することができます。
通常、製品:詳細コマンド・ハンドラーは特定のBusinessObjectTypeを認識する必要はありません。これは、Products、BOMs、Costsの各オブジェクトで使用されているプログラム上の識別子固有の階層リレーションにより、製品番号がすべてAKey1に格納されているためです。製品:詳細コマンド・ハンドラーが認識する必要があるのはこの値のみです。