İş Öğesi Sorgulama Dili (WIQL) söz dizimi başvurusu

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

WiQL söz dizimini kullanarak bir sorguyu köprü olarak tanımlayabilir veya İş Öğesi Sorgu Dili'ni (REST API) kullanabilirsiniz.

WIQL söz dizimi, web portalı Sorgu Düzenleyicisi ve birkaç tane daha aracılığıyla kullanılabilen tüm işlevleri destekler. Döndürülecek alanları belirtebilir ve sorgu yan tümcelerinin mantıksal gruplandırmalarını belirtebilirsiniz. Ayrıca, önceki tarihe ASOF göre atamalara göre filtrelemek için bir yan tümce kullanabilirsiniz.

Önemli

WIQL söz dizimi, Wiql'e Göre Sorgu REST API'sini yürütmek için kullanılır. Şu anda, bir WIQL sorgusundan ayrıntılı iş öğesi bilgilerini doğrudan döndürmek için API'yi çağırmanın bir yolu yoktur. SELECT deyimine hangi alanları eklerseniz ekleyin, API yalnızca iş öğesi kimliklerini döndürür. Bilgilerin tamamını almak için iki adım gerçekleştirmeniz gerekir: (1) WIQL'den iş öğelerinin kimliğini alma ve (2) İş öğelerinin kimliğe göre listesini alma ve belirli alanlar aracılığıyla alma.

Önkoşullar

Sorgu yalnızca İş öğelerini görüntüle veya Bu düğümdeki iş öğelerini görüntüle iznine sahip olduğunuz iş öğelerini döndürür. Bu izinler genellikle her takım projesi için Okuyucular ve Katkıda Bulunanlar gruplarının üyelerine verilir. Daha fazla bilgi için bkz . İzinler ve gruplar.

Sorgu diline genel bakış

İş öğesi sorgu dili, aşağıdaki söz dizimi kod parçacığında gösterilen ve aşağıdaki tabloda açıklanan beş bölüme sahiptir. WIQL söz dizimi büyük/küçük harfe duyarlı değildir.

SELECT
    [System.Id],
    [System.AssignedTo],
    [System.State],
    [System.Title],
    [System.Tags]
FROM workitems
WHERE
    [System.TeamProject] = 'Design Agile'
    AND [System.WorkItemType] = 'User Story'
    AND [System.State] = 'Active'
ORDER BY [System.ChangedDate] DESC
ASOF '02-11-2020'

İpucu

Wiql Editor Market uzantısını yükleyerek Sorgu Düzenleyicisi kullanarak sorgularınızı oluşturabilir ve wiql söz dizimini görüntüleyebilirsiniz. Ardından WIQL söz dizimini kopyalayıp değiştirebilir ve Boards'a eklenen Wiql Playground hub'ını kullanarak sorguyu çalıştırabilirsiniz.

Yan tümce

Örnek

SELECT

Sorgu tarafından döndürülen her iş öğesi için döndürülecek alanları tanımlar. Kolay adı veya başvuru adını belirtebilirsiniz. Ad boşluk veya nokta içeriyorsa köşeli ayraç ([]) kullanın.

FROM

Sorgunun iş öğelerini mi yoksa iş öğeleri arasındaki bağlantıları mı bulmasını istediğinizi gösterir.

WHERE

Sorgu için filtre ölçütlerini belirtir. Daha fazla bilgi için bu makalenin devamında yer alan Filtreleme koşullarına (WHERE) bakın.

ORDER BY

Döndürülen iş öğelerinin sıralama düzenini belirtir. Bir veya daha fazla alan için Artan (Asc) veya Azalan (Desc) belirtebilirsiniz. Örneğin:
ORDER BY [State] Asc, [Changed Date] Desc

ASOF

Filtrenin uygulanacağı tarihi belirterek geçmiş sorguyu belirtir. Örneğin, bu sorgu 11 Şubat 2020'de Etkin olarak tanımlanan tüm kullanıcı hikayelerini döndürür. Tarih ve saat düzeninde sağlanan kılavuza göre tarihi belirtin. ASOF '02-11-2020'

Not

Azure Boards'ta yapılan sorguların WIQL uzunluğu 32.000 karakteri aşmamalıdır. Sistem, bu uzunluğu aşan sorgular oluşturmanıza veya çalıştırmanıza izin vermez.

