Bagikan melalui


Membuat patch untuk menyederhanakan pembaruan solusi

Jika Anda menambahkan entitas ke solusi dan mengekspor solusi tersebut, entitas dan semua aset terkaitnya diekspor di solusi itu. Aset ini mencakup atribut, formulir, tampilan, Relasi, dan visualisasi, serta aset lain yang dipaket dengan entitas. Mengekspor semua objek berarti Anda secara tidak sengaja dapat memodifikasi objek pada penyebaran target atau melakukan dependensi yang tidak diinginkan.

Untuk mengatasinya, Anda dapat membuat dan mempublikasikan patch solusi yang berisi subkomponen entitas daripada mempublikasikan seluruh entitas dan semua asetnya. Solusi asli dan satu atau beberapa patch terkait dapat di-roll up (digabungkan) nanti ke versi terbaru dari solusi, yang kemudian dapat menggantikan solusi asli di organisasi target Microsoft Dataverse.

Patch

Anda dapat menerapkan perbaikan untuk solusi terkelola atau tidak terkelola dan hanya mencakup perubahan pada entitas dan aset entitas terkait. Patch tidak mengandung komponen sistem yang tidak disesuaikan atau Relasi yang tergantung karena komponen ini sudah ada di organisasi yang disebarkan. Pada titik tertentu dalam siklus pengembangan, Anda dapat menggabungkan semua patch menjadi versi solusi baru untuk menggantikan solusi asli yang dibuat dari patch.

Patch disimpan dalam database Dataverse sebagai rekaman entitas Solution. Atribut non-null ParentSolutionId menunjukkan bahwa solusi adalah patch. Patch dapat dibuat dan dikelola melalui SDK untuk .NET atau Web API, yang berguna untuk mengembangkan otomatisasi seperti skrip penginstalan produk. Namun, aplikasi web Dataverse menyediakan berbagai formulir web yang memungkinkan Anda membuat dan mengelola patch secara interaktif.

  • Patch hanya dapat dibuat dari solusi induk menggunakan CloneAsPatchRequest atau atau Tindakan CloneAsPatch.

  • Induk tambalan tidak boleh menjadi tambalan.

  • Patch hanya dapat memiliki satu solusi induk.

  • Patch membuat ketergantungan (di tingkat solusi) pada solusi induknya.

  • Anda hanya dapat menginstal patch jika solusi induk ada.

  • Anda tidak dapat menginstal patch kecuali nama unik dan nomor versi mayor/minor dari solusi induk, seperti yang diidentifikasi oleh ParentSolutionId, tidak cocok dengan solusi induk yang diinstal di organisasi target.

  • Versi patch harus memiliki nomor besar dan kecil yang sama, namun nomor versi, dan rilis yang lebih tinggi, dibandingkan nomor versi solusi induk. Nama tampilan dapat berbeda.

  • Jika solusi memiliki patch, patch berikutnya harus memiliki nomor versi yang lebih tinggi dari patch yang ada untuk solusi tersebut.

  • Patch mendukung operasi yang sama seperti solusi, seperti pembaruan tambahan, namun tidak menghilangkan. Anda tidak dapat menghapus komponen dari solusi menggunakan patch. Untuk menghapus komponen dari solusi, lakukan peningkatan.

  • Patch yang diekspor sebagai terkelola harus diimpor di atas solusi induk terkelola. Aturannya adalah bahwa proteksi patch (terkelola atau tidak terkelola) harus sesuai induknya.

  • Jangan gunakan patch yang tidak dikelola untuk tujuan produksi.

  • Patch hanya didukung dalam organisasi Dataverse dari versi 8.0 atau yang lebih baru.

    Alat SolutionPackager dan PackageDeployer di rilis ini mendukung patch solusi. Lihat alat bantu online untuk pilihan baris perintah yang terkait dengan patch.

Buat Patch

Membuat patch dari solusi tidak terkelola di organisasi menggunakan pesan CloneAsPatchRequest atau tindakan CloneAsPatch Action, atau menggunakan aplikasi web. Setelah Anda membuat patch, solusi asli menjadi terkunci dan Anda tidak dapat mengubah atau mengekspornya selama ada patch dependen yang ada dalam organisasi yang mengidentifikasi solusi sebagai solusi induk. Versi patch mirip dengan versi solusi dan ditentukan dalam format berikut: mayor.minor.build.rilis. Anda tidak dapat membuat perubahan pada versi solusi utama atau minor yang ada saat membuat patch.

Impor dan ekspor patch

Anda dapat menggunakan SDK untuk .NET atau Web API, aplikasi web, atau Package Deployer alat untuk mengekspor dan mengimpor tambalan. SDK yang relevan untuk kelas permintaan .NET adalah ImportSolutionRequest dan ExportSolutionRequest. Tindakan yang relevan Untuk API Web adalah Tindakan ImportSolution dan Tindakan ExsportSolution.

Contoh patching

