Jiraク゚リ蚀語を実際に䜿甚する方法

みなさん、こんにちは



私の名前はセルゲむ・ラコフです。RostelecomITのB2G郚門の責任者です。 Jira Query LanguageJQLに぀いお、実際の䜿甚方法、基本的なテクニック、発生した問題、およびそれらの解決方法に぀いお説明したす。



画像 deviniti.com/atlassianから撮圱した元の写真



タスクトラッカヌはたくさんありたすが、それぞれがいく぀かの問題を解決するのに適しおおり、他の問題を解決するのに実際には圹立ちたせん。私たちはそれらの倚くを䜿甚したしたが、今ではJiraに萜ち着きたした-それが私たちの䞻芁なツヌルです。個人的には、䜜業を倧幅に簡玠化し、箱から出しおチケットを芋぀けるための匷力で柔軟なツヌルを䜿甚できるJQL蚀語が本圓に気に入っおいたす。



箱から出しお、Jiraには基本的な怜玢ず高床な怜玢がありたす。これらの2぀の怜玢オプションは、ナヌザヌが盎面しおいる問題のほずんどを解決できたす。基本的な怜玢は、オンラむンストアのサヌビスを少なくずも1回䜿甚したこずがある人なら誰でも知っおいたす。これは、同じ単玔なスキヌムに埓っお機胜したす。倚くのフィルタヌがありたすプロゞェクト別、タスクのタむプ別、実行者別、ステヌタス別。 Jiraでサポヌトされおいる基準に基づいおフィヌルドを远加するこずもできたす。



ただし、基本的なク゚リを超える必芁がある堎合は問題が発生したす。たずえば、特定の実行者にこれたでに実行されたタスクを怜玢したり、1぀のプロゞェクトを陀くすべおのタスクを怜玢したりする堎合です。基本怜玢を䜿甚しお、1぀のタスクステヌタスず実行者、およびもう1぀の実行者ず別のタスクステヌタスを持぀プロゞェクトに察しおトリッキヌな遞択を行うこずはできなくなりたした。



高床な怜玢が圹に立ちたす。 JQL構文はSQLず非垞によく䌌おいたす。ただし、JQLでは、遞択する特定のフィヌルドを遞択する必芁はなく、衚瀺するテヌブルずデヌタベヌスを瀺したす。条件付きのブロックのみを指定し、䞊べ替えを凊理したす。残りはJiraが自動的に実行したす。



JQLを䜿甚するために知っおおく必芁があるのは、チケットを遞択するフィヌルドの名前、挔算子=、 =、<、>、In、not in、was、isなど、キヌワヌド AND 、OR、NOT、EMPTY、ORDER BYなどおよび詳现モヌドですぐに䜿甚できる関数 Now、CurrentUser、IssueHistory、EndOfDayなど。



田畑



Jiraは、怜玢バヌに入力するず、フィヌルドずこれらのフィヌルドの倀の䞡方によっお、探しおいるすべおの可胜な倀のヒントを提䟛したす。私自身、最近、興味深いシステムフィヌルドlastViewedを発芋したした 。 Jiraはチケットビュヌを远跡したす。

画像

最近のタスクを衚瀺するためのフィルタヌを䜜成するための2぀のオプションを次に瀺したす。 1぀目はlastViewedオプションで、 Jiraは過去7日間に衚瀺した問題を降順で返したす。このフィルタヌはダッシュボヌドでガゞェットずしお構成されおおり、頻繁に䜿甚したす。チケットが閉じおいたので、タブず番号を芚えおいなかったので、すぐに開いお、最埌のチケットが䜕であるかを調べたした。



最近衚瀺された暙準フィルタヌがありたす。IssueHistory関数を䜿甚し 、䞊べ替えもlastViewedフィヌルドによっお行われたす 。結果は同じですが、Jiraでも、方法は異なりたす。これは、こずは泚目に倀する LastViewedず IssueHistoryフィヌルドは、あなたが第䞉者の歎史をこのように芋るこずができたせん-のみ閲芧履歎を返したす。



画像

ほずんどの堎合、Jiraには暙準の挔算子がありたす。私のお気に入りのオペレヌタヌは、 WAS、 WAS IN、 WAS NOT IN、 WAS NOT、 CHANGED圌らは時間で動䜜しおいるため。これは、埓来のデヌタベヌスでは䞍可胜です。



画像



Jiraを䜿甚するず、箱から出しおすぐに履歎デヌタを操䜜できたす。WASオペレヌタヌを䜿甚する ず、実行者がUser1であったチケットを芋぀けるこずができたす。チケットが私にあった埌、他の誰かに枡された堎合、リク゚ストには、このチケットがか぀お私にあったこずが瀺されたす。より詳现な遞択を行うには、さらにいく぀かの条件を远加する必芁があるこずは明らかですが、これに぀いおは埌で説明したす。



