Evaluasi aturan dan aturan

Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Aturan digunakan untuk mengatur atau membatasi penetapan nilai ke bidang item kerja. Ada dua jenis aturan utama, aturan yang dibuat secara otomatis dan aturan kustom yang ditentukan untuk proses atau proyek. Aturan yang dihasilkan secara otomatis meminimalkan kebutuhan untuk menambahkan aturan kustom untuk area yang harus bekerja dengan cara standar.

Anda menentukan aturan kustom untuk mendukung kasus penggunaan bisnis Anda. Bergantung pada jenis data bidang, Anda dapat mengatur berbagai batasan pada data apa yang dapat dimasukkan ke dalam bidang tersebut. Anda dapat menentukan nilai untuk daftar pilihan (menu drop-down), mengatur nilai default, menghapus entri, atau membatasi perubahan. Dengan aturan bersyarat, Anda bisa menerapkan aturan ke bidang berdasarkan dependensi antara nilai bidang yang berbeda. Anda juga dapat membatasi siapa yang bisa mengubah bidang atau cakupan aturan untuk hanya diterapkan ke grup.

Baca artikel ini untuk memahami hal berikut:

  • Bagaimana sistem menerapkan aturan yang dihasilkan secara otomatis
  • Pembatasan yang ditempatkan pada definisi aturan kustom pada bidang sistem
  • Berbagai jenis aturan kustom yang dapat Anda terapkan
  • Bagaimana aturan dievaluasi
  • Perbedaan antara aturan yang ditentukan untuk proses Warisan versus proses XML Lokal
  • Mengapa Anda harus meminimalkan jumlah aturan kustom yang Anda tentukan

Sebelum menentukan aturan kustom, baca Mengonfigurasi dan menyesuaikan Azure Boards untuk mendapatkan pemahaman luas tentang cara menyesuaikan Azure Boards untuk memenuhi kebutuhan bisnis Anda.

Tip

Minimalkan jumlah aturan yang Anda tentukan untuk WIT. Meskipun Anda dapat membuat beberapa aturan untuk WIT, aturan penambahan dapat berdampak negatif pada performa saat pengguna menambahkan dan memodifikasi item kerja. Saat pengguna menyimpan item kerja, sistem memvalidasi semua aturan yang terkait dengan bidang untuk jenis item kerjanya. Dalam kondisi tertentu, ekspresi validasi aturan terlalu kompleks untuk dievaluasi SQL.

Aturan yang dibuat secara otomatis

Aturan yang dihasilkan secara otomatis meminimalkan kebutuhan untuk menambahkan aturan kustom untuk area yang harus bekerja dengan cara standar.

Aturan transisi status

Proses yang diwariskan menghasilkan seluruh set aturan transisi status apa pun secara dinamis untuk setiap jenis item kerja kustom dan status kustom yang ditambahkan ke alur kerja. Transisi dari status apa pun ke status apa pun valid.

Untuk proses XML lokal, Anda harus menentukan transisi yang valid dalam WORKFLOW bagian definisi jenis item kerja.

Transisi status dan aturan bidang Menurut/Tanggal

Menurut/Tanggal bidang sesuai dengan Dibuat Berdasarkan/Tanggal, Diaktifkan Menurut/Tanggal, Diselesaikan Menurut/Tanggal, dan Ditutup Berdasarkan/Tanggal.

Untuk proses yang diwariskan, bidang ini secara otomatis diatur atau dibersihkan saat Anda mentransisikan item kerja dari satu status ke status lainnya. Bidang Diubah Menurut/Tanggal tidak disertakan karena diperbarui dengan setiap penyimpanan item kerja dan tidak terkait dengan transisi status.

