tohokuaikiのチラシの裏

技術的ネタとか。

Reporting Pluginを使ってみる(2)

前回の続き。参考資料はこちらのドキュメント

このマクロを入力する際には、次の構造を理解しておくといい。

この見た目でConfluenceに入力することになる。

Confluence4のエディターで言うとこんな感じに見えることになる。

外枠の設定

レポートの表示方法には3つある

マクロ名 表示形式 HTMLタグ
{report-block} そのまま
{report-list} リスト
{report-table} 表形式

データリソースと、データビューの定義をこの枠の中に書き込んでいく。

データリソースの設定

データリソースには、以下のものが使える。*1

  1. space-reporter:スペース情報についてレポートを作りたいとき
  2. content-reporter:ページ情報についてレポートを作りたいとき
  3. user-reporter:ユーザー情報についてレポートを作りたいとき
  4. local-reporter:リソースを特定してレポートを作りたいとき

それぞれパラメータがあり、特定のスペースや特定のラベルがついている対象について絞込みをすることができる。このデータリソースによって次のデータビューで使えるデータが変わってくる。

なお、local-reporterはsourceというパラメータがあり、そのsourceの対象にスペースやページを取ることたり、sourceを指定しない場合はその外側でループしている1個1個のデータがデフォルトでデータ対象になる。

データビューの設定

このデータビューの設定が少々ややこしい。
イメージとしては、データリソースで与えられたものがループで提供されるのでそのデータの何のパラメータを表示させるかということになる。

たとえば、データリソースに「space-reporter」を選択し、全てのスペースを対象にレポートを作りたい場合はおのデータビューは全てのスペースの個数分だけ繰り返されて(ループされて)表示されることになる。

カラム設定

外枠設定に{report-list}と{report-block}の場合は、この設定は{report-body}を使うのみだが、{report-table}を選択した場合はカラム設定を行う為{report-column}をカラム数分だけ設定する。

外枠設定に{report-list}と{report-block}の場合

外枠設定に{repor-table}の場合

カラムの中に入れるデータ

これがキモになる。データを取り出すには{report-info}マクロを使う。このマクロのパラメータに「key」というのがあり、このkeyに表示させたいデータを入れる。
たとえば、space-reporterを使っている場合は

というように「space:name」を入れる。

このnameというのは他にもいろいろあり、スペースキーを表示させたい場合は、keyを入れる。
その一覧は、各データリソースごとに以下のページにまとめられている。
http://docs.servicerocket.com/display/REPORT/Suppliers+Reference


さらに、このデータは連携を入れることができ、例えば「あるスペースを作ったユーザーのEmail」という場合は

space:creator > user:email

というようにすることで、取得できる。これは、space:creatorがUserを返すので、今度はUserがどういったキーを持っているかを調べて使用することになる。

また、これが、List形式で返される場合・・・たとえば、「space:pages」というようにスペースの親ページを持たないページ一覧みたいな情報をとった場合、この中で入れ子にしてループを回すことができる。

{report-body}マクロの中に{report-body}マクロが入っていて、各スペースの親ページを持たないページ一覧を展開している。



metadataプラグインとの連携

実はこれがやりたかったのだ。どういったmetadataが定義されているかの一覧が欲しくてこのReportingプラグインをいじっていた。
結局Confluence3ではできたのだが、4ではできなかった。metadataプラグインがどうも中途半端に4に対応しているようだ。

metadataプラグインのこのページ
https://comalatech.jira.com/wiki/display/META/Metadata%20Supplier%20for%20Reporting%20Plugin
にある、「List all metadata」という項の

{report-table}{content-reporter:types=page,news|labels=+meta}{content-reporter}
{report-column:title=Page}{report-info:title|link=true}{report-column}
{report-column:title=Metadata count}{report-info:metadata: > size}{report-column}
{report-column:title=Metdata List}
{report-list}{local-reporter:metadata:}{local-reporter}
{report-body}{report-info:key}: {report-info:value}{report-body}
{report-list}
{report-column}
{report-table}

のマクロを実行させる。ポイントは、{local-reporter}のキーに「metadata:」を入れていること。これで各ページのmetadata情報を取ってくるようになっている。そして、このmetadataは、{report-info}により、キーにkeyを入れてキーを、valueを入れて値を取得できる。言葉にすると分かりにくいかもだけど。*2

また、{local-reporter}のキーにmetadata:を指定した{report-info}のキーにmetadataのキーを入れるとその値を取って来てくれる。これを使うことで、各スペースで同じmetadataキーに違う値を定義したときなどは一覧が出る*3

このキーを空にすると、全ての定義済みのmetadataの一覧を取って来てくれる・・・とあるのだが、これはページだけが対象のようで、space-metadataには対応して無いようだ・・・・これができないとあんまり・・・という気もする。

*1:この他にも、次のものがあるがまだ使ったことは無い。combining-reporter/expanding-reporter/grouping-reporter/user-group-reporter

*2:勝、ドキュメント

*3:あんまり利用シーンが浮かばないが