很多知名软件都会发明个自己的 SQL like 搜索语言,比如 ES 的 DSL、Splunk 的 SPL,Jira 也有 JQL – Jira Query Language。

类似于 Object 在 Java 黑话体系里的地位,Issue 在敏捷的黑话体系里占据了核心位置。Issue 具体又可以分为这么几个家伙:Epic、Story、Feature、Task、Subtask、Bug、Improvement,对应中文翻译如下:

来自博主的吐槽:起手就是一个【史诗】,一股浓浓的中二西幻风😂。

关于史诗如何拆解,敏捷怎么玩,鲍勃大叔最近写了一本书,可以拿来学习学习。

今天主要想给大家翻译翻译 JQL 里的实用技能——针对 Issue 的高级搜索,下面先来看一幅官方盗图。

上图说明,简单搜索包括三个要素:fieldoperator、value,再复杂点也就是叠加几个搜索条件,加上 keywordfunction 。要写高级搜索的话,必须先把上面几个概念整明白。直接搬运官方列表中个人认为使用频率较高的内容:

Field:project(项目)、component(模块)、assignee(经办人)、priority(优先级)、labels(标签)、status(状态)、resolution(解决方案)、resolved(解决时间)、creator(创建人)、description(描述)、created(创建时间)、due(到期日期)、reporter(报告人)、comment(评论)、sprint(冲刺)。

Operator:=(不能用于 text 字段)、!=(如果一个 field 连值都没有则匹配不上,不能用于 text 字段)、>(可比较数字、日期、优先级)、>=( 可比较数字、日期、优先级 )、<( 可比较数字、日期、优先级 )、<=( 可比较数字、日期、优先级 )、~(包含)、!~(不包含)、IS(值为空,取 NULL/EMPTY)、IS NOT(值不为空,取 NULL/EMPTY)、WAS(有过某个值)、WAS NOT( 没有过某个值 )、WAS IN( 有过某几个值之一 )、WAS NOT IN( 没有过某几个值中任何一个 )、IN(当前值为某几个值之一)、NOT IN( 当前值不为某几个值中任何一个 )、CHANGED(发生过变化)。

Keyword:AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)、EMPTY(字段没有值)、NULL( 字段没有值 )、ORDER BY(按某字段排序,DESC/ASC)。

Function:currentUser()(返回当前登录用户)、endOfDay()(返回日终时间)、endOfWeek()(返回周终时间)、endOfMonth()(返回月终时间)、endOfYear()(返回年终时间)、futureSprints()(返回还没开始的 sprint)、myApproval()(返回我作为审批人的 Issue)、myPending()(返回等待我审批的 Issue)、now()(返回当前时间)、openSprints()(返回正在进行中的 sprint)、pending()(返回等待审批的 Issue)、startOfDay()(返回日初时间)、 startOfWeek()(返回周初时间)、 startOfMonth()(返回月初时间)、 startOfYear()(返回年初时间)。

下面就可以写一些条件组合了,假设我们有一个名为 Test 的项目

1)当前项目的所有未解决 Issue 且按优先级倒排:project = Test AND resolution = Unresolved ORDER BY priority DESC

2)看看老大张麻子现在还有哪些未解决的 Issue: project = Test AND resolution = Unresolved AND assignee = 张麻子 ORDER BY priority DESC

3)昨天到今天又新建了多少 Issue: project = Test AND created >= startOfDay(-1) ORDER BY priority DESC

4)看看消息中间件通信模块今天有哪些 Issue 到期了: project = Test AND due = endOfDay() AND component = 消息中间件通信模块 ORDER BY priority DESC

5)我的待办任务: project = Test AND resolution = Unresolved AND assignee = currentUser() ORDER BY priority DESC

… 按需组合,自己玩吧


0 条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注