この記事について
Redmineでタスク管理しており、状況を可視化するためREST APIによる情報収集を検討しました。
可視化だけなら既存の便利なツールを使えば良いのですが、
勉強がてらJavaのライブラリであるRedmine Java APIを使ってみることにしました。
タスク管理に使えそうな項目の取得方法をメモ書きします。
Redmine API
チケット等、Redmineの各種情報はREST APIで取得することができ、
取得可能な項目、取得方法は redmine.org にまとめられています。
http://www.redmine.org/projects/redmine/wiki/Rest_api
wikiにはDatabaseModelも掲載されており、
「ライブラリで取得できるが、用途不明な項目」について調査する場合の参考情報となります。
https://www.redmine.org/projects/redmine/wiki/DatabaseModel
Redmine Java API
Redmine APIをJavaで扱うためのライブラリです。利用方法はgithubで確認出来ます。
https://github.com/taskadapter/redmine-java-api
以下、チケット情報(Issue)、更新履歴情報(Journal/JournalDetail)、作業工数(TimeEntry)について取得方法と取得可能な項目を記載します。
Issue
取得方法
IssueManager を使用すると、チケット情報を取得することが出来ます。
// 【URI】"http://ホスト名/redmine"
// 【ApiAccessKey】右記参照 http://redmine.jp/glossary/r/rest-api/
RedmineManager manager = RedmineManagerFactory.createWithApiKey("URI", "ApiAccessKey");
IssueManager issueManager = manager.getIssueManager();
Issue issue = issueManager.getIssueById(1);
取得可能な項目
利用しそうな項目に絞ります。
項目 | 内容 |
---|---|
ProjectName | プロジェクト |
Tracker | トラッカー |
Id | チケットNo |
StatusName | ステータス |
Subject | 題名 |
DueDate | 期日 |
CreatedOn | 作成日 |
UpdatedOn | 更新日 |
AuthorName | 作成者 |
AssigneeName | 担当者 |
EstimatedHours | 予定時間 |
Journal/JournalDetail
取得方法
更新履歴情報はIssueから取得可能です。
Issueを取得する際、Include.journalsをパラメータに含める必要があります。
※IssueManager#getIssuesで複数件取得する場合、Include.journalsを指定してもJournalは取得できませんでした。。
// Includeを指定して、更新履歴を含むチケット情報を取得
Issue issue = issueManager.getIssueById(1, Include.journals);
// チケットは更新回数分、Journalを持つ
for (Journal journal : issue.getJournals()) {
Integer issueId = journal.getId();
String userName = journal.getUser().getFullName();
Date createdOn = journal.getCreatedOn();
// チケットは複数項目を同時に更新できるため、1つのJournalは複数のJournalDetailを持つ
for (JournalDetail detail : journal.getDetails()) {
String name = detail.getName();
String oldValue = detail.getOldValue();
String newValue = detail.getNewValue();
取得可能な項目
利用しそうな項目に絞ります。
項目 | 内容 |
---|---|
Id | 更新対象のチケットNo |
User | 更新ユーザ情報 |
Name | 更新対象の項目名 |
OldValue | 更新前の値 |
NewValue | 更新後の値 |
TimeEntry
取得方法
Redmineには工数管理機能があり、活動内容毎に作業工数を記録することが出来ます。
http://blog.redmine.jp/articles/time-tracking/
作業工数を取得する場合はTimeEntryManager を使用します。
RedmineManager manager = RedmineManagerFactory.createWithApiKey("URI", "ApiAccessKey");
TimeEntryManager timeEntryManager = manager.getTimeEntryManager();
Issue issue = timeEntryManager.getTimeEntriesForIssue(1);
取得可能な項目
利用しそうな項目に絞ります。
項目 | 内容 |
---|---|
UserName | 作業者 |
ActivityName | 作業内容 |
Hours | 作業時間 |
CreatedOn | 登録日 |
出来そうなこと
以下の記事にあるように、様々な計測・分析を行うことが出来そうです。
https://qiita.com/kawahira/items/0196c315642f4a72458f
また、日毎に作業工数を集計することで実績の付け漏れを検知しやすくしたり、
予定工数合計に閾値を設け、メール等でアラートを送るのも良さそうだなと思いました。