Trac 0.11 ワークフロー の設定

オフショアで開発、もしくは遠隔地での開発の場合のworkflow変更しました。

どんなときにチケットが発行されるかという視点からチケットのフローを考えると以下の4点が挙げられます。チケット本来の目的はバグがあった時の対応になるのですが、もっとずっと柔軟にチケットを使うことで作業の進捗がよく見えるようになります。

  1. バグがあった時(チケット本来の目的)
  2. タスクとして作業を依頼する場合(こういうドキュメントを作ってとか)
  3. 仕様の変更ををする場合
  4. 仕様の質問をする場合

1から3は委託者側からのチケット、4は受託社側からのチケットになります。僕の場合で言うと1から3は日本の会社、4は中国の会社です。この作業全般をチケットとして管理するようにしました。

この4つを実現するフローを書くと

  1. new:新規
    新規でチケットを起こします。報告者はチケットを起こした人。担当者は未決定になります。
  2. assigned:担当者変更
    担当者を決定します。未決定だった担当者がここではいります。中国のチームがだれを担当にするかを決定します。たいてい今までの人が担当者になります。書き忘れていましたがチケットは大きく書かないこと。作業ごとに小さなタスクに分解して書かないと、作業の進捗が見えるようにはなりません。
  3. accepted:着手/再着手する
    担当者が決まって作業開始します。ほかのさまざまなステータスからの遷移が一番多いところです。
  4. veryfying:確認する
    チケットがわからない時は確認をします。acceptedとveriyfyingの間のステータスをチケットが何回か移動することで仕様の祖語がなくなります。あとで検索もできるので便利です。
  5. fortest:レビュー依頼する
    テストまで含んだ作業が終わったら、中国側でfortestステータスに変更します。日本側にレビュー待ちだということを伝えるステータスです。単純なステータスなのでメールで依頼を受けてもいいのですが、これを作っておけば、日本側のレビューの作業が一覧できます。日本側はこのステータスを見つけたら、次のreviewingにステータスを変更します。
  6. reviewing:レビューする
    日本側できちんと動くのかテストします。本当はこのステータスなくなっちゃえばいいんだけど、受け入れ検査というISO上の手続きもあるし、まだそこまで品質高くはないし・・・。でもここは日本側で間接的に改善可能。なぜならチケットを書く品質に一番大きく影響されるからです。チケットの品質が悪ければ、veryfyingだって増えるしね。
  7. closed:解決にする
    おしまいのステータスです。
  8. reopened:差し戻す
    おしまいにしたものを再度オープンするステータスです。このステータスを使うことはありません。再修正には新しいチケットを使うほうが良いと判断してるためです。ですが一応残してあります。だれかが間違ってクローズにしちゃったときに使うのかな。

今までのステータスは
・new
・assigned
・closed
・reopened
の4つでした。さまざまな開発拠点で開発を進めているとこれだけではステータスが足りないので、苦肉の策としてassignedステータスの中のキーワードを流用して
・修正中
・テスト待ち
といった管理をしていたのですが、クエリで修正中やテスト待ちを表示できないのでとても不便でした。運用ルールも分かりにくいしね。Trac0.11素敵です。

ワークフローを図にするとこうなります。この方がずっとわかりやすいですね。

設定ファイルは以下です。

[ticket-workflow]
accept = new,assigned,accepted,verifying,reopened,reviewing -> 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,reviewing -> assigned
reassign.name = 担当者変更
reassign.operations = set_owner
reassign.permissions = TICKET_MODIFY
verify = accepted,verifying -> verifying
verify.name = 確認する
verify.operations = leave_status
verify.permissions = TICKET_MODIFY
forreview = accepted -> forreview
forreview.name = レビュー依頼する
forreview.operations = leave_status
forreview.permissions = TICKET_MODIFY
review = accepted,forreview -> reviewing
review.name = レビューする
review.operations = del_owner
review.permissions = TICKET_MODIFY
resolve = reviewing -> closed
resolve.name = 解決にする
resolve.operations = set_resolution
resolve.permissions = TICKET_MODIFY
reopen = closed -> reopened
reopen.name = 差し戻す
reopen.operations = del_resolution
reopen.permissions = TICKET_CREATE