ソリューション コンポーネントの依存関係の追跡

ソリューションはソリューション コンポーネントで構成されます。 Microsoft Dataverse の [ソリューション] エリアを使用して、ソリューション コンポーネントを作成または追加します。 この操作をプログラムによって実行する場合は、AddSolutionComponentRequest メッセージを使用するか、SolutionUniqueName パラメーターを含むソリューション コンポーネントを作成または更新する任意のメッセージを使用します。

ソリューション コンポーネントは、多くの場合、他のソリューション コンポーネントに依存しています。 他のソリューション コンポーネントへの依存関係があるソリューション コンポーネントは削除できません。 たとえば、一般に、カスタマイズされたリボンにはアイコンの表示やスクリプトを使用した操作を行うためにイメージまたはスクリプト Web リソースが必要になります。 カスタマイズされたリボンがソリューションに存在する限り、そのリボンが使用する特定の Web リソースが必要です。 Web リソースを削除する前に、カスタマイズされたリボン内の対象 Web リソースへの参照を削除する必要があります。 [依存関係の表示] を選択すると、アプリケーションでこれらのソリューション コンポーネントの依存関係を表示できます。

この記事では、ソリューションに含めることができるソリューション コンポーネントの種類と、相互の依存関係について説明します。

すべてのソリューション コンポーネント

システム componenttype グローバル選択列には、使用可能なソリューション コンポーネントの種類の完全な一覧が含まれています。 プロジェクトにファイルの OptionSets.cs または OptionSets.vb を含めることで、このプロパティでサポートされている値の範囲を確認できます。 ただし、一覧表示されているソリューション コンポーネントの種類の多くは内部使用のみを目的としており、一覧にはソリューション コンポーネント間のリレーションシップに関する情報は記載されていません。

ソリューション コンポーネントの依存関係

ソリューション コンポーネントの依存関係により、ソリューションを操作する際の信頼性の高いエクスペリエンスが確保されます。 それらは、通常実行する操作によって、ソリューションで定義されているカスタマイズが意図せず壊されるのを防ぎます。 これらの依存関係によって、ソリューションをインポートまたは削除するだけでマネージド ソリューションをインストールまたはアンインストールできるようになります。

ソリューション フレームワークは自動的にソリューション コンポーネントの依存関係を追跡します。 ソリューション コンポーネントを操作するたびに、システム内の他のコンポーネントへの依存関係が自動的に計算されます。 システムは、依存関係情報を使用して整合性を維持し、一貫性のない状態につながる可能性のある操作を防ぎます。

依存関係の追跡の結果、次の動作が適用されます。

  • システム内の他のコンポーネントがそのコンポーネントに依存している場合、削除は禁止されます。

  • ソリューションをエクスポートすると、そのソリューションを別の環境にインポートするときにインポートに失敗する可能性があるコンポーネントが見つからない場合に警告が表示されます。

    依存コンポーネントが存在することが予想される環境にのみソリューションをインストールする場合は、エクスポート中の警告を無視できます。 たとえば、プレインストールされた "基本" ソリューションにインストールするように設計されたソリューションを作成する場合などです。

  • ソリューションに必要なすべてのコンポーネントが含まれておらず、かつターゲット環境にそれらが既に存在しない場合、ソリューションのインポートは失敗します。

  • マネージド ソリューションをインポートするときは、必要なすべてのコンポーネントがソリューションのパッケージの種類と一致している必要があります。 マネージド ソリューション内のコンポーネントは、別のマネージド コンポーネントにのみ依存できます。

ソリューション コンポーネントの依存関係には 3 種類あります。

  • 社内向けソリューション。 Dataverse は内部依存関係を管理します。 これらの依存関係は、特定のソリューション コンポーネントが別のソリューション コンポーネントなしでは存在できない場合に存在します。
  • 公開済。 Dataverse は、2 つのソリューション コンポーネントが相互に関連付けられ、その後発行されると、発行済みの依存関係を作成します。 この種類の依存関係を削除するには、関連付けを削除し、テーブルをもう一度発行する必要があります。
  • 未公開。 更新中の公開可能なソリューション コンポーネントの非公開バージョンには非公開依存関係が適用されます。 ソリューション コンポーネントを発行すると、それが公開された依存関係になります。

