Oracle® Fusion Middleware Oracle WebLogic Administration Console の拡張 11g リリース 1 (10.3.1) B55554-01 |
|
戻る |
次へ |
Administration Console では、すべてのコンテンツがポートレット内に格納されるため、拡張を最低限にする場合でもポートレット (およびポートレットのコンテンツ) を定義しなければならない場合がほとんどです。ポートレットをデスクトップに直接追加することもできますが、ポートレットを ContentBook
内のタブやサブタブとして表示する場合は、それを格納するブックまたはページを定義する必要があります。拡張で NavTreePortlet にノードを追加することもできます。そうすることで、追加したポートレットに、ユーザがデスクトップから直接移動できるようになります。
この節では、ポートレット、UI コントロール、および NavTreePortlet ノードを Administration Console に追加する方法について説明します。
図 6-1 にこのプロセスを示します。プロセスの手順、および各手順の結果については、表 6-1 を参照してください。以下の節では、各手順について詳しく説明します。
表 6-1 モデル MBean の開発タスクと結果
手順 | 説明 | 結果 |
---|---|---|
1. ポートレットの定義 |
ポータル フレームワークでインスタンス化できるポートレットを定義するための XML ファイルを作成する。ポートレットの定義には、どの種類のデータ (JSP、Struts Action、または Beehive ページ フロー) をロードするかを示す指示が含まれる。 ポータルのルック アンド フィールによって、ポートレットが枠線や最小化/最大化コントロールを提供するかどうかが決まる。 |
|
|
|
|
ポータルを、ラベル付き UI コントロールの横に表示するか、コントロールを置換して表示するかを記述する XML ファイルを作成する。 |
|
|
NavTreePortlet から拡張内のブックやページへのリンクを作成できる。 WebLogic Server のデフォルトでは、既存のナビゲーション ツリーの末尾にコントロール名を追加できるようになっている。特定の場所にノードを挿入する場合や、ノード ツリーを作成する場合は、ノードおよびノードの場所を記述する Java クラスを独自に作成する。 |
場合によって、追加したノードをより詳細に制御する Java クラス。 |
|
5. 拡張のアーカイブとデプロイメント |
詳細については、「コンソールの拡張のアーカイブとデプロイ」を参照してください。 |
拡張を格納した WAR ファイル。 |
ポートレットは XML ファイルで定義します。ポートレットの定義には、ロードするデータの種類 (JSP、Struts Action、または Beehive ページ フロー) についての指示が含まれます。以下の節では、ポートレットを定義する方法について説明します。
ポートレット XML ファイルの詳細については、『Portal Support Schema Reference』のエントリを参照してください。
JSP をロードするポートレットを定義するには、次の手順に従います。
root-dir
/portlets
に新しいテキスト ファイルを作成し、コード リスト 6-1 のコードをコピーして貼り付けます。(「拡張のディレクトリ ツリーの作成」を参照)。
次の命名規約を使用することをお勧めします。
content-name.portlet
content-name
はポートレットに格納する JSP ファイルの名前です。たとえば、ポートレットに monitorEJB.jsp
という名前の JSP ファイルを格納する場合は、ポートレット XML ファイルの名前を monitorEJB.portlet
にします。
コード リスト 6-1 内の以下の値を変更します。
Label
。ポータル フレームワークでこのポートレットを特定するためのユニークな識別子に変更します。
(省略可能) Title
。タイトル バーが表示される場合にこのポートレットが表示するデフォルトのタイトルを指定します。「ポートレットのタイトル バーの表示」を参照してください。
URI
。ポートレットに格納する JSP の絶対パスとファイル名に変更します。絶対パスは、拡張のルートから始めます。
次に例を示します。
/ext_jsp/monitorEJB.JSP
拡張をデプロイする前に、JSP をプリコンパイルする必要があります。
コード リスト 6-1 JSP ファイルをロードするポートレット XML ファイルのテンプレート
<?xml version="1.0" encoding="UTF-8"?> <portal:root xmlns:html="http://www.w3.org/1999/xhtml-netuix-modified/1.0.0" xmlns:portal="http://www.bea.com/servers/netuix/xsd/portal/support/1.0.0" xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/portal/ support/1.0.0 portal-support-1_0_0.xsd"> <netuix:portlet definitionLabel="Label" title="Title" > <netuix:content> <netuix:jspContent contentUri="URI"/> </netuix:content> </netuix:portlet> </portal:root>
拡張のビジネス ロジックとナビゲーション ロジックを JSP ファイルにカプセル化する代わりに、Apache Struts フレームワークを使用できます。「テーブルおよびフォーム用の Struts 情報の作成」を参照してください。
Struts Action をロードする (Struts Action に転送する) ポートレットを作成するには、次の手順に従います。
root-dir
/portlets
に新しいテキスト ファイルを作成し、コード リスト 6-2 のコードをコピーして貼り付けます。(「拡張のディレクトリ ツリーの作成」を参照)。
次の命名規約を使用することをお勧めします。
action-name.portlet
action-name
はポートレットの転送先となる Struts Action の名前です。
コード リスト 6-2 内の以下の値を変更します。
Label
。ポータル フレームワークでこのポートレットを特定するためのユニークな識別子に変更します。
(省略可能) Title
。タイトル バーが表示される場合にこのポートレットが表示するデフォルトのタイトルを指定します。「ポートレットのタイトル バーの表示」を参照してください。
Struts-module
。Struts Action を定義する Struts モジュールを指定します。
独自の Struts モジュールを作成して、Administration Console の拡張を使用する Action および ActionForm を定義する必要があります。デフォルトの Struts モジュールは Oracle Action および ActionForm 用に予約されています。各モジュールには独自の、ユニークな名前を持つコンフィグレーション ファイルが含まれます。Struts モジュールの詳細については、Apache Struts の『User Guide』(http://struts.apache.org/struts-doc-1.2.x/userGuide/index.html
) を参照してください。
たとえば、Struts-module
に「myModule
」と指定した場合、Struts コントローラ サーブレットは次の場所でアクション検索します。
root-dir/WEB-INF/struts-auto-config-myModule.xml
action-path
。Struts モジュール内で定義した Struts Action のパスを指定します。
refresh-action-path
。このポートレットの後続のリクエストで呼び出す Action
(たとえば、ドキュメントを更新するユーザ エージェント) を指定します。
この .portlet
では JSP の名前は指定しません。代わりに、正常に処理された場合は、Struts Action マッピングによって特定の JSP に転送されます。
コード リスト 6-2 Struts アクションに転送するポートレット XML ファイルのテンプレート
<?xml version="1.0" encoding="UTF-8"?> <portal:root xmlns:html="http://www.w3.org/1999/xhtml-netuix-modified/1.0.0" xmlns:portal="http://www.bea.com/servers/netuix/xsd/portal/support/1.0.0" xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/portal/ support/1.0.0 portal-support-1_0_0.xsd"> <netuix:portlet definitionLabel="Label" title="Title" > <netuix:strutsContent module="Struts-module" action="action-path" refreshAction="refresh-action-path"/> </netuix:portlet> </portal:root>
Beehive ページ フローをロードするポートレットを定義するには、次の手順に従います。
root-dir
/portlets
に新しいテキスト ファイルを作成し、コード リスト 6-3 のコードをコピーして貼り付けます。(「拡張のディレクトリ ツリーの作成」を参照)。
次の命名規約を使用することをお勧めします。
pageFlow-name.portlet
pageFlow-name
はポートレットがロードする (ポートレットの転送先となる) ページ フローの名前です。たとえば、ポートレットが myPageFlow.jpf
というページ フローに転送される場合は、ポートレット XML ファイルの名前を myPageFlow.portlet
にします。
コード リスト 6-3 内の以下の値を変更します。
Label
。ポータル フレームワークでこのポートレットを特定するためのユニークな識別子に変更します。
(省略可能) Title
。タイトル バーが表示される場合にこのポートレットが表示するデフォルトのタイトルを指定します。「ポートレットのタイトル バーの表示」を参照してください。
URI
。ページ フローを定義する JPF ファイルの絶対パスとファイル名を指定します。URI は root-dir
/WEB-INF/classes
ディレクトリから始まる絶対パスにする必要があります。
たとえば、JPF ファイルが root-dir
/WEB-INF/classes/com/mycompany/extension/pageflows/myPageFlow.jpf
である場合は、次の値を指定します。
/com/mycompany/extension/pageflows/myPageFlow.jpf
Action
。ページ フローを定義する JPF ファイルの絶対パスとファイル名を指定します。
コード リスト 6-3 ページ フローに転送するポートレット XML ファイルのテンプレート
<?xml version="1.0" encoding="UTF-8"?> <portal:root xmlns:html="http://www.w3.org/1999/xhtml-netuix-modified/1.0.0" xmlns:portal="http://www.bea.com/servers/netuix/xsd/portal/support/1.0.0" xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/portal/ support/1.0.0 portal-support-1_0_0.xsd"> <netuix:portlet definitionLabel="Label" title="Title" > <netuix:content> <netuix:pageflowContent contentUri="URI" action="Action"/> refreshAction="refresh-Action"/> </netuix:content> </netuix:portlet> </portal:root>
ポートレットを Administration Console のデスクトップ上 (「page
」ページのプレースホルダ内) に配置する場合は、タイトル バーを表示するようにポートレットをコンフィグレーションします。ポートレットを ContentBook
に置く場合は、タイトル バーは表示しません。
タイトル バーを表示するには、次の手順に従います。
ポートレットの .portlet
XML ファイルで、netuix:portlet
要素の title
属性の値を指定します。ローカライズされた値を表示するには、「ポートレット タイトルのローカライズ」を参照してください。
netuix:portlet
要素の子要素として以下の要素を指定します。
<netuix:titlebar/>
ポートレットを最小化および最大化できるようにするには、空の <netuix:titlebar/>
要素の代わりに以下のスタンザを指定します。
<netuix:titlebar> <netuix:minimize/> <netuix:maximize/> </netuix:titlebar>
コード リスト 6-4 では、タイトル バーを表示するポートレットを定義しています。このポートレットは最小化または最大化でき、タイトルの値はメッセージ バンドルから取得します。
コード リスト 6-4 例 : ローカライズされたタイトルを表示するポートレット
<?xml version="1.0" encoding="UTF-8"?> <portal:root xmlns:html="http://www.w3.org/1999/xhtml-netuix-modified/1.0.0" xmlns:portal="http://www.bea.com/servers/netuix/xsd/portal/support/1.0.0" xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/portal/ support/1.0.0 portal-support-1_0_0.xsd"> <netuix:portlet definitionLabel="medrecEAR.Monitor.Portlet" title="medrecMBean.myPortlet.title" backingFile="com.bea.medrec.extension.utils.DesktopViewBacking"> <netuix:titlebar> <netuix:minimize/> <netuix:maximize/> </netuix:titlebar> <netuix:content> <netuix:strutsContent module="/medrecMBean" action="RetrieveCustomMBeansAction" refreshAction="RetrieveCustomMBeansAction"/> </netuix:content> </netuix:portlet> </portal:root>
デフォルトでは、ポートレットは <netuix:portlet>
要素の title
属性に入力されたリテラル値を表示します。このタイトルをローカライズできるようにするには、次の手順に従います。
title
属性の値を取得し、プロパティ ファイルで title
属性の値に一致するキーを検索して、そのプロパティ キーの値を返す Java クラスを作成します。
たとえば、title="myPortlet.title"
と指定した場合、Java クラスはメッセージ バンドルを検索して myPortlet.title=MyCompany's Portlet
を見つけ、表示するテキストとして MyCompany's Portlet
を返します。
「ポートレット タイトルをローカライズするためのバッキング クラスの作成」を参照してください。
.portlet
ファイルで、<netuix:portlet>
要素内に以下の属性を指定します。
title
。メッセージ バンドルで定義したプロパティのキーを指定します。
backingFile
。前述の手順で作成した Java クラスの完全修飾名を指定します。
次に例を示します。
<netuix:portlet definitionLabel="myPortlet" title="myPortlet.title" backingFile="com.mycompany.extension.utils.MyPortletBacking">
バッキング クラスは、ポータル フレームワーク API と直接対話する Java クラスです。ローカライズされたポートレット タイトルを取得するバッキング クラスを作成するには、次の手順に従います。
com.bea.netuix.servlets.controls.content.backing.AbstractJspBacking
を拡張します。
AbstractJspBacking.preRender(HttpServletRequest request, HttpServletResponse response)
メソッドを実装します。
『Oracle WebLogic Portal の Java API リファレンス』の「AbstractJspBacking.preRender()
」を参照してください。
このメソッドの実装で以下を行います。
HttpServletRequest
オブジェクトからロケールを取得します。
次の API を使用します。
javax.servlet.http.HttpServletRequest.getSession().getAttribute( "org.apache.struts.action.LOCALE")
メッセージ バンドルを取得します。
次の API を使用します。
org.apache.struts.util.MessageResources.getMessageResources(
"myBundle");
myBundle
はメッセージ バンドルの名前です。(「メッセージ バンドルの作成」を参照)。
ポートレットの title
プロパティの値を取得します。
次の API を使用します。
PortletBackingContext bctx = PortletBackingContext.getPortletBackingContext( HttpServletRequest req); MessageResources.getMessage(locale, bctx.getTitle());
locale
は HttpServletRequest
オブジェクトから取得したロケールです。
ポートレットの title
プロパティの値を、前述の手順で取得したローカライズされた値にリセットします。
次の API を使用します。
PortletBackingContext.getTitle(String title)
title
メッセージ バンドルから取得した値です。
コード リスト 6-5 例 : ポートレット タイトルをローカライズするためのバッキング クラス
package com.bea.medrec.extension.utils; import java.util.Locale; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.util.MessageResources; import com.bea.netuix.servlets.controls.content.backing.AbstractJspBacking; import com.bea.netuix.servlets.controls.portlet.backing.PortletBackingContext; public class DesktopViewBacking extends AbstractJspBacking { public boolean preRender(HttpServletRequest req, HttpServletResponse res) { // 現在のポートレットの PortletBackingContext を取得する。 // PortletBackingContext には、現在のポートレットの // プロパティとメソッドが含まれている。 PortletBackingContext bctx = PortletBackingContext.getPortletBackingContext(req); if (bctx != null) { // タイトルにピリオドがない場合は、preLocalized と想定するか、 // キーのフォーマットに従う if (bctx.getTitle().indexOf(".")!=-1){ // HTTPServletRequest からロケールを取得する Locale locale = (Locale) req.getSession().getAttribute( "org.apache.struts.action.LOCALE"); // 「medrecMBean」というメッセージ バンドルを見つける MessageResources messages = MessageResources.getMessageResources("medrecMBean"); // ポートレットの「title」プロパティの値を取得する String msg = messages.getMessage(locale, bctx.getTitle()); // 「title」プロパティの値をローカライズされた値で // リセットする。 bctx.setTitle(msg); } } return true; } }
Administration Console にタブまたはサブタブを追加する場合は、既存の階層に適合するブックまたはページ UI を定義する必要があります。
最上位のタブ (たとえば [ドメイン : コンフィグレーション] の兄弟) を作成するには、1 つまたは複数のページを格納するブックを作成します。各ページには、ポートレットを格納します。
既存のタブのサブタブ (たとえば [ドメイン : コンフィグレーション : 全般] の兄弟) を作成するには、1 つのポートレットを格納するページを作成します。
ブックおよびページの定義を、1 つまたは複数のポータル ブック (.book
) ファイルに保存します。コントロールの階層グループごとに 1 つの .book
ファイルを作成します。たとえば、最上位のタブとそのサブタブを作成するブック用に 1 つの .book
ファイルを作成します。また、既存の WebLogic Server タブにサブタブを追加するページ用にも別の .book
ファイルを作成します。.book
ファイルのルート要素 (portal:root
) には、直接の子要素を 1 つのみ持たせることができます。その子要素には、複数の子を持たせることができます。
以下の節では、ブックやページの作成について説明します。
サブタブのないタブ ([ドメイン : メモ] など) を定義するポータル ブック (.book
) XML ファイルを作成するには、次の手順に従います。
コード リスト 6-6 のコードをコピーして、新しいテキスト ファイルに貼り付けます。
たとえば、root-dir
/controls/MyApp.book
root-dir
は開発用のディレクトリです。詳細については、「開発環境の設定」を参照してください。
コード リスト 6-6 内の以下の値を変更します。
Page-Label
。ポータル フレームワークおよび WebLogic Server JSP タグが、ページへのリクエストの転送に使用するユニークな識別子に変更します。
Page-Title
。ユーザに対して表示するタブの名前、または作成したメッセージ バンドルのキーに変更します。
指定する値に「.」(ピリオド) が含まれている場合、Administration Console はこの値がキーであると想定し、メッセージ バンドルから値を検索しようとします。たとえば、My.Tab
と指定すると、Administration Console は My.Tab
というキーを持つプロパティの値を検索します。そのような値が見つからない場合は、タブ名として null
と表示します。値として My Tab
を指定すると、Administration Console は My Tab
と表示します。
Bundle
。作成したメッセージ バンドルの名前に変更します。netuix:page
要素の title
属性の値に「.」が含まれている場合にのみ、このバンドルが使用されます。「JSP でのメッセージ バンドルの作成と使用」を参照してください。
Portlet-Instance-Label
。ポータル フレームワークおよび WebLogic Server JSP タグが、ポートレット インスタンスへのリクエストの転送に使用するユニークな識別子に変更します。
Portlet-URI
。作成したポートレット ファイルのパスとファイル名に変更します (「ポートレットの定義」を参照)。パスは、ポータル Web アプリケーションのルートに対する相対パスでなければなりません。
次に例を示します。
/portlets/monitorEJB.portlet
コード リスト 6-6 では、ブックではなくページを定義している点に留意します。こうすることで、Administration Console のルック アンド フィールによって、ページがサブタブのないタブとして表示されます。
コード リスト 6-6 サブタブのないタブを作成する .book ファイルのテンプレート
<?xml version="1.0" encoding="UTF-8"?> <portal:root xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0" xmlns:html="http://www.w3.org/1999/xhtml-netuix-modified/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:portal="http://www.bea.com/servers/netuix/xsd/portal/support/1.0.0" xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/portal/support /1.0.0 portal-support-1_0_0.xsd"> <netuix:page markupName="page" markupType="Page" definitionLabel="Page-Label" title="Page-Title" skeletonUri="/framework/skeletons/default/wlsworkspace/ page_content.jsp"> <netuix:meta name="skeleton-resource-bundle" content="Bundle"/> <netuix:content> <netuix:gridLayout columns="1" markupType="Layout" markupName="singleColumnLayout"> <netuix:placeholder flow="vertical" markupType="Placeholder" markupName="singleColumn_columnOne"> <netuix:portletInstance markupType="Portlet" instanceLabel="Portlet-Instance-Label" contentUri="Portlet-URI"/> </netuix:placeholder> </netuix:gridLayout> </netuix:content> </netuix:page> </portal:root>
タブと 1 つまたは複数のサブタブを定義するポータル ブック (.book
) XML ファイルを作成するには、次の手順に従います。
コード リスト 6-7 のコードをコピーして、新しいテキスト ファイルに貼り付けます。そのファイルを、root-dir
の下にあるディレクトリに保存します。
たとえば、root-dir
/controls//MyApp.book
root-dir
は開発用のディレクトリです。詳細については、「開発環境の設定」を参照してください。
タブを定義するには、コード リスト 6-7 の値を以下のように置き換えます。
Book-Label
。ポータル フレームワークおよび WebLogic Server JSP タグがブックへのリクエストの転送に使用する、ユニークな識別子に変更します。これは、WebLogic Server の UI コントロールの多くに使用されているのと同じ種類のラベルです。「Administration Console の拡張ポイント」を参照してください。
Book-Title
。ユーザに対して表示するタブの名前、または作成したメッセージ バンドルのキーに変更します。
指定する値に「.」(ピリオド) が含まれている場合、Administration Console はこの値がキーであると想定し、メッセージ バンドルから値を検索しようとします。たとえば、My.Tab
と指定すると、Administration Console は My.Tab
というキーを持つプロパティの値を検索します。そのような値が見つからない場合は、タブ名として null
と表示します。値として My Tab
を指定すると、Administration Console は My Tab
と表示します。
Bundle
。作成したメッセージ バンドルの名前に変更します。netuix:book
要素の title
属性の値に「.」が含まれている場合にのみ、このバンドルが使用されます。「JSP でのメッセージ バンドルの作成と使用」を参照してください。
最初のサブタブを定義するには、コード リスト 6-7 の値を以下のように置き換えます。
Page-Label
。ポータル フレームワークおよび WebLogic Server JSP タグが、ページへのリクエストの転送に使用するユニークな識別子に変更します。
Page-Title
。ユーザに対して表示するサブタブの名前、または作成したメッセージ バンドルのキーに変更します。
指定する値に「.」(ピリオド) が含まれている場合、Administration Console はこの値がキーであると想定し、メッセージ バンドルから値を検索しようとします。
(省略可能) Metadata-Type
および Metadata-ID
。Administration Console の <wl:column-dispatch>
JSP タグをを使用してこのページへのハイパーテキスト リンクを作成する場合は、<netuix:meta>
要素を含めて Metadata-Type
および Metadata-ID
の値を指定します。「他のページに移動するためのテーブル カラムの作成」を参照してください。
Portlet-Instance-Label
。ポータル フレームワークおよび WebLogic Server JSP タグが、ポートレット インスタンスへのリクエストの転送に使用するユニークな識別子に変更します。
Portlet-URI
。作成したポートレット ファイルのパスとファイル名に変更します (「ポートレットの定義」を参照)。パスは、ポータル Web アプリケーションのルートに対する相対パスでなければなりません。
次に例を示します。
/portlets/monitorEJB.portlet
サブタブを追加で作成するには、コード リスト 6-7 の netuix:page
要素の兄弟として別の netuix:page
要素を追加します。
ポータル ブック XML ファイルの詳細については、『Portal Support Schema Reference』を参照してください。
この .book
ファイルでは、以下の要素も使用しています。
netuix:singleLevelMenu
は、ブック内の各ページに 1 つのサブタブを表示します。コード リスト 6-7 では、ブックの親 UI コントロールが WebLogic Server によって提供されることが前提になっていますが、これがブックの最上位のタブを生成する役割を果たします。
netuix:meta name="breadcrumb-context" content="handle"
は、ユーザがページを訪問した後に、訪問したページの履歴 (階層リンク) にそのページのタイトルを追加します。階層リンクは、ContentBook
の上位のデスクトップに表示されます。
コード リスト 6-7 サブタブを含む最上位タブを定義する .book ファイルのテンプレート
<?xml version="1.0" encoding="UTF-8"?> <portal:root xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0" xmlns:html="http://www.w3.org/1999/xhtml-netuix-modified/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:portal="http://www.bea.com/servers/netuix/xsd/portal/support/1.0.0" xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/portal/support /1.0.0 portal-support-1_0_0.xsd"> <netuix:book markupName="book" markupType="Book" definitionLabel="Book-Label" title="Book-Title"> <netuix:singleLevelMenu markupType="Menu" markupName="singleLevelMenu" skeletonUri="singlelevelmenu_children.jsp"/> <netuix:meta name="skeleton-resource-bundle" content="Bundle"/> <netuix:content> <netuix:page markupName="page" markupType="Page" definitionLabel="Page-Label" title="Page-Title" skeletonUri="/framework/skeletons/default/wlsworkspace/ page_content.jsp"> <netuix:meta name="Metadata-Type" content="Metadata-ID"/> <netuix:meta name="breadcrumb-context" content="handle"/> <netuix:meta name="skeleton-resource-bundle" content="Bundle"/> <netuix:content> <netuix:gridLayout columns="1" markupType="Layout" markupName="singleColumnLayout"> <netuix:placeholder flow="vertical" markupType="Placeholder" markupName="singleColumn_columnOne"> <netuix:portletInstance markupType="Portlet" instanceLabel="Portlet-Instance-Label" contentUri="Portlet-URI"/> </netuix:placeholder> </netuix:gridLayout> </netuix:content> </netuix:page> <!-- Add additional netuix:page elements here --> </netuix:content> </netuix:book> </portal:root>
既存の WebLogic Server タブに追加できるサブタブを作成するには、次の手順に従います。
ページ UI コントロールを定義する .book
ファイルを作成します。コード リスト 6-6 を参照してください。
netuix-extension.xml
ファイルで、サブタブを含める WebLogic Server ブック UI コントロールを指定します。「ContentBook へのタブまたはサブタブの追加」を参照してください。
ContentBook
内のブックやページは、必ずしもタブやサブタブでアクセスできるようにする必要はありません。要約テーブルを表示する多くの WebLogic Server ページは、NavTreePortlet からアクセスすることはできますが、タブ付きインタフェースからはアクセスできません (「図 2-5」を参照)。
これまでの節のすべてのコード リストは、子にアクセスするためのタブやサブタブを表示しない親コントロール内にも挿入できます。「ポートレットや UI コントロールの表示位置の指定」を参照してください。
ポートレットや UI コントロールを表示するすべての位置は、Administration Console 内の既存のコントロールに対する相対パスで指定する必要があります。たとえば、作成したポートレットが [システム状態] ポートレットの下のデスクトップに表示されるように指定できます。
ポートレットまたは UI コントロールの表示位置を指定するには、次の手順に従います。
netuix-extension.xml
という名前の XML ファイルを作成し、次のディレクトリに保存します。
root-dir
/WEB-INF
root-dir
は開発用のディレクトリです。詳細については、「開発環境の設定」を参照してください。
NetUI 拡張 XML ファイル (netuix-extension.xml
) は、拡張のデプロイメント記述子です。拡張の各親 UI コントロールと表示位置を宣言しています (コード リスト 6-8 を参照)。詳細については、『NetUI Extensions Schema Reference』を参照してください。
<weblogic-portal-extension>
ルート要素を作成します。
(省略可能) 拡張について説明する <provider-info>
要素を作成します。
この要素は、あくまで拡張の内容を説明するためのものです。ポータル フレームワークでこの要素内のデータが使用されることはありません。
次の要素を追加します。
<portal-file>/console.portal</portal-file>
この必須要素では、Administration Console の .portal
ファイル (現在拡張しているポータル) の名前と相対位置を指定します。
以下のいずれか 1 つを実行します。
ポートレットを Administration Console デスクトップに追加するには、netuix-extension.xml
ファイル内に以下のスタンザを作成します (コード リスト 6-8 を参照)。
<page-extension> <page-location> <parent-label-location label="page"/> <page-insertion-point layout-location="layout" placeholder-position="0"/> </page-location> <portlet-content content-uri="portlet-URI" title="title" orientation="top" default-minimized="false" instance-label="portlet-instance-label"/> </page-extension>
各値の説明は次のとおりです。
layout
は次のいずれかの値。
ポートレットを Administration Console の左側に表示する場合は 0
(ゼロ)。
拡張ポートレットは常に左の列の最上部に表示されます。
ポートレットを右側に表示する場合は 1
。
拡張ポートレットは常に右の列の最下部に表示されます。
portlet-URI
は、.portlet
ファイルのパスとファイル名。パスは、ポータル Web アプリケーションのルートに対する相対パスでなければなりません。
title
は、ポートレットのタイトルバーに表示されるタイトル。null 値を指定した場合は、.portlet
ファイルに定義したタイトルが使用されます。
portlet-instance-label
は、ポータル フレームワークおよび WebLogic Server JSP タグが、ポートレット インスタンスへのリクエストの転送に使用するユニークな識別子。
タブを表示するコントロールを追加するには、netuix-extension.xml
ファイル内に以下のスタンザを作成します (コード リスト 6-8 を参照)。
<book-extension> <book-location> <parent-label-location label="Admin-Console-Book-Label"/> <book-insertion-point action="append"/> </book-location> <book-content content-uri="book-URI"/> </book-extension>
各値の説明は次のとおりです。
Admin-Console-Book-Label
は、子ブックにアクセスするためのタブを表示する Administration Console ブック コントロールの definitionLabel
。
book-URI
は、タブ (および指定した場合はサブタブ) のブック コントロールを定義する .book
ファイルのパスとファイル名。パスは、ポータル Web アプリケーションのルートに対する相対パスでなければなりません。
既存のタブにサブタブを表示するコントロールを追加するには、前の手順と同じスタンザを作成し、次の値を指定します。
Admin-Console-Book-Label
は、子ページにサブタブを表示する Administration Console ブック コントロールの definitionLabel。
book-URI
は、サブタブのページ コントロールを定義する .book
ファイルのパスとファイル名。パスは、ポータル Web アプリケーションのルートに対する相対パスでなければなりません。
コード リスト 6-8 は、タブを WebLogic Server の [ドメイン] タブに、サブタブを [ドメイン : コンフィグレーション] タブに、ポートレットをコンソールのデスクトップに追加する netuix-extension.xml
ファイルです。
コード リスト 6-8 netuix-extension.xml ファイルのサンプル
<?xml version="1.0" encoding="UTF-8"?> <weblogic-portal-extension xmlns="http://www.bea.com/servers/portal/weblogic-portal/8.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/servers/portal/weblogic-portal/ 8.0 netuix-extension-1_0_0.xsd"> <provider-info> <title>My Extension</title> <version>1.0</version> <description>Inserts a portlet on the desktop, a tab next to Domains:Configuration, and a subtab under Domains: Configuration. </description> <author>Me</author> <last-modified>02/03/2005</last-modified> <support-url>http://www.mycompany/support/index.jsp</support-url> </provider-info> <portal-file>/console.portal</portal-file> <!-- [ドメイン] タブにタブを追加する --> <book-extension> <book-location> <parent-label-location label="CoreDomainConfigGeneralBook"/> <book-insertion-point action="append"/> </book-location> <book-content content-uri="/controls/page.book"/> </book-extension> <!-- [ドメイン : コンフィグレーション] タブにサブタブを追加する --> <book-extension> <book-location> <parent-label-location label="DomainconfigTabPage"/> <book-insertion-point action="append"/> </book-location> <page-content content-uri="/controls/notespage.book"/> </book-extension> <!-- コンソールのデスクトップにポートレットを追加する --> <page-extension> <page-location> <parent-label-location label="page"/> <page-insertion-point layout-location="0" placeholder-position="0"/> </page-location> <portlet-content content-uri="/portlets/desktop/desktop_view.portlet" title="My App Status" orientation="top" default-minimized="false" instance-label="PortletExtensionInstanceLabel" /> </page-extension> </weblogic-portal-extension>
ドメイン構造ポートレット (NavTreePortlet) には、Administration Console のコンテンツに移動するために使用できるツリー コントロールが含まれています。ツリー内の各ノードは UI ページ コントロールへのリンクです。ノードにはサブノードを含めることができます。
拡張では、ツリー内の任意の場所に単一のノードを追加できます。他のノード (ノード ツリー) 含むノードを任意の場所に追加することもできます。たとえば、既存のナビゲーション ツリーのルートにノードまたはノード ツリーを追加できます。また、[環境] ノードにノードまたはノード ツリーを追加できます。(図 6-2 を参照してください)。
以下の節では、NavTreePortlet へのノードの追加について説明します。
ページ コントロールの 1 つにリンクするノードを追加するには、コントロールの .book
ファイル内の netuix:page
要素に、次の属性と属性値を追加します。
backingFile="com.bea.console.utils.NavTreeExtensionBacking"
たとえば、作成したページへのリンクを追加する場合、そのページを定義する .book
ファイルに backingFile
属性を追加します。
<netuix:page definitionLabel="MyAppTableBook" title="My Page" markupName="page" markupType="Page" backingFile="com.bea.console.utils.NavTreeExtensionBacking" >
NavTreePortlet により、そのページ要素の title
属性の値がリンク テキストとして表示されます。図 6-3 を参照してください。
title
属性の値をメッセージ バンドルのキーにした場合は、そのキーにマッピングされたローカライズ済みの値が表示されます。メッセージ バンドル名は、ページ コンフィグレーションにメタデータを追加することによって指定します。<netuix:meta>
要素を <netuix:page>
の子として追加します。以下に例を示します。
<netuix:page definitionLabel="MyAppTableBook" title="My Page"> <netuix:meta name="skeleton-resource-bundle" content="3rdbundlename" /> ... </netuix:page>
NavTreePortlet に追加するノードの位置を制御する場合や、ノード ツリーを追加する場合は、独自の NavTreeExtensionBacking
バッキング クラスを実装します。
以下の節では、ノードまたはノード ツリーの追加または挿入について説明します。
NavTreeBacking
クラスを作成するには、(コード リスト 6-9 を参照)。
com.bea.console.utils.NavTreeExtensionBacking
を拡張します。
このクラスは、あらかじめ WebLogic Server 実行時環境で利用できる状態になっています。ただし、開発とコンパイルの環境をサポートするためには、以下の JAR を環境のクラスパスに追加する必要があります。
WL_HOME
/server/lib/consoleapp/webapp/WEB-INF/lib/console.jar
WL_HOME
/server/lib/consoleapp/webapp/WEB-INF/lib/netuix_servlet.jar
WL_HOME
は、WebLogic Server のインストール先ディレクトリです。
NavTreeExtensionBacking.getTreeExtension(
PageBackingContext ppCtx, String extensionUrl, HttpServletRequest request)
メソッドをオーバーライドします。
このメソッドの実装で以下を行います。
親ノードの com.bea.jsptools.tree.TreeNode
オブジェクトを作成します。
次のコンストラクタを使用します。
TreeNode(String nodeId, String nodeName, String nodeUrl)
各値の説明は次のとおりです。
nodeId
は、コントロールの definitionLabel
の値です。PageBackingContext.getDefinitionLabel()
を使用してこの値を取得できます。代わりに、コントロールの .book
ファイル内の definitionLabel
の値を入力することもできます。
nodeName
は、NavTreePortlet に表示するテキストです。テキストを含む String
オブジェクトを作成できます。または、PageBackingContext.getTitle()
を使用して、ページの .book
ファイルからこの値を取得できます。
nodeURL
は、そのコントロールの URL です。このパラメータの値として extensionUrl
を指定します。
ノードのツリーを追加する場合は、別の TreeNode
オブジェクトを親 TreeNode
の子として作成します。
各子ノードで、次のコンストラクタを使用します。
TreeNode(String nodeId, String nodeName, String nodeUrl, TreeNode parent)
各値の説明は次のとおりです。
nodeId
は、コントロールの definitionLabel
の値です。PageBackingContext.getDefinitionLabel()
を使用してこの値を取得することはできません。これは、このメソッドで使用できる PageBackingContext
が親ノード用であるためです。代わりに、コントロールの .book
ファイル内の definitionLabel
の値を入力する必要があります。
nodeName
は、NavTreePortlet に表示するテキストです。
nodeURL
は、そのコントロールの URL です。次の値を指定します。
/console/console.portal?_nfpb=true&_pageLabel=definitionLabel
definitionLabel
はリンク先のページの definitionLabel
です。
parent
には、作成した TreeNode
のいずれかを指定します。ノード ツリーに複数のレベルを作成するには、階層内でより上位にあるノードの子を親として指定します。
親 TreeNode
オブジェクトを com.bea.console.utils.NavTreeExtensionEvent
のコンストラクタに渡します。
次のコンストラクタを使用します。
NavTreeExtensionEvent(String pageLabel, String url, String parentPath, TreeNode node, int ACTION)
各値の説明は次のとおりです。
pageLabel
は、親ノードの TreeNode
オブジェクトを作成したときに使用した nodeID
と同じ値です。
url
は、親ノードの TreeNode
オブジェクトを作成したときに使用した nodeURL
と同じ値です。
parentPath
は、ノードに表示するノードの名前です。NavTreePortlet のナビゲーション ツリーのルートを表すには /
(スラッシュ) を使用します。
たとえば、ノードまたはノード ツリーを最上位に表示する場合は /
を指定します。ノードを [環境] の子として表示する場合は、/Environments
を指定します。
node
手順 a で作成した親 TreeNode です。
ACTION
は、NavTreeExtensionEvent.APPEND_ACTION
です。使用できるその他のアクションについては、『WebLogic Server Administration Console API リファレンス』の「NavTreeExtensionEvent」を参照してください。
作成した NavTreeExtensionEvent
オブジェクトを返します。
コンパイルしたクラスを、拡張の WEB-INF/classes
ディレクトリ内のパッケージ構造に保存します。
コード リスト 6-9 NavTreeExtensionBacking クラスのサンプル
package com.mycompany.consoleext; import com.bea.netuix.servlets.controls.page.PageBackingContext; import com.bea.jsptools.tree.TreeNode; import com.bea.console.utils.NavTreeExtensionBacking; import com.bea.console.utils.NavTreeExtensionEvent; public class CustomNavTreeExtension extends NavTreeExtensionBacking { public NavTreeExtensionEvent getTreeExtension(PageBackingContext ppCtx, String extensionUrl){ /* * このメソッドを呼び出したコントロールの TreeNode を作成する。 */ TreeNode node = new TreeNode(ppCtx.getDefinitionLabel(), ppCtx.getTitle(),extensionUrl); /* * 子 TreeNode を作成する。 */ TreeNode node1 = new TreeNode("MyAppGeneralTabPage", "MyApp General", "/console/console.portal?_nfpb=true&_pageLabel=MyAppGeneralTabPage", node); /* * 親ノード (その子ノードを含む) を NavTreePortlet の * Environment ノードの下に追加する。 */ NavTreeExtensionEvent evt = new NavTreeExtensionEvent(ppCtx.getDefinitionLabel(),extensionUrl, "/Environment",node); return evt; } }
NavTreeBacking クラスを呼び出して、「例 : NavTreeExtensionBacking クラスによる NavTreePortlet へのノード ツリーの追加方法」に示すプロセスを開始するには、次の手順に従います。
親ノードとして追加する UI ページ コントロールを決定します。
NavTreePortlet にノードとして追加できるのはページ コントロールのみです。
コントロールの .book
ファイルにある netuix:page
要素に、次の属性と属性値を追加します。
backingFile="your-NavTreeBacking-class"
your-NavTreeBacking-class
は、手順 1 で作成したクラスの完全修飾名です。
以下の例では、NavTreeExtensionBacking
クラスにおいて、図 6-4 に示したノード ツリーを追加する方法について説明します。
ポータル フレームワークは拡張をロードすると、拡張の .book
ファイルを解析して netuix:page
要素を検索します。
次に例を示します。
<netuix:page definitionLabel="MyAppTablePage" title="My App" markupName="page" markupType="Page" backingFile="com.mycompany.utils.MyNavTreeExtension" >
ポータル フレームワークは com.bea.netuix.servlets.controls.page.PageBackingContext
オブジェクトをインスタンス化します。このインスタンスはページ UI コントロールをメモリ内で表現したものです。オブジェクトには、ページ コントロールの title
や definitionLabel
について記述したプロパティが含まれています。
ポータル フレームワークは netuix:page
要素内の backingFile
属性を見つけると、指定されたクラス (MyNavTreeExtension
) を初期化し、ページの PageBackingContext
オブジェクトに渡してクラスを作成します。ページ コントロールの URI を含む String
オブジェクトも渡します。
MyNavTreeExtension
クラスは、次のことを行います。
PageBackingContext
オブジェクトから title
と definitionLabel
の値を取得します。
com.bea.jsptools.tree.TreeNode
オブジェクトを作成して、ページ コントロールの URI と一緒に title
と definitionLabel
の値をコンストラクタに渡します。
「Monitor EJBs」および「Log Messages」というタイトルの 2 つのページ用に、さらに 2 つの TreeNode
オブジェクトを作成します。
この 2 つのページの PageBackingContext
オブジェクトまたは URI を取得する方法はないため、値を MyNavTreeExtension
クラス内にハードコード化する必要があります。
ページを「My App」ページ ノードの子ノードにするため、MyNavTreeExtension
クラスは、親ノードの名前を受け取る TreeNode
コンストラクタのフォームを使用します。次に例を示します。
TreeNode childnode1 = new TreeNode("MyAppMonitorEJB", "Monitor EJBs", "/console/console.portal?_nfpb=true&_pageLabel=MyAppMonitorEJB", node);
com.bea.console.utils.NavTreeExtensionEvent
オブジェクトを作成して返します。
NavTreeExtensionEvent
オブジェクトには、作成した TreeNode
オブジェクトが記述されており、ノード ツリーを追加する既存のナビゲーション ツリー内の位置が示されています。
NavTreePortlet は NavTreeExtensionEvent
オブジェクトをリスンします。ポートレットはツリーを初期化した後、ブロードキャストされる NavTreeExtensionEvent
オブジェクトで指定されているとおりにノードを追加します。
カスタム セキュリティ プロバイダを作成し、プロバイダを管理する MBean を WebLogic MBeanMaker を使用して作成した場合、Administration Console ではそのプロバイダのコンフィグレーション データを表示するページが自動的に生成されます。また、[セキュリティ : プロバイダ] テーブルからそのプロバイダ ページへのリンクも生成されます。
しかし、独自のページを作成してこの表示をカスタマイズすることもできます。独自のページを作成した場合は、[セキュリティ : プロバイダ] テーブルからのリンク先を、Administration Console によって自動生成されたページからカスタム ページに変更する必要があります。
リンク先を変更するには、作成したページの <netuix:page>
要素の子として次の要素を含めます。
<netuix:meta type="configuration" content="MBean-class-name"/>
MBean-class-name
作成したプロバイダの MBean クラスの完全修飾名です。
たとえば、
<netuix:page markupName="page" markupType="Page" definitionLabel="SimpleSampleAuthorizerAuthorizerConfigCommonTabPage" title="tab.common.label" skeletonUri="/framework/skeletons/default/wlsworkspace /page_content.jsp"> <netuix:meta name="configuration" content="examples.security.providers.authorization.simple. SimpleSampleAuthorizerMBean"/> <netuix:content> ...