OSLC サーバーにアクセスするための Firefox アドオンを作成する

OSLC (Open Services for Lifecycle Collaboration) サーバーにアクセスするための独自のクライアント・アプリケーションを作成することには、2 つの利点があります。1 つは余分なウィジェットを取り除けること、そしてもう 1 つは余分なステップを省けることです。この記事では、OSLC サーバーにアクセスするクライアント・アプリケーションを作成する上での課題と、Mozilla Firefox アドオンを作成して実装することにより、これらの課題に対処する方法を説明します。アドオンのサンプルは、この記事からダウンロードすることができます。

Ken Kumagai, Software Engineer, IBM

author photo熊谷賢 (theken) は、日本アイ・ビー・エムのスタッフ・ソフトウェア・エンジニアで、IBM Rational ClearCase チームで開発者として働いています。目下の関心事の 1 つは、ソフトウェア開発ツールのユーザビリティーを向上することです。余暇は、近所のスターバックスで読書を楽しんでいます。



2013年 1月 24日

必要以上に複雑なユーザー・インターフェースはユーザーを混乱させます

高いユーザビリティーを実現するには、ユーザー・インターフェースを単純なものにすることが重要です。このことは、アプリケーション・ライフサイクル管理 (ALM) ツールに当てはまります。ALM ツールは、開発者、チーム・リーダー、プロジェクト・マネージャー、製品所有者といったそれぞれの役割に応じたさまざまな使用ケースをサポートしなければなりません。そのため、次の 2 つの問題により、ALM ツールのユーザー・インターフェースは複雑なものになりがちです (図 1 を参照)。

  • 第一に、リソースのすべてのプロパティーをいつでも編集できるようにするために、ボタン、テキスト・フィールド、タブ、リンクなど、あまりにも多くのウィジェットが提供されます。けれども、ユーザーが一定の頻度でリソースのプロパティーを編集することはないため、これらのウィジェットのすべてが使用されるわけではありません。頻繁に使用されるウィジェットとまれにしか使用されないウィジェットが常に一緒に表示されると、ユーザーはすぐに混乱してしまいます。理想的には、ユーザーがプロパティーを編集するために必要となるウィジェットだけを表示するべきです。
  • 第二に、リソースのプロパティーを編集するためのウィジェットや、リソースを作成するためのウィジェットは通常、特定の Web ページと (Web ページを構成する) ビューに提供されます。ユーザーはリンクやタブを何度となくクリックして目的の場所 (Web ページやビューなど) に移動してからでないと、リソースのプロパティーを編集したり、リソースを作成したりすることができませんが、最も重要なアクションは、目的の場所に移動することではありません。理想的には、ユーザーは目的の場所に移動するための本質的ではないステップを踏まずに、リソースのプロパティーを編集したり、リソースを作成したりできるようにするべきです。
図 1. ALM ツールでの 2 つの問題
ALM ツールのクライアントに提供された多くの複雑なウィジェット

この記事では、OSLC (Open Services for Lifecycle Collaboration) をサポートする ALM ツールにおける上記の 2 つの問題を解決します。

OSLC では、ライフサイクル・ツールがデータ (変更要求やテスト・ケースなど) を共有する方法を標準化しており、REST (REpresentational State Transfer) を使用して統合目的でライフサイクル・ツール内のデータを関連付けます。これは、OSLC の優れた側面の 1 つです。

この記事の例では、標準的な方法を用いてユーザビリティーを向上させますが、統合を目的とはしていません。OSLC をサポートするサーバーでは、RESTful なサービスを使ってリソースの作成、読み取り、更新、削除を実行することができます。これはつまり、ユーザーはサーバーにバンドルされた UI を使用し続けるのではなく、これらの RESTful なサービスを選択して呼び出すことで、高いユーザビリティーを持つユーザー・インターフェースを作成できることを意味します。

この記事で提案する手法では、リソースのプロパティーを直接編集できるウィジェットと、リソースを直接作成できるウィジェットを用意します。次に、ウィジェットを組み合わせてユーザー・インターフェースを構成し、ユーザーがその組み合わせをカスタマイズできるようにします (図 2 を参照)。この手法により、前述の 2 つの問題は以下のように解決されます。

  • ユーザーは目的に応じて UI の組み合わせをカスタマイズして、不必要なウィジェットを減らすことができます。
  • ユーザーは、目的の場所に移動するなどといった本質的ではないステップを踏むことなく、ウィジェットの組み合わせを使用して直接リソースのプロパティーを編集したり、リソースを作成したりすることができます。
図 2. この記事で提案する手法が 2 つの問題を解決する仕組み
ALM ツールのクライアントに提供された必要最小限のウィジェット