Aturan dan perilaku default yang mengatur bidang ini meliputi:

  1. Status Tertutup selalu terkandung dalam kategori Status selesai .
  2. Kategori Status selesai tidak dapat dikonfigurasi, dan dikaitkan dengan satu dan hanya satu Status.
  3. Status Tertutup ini selalu Ditutup untuk proses Agile dan CMMI, dan selalu Dilakukan untuk proses Scrum dan Basic.
  4. Pembuatan otomatis aturan ini dipengaruhi oleh lokal karena kondisi aturan berisi nama Status, yang dilokalkan. Sistem menghasilkan aturan yang berbeda untuk lokal yang berbeda.
  5. Aturan yang dibuat secara otomatis untuk bidang ini hanya ditentukan untuk jenis item kerja yang menyertakan bidang ini. Dimungkinkan bagi jenis item kerja untuk tidak menyertakan satu atau beberapa bidang ini.
  6. Aturan ini diperlukan ketika jenis item kerja memiliki status kustom, atau jenis item kerja adalah jenis item kerja kustom.
  7. Aturan ini hanya berlaku untuk proses yang diwariskan; mereka tidak pernah dibuat untuk proses XML yang Dihosting atau XML lokal.

Status alur kerja dikaitkan dengan kategori status untuk mendukung alur kerja pada papan Kanban. Untuk mempelajari selengkapnya, lihat Bagaimana status alur kerja dan kategori status digunakan di Backlog dan Papan.

Aturan bidang Tanggal Perubahan Status

Aturan ini secara teknis jauh lebih sederhana daripada aturan Closed By/Closed Date karena tidak bergantung pada status tertentu. Untuk jenis item kerja apa pun, aturan yang sama akan selalu berfungsi. Mereka perlu dibuat secara otomatis karena beberapa jenis item kerja OOB tidak berisi bidang Tanggal Perubahan Status, jadi ketika pengguna menambahkan bidang ini ke jenis item kerja kustom, aturan ini juga perlu dibuat secara otomatis. Prinsip yang sama untuk aturan Closed By/Closed Date juga berlaku di sini.

Aturan kustom

Semua aturan kustom bersifat opsional. Untuk proses yang diwariskan, Anda menentukan aturan yang terdiri dari kondisi ditambah tindakan. Untuk proses XML Lokal, Anda menentukan aturan untuk bidang atau dalam alur kerja.

Tidak ada pemetaan satu-ke-satu antara dua proses. Dalam beberapa kasus, aturan elemen XML ditentukan dalam dialog Edit bidang untuk proses yang diwariskan dan bukan sebagai aturan. Elemen XML lainnya, seperti FROZEN, MATCH, NOTSAMEAS, tidak didukung dalam proses yang diwariskan.

Berikut hal-hal yang perlu diketahui:

  • Aturan selalu diberlakukan, tidak hanya ketika Anda berinteraksi dengan formulir tetapi juga saat berinteraksi melalui alat lain. Misalnya, mengatur bidang sebagai baca-saja tidak hanya menerapkan aturan pada formulir item kerja, tetapi juga melalui API dan Add-in Server Azure DevOps Excel.
  • Entri proses yang diwariskan menentukan kondisi dan tindakan untuk membuat aturan lengkap. Elemen XML tidak membuat perbedaan tersebut.
  • Aturan bidang tidak mendukung penetapan nilai yang merupakan jumlah dari dua bidang lain atau melakukan perhitungan matematika lainnya. Namun, Anda mungkin menemukan solusi yang sesuai dengan kebutuhan Anda melalui ekstensi Marketplace TFS Aggregator (Layanan Web). Lihat juga Rollup pekerjaan dan bidang lainnya.
  • Anda mungkin menemukan solusi tambahan untuk menerapkan aturan kustom ke bidang menggunakan ekstensi Marketplace, seperti ekstensi pustaka kontrol formulir item Kerja.

Komposisi aturan

Untuk proses yang diwariskan, setiap aturan terdiri dari dua bagian: Kondisi dan Tindakan. Kondisi menentukan keadaan yang harus dipenuhi agar aturan diterapkan. Tindakan menentukan operasi yang akan dilakukan. Untuk sebagian besar aturan, Anda dapat menentukan maksimal dua kondisi dan 10 tindakan per aturan. Semua aturan kustom mengharuskan semua kondisi terpenuhi agar dapat dijalankan.

Sebagai contoh, Anda dapat membuat bidang yang diperlukan berdasarkan nilai yang ditetapkan ke status dan bidang lain. Contohnya:

   (Condition) When a work item State isAktif
   (Condition) And when the value ofBisnis Area = Nilai
   (Action) Then make requiredTitik Cerita

Catatan

Saat ini, hanya satu kondisi yang didukung untuk aturan transisi status. Jika Anda menerapkan aturan berdasarkan Status, lihat Menerapkan aturan ke status alur kerja.