Tarih ve saat düzeni

DateTime alanları için girdiğiniz tarih ve saat deseni, profiliniz aracılığıyla seçtiğiniz tarih ve saat düzeniyle eşleşmelidir. Seçiminizi görüntülemek veya değiştirmek için bkz . Saat ve Yerel Ayar için kullanıcı tercihlerini ayarlama.

Saat ve Yerel Ayar bölmesinde tarih düzeni açılan seçeneklerini gösteren ekran görüntüsü.Saat ve Yerel Ayar bölmesindeki Zaman Düzeni açılan seçeneklerini gösteren ekran görüntüsü.

Tarih deseni ve Saat deseni alanlarını içeren Saat ve Yerel Ayar bölmesini gösteren ekran görüntüsü.

Tırnak işareti (tek veya çift tırnaklar desteklenir) Karşılaştırmalarda kullanılan DateTime değişmez değerleri. Sorguyu çalıştıran yerel istemci bilgisayarın .NET DateTime biçiminde olmalıdır. Bir saat dilimi belirtilmediği sürece, DateTime değişmez değerleri yerel bilgisayarın saat dilimindedir.

WHERE 
   AND [System.ChangedDate] >= '01-18-2019 GMT'
   AND ([Closed Date] < '01-09-2022 GMT'
   OR [Resolved Date] >= '01-18-2019 14:30:01')  

DateTime değişmez değerinde saat atlandığında ve dayPrecision parametresi false değerine eşitse, saat sıfır (gece yarısı) olarak kabul edilir. dayPrecision parametresi için varsayılan ayar false'tur.

Alternatif olarak, yerel ayar ne olursa olsun geçerli olan ISO 8601 biçimini belirtebilirsiniz. ISO 8601, yıl ile başlayıp ay, gün, saat, dakikalar, saniyeler ve milisaniyeler takip ederek tarih ve saati temsil eder. Örneğin, 2021-12-10 15:00:00.000, 10 Aralık 2021'i yerel saatle 15:00'te temsil eder. ISO 8601 biçiminin kullanımına bir örnek aşağıda verilmiştir.

WHERE 
   AND [System.ChangedDate] >= '2019-01-18T00:00:00.0000000'
   AND ([Closed Date] < '2022-01-09T00:00:00.0000000'
   OR [Resolved Date] >= '2019-01-18T00:00:00.0000000')  

Özel alanlar

Sorgu yan tümcesine özel alan ekleyebilirsiniz. WIQL ile özel alan için başvuru adını belirtmeniz gerekir. Devralınan işlem modeli kullanan projeler için özel alanlar genellikle Özel olarak etiketlenir. adlarına eklenir ve boşluklar kaldırılır. Örneğin:

Kolay ad Başvuru adı
Onaylayan Custom.Approver
İstek Türü Custom.RequestType
Kapsam Tahmini Custom.CustomEstimate

Şirket içi XML işlem modelini kullanan projeler için başvuru adı, XML iş öğesi türü tanımları tarafından tanımlandığı şekildedir.

Daha fazla bilgi için bkz . İş öğesi alanları ve öznitelikleri.

Filtre yan tümcelerini belirtme (WHERE)

WHERE yan tümcesi filtre ölçütlerini belirtir. Sorgu yalnızca belirtilen ölçütleri karşılayan iş öğelerini döndürür. Örneğin, aşağıdaki örnek WHERE yan tümcesi etkin olan ve size atanan kullanıcı öykülerini döndürür.

WHERE [Work Item Type] = 'User Story'
   AND [State] = 'Active'
   AND [Assigned to] = @Me

Filtre ölçütlerini gruplandırmak için, mantıksal işleçleri parantez içine alarak hangi sırada değerlendirileceklerini denetleyebilirsiniz. Örneğin, size atanmış veya kapattığınız iş öğelerini döndürmek için sorgu filtresini aşağıdaki örnekle eşleşecek şekilde değiştirin.

WHERE
    [System.TeamProject] = @project
    AND (
        [System.WorkItemType] = 'Product Backlog Item'
        AND (
            [System.AssignedTo] = @me
            OR [Microsoft.VSTS.Common.ClosedBy] = @me
        )
    )

Filtre koşulları