Firefox アドオンとして作成されたサンプル・クライアント・アプリケーションは、以上のように 2 つの問題を解決します。この記事では以下の 4 つのセクションで、「FireOSLC」と名付けたこのアドオンを作成して実装する方法を解説します。

  • 必要な技術およびソフトウェア」では、FireOSLC を実装およびテストするために必要となるものを説明します。
  • アーキテクチャーの概要」では、FireOSLC Firefox アドオンの全体的なアーキテクチャーを説明します。
  • 設計の詳細」では、実装する FireOSLC について説明します。
  • 使用ケース」では、FireOSLC を使用して OSLC の CM (Change Management: 変更管理)、QM (Quality Management: 品質管理)、および RM (Requirements Management: 要件管理) リソースを作成し、読み取り、更新する方法を説明します。

必要な技術およびソフトウェア

この記事の「ダウンロード」セクションに、FireOSLC Firefox アドオンのサンプルが用意されています。記事の内容を短時間で理解するには、詳細を読む前に fireoslc.xpi をダウンロードして実行してください。

FireOSLC は Mozilla Firefox アドオンとして動作するため、必要となるソフトウェアは Firefox のみです。FireOSLC はローカル・ファイルを使用する場合にも、Firefox の about:config を使用する場合にも、プリインストールされた XPCOM (Cross-Platform Component Object Model) を呼び出します。したがって、Firefox バージョンに対応した XPCOM サポートが必要となります。この記事の例では、Firefox バージョン 15 を使用しています。

  • FireOSLC の実装に用いる技術は以下のとおりです。
  • XUL (XML User Interface Language)
  • JavaScript

Cygwin と Perl を使用して XPI (Cross-Platform Installation) FireOSLC パッケージを作成することもできます。

FireOSLC が正しく動作していることをテストするために、この例では Rational の CLM (Collaborative Lifecycle Management) ソリューションを使用します。このソリューションに含まれる ALM ツールは OSLC をサポートしています 。記事で説明する FireOSLC の使用ケースでは、OSLC リソースを作成し、読み取り、更新する方法を説明します。対象とするリソースは、IBM Rational Team Concert の CM (Change Management: 変更管理) リソース、Rational Quality Manager の QM (Quality Management: 品質管理) リソース、および Rational Requirements Composer の RM (Requirements Management: 要件管理) リソースです。FireOSLC のテストには、以下のデータを使用します。

  • Collaborative Lifecycle Management バージョン 3.0.1
    • サーバー: testhost.testdomain
    • ポート: 9443
  • アカウント
    • ユーザー名: tester
    • パスワード: testerx
  • ライフサイクル・プロジェクト
    • Rational Team Concert
      • プロジェクト名: TestProjectCM
      • プロセス: Scrum
    • Rational Quality Manager
      • プロジェクト名: TestProjectQM
      • プロセス: Quality Management デフォルト V3 プロセス
    • Rational Requirements Composer
      • プロジェクト名: TestProjectRM
      • プロセス: Rational Requirements Server テンプレート

アーキテクチャーの概要

図 3 に、FireOSLC アーキテクチャーの概要を示します。「Fire OSLC」というラベルが付いた一番大きい四角が、FireOSLC 全体を表します。この中に含まれる四角は、FireOSLC を構成する JavaScript パッケージです。各 JavaScript パッケージには、com.fireoslc という接頭辞が付いています。例えば、oslc_cmcom.fireoslc.oslc_cm の省略形です。右下の角がめくれた四角は、ユーザーが編集する必要のあるデータ・エンティティーを表します。矢印は、パッケージとデータ・エンティティーがどのようにやりとりするかを示しています。次のセクションで、このアーキテクチャーについて詳しく説明します。

図 3. FireOSLC アーキテクチャーの概要
FireOSLC の JavaScript パッケージとデータ・エンティティー

設計の詳細

FireOSLC を実装するステップは以下のとおりです (説明が後に続きます)。

  1. OSLC サービスの処理
  2. リソースの読み取り、更新、作成
  3. ユーザー・インターフェースの設計
  4. OSLC に定義されていないプロパティーへのアクセス
  5. Firefox でのプリファレンスの設定

OSLC サービスの処理

OSLC サーバーから情報を取得するには、まずユーザーが OSLC サーバーで認証される必要があります。auth パッケージはユーザー・アカウント情報を送信して、フォーム・ベース認証を要求します。

次に、既存のリソースを読み取ったり、新規リソースを作成したりする必要がある場合には、クエリー機能や作成ファクトリーにアクセスする必要があります。

OSLC サービスを処理するには、以下のステップに従います。

  1. ルート・サービスを使用して情報を要求し、サービス・プロバイダー・カタログの URL を抽出します。
  2. そのサービス・プロバイダー・カタログを使用して情報を要求し、サービス・プロバイダーの URL を抽出します。
  3. そのサービス・プロバイダーを使用して情報を要求し、以下の操作を行います。
    1. 既存のリソースを読み取るには、クエリー機能の URL を抽出します。
    2. 新規リソースを作成するには、作成ファクトリーの URL を抽出します。