ソリューション内の依存関係は、あるソリューション コンポーネントに対する操作を行う際に、別のソリューション コンポーネントに対する操作が必要となる依存関係です。 たとえば、テーブルを削除すると、すべてのテーブル属性が削除されると想定されます。 また、他のテーブルとのテーブル リレーションシップも削除されます。

ただし、内部の依存関係は、最終的には公開済み依存関係になる可能性があり、そうした場合は手動での操作が必要です。 たとえば、テーブル フォームにルックアップ フィールドを含めてからリレーションシップのプライマリ テーブルを削除した場合、関連するテーブル フォームからルックアップ フィールドを削除してからフォームを発行するまで、その削除を完了することはできません。

ソリューションを使用してプログラムでアクションを実行する場合は、Dependency テーブルに関するメッセージを使用します。 コンポーネントの削除またはソリューションのアンインストールを実行する前に存在する可能性がある依存関係の特定に使用できるメッセージについては、依存関係エンティティ名 を参照してください。

共通ソリューションコンポーネント

これらのソリューション コンポーネントは、アプリケーション内に表示されます。 ソリューション ページを使用してソリューション コンポーネントを追加または削除するときは、それらを直接扱います。 他の種類のソリューション コンポーネントはそれぞれ、これらのソリューション コンポーネントの 1 つ以上に依存します。

アプリ リボン (RibbonCustomization)

アプリケーション リボンとテーブル リボンのテンプレートに対するリボンのユーザー設定です。 アプリケーション リボンには、テーブル レベルまたはフォーム レベルでのリボン定義は含まれません。

カスタム アプリケーション リボンには、多くの場合、Web リソースに対する公開された依存関係があります。 Web リソースを使用して、リボン 要素を表示するタイミングや、特定のリボン コントロールを使用したときに実行されるアクションを制御するリボン ボタン アイコンと JavaScript 関数を定義します。 依存関係は、リボン定義で $webresource: ディレクティブを使用して Web リソースをリボンに関連付ける場合にのみ作成されます。 詳細については、「$webresource ディレクティブ」を参照してください。

記事テンプレート (KBArticleTemplate)

記事の標準属性を含むテンプレート。 記事テンプレートと KbArticle テーブルとの間には常に内部依存関係があります。

接続ロール (ConnectionRole)

2 つのレコード間のリレーションシップを記述するロール。 各接続ロールは、接続ロールを使用してリンクできるエンティティ レコードの種類を定義します。 このロールは、接続ロールとテーブルの間に公開依存関係を作成します。

契約テンプレート (ContractTemplate)

契約の標準属性を含むテンプレート。 契約テーブルと契約テンプレートとの間には常に内部依存関係があります。

ダッシュボードまたはエンティティ フォーム (SystemForm)

システム フォーム テーブル レコードを使用して、ダッシュボードとテーブル フォームを定義します。 テーブル フォームとして SystemForm を使用する場合、テーブルに内部的に依存しています。 SystemFormをダッシュボードとして使用する場合、内部依存関係はありません。 テーブル フォームとダッシュボードのいずれも、コンテンツに関連付けられた公開済み依存関係があります。 テーブル フォームには、テーブルのリレーションシップに依存するルックアップ列が含まれる場合があります。 ダッシュボードとテーブル フォームの両方には、ビューに公開依存関係を作成するチャートまたはサブグリッドを含めることができます。そのビューはテーブルに対する内部依存関係を持ちます。 ダッシュボードまたはフォームに表示されるコンテンツが原因で、またはフォームに JavaScript ライブラリが含まれている場合に、Web リソースへの公開済み依存関係が作成される可能性があります。 テーブル フォームには、フォーム内の列として表示される属性への公開依存関係があります。

電子メールテンプレート (EmailTemplate)

電子メール メッセージの標準属性が設定されたテンプレートです。 通常、メール テンプレートには、指定されたテーブル属性のデータを挿入する列が含まれています。 電子メール テンプレートは、作成時に特定のテーブルにリンクできるため、そのテーブルに内部的に依存する場合があります。 グローバル 電子メール テンプレートは特定のテーブルに関連付けられませんが、データの提供に使用されるテーブル属性に対して公開済みの依存関係がある可能性があります。 プロセス (ワークフロー) は、多くの場合、電子メール テンプレートを使用して電子メールを送信し、ワークフローとの公開された依存関係を作成するように構成されます。

エンティティ (Entity)

