ヘッダーをスキップ

Oracle WebCenter Framework WebCenterアプリケーションの構築 - ステップ・バイ・ステップ
10g(10.1.3.2.0)

E05617-02
目次
目次
索引
索引

戻る 次へ

5 パブリックなようこそページの作成

この章では、ようこそページをSRDemoアプリケーション内に作成し、ユーザー用にカスタマイズする方法について説明します。エンド・ユーザーにお知らせのテキストを表示するリッチ・テキスト・コンポーネントを追加し、第4章「コンテンツ・リポジトリの設定」で設定したサンプルのコンテンツ・リポジトリからファイルを所定の場所に表示します。次に、ようこそページをパブリックにしてユーザー全員が表示できるようにし、「Login」リンクを追加してユーザーがユーザーIDおよびパスワードを入力すると専用のアプリケーションに情報を表示できるようにします。作成するようこそページは、図5-1のような外観です。

図5-1    ようこそページの全体像


画像の説明

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

手順1: リッチ・テキスト・コンポーネントの追加

この項の手順では、リッチ・テキスト・コンポーネントをアプリケーション内の既存のようこそページに追加する方法を示します。このリッチ・テキスト・コンポーネントは、パブリック・ユーザーへのお知らせを表示します。会社の管理者は、サイト管理のアクセス権があるため、実行時にこのお知らせを更新できます。

リッチ・テキスト・コンポーネントを追加するには、次のようにします。

  1. SRDemoSample_Starterアプリケーションから、SRWelcome.jspxページの「設計」ビューを開きます。このページは、「UserInterface」「Webコンテンツ」「app」の下にあります。

  2. イメージacmecenter.jpgを探します。

  3. 「ソース」タブをクリックしてページのソース・コードを表示します。

  4. 次のコードを削除して、ページからイメージを削除します。

             <af:objectImage height="376" 
                     width="800"
                     source="../images/acmecenter.jpg"/>
    

    この時点で、ソース・コードのその部分は、図5-2のようになります。

    図5-2    acmecenter.jpgが削除されたpanelGroup


    画像の説明

    今度は、この場所にリッチ・テキスト・ポートレットを追加します。

  5. リッチ・テキスト・ポートレットを追加するには、まず、そのポートレットを登録します。しかし、リッチ・テキスト・ポートレット・プロデューサ用の登録URLを検出するために、先に次の手順を実行します。

    1. Preconfigured OC4Jを起動します。

    2. readmeページがデフォルトで開かない場合は、「ヘルプ」メニューから「WebCenter Preconfigured OC4J README」を選択します。

    3. readmeページの「Index Page」セクションで、「index page」リンクをクリックします。

    4. WebCenter Preconfigured OC4Jの索引ページで、「WSRP Portlet Producers」の下の「Rich Text Portlet Producer」をクリックします。

    5. 「WSRP v2 WSDL」をクリックします。

    6. ブラウザのアドレス・バーからURLを保存します。プロデューサの登録時に、このURLを使用します。

  6. リッチ・テキスト・ポートレット・プロデューサを登録するには、「UserInterface」プロジェクトを右クリックし、「新規」を選択します。

  7. 「新規ギャラリ」ダイアログ・ボックスで、「すべてのテクノロジ」でフィルタ処理し、「Web Tier」「Portlets」の順に選択し、「WSRPプロデューサの登録」を選択します。

  8. 「名前」フィールドにRichTextPortletProducerと入力し、「次へ」をクリックします。

  9. 「URLエンドポイント」フィールドに、Preconfigured OC4JでのWSRP v2プロデューサのWSDL用のURLを入力します。これは、手順5で保存したURLです。

  10. 「次へ」をクリックし、「終了」をクリックします。

  11. 「構造」ペインで、元々イメージが含まれていた「panelHorizontal」コンポーネントをクリックして選択します。

  12. コンポーネント・パレットから、「RichTextPortletProducer」を選択し、リストから「Rich Text Portlet」を選択します。新しいポートレットが、panelHorizontalコンポーネント内に表示されます。

  13. 「Rich Text Portlet」を選択し、プロパティ・インスペクタを開きます。

  14. AllModesSharedScreenプロパティをtrueに設定します。

  15. Width600ピクセルに設定します。

  16. 「SRWelcome.jspx」を右クリックしてページ定義に移動します。

  17. 認可を編集し、Customize権限をmanagerに付与します。

    この作業は、管理者がページ上のリッチ・テキスト・ポートレットのコンテンツをカスタマイズできる必要があるため、実行する必要があります。

  18. ページを保存します。

  19. アプリケーション・ナビゲータで、「SRWelcome.jspx」を右クリックし、「実行」を選択します。

    すべてのJSPおよびJSPXファイルに対する標準的なJ2EEセキュリティ制約のため、デフォルトのSRDemoログイン・ページに自動的にリダイレクトされます。このログイン・ページは、静的HTMLを含む単純なJSPページです。ahunoldskingおよびdfavietの3種類のユーザーとしてログインできます(図5-3を参照)。

    図5-3    SRDemoログイン・ページ


    画像の説明

    skingとしてログインすると、次の図の右端に示されている管理タブを含め、すべてのタブが表示されます。

    実行時のポートレットは、図5-4のような外観です。

    図5-4    管理者としてログインしたときに表示されるタブ


    画像の説明

    ahunoldとしてログインすると、管理タブは表示されません。これは、ahunoldが管理者ではないためです。

  20. ブラウザで、リッチ・テキスト・ポートレット上の矢印をクリックし、「Customize」を選択してポートレットのテキストをカスタマイズします。

  21. ポートレットをカスタマイズして、次のテキストを組み込みます。

    Welcome to My Acme Corporation!
    
    Introducing the Service Request Portal (Version 5.0)
    
    Here you can get help with questions and/or issues with your My Acme appliance.
    
    View the My Acme page to view your current service request information such as 
    status, history, and much more. Now available, product manuals for the new 
    Fridge Freezer F011s appliance.
    

    このテキストを書式設定するには、次のようにします。


    注意

    テキストの書式設定に関する問題を回避するには、まず、このテキストをメモ帳にコピーし、次にメモ帳からポートレットにテキストをコピーします。 


    1. 第1文を選択し、大きなフォントを選択して「太字」アイコンをクリックします。

    2. テキストにハイパーリンクを作成するには、My Acmeテキスト(サンプル・テキストの下線部)を選択し、リッチ・テキスト・エディタの「ハイパーリンク」アイコンをクリックします。次のように、選択したURLをフィールドに入力します。

      http://localhost:port/SRDemo/faces/app/SRWelcome.jspx
      