Tabel berikut ini merangkum Tindakan yang tersedia dengan Kondisi yang dipilih.

Kondisi

Tindakan yang Didukung

Atur nilai bidang atau jadikan diperlukan atau baca-saja

Kondisi, item kerja dibuat

Tindakan, item kerja dibuat

Membatasi transisi berdasarkan Status

Kondisi, item kerja dipindahkan

Tindakan, membatasi transaksi berdasarkan Status.

Sembunyikan bidang atau buat bidang baca-saja atau diperlukan berdasarkan keanggotaan Status dan pengguna atau grup

Kondisi, keanggotaan grup pengguna

Tindakan, membatasi transaksi berdasarkan Status dan keanggotaan.

Berdasarkan dan keanggotaan pengguna atau grup, atur atribut bidang atau batasi transisi Status

Kondisi, keanggotaan grup pengguna

Tindakan, membatasi transaksi berdasarkan Status dan keanggotaan.

Apa yang terjadi jika terlalu banyak aturan didefinisikan

Ekspresi SQL tunggal didefinisikan per proyek untuk memvalidasi item kerja setiap kali dibuat atau diperbarui. Ekspresi ini bertambah dengan jumlah aturan yang Anda tentukan untuk semua jenis item kerja yang ditentukan untuk proyek. Setiap kualifikasi perilaku yang ditentukan untuk bidang menghasilkan peningkatan jumlah sub-ekspresi. Aturan berlapis, aturan yang hanya berlaku pada transisi atau dikondisikan pada nilai beberapa bidang lain, menyebabkan lebih banyak kondisi ditambahkan ke IF pernyataan. Setelah ekspresi mencapai ukuran atau kompleksitas tertentu, SQL tidak dapat mengevaluasinya lagi dan menghasilkan kesalahan. Menghapus beberapa WIT atau menghilangkan beberapa aturan, dapat mengatasi kesalahan.

Anda dapat menentukan nilai untuk daftar pilihan (menu drop-down), mengatur nilai default, menghapus entri, atau membatasi perubahan. Dengan aturan bersyarat, Anda bisa menerapkan aturan ke bidang berdasarkan dependensi antara nilai bidang yang berbeda. Anda juga dapat membatasi siapa yang bisa mengubah bidang atau cakupan aturan untuk hanya diterapkan ke grup.

Aturan item kerja tidak ada sebagai satu koleksi. Aturan sebenarnya dihasilkan secara dinamis dan digabungkan dari sumber data yang berbeda. Logika penggabungan adalah yang sederhana, mengonsolidasikan aturan yang identik, tetapi jangan pangkas aturan yang bertentangan.

Aturan bypass

Secara umum, semua item kerja divalidasi oleh mesin aturan saat pengguna memodifikasi item kerja. Namun, untuk mendukung skenario tertentu, pengguna menetapkan aturan Bypass pada item kerja memperbarui izin tingkat proyek dapat menyimpan item kerja tanpa aturan dievaluasi.

Aturan dapat dilewati dengan salah satu dari dua cara. Yang pertama adalah melalui Item Kerja - perbarui REST API dan atur bypassRules parameter ke true. Yang kedua adalah melalui model objek klien, dengan menginisialisasi dalam mode bypassrules (diinisialisasi WorkItemStore dengan WorkItemStoreFlags.BypassRules).

Bidang sistem dan aturan kustom

Bidang sistem memiliki Sistem.Nama referensi nama, misalnya System.Title dan System.State.

Bidang sistem berikut diperlukan untuk memiliki nilai: ID Area, Tanggal Diubah, Tanggal Dibuat, Dibuat Oleh, Status, dan Alasan.

Mesin aturan membatasi kondisi pengaturan atau tindakan ke bidang sistem kecuali sebagai berikut:

  • Anda dapat membuat bidang Status dan Alasan bersifat baca-saja.
  • Anda bisa menerapkan sebagian besar aturan ke bidang Judul, Ditetapkan Ke, Deskripsi, dan Diubah Menurut .