Tabel berikut mencantumkan rincian dari contoh patching. Perhatikan bahwa dalam contoh ini, solusi dan patch diimpor dalam urutan numerik, dan berproperti tambahan, yang konsisten dengan impor solusi secara umum.

Nama patch Deskripsi
SolutionA, versi 1.0 (unmanaged) Berisi entityA dengan 6 bidang.
SolutionA, versi 1.0.1.0 (unmanaged) Berisi entityA dengan 6 bidang (3 diperbarui), dan menambahkan entityB dengan 10 bidang.
SolutionA, versi 1.0.2.0 (unmanaged) Berisi entityC dengan 10 bidang.

Proses impor adalah sebagai berikut.

  1. Pengembang atau penyesuai mula-mula mengimpor solusi dasar (SolutionA 1.0) ke organisasi. Hasilnya adalah entityA dengan 6 bidang dalam organisasi.

  2. Selanjutnya, SolutionA patch 1.0.1.0 diimpor. Organisasi ini sekarang berisi entityA dengan 6 bidang (3 telah diperbarui), plus entityB dengan 10 bidang.

  3. Akhirnya, SolutionA patch 1.0.2.0 diimpor. Organisasi ini sekarang berisi entityA dengan 6 bidang (3 diperbarui), entityB dengan 10 bidang plus entityC dengan 10 bidang.

Contoh patching lain

Mari Lihat contoh patching lainnya, dengan rincian yang tercantum dalam tabel berikut.

Nama patch Deskripsi
SolutionA, versi 1.0 (tak terkelola, solusi dasar) Berisi entitas Account dengan panjang bidang nomor akun disesuaikan dari 20 hingga 30 karakter.
SolutionB, versi 2.0 (tak terkelola, berbeda vendor) Berisi entitas Account dengan panjang bidang nomor akun disesuaikan hingga 50 karakter.
SolutionA, versi 1.0.1.0 (tak terkelola, patch) Berisi pembaruan untuk entitas Account dengan panjang bidang nomor akun disesuaikan hingga 35 karakter.

Proses impor adalah sebagai berikut:

  1. Pengembang atau penyesuai mula-mula mengimpor solusi dasar (SolutionA 1.0) ke organisasi. Hasilnya adalah entitas Account dengan bidang nomor akun 30 karakter.

  2. SolutionB diimpor. Organisasi sekarang berisi entitas Account dengan bidang nomor akun 50 karakter.

  3. SolutionA patch 1.0.1.0 diimpor. Organisasi masih berisi entitas Account dengan bidang nomor akun 50 karakter, sebagaimana diterapkan oleh SolutionB.

  4. Instalasi SolutionB dihapus. Organisasi kini berisi entitas Account dengan bidang nomor akun 35 karakter, sebagaimana diterapkan oleh SolutionA patch 1.0.1.0.

Menghapus patch

Anda dapat menghapus patch atau solusi dasar (induk) dengan menggunakan DeleteRequest atau, untuk web api, menggunakan metode HTTP DELETE. Proses penghapusan berbeda untuk solusi terkelola atau tidak terkelola yang memiliki satu atau beberapa patch yang ada di organisasi.

Untuk solusi yang tidak terkelola, Anda harus menghapus instalan semua patch ke solusi dasar terlebih dahulu, dengan urutan versi terbalik yang dibuat, sebelum menghapus instalan solusi dasar.

Untuk solusi terkelola, anda cukup menghapus instalan solusi dasar. Sistem Dataverse akan secara otomatis membatalkan penginstalan patch dalam urutan versi terbalik sebelum menghapus instalan solusi dasar. Anda juga dapat hanya menghapus instalan satu patch.

Perbarui Solusi

Memperbarui solusi melibatkan roll up (penggabungan) semua patch solusi tersebut ke versi baru solusi. Setelah itu, solusi tersebut menjadi tidak terkunci dan dapat diubah lagi (hanya solusi tidak terkelola) atau diekspor. Untuk solusi terkelola, modifikasi lebih lanjut atas solusi diizinkan kecuali untuk membuat patch dari solusi yang baru saja diperbarui. Untuk menggabungkan patch ke solusi yang tidak terkelola, gunakan CloneAsSolutionRequest atau tindakan CloneAsSolution. Kloning solusi membuat versi baru dari solusi yang tidak terkelola, menggabungkan semua patch, dengan nomor versi mayor.minor yang lebih tinggi, nama unik yang sama, dan nama tampilan.

Untuk solusi terkelola ditangani sedikit berbeda. Anda pertama kali mengkloning solusi tidak terkelola (A), menggabungkan semua patch, dan kemudian mengekspornya sebagai solusi terkelola (B). Di organisasi target yang berisi versi terkelola solusi (a) dan patch, Anda mengimpor solusi terkelola (B), kemudian jalankan DeleteAndPromoteRequest atau Tindakan DeleteAndPromote untuk mengganti solusi terkelola (a) dan patch dengan solusi terkelola (B) yang ditingkatkan yang memiliki nomor versi yang lebih tinggi.

Lihat juga

Menggunakan solusi tersegmentasi