自社ではRedmineで基本的にタスク管理をしておりまして、チケット作成に手当がついたりします。
Redmine単体でもいろいろな機能があるのですが、
- 今月の作成したチケットと完了したチケットを手当として金額換算した場合の計算をしたい
- 月ごとのチケットを自動で作成したい
みたいなニーズがあり、APIを調べることになりました。
RedmineAPIのpom
いろいろなバージョンがあるみたいですね。
あまり情報がないんですが、自分が使ったのは下記のライブラリです。
1 2 3 4 5 |
<dependency> <groupId>com.taskadapter</groupId> <artifactId>redmine-java-api</artifactId> <version>2.4.0</version> </dependency> |
実際のソース
チケットの取得
一番簡単なのは欲しいチケットのクエリを作ってしまって、それを一括で取得するのが一番簡単です。下記がそのソースです。
1 2 3 4 5 6 7 8 |
RedmineManager redmineManager = RedmineManagerFactory.createWithApiKey("http://hogehoge.com/redmine", apiKey); List<Issue> ticketList = new ArrayList<>(); try { ticketList = redmineManager.getIssueManager().getIssues(projectName, projectId); } catch (Exception ex) { Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex); } |
ちなみにapiKeyの取得の仕方ですが、
- redmineトップページで管理→設定→認証「RestによるWEBサービスを有効にする」にチェックをいれる
- redmineのURLがhttp://hogehoge.com/redmineだったらhttp://hogehoge.com/redmine/my/accountにアクセス
- 右下のAPIアクセスキーの下の「表示」をクリック
すれば見れます。
projectNameはプロジェクトの識別子(プロジェクトを選んだ時にURLで英語になる部分です。)
projectIdはRedmineが格納されているDBなどを見るとわかります。
個別のチケットの情報ですが、上記のソースのようにリストでとってIssueのオブジェクトからゲッターで取り出せばいけます。
結構単純な構成だったので何とかなります。
が、実はAPIが貧弱だったので(爆)、実は結局、直でRedmineを格納しているDBを見に行きました。
新規作成
こっちは直でDBに入れるのが怖いので、APIを使いました。
ソースもすごく単純で下記の要領でOKです。
1 2 3 4 5 6 7 8 9 |
RedmineManager redmineManager = RedmineManagerFactory.createWithApiKey("http://hogehoge.com/redmine", apiKey); IssueManager issueMgr = redmineManager.getIssueManager(); Issue issue = IssueFactory.create(null); Project project = ProjectFactory.create(projectId); issue.setProject(project); issue.setSubject("タイトル"); issue.setDescription("記述"); Issue newIssue = issueMgr.createIssue(issue); issueMgr.update(newIssue); |
更新も上記のような要領でいけると思いますが、試していないので確証はないです・・・
とりあえずはこの2つで何とかなってるんで理解が進んだらまた書きます。
参考リンク
http://www.r-labs.org/projects/r-labs/wiki/Redmine_REST_API
https://github.com/taskadapter/redmine-java-api