コミュニティ ガイド

     前  次    目次     
ここから内容

カスタム コミュニティの開発

開発段階では、アーキテクチャ段階で設計したコミュニティに対して機能を構築できます。開発時には、コミュニティそのものは作成しません。作成するのはリソースであり、それに基づいてポータル管理者がコミュニティ テンプレートを作成します。それをポータル管理者とエンドユーザが使用して、コミュニティを作成します。たとえば、開発環境でページ フローと JSP を作成し、それをポートレットにまとめます。ポータル ファイルの作成時には、ブックやページなどのポータル リソースを作成し、ページにポートレットを追加します。ポータル管理者は、作成した .community ファイルを使用してコミュニティ テンプレートを作成します。

開発段階では、以下のコミュニティ機能を作成できます。

カスタム コミュニティの開発に必要な概念や機能の多くは、『ポータル開発ガイド』で説明するポータル開発機能と同じです。

この章の内容は以下のとおりです。

 


.community ファイルの作成

.community ファイルは、異なる拡張子を持つ .portal ファイルです。.community ファイルを作成するには、.portal ファイルを作成してそれを .community ファイルに変換します。コミュニティ ファイルは、コミュニティの作成に使用できるように設計されています。ポータル管理者がコミュニティ テンプレートを作成するときに、コミュニティ テンプレート メタデータ (.ctmeta) ファイルで参照する場合、またはポータル管理者がコミュニティを作成するときに直接使用する場合のいずれでも、.community ファイルには、ブック、ページ、ポートレット、およびコミュニティを構成するその他のポータル リソースがあります。

.portal ファイルと .community ファイルのもう 1 つの違いは、PortalServlet に関連します。PortalServlet は、ファイル システムから .portal ファイルをリソースとして表示する方法を解析します。ただし、コミュニティはデータベースから表示する必要があるため、PortalServlet は、ファイル システムから .community ファイルを表示する方法を解析しません。ポータル管理者またはエンド ユーザがコミュニティを作成する場合、.Community ファイルからのコンポーネントは、表示用にデータベースに格納されます。

.community ファイルを作成する場合、訪問者ツールがあるシェルを選択します。訪問者ツールには、コミュニティ管理機能が用意されています。

ヒント : コミュニティ API を使用してカスタム コミュニティの作成の詳細については、dev2devでの例を参照してください。

.portal ファイルと .community ファイル間における変換

.portal ファイルを .community ファイルに、 .community ファイルを .portal ファイルに変換できます。この機能の主な目的は、既存の .portal ファイルをリソースに変換し、ポータル管理者がそれをコミュニティに変換できるようにすることにあります。ポータルをコミュニティに変換するときにコミュニティ フレームワーク機能を活用すると、コミュニティ機能を構築できます。

.portal ファイルを .community ファイルに変換する手順は、次のとおりです。

  1. Workshop for WebLogic では、ナビゲーター ビューで .portal ファイルを右クリックし、[コミュニティ ファイルに変換] を選択します。
  2. プロンプト画面で、[OK] をクリックします。ファイル拡張子が .community に変わり、ポータル管理者はこのファイルを使用してコミュニティを作成できます。

同じ手順で、.community ファイルを .portal ファイルに変換できます。

 


コミュニティ テンプレート メタ ファイル (.ctmeta) の作成

開発者が XML コミュニティ テンプレート メタ ファイル (..ctmeta) を作成しておくと、ポータル管理者はコミュニティ テンプレートを簡単に作成できるようになります。

コミュニティは多数のプロパティで構成され、その多くが技術的な内容です (たとえば、コミュニティを削除するときに呼び出すコールバック クラスの識別)。コミュニティ プロパティを .ctmeta ファイルにあらかじめコンフィグレーションしておくと、ポータル管理者がコミュニティ テンプレートを作成するときの決定項目が減り、それによってミスの発生も減ります。また、.ctmeta ファイルに対して行った設定によって、コミュニティは開発者が意図したとおりに動作します。たとえば、プライベート登録専用としてコミュニティをデザインする場合、その要件を .ctmeta ファイルにコンフィグレーションすると、ポータル管理者がその .ctmeta ファイルに基づいてテンプレートを作成するときに、プロパティが読み込み専用になります。

