ソリューションの更新を簡略化する修正プログラムの作成
ソリューションにテーブルを追加し、ソリューションをエクスポートすると、テーブルとその関連する資産すべてがソリューションにエクスポートされます。 これらの資産には、列 (属性)、フォーム、ビュー、リレーションシップ、ビジュアル化、そしてテーブルとともにパッケージ化されるその他の資産が含まれます。 すべてのオブジェクトをエクスポートすることは、展開先のオブジェクトを誤って変更したり、意図しない依存関係を引き継ぐ場合があることを意味します。
依存関係に対処するには、テーブル全体とそのすべての資産を公開するのではなく、テーブルのサブコンポーネントを含むソリューションの修正プログラムを作成して公開することができます。 元のソリューションおよび 1 つ以上の関連修正プログラムは、ソリューションの更新バージョンに後日ロールアップ (統合) される場合があり、これにより対象Microsoft Dataverse組織の元のソリューションは置換可能です。
修正プログラム
修正プログラムは、管理対象またはアンマネージド ソリューションに適用でき、テーブルおよび関連テーブル資産への変更のみを含めることができます。 修正プログラムには、当該コンポーネントが既に組織への展開に存在しているので、依存するカスタマイズ不可のシステム コンポーネントまたは関連付けが含まれていません。 開発サイクルのいずれかの時点で、すべての修正プログラムを新しいソリューションバージョンにロールアップして、修正プログラムが作成された元のソリューションを置換することができます。
修正プログラムは、Dataverse データベースに Solution
テーブル レコードとして保存されます。 null 以外の ParentSolutionId
属性は、ソリューションが修正プログラムであることを示します。 修正プログラムは、SDK for .NET または Web API を通じて作成および管理することができ、製品インストールスクリプトなどの自動化開発に便利です。 ただし、Dataverse Webアプリケーションでは、修正プログラムを対話的に作成および管理可能な各種のWebフォームを提供します。
- 修正プログラムは、CloneAsPatchRequest または CloneAsPatch Action を使用して上位のソリューションからのみ作成可能です。
- 上位の修正プログラムを修正プログラムとすることはできません。
- 修正プログラムは、上位のソリューションを一つのみ持つことができます。
- 修正プログラムは、上位のソリューションで (ソリューション レベルで) 依存関係を作成します。
- 上位のソリューションがある場合には、修正プログラムのみをインストールすることができます。
-
ParentSolutionId
で識別される親ソリューションの固有の名前とメジャーまたはマイナーバージョン番号が、対象組織にインストールされている親ソリューションのものと一致しない場合、修正プログラムをインストールできません。 - 修正プログラムのバージョンは同じメジャーおよびマイナー番号がある必要がありますが、上位のソリューションのバージョン番号より高いビルドおよびリリース番号が必要です。 表示名は異なる場合があります。
- ソリューションに修正プログラムがある場合、後続の修正プログラムには、一覧が、当該ソリューションのいずれかの既存の修正プログラム値より数値的に高いバージョン番号が必要です。
- 修正プログラムは、付加的更新プログラムなどのソリューションと同じ操作をサポートしますが、削除はサポートしません。 修正プログラムを使用してソリューションからコンポーネントを削除することはできません。 ソリューションからコンポーネントを削除するには、アップグレードを実行します。
- マネージドとしてエクスポートされた修正プログラムはマネージド上位のソリューションの最上位にインポートされる必要があります。 ルールは、修正プログラム (マネージドまたはアンマネージド)がその親に一致する必要があることです。
- 本番の運用でアンマネージド修正プログラムを使用しないでください。
SolutionPackager と PackageDeployer ツールはソリューション更新プログラムをサポートします。 パッチに関連付けるいずれかのコマンド ライン オプションのツールのオンライン ヘルプを参照してください。
修正プログラムの作成
CloneAsPatchRequest メッセージまたは CloneAsPatch アクションを使用するか、Web アプリケーションを使用して、環境内の管理されていないソリューションから修正プログラムを作成します。 修正プログラムを作成すると、元のソリューションはロックされ、そのソリューションを親ソリューションとして識別する環境内に依存する修正プログラムが存在する限り、変更やエクスポートができなくなります。 修正プログラムのバージョン管理はソリューションのバージョン管理と同様で、次の形式で指定されます: major.minor.build.release。 修正プログラムを作成すると、既存のメジャーバージョンやマイナーバージョンのソリューションに変更を加えることはできません。
修正プログラムのインポートとエクスポート
修正プログラムのエクスポートとインポートには、.NET または Web API 用の SDK、Web アプリケーション、または Package Deployer ツールを使用してください。 該当する SDK for .NET リクエスト クラスは ImportSolutionRequest と ExportSolutionRequest です。 Web API に関連するアクションは ImportSolution アクション と ExportSolution アクションです。
修正の例
次の表には、修正の例の詳細がリスト表示されています。 この例では、ソリューションおよび修正プログラムが番号順でインポートされ、追加され、これは、全般のソリューションのインポートと一致しています。
修正プログラムの名前 | プロパティ |
---|---|
SolutionA 、バージョン 1.0 (アンマネージド) |
entityA には 6 つのフィールドがあります。 |
SolutionA 、バージョン 1.0.1.0 (アンマネージド) |
entityA (6 つのフィールド、3 つ更新済み)を含み、entityB (10 のフィールド) を追加します。 |
SolutionA 、バージョン 1.0.2.0 (アンマネージド) |
10 のフィールドと entityC を含んでいます。 |
インポート プロセスは、次のとおりです。
- デベロッパーまたはカスタマイザーは最初にベース ソリューション (
SolutionA
1.0) を環境にインポートします。 その結果、環境には 6 つのフィールドとentityA
があります。 - 次に、
SolutionA
修正プログラム 1.0.1.0 がインポートされます。 環境には、6 つのフィールド (3 つは更新済み) を持つentityA
と、10 のフィールドを持つentityB
が含まれています。 - 最後に、
SolutionA
修正プログラム 1.0.2.0 がインポートされます。 環境には、6 つのフィールド (3 つは更新済み) を持つentityA
と、10 のフィールドを持つentityB
に加えて、10 のフィールドを持つentityC
が含まれています。
別の修正の例
次の表に詳細がリスト表示されている、別の修正の例を見てみましょう。
修正プログラムの名前 | プロパティ |
---|---|
SolutionA 、バージョン 1.0 (アンマネージド、ベース ソリューション) |
Account テーブルを含み、取引先企業番号の列の長さが 20 文字から 30 文字に調整されています。 |
SolutionB 、バージョン 2.0 (アンマネージド、異なるベンダー) |
取引先企業番号の列の長さが 50 文字に調整された Account テーブルを含みます。 |
SolutionA 、バージョン 1.0.1.0 (アンマネージド、修正プログラム) |
取引先企業番号の列の長さが 35 文字に調整された Account テーブルへの更新が含まれています。 |
インポート プロセスは、次のとおりです。
- デベロッパーまたはカスタマイザーは最初にベース ソリューション (
SolutionA
1.0) を環境にインポートします。 その結果、取引先企業番号の列が 30 文字のAccount
テーブルが作成されます。 -
SolutionB
がインポートされます。 環境には、現在 50 文字のアカウント番号列を持つAccount
テーブルが含まれています。 -
SolutionA
修正プログラム 1.0.1.0 がインポートされます。SolutionB
によって適用されたように、環境には、50 文字の取引先企業番号列を持つAccount
テーブルがまだ含まれています。 -
SolutionB
をアンインストールしました。SolutionA
1.0.1.0 の修正プログラムを適用した結果、環境には現在、35 文字の取引先企業番号列を持つAccount
テーブルが含まれています。
修正プログラムの削除
DeleteRequest を使用して修正プログラムまたはベース(親)ソリューションを削除することができ、あるいは、Web API の場合には HTTP DELETE
メソッドを使用できます。 削除プロセスは、環境に存在する 1 つ以上の修正プログラムを持つマネージド ソリューションまたはアンマネージド ソリューションごとに異なります。
アンマネージド ソリューションの場合、ベースソリューションをアンインストール前に、それらが作成された反対のバージョン順序で、ベース ソリューションに対するすべての修正プログラムをアンインストールする必要があります。
マネージド ソリューションでは、単にベースソリューションをアンインストールするだけです。 Dataverse システムでは、ベース ソリューションをアンインストールする前に、反対のバージョン順序で修正プログラムを自動的にアンインストールします。 単一の修正プログラムだけをアンインストールすることもできます。
ソリューションの更新
ソリューションの更新には、そのソリューションに対するすべての修正プログラムをソリューションの新しいバージョンにロールアップ(結合)することが含まれます。 その後、ソリューションはアンロックされるようになり、もう一度、変更(アンマネージド ソリューションのみ)またはエクスポートすることができます。 マネージド ソリューションの場合、新たに更新されたソリューションから修正プログラムを作成する場合の除き、ソリューションに対する変更が許可されません。 アンマネージド ソリューションに修正プログラムをロールアップするには、CloneAsSolutionRequest または CloneAsSolution Action を使用します。 ソリューションの複製によって新しいバージョンのアンマネージド ソリューションが作成され、より高いmajor.minorバージョン番号、同じ一意の名前、および表示名を含む、すべての修正プログラムが組み込まれます。
マネージド ソリューションの場合、若干異なる方法で処理されます。 最初にすべての修正プログラムが組み込まれた、アンマネージド ソリューション (A) が複製され、それから、管理ソリューション (B) としてエクスポートされます。 (A) ソリューションのマネージド バージョンとその修正プログラムを含む対象組織では、管理ソリューション (B) をインポートしてから、DeleteAndPromoteRequest または DeleteAndPromote Action を実行して、管理ソリューション (A) とその修正プログラムをより高いバージョン番号を持つアップグレードされた管理ソリューション (B) と置き換えます。