Tracのワークフローをチケットタイプで分岐する

かぬさんのtwitterでの呟きで知りました。

そうかAdvanceWorkflowのtriage使えばTicketのtypeで分岐できるのか

http://twitter.com/kanu_/status/1516016169

ほほーそんな機能があったのか!!さっそく試してみました。

AdvancedTicketWorkflowPluginをインストールして、trac.iniを以下のように変更。

[ticket]
workflow = ConfigurableTicketWorkflow,TicketWorkflowOpTriage
  • [ticket-workflow]セクションを下記のように変更。
    • 今回は、チケットをacceptした際に、チケットタイプがdefectの場合はdefect_work->testing->closedというフローになるように分岐させてみた。
    • その他のタイプ(task,enhancement)はデフォルト通りにacceptedに遷移するようにした。
[ticket-workflow]
accept = new,assigned,accepted,reopened -> *
accept.operations = set_owner_to_self,triage
accept.triage_field = type
accept.triage_split = defect->defect_work,task->accepted,enhancement->accepted
accept.permissions = TICKET_MODIFY

test_start = defect_work -> testing
test_start.operations = set_owner_to_self
test_start.permissions = TICKET_MODIFY

pass = testing -> closed
pass.operations = set_resolution
pass.set_resolution = fixed
pass.permissions = TICKET_MODIFY

設定のポイントは以下

  • 遷移先を*とする(type別に設定するためここでは設定しない)
  • operationsにtriageを加える
  • accept.triage_field = type と設定(type以外に任意のフィールドを指定可能っぽい)
  • accept.triage_splitで、typeごとの遷移先ステータスを設定する。今回の場合は、defectだけ特別扱いして、defect->defect_workとしている。

これで動かしてみると・・・確かに分岐しました。

早速業務のTracにも入れて活用してみるつもり。機能追加のチケットにだけ、テスト完了したのかどうか分かるようにワークフローをカスタマイズしたかったところなので。

なお、AdvancedTicketWorkflowPluginには他にも色々機能がある。Advanced Ticket Workflow Plugin: 気の向くままに・・・で紹介されている、xrefも便利そうだよ。