既存の .ctmeta ファイルのサンプルを表示するには、GroupSpace を有効にした一時ポータル Web プロジェクトを作成し、既存の groupspace.ctmeta ファイル (マージ済みプロジェクト ビューに移動して、<portalWebProject>/groupspace.ctmeta ファイルを検索) を共有ライブラリからプロジェクトにコピーします。現時点では、groupspace.ctmeta ファイルは、ナビゲータ ビューの <portalWebProject>/WebContent/ ディレクトリにあります。

新しいファイルを作成した後、開発した内容に基づき、必要に応じてコミュニティ プロパティを変更します。

以下に、.ctmeta ファイルで設定できるプロパティについて説明します。各要素で指定できるものは次のとおりです。

.ctmeta のプロパティは、次の子要素を使用します。

これらのコミュニティ プロパティの値は、com.bea.netuix.application.definition.CommunityDefinition を使用して取得できます。

コード リスト 5-1 には、サンプルの groupspace.ctmeta ファイルが含まれています。

コード リスト 5-1 groupspace.ctmeta ファイル
<?xml version="1.0" encoding="UTF-8"?>
<communities-meta
xmlns="http://www.bea.com/servers/portal/communities/meta/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.bea.com/servers/portal/weblogic-portal/8.0
netuix-communities-meta-1_0_0.xsd">
<title>
<locked>false</locked>
<value>Default GroupSpace Community Template</value>
</title>
<description>
<locked>false</locked>
<value>This is the GroupSpace Community Template.</value>
</description>
<community-dot-file>/groupspace.community</community-dot-file>
<callback-class>
<locked>true</locked>
<value>com.bea.apps.groupspace.security.GroupSpaceCallbackImpl
</value>
</callback-class>
<!--
<expiration>
<locked>false</locked>
<dateTime>2008-03-25T22:30:00</dateTime>
</expiration>
-->
<active>
<locked>false</locked>
<value>true</value>
</active>
<public>
<locked>true</locked>
<value>false</value>
</public>
<personal-pages>
<locked>false</locked>
<value>true</value>
</personal-pages>
<public-registration>
<locked>false</locked>
<value>true</value>
</public-registration>
<registration-uri>
<locked>true</locked>
<value>/portlets/access/registration.portal</value>
</registration-uri>
<error-uri>
<locked>true</locked>
<value>/groupspace.jsp</value>
</error-uri>
<access-tracking>
<locked>false</locked>
<value>false</value>
</access-tracking>
<inviter-invoker-class>
<locked>true</locked>
<value>com.bea.apps.groupspace.invitations.
GroupSpaceInviterInvoker</value>
</inviter-invoker-class>
</communities-meta>

 


コミュニティ登録の作成

ユーザがコミュニティに登録するおよびメンバーになる と、アプリケーションのユーザ ストアに追加され、より幅広い機能を利用できるようになります。たとえば、コミュニティ メンバーにセキュリティ機能を割り当てると、未登録または匿名ユーザの場合は使用できないリソースにアクセスできるようになります。

ただし、登録はコミュニティに必須ではありません。コミュニティをパブリックにコンフィグレーションすると、メンバー以外でもコミュニティにアクセスできます。

メンバーと非メンバー間の相互作用の例としては、ディスカッション フォーラムがあります。非メンバーはディスカッション スレッドを表示できますが、ディスカッションに転記する場合は、メンバーになる必要があります。

登録が必要かどうかに関係なく、すべてのコミュニティに登録 URI が必要です。登録は、JSP からポータルに対して行われ、コミュニティにアクセスするユーザの開始点を示します。オプションである登録を使用するコミュニティの例には、登録ポートレットを含む登録ポータルがあります。

登録ページのページ フローの作成を考えます。ページ フローでは、ユーザがログインするかどうかなどの要因に基づいて登録プロセスを通してユーザのパスを制御できます。

登録ページに組み込むと便利な機能には次のものがあります。

