« RedmineをBPMツールとして使うアイデア | トップページ | Conwayの法則の拡張版~運用は組織に従う、ワークフローは組織に従う »

2015/07/15

Redmineのワークフロー管理機能に分岐やロジックを追加するプラグインredmine_custom_workflows

Redmineのワークフロー管理機能に分岐やロジックを追加するプラグインredmine_custom_workflowsを見つけたのでメモ。

【参考】
anteo/redmine_custom_workflows

Custom Workflows - Plugins - Redmine

RedmineをBPMツールとして使うアイデア: プログラマの思索

Redmineにワークフローエンジンとして必要な機能~ワークフローに組織マスタの情報を持たせる: プログラマの思索

akipiiさんはTwitterを使っています: "後で見る。RT @nmrmsys: Redmineのワークフロー関係のプラグインって、調べてみたら Custom Workflows plug-in って、条件分岐やロールも使えそうそうなので試しておきたい http://t.co/W41JecJcqT #benkyoenkai"

akipiiさんはTwitterを使っています: "ワークフローの複雑さとトレードオフかな。RT @nmrmsys: Webで使えるワークフローシステムってのは結構探したので Redmineでワークフローって選択肢は一瞬考えたけど、一般職まで展開するには UIの取っ付き辛さがネックになる結論だった気がする #benkyoenkai"

RedmineをBPMツールとして使うアイデアに書いたように、申請承認フローやBPMを実現するには、最低限の機能として、ワークフローを色々カスタマイズできる機能が必要。

上記のredmine_custom_workflowsプラグインを見ると、管理画面でWorkflow scriptsエリアに、Rubyスクリプトで分岐やロジックを直接書くことで、ワークフロー処理にフック処理を入れるみたいだ。
プラグインの画面はこんな感じ。

Redmine_custom_workflows_duration_d

Redmine_custom_workflows_duration_2

例えば、下記のようなスクリプトがサンプルとして登録されている。

(引用開始)
Set up a correlation between the start date, due date, done ratio and status of issues.

* If done ratio is changed to 100% and status is "In Process", status changes to "Resolved"
* If status is "New", "Resolved" or "Feedback" and done ratio is changed to value less than 100%, status changes to "In process"
* If status is changed to "In process" and start date is not set, then it sets to current date
* If status is changed to "Resolved" and end date is not set, then it set to due date

To use this script properly, turn off "Use current date as start date for new issues" option in the settings as this script already do it own way.

if @issue.done_ratio_changed? if @issue.done_ratio==100 && @issue.status_id==2 @issue.status_id=3 elsif [1,3,4].include?(@issue.status_id) && @issue.done_ratio<100 @issue.status_id=2 end end

if @issue.status_id_changed?
if @issue.status_id==2
@issue.start_date ||= Time.now
end
if @issue.status_id==3
@issue.done_ratio = 100
@issue.start_date ||= @issue.created_on
@issue.due_date ||= Time.now
end
end


(引用終了)

上記のフック処理では、例えば、進行中(ステータスID=2)かつ進捗率=100%の状態でチケット更新したら、解決ステータス(ステータスID=3)へ自動更新される。
また、解決ステータスで期日が空欄の状態でチケット更新したら、期日に今日日付へ自動更新される。

期日なしでチケット更新されると、ガントチャートにチケットが表示されないので、強制的に期日に日付を入れて自動更新されるフック処理があると良い時もある。
あるいは、終了ステータスへ更新する時に、進捗率も100%へ自動更新する処理を入れることもできるだろう。

なお、Redmine3.0.xでも、redmine_custom_workflowsは正常動作するみたい。

上記のRubyスクリプトを見る限り、トラッカーごとにワークフロー処理にフック処理を入れることは可能だろう。
例えば、トラッカーごとに、あるステータスでは分岐処理を入れたり、根回し・投票などの機能を入れたりすることも可能だろう。
つまり、ワークフロー処理をカスタマイズすることで、複雑な事務処理フローをRedmineで実現することは敷居がかなり低くなるに違いない。

Rubyを自由に操れる開発者がチームにいるならば、redmine_custom_workflowsプラグインにRubyスクリプトを挿入して実際に試してみてもいいかもしれない。

色々試してみたい。

|

« RedmineをBPMツールとして使うアイデア | トップページ | Conwayの法則の拡張版~運用は組織に従う、ワークフローは組織に従う »

Redmine」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« RedmineをBPMツールとして使うアイデア | トップページ | Conwayの法則の拡張版~運用は組織に従う、ワークフローは組織に従う »