redmine のワークフロー設定でできることをまとめておきたい。 ワークフローを作りたい人が Administrator 権限を持っていないことがあると思うので、 どこの操作までを普通のユーザーができるのかまとめておく。
ワークフローを作るときに必要な操作と権限
先にどういうワークフローにしたいのかを決めておいたほうが設定しやすそう。 状態遷移図までかけるとやりやすい。 状態を issue ステータスで定義し、遷移を issue ワークフローステータス遷移と、ロールで制御すれば良さそう。
ワークフローのイメージができたら、ロール、トラッカー、ステータス、フローを洗い出して、 Adminstrator でしか追加できない項目をお願いすれば良い。
Administrator 以外でもできる操作を簡単に調べてみたら、 以下のような感じだった。
| 操作 | Administrator 以外でもできるか? |
|---|---|
| ユーザーを作る | x |
| プロジェクトを作る | o (Create Project 権限があれば) |
| ロールを追加する | x |
| プロジェクトにユーザーを追加 | o |
| プロジェクトでのユーザーのロールを設定 | o |
| issue トラッカーの追加 | x |
| issue ステータスの追加 | x |
| issue ワークフローステータス遷移の設定 | x |
| issue ワークフローステータスごとのパラメータ操作権限の設定 | x |
実際にやってみる
実際に何かのフローを考えてみたい。 許可をもらって作業をする場合のワークフローを試しに考えてみた。 作業をする前に責任者の許可をもらうこと、責任者の許可をもらう前に別の開発者に作業内容をレビューしてもらうのがルールとしてフローを設定してみる。
フローを列挙する
実際にどういうフローが考えられるか書いてみた。 状態遷移図書くのは面倒だったので適当に列挙した。
- 基本的なフロー
- None —(開発者)—> 新規 —(開発者)—> レビュー待ち —(起案者以外の開発者)—> 作業承認待ち —(管理者)—> 作業待ち —(開発者)—> 作業完了確認待ち —(管理者)—> 終了
- レビューで指摘があって、再レビュー
- レビュー待ち —(起案者以外の開発者)—> レビューフィードバック —(開発者)—> レビュー待ち
- 作業承認で質問があって再レビュー
- 作業承認待ち —(管理者)—> 作業承認フィードバック —(開発者)—> 作業承認待ち
- 作業承認の質問で手順を変えて再レビュー
- 作業承認フィードバック —(開発者)—> レビュー待ち
- 起案者、管理者のみいつでも却下できる
- すべて —(起案者の開発者)—> 却下
- すべて —(管理者)—> 却下
ステータスごとに設定したい制約を列挙する
- 制約
- レビュー待ちから作業待ちの間、管理者以外は description を変更できない
- ステータスを変更せずにコメントはいつでもできる
- 作業承認待ちまでには、開始日が設定されている
- 作業完了確認待ちまでには、終了日が設定されている
- トラッカーは変更できない
- 優先度を変更できるのは、管理者のみ
列挙したフローから項目を作る
列挙したフローから実際の項目を列挙する
- トラッカー
- 作業
- ロール
- 管理者
- 開発者
- ステータス
- 新規
- レビュー待ち
- 作業承認待ち
- 作業待ち
- 作業完了確認待ち
- 終了
- レビューフィードバック
- 作業承認フィードバック
- 却下
- ワークフロー
- (実際に対応表作るしかないきがする)
実際に設定してみる
トラッカーと、ロールと、ステータスを追加してワークフローを設定した。
開発者のワークフロー
フローの開発者が変更できるところを見ながら設定した。 本当に使うときには、間違えてステータスを変更した時に戻せるようにするとかそういう設定がほしいかもしれない。
作成者と、担当者には特別に権限もつけられるようだった。 ただ、作成者のみ権限を無効にすることはできなかった。 ペアレビュー必須などの制限をかけることは難しそうだった。

管理者のワークフロー
管理者のワークフローも、さっき作ったフロー一覧をみながら設定した。

開発者が持っているパラメーターの権限

やってみて思った事
- ワークフローの不備を見つけるのは大変そう。実際に運用してからある程度の期間は、カジュアルに設定を変えれるようにしないといけないかもしれない。
- ワークフローの設定は redmine 管理者にしか見えない。実際にフローを回す人たちはどのステータスに遷移すれば終了に迎えるのかが見えない。複雑になったときはワークフローを説明するようなドキュメントは別途あったほうがよい。
- グループ全員の合意が必要とか、指定の人数以上の合意が必要のようなルールは作れない。
- ワークフローを作るのは、プロジェクトの管理者だとおもう。なのでそのあたりの権限はプロジェクト管理者に与えられるようにするべきではないかとも思った。すでに議論されているようだった。