このトピックは、Dynamics 365 Customer Engagement (on-premises) に適用されます。 このトピックの Power Apps バージョンについては、以下を参照してください。 ソリューション コンポーネントの依存関係の追跡。
ソリューションはソリューション コンポーネントで構成されます。 Dynamics 365 Customer Engagement (オンプレミス) の [ソリューション ] 領域を使用して、ソリューション コンポーネントを作成または追加します。
AddSolutionComponentRequest メッセージ、または SolutionUniqueName パラメーターを含むソリューション コンポーネントを作成または更新するメッセージを使用して、これらのアクションをプログラムで実行できます。
ソリューション コンポーネントは、多くの場合、他のソリューション コンポーネントに依存します。 別のソリューション コンポーネントに依存関係があるソリューション コンポーネントは削除できません。 たとえば、カスタマイズされたリボンでは、通常、アイコンを表示し、スクリプトを使用してアクションを実行するために、画像またはスクリプト Web リソースが必要です。 カスタマイズされたリボンがソリューション内にある限り、使用する特定の Web リソースが必要です。 Web リソースを削除する前に、カスタマイズしたリボンでそれらの参照を削除する必要があります。 これらのソリューション コンポーネントの依存関係は、[ 依存関係の表示] をクリックしてアプリケーションで表示できます。
このトピックでは、ソリューションに含めることができるソリューション コンポーネントの種類と、それらが相互にどのように依存するかについて説明します。
すべてのソリューション コンポーネント
使用可能なソリューション・コンポーネント・タイプの完全なリストは、システム componenttype グローバル・オプション・セットにあります。
https://[ORGANIZATION_NAME].api.crm.dynamics.com/api/data/v9.0/GlobalOptionSetDefinitions(Name='componenttype')REST エンドポイントを使用して、このデータに対してクエリを実行し、コードを使用してすべての componenet を表示できます。 このプロパティでサポートされている値の範囲は、SampleCode\CS\HelperCode\OptionSets.cs または SampleCode\VB\HelperCode\OptionSets.vb ファイルをプロジェクトに含めることで使用できます。 ただし、一覧に示されているソリューション コンポーネントの種類の多くは内部使用専用であり、一覧にはソリューション コンポーネント間のリレーションシップに関する情報は表示されません。
ソリューション コンポーネントの依存関係
ソリューション コンポーネントの依存関係は、ソリューションを操作する信頼性の高いエクスペリエンスを確実に提供するのに役立ちます。 これにより、通常実行するアクションによって、ソリューションで定義されているカスタマイズが意図せずに中断されるのを防ぐことができます。 これらの依存関係により、ソリューションをインポートまたは削除するだけで、マネージド ソリューションをインストールおよびアンインストールできます。
ソリューション フレームワークは、ソリューション コンポーネントの依存関係を自動的に追跡します。 ソリューション コンポーネントに対するすべての操作は、システム内の他のコンポーネントへの依存関係を自動的に計算します。 依存関係情報は、システムの整合性を維持し、一貫性のない状態につながる可能性のある操作を防ぐために使用されます。
依存関係の追跡の結果として、次の動作が適用されます。
システム内の別のコンポーネントがコンポーネントに依存している場合、コンポーネントの削除は禁止されます。
ソリューションをエクスポートすると、そのソリューションを別のシステムにインポートするときにエラーが発生する可能性があるコンポーネントが不足している場合に、ユーザーに警告が表示されます。
エクスポート中の警告は、ソリューション開発者が依存コンポーネントが存在することが予想される組織にのみソリューションをインストールすることを意図している場合は無視できます。 たとえば、プレインストールされた "基本" ソリューションにインストールするように設計されたソリューションを作成する場合などです。
必要なすべてのコンポーネントがソリューションに含まれていない場合、およびターゲット システムにも存在しない場合、ソリューションのインポートは失敗します。
- さらに、マネージド ソリューションをインポートする場合、必要なすべてのコンポーネントがソリューションのパッケージの種類と一致する必要があります。 マネージド ソリューション内のコンポーネントは、別のマネージド コンポーネントにのみ依存できます。
ソリューション コンポーネントの依存関係には、次の 3 種類があります。
ソリューション内部
内部依存関係は、Dynamics 365 Customer Engagement (オンプレミス) によって管理されます。 特定のソリューション コンポーネントが別のソリューション コンポーネントなしでは存在できない場合に存在します。公開
公開された依存関係は、2 つのソリューション コンポーネントが相互に関連付けられているときに作成され、発行されます。 この種類の依存関係を削除するには、関連付けを削除し、エンティティをもう一度発行する必要があります。未発表
未発行の依存関係は、更新中の発行可能なソリューション コンポーネントの発行されていないバージョンに適用されます。 ソリューション コンポーネントが発行されると、公開された依存関係になります。ソリューションの内部依存関係は、ソリューション コンポーネントを含むアクションが別のソリューション コンポーネントに対してアクションを必要とする依存関係です。 たとえば、エンティティを削除する場合は、すべてのエンティティ属性がエンティティと共に削除されることを想定する必要があります。 他のエンティティとのエンティティ リレーションシップも削除されます。
ただし、内部依存関係は公開された依存関係につながる可能性があり、それでも手動による介入が必要です。 たとえば、エンティティ フォームにルックアップ フィールドを含めてからリレーションシップのプライマリ エンティティを削除した場合、関連エンティティ フォームからルックアップ フィールドを削除してからフォームを発行するまで、その削除を完了することはできません。
ソリューションを使用してプログラムでアクションを実行する場合は、
Dependencyエンティティに関連するメッセージを使用できます。 コンポーネントを削除またはソリューションをアンインストールする前に存在する可能性がある依存関係を識別するために使用できるメッセージについては、「 依存関係エンティティ」を 参照してください。
ソリューション コンポーネントの依存関係を確認する
ソリューションを編集すると、別のソリューション コンポーネントとの依存関係が公開されているため、ソリューション コンポーネントを削除できない場合があります。 または、マネージド ソリューションのコンポーネントの 1 つが別のアンマネージド ソリューションのカスタマイズで使用されているため、マネージド ソリューションをアンインストールできない場合があります。
次の表に、ソリューション コンポーネントの依存関係に関するデータを取得するために使用できるメッセージを示します。
| メッセージ | Description |
|---|---|
| RetrieveDependentComponentsRequest | ソリューション コンポーネントに直接依存するソリューション コンポーネントの依存関係の一覧を返します。 たとえば、グローバル オプション セット ソリューション コンポーネントにこのメッセージを使用すると、グローバル オプション セット ソリューション コンポーネントを参照するオプション セット属性を表すソリューション コンポーネントの依存関係レコードが返されます。 アカウント エンティティのソリューション コンポーネント レコードにこのメッセージを使用すると、そのエンティティに使用される属性、ビュー、およびフォームを表すすべてのソリューション コンポーネントの依存関係レコードが返されます。 |
| RetrieveRequiredComponentsRequest | 別のソリューション コンポーネントが直接依存しているソリューション コンポーネントの依存関係の一覧を返します。 このメッセージは、 RetrieveDependentComponentsRequest メッセージの逆を示します。 |
| RetrieveDependenciesForDeleteRequest | ソリューション コンポーネントの削除を妨げる可能性があるソリューション コンポーネントのすべての依存関係の一覧を返します。 |
| RetrieveDependenciesForUninstallRequest | マネージド ソリューションのアンインストールを妨げる可能性があるソリューション コンポーネントのすべての依存関係の一覧を返します。 |
一般的なソリューション コンポーネント
これらは、アプリケーションに表示されるソリューション コンポーネントと、ソリューション ページを使用してソリューション コンポーネントを追加または削除するときに直接操作するコンポーネントです。 他の種類のソリューション コンポーネントはそれぞれ、存在するソリューション コンポーネントの 1 つ以上に依存します。
- アプリケーション リボン (RibbonCustomization)
- エンティティ (エンティティ)
- レポート (レポート)
- アーティクル テンプレート (KBArticleTemplate)
- フィールド セキュリティ プロファイル (FieldSecurityProfile)
- SDK メッセージ処理ステップ (SDKMessageProcessingStep)
- 接続ロール (ConnectionRole)
- 差し込み印刷テンプレート (MailMergeTemplate)
- セキュリティ ロール (ロール)
- コントラクト テンプレート (ContractTemplate)
- オプション セット (OptionSet)
- サービス エンドポイント (ServiceEndpoint)
- ダッシュボードまたはエンティティ フォーム (SystemForm)
- プラグイン アセンブリ (PluginAssembly)
- サイト マップ (SiteMap)
- 電子メール テンプレート (EmailTemplate)
- プロセス (ワークフロー)
- Web リソース (WebResource)
アプリケーション リボン (RibbonCustomization)
アプリケーション リボンとエンティティ リボン テンプレートのリボンのカスタマイズ。 アプリケーション リボンには、エンティティ レベルまたはフォーム レベルのリボンの定義は含まれません。
カスタム アプリケーション リボンには、Web リソースに対する依存関係が頻繁に公開されています。 Web リソースは、リボン ボタン アイコンと JavaScript 関数を定義するために使用され、リボン要素がいつ表示されるか、または特定のリボン コントロールを使用したときに実行されるアクションを制御します。 依存関係は、リボン定義で $webresource: ディレクティブを使用して Web リソースをリボンに関連付ける場合にのみ作成されます。 詳細情報: $webresource ディレクティブ
アーティクル テンプレート (KBArticleTemplate)
記事の標準属性を含むテンプレート。 アーティクル テンプレートと KbArticle エンティティの間には、常に内部依存関係があります。
接続ロール (ConnectionRole)
2 つのレコード間のリレーションシップを記述するロール。 各接続ロールは、接続ロールを使用してリンクできるエンティティ レコードの種類を定義します。 これにより、接続ロールとエンティティの間に公開された依存関係が作成されます。
コントラクト テンプレート (ContractTemplate)
コントラクトの標準属性を含むテンプレート。 コントラクト テンプレートとコントラクト エンティティの間には、常に内部依存関係があります。
ダッシュボードまたはエンティティ フォーム (SystemForm)
システム フォーム エンティティ レコードは、ダッシュボードとエンティティ フォームを定義するために使用されます。 SystemForm をエンティティ フォームとして使用する場合は、エンティティに内部依存関係があります。 SystemForm をダッシュボードとして使用する場合、内部依存関係はありません。 エンティティ フォームとダッシュボードの両方に、通常、コンテンツに関連する公開された依存関係があります。 エンティティ フォームには、エンティティリレーションシップに依存するルックアップ フィールドが含まれる場合があります。 ダッシュボードとエンティティ フォームの両方にグラフやサブグリッドを含めることができます。これにより、ビューに対して公開された依存関係が作成され、エンティティに対する内部依存関係が作成されます。 Web リソースに対する公開された依存関係は、ダッシュボードまたはフォーム内に表示されるコンテンツ、またはフォームに JavaScript ライブラリが含まれている場合に作成できます。 エンティティ フォームには、フォームのフィールドとして表示されるすべての属性に対する依存関係が公開されています。
電子メール テンプレート (EmailTemplate)
電子メール メッセージの標準属性を含むテンプレート。 通常、電子メール テンプレートには、指定したエンティティ属性からデータを挿入するフィールドが含まれます。 電子メール テンプレートは、作成時に特定のエンティティにリンクできるため、エンティティに内部依存関係を持つことができます。 グローバル 電子メール テンプレートは特定のエンティティに関連付けられませんが、データの提供に使用されるエンティティ属性に対する依存関係が公開されている可能性があります。 プロセス (ワークフロー) は、ワークフローとの公開された依存関係を作成する電子メール テンプレートを使用して電子メールを送信するように頻繁に構成されます。
エンティティ (エンティティ)
Dynamics 365 Customer Engagement (オンプレミス) のデータをモデル化および管理するために使用される主な構造。 エンティティ間の内部依存関係が原因でエンティティが削除されると、エンティティに関連付けられているグラフ、フォーム、エンティティリレーションシップ、ビュー、および属性が自動的に削除されます。 エンティティには、多くの場合、プロセス、ダッシュボード、電子メール テンプレートとの依存関係が公開されています。
フィールド セキュリティ プロファイル (FieldSecurityProfile)
セキュリティで保護された属性のアクセス レベルを定義するプロファイル。
差し込み印刷テンプレート (MailMergeTemplate)
差し込み印刷文書の標準属性を含むテンプレート。 差し込み印刷テンプレートには、関連付けられているエンティティに対する公開された依存関係があります。
オプション セット (OptionSet)
オプション セットは、一連のオプションを定義します。 候補リスト属性では、オプション セットを使用して提供されるオプションを定義します。 複数の選択リスト属性では、グローバル オプション セットを使用して、提供されるオプションが常に同じになり、1 か所で維持されるようにすることができます。 公開された依存関係は、選択リスト属性がグローバル オプション セットを参照するときに発生します。 選択リスト属性で使用されているグローバル オプション セットは削除できません。
プラグイン アセンブリ (PluginAssembly)
1 つ以上のプラグイン型を含むアセンブリ。 プラグインは、通常エンティティに関連付けられているイベントに登録されます。 これにより、公開された依存関係が作成されます。
プロセス (ワークフロー)
実行する特定のビジネス プロセス、タスク、または一連のアクションを自動化するために必要な手順を定義する論理ルールのセット。 プロセスは、プロセスによって参照される他のソリューション コンポーネントに対して公開された依存関係を作成するさまざまなアクションを提供します。 各プロセスには、関連付けられているエンティティに対する公開された依存関係もあります。
レポート (レポート)
読みやすいレイアウトのデータの概要。 レポートには、レポートに含まれるエンティティまたは属性データに対する依存関係が公開されています。 各レポートは、レポート関連カテゴリ (ReportCategory) と呼ばれるソリューション コンポーネントに対する内部依存関係を作成するレポート カテゴリにも関連付ける必要があります。 レポートは、親レポートとのパブリッシュされた依存関係を作成するサブレポートとして構成できます。
SDK メッセージ処理手順 (SDKMessageProcessingStep)
プラグインが実行される実行パイプラインのステージング。
セキュリティ ロール (ロール)
セキュリティ特権のグループ化。 ユーザーには、Dynamics 365 Customer Engagement (オンプレミス) システムへのアクセスを承認するロールが割り当てられます。 エンティティ フォームを特定のセキュリティ ロールに関連付けて、フォームを表示できるユーザーを制御できます。 これにより、セキュリティ ロールとフォームの間に公開された依存関係が作成されます。
注
ソリューションに追加できるのは、組織の部署のセキュリティ ロールのみです。 これらのセキュリティ ロールへの読み取りアクセス権を持つユーザーのみがソリューションに追加できます。
サービス エンドポイント (ServiceEndpoint)
接続可能なサービスエンドポイント。
サイト マップ (SiteMap)
アプリケーション ナビゲーション ウィンドウを制御するために使用される XML データ。 サイト マップをリンクして HTML Web リソースを表示したり、サイト マップ内のアイコンで画像 Web リソースを使用したりできます。
$webresource: ディレクティブを使用してこれらの関連付けを確立すると、発行された依存関係が作成されます。 詳細情報: $webresource ディレクティブ
Web リソース (WebResource)
Web 開発で使用されるファイルと同等のデータ。 Web リソースは、カスタム ユーザー インターフェイス要素を提供するために使用されるクライアント側コンポーネントを提供します。 Web リソースには、エンティティ フォーム、リボン、および SiteMap との依存関係が公開されている場合があります。 リボンまたは SiteMap で関連付けを確立するために $webresource: ディレクティブを使用すると、発行された依存関係が作成されます。 詳細については、「 $webresource ディレクティブ」を参照してください。
注
Web リソースは、相対リンクに基づいて他の Web リソースに依存する場合があります。 たとえば、HTML Web リソースでは、CSS またはスクリプト Web リソースを使用できます。 エンティティ フォームまたはグラフの外部に表示される Silverlight Web リソースには、それをホストするための HTML Web リソースが必要です。 これらの依存関係は、ソリューションの依存関係として追跡されません。
こちらも参照ください
Dynamics 365 Customer Engagement (on-premises) ソリューションを使用した拡張機能のパッケージ化と配布
ソリューションの概要
ソリューション開発の計画
アンマネージド ソリューションの作成、エクスポート、またはインポート
マネージド ソリューションの作成、インストール、更新
管理ソリューションの作成、インストール、更新
ソリューションのアンインストールまたは削除
ソリューションエンティティ