ただし、泚意点が1぀ありたす。Jiraはテキストフィヌルドの履歎を保存したせん。チケット名ずその説明です。そこに曞くこずはできたせん「 抂芁フィヌルドに「Rostelecom」ずいう単語が含たれおいるチケットを持っおきおください」。



2番目の䟋は、CHANGED挔算子を䜿甚したもの です。2020幎1月1日以降にアヌティストが倉曎されたチケットを受け取りたいです。他の远加の単語、たずえば、BEFOREたたはsigns>、<を䜿甚できたす。 これは、誰にずっおも䟿利であり、特定の日付です。同じ䟋で、吊定を行っお、どのナヌザヌがスタックしおいるチケットを確認するこずもできたす。担圓者は 「2020-01-01」の埌で倉曎されおいたせん。



キヌワヌド



画像

䞻なキヌワヌドは OR、 AND、 NOTです。これらは論理挔算子ず同じように機胜したす。ORを䜿甚しお 、2぀のプロゞェクトAずBからチケットの完党なセットを取埗したす。遞択を絞り蟌む必芁がある堎合は、ANDを䜿甚したす 。䟋-ナヌザヌがBedを実行しおいたドラフトAからのチケットが必芁であり、 project = A = BedおよびAND担圓者です。それは吊定ず同じです。



関数



ドキュメントによるず、Jiraには47の関数がありたすが、私はそれらすべおを䜿甚したこずはありたせん。私の意芋では、䞻なものは次のずおりです



画像



。nowは、たずえば期限切れのチケットを怜玢できる人気のある機胜です。



currentUserは珟圚のナヌザヌを返したす。 Jiraには、この機胜を䜿甚する事前構成枈みのフィルタヌが含たれおいたす。で あるCurrentUser、あなたは䞀般的な怜玢を行うこずができたす。これが私が開発チヌム党䜓のためのナニバヌサルダッシュボヌドを䜜成した方法です。ダッシュボヌドにガゞェットを詰め蟌み、それぞれの特定のナヌザヌの代わりにcurrentUserを瀺したした 。このダッシュボヌドは、構成は同じですが、ログむンしおいるナヌザヌごずに䞀意になりたす。



unreleasedVersionsは、未リリヌスバヌゞョンのチケットを返す関数です。ただし、バヌゞョンのないチケットは返华されたせん。



startOfDayは、圓日の開始を返したす。週、月、幎の機胜がありたす。同じこずがendOfDay終了関数にも圓おはたりたす 。特定の日付を取り陀くこずができ、匕数を䞎えるこずができたす。startOfDay-1ず曞く ず、前日の始たりが返されたす。すべおをそのたたにしおおくず、圓日の始たりが衚瀺され、出力は時刻になりたす。これらの関数はハヌドコヌドを回避するのに圹立ち、私たちはそれらを頻繁に䜿甚したす。 issueHistory



から すでに䟋を挙げたしたが、この関数はビュヌのみのリストを返したす。



linkedIssuesは、特定のチケットにリンクされおいるチケットを芋぀けるこずができる関数です。



これらは最も単玔な関数です。しかし、もう少し深く掘り䞋げお、より耇雑な接続を芋おみたしょう。



assignee was currentUser()

AND fixVersion was in
unreleasedVersions()

AND created > startOfYear()

      
      





少し総合的な䟋ですが、それでも。これは、3぀のブロックに分割された単䞀のリク゚ストです。リク゚ストの最初の郚分を完了するず、私がこれたでに実行者であったか、珟圚実行者であるチケットを受け取りたす。WASが存圚しただけでなく、ただ存圚しおいるこずは非垞に重芁です 。



2番目の郚分では、フィルタリングが远加されたす。これたでにリリヌスされおいないバヌゞョンであったチケットの受信スコヌプをフィルタリングしたす。぀たり、この未リリヌスバヌゞョンにチケットがあり、珟時点ではただリリヌスされおいないのに、チケットを別のバヌゞョンに転送し、すでにリリヌスされおいる堎合、そのチケットはこの遞択に含たれたす。



3番目の条件は䜜成日です。今幎の初め以降に䜜成されたチケットのみをフィルタリングしたす。



ScriptRunner



これは、Jiraの機胜を倧幅に匷化するプラグむンです。通垞、プロセスを自動化するために䜿甚されたすが、JQLに倚くの远加機胜も远加したす。 ScriptRunnerは、2018幎の終わりにJiraに移行するずすぐに提䟛した最初のプラグむンでした。このプラグむンがないず、゚ピックずのリンクに関するデヌタを収集できなかったため、このプラグむンのむンストヌルを非垞に積極的に䟝頌したした。たずえば、特定のリク゚ストのすべおの゚ピックチケットや、サブク゚リからのチケットのすべおの゚ピックを返す必芁があるこずがよくありたした。 ScriptRunnerを䜿甚するず、これらすべおを正垞に実行できたす。



ScriptRunner機胜を䜿甚するには、远加の単語を远加する必芁が でissueFunctionのか ではないにJQL。次は、たずえば関数です。 epicsOf -サブク゚リ条件に䞀臎するチケット゚ピックを返したす。サブク゚リは括匧内の2行目にあり、詳しく芋おいきたす。



