次の方法で共有


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

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

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

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

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

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

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

ソリューション コンポーネントの依存関係は、ソリューションの操作の信頼性を確保するのに役立ちます。 ソリューション コンポーネントの依存関係により、普通はうっかり実行してソリューションで定義されているカスタマイズを壊してしまうような操作を防ぐことができます。 ソリューションをインポートまたは削除することによってマネージド ソリューションをインストールまたはアンインストールできるかどうかは、これらの依存関係によって決まります。

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

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

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

  • コンポーネントの不足により他の環境へのソリューションのインポートが失敗する可能性がある場合、ソリューションのエクスポート時に警告が表示されます。

    ソリューション開発者が、依存するコンポーネントが環境内に存在することを前提にしてソリューションをインストールした場合には、エクスポート時の警告を無視できます。 たとえば、あらかじめインストールされている「基本」ソリューション上にインストールが意図されたソリューションを作成する場合が、これに該当します。

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

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

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

  • 内部のソリューション。 内部依存関係は 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 つ以上備えたアセンブリです。 プラグインは一般にテーブルに関連付けられているイベントに登録されます。 これにより、公開済み依存関係が作成されます。

プロセス (Workflow)

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

レポート (Report)

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

SDK メッセージ処理手順 (SDKMessageProcessingStep)

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

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

セキュリティ特権をグループ化したものです。 ユーザーには、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 リソースが必要です。 このような依存関係はソリューションの依存関係として追跡されません。

関連項目