ほげにっき

hogedigoの日記

Trac ticket workflow

Trac0.11系からチケットステータスのフローをカスタマイズ出来る様になった。


そこで、開発中にレビュー依頼を出すフローを作ってみた。

ユースケース

事前条件:担当者がチケット作業中。statusはaccepted。
1.担当者がreview依頼を出す(アクション=toreview)。statusはreviewingに。

2.reviewerはreviewingになっているチケットをレビューjする(アクション=review)。statusはreviewedに。

3.担当者は再度acceptして作業再開。もしくはresolveしてチケット完了。

trac.ini

以下を設定

[ticket-workflow]
accept = new,assigned,accepted,reopened,reviewed -> accepted
accept.operations = set_owner_to_self
accept.permissions = TICKET_MODIFY
leave = * -> *
leave.default = 1
leave.operations = leave_status
reassign = new,assigned,accepted,reopened,reviewed -> assigned
reassign.operations = set_owner
reassign.permissions = TICKET_MODIFY
reopen = closed -> reopened
reopen.operations = del_resolution
reopen.permissions = TICKET_CREATE
resolve = new,assigned,accepted,reopened,reviewed -> closed
resolve.operations = set_resolution
resolve.permissions = TICKET_MODIFY
toreview = new,assigned,accepted,reopened -> reviewing
toreview.permissions = TICKET_MODIFY
review = reviewing -> reviewed
review.permissions = TICKET_MODIFY

今回はレビュー中でもticket作業は止めない方針の為、レビュー依頼の際に担当者を変更しない。もし変更したい場合は

toreview = new,assigned,accepted,reopened -> reviewing
toreview.operations = set_owner
toreview.permissions = TICKET_MODIFY
review = reviewing -> reviewed
review.operations = set_owner
review.permissions = TICKET_MODIFY

の様にoperationsを設定すればOK。アクション選択ラジオボタンに担当者選択フィールドが付加される。
operationsは他に以下を選択可能。

leave_status ステータスはそのまま
del_owner 担当者を空に
set_owner 担当者を設定
set_owner_to_self 担当者を自分自身に
del_resolution resolution(解決方法)を空に
set_resolutoin resolutionを設定する
reset_workflow ステータスをnewにリセット

set_owner、set_resolutionオペレーションを設定する場合、選択肢を指定できる。

test = new,assigned,accepted,reopened -> testing
test.operations = set_owner,set_resolution
test.set_owner = taro,jiro
test.set_resolution = invalid, fixed
test.permissions = TICKET_MODIFY

なかなか便利で楽しい。
でも懲りすぎると運用が面倒になるので気をつけよう。