![]() ![]() ![]() ![]() |
Administration Console では、すべてのコンテンツがポートレット内に格納されるため、拡張を最低限にする場合でもポートレット (およびポートレットのコンテンツ) を定義しなければならない場合がほとんどです。ポートレットをデスクトップに直接追加することもできますが、ポートレットを ContentBook
内のタブやサブタブとして表示する場合は、それを格納するブックまたはページを定義する必要があります。拡張で NavTreePortlet にノードを追加することもできます。そうすることで、追加したポートレットに、ユーザがデスクトップから直接移動できるようになります。
この節では、ポートレット、UI コントロール、および NavTreePortlet ノードを Administration Console に追加する方法について説明します。
図 6-1 にこのプロセスを示します。プロセスの手順、および各手順の結果については、表 6-1 を参照してください。以下の節では、各手順について詳しく説明します。
ポートレットは XML ファイルで定義します。ポートレットの定義には、ロードするデータの種類 (JSP、Struts Action、または Beehive ページ フロー) についての指示が含まれます。以下の節では、ポートレットを定義する方法について説明します。
ポートレット XML ファイルの詳細については、『Portal Support Schema Reference』の portlet エントリを参照してください。
JSP をロードするポートレットを定義するには、次の手順に従います。
root-dir
/portlets
に新しいテキスト ファイルを作成し、コード リスト 6-1 のコードをコピーして貼り付けます (「拡張のディレクトリ ツリーの作成」を参照)。
次の命名規約を使用することをお勧めします。content-name
.portlet
content-name
は、ポートレットに格納する JSP ファイルの名前です。たとえば、ポートレットに monitorEJB.jsp
という名前の JSP ファイルを格納する場合は、ポートレット XML ファイルの名前を monitorEJB.portlet
にします。
Label
。ポータル フレームワークでこのポートレットを特定するためのユニークな識別子に変更します。Title
。タイトル バーが表示される場合にこのポートレットが表示するデフォルトのタイトルを指定します。「ポートレットのタイトル バーの表示」を参照してください。URI
。ポートレットに格納する JSP の絶対パスとファイル名に変更します。絶対パスは、拡張のルートから始めます。
次に例を示します。/ext_jsp/monitorEJB.JSP
<?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 の名前です。
Label
。ポータル フレームワークでこのポートレットを特定するためのユニークな識別子に変更します。Title
。タイトル バーが表示される場合にこのポートレットが表示するデフォルトのタイトルを指定します。「ポートレットのタイトル バーの表示」を参照してください。Struts-module
。Struts Action を定義する Struts モジュールを指定します。
独自の Struts モジュールを作成して、Administration Console の拡張を使用する Action および ActionForm を定義する必要があります。デフォルトの Struts モジュールは BEA 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 に転送されます。
<?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-path
action=""
refresh-action-path
refreshAction=""/>
</netuix:portlet>
</portal:root>
Beehive ページ フローをロードするポートレットを定義するには、次の手順に従います。
root-dir
/portlets
に新しいテキスト ファイルを作成し、コード リスト 6-3 のコードをコピーして貼り付けます (「拡張のディレクトリ ツリーの作成」を参照)。
次の命名規約を使用することをお勧めします。pageFlow-name
.portlet
pageFlow-name
はポートレットがロードする (ポートレットの転送先となる) ページ フローの名前です。たとえば、ポートレットが myPageFlow.jpf
というページ フローに転送される場合は、ポートレット XML ファイルの名前を myPageFlow.portlet
にします。
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 ファイルの絶対パスとファイル名を指定します。 <?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:minimize/>
<netuix:maximize/>
</netuix:titlebar>
コード リスト 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> 要素内に以下の属性があります。
バッキング クラスは、ポータル フレームワーク API と直接対話する Java クラスです。ローカライズされたポートレット タイトルを取得するバッキング クラスを作成するには、次の手順に従います。
com.bea.netuix.servlets.controls.content.backing.AbstractJspBacking
AbstractJspBacking.preRender(HttpServletRequest request, HttpServletResponse response)
メソッドを実装します。
『WebLogic Portal API Reference』の「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
はメッセージ バンドルから取得した値です。
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 つまたは複数のポータル ブック (.book
) ファイルに保存します。コントロールの階層グループごとに 1 つの .book
ファイルを作成します。たとえば、最上位のタブとそのサブタブを作成するブック用に 1 つの .book
ファイルを作成します。また、既存の WebLogic Server タブにサブタブを追加するページ用にも別の .book
ファイルを作成します。.book
ファイルのルート要素 (portal:root
) には、直接の子要素を 1 つのみ持たせることができます。その子要素には、複数の子を持たせることができます。
サブタブのないタブ ([ドメイン : メモ] など) を定義するポータル ブック (.book
) XML ファイルを作成するには、次の手順に従います。
たとえば、root-dir
/controls//MyApp.book
というファイルを作成します。root-dir
は開発用のディレクトリです。詳細については、「開発環境の設定」を参照してください。
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 アプリケーションのルートに対する相対パスでなければなりません。
コード リスト 6-6 では、ブックではなくページを定義している点に留意します。こうすることで、Administration Console のルック アンド フィールによって、ページがサブタブのないタブとして表示されます。
<?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 ファイルを作成するには、次の手順に従います。
root-dir
の下にあるディレクトリに保存します。
たとえば、root-dir
/controls//MyApp.book
というファイルを作成します。root-dir
は開発用のディレクトリです。詳細については、「開発環境の設定」を参照してください。
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 でのメッセージ バンドルの作成と使用」を参照してください。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 アプリケーションのルートに対する相対パスでなければなりません。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
の上位のデスクトップに表示されます。<?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 タブに追加できるサブタブを作成するには、次の手順に従います。
.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
ファイル (現在拡張しているポータル) の名前と相対位置を指定します。
ポートレットを Administration Console デスクトップに追加するには、netuix-extension.xml
ファイル内に以下のスタンザを作成します (コード リスト 6-8 を参照)。
<page-extension>
layout
<page-location>
<parent-label-location label="page"/>
<page-insertion-point layout-location=""
portlet-URI
placeholder-position="0"/>
</page-location>
<portlet-content
content-uri="" title="
title"
portlet-instance-label
orientation="top" default-minimized="false"
instance-label=""/>
</page-extension>
タブを表示するコントロールを追加するには、netuix-extension.xml
ファイル内に以下のスタンザを作成します (コード リスト 6-8 を参照)。
<book-extension>
Admin-Console-Book-Label
<book-location>
<parent-label-location label=""/>
book-URI
<book-insertion-point action="append"/>
</book-location>
<book-content content-uri=""/>
</book-extension>
既存のタブにサブタブを表示するコントロールを追加するには、前の手順と同じスタンザを作成し、次の値を指定します。
コード リスト 6-8 は、ポートレットをコンソールのデスクトップに、タブを WebLogic Server の [ドメイン] タブに、サブタブを [ドメイン : コンフィグレーション] タブに追加する 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>
<!-- コンソールのデスクトップにポートレットを追加する -->
<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>
<!-- [ドメイン] タブにタブを追加する -->
<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>
</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
属性の値をメッセージ バンドルのキーにした場合は、そのキーにマッピングされたローカライズ済みの値が表示されます。
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)
メソッドをオーバーライドします。com.bea.jsptools.tree.TreeNode
オブジェクトを作成します。
次のコンストラクタを使用します。TreeNode(String
nodeId
, String
nodeName
, String
nodeUrl
)
各値の説明は次のとおりです。
nodeId
は、コントロールの definitionLabel
の値です。PageBackingContext.getDefinitionLabel()
を使用してこの値を取得できます。代わりに、コントロールの .book
ファイル内の definitionLabel
の値を入力することもできます。
nodeName
は、NavTreePortlet に表示するテキストです。テキストを含む String
オブジェクトを作成できます。または、PageBackingContext.getTitle()
を使用して、ページの .book
ファイルからこの値を取得できます。
注意 : | PageBackingContext.getTitle() メソッドは .book ファイル内の title 属性のリテラル値を返します。この値がキーであるとは想定しないため、メッセージ バンドルから値を検索しようとはしません。NavTreeExtensionBacking クラスでローカライゼーションをサポートする必要がある場合は、ロケールを検索するロジックをクラスに含めます。PageBackingContext.getTitle() メソッドを使用して title 値を取得し、メッセージ バンドルから対応する値を検索します。そのようなロジックの例については、コード リスト 6-5 を参照してください。この例では (ページ タイトルではなく) ポートレット タイトルをローカライズしています。 |
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 Reference』の「NavTreeExtensionEvent
」を参照してください。
NavTreeExtensionEvent
オブジェクトを返します。WEB-INF/classes
ディレクトリ内のパッケージ構造に保存します。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 へのノード ツリーの追加方法」に示すプロセスを開始するには、次の手順に従います。
以下の例では、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
の値をコンストラクタに渡します。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
オブジェクトが記述されており、ノード ツリーを追加する既存のナビゲーション ツリー内の位置が示されています。
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>
...
![]() ![]() ![]() |