読者です 読者をやめる 読者になる 読者になる

Natural Software

KinectなどのDepthセンサーを中心に活動しています

ワークフロー機能のカスタマイズ方法

Trac

Trac Lightning 2.0.0 の目玉機能である、ワークフロー機能のカスタマイズ方法を Oかもと さんより教えていただいたので早速試してみた。


実は Trac Lightning の Wiki に変更方法が書かれていたオチ^^;
http://localhost/trac/SampleProject/wiki/TracWorkflow
ここに書かれているテストフェーズの追加と遷移の制限を追加してみた。


変更前と変更後のフローはこんなカンジ(可視化方法はこちらを参照)。

変更方法

http://localhost/trac/SampleProject/wiki/TracWorkflow
ここの「例: ワークフローにテストを追加する」を見ながら試行錯誤すれば大体わかると思う。
基本的には trac.ini (SampleProject なら C:\TracLight\projects\trac\SampleProject\conf ) の [ticket-workflow] セクションをいじればOK。


この例でいえば、[ticket-workflow] セクションの一番下に↓を追加する

testing = new,accepted,needs_work -> testing
testing.name = Submit to reporter for testing
testing.permissions = TICKET_MODIFY

reject = testing -> needs_work
reject.name = Failed testing, return to developer

pass = testing -> closed
pass.name = Passes Testing
pass.operations = set_resolution
pass.set_resolution = fixed


わかりやすく pass の部分を例にとってみると基本、下の2つがわかっていれば問題ない。

  1. pass = testing -> closed で testing 状態から closed 状態への遷移を pass と名づける
  2. pass.name で状態遷移の名前をつける

実例

こんなカンジでいじってみたのがこれ(最初に図示した変更後のフロー)

accept = new,assigned,accepted,reopened -> accepted
accept.name = 着手する
accept.operations = set_owner_to_self
accept.permissions = TICKET_MODIFY

leave = * -> *
leave.default = 1
leave.name = 変更しない
leave.operations = leave_status

reassign = new,assigned,accepted,reopened -> assigned
reassign.name = 担当者変更
reassign.operations = set_owner
reassign.permissions = TICKET_MODIFY

reopen = closed -> reopened
reopen.name = 差し戻す
reopen.operations = del_resolution
reopen.permissions = TICKET_CREATE

testing = accepted,reopened,needs_work -> testing
testing.name = テスト開始
testing.permissions = TICKET_MODIFY

reject = testing -> needs_work
reject.name = テスト失敗

pass = testing -> closed
pass.name = テスト合格
pass.operations = set_resolution
pass.set_resolution = fixed


このフローだと

  • new(新規) からは accepted(着手) または assigned(担当変更) のみ可能で直接 closed(完了) には遷移できない

  • accepted(着手) から testing(テスト) へ遷移(accepted から accepted への遷移は消し忘れなので多めにみて^^;)

  • testing(テスト) が OK であれば初めて closed(完了) に遷移できる

といった動作になる


本当に柔軟にできるのでとてもおもしろい。
自社のフローにあわせることも簡単にできるのではないかな。
しかも可視化もできるので、説明も簡単にできそう。


これは、確かに目玉機能だね:)