Queries — WIQL vs JQL
| Aspecto | Azure DevOps (WIQL) | Jira (JQL) |
|---|---|---|
| Sintaxe | SQL-like: SELECT ... FROM WorkItems WHERE ... | Clause-based: project = X AND status = Y ORDER BY ... |
| Tipos de query | Flat list, One-hop (links diretos), Tree (hierárquico) | Flat list (com funções de linked issue) |
| Funções | @Today, @Me, @Project, [Any] | now(), currentUser(), membersOf(), issueHistory(), linkedIssues(), 50+ funções |
| Operadores | =, <>, >, <, IN, UNDER, CONTAINS, EVER | =, !=, >, <, IN, NOT IN, ~ (contains), WAS, CHANGED, IS EMPTY e mais |
| Queries salvas | Shared Queries (estrutura de pastas) | Saved Filters (compartilháveis, com subscription) |
| Subscriptions | Alert rules (separadas) | Filter subscriptions (notificações por email built-in) |
| Dashboards | Widgets baseados em queries | Gadgets baseados em filters |
| Permissões | Permissões de pasta de queries | Permissões de compartilhamento de filters |
Exemplos de migração WIQL → JQL
| WIQL | JQL |
|---|---|
SELECT [System.Id] FROM WorkItems WHERE [System.WorkItemType] = 'Bug' AND [System.State] = 'Active' | issuetype = Bug AND status = "In Progress" |
WHERE [System.AreaPath] UNDER 'Project\Backend' | component = Backend (plano) ou labels in (area-backend) |
WHERE [System.IterationPath] UNDER 'Project\Release 1' | fixVersion = "Release 1" ou sprint in openSprints() |
WHERE [System.AssignedTo] = @Me | assignee = currentUser() |
WHERE [System.CreatedDate] >= @Today - 7 | created >= -7d |
WHERE [System.State] EVER 'Active' | status WAS "In Progress" |
JQL é significativamente mais poderoso
dica
JQL suporta operadores temporais (WAS, CHANGED), composição de funções, busca textual (~) e funções de relacionamento de issues. Porém, todas as queries WIQL existentes devem ser manualmente reescritas em JQL.