- 追加された行はこの色です。
- 削除された行はこの色です。
Open棟梁Project - マイクロソフト系技術情報 Wiki
-[[戻る>Dynamicsのカスタマイズ]]
* 目次 [#g3778851]
#contents
*概要 [#be1bd860]
-マーケティング・モジュール
-営業モジュール
-サービス・モジュール
分野におけるCRM(顧客関係管理)を中心に構築されている。
その一方で、民間・政府・非営利のあらゆる部門における広範囲な~
機能を制御可能な多様性からxRMという言葉が使われるようになってきている。
*構成 [#x323f671]
カスタマイズは
-[[ソリューション コンポーネント>#cb6cf5ad]]
-[[外部コンポーネント>#o57e5a1d]]
から構成される。
**ソリューション コンポーネント [#cb6cf5ad]
カスタマイズ ツールまたは API を使用して作成され、~
アプリケーション内で完全にホストされる。
*方法 [#r91122d1]
-Web アプリケーションのカスタマイズ ツール
-Web アプリケーションの設定
-レポート サービス
-フィルター ビュー
***種類 [#sdfb9efd]
-スキーマ
--エンティティ
--属性
--関連付け
--グローバル オプション セット
などがあり、これを以下のようなテクノロジ・カットの詳細区分に分解。
-ユーザインターフェイス
--アプリケーション リボン
--サイトマップ
--フォーム
--エンティティ リボン
--Webリソース
-分析
--ダッシュボード
--レポート
--ビジュアル化
**ポイント アンド クリック [#x21f60d4]
GUIツールだけで変更可能な手法
-Web アプリケーションのカスタマイズ ツール
-Web アプリケーションの設定
-プロセス/コード
--プロセス
---ダイアログとワークフロー
--プラグイン
---アセンブリ
---処理手順
**JavaScript [#t32abf6c]
-JavaScript
-Web アプリケーションの設定
-テンプレート
--差し込み印刷
--電子メール
--契約
--記事
***フォーム スクリプト イベント ハンドラー [#bec0fd02]
フォーム イベント ハンドラーが JavaScript Web リソースで定義された関数を呼び出すように構成する。
-セキュリティ
--セキュリティ ロール
--フィード レベルのセキュリティ プロファイル
***コマンドバー (リボン) コマンド [#s25ae20f]
<CustomRule>(RibbonDiffXml) or <JavaScriptFunction>(RibbonDiffXml) 要素を使用し、~
JavaScript Web リソース内に定義された関数を呼び出すアクションを定義する。
***外部コンポーネント [#o57e5a1d]
アプリケーションの外部で動作するソフトウェアは、~
インストーラー プログラムなど、従来の方法で~
アプリケーションをパッケージ化してインストールする。
***Web リソースと IFRAME [#i759f07d]
HTML Web リソース内で JavaScript Web リソースを使用、親子で対話できる。
**方法 [#r91122d1]
***ポイント アンド クリック [#x21f60d4]
GUIツールだけで変更可能な手法
**プラグイン [#ybca4a58]
Microsoft Dynamics CRM SDKを使用したビジネス ロジックのプラグイン メカニズム。~
設置型、IFD、およびOnline(分離モード) の Microsoft Dynamics CRM 展開で使用可能。
***JavaScript [#t32abf6c]
アセンブリの %installdir%\server\bin\ フォルダーへの追加は、~
設置型および IFD サーバー インストール型のみでサポートされています。
-プラグイン
-Web アプリケーションの設定
***ワークフロー定義 [#j4b35090]
ワークフロー ルールから呼び出されるユーザー定義ワークフロー活動 (アセンブリ) の作成
***.NETプラグイン [#u5dcd5a0]
***XMLを直接編集 [#v6e07d97]
**XMLを直接編集 [#v6e07d97]
エクスポートしたソリューション パッケージのXMLを直接編集
**Web サービスの使用 [#lfd40f04]
-DiscoveryService
-OrganizationService
-Organization Data Service
-OData エンドポイント
-最近のアプリケーションの SOAP エンドポイント
-DeploymentService。
**フィルター ビューの使用 [#o27ef818]
*ソリューション [#g27fd4e3]
-ソリューション コンポーネントをグループ化したもの。
**概要 [#rc6f1531]
-[[ソリューション コンポーネント>#cb6cf5ad]]をグループ化したもの。
-特定のビジネス要件一式を満たすために~
システムに対して行うカスタマイズを整備するための手段。
-一連のカスタム コンポーネントをパッケージ化。
-一連のカスタマイズ([[ソリューション コンポーネント>#cb6cf5ad]])をパッケージ化。
-一部のユーザー or 全てのユーザーに必要となる機能を提供する。
-カスタマイズ
--カスタマイズに対応するカスタム ソリューションを新規作成する。
--[[既定のソリューション>#aba80e7a]]を直接編集することもできる。
--推奨:ビジネス要件のまとまり毎にカスタム ソリューションを新規作成する。
**利点 [#xbf01385]
-他のコンポーネントに気を取られること無く、~
必要なコンポーネントのみに取り組むことができる。
-元の要件に複数のソリューションを関連付けることで、変更を記録できる。
-開発環境からのエクスポートと、テスト運用環境へのインポートが可能。
--エクスポートに含まれるのは差分のみ。サイズが小さくて済管理も容易。
--エクスポートは、変更管理レコードの一部として保存できる。
--過去のソリューションを使用して変更をロールバックできる。
**構成 [#ff24d2ea]
-ソリューションの概要~
https://msdn.microsoft.com/ja-jp/library/Gg334576.aspx
***システム ソリューション [#gc84622f]
-Microsoft Dynamics CRM 内に定義された既定のソリューション コンポーネント
-組織作成時に作成され、システムの全コンポーネントを含んでいる。
-既定のアプリケーションの動作を定義している。
-既定のソリューションは、
--エクスポート・インポートが可能だが、
--マネージド ソリューションとしてのエクスポートが不可能。
--全体を[[Dynamics CRM Online]]に展開することが不可能。
-システムが複雑化すると、既定のソリューションを使用した方法では対応が困難になる。~
このため、カスタム ソリューションを使用して、コンポーネントを分割する。
***マネージド ソリューション [#q56e227d]
-配布とインストールを目的とする完成したソリューション
-アンマネージド ソリューションをエクスポート&パッケージ化したもの。
-開発用用途のアンマネージド ソリューションを~
エクスポート&パッケージ化したもの。
-配布とインストールを目的とする完成したソリューション。
-ソリューション コンポーネントの変更・追加が可能。
-システム ソリューションの上にインストールできる。
-他のマネージド ソリューションの上に重ねることもできる。
***アンマネージド ソリューション [#wfd44e9f]
-開発中であるか、配布を目的としないソリューション
-配布を目的としない、開発中のソリューション
-アンマネージド カスタマイズをグループ化したもの。
***アンマネージド カスタマイズ [#e67bfc2d]
-開発中のアンマネージド カスタマイズの実体は、すべて既定のソリューションに含まれる。
-システム ソリューションはアンマネージド カスタマイズできる。
-マネージド ソリューションはアンマネージド カスタマイズできる。
**利点 [#xbf01385]
-他のコンポーネントに気を取られること無く、~
必要なコンポーネントのみに取り組むことができる。
**新規作成 [#kf9fdc56]
ソリューション(カスタム ソリューション)を新規作成する。
-元の要件に複数のソリューションを関連付けることで、変更を記録できる。
-始め、開発のためのアンマネージド ソリューションを作成する。
-開発中のアンマネージド カスタマイズの実体は、すべて既定のソリューションに含まれる。
-アンマネージド ソリューションは、アンマネージド カスタマイズの参照のみ保持する。
-開発環境からのエクスポートと、テスト運用環境へのインポートが可能。
-アンマネージド ソリューションを削除すると、~
既定のソリューションからアンマネージド カスタマイズも削除される。
--エクスポートに含まれるのは差分のみ。サイズが小さくて済管理も容易。
--エクスポートは、変更管理レコードの一部として保存できる。
--過去のソリューションを使用して変更をロールバックできる。
**既定のソリューション [#aba80e7a]
-組織作成時に作成される、システムの全コンポーネントを含んだソリューション。
-既定のソリューションは、
--エクスポート・インポートが可能だが、
--マネージド ソリューションとしてのエクスポートが不可能。
--全体を[[Dynamics CRM Online]]に展開することが不可能。
-システムが複雑化すると、既定のソリューションを使用した方法では対応が困難になる。~
このため、カスタム ソリューションを使用して、コンポーネントを分割する。
**ソリューションの新規作成 [#kf9fdc56]
***ロール [#rf8e69ab]
以下のロールを持つユーザでCRMの組織にサインイン。
-システム カスタマイザー
-システム管理者
***手順 [#b17bd4a1]
-ナビゲーション バーの[Microsoft Dynamics CRM]の[設定]、[ソリューション]、[新規]。
-[新しいソリューション]フォームが表示される。
-必要事項を入力し保存。
--表示名:ソリューションの呼称(変更可能)
--名前:英数字のみ(変更不可能)
--発行元
---(ソリューションを作成した)カスタマイザー
---(ソリューションに含まれる)カスタマイズ
---新規コンポーネントの接頭辞
--発行元:マネージド ソリューションで特に重要になる。
---ソリューション・コンポーネントの発行元を特定可能な接頭辞を定義する。~
・カスタマイズした組織:カスタマイザー(個人、組織、企業)~
・ビジネス要件:カスタマイズ(モジュール名)
---接頭辞:8文字以内~
・新規コンポーネント名の先頭に付与され名称の衝突を抑止する。~
・接頭辞 = カスタマイズした組織 + ビジネス要件などとする。
---補足:組織を作成すると、”既定の発行者”という発行元が自動的に作成される。
--構成ページ
--バージョン:バージョン番号(数字のみ)
---メジャー.マイナー.ビルド.リビジョン
---推奨:年.月.日.リビジョン
--説明:ソリューションの機能の概要(2,000文字)
-エクスポート時のファイル名~
"名前"+"バージョン"
**複数ソリューションの用例 [#e4505cdb]
***開発 [#j40e4373]
複数のカスタマイザーによるカスタマイズ
-利点
--並行作業
--開発、マージ、テスト
-欠点
--競合の類の検出の遅延。
***バージョン [#t28d8a73]
完了した作業に新しい要件が追加された時。
-以下の場合は旧ソリューションに変更を行う。
--バグ修正(リビジョン・アップ)
-以下の場合は新ソリューションに、新コンポーネント追加を行う。
--当該ソリューションへの更新が枯れている場合
**エクスポート・インポート [#i9e9548d]
***エクスポート [#se1d5735]
-カスタマイズをソリューションとしてエクスポート~
http://www.microsoft.com/ja-jp/dynamics/crm-customer-center/export-your-customizations-as-a-solution.aspx
-ZIP形式でのエクスポート~
以下が同梱されている。
--XML
--DLL
--XAML
--画像ファイル
-用途
--開発-リリースまで。
---開発-テスト-運用環境
---受け入れテスト、トレーニング
*ソリューション コンポーネント [#cb6cf5ad]
カスタマイズ ツールまたは API を使用して作成され、アプリケーション内で完全にホストされる。
**種類 [#sdfb9efd]
***スキーマ [#x91cdfa4]
-エンティティ
-属性
-関連付け
-グローバル オプション セット
***ユーザインターフェイス [#oabd80a4]
-アプリケーション リボン
-サイトマップ
-フォーム
-エンティティ リボン
-Webリソース
-分析
--ダッシュボード
--レポート
--ビジュアル化
***プロセス/コード [#ped8aa8f]
-プロセス
--ダイアログとワークフロー
-プラグイン
--アセンブリ
--処理手順
***テンプレート [#rba84b8e]
-差し込み印刷
-電子メール
-契約
-記事
***セキュリティ [#o70a626f]
-セキュリティ ロール
-フィード レベルのセキュリティ プロファイル
***データ レコード [#hc07537e]
-データ レコード
--ユーザ
--チーム、部署
--キュー
--目標
--情報カテゴリの階層
--製品カタログに関連したもの
-データレコードを使用したソリューション コンポーネント
--ビュー
--レポート
--カスタム コード
-信頼性を担保する方法。
--データインポートウィザードを使用する。
--インポートフィアルにレコードのGUIDを含める。
***外部コンポーネント [#o57e5a1d]
アプリケーションの外部で動作するソフトウェアは、~
インストーラー プログラムなど、従来の方法で~
アプリケーションをパッケージ化してインストールする。
***メタデータ [#vda58a4d]
コンポーネントの中にはメタデータを形成しているものもある。
-コンポーネント間の連携
-コンポーネントの体裁(見た目)
-SQLデータベースへのデータ格納方法
**新規作成 [#b8cf8b40]
-ソリューション コンポーネントの追加~
http://www.microsoft.com/ja-jp/dynamics/crm-customer-center/add-a-solution-component.aspx
-既定のソリューション コンポーネントの表示または編集=
http://www.microsoft.com/ja-jp/dynamics/crm-customer-center/view-or-edit-default-solution-components.aspx
***ロール [#w2f87354]
同上
***手順 [#r52487f2]
-ナビゲーション バーの[Microsoft Dynamics CRM]の[設定]、[ソリューション]、目的のソリューションをダブル クリック。
-ソリューションエクス プローラーのナビゲーション ウィンドウで[コンポーネント]をクリック。
-[コンポーネントの種類] の一覧で追加する種類をクリックし、コマンド バーで、[新規] または [既存の追加] を選択。
-削除
--コマンド バーで、[削除] を選択。
--システム エンティティは関連付けなどの依存関係があるコンポーネントは削除できない。
*コンフィグレーション [#b125aeea]
-エンティティを作成すると画面・DBテーブルも自動的に作成される。
--基本1エンティティ=1画面・1テーブルとなっている。
--画面・テーブルの自動生成ツールと言うよりも、アドオンのEUC支援ツール。
-帳票・グラフ・ビューと、ダッシュボードのカスタマイズが可能。
-つながり機能は、ロールでエンティティ(レコード)間を接続。
-ロールアップクエリの定義~
--任意のエンティティのフィールドをロールアップフィールドに設定できる。
--ロールアップフィールドのデータ型、対象データセット(個人・グループ)を変更可
**ポイント [#g57767b1]
-設計情報の入力I/Fに専用ツールを採用
-ラウンド・トリップ開発に非対応(コードはJavaScriptのみ)。
-設計情報の入力フォーマットやテンプレート修正は不可
-設計情報の入力I/Fに専用ツール(デザイナ型)を採用している。
-コードは書かない(JavaScriptのみ)のでラウンド・トリップ開発などはできない。
-設計情報の入力フォーマットやテンプレート修正などのスクラッチ開発的な手法は不可
-画面が自動生成なので柔軟性に難あり、~
例えば一覧メンテ処理は実装できない。
--(必ず[一覧表示] → [詳細表示] → [データ修正]が必須)
--アドオン開発をするときは他の開発ツールを併用する必要がある。
--(Dynamics CRM SDK、Visual Studio、Excel)
*SDK [#le89f210]
-Dynamics CRM SDK~
http://www.infoq.com/jp/news/2011/08/dynamics-platform
-上記のエンティティ定義と
--JavaScriptイベント定義
--xxx
>で開発。
**ポイント [#o11c578a]
*エンティティ [#v7cf2804]
**バインディング [#nbc604e9]
***事前バインディング [#r445d864]
***遅延バインディング [#a0c0f205]
*SQL [#lca67058]
-クエリを使用してデータを取得する~
https://msdn.microsoft.com/ja-jp/library/gg334607.aspx
-DBテーブルにアクセスする方法
--Dynamics CRM SDKを使用する。
--SQLでの直接アクセスはセルフサポート扱い。
--直接アクセスはフィルターされたビュー(Filtered views)だけサポート。
-Web サービス経由でクエリが実行されるため。~
Dynamics CRM Onlineで利用できる。
--エンティティ
--QueryExpression
--FetchXML
--LINQ クエリ
-SQLとして実行されるため、~
Dynamics CRM Onlineで利用できない。
--フィルターされたビュー(Filtered views)
**エンティティ [#hc5f6da7]
-Create メソッド
-Retrieve メソッド
-Update メソッド
-Delete メソッド
-RetrieveMultipleMethod メソッド
-Execute メソッド
**Fetch と QueryExpression [#b63e6439]
オブジェクトやXMLの階層構造でSQLを表現する。
-サンプル: Fetch と QueryExpression の間でクエリを変換する~
https://msdn.microsoft.com/ja-jp/library/hh547457.aspx
***QueryByExpression [#nddb42c3]
-QueryExpression でクエリを作成する~
https://msdn.microsoft.com/ja-jp/library/gg328300.aspx
--サンプル: QueryByAttribute クラスを使用した複数取得~
https://msdn.microsoft.com/ja-jp/library/gg334708.aspx
***FetchXML [#l03369e4]
-FetchXML を使用したクエリの構築~
https://msdn.microsoft.com/ja-jp/library/gg328332.aspx
--Dynamics CRM でサポートされるクエリ言語。
--T-SQL の機能に似た内容をサポート。
--Dynamics CRM のセキュリティに準じた結果セットを取得できる。
--ユーザービューやシステムビューの保存や、高度な検索の実行で利用される。
--高度な検索で利用したクエリを FetchXML として取得できる。
**[[LINQ]] [#v3640c04]
[[LINQ]] to CRM~
Microsoft Dynamics CRM Online 2015 更新プログラム クエリ プロバイダー
-[[LINQ]] (.NET 統合言語クエリ) を使用してクエリを作成する~
https://msdn.microsoft.com/ja-jp/library/gg328028.aspx
**フィルターされたビュー [#k550a733]
-Filtered views
-Microsoft Dynamics CRM データベース(SQL Server)を直接クエリできる。
-設置型のみでサポートされるため、オンライン環境へ移行することができない。
**参考 [#c343dfcd]
-Japan Dynamics CRM Team Blog - Site Home - MSDN Blogs~
--Dynamics CRM 2011 カスタムレポート
---その 1 - フィルター化されたビュー vs. FetchXML~
http://blogs.msdn.com/b/crmjapan/archive/2013/01/07/dynamics-crm-2011-custom-reporting-in-microsoft-dynamics-crm-fetch-vs-filtered-views.aspx
---その 2 - FetchXML を利用したカスタム活動レポート~
http://blogs.msdn.com/b/crmjapan/archive/2013/07/02/dynamic-activity-reporting-using-fetchxml.aspx