手順2: 所定の場所でのファイルの表示

コンテンツ管理システムを使用してコンテンツを表示する方法について、ユーザーには多くの選択肢があります。一般的な方法はコンテンツをリンクとして表示することですが、開発者は、書式設定などの理由で、テキストまたはHTMLファイルのコンテンツをアプリケーション内に直接表示することが必要な場合もあります。JCRを使用すると、ファイルを所定の場所に表示でき、コンテンツ管理システム内からもコンテンツを管理できます。

この項の手順では、コンテンツ・リポジトリのファイルを既存のページ上に表示する方法を示します。これにより、ページをレンダリングするアプリケーションを変更せずにページを編集できます。

ファイルを所定の場所に表示するには、次のようにします。

  1. 既存のSRWelcome.jspxページをまだ開いていない場合は、「SRDemoStarter」「UserInterface」「Webコンテンツ」「app」から開きます。

  2. 「ADF Faces Core」ライブラリから、「panelHorizontal」を選択してpanelPage上の、リッチ・テキスト・ポートレットが含まれるpanelHorizontalの下にドラッグします。

  3. panelHorizontalのhaligncenterに設定します。

  4. データ・コントロール・パレットで、「SRContentRepository」を開きます。このデータ・コントロールは、第4章「手順3: JCRデータ・コントロールの構成」ですでに作成しています。

    ヒント

    データ・コントロール・パレットが表示されない場合は、「表示」メニューから「データ・コントロール・パレット」を選択します。 

  5. 「getURI(String)」の下の「Return」ノードを開き、「URI」図5-5)をpanelHorizontalにドラッグします。

    図5-5    データ・コントロール・パレットでのgetURI


    画像の説明

  6. 「作成」メニューから「テキスト」「ADF出力テキスト」の順に選択します。

    アクション・バインディング・エディタが表示されます(図5-6を参照)。

    図5-6    アクション・バインディング・エディタ


    画像の説明

  7. pathパラメータの「値」フィールドに、/welcome.htmlと入力します。

  8. 「OK」をクリックします。

  9. ページのソースを表示し、例5-1に示すコードをOutputTextの下に追加します。

    例5-1    getURIのサンプル・コード

    <f:verbatim>
       <iframe height="450" width="850" 
    src="${pageContext.request.contextPath}${bindings['getURI_returnURI'].inputValue}" 
    frameborder="0">
    </iframe>
    </f:verbatim>
    
  10. ファイルを保存します。

  11. SRWelcome.jspxを実行します。