sprovider パッケージは、ルート・サービス、サービス・プロバイダー・カタログ、およびサービス・プロバイダーの順に OSLC サービスを使用して情報を要求し、クエリー機能および作成ファクトリーにアクセスします。OSLC サービスの URL を、その前の OSLC サービスから返された情報から抽出するには、XPath を使用します。oslc_cm パッケージは、OSLC CM の OSLC サービスにアクセスするための XPath を提供します。これは、oslc_qm パッケージ (OSLC QM) と oslc_rm パッケージ (OSLC RM) でも同様です。

リソースの読み取り、更新、作成

OSLC サービスは、リソースの作成、読み取り、更新、削除といったアクションに HTTP を使用します。FireOSLC はリソースでの読み取り、更新、作成操作をサポートしますが、削除操作はサポートしていません。これは、OSLC サーバーでは、削除操作は他の操作ほどはサポートされていないためです。

OSLC サーバーで既存のリソースを選択するには、OSLC クエリーを使用することができます。読み取り操作の場合、FireOSLC は oslc.where クエリー・パラメーターを指定した HTTP GET メソッドによって一度に 1 つのリソースを取得します。更新操作の場合には、HTTP PUT メソッドを使用して、読み取り操作で取得したリソースをユーザーの入力で更新します。作成操作の場合には、FireOSLC は HTTP POST メソッドにより、ユーザーの入力を使用して新規リソースを作成します。consts パッケージは、OSLC で定義されたプロパティーを保持します。これらのプロパティーには、FireOSLC が読み取り操作、更新操作、作成操作を行うときにアクセスすることができます。

oslc_cm パッケージは、OSLC CM リソース (変更要求) に対する操作を行います。同様に、oslc_qm パッケージが行う操作の対象は OSLC QM リソース (テスト・プラン、テスト・ケース、テスト・スクリプト、テスト実行レコード、テスト結果) であり、oslc_rm パッケージが行う操作の対象は OSLC RM リソース (要件、要件のコレクション) です。

ユーザー・インターフェースの設計

FireOSLC のユーザー・インターフェースは、ui パッケージで XUL を使用して作成されます。このパッケージには、次の 6 つのペインが含まれています。この記事では、FireOSLC ユーザー・インターフェースの論理領域を「ペイン」という用語で表現します。

  1. Login (ログイン)
  2. OSLC settings (OSLC 設定)
  3. properties list (プロパティー・リスト)
  4. C(reate) R(ead) U(pdate) D (C (作成) R (読み取り) U (更新) D)
  5. Properties (プロパティー)
  6. Results (結果)

図 4 を見ると、以下の説明を理解するのに役立ちます。

Login (ログイン)
OSLC サーバーにログインするには、サーバー名とポート、ユーザー名、およびパスワードを入力します。ログインに成功すると、ステータスがログイン済みとして示されます。
 
OSLC settings (OSLC 設定)
OSLC アプリケーション・タイプ、サービス・プロバイダー、リソース・タイプを選択します。
 
properties list (プロパティー・リスト)
このペインは、図 3 に示されている「properties list (プロパティー・リスト)」に対応します。このリストのフォーマットは、プロパティーをコンマで連結したテキストです。プロパティー・リストには、リソースでの読み取り、更新、または作成の操作中にアクセスしたいプロパティーを名前空間と併せて入力する必要があります。

:
プロパティー・リストに指定されていないプロパティーには、操作中にアクセスすることはできません。
 
C(reate) R(ead) U(pdate) D (C (作成) R (読み取り) U (更新) D) および Properties (プロパティー)
「R|U」(読み取りまたは更新)、「C」(作成) のいずれかのラジオ・ボタンを選択します。

注:
FireOSLC で更新操作を行うには、読み取り操作が併せて必要になります。
  • R|U」ラジオ・ボタンを選択した場合、oslc.where クエリー・パラメーターのプロパティーを選択して、その値を入力します。FireOSLC がサポートしているクエリー・パラメーターには、dcterms:identifier、dcterms:title、dcterms:description の 3 つがあります。
  • R」ボタンをクリックすると、oslc.where クエリーの条件を満たす 1 つのリソースが OSLC サーバーから取得され、そのリソースのプロパティーが「Properties (プロパティー)」ペインに表示されます。oslc.where クエリーの条件を満たすリソースが複数ある場合には、いずれか 1 つのリソースがランダムに返されます。
  • R」ボタンをクリックした後に「Properties (プロパティー)」ペインに表示されるプロパティーの値は、テキスト・フィールドに新しい値を入力したり、ドロップダウン・メニュー・リストから項目を選択したりすることで変更することができます。変更を行ってから「U」ボタンをクリックすると、変更された値が OSLC サーバーに送信されて、リソースのプロパティーが更新されます。
  • C」ラジオ・ボタンを選択した場合は、「Properties (プロパティー)」ペインにプロパティーの値を入力して、「C」ボタンをクリックすると、プロパティーが OSLC サーバーに送信されて、新規リソースが作成されます。