Jika Anda tidak melihat bidang yang tercantum di menu drop-down antarmuka pengguna aturan untuk proses Warisan, inilah sebabnya. Misalnya, jika Anda mencoba membuat baca-saja Jalur Area (System.AreaPath) berdasarkan kondisi, bidang Jalur Area tidak tersedia untuk pilihan. Bahkan jika Anda dapat menentukan bidang sistem, mesin aturan dapat membatasi Anda untuk menyimpan aturan.

Aturan default dan salin

Aturan default dan salin mengubah nilai bidang item kerja. Mereka menentukan perilaku dan batasan run-time, seperti menentukan nilai default, menghapus bidang, mengharuskan bidang ditentukan, dan banyak lagi.

Anda dapat membatasi penerapan aturan ini berdasarkan keanggotaan grup pengguna saat ini seperti yang dijelaskan dalam Pembatasan aturan keanggotaan pengguna atau grup.

Sebagian besar tindakan aturan ini dapat diterapkan dengan pemilihan kondisi apa pun.

Tindakan proses yang diwariskan

Keterangan

Copy the value from...

Menentukan bidang lain yang berisi nilai yang akan disalin ke bidang saat ini.

Clear the value of...

Menghapus bidang dari nilai apa pun yang dikandungnya.

Use the current time to set the value of ...

Mengatur waktu untuk bidang berdasarkan pengaturan waktu pengguna saat ini.

Aturan batasan

Aturan batasan membatasi perubahan nilai bidang. Mereka menentukan status yang valid untuk item kerja. Setiap batasan beroperasi pada satu bidang. Batasan dievaluasi pada server pada penyimpanan item kerja, dan jika ada batasan yang dilanggar, operasi penyimpanan ditolak.

Anda dapat membatasi penerapan aturan ini berdasarkan keanggotaan grup pengguna saat ini seperti yang dijelaskan dalam Pembatasan aturan keanggotaan pengguna atau grup.

Sebagian besar tindakan aturan ini dapat diterapkan dengan pemilihan kondisi apa pun.

Tindakan proses yang diwariskan

Keterangan

Hide the field...
Hanya tersedia saat kondisi keanggotaan grup dipilih.

Menentukan untuk tidak menampilkan bidang pada formulir item kerja, pada dasarnya menghapus kemampuan pengguna saat ini untuk mengubah nilai bidang.

Make read-only

Mencegah bidang dimodifikasi. Anda mungkin ingin menerapkan aturan ini dalam kondisi tertentu. Misalnya, setelah item kerja ditutup, Anda ingin membuat bidang baca-saja untuk mempertahankan data untuk tujuan pelaporan.
Untuk menentukan default bidang adalah baca-saja, tentukan dalam dialog Edit bidang, tab Opsi .

Make required

Mengharuskan pengguna menentukan nilai untuk bidang tersebut. Pengguna tidak dapat menyimpan item kerja hingga mereka memiliki nilai yang ditetapkan ke semua bidang yang diperlukan.
Untuk menentukan default bidang diperlukan, tentukan dalam dialog Edit bidang, tab Opsi .

Pilih daftar

Pilih daftar menentukan nilai yang dapat atau tidak dapat dipilih pengguna untuk bidang String atau Bilangan Bulat. Nilai yang ditentukan dalam daftar pilih muncul pada formulir item kerja dan editor kueri.

Untuk proses Yang Diwariskan, pilih daftar ditentukan melalui dialog Edit bidang.

Dialog edit bidang

Keterangan

Tab Definisi untuk bidang daftar pilih

Menentukan daftar nilai yang diizinkan untuk bidang tersebut. Nilai yang diizinkan adalah nilai yang tersedia untuk pilihan dalam daftar bidang pada formulir item kerja dan di penyusun kueri. Anda harus memilih dari salah satu nilai ini.

Centang kotak centang Izinkan pengguna memasukkan nilai mereka sendiri di dalam tab Opsi untuk memungkinkan pengguna menentukan entri mereka sendiri

Menentukan daftar nilai yang disarankan untuk bidang tersebut. Nilai yang disarankan adalah nilai yang tersedia untuk pilihan dalam daftar bidang pada formulir item kerja dan di penyusun kueri. Anda dapat memasukkan nilai lain selain nilai dalam daftar.

Nilai atau perubahan bidang bersyarah

