[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]] 「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>CRMのカスタマイズ]] * 目次 [#ka780182] #contents *概要 [#cac71ae7] -外部キー制約 (参照制約 または参照整合性制約)的な。 -伝播規則の説明~ 特定操作の1対多の関連付けの関連レコードへの影響を制御 *関連付けの例 [#w888621f] 営業案件エンティティ -活動エンティティ -取引先企業エンティティ --ユーザ エンティティ(レコードの作成者) ---部署 ---組織 -取引先担当者 --ユーザ エンティティ(レコードの作成者) ---部署 ---組織 *1対多(多対1) [#yb933f7a] -親子関係 --1つの主エンティティ(親) --複数の関連エンティティ(子) --親の外部キーが子のプライマリー キーを指している。 -トランザクション データ・マスタ データ --1つの主エンティティ(マスタ データ) --複数の関連エンティティ(トランザクション データ) --トランザクション データの外部キーが、~ マスタ データのプライマリー キーを指している。 ※ ここでの関連エンティティは、1対多の多側を表現するエンティティの意味。~ ”多対多を表現するエンティティのことではないので注意する。”~ 1対多の多側を表現するエンティティには交差エンティティという用語を使用する。 **作成 [#b96abaa7] -フィールドの作成時、関連エンティティ(子)側で[[検索>CRM フィールドのカスタマイズ#b65e08e5]]のデータ型を指定する。 -若しくは、エンティティの[関連付けの種類]を選択し、メニュー バーにある[新規]をクリックする(推奨)。 -内部的には、主キー(GUID)に対する外部キー(GUID)を設定している。 **表示 [#zf44e1da] -レコード~ レコードを開くとナビゲーション バーからエンティティを辿ることができる。 -ソリューション エクスプローラー~ 反転エントリを表示、どちらからも関連付けの作成・変更が可能。 --親 ---> 子~ 主エンティティから ---> 1対多 --子 ---> 親~ 関連エンティティから ---> 多対1 *多対多 [#b5f5a1b9] -関連レコードを使用して多対多を表現する。 -2つのエンティティをリンクする~ 関連レコードを格納する中間テーブルは以下のように呼ばれる。 --交差エンティティ --リンク エンティティ --リンク テーブル ここでは、交差エンティティを使用する。 エンティティA <-> 交差エンティティ <-> エンティティB **作成 [#y21177b6] システム エンティティ、カスタム エンティティを使用する方法がある。 ***ネイティブ [#n1e7465f] -概要~ プラットフォームの機能で交差エンティティを作成する。 -特徴~ 平たく言って、プラットフォームから見てエンティティではないので、 --交差エンティティに直接クエリを実行できない。 --交差エンティティの関連レコードを追加するには関連ビューを使用する。 --交差エンティティのカスタマイズは不可能(e.g.:列の追加は不可能)。 --交差エンティティをワークフロー ルールに含めることはできない。 --交差エンティティへの特権はない([[関連エンティティへの追加・追加先特権で制御>CRM セキュリティモデルの作成#v51f20da]])。 --関連エンティティ、交差エンティティ共に、常に監査が有効になっている。 ***手動 [#yfc1e865] -概要~ システム設計の一部として、交差エンティティを作成する。 --この交差エンティティ=1対多の関連付けをする 2つの[[検索フィールド>CRM フィールドのカスタマイズ#b65e08e5]]を持つカスタム エンティティ。 --交差エンティティにカスタム フィールドを追加する必要がある場合には、こちらの方法を使用する。 -特徴~ 平たく言って、通常のカスタム エンティティなので、 --交差エンティティに直接クエリを実行できる。 --交差エンティティをワークフロー ルールに含めることができる。 ***組込み機能 [#vc1184b0] その他の組込み機能について。 -キューアイテム~ キューにリンクされているレコードの詳細を格納する。 -フォロー~ ユーザが関心を持っているレコードを示する。 -つながり --つながりエンティティ~ https://msdn.microsoft.com/ja-jp/library/gg328381.aspx --つながりロールを使用してエンティティ間の関係を記述する~ https://msdn.microsoft.com/ja-jp/library/gg328007.aspx **表示 [#w85b7c84] ***ネイティブ [#wfaaa86d] -関連ビューに交差エンティティは表示されない(エンティティA <-> エンティティBと表示される) ***手動 [#i2b37317] -関連ビュー(多対多の関連)が表示されない(エンティティA <-> エンティティBと表示されない) -通常のエンティティのビューで表示。 -必要に応じてカスタムの関連ビューを作成する。 *作成方法 [#xda3cd83] -エンティティ関連付けの作成および編集~ https://technet.microsoft.com/ja-jp/library/dn531171.aspx **1対多 [#cd6f251c] 手順 -ソリューションのエンティティ一覧を展開 -エンティティ(関連エンティティ側)を展開 -エンティティの[関連付けの種類]で1対多を選択 -メニュー バーにある[新規]をクリック -以下の関連付けのプロパティを定義する。 ※フィールドの作成時、関連エンティティ(子)側で[[検索>CRM フィールドのカスタマイズ#b65e08e5]]のデータ型を指定しても良い。~ (その場合、以下プロパティには既定の設定が適用される)。 ***関連付けのプロパティ [#r9e4329a] |/|プロパティ|説明|h |1|主エンティティ|1対多の1の方のエンティティ| |2|関連エンティティ|1対多の多の方のエンティティ(変更不可能)| |3|名前|関連付けの名前(既定は接頭辞_主エンティティ_関連エンティティ)| |4|検索可能|高度な検索ツールで関連レコードをドリルダウンできる| ***検索フィールド [#p5986ff7] 関連付けによって作成される、関連エンティティの検索フィールドのプロパティ |/|プロパティ|説明|h |1|表示名|検索フィールドの説明| |2|名前|検索フィールドのスキーマ名(既定値は表示名+Id)| |3|フィールド要件|主エンティティが必須の場合、検索フィールドに[必須項目]を指定する。| |4|説明|検索フィールドの説明| ***主エンティティのナビゲーション バー項目 [#na04e02b] 主エンティティのレコードのナビゲーション バーに表示される項目 |/|プロパティ|説明|h |1|表示オプション|- [複数形の名前を使用する]:1対多なので関連エンティティの複数形の名前が使用される。&br;- [カスタム ラベルを使用する] ---> [カスタム ラベル]:カスタム ラベルを入力する。&br;- [表示しない]:ナビゲーション バーに関連エンティティを表示しない。| |2|カスタム ラベル|上記参照。よりコンテキストに特化した名称をナビゲーション リンクに付与できる。| |3|表示領域|ナビゲーション バーの表示セクションの選択(詳しくは「[[CRM フォームのカスタマイズ]]」を参照)| |4|表示順序|表示セクションに表示するための順序| **多対多 [#r49f4f3a] 手順 -ソリューションのエンティティ一覧を展開 -エンティティの[関連付けの種類]で多対多を選択 -メニュー バーにある[新規]をクリック -以下の関連付けのプロパティを定義する。 ***現在のエンティティとその他のエンティティ [#v5b54550] 多対多の場合、[現在のエンティティ]と[その他のエンティティ]を設定する。 プロパティは -主エンティティ -関連エンティティ を除いて「[[関連付けのプロパティ>#r9e4329a]]」と同じ。 検索可能は、交差エンティティではなく、多対多の関連の反対側のエンティティに対して。 *(1対多)関連付けの動作 [#ed764ae8] 1対多の関連付けにおいて、~ 主レコードに対する「[[操作>共通的な機能#r7905dbe]]」がどう関連レコードに伝播するか?的な話。 **伝播する動作 [#h480e579] |/|アクション|説明|h |1|割り当て|主レコードが割り当てられる場合| |2|共有|主レコードが共有される場合| |3|共有の解除|主レコードの共有が解除される場合| |4|リペアレント|関連レコードの初回関連付けか、関連付けの変更| |5|統合|主レコードが別レコードに統合される場合| |6|削除|主レコードが削除される場合| **動作の伝播ルール [#n57c8640] ***割り当て、共有、共有解除、リペアレント [#o5521247] 割り当て、共有、共有解除、リペアレントの操作には、以下のルールを使用可能。 |/|ルール|関連付けの関連エンティティに対する結果|h |1|すべての(種類の)レコードに伝播|すべての関連レコードに伝播| |2|アクティブ レコードにのみ伝播|状態がアクティブな関連レコードに伝播| |3|同一所有者レコードにのみ伝播|同一所有者の関連レコードに対して伝播| |4|伝播しない|関連レコードは影響を受けない| 同一所有者の所有者とは、「[[レコードベースのセキュリティ>CRM セキュリティモデルの作成#v51f20da]]」にあるようにレコードの所有者(割当した場合は、再割当て前)を指す。 ***削除 [#m1f48c0e] 削除の操作には、以下のルールを使用可能。 |/|ルール|関連付けの関連エンティティに対する結果|h |1|すべての(種類の関連)レコードに伝播|すべての関連レコードを削除(ON DELETE CASCADE的な)| |2|関連付けの解除|検索フィールドをクリアし関連レコードを残す(ON DELETE SET NULL的な)。| |3|制限する|関連レコードがある場合は主レコードを削除できない(ON DELETE NO ACTION的な)。| -連鎖参照整合性制約の~ [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]的な。 --連鎖参照整合性制約~ https://technet.microsoft.com/ja-jp/library/ms186973.aspx **動作に関わる関連付けの種類 [#fe60ed4e] ***上位下位の関連付け [#fb0cc74a] 1つのエンティティに1つだけ定義可能。 -主レコードの操作が関連レコードにも伝播する。 -主レコードを割り当てると、関連レコードも割当てられる。 ***参照の関連付け [#n71d2390] その他の関係付けは、すべて参照の関連付け。 -主レコードの操作が関連レコードに伝播しない。 -主レコードを割り当てても、関連レコードは割り当てられない。 ***テンプレート [#bd3c8e75] 動作に関わる関連付けの種類に対応した~ 定義済みの伝播ルールのテンプレートが用意されている。 |/|動作の種類|伝播規則|h |1|上位下位|すべてのルール:すべてのレコードに伝播| |2|参照|主なルール:伝播しない、削除:関連付けの削除| |3|参照+削除制限|主なルール:伝播しない、削除:削除制限| |4|構成可能な伝播|すべてのルール:既定ではすべてのレコードに伝播(カスタマイズ可能)| **操作の伝播の考慮点 [#dd499996] ***割り当て [#k91ae72f] -関連コードまで割り当て操作が伝播する場合、それがビジネス・プロセス的に適正か考慮する。 --旧レコード(履歴)までに操作が伝播される。 --ビジネス プロセスの異なるドメイン(営業、サポート、マーケティング)のレコード伝播する。 --必要に応じて、[[動作の伝播ルール>#n57c8640]]をカスタマイズする。 -システム エンティティ、カスタム エンティティ --システム エンティティでは、上位下位のテンプレートが適用されている。 ---取引先企業 ---取引先担当者 ---サポート案件 ---営業案件 ---すべての活動 --カスタム エンティティでは、伝播規則を個別に確認する。 ***共有と共有解除 [#tb65a27b] -割り当てと同様。 -また、大量の共有はパフォーマンスに悪影響がある。 --スキーマの設計を考慮すると、共有はDBMSの一つのテーブルで管理される。 --セキュリティ ロールの構成によってもパフォーマンスの影響を受ける。 --不必要な共有を行わない(行わせない) ---[[アクセス レベルがグローバル>CRM セキュリティモデルの作成#g009221f]]な特権 ---構成可能な伝播テンプレートを使用し、上位下位の1対多の関連付けから共有伝播規則を削除する。 ---アクティブ レコードにのみ伝播、同一所有者レコードにのみ伝播の伝播ルールを使用する。 -反対の操作が可能の様に共有の伝播を解除しても共有の解除の伝播は解除しない(推奨)。 ***リペアレント [#ef404848] -主レコードの所有者に関連レコードのアクセス権が与えられる(暗黙の共有)。 --主レコードより関連レコードの方が気密性が高い場合はリペアレントの伝播は適用できない。 --エンティティに対する特権以上のアクセス権が与えられることはない。 -以下のケースでは、影響を受けない。 --リペアレントの伝播は、割り当てでトリガされない。 --明示的な共有と暗黙の共有は、同じユーザ&アクセス権でも別々に管理されるため、明示的な共有の影響を受けない。 -推奨 --すべてのレコードに伝播(便利) --すべてのレコードに伝播しない(安全) --特定のエンティティを保護する場合、 ---リペアレントの伝播に注意する。 ---上位下位のテンプレートを使用した関連付けも確認する。 --アクティブ レコードにのみ伝播、~ 同一所有者レコードにのみ伝播~ の伝播ルールが使用されることは少ない。 ***削除 [#w9962f30] こちらは、連鎖参照整合性制約的なもので~ ”孤立したレコード発生を回避するために使用”される。 こちらは、[[連鎖参照整合性制約>#m1f48c0e]]的なもので、 特に、孤立したレコード発生を回避する場合、 -「関連付けの解除」ルールは使用しない。 -検索フィールドを必須入力にする。 *(1対多)関連付けのフィールド マッピング [#m366cac6] -エンティティ フィールドのマッピング~ http://www.microsoft.com/ja-jp/dynamics/crm-customer-center/mapping-entity-fields.aspx **概要 [#i45f9edd] 主エンティティ レコードに関連付けられる新しい関連エンティティ レコードを作成するとき、 -主エンティティ レコードのソース フィールドの値が、 -関連エンティティ レコードのターゲット フィールドに コピーされる。 例:取引先企業 ---> 取引先担当者(TEL、住所) **スコープ [#g8a684c7] -主エンティティ レコードのコンテキスト外で作成する場合、空白になる。 -作成後に関連付けを行う場合、フィールド マッピングされないので、~ 重要なフィールドの入力を支援するワークフロー・プラグインを使用する。 -作成時のフィールドに自動入力される。 -この時点では保存されていないため変更できる。 -自動保存されるエンティティはこの限りではない。 -後に主エンティティ レコードのソース フィールドの値が変更されても、~ 関連エンティティ レコードのターゲット フィールドの値は変更されない。 -関連エンティティ レコードのターゲット フィールドの値が、~ 主エンティティ レコードのソース フィールドにコピーされる~ と言った逆の動作はしない。 **構成 [#rfc66d74] ***ポイント [#yaa176b8] -構成可能なマッピング --1つのソース フィールドを、複数のターゲット フィールドにマップできる。 --1つのターゲット フィールドは1つのマッピングにしか使用できない。 -制限事項 --ソース フィールド・ターゲット フィールドが同じ型。 --テキスト フィールドの場合:ソース フィールド<=ターゲット フィールド --数値フィールドの場合:ソース フィールド=ターゲット フィールド ***手順 [#o4064509] -手動設定 --主エンティティ or 関連エンティティに移動。 --[関連付け]フォームを開き、ナビゲーション ウィンドウの[マッピング]をクリック。 --[新規]をクリックし、[フィールド マッピングの作成]をクリック。 ---左側:主エンティティ レコードのソース フィールドを設定 ---右側:関連エンティティ レコードのターゲット フィールドを設定 ---[OK]をクリック(他のフィールドマッピングを構成する場合、ココを複数回繰り返す) --[保存して閉じる]をクリックして[関連付け]フォームを閉じる。 -自動設定 --主エンティティ or 関連エンティティに移動。 --[関連付け]フォームを開き、[その他の操作] ---> [マッピングの生成]をクリック。 設定後、直ちにアクティブになる(保存・公開などの手続きはない)。 **オプション セットのマッピング [#zb5385b0] -オプション セット(数値とテキスト) --数値をコピーする。 --数値がターゲット フィールドのオプション セットに無い場合、~ 破棄される?(新しい数値が割り当てられる?)。 --オプション セットのマッピングが無効な場合、~ ターゲット フィールドでは既定のオプション セット値が使用される。 --ラベルの意味が異なっていてもコピーされる(選択内容の妥当性検証はされない)。~ 従って、数値に対応するテキスト・ラベルが同じ意味で使用されていることを確認する。 -従って、マッピングするフィールドのオプション セットは、~ 双方とも同一のグローバル オプション セットを使用することを推奨する。 *接続とつながりロール [#pcfa66c8] より簡単なレコード間のリンク。 -つながりロールを使用してエンティティ間の関係を記述する~ https://msdn.microsoft.com/ja-jp/library/gg328007.aspx -つながりエンティティ~ https://msdn.microsoft.com/ja-jp/library/gg328381.aspx **接続 [#b415467e] -任意の2レコードを接続。 -1つのレコードに複数の接続を設定できる。 **つながりロール [#vce29d91] 接続のリンクを説明する。 ***既定のつながりロール [#c18bd959] 既定で以下の汎用的な、つながりロールが作成される。 -同僚 -意思決定者 -インフルエンサー~ (購買意思決定に影響を与える人) -パートナー -関係者 ***つながりロールの作成 [#veaaaf22] -ポイント --ソリューションで展開できる。 --接続できるエンティティを制限することで、~ オプションを少なくして使いやすくできる。 --・・・? -構成手順 --・・・ **手順 [#y62675ff] -1つのレコードを開く -コマンド バーの[接続]をクリックする。 -"新しい接続"フォームの[接続先]タブで --[名前]検索フィールドを使用し他のレコードを選択。~ 検索ダイアログ ボックスでは任意のエンティティを選択できる。 --[このロールとして]検索フィールドでつながりロールを選択。~ つながりロールのオプション・・・ --[説明]を入力 --必要に応じて[詳細]タブを入力 ---[接続元]フィールド:元レコードが表示される。 ---[このロールとして]:検索フィールドでつながりロールを選択。 ---[開始日]・[終了日]:接続の期間 ---接続の所有者:接続の所有者 -保存して閉じる。 **ビュー [#y56121b6] ***自分のつながりビュー [#s1c02a89] 接続をサポートするエンティティには”自分のつながり”ビューが用意される。 -自分が”接続の所有者”であるレコードが表示され、関心のあるレコードを追跡するのに便利。 -接続ではなくレコードが表示されるので、削除は接続ではなくレコードの削除になる。 ***接続関連ビュー [#p20b5891] 接続を表示するビュー。 -表示方法 --対象レコードを開き、ナビゲーション バーから[接続]をクリック --[アクティブな接続関連ビュー]に接続(レコードとつながりロール)が表示される。 --接続をダブルクリックして開く。