テーブル (旧称エンティティ) は、Dataverse 内のデータのモデル化と管理に使用される主要な構造です。 これらの間の内部依存関係のため、テーブルを削除すると、そのテーブルに関連付けられているグラフ、フォーム、テーブルリレーションシップ、ビュー、属性も削除されます。 テーブルには、多くの場合、プロセス、ダッシュボード、電子メール テンプレートとの依存関係が設定されています。

列セキュリティ プロファイル (FieldSecurityProfile)

セキュリティで保護されている属性のアクセス レベルを定義するプロファイルです。

差し込み印刷用テンプレート (MailMergeTemplate)

差し込み印刷文書の標準属性を備えたテンプレートです。 差し込み印刷用テンプレートには、関連付けられたテーブルへの公開された依存関係があります。

オプション セット (OptionSet)

選択肢列 (以前はオプション セットと呼ばれていました) は、オプションのセットを定義します。 選択リスト属性は、選択肢を使用して利用可能なオプションを定義します。 いくつかの選択リスト属性では、常に同じオプションを提供し、1 か所で管理できるように、グローバルな選択肢を使用することがあります。 公開された依存関係は、ピックリスト属性がグローバルな選択肢を参照する場合に発生します。 ピックリスト属性で使用されているグローバル選択は削除できません。

プラグイン アセンブリ (PluginAssembly)

1 つ以上のプラグイン型を含むアセンブリです。 プラグインは一般にテーブルに関連付けられているイベントに登録されます。 この登録により、公開された依存関係が作成されます。

プロセス(ワークフロー)

特定のビジネスプロセス、タスク、または実行すべき一連のアクションを自動化するために必要な手順を定義する、一連の論理ルール。 プロセスでは、プロセスによって参照される他のソリューション コンポーネントに対する公開済みの依存関係を作成する幅広いアクションが可能です。 各プロセスには、関連付けられたテーブルに対する依存関係も定義されています。

レポート(レポート)

見やすいレイアウトのデータ要約。 レポートには、レポートに含まれるテーブルまたは属性データに対する公開済みの依存関係があります。 各レポートは、レポート カテゴリにも関連付ける必要があります。これにより、レポート関連カテゴリ (ReportCategory) と呼ばれるソリューション コンポーネントへの内部依存関係が作成されます。 サブレポートとしてレポートを構成し、親レポートとの公開された依存関係を作成できます。

SDK メッセージ処理ステップ (SDKMessageProcessingStep)

実行パイプラインの中でプラグインが実行される段階です。

セキュリティ ロール (ロール)

セキュリティ権限のグループ化 ユーザーの Dataverse システムへのアクセスを許可するには、セキュリティ ロールを割り当てます。 テーブル フォームを特定のセキュリティ ロールに関連付けて、フォームを表示できるユーザーを制御します。 この関連付けにより、セキュリティ ロールとフォームの間に公開された依存関係が作成されます。

注

環境のビジネス ユニットのセキュリティ ロールのみをソリューションに追加できます。 これらのセキュリティ ロールへの読み取りアクセス権を持つユーザーのみが、それをソリューションに追加できます。

サービス エンドポイント (ServiceEndpoint)

接続できるサービスエンドポイント。

サイトマップ (SiteMap)

アプリケーションのナビゲーション ペインを制御するために使用される XML データ。 サイト マップをリンクして HTML Web リソースを表示したり、サイト マップ内のアイコンで画像 Web リソースを使用したりできます。 $webresource: ディレクティブを使用してこれらの関連付けを確立すると、公開された依存関係が作成されます。 詳細については、$webresource ディレクティブを参照してください。

Web リソース (WebResource)

モデル駆動型アプリ の拡張や Web 開発で使用されるファイルに相当するデータ。 Web リソースはカスタム ユーザー インターフェイス要素の提供に使用されるクライアント側のコンポーネントを提供します。 Web リソースには、テーブル フォーム、リボン、サイト マップとの公開済みの依存関係がある場合があります。 $webresource: ディレクティブを使用してリボンまたはサイト マップの関連付けを確立する場合は、公開された依存関係を作成します。 詳細については、$webresource ディレクティブを参照してください。

注

Web リソースが、相対リンクに基づいて他の Web リソースに依存することがあります。 たとえば、HTML Web リソースが CSS またはスクリプト Web リソース を使用する可能性があります。 テーブル フォームやグラフ以外に表示される Silverlight Web リソースには、ホストする HTML Web リソースが必要です。 これらの依存関係は、ソリューションの依存関係として追跡されません。

関連項目