Results (結果)
  • 読み取り、更新、作成操作が実行されると、ここに戻りコードと時刻が表示されます。
  • body (本文)」ボタンをクリックすると、返された本文がダイアログ・ウィンドウに表示されます。

 

図 4 に、FireOSLC ユーザー・インターフェースのスクリーン・キャプチャーを示します。図 5 には、図 4 に示されているワークアイテムと同じワークアイテムが表示された Rational Team Concert のスクリーン・キャプチャーを示します。

図 4. 変更要求リソースが選択された FireOSLC ユーザー・インターフェース
FireOSLC ユーザー・インターフェースの 6 つのペイン
図 5. 変更要求リソースが選択された Rational Team Concert の Web クライアント
Rational Team Concert のワークアイテムの画面

OSLC に定義されていないプロパティーへのアクセス

以上で説明した 3 つのステップに従うことで、OSLC サーバー内のリソースの読み取り、更新、作成の操作中に OSLC 仕様で定義されているプロパティーにアクセスできるようになります。けれどもまだ、以下の 2 つの課題が残っています。

  • OSLC 仕様に定義されていないプロパティーにアクセスする方法
  • 参照表現を使用してプロパティーにアクセスする方法、ならびに非参照プロパティーにアクセスする方法

ALM ツールが OSLC 仕様で定義されていないプロパティーを定義することはよくあります。そのようなプロパティーのなかには、リソースの操作に不可欠のものもあります。例えば、rtc_cm:filedAgainst プロパティーを使用しなければ、デフォルト設定の Rational Team Concert に変更要求リソースを作成することはできません。そこで、FireOSLC にはプロパティー拡張が用意されています。プロパティー拡張は外部ファイルであり、このファイルに、リソースの読み取り、作成、更新の操作中にアクセスする必要がある ALM ツールのプロパティーを追加することができます。oslc_ext パッケージは、外部のプロパティー拡張ファイルからデータを読み込んで、リソースの操作中に追加プロパティーにアクセスできるようにします。

プロパティー (例えば、dcterms:contributor) の値が参照されている場合、プロパティーにどんな値が設定されているかを調べるには、その参照の情報を要求する必要があります。さらに、要求した情報から値を抽出する処理を行うことで、それらの値を適切なウィジェットに表示します。要求した情報を処理する方法は、プロパティーおよび ALM ツールによって異なります。そのような Rational Team Concert プロパティーを処理するために、oslc_ext パッケージは 2 つの方法を提供しています。

  • その 1 つは、選択可能なプロパティーのすべての値をドロップダウン・メニューに示す方法です。それには、各プロパティーに指定された URL からの情報を要求します。例えば以下のプロパティーには、この方法を使用します。
    • rtc_cm:filedAgainst
    • rtc_cm:type
    • oslc_cmx:priority
    • oslc_cmx:severity
    • dcterms:contributor
  • もう 1 つの方法では、プロパティー (oslc:discussion など) に指定された URL からの情報を要求し、そのプロパティーの最新の値をテキスト・ボックスに表示します。