非 GroupSpace コミュニティにある WebLogic Portal に付属の MemberPicker ポートレットを使用できます。ポータル デスクトップでは、ユーザ Picker ポートレットはコミュニティの外部で使用できます。

登録ページのその他のアイデアとして、GroupSpace コミュニティの作成や順序立てた登録プロセスなどがあります。詳細については、『GroupSpace ガイド』を参照してください。

 


多目的のコミュニティ エラー ページの開発

ユーザがコミュニティにアクセスしようとして拒否されると (コミュニティのメンバーではなくなった場合やコミュニティが非アクティブな場合などのため)、指定したエラー ページが表示されます。エラー ページは、JSP、ページ フロー、ポータルなど、ブラウザで表示できるリソースで、すべてのコミュニティに必要です。

コミュニティにアクセスできないことを示すだけでなく、エラー ページには、使用できるパブリック コミュニティへのリンクなど、便利な情報を表示できます。コミュニティ フレームワーク API を使用すると、便利な多目的のエラー ページを作成できます。

ポータルで開発したエラー ページを使用するには、.ctmeta ファイルで参照するのが最も便利な方法です。ポータル管理者は、そのファイルを使用して、エラー ページの URI を自身で指定しなくても、コミュニティ テンプレートを作成できます。

 


カスタム コミュニティへの BEA のコラボレーション ポートレットの追加

WebLogic Portal には、任意のコミュニティまたはポータル デスクトップで使用できる次のコラボレーション ポートレットが用意されています。

コミュニティで使用する場合、カレンダー、アドレス帳、およびタスクの各ポートレットには、コミュニティ レベルの項目とパーソナル項目を Community_Repository に格納するための [コミュニティ] タブと [個人] タブが表示されます。

ポータル EAR プロジェクトおよび Web プロジェクトにコラボレーション ポートレットを追加するには、次の手順を実行します。

  1. ポータル EAR プロジェクトにコラボレーション ポートレット アプリケーション ライブラリ ファセットを追加します。
    1. [ナビゲーター] ビューで、ポータル EAR プロジェクトを右クリックし、[プロパティ] を選択します。
    2. プロパティ ビューで、[Project Facets] を選択し、[Add/Remove Project Facets] をクリックします。
    3. 追加と削除のウィンドウで、[WebLogic Portal コラボレーション] を展開し、[コラボレーション ポートレット アプリケーション ライブラリ] を選択します。
    4. [終了] をクリックして、[OK] をクリックします。
  2. ポータル Web プロジェクトにコラボレーション ポートレット ファセットを追加します。
    1. 上記の同じサブ手順を実行し、コラボレーション ポートレット ファセットを選択します。

コラボレーション ポートレットを追加すると、Workshop for WebLogic Platform で作成するポータルへの追加に使用できるようになります。WebLogic Portal Administration Console のポータル ライブラリでも使用できます。

 


コミュニティ ツールおよび訪問者ツールのコミュニティへの追加

WebLogic Portal には、コミュニティおよびポータル デスクトップで使用するための一連のコミュニティ ツールと訪問者ツールが用意されています。

訪問者ツールには、ユーザがポータル デスクトップ環境をカスタマイズするためのユーザ インタフェースが用意されています。訪問者ツールに組み込まれているコミュニティ ツールには、管理権限を持つユーザが使用できるコミュニティ管理ツールが用意されています。

コミュニティの外部では、訪問者ツールには、ユーザがポータル デスクトップの表示をカスタマイズするためのユーザ インタフェースが用意され、コミュニティ ツールは表示されません。コミュニティの内部では、訪問者ツールとコミュニティ ツールを使用できます。