パブリック・ユーザーによるgetURIメソッドの実行の可能化

ようこそページはパブリック・ページであるため、パブリック・ユーザーがgetURIメソッド(コンテンツ・リポジトリのファイルを表示するために使用)を実行できるように定義する必要があります。

アクセス権限を変更するには、次のようにします。

  1. ページ定義を開きます。

  2. 「構造」ペインで、「bindings」の下の「getURI1」を右クリックします。

  3. ポップアップ・メニューから、「認可の編集」を選択します。

    ユーザー権限の設定の詳細は、『Oracle WebCenter Framework開発者ガイド』の「WebCenterアプリケーションの保護」を参照してください。

  4. ダイアログ・ボックスで、メソッドoracle.SRDemo.......getURI1_returnのanyoneロールに対してinvokeを選択します。

OutputTextによって生成されたURLとともにようこそページが表示されます。Oracle JDeveloperに戻って、「構造」ペインからこのOutputTextを削除します。

手順3: グローバル・ナビゲーション・リンクの追加

SRWelcome.jspxを実行すると、デフォルトのSRDemoアプリケーションのログイン・ページにリダイレクトされます。作業開始時のバージョンのSRDemoでは、アプリケーション内の認可はJ2EEセキュリティ・ロール・メンバーシップによって実行されます。

J2EEセキュリティは、ロールに基づいてパスを保護します。制約は特定のURLパターンに対して定義され、これらのURLパターンは制約にマップされ、制約はロールにマップされます。たとえば、URLパターンfaces/app/*を使用可能なロールすべてにマップして、その特定のロールを持つユーザー全員がアプリケーション内のすべてのページにアクセスできようにすることが可能です。アプリケーションが認識するように制約をweb.xmlファイルに構成できます。たとえば、例5-2に示すように(新しい制約は太字テキストで表示)、managerロールをURLパターンfaces/app/manager/*にマップする制約を構成できます。

例5-2    web.xmlファイルでのセキュリティ制約の例

<!-- Security Constraints ================================================== -->
 <security-constraint>
   <web-resource-collection>
     <web-resource-name>J2EE-Secured-Application</web-resource-name>
     <url-pattern>faces/app/*</url-pattern>
   </web-resource-collection>
   <auth-constraint>
      <role-name>user</role-name>
      <role-name>staff</role-name>
      <role-name>technician</role-name>
      <role-name>manager</role-name>
   </auth-constraint>
 </security-constraint>
<security-constraint>
   <web-resource-collection>
     <web-resource-name>J2EE-Secured-Application</web-resource-name>
     <url-pattern>faces/app/manager/*</url-pattern>
   </web-resource-collection>
   <auth-constraint>
      <role-name>manager</role-name>
   </auth-constraint>
 </security-constraint>

セキュリティ制約の定義の詳細は、『Oracle WebCenter Framework開発者ガイド』の「WebCenterアプリケーションの保護」を参照してください。

実行時、デプロイメント・ディスクリプタにより、ロールはIDストアにマップされます。ポリシー(どのユーザーがどのロールに属し、何にアクセスできるかの定義)は、JAZN-XMLやJAZN-LDAPなどのJAZNリソース・プロバイダに指定されます。JAZN-XMLは設定をsystem-jazn-data.xmlファイルに指定し、JAZN-LDAPはOracle Internet Directoryを使用できます。Oracle JDeveloper開発環境では、system-jazn-data.xmlファイルを使用してこのポリシー情報を格納します(例5-3を参照)。

例5-3    system-jazn-data.xmlファイルでのユーザーとロールのマッピング定義

<role>
  <name>manager</name>
  <members>
   <member>
      <type>user</type>
      <name>sking</name>
   </member>
  </members>
</role>

さらに、式言語をアプリケーション内で使用して、管理者にのみ表示される管理タブのように、特定のメニュー項目を表示/非表示にすることができます。図5-7に、managerロールのメンバーシップに基づいて管理タブを表示または非表示にする方法を示します。

図5-7    メンバーシップに基づいたUI要素の表示


画像の説明

これは内部的にUserInfoクラスのisManager関数にマップされます。この関数は、名前付きロールのメンバーシップを特定します(例5-4を参照)。

例5-4    表示するUI要素を定義するEL

/**
  * Function designed to be used from EL for rendering UI Features based on 
  * membership of the "manager" role.
  * @return boolean
  */
 public boolean isManager() {
        return (checkIsUserInRole("manager"));
 }