FireOSLC は、プロパティー拡張ファイル fireoslc_prop_ext.xml (外部ファイル) からデータを読み込みます。このファイルに XML タグを書き込んで、操作中にアクセスするプロパティーの情報を定義することができます。プロパティー拡張ファイル内で使用できるタグは、以下のとおりです。

  • oslc_ext_all
    • oslc_ext_all タグはルート・タグであり、その子タグとして oslc_ext タグがあります。
  • oslc_ext
    • oslc_ext タグには、OSLC タイプごとに xpath_ns と property という子タグがあります。
    • oslc_type 属性: 「0」は CM、「1」は QM、「2」は RM です。
  • xpath_ns
    • xpath_ns タグは名前空間を登録します。登録された名前空間は、次の 2 つの場合に使用されます。
      • 作成操作中に OSLC サーバーに送信するプロパティーを xml で追加する場合、xml のヘッダーに名前空間を追加します。
      • 更新操作中に document.evaluate 関数を使用して XML ベースの文書に含まれる (プロパティーに対応する) ノードにアクセスする場合、そのノードの名前空間を名前空間リゾルバーに追加します (「参考文献」で「Introduction to using XPath in JavaScript」へのリンクを参照)。
    • key 属性: 名前空間接頭辞
    • url 属性: 名前空間 URL
  • property
    • property タグには、新規プロパティーの情報を格納します。このタグには id 属性と type 属性が必要です。
      • id 属性: プロパティー名
      • type 属性: 「read-only」、「text」、「list」、「rtc_ext」
    • read-only タイプのプロパティーは、ユーザー・インターフェースにラベルとして表示されます。
    • text タイプのプロパティーは、ユーザー・インターフェースにテキスト・ボックスとして表示されます。
    • list タイプのプロパティーは、ユーザー・インターフェースにドロップダウン・メニューとして表示されます。この場合の type 属性には、item タグが子タグとして必要になります。
    • rtc_ext タイプのプロパティーは、ユーザー・インターフェースにドロップダウン・メニューまたはテキスト・ボックス (oslc:discussion の場合のみ) として表示されます。rtc_ext タイプの id は、「rtc_cm:filedAgainst」、「rtc_cm:type」、「oslc_cmx:priority」、「oslc_cmx:severity」、「dcterms:contributor」、「oslc:discussion」になります。この場合の type 属性には、「def_url」、「tgt_xpath」、「tgt_ns」、および「tgt_name」の 4 つの追加属性が必要です。
      • def_url 属性: すべての選択可能な値とラベルの情報を返す、指定の URL。oslc:discussion の場合には、この属性を空にすることができます。
      • tgt_xpath 属性: 選択可能な値とラベルを列挙した XPath
      • tgt_ns 属性: ラベルを格納するタグの名前空間 URL
      • tgt_name 属性: ラベルを格納するタグの名前。oslc:discussion の場合には、名前空間接頭辞が必要です (例えば、dc:description)。
  • item タグ
    • item タグは、プロパティーの選択可能なラベルと値を格納します。
      • label 属性: メニュー項目に表示するラベル
      • value 属性: ラベルが選択された場合に OSLC サーバーに送信する値

例えば、新規プロパティーにアクセスするには property タグを追加し、その新規プロパティーに OSLC 仕様で定義されていない接頭辞がある場合には xpath_ns タグを追加します。リスト 1 に、プロパティー拡張ファイルの一例を記載します。

リスト 1. fireoslc_prop_ext.xml ファイルの例
<oslc_ext_all>
<!-- Extensions for OSLC CM -->
<oslc_ext oslc_type="0">
<!-- Here are examples of properties in RTC.-->
<xpath_ns key="foaf" url="http://xmlns.com/foaf/0.1/"/>
<xpath_ns key="rtc_cm" url="http://jazz.net/xmlns/prod/jazz/rtc/cm/1.0/"/>
<xpath_ns key="oslc_cmx" url="http://open-services.net/ns/cm-x#"/>
<xpath_ns key="rdf" url="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
<xpath_ns key="dcterms" url="http://purl.org/dc/terms/"/>

<!-- xmlns:foaf="http://xmlns.com/foaf/0.1/" -->
<property id="dcterms:contributor" type="rtc_ext"
  def_url="https://testhost.testdomain:9443/ccm/oslc/users/?oslc.select=foaf:name"
  tgt_xpath="//foaf:Person"
  tgt_ns="http://xmlns.com/foaf/0.1/"
  tgt_name="name"/>

<!-- xmlns:dcterms="http://purl.org/dc/terms/" -->
<property id="rtc_cm:type" type="rtc_ext"
  def_url="https://testhost.testdomain:9443/ccm/oslc/types/_yJNt8vNgEeCl8oCPwVoRZA/"
  tgt_xpath="//rtc_cm:Type"
  tgt_ns="http://purl.org/dc/terms/" 
  tgt_name="title"/>

<property id="rtc_cm:filedAgainst" type="rtc_ext"
    def_url="https://testhost.testdomain:9443/ccm/oslc/categories.xml
?oslc.select=dcterms:title"
  tgt_xpath="//rtc_cm:Category"
  tgt_ns="http://purl.org/dc/terms/"
  tgt_name="title"/>

<property id="oslc_cmx:priority" type="rtc_ext"
    def_url="https://testhost.testdomain:9443/ccm/oslc/enumerations/
_yJNt8vNgEeCl8oCPwVoRZA/priority"
  tgt_xpath="//rtc_cm:Literal"
  tgt_ns="http://purl.org/dc/terms/"
  tgt_name="title"/>

<property id="oslc_cmx:severity" type="rtc_ext"
  def_url="https://testhost.testdomain:9443/ccm/oslc/enumerations/
_yJNt8vNgEeCl8oCPwVoRZA/severity"
  tgt_xpath="//rtc_cm:Literal"
  tgt_ns="http://purl.org/dc/terms/"
  tgt_name="title"/>

<property id="oslc:discussion" type="rtc_ext"
  def_url="this_field_of_oslc_discussion_is_not_used"
  tgt_xpath="//rdf:Description[rdf:type[@rdf:resource='
http://open-services.net/ns/core#Comment']]"
  tgt_ns="http://purl.org/dc/terms/"
  tgt_name="dc:description"/>