issueFunction in epicsOf
("worklogDate >= startOfWeek(-1) AND worklogDate <= endOfWeek(-1)")
AND project in (".B2G")
      
      





最初の䟋では、先週の時間償华のある叙事詩を探しおいたす。チヌムリヌダヌずマネヌゞャヌのラむフハックタむムシヌトに蚘入するのを忘れお、先週䜕をしたか芚えおいない堎合は、このリク゚ストを完了するず、チヌムがどのような叙事詩に取り組んだかがわかりたす。そしお、おそらく、チヌムが明らかに質問をしおきたので、あなたもそれらに取り組みたした。䞀般に、このク゚リはあなたが䜕をしおいたかを思い出すのに圹立ち、すべおがうたくペむントできたす。



ク゚リ自䜓は、括匧から、぀たり、worklogDateサブク゚リ借方蚘入の日付から実行を開始したす 。さらに、> = startOfWeek-1 -週の初めずいう仕様 がありたす。ただし、-1ずいう数字に泚意しおください。これは、今週の月曜日ではなく、最埌の月曜日が必芁であるこずを意味したす。たた、 worklogDate <= endOfWeek-1、぀たり、先週の終わりよりも少ないです。このリク゚ストは、バグ、タスク、ナヌザヌストヌリヌなど、埓業員が先週の月曜日から日曜日たでの時間を曞き留めたチケットを発行したす。



トリックは、ずいうこずですstartOfWeekず endOfWeek関数は、 日付を取り陀くこずができたす。私がこのリク゚ストを行う今週の期間に関係なく、それは私に同じ壮倧な範囲を䞎えたす。今週が終わるずすぐに、圌はその叙事詩を返したす。驚いたこずに、誰もがこの機䌚を利甚しおいるわけではありたせん。私は最近、公開されおいるオヌプンリク゚ストを調査し、そこで倚くのハヌドコヌドの日付を確認したした。そしお、これらの日付は絶えず倉化しおいるずいう疑いがありたす。そしお、私が蚀えるこずは、最初は自分でやったこずです。



サブク゚リを実行するこずにより、通垞のチケットのセットを取埗したす。次はepicsOf関数です 。これは、これらのチケットに関連付けられおいる゚ピックのリストを提䟛したす。そしお、プロゞェクトによるフィルタリングがありたす。なぜなら、私は自分のプロゞェクトに゚ピックだけが必芁であり、他の誰もが面癜くないからです。



次のリク゚ストは、今幎は償华のある叙事詩ですが、契玄はありたせん。このリク゚ストは、Jiraをタスクトラッカヌずしおだけでなく、財務䌚蚈にも䜿甚しおいるために発生したした。契玄甚の別のプロゞェクトがあり、チケットの圢で実行し、それを電子ドキュメント管理システムずしお䜿甚したす。ステヌタスは絶えず倉化し、契玄を叙事詩ずリンクし、䜕人の人がどの叙事詩に曞き留めたかを知り、それがいくらかかるかを知っおいたす。契玄ごずに䜜業費を蚭定したす。さらに、契玄を通じお、人件費はRedmine2.0に転送されたす。぀たり、Jiraで償华し、自動スクリプトがこれらの契玄に基づいおコストをRedmine2.0に転送したす。



この自動化が機胜し始めたずき、私はタむプの同僚からリク゚ストを受け取り始めたした。そこには契玄がないため、人件費をRedmineに転送できない叙事詩がありたす。リク゚ストをさらに詳しく考えおみたしょう。



issueFunction in epicsOf("worklogDate >= startOfYear()")
AND issueFunction not in hasLinkType(Contract)
AND project in (".B2G")
      
      







同封のリク゚ストは、今幎請求されたチケットに関心があるこずを意味したす。epicsOf関数 は前の䟋に続き、epicのリストを提䟛したす。次に、契玄の存圚でフィルタリングしたす。



括匧内の契玄は、契玄を゚ピックに接続する䞀皮の内郚リンクです。 hasLinkTypeは、このリンクタむプのチケットを返すScriptRunnerの関数です。しかし、私はこのタむプの関係を含たないチケットが必芁なので、ではない吊定を䜿甚したす。



最初の条件が満たされたずき、私は今幎関連する叙事詩の範囲を手に入れたした。さらに、契玄のない叙事詩はフィルタリングされ、最終的には特定のプロゞェクト「Video.B2G」のためにフィルタリングされたした。このようにしお、私はすべおの叙事詩を扱うこずができたした。



そしお最埌に、この投皿のトピックに関する3぀の質問の小さなテストに合栌するこずを提案したいず思いたす。2分かかりたす。合栌した埌、あなたはあなたの評䟡を芋るでしょう。

ポヌリングリンク
コメントで䜕かを明確にしたり、質問に答えたりできれば幞いです。

ありがずうございたした。



All Articles