WebCenterバージョンのSRDemoでは、ロール・メンバーシップではなく、特定のアクションを実行する能力に基づいた、よりきめ細かいセキュリティ・モデルを実装する必要があります。

URLに基づいたJ2EEセキュリティとは異なり、JAASベースのADFセキュリティを使用すると、特定のページに対して異なるアクセス・レベルを実装できます。たとえば、View、CustomizeおよびEditがあります。

ADFセキュリティベースのグローバル・ナビゲーション・リンクをページに追加するには、次の手順を実行します。

  1. アプリケーション・ナビゲータで、「SRWelcome.jspx」を開きます。

  2. 「構造」ペインで、「menuGlobal PanelPage facets」に移動します。

  3. 「設計」ビューで、menuButtonsコンポーネントをmenuGlobalの上にドラッグします。

  4. 次に、3つのCommandMenuItemsをページ右上隅のmenuGlobalファセットにドラッグします。CommandMenuItemsは、「構造」ペインの該当するノードにドロップしてもかまいません。

  5. 1つ目のcommandMenuItemについて、プロパティ・インスペクタで「Text」プロパティを選択し、「データにバインド」アイコンをクリックして式をTextプロパティに追加します(図5-8を参照)。「データにバインド」ダイアログ・ボックスが表示されます。

    図5-8    CommandMenuItemのプロパティ


    画像の説明

  6. 「JSP Objects」の下の「res」クラスを開き、srdemo.menu.homeエントリまでスクロール・ダウンします。このエントリを選択し、右矢印をクリックして必要な式言語を表示し、「OK」をクリックします。

  7. commandMenuItemActionプロパティをGlobalWelcomeHomeに設定します。

    使用する予定の各種スキン用のアイコンは、個々のスキン・イメージ・ディレクトリに格納されており、スキンBean(第4章を参照)を使用して、ELにラップできる現行スキンに関連するディレクトリ構造を返すことができます。

  8. 1つ目のcommandMenuItemIconプロパティを次のように設定します。

    /skins/#{skinBean.currentSkin}/skin_images/home.gif
    


    注意

    スキンのアイコンには、アクションを示すテキストが含まれているものもあれば、別のテキスト・ラベルを必要とするものもあります。スキンBeanには、どのスキンがアイコンのみを必要とし、あるいはアイコンおよびテキストを必要とするかを定義する機能があります。 


  9. デフォルト・スキンのアイコンにはすでにラベルがあるため、commandMenuItemのTextプロパティを次のように設定して、ナビゲーション・ボタンのテキスト・ラベルを使用しないようにする必要があります。

    text="#{skinBean.iconOnly ? null : res['srdemo.menu.home']}"
    
  10. 他の2つのcommandMenuItemsについて、同じ手順を繰り返し、次のようにプロパティを設定します。

    • 2つ目のcommandMenuItemについて、Actionプロパティには「GlobalHelp」を、Textプロパティには「srdemo.menu.help」を選択します。

      2つ目のcommandMenuItemIconプロパティを次のように設定します。

      /skins/#{skinBean.currentSkin}/skin_images/help.gif
      
    • 3つ目のcommandMenuItemについて、Actionプロパティには「GlobalAbout」を、Textプロパティには「srdemo.menu.info」を選択します。

      3つ目のcommandMenuItemIconプロパティを次のように設定します。

      /skins/#{skinBean.currentSkin}/skin_images/info.gif
      

    この時点で、「ソース」ビューには、commandMenuItem定義が例5-5に示すように表示されます。

    例5-5    コマンド・ボタンのアクションに使用されるサンプル言語

    <af:menuButtons>
      <af:commandMenuItem text="#{skinBean.iconOnly ? null : res['srdemo.menu.home']}"
                          action="GlobalWelcomeHome"
                          icon="/skins/#{skinBean.currentSkin}/skin_images/home.gif"/>
      <af:commandMenuItem text="#{skinBean.iconOnly ? null : res['srdemo.menu.help']}"
                          action="GlobalHelp"
                          icon="/skins/#{skinBean.currentSkin}/skin_images/help.gif"/>
      <af:commandMenuItem text="#{skinBean.iconOnly ? null : res['srdemo.menu.info']}"
                          action="GlobalAbout"
                          icon="/skins/#{skinBean.currentSkin}/skin_images/info.gif"/>
    </af:menuButtons>
    
  11. 「構造」ペインで、goMenuItemを1つ目のcommandMenuItemの直前に追加します。

    1. プロパティ・インスペクタで「Text」プロパティを選択し、「データにバインド」アイコンをクリックして式をTextプロパティに追加します。JSF Managed Beansの下のauthNLinkエントリまでスクロール・ダウンします。「label」プロパティを選択し、右矢印をクリックして必要な式言語text="#{authNLink.label }"を表示します。この式言語は、この後さらに更新します。

    2. 「OK」をクリックします。

      スキンのアイコンにはテキストがすでに含まれているものがあるため、Textプロパティを更新し、次のようにプロパティを設定してラベルを含むアイコンを使用できるようにする必要があります。

      text="#{skinBean.iconOnly ? null : authNLink.label }"
      
    3. 次のように、DestinationプロパティをJSF Managed BeansauthNLink URLに設定します。

      destination="#{authNLink.URL}"
      
    4. 次のように、iconプロパティを状況依存スキン・アイコンに設定します。

      /skins/#{skinBean.currentSkin}/skin_images/#{authNLink.icon}
      

    authnLinkは、ユーザーの認証状態を追跡管理し、ログイン/ログアウト・リンクと関連アイコンを自動的に設定するマネージドBeanです。詳細は、『Oracle WebCenter Framework開発者ガイド』の「WebCenterアプリケーションの保護」を参照してください。


    注意

    SRDemoバージョンのauthnLinkログイン・コンポーネントは、ブール管理プロパティ(returnHomeOnLogout)を定義するため、開発者は、アプリケーションのログアウト時にユーザーが現行ページにとどまるかわりに、アプリケーションのホームページ(authnLinkのhomePage managedプロパティに指定)に戻ることを指定できます。 


  12. ログインしているユーザーの名前を表示するには、コンポーネント・パレットを開き、「JSF HTML」を選択し、「OutputFormat」を選択します。このコンポーネントを「構造」ペインのinfoUserの上にドラッグします。

  13. ValueプロパティをJSP Objects/resの下のsrdemo.connectedUserにバインドします。

  14. renderedプロパティをJSF Managed Beansの下の#{authNLink.authenticated}にバインドします(この値は、認証ステータスに基づいてtrueまたはfalseを戻すブールです)。

  15. コンポーネント・パレットで、「JSF Core」を選択し、「Param」コンポーネントを選択します。このコンポーネントを「構造」ペインのoutputFormatオブジェクトの上にドラッグし、次のプロパティを設定します。