Her filtre koşulu, her biri aşağıdaki kurallara uyması gereken üç bölümden oluşur:

  • Alan: Başvuru adını veya kolay adı belirtebilirsiniz. Aşağıdaki örnekler geçerli WIQL söz dizimidir:
    • Başvuru adı: SELECT [System.AssignedTo] ...
    • Boşluklu kolay ad: SELECT [Assigned To] ...
    • Boşluk içermeyen adlar köşeli ayraç gerektirmez: SELECT ID, Title ...
  • İşleç: Bu makalenin devamında İşleçler bölümünde geçerli değerler belirtilir.
  • Alan değeri: Belirtilen alana bağlı olarak aşağıdaki üç değerden birini belirtebilirsiniz.
    • Değişmez değer, alan değerinin veri türüyle eşleşmelidir.
    • Belirli bir değeri gösteren *değişken veya makro. Örneğin, @Me sorguyu çalıştıran kişiyi gösterir. Daha fazla bilgi için bu makalenin devamında yer alan Makrolar ve değişkenler bölümüne bakın.
    • Başka bir alanın adı. Örneğin, iş öğesini en son değiştiren kişiye atanmış iş öğelerini bulmak için kullanabilirsiniz [Assigned to] = [Changed by] .

Sistem tanımlı tüm alanların açıklaması ve başvuru adları için bkz . İş öğesi alan dizini.

İşleçler

Sorgular, sonuç kümelerini nitelerken mantıksal ifadeler kullanır. Bu mantıksal ifadeler bir veya daha fazla birleştirilmiş işlem tarafından oluşturulur.

Bazı basit sorgu işlemleri aşağıda listelenmiştir.

WHERE
    [System.TeamProject] = @project
    AND [System.WorkItemType] <> ''
    AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
    AND [Microsoft.VSTS.Common.Severity] <> '1 - Critical'

Aşağıdaki tabloda farklı alan türleri için desteklenen tüm işleçler özetlenmiştir. Her alan türü hakkında daha fazla bilgi için bkz . İş öğesi alanları ve öznitelikleri.

İşleçler =, <>, >, <, >=, and <= beklendiği gibi çalışır. Örneğin, System.ID > 100 kimliği 100'den büyük olan tüm iş öğeleri için sorgular. System.ChangedDate > '01-01-19 12:00:00' tüm iş öğeleri için sorgular 1 Ocak 2019'un öğlenden sonra değiştirildi.

Bu temel işleçlerin ötesinde, belirli alan türlerine özgü bazı davranışlar ve işleçler vardır.

Not

Kullanabileceğiniz operatörler, platformunuza ve sürümünüze bağlıdır. Daha fazla bilgi için bkz . Sorgu hızlı başvurusu.

Alan türü

Desteklenen işleçler

Boolean

= , <> , =[Field] , <>[Field]

DateTime

= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], In, Not In, Was Ever

Çift, GUID, Tamsayı

= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], In, Not In, Was Ever

Kimlik

= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], Contains, Not Contains, In, Not In, In Group, Not In Group, Was Ever

PlainText

Contains Words, Not Contains Words, Is Empty, Is Not Empty

String

= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], Contains, Not Contains, In, Not In, In Group, Not In Group, Was Ever

TreePath

=, <>, In, Not In, Under, Not Under

Mantıksal gruplandırmalar

İki yan tümceyi AND değerlendirmek için ve OR genel anlamda Boole terimlerini kullanabilirsiniz. Bir işleç belirtirken ve OR EVER terimlerini AND EVERWAS EVER kullanabilirsiniz. Mantıksal ifadeleri gruplandırabilir ve gerektiğinde daha fazla birleştirebilirsiniz. Örnekler aşağıda gösterilmiştir.

