はじめに
Confluenceの便利な機能のひとつにRemote APIがあります。この機能を利用することによってさまざまなウェブサイトにConfluenceのコンテンツを簡単にマッシュアップすることが可能になります。今回はRemote APIの使用方法をConfluenceのページ内でFireFox + FireBugs + jQueryを利用して説明します。Firefox, Firebugsはブラウザ内でRemote APIの実行内容を確認する為に使います。まだ、お持ちでない方は下記のサイトからインストールしてください。jQueryは有名なJavaScriptライブラリの一つで、Remote APIの呼び出し制御を実行する為に利用します。Confluenceページ内では既に利用可能となっているので別途入手する必要はありません。
Confluenceの設定確認
まずはRemote APIを使用できるように、以下の内容をConfluenceの「管理コンソール」で確認してください。
- 「管理コンソール」→「一般設定」→「機能設定」→「リモート API (XML-RPC & SOAP)」がオンになっている。
- 「管理コンソール」→「一般設定」→「セキュリティーとプライバシー」→「リモート API への匿名アクセス」がオンになっている。
JavaScriptによるRemote API の利用
ConfluenceのRemote APIでは、XML-RPC , SOAPの利用が提供されています。今回はXML-RPC形式とします。Confluenceのページ情報を取得する為のRemote API と、jQueryのajax関数を利用したソースコードを以下に示します。
| ページ情報の取得API Page getPage(String token, String pageId) - returns a single Page
|
var xml = []; xml.push('<?xml version="1.0"?>'); xml.push('<methodCall>'); xml.push('<methodName>confluence1.getPage</methodName>'); xml.push('<params>'); xml.push('<param><value><string></string></value></param>'); xml.push('<param><value><string>5537965</string></value></param>'); xml.push('</params>'); xml.push('</methodCall>'); var response = jQuery.ajax({ url: 'https://www.ricksoft.jp/rscf/rpc/xmlrpc', type: "POST", dataType: "xml", contentType: 'text/xml', async: false, processData: false, data: xml.join('') }).responseXML; jQuery(response).find('member').each(function(){ console.log('name:'+jQuery(this).find('name').text()); console.log('value:'+jQuery(this).find('value').text()); });
ブラウザで確認する
以下のように上記のソースコードをFirebugsのコンソールに貼り付けて実行してみます。FirebugsのコンソールにRemote APIで取得したページ情報がログ出力されていることが確認できます。ここではコンテンツの内容がWiki表記となっていますが、Remote APIのrenderContentを利用することによってHTML表記での取得も可能となります。あとは取得した情報をHTMLに挿入することによってConfluenceの情報をマッシュアップが可能となります。
Firefox + Firebugsでの実行画面
<?xml version="1.0" encoding="UTF-8"?> <methodResponse> <params> <param> <value> <struct> <member> <name>id</name> <value>5537965</value> </member> <member> <name>current</name> <value>true</value> </member> <member> <name>content</name> <value> {section} {column} {panel:title=JIRA よくある質問} {contentbylabel:space=@self\|labels=jira_faq\|showLabels=false} {panel}{column} {column} {panel:title=Confluence よくある質問} {contentbylabel:space=@self\|labels=confluence_faq\|showLabels=false} {panel}{column} {section} </value> </member> <member> <name>title</name> <value>FAQ(よくある質問)</value> </member> <member> <name>version</name> <value>4</value> </member> <member> <name>modifier</name> <value>ohnuki</value> </member> <member> <name>url</name> <value>https://www.ricksoft.jp/rscf/pages/viewpage.action?pageId=5537965</value> </member> <member> <name>homePage</name> <value>false</value> </member> <member> <name>creator</name> <value>ohnuki</value> </member> <member> <name>contentStatus</name> <value>current</value> </member> <member> <name>modified</name> <value> <dateTime.iso8601>20090928T18:01:26</dateTime.iso8601> </value> </member> <member> <name>created</name> <value> <dateTime.iso8601>20090928T17:24:00</dateTime.iso8601> </value> </member> <member> <name>space</name> <value>RSHP</value> </member> <member> <name>parentId</name> <value>5537960</value> </member> <member> <name>permissions</name> <value>0</value> </member> </struct> </value> </param> </params> </methodResponse>
まとめ
ここではJavaScriptによるConfluence Remote APIを利用がいかに簡単であるか説明しました。サンプルではConfluenceのページ内からの利用方法を説明しましたが、同一ドメインに存在するウェブサイトからでも、上記のJavaScriptでConfluence Remote APIを利用することができます。
コメント (3)
09/10/09
樋口 晃 の発言 :
とても面白いプログラムなので、活用させて頂きたいと思います。 jQueryを利用したソースコードには、 xml という変数が2回定義していあるのですが、これは...とても面白いプログラムなので、活用させて頂きたいと思います。
jQueryを利用したソースコードには、 xml という変数が2回定義していあるのですが、これは正しいのでしょうか?
09/10/09
熊井 亮輔 の発言 :
指摘ありがとうございます。 正しくないです! 動作的には問題ないのですが、変数が上書きされて実行されています。 修正します!指摘ありがとうございます。
正しくないです!
動作的には問題ないのですが、変数が上書きされて実行されています。
修正します!
09/10/13
樋口 晃 の発言 :
修正ありがとうございました。やっぱこうですよね。納得です。修正ありがとうございました。やっぱこうですよね。納得です。