Open棟梁Project - マイクロソフト系技術情報 Wiki -[[戻る>Dynamicsのカスタマイズ]] * 目次 [#g3778851] #contents *概要 [#be1bd860] -マーケティング・モジュール -営業モジュール -サービス・モジュール 分野におけるCRM(顧客関係管理)を中心に構築されている。 その一方で、民間・政府・非営利のあらゆる部門における広範囲な~ 機能を制御可能な多様性からxRMという言葉が使われるようになってきている。 *構成 [#x323f671] カスタマイズは -[[ソリューション コンポーネント>#cb6cf5ad]] -[[外部コンポーネント>#o57e5a1d]] から構成される。 **ソリューション コンポーネント [#cb6cf5ad] カスタマイズ ツールまたは API を使用して作成され、~ アプリケーション内で完全にホストされる。 ***種類 [#sdfb9efd] -スキーマ --エンティティ --属性 --関連付け --グローバル オプション セット -ユーザインターフェイス --アプリケーション リボン --サイトマップ --フォーム --エンティティ リボン --Webリソース -分析 --ダッシュボード --レポート --ビジュアル化 -プロセス/コード --プロセス ---ダイアログとワークフロー --プラグイン ---アセンブリ ---処理手順 -テンプレート --差し込み印刷 --電子メール --契約 --記事 -セキュリティ --セキュリティ ロール --フィード レベルのセキュリティ プロファイル ***外部コンポーネント [#o57e5a1d] アプリケーションの外部で動作するソフトウェアは、~ インストーラー プログラムなど、従来の方法で~ アプリケーションをパッケージ化してインストールする。 **方法 [#r91122d1] ***ポイント アンド クリック [#x21f60d4] GUIツールだけで変更可能な手法 ***JavaScript [#t32abf6c] ***ワークフロー定義 [#j4b35090] ***.NETプラグイン [#u5dcd5a0] ***XMLを直接編集 [#v6e07d97] エクスポートしたソリューション パッケージのXMLを直接編集 *ソリューション [#g27fd4e3] -ソリューション コンポーネントをグループ化したもの。 -特定のビジネス要件一式を満たすために~ システムに対して行うカスタマイズを整備するための手段。 -一連のカスタム コンポーネントをパッケージ化。 -一部のユーザー or 全てのユーザーに必要となる機能を提供する。 -カスタマイズ --カスタマイズに対応するカスタム ソリューションを新規作成する。 --[[既定のソリューション>#aba80e7a]]を直接編集することもできる。 --推奨:ビジネス要件のまとまり毎にカスタム ソリューションを新規作成する。 **構成 [#ff24d2ea] -ソリューションの概要~ https://msdn.microsoft.com/ja-jp/library/Gg334576.aspx ***システム ソリューション [#gc84622f] -Microsoft Dynamics CRM 内に定義された既定のソリューション コンポーネント -既定のアプリケーションの動作を定義している。 ***マネージド ソリューション [#q56e227d] -配布とインストールを目的とする完成したソリューション -アンマネージド ソリューションをエクスポート&パッケージ化したもの。 -ソリューション コンポーネントの変更・追加が可能。 -システム ソリューションの上にインストールできる。 -他のマネージド ソリューションの上に重ねることもできる。 ***アンマネージド ソリューション [#wfd44e9f] -開発中であるか、配布を目的としないソリューション -アンマネージド カスタマイズをグループ化したもの。 ***アンマネージド カスタマイズ [#e67bfc2d] -システム ソリューションはアンマネージド カスタマイズできる。 -マネージド ソリューションはアンマネージド カスタマイズできる。 **利点 [#xbf01385] -他のコンポーネントに気を取られること無く、~ 必要なコンポーネントのみに取り組むことができる。 -元の要件に複数のソリューションを関連付けることで、変更を記録できる。 -開発環境からのエクスポートと、テスト運用環境へのインポートが可能。 --エクスポートに含まれるのは差分のみ。サイズが小さくて済管理も容易。 --エクスポートは、変更管理レコードの一部として保存できる。 --過去のソリューションを使用して変更をロールバックできる。 **既定のソリューション [#aba80e7a] -組織作成時に作成される、システムの全コンポーネントを含んだソリューション。 -既定のソリューションは、 --エクスポート・インポートが可能だが、 --マネージド ソリューションとしてのエクスポートが不可能。 --全体を[[Dynamics CRM Online]]に展開することが不可能。 -システムが複雑化すると、既定のソリューションを使用した方法では対応が困難になる。~ このため、カスタム ソリューションを使用して、コンポーネントを分割する。 **ソリューションの新規作成 [#kf9fdc56] ***ロール [#rf8e69ab] 以下のロールを持つユーザでCRMの組織にサインイン。 -システム カスタマイザー -システム管理者 ***手順 [#b17bd4a1] -ナビゲーション バーの[Microsoft Dynamics CRM]の[設定]、[ソリューション]、[新規]。 -[新しいソリューション]フォームが表示される。 -必要事項を入力し保存。 --表示名:ソリューションの呼称(変更可能) --名前:英数字のみ(変更不可能) --発行元 ---(ソリューションを作成した)カスタマイザー ---(ソリューションに含まれる)カスタマイズ ---新規コンポーネントの接頭辞 --構成ページ --バージョン:バージョン番号(数字のみ) ---メジャー.マイナー.ビルド.リビジョン ---推奨:年.月.日.リビジョン --説明:ソリューションの機能の概要(2,000文字) -エクスポート時のファイル名~ "名前"+"バージョン" *コンフィグレーション [#b125aeea] -エンティティを作成すると画面・DBテーブルも自動的に作成される。 --基本1エンティティ=1画面・1テーブルとなっている。 --画面・テーブルの自動生成ツールと言うよりも、アドオンのEUC支援ツール。 -帳票・グラフ・ビューと、ダッシュボードのカスタマイズが可能。 -つながり機能は、ロールでエンティティ(レコード)間を接続。 -ロールアップクエリの定義~ --任意のエンティティのフィールドをロールアップフィールドに設定できる。 --ロールアップフィールドのデータ型、対象データセット(個人・グループ)を変更可 **ポイント [#g57767b1] -設計情報の入力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