訪問者ツールとコミュニティ ツールをコミュニティに追加するには、次の手順に従います。

  1. .community ファイルを作成し、訪問者ツール デスクトップ シェルを選択します。
  2. または、コミュニティのヘッダ リージョンの外観と動作を決定するカスタム バージョンの訪問者ツール デスクトップ シェルを作成する場合、共有ライブラリの /framework/markup/shell/visitorTools.shell ファイルをファイル システムにコピーします。

  3. visitorTools.shell ファイルのコピーを作成します。新しい .shell ファイルで、シェルがユニークになるように title、description、markupName の各属性が変更されていることを確認してください。
  4. ニーズを満たすように .shell をコンフィグレーションし、visitorMenu.portlet の XML ブロックが保持されるようにします。たとえば、ヘッダ領域に追加する、JSP、ページ フロー、HTML ファイルを参照することができます。他のシェルでヘッダ領域を実装する方法の例を参照するには、共有ライブラリからファイル システムに他の .shell ファイルをコピーします。

シェルの詳細については、『ポータル開発ガイド』の「ルック アンド フィールの機能を使用したユーザ インタフェース開発」章を参照してください

 


コミュニティのセキュリティ

ポータル デスクトップ リソースの場合と同じように、コミュニティ リソースに適用できる訪問者の資格以外に、コミュニティには機能と呼ばれる拡張セキュリティ機能が用意されています。

機能は、XML ファイル (ポータル EAR プロジェクトの /META-INF/communities-config.xml) でコンフィグレーションする作成者、所有者、寄稿者、訪問者などのロール名です。これらの機能は、コミュニティ フレームワークがデータベースに自動的に追加する Java 文字列にすぎません。機能名以外に、CREATE、READ、UPDATE、DELETE など、各機能が持つ権限を決定することもできます。

機能とその権限は完全に自由形式です。名前を決定し、条件ロジックでその機能を使用してコミュニティ機能を開発し、コミュニティ リソースおよび機能へのユーザ アクセスを管理します。コミュニティに参加するユーザに機能を割り当てる方法も決定できます。たとえば、GroupSpace の招待ツールのように、招待状内のユーザに機能を事前に割り当てる招待メカニズムを開発できます。

次の機能は、すべてのコミュニティにデフォルトで用意されており、削除または名前を変更することはできません。

機能と訪問者資格ロールの相違の詳細については、「コミュニティ アーキテクチャ」を参照してください。

機能を使う場合のガイドライン

機能を削除することは、ベスト プラクティスではありません。XML から機能を削除する場合、データベースからもその機能を削除する必要があります。機能を削除した後、この機能を割り当てる外部のユーザは、この機能をまだ識別することができます。

 


コールバック クラスの開発

コミュニティ フレームワークを使用すると、コミュニティを作成、アクティブ化、非アクティブ化、または削除時に、コミュニティでカスタマイズされたアクションを実行できます。これらのアクションを開発するには、コールバック クラスを使用します。次に例を示します。

コールバック クラスの開発には、コミュニティ フレームワーク API など、WebLogic Portal API のさまざまな部分を使用します。

コールバック クラスを作成した後、.ctmeta ファイルに追加して使用することをお勧めします。これにより、ポータル管理者が .ctmeta ファイルからコミュニティ テンプレートを作成すると、そのテンプレートを使用して作成されたコミュニティでは、作成したコールバック クラスが自動的に使用されます。

コールバック クラスを作成するには、com.bea.netuix.application.communities.AbstractCommunityCallback を拡張します。このクラスには、コミュニティのアクティブ化、作成、非アクティブ化、および削除のときに実行できるアクションのメソッドが用意されています。CommunityCallback クラスのベスト プラクティスについては、Javadoc を参照してください。

 


コミュニティの招待の送信方法の拡張

コミュニティ フレームワークには、コミュニティに参加するユーザへの招待の書式を設定して送信するための、拡張可能な API が用意されています。フレームワークには、JavaMail を使用して電子メールで招待を送信するためのメカニズムがあります。招待 API を使用すると、インスタント メッセージングなどのさまざまな方法で、ユーザに招待を送信できます。

たとえば、GroupSpace には、電子メール経由またはユーザ ストアのユーザに招待を送信するコミュニティ ツールの招待ツールが用意されています。ユーザ ストアのユーザに招待が送信されると、そのユーザが GroupSpace コミュニティにログインしたときに招待が表示されます。

招待を使用する場合の詳細については、Javadoccom.bea.netuix.application.communities.invitations* パッケージを参照してください。特に、デフォルトの招待機能を拡張してインスタント メッセージングなどの他の機能を追加する場合は、com.bea.netuix.application.communities.invitations.spi パッケージを使用します。

 