<!-- Here are examples of properties specific for user's ALM tools. -->
<xpath_ns key="t1" url="http://testhost.testdomain/"/>
<property id="t1:list1" type="list">
  <item label="label1" value="value1"/>
  <item label="label2" value="value2"/>
  <item label="label3" value="value3"/>
</property>
<property id="t1:readonly1" type="readonly"/>
<property id="t1:text1" type="text"/>
</oslc_ext>
<!-- Extensions for OSLC QM -->
<oslc_ext oslc_type="1"/>
<!-- Extensions for OSLC RM -->
<oslc_ext oslc_type="2">
<xpath_ns key="dc" url="http://purl.org/dc/terms/"/>
<property id="dc:identifier" type="readonly"/>
<property id="dc:modified" type="readonly"/>
<property id="dc:created" type="readonly"/>
<property id="dc:title" type="text"/>
<property id="dc:creator" type="readonly"/>
<property id="dc:contributor" type="text"/>
<property id="dc:description" type="text"/>
</oslc_ext>
</oslc_ext_all>

Firefox でのプリファレンスの設定

FireOSLC は、Firefox のプリファレンスを使用します。すべてのプリファレンスには接頭辞があります。例えば、servername プリファレンスの場合は extensions.fireoslc.servername となります。表 1 にすべてのプリファレンスを示します。これらのプリファレンスを設定するには、Firefox のアドレス・バーに「about:config」と入力します。

表 1. FireOSLC のプリファレンス
プリファレンス名説明
servernameストリングポート番号付きのサーバー名を格納します。
usernameストリングユーザー名を格納します。
plistストリングプロパティー・リストを格納します。
logブール値ログの内容をローカル・ファイルに出力するかどうかを指定します。デフォルト値は false です。
root_serv.cm
root_serv.qm
root_serv.rm
ストリングサービス・プロバイダー・カタログを返すルート・サービスのパス。これは、サーバー名を基準とした相対パスです。デフォルト値はそれぞれ、ccm/rootservices、qm/rootservices、rm/rootservices です。
workdirストリングプロパティー拡張ファイル (fireoslc_prop_ext.xml) とログ・ファイルの両方が格納されるディレクトリーへのパス。デフォルト値は c:\tmp です。

使用ケース

このセクションでは、FireOSLC を使用して OSLC の CM、QM、および RM リソースを作成する方法、読み取る方法、および更新する方法を説明します。

変更管理 (CM)

Rational Team Concert に変更要求リソースを作成します。

  1. Tools (ツール)」 > 「FireOSLC」の順に選択します。
  2. 以下のサーバー名、ユーザー名、パスワードを入力し、「login (ログイン)」をクリックします。
    • Server (サーバー):testhost.testdomain:9443/jts
    • User (ユーザー):tester
    • Password (パスワード):testerx
  3. 前のステップでログインに失敗した場合は、cookie が有効になっていることを確認します。
    1. Tools (ツール)」 > 「Options (オプション)」 > 「Privacy (プライバシー)」の順に開き、「History (履歴)」セクションに進みます。
    2. 「Firefox will (Firefox に)」で、「Use custom settings for history (記憶させる履歴を詳細設定する)」を選択します。
    3. Accept cookies from sites (サイトから送られてきた Cookie を保存する)」と「Accept third-party cookies (サード・パーティーの Cookie も保存する)」の両方にチェック・マークを入れます。あるいは、「Accept third-party cookies (サード・パーティーの Cookie も保存する)」にはチェック・マークを入れずに、「Exceptions (例外サイト)」をクリックして使用しているサーバー名 (例えば「testhost.testdomain」) を入力し、「Allow (許可)」、「Close (閉じる)」の順にクリックします。
    4. OK」をクリックします。
  4. 「OSLC settings (OSLC 設定)」ペインで OSLC のタイプをクリックして、サービス・プロバイダーおよびリソース・タイプを選択します。例えば、以下のようにします。
    • CM」をクリックします。
    • サービス・プロバイダーには、「TestProjectCM」を選択します。
    • リソース・タイプには、「ChangeRequest」を選択します。
  5. 「properties list (プロパティー・リスト)」ペインでプロパティーを入力します。Rational Team Concert の場合、以下のように「dcterms:title」および「rtc_cm:filedAgainst」を含める必要があります。
    dcterms:title,dcterms:description,dcterms:contributor,rtc_cm:type,rtc_cm:filedAgainst
  6. 「C(reate) R(ead) U(pdate) D (C (作成) R (読み取り) U (更新) D)」ペインで「C」ラジオ・ボタンを選択します。
  7. 「Properties (プロパティー)」ペインで、テキスト・ボックスに値を入力するか、プロパティー・ラベルの隣にあるドロップダウン・メニューから値を選択します。以下は一例です。
    1. dcterms:title:Function A returns an invalid value (関数 A が返す値は無効です)」と入力します。
    2. rtc_cm:filedAgainst:TestProjectCM」を選択します。
    3. dcterms:description:Investigate a case of input value B (入力値が B の場合を調べてください)」と入力します。
    4. dcterms:contributor:tester」を選択します。
    5. rtc_cm:type:Defect (欠陥)」を選択します。
  8. 「C(reate) R(ead) U(pdate) D (C (作成) R (読み取り) U (更新) D)」ペインで「C」ボタンをクリックし (図 6)、「Results (結果)」ペインに成功を示すコード (「201」) が表示されることを確認します。エラー・コードが表示された場合は、FireOSLC が変更要求リソースを作成できなかったことを意味します。
  9. 「Results (結果)」ペインで「body (本文)」ボタンをクリックします。すると、新しく作成された変更要求リソースの dcterms:identifier プロパティーが表示されるはずです (図 7)。Rational Team Concert の Web クライアントで、変更要求リソースが Rational Team Concert に作成されたことを確認することもできます。