Aturan kondisional menentukan tindakan berdasarkan nilai bidang yang sama atau tidak sama dengan nilai tertentu, atau jika perubahan dilakukan atau tidak dilakukan pada nilai bidang tertentu. Secara umum, aturan bersyarat diterapkan terlebih dahulu melalui aturan tanpa syarat. Ketika beberapa aturan kondisional mengevaluasi ke true, urutan eksekusi adalah: When, WhenNot, WhenChanged, WhenNotChanged.

Anda dapat menentukan beberapa aturan bersyarah per bidang. Namun, Anda hanya dapat menentukan satu bidang mengemudi per aturan kondisional.

Kondisi yang diwariskan

Keterangan

The value of ... (equals) [Kapan]

Menentukan satu atau beberapa aturan yang akan diterapkan ke bidang saat ini ketika bidang lain memiliki nilai tertentu.

A change was made to the value of ... [Ketika Berubah]

Menerapkan satu atau beberapa aturan ke bidang saat ini saat nilai bidang tertentu diubah.

The value of ... (not equals) [WhenNot]

Menerapkan satu atau beberapa aturan ke bidang saat ini ketika bidang lain tidak memiliki nilai tertentu.

No change was made to the value of ... [WhenNotChanged]

Menerapkan satu atau beberapa aturan ke bidang saat ini ketika nilai bidang tertentu tidak diubah.


Tindakan yang diwariskan

Keterangan

Clear the value of ...
Copy the value from ...
Make read-only ...
Make required ...
Set the value of ...
Use the current time to set the value of ...
Use the current user to set the value of ...

Menentukan tindakan yang akan diambil pada bidang tertentu.

Pembatasan aturan keanggotaan pengguna atau grup

Anda dapat membatasi penerapan aturan berdasarkan keanggotaan pengguna saat ini. Kami sarankan Anda mencakup aturan ke grup keamanan Azure DevOps, dan bukan satu pengguna, meskipun Anda dapat menentukan yang terakhir. Agar aturan terlingkup ke beberapa grup, Anda harus membuat grup Azure DevOps induk yang menyertakan sekumpulan grup yang ingin Anda gunakan.

Implementasi proses

Tip

Untuk menghindari masalah evaluasi aturan yang mungkin muncul, tentukan grup keamanan Azure DevOps dan bukan ID Microsoft Entra atau grup keamanan Direktori Aktif. Untuk mempelajari selengkapnya, lihat Aturan default dan mesin aturan.

Seperti yang ditunjukkan dalam tabel berikut, untuk membatasi aturan berdasarkan keanggotaan pengguna saat ini, Anda menentukan salah satu dari dua kondisi untuk proses yang Diwariskan. Aturan ini aktif untuk Azure DevOps 2020 dan versi yang lebih baru.

Berlaku untuk

Aturan

Kondisi

Current user is a member of group ...
Current user is not member of group ...

Perbuatan

Hide the field ...
Make read-only ...
Make required ...
Restrict the transition to state ...

Menggunakan token untuk mereferensikan pengguna atau grup

Bidang identitas atau pemilih orang dapat menerima nilai yang mereferensikan pengguna dan grup. Saat Anda membatasi aturan ke grup, Anda menunjukkan domain atau cakupan grup. Untuk beberapa nilai, Anda dapat menggunakan token.

Contoh token meliputi yang berikut:

  • [ProjectName], seperti [Fabrikam], [FabrikamFiber], [MyProject]
  • [OrganizationName], seperti [fabrikam], [myorganization]
  • [CollectionName], seperti [fabrikam], [myorganization]

Untuk mempelajari tentang cakupan yang tersedia untuk proyek atau organisasi Anda, buka halaman Grup Project Pengaturan> Permissions> atau Organization Pengaturan> Permissions Groups>, Anda dapat memfilter daftar sesuai kebutuhan. Misalnya, gambar berikut menunjukkan empat entri pertama ke daftar yang difilter berdasarkan Azure DevOps. Untuk mempelajari selengkapnya, lihat Mengubah izin tingkat proyek atau Mengubah izin tingkat koleksi proyek.

Cuplikan layar daftar grup Izin yang difilter.

Untuk mempelajari selengkapnya tentang grup keamanan default, lihat Izin dan grup

Evaluasi aturan