コミュニティ通知の作成

通知を使用すると、特定のイベントが発生したときにユーザにアラートを送信できます。たとえば、仮想コンテンツ リポジトリにコンテンツが追加されたとき、またはタスクのステータスが変更されたときに、ユーザに通知できます。通知はアプリケーションのユーザ ストアの 1 人以上のユーザに送信され、さまざまな方法で処理できます。

たとえば、通知は GroupSpace での告知に使用されます。ユーザは告知を作成し、特定の日付に送信されるように設定します。指定された日時に、通知フレームワークは告知を送信し、告知を受信したユーザには、GroupSpace にログインしたときに告知へのリンクが表示されます。

通知はコミュニティ固有の機能ではありません。通知フレームワークには、任意のポータルで実装できる通信メカニズムが用意されています。特に、通知がトリガされたときに、ポートレット間でメッセージを送信するようにポータル フレームワークをコンフィグレーションできます。

通知を使用する場合の詳細については、Javadoc の次のパッケージに関するところを参照してください。

 


コミュニティ フレームワーク API の使用

コミュニティ フレームワーク API には、カスタム コミュニティと GroupSpace コミュニティでコミュニティ固有の機能を開発するためのさまざまなクラスとメソッドが用意されています。

コミュニティ フレームワーク API を使用して実行できるプログラミング作業は、コミュニティの内部、つまりコミュニティの 「コンテキスト」 でのみ有効です。たとえば、ユーザの属するすべてのコミュニティのリストを取得するポートレットを作成すると、そのポートレットは、コミュニティ コンテキストがない通常のポータル デスクトップでは機能しません。

コミュニティ フレームワーク API は、JSP、ページ フロー、コールバック クラス、バッキング ファイルなど、Java コードを使用できるコミュニティ アプリケーションの任意の領域で使用できます。

コミュニティ フレームワーク API で実行できる操作の詳細については、Javadoc の次のパッケージに関する項目を参照してください。

 


コミュニティでのタグ ライブラリの使用

開発段階では、GroupSpace コミュニティ、カスタム コミュニティ、またはポータル Web アプリケーションに他のリソースを追加できます。これらのリソースは、以下のタグ ライブラリに含まれています。

これらのタグ ライブラリの追加、コンフィグレーション、および使用の詳細については、『ポートレット開発ガイド』の 第 5 章を参照してください。

ActiveMenus タグ ライブラリの使用

開発段階では、GroupSpace コミュニティ、カスタム コミュニティまたは、ポータル Web アプリケーションに ActiveMenus というリソースを追加できます。ActiveMenus JSP タグ ライブラリでは、マウスを特定のテキストの上に置いた時に表示されるポップアップ メニューを設定できます。activemenus-config.xml ファイルは、各メニューのコンテンツを制御します。activemenus_taglib.jar ファイルには、ActiveMenus タグ ライブラリが格納されます。

GroupSpace コミュニティでは、デフォルトで ActiveMenus が有効になっているので、必要なのは ActiveMenus タグのコンフィグレーションだけです (『ポートレット開発ガイド』 を参照)。GroupSpace コミュニティ内の AciveMenus タグの例については、図 5-1 を参照してください。

図 5-1 GS Issue ポートレット内の ActiveMenus

GS Issue ポーレットの ActiveMenus

マウスを項目 (問題など) の上に移動し、表示される矢印の上に移動すると、ActiveMenu が表示されます。このアクティブ メニューとユーザの機能を関連付けることができます。この例では、項目の削除を含む機能を割り当てられた場合は、図 5-1 に示すように、[削除] 機能が表示されます。

ヒント : GroupSpace コミュニティがある場合は、以下の手順を実行する必要はありません。 GroupSpace コミュニティではデフォルトで ActiveMenus が有効になっています。

カスタム コミュニティ内の Active Menus の有効化とコンフィグレーション、および ActiveMenus タグで以下のタグを使用する手順の詳細については、『 ポートレット開発ガイド』 を参照してください。