図 6. 変更要求リソースの作成
リソースを作成するためのプロパティーに設定された値
図 7. 変更要求リソースの dcterms:identifier プロパティー
出力された dcterms:identifier プロパティー

次に、新しく作成したリソースを読み取り、更新します。

  1. 「properties list (プロパティー・リスト)」ペインで、例えば以下のプロパティーを入力します。
  2. 「C(reate) R(ead) U(pdate) D (C (作成) R (読み取り) U (更新) D)」ペインで操作のタイプと oslc.where クエリー・パラメーターの両方を選択し、値を入力します。
    • R|U」ラジオ・ボタンを選択します。
    • 「oslc.where」のドロップダウン・メニューから「dcterms:identifier」を選択します。
    • 上記のリソースを作成する際のステップで確認した値を入力します。
  3. 「C(reate) R(ead) U(pdate) D (C (作成) R (読み取り) U (更新) D)」ペインで「R」ボタンをクリックし、「Results (結果)」ペインに成功を示すコード (例えば「200」) が表示されることを確認します。「Properties (プロパティー)」ペインに、リソースのプロパティーが表示されます (図 8)。エラー・コードが表示された場合は、FireOSLC が変更要求リソースを読み取れなかったことを意味します。
  4. 例えば以下の値を選択および入力します。
    • oslc_cmx:priority:High (高)」を選択します。
    • oslc_cmx:severity:Critical (クリティカル)」を選択します。
    • oslc:discussion:We need to fix it ASAP! (できるだけ早く修正する必要があります!)」
  5. 「C(reate) R(ead) U(pdate) D (C (作成) R (読み取り) U (更新) D)」ペインで「U」ボタンをクリックし、「Results (結果)」ペインに成功を示すコード (例えば「200」) が表示されることを確認します (図 9)。エラー・コードが表示された場合は、FireOSLC が変更要求リソースを更新できなかったことを意味します。

    注:
    内部では、Rational Team Concert によって拡張された oslc:discussion が別途 HTTP POST で実行されるため、上記のように他のプロパティーを指定して oslc:discussion にアクセスすると、成功を示すコードが 2 つ表示されます。
  6. 「Results (結果)」ペインの「body (本文)」ボタンをクリックして返されたリソース情報で、更新後のプロパティーを確認します。更新後のリソースのプロパティーは、Rational Team Concert の Web ブラウザー・クライアントを使用して確認することもできます (図 10)。
図 8. 変更要求リソースの読み取り
リソースのプロパティーが示されています。
図 9. 変更要求リソースの更新
更新後のリソースのプロパティー
図 10. Rational Team Concert の Web クライアントに表示された更新後の変更要求リソース
Web クライアントに表示された更新後のプロパティー

品質管理 (QM)

Rational Quality Manager にテスト・ケース・リソースを作成します。

  1. 「OSLC settings (OSLC 設定)」ペインで OSLC のタイプをクリックして、サービス・プロバイダーおよびリソース・タイプを選択します。
    • QM」をクリックします。
    • サービス・プロバイダーには「TestProjectQM」を選択します。
    • リソース・タイプには「TestCase」を選択します。
  2. 「properties list (プロパティー・リスト)」ペインでプロパティーを入力します (例えば「dcterms:title」)。
  3. 「C(reate) R(ead) U(pdate) D (C (作成) R (読み取り) U (更新) D)」ペインで「C」ラジオ・ボタンを選択します。
  4. 「Properties (プロパティー)」ペインでテキスト・ボックスに値を入力します (例えば、dcterms:title として「TC0905」と入力します)。
  5. C」ボタンをクリックしてテスト・ケース・リソースを作成し、「Results (結果)」ペインに成功を示すコード (例えば「201」) が表示されることを確認します。