WHERE
    [System.TeamProject] = @project
    AND (
        [System.WorkItemType] <> ''
        AND [System.State] IN ('Active', 'Approved', 'Committed', 'In Progress')
        AND (
            [System.CreatedBy] = ''
            OR [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
        )
    )

kullanarak notve in işleçlerini olumsuzlayabilirsinizcontains, under,. İşleci olumsuzlayamazsınız ever . Aşağıdaki örnek, alt ağacı Fabrikam Fiber\Account Managementaltında atanmamış tüm iş öğeleri için sorgular.

WHERE
    [System.TeamProject] = @project
    AND [System.WorkItemType] <> ''
    AND NOT [System.AreaPath] UNDER 'Fabrikam Fiber\Account Management'

Örnek sorgu, Hiç Atandı

Aşağıdaki Sorgu Düzenleyicisi örnek, Jamal Hartnett'e atanmış olan tüm iş öğelerini bulur.

Düz liste sorgusunun atandığı Sorgu Düzenleyicisi ekran görüntüsü.

Buna karşılık gelen WIQL söz dizimi de aşağıdadır.

SELECT
    [System.Id],
    [System.Title],
    [System.State],
    [System.IterationPath]
FROM workitems
WHERE
    [System.TeamProject] = @project
    AND [System.WorkItemType] <> ''
    AND EVER [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'

Makrolar veya değişkenler

Aşağıdaki tabloda, BIR WIQL sorgusunda kullanabileceğiniz makrolar veya değişkenler listelenir.

Makro Kullanım
@Me Kullanıcı diğer adlarını içeren bir alanda geçerli kullanıcının diğer adını otomatik olarak aramak için bu değişkeni kullanın. Örneğin, Alan sütununu Etkinleştirilmiş Olarak, İşleç sütununu olarak ve Değersütununu =@Me olarak ayarlarsanız açtığınız iş öğelerini bulabilirsiniz.
@CurrentIteration Seçili ekip bağlamını temel alarak seçili ekip için geçerli sprint'e atanan iş öğelerini otomatik olarak filtrelemek için bu değişkeni kullanın.
@Project Geçerli projedeki iş öğelerini aramak için bu değişkeni kullanın. Örneğin, Alan sütununu Takım Projesi, İşleç sütununu olarak ve Değer sütununu =@Project olarak ayarlarsanız, geçerli projedeki tüm iş öğelerini bulabilirsiniz.
@StartOfDay
@StartOfWeek
@StartOfMonth
@StartOfYear
Geçerli gün, hafta, ay, yıl veya bu değerlerden birine uzaklık temelinde DateTime alanlarını filtrelemek için bu makroları kullanın. Örneğin, Alan sütununu Oluşturma Tarihi, İşleç sütununu =, Değersütununu >ise @StartOfMonth - 3 olarak ayarlarsanız, son 3 ay içinde oluşturulan tüm öğeleri bulabilirsiniz.
@Today Geçerli tarihle veya önceki bir tarihle ilişkili iş öğelerini aramak için bu değişkeni kullanın. Ayrıca, günleri çıkararak @Today değişkenini değiştirebilirsiniz. Örneğin, Alan sütununu Etkinleştirilmiş Tarih, İşleç sütununu =, Değersütununu >da @Today - 7 olarak ayarlarsanız, geçen hafta etkinleştirilmiş tüm öğeleri bulabilirsiniz.
[Tümü] Belirli bir alan için tanımlanan herhangi bir değerle ilişkili iş öğelerini aramak için bu değişkeni kullanın.

@me Makro

Makro, @me sorguyu çalıştıran kullanıcının Windows Tümleşik hesap adının yerini alır. Aşağıdaki örnekte makronun ve eşdeğer statik deyiminin nasıl kullanılacağı gösterilmektedir. Makro, gibi Assigned Tokimlik alanlarıyla kullanılmak üzere tasarlanmıştır.

WHERE  
   [System.AssignedTo] = @Me 

@today Makro

Makroyu @today herhangi bir DateTime alanıyla kullanabilirsiniz. Bu makro, sorguyu çalıştıran yerel bilgisayarda geçerli tarihin gece yarısının yerini alır. Ayrıca, sırasıyla x gün sonrası @today ve y gün öncesi @todayiçin tamsayı uzaklıkları belirtebilir @today+x veya @today-y kullanabilirsiniz. Makroyu @today kullanan bir sorgu, çalıştırıldığı saat dilimine bağlı olarak farklı sonuç kümeleri döndürebilir.

Aşağıdaki örneklerde bugünün 3/1/19 olduğu varsayılmaktadır.

WHERE  
   [System.CreatedDate] = @today

Eşdeğeri:

WHERE  
   [System.CreatedDate] = '01-03-2019'

And

WHERE  
   [System.CreatedDate] > @today-2

Eşdeğeri:

WHERE  
   [System.CreatedDate] > '01-01-2019'

@StartOfDay, @StartOfWeek, @StartOfMonth, @StartOfYear makrolar

Makroları herhangi bir DateTime alanıyla kullanabilirsiniz@StartOf.... Bu makro, sorguyu çalıştıran yerel bilgisayarda geçerli günün, haftanın başlangıcının, ayın başlangıcının veya yılın başlangıcının yerini alır.

Not

Azure DevOps Server 2019 Güncelleştirme 1 veya sonraki bir sürümü gerektirir.

Bu makrolar biçiminde (+/-)nn(y|M|w|d|h|m)bir değiştirici dize kabul eder. Makroya @Today benzer şekilde, artı veya eksi tamsayı uzaklıklarını belirtebilirsiniz. Zaman birimi niteleyicisi atlanırsa, varsayılan olarak işlevin doğal süresine ayarlanır. Örneğin @StartOfWeek("+1") ile @StartOfWeek("+1w") aynıdır. Artı/eksi (+/-) işareti atlanırsa, artı varsayılır.

Bu söz dizimi, değiştiricileri iç içe yerleştirmenize ve sorgunuzu iki kez kaydırmanıza olanak tanır. Örneğin, yan tümcesi Closed Date >= @StartOfYear - 1, geçen yıldan bu yana kapatılmış olan iş öğelerini filtreler. olarak değiştirilerek Closed Date >= @StartOfYear('+3M') - 1, geçen yılın ilk üç ayı içinde kapatılan iş öğelerini dışlar. WIQL söz dizimi aşağıdaki örnekte gösterildiği gibidir.

WHERE 
   [Microsoft.VSTS.Common.ClosedDate] >=@StartOfYear('+3M') - 1

Aşağıdaki örneklerde bugünün 5/4/19 olduğu varsayılır.

WHERE  
   [Microsoft.VSTS.Common.CreatedDate] >= @StartOfMonth-3

Eşdeğeri:


WHERE 
   [Microsoft.VSTS.Common.CreatedDate] >= '01-01-2019'

And

WHERE 
   [Microsoft.VSTS.Scheduling.TargetDate] > @StartOfYear

Eşdeğeri:

WHERE 
   [Microsoft.VSTS.Scheduling.TargetDate]  > '01-01-2019'

Özel makrolar

WIQL ayrıca rastgele özel makroları da destekler. tarafından önekli herhangi bir @ dize özel makro olarak kabul edilir ve yerine geçer. Özel makronun değiştirme değeri, nesne modelindeki sorgu yönteminin bağlam parametresinden alınır. Aşağıdaki yöntem, makrolar için kullanılan API'dir:

public WorkItemCollection Query(string wiql, IDictionary context)

Bağlam parametresi makrolar için anahtar-değer çiftleri içerir. Örneğin, bağlam bir anahtar-değer çifti (project, MyProject) içeriyorsa, WIQL'de @project ile MyProject değiştirilir. Bu değişiklik, iş öğesi sorgu oluşturucusunun Visual Studio'daki @project makroyu işleme şeklidir.

Geçmiş sorguları belirtme (ASOF)

Belirli bir ASOF tarih ve saatte tanımlandığı gibi belirtilen filtre koşullarını karşılayan iş öğelerini filtrelemek için sorgudaki bir yan tümceyi kullanabilirsiniz.

Not

Visual Studio'da sorgu oluşturucusunda sorgu oluşturamazsınız ASOF . Yan tümcesi içeren ASOF bir sorgu dosyası (.wiq) oluşturur ve bunu Visual Studio'ya yüklerseniz, ASOF yan tümcesi yoksayılır.

Bir iş öğesinin 05.05.2022 tarihinden önce yineleme yoluFabrikam Fiber\Release 1 altında sınıflandırıldığını ve 'Jamal Hartnett'e atandığını varsayalım. Ancak, iş öğesi kısa süre önce 'Raisa Pokrovskaya'ya atandı ve Sürüm 2'nin yeni bir yineleme yoluna taşındı. Aşağıdaki örnek sorgu Jamal Hartnett'e atanan iş öğelerini döndürür çünkü sorgu geçmiş bir tarih ve saat itibarıyla iş öğelerinin durumunu temel alır.

SELECT
    [System.Id],
    [System.Title],
    [System.State],
    [System.IterationPath]
FROM workitems
WHERE
    [System.TeamProject] = @project
    AND [System.WorkItemType] <> ''
    AND ([System.IterationPath] UNDER 'Fabrikam Fiber\Release 1'
    AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>') 
    ASOF  '01-05-2022 00:00:00.0000000'

Not

Zaman belirtilmezse, WIQL gece yarısını kullanır. Saat dilimi belirtilmezse, WIQL yerel istemci bilgisayarın saat dilimini kullanır.

Sıralama düzenini ayarlama (ORDER BY)

Bir sorgunun ORDER BY sonuçlarını artan veya azalan düzende bir veya daha fazla alana göre sıralamak için yan tümcesini kullanabilirsiniz.

Not

Veri katmanındaki SQL sunucusunun sıralama tercihleri, varsayılan sıralama düzenini belirler. Ancak, açık bir sıralama düzeni seçmek için veya desc parametrelerini kullanabilirsinizasc.

Aşağıdaki örnek, iş öğelerini önce Önceliğe göre artan düzende (varsayılan) ve ardından Oluşturma Tarihi'ne göre azalan düzende (DESC ) sıralar.

SELECT
    [System.Id],
    [System.Title],
    [System.State],
    [System.IterationPath]
FROM workitems
WHERE
    [System.TeamProject] = @project
    AND [System.WorkItemType] <> ''
    AND [System.State] =  'Active'
    AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
ORDER BY [Microsoft.VSTS.Common.Priority],
    [System.CreatedDate] DESC

İş öğeleri arasındaki bağlantıları döndürmek için öğesini belirtirsiniz FROM WorkItemLinks. Yan tümcesindeki WHERE filtre koşulları, bağlantılara veya bağlantının kaynağı veya hedefi olan herhangi bir iş öğesine uygulanabilir. Örneğin, aşağıdaki sorgu Ürün Kapsam Öğeleri ile bunların etkin alt öğeleri arasındaki bağlantıları döndürür.

SELECT
    [System.Id],
    [System.Title],
    [System.State],
    [System.IterationPath]
FROM workitemLinks
WHERE
    (
        [Source].[System.TeamProject] = @project
        AND [Source].[System.WorkItemType] = 'Product Backlog Item'
    )
    AND (
        [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'
    )
    AND (
        [Target].[System.TeamProject] = @project
        AND [Target].[System.WorkItemType] <> ''
        AND [Target].[System.State] <> 'Closed'
    )
ORDER BY [Microsoft.VSTS.Common.Priority],
    [System.CreatedDate] DESC
MODE (Recursive)

Aşağıdaki tabloda, iş öğeleri arasındaki bağlantılar için iş öğesi sorguları ile sorgular arasındaki farklar özetlemektedir.

Yan tümce

İş öğeleri

İş öğeleri arasındaki bağlantılar

FROM

FROM WorkItems

FROM WorkItemLinks

WHERE

[FieldName] = Value

Specify one or more of the following:
[Source].[FieldName] = Value
[Target].[FieldName] = Value
[System.Links.LinkType] = 'LinkName'

MODE

geçerli değil

Aşağıdakilerden birini belirtin:

  • MODE (MustContain): (Varsayılan) Yalnızca kaynak, hedef ve bağlantı ölçütlerinin tamamlandığı WorkItemLinkInfo kayıtlarını döndürür.
  • MODE (MayContain): Hiçbir bağlı iş öğesi hedef ölçüte uymasa bile kaynak ve bağlantı ölçütlerini karşılayan tüm iş öğeleri için WorkItemLinkInfo kayıtlarını döndürür.
  • MODE (DoesNotContain): Kaynağı karşılayan tüm iş öğeleri için WorkItemLinkInfo kayıtlarını döndürür, ancak bağlantılı iş öğesi bağlantıyı ve hedef ölçütleri karşılamazsa.
  • MODE (Recursive): Ağaç sorguları için kullanın.[System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' Bağlantı türü Ağaç topolojisi ve ileri yönde olmalıdır. Kaynağı karşılayan tüm iş öğeleri için WorkItemLinkInfo kayıtlarını, hedef için özyinelemeli olarak döndürür. ORDER BY ve ASOF ağaç sorguları ile uyumlu değildir.

RETURNS

Aşağıdaki sistem bağlantı türü adlarından birini belirtebilirsiniz.

Aşağıda listelenen sistem bağlantı türü adlarından birini veya Şirket içi XML işlemiyle tanımladığınız özel bağlantı türünü belirtebilirsiniz.

  • System.LinkTypes.Hierarchy-Forward
  • System.LinkTypes.Related
  • System.LinkTypes.Dependency-Predecessor
  • System.LinkTypes.Dependency-Successor
  • Microsoft.VSTS.Common.Affects-Forward (CMMI işlemi)

Daha fazla bilgi için bkz . Bağlantı türü başvurusu.

Ağaç türü sorgu örneği

Aşağıdaki sorgu, geçerli projede tanımladığınız tüm iş öğesi türlerini döndürür. Sorgu Düzenleyicisi gösterildiği gibi sorgu aşağıdaki görüntüde gösterildiği gibi görünür.

Sorgu Düzenleyicisi, ağaç sorgusunun, tüm iş öğelerinin ve durumlarının ekran görüntüsü.

Eşdeğer WIQL söz dizimi aşağıda gösterilmiştir.

SELECT
    [System.Id],
    [System.Title],
    [System.State],
    [System.IterationPath]
FROM workitemLinks
WHERE
    (
        [Source].[System.TeamProject] = @project
        AND [Source].[System.WorkItemType] <> ''
        AND [Source].[System.State] <> ''
    )
    AND (
        [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'
    )
    AND (
        [Target].[System.TeamProject] = @project
        AND [Target].[System.WorkItemType] <> ''
    )
MODE (Recursive)


Aşağıdaki sorgu, geçerli projede tanımladığınız tüm iş öğesi türlerini döndürür. Sorgu Düzenleyicisi gösterildiği gibi sorgu aşağıdaki görüntüde gösterildiği gibi görünür.

Sorgu Düzenleyicisi, doğrudan bağlantı sorgusunun, tüm iş öğelerinin ve durumların ekran görüntüsü.

Eşdeğer WIQL söz dizimi gösterildiği gibidir.

SELECT
    [System.Id],
    [System.WorkItemType],
    [System.Title],
    [System.AssignedTo],
    [System.State]
FROM workitemLinks
WHERE
    (
        [Source].[System.TeamProject] = @project
        AND [Source].[System.WorkItemType] <> ''
        AND [Source].[System.State] <> ''
    )
    AND (
        [System.Links.LinkType] = 'System.LinkTypes.Dependency-Reverse'
        OR [System.Links.LinkType] = 'System.LinkTypes.Related-Forward'
        OR [System.Links.LinkType] = 'System.LinkTypes.Dependency-Forward'
    )
    AND (
        [Target].[System.TeamProject] = @project
        AND [Target].[System.WorkItemType] <> ''
        AND [Target].[System.ChangedDate] >= @today - 60
    )
ORDER BY [System.Id]
MODE (MustContain)

Diğer sorgu örnekleri

Aşağıdaki tipik WIQL sorgu örneği, alanlar için başvuru adlarını kullanır. Sorgu, Priority=1 ile iş öğelerini (iş öğesi türü belirtilmedi) seçer. Sorgu, dönüş kümesinin kimliğini ve Başlığını sütun olarak döndürür. Sonuçlar, kimliğine göre artan düzende sıralanır.

SELECT
    [System.Id],
    [System.Title],
    [System.State],
    [System.IterationPath]
FROM workitems
WHERE
    [System.TeamProject] = @project
    AND [Microsoft.VSTS.Common.Priority] <> ''
ORDER BY [System.Id]

Tarih-saat düzeni

Tarih-saat desenini iki desenden birine göre belirtirsiniz:

  • Tarih Deseni ve Saat Deseni biçimi, kullanıcı tercihleriniz olan Saat ve Yerel Ayar'dan gelir
  • UTC tarafından belirtilen ve bu deseni izleyen desen (tarih-saate Z eklenerek).

AND [System.ChangedDate] >= '1/1/2019 00:00:00Z'

Örnek yan tümceler

Aşağıdaki örnek deyimler belirli niteleme yan tümcelerini gösterir.

Yan tümce

Örnek

AND

SELECT [System.Id], [System.Title]
FROM WorkItems
WHERE [System.TeamProject] = @project
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'

OR

SELECT [System.Id], [System.Title] 
FROM WorkItems 
WHERE [System.TeamProject] = @project 
AND ( [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
OR [System.AssignedTo] = ''Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>' )

NOT

SELECT [System.Id], [System.Title] 
FROM WorkItems 
WHERE [System.TeamProject] = @project 
AND [System.AssignedTo] EVER 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
AND [System.AssignedTo] NOT CONTAINS 'Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>'

EVER

SELECT [System.Id], [System.Title] 
FROM WorkItems 
WHERE [System.TeamProject] = @project 
AND [System.AssignedTo] EVER 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'

UNDER

SELECT [System.Id], [System.Title] 
FROM WorkItems 
WHERE [System.TeamProject] = @project 
AND [System.AssignedTo] EVER 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
AND [System.AreaPath] UNDER 'Agile1\Area 0'

ORDER BY

SELECT [System.Id], [System.Title] 
FROM WorkItems 
WHERE [System.TeamProject] = @project 
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
ORDER BY [System.Id] [asc | desc]

ASOF (Zaman filtresi)

SELECT [System.Title] 
FROM workitems 
WHERE [System.IterationPath] = 'MyProject\Beta' 
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>' 
ASOF '3/16/19 12:30'

Dize ve Düz Metin

Bir dize veya düz metin alanıyla karşılaştırmada tırnak dizesi değişmez değerleri (tek veya çift tırnak desteklenir). Dize değişmez değerleri tüm Unicode karakterlerini destekler.

WHERE [Custom.Blocking] = 'Not Blocking'
WHERE [Custom.Blocking] <> 'Blocked'

Alan değerinin herhangi bir yerinde alt dize aramak için contains işlecini kullanabilirsiniz.

WHERE [System.Description] contains 'WIQL' 

Alan ve Yineleme (TreePath)

Alan ve Yineleme Yolu alanları için işlecini kullanabilirsiniz UNDER . işleci UNDER , bir değerin belirli bir sınıflandırma düğümünün alt ağacı içinde olup olmadığını değerlendirir. Örneğin, Alan Yolu 'MyProject\Server\Yönetici istration', 'MyProject\Server\Yönetici istration\Feature 1', 'MyProject\Server\Yönetici istration\Feature 2\SubFeature 5' veya alt ağaç içindeki başka bir düğümse aşağıdaki ifade true olarak değerlendirilir.

WHERE [System.AreaPath] UNDER 'MyProject\Server\Administration'

Değiştiriciler ve özel işleçler

Sorgu ifadesinde bazı değiştiricileri ve özel işleçleri kullanabilirsiniz.

Bir alan değerinin IN herhangi bir değer kümesine eşit olup olmadığını değerlendirmek için işlecini kullanın. Bu işleç Dize, Tamsayı, Çift ve DateTime alan türleri için desteklenir. Anlamsal eşdeğeriyle birlikte aşağıdaki örne bakın.

WHERE
    [System.TeamProject] = @project
    AND [System.CreatedBy] IN ('Jamal Hartnett <fabrikamfiber4@hotmail.com>', 'Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>', 'Christie Church <fabrikamfiber1@hotmail.com>')

or

WHERE
    [System.TeamProject] = @project
    AND (
        [System.CreatedBy] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
        OR [System.CreatedBy] = 'Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>'
        OR [System.CreatedBy] = 'Christie Church <fabrikamfiber1@hotmail.com>'
    )

İşleci EVER , iş öğelerinin tüm geçmiş düzeltmeleri boyunca bir alan değerinin belirli bir değere eşit olup olmadığını veya belirli bir değere eşit olup olmadığını değerlendirmek için kullanılır. Dize, Tamsayı, Çift ve DateTime alan türleri bu işleci destekler. İşleç için EVER alternatif söz dizimleri vardır. Örneğin, aşağıdaki kod parçacıkları tüm iş öğelerinin Jamal, Raise veya Christie'ye atanıp atanmadığını sorgular.

WHERE
    [System.TeamProject] = @project
    AND (
        EVER [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
        OR EVER [System.AssignedTo] = 'Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>'
        OR EVER [System.AssignedTo] = 'Christie Church <fabrikamfiber1@hotmail.com>'
    )