DragDrop タグ ライブラリの使用

開発段階では、DragDrop JSP タグ ライブラリを使用して、GroupSpace コミュニティ、 カスタム コミュニティ、またはポータル Web アプリケーションでドラッグ アンド ドロップ機能を有効にできます。JSP に表示されるドラッグ可能なオブジェクトを特定し、ドロップされたドラッグ可能なオブジェクトに反応するようにコンフィグレーションされるドロップ ゾーンを特定します。ページ フロー アクションのトリガ、JavaScript 関数の呼び出し、またはサーブレットへのデータの送信により、ドロップ ゾーンは反応します。

カスタム コミュニティ内の Active Menus の有効化とコンフィグレーション、および DragDrop タグ ライブラリと以下のタグを使用する手順の詳細については、『 ポートレット開発ガイド』 を参照してください。

動的コンテンツ タグ ライブラリの使用

開発段階では、DynamicContent タグ ライブラリを使用して、GroupSpace コミュニティ、 カスタム コミュニティまたは、ポータル Web アプリケーションで、JSP ページの一部をすばやく更新できます。

DynamicContent タグでは、AJAX リクエストを使用してページ フロー ベースのポートレット内にある JSP ページの部分を更新できます。このタグは、フル ポータル リクエストを実行ずにページの部分を更新できます。これらの AJAX リクエストはフル ポータル リクエストに比べ小さく高速であるため、ポータル アプリケーションでの対話の応答性が向上します。

これらのタグは、標準ページ フロー ベース ポートレット開発に組み込まれ、ユーザのポータル経験を向上させる、高度なユーザ インタフェース機能を作成できるようにします。

カスタム コミュニティ内での動的コンテンツの使用、および DynamicContent タグ ライブラリで以下のタグを使用する方法の詳細については、『 ポートレット開発ガイド』 を参照してください。

動的コンテンツ タグ ライブラリの sample.zip ファイルにあるサンプル コードおよびユーティリティについては、「dev2dev」を参照してください。

UserPicker タグ ライブラリの使用

開発段階では、UserPicker タグ ライブラリを使用して、GroupSpace コミュニティ、 カスタム コミュニティまたは、ポータル Web アプリケーションで、JSP ページにフォーム ボタンを追加することができます。

UserPicker:popupButton タグは、JSP ページにフォーム ボタンを追加して、ポップアップ ウィンドウを開き、現在のユーザのリストを表示する機能を開発者に提供します。このリストからユーザを選択することができます。選択したユーザの名前は親ウィンドウの指定されたフォーム フィールドに入力されます。

以下のタグ属性 UserPicker:popupButton を使用する手順については、『ポートレット開発ガイド』を参照してください。

ヒント : コミュニティでUserPicker:popupButton タグを使用すると、ユーザではなくコミュニティ メンバーがリストされます。

 


コミュニティへの対話管理の追加

コミュニティでコミュニティ機能を開発する以外に、パーソナライゼーション、キャンペーン、イベントなど、既存の WebLogic Portal 対話管理機能を使用することもできます。詳細については、『対話管理ガイド』を参照してください。

 


コンテンツの提出ポートレットについて

コンテンツ表示ポートレットは、WebLogic Portal に付属しています。ポートレットを使用すると、ポータル システム管理者は、IT 部門またはソフトウェア 開発者からの支援がなくても、リアルタイムでポータルでのさまざまな種類のコンテンツを取得および表示することができます。たとえば、最新のプレス リリースのリストを表示する場合、ユーザがリストを表示して、全体のプレス リリースの中から1つをクリックして読むことができます。ポータル ページ上に画像を配置したり (写真または図)、またはテキスト コンテンツを追加したりできます。さまざまな対象者向けに、テーマによって内容を分けることができます。

コンテンツ表示ポートレットとカスタム テンプレートおよびテンプレート ビュー作成方法については、『ポートレット開発ガイド』を参照してください。コンテンツ表示ポートレットを使用して構築されたサンプルの Web アプリケーションを表示するには、http://wlp.bea.com で、デモをダウンロードしてください。


  ページの先頭       前  次