BOPFでは、関連付けを使用して、2つのノード間の直接かつ一方向の関係を定義します。
アソシエーションを使用して、ソースノードから関連するターゲットノードに移動できます。1つ以上のビジネスオブジェクトまたはビジネスオブジェクト拡張で関連ノードを定義できます。複数のビジネスオブジェクトで関連付けられたノードを定義する場合は、ビジネスオブジェクト間の関連付けを定義します。このように、アソシエーションを使用すると、LEGOの原則に従って、BOを複雑なアセンブリに統合できます。さらに、関連付けを使用して、サブノードの新しいノードインスタンスを作成できます。
アソシエーションのタイプとカテゴリ
BOPFは、2つの異なるタイプの関連付けを提供します。
複合協会
複合アソシエーションは、同じツリーノード階層内の親ノードから子ノードへの関係を定義します。このタイプの関連付けには、次のカテゴリが含まれます。
- 定期的な作曲協会
- 専門分野
- 委任されたノード(依存オブジェクト)との関連付け
- フレームワークの関連付け(フレームワークノードへのリンク)
一般協会
このタイプの関連付けは、1つの同じBOのツリーノード階層全体、または異なるBOツリーのノード間でさえもソースノードとターゲットノード間の関係を定義します(クロスBO関連付け)。一般的な関連付けには、次のカテゴリが含まれます。
- 外部キーアソシエーション/逆外部キーアソシエーション
- 逆スペシャライゼーション
- アソシエーション「To_Parent」
- アソシエーション「To_Root」
- クロスBOアソシエーション
- 実装固有の関連付け
協会のカーディナリティ
アソシエーションのカーディナリティは、ノードインスタンスが関係にどのように関与するかを表します。これは、単一のソースインスタンスに接続され、下限と上限でx..y(lower_bound .. upper_bound)の形式で表されるノードインスタンスの数を指定します。
ソースノードとターゲットノード間のアソシエーションのカーディナリティに次の値を割り当てることができます。
- 1:0..1
- 1:1
- 1:0..n
- 1:1..n
アソシエーションのカーディナリティ
アソシエーションのモデリングまたは実装
アソシエーションのロジックは、次の2つの方法で提供できます。
アソシエーションバインディングの使用(推奨!)
ビジネスロジックとの関連付けを提供する標準的な方法は、関連付けをバインドすることです。このモデリングアプローチは、実装作業なしで宣言ステップによって実行されます。
実装
ただし、場合によっては、モデリング機能でカバーされていない非常に特殊なビジネスロジックが必要になることがあります。このような場合、特定の関連付けの実装が必要です。アソシエーションは、アソシエーションインタフェースBOBF/IF_FRW_ASSOCIATIONを実装するABAPクラス内にカプセル化されます。
アソシエーションAPIの使用
メソッド呼び出しは、内部コンシューマー(たとえば、アクション実装外)が関連付けに従ってノードキーとノードデータを取得するために使用できます。
/ BOBF / IF_FRW_READ-> RETRIEVE_BY_ASSOCIATION()
次のRETRIEVE_BY_ASSOCIATION()メソッドの呼び出しでは、サービスマネージャーが使用され、外部コンシューマー(REPORTまたはUIコンポーネントなど)によってトリガーできます。
/ BOBF / IF_TRA_SERVICE_MANAGER-> RETRIEVE_BY_ASSOCIATION()
アソシエーションクラスの実装
アソシエーションは、アソシエーションインタフェースBOBF/IF_FRW_ASSOCIATIONを実装するABAPクラス内にカプセル化されます。