Aturan yang menentukan kondisi berdasarkan keanggotaan pengguna atau grup pengguna yang memodifikasi item kerja dievaluasi dengan salah satu dari dua cara. Ketika aturan dievaluasi, aplikasi perlu menentukan apakah aturan berlaku untuk pengguna saat ini dengan memeriksa apakah pengguna tersebut adalah atau bukan anggota grup yang ditentukan.

  • Saat memodifikasi item kerja dari portal web, REST API, atau perintah papan azure, permintaan ke ID Microsoft Entra atau Direktori Aktif dibuat. Tidak ada masalah yang terjadi untuk operasi ini.
  • Saat memodifikasi item kerja dari Visual Studio, Excel, atau alat kustom lainnya menggunakan Model Objek Klien WIT, permintaan untuk mengevaluasi keanggotaan didasarkan pada cache klien. Cache klien tidak mengetahui grup Direktori Aktif.

Catatan

Visual Studio 2019 Team Explorer untuk proyek yang menggunakan GIT telah ditulis ulang untuk menggunakan REST API.

Untuk menghindari masalah dengan pengguna yang memperbarui item kerja dari berbagai klien, tentukan grup keamanan Azure DevOps alih-alih grup Direktori Aktif. Anda dapat dengan mudah membuat grup keamanan Azure DevOps agar sesuai dengan grup Direktori Aktif. Untuk mempelajari caranya, lihat Menambahkan atau menghapus pengguna atau grup, mengelola grup keamanan.

Catatan

OM Klien WIT tidak digunakan lagi. Mulai 1 Januari 2020, layanan ini tidak lagi didukung saat bekerja terhadap Azure DevOps Services dan Azure DevOps Server 2020.

Urutan di mana aturan dievaluasi

Aturan biasanya diproses dalam urutan di mana aturan tersebut tercantum. Namun, urutan lengkap untuk evaluasi semua aturan tidak sepenuhnya deterministik.

Bagian ini menjelaskan perilaku dan interaksi yang diharapkan saat Anda menerapkan aturan kondisi, penyalinan, dan default.

Langkah-langkah berikut menunjukkan, dalam urutan yang benar, interaksi yang dilakukan Azure DevOps dan oleh pengguna formulir item kerja. Hanya langkah 1, 8, dan 13 yang dilakukan oleh pengguna.

  1. Dari klien Azure DevOps--seperti portal web atau Visual Studio Team Explorer--pengguna membuat item kerja baru atau mengedit item kerja yang sudah ada.

  2. Isi default bidang. Untuk semua bidang, terapkan default apa pun yang ditetapkan ke bidang yang bukan bagian dari klausa kondisional.

  3. Salin atau atur nilai bidang. Untuk semua bidang, terapkan aturan apa pun untuk menyalin nilai atau mengatur nilai bidang yang bukan bagian dari klausa bersyar.

  4. Untuk semua bidang dengan aturan Saat bersyariah yang cocok, terapkan aturan untuk mengatur atau menyalin nilai bidang.

  5. Untuk semua bidang dengan aturan Saat Tidak Bersyariah yang cocok, terapkan aturan untuk mengatur atau menyalin nilai bidang.

    Sistem selalu memproses Ketika aturan sebelum Aturan Ketika Tidak.

  6. Untuk semua bidang yang telah mengubah nilainya sejak langkah 1 dan yang berisi aturan Saat Diubah , terapkan aturan untuk mengatur atau menyalin nilai bidang.

  7. Perbolehkan pengguna untuk mulai mengedit.

  8. Pengguna mengubah nilai bidang lalu memindahkan fokus dari bidang.

  9. Proses apa pun Saat aturan untuk bidang tersebut yang cocok dengan nilai baru.

  10. Memproses aturan Kapan Tidak untuk bidang tersebut yang cocok dengan nilai baru.

  11. Memproses aturan Saat Diubah untuk bidang yang cocok dengan nilai baru.

  12. Mengembalikan kemampuan pengeditan kepada pengguna.

  13. Pengguna menyimpan perubahan ke penyimpanan data.

  14. Untuk semua bidang, terapkan tindakan apa pun Use the current time to set the value of ... yang ditentukan untuk bidang baik secara langsung atau tidak langsung di bawah aturan bersyariah.