続いて、新しく作成したテスト・ケース・リソースを読み取り、更新します。

  1. 「properties list (プロパティー・リスト)」ペインでプロパティーを入力します (例えば「dcterms:title,dcterms:description」)。
  2. 「C(reate) R(ead) U(pdate) D (C (作成) R (読み取り) U (更新) D)」ペインで操作のタイプと oslc.where クエリー・パラメーターの両方を選択し、値を入力します。
    • R|U」ラジオ・ボタンを選択します。
    • 「oslc.where」のドロップダウン・メニューから「dcterms:title」を選択します。
    • ステップ 4 と同じ値を入力します (例えば「TC0905」)。
  3. R」ボタンをクリックし、「Results (結果)」ペインに成功を示すコード (例えば「200」) が表示されることを確認します。「Properties (プロパティー)」ペインにプロパティーが表示されます。
  4. 値を入力します (例えば、dcterms:description として「this is test description (これはテストの説明です)」と入力します)。
  5. U」ボタンをクリックし、「Results (結果)」ペインに成功を示すコード (例えば「200」) が表示されることを確認します。

図 11 に、新しく作成されたテスト・ケース・リソースを表示する Rational Quality Manager の Web クライアントのスクリーン・キャプチャーを示します。

図 11. Rational Quality Manager の Web クライアントに表示された更新後のテスト・ケース・リソース
Web クライアントに表示された更新後のプロパティー

要件管理 (RM)

Rational Requirements Composer に要件リソースを作成します。

  1. 「OSLC settings (OSLC 設定)」ペインで OSLC のタイプをクリックして、サービス・プロバイダーおよびリソース・タイプを選択します。
    1. RM」をクリックします。
    2. サービス・プロバイダーには「TestProjectRM」を選択します。
    3. リソース・タイプには「Requirement」を選択します。
  2. 「properties list (プロパティー・リスト)」ペインでプロパティーを入力します (例えば「dc:title」)。
  3. 「C(reate) R(ead) U(pdate) D (C (作成) R (読み取り) U (更新) D)」ペインで「C」ラジオ・ボタンを選択します。
  4. 「Properties (プロパティー)」ペインでテキスト・ボックスに値を入力します (例えば、dcterms:title として「Req0905」と入力します)。
  5. C」ボタンをクリックして要件リソースを作成し、「Results (結果)」ペインに成功を示すコード (例えば「201」) が表示されることを確認します。

注:
通常は、「Results (結果)」ペインで「body (本文)」ボタンをクリックすることでリソースの ID を確認することができますが、Rational Requirements Composer 3.0.1 は成功を示すコードとともに空の本文を返す場合があります。その場合には、Rational Requirements Composer の Web クライアントを使用して ID を確認してください。

続いて、新しく作成した要件リソースを読み取り、更新します。

  1. 「properties list (プロパティー・リスト)」ペインで、例えば以下のプロパティーを入力します。
     dc:identifier,dc:title,dc:description
  2. 「C(reate) R(ead) U(pdate) D (C (作成) R (読み取り) U (更新) D)」ペインで操作のタイプと oslc.where クエリー・パラメーターの両方を選択し、値を入力します。例えば、以下のようにします。
    1. R|U」ラジオ・ボタンを選択します。
    2. 「oslc.where」のドロップダウン・メニューから「dcterms:identifier」を選択します。
    3. ステップ 5 で確認した値を入力します (例えば「71」)。
  3. R」ボタンをクリックし、「Results (結果)」ペインに成功を示すコード (例えば「200」) が表示されることを確認します。「Properties (プロパティー)」ペインにはプロパティーが表示されます。
  4. 「Properties (プロパティー)」ペインで値を入力します (例えば、dc:description として「this is test description (これはテストの説明です)」と入力します)。
  5. U」ボタンをクリックし、「Results (結果)」ペインに成功を示すコード (例えば「200」) が表示されることを確認します。

図 12 に、新しく作成された要件リソースを表示する Rational Requirements Composer の Web クライアントのスクリーン・キャプチャーを示します。

図 12. Rational Requirements Composer の Web クライアントに表示された更新後の要件リソース
Web クライアントに表示された更新後のプロパティー

謝辞

技術的なアドバイスをしてくださった若尾正樹氏、天野武彦氏に感謝いたします。


ダウンロード

内容ファイル名サイズ
Sample file for this articlefireoslc_all.zip35KB

参考文献

学ぶために

製品や技術を入手するために

  • Rational ソフトウェアの試用版をダウンロードしてください。
  • その他の IBM ソフトウェアをご自分に最適な方法で評価してください。評価の方法としては、試用版をダウンロードすることも、オンラインで試してみることも、クラウド環境で使用することもできます。また、SOA Sandbox では、数時間でサービス指向アーキテクチャーの実装方法を効率的に学ぶことができます。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Rational
ArticleID=855673
ArticleTitle=OSLC サーバーにアクセスするための Firefox アドオンを作成する
publish-date=01242013