多対多関係
オブジェクト間の1対多の関係に加え、オブジェクトの間には多対多の関係も存在できます。 たとえば、サービス要求では、複数の従業員が作業している場合があります。 同時に、単一の従業員が複数のサービス・リクエストを処理できます。
このシナリオでは、サービス要求オブジェクトとリソース・オブジェクトの間に多対多関係を作成し、両方のオブジェクトの関連レコードのプライマリ識別子が交差オブジェクトに格納されます。 デスクトップ作業領域では多対多関係はサポートされていません。
多対多関係を作成した後は、その関係を削除できません。
多対多関係の作成: 例
アプリケーション・コンポーザを使用して多対多関係を作成するには:
-
「共通設定」ペインで「関係」を選択します。
-
関係ページで、「新規」アイコンをクリックします。
-
ソース・オブジェクトおよびターゲット・オブジェクトを選択します。
子オブジェクトをソース・オブジェクトまたはターゲット・オブジェクトにすることはできません。
ノート共通コンポーネントは、ソース・オブジェクトまたはターゲット・オブジェクトとして選択できません。
関係を作成すると、ソース・オブジェクトおよびターゲット・オブジェクトは編集できなくなります。
ノート:特定のオブジェクト・セットに対して作成できる多対多関係は1つのみです。
-
関係名と説明を入力します。
関係を作成すると、関係名は編集できなくなります。
-
関係のカーディナリティを示します:
-
M:M
-
Many-to-many
-
-
-
交差オブジェクトの名前を入力します。
交差オブジェクトの表には、2つの外部キーが記録されます: 1つはサービス・リクエスト・オブジェクト用で、もう1つはリソース・オブジェクト用です。 これにより、多対多関係が有効になります。
交差オブジェクトは、アプリケーション・コンポーザで拡張可能な最上位オブジェクトとして使用できます。 オプションで交差オブジェクトを拡張します。 交差オブジェクトに追加するカスタム・フィールドは、作成するサブタブに表示できます。これについては、次の項で説明します。
交差オブジェクトには、対応するwebサービスも自動的に公開されます。
オプションで、この交差オブジェクトに対する監査を有効にして、このオブジェクトの属性に対する変更が監査履歴作業領域に表示されるようにできます。 交差オブジェクトの監査を設定するには、設定および保守作業領域の「監査ポリシーの管理」タスクを使用し、製品として「CRMアプリケーション・コンポーザ」を選択します。
-
オプションで、ソース・オブジェクトとターゲット・オブジェクトの両方のデータ・フィルタ基準を指定します。
ここで指定したフィルタ条件によって、実行時に、この関係の他のオブジェクトのレコードに関連付けることができるレコードが制御されます。
読み取り: 「カスタム・オブジェクトの「検索と選択」ダイアログの構成」。
サブタブの追加
多対多関係を作成した後、各オブジェクトのアプリケーション詳細ページで関連オブジェクト・サブタブを追加できるようになりました:
多対多関係のサブタブは、アプリケーション詳細ページのみに追加できます。 デスクトップ作業領域では多対多関係はサポートされていません。
-
サービス・リクエストの詳細ページで従業員サブタブを作成します。
サブタブには、特定のサービス・リクエストを処理しているすべての従業員が表示されます。 実行時に、エンド・ユーザーは特定のサービス・リクエストを処理している従業員を追加または削除できます。
サブタブの作成時に、従業員名やタイトルなど、表示するリソース・フィールドを選択できます。 表示する交差オブジェクト・フィールド(プライマリ・サービス・リクエスト所有者など)を選択することもできます。
-
従業員の詳細ページでサービス・リクエスト・サブタブを作成します。
各従業員は複数のサービス・リクエストを処理できるため、サブタブには、従業員が作業しているすべてのサービス・リクエストが表示されます。 エンドユーザーは実行時に、従業員が作業しているサービス・リクエストを追加または削除できます。
サブタブを作成するときに、表示する「サービス・リクエスト」フィールド(「サービス・リクエスト」AbstractやDate Loggedなど)を選択できます。 表示する交差オブジェクト・フィールド(プライマリ・サービス・リクエスト所有者など)を選択することもできます。
関連オブジェクト・サブタブに表示するフィールドを選択する場合、関係が多対多関係である場合、結合フィールドは選択できません。
カスタム・オブジェクトの検索と選択ダイアログの構成
検索と選択ダイアログを使用すると、エンド・ユーザーは、サービス・リクエストに従業員など、あるレコードを別のレコードに割り当てるときに、オブジェクト・レコードを検索して選択できます。 これらのダイアログ・ボックスは、関係の作成後に作成した関連オブジェクト・サブタブから起動されます。
検索と選択ダイアログ・ボックスは、標準オブジェクトに対して自動的に提供され、拡張できません。 ただし、カスタム・オブジェクトを含む多対多関係を作成する場合は、それらのカスタム・オブジェクトの検索および選択ダイアログ・ボックスを構成する必要があります。
関係定義で指定するフィルタ基準は、検索と選択ダイアログに適用され、実行時にこの関係の他のオブジェクトのレコードに関連付けることができるレコードを制御します。
たとえば、エンドユーザーが従業員と関連付ける未割当のサービス・リクエストのみを選択できるフィルタ条件を定義できます。
Groovyスクリプトの構文
多対多関係を作成すると、交差オブジェクトに2つの外部キー・フィールド(オブジェクトごとに1つ)が作成されます。 次のAPI名を使用して、スクリプト内のそれらの外部キーにアクセスします。
関係タイプ |
外部キーAPI名 |
使用パターン |
---|---|---|
参照関係(多対多) |
ソース・オブジェクト名がSourceObj_c、ターゲット・オブジェクト名がTargetObj_c、交差オブジェクトがIntersectionObject_cの場合、2つの外部キーAPI名(交差オブジェクトに追加)はTargetObj_Id_Tgt_TargetObj_cToIntersectionObject_cおよびSourceObj_Id_Src_SourceObj_cToIntersectionObject_cです。 |
<Name of the object>_Id_Tgt_<Name of the object>_cTo<Intersection object name>, <Name of the object>_Id_Src_<Name of the object>_cTo<Intersection object name> |