手順4: ようこそページのパブリック化

ようこそページを最終的にパブリックにアクセスできるようにする(ADFセキュリティの構成後)には、認証済または匿名に関係なく(つまり、誰でも使用可能)、すべてのユーザーがページを表示できることを記述したアクセス・ポリシーを定義する必要があります。そのためには、次の手順を実行します。

  1. 「SRWelcome.jspx」を右クリックしてページ定義に移動します。

  2. 認可を編集してView権限をanyoneに付与します(図5-9を参照)。

    図5-9    認可エディタ


    画像の説明

    system-jazn-data.xmlファイルのanyoneロールに表示権限が追加されます。ADFセキュリティ(次の章で使用できるようにします)によって保護されるアプリケーションでは、各ユーザーは自動的にこの疑似ロールのメンバーになります(anyoneロール・プリンシパルはユーザーのサブジェクトに自動的に追加されます)。そのため、パブリック・ページは、誰でも使用できる特殊なタイプの保護ページです。これは、J2EEセキュリティとは異なります。J2EEセキュリティでは、パブリック・ページに対してセキュリティ制約を指定せずにそのページを定義します。そのため、ADFセキュリティ・モデルでは、パブリック・アクセスに対して保護されているページとセキュリティ保護が実装されていないページは区別されます。


    注意

    次の章では、ログイン・ページを構築してADFセキュリティをアクティブ化してから、そのページを実行します。 


  3. アプリケーション・ナビゲータで、「Webコンテンツ」「WEB-INF」フォルダの「orion-web.xml」ファイルを右クリックし、「プロパティ」を選択します。「OC4J Webアプリケーション・デプロイメント・ディスクリプタ」ダイアログ・ボックスが表示されます。

  4. 「JAZN」「Run asモード」オプションと「権限モードとして実行」オプションがすでに選択されていることを確認します(図5-10を参照)。

    図5-10    orion-web.xmlのプロパティ


    画像の説明

  5. 「OK」をクリックします。

まとめ

この章では、ようこそページを作成し、ポートレットおよびコンテンツ・リポジトリのコンテンツを追加する方法について学びました。また、ページをパブリックに使用できるようにし、資格証明を使用してユーザーが情報にアクセスするためのログイン・リンクを追加する方法についても学びました。


戻る 次へ
Oracle
Copyright © 2007 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引