Oracle® Fusion Middleware

Oracle WebCenter PortalおよびOracle JDeveloperでのポータルの開発

11gリリース1 (11.1.1.8.3)

E49666-03(原本部品番号:E27739-05)

2014年4月

Oracle WebCenter PortalおよびOracle JDeveloperを使用して、ポータル、ポータル・アセットおよびポータル・コンポーネントを構築し、カスタマイズする方法について説明します。

Oracle Fusion Middleware Oracle WebCenter PortalおよびOracle JDeveloperでのポータルの開発 11gリリース1 (11.1.1.8.3)

E49666-03

Copyright © 2007, 2014, Oracle and/or its affiliates. All rights reserved.

原本著者:  Peter Jacobsen

原本協力著者: Sarah Bernau、Rosie Harvey、Sue Highmoor、Shahana Mitra、Ingrid Snedecor、Savita Thakur

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、このソフトウェアまたはハードウェアを安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracleおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアおよびドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

新機能

- 11gリリース1 (11.1.1.8.3)の新機能と変更された機能

- 11gリリース1 (11.1.1.8.0)の新機能と変更された機能

ペルソナ一覧

- ナレッジ・ワーカー

- アプリケーション・スペシャリスト

- Web開発者

- 開発者

- システム管理者

第I部 スタート・ガイド

1 開発者のためのOracle WebCenter Portalの概要

- 1.1 このガイドの目的

- 1.2 WebCenter Portal開発者としての役割

2 開発環境の設定

- 2.1 概要

- 2.2 一般的な設定タスク

- 2.2.1 Oracle JDeveloperのインストール

- 2.2.2 JDeveloper用のWebCenter Portal拡張機能のインストール

- 2.2.3 ユーザー・ホーム・ディレクトリ環境変数の設定

- 2.2.4 統合WebLogic Serverの管理

- 2.2.5 WebCenterバックエンド・サービスの構成

- 2.2.6 アプリケーション・リソース接続の作成

- 2.2.7 チーム開発とソース・コントロールの準備

- 2.3 WebCenter Portal Frameworkアプリケーションに固有の設定タスク

- 2.3.1 Portal Frameworkアプリケーションでの反復開発の準備

- 2.3.2 追加構成

- 2.4 WebCenterポートレット・プロデューサ・アプリケーションに固有の設定タスク

- 2.4.1 事前構成ポートレット・プロデューサに関する必知事項

- 2.5 パーソナライズのためのJDeveloperの設定

3 チームでの効率的な作業

- 3.1 WebCenter Portal開発でのソース・コントロールの使用

- 3.2 Oracleチーム・プロダクティビティ・センターの使用

- 3.3 ソース・コントロールにチェックインするファイルの決定

- 3.4 1回での共通要件の実装

- 3.5 ポートレット・プロデューサに関する考慮事項

- 3.5.1 ポートレット・プロデューサの接続

- 3.5.2 異なるポートレット・プロデューサからのポートレットの結合

4 WebCenter Portalのツールとサービス用アプリケーションの準備

- 4.1 WebCenter Portalのツールとサービスの理解

- 4.1.1 WebCenter Portalの同格ツールとサービスの理解

- 4.1.2 WebCenter PortalのAPIの理解

- 4.1.3 WebCenter Portalのデータ・コントロールの使用

- 4.2 ツールとサービスを利用するためのFrameworkアプリケーションの準備

- 4.2.1 ツールとサービスを利用するようにアプリケーションを準備する方法

- 4.2.2 データベース接続の設定

- 4.2.3 外部アプリケーション接続の設定

- 4.3 サービスでリソースをレンダリングする方法のカスタマイズ

- 4.3.1 リソースのレンダリング・オプションの概要

- 4.3.2 同じブラウザ・ウィンドウでのリソースのレンダリング

- 4.3.3 ADFインライン・ポップアップでのリソースのレンダリング

- 4.3.4 新しいブラウザ・ウィンドウでのリソースのレンダリング

- 4.3.5 resourceActionBehaviorタグによるレンダリング動作の設定

- 4.3.6 デプロイ済Frameworkアプリケーションでのadf-config.xmlの更新

- 4.4 一般設定の構成

- 4.4.1 プリファレンス・ユーザー・インタフェースの作成

- 4.4.2 一般設定を使用したユーザーのロケールの指定

第II部 WebCenter Portal Frameworkアプリケーションの構築

5 WebCenter Portal Frameworkアプリケーションの理解

- 5.1 WebCenter Portal Frameworkアプリケーションとは

- 5.2 WebCenter Portal Frameworkアプリケーションの作成

- 5.3 WebCenter Portal Frameworkアプリケーションの機能の検証

- 5.3.1 機能のサマリー

- 5.3.2 ページ、ページ・テンプレートとスタイル、およびポータルのページ階層の理解

- 5.3.3 WebCenter Portal Frameworkページの保護

- 5.3.4 ナビゲーション・モデルおよびナビゲーション・レジストリの理解

- 5.3.5 リソース・カタログおよびカタログ・レジストリの理解

- 5.4 WebCenter Portal Frameworkアプリケーション・ファイルの編成

- 5.4.1 WebCenter Portal Frameworkアプリケーションの編成の理解

- 5.4.2 ファイルシステムでのポータル・プロジェクトの表示

- 5.4.3 JDeveloperでのポータル・プロジェクトの表示

- 5.4.4 アプリケーション・ナビゲータでの非表示ファイルの表示

- 5.5 ポータルのライフ・サイクルについて

- 5.6 ポータルのルック・アンド・フィールの開発

- 5.7 デフォルトのポータル・プリファレンスの変更

- 5.7.1 デフォルトのポータル・プリファレンスについて

- 5.7.2 JDeveloperでデフォルトのプリファレンスを変更する方法

- 5.8 反復およびラウンドトリップ開発手法の使用方法

- 5.9 ポータルの実行およびテスト

- 5.10 実行時のWebCenter Portal Frameworkアプリケーション

- 5.10.1 統合WebLogic Serverでの実行時カスタマイズの保持

- 5.10.2 ブラウザベースのWebCenter Portal管理コンソール

- 5.10.3 セキュリティ設定の実行時ポータルへの影響

- 5.10.4 ブラウザベースのツールを使用したポータル・リソースの編集

- 5.11 デフォルトのホーム・ページおよびログイン/ログアウト・ターゲット・ページの変更

- 5.11.1 ホーム・ページの指定方法の理解

- 5.11.2 デフォルトのホーム・ページの変更方法

- 5.11.3 デフォルトの索引ページの指定方法

- 5.11.4 ログインまたはログアウト後のターゲット・ページの指定

- 5.12 基本的なポータル開発タスク

6 WebCenter Portal Frameworkアプリケーションの作成

- 6.1 新しいWebCenter Portal Frameworkアプリケーションの作成

- 6.2 WebCenter Portal Frameworkアプリケーション・テンプレートの理解

- 6.3 ポータルの構築

- 6.4 PortalWebAssetsプロジェクトの理解

- 6.4.1 概要

- 6.4.2 静的アプリケーション・リソース・プロジェクトの分離

- 6.4.3 デプロイメントのオプション

- 6.4.4 ELを使用した静的リソースの管理

- 6.5 Frameworkアプリケーションのセキュリティはデフォルトでどのように構成されるか

- 6.6 知識が必要な構成ファイル

- 6.6.1 Frameworkアプリケーション・テンプレートのデフォルトのweb.xmlファイル

- 6.6.2 Frameworkアプリケーション・テンプレートのデフォルトのfaces-config.xmlファイル

- 6.6.3 Frameworkアプリケーション・テンプレートのデフォルトのtrinidad-config.xmlファイル

- 6.6.4 Frameworkアプリケーション・テンプレートのデフォルトのadfc-config.xmlファイル

- 6.7 アプリケーション・ナビゲータでの除外ファイルの追加

- 6.8 ポータルの保護

7 Portal Frameworkアプリケーションのデプロイおよびテスト

- 7.1 Oracle WebLogic Serverの概要

- 7.2 統合WebLogic ServerへのPortal Frameworkアプリケーションのデプロイ

- 7.2.1 統合WebLogic ServerでのPortal Frameworkアプリケーションの実行

- 7.2.2 統合WebLogic ServerへのPortal Frameworkアプリケーションのデプロイ

- 7.3 WebLogic管理対象サーバーへのPortal Frameworkアプリケーションのデプロイ

- 7.3.1 デプロイのロードマップ

- 7.3.2 Frameworkアプリケーションのパッケージ化

- 7.3.3 デプロイのためのターゲット環境の準備

- 7.3.4 管理対象サーバーへのPortal Frameworkアプリケーションのデプロイ

- 7.4 複数の環境間でのカスタマイズのトランスポート

8 WebCenter Portal Frameworkアプリケーションのライフ・サイクルの理解

- 8.1 WebCenter Portal Frameworkアプリケーションのライフ・サイクルとは

- 8.2 主要なライフ・サイクル・タスクについて

- 8.2.1 1回かぎりの設定タスク

- 8.2.2 開発環境のタスク

- 8.2.3 夜間ビルド環境のタスク

- 8.2.4 テスト環境のタスク

- 8.2.5 ステージング環境のタスク

- 8.2.6 本番環境のタスク

- 8.3 ポータルのライフ・サイクルへの参加者

- 8.4 ビルド環境およびテスト環境の理解

- 8.5 ステージング環境および本番環境の理解

- 8.5.1 ステージング環境のプロビジョニング

- 8.5.2 ステージング環境へのコンテンツの追加

- 8.5.3 ステージングから本番へのポータルの移動

- 8.6 ライフ・サイクルを管理するツール

- 8.7 反復開発の理解

- 8.7.1 反復開発とは

- 8.7.2 反復開発のしくみ

- 8.7.3 反復開発の有効化

- 8.8 夜間ビルド・スクリプトの構成

- 8.9 ステージング環境または本番環境の初期設定

- 8.10 WebCenter Portal Frameworkアプリケーションの既存環境への移行

- 8.11 管理対象サーバーへのデプロイ

- 8.12 ターゲットのサーバーでのアプリケーションのデプロイおよび構成

- 8.12.1 概要

- 8.12.2 デプロイおよび構成スクリプトの使用

- 8.12.3 デプロイ後の変更の管理

- 8.13 ステージングから本番に伝播させる伝播ツールの使用

- 8.13.1 伝播ツールの概要

- 8.13.2 伝播ツールの構成

- 8.13.3 ポータル・メタデータの伝播

- 8.14 Oracle WebCenter Contentからのコンテンツの伝播

- 8.15 ライフ・サイクルを通したセキュリティの管理

- 8.15.1 初回デプロイに対するセキュリティ・ポリシーの移行

- 8.15.2 再デプロイ時のセキュリティ・ポリシーの移行

- 8.15.3 初回デプロイに対する資格証明の移行

- 8.15.4 再デプロイ時の資格証明の移行

- 8.16 ポートレット・プリファレンスの移行

- 8.17 本番サイトの変更のロールバック

9 ポータル・リソース管理の概要

- 9.1 ポータル・リソースの概要

- 9.2 ポータル・リソースの作成

- 9.3 ポータル・リソースの編集

- 9.4 ポータル・リソースの削除

- 9.5 実行時のポータル・リソースの使用

- 9.5.1 ポータル・リソースの実行時管理の有効化

- 9.6 ラウンドトリップ開発での作業

- 9.6.1 「アセット」ページを使用してポータル・リソースをダウンロードする方法

- 9.6.2 ポータル・リソースをJDeveloperにインポートする方法

- 9.6.3 ポータル・リソースをJDeveloperからエクスポートする方法

- 9.6.4 「アセット」ページを使用してリソースをアップロードする方法

- 9.7 WebCenter Portalリソースの使用

10 ナビゲーション・モデルの開発

- 10.1 ナビゲーション・モデルの概要

- 10.2 ナビゲーション・モデルの作成

- 10.3 ナビゲーション・モデルの編集

- 10.3.1 リソースをナビゲーション・モデルにドラッグ・アンド・ドロップする方法

- 10.3.2 ページをナビゲーション・モデルに追加する方法

- 10.3.3 フォルダをナビゲーション・モデルに追加する方法

- 10.3.4 セパレータをナビゲーション・モデルに追加する方法

- 10.3.5 その他のリソースをナビゲーション・モデルに追加する方法

- 10.3.6 動的に生成されたリソースをナビゲーション・モデルに追加する方法

- 10.3.7 ナビゲーション・モデルまたはナビゲーション・モデル・ノードの表示オプションを設定する方法

- 10.3.8 ナビゲーション・モデル内のノードを再配置する方法

- 10.3.9 ナビゲーション・モデルまたはナビゲーション・モデル・ノードを表示または非表示にする方法

- 10.3.10 ナビゲーション・モデル・ノードを編集する方法

- 10.3.11 ナビゲーション・モデル・ノードを削除する方法

- 10.4 デフォルトのナビゲーション・モデルの選択

- 10.5 ナビゲーション・モデルのコンテンツのフィルタリング

- 10.6 ナビゲーション・モデルの削除

- 10.7 ナビゲーション・レジストリ・ファイルの編集

- 10.8 ナビゲーション・レンダラの編集

- 10.9 REDIRECT_OPTIONSコンテキスト・パラメータの設定

- 10.10 ナビゲーションURLの予約済キーワード

- 10.11 ナビゲーション・モデル開発のヒント

- 10.12 ポータル・ナビゲーションの視覚化

- 10.12.1 ナビゲーション式言語のAPIの使用

- 10.12.2 ナビゲーションREST APIの使用

- 10.12.3 ポータル・ナビゲーションの視覚化のヒント

- 10.13 ナビゲーション・モデルを使用したサイトマップの作成

11 ページ・テンプレートの開発

- 11.1 ページ・テンプレートの開発の概要

- 11.1.1 ページ・テンプレートの構造の理解

- 11.1.2 ページ・テンプレートのレイアウトの理解

- 11.1.3 ページ・テンプレートのレイアウト・コンポーネントの理解

- 11.1.4 WebCenter Portal Frameworkアプリケーションの組込みページ・テンプレートの理解

- 11.2 ページ・テンプレートの開発のベスト・プラクティス

- 11.2.1 ストレッチ・レイアウトの作成のベスト・プラクティス

- 11.2.2 フロー・レイアウトの作成のベスト・プラクティス

- 11.2.3 実行時に編集できるページ・テンプレートの開発のベスト・プラクティス

- 11.2.4 コンポーネントの外観のカスタマイズのベスト・プラクティス

- 11.2.5 ページ・テンプレートでのスクロールの定義のベスト・プラクティス

- 11.2.6 余白、境界線、パディングの定義のベスト・プラクティス

- 11.2.7 Portal Frameworkアプリケーションでのページ・テンプレート・コンテンツの非表示のベスト・プラクティス

- 11.3 ページ・テンプレートの作成

- 11.4 ページ・テンプレートの編集

- 11.5 ページへのページ・テンプレートの適用

- 11.5.1 Portal Frameworkアプリケーションでのページ作成時にページ・テンプレートを適用する方法

- 11.5.2 Portal Frameworkアプリケーションでページに適用されたページ・テンプレートを変更する方法

- 11.5.3 実行時にPortal Frameworkアプリケーションでページ・テンプレートの動的切替えを有効にする方法

- 11.6 デフォルト・ページ・テンプレートの選択

- 11.7 ページ・テンプレートの削除

- 11.8 ページ・テンプレートのチュートリアルと例

12 ページ・スタイルとタスク・フロー・スタイルの開発

- 12.1 スタイルの概要

- 12.1.1 ページ・スタイルの概要

- 12.1.2 タスク・フロー・スタイルの概要

- 12.2 ページ・スタイルの開発

- 12.2.1 ページ・スタイルを作成する方法

- 12.2.2 ページ・スタイルの開発に関する必知事項

- 12.2.3 ページ・スタイルを削除する方法

- 12.3 タスク・フロー・スタイルの開発

- 12.3.1 タスク・フロー・スタイルを作成する方法

- 12.3.2 タスク・フロー・スタイルの開発に関する必知事項

- 12.3.3 タスク・フロー・スタイルを削除する方法

13 スキンの開発

- 13.1 スキンの概要

- 13.2 スキンの作成

- 13.2.1 CSSファイルを作成する方法

- 13.2.2 スキン・スタイル・セレクタを定義する方法

- 13.2.3 スキン関連のアーティファクトに関する必知事項

- 13.3 スキンの編集

- 13.4 アプリケーションへのスキンの適用

- 13.5 ユーザー用スキンの条件付変更

- 13.6 個別共有ライブラリとしてのスキンのデプロイ

- 13.7 スキンでの問題のトラブルシューティング

14 リソース・カタログの開発

- 14.1 リソース・カタログの概要

- 14.2 リソース・カタログの作成

- 14.3 リソース・カタログの編集

- 14.3.1 リソースへの接続の定義方法

- 14.3.2 リソース・カタログにリソースをドラッグ・アンド・ドロップする方法

- 14.3.3 リソース・カタログにリンクを追加する方法

- 14.3.4 リソース・カタログにフォルダを追加する方法

- 14.3.5 リソース・カタログにカスタム・コンポーネントを追加する方法

- 14.3.6 リソース・カタログにカスタム・フォルダを追加する方法

- 14.3.7 リソース・カタログにカスタム・コンテンツ・プロバイダを追加する方法

- 14.3.8 リソース・カタログを別のリソース・カタログに追加する方法

- 14.3.9 リソース・カタログまたはリソースの表示オプションを設定する方法

- 14.3.10 カタログ内のリソースを再配置する方法

- 14.3.11 リソース・カタログまたはリソースを表示または非表示にする方法

- 14.3.12 リソース・カタログ内のリソースを編集する方法

- 14.3.13 リソース・カタログからリソースを削除する方法

- 14.3.14 リソース・カタログで設計時に作成されたデータ・コントロールを公開する方法

- 14.3.15 リソース・カタログで実行時に作成されたデータ・コントロールを公開する方法

- 14.3.16 リソース・カタログのポートレット可視性の制御方法

- 14.4 デフォルト・リソース・カタログの選択

- 14.4.1 アプリケーション用のデフォルト・リソース・カタログを選択する方法

- 14.4.2 複数のリソース・カタログの構成方法

- 14.4.3 ページ用のデフォルト・リソース・カタログを選択する方法

- 14.5 リソース・カタログのアイテムのフィルタリング

- 14.6 リソース・カタログの削除

- 14.7 タスク・フロー・パラメータおよびタスク・フローを囲んでいるShow Detail Framesの属性の定義

- 14.8 リソース・カタログに関する問題のトラブルシューティング

15 ページの作成とリソースの追加

- 15.1 ページの概要

- 15.2 WebCenter Portal Frameworkアプリケーションでのページの作成

- 15.3 ページへのWebCenter Portalツールおよびサービス・タスク・フローの追加

- 15.4 ページへのカスタム・タスク・フローの追加

- 15.5 コンテンツ・サーバーからページへのコンテンツの追加

- 15.6 ページへのポートレットの追加

- 15.7 ページへのページレットの追加

- 15.8 ページへのデータ・コントロールの追加

- 15.9 外部アプリケーションの使用

第III部 アプリケーションのカスタマイズとカスタマイズ・オプションの拡張

16 WebCenter Portalコンポーザの使用

- 16.1 コンポーザの概要

- 16.2 アプリケーションのカスタマイズとユーザーのカスタマイズ

- 16.3 ページの編集モードと表示モード

- 16.3.1 編集モードについて

- 16.4 ページ表示モードでのページのカスタマイズ

- 16.4.1 コンポーネントの再配置

- 16.4.2 レイアウトの変更

- 16.4.3 コンポーネントの展開と縮小

- 16.5 ページの編集

- 16.5.1 コンテンツの追加

- 16.5.2 タスク・フロー内のコンテンツの編集

- 16.5.3 宣言型コンポーネント内のコンテンツの編集

- 16.5.4 ページ・コンテンツの再配置

- 16.5.5 コンポーネントのプロパティおよびパラメータの編集

- 16.5.6 現在のレイヤーのコンポーネント・プロパティのリセットとオーバーライド

- 16.5.7 リソース文字列の編集

- 16.5.8 コンポーネントの表示または非表示

- 16.5.9 コンポーネントの削除

- 16.5.10 レイアウトの変更

- 16.5.11 ページ・プロパティの編集

- 16.5.12 子コンポーネントの表示名のカスタマイズ

- 16.5.13 ページ・パラメータへのコンポーネントの関連付け

- 16.5.14 ページのリセット

- 16.5.15 エラー検出時のアプリケーションのカスタマイズのリセット

- 16.5.16 アプリケーションのカスタマイズ保存時のラベルの作成

- 16.5.17 アプリケーションのカスタマイズの管理

- 16.6 コンポーザ・コンポーネント

- 16.6.1 Page Customizable

- 16.6.2 Change Mode LinkおよびChange Mode Button

- 16.6.3 Panel Customizable

- 16.6.4 Show Detail Frame

- 16.6.5 Layout Customizable

- 16.7 セキュリティおよびコンポーザ

- 16.7.1 ページおよびタスク・フローのセキュリティ

- 16.7.2 MDSのカスタマイズ制限

- 16.7.3 コンポーネントのアクション・レベルのセキュリティ

17 ページの実行時作成および管理の有効化

- 17.1 ページの作成と管理の概要

- 17.2 ページおよびタスク・フローの作成

- 17.2.1 ページの作成方法

- 17.3 ページ - 新規作成タスク・フローのパラメータの値の定義

- 17.3.1 ページ - 新規作成タスク・フローのパラメータにアクセスする方法

- 17.3.2 ページ - 新規作成タスク・フローのスコープの設定

- 17.3.3 結果パラメータの設定

- 17.3.4 スタイルの指定

- 17.3.5 ADFテンプレートの指定

- 17.3.6 コマンド・リンクの表示

- 17.3.7 イメージの表示

- 17.3.8 ラベルのカスタマイズ

- 17.4 タスク・フローのビュー・ページの作成方法

- 17.5 ページの管理

- 17.5.1 ページ・データ・コントロールを使用したページの管理

- 17.5.2 ページAPIを使用したページおよびタスク・フローの管理

- 17.6 カスタムのスタイルおよびテンプレートの概要

- 17.6.1 実行時に作成したページ用のテンプレートを作成する方法

- 17.6.2 ADFテンプレートの使用方法

- 17.6.3 「ページの作成」ダイアログ用のスタイルの作成

- 17.7 ページ・ビューのカスタマイズ

- 17.7.1 ADF Facesコンポーネントによるページのレンダリング

- 17.7.2 ページおよびタスク・フローのユーザー・セキュリティの管理

- 17.8 高度なページの管理に関する情報

- 17.8.1 ページJava APIの使用方法

- 17.8.2 ページ・データ・コントロールの使用方法

18 コンポーザを使用したページの実行時編集の有効化

- 18.1 コンポーザ・コンポーネントを使用した編集可能ページの設計

- 18.1.1 カスタマイズ可能ページの作成方法

- 18.1.2 Page Customizableコンポーネントを使用した実行時カスタマイズの有効化方法

- 18.1.3 Change Mode LinkまたはChange Mode Buttonを使用したページ・モードの切替えを有効にする方法

- 18.1.4 Panel Customizableコンポーネントを使用したページの編集可能領域の定義方法

- 18.1.5 Layout Customizableコンポーネントを使用したページのレイアウトのカスタマイズの有効化方法

- 18.1.6 Show Detail Frameコンポーネントを使用したコンポーネントのカスタマイズの有効化方法

- 18.1.7 カスタマイズ可能ページを作成するページ・テンプレートの作成方法

- 18.1.8 移入されたページでカスタマイズを有効にする方法

- 18.1.9 コンポーザ・コンポーネントの追加時に行われる処理

- 18.1.10 実行時の処理

- 18.1.11 編集可能ページの設計時の必知事項

- 18.2 コンポーザ・コンポーネントを使用した編集可能ページの設計: 例

- 18.3 ページへのコンテンツの移入

- 18.3.1 コンテンツをページに追加するときの必知事項

- 18.4 コンポーザの問題のトラブルシューティング

19 コンポーザを使用した実行時編集機能の拡張

- 19.1 拡張性オプションの概要

- 19.1.1 コンポーザのアドオン

- 19.1.2 コンポーザのカスタム・プロパティ・パネル

- 19.1.3 コンポーザのイベント・ハンドラ

- 19.1.4 ドロップ・ハンドラ

- 19.1.5 コンポーネントのプロパティ・フィルタ

- 19.1.6 カスタマイズ・マネージャ

- 19.1.7 コンポーザのツールバーのカスタマイズ

- 19.1.8 構成ファイル

- 19.2 コンポーザのアドオンの作成

- 19.2.1 アドオンの作成および登録の方法

- 19.2.2 実行時の処理

- 19.2.3 コンポーザのデフォルトのアドオンの除外方法

- 19.2.4 カスタマイズ・マネージャのアドオンの表示方法

- 19.2.5 アドオンを選択的に表示する方法

- 19.3 カスタム・プロパティ・パネルの作成

- 19.3.1 カスタム・プロパティ・パネルの作成および登録の方法

- 19.3.2 実行時の処理

- 19.3.3 デフォルトのプロパティ・パネルのオーバーライド方法

- 19.3.4 デフォルトのプロパティ・パネルの除外方法

- 19.3.5 プロパティ・パネルの選択的レンダリング方法

- 19.3.6 カスタム・プロパティ・パネルでのプロパティおよびパラメータの表示方法

- 19.4 式ビルダーの拡張

- 19.4.1 式ビルダーの拡張方法

- 19.4.2 式言語を保護する方法

- 19.4.3 実行時の処理

- 19.5 タスク・フローのパラメータのカスタムLOVまたはピッカーの構成

- 19.5.1 LOVの構成方法

- 19.5.2 実行時の処理

- 19.6 コンポーザUIイベントのイベント・ハンドラの構成

- 19.6.1 コンポーザUIイベントのハンドラの作成および登録の方法

- 19.6.2 イベント・ハンドラを作成および登録する際の処理

- 19.6.3 その他のコンポーザのイベント・ハンドラの構成

- 19.7 リソース・カタログのドロップ・ハンドラの構成

- 19.7.1 ドロップ・ハンドラの作成および登録の方法

- 19.7.2 実行時の処理

- 19.8 プロパティ・フィルタの定義

- 19.8.1 プロパティ・フィルタの定義方法

- 19.8.2 実行時の処理

- 19.8.3 プロパティ・フィルタの削除方法

- 19.9 カスタマイズ・マネージャ・タスク・フローのパラメータ・サポートの有効化

- 19.9.1 カスタマイズ・マネージャ・タスク・フローのパラメータを設定する方法

- 19.9.2 パラメータのサポートを有効にした場合の処理

- 19.10 コンポーザのツールバーのカスタマイズ

- 19.10.1 ツールバー要素を再配置または非表示にする方法

- 19.10.2 実行時の処理

- 19.10.3 新しいセクションをツールバーに追加する方法

- 19.10.4 ツールバーのセクションをオーバーライドしてカスタム・コンテンツを表示する方法

- 19.11 「デザイン」ビューまたは「コンテンツの追加」ビューでの直接選択の有効化

- 19.11.1 直接選択を有効化および構成する方法

- 19.11.2 実行時の処理

- 19.12 コンポーザの拡張性機能の問題のトラブルシューティング

20 コンポーザの拡張構成の実行

- 20.1 ファセットを使用したShow Detail Frameコンポーネントでのカスタム・アクションの有効化

- 20.2 ファセットを使用したShow Detail Frameコンポーネントでのカスタム・アクションの有効化: 例

- 20.2.1 ADFタスク・フローの作成方法

- 20.2.2 追加のアクション・ファセットを組み込む方法

- 20.2.3 リダイレクト・ページの作成方法

- 20.2.4 ページ間のナビゲーション・ルールの作成方法

- 20.2.5 実行時の処理

- 20.3 タスク・フローでのカスタム・アクションの有効化

- 20.3.1 タスク・フローでカスタム・アクションを直接有効にする方法

- 20.3.2 タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法

- 20.3.3 実行時の処理

- 20.3.4 タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法: 例

- 20.4 コンポーネント・ナビゲータ内のタスク・フローに表示されるカスタム・アクションの有効化

- 20.4.1 コンポーネント・ナビゲータでカスタム・アクションを構成する方法

- 20.4.2 実行時の処理

- 20.5 コンポーザにアクセスするためのキーボード・ショートカットの構成

- 20.5.1 編集モードへのリンクなしのエントリを有効にする方法

- 20.5.2 ショートカット・キーのイベント・ハンドラの構成方法

- 20.5.3 実行時の処理

- 20.6 イベント対応のタスク・フローの作成

- 20.7 「構造」ビューにデフォルトで表示するアプリケーション・ページの構成

- 20.7.1 「構造」ビューにデフォルトで表示するアプリケーション・ページを構成する方法

- 20.7.2 実行時の処理

- 20.8 アプリケーションの「構造」ビューの無効化

- 20.8.1 「構造」ビューを無効にする方法

- 20.8.2 実行時の処理

- 20.9 タスク・フローのズーム機能の無効化

- 20.10 コンポーネントへのスタイルの適用

- 20.11 永続性変更マネージャの構成

- 20.12 実行時リソース文字列編集の構成

- 20.12.1 リソース文字列エディタの概要

- 20.12.2 アプリケーションでリソース文字列エディタを有効にする方法

- 20.12.3 オーバーライドバンドルの構成方法

- 20.12.4 実行時の処理

- 20.13 コンポーザの拡張構成の問題のトラブルシューティング

21 コンポーザ固有のMDS構成の実行

- 21.1 MDSの概要

- 21.2 コンポーザのサンドボックスの使用

- 21.2.1 コンポーザのサンドボックスの作成を有効にする方法

- 21.2.2 実行時の処理

- 21.2.3 アプリケーションのサンドボックスを無効にする方法

- 21.2.4 失効したサンドボックスを破棄する方法

- 21.3 カスタマイズ・レイヤーの表示モードおよび編集モードへの追加: 例

- 21.3.1 JSFページへのコンポーザの追加方法

- 21.3.2 カスタムSiteCCヒント・レイヤーの作成方法

- 21.3.3 カスタムUserCCヒント・レイヤーの作成方法

- 21.3.4 ComposerSessionOptionsFactoryクラスの実装方法

- 21.3.5 コンポーザでの実装の登録方法

- 21.3.6 WebCenterComposerFilterの構成方法

- 21.3.7 サーブレットをリダイレクトしてMDSカスタマイズ・レイヤー間の切替えを有効にする方法

- 21.3.8 実行時の処理

- 21.4 コンポーザを使用したMDS関連の問題のトラブルシューティング

22 コンポーザ・コンポーネントのデフォルトのセキュリティ動作の変更

- 22.1 カスタマイズ・ポリシーの定義によるコンポーネント・レベルの制限の適用

- 22.1.1 タイプ・レベルのカスタマイズ・ポリシーの定義方法

- 22.1.2 インスタンス・レベルのカスタマイズ・ポリシーの定義方法

- 22.2 セキュリティ・ロールの使用によるコンポーネント・インスタンス・レベルのカスタマイズ制限の適用: 例

- 22.2.1 ADFセキュリティの構成方法

- 22.2.2 jazn-data.xmlファイルでのロールおよび付与権限の定義方法

- 22.2.3 カスタマイズ・ポリシーを含めるためのSessionOptionsオブジェクトのカスタマイズ方法

- 22.2.4 コンポーザでの実装の登録方法

- 22.2.5 WebCenterComposerFilterの構成方法

- 22.2.6 インスタンス・レベルのカスタマイズ制限の適用方法

- 22.2.7 実行時の処理

- 22.3 customizationAllowed属性を使用したタグ・レベルのセキュリティの適用

- 22.3.1 イメージ・コンポーネントに対するアプリケーション・カスタマイズの有効化方法

- 22.3.2 イメージ・コンポーネントに対するカスタマイズの制限方法

- 22.4 属性レベルのセキュリティの適用

- 22.4.1 コンポーネント・レベルでの変更の永続性の定義方法

- 22.4.2 実行時の処理

- 22.5 Panel CustomizableおよびShow Detailコンポーネント・アクションでのアクション・レベルの制限の適用

- 22.5.1 adf-config.xmlへのenableSecurityセクションの追加方法

- 22.5.2 アクション・カテゴリ・レベルでのセキュリティの定義

- 22.5.3 アクション・レベルでのセキュリティの定義

- 22.6 タスク・フローのセキュリティの実装

- 22.6.1 タスク・フローに対する権限の付与

- 22.6.2 タスク・フローの権限チェックの有効化

- 22.7 コンポーザのデフォルト・セキュリティ・ポリシーのオーバーライド

- 22.7.1 カスタム・セキュリティ・ポリシーの作成方法

- 22.7.2 コンポーザでのカスタム・ポリシーの登録方法

- 22.7.3 実行時の処理

- 22.8 コンポーザのコンポーネント・セキュリティでの問題のトラブルシューティング

23 WebCenter Portalのツールとサービス・タスク・フローのカスタマイズ

- 23.1 タスク・フローのカスタマイズの概要

- 23.2 タスク・フローのカスタマイズの準備

- 23.2.1 WebCenter Portalタスク・フローのカスタマイズの準備

- 23.2.2 WebCenter Portal Frameworkアプリケーションのカスタマイズの有効化

- 23.3 JDeveloperカスタマイズ開発者ロールの構成

- 23.4 Oracle WebCenter Portalのツールとサービス・タスク・フローのカスタマイズ

- 23.4.1 例: WebCenter Portalのためのタスク・フローのカスタマイズ

- 23.4.2 例: WebCenter Portal Frameworkアプリケーションのためのタスク・フローのカスタマイズ

- 23.5 WebCenterポータルまたはデプロイ済WebCenter Portalアプリケーションへのタスク・フローのカスタマイズの適用

- 23.5.1 WebCenter Portal Frameworkアプリケーション: メタデータ・デプロイメント・プロファイルの作成

- 23.5.2 JDeveloperからの直接のタスク・フロー・カスタマイズのデプロイ

- 23.5.3 WLSTを使用したタスク・フロー・カスタマイズのデプロイ

- 23.6 デプロイ済WebCenter Portalアプリケーションからのカスタマイズの削除

- 23.7 カスタマイズ可能なOracle WebCenter Portalのツールとサービス・タスク・フローのカタログ

第IV部 コンテンツの統合と公開

24 コンテンツの統合と公開の概要

25 コンテンツ・リポジトリ接続の構成

- 25.1 コンテンツ・アダプタの概要

- 25.2 コンテンツ・リポジトリ接続の構成

- 25.2.1 Oracle Content Serverアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法

- 25.2.2 Oracle Portalアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法

- 25.2.3 SharePoint用Oracle WebCenterアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法

- 25.2.4 ファイル・システム・アダプタに基づいてコンテンツ・リポジトリ接続を作成する方法

- 25.2.5 リポジトリ接続の作成時に行われる処理

- 25.2.6 リポジトリ接続の作成について

- 25.3 コンテンツ・リポジトリ接続の編集

- 25.3.1 共通リポジトリ接続の編集方法

- 25.3.2 Frameworkアプリケーション固有のコンテンツ・リポジトリ接続の編集方法

- 25.4 新規Portal Frameworkアプリケーションに対する既存のリポジトリ接続の使用

26 コンテンツ・データ・コントロールの使用

- 26.1 コンテンツ・データ・コントロールの概要

- 26.1.1 getItemsメソッド

- 26.1.2 searchメソッド

- 26.1.3 advancedSearchメソッド

- 26.1.4 getURIメソッド

- 26.1.5 getAttributesメソッド

- 26.2 JCRアダプタ対応のコンテンツ・データ・コントロールの構成

- 26.2.1 コンテンツ・リポジトリ・データ・コントロールの構成

- 26.2.2 コンテンツ・リポジトリのデータ・コントロールを構成する場合の処理

- 26.3 コンテンツ・リポジトリ・データ・コントロールの編集

- 26.4 コンテンツ・リポジトリのデータ・コントロールの保護

- 26.5 コンテンツ・データ・コントロールを使用したコンテンツの統合

- 26.5.1 リンクとしてのコンテンツの公開

- 26.5.2 実行時の処理

- 26.5.3 表でのコンテンツの公開

- 26.5.4 実行時の処理

- 26.5.5 ツリーでのフォルダ・コンテンツの公開

- 26.5.6 実行時の処理

- 26.5.7 コンテンツ・リポジトリへの検索機能の追加

- 26.5.8 実行時の処理

- 26.5.9 検索機能の使用

27 コンテンツ・プレゼンタ表示テンプレートの作成

- 27.1 コンテンツ・プレゼンタ表示テンプレートの概要

- 27.2 デフォルト表示テンプレートの使用

- 27.3 コンテンツ・プレゼンタ表示テンプレートの作成

- 27.3.1 コンテンツ・プレゼンタ表示テンプレートについて

- 27.3.2 単一アイテムの表示テンプレートの作成

- 27.3.3 複数アイテムの表示テンプレートの定義

- 27.3.4 レスポンシブ・テンプレートの使用

- 27.3.5 レスポンシブ・テンプレートの拡張

- 27.3.6 EL式を使用したコンテンツ・アイテム情報の取得

- 27.3.7 コンテンツ・タイプのプロパティ名の発見

- 27.3.8 表示テンプレートにおける外部ファイルの参照

- 27.3.9 カスタム・ビューにおけるSite Studioリージョン要素の参照

- 27.3.10 コンテンツ・プレゼンタ表示テンプレートの使用

- 27.4 ページへのコンテンツ・プレゼンタ・タスク・フローの追加

- 27.5 コンテンツ・プレゼンタ表示テンプレートの有効化

- 27.5.1 ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート

- 27.5.2 新しいコンテンツ・プレゼンタ表示テンプレートのアップロード

- 27.5.3 新しいコンテンツ・プレゼンタ表示テンプレートのテスト

- 27.6 実行時の処理

- 27.6.1 実行時の概要

- 27.6.2 選択されたコンテンツ・アイテムの表示テンプレートの識別

- 27.7 キャッシュ・メカニズムとしてのCoherenceの構成

- 27.7.1 Coherenceの構成ファイルの変更

- 27.7.2 EARクラスパスへのCoherence構成ファイルの追加

- 27.7.3 Coherence構成の検証

- 27.8 コンテンツ・プレゼンタ表示テンプレートのパフォーマンスの最適化

- 27.9 コンテンツ・プレゼンタのチュートリアルと例

28 ドキュメントの統合

- 28.1 WebCenter Portal Frameworkアプリケーションのドキュメントの概要

- 28.2 接続の設定

- 28.3 ドキュメント・ツールのセキュリティの設定

- 28.4 他のWebCenterサービスとドキュメント・ツールの併用

- 28.5 コンテンツ・リポジトリにファイルをアップロードするためのパラメータの設定

29 ポータル・ページへのコンテンツ・タスク・フローおよびドキュメント・コンポーネントの追加

- 29.1 コンテンツ・プレゼンタ・タスク・フローの理解

- 29.2 ドキュメント・タスク・フローの理解

- 29.3 ドキュメント・コンポーネントの理解

- 29.4 選択したフォルダまたはファイルのページへの追加

- 29.5 コンテンツ・タスク・フローのページへの追加

- 29.6 コンテンツ・タスク・フローのパラメータの変更

- 29.7 コンテンツ・タスク・フローのパラメータ

- 29.7.1 コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート

- 29.7.2 ドキュメント・エクスプローラ・タスク・フローのパラメータ

- 29.7.3 ドキュメント・リスト・ビューア・タスク・フローのパラメータ

- 29.7.4 ドキュメント・マネージャ・タスク・フローのパラメータ

- 29.7.5 ドキュメント・ナビゲータ・タスク・フローのパラメータ

- 29.7.6 フォルダ・ビューア・タスク・フローのパラメータ

- 29.7.7 最近のドキュメント・タスク・フローのパラメータ

- 29.7.8 ドキュメント・ビューア・タスク・フローのパラメータ

- 29.7.9 ドキュメント・ミニ・プロパティ・タスク・フローのパラメータ

- 29.7.10 ドキュメント・プロパティ・タスク・フローのパラメータ

- 29.7.11 リッチ・テキスト・エディタ・タスク・フローのパラメータ

- 29.7.12 ドキュメント・アップロード・タスク・フローのパラメータ

- 29.7.13 ドキュメント・バージョン履歴・タスク・フローのパラメータ

- 29.7.14 AutoVueタスク・フローのパラメータ

30 Wikiとブログの統合

- 30.1 Wikiとブログの概要

- 30.2 Wikiとブログの要件

- 30.3 Wikiの統合

- 30.3.1 Wikiの統合について

- 30.3.2 Wiki機能を提供するためのドキュメント・エクスプローラ・タスク・フローの追加

- 30.3.3 ドキュメント・エクスプローラ・タスク・フローのパラメータの変更

- 30.3.4 実行時の処理

- 30.3.5 コンテンツ・プレゼンタでのWikiページ・リンクの表示

- 30.4 ブログの統合

- 30.4.1 ブログ・タスク・フローの理解

- 30.4.2 ページへのブログの追加

- 30.4.3 実行時の処理

- 30.4.4 ブログ・タスク・フローのパラメータの変更

- 30.4.5 ブログ・タスク・フローのパラメータ

31 Content Management REST API

- 31.1 CMISドメイン・モデル

- 31.1.1 データ・モデル

- 31.1.2 サービス

- 31.2 CMIS第II部: RESTful AtomPubバインディング

- 31.2.1 サービス・ドキュメント

- 31.2.2 レスポンス・フォーマット

- 31.2.3 追加機能

- 31.3 Content Management REST Serviceのベスト・プラクティスおよび例

- 31.3.1 ベスト・プラクティス

- 31.3.2 Content Management REST Serviceの例

第V部 コミュニケーションとコラボレーションの有効化

32 お知らせの統合

- 32.1 お知らせの概要

- 32.1.1 お知らせの理解

- 32.1.2 お知らせの要件

- 32.1.3 実行時の処理

- 32.2 お知らせの基本構成

- 32.2.1 お知らせの接続の設定

- 32.2.2 お知らせの設計時の追加

- 32.2.3 お知らせのセキュリティの設定

- 32.3 お知らせの使用の詳細情報

- 32.3.1 お知らせ - クイック・ビュー・タスク・フローの追加方法

- 32.3.2 「お知らせ」ビューのカスタマイズ

- 32.3.3 お知らせ用のポータルのRSSニュース・フィードURLの取得

33 ディスカッションの統合

- 33.1 ディスカッションの概要

- 33.1.1 ディスカッションの理解

- 33.1.2 ディスカッションの要件

- 33.1.3 実行時の処理

- 33.2 ディスカッションの基本構成

- 33.2.1 ディスカッション用の接続の設定

- 33.2.2 ディスカッション機能の設計時の追加

- 33.2.3 ディスカッションのセキュリティの設定

- 33.3 ディスカッションの詳細情報

- 33.3.1 ディスカッション - 人気のトピック・タスク・フローの追加

- 33.3.2 ディスカッション - 最近のトピック・タスク・フローの追加

- 33.3.3 ディスカッション - 監視フォーラム・タスク・フローの追加

- 33.3.4 ディスカッション - 監視トピック・タスク・フローの追加

- 33.3.5 ディスカッション - クイック・ビュー・タスク・フローの追加

- 33.3.6 ディスカッション用のポータルのRSSニュース・フィードURLの取得

- 33.3.7 カスタム・ディスカッションAPIの使用

- 33.3.8 ディスカッションREST APIの使用

- 33.3.9 ディスカッションのトラブルシューティング

34 インスタント・メッセージおよびプレゼンスの統合

- 34.1 インスタント・メッセージおよびプレゼンスの概要

- 34.1.1 インスタント・メッセージおよびプレゼンスの理解

- 34.1.2 インスタント・メッセージおよびプレゼンスの要件

- 34.2 IMPの基本構成

- 34.2.1 IMP用の接続の設定

- 34.2.2 IMP機能の設計時の追加

- 34.2.3 IMPのセキュリティの設定

- 34.3 IMPの詳細情報

- 34.3.1 ネットワーク・プレゼンスの有効化

- 34.3.2 IMPビューのカスタマイズ

- 34.3.3 IMPのトラブルシューティング

35 メールの統合

- 35.1 メールの概要

- 35.1.1 メールの理解

- 35.1.2 メールの要件

- 35.2 メールの基本構成

- 35.2.1 メールの構成ロードマップ

- 35.2.2 メール用の接続の設定

- 35.2.3 メール機能の設計時の追加

- 35.2.4 メールのセキュリティの設定

- 35.3 メールの詳細情報

- 35.3.1 メールの作成ページの起動

- 35.3.2 表示するメール・メッセージ数の構成

- 35.3.3 メールのトラブルシューティング

36 投票の統合

- 36.1 投票の概要

- 36.1.1 投票の理解

- 36.1.2 投票の要件

- 36.1.3 実行時の処理

- 36.2 投票の基本構成

- 36.2.1 投票用の接続の設定

- 36.2.2 投票機能の設計時の追加

- 36.2.3 投票のセキュリティの設定

- 36.3 投票の詳細情報

- 36.3.1 投票マネージャ・タスク・フローを追加する方法

- 36.3.2 投票の実施タスク・フローを追加する方法

- 36.3.3 投票結果の表示タスク・フローを追加する方法

- 36.3.4 投票データ・コントロールの使用方法

第VI部 ピープル・コネクションの使用

37 ピープル・コネクション・サービスの概要

- 37.1 ピープル・コネクション・サービスの概要

- 37.1.1 ピープル・コネクション・サービス・タスク・フロー

- 37.1.2 ピープル・コネクション・サービスの要件

- 37.2 ピープル・コネクション・サービスのトラブルシューティング

38 ピープル・コネクション・サービスの構成

- 38.1 ピープル・コネクション・サービス用のデータベース接続の設定

- 38.2 ページヘのピープル・コネクション・タスク・フローの追加

- 38.3 ピープル・コネクション・サービスのセキュリティの設定

- 38.4 ピープル・コネクション機能のサイトレベルの設定の確立

- 38.4.1 ピープル・コネクションのサイトレベルの設定のスクリプトの理解

- 38.4.2 ピープル・コネクション機能に対してサポートされているサイトレベルの設定

- 38.4.3 例: 招待を自動的に受け入れるためのコネクションの構成

39 ピープル・コネクション・タスク・フロー・バインディング・パラメータの使用

- 39.1 ピープル・コネクション・タスク・フロー・バインディング・パラメータの概要

- 39.2 ピープル・コネクション・タスク・フロー・バインディング・パラメータの改訂

- 39.3 ピープル・コネクション・タスク・フロー・バインディング・パラメータの設定

- 39.4 アクティビティ・ストリームの詳細な問合せパラメータの設定

40 ピープル・コネクション・データ・コントロールおよびJava APIの使用方法

- 40.1 ピープル・コネクション・データ・コントロールの使用方法

- 40.1.1 プロジェクトへのデータ・コントロールの追加

- 40.1.2 ピープル・コネクション管理データ・コントロールの使用

- 40.1.3 プロファイル・データ・コントロールの使用

- 40.2 ピープル・コネクション・サービスJava API

41 ワークリストの統合

- 41.1 ワークリストの概要

- 41.1.1 ワークリストの理解

- 41.1.2 ワークリストの要件

- 41.1.3 実行時の処理

- 41.2 ロードマップ - Portal Frameworkアプリケーションに対するワークリストの構成

- 41.3 ワークリストの基本構成

- 41.3.1 ワークリストの接続の設定

- 41.3.2 ワークリスト機能の設計時の追加

- 41.3.3 ワークリストのセキュリティの設定

- 41.4 ワークリストの詳細情報

42 ピープル・コネクションREST APIの使用

- 42.1 アクティビティ・ストリームREST API

- 42.1.1 アクティビティ・ストリーム・エントリ・ポイント

- 42.1.2 アクティビティ・ストリーム・リソース・タイプの分類

- 42.1.3 アクティビティ・ストリームのセキュリティに関する考慮事項

- 42.1.4 アクティビティ・ストリーム・リソース・タイプ

- 42.2 コネクションおよびプロファイルREST API

- 42.2.1 コネクションおよびプロファイル・エントリ・ポイント

- 42.2.2 コネクションおよびプロファイル・リソース・タイプの分類

- 42.2.3 コネクションおよびプロファイルのセキュリティに関する考慮事項

- 42.2.4 コネクションおよびプロファイル・リソース・タイプ

- 42.3 フィードバックREST API

- 42.3.1 フィードバック・エントリ・ポイント

- 42.3.2 フィードバック・リソース・タイプの分類

- 42.3.3 フィードバックのセキュリティに関する考慮事項

- 42.3.4 フィードバック・リソース・タイプ

- 42.4 メッセージ・ボードREST API

- 42.4.1 メッセージ・ボード・エントリ・ポイント

- 42.4.2 メッセージ・ボード・リソース・タイプの分類

- 42.4.3 メッセージ・ボードのセキュリティに関する考慮事項

- 42.4.4 メッセージ・ボード・リソース・タイプ

- 42.4.5 可視性に基づくメッセージのフィルタリング

- 42.5 招待の作成

- 42.5.1 招待の作成

- 42.5.2 招待の受入れ

- 42.5.3 招待の削除

第VII部 ユーザーによるコンテンツ検索の支援

43 リンクの統合

- 43.1 リンクの概要

- 43.1.1 リンクの理解

- 43.1.2 リンクの要件

- 43.1.3 実行時の処理

- 43.2 リンクの基本構成

- 43.2.1 リンクの接続の設定

- 43.2.2 リンク機能の設計時の追加

- 43.2.3 リンクのセキュリティの設定

- 43.2.4 リンクのトラブルシューティング

- 43.3 リンクの詳細情報

- 43.3.1 リンクREST APIの使用

44 タグの統合

- 44.1 タグの概要

- 44.1.1 タグの理解

- 44.1.2 タグの要件

- 44.1.3 実行時の処理

- 44.2 タグの基本構成

- 44.2.1 タグの接続の設定

- 44.2.2 タグ機能の設計時の追加

- 44.2.3 タグのセキュリティの設定

- 44.3 タグの詳細情報

- 44.3.1 タグJava APIの使用

- 44.3.2 タグREST APIの使用

- 44.3.3 ページにタグを表示するオプションの方法

- 44.3.4 カスタム・オブジェクトにタグ付けするリソース・アクション処理フレームワークの使用方法

- 44.3.5 タグのトラブルシューティング

45 検索の統合

- 45.1 検索の概要

- 45.1.1 検索の理解

- 45.1.2 実行時の処理

- 45.2 検索の基本構成

- 45.2.1 構成ロードマップ - Oracle SES

- 45.2.2 Oracle SESの接続の設定

- 45.2.3 検索の設計時の追加

- 45.2.4 検索のセキュリティの設定

- 45.3 検索の詳細情報

- 45.3.1 Oracle SESアダプタを使用する検索の構成

- 45.3.2 WebCenter Portalのライブ検索を使用する検索の構成

- 45.3.3 検索Java APIの使用

- 45.3.4 検索REST APIの使用

- 45.3.5 検索データ・コントロールの使用

- 45.3.6 検索のアダプタの構築

- 45.3.7 WebCenter Portalの検索APIを使用しない検索UIのカスタマイズ

- 45.3.8 検索のトラブルシューティング

46 アクティビティ・グラフの統合

- 46.1 アクティビティ・グラフの概要

- 46.1.1 アクティビティ・グラフの理解

- 46.1.2 アクティビティ・グラフの要件

- 46.1.3 実行時の処理

- 46.2 アクティビティ・グラフの基本構成

- 46.2.1 アクティビティ・グラフの構成ロードマップ

- 46.2.2 アクティビティ・グラフの接続設定

- 46.2.3 設計時におけるアクティビティ・グラフの追加

- 46.3 アクティビティ・グラフの詳細情報

- 46.3.1 推奨データ・コントロールの使用方法

- 46.3.2 アクティビティ・グラフREST APIの使用

- 46.4 アクティビティ・グラフの拡張

- 46.4.1 カスタム・ノード・クラスの定義

- 46.4.2 カスタム・アクションの定義

- 46.4.3 カスタム類似度計算の定義

- 46.4.4 カスタム・ランク計算の定義

- 46.4.5 カスタム・アクティビティ・プロバイダの登録

- 46.4.6 カスタムQRPPの登録

- 46.5 アクティビティ・グラフのトラブルシューティング

- 46.5.1 アクティビティ・グラフ・タスク・フローのトラブルシューティング(すべてのタスク・フロー)

- 46.5.2 推奨コネクション・タスク・フローのトラブルシューティング

- 46.5.3 類似ポータル・タスク・フローのトラブルシューティング

- 46.5.3 類似アイテム・タスク・フローのトラブルシューティング

47 分析の統合

- 47.1 分析の概要

- 47.1.1 分析の理解

- 47.1.2 分析サービスの要件

- 47.1.3 実行時の処理

- 47.2 分析の基本構成

- 47.2.1 分析の構成ロードマップ

- 47.2.2 分析の接続の設定

- 47.2.3 アプリケーションへの分析イベント・コードの追加

- 47.2.4 MDSでの分析カスタマイズ用のネームスペースの構成

- 47.2.5 分析タスク・フローの設計時の追加

- 47.2.6 分析タスク・フローおよび使用状況データのセキュリティの設定

- 47.3 分析レポートの作成

- 47.3.1 SQLデータ・コントロールの使用

- 47.3.2 すぐに使用できる分析レポートのSQL文

- 47.3.3 ユーザー・メトリックについての問合せのサンプル

- 47.3.4 特定のメトリックについての分析データベース問合せのサンプル

第VIII部 ユーザーによる追跡の支援

48 イベントの統合

- 48.1 イベントの概要

- 48.1.1 イベントの理解

- 48.1.2 イベントの要件

- 48.1.3 実行時の処理

- 48.2 イベントの基本構成

- 48.2.1 イベントの構成ロードマップ

- 48.2.2 イベントの接続の設定

- 48.2.3 イベント機能の設計時の追加

- 48.2.4 イベントのセキュリティの設定

- 48.3 イベントREST APIの使用

- 48.3.1 イベント・エントリ・ポイント

- 48.3.2 イベント・リソース・タイプの分類

- 48.3.3 セキュリティに関する考慮事項

- 48.3.4 イベント・リソース・タイプ

- 48.4 イベントのトラブルシューティング

49 リストの統合

- 49.1 リストの概要

- 49.1.1 リストの理解

- 49.1.2 リストの実行時の処理

- 49.2 リストの基本構成

- 49.2.1 リストの接続の設定

- 49.2.2 リスト機能の設計時の追加

- 49.2.3 実行時のユーザーによるリストの使用の有効化

- 49.3 リソース・カタログへのリストの追加

- 49.4 リストREST APIの使用

- 49.4.1 リストのエントリ・ポイント

- 49.4.2 リスト・リソース・タイプの分類

- 49.4.3 リストのセキュリティに関する考慮事項

- 49.4.4 リストのリソース・タイプ

- 49.5 リストのトラブルシューティング

50 通知の統合

- 50.1 通知の概要

- 50.1.1 通知の理解

- 50.1.2 通知の要件

- 50.1.3 実行時の通知の処理

- 50.2 通知の基本構成

- 50.2.1 通知ネームスペースの追加

- 50.2.2 メール・サーバーへの通知接続の作成

- 50.2.3 BPELサーバーへの通知接続の作成

- 50.2.4 通知のアプリケーション・デフォルトの設定

- 50.2.5 アプリケーションへの通知タスク・フローの追加

- 50.2.6 通知のセキュリティの設定

- 50.3 通知の詳細情報

- 50.3.1 通知Java APIの使用

- 50.3.2 通知データ・コントロールの使用

51 最近のアクティビティの統合

- 51.1 最近のアクティビティの概要

- 51.1.1 最近のアクティビティの理解

- 51.1.2 実行時の処理

- 51.2 最近のアクティビティの基本構成

- 51.2.1 最近のアクティビティの接続の設定

- 51.2.2 最近のアクティビティの設計時の追加

- 51.2.3 最近のアクティビティ・タスク・フローのパラメータの変更

- 51.2.4 最近のアクティビティのセキュリティの設定

- 51.3 最近のアクティビティの詳細情報

- 51.3.1 最近のアクティビティの動作の調整

- 51.3.2 最近のアクティビティのRSSニュース・フィードURLの取得

52 RSSの統合

- 52.1 RSSの概要

- 52.1.1 RSSの理解

- 52.1.2 RSSの要件

- 52.1.3 実行時の処理

- 52.2 RSSの基本構成

- 52.2.1 RSSのプロキシ・サーバーの設定

- 52.2.2 RSS機能の設計時の追加

- 52.2.3 RSSビューアのセキュリティの設定

第IX部 WebCenter PortalおよびPortal Frameworkアプリケーションの拡張

53 Oracle WebCenter Portal REST APIの使用

- 53.1 RESTの概要

- 53.2 ユーザー名ベースのセキュリティ・トークンの暗号化の理解

- 53.3 RESTを使用するメリット

- 53.4 WebCenter PortalのREST APIの概要

- 53.5 リンク・モデルの理解

- 53.5.1 リソース索引の使用

- 53.5.2 リンクの構造

- 53.6 itemsハイパーメディアの理解

- 53.7 HTTPを使用したハイパーメディアのナビゲーション

- 53.8 WebCenter Portal REST APIのセキュリティに関する考慮事項

- 53.9 CMIS REST APIのセキュリティに関する考慮事項

- 53.10 共通タイプの理解

- 53.10.1 共通タイプ

- 53.10.2 ポータブル連絡先タイプ

- 53.11 キャッシュの管理

- 53.12 プロキシ・サーバーの構成

- 53.13 WebCenter PortalのREST APIの例

- 53.13.1 メッセージ・ボード・ハイパーメディアのナビゲーション

- 53.13.2 アクティビティ・ストリーム・データの表示

- 53.13.3 ユーザー・ステータスの更新

54 他のOracleアプリケーションの統合

- 54.1 他のOracleアプリケーションのWebCenter Portalへの統合

- 54.2 Siebelアプリケーションの統合

- 54.2.1 WebサービスとしてのSiebelアプリケーションの統合

- 54.2.2 Siebel Webエンジンを使用したSiebelアプリケーションの統合

- 54.3 E-Business Suiteアプリケーションの統合

- 54.3.1 EBSアプリケーションの統合の概要

- 54.3.2 EBSの統合に必要な構成

- 54.3.3 WSRPポートレットとしてのEBSアプリケーションの統合

- 54.3.4 WebCenter Portalへのデータ・コントロールとしてのEBSアプリケーションの統合

- 54.4 JD Edwardsアプリケーションの統合

- 54.4.1 FrameworkアプリケーションへのJD Edwardsアプリケーションの統合

- 54.4.2 ポータルへのJD Edwardsアプリケーションの統合

- 54.5 PeopleSoftアプリケーションの統合

- 54.5.1 PeopleSoftアプリケーションの統合の概要

- 54.5.2 WSRPポートレットとしてのPeopleSoftアプリケーションの統合

- 54.5.3 WebCenter Portalへのデータ・コントロールとしてのPeopleSoftアプリケーションの統合

- 54.6 Oracle Business Intelligenceプレゼンテーション・サービスの統合

- 54.6.1 Oracle Business Intelligenceプレゼンテーション・サービスの統合の概要

- 54.6.2 Oracle BIプレゼンテーション・カタログに接続するための資格証明の構成

- 54.6.3 FrameworkアプリケーションへのOracle Business Intelligenceプレゼンテーション・サービスの統合

- 54.6.4 WebCenter PortalへのOracle Business Intelligenceオブジェクトの統合

55 JDeveloperを使用したWebCenter Portalのコンポーネントの開発

- 55.1 WebCenter Portalのアセットの開発

- 55.1.1 WebCenterSpacesResourcesプロジェクトの概要

- 55.1.2 アセット開発のためのJDeveloper環境の設定

- 55.1.3 WebCenter Portalへの直接ダウンロードと直接アップロードの有効化

- 55.1.4 WebCenterSpacesResourcesプロジェクトを開いて参照

- 55.1.5 JDeveloperでのWebCenter Portalアセットの編集

- 55.1.6 WebCenter Portalへのアセットの直接アップロード

- 55.1.7 WebCenter Portalアセットのアーカイブへのエクスポート

- 55.1.8 アセットのラウンドトリップ開発のトラブルシューティング

- 55.2 WebCenter Portalのタスク・フロー、データ・コントロールおよびマネージドBeanの開発

- 55.2.1 WebCenter Portalサーバー拡張機能テンプレートの理解

- 55.2.2 WebCenter Portalの共有ライブラリ開発の理解

- 55.2.3 WebCenter Portalサーバー拡張機能ワークスペースの作成

- 55.2.4 WebCenter Portalへの追加の共有ライブラリの登録

- 55.2.5 WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)への拡張機能のデプロイ

- 55.2.6 PortalExtensionプロジェクトを使用したWebCenter PortalのADFライブラリ・コンポーネントの開発

- 55.2.7 WebCenter Portal共有ライブラリ開発者用チュートリアル

- 55.2.8 WebCenter Portal共有ライブラリのデプロイメントのトラブルシューティング

56 WebCenter Portalとの統合

- 56.1 WebCenter Portal APIを使用したアプリケーションにおけるポータルの公開

- 56.1.1 WebCenter Portal APIの概要

- 56.1.2 事例1: 購買アプリケーションでポータルを使用してサプライヤを評価する

- 56.1.3 事例2: カスタマ・サポート・センター・アプリケーションでポータルを使用してカスタマ・エスカレーションを話し合う

- 56.1.4 WebCenter Portal APIを使用するようにFrameworkアプリケーションを設定する方法

- 56.1.5 Portal FrameworkアプリケーションでのWebCenter Portal機能の提供

- 56.1.6 WebCenter Portal APIから発生した例外を処理する方法

- 56.1.7 WebCenter Portal APIの詳細情報の検索

- 56.1.8 WebCenter Portal APIでのトラブルシューティングの問題

- 56.2 WebCenter Portal REST APIの使用

- 56.2.1 Portalのエントリ・ポイント

- 56.2.2 Portalのリソース・タイプの分類

- 56.2.3 Portalのセキュリティに関する考慮事項

- 56.2.4 Portalのリソース・タイプ

- 56.3 ポータルにおけるエンタープライズ・アプリケーションの公開

- 56.3.1 ポータルでのPortal Frameworkアプリケーションの公開

- 56.3.2 ポータルでの非Oracleアプリケーションの公開

第X部 ポートレットとページレットの作業

57 ポートレットの概要

- 57.1 ポートレットの概要

- 57.2 ポートレットの構造

- 57.3 ポートレット・リソース

- 57.3.1 構築済ポートレット

- 57.3.2 Java Server Faces (JSF)ポートレット

- 57.3.3 カスタムJavaポートレット

- 57.3.4 OmniPortlet

- 57.3.5 Webクリッピング・ポートレット

- 57.3.6 ポートレット・テクノロジ

- 57.3.7 ポートレットとタスク・フローを使用する状況

- 57.4 ポートレット開発

- 57.4.1 ポートレット・プロデューサ・アプリケーション

- 57.4.2 ポートレット・モード

- 57.4.3 ポートレット間通信

- 57.4.4 ポートレットのパーソナライズとカスタマイズ

- 57.4.5 ポートレット・パフォーマンス

- 57.4.6 複数言語に対応したポートレット

- 57.4.7 ポートレット・デプロイメント

58 Oracle JSF Portlet Bridgeを使用したJSFアプリケーションからのポートレットの作成

- 58.1 Oracle JSF Portlet Bridgeの概要

- 58.2 JSFアプリケーションからのポートレットの作成

- 58.2.1 ページに基づいたJSFポートレットの作成方法

- 58.2.2 ページに基づいてJSFポートレットを作成するときに行われる処理

- 58.2.3 タスク・フローに基づいたJSFポートレットの作成方法

- 58.2.4 タスク・フローに基づいてポートレットを作成するときに行われる処理

- 58.3 ポートレット化されたページまたはタスク・フローのポートレット・エントリの更新

- 58.4 JDeveloperでのポートレット化されたページまたはタスク・フローのテスト

- 58.5 統合WebLogic Serverを使用してのJSFポートレットのテスト

- 58.6 WebLogic Managed ServerへのJSFポートレットのデプロイ

- 58.7 イベントを使用したその他のポートレットとのJSFポートレットのリンク

- 58.7.1 別のJSFポートレットへのJSFポートレットのリンク方法

- 58.7.2 JSR 286ポートレットへのJSFポートレットのリンク方法

- 58.7.3 JSFポートレットへのJSR 286ポートレットのリンク方法

- 58.7.4 Oracle JSF Portlet Bridgeのポートレット・イベントに関する必知事項

- 58.8 JSFポートレットの作成時の必知事項

- 58.8.1 一般的なガイドライン

- 58.8.2 ポートレットのガイドライン

- 58.8.3 セキュリティのガイドライン

- 58.8.4 JSFのガイドライン

- 58.8.5 Oracle ADFのガイドライン

- 58.9 実行時作成スキンのJSFポートレット・プロデューサ・アプリケーションへのコピー

59 JSR 286を使用した標準ベースのJavaポートレットの作成

- 59.1 標準ベースのJavaポートレットの概要

- 59.2 JSR 286 Javaポートレットの作成

- 59.2.1 JSR 286 Javaポートレットの作成方法

- 59.2.2 JDeveloperのウィザードを使用したJSR 286ポートレット作成時の処理

- 59.3 JSR 286 Javaポートレットの開発

- 59.3.1 ポートレット・デプロイメント・ディスクリプタ・ファイルの編集方法

- 59.3.2 JSR 286ポートレットへのカスタム・ポートレット・モードの追加方法

- 59.3.3 JSR 286ポートレットでのユーザー情報へのアクセス方法

- 59.3.4 JSR 286ポートレット用のランタイム環境のカスタマイズ方法

- 59.3.5 JSR 286ポートレットでのパブリック・レンダラ・パラメータの使用方法

- 59.3.6 JSR 286ポートレットでのポートレット・イベントの使用方法

- 59.3.7 JSR 286ポートレットへのポートレット・プリファレンスの追加方法

- 59.3.8 JSR 286ポートレットでのポートレット・フィルタの使用方法

- 59.3.9 キャッシュを使用してJSR 286ポートレットのパフォーマンスを向上する方法

- 59.3.10 リソース・プロキシに対して書きなおされたURLの実装方法

- 59.3.11 ステートレス・リソース・プロキシの実装方法

- 59.3.12 JSR 286ポートレット用のセキュリティの実装方法

- 59.3.13 JSR 286ポートレット用の永続ストアの管理方法

- 59.3.14 設計時にポートレット・プロデューサをエクスポートおよびインポートする方法

- 59.4 JSR 286ポートレットのテスト

- 59.4.1 統合WebLogic ServerでのWSRPポートレット・プロデューサの実行方法

- 59.4.2 統合WebLogic ServerでのWSRPポートレット・プロデューサの実行時の処理

- 59.4.3 統合WebLogic ServerへのWSRPポートレット・プロデューサのデプロイ方法

- 59.4.4 ポートレットのパーソナライズのテスト

- 59.4.5 WSRPテスト・ページの非表示または削除

- 59.5 WebLogic管理対象サーバーへのJSR 286ポートレットのデプロイ

- 59.6 WebLogic PortalポートレットのWebCenter Portalへの移行

- 59.6.1 WebLogic PortalからWebCenter PortalへのJavaポートレットの移行

- 59.6.2 WebCenter PortalアプリケーションへのWLPポートレットの移行に関する問題

- 59.6.3 WebCenter Portalポートレット・プロデューサ・アプリケーションへのWLPポートレットの移行に関する一般的なヒント

- 59.7 JSR 286 Javaポートレットのトラブルシューティング

- 59.7.1 JSR 286ポートレットの作成に関する問題

- 59.7.2 JSR 286ポートレットのテストに関する問題

60 Oracle PDK-Javaを使用したJavaポートレットの構築

- 60.1 PDK-Javaポートレットの概要

- 60.2 PDK-Javaポートレットの作成

- 60.2.1 PDK-Javaポートレットの作成方法

- 60.2.2 PDK-Javaポートレットの作成時に行われる処理

- 60.3 PDK-Javaポートレットの開発

- 60.3.1 PDK-Javaポートレットの一般的なガイドライン

- 60.3.2 ポートレット・モードの追加方法

- 60.3.3 パブリック・パラメータの実装方法

- 60.3.4 プライベート・パラメータの実装方法

- 60.3.5 JNDI変数の使用方法

- 60.3.6 セッション情報へのアクセス方法

- 60.3.7 キャッシュを使用してPDK-Javaポートレットのパフォーマンスを向上させる方法

- 60.3.8 PDK-Javaポートレットの永続ストアの管理方法

- 60.3.9 PDK-Javaポートレット・プロデューサの移動方法

- 60.3.10 設計時にPDK-Javaポートレット・プロデューサをエクスポートおよびインポートする方法

- 60.4 PDK-Javaポートレットのテスト

- 60.4.1 統合WebLogic ServerでのPDK-Javaポートレット・プロデューサ・アプリケーションのテスト方法

- 60.4.2 統合WebLogic ServerでPDK-Javaポートレット・プロデューサ・アプリケーションをテストする場合の処理

- 60.4.3 統合WebLogic ServerへのPDK-Javaポートレット・プロデューサのデプロイ方法

- 60.4.4 ポートレット・パーソナライズのテスト方法

- 60.5 PDK-Javaポートレットのデプロイ

- 60.6 Strutsポートレットの作成

- 60.6.1 ポートレット・アクションをホスティングするための新しいフローとビューの作成方法

- 60.6.2 新しいJSPの作成方法

- 60.6.3 ポートレットの作成方法

- 60.6.4 ビジネス・ロジックを追加するためのポートレットの拡張方法

- 60.6.5 プロデューサの登録方法

- 60.7 PDK-Javaポートレットのトラブルシューティング

- 60.7.1 ポートレットの作成ウィザードにアクセスできない

- 60.7.2 ポートレットに必要なポートレット機能が追加できない

61 ポートレット・プロデューサのデプロイ

- 61.1 ポートレット・プロデューサのデプロイの概要

- 61.2 ポートレット・プロデューサをデプロイするためのWebLogic管理対象サーバーの作成とプロビジョニング

- 61.3 ポートレット・プロデューサWebLogic管理対象サーバーへの接続の作成

- 61.4 WARデプロイメント・プロファイルの作成

- 61.5 WebLogic管理対象サーバーへのポートレット・プロデューサのデプロイ

62 ページレット・プロデューサによるページレットの作成

- 62.1 ページレット・プロデューサの概要

- 62.1.1 ページレット・プロデューサの概要

- 62.1.2 ページレット・プロデューサのアーキテクチャ

- 62.1.3 ページレット・プロデューサの要件

- 62.2 ページレット・プロデューサ設定の構成

- 62.2.1 WCIデータ・ソースの構成

- 62.2.2 ロギング設定の構成

- 62.2.3 プロキシ設定の構成

- 62.2.4 変換設定の構成

- 62.2.5 CSP設定の構成

- 62.2.6 Kerberos設定の構成

- 62.2.7 OpenSocial設定の構成

- 62.3 ページレット・プロデューサ・オブジェクトの作成

- 62.3.1 リソースの作成

- 62.3.2 ページレットの作成

- 62.3.3 Webインジェクタの作成

- 62.3.4 カスタム・パーサーの作成

- 62.3.5 ホストされたファイルの作成

- 62.4 WSRPおよびOracle JPDKポートレットに対するページレット・クロムの使用

- 62.5 OpenSocialガジェットの使用

- 62.5.1 認証の構成

- 62.5.2 ユーザー・プリファレンスの格納

- 62.5.3 WebCenter Portalプロファイル情報へのアクセス

- 62.5.4 ユーザーのアクティビティ・ストリームへのアクセス

- 62.5.5 ガジェット・イベント処理の使用

- 62.5.6 例: 外部OpenSocialガジェットの消費

- 62.5.7 例: ローカルOpenSocialガジェットの消費

- 62.6 ページレット・プロデューサを使用したカスタム・ページレットの構築

- 62.6.1 アダプティブ・ページレットのスクリプティング・フレームワークの使用

- 62.6.2 実行時のページレット機能の変更

- 62.6.3 ページレットのデバッグ

- 62.7 Webアプリケーションでのページレットの使用

- 62.7.1 Oracle JDeveloperでのJSFページへのページレットの追加

- 62.7.2 Webページへのページレットの追加

- 62.7.3 ポータル・ページへのページレットの追加

- 62.8 例と高度なトピック

- 62.8.1 単純なページレットの作成(例)

- 62.8.2 WebCenterポータルでのページレットの消費(例)

- 62.8.3 WebCenter Interactionでのページレットの消費(例)

- 62.8.4 Oracle WebCenter Sitesでのページレットの消費(例)

- 62.8.5 WSRPポートレットのページレットとしての消費

- 62.8.6 サイトにおけるWebCenter Portalサービスのページレットとしての消費

- 62.8.7 EBS11iを使用したページレットとしてのアプリケーションの消費

- 62.8.8 ページレット・プロデューサを使用したOpenSocialガジェットの消費

- 62.8.9 HTMLマークアップの操作

- 62.8.10 高度なURLリライト

- 62.9 ページレットのトラブルシューティング

63 ポートレットの消費

- 63.1 ポートレットの消費の概要

- 63.2 WebCenter Portal Frameworkアプリケーションへのポートレット・プロデューサの登録

- 63.2.1 WebCenter Portal FrameworkアプリケーションへのWSRPポートレット・プロデューサの登録

- 63.2.2 WebCenter Portal FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録

- 63.3 ポートレット・プロデューサの接続の管理

- 63.3.1 ポートレット・プロデューサ登録設定の編集方法

- 63.3.2 ポートレット・プロデューサ接続のテスト方法

- 63.3.3 ポートレット・プロデューサのリフレッシュ方法

- 63.3.4 ポートレット・プロデューサの削除方法

- 63.3.5 ポートレット・クライアント構成を編集する方法

- 63.4 ポートレット・プロデューサ・タスク・フローの追加

- 63.5 ページへのポートレットの追加

- 63.5.1 ページへのポートレットの追加方法

- 63.5.2 ページへのポートレットの追加時の処理

- 63.5.3 ポートレット間通信に関する必知事項

- 63.5.4 インライン・フレームに関する必知事項

- 63.5.5 ポートレットのサイズ設定に関する必知事項

- 63.5.6 最小化、リストアおよび移動に関する必知事項

- 63.5.7 実行時の処理

- 63.6 ポートレット・タグの属性値の設定

- 63.6.1 プロパティ・インスペクタを使用してポートレット・タグに属性値を設定する方法

- 63.6.2 ポートレット・タグの属性値をソース・コードで設定する方法

- 63.6.3 ポートレット・タグの共通属性

- 63.6.4 ポートレット・タグの外観属性

- 63.6.5 ポートレット・タグの動作属性

- 63.6.6 ポートレット・タグのポートレット・モード属性

- 63.6.7 ポートレット・タグのスタイル属性

- 63.6.8 ポートレット・タグのバインディング属性

- 63.6.9 ポートレット・タグのカスタマイズ属性

- 63.6.10 ポートレット・タグのその他の属性

- 63.7 JSR 286ポートレットでのパラメータとイベントの手動によるワイヤリング

- 63.7.1 パブリック・レンダラ・パラメータとポートレットの手動によるリンク方法

- 63.7.2 ポートレット・イベントとポートレットの手動によるリンク方法

- 63.8 ポートレットのコピー

- 63.8.1 同一ページ上でのポートレットのコピーおよび配置方法

- 63.8.2 異なるアプリケーション・ページ間でのポートレットのコピー方法

- 63.9 アプリケーション・ページからのポートレットの削除

- 63.10 WebCenterサービス・ポートレットの消費

- 63.10.1 Oracle PortalでのWebCenterサービス・ポートレットの消費方法

- 63.10.2 Oracle WebLogic PortalでのWebCenterサービス・ポートレットの消費方法

- 63.10.3 Oracle WebCenter InteractionでのWebCenterサービス・ポートレットの消費方法

- 63.10.4 WebCenterサービス・ポートレット・パラメータの設定方法

- 63.10.5 WebCenterサービス・ポートレットの制限

- 63.10.6 WebCenterサービス・ポートレットでの問題のトラブルシューティング

- 63.11 ポートレットのトラブルシューティング

- 63.11.1 ポートレットのトラブルシューティング用診断ツール

- 63.11.2 ポートレット・ログ・ファイルの構成

- 63.11.3 ポートレットでのポートレット・コンシューマ・エラーの表示

- 63.11.4 ポートレットでのポートレット・タイムアウトの表示

- 63.11.5 ポートレットでのリモート・ポートレット通信エラーの表示

- 63.11.6 ポートレットでのリモート・ポートレット・エラーの表示

64 OmniPortletを使用したポートレットの作成

- 64.1 OmniPortletの概要

- 64.2 アプリケーションへのOmniPortletの追加

- 64.3 OmniPortletのカスタマイズ

- 64.4 OmniPortlet構成のヒント

- 64.4.1 ファイアウォール外のデータにアクセスするためのOmniPortletプロデューサの構成

- 64.4.2 他のリレーショナル・データベースにアクセスするためのOmniPortletプロデューサの構成

- 64.4.3 PortalツールおよびWebプロデューサの構成(オプション)

- 64.5 OmniPortletの問題のトラブルシューティング

65 Webクリッピングを使用したコンテンツ・ベースのポートレットの作成

- 65.1 Webクリッピングの概要

- 65.2 アプリケーションへのWebクリッピングの追加

- 65.3 シングル・サインオンを使用した認証されているWebコンテンツの統合

- 65.4 Webクリッピングの拡張機能

- 65.4.1 Webクリッピング・トランスポートAPIの使用方法

- 65.4.2 リソース・プロキシを使用するためのイメージ・リンクのリライト

- 65.5 Webクリッピング・ポートレット構成のヒント

- 65.5.1 Webクリッピング・リポジトリの構成

- 65.5.2 HTTPまたはHTTPSのプロキシ構成

- 65.5.3 Webクリッピング・プロデューサのセキュリティ

- 65.6 Webクリッピングに関する現在の制限

- 65.7 Webクリッピングのトラブルシューティング

第XI部 パーソナライズされたコンテンツの配信

66 Oracle WebCenter Portalアプリケーションのパーソナライズ

- 66.1 パーソナライズの概要

- 66.1.1 パーソナライズ・アーキテクチャ

- 66.1.2 コンダクタ

- 66.1.3 データ・プロバイダの使用

- 66.2 アプリケーションへのパーソナライズの統合

- 66.2.1 パーソナライズの要件

- 66.2.2 JDeveloperでのパーソナライズされたシナリオの作成

- 66.2.3 ファイル・ベースのシナリオの作成

- 66.2.4 実行時のターゲット・コンテンツの表示

- 66.3 パーソナライズ・ファイルのデプロイ

- 66.3.1 パーソナライズ・ファイルのサーバーへのデプロイ

- 66.3.2 パーソナライズ・ファイルのアーカイブ・ファイルへのデプロイ

- 66.3.3 MARファイルのインポートとエクスポート

- 66.3.4 パーソナライズ・ファイルの伝播

- 66.4 チュートリアル: 単純なアプリケーションの作成、テストおよびデプロイ

- 66.5 WebCenter Portalでのパーソナライズの使用

- 66.5.1 WebCenter Portalでのパーソナライズの概要

- 66.5.2 WebCenter PortalでのパーソナライズELのコール

67 カスタム・データ・プロバイダの実装

- 67.1 データ・プロバイダの概要

- 67.2 カスタム・データ・プロバイダ作成の必要性の判断

- 67.3 データ・プロバイダの検出

- 67.4 単純なカスタム・データ・プロバイダの実装

- 67.4.1 使用例と前提条件の概要

- 67.4.2 データ・プロバイダのアーキテクチャ

- 67.4.3 DefaultDataProviderクラスの拡張

- 67.4.4 リソース・プロパティ・ファイルの作成

- 67.4.5 BaseConnectionConfigおよびDefaultProviderConnectionの拡張

- 67.4.6 DefaultExecutableResourceの拡張

- 67.5 カスタム・データ・プロバイダのデプロイ

- 67.5.1 データ・プロバイダ・クラスのコンパイル

- 67.5.2 META-INF/servicesへの構成ファイルの作成

- 67.5.3 JARファイル構造の設定

- 67.5.4 JARファイルの作成

- 67.5.5 JARファイルのサーバーへのコピー

- 67.5.6 WCPS接続構成ファイルの更新

- 67.5.7 デプロイのテスト

- 67.6 シナリオ内のデータ・プロバイダのJDeveloperからの起動

- 67.7 カスタム・データ・プロバイダの設計: ベスト・プラクティス

- 67.7.1 ドメイン固有のプロバイダの作成

- 67.7.2 既存のデータ・プロバイダ・インフラストラクチャの拡張

- 67.7.3 シナリオとデータ・プロバイダの再利用

68 カスタム・ファンクション・プロバイダの実装

- 68.1 ファンクション・プロバイダの概要

- 68.2 ファンクション・プロバイダ作成の必要性の判断

- 68.3 ファンクション・プロバイダの検出

- 68.4 単純なカスタム・ファンクション・プロバイダの実装

- 68.4.1 使用例と前提条件の概要

- 68.4.2 ファンクション・プロバイダの例

- 68.4.3 Javaクラス注釈の追加

- 68.4.4 ファンクション・プロバイダのメソッドの作成

- 68.5カスタム・ファンクション・プロバイダのデプロイ

- 68.5.1 ファンクション・プロバイダ・クラスのコンパイル

- 68.5.2 リソース・プロパティ・ファイルの作成

- 68.5.3 META-INF/servicesへの構成ファイルの作成

- 68.5.4 JARファイル構造の設定

- 68.5.5 JARファイルの作成

- 68.5.6 JARファイルのサーバーへのコピー

- 68.5.7 デプロイのテスト

- 68.6 シナリオ内のファンクション・プロバイダのコール

69 ファンクション・プロバイダ・リファレンス

- キャッシュ・メソッド

- getCache

- get

- clear

- getCustomCache

- getLargeCache

- getMediumCache

- getSmallCache

- put

- マップ・メソッド

- new

- put

- size

- keyset

- values

- get

- withEntries

- リスト・メソッド

- new

- add

- size

- 文字列メソッド

- concat

- contains

- indexOf

- join

- replaceAll

- split

- startsWith

- endsWith

- substring

- 日付メソッド

- after

- before

- diffDates

- diffFromNow

- format

- new

- システム・メソッド

- print

- println

- セキュリティ・メソッド

- getUserRoles

- isUserInRole

- コレクション・メソッド

- append

- toArray

- fromArray

- size

- sort

- new

- アクティビティ・グラフ・メソッド

- filterRecsByScore

- getCMISLinksFromCommonItems

- getCMISLinksFromRecommendations

- getContentIDs

- getContentIDsExclude

- getContentIDsFiltered

- CMISメソッド

- atomAsCMISObjects

- atomAsEntries

- atomAsFeed

- atomAsStreamUrls

- getCMISQueryForDocIDs

- getCMISQueryForDocIDsFromFullID

70 プロパティ・サービスの使用

- 70.1 プロパティ・サービスの概要

- 70.1.1 プロパティ・サービスの用途

- 70.1.2 プロパティ・セットについて

- 70.1.3 ロケータについて

- 70.1.4 プロパティ・サービスのキャッシュ

- 70.1.5 プロパティ・サービスのシナリオでの使用

- 70.1.6 アーキテクチャの概要

- 70.2 JDeveloperでのプロパティ・セット定義の作成

- 70.3 プロパティ・セット定義のデプロイ

- 70.4 プロパティ・セット定義のデプロイのテスト

- 70.4.1 RESTを使用したプロパティ・セット定義の検索

- 70.4.2 データ・プロバイダを使用したプロパティ・セット定義の検索

- 70.5 プロパティ・サービス・データ・プロバイダの使用

- 70.5.1 シナリオでのプロパティ・サービス・データ・プロバイダへのアクセス

- 70.5.2 プロパティ・サービス・データ・プロバイダ・メソッドのリファレンス

- 70.6 プロパティ・サービスのキャッシュ・サービスの使用

- 70.7 カスタム・ロケータの実装

- 70.7.1 使用例と前提条件の概要

- 70.7.2 プロパティ・セット定義の作成

- 70.7.3 データの作成: 単純なライブラリ・クラスの実装

- 70.7.4 JavaBeanを使用したデータのバッキング

- 70.7.5 Javaデータ・アクセス・オブジェクトの実装

- 70.7.6 ILocatorクラスの実装

- 70.7.7 カスタム・ロケータを使用したPropertySetDefinitionの更新

- 70.7.8 例のコンパイルおよびデプロイ

- 70.7.9 ロケータを使用するためのシナリオの作成

- 70.7.10 シナリオのXMLソースの表示

71 プロパティ・サービスREST API

- 71.1 プロパティ・サービスREST APIの概要

- 71.2 プロパティ・サービスREST APIの使用

- 71.2.1 プロパティ・サービスのリソース索引

- 71.2.2 ネームスペースの作成、取得、更新および削除

- 71.2.3 プロパティ定義の作成、取得、更新および削除

- 71.2.4 プロパティ・セット定義の作成、取得、更新および削除

- 71.2.5 プロパティ・セットの作成、取得、更新および削除

- 71.2.6 プロパティの作成、取得、更新および削除

- 71.2.7 JSONペイロード

- 71.2.8 例外

- 71.2.9 問合せパラメータ

- 71.2.10 検索式

72 コンダクタAPIリファレンス

- 72.1 Java APIの使用

- 72.2 コンダクタREST APIの使用

- 72.2.1 データ・プロバイダ管理REST APIの使用

- 72.2.2 ファンクション・プロバイダ管理APIの使用

- 72.2.3 ネームスペース管理APIの使用

- 72.2.4 シナリオ管理APIの使用

- 72.3 ELを使用したデータ統合クライアント・サービスのコール

- 72.3.1 JSFページからのデータ統合クライアント・サービスのコール

- 72.3.2 JSPページからのデータ統合クライアント・サービスのコール

- 72.3.3 データ統合コンテキスト・オブジェクトのメソッド・リファレンス

- 72.3.4 シングル・サインオンの有効化

73 パーソナライズのためのキャッシュ管理

- 73.1 パーソナライズ用のキャッシュ管理の概要

- 73.2 キャッシュ構成ファイルの配置および更新

- 73.2.1 キャッシュ構成ファイルの格納先

- 73.2.2 キャッシュ構成ファイルの使用

- 73.3 パーソナライズ・コンポーネントでのキャッシュの使用

- 73.3.1 キャッシュ・ファンクション・プロバイダ

- 73.3.2 CoherenceCacheFactoryの使用

- 73.4 パーソナライズ・コンポーネント向けのキャッシュの構成

- 73.4.1 事前構成済キャッシュ

- 73.4.2 カスタム・キャッシュ

- 73.4.3 キャッシュが独自の構成ファイルを持つ場合

- 73.5 データ・プロバイダ接続上のキャッシュの構成

- 73.6 Oracle Coherenceの監視

第XII部 WebCenter Portalアプリケーションの完成

74 WebCenter Portal Frameworkアプリケーションの保護

- 74.1 Portal Frameworkアプリケーションのセキュリティの概要

- 74.2 アプリケーション・ロールの作成

- 74.3 ADFセキュリティの構成

- 74.3.1 ADFセキュリティ設定の構成

- 74.3.2 Portal Frameworkアプリケーションの自動セキュリティ権限付与

- 74.4 ロール・マネージャ・タスク・フローの使用

- 74.5 エンタープライズ・ロール・メンバー・タスク・フローの使用

- 74.6 ページ階層セキュリティ・エディタの使用

- 74.6.1 ページ階層セキュリティの概要

- 74.6.2 ページ階層の構築

- 74.7 ログイン・ページおよびログイン・コンポーネントの作成

- 74.8 ログイン・ポートレットの作成

- 74.9 ログイン・ページへのポートレットの追加

- 74.10 自己登録ページの作成

- 74.10.1 WebCenter Portal自己登録タスク・フローの統合

- 74.10.2 カスタム自己登録ページの構築

- 74.10.3 自己登録招待ページの作成

- 74.11 パスワードのリセット・ページの作成

- 74.12 ポートレット・パーソナライズをテストするための基本認証の構成

- 74.13 外部アプリケーションの使用

- 74.13.1 外部アプリケーションの使用

- 74.13.2 ユーザー資格証明の指定

- 74.13.3 外部アプリケーションの管理

- 74.14 キーストアへのカスタム証明書の登録

- 74.15 ポートレットおよびカスタマイズ可能コンポーネントの継承されたセキュリティのオーバーライド

- 74.15.1 ポートレットのセキュリティ

- 74.16 アイデンティティ伝播メカニズム

- 74.17 WS-Securityを使用したWSRPプロデューサを介するアイデンティティ伝播の保護

- 74.17.1 WS-Securityを使用しないアイデンティティ伝播

- 74.17.2 WS-Securityを使用したアイデンティティ伝播

- 74.17.3 WSRPポートレットのセキュリティの構成

- 74.18 PDK-Javaポートレットのセキュリティの実装

- 74.18.1 前提

- 74.18.2 PDK-Javaポートレットのセキュリティ機能の概要

- 74.18.3 シングル・サインオン

- 74.18.4 ポートレットのセキュリティ・マネージャ

- 74.18.5 メッセージ認証

- 74.18.6 ユーザー入力のエスケープ

- 74.19 WebCenter Portal偽装ELおよびAPIの使用

- 74.20 セキュリティ問題のトラブルシューティング

- 74.20.1 使用されているコンテンツ・リポジトリのデータ・コントロール・メソッドを含むページの実行時に表示されるエラー・メッセージ

75 複数言語に対応したポータルの構築

- 75.1 複数言語に対応したポータル構築のガイドライン

- 75.2 ADF Facesコンポーネントの言語サポートの理解

- 75.3 リソース・バンドルを使用した複数言語のサポート

- 75.4 新しい言語用のサポートの追加

第XIII部 付録

A Oracle WebCenter Portalファイル

- A.1 Oracle WebCenter Portalファイルの概要

- A.2 ファイルの概要

- A.3 WebCenter Portal Frameworkアプリケーション関連のファイル

- A.3.1 catalog-registry.xml

- A.3.2 default-catalog.xml

- A.3.3 default-navigation-model.xml

- A.3.4 index.html

- A.3.5 navigation-registry.xml

- A.3.6 pages.xml

- A.3.7 error.jspx

- A.3.8 home.jspx

- A.3.9 login.jspx

- A.3.10 navigation-renderer.jspx

- A.3.11 pageTemplate_globe.jspx

- A.3.12 pageTemplate_swooshy.jspx

- A.4 JSR 286ポートレット関連のファイル

- A.4.1 portlet.xml

- A.4.2 oracle-portlet-tags.jar

- A.4.3 portlet_mode.jsp

- A.4.4 portlet_name.java

- A.4.5 portlet_nameBundle.jar

- A.4.6 web.xml

- A.5 PDK-Javaポートレット関連のファイル

- A.5.1 producer_name.properties

- A.5.2 _default.properties

- A.5.3 index.jsp

- A.5.4 portlet_name_modePage.jsp

- A.5.5 provider.xml

- A.5.6 web.xml

- A.6 システム・ファイル

- A.6.1 adf-config.xml

- A.6.2 DataBindings.cpx

- A.6.3 faces-config.xml

- A.6.4 page_name.jspx

- A.6.5 PageDef.xml

- A.6.6 trinidad-config.xml

- A.6.7 trinidad-skins.xml

- A.6.8 web.xml

- A.6.9 weblogic-application.xml

- A.6.10 mdsサブディレクトリ

- A.6.11 wsdlサブディレクトリ

- A.7 セキュリティ関連のファイル

- A.7.1 connections.xml

- A.7.2 jazn-data.xml

- A.7.3 cwallet.sso

- A.7.4 jps-config.xml

- A.7.5 adf-config.xml

- A.8 Oracle JDeveloperファイル

- A.9 WebCenter Portalのツールとサービス関連のファイル

B コンポーザ・コンポーネントのプロパティおよびファイル

- B.1 コンポーザ・コンポーネントのプロパティ

- B.1.1 Page Customizableコンポーネント

- B.1.2 Change Mode LinkおよびChange Mode Button

- B.1.3 Layout Customizableコンポーネント

- B.1.4 Panel Customizableコンポーネント

- B.1.5 Show Detail Frameコンポーネント

- B.1.6 Custom Action

- B.1.7 Show Property

- B.2 コンポーザ固有のファイルと構成

- B.2.1 pe_ext.xml

- B.2.2 adf-config.xml

- B.2.3 adf-settings.xml

- B.2.4 web.xml

- B.3 コンポーザのデフォルト・アドオンとプロパティ・パネル

- B.3.1 デフォルトのアドオン

- B.3.2 デフォルトのプロパティ・パネル

- B.4 コンポーザ・コンポーネント・スタイル固有のプロパティ

- B.4.1 コンポーザ・コンポーネントのスタイル・セレクタ

- B.4.2 スタイル属性

- B.5 カスタマイズ可能コンポーネント(HTML)のプロパティ

- B.5.1 Panel Customizable (HTML)コンポーネント

- B.5.2 Show Detail Frame (HTML)コンポーネント

- B.5.3 カスタマイズ可能コンポーネント(HTML)のスタイル・セレクタ

C リソース・カタログのプロパティおよびファイル

- C.1 カタログ定義の構成および場所

- C.2 XMLスキーマ

- C.3 カタログ定義の属性

- C.3.1 catalogDefinition

- C.3.2 フォルダ

- C.3.3 url

- C.3.4 includeCatalog

- C.3.5 component

- C.3.6 customFolder

- C.3.7 customContent

- C.3.8 attributes

- C.3.9 attribute

- C.3.10 parameters

- C.3.11 schema

- C.3.12 resource

- C.4 カタログへの動的リソースの追加に使用可能なファクトリ・クラス

- C.4.1 XMLComponentFactory

- C.4.2 ContentUrlResourceFactory

- C.4.3 CustomFolderContextFactory

- C.4.4 DefaultFolderContextFactory

- C.4.5 ContentListFactory

- C.4.6 EnsembleContentProvider

D コンポーザ対応のページで使用するタスク・フローの作成のガイドライン

- D.1 有効なジオメトリ管理とページ区切りのガイドライン

- D.1.1 ガイドライン1: フロー・タスク・フローの作成

- D.1.2 ガイドライン2: タスク・フローに表示されるレコード数の制限

- D.1.3 ガイドライン3: タスク・フローの最小高さの指定

- D.1.4 ガイドライン4: 表示制限を超えるデータにアクセスするためのUIの追加

- D.2 タスク・フロー・パラメータおよびカスタマイズとパーソナライズのオプションを有効利用するためのガイドライン

- D.2.1 タスク・フロー・パラメータを実装するためのガイドライン

- D.2.2 カスタマイズを実装するためのガイドライン

- D.2.3 パーソナライズを実装するためのガイドライン

- D.2.4 暗黙的パーソナライズを実装するためのガイドライン

- D.3 ガイドラインに従って作成したタスク・フローを使用するPortal Frameworkアプリケーションの例

- D.3.1 RecentPagesTaskFlowプロジェクト

- D.3.2 WebPagesプロジェクト

- D.3.3 実行時の動作

- D.4 結論

E Oracle Portalコンポーネントの再利用

- E.1 Oracle Portalコンポーネントの概要

- E.2 ポートレットの再利用

- E.2.1 JSR 286とOracle PDK-Javaポートレットの再利用法

- E.2.2 イベントに関する必知事項

- E.2.3 モバイル・ポートレットに関する必知事項

- E.2.4 ポートレット・クロムに関する必知事項

- E.2.5 パーソナライズとカスタマイズに関する必知事項

- E.2.6 Oracle Portalシステム・リソースに関する必知事項

- E.2.7 パートナ・アプリケーションと外部アプリケーションに関する必知事項

- E.2.8 データベース・ポートレットを再利用するためのフェデレーテッド・ポータル・アダプタの利用法

- E.2.9 フェデレーテッド・ポータル・アダプタのトラブルシューティングに関する必知事項

- E.2.10 フェデレーテッド・ポータル・アダプタの制限に関する必知事項

- E.2.11 Oracle Application Serverの以前のバージョンからのOracle PDK-Javaプロデューサの再利用法

- E.3 アイテムの再利用

F 式言語式

- F.1 式言語(EL)式の概要

- F.1.1 式ビルダーの概要

- F.1.2 WebCenter Portalの式エディタの概要

- F.2 式言語のユースケース

- F.3 アプリケーションに関連するEL

- F.4 セキュリティに関連するEL

- F.4.1 例: EL式を使用した、コンポーザの構造ビューへのアクセス制限

- F.5 一般設定に関連するEL

- F.6 ポータル・リソースに関連するEL

- F.7 ナビゲーションに関連するEL

- F.7.1 例: ナビゲーションに対するEL式の使用

- F.8 ツールとサービスに関連するEL

- F.9 ドキュメントに関連するEL

- F.10 ピープル・コネクションに関連するEL

- F.11 パーソナライズに関連するEL

- F.12 偽装に関連するEL

- F.13 コンポーザに関連するEL式

- F.13.1 例: コンポーザに対するEL式の使用

- F.14 WebCenter Portalのみに関連するEL式

- F.14.1 ポータル問合せでの自由形式のJPQL WHERE句およびSORT句の非サポート

- F.14.2 式エディタのシード済の式

- F.14.3 WebCenter Portal情報に関連するEL式

- F.14.4 アセットに関連するEL式

- F.14.5 特定のページに関連するEL式

- F.14.6 特定のページに関連するEL式

- F.14.7 ポータル・イベント・コンテキストに関連するEL

- F.14.8 実用的なEL式

- F.15 デバイス設定に関連するEL式

- F.15.1 デバイス属性を検出するタスク・フローのサンプル・コード

G 分析データベース・スキーマ

- G.1 分析データベース・スキーマの概要

- G.1.1 分析データベース・モデルの概要

- G.1.2 分析データベース表の概要

- G.2 分析ファクト表の説明

- G.2.1 ASFACT_WC_PAGECRE_0

- G.2.2 ASFACT_WC_PAGEDEL_0

- G.2.3 ASFACT_WC_PAGEEDI_0

- G.2.4 ASFACT_WC_PAGETAG_0

- G.2.5 ASFACT_WC_PAGEVIE_0

- G.2.6 ASFACT_WC_DISCUSS_0

- G.2.7 ASFACT_WC_DISCUSS_1

- G.2.8 ASFACT_WC_DISCUSS_2

- G.2.9 ASFACT_WC_DISCUSS_3

- G.2.10 ASFACT_WC_DISCUSS_4

- G.2.11 ASFACT_WC_DISCUSS_5

- G.2.12 ASFACT_WC_DISCUSS_6

- G.2.13 ASFACT_WC_DISCUSS_7

- G.2.14 ASFACT_WC_DISCUSS_8

- G.2.15 ASFACT_WC_DISCUSS_9

- G.2.16 ASFACT_WC_DISCUSS_A

- G.2.17 ASFACT_WC_DISCUSS_B

- G.2.18 ASFACT_WC_DISCUSS_C

- G.2.19 ASFACT_WC_DOCLIB__0

- G.2.20 ASFACT_WC_DOCLIB__1

- G.2.21 ASFACT_WC_DOCLIB__2

- G.2.22 ASFACT_WC_DOCLIB__3

- G.2.23 ASFACT_WC_DOCLIB__4

- G.2.24 ASFACT_WC_DOCLIB__5

- G.2.25 ASFACT_WC_DOCLIB__6

- G.2.26 ASFACT_WC_DOCLIB__7

- G.2.27 ASFACT_WC_EVENT_C_0

- G.2.28 ASFACT_WC_EVENT_D_0

- G.2.29 ASFACT_WC_EVENT_E_0

- G.2.30 ASFACT_WC_GROUPSP_0

- G.2.31 ASFACT_WC_GROUPSP_1

- G.2.32 ASFACT_WC_GROUPSP_2

- G.2.33 ASFACT_WC_GROUPSP_3

- G.2.34 ASFACT_WC_LIST_CR_0

- G.2.35 ASFACT_WC_LIST_DE_0

- G.2.36 ASFACT_WC_LIST_ED_0

- G.2.37 ASFACT_WC_LOGINS_0

- G.2.38 ASFACT_WC_PEOPLEC_0

- G.2.39 ASFACT_WC_PEOPLEC_1

- G.2.40 ASFACT_WC_PEOPLEC_2

- G.2.41 ASFACT_WC_PEOPLEC_3

- G.2.42 ASFACT_WC_PORTLET_0

- G.2.43 ASFACT_WC_SEARCHE_0

- G.3 分析ディメンション表の説明

- G.3.1 ASDIM_WC_APPLICA_0

- G.3.2 ASDIM_WC_CLIENT__0

- G.3.3 ASDIM_WC_DISCUSS_0

- G.3.4 ASDIM_WC_DISCUSS_1

- G.3.5 ASDIM_WC_DISCUSS_2

- G.3.6 ASDIM_WC_DISCUSS_3

- G.3.7 ASDIM_WC_DOCUMENT_0

- G.3.8 ASDIM_WC_EVENTS_0

- G.3.9 ASDIM_WC_GROUPSP_0

- G.3.10 ASDIM_WC_LISTS_0

- G.3.11 ASDIM_WC_PAGES_0

- G.3.12 ASDIM_WC_PORTLET_0

- G.3.13 ASDIM_WC_PORTLET_1

- G.3.14 ASDIM_WC_PRODUCE_0

- G.3.15 ASDIM_WC_REFERRE_0

- G.3.16 ASDIM_WC_SEARCHE_0

- G.3.17 ASDIM_WC_TAGS_0

- G.3.18 ASDIM_WC_USER_AG_0

- G.3.19 ASDIM_TIME

- G.3.20 ASDIM_USERS

- G.3.21 ASDIM_USERPROPERTIES

- G.3.22 ASDIM_USERPROPERTYVALUES

- G.4 分析システム表の説明

- G.4.1 ASSYS_CONFIG

- G.4.2 ASSYS_DIMENSIONPROPS

- G.4.3 ASSYS_EVENTDIMENSIONS

- G.4.4 ASSYS_EVENTFACTS

- G.4.5 ASSYS_EVENTS

- G.4.6 ASSYS_NAMESPACES

- G.4.7 ASSYS_REPORTCOMPOSITION

- G.4.8 ASSYS_REPORTGROUP

- G.4.9 ASSYS_REPORTITEMS

- G.4.10 ASSYS_REPORTITEMVALUES

- G.4.11 ASSYS_REPORTS

- G.5 分析ユーザー・プロパティ

- G.5.1 ユーザー・プロパティ表 - 概要

- G.5.2 ユーザー・プロパティ・ディメンション表

- G.5.3 WebCenter Portalの追加設定なしのユーザー・プロパティ

- G.6 分析イベントおよびディメンション・データ型

H WebCenter Portalのアクセシビリティ機能

- H.1 WebCenter Portalアクセシビリティ機能の概要

- H.2 アクセス可能なHTMLの生成

- H.3 実行時のアクセシビリティ機能

- H.4 ポートレットのアクセシビリティの考慮事項

用語集

はじめに

このガイドでは、WebCenter Portal FrameworkおよびJDeveloperを使用してポータル・アプリケーションおよびカスタム・コンポーネントを構築する方法について説明し、次のすべてのタスクに関する詳細情報を提供します。

- 反復開発やラウンドトリップ開発をはじめとするポータル開発環境の設定および準備

- Portal Frameworkアプリケーションの構築、デプロイおよび管理

- Portal Frameworkアプリケーションとそのすべての関連コンポーネントの保護、管理、監視および保守

- ポータルのカスタム・ナビゲーション・ユーザー・インタフェースの開発

- Oracle WebCenter Portalサービス用のアプリケーションの準備、およびOracle WebCenter Portalサービスの構成および統合

- Portal Frameworkアプリケーションへのコンテンツの統合

- Portal Frameworkアプリケーションへのパーソナライズされたコンテンツの配信

- Portal Frameworkアプリケーション用のポートレットの計画、構築、デプロイおよび管理

注意:

このマニュアルのPortable Document Format (PDF)版でURLが2行に分かれている場合は、このURLをクリックしてもブラウザに完全なURLデータは送信されません。PDFに含まれているURLにアクセスするには、URLをコピーし、ブラウザのアドレス・フィールドに貼り付けます。このマニュアルのHTML版では、リンクをクリックすればブラウザに直接リンク先が表示されます。

対象読者

このマニュアルの対象開発者は次のとおりです。

- WebCenter Portal Frameworkアプリケーションを構築する開発者、または自身のアプリケーションにOracle WebCenter Portalの機能を統合する開発者

- Oracle WebCenter Portalサービスからポートレットを構築するコンポーネント開発者

このガイドでは、読者がすでに『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を読んでおり、次のテクノロジに精通していることも前提としています。

- Java

- Oracle JDeveloper

- JavaServer Faces

- Oracle Application Development Framework (Oracle ADF) (目的、基本的なアーキテクチャ、基本的な開発スキル)

- Oracle ADF Facesコンポーネント

- Oracle WebLogic Server

ドキュメントのアクセシビリティについて

オラクル社のアクセシビリティへの取組みの詳細は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docaccを参照してください。

Oracleサポートへのアクセス

お客様は、My Oracle Supportから電子サポートにアクセスできます。詳細は、http://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoまたはhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs(聴覚障害者向け)を参照してください。

関連ドキュメント

詳細は、Oracle Fusion Middleware 11gリリース1 (11.1.1.8.3)のドキュメント・セット内の次のドキュメント、またはOracle Technology Network (OTN)のhttp://www.oracle.com/technology/index.htmlを参照してください。

- Oracle Fusion Middleware Oracle WebCenter Portalの管理

- Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築

- Oracle Fusion Middleware Oracle WebCenter Portalの使用

- Oracle Fusion Middlewareエラー・メッセージ・リファレンス

- Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド

表記規則

このマニュアルでは次の表記規則を使用します。

表記規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語あるいは用語集に記載されている用語を示します。

イタリック体

イタリックは、ドキュメントのタイトル、強調またはユーザーが特定の値を指定するプレースホルダー変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

新機能

次のトピックでは、WebCenter Portalの新機能と変更された機能について、およびこのガイドに記載されるその他の重要な変更について紹介し、詳細情報へのリンクを提供します。このドキュメントは、以前Oracle WebCenter Portal開発者ガイドと呼ばれていたドキュメントの新版です。

11g リリース1 (11.1.1.8.3)の新機能と変更機能

- 既存のページ・テンプレートと比較して効率とパフォーマンスが向上した、4つの新しいページ・テンプレートのサポート。「新しいページ・テンプレート」を参照してください。

- Folders_gのかわりとして、Oracle WebCenter Contentからスケーラブルで高パフォーマンスのフォルダ・サービスを提供するFrameworkFoldersコンポーネントのサポート。「FrameworkFoldersのサポート」を参照してください。

新しいページ・テンプレート

WebCenter Portalバンドル・パッチ11.1.1.8.3では、既存のページ・テンプレートと比較して効率とパフォーマンスが向上した、4つの新しいページ・テンプレートをサポートしています。　ファイルの内容は次のとおりです。

- 4つのページ・テンプレート: Skyrosサイド・ナビゲーションv2、Skyrosサイド・ナビゲーション(ストレッチ) v2、Skyrosトップ・ナビゲーションv2およびSkyrosトップ・ナビゲーション(ストレッチ) v2

- 1つのスキン: Skyros v2
これは、新しいページ・テンプレートの優先スキンです。既存のページ・テンプレートで新しいSkyros v2スキンを使用しないでください。同様に、新しいページ・テンプレートで既存のスキンを使用しないでください。

- 2つのタスク・フロー: ポータル・サイド・ナビゲーションおよびポータル・トップ・ナビゲーション
これらのタスク・フローは、横側のペインまたはポータル上部のタブにナビゲーションを実装するために、ページ・テンプレートで使用されます。これらのタスク・フローのナビゲーションのスタイルは、このパッチで使用できるスキン・ファイルのCSSに依存します。別のスキンを使用しているページ・テンプレートでこれらのタスク・フローを使用する場合は、スキンのCSSの不一致により、ナビゲーションが予期したとおりに表示されないことがあります。ただし、ナビゲーション・セクションを、新しいSkyros v2スキン・ソース・コードから現在のスキン・ソース・コードにコピーして貼り付けた場合は、予期したとおりの結果が得られます。

新しいページ・テンプレートを使用するには:

1. WebCenter Portalバンドル・パッチ11.1.1.8.3 (パッチ18085041)で18085041/NewAssetBP3.zipを見つけて、内容をローカル・ディレクトリに解凍します。

2. WebCenter Portalにログインします。

3. ユーザーがAdministratorまたはApplication Specialistロールの権限を持っている場合は、「共有アセット」ページに移動します。

4. 左側のペインで次のアセットを選択し、ローカル・ファイル・システム上の保存済の場所から対応するファイルをアップロードします。

アセット・タイプ

ファイル名

ページ・テンプレート

pageTemplate_Skyros_Side_Navigation_Stretch_v2.ear

pageTemplate_Skyros_Side_Navigation_v2.ear

pageTemplate_Skyros_Top_Navigation_Stretch_v2.ear

pageTemplate_Skyros_Top_Navigation_v2.ear

スキン

skin_Skyros_v2_Skin.ear

タスク・フロー

taskFlow_Portal_Side_Navigation.ear

taskFlow_Portal_Top_Navigation.ear

ページ・テンプレート、スキンおよびタスク・フローをアップロードしたら、次の手順を実行して新しいページ・テンプレートを使用します。

1. ホーム・ポータルおよびすべての新しいポータルのページで新しいデフォルト・ページ・テンプレートを設定するには(ポータルのテンプレートで、特定のページ・テンプレートを使用するように指定されていない場合)、『Oracle Fusion Middleware Oracle WebCenter Portalの管理』のデフォルト・ページ・テンプレートの選択に関する項を参照してください。

2. 個々のポータルで使用されているページ・テンプレートを変更するには、『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のポータルのページ・テンプレートの変更に関する項を参照してください。

3. ページ・テンプレートで使用されている優先スキンを変更するには、『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のページ・テンプレートの優先スキンの設定に関する項を参照してください。

詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のページ・テンプレートの作業に関する章および第11章「ページ・テンプレートの開発」を参照してください。

FrameworkFoldersのサポート

以前のOracle WebCenter Portalでは、Folders_gのみをサポートしていました。WebCenter Portalバンドル・パッチ11.1.1.8.3では、Oracle WebCenter Portalの新しいインストールをFrameworkFoldersと統合できます。11g リリース1 (11.1.1.8.3)をリリースするためにパッチを適用したOracle WebCenter Portalの既存のインストールでは、引き続きFolders_gを使用する必要があります。

FrameworkFoldersを有効にするために満たす必要がある基準の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド』のFrameworkFoldersのサポートのためのOracle WebCenter Portalの準備に関する項を参照してください。Folders_gとFrameworkFoldersのディレクトリ構造、およびFrameworkFoldersを有効にするための手順の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの管理』の必須コンポーネントの有効化に関する項を参照してください。

11g リリース1 (11.1.1.8.0)の新機能と変更された機能

WebCenter Portal 11gリリース1 (11.1.1.8.0)には、次の新機能と変更された機能が含まれています。

- 用語の変更:

前のリリース

現行リリース

WebCenter Portal: Spaces

WebCenter Portal

スペース

ポータル

スペース・テンプレート

ポータル・テンプレート

リソース

アセット

- エンドユーザー・エクスペリエンス

- 更新されたプロファイル・ユーザー・インタフェースではプロファイル情報の組織が強化され、クリックにより編集、プロファイル写真機能のクリアが実行できます。『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「プロファイルの管理」の章を参照してください。リッチ・ユーザー・プロファイルに関するその他のドキュメントは、「ポータル・ビルダー」、「管理」および「開発環境」で参照されています。

- ファセット検索、ドキュメント・サムネイルなど、検索操作の向上(Oracle SES 11.2.2.2でサポートされます)。『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「情報の検索」の章を参照してください。

- ポータル・ビルダー

- インプレース・ページ作成など、ポータル作成の簡素化。Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「新しいポータルの作成および構築」の章を参照してください。

- タスクを統合して手順を削減する、再設計されたポータルの編集および管理ユーザー・インタフェース(ポータル・ビルダー)。Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「ポータルの編集」および「ポータルの管理」の章を参照してください。

- 「Web」ビュー(編集用)、「データ」ビュー(管理用)、インライン・リソース・カタログ(コンポーネントのページへのドラッグ・アンド・ドロップのサポート付き)、「選択」ビューといった、簡素化されたページ作成および編集。Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「ポータル・ページの使用」の章を参照してください。

- 新しいページの作成時のポータル・ナビゲーションの自動更新。Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の既存のポータルのページまたはサブページの作成に関する項を参照してください。

- ツールの遅延プロビジョニング。WebCenter Portalでは、バックエンド・サーバーの構成を、ポータルの作成時ではなく、ツールを最初に使用する際に行い、新しいポータルをより迅速に作成できるようにします。Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の新しいポータルの作成に関する項を参照してください。

- 階層ページのサポート(サブページ)。Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のポータルのページまたはサブページの作成に関する項を参照してください。

- 更新されたプロファイル・ユーザー・インタフェースではプロファイル情報の組織が強化され、クリックにより編集、プロファイル写真機能のクリアが実行できます。新しいコンポーネント・プロパティにより、ピープル・コネクションおよびアクティビティ・グラフ・コンポーネントが強化されました。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』の「ポータルへのアクティビティ・グラフと推奨の追加」、「ポータルへのコネクションの追加」および「ポータルへのプロファイルの追加」の各章を参照してください。リッチ・ユーザー・プロファイルに関するその他のドキュメントは、「エンドユーザー・エクスペリエンス」、「管理」および「開発環境」で参照されています。

- スマートフォン、タブレット、デスクトップ・ブラウザなど様々なデバイスでのポータル・ページのレンダリング方法を制御するデバイス設定。ページ・バリアントを作成し、iOS電話、iOSタブレットなど特定のデバイス・グループを対象として、そのグループでポータルを最適にレンダリングできます。Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のポータルのデバイス設定の管理に関する項、「ポータルのデバイス・グループの管理」の章、およびデバイス・グループのページ・バリアントの作成に関する項を参照してください。モバイル・サポートに関するその他のドキュメントは、「管理」および「開発環境」で参照されています。

- コンテンツ・プレゼンタおよびCSS3 Media Queriesを使用して、ブラウザ(スマートフォン、タブレット、デスクトップ・ブラウザなど)の幅に合せるレスポンシブ・レイアウトを生成する方法例を示すレスポンシブ・コンテンツ・プレゼンタ・テンプレート。Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のレスポンシブ・テンプレートの使用に関する項を参照してください。モバイル・サポートに関するその他のドキュメントは、「開発環境」で参照されています。

- 開発環境

- 更新されたプロファイル・ユーザー・インタフェースではプロファイル情報の組織が強化され、クリックにより編集、プロファイル写真機能のクリアが実行できます。新しいコンポーネント・プロパティにより、ピープル・コネクションおよびアクティビティ・グラフ・コンポーネントが強化されました。詳細は、第37章「ピープル・コネクション・サービスの導入」、第39章「ピープル・コネクション・タスク・フロー・バインディング・パラメータの使用」および第46章「アクティビティ・グラフの統合」を参照してください。リッチ・ユーザー・プロファイルに関するその他のドキュメントは、「エンドユーザー・エクスペリエンス」、「ポータル・ビルダー」および「管理」に参照先が示されています。

- 開発者は、式言語(EL)を使用して、デバイス設定に関する情報を取得できます。デバイス設定では、スマートフォン、タブレット、デスクトップ・ブラウザなど様々なデバイスでのポータル・ページのレンダリング方法を制御します。第F.15項「デバイス設定に関連するEL式」を参照してください。モバイル・サポートに関するその他のドキュメントは、「ポータル・ビルダー」および「管理」で参照されています。

- コンテンツ・プレゼンタおよびCSS3 Media Queriesを使用して、ブラウザ(電話、タブレット、パーソナル・コンピュータなど)の幅に合せる応答レイアウトを生成する方法例を示すレスポンシブ・コンテンツ・プレゼンタ・テンプレート。第27.3.4項「レスポンシブ・テンプレートの使用」および第27.3.5項「レスポンシブ・テンプレートの拡張」を参照してください。モバイル・サポートに関するその他のドキュメントは、「ポータル・ビルダー」で参照されています。

- カスタムの共有ライブラリの開発およびデプロイメントの簡素化。WebCenter Portalでは、タスク・フロー、データ・コントロール、マネージドBeanなどのカスタム・コンポーネントを構築し、共有ライブラリにあるそれらを直接WebCenter Portalサーバーにデプロイできる新しいJDeveloperテンプレートを提供します。第55章「JDeveloperを使用したWebCenter Portalのコンポーネントの開発」を参照してください。

- 管理

- レガシーWebCenter Portalの顧客にとってなじみのある概念の、パワー・ユーザー指向の操作性を持つ、簡素化されたWebCenter Portal管理。Oracle Fusion Middleware Oracle WebCenter Portalの管理のポータル・ビルダー管理におけるポータルの管理に関する項を参照してください。

- 新しいプロファイルの構成設定には、新規プロファイル・ユーザー・インタフェースもしくはレガシー・プロファイル・ユーザー・インタフェースのどちらを表示するかを指定したり、プロファイルの同期設定を指定するためのプロパティが含まれています。Oracle Fusion Middleware Oracle WebCenter Portalの管理の「ピープル・コネクションの管理」の章を参照してください。リッチ・ユーザー・プロファイルに関するその他のドキュメントは、「エンドユーザー・エクスペリエンス」、「ポータル・ビルダー」および「開発環境」で参照されています。

- スマートフォン、タブレット、デスクトップ・ブラウザなど様々なデバイスでのポータル・ページのレンダリング方法を制御するデバイス設定。ページ・バリアントを作成し、iOS電話、iOSタブレットなど特定のデバイス・グループを対象として、そのグループでポータルを最適にレンダリングできます。Oracle Fusion Middleware Oracle WebCenter Portalの管理のデバイスおよびデバイス・グループのデプロイに関する項、デバイス・グループに対するシステム・ページのページ・バリアントの作成に関する項、および「デバイス設定の管理」の章を参照してください。モバイル・サポートに関するその他のドキュメントは、「ポータル・ビルダー」および「開発環境」で参照されています。

- 偽装。これにより、権限のあるユーザーは、別のユーザーを偽装し、別のユーザーのWebCenter Portalでの操作を検証して、予期しない結果に対するトラブルシューティングを行うことができます。Oracle Fusion Middleware Oracle WebCenter Portalの管理の「偽装の管理」の章を参照してください。

- ポータルのライフサイクル・ツールの向上。これにより、最小のダウンタイムで、1つ以上のポータルのエクスポート/インポートおよびバックアップ/リカバリが可能となります。Oracle Fusion Middleware Oracle WebCenter Portalの管理の「ポータル、テンプレート、アセットおよび拡張機能のデプロイ」および「WebCenter Portalのバックアップ、リカバリおよびクローニングの管理」の章を参照してください。

- WebCenter Portalの管理ユーザー・インタフェース内の統合Oracle WebCenter Portalのページレット・プロデューサ。これにより、システム管理者はページレット・プロデューサのページレットの存在を認識し、エンド・ユーザーに対してこれらのページレットを使用可能にできます。UIを統合することにより、ページレット・プロデューサの開発者は、ページレットを表示するWebCenter Portalからページレット・プロデューサの管理UIに容易に移動して、新しいページレットを作成したり、既存のページレットを編集することが可能となります。Oracle Fusion Middleware Oracle WebCenter Portalの管理の「ページレット・プロデューサの管理」の章を参照してください。

- 新しいページ・パフォーマンス・アナライザ。これにより、個々のコンポーネントのポータル・ページへの表示に要する時間、およびページの表示に要するすべての時間が示されます。初期レベルのパフォーマンス分析を行う開発者、独自のページを構築する顧客、およびWebCenter Portalでページをカスタマイズするユーザーにとって、この新しいツールは便利です。Oracle Fusion Middleware Oracle WebCenter Portalの管理の動作の遅いページ・コンポーネントを特定する方法に関する項を参照してください。

- ペルソナおよびそのWebCenter Portal内でのロールに応じて再構成されたドキュメント・ライブラリ。

- 『Oracle Fusion Middleware Oracle WebCenter PortalおよびOracle Jdeveloperでのポータルの開発』(このガイド)は、主にJDeveloperを使用してポータルとWebCenter Portal Frameworkアプリケーションの両方をサポートする開発者が必要とする情報を提供します。

- 『Oracle Fusion Middleware Oracle WebCenter Portalの使用』は、一般的にWebCenter Portalを使用して、コンテンツの提供およびレビューを行ったり、社会的な交流に参加したり、ホーム・ポータルを利用して独自のドキュメントやプロファイルを管理するナレッジ・ワーカーが必要とする情報を提供します。

- Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築は、ポータル・ビルダーで作業し、ポータルとその構造(ページ階層、ナビゲーション、セキュリティ)およびそのコンテンツ(ページ上のコンポーネント、レイアウト、動作など)を作成および管理するアプリケーション・スペシャリストが必要とする情報を提供します。

- Oracle Fusion Middleware Oracle WebCenter Portalの管理は、IT担当者やビジネス・ユーザーからの要求を処理して新しいマシンを設定したり、既存のアプリケーション・システムやデータベースのクローニングやバックアップを行ったり、パッチ、パッケージおよびアプリケーションをインストールしたり、その他管理関係のタスクを実行するシステム管理者が必要とする情報を提供します。

詳細は、「ペルソナ一覧」を参照してください。

ペルソナ一覧

このガイドを通して、Oracle WebCenter Portalを使用するいくつかの方法を示す例が提供されています。このガイド内のタスクは、特定のポータル・ロールが割り当てられた1つ以上のペルソナを対象にしています。この章では、これらのペルソナについて、およびそれらがどのようにWebCenter Portalとやり取りするかについて説明します。これらのペルソナの例は、WebCenter Portalによって提供される多様なツールを使用する必要のある様々なスキル・セットを識別できるように説明するためのものです。

ここで説明するペルソナには、WebCenter Portalでデフォルトで提供されるデフォルトのロールがあります。これらのロールには、各ペルソナが一般的に行う作業に適した、固有の権限セットが与えられています。組織に固有のニーズを満たすため、これらのデフォルトのロールを変更したり、新しいロールを構成することも可能です。

WebCenter Portalとやり取りするユーザーは、一般的にチームとしてともに作業し、そのタスクを次のユーザー・ロールのいずれかにまとめます。

- ナレッジ・ワーカー

- アプリケーション・スペシャリスト

- Web開発者

- 開発者

- システム管理者

ナレッジ・ワーカー

Karenは、一般的にWebCenter Portalを使用して、コンテンツの提供およびレビューを行ったり、社会的な交流に参加したり、ホーム・ポータルを利用して独自のドキュメントやプロファイルを管理するナレッジ・ワーカーです。

アプリケーション・レベルで、Karenには、デフォルトのAuthenticated-Userロールに付与されているような権限があります。これは、組織固有のニーズに合せてカスタマイズできます。ポータル・レベルでは、ポータルModeratorにより、KarenにはViewerまたはParticipantロール、あるいは同様の権限セットを与えるカスタム・ロールが割り当てられると考えられます。

ロールおよび権限の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のポータルのロールおよび権限に関する項を参照してください。

WebCenter Portalでのナレッジ・ワーカーのタスク

Karenのようなナレッジ・ワーカーに一般的なタスクには、次のようなものがあります。

- 情報、ファイルおよびリンクを共有し、インスタント・メッセージ、メール、メッセージ・ボード、ディスカッション、Wikiおよびブログを通してやり取りすることによる、他のWebCenter Portalユーザーとの接続および共同作業

- コンテンツ・サーバーに格納されるドキュメントのアップロード、共有および管理

- チームまたはプロジェクト・ポータルへの参加

- WebCenter Portalでの変化への適応。このために、コンテンツ更新時の通知の受信、他のユーザーからの推奨事項の参照、自分がメンバーになっているポータルやコネクションを持っているユーザーがメンバーになっているポータルのアクティビティの確認、お知らせの確認、投票およびWebCenter Portal RSSフィードの監視を行います。

- お気に入り、ノート、カレンダ、リスト、ポータル・オブジェクトへのリンクおよびタグを使用することによる組織の維持

- ワークリスト・アイテムの確認および対応

Karenは、WebCenter Portalで使用可能な機能に慣れてくると、ポータルの作成など、より高度なタスクを実行するようになります。より高度なナレッジ・ワーカーとして、Karenのロールは進化し、アプリケーション・スペシャリストのタスクと重なる場合もあります。

Karenのようなナレッジ・ワーカーを対象とした情報は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』を参照してください。アプリケーション・スペシャリストのタスクと重なる高度なタスクについては、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築で説明しています。

アプリケーション・スペシャリスト

Ariは、ポータル・ビルダーで作業し、ポータルとその構造(ページ階層、ナビゲーション、セキュリティ)およびそのコンテンツ(ページ上のコンポーネント、レイアウト、動作など)を作成および管理するアプリケーション・スペシャリストです。通常のプロジェクトで、Ariは、Karen (ナレッジ・ワーカー)、Wendy (Web開発者)およびDave (開発者)の成果を統合します。

アプリケーション・レベルで、Ariには、デフォルトのApplication Specialistロールに付与されているような権限があります。これは、組織固有のニーズに合せてカスタマイズできます。自分で作成したポータルで、AriはModeratorロールで可能なアクションを実行し、ポータルを管理します。

ロールおよび権限の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のポータルのロールおよび権限に関する項を参照してください。

WebCenter Portalでのアプリケーション・スペシャリストのタスク

Ariのようなアプリケーション・スペシャリストに一般的なタスクには、次のようなものがあります。

- 新しいポータルの計画および作成

- 所有するポータルの編集および管理

- ページ・コンポーネントの追加および構成にページ・エディタ(コンポーザ)およびリソース・カタログを使用した、ポータル・ページの作成および構築

- ポータル・アセット、ツールとサービスの作成および管理

- すべてのポータルに渡る共有アセットおよびポータル・テンプレートの管理

Ariのようなアプリケーション・スペシャリストを対象とした情報は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築を参照してください。ホーム・ポータルの個人ビューで作業する場合は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』も参照します。

Web開発者

Wendyは、すべてのポータルに一貫した、ブランディングされたルック・アンド・フィールを提供することに重点的に取り組むWeb開発者です。Wendyは、グラフィック・デザインとHTMLマークアップを提供し、これによりAri (ポータル・ビルダーでのアプリケーション・スペシャリスト)またはDave (JDeveloperでの開発者)はコンテンツまたはページ・スタイル・テンプレート、スキンなどを作成できます。これらのアセットが作成されると、Ariはこれらを利用してポータル・ページを作成できます。Wendyは通常、直接WebCenter Portalとやり取りすることはありません。

WebCenter PortalでのWeb開発者のタスク

WendyのようなWeb開発者に一般的なタスクには、次のようなものがあります。

- 企業ポータルのルック・アンド・フィールの開発

- 新しいポータル・ページ・テンプレートの設計

WendyのようなWeb開発者を対象とした情報は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「ポータルのルック・アンド・フィールの作成」の章を参照してください。

開発者

Daveは、ポータルとWebCenter Portal Frameworkアプリケーションの両方に対してサポートを提供する開発者です。

- ポータル(ポータル・ビルダー)
Daveは主に、コンポーネント(タスク・フロー、ページ・テンプレート、コンテンツ・テンプレートなど)の開発を担当し、これらのコンポーネントはAri (アプリケーション・スペシャリスト)によって公開され、利用されます。Daveは主にJDeveloperで作業し、WebCenter Spaces拡張機能/WebCenter Portalサービス拡張機能プロジェクトを利用します。

- Frameworkアプリケーション
Daveは主にJDeveloperで作業し、WebCenter Portal Frameworkアプリケーションを開発します。アプリケーションを開発したら、これをEARファイルとしてパッケージ化し、アプリケーション・サーバーにデプロイできます。一般的な環境では、DaveはSCMシステムでJDeveloperを構成し、自動化された構築およびデプロイのプロセスを持つチーム内で作業します。

開発者のタスク

Daveのような開発者に一般的なタスクには、次のようなものがあります。

- WebCenter Portal Frameworkアプリケーションの構築およびメンテナンス

- WebCenter Portalのポータルのページ・テンプレート、ナビゲーション・コンポーネントなどのカスタム・アセットの開発

- Javaポートレットの開発

- タスク・フロー、マネージドBeanその他のカスタム・コンポーネントの開発およびデプロイ

- カスタムのパーソナライズ・コンポーネントの開発

- ソース・コントロール・システムのメンテナンス

- 構築システムのメンテナンス

Daveのような開発者を対象とした情報は、このガイド、『Oracle Fusion Middleware Oracle WebCenter PortalおよびOracle Jdeveloperでのポータルの開発』を参照してください。

システム管理者

Syedは、IT担当者やビジネス・ユーザーからの要求を処理して新しいマシンを設定したり、既存のアプリケーション・システムやデータベースのクローニングやバックアップを行ったり、パッチ、パッケージおよびアプリケーションをインストールしたり、その他管理関係のタスクを実行するシステム管理者です。システム管理者として、SyedはFusion Middleware Controlやコマンド・ライン・ツールなど、他のツールを使用して作業します。Enterprise Managerを利用してポータル設定を構成し、WebCenter Contentやその他のFusion Middleware製品とOracleアプリケーションなどの統合の構成も行います。

WebCenter Portalのポータル・ビルダーで、Syedには、デフォルトのAdministratorロールに付与されているような権限があります。これにより、すべてのポータル(ホーム・ポータルを含む)に対するグローバル・オプションを管理および設定するための排他的アクセスが可能となります。

アプリケーション・レベルのロールおよび権限の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアプリケーションのロールおよび権限に関する項を参照してください。

システム管理者のタスク

Syedのようなシステム管理者に一般的なタスクには、次のようなものがあります。

- ポータル・ビルダー管理を使用した、すべてのポータル(ポータルのインポートおよびエクスポートを含む)とサイト全体のセキュリティの管理

- ポータル・ビルダー管理を使用した、サイト全体のシステム・ページ、ビジネス・ロール・ページおよび個人用ページの管理

- Portal Frameworkアプリケーション管理コンソールを使用した、アプリケーション全体のプリファレンスの管理、ユーザーとロールの管理、アセットの管理、コンテンツ・リポジトリの構成、投票の作成、プロデューサと外部アプリケーションの登録

- セキュリティ、分類、メタデータ、ワークフロー、ガバナンスの指揮

- 管理機能を使用するための管理コンソールの使用

- 管理機能のコマンド・ライン・ユーティリティの実行

- 本番バージョンの開発者の成果のインストールおよび構成

- 本番バージョンおよびオペレーティング・システムのパッチ適用

- 本番バージョンのクローンおよびバックアップの作成

- 本番バージョンのリストアの実施

- 本番バージョンの問題に関するオペレーティング・システムの監視

- アプリケーションのデプロイと再デプロイ

Syedのようなシステム管理者を対象とした情報は、Oracle Fusion Middleware Oracle WebCenter Portalの管理および『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』を参照してください。

第I部

はじめに

第I部の内容は次のとおりです。

- 第1章「開発者のためのOracle WebCenter Portalの概要」

- 第2章「開発環境の設定」

- 第3章「チームでの効率的な作業」

- 第4章「WebCenter Portalのツールとサービス用アプリケーションの準備」

1 開発者のためのOracle WebCenter Portalの概要

このガイドは、JDeveloperを使用する開発者がPortal Frameworkアプリケーション、ポートレットおよびカスタム・ポータル・コンポーネントを作成するための主要なリソースです。

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

- 第1.1項「このガイドの目的」

- 第1.2項「WebCenter Portal開発者としての役割」

1.1 このガイドの目的

この開発者ガイドでは、Oracle JDeveloperを使用した、Portal Frameworkアプリケーション、ポートレットおよびカスタム・ポータル・コンポーネントの開発について説明します。このガイドで説明するタスクの多くは、Java、CSS、Application Development Framework (ADF)、式言語(EL)および関連操作を必要とするアクティビティを伴います。

このガイドで説明する主なアクティビティには、次のものがあります。

環境の設定

環境およびチーム環境の設定に関する、第I部「はじめに」内の各章を参照してください。

WebCenter Portal Frameworkでのポータルの構築

WebCenter Portal Frameworkアプリケーションは、ナビゲーション、ページ、ページ・テンプレート、コンテンツなどのポータル機能を含む標準的なADF Webアプリケーションです。第II部「WebCenter Portal Frameworkアプリケーションの構築」の各章では、Frameworkアプリケーションを作成し、スキン、テンプレート、ナビゲーション・コンポーネントなどのアセットを開発する方法について説明します。

このガイドのいくつかのパートには、ポータルのページ、コンテンツ、ルック・アンド・フィール、コラボレーション機能などでの作業について扱う章が含まれています。

- 第III部「アプリケーションのカスタマイズとカスタマイズ・オプションの拡張」では、ポータル・ページの作成、カスタマイズおよび編集と、ポータルで使用されるタスク・フローのカスタマイズについて説明します。

- 第IV部「コンテンツの統合と公開」では、コンテンツ・リポジトリに接続してコンテンツ・プレゼンタなどのコンテンツ表示コンポーネントで作業することにより、コンテンツをポータルに統合する方法について説明します。このパートには、Wikiやブログのポータルへの統合に関する章も含まれています。

- 第IV部「コンテンツの統合と公開」では、コンテンツ・リポジトリに接続してコンテンツ・プレゼンタなどのコンテンツ表示コンポーネントで作業することにより、コンテンツをポータルに統合する方法について説明します。このパートには、Wikiやブログのポータルへの統合に関する章も含まれています。

- 第V部「コミュニケーションとコラボレーションの有効化」では、ディスカッション、メール、プレゼンスなどの機能のポータルへの統合について説明します。

- 第VI部「ピープル・コネクションの使用」では、ピープル・コネクション機能をポータルに統合する方法について説明します。ピープル・コネクションは、プロジェクト・チーム内および企業全体にわたるコネクションおよびコミュニケーションの向上に使用するソーシャル・ネットワーキング・ツールを提供します。これは、アクティビティ・ストリーム、コネクション、フィードバック、メッセージ・ボード、プロファイルおよびパブリッシャを含む機能セットを通して行われます。

- 第VII部「ユーザーによるコンテンツ検索の支援」では、リンク、タグ、検索およびアクティビティの追跡をポータルに追加する方法について説明します。

- 第VIII部「ユーザーによる追跡の支援」では、分析、リスト、通知や関連機能などの機能のポータルへの追加について説明します。

カスタム・コンポーネントの開発とWebCenter Portalの拡張

WebCenter Portal Frameworkアプリケーションを、Seibel、Oracle E-Business Suite、PeopleSoftなど他のアプリケーションと統合することが可能です。JDeveloperを使用してタスク・フローやマネージドBeanなどのカスタム・コンポーネントを作成し、それらをポータル・サーバーにデプロイしてポータル・ビルダーで使用できます。これらについては、第IX部「WebCenter PortalおよびPortal Frameworkアプリケーションの拡張」の各章で説明しています。

ポートレットとページレットの作業

ポートレットは、複数のソースからのデータを意味のある関連した方法で提示する手段を提供します。ポートレットでは、他のWebサイトからの抜粋の表示、主要情報のサマリーの生成、検索の実行および多様なデータ・ソースの情報を収集したコレクションへのアクセスなどを実行できます。様々なポートレットを単一のページに配置できるため、ユーザーはコンテンツが実際には複数のソースからのものであっても単一のソースとして利用できます。詳細は、第X部「ポートレットとページレットの作業」の各章を参照してください。

ページレットは、ページレット・プロデューサからアクセスされるWebページのサブコンポーネントで、プロキシされた任意のアプリケーションに挿入できます。マークアップを返すページレット・プロデューサ・リソース上のアプリケーションは、ページレットとして登録でき、その後、ポータルやFrameworkアプリケーション、あるいはその他のWebアプリケーションに表示することが可能です。詳細は、第X部「ポートレットとページレットの作業」の各章を参照してください。

パーソナライズされたコンテンツの配信

パーソナライズでは、Portal Frameworkアプリケーションに対するユーザーとアプリケーションの両方のコンテキストに基づいたターゲット・コンテンツ、および式言語(EL)式を使用したWebCenter Portalページを提供します。第XI部「パーソナライズされたコンテンツの配信」を参照してください。

ポータルの保護

セキュリティの章では、Frameworkアプリケーションで提供されるセキュリティのメカニズムおよび機能について、およびOracle ADFセキュリティを使用して認証および認可を処理する方法について説明します。第XII部「WebCenter Portalアプリケーションの完成」を参照してください。この部には、多言語ポータルの作成のためのガイドラインも含まれています。

1.2 WebCenter Portal開発者としての役割

場合によっては、デフォルトで存在しないカスタム・コンポーネントや、ブラウザベースのポータル・ビルダーでは容易に作成できないカスタム・コンポーネントがポータルで必要となります。たとえば、設計要件で、ブランディングされ、精密に編成されたページ・テンプレート、ページ・スタイルおよびスキンが必要とされる場合があります。この場合、目的のルック・アンド・フィールを実現するにはADF FacesおよびCSSを使用する必要があり、そのような開発にはJDeveloperが適しています。別のユース・ケースでは、ポータル要素とデータとのやり取り(イベント処理でのADFタスク・フローまたはポートレットの使用など)が可能となるカスタム・コンポーネントが必要となります。そのようなユース・ケースは数多く存在します。

WebCenter Portal開発者として、次のものを作成および構成するよう要求される場合があります。

- タスク・フロー、データ・コントロール、バッキングBeanなどのカスタム・ポータル拡張機能

- ページ・テンプレートやページ・スタイルなどのポータル・インフラストラクチャ・コンポーネント

- カスタム・データ・プロバイダ、ファンクション・プロバイダ、プロパティ・セット・ロケータなどのパーソナライズ・コンポーネント

- JSR 286ポートレット(別名Javaポートレット)

- WebCenter Portal Frameworkアプリケーション

- WebCenterポートレット・プロデューサ・アプリケーション

イントラネットやエクストラネットなど、大規模なポータル開発プロジェクトでは、マルチロール・チームの活動が必要となります。チームには、ユーザー・インタフェースの専門家、アプリケーション・スペシャリスト、QAエンジニア、Java開発者、およびポータルの全体的な開発やメンテナンスに携わるその他のメンバーが含まれます。第3章「チームでの効率的な作業」も参照してください。

2 開発環境の設定

この章では、WebCenter Portal開発アクティビティにJDeveloperを使用できるようにするためのガイダンスとヒントを提供します。

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

- 第2.1項「概要」

- 第2.2項「一般的な設定タスク」

- 第2.3項「WebCenter Portal Frameworkアプリケーションに固有の設定タスク」

- 第2.4項「WebCenterポートレット・プロデューサ・アプリケーションに固有の設定タスク」

- 第2.5項「パーソナライズのためのJDeveloperの設定」

2.1 概要

この章では、一般的なタスクとアプリケーション固有のタスクを区別します。一般的なタスクは、どのようなアプリケーションを開発しているかに関係なく適用されます。たとえば、JDeveloperおよびWebCenter Portal拡張機能のインストールは一般的な設定タスクです。この章で説明しているその他のタスクは、WebCenter Portalサーバー拡張機能やWebCenter Portal Frameworkアプリケーションなど、特定の種類のアプリケーションを開発している場合にのみ適用されます。

2.2 一般的な設定タスク

この項では、開発しているアプリケーションの種類によらない設定タスクについて説明します。

- 第2.2.1項「Oracle JDeveloperのインストール」

- 第2.2.2項「JDeveloper用のWebCenter Portal拡張機能のインストール」

- 第2.2.3項「ユーザー・ホーム・ディレクトリ環境変数の設定」

- 第2.2.4項「統合WebLogic Serverの管理」

- 第2.2.5項「WebCenterバックエンド・サービスの構成」

- 第2.2.6項「アプリケーション・リソース接続の作成」

- 第2.2.7項「チーム開発とソース・コントロールの準備」

2.2.1 Oracle JDeveloperのインストール

Oracle JDeveloperは、ポータルおよびカスタム・ポータル・コンポーネントの開発のための統合開発環境(IDE)を提供します。Oracle JDeveloperの取得およびインストールの詳細は、次に示すOTNのOracle JDeveloperに関するページを参照してください。

http://www.oracle.com/technetwork/developer-tools/jdev/overview/index.html

JDeveloperをインストールしたら、次のようにして最大PermGenサイズを大きくすることをお薦めします。

1. テキスト・エディタで次のファイルを開きます。

JDEV_HOME/jdev/bin/jdev.conf

JDEV_HOMEは、マシンにJDeveloperをインストールした場所です。

2. AddVMOption -XX:MaxPermSize=512を設定します。

3. JDeveloperを再起動します。

2.2.2 JDeveloper用のWebCenter Portal拡張機能のインストール

WebCenter Portalの拡張機能は、JDeveloperに完全なWebCenter Portal機能セットを提供するアドインです。WebCenter Portalの拡張機能をインストールするには:

1. Oracle JDeveloperを起動します。

2. 「デフォルトのロールの選択」ダイアログが表示される場合は、「デフォルトのロール」を選択してすべてのテクノロジを有効にし、「OK」をクリックします。

3. 以前のバージョンから設定を移行するかどうかを尋ねるダイアログが開く場合は、「いいえ」をクリックします。

4. 「ヘルプ」メニューから「更新の確認」を選択します。

5. 更新のチェック・ウィザードの「ようこそ」ページで、「次へ」をクリックします。

注意:

ファイアウォールの内部にいる場合、拡張機能にアクセスするにはプロキシ・サーバーを構成する必要がある場合があります。更新ウィザードで、HTTPプロキシ・サーバー設定を入力できるダイアログが表示されます。どのダイアログでも、「ヘルプ」ボタンをクリックすると、詳細な情報が表示されます。詳細は、Oracle JDeveloperオンライン・ヘルプのプロキシ設定とJDeveloperに関するトピックを参照してください。

6. 「ソース」ページの「更新センターの検索」で、WebCenter Portalの拡張機能(バージョン11.1.1.8.0)を検索して選択し、「終了」をクリックします。

7. 要求されたら、JDeveloperを再起動します。

WebCenter Portalの取得およびインストールの詳細は、次に示すOTNのOracle WebCenter Portalに関するページを参照してください。

http://webcenter.oracle.com

『Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド』も参照してください。

2.2.3 ユーザー・ホーム・ディレクトリ環境変数の設定

JDeveloperで参照するユーザー・ホーム・ディレクトリの環境変数を設定することを強くお薦めします。この変数を設定することで、状況次第で発生することが確認されている、長いパス名のエラーを受け取らずに済みます。

この変数の、Windows、Linux、UNIXおよびMac OS Xオペレーティング・システムでの設定の詳細は、『Oracle Fusion Middleware Oracle JDeveloperインストレーション・ガイド』のユーザー・ホーム・ディレクトリの設定に関する項を参照してください。

2.2.4 統合WebLogic Serverの管理

この項では、JDeveloperで使用される統合WebLogic Serverについて説明します。

- 第2.2.4.1項「統合WebLogic Serverとは」

- 第2.2.4.2項「統合WebLogic Serverの起動と停止」

- 第2.2.4.3項「統合WebLogic Server用のJVMの構成」

- 第2.2.4.4項「WebCenter事前構成サーバーのReadmeファイル」

2.2.4.1 統合WebLogic Serverとは

統合WebLogic Serverは、Oracle WebLogic Serverのインスタンスを参照し、JDeveloperにバンドルされているランタイム・サービスです。統合WebLogic Serverにより、開発者はJDeveloperからWebCenter Portal Frameworkアプリケーションを実行、テストおよびデバッグできます。

2.2.4.2 統合WebLogic Serverの起動と停止

統合WebLogic Serverの管理の詳細は、JDeveloperオンライン・ヘルプの統合WebLogic Serverのデプロイに関するトピックを参照してください。デバッグ・モードでの実行やWebLogic Server管理コンソールへのログインなど、その他のオプションについても、この項で説明しています。

2.2.4.3 統合WebLogic Server用のJVMの構成

必須ではありませんが、setDomainEnv.shで統合WLSを設定するデフォルトのJava Virtual Machine (JVM)を変更するオプションがあります。このファイルは、JDEV_SYSTEM_DIRECTORY/DefaultDomain/binにあります。

デフォルトのメモリー値は、次のとおりです。

-Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m

JDEV_SYSTEM_DIRECTORYを作成または参照する場合、Windowsプラットフォームでは、WebCenterのドメイン名に空白を含めたり、パスに空白が含まれるフォルダ内にドメインを作成することはできないことに注意してください。また、Oracle JDeveloperのシステム・ディレクトリへのパスに空白があると、Portal Frameworkアプリケーションのページはレンダリングされません。したがって、DOMAIN_HOMEパスおよびJDEV_SYSTEM_DIRECTORYパスには、空白を含めないでください。

2.2.4.4 WebCenter事前構成サーバーのReadmeファイル

WebCenter事前構成サーバーのReadmeファイルには、統合WLSの使用方法に関する有用な情報が含まれています。さらに、ファイルには、事前構成済ポートレット・プロデューサ・テスト・ページへのリンクが含まれています。

注意:

事前構成済ポートレット・プロデューサへのリンクは、ポートレット・プロデューサがサーバーにデプロイされている場合にのみ機能します。ポートレット・プロデューサはデフォルトではデプロイされません。リンクが解決される前に、これらをデプロイする必要があります。事前構成済プロデューサのデプロイについては、第2.4.1.1項「事前構成済ポートレット・プロデューサのデプロイ」を参照してください。

Oracle JDeveloperの「ヘルプ」メニューでWebCenter Portal事前構成サーバーのReadmeを選択すると、事前構成サーバーのReadmeファイルにアクセスできます。

2.2.5 WebCenterバックエンド・サービスの構成

特定のOracle WebCenter Portalコンポーネントを使用するには、スキーマがサポート対象データベースにインストールされている必要があります。この項では、Oracle、SQL Server、およびDB2データベースに対するスキーマのインストールについて説明します。

WebCenterがサポートしているデータベースの詳細は、OTNのドキュメント、Oracle Fusion Middlewareのサポート対象システムの構成を参照してください。

表2-1は、WebCenter Portalで使用するスキーマと、スキーマのインストール方法のリストです。すべてのスキーマに対して、リポジトリ作成ユーティリティ(RCU)を使用する方法をお薦めします。ただし、WebCenter Portalのスキーマには、後述するSQLスクリプトを使用したインストール・オプションがあります。

表2-1 データベース・スキーマのサマリー

スキーマ

説明

インストール方法

WebCenter

タグ、リンク、リスト、投票およびピープル・コネクションを使用するには、データベースにWebCenter Portalのスキーマがインストールされている必要があります。

- RCU (推奨)

- SQLスクリプト(Oracleデータベースのみ。詳細は下記を参照。)

ポートレット

ポートレット・プロデューサでのカスタマイズ内容の格納用。

RCUのみ

アクティビティ

アクティビティ・グラフおよび分析製品用。

RCUのみ

ディスカッション/WebCenter Portalディスカッション・クローラ

ディスカッションおよびお知らせのバックエンドとして使用します。

RCUのみ

2.2.5.1 RCUを使用したスキーマのインストール

WebCenterのデータベース・スキーマは、すべてRCUを使用してインストールすることをお薦めします。詳細は、『Oracle Fusion Middleware Repository Creation Utilityユーザーズ・ガイド』のスキーマの作成に関する項を参照してください。

2.2.5.2 SQLスクリプトを使用したWebCenter Portalのスキーマのインストール

タグ、リンクおよびピープル・コネクションを使用するには、データベースにWebCenter Portalのスキーマがインストールされている必要があります。

WebCenter Portalスキーマをインストールするには:

1. 「ツール」メニューから、「データベース」、「SQLワークシート」の順に選択します。

2. 「接続の選択」ダイアログで、既存の接続を選択するか、新しい接続を作成できます。独自のデータベースへの管理者ユーザー用のデータベース接続がすでにある場合は、その接続を選択できます。接続がない場合は、次の手順に従って新しい接続を作成します。

1. 「接続の選択」ダイアログ・ボックスで、プラス・アイコンをクリックして接続を作成します。

2. 「データベース接続の作成」ダイアログを使用して、スキーマを作成するデータベースへの接続を作成します。この接続は、WebCenter Portal Frameworkアプリケーションには関連付けられません。

表2-2 「データベース接続の作成」ダイアログの設定

設定

推奨値

接続の作成場所

IDE接続

接続名

任意の名前を使用します(例: my_connection)。

接続タイプ

Oracle JDBC

ユーザー名

SYS

パスワード

SYSユーザーのパスワードを入力します。

ロール

SYSDBA

ドライバ

thin

ホスト名

データベースが稼働しているサーバーの名前を入力します。例: myserver.example.com。

SID

データベースSIDを入力します(例: mydbl01)。

JDBCポート

データベース・ポートを入力します(例: 1521)。

3. 「接続のテスト」をクリックして、接続が有効であることを確認します。

4. 「OK」をクリックして「データベース接続の作成」ダイアログを閉じます。

2.2.5.3 SQLスクリプトを使用したWebCenter Portalのスキーマのインストール

タグ、リンクおよびピープル・コネクションを使用するには、データベースにWebCenter Portalのスキーマがインストールされている必要があります。

WebCenter Portalスキーマをインストールするには:

1. 「ツール」メニューから、「データベース」、「SQLワークシート」の順に選択します。

2. 「接続の選択」ダイアログで鉛筆のアイコンをクリックして接続を編集します。

注意:

データベース接続の作成については、第2.2.6項「アプリケーション・リソース接続の作成」を参照してください。

3. 管理者(たとえばSYS)のユーザー名とパスワードを使用するように接続を変更して(SYSDBAロールを使用)、「OK」をクリックします。

4. 「OK」をクリックして「接続の選択」ダイアログを閉じます。

5. 「ツール」メニューから「SQLワークシート」を選択します。

6. 「SQLワークシート」パネルで次のSQL文を入力します。

@@JDEV_HOME/jdeveloper/jdev/extensions/oracle.webcenter.install/sql/oracle/wc_schema.sql

JDEV_HOMEは、マシンにJDeveloperをインストールした場所です。

7. 「文を実行」アイコンをクリックするか、[F9]を押してスクリプトを実行します。

8. プロンプトから、スキーマの名前としてwebcenterを入力し、パスワードにwelcome1などを入力します。スキーマの名前は、必ずwebcenterにします。

9. 「デフォルト表領域」と「一時表領域」の入力を求められた場合は、デフォルト値のusersおよびtempを再入力してこれらを受け入れます。

2.2.6 アプリケーション・リソース接続の作成

接続により、アプリケーションは外部のデータおよびサービスにアクセスできます。たとえば、コンテンツ・プレゼンタ・タスク・フローを使用して、Oracle WebCenter Content Serverリポジトリのコンテンツを表示する場合は、そのリポジトリへの接続を構成する必要があります。ポートレット・プロデューサのポートレットを使用する場合は、そのプロデューサを構成する必要があります。

ヒント:

接続は作成後にテストしてから、ソース・コントロール・システムにチェックインすることをお薦めします。このようにすると、チーム内の別の開発者は、その接続をチェックアウトして使用できるようになります。この技法により、接続が変更された場合でも、チームの同期が保たれるようになります。

この項では、接続について、および新しい接続を作成するウィザードにアクセスするための様々な方法について説明します。第2.2.6.3項「接続の詳細の参照先」も参照してください。

2.2.6.1 接続の場所について

接続を作成するためにウィザードを起動した方法に応じて、接続は次のいずれかの場所に配置されます。

- 「アプリケーション・ナビゲータ」の「アプリケーション・リソース」内
ここに作成した接続は、現在のアプリケーションでのみ使用できます。これは、リポジトリ接続を作成する最も一般的な方法です。

特定の機能については、「アプリケーション・リソース」から接続をドラッグして、別の種類のタスク・フロー・リージョンを作成するページにドロップできます。詳細は、WebCenter Portalのツールとサービスに関する個々の章を参照してください。参照

- 「リソース・パレット」の「IDE接続」内
ここに作成した接続は、どのアプリケーションでも再利用できます。これに該当する接続をアプリケーションで使用する場合は、「リソース・パレット」から接続をドラッグして、そのアプリケーションの「接続」ノードにドロップします。

2.2.6.2 接続ウィザードにアクセスする方法

「新規ギャラリ」から接続ウィザードにアクセスするには:

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」で、「接続」を開き、作成する接続のタイプを選択してから、「OK」をクリックします。
選択内容に応じて、<Connection_Type>接続の作成ダイアログが開きます。

3. デフォルトでは、「接続の作成場所」オプションは「アプリケーション・リソース」に設定されます。
「IDE接続」を選択すると、「リソース・パレット」に接続を作成できます。

「アプリケーション・ナビゲータ」から接続ウィザードにアクセスするには:

1. 「アプリケーション・リソース」で「接続」ノードを右クリックし、「新規接続」を選択して、ポップアップ・メニューから接続のタイプを選択します。

2. 選択内容に応じて、<Connection_Type>接続の作成ダイアログまたはウィザードが開きます。
デフォルトでは、「接続の作成場所」オプションは「アプリケーション・リソース」に設定されます。

「リソース・パレット」から接続ウィザードにアクセスするには:

1. 「リソース・パレット」の「新規」アイコンをクリックし、「新規接続」を選択して、ポップアップ・メニューから接続のタイプを選択します。

2. 選択内容に応じて、<Connection_Type>接続の作成ダイアログまたはウィザードが開きます。
デフォルトでは、「接続の作成場所」オプションは「IDE接続」に設定されます。

2.2.6.3 接続の詳細の参照先

接続の作成と利用の詳細は、次を参照してください。

- 第25章「コンテンツ・リポジトリ接続の構成」

- 第63章「ポートレットの消費」

- 第IV部「コンテンツの統合と公開」

- 第7章「Portal Frameworkアプリケーションのデプロイおよびテスト」

2.2.7 チーム開発とソース・コントロールの準備

全体的なチーム開発環境について検討することは重要です。チーム開発環境が有益なものになるように、開発者がデータベース、コンテンツ・リポジトリ、ソース・コードなどの共通リソースを共有できるように、この開発環境を構成する必要があります。十分に計画されたチーム環境は、短期間で整合性のあるポータルの開発、構築および更新が可能になります。

ヒント:

一般には、開発チームの1人のメンバーがJDeveloperで新しいポータル・アプリケーションを作成し、それをソース・コントロール・リポジトリにチェックインします。チーム・メンバーは、必要なデータベース接続やコンテンツ・リポジトリ接続を作成して、それらも同様にチェックインできます。

ソース・コントロールやファイル共有など、チーム開発のヒントの詳細は、第3章「チームでの効率的な作業」を参照してください。

2.3 WebCenter Portal Frameworkアプリケーションに固有の設定タスク

この項では、WebCenter Portal Frameworkアプリケーションを作成している場合にのみ実行する必要のあるタスクについて説明します。

- 第2.3.1項「Portal Frameworkアプリケーションでの反復開発の準備」

- 第2.3.2項「追加構成」

2.3.1 Portal Frameworkアプリケーションでの反復開発の準備

この項では、WebCenter Portal Frameworkアプリケーションでの反復開発機能について説明します。

反復開発を有効にすると、ポータル・アプリケーションを統合WebLogic Serverで実行する一方で、このアプリケーションに変更を行い、ブラウザをリフレッシュすることによりこの変更の効果をすぐに見ることができます。反復開発の詳細は、第8.7項「反復開発の理解」を参照してください。

注意:

反復開発オプションでは、多くのパフォーマンス最適化機能が無効になるため、アプリケーションの実行が遅くなる場合があります。

- 第2.3.1.1項「反復開発の有効化」

- 第2.3.1.2項「反復開発の無効化」

2.3.1.1 反復開発の有効化

この項では、反復開発が無効にされている場合に有効化する方法を説明します。この機能を有効にすると、すべてのキャッシュがオフになるため、アプリケーションの実行が遅くなる場合があります。

注意:

反復開発機能は、新しいPortal Frameworkアプリケーションの作成時には、デフォルトで有効になっています。

1. 「アプリケーション」メニューから、「アプリケーション・プロパティ」を選択します。

2. 「アプリケーション・プロパティ」ダイアログの左側で「実行」ノードを開きます。

3. 「WebCenter Portal」を選択します。

4. 図2-1に示すように、「反復開発の有効化」を選択します。

図2-1 反復開発の有効化

5. ダイアログの左側のペインの「実行」ノードの下で、「MDS」を選択します。

6. 右側のペインで「各実行の前にカスタマイズを削除」を選択します。これにより、アプリケーションが実行されるたびに、すべての実行時カスタマイズのMDSがクリアされます。

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

2.3.1.2 反復開発の無効化

この項では、反復開発を無効にする方法を説明します。反復開発はデフォルトで有効です。アプリケーションを本稼働サーバーにデプロイする前に、テストのために反復開発をオフにすることをお薦めします。

反復開発をオフにすることを検討する理由は他にもいくつかあります。次に例を示します。

- 反復開発をオンにするとすべてのキャッシュが無効になるため、非常に大きなポータルがあり、キャッシュがないとパフォーマンスに問題が生じる場合は、この機能をオフにします。

- この機能をオフにすると、統合WebLogic Serverで実行されるポータル・インスタンスと管理対象サーバーにデプロイされるインスタンスの差異はなくなります。

反復開発をオフにするには:

1. 「アプリケーション」メニューから、「アプリケーション・プロパティ」を選択します。

2. 「アプリケーション・プロパティ」ダイアログの左側で「実行」ノードを開きます。

3. 「WebCenter Portal」を選択します。

4. 「反復開発の有効化」を選択解除します。

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

2.3.2 追加構成

WebCenter Portal Frameworkアプリケーションで必要となる可能性のある追加構成は、第2.2.5項「WebCenterバックエンド・サービスの構成」および第2.2.6項「アプリケーション・リソース接続の作成」を参照してください。

2.4 WebCenterポートレット・プロデューサ・アプリケーションに固有の設定タスク

この項では、WebCenterポートレット・プロデューサ・アプリケーションを作成している場合にのみ実行する必要のあるタスクについて説明します。WebCenterポートレット・プロデューサ・アプリケーションの詳細は、第57章「ポートレットの概要」を参照してください。

2.4.1 事前構成ポートレット・プロデューサに関する必知事項

WebCenter Portalには、ポータル・ページに追加できる、すぐに使用可能な様々なポートレットが用意されています。この項では、事前構成プロデューサと、これらのプロデューサで提供されるポートレットについて簡単に説明します。次のサブセクションが含まれます:

- 第2.4.1.1項「事前構成済ポートレット・プロデューサのデプロイ」

- 第2.4.1.2項「デプロイ済ポートレット・プロデューサの登録」

- 第2.4.1.3項「OmniPortletおよびWebクリッピングへのアクセス」

- 第2.4.1.4項「WSRPのサンプル・ポートレット・プロデューサおよびポートレット」

- 第2.4.1.5項「PDK-Javaのサンプル・ポートレット・プロデューサおよびポートレット」

2.4.1.1 事前構成済ポートレット・プロデューサのデプロイ

事前構成済ポートレット・プロデューサは、デフォルトではデプロイされません。この項の説明に従って手動でデプロイする必要があります。

注意:

プロデューサ・アプリケーションはデプロイメントの際、メモリーを消費し、CPU時間を必要とします。これはWebLogic Serverの起動時間やベース・メモリー・フットプリントの一因になっています。このような理由により、必要なアプリケーションのみをデプロイするのが合理的です。内部アプリケーションのデプロイメントの調整の詳細は、Oracle Fusion Middleware Oracle WebLogic Serverへのアプリケーションのデプロイの内部アプリケーションのオンデマンド・デプロイメントに関する項を参照してください。

1. 統合WebLogic Serverが稼働していない場合は、これを起動します。この機能を有効にするには、サーバーが稼働していることが必要です。

2. 「実行」メニューから、「WebCenter Portalデプロイメント」を選択します。

3. 「WebCenter Portalデプロイメント」ダイアログ・ボックスで、デプロイするプロデューサを選択し、「OK」をクリックします。このダイアログを図2-2に示します。事前構成された各プロデューサについては、以降の項で詳細に説明します。

図2-2 「WebCenter Portalデプロイメント」ダイアログ

2.4.1.2 デプロイ済ポートレット・プロデューサの登録

ポートレット・プロデューサがデプロイされると、これを登録できます。登録されたプロデューサからのポートレットは、Oracle JDeveloperの「アプリケーション・リソース」パネルで選択可能となります。

ポートレット・プロデューサの登録については、第63章「ポートレットの消費」を参照してください。ポートレットのページへの追加については、第63.5項「ページへのポートレットの追加」を参照してください。

2.4.1.3 OmniPortletおよびWebクリッピングへのアクセス

統合WLSには、実行時に設計のOmniPortletとWeb Clippingポートレットへのアクセスを提供する、PortalToolsが含まれています。「実行時に設計」とは、ポートレットがアプリケーション・ページ上に配置されてページが実行された後で、ユーザーがポートレット・コンテンツを定義するという意味です。

OmniPortletおよびWebクリッピング・ポートレットのプロデューサにアクセスするには:

1. 統合WebLogic Serverを起動します。

2. 「ヘルプ」メニューからWebCenter事前構成サーバーのReadmeを選択します。

3. Readmeファイルで、見出し「Accessing the PortalTools Portlet Producers Test Pages」に移動し、「PortalTools Welcome Page」リンクをクリックします。
これによってPortalToolsの「ようこそ」ページが開きます。

注意:

「WebCenter Preconfigured Server Readme」ページから「PortalTools Welcome」ページにアクセスできるようにするには、Portalツール・ポートレット・プロデューサ・コンポーネントをデプロイする必要があります。詳細は、第2.4.1.1項「事前構成済ポートレット・プロデューサのデプロイ」を参照してください。

4. PortalToolsの「ようこそ」ページで、「Webクリッピング・プロデューサ」リンク、OmniPortletプロデューサ・リンクまたは「サンプル・ポートレット・プロデューサ」リンクのURLをコピーして、Oracle PDK-Javaポートレット・プロデューサの登録ウィザードでプロデューサURLとして使用します。

注意:

ポートレット・プロデューサの登録の詳細は、第63章「ポートレットの消費」を参照してください。

プロデューサを登録すると、そのポートレットがOracle JDeveloperの「アプリケーション・リソース」パネルで使用可能になります。「アプリケーション・リソース」パネルの「接続」ノードで、プロデューサ名を選択してそのポートレットをリスト表示し、ポータル・ページにポートレットをドラッグします。(ページへのポートレットの追加の詳細は、第63.5項「ページへのポートレットの追加」を参照してください。)

PortalToolsの「ようこそ」ページには、3つのプロデューサのプロデューサURLが含まれています。

- 「Webクリッピング・プロデューサ」ではWebクリッピング・ポートレットが提供されます。これは、別のWebソースからのコンテンツの動的な再利用を可能にする、ブラウザベースの宣言型ツールです。ソースが変更されると、Webクリッピング・ポートレットのコンテンツも変更されます。Webクリッピング・ポートレットでは、Webブラウザを使用して、目的のコンテンツを含むWebページにナビゲートします。ポートレットを介してアクセスするWebクリッピング・スタジオを使用して、ターゲット・ページのビジュアル・レンダリングをドリルダウンし、目的のコンテンツを選択します。Webクリッピング・ポートレットの詳細は、第65章「Webクリッピングを使用したコンテンツ・ベースのポートレットの作成」を参照してください。

注意:

Webクリッピング・ポートレットは、リリース11g (11.1.1.7.0)では非推奨になりました。Oracle WebCenter Portalのページレット・プロデューサを使用してクリップ・ページレットを使用することを検討してください。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「ページレット・プロデューサの管理」の章を参照してください。

- OmniPortletプロデューサではOmniPortletが提供されます。これは宣言型のポートレット構築ツールで、このツールを使用すると、XMLファイル、複数値を特定文字で区切ったファイル(スプレッドシートなど)、Webサービス、データベースおよびWebページを含めた多様なデータ・ソースに対してポートレットを構築できます。OmniPortletユーザーは、データに対して事前に作成されたレイアウトを選択することもできます。事前に作成されたレイアウトには、表、ニュース、箇条書き、フォーム、チャートまたはHTMLが含まれます。OmniPortletの詳細は、第64章「OmniPortletを使用したポートレットの作成」を参照してください。

- サンプル・ポートレット・プロデューサには、OmniPortletで構築された、デモ専用のポートレットが含まれます。ポートレット・サンプルには、RSSスクロール・ポートレットやシンプルRSSポートレットなどがあります。サンプル・プロデューサはデモ用のため、実際のポートレット・インスタンスの作成には使用しないでください。

2.4.1.4 WSRPのサンプル・ポートレット・プロデューサおよびポートレット

統合WLSには、アプリケーションで使用できるサンプルのWSRPポートレット・プロデューサとポートレットが含まれています。

注意:

次のEARファイルに、サンプル・ポートレット用のソース・コードがあります。

JDEV_HOME/jdeveloper/webcenter/modules/oracle.portlet.server_11.1.1/wsrp-samples.ear

JDEV_HOMEは、マシンにJDeveloperをインストールした場所です。

WSRPサンプル・ポートレット・プロデューサにアクセスするには:

1. 統合WebLogic Serverを起動します。

2. 「ヘルプ」メニューからWebCenter Portal事前構成サーバーのReadmeを選択します。

3. Readmeファイルで、見出し「Accessing the WSRP Portlet Producers Test Pages」に移動し、「WSRP Tools Portlet Producers」または「Sample Portlet Producer」のリンクをクリックします。

注意:

ポートレット・プロデューサはデフォルトではデプロイされません。「WebCenter Preconfigured Server Readme」ページからプロデューサ・アプリケーションにアクセスできるようにするには、これをデプロイする必要があります。詳細は、第2.4.1.1項「事前構成済ポートレット・プロデューサのデプロイ」を参照してください。

これらのリンクでは、異なるWSRPプロデューサ・テスト・ページが開きます。一方のページにはパラメータ・フォーム・ポートレットとパラメータ表示ポートレットがあり、もう一方はサンプル・ポートレットの各種WSRPプロデューサ用のページです。

4. WSRP v1 WSDLまたはWSRP v2 WSDLの、いずれかのWSRPプロデューサのWeb Services Description Language (WSDL) URLをコピーします。
WSRPプロデューサの登録ウィザードで、コピーしたリンクをプロデューサURLとして使用します。

注意:

ポートレット・プロデューサの登録の詳細は、第63章「ポートレットの消費」を参照してください。

ポートレット・プロデューサ接続の登録先に応じて、そのポートレットは「アプリケーション・リソース」または「リソース・パレット」に表示されます。ここから、各種サンプル・ポートレットをPortal Frameworkアプリケーション・ページにドラッグ・アンド・ドロップできます。

2.4.1.5 PDK-Javaのサンプル・ポートレット・プロデューサおよびポートレット

統合WLSには、アプリケーションで使用できるサンプルのPDK-Javaポートレット・プロデューサとポートレットが含まれています。PDK-Javaポートレットで使用できる機能のタイプは、PDK-Javaサンプル・ポートレットを使用して確認できます。

PDK-Javaサンプル・ポートレット・プロデューサにアクセスするには:

1. 統合WebLogic Serverを起動します。

2. 「ヘルプ」メニューからWebCenter事前構成サーバーのReadmeを選択します。

3. Readmeファイルで、見出し「Accessing the PDK-Java Portlet Producers Test Pages」に移動し、「PDK-Java Sample Producer」または「PDK-Java Struts Sample Producer」のリンクの場所をコピーします。

注意:

「WebCenter Preconfigured Server Readme」ページからこれらのプロデューサにアクセスできるようにするには、これらをデプロイする必要があります。詳細は、第2.4.1.1項「事前構成済ポートレット・プロデューサのデプロイ」を参照してください。

Oracle PDK-Javaポートレット・プロデューサの登録ウィザードで、コピーしたリンクをプロデューサURLとして使用します。

注意:

ポートレット・プロデューサの登録の詳細は、第63章「ポートレットの消費」を参照してください。

ポートレット・プロデューサ接続の登録先に応じて、そのポートレットは「アプリケーション・リソース」または「リソース・パレット」に表示されます。ここから、各種サンプル・ポートレットをPortal Frameworkアプリケーション・ページにドラッグ・アンド・ドロップできます。

2.4.1.6 ポートレット・ブリッジ・テスター・コンシューマ

テスターは、JDeveloperでポートレット化されたページまたはタスク・フローをテストするために使用されます。テスターはデフォルトでデプロイされます。詳細は、第58.4項「JDeveloperでのポートレット化されたページまたはタスク・フローのテスト」を参照してください。

2.4.1.7 WCPSサービス

WebCenterパーソナライズ・サービスはデフォルトでデプロイされ、ポートレット・プロデューサには無関係です。WebCenterパーソナライズについては、第66章「Oracle WebCenter Portalアプリケーションのパーソナライズ」を参照してください。

2.5 パーソナライズのためのJDeveloperの設定

パーソナライズによって、Portal Frameworkアプリケーションで、動的に導出されたユーザー・エクスペリエンスが提供されます。パーソナライズでは、入力データの定義済ソースが評価され、その評価に基づく決定が生成された後、その情報が宣言的に定義されたパーソナライズ・シナリオに適用されます。たとえば、パーソナライズでは、特定のユーザーのアプリケーション体験をターゲットとし、そのユーザーに関する人事管理データベース内の情報に基づいて、コンテンツを戻したり、アプリケーション・フローを変更したりできます。詳細は、第66章「Oracle WebCenter Portalアプリケーションのパーソナライズ」を参照してください。

パーソナライズ・コンポーネントを開発および使用するには、まず、ポータル・プロジェクトに特定のコンポーネントを追加する必要があります。JDeveloperにより、このプロセスで次の点が容易になります。

1. WebCenter Portal拡張機能がJDeveloper環境にインストールされていることの確認。WebCenter Portal拡張機能には、必要なデータ統合コンポーネントJARファイルが含まれています。第2.2.2項「JDeveloper用のWebCenter Portal拡張機能のインストール」を参照してください。

2. WebCenter Portal Frameworkアプリケーションなどのアプリケーションの作成。

3. WebCenterパーソナライズ・テクノロジ・スコープのプロジェクトへの追加。このテクノロジ・スコープにより、シナリオ・エディタなど、JDeveloper固有のツール機能がプロジェクトに追加されます。

1. プロジェクトを右クリックして、「プロジェクト・プロパティ」を選択します。

2. 「プロジェクト・プロパティ」ダイアログで「テクノロジ・スコープ」を選択します。

3. 使用可能なスコープのリストでWebCenterパーソナライズを選択し、これを「選択済」列に移動します。

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

これらの手順を完了すると、JDeveloperでパーソナライズ・コンポーネントを開発およびテストする準備が整います。詳細は、第66章「Oracle WebCenter Portalアプリケーションのパーソナライズ」を参照してください。

3 チームでの効率的な作業

この章では、開発者がOracle JDeveloperでファイルを共有する場合のチーム開発環境について説明します。たとえば、ソース(またはバージョン)・コントロール・システム、Subversionに関する情報などがあります。

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

- 第3.1項「WebCenter Portal開発でのソース・コントロールの使用」

- 第3.2項「Oracleチーム・プロダクティビティ・センターの使用」

- 第3.3項「ソース・コントロールにチェックインするファイルの決定」

- 第3.4項「1回での共通要件の実装」

- 第3.5項「ポートレット・プロデューサに関する考慮事項」

3.1 WebCenter Portal開発でのソース・コントロールの使用

WebCenter Portalのソース・コントロールは、その他の開発環境のソース・コントロールと同様の方法で使用できます。

JDeveloperには、ソース・コントロールのSubversionが含まれます。Oracleは、CVS (Concurrent Versions System)、DimensionsおよびClearCaseなどの他のソース・サポート・システムへの無料の拡張機能も提供します。これらの拡張機能は、JDeveloper内の「ヘルプ」→「更新の確認」メニュー・オプションから直接インストールできます。これが、拡張機能をインストールする推奨方法です。JDeveloperインスタンスからインターネットに接続できない場合は、Oracle Technology Network (OTN)(http://www.oracle.com/technetwork/index.html)から拡張機能をダウンロードします。更新の確認ウィザードで、ダウンロードするローカル・ファイルを指し示します。

注意:

拡張機能にアクセスするにはプロキシ・サーバーを構成する必要がある場合があります。詳細は、Oracle JDeveloperオンライン・ヘルプのプロキシ設定とJDeveloperに関するトピックを参照してください。

JDeveloperを使用したSubVersionおよびその他のソース・コントロール・システムの設定と使用の完全かつ詳細な情報は、Oracle JDeveloperオンライン・ヘルプのチームでの開発に関するトピックを参照してください。

3.2 Oracleチーム・プロダクティビティ・センターの使用

Oracleチーム・プロダクティビティ・センターはアプリケーション・ライフサイクル管理ツールで、このツールを使用すると、ソフトウェア開発チームは、JDeveloperを使用したポータルの開発時に共同作業と効率的な作業が可能になります。これもJDeveloperの無料の拡張機能です。

Oracleチーム・プロダクティビティ・センターは、タスク、バグ、および不具合のリポジトリ(JIRAやBugzillaなど)と、独自の組込みタスク・リポジトリをIDEに統合します。また、JDeveloper内のチャット・インタフェースや、その他のチーム作業に役立つ機能(タスクに対してソース・コントロール・システムにチェックインされたファイルの詳細を記録する機能や、IDEのコンテキストを保存するなどの開発者の生産性支援機能など)を提供します。

Oracleチーム・プロダクティビティ・センターの詳細やダウンロードは、http://www.oracle.com/technetwork/index.htmlのOracle Technology Network (OTN)を参照してください。

3.3 ソース・コントロールにチェックインするファイルの決定

ソース・コントロール・システムを使用する際には、どのファイルをチェックインし、どのアクションがそれらのファイルに作用するかを理解していることが重要になります。一般に、チーム・メンバーが新しいプロジェクトの作成を開始すれば、どのファイルが作成されるかがわかり、何をソース・コントロールにチェックインすればよいかを判断できます。考えられるすべてのファイルとのやり取りをまとめることは困難ですが、この項では一般的なヒントをいくつか提供します。

表3-1に、開発者が一般的にやり取りを行ういくつかのコンポーネントと、これらのコンポーネントおよび関連ファイルの詳細へのリンクを示します。

表3-1 一般的なコンポーネント

コンポーネント

詳細の参照先

ページ

ページ・メタデータ・ファイルの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFメタデータ・ファイルの概要に関する項を参照してください。

ポートレット

ポートレットおよびプロデューサ・メタデータ・ファイルの詳細は、付録A「Oracle WebCenter Portalファイル」を参照してください。また、第59章「JSR 286を使用した標準ベースのJavaポートレットの作成」も参照してください。

タスク・フロー

ADFタスク・フローの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFタスク・フローの概説に関する項を参照してください。

データ・コントロール

データ・コントロールの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

ソース・コントロールの戦略を計画する際に確認する必要のあるその他の機能および関連ファイルの詳細は、付録A「Oracle WebCenter Portalファイル」を参照してください。この付録では、Portal Frameworkファイル、システム・ファイル、JDeveloperファイルなどをリストし、これらのファイルについて説明しています。

3.4 1回での共通要件の実装

プロジェクト管理者は、開発者に共通する要件を一度に実装して、そのバージョンを全員が使用できるようにチェックインすることをお薦めします。前もって計画し、管理者がこれらの共通要件を考慮しておくことで、冗長的な作業やエラーを削減できます。

たとえば、2人の開発者が、ポータルの別々のページにOmniPortletを追加する必要があるとします。この場合、プロジェクト管理者がOmniPortletプロデューサを登録していれば、両方の開発者がこのプロデューサを使用できます。このようにしていないと、各開発者が別々にOmniPortletプロデューサを登録するようになり、不要な重複と混乱の原因になります。

別の例として、多数の開発者が、同じコンテンツ・リポジトリのコンテンツを必要としているとします。この場合は、最初に1人が必要な接続を設定してチェックインする必要があります。その後、その他の開発者は同じデータ・コントロールを再利用するだけです。

3.5 ポートレット・プロデューサに関する考慮事項

チーム環境で作業する場合は、プロデューサに関する次の考慮事項に留意してください。

- 第3.5.1項「ポートレット・プロデューサの接続」

- 第3.5.2項「異なるポートレット・プロデューサからのポートレットの結合」

3.5.1 ポートレット・プロデューサの接続

プロジェクトに対してEARファイルを構築する場合、個々のプロジェクトではなくポータル全体に対して接続がロードされます。たとえば、P1およびP2という2つのプロジェクトを持つポータルがあるとします。P1には100個のプロデューサが登録されており、P2にはプロデューサは登録されていません。この場合、どちらかのプロジェクトに対してEARファイルを構築すると、P1のプロデューサ接続の100個全部がconnections.xmlにロードされます。ただし、手動でconnections.xmlを編集することもできますので覚えておいてください。

デプロイ前ツールを実行してターゲットのEARファイルを作成する場合、connections.xml内のすべての接続にアクセスできる必要があります。このため、この例では、P1の100個のポートレット・プロデューサ接続のいずれかがなんらかの理由で使用不可能になると、どちらのプロジェクトのターゲットのEARファイルも生成に失敗します。全体の開発作業をポータルおよびプロジェクト別に分担するときは、この動作を考慮して、慎重に計画する必要があります。

3.5.2 異なるポートレット・プロデューサからのポートレットの結合

場合によっては、複数の開発者でポートレットを構築し、最終的にこれらのポートレットを1つのポートレット・プロデューサの下に結合することが必要になります。この各開発者は、いくつかの潜在的な問題を意識している必要があります。

- ポートレット名とJSPパスは、クラッシュする可能性があります。あるポータルで1つのポートレット・プロデューサ内にポートレットを結合する場合、ポートレット開発者は、ネーミングのクラッシュを回避するために、事前に準備したクラス・パッケージ名およびJSPパスを使用する必要があります。

- ポートレット・ウィザードでJPSポートレットを作成する場合、ポートレット・モードのディレクトリはデフォルトでportletn\html\mode_nameになります。nは、作成するポートレットごとに増分する数になります。ディレクトリ名やファイル名のクラッシュを避けるために、ポートレット開発者は、ポートレット・ウィザードの「コンテンツ・タイプ」ページと「ポートレット・モード」ページでディレクトリ名を変更する必要があります。ポートレット・モードを選択して、対応するフィールドでディレクトリ名が一意になるように変更します。

- ポートレットを1つのポートレット・プロデューサ内に結合するときには、ポートレット・ディスクリプタ・ファイルを手動でマージする必要があります。このとき、次のようにして識別子のクラッシュを回避します。

- portlet.xmlおよびoracle-portlet.xmlファイル内のJPSポートレット識別子は、portlet1から始まって順に自動生成されます。複数のポートレット・ディスクリプタ・ファイルを手動で1つにマージするとき、他のポートレット識別子とクラッシュするポートレット識別子はすべて変更する必要があります。

- 同様に、provider.xml内のPDK-Javaポートレット識別子は、1から始まって順に自動生成されます。複数のprovider.xmlファイルを手動でマージするとき、他のポートレット識別子とクラッシュするポートレット識別子はすべて変更する必要があります。

- Webディスクリプタ(web.xml)の変更内容(セキュリティ・ロール情報など)も手動でマージする必要があります。

- PDK-Javaポートレットの場合は、.propertiesファイルも手動でマージする必要があることがあります。

- 多様なポートレットを使用している場合には、他者による上書きや、変更されたファイルがJDeveloperで正しく選択されないなどの理由で、ファイルの一部が適切にチェックインされない場合があります。たとえば、多様なポートレットのあるポータルをデプロイすると、3つのOmniPortletsのうちの2つで次のエラーが表示される可能性があります。

mdsId
oracle/adf/portlet/OmniPortlet_1172537210873/ap/Portlet100_0b4156e9_0111_1000_
8001_82235f273a39.pxml not found

mdsId
oracle/adf/portlet/OmniPortlet_1172537210873/ap/Portlet100_250498fc_0111_1000_
8002_a9fe7286a54e.pxml not found

このようなエラー・メッセージが表示された場合は、開発環境のすべての*.pxmlファイルがデプロイ環境にコピーされていることを確認してください。

- ポートレットのカスタマイズが、デプロイ環境で表示されない場合があります。oracle\adf\portlet\<portletInstanceName>.pxmlファイルのコンテンツが適切で、正しい*.pxmlファイルを参照していることを確認してください。

4 WebCenter Portalのツールとサービス用アプリケーションの準備

この章では、Oracle WebCenter Portalのツールとサービスを利用するようにアプリケーションを準備する方法について説明します。

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

- 第4.1項「WebCenter Portalのツールとサービスの理解」

- 第4.2項「ツールとサービスを利用するためのFrameworkアプリケーションの準備」

- 第4.3項「サービスでリソースをレンダリングする方法のカスタマイズ」

- 第4.4項「一般設定の構成」

4.1 WebCenter Portalのツールとサービスの理解

Oracle WebCenter Portalのツールとサービスは、ソーシャル・コンピューティング・サービス、個人の生産性サービス、オンラインでの認識およびコミュニケーション、コンテンツ統合、Web分析によって、ポータルおよびWebサイトを充実したものにします。

この項では、主要なテクノロジについて概説します。これは、実装するツールやサービスの決定や、ユーザー・インタフェースのカスタマイズに最適な方法を決定する際に役立ちます。

注意:

WebCenter Portalのツールとサービスは、アプリケーションのページに追加できるタスク・フローを通してその機能を公開します。これらのタスク・フローが要件を満たさない場合は、カスタマイズしてルック・アンド・フィールや機能を変更できます。たとえば、テキストを追加したり、ラベルを変更したり、リージョンやコンポーネントを削除したり、追加の属性を表示したりできます。詳細は、第23章「WebCenter Portalのツールとサービス・タスク・フローのカスタマイズ」を参照してください。

この項には次のサブセクションが含まれます:

- 第4.1.1項「WebCenter Portalの同格ツールとサービスの理解」

- 第4.1.2項「WebCenter PortalのAPIの理解」

- 第4.1.3項「WebCenter Portalのデータ・コントロールの使用」

4.1.1 WebCenter Portalの同格ツールとサービスの理解

WebCenter Portalのツールとサービスには、同格とみなされるものがあります。これらは、1つのアプリケーション全体で他のツールやサービスとやり取りします。

表4-1は、WebCenter Portal内の統合ポイントのリストです。

表4-1 WebCenter Portal内の統合ポイント

WebCenter Portalのツールまたはサービス

RSS

検索

タグ

リンク

コメントとお気に入り登録

アクティビティ・ストリーム

アクティビティ・グラフ

通知

分析

アクティビティ・グラフ

X

n/a

X

お知らせ

X

X

X

X

X

ブログ

X

X

X

X

X

X

X

X

ディスカッション

X

X

X

X

X(トピックへの返信)

X

X(返信)

X

ドキュメント(Wikiを含む)

X

X

X

X

X

X

X

X

イベント

X(一部)

X

X

X

インスタント・メッセージおよびプレゼンス(IMP)

X

リスト

X

X

X

X

X

X

メール

X

ノート

X

X

ピープル・コネクション

X(一部)

X(一部)

X(アクティビティ・ストリーム、メッセージ・ボード)

X(メッセージ・ボード、プロファイル、フィードバック)

X(メッセージ・ボード)

X

X

投票

最近のアクティビティ

X

検索

n/a

X

X(一部)

X

タグ

X

n/a

X

注意:

この表に示した検索は、WebCenter Portal検索アダプタを使用して、利用可能な各コンポーネントを検索します。ただし、大規模な実装で最高のパフォーマンスを得るには、Oracle SES検索を使用するように構成する必要があります。Oracle SESは、次のリソースについてアプリケーションを検索します。

- ドキュメント(Wikiやブログを含む)

- お知らせおよびディスカッション

詳細は、第45章「検索の統合」を参照してください。

4.1.2 WebCenter PortalのAPIの理解

この項では、WebCenter Portalのツールとサービスで使用できるAPIについて説明します。

複数のカスタマイズ・オプションが選択できる場合は、次の考慮事項に注意してください。

- WebCenter Portalにアクセスするカスタム・クライアント(WebCenter Portalとやり取りするiPhoneアプリケーションなど)を作成する場合は、REST APIを使用してください。

- REST APIでは、ユーザー・インタフェースのカスタマイズや、カスタム・コンポーネントの開発を最も短時間で簡単に行うことができます。WebCenter Portalにアクセスするカスタム・ユーザー・インタフェースを作成する場合は、データ・コントロールまたはネイティブのAPIを使用することを検討してください。

- カスタム・ポータルまたは複合Frameworkアプリケーションを作成する場合は、データ・コントロールまたはネイティブのAPIを使用してください。

- Java、JDeveloper、およびADFについて習熟している場合は、データ・コントロールまたはネイティブのAPIを使用してください。その他の言語(特にJavaScript)を使用する場合は、REST APIを使用してください。

表4-2に、ツールとサービスと、使用可能なAPIを示します。

表4-2 ツールとサービスのサポート対象テクノロジ

WebCenter Portalのツールまたはサービス

データ・コントロール

Java API

REST API

バックエンドAPI

アクティビティ・グラフ

第46.3.1項「推奨データ・コントロールの使用方法」

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

第46.3.2項「アクティビティ・グラフREST APIの使用」

分析

第47.3.1項「SQLデータ・コントロールの使用」

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

お知らせ

Oracle WebCenter Portalのディスカッション・サーバーを使用するWebサービス(WebCenter Portalはカスタム認証で設定されるため、構成が必要です)

Oracle Fusion Middlewareドキュメント・ライブラリのJiveフォーラムのドキュメントを参照してください(WebCenter Portal製品の部分にあります)。

コメントとお気に入り登録

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

第42.1項「アクティビティ・ストリームREST API」

ディスカッション

第33.3.8項「ディスカッションREST APIの使用」

Oracle WebCenter Portalのディスカッション・サーバーを使用するWebサービス(WebCenter Portalはカスタム認証で設定されるため、構成が必要です)

Oracle Fusion Middlewareドキュメント・ライブラリのJiveフォーラムのドキュメントを参照してください(WebCenter Portal製品の部分にあります)。

ドキュメント(Wikiとブログを含む)

第26章「コンテンツ・データ・コントロールの使用」

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

Oracle Fusion Middleware Content Management REST Service開発者ガイド

Oracle Fusion Middleware Oracle WebCenter Content Remote Intradoc Client (RIDC) Java APIリファレンスを参照してください。

Oracle Fusion Middleware Oracle Universal Content Managementサービス・リファレンス・ガイド

イベント

第48.3項「イベントREST APIの使用」

Microsoft ExchangeによるWebサービス

一般設定

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

リンク

第43.3.1項「リンクREST APIの使用」

リスト

第49.4項「リストREST APIの使用」

通知

第50.3.2項「通知データ・コントロールの使用」

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

ページレット・プロデューサ

第62.7.2.2項「RESTを使用したページレットへのアクセス」

ピープル・コネクション

第40.1項「ピープル・コネクション・データ・コントロールの使用方法」

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

第42章「ピープル・コネクションREST APIの使用」(プロファイルおよびアクティブ・ストリームについて)

パーソナライズ

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス(カスタムのプロバイダおよびロケータの開発について)

第72章「コンダクタAPIリファレンス」

第71章「プロパティ・サービスREST API」

第72章「コンダクタAPIリファレンス」

投票

第36.3.4項「投票データ・コントロールの使用方法」

リソース・アクション・ハンドラ・フレームワーク

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

検索

第45.3.5項「検索データ・コントロールの使用」

注意: 検索データ・コントロールは、Oracle SES検索でのみサポートされます。

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

第45.3.4項「検索REST APIの使用」

注意: 検索REST APIは、Oracle SES検索でのみサポートされます。

Oracle Secure Enterprise SearchによるWebサービスおよびJava API

タグ

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

第44.3.2項「タグREST APIの使用」

関連項目:

式言語APIについては、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください

4.1.3 WebCenter Portalのデータ・コントロールの使用

一部のツールとサービスでは、カスタマイズされたユーザー・インタフェースをFrameworkアプリケーションまたはタスク・フローで構築するためのデータ・コントロールが用意されています。このタスク・フローをADFライブラリにデプロイすると、タスク・フローをポータブルに利用できるようになります。たとえば、WebCenter Portalアプリケーションのポータルで、ページ・テンプレートのリソース・カタログにこれを追加できます。

事前にツールまたはサービスを統合する必要なしに、そのデータ・コントロールをユーザー・インタフェースの編集に使用できます。アプリケーションは、それぞれのツールまたはサービスに含まれるいずれかのデータ・コントロールまたはタスク・フローが使用されるときに、そのツールやサービスに応じて構成されます。

注意:

Oracle ADFアーキテクチャには、ユーザー・インタフェースでデータの構造を認識できるデータ・コントロールが用意されています。メタデータにより、データのコレクション、プロパティ、メソッドおよびタイプが表されます。属性、コレクションおよびメソッドをドラッグしてページにドロップすると、JDeveloperは自動的にページから関連するツールとサービスへのバインディングを作成します。

データ・コントロールの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

組込みデータ・コントロールを使用するには:

1. JDeveloperで、必要な接続を使用してWebCenter Portal Frameworkアプリケーションを作成します。

2. 「リソース・パレット」で「カタログ」、「WebCenter Portal - サービス・カタログ」、「データ・コントロール」の順に開きます。

3. データ・コントロールを右クリックして、「プロジェクトに追加」を選択します。

図4-1 「リソース・パレット」のデータ・コントロール

4. データ・コントロールからメソッドとプロパティをドラッグして、ADF JSFページにドロップします。

注意:

データ・コントロールをアプリケーションに追加する方法は、他にも2つあります。

- 「リソース・パレット」から、IDE接続を選択して、データ・コントロールにナビゲートします。データ・コントロールを右クリックして、「プロジェクトに追加」を選択します。

- 「プロジェクト・プロパティ」から、「ライブラリとクラスパス」を選択して、「ライブラリの追加」ボタンをクリックします。この方法を採用する場合は、どのJDeveloperライブラリに必要なデータ・コントロールが格納されているかを理解している必要があります。

4.2 ツールとサービスを利用するためのFrameworkアプリケーションの準備

この項では、WebCenter Portalのツールとサービスを使用するようにアプリケーションを準備する場合に、実行する必要のある手順について説明します。次のサブセクションが含まれます:

- 第4.2.1項「ツールとサービスを利用するようにアプリケーションを準備する方法」

- 第4.2.2項「データベース接続の設定」

- 第4.2.3項「外部アプリケーション接続の設定」

4.2.1 ツールとサービスを利用するようにアプリケーションを準備する方法

ツールまたはサービスを含めるようにアプリケーションを構成できます。JDeveloperでアプリケーションを作成するときには、アプリケーションのベースにするテンプレートを選択できます。必須ではありませんが、WebCenter PortalのFrameworkアプリケーション・テンプレートを使用すると、該当するすべての接続ウィザードとタグ・ライブラリが、「新規ギャラリ」と「コンポーネント・パレット」にすぐに表示され、使用できるようになります。タスク・フローまたはコンポーネントを利用すると、必要なライブラリが自動的にプロジェクトに追加されます。

アプリケーションは、利用するツールまたはサービスに応じた特定の前提条件を満たす必要があります。たとえば、ツールでユーザーのアイデンティティを識別する必要がある場合、アプリケーションでユーザー認証に一定レベルのセキュリティを提供する必要があります。

この項には次のサブセクションが含まれます:

- 第4.2.1.1項「ツールとサービスのセキュリティの実装」

- 第4.2.1.2項「SSLで保護された接続の設定」

4.2.1.1 ツールとサービスのセキュリティの実装

一部のツールでは、ユーザーのアイデンティティを認識する必要があります(たとえば、検索では、検索の保存のためにユーザーのアイデンティティが必要になります)。これらのツールとサービスでは、少なくともユーザーを認証するようにアプリケーションを構成して、ユーザーのカスタマイズとプリファレンス用に、ユーザーが個別のアイデンティティを持つようにする必要があります。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。

関連項目:

- Frameworkアプリケーションで基本的なセキュリティ・ソリューションを実装する方法の詳細は、第74.3項「ADFセキュリティの構成」を参照してください

- Frameworkアプリケーションに完全なセキュリティ・ソリューションを実装する方法の詳細は、第74章「WebCenter Portal Frameworkアプリケーションの保護」を参照してください。

ADFセキュリティをアプリケーション用に構成すると、jazn-data.xmlファイルを開いて、サンプル・ユーザーの権限を各タスク・フロー用に変更できます。ADFセキュリティ・ポリシー・エディタを開くには、「アプリケーション・リソース」パネルでファイルを見つけてその名前をダブルクリックするか、「アプリケーション」→「セキュア」→「リソース権限」を選択します(図4-2)。「リソース・タイプ」ドロップダウンは、表に示される権限のセットを制御します。リストから特定の権限タイプを選択することで、そのタイプの権限のみが表示されます。

図4-2 jazn-data.xmlファイル内のADFセキュリティ・ポリシー

4.2.1.2 SSLで保護された接続の設定

JDeveloperでバックエンド接続を設定しているときに、その接続をSSLで保護されたエンドポイントにする(信頼できる認証局の有効な証明書を使用する)場合は、それに応じて環境を準備する必要があります。

注意:

このプリファレンス設定の変更は、デフォルト・サーバーとして統合WLSを使用して作成した接続にのみ必要になります。管理対象サーバーにデプロイする場合、この設定の変更は必要ありません。

SSLで保護された接続用にプリファレンスを設定するには:

1. JDeveloperのツールバーから、「ツール」→「プリファレンス」を選択します。
「プリファレンス」ダイアログが表示されます(図4-3)。

図4-3 「プリファレンス」ダイアログ

2. 「プリファレンス」ダイアログで、「資格証明」をクリックします(図4-4)。

図4-4 「資格証明」ペイン

3. 「クライアントの信頼する証明書キーストア」の値を、次のように変更します。

<JAVA_HOME>/jre/lib/security/cacerts

この<JAVA_HOME>は、Javaホーム・ディレクトリの場所です。

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

4.2.2 データベース接続の設定

多くのツールとサービスでは、関連情報が格納されているデータベース・スキーマへの接続が必要です。たとえば、リンクの場合は、リレーションシップのマッピング情報(どのオブジェクトが、どのオブジェクトにリンクされているかなど)がデータベースに格納されています。

表4-3は、データベース接続が必要になるツールとサービスのリストです。

表4-3 関連するデータ・ソース

ツールまたはサービス

データベース・スキーマ

アクティビティ・グラフ

ACTIVITIESスキーマ

アクティビティ・ストリーム

WEBCENTERスキーマ

分析

ACTIVITIESスキーマ

ブログ

WEBCENTERスキーマ

コメント

WEBCENTERスキーマ

コメントおよびアクティビティ・ストリームを組み込むドキュメント(Wikiとブログを含む)

WEBCENTERスキーマ

リンク

WEBCENTERスキーマ

リスト

WEBCENTERスキーマ

Oracle Portalアダプタ

PORTALスキーマ(Oracle Portalスキーマの名前)

詳細は、『Oracle Fusion Middleware Oracle Portal管理者ガイド』のフェデレーテッド・ポータル・アダプタを使用するための環境設定に関する項を参照してください。

ピープル・コネクション

WEBCENTERスキーマ

投票

WEBCENTERスキーマ

タグ

WEBCENTERスキーマ

お知らせ

DISCUSSIONSスキーマ

ディスカッション

DISCUSSIONSスキーマ

関連項目:

- スキーマのインストールについては、第2.2.5項「WebCenterバックエンド・サービスの構成」を参照してください。

- 本番環境にアプリケーションをデプロイするときのデータ・ソースに関する考慮事項については、Oracle Fusion Middleware Oracle WebCenter Portalの管理のWebLogic管理対象サーバーへのアプリケーションのデプロイに関する項を参照してください。

データベース接続を作成するには:

1. アプリケーション・ナビゲータで、「アプリケーション・リソース」パネルを開きます。

2. 「接続」を右クリックし、「データベース」をクリックします。

3. データベース接続に関する次の情報を入力します。

- 接続名: webcenter/CustomPortalまたはactivities/CustomPortal

注意:

Framework管理対象サーバーへのデプロイメントが簡単になるように、次の名前の使用をお薦めします。

- アプリケーションに、WebCenter Portalスキーマを使用するタスク・フローが含まれる場合は、データベース接続の名前をwebcenter/CustomPortalにします。

- アプリケーションに、アクティビティ・スキーマを使用するタスク・フローが含まれる場合は、データベース接続の名前をactivities/CustomPortalにします。

- 接続タイプ: Oracle (JDBC)

- ユーザー名: username

- パスワード: password

- ホスト: WebCenter Portalスキーマをインストールするホスト(例: localhost)

- JDBCポート: ポート(例: 1521)

- SID: 同じJDBCを使用するデータベースのシステム識別子(例: ORCL)

注意:

「パスワードの保存」チェック・ボックスが選択されていないときに、JDeveloperから管理対象サーバーまたは統合WebLogic Serverにデプロイする場合は、デプロイメント後に手動でデータ・ソースを作成する必要があります。

Oracle WebLogic ServerのJDBCデータ・ソースの作成方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

図4-5 データベース接続

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

5. 「データ・ソースへの関連付け」ダイアログで、適切なスキーマを選択します。

- 接続の名前をwebcenter/CustomPortalにしている場合は、この接続をWebCenter Portalスキーマに関連付けるように選択します。

- 接続の名前をactivities/CustomPortalにしている場合は、この接続をアクティビティ・スキーマに関連付けるように選択します。

「OK」をクリックします(図4-6)。

図4-6 接続ウィザードからのデータ・ソースへの関連付け

データ・ソースの関連付けは、ワークスペース内の各プロジェクトに個別に適用されます。ワークスペース内に複数のWebCenter Portalプロジェクトが存在する場合、ダイアログにドロップダウン・リストが表示され、ユーザーは構成するプロジェクトを選択できます。

注意:

Oracle JDeveloperで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でEnterprise Manager Fusion Middleware Controlを使用して、後から接続を追加、削除または変更できます。

詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理を参照してください。

4.2.2.1 既存のデータベース接続の関連付け

既存のデータベース接続は、その接続を右クリックして、「データ・ソースへの関連付け」を選択することでデータ・ソースに関連付けられます(図4-7)。

図4-7 既存の接続のデータ・ソースへの関連付け

4.2.3 外部アプリケーション接続の設定

独自の認証を処理するアプリケーションとツールまたはサービスがやり取りするときには、そのアプリケーションと外部アプリケーション定義を関連付けて、資格証明プロビジョニングに備えることができます。

次のツールとサービスは、ツールとサービスへの接続と認証の定義に外部アプリケーションを使用できます。

- ドキュメント

- イベント

- インスタント・メッセージおよびプレゼンス

- メール

- RSSビューア(セキュリティ保護されたRSSフィードを使用する場合)

関連項目:

- 外部アプリケーションの設定の詳細は、第28章「ドキュメントの統合」、第34章「インスタント・メッセージおよびプレゼンスの統合」、第35章「メールの統合」および第52章「RSSの統合」を参照してください。

- 外部アプリケーションの全般的な情報については、第74.13項「外部アプリケーションの使用」を参照してください

4.3 サービスでリソースをレンダリングする方法のカスタマイズ

WebCenter Portalで使用される多くのサービスは、リソースへのアクセスを提供します。たとえば、検索結果には、ドキュメント、タグ、アクティビティその他のリソース・タイプへのリンクを含めることができます。この項では、そのようなリソースをポータルにレンダリングする方法の指定方法について説明します。

- 第4.3.1項「リソースのレンダリング・オプションの概要」

- 第4.3.2項「同じブラウザ・ウィンドウでのリソースのレンダリング」

- 第4.3.3項「ADFインライン・ポップアップでのリソースのレンダリング」

- 第4.3.4項「新しいブラウザ・ウィンドウでのリソースのレンダリング」

- 第4.3.5項「resourceActionBehaviorタグによるレンダリング動作の設定」

- 第4.3.6項「デプロイ済Frameworkアプリケーションでのadf-config.xmlの更新」

4.3.1 リソースのレンダリング・オプションの概要

図4-8に検索結果のサンプルを示します。結果には、ユーザー・プロファイル、ドキュメント、タグ、ブログおよびWikiページへのリンクなど、クリック可能な様々な要素があります。

図4-8 検索結果のサンプル

Portal Frameworkアプリケーションの場合、ほとんどのサービスはブラウザ・ウィンドウに直接そのリソースをレンダリングします。

WebCenter Portalで使用できるリソースのレンダリング動作には、次のようなものがあります。

- 同じブラウザ・ウィンドウでの全画面レンダリング。このオプションは、ほとんどのサービスでのデフォルトです。リソースは、同じブラウザ・ウィンドウを使用してブラウザからリソースにナビゲートすることにより、ビューア・タスク・フローで開かれます。第4.3.2項「同じブラウザ・ウィンドウでのリソースのレンダリング」を参照してください。

- ADFインライン・ポップアップ。このオプションでは、インライン・ポップアップ(ポップアップするダイアログのようなウィンドウで、現在のブラウザに含まれている)でリソースが開かれます。第4.3.3項「ADFインライン・ポップアップでのリソースのレンダリング」を参照してください。

- 新しいブラウザ・ウィンドウ。このオプションでは、新しいブラウザ・ウィンドウにリソースをレンダリングします。第4.3.4項「新しいブラウザ・ウィンドウでのリソースのレンダリング」を参照してください。

4.3.2 同じブラウザ・ウィンドウでのリソースのレンダリング

デフォルトで、ほとんどのリソースは同じブラウザ・ウィンドウに全画面レンダリングされます。

注意:

一部の特殊な場合に、リソースはデフォルトで意図的にインライン・ポップアップ・ダイアログにレンダリングされます。これについては、第4.3.5項「resourceActionBehaviorタグによるレンダリング動作の設定」を参照してください。

明示的にデフォルトのレンダリングをブラウザ・ウィンドウに設定するには、次の手順を実行します。

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

2. 「Descriptors」フォルダを開き、さらに「ADF META-INF」フォルダを開きます。

3. エディタでadf-config.xmlファイルを開き、例4-1に示すように<resource-handler>要素を追加します。この例で、DefaultResourceActionHandler (レンダリングの委任先のデフォルト・クラス)は、目的の動作を指定します。adf-config.xmlから<resource-handler>要素を完全に削除しても、動作はまったく同じです。例4-1で指定した動作は、すべてのサービスに適用されます。

例4-1 ブラウザ内レンダリングを指定

<wpsC:adf-service-config
xmlns="http://xmlns.oracle.com/webcenter/framework/service">
<resource-handler
class="oracle.webcenter.framework.resource.view.DefaultResourceActionHandler"/>
</wpsC:adf-service-config>

4.3.3 ADFインライン・ポップアップでのリソースのレンダリング

デフォルトのレンダリングをブラウザ・ウィンドウからADFインライン・ポップアップ・ダイアログに変更するには、次の手順を実行します。

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

2. 「Descriptors」フォルダを開き、さらに「ADF META-INF」フォルダを開きます。

3. エディタでadf-config.xmlファイルを開き、例4-2に示すように<resource-handler>要素を追加します。この例で、DefaultResourceActionHandler (レンダリングの委任先のデフォルト・クラス)は、display-as-popup=true属性によりオーバーライドされます。

例4-2 レンダリングにADFインライン・ポップアップを指定

<wpsC:adf-service-config
xmlns="http://xmlns.oracle.com/webcenter/framework/service">
<resource-handler
class="oracle.webcenter.framework.resource.view.DefaultResourceActionHandler"
display-as-popup="true" />
</wpsC:adf-service-config>

インライン・ポップアップでユーザーが「最大化」ボタンをクリックすると、現在指定されているデフォルトのハンドラが起動されます。DefaultResourceActionHandlerの場合、リソースはブラウザで全画面表示されます。PopUpResourceActionHandlerがadf-config.xmlで指定されている場合、これは新しいブラウザ・ウィンドウに表示されます。第4.3.4項「新しいブラウザ・ウィンドウでのリソースのレンダリング」も参照してください。

4.3.4 新しいブラウザ・ウィンドウでのリソースのレンダリング

デフォルトのレンダリングをブラウザ・ウィンドウ内から新しいブラウザ・ウィンドウに変更するには、次の手順を実行します。

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

2. 「Descriptors」フォルダを開き、さらに「ADF META-INF」フォルダを開きます。

3. エディタでadf-config.xmlファイルを開き、例4-3に示すように<resource-handler>要素を追加します。この場合、レンダリングはPopUpResourceActionHandlerクラスに委任されます。

例4-3 レンダリングに別ブラウザを指定

<adf-service-config
xmlns="http://xmlns.oracle.com/webcenter/framework/service">
<resource-handler
class="oracle.webcenter.framework.resource.view.PopUpResourceActionHandler" />
</adf-service-config>

4.3.5 resourceActionBehaviorタグによるレンダリング動作の設定

adf-config.xmlで設定されるレンダリング動作は、resourceActionBehaviorタグを使用してuseResourcePopup属性をalways、neverまたはappDefinedの値に設定することにより、リソース・リンク自体でオーバーライドできます。

WebCenter Portalでは、フル・ナビゲーションが無意味な対象ケースに対し、この手法を使用します。たとえば、検索結果には、リソースの作成者が含まれていることがあります。このユーザー名のリンクをクリックすると、検索結果から移動することなく、作成者の簡単なプロファイルを示すポップアップを確認できます。

useResourcePopupが設定されていない場合や、これがリソース・リンクでappDefinedに設定されている場合は、adf-config.xmlのdisplay-as-popup属性が有効になります。

注意:

WebCenter Portalサービスが計画的に<resource-handler>をオーバーライドする場合、resourceActionBehaviorタグにおいてuseResourcePopupタグはalwaysに設定されます。これは、タスク・フロー自体をカスタマイズすることで変更できます。

4.3.6 デプロイ済Frameworkアプリケーションでのadf-config.xmlの更新

デプロイ済のアプリケーションの場合は、WLSTコマンドを使用することで、adf-config.xmlの<resource-handler設定を追加したり更新したりできます。コマンドの構文および例は、『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』のsetWebCenterServiceFrameworkConfigに関する項と、getWebCenterServiceFrameworkConfigに関する項を参照してください。

4.4 一般設定の構成

アプリケーションに追加したツールとサービスのタイムゾーン、日時の書式、言語(ロケール)およびアクセシビリティ・モードは、必要に応じてユーザーが設定できるようにすることが可能です。このような機能は、WebCenter Portal一般設定を通じて提供できます。これが格納する値には、FrameworkアプリケーションのJSFページから直接アクセスすることも、APIを通じて間接的にアクセスすることもできます。一般設定の対応範囲は、次のとおりです。

- タイムゾーン: デフォルトでは、アプリケーションを実行するサーバーで定義されている時刻が表示されます。これは、java.util.Timezoneに基づきます(例: GMT+0800)。また、Region/Countryの書式もサポートします(例: Europe/Amsterdam)。

- 日付/時間: デフォルトでは、java.text.DateFormat.SHORTのスタイルに合わせて構成されます。これは、java.text.DateFormatに基づきます(例: java.text.DateFormat.MEDIUM)。サポートされる値は、SHORT、MEDIUM、LONGおよびFULLです。

- 言語: デフォルトでは、ユーザーのブラウザのロケールで定義されます。これは、java.util.Localeに基づきます(例: fr-CA)。

- アクセシビリティ設定: trinidad-config.xmlファイルのaccessibility-mode設定に使用する値です。有効な値は、default、inaccessibleまたはscreenReaderです。

- アプリケーション・スキン: trinidad-config.xmlファイルのskin-family設定に使用する値です。これは、Trinidad skin-family属性に基づきます。有効な値は、アプリケーションに含まれるスキンで定義されます。

アプリケーションからこれを直接使用する場合は、JSFページで式言語を使用して、generalSettingsマネージドBeanにアクセスします。スタイルはjava.util.Timezoneに基づき、パターンはjava.text.SimpleDateFormatに基づきます。

ADFコンポーネント(たとえば、af:activeOutputText)のvalue属性としてgeneralSettingsを追加する場合は、「式ビルダー」を開いて、「JSFマネージドBean」、「generalSettings」の順にナビゲートすると、Beanのプリファレンス値を表示できます。

一般設定は、パターンベースの書式とスタイルベースの書式をどちらもサポートします。パターンが指定されていない場合は、スタイルが使用されます。デフォルトでは、パターンは指定されていないか、NULLです。

図4-9に、一般的な設定の「EL式の挿入」ダイアログを示します。

図4-9 generalSettings JSFマネージドBeanの式ビルダー

表4-4では、一般設定のプリファレンス値について説明します。

表4-4 一般設定マネージドBeanのプリファレンス値と説明

一般設定のプリファレンス値

説明

formattedCurrentDate

ユーザーが選択しているロケールで現在の日付を表示します。

formattedCurrentDateTime

ユーザーが選択しているロケールで現在の日付と時刻を表示します。

formattedCurrentTime

ユーザーが選択しているロケールで現在の時刻を表示します。

preferredAccessibilityMode

trinidad-config.xmlのaccessibility-mode設定に使用される、優先アクセシビリティ・モード(default、inaccessible、またはscreenReader)です。

preferredDateStyle

日付および時刻を表示するときにdateStyle属性に使用される、Javaの日付スタイルです。

preferredTimeStyle

日付および時刻を表示するときにtimeStyle属性に使用される、Javaの時刻スタイルです。

preferredDatePattern

時刻ではなく日付の表示に使用されるJava日付パターン。パターンは有効なjava.text.SimpleDateFormatパターン(dd-MMM-yyyyなど)にする必要があります。これは、preferredDateStyleよりも優先されます。

preferredTimePattern

日付を表示しないで時刻を表示する場合に使用される、Javaの時刻パターンです。これは、preferredTimeStyleより優先されます。

preferredDateTimePattern

日付と時刻を表示するときに使用される、Javaの日付/時刻パターンです。

これは、preferredDateStyleおよびpreferredTimeStyleより優先されます。

userTimeZone

日付および時刻を表示するときにtimeZone属性に使用される、Javaのタイムゾーンです。

preferredSkinName

trinidad-config.xmlのskin-family設定に使用される、優先スキン名です。

たとえば、ユーザーの選択しているロケール、タイムゾーン、および書式で、現在の日付と時刻を表示するには、次のコードをページに追加します。

例4-4 ユーザーのロケールで現在の日付と時刻を表示するコード

<af:outputText value="#{generalSettings.formattedCurrentDateTime}"/>

また、特定の日付と時刻を表示するには、次のようにします。

例4-5 特定の日付と時刻を表示するコード

<af:outputText value="#{row.dateTimeValue}">
<af:convertDateTime type="both"
dateStyle="#{generalSettings.preferredDateStyle}"
timeStyle="#{generalSettings.preferredTimeStyle}"
timeZone="#{generalSettings.userTimeZone}"
locale="#{facesContext.externalContext.requestLocale}" />
pattern="#{generalSettings.preferredDateTimePattern}"
</af:outputText>>

優先アクセシビリティ・モードを利用するには、アプリケーションのtrinidad-config.xmlファイルにEL(式言語)式を追加して、そのアクセシビリティ・モードを設定する必要があります。例:

例4-6 trinidad-config.xmlでのアクセシビリティ・モードの設定

<accessibility-mode>#{generalSettings.preferredAccessibilityMode}</accessibility-mode>

4.4.1 プリファレンス・ユーザー・インタフェースの作成

一般設定APIを使用してユーザー・インタフェースを作成すると、ユーザーはデフォルト設定を受け入れることも、自分の目的に適った設定を適用することもできるようになります。このAPIには、表4-4に示したものと同じプリファレンス値が含まれています。

日付と時刻を表示するWebCenter Portalのツールまたはサービスは、一般設定で構成された設定を使用します。一般設定APIを使用してプリファレンス・ユーザー・インタフェースを構築する方法は、oracle.webcenter.generalsettingsについてのJavadocを参照してください。具体的には、oracle.webcenter.generalsettings.modelパッケージに、各設定のプリファレンス値を取得および設定するAPIが含まれています。これらのAPIを使用してカスタム・ユーザー・インタフェースを作成すると、ユーザーは各自の優先値を表示および設定できるようになります。

関連項目:

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

4.4.2 一般設定を使用したユーザーのロケールの指定

デフォルトでは、ADFはユーザーのブラウザ設定からユーザーのロケールを取得します。この動作は、プリファレンスUIを使用して、ユーザーの優先ロケールをアプリケーションで設定できるように変更できます。

この動作を変更するには、oracle.webcenter.generalsettings.model.filter.GeneralSettingsLocaleFilterをサーブレット・フィルタとして、web.xmlとadfBindingsに含めます。このサーブレット・フィルタは、ユーザーのブラウザからではなく、一般設定のロケール・プリファレンスを基にデフォルトのロケール(ADFロケール)を設定します。

次のルールに従って、一般設定のロケール・フィルタをweb.xmlに追加します。

フィルタを定義します。例:

<filter>
<description>
WebCenter General Settings locale setting.
</description>
<filter-name>
generalSettingsLocaleFilter
</filter-name>
<filter-class>

oracle.webcenter.generalsettings.model.filter.GeneralSettingsLocaleFilter
</filter-class>
</filter>

adfBindingsフィルタの後に、同じサーブレット名でフィルタを追加します。例:

<filter-mapping>
<filter-name>
generalSettingsLocaleFilter
</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

このフィルタが設定されていない場合は、最初にクライアントのブラウザのロケール設定がロケールの情報源になり、その後でADFロケール設定が情報源になります。

このフィルタが設定されている場合は、一般設定がロケールの情報源になります。一般設定のロケール・プリファレンスが存在しない場合は、フィルタなしのデフォルト動作に戻されます。

第II部

WebCenter Portal Frameworkアプリケーションの構築

この部の構成は、次のとおりです。

- 第5章「WebCenter Portal Frameworkアプリケーションの理解」

- 第6章「WebCenter Portal Frameworkアプリケーションの作成」

- 第7章「Portal Frameworkアプリケーションのデプロイおよびテスト」

- 第8章「WebCenter Portal Frameworkアプリケーションのライフ・サイクルの理解」

- 第9章「ポータル・リソース管理の概要」

- 第10章「ナビゲーション・モデルの開発」

- 第11章「ページ・テンプレートの開発」

- 第12章「ページ・スタイルとタスク・フロー・スタイルの開発」

- 第13章「スキンの開発」

- 第14章「リソース・カタログの開発」

- 第15章「ページの作成とリソースの追加」

5 WebCenter Portal Frameworkアプリケーションの理解

この章では、WebCenter Portal Frameworkアプリケーションのアーキテクチャ、コンポーネントおよび機能について概説します。

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

- 第5.1項「WebCenter Portal Frameworkアプリケーションとは」

- 第5.2項「WebCenter Portal Frameworkアプリケーションの作成」

- 第5.3項「WebCenter Portal Frameworkアプリケーションの機能の検証」

- 第5.4項「WebCenter Portal Frameworkアプリケーション・ファイルの編成」

- 第5.5項「ポータルのライフ・サイクルについて」

- 第5.6項「ポータルのルック・アンド・フィールの開発」

- 第5.7項「デフォルトのポータル・プリファレンスの変更」

- 第5.8項「反復およびラウンドトリップ開発手法の使用方法」

- 第5.9項「ポータルの実行およびテスト」

- 第5.10項「実行時のWebCenter Portal Frameworkアプリケーション」

- 第5.11項「デフォルトのホーム・ページおよびログイン/ログアウト・ターゲット・ページの変更」

- 第5.12項「基本的なポータル開発タスク」

5.1 WebCenter Portal Frameworkアプリケーションとは

WebCenter Portal Frameworkアプリケーションは、ナビゲーション、ページ、ページ・テンプレート、コンテンツなどのポータル機能を含む標準的なADF Webアプリケーションです。この章では、これらの機能について詳しく説明します。

5.2 WebCenter Portal Frameworkアプリケーションの作成

JDeveloperでは、新しいWebCenter Portal Frameworkアプリケーションの作成が容易になります。ウィザードでは、詳細を説明し、必要なプロジェクト構造およびファイルを使用してワークスペースを作成します。このワークスペース内からポータルを開発、デプロイおよびテストします。

フレームワーク・アプリケーションを作成する基本的な手順と、生成されるプロジェクト構造については、第6章「WebCenter Portal Frameworkアプリケーションの作成」を参照してください。

5.3 WebCenter Portal Frameworkアプリケーションの機能の検証

Oracle WebCenter Portal Frameworkにより、多くのポータル固有の機能がADF Webアプリケーションに追加されます。WebCenter Portal Frameworkアプリケーション・テンプレートを使用して新しいアプリケーションを作成する場合には、これらの機能がデフォルトで備わっています。

この項では、理解しておく必要のあるポータルの主な機能について説明します。

- 第5.3.1項「機能のサマリー」

- 第5.3.2項「ページ、ページ・テンプレートおよびポータルのページ階層の理解」

- 第5.3.3項「WebCenter Portal Frameworkページの保護」

- 第5.3.4項「ナビゲーション・モデルおよびナビゲーション・レジストリの理解」

- 第5.3.5項「リソース・カタログおよびカタログ・レジストリの理解」

- 第5.4.4項「アプリケーション・ナビゲータでの非表示ファイルの表示」

5.3.1 機能のサマリー

Portal Frameworkアプリケーションで提供される基本機能は次のとおりです。

- ページ階層: ページ階層では、ページ間に親子関係を持つツリー構造で編成します。この階層構造により、ページからサブページにセキュリティ設定を簡単に伝播または継承することが可能になります。第5.3.2項「ページ、ページ・テンプレートおよびポータルのページ階層の理解」を参照してください。

- ナビゲーション・モデル: ナビゲーション・モデルは、ポータルに表示されるナビゲーション・ユーザー・インタフェースにバックエンド・データを提供します。ナビゲーション・モデルは、ページ、タスク・フロー、外部サイト、ポートレットおよび特定のコンテンツ・アイテムへのナビゲーションを制御する幅広いAPIを備え、柔軟性が非常に高くなっています。第5.3.4項「ナビゲーション・モデルおよびナビゲーション・レジストリの理解」を参照してください。

- ナビゲーション・レジストリ: ナビゲーション・レジストリは、ユーザーがリソース・マネージャを使用して、実行時にナビゲーションに追加できる一連の要素を定義します。リソース・マネージャの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの管理』のPortal Frameworkアプリケーションのアセットの管理に関する項を参照してください。第10章「ナビゲーション・モデルの開発」も参照してください。

- 委任管理: 委任管理はユーザー・ロールに基づきポータル・リソースを保護するためのメカニズムを提供します。たとえば、1つのロール(マネージャなど)のユーザーにすべてのポータル機能へのアクセスを許可し、それ以外のロール(従業員など)のユーザーには特定の機能へのアクセスを拒否できます。ページ階層は、委任管理ではプライマリ・コンテナになります。JDeveloperとブラウザベースの両方の環境において、ページ階層に委任管理を適用すると、特定のセキュリティ割当てが階層を通じて自動的にページやサブ・ページに伝播されます。第74章「WebCenter Portal Frameworkアプリケーションの保護」を参照してください。

- カスタマイズ: ユーザーは、ポートレットの追加や削除、スキンの変更、ポータルのレイアウトの再配置などにより、独自のポータル・ページをカスタマイズできます。第15章「ページの作成とリソースの追加」を参照してください。

- ページ・テンプレート: ページ・テンプレートにより、ページ全体のレイアウトを定義してページに適用し、ポータル全体で一貫したレイアウトを作成できます。詳細は、第5.6項「ポータルのルック・アンド・フィールの開発」を参照してください。『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のページ・テンプレートの使用に関する項も参照してください。

- カタログおよびカタログ・レジストリ: カタログは、タスク・フロー、ポートレット、コンテンツ・アイテム、および実行時にアプリケーションに追加できるその他の要素の任意のコレクションです。第14章「リソース・カタログの開発」を参照してください。

- カタログ・レジストリ: カタログ・レジストリは、リソース・カタログに含めることができる一連のアイテムを定義します。第14章「リソース・カタログの開発」を参照してください。

- スキン: スキンは、ポータル内のルック・アンド・フィールを整合させるためにアプリケーション・コンポーネントの色、フォント、イメージ、および高さや幅など一部のディメンションの詳細を定義します。第13章「スキンの開発」を参照してください。

- ポータル・プリファレンス: デフォルトのナビゲーション・モデル、ページ・テンプレート、その他のコンポーネントなどポータル向けのデフォルト・プリファレンスを変更できます。第5.7項「デフォルトのポータル・プリファレンスの変更」を参照してください。

JDeveloperツールには、ページ階層の作成および変更用エディタ、ナビゲーション・モデル、カタログおよびカタログ・レジストリ、ページ・テンプレート、ページ・スタイル、スキン、委任管理などがあります。さらに、ブラウザベースのツールが提供され、これによりエンド・ユーザーと管理者はこれらの機能の一部を実行できます。第5.10.2項「ブラウザベースのWebCenter Portal管理コンソール」も参照してください。

5.3.2 ページ、ページ・テンプレートとスタイル、およびポータルのページ階層の理解

この項では、Oracle WebCenter Portal Frameworkアプリケーションの3つの関連項目である、ページ、ページ・テンプレートとページ・スタイル、およびページ階層について説明します。

ポータルは1ページ以上で構成されており、ページはポータルの構造や編成において重要な役割を果たします。通常、ページはタスク・フロー、ポートレット、コンテンツなどの1つ以上のエンティティのコンテナです。また一般に、ページにはナビゲーション・ツリー、タブ、ブレッドクラムなどのナビゲーション・インタフェースが含まれます。Portal Frameworkアプリケーションでは、oracle/webcenter/portalapp/pagesフォルダの下にあるポータル・プロジェクトに一連のデフォルト・ページが格納されています(図5-1を参照)。

注意:

Portal Frameworkアプリケーションのファイルの編成の詳細は、第5.4項「WebCenter Portal Frameworkアプリケーション・ファイルの編成」を参照してください。

注意:

ページ階層で使用されるページは、oracle/webcenter/portalappの下に配置する必要があります。

図5-1 pagesフォルダの内容

ページ・テンプレートを使用すると、全ページにわたって共通にするビュー要素を指定できます。ページ・テンプレートとは、ADFレイアウト・コンポーネントやその他の要素を含むJSPXファイルのことです。一般に、ページ・テンプレートは、ヘッダー、フッターおよびコンテンツ領域によりページ・レイアウトを定義します。また、ページ・テンプレートでは、通常、ページのナビゲーションUIの配置とスタイルを指定します。たとえば、すべてのページに同じタブのセットを入れる場合や、各ページにツリー・ナビゲーション・パネルとブレッドクラムを表示する場合には、テンプレートにこれらのコンポーネントを追加できます。

ヒント:

ページ・テンプレートは、それを使用するページによって参照されます。基礎となるページ・テンプレートを変更すると、そのテンプレートを参照するすべてのページで自動的に変更内容が継承されます。

ページ・テンプレート・フォルダは、図5-2に示されているように、oracle/webcenter/portalapp/pagetemplatesにあります。このフォルダには、すぐに使用できるデフォルトのページ・テンプレートが2つ格納されています。

図5-2 pagetemplatesフォルダの内容

ページ・スタイルは、実行時に作成するページに使用するJSPXページです。ページ・スタイルには、新規作成されたページのレイアウトが示され、ページでサポートされるコンテンツ・タイプも示される場合があります。

ユーザーがページ・スタイルを使用してページを作成する場合、レイアウトと初期コンテンツが、ページ・スタイルから新規作成されたページにコピーされます。ページ・テンプレートとは異なり、ページ・スタイルは参照ベースではありません。つまり、ページ・スタイルを変更しても、その変更は、スタイルを使用するページに継承されません。

ページ・スタイル・ファイルは、oracle/webcenter/portalapp/pageStylesフォルダ内に格納されています。

ページ階層とは、一連の親子関係によってページを配置する論理的な構造で、ここではどのページでも1ページ以上のサブページを含むことができます。この階層モデルはポータルの構造全体の定義に使用できるだけでなく、子ページにその親に指定されているセキュリティ・ポリシーを継承させることもできます。各階層にセキュリティ・ポリシーを伝播するページの機能は、ページごとにセキュリティを設定する必要がないため、数十ページまたは数百ページもの非常に大型のポータルには特に便利です。新しいページを作成すると、それがページ階層内で格納された場所に基づいて、そのセキュリティ・ポリシーが自動的に設定されます。

ページ階層ファイルは、図5-3に示されているように、oracle/webcenter/portalapp/pagehierarchyにあります。

図5-3 pagehierarchyフォルダの内容

注意:

ページ階層ファイルは、ページ階層構造を定義するメタデータが含まれるXMLファイルです。これらのファイルを直接編集することはお薦めしません。次に説明するように、ページ階層エディタを使用して、ページ階層の作成や操作を行ってください。

基本的なページ階層モデルは、WebCenter Portal Frameworkアプリケーション・テンプレートで作成されたアプリケーションに含まれています。JDeveloperでページ階層エディタを使用してページ階層を変更できます。このエディタにアクセスするには:

1. 図5-3に示すアプリケーション・ナビゲータで、ポータル・プロジェクトを開きます。

2. pagehierarchyフォルダを右クリックします。

3. メニューから「ページ階層の編集」を選択します。

ヒント:

ページ階層エディタは、ポータル・ページ・ファイル(JSPXファイル)を右クリックしてメニューから「ページ階層の編集」を選択するか、ページ階層ファイルを直接開いても起動できます。

ポータルにページを作成した後、エディタを使用してサイト構造を作成します。アプリケーション・ナビゲータのoracle/webcenter/portalappフォルダ内の任意の場所からページ階層エディタにページをドラッグ・アンド・ドロップして(一度に1ページまたは数ページ)、希望する階層に配置できます。

または、階層ペインの上に配置された「追加」ボタンを使用できます。このボタンをクリックすると、プロジェクト内からページを選択できるダイアログがポップアップ表示されます。このページは、図5-4に示されているように、現在エディタで選択されているページの子として追加されます。

図5-4 ページのページ階層への追加

エディタでは、ツリー表示内のページ・ノードをドラッグ・アンド・ドロップで簡単に再配置できます。階層が大きい場合には、階層内のページを右クリックして「親ページの変更」を選択し、「親ページの変更」ダイアログを使用すると便利です。このダイアログを使用すると、選択済ページの新しい親を個々のウィンドウから選択でき、大きすぎて一度に表示できない階層内をスクロールする必要がなくなります。

ヒント:

ページ階層エディタのノードを右クリックし、「ページに移動」を選択して関連付けられているJSPX(ポータル・ページ)ファイルを開きます。

注意:

ページ階層内に作成する新しい各レベルには、pagehierarchy/pages/*Pages.xmlファイルが作成されます。これらのファイルには、そのレベル内のページ参照が記載されています。詳細は、第74.6.2項「ページ階層の構築」を参照してください。

図5-5に、最上位レベルのページ、「Benefits」(福利厚生)、「Careers」(キャリア)、「Payroll」(給与)および「Location」(場所)を含む単純な人事管理サイトの構造を示します。「Benefits」、「Careers」および「Location」の各ページには、複数の子ページがあります。

図5-5 ページ階層エディタ

ポータルを実行すると、この階層は図5-6に示すように表示されます。この例では、ナビゲーション・バーが表示されるデフォルトのページ・テンプレートが使用されています。このバーは、ページでタブのようなリンクとしてレンダリングされます。このナビゲーションUIは、ページ・テンプレートに追加されたため、そのテンプレートを使用するすべてのページに同様に表示されるようになります。デフォルトのナビゲーション・コンポーネント以外に、ナビゲーション・ツリー、ブレッドクラム、ページ・テンプレートへのナビゲーションUIのその他のスタイルなどを追加できます。多くの場合、テンプレートには2つ以上のナビゲーション・コンポーネントが含まれます。

ページ・テンプレートの詳細は、第5.6項「ポータルのルック・アンド・フィールの開発」を参照してください。デフォルトのナビゲーション・モデルおよびナビゲーション・モデルとユーザー・インタフェースの作成の詳細は、第10章「ナビゲーション・モデルの開発」を参照してください。

図5-6 ポータル・ナビゲーション・バー

ページ階層の詳細は、第74.6.2項「ページ階層の構築」を参照してください。

5.3.3 WebCenter Portal Frameworkページの保護

注意:

第6.5項「Frameworkアプリケーションのセキュリティはデフォルトでどのように構成されるか」も参照してください。

設計時に、ページ階層エディタでポータルのページにセキュリティを設定できます。前述のとおり、ページ階層ではページ間(親子)の構造的関係が定義されているため、子ページがその親のセキュリティ・ポリシーを継承できます。

注意:

ADFページ・セキュリティ・モデルまたは階層構造のWebCenter Portalページ・セキュリティ・モデルで、ページを保護できます。ページのページ階層への追加は、ページが階層セキュリティ・モデルにより保護されることを意味します。第74.6項「ページ階層セキュリティ・エディタの使用」も参照してください。

図5-7に示すように、ページ階層エディタにはページに対するロールベースのセキュリティ・ポリシーを指定できる「セキュリティ」セクションがあります。このセキュリティ・インタフェースによって、ポリシーを継承するか委任するかを決定できます。継承を指定すると、そのページのセキュリティ・ポリシーがその親ページから継承されます。セキュリティを委任すると、そのポリシーが親のセキュリティより優先され、セキュリティを継承しているすべての子ページにそのポリシーが伝播されます。

ヒント:

小さな南京錠のアイコンが横に表示されているページは、継承されたセキュリティの設定が上書きされます。つまり、委任されたセキュリティが指定されているページを示す際にこのアイコンが表示されます。

たとえば、図5-7では、管理者はページへの完全なアクセス権を持つ一方で、認証されたユーザーはページの表示とパーソナライズのみが可能となるよう、「Payroll」ページが構成されています。匿名ユーザーは、このページにはまったくアクセスできません。第5.3.4項「ナビゲーション・モデルおよびナビゲーション・レジストリの理解」で、ページへのセキュリティ・ポリシーの設定方法に応じて、ナビゲーションUIの表示も影響を受けることについて説明します。この例では、「Payroll」ページを使用できるのが管理者と認証されたユーザーのみであるため、ナビゲーションUIは認証されたユーザーと管理者にのみ「Payroll」ページへのリンクを表示します。その他のすべてのユーザーには、「Payroll」リンクは表示されません。

図5-7 「Payroll」ページのセキュリティ設定

5.3.4 ナビゲーション・モデルおよびナビゲーション・レジストリの理解

ナビゲーション・モデルとページ階層を区別することは重要です。最初に、ページ階層では、ページ間の親子関係を指定します。以前に説明したように、ページは1つ以上の子ページを保有できます。次に、ページ階層では、階層を縦断して親ページから子ページ(サブ・ページ)に継承されるセキュリティ・ポリシーを考慮します。ページ階層のみがページ間の関係を指定することに注意してください。タスク・フロー、ポートレットおよび外部リンクなどの他のリソースをページ階層に含めることはできません。

ページ階層では、管理者が大量のページを備えたポータルのセキュリティを容易に制御できるセキュリティ継承モデルが提供されます。たとえば、100ページのポータルの場合、ページ階層のルートにセキュリティ・ポリシーを指定すると、100ページすべてがそのポリシーを継承します。次に、ルートの下のページの設定を変更する場合、変更した設定がそのページのすべてのサブページに伝播します。また、継承された設定を無視して、階層の任意の場所にある個々のページにセキュリティ設定を適用することもできます。

それに対して、ナビゲーション・モデルはナビゲーションの構造を定義し、ナビゲーション・データを記録し、アプリケーションのビュー・レイヤーにそのデータを提供します。ページ階層はページのみで構成されているのに対して、ナビゲーション・モデルはタスク・フロー、ページ、外部リンクなどの多様なリソースで構成できます。

ここで重要なのは、ナビゲーション・モデルが制御する要素(ページ、リンク、タスク・フローなど)に適用されるセキュリティ・ポリシーをナビゲーション・モデルが認識している点です。認証されたユーザーに特定のページを表示する権限がない場合、デフォルトでは、ナビゲーション・モデルはそのページへのナビゲーション・リンクをすべて非表示にします。ポータルで定義されたセキュリティを備えていないリソース(外部リンクなど)には、開発者が手動で表示を制御する必要があります。それを実行する1つの方法として、リソースの表示を制御する(表示/非表示)際に、ページまたはページ・テンプレートにEL式を追加する方法があります。詳細は、第10章「ナビゲーション・モデルの開発」を参照してください。

たとえば、ポータル・ページにナビゲーションUIが含まれる場合、そのUIはナビゲーション・モデルに、ユーザーがどのページまたはその他の要素にナビゲートできるか、ポータルの現在のナビゲーション状態は何かなどについて問い合せます。最初の質問では、UIが表示できるリンクを通知します。2番目の問合せでは、そのリンクの表示方法をUIに通知します。ナビゲーション・ビューがツリーの場合、モデルはUIに現在選択されているページなどを通知します。これにより、ツリーUIは、開いているフォルダ、選択されたページなどとして、そのページを正確に表すノードを表示できます。

JDeveloperでは、ナビゲーション・エディタを使用してナビゲーション・モデルを変更します。エディタを開くには、図5-8に示すように、navigationsフォルダでdefault-navigation-model.xmlファイルをダブルクリックします。

図5-8 navigationsフォルダのコンテンツ

navigation-registry.xmlファイルは、ユーザーがナビゲーション・モデルを作成または編集する際にリソース・マネージャで使用します。レジストリは、作成または変更するモデルに含められるすべてのアイテムのスーパーセットを定義します。1つのアプリケーションに対して複数のナビゲーション・モデルを作成できますが、1つのアプリケーションが持つことのできるナビゲーション・レジストリ・ファイルは1つのみです。ナビゲーション・モデル、ナビゲーション・エディタおよびレジストリの詳細は、第10章「ナビゲーション・モデルの開発」を参照してください。

図5-9に示すように、デフォルトのナビゲーション・モデルには、「ページ階層」というノードが含まれています。デフォルトでは、このノードはpagehierarchyフォルダ内のデフォルトのページ階層ファイルpages.xmlを指します。このノードはナビゲーション・モデルにページ階層構造を参照するように指示し、ナビゲーションUIがレンダリングされるようにその構造をナビゲーションUIに伝えます。前述の図5-6に示されているように、デフォルトUIはページ階層をタブのようなリンクで表示します。このモデルが提供する情報により、各リンクにマウス・ポインタを置くとドロップダウン・メニューにサブページのリンクが表示されます。

図5-9 デフォルトのナビゲーション・モデル

ナビゲーション・モデルには数種類のナビゲーション要素を含めることができます。これまでの説明のとおり、モデルにはページ階層と単独ページの両方を含めることができます。また、外部Webページや特定のコンテンツへのリンクなど、その他の要素へのナビゲーションも作成できます。

図5-10 ナビゲーション・モデルへのリンクの追加

詳細は、第10章「ナビゲーション・モデルの開発」を参照してください。

5.3.5 リソース・カタログおよびカタログ・レジストリの理解

カタログでは、レイアウト・コンポーネント、タスク・フロー、ポートレット、ドキュメントなど、権限のあるユーザーが実行時に追加できる関連性のない他の要素グループの集まりを指定します。Oracle WebCenter Portalのコンポーザは、実行時にカタログを使用して、権限のあるユーザーがポータル・ページに追加できる要素を判別します。

Portal Frameworkアプリケーション・テンプレートには、デフォルトのリソース・カタログ(default-catalog.xml)およびカタログ・レジストリ・ファイル(catalog-registry.xml)が含まれています。これらのファイルは、oracle/webcenter/portalapp/catalogsにあります。

ユーザーが実行時にコンポーザを使用してページを編集すると、デフォルトのカタログ・ファイルは、ページに追加できるすべてのアイテムを指定します。カタログ・レジストリ・ファイルは、ユーザーがリソース・カタログを作成または編集する際にリソース・マネージャで使用します。レジストリは、作成または変更するカタログに含められるすべてのアイテムのスーパーセットを定義します。

1つのアプリケーションに対して複数のカタログを作成できますが、1つのアプリケーションが持つことのできるカタログ・レジストリ・ファイルは1つのみです。詳細は、第14章「リソース・カタログの開発」を参照してください。

開発時に、リソース・カタログ・エディタを使用して既存のカタログを編集できます。このエディタを開くには、図5-11に示すように、アプリケーション・ナビゲータのcatalogsフォルダ内にあるカタログ・ファイル(default-catalog.xmlなど)を開きます。

新規カタログを作成するには、「ファイル」メニューから「新規」を選択します。「新規ギャラリ」ダイアログで、「すべてのテクノロジ」タブを選択し、さらに「Web層」ノードの下の「ポータル・フレームワーク」を選択します。次に、「リソース・カタログ」を選択して「OK」をクリックします。「アプリケーション・リソース・カタログの作成」ダイアログを使用して、新規カタログを作成します。

ヒント:

リソース・カタログ・エディタを使用して、ナビゲーション・レジストリを編集することも可能です。

図5-11 catalogsフォルダの内容

図5-12にリソース・カタログ・エディタを示します。

図5-12 JDeveloperのリソース・カタログ・エディタ

図5-13に実行時管理ツールのリソース・カタログ・エディタを示します。

図5-13 実行時のリソース・カタログ・エディタ

たとえば、複数の部署のそれぞれに個別のカタログを作成できます。

ヒント:

個々のカタログ・エントリはユーザーのロールに基づいて表示/非表示にできます。

5.4 WebCenter Portal Frameworkアプリケーション・ファイルの編成

Portal Frameworkアプリケーション・ウィザードを実行すると、大量のプロジェクト・アーティファクトが構成され、プロジェクト・ディレクトリにインストールされます。JDeveloperは、アプリケーション・ナビゲータでプロジェクトの合理化されたビューを提供します。ポータル・プロジェクトは、ファイルシステムで直接確認することもできます。

- 第5.4.1項「WebCenter Portal Frameworkアプリケーションの編成の理解」

- 第5.4.2項「ファイルシステムでのポータル・プロジェクトの表示」

- 第5.4.3項「JDeveloperでのポータル・プロジェクトの表示」

- 第5.4.4項「アプリケーション・ナビゲータでの非表示ファイルの表示」

5.4.1 WebCenter Portal Frameworkアプリケーションの編成の理解

この項では、Portal Frameworkアプリケーションの編成方法とその理由について説明します。

5.4.1.1 WebCenter Portal Frameworkアプリケーションの編成方法

JDeveloperで新しいPortal Frameworkアプリケーションを作成すると、自動的に大量のファイルがプロジェクトに配置されます。JDeveloperの「アプリケーション・ナビゲータ」ビューに、編成されたこれらのファイルが表示されます。

アプリケーション・ナビゲータを見て最初に気付くのは、Frameworkアプリケーションが2つのプロジェクトで構成されている点です。1つ目は、(デフォルトで)Portalと呼ばれます(図5-14)。この名前は、アプリケーションの作成時やその後いつでも変更できます。プロジェクト内のファイルは、ほとんどが<application_root>/<project_root>/public_html/oracle/webcenter/portalappディレクトリにあります。

2つ目のプロジェクトはPortalWebAssetsと呼ばれます。このプロジェクトには、HTMLファイルやイメージ・ファイルのような静的アプリケーション・リソースが含まれます。静的リソースを個々のプロジェクトに分離することによって、これらのリソースを専用サーバーにデプロイすることが可能となります。詳細は、第6.4項「PortalWebAssetsプロジェクトの理解」を参照してください。

図5-14 アプリケーション・ナビゲータのWebCenter Portal Frameworkアプリケーション

5.4.1.2 WebCenter Portal Frameworkアプリケーションがこのように編成される理由

アプリケーション内に保存されているファイル間における次の違いを理解することは重要です。

注意:

XMLファイルなどの一部のファイルはpublic_htmlで見つけることはないため、このような区別を把握しておくことが重要です。(標準Webアプリケーションでは、このディレクトリ下のほとんどのファイルは、アプリケーションをデプロイするとすぐに、ブラウザから直接URLでアクセスできるためです。)開発者は、ポータル・ファイルでこの特定の構造が必要になることに注意する必要があります。他の場所でポータル・アーティファクトを作成しないでください。

- <application_root>/<project_root>/public_html/oracle/webcenter/portalappディレクトリに格納されたファイルの特徴は次のとおりです。

- メタデータ・サービス(MDS)リポジトリにデプロイされます。

- ポータル・リソースとして登録でき、実行時にリソース・マネージャで管理できます。

- 通常、WebCenterの権限を使用して保護されます(ポータル・リソースの場合)。

- <application_root>/<project_root>/public_htmlの他の場所に格納されたファイルの特徴は次のとおりです。

- アプリケーションWARファイルにデプロイされます。

- ポータル・リソースとして登録できないため、リソース・マネージャで管理できません。

- アーティファクトのネイティブの権限クラスで保護されます。

Portal Frameworkアプリケーションがこのように構造化されているため、自分のページを作成する際に十分な情報を得た上で決定できるということを理解することが重要です。場合によっては、特にJSPXページを使用して、oracle/webcenter/portalappでページを作成しないことがあります。それは、アプリケーションでのページの使用目的に応じて変わります。

5.4.2 ファイルシステムでのポータル・プロジェクトの表示

プロジェクト・ファイルをファイル・システムに配置する最も簡単な方法は、アプリケーション・ナビゲータでファイルまたはフォルダを選択し、「編集」メニューから「パスのコピー」を選択します。この機能では、ファイルやフォルダへのパスがクリップボードに配置されるので、それをコマンド・シェルやファイル・ブラウザに貼り付けられます。

図5-15にサンプルPortal Frameworkアプリケーションのファイルシステムの編成を示します。プロジェクトのファイルの多くは、public_htmlフォルダの下に編成されます。

図5-15 ファイルシステム上のWebCenter Portal Frameworkアプリケーションの例

見てわかるように、JDeveloperでは多少異なる、より合理化されたビューが提供されます。詳細は、次の第5.4.3項「JDeveloperでのポータル・プロジェクトの表示」を参照してください。

5.4.3 JDeveloperでのポータル・プロジェクトの表示

JDeveloperのプロジェクト・ビューでは、開発者が使用しそうなプロジェクト・ファイルが表示されます。これらのファイルには、ページ、ページ階層、ナビゲーション・モデル、ページ・テンプレート、カタログ、XML構成ファイル、Javaソース・ファイル、イメージなどがあります。

JDeveloperでは、ポータル・プロジェクトは図5-16に示すように、「アプリケーション・ソース」および「Webコンテンツ」の2つのフォルダに編成されます。

図5-16 JDeveloperでのポータル・プロジェクトの編成

「アプリケーション・ソース」フォルダは、主に、ソース・コードおよびページ定義ファイルのリポジトリです。アプリケーションに対して記述するJavaクラスの他に、「アプリケーション・ソース」に含まれる内容は次のとおりです。

- oracle.webcenter.portalapp: ページ、ページ・テンプレート、ページ・カタログ、ナビゲーションのXML定義ファイルが格納されています。ページ定義ファイルは、ADFバインディング、ページ・パラメータおよび権限の設定を指定します。たとえば、ページ定義ファイルはページの親および子ページがある場合、それらを指定します。また、ページで許可されている操作などの、セキュリティ・ポリシー情報も指定します。デフォルトのページ定義ファイルは、ポータルのページをページ階層に追加すると、自動的に作成されます。

- portal: リソース・バンドル、ソース・コードおよびその他のJavaアーティファクトが含まれます。

- META-INF: データ・バインディングとページ・テンプレート・メタデータを指定するファイルが格納されています。

「Webコンテンツ」フォルダには、ページ、ページ階層、ナビゲーション・モデルなどWebプロジェクトを構成するすべてのファイルが格納されています。これらは、Portal Frameworkアプリケーションを開発する際に積極的に作成および変更できるファイルです。

図5-17は、「Webコンテンツ」フォルダの基本的な構造を示しています。作成および変更するファイルの多くは、oracle/webcenter/portalappサブ・フォルダに格納されています。フォルダの内容(カタログ、ナビゲーション、ページ階層、ページ、スキンおよびページテンプレート)により、ポータルの基本的なコンポーネントが構成されます。これらのポータル・コンポーネントの詳細は、第5.4.1項「WebCenter Portal Frameworkアプリケーションの編成の理解」を参照してください。

図5-17「Webコンテンツ」フォルダ

ヒント:

アプリケーション・ナビゲータでローカルのファイル・システムの階層を表示するには、「プロジェクト」パネルの「ナビゲータの表示オプション」アイコンをクリックして「ディレクトリでグループ化」を選択します。

PortalWebAssetsプロジェクトには、HTMLやイメージ・ファイルのような静的アプリケーション・リソースが含まれます。静的リソースを個々のプロジェクトに分離することによって、これらのリソースを専用サーバーにデプロイすることが可能となります。詳細は、第6.4項「PortalWebAssetsプロジェクトの理解」を参照してください。

5.4.4 アプリケーション・ナビゲータでの非表示ファイルの表示

デフォルトでは、複数のファイルがアプリケーション・ナビゲータのビューから除外されています。これらのファイルが除外されているのは、ファイルを編集する必要がほとんどないためです。ただし、そのようなファイル編集を行うユース・ケースがいくつかあるため、ファイルをJDeveloper UIに追加しなおせるようにしておく必要があります。

除外されたファイルを配置するには:

1. プロジェクト・フォルダを右クリックし、メニューから「プロジェクト・プロパティ」を選択します。

2. 「プロジェクト・プロパティ」ダイアログで、「プロジェクトのソース・パス」ノードの「Webアプリケーション」を選択します。

3. 図5-18に示すように、「除外」タブを選択します。

図5-18 「除外」タブ

4. 除外リストから要素を選択し、「削除」をクリックして除外リストから削除します。これで、目的の要素がアプリケーション・ナビゲータの該当するフォルダに自動的に追加されます。

例では、navigation-renderer.jspxファイルを使用して、ページ・テンプレートに即してリソースをレンダリングします。外部URLをページ内で表示する方法を変更する場合、まず除外リストからnavigation-renderer.jspxを削除すると、アプリケーション・ナビゲータのpagesフォルダの下にこれが表示されるようになります。次に、そのページを開き、必要に応じて編集します。

5.5 ポータルのライフ・サイクルについて

ポータルのライフ・サイクルとは、開発からステージング、テストを経て本番サーバーまでのポータルを作成する過程のことです。このライフ・サイクルには、ソフトウェア開発者、コンテンツ・モデラー、コンテンツ・コントリビュータ、IT管理者、ポータル・サイト管理者などの多くの人々が関与します。ポータル・ライフ・サイクルの全ステージの管理の詳細は、第8章「WebCenter Portal Frameworkアプリケーションのライフ・サイクルの理解」を参照してください。

5.6 ポータルのルック・アンド・フィールの開発

バナー、ナビゲーション、フッターなどコンテンツ領域周りの特定の表示要素を追加して、ルック・アンド・フィールを設計できます。ポータル構造に適したルック・アンド・フィールを決めると、その設定をページ・テンプレートとして保存して、ポータル作成時に使用できます。さらに、同じ設定をポータル内のページ全体で使用できます。ページ・テンプレートとページ・スタイルを使用すると、ポータル内のページがある程度統一できます。第11章「ページ・テンプレートの開発」を参照してください。

ポータルのカスタム・スキンも開発できます。スキンはCSS 3.0構文に基づくスタイルシートで、アプリケーション全体用に1箇所で指定されます。アプリケーションの各コンポーネントに対してスタイルシートを用意したり、各ページにスタイルシートを挿入するのではなく、アプリケーション全体に対して1つのスキンを作成できます。各コンポーネントで自動的に、スキンで記述されているスタイルが使用されます。スキンを使用すると、外観を変更するために、設計時にポータル・ページを変更する必要がなくなります。第13章「スキンの開発」を参照してください。

基本的なルック・アンド・フィールの設計は設計時にJDeveloperで作成できますが、管理者や適切なアクセス権限を持つユーザーはリソース・マネージャを使用して、アプリケーションがデプロイされた後もポータルのルック・アンド・フィールの開発を続行できます。たとえば、リソース・マネージャを使用して、ページの追加と削除、ナビゲーション・ユーザー・インタフェースの追加、ページ・テンプレート、スキンおよびページ・スタイルの変更などを実行できます。これらおよびその他のリソース・マネージャ機能の詳細は、第15章「ページの作成とリソースの追加」を参照してください。

5.7 デフォルトのポータル・プリファレンスの変更

Portal Frameworkアプリケーションには、ポータルの特定のデフォルト・コンポーネントを指定する一連のプリファレンスが用意されています。この項では、そのプリファレンスとデフォルト値の変更方法について説明します。

5.7.1 デフォルトのポータル・プリファレンスについて

表5-1に、ポータルのプリファレンスとそのデフォルト構成ファイルを示します。

表5-1 デフォルト・プリファレンス

プリファレンス

デフォルト設定

ナビゲーション・モデル

/oracle/webcenter/portalapp/navigations/default-navigation-model.xml

リソース・カタログ

/oracle/webcenter/portalapp/catalogs/default-catalog.xml

ページ・テンプレート

/oracle/webcenter/portalapp/pagetemplates/pageTemplate_globe.jspx

ナビゲーション・レンダラ

/oracle/webcenter/portalapp/pages/navigation-renderer.jspx

スキン

portal

5.7.2 JDeveloperでデフォルトのプリファレンスを変更する方法

JDeveloperでデフォルトのプリファレンスを変更するには、直接adf-config.xmlファイルを編集します。このファイルをJDeveloperで見つけるには、アプリケーション・ナビゲータの「アプリケーション・リソース」部分を開きます。次に、図5-19に示すように、「ディスクリプタ」フォルダおよびADF META-INFフォルダを開きます。

図5-19 JDeveloper内でのadf-config.xmlファイルの場所

たとえば、デフォルトのナビゲーション・モデル・ファイルを変更するには、このプリファレンスの値を編集します。

<portal:preference id="oracle.webcenter.portalapp.navigation.model"
desc="Default Navigation Model"
value="/oracle/webcenter/portalapp/navigations/default-navigation-model.xml"
resourceType="navigation" display="true"
/>

プリファレンスは、実行時にも、「管理」ページの「構成」タブで変更できます。このページから、ランタイム・アプリケーションのデフォルトのページ・テンプレート、スキン、リソース・カタログおよびナビゲーション・コンポーネントを構成できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理Portal Frameworkアプリケーションのデフォルトの構成に関する項を参照してください。

5.8 反復およびラウンドトリップ開発手法の使用方法

反復開発とは、開発プロセスを促進できる生産性の機能のことです。反復開発では、統合WebLogic ServerでPortal Frameworkアプリケーションを実行しながら、JDeveloperでこのアプリケーションに変更を加えて保存し、ブラウザの現在のページをリフレッシュするだけで、その変更の効果を確認できます。Frameworkアプリケーションでは、反復開発機能はデフォルトで有効になっています。Portal Frameworkアプリケーションでの反復開発機能の有効化については、第2.3.1項「Portal Frameworkアプリケーションでの反復開発の準備」を参照してください。第8.7項「反復開発の理解」も参照してください。

ラウンドトリップ開発とは、メンテナンスや拡張のため、デプロイされた実行時ポータルからJDeveloperにリソースを戻すことができる機能および技法です。JDeveloperでリソースを編集した後、リソース・マネージャを使用して、デプロイされたポータルにリソースをアップロードし直すことができます。WebCenter Portalのラウンドトリップ開発機能は、アプリケーション全体を再度デプロイすることなくポータル・リソースを変更する、簡単で便利な方法を提供します。

5.9 ポータルの実行およびテスト

JDeveloperには、JDeveloperにおいてテスト目的で統合WebLogic ServerのPortal Frameworkアプリケーションを実行する方法がいくつか用意されています。

- アプリケーション・マネージャでポータルのプロジェクト名を右クリックして、図5-20に示すように「実行」を選択します。サーバーが稼働していない場合、この操作でサーバーが起動し、アプリケーションが(再)デプロイされます。

ヒント:

デフォルトのポータル・ホーム・ページを変更できます。詳細は、第5.11項「デフォルトのホーム・ページおよびログイン/ログアウト・ターゲット・ページの変更」を参照してください。

図5-20 ポータルの実行

- アプリケーション・マネージャのページ・フォルダにあるページを右クリックして、図5-21に示すように「実行」を選択します。サーバーが稼働していない場合、この操作でサーバーが起動し、アプリケーションが(再)デプロイされ、選択したページが表示されます。

図5-21 ページの実行

- 「実行」メニューから、「<portal name>の実行」を選択しても、ポータルを実行できます。

5.10 実行時のWebCenter Portal Frameworkアプリケーション

Oracle WebCenter Portal Frameworkには、多くの興味深い実行時機能が用意されています。実行時機能とは、ブラウザからアクセスできる機能のことです。

- 第5.10.1,項「統合WebLogic Serverでの実行時カスタマイズの保持」

- 第5.10.2項「ブラウザベースのWebCenter Portal管理コンソール」

- 第5.10.3項「セキュリティ設定の実行時ポータルへの影響」

- 第5.10.4項「ブラウザベースのツールを使用したポータル・リソースの編集」

5.10.1 統合WebLogic Serverでの実行時カスタマイズの保持

統合WebLogic Serverを開発環境(JDeveloperを介してポータルを実行)で使用する場合、デフォルトでは実行時(リソース・マネージャを使用)のポータルに対する変更は再デプロイメントの際に破棄されます。たとえば、リソース・マネージャを使用してページに対する資格の追加、レイアウトの変更、ナビゲーション・モデルの変更などを実行した場合、その変更はアプリケーションを次に再デプロイしたときに保持されません。リソース・マネージャの詳細は、第15章「ページの作成とリソースの追加」を参照してください。

注意:

この項の情報は、開発環境で統合WebLogic Serverとともに実行するポータルに対してのみ適用されます。ポータルを本番環境にデプロイする際には、実行時の変更が破棄されることはありません。

注意:

JDeveloper環境で作業する開発者の便宜を考慮して、カスタマイズはデフォルトでは保持されません。実行時にファイルを変更すると、新しいバージョンのファイルがMDS書込みディレクトリに書き込まれます。すると、この新規バージョンが、JDeveloper内で最優先バージョンとなります。その時点で、JDeveloperで設定を変更し、ブラウザをリフレッシュしても、変更は表示されません。したがって、JDeveloperで作業する際には、実行時のカスタマイズを保持しない方が便利で自然です。

デフォルトの動作を変更し、実行の間に実行時のカスタマイズを保持することは可能です。たとえば、特定のテスト用シナリオを有効にする際に、そのようにできます。アプリケーションのデプロイメント(実行)間にカスタマイズを保持できるようにするには:

1. 「アプリケーション」メニューから、「アプリケーション・プロパティ」を選択します。

2. 「アプリケーション・プロパティ」ダイアログで、「実行」ノードの下の「MDS」を選択します。

3. 「ディレクトリ・コンテンツ」で、「アプリケーションの実行間でカスタマイズを維持」を選択し、デフォルト(各実行前にカスタマイズが破棄される)を無効にします。図5-22を参照してください。

図5-22 「アプリケーションの実行間でカスタマイズを維持」の選択

5.10.2 ブラウザベースのWebCenter Portal管理コンソール

WebCenter Portal Frameworkアプリケーションには、リソース、サービス、セキュリティおよびポータルの構成について作業できるWebCenter Portal管理コンソールが含まれています。WebCenter Portal管理コンソールは、URL (http://<server>:<port>/<context_root>/admin)にあり、図5-23に示されています。

図5-23 WebCenter Portal管理コンソール

ヒント:

WebCenter Portal管理コンソールのデフォルトのURLを変更するには、web.xmlファイル内の<servlet-mapping>要素の<url-pattern>属性を編集します。デフォルトの<url-pattern>はadminですが、必要に応じて別のものに変更できます。

「リソース」タブ(リソース・マネージャ)の詳細は、第5.10.4項「ブラウザベースのツールを使用したポータル・リソースの編集」および第15章「ページの作成とリソースの追加」を参照してください。セキュリティの詳細は、第74章「WebCenter Portal Frameworkアプリケーションの保護」を参照してください。

5.10.3 セキュリティ設定の実行時ポータルへの影響

ロール・ベースのセキュリティ・ポリシーは、ビジターが表示および操作(作成、削除、更新など)できるページ、リソースおよびナビゲーション要素を制御します。設計時(JDeveloper)ページ・エディタでは、第5.3.3項「WebCenter Portal Frameworkページの保護」で説明するように、ページまたはページ階層でこれらのポリシーを設定できます。Oracle WebCenter Portal Frameworkでは、次の方法でこれらのセキュリティ・ポリシーを順守します。

- ページ(およびタスク・フローなどその他の特定のリソース)は、表示する権限を持つユーザーのみに表示されます。同じ原理が、権限付与、作成、削除、更新、パーソナライズなど、ユーザーがページ上で実行できる操作に対して保持されます。

- リソース(ページ、タスク・フローなど)へのナビゲーションは、認証ユーザーがそのページを使用できない場合、非表示になります。たとえば、「Payroll」ページへのアクセスが許可されていないユーザーの場合、そのページへのリンクはすべてのナビゲーション・ユーザー・インタフェースで表示されません。

- リソース・カタログ内で使用できるリソースは、セキュリティ・ポリシーに応じて調整されます。タスク・フローなどの特定のリソースに対するアクセス権を持たないユーザーの場合、そのリソースはリソース・カタログに表示されません。

5.10.4 ブラウザベースのツールを使用したポータル・リソースの編集

WebCenter Portal管理コンソールには、次のようなポータル固有の機能を実行時に使用可能にする「リソース」タブが表示されます。

- ページ

- ページ・テンプレート

- ナビゲーション・モデル

- リソース・カタログ

- スキン

- ページ・スタイル

- コンテンツ・プレゼンタ表示テンプレート

- マッシュアップ・スタイル

- データ・コントロール

- タスク・フロー

ポータル・ユーザーは、リソース・マネージャを使用して、リソースまたはアプリケーション全体を実行時環境からダウンロードし、JDeveloperで編集して、デプロイ済アプリケーションにアップロードして戻すこともできます。

リソース・マネージャの「ソースの編集」機能により、ランタイム・アプリケーションでリソースのソース・コードを編集できます。たとえば、ポータル・リソース(ページ・テンプレートなど)をアップロードすると、リソース・マネージャで直接それを編集できます。それには、リソースを選択して「編集」メニューから「ソースの編集」を選択します。図5-24に示すように、ソース編集ウィンドウが表示されます。

注意:

default-navigation-modelなどの一部のリソースは編集できません。これらのリソースを編集するには、まずコピーし、そのコピーを編集します。

図5-24 実行時のページ・テンプレート・ソース・ファイルの編集

5.11 デフォルトのホーム・ページおよびログイン/ログアウト・ターゲット・ページの変更

oracle/portalapp/pages/home.jspxファイルは、新しいPortal Frameworkアプリケーションのデフォルトのホーム・ページです。この項では、デフォルトのホーム・ページを別のページ、またはURL、ポートレット、タスク・フローなどのナビゲート可能なリソースに変更する方法を説明します。

- 第5.11.1項「ホーム・ページの指定方法の理解」

- 第5.11.2項「デフォルトのホーム・ページの変更方法」

- 第5.11.3項「デフォルトの索引ページの指定方法」

- 第5.11.4項「ログインまたはログアウト後のターゲット・ページの指定」

5.11.1 ホーム・ページの指定方法の理解

デフォルトのPortal Frameworkアプリケーションには、index.htmlファイルがあり、これはポータル・プロジェクト・ディレクトリに格納されています。この索引ファイルには、次のリダイレクト文が記述されています。

<meta http-equiv="refresh" content="0;url=./faces/wcnav_defaultSelection" />

注意:

index.htmlのリダイレクト文は、期待するページではなく、ポータル・ナビゲーション・モデルを参照します。リダイレクトがナビゲーション・モデルを指しているため、currentSelection属性が適切に設定され、現在の選択項目がユーザー・インタフェースで強調表示されます。

URL要素pages_homeは、ページ階層で指定された"home"ページを参照します。(一意のIDとなるように、接頭辞"pages_"をフォルダ名に追加します。)図5-25に示すように、「ナビゲーション」ダイアログで「フォルダの内容の挿入」チェック・ボックスが選択されています。「フォルダの内容の挿入」オプションにより、指定されたフォルダ(この場合、"home")がフォルダの内容に置換されます。したがって、この例では、ポータルはページ階層内の"home"というフォルダを検索します。また、ページ階層はナビゲーション・モデルでは要素として指定されます。

デフォルトのポータル・ホーム・ページの指定方法を理解できるよう、ナビゲーション・モデルではデフォルトでpagesというデフォルト・ノードが作成されます。このノードのナビゲーション・パスは、図5-25に示すように、ページ階層ファイルのpages.xmlを指しています。

図5-25 デフォルトのナビゲーション・モデル

pages.xmlへのナビゲートの際、homeというノードが検索されます。そのノードのパスは、図5-26に示すように、/oracle/webcenter/portalapp/pages/home.jspxです。

図5-26 デフォルトのページ階層

5.11.2 デフォルトのホーム・ページの変更方法

デフォルトのホーム・ページを変更するには、index.htmlのリダイレクト文をナビゲーション・モデルで参照される別のリソースのプリティURLに変更します。たとえば、新しいホーム・ページを作成してそれを共通のユース・ケースにリダイレクトするとします。新しいホーム・ページを自分のホーム・ページに指定するには、index.htmlのリダイレクトを新しいページのプリティURLに変更します。(ページのリンク要素を作成するには、ナビゲーション・モデルで新しいページをドラッグします。)たとえば、ナビゲーション・モデルのリンクIDがTheHomePageの場合には、次のようにします。

<meta http-equiv="refresh" content="0;url=./faces/wcnav_defaultSelection" />

ここで、.faces/wcnav_defaultSelectionはプリティURLであり、これはナビゲーション・モデルで定義したリンク要素を指します。

図5-27 新しいホーム・ページ要素によるナビゲーション・モデル

この例では、ブラウザでのポータルへのアクセスは次のURLを使用します。

http://myserver:myport/MyPortalApp-Portal-context-root

図5-28に示すように、このポータルでは新しいホーム・ページからのコンテンツが記載されたホーム・ページがレンダリングされています。

図5-28 ポータル・ホーム・ページのコンテンツとして表示されたOracle Webサイト

5.11.3 デフォルトの索引ページの指定方法

統合Weblogic Serverのインスタンスのデフォルト索引ページは、index.htmlです。新しいポータル・プロジェクトには、Web Contentフォルダにデフォルトでこのファイルが含まれています。

デフォルト索引ファイルのindex.htmlを別のファイルに変更する場合、2つの選択肢があります。このデフォルト索引ファイルを変更する1つの方法では、次のようにweb.xmlファイルの<welcome-file-list>要素を編集します。

<welcome-file-list>
<welcome-file>/index.html</welcome-file>
</welcome-file-list>

あるいは、「実行構成の編集」の「デフォルト」ダイアログ・ボックスを使用してデフォルトの索引ページを変更する方法もあります。このダイアログにアクセスするには、プロジェクトのプロパティ・ダイアログを開き、「実行/デバッグ/プロファイル」オプションを選択します。「編集」をクリックして、図5-29に示すように、デフォルトの索引ページを変更できる、「実行構成の編集」の「デフォルト」ダイアログを表示します。

図5-29 「実行構成"Default"の編集」ダイアログ

5.11.4 ログインまたはログアウト後のターゲット・ページの指定

ログインまたはログアウト後にターゲット・ページを指定するには、例5-1に示すように、ポータル・プロジェクトのWebContent/WEB-INF/faces-config.xml構成ファイルで<navigation-rule>要素を編集します。ターゲット・ページを別のナビゲーション・リソースのプリティURLまたはFacesページに変更できます。

例5-1 ログインおよびログアウトに対するターゲット・ページの指定

<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>login_success</from-outcome>
<to-view-id>/pages_home</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>logout_success</from-outcome>
<to-view-id>/pages_home</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>

たとえば、ログアウト後のページにユーザーをリダイレクトするには、次の手順に従います。

1. ログアウト後のページを作成して、それにコンテンツを追加します。例:

/oracle/webcenter/portalapp/pages/postlogout.jspx

2. faces-config.xmlのナビゲーション・ルールを変更します。例:

<navigation-case>
<from-outcome>logout_success</from-outcome>
<to-view-id>/oracle/webcenter/portalapp/pages/postlogout.jspx</to-view-id>
<redirect/>
</navigation-case>

正常なログアウト後に、ユーザーは指定されたページにリダイレクトされます。

5.12 基本的なポータル開発タスク

この項では、Portal Frameworkアプリケーションの開発に関係する基本的なタスクの一部を示します。

- ソース・コントロール、共通データベースおよび共通コンテンツ・リポジトリを使用して、統合チーム開発環境を設定します。

- WebCenter Portal Frameworkアプリケーション・テンプレートを使用して、Portal Frameworkアプリケーションを作成します。

- ポータルを構成する最上位ページおよびサブ・ページの概要を作成して、ポータルの構造全体を設計します。

- ポータルのセキュリティを考慮します。ユーザーにアクセスを許可するページを決定します。これらの決定に対応する適切なロールを作成します。

- ポータル全体のルック・アンド・フィールについての検討を開始し、ページ・テンプレートで作業を開始します。

- ポータルに含めるWebCenter Portalの機能を検討します。たとえば、Wiki、ブログ、アクティビティ・ストリームなどを追加するかどうかを検討します第4.1項「WebCenter Portalのツールとサービスの理解」を参照してください。

- ポータル全体の構造に基づいてページを作成します。この時点ではページは空白ですが、ページを作成するとページ階層を作成できるようになります。

- ページ階層エディタを使用して、ページ階層を作成します。

- ナビゲーション・モデルを作成します。ユーザーがナビゲートできるリソースの種類を検討します。たとえば、ページ、外部URL、タスク・フロー、コンテンツ・フォルダなどについて検討します。

- ナビゲーションUIをページ・テンプレートに追加します。Oracle WebCenter Portal Frameworkでは、ナビゲーションUIの複数のオプションが用意されています。最も一般的に使用されるオプションは、ページ・テンプレートで直接ELを使用するというものです。また、WebCenterにはナビゲーション・タスク・フローおよびナビゲーション用Java APIが用意されています。

- ページ階層にセキュリティ・ポリシーを適用します。階層のルート・ノードにポリシーを適用して開始します。これらのポリシーは、階層内のすべてのページに継承されます。次に、個々のページまたは階層全体のサブブランチでセキュリティ設定を調整します。

- ページ自体に対し、ポートレット、タスク・フロー、コンテンツ、その他の機能の追加および構成を行います。

6 WebCenter Portal Frameworkアプリケーションの作成

この章では、新しいWebCenter Portal Frameworkアプリケーションの作成方法について、およびJDeveloperにおけるPortal Frameworkアプリケーション・ワークスペースの編成と内容について説明します。

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

- 第6.1項「新しいWebCenter Portal Frameworkアプリケーションの作成」

- 第6.2項「WebCenter Portal Frameworkアプリケーション・テンプレートの理解」

- 第6.3項「ポータルの構築」

- 第6.4項「PortalWebAssetsプロジェクトの理解」

- 第6.5項「Frameworkアプリケーションのセキュリティはデフォルトでどのように構成されるか」

- 第6.6項「知識が必要な構成ファイル」

- 第6.7項「アプリケーション・ナビゲータでの除外ファイルの追加」

- 第6.8項「ポータルの保護」

6.1 新しいWebCenter Portal Frameworkアプリケーションの作成

この項では、WebCenter Portal Frameworkアプリケーションの作成ウィザードを使用して新しいポータルを作成する方法について説明します。

1. アプリケーションの作成ウィザードにアクセスします。JDeveloperでは、いくつかの方法でこのウィザードにアクセスできます。例:

- 「ファイル」メニューから「新規」を選択します。「新規ギャラリ」ダイアログで、「アプリケーション」を開き、「WebCenter Portal Frameworkアプリケーション」を選択して「OK」をクリックします。たとえば、図6-1を参照してください。

注意:

「WebCenter Portal Frameworkアプリケーション」を選択すると、アプリケーション・テンプレートが選択され、これによってアプリケーションに事前に定義されたプロジェクトおよびファイルのセットが移入されます。このテンプレートの詳細は、第6.2項「WebCenter Portal Frameworkアプリケーション・テンプレートの理解」を参照してください。

図6-1 「新規ギャラリ」ダイアログ

- 「アプリケーション」メニューから、「新規作成」を選択します。ダイアログで、「WebCenter Portal Frameworkアプリケーション」を選択します。

- 開いている既存のアプリケーションがある場合は、アプリケーション・ナビゲータで「<Application-Name>」を右クリックして、「新規作成」を選択します。「新規ギャラリ」ダイアログで、「アプリケーション」を開き、「WebCenter Portal Frameworkアプリケーション」を選択して「OK」をクリックします。

- 開いている既存のアプリケーションがある場合は、アプリケーション・ナビゲータで、「<Application-Name>」ドロップダウン・メニューから「新規アプリケーション」を選択します。「新規ギャラリ」ダイアログで、「アプリケーション」を開き、「WebCenter Portal Frameworkアプリケーション」を選択して「OK」をクリックします。

注意:

この時点では、WebCenter Portal Frameworkアプリケーションの作成ウィザードの最初のページが表示されています。このウィザードには、次の各手順で説明する5つのページがあります。

2. アプリケーションの名前を「アプリケーション名」フィールド(図6-2)に入力します。

図6-2 WebCenter Portal Frameworkアプリケーションの作成ウィザード - ステップ5の1

3. 「ディレクトリ」フィールドにアプリケーションを格納するディレクトリのパスを入力するか、デフォルト・パスを受け入れます。
例:

C:\JDeveloper\mywork\Application1

オプションで、「参照」ボタンをクリックして、目的のディレクトリに移動します。

4. 必要に応じて、「アプリケーション・パッケージの接頭辞」フィールドに、このアプリケーション内に作成されるパッケージに使用する接頭辞を入力します。

注意:

ウィザードの起動方法によっては、「アプリケーション・テンプレート」リストが表示されることがあります。このリストが表示された場合は、「WebCenter Portal Frameworkアプリケーション」が選択されていることを確認してください。

ヒント:

この時点で、「終了」をクリックすると、デフォルトのFramework機能(ページ階層とナビゲーションを含む)でプロジェクトを作成できます。ここでは、このウィザードの残りのページについて説明を続けます。

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

6. 図6-3に示すように、プロジェクト名を入力します。

図6-3 WebCenter Portal Frameworkアプリケーションの作成ウィザード - ステップ5の2

7. プロジェクトを配置するディレクトリを入力するか、「参照」ボタンを使用してディレクトリを選択します。

8. 必要に応じて、「生成済コンポーネント」タブおよび「関連ライブラリ」タブを選択して、プロジェクトに追加される別の構成ファイルおよびライブラリを確認します。詳細は、第6.6項「知識が必要な構成ファイル」を参照してください。

9. 「次へ」をクリックします。

10. 必要に応じて、図6-4に示すように、デフォルト・パッケージの名前、およびJavaソース・ファイルと出力クラス・ファイルのデフォルトのディレクトリを入力します。

図6-4 WebCenter Portal Frameworkアプリケーションの作成ウィザード - ステップ5の3

11. ウィザードの次のページには、図6-5に示すように、2つのチェック・ボックスがあります。通常はデフォルトの設定が推奨されますが、次に示す「注意」でこのウィザード・ページの詳細を確認してください。

図6-5 WebCenter Portal Frameworkアプリケーションの作成ウィザード - ステップ5の4

注意:

Oracle WebCenter Portal Frameworkの機能(ページ階層やナビゲーション)をアプリケーションに組み込む場合は、最初のチェック・ボックス(「標準ポータル機能のアプリケーションの構成」)を選択したままにします。このチェック・ボックスの選択を解除すると、Framework機能を含まない従来型のOracle Fusion Webアプリケーションを作成することになります。

Oracle WebCenter Portal Frameworkの機能を使用する必要のないことが確実にわかっている場合を除き、最初のチェック・ボックスは選択したままにすることをお薦めします。

2番目のチェック・ボックス(「すべてのオブジェクトへの自動付与の有効化」)を使用すると、すべてのタスク・フローとページに対する表示アクセス権のあるtest-allという特殊なロールを作成できます。このオプションは、主にアプリケーションのテストを簡単にするために追加します。デフォルトでは、選択解除されています。

12. 「次へ」をクリックします。

13. 最後のウィザード・ページでは、静的アプリケーション・リソース・プロジェクトを構成できます。このプロジェクトは、デフォルトで、PortalWebAssetsと呼ばれます。このプロジェクトには、HTMLファイルやイメージ・ファイルのような静的アプリケーション・リソースが含まれます。静的リソースを個々のプロジェクトに分離することによって、これらのリソースを専用サーバーにデプロイすることが可能となります。詳細は、第6.4項「PortalWebAssetsプロジェクトの理解」を参照してください。

図6-6 WebCenter Portal Frameworkアプリケーションの作成ウィザード - ステップ5の5

14. 「終了」をクリックして、WebCenter Portal Frameworkアプリケーションを作成します。

6.2 WebCenter Portal Frameworkアプリケーション・テンプレートの理解

WebCenter Portal Frameworkアプリケーションに適したコンポーネントを簡単に見つけて使用できるようにするには、適切なテクノロジ・スコープを設定し、タグ・ライブラリを追加して、必要になるJavaクラスをクラス・パスに追加しておく必要があります。このようにしておくと、関連するコンポーネントがコンポーネント・パレットに取り込まれ、関連するポップアップ・メニューがJDeveloperで使用できるようになります。

Oracleが提供する即時利用可能なアプリケーション・テンプレートでは、WebCenter Portal Frameworkアプリケーションの作成に向けた、適切なスコープが設定され、適切なタグおよびJavaのライブラリが追加されます。

WebCenter Portal Frameworkアプリケーション・テンプレートでは、アプリケーションにポータル・プロジェクトおよび静的アプリケーション・リソース・プロジェクトが移入されます。ポータル・プロジェクトには、サイト・ナビゲーション、ページ階層、委任管理、セキュリティ、ページ・テンプレート、実行時カスタマイズなどの機能が含まれます。Frameworkアプリケーションは、ポートレットの利用、コンテンツ管理サービスの組込み、およびWebCenterソーシャル・コンピューティング・サービスの組込みが可能です。静的アプリケーション・リソース・プロジェクトには、HTMLファイルやイメージ・ファイルのような静的アプリケーション・リソースが含まれます。このプロジェクトは、デフォルトで、PortalWebAssetsと呼ばれます。静的リソースを個々のプロジェクトに分離することによって、これらのリソースを専用サーバーにデプロイすることが可能となります。第6.1項「新しいWebCenter Portal Frameworkアプリケーションの作成」および第6.4項「PortalWebAssetsプロジェクトの理解」を参照してください。

注意:

アプリケーションにデフォルトのファイルとフォルダが移入されるだけでなく、このテンプレートでは、「リソース・パレット」に「WebCenter Portal - Frameworkカタログ」と「WebCenter Portal - サービス・カタログ」を移入します。このサービス・カタログには、WebCenter Portalのツールとサービスをアプリケーションに統合するために使用できる、データ・コントロールとタスク・フローが含まれています。Frameworkカタログには、ポータルの構築に最も一般的に使用されるコンポーネントのコレクションが格納されています。詳細は、第14章「リソース・カタログの開発」を参照してください。

6.3 ポータルの構築

新しいPortal Frameworkワークスペースを作成したら、ナビゲーションの設定、ページの追加、ルック・アンド・フィールの開発、コンテンツの追加、その他機能またはアセットでの作業を開始できます。ポータル機能の全般的な概要は、第5章「WebCenter Portal Frameworkアプリケーションの理解」を参照してください。ポータルへの機能の追加の詳細は、第9章「ポータル・リソース管理の概要」を参照してください。

6.4 PortalWebAssetsプロジェクトの理解

この項では、PortalWebAssetsプロジェクトについて説明します。このプロジェクトには、必要に応じてHTMLファイルやイメージなどの静的リソースを配置できます。PortalWebAssetsプロジェクトは、デフォルトで、新しいPortal Frameworkアプリケーションに作成されます。

- 第6.4.1項「概要」

- 第6.4.2項「静的アプリケーション・リソース・プロジェクトの分離」

- 第6.4.3項「デプロイメントのオプション」

- 第6.4.4項「ELを使用した静的リソースの管理」

6.4.1 概要

Webアプリケーションの静的リソースは、HTMLファイルやイメージ・ファイルと同様に、通常はアプリケーションとともにバンドルされてデプロイされます。動的リソースと静的リソースのどちらのリクエストも、通常、ホスト・アプリケーション・サーバーで処理されます。サーバーのパフォーマンスを最適化するには、静的リソースをアプリケーションから分離して、それらを別のサーバー(できれば安価でよりスケーラブルなサーバー)にデプロイする方法があります。Portal Frameworkアプリケーションは、HTMLやイメージなどの静的リソースを含む静的アプリケーション・リソース・プロジェクトでこのシナリオをサポートします。このプロジェクトは、デフォルトでPortalWebAssetsと呼ばれますが、プロジェクトの名前は必要に応じて変更できます。図6-7を参照してください。

図6-7 PortalWebAssetsフォルダ

静的リソース・プロジェクトを使用する場合は、単に、コンテンツ(HTMLファイルやイメージ・ファイル)をプロジェクトに追加します。これは、../PortalWebAssets/public_htmlディレクトリ内にファイルを追加するか、JDeveloperで追加することにより、ファイル・システムから直接実行できます。たとえば、HTMLファイルを追加するには、「ファイル」メニューから「新規作成」を選択し、新規ギャラリ・ウィザードを使用してリソースを作成します。

注意:

スキンに使用するCSSファイルは、Portal Frameworkアプリケーション・プロジェクトに維持しておく必要があります。スキンのCSSファイルは、静的アプリケーション・リソース・プロジェクトに配置しないでください。

6.4.2 静的アプリケーション・リソース・プロジェクトの分離

ポータル・プロジェクトには、デフォルトで、静的アプリケーション・リソース・プロジェクト(PortalWebAssets)が依存性として含まれます。つまり、これらは、ともに構築され、同一サーバーにデプロイされることになります。静的リソースを別のサーバーにデプロイする必要がない場合は、静的リソース・プロジェクトに関して特別な処置を実行する必要はありません。

PortalWebAssetsプロジェクトとPortalプロジェクトを分離する場合は、次の手順を実行します。

1. Portalプロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。

2. 「プロジェクト・プロパティ」ダイアログで、図6-8に示すように、「依存性」ノードを選択します。

図6-8 プロジェクトの「依存性」ダイアログ

3. 依存性を削除する場合は、「削除」ボタンをクリックするか、「編集」ボタンを選択して、「依存性の編集」ダイアログ(図6-9)でこのプロジェクトの選択を解除します。

図6-9 「依存性の編集」ダイアログ

4. 2つの個別のアーカイブ(Portal.earとPortalWebAssets.jar)を生成して、それぞれを別のサーバーにデプロイします。第6.4.3項「デプロイメントのオプション」を参照してください。

6.4.3 デプロイメントのオプション

Portal.earファイルは、通常、アプリケーションの管理対象サーバーにデプロイされます。PortalWebAssets.jarファイルは、通常、PortalWebAssetsプロジェクトにWARデプロイメント・プロファイルを作成し、そのプロファイルをEARデプロイメント・プロファイルに含めることにより、任意のJ2EE準拠サーバー・コンテナにデプロイできます。あるいは、Apache WebサーバーにJARファイルを解凍する方がさらに簡単です。第7章「Portal Frameworkアプリケーションのデプロイおよびテスト」も参照してください。

6.4.4 ELを使用した静的リソースの管理

開発者は、EL式を使用して、静的リソースのターゲットURLを自動的に生成できます。ELを使用する場合は、2つのオプションがあります。最初のオプションでは、ベースURLプリファレンスを定義する必要があります。2番目のオプションでは、URLを動的にマップできるようになります。

6.4.4.1 ベースURLプリファレンスの定義

このソリューションでは、ベースURLを使用してリソースを目的のサーバーにリダイレクトする、単一のプリファレンスを提供します。このオプションでは、次の例に示す書式でEL式を記述します。

<af:image source="#{preferenceBean.baseResourceURL}/images/globe.png"/>

このオプションを構成するには、次のようにプリファレンスをadf-config.xmlファイルに追加します。

<portal:preferences>
...
<portal:preference id="oracle.webcenter.portalapp.baseresourceurl"
desc="Default Base Resource URL EL"
value=
"#{request.scheme}://#{request.serverName}:#{request.serverPort}#{request.contextPath}"
resourceType="BaseResourceURL" display="true"
/>
...
</portal:preferences>

このテクニックの唯一の制限は、各値をマップできるサーバーが1つに限られることです。戻されるプリファレンス値は、1つのみになります。動的にURLを構成する必要がある場合は、次の項(第6.4.4.2項「URLの動的なマッピング」)で説明するテクニックを選択してください。

6.4.4.2 URLの動的なマッピング

このソリューションでは、複数のネームスペースを指定する機能を使用して、動的にURLを構築できます。このオプションでは、リソースがプリファレンスへのパラメータになり、そのリソースを適切なネームスペースにマップできます。

このソリューションは、2つのADFコンポーネント・カテゴリをサポートします。

最初のカテゴリには、ADF Facesコンポーネントが参照する静的リソースが含まれます。このタイプのコールを次のサンプルで示します。

<af:image source="#{preferenceBean.staticResourceURL['/oracle/webcenter/portalapp/static/images/globe.png']}"/>

2番目のカテゴリには、ADF FacesコンポーネントのinlineStyleを通じて参照する静的リソースが含まれます。このタイプのコールを次のサンプルで示します。

<af:panelBorderLayout id="pt_pgl1"
inlineStyle='background-image:url(#{preferenceBean.staticResourceURL["/oracle/webcenter/portalapp/static/images/globe.png"]});'>

次のEL式について説明します。

#{preferenceBean.staticResourceURL['<resource path>']}

この式は、リソースのネームスペース参照を実行して、リソースURLの接頭辞を導出します。この参照の入力は、リソースのパス(例: /oracle/webcenter/portalapp/static/images/globe.png)になります。リソースのネームスペースとURLとの間のマッピングを確立するには、adf-config.xmlファイルの<portal:resource-mappings>セクションを編集します。

このオプションを構成するには、次のようにプリファレンスをadf-config.xmlファイルに追加します。

<portal:adf-portal-config>
<portal:preferences>
...
</portal:preferences>
<portal:resource-mappings>
<portal:resource-mapping path="/"
url-prefix="#{request.scheme}://#{request.serverName}:#{request.serverPort}#{request.contextPath}"
/>
</portal:resource-mappings>
</portal:adf-portal-config>

この参照により、リソースURLの接頭辞が生成されます。リソースURLの最終的な値は、URL接頭辞とリソースへのパスを連結して導出されます。例:

/oracle/webcenter/portalapp/static/images/globe.png

次のように生成されます。

http://myserver/static_resources/oracle/webcenter/portalapp/static/images/globe.png

開発時、URL接頭辞の参照は、常にアプリケーションのコンテキストURL(たとえば、http://<server>:<port>/<context root>)に解決されます。

例6-1に、adf-config.xmlのマッピング構成例を示します。

例6-1 ネームスペース参照のマッピング例

<portal:adf-portal-config>
<portal:preferences>
...
</portal:preferences>
<portal:resource-mappings>
<portal:resource-mapping path="/oracle/webcenter/portalapp/static"
url-prefix="http://myserver/static_resources"/>
<portal:resource-mapping path="/mycompany/static/images"
url-prefix="http://myserver/static_resources"/>
<portal:resource-mapping path="/mycompany/myapp/static/images"
url-prefix="http://myserver/static_resources/myapp2"/>
</portal:resource-mappings>
</portal:adf-portal-config>

6.5 Frameworkアプリケーションのセキュリティはデフォルトでどのように構成されるか

デフォルトでは、WebCenter Portal Frameworkアプリケーションは、ADFセキュリティで構成されます。

デフォルトのログイン・ページとログアウト・ページは、WebCenter Portal Frameworkアプリケーション・テンプレートでも提供されます。

ADFセキュリティの詳細は、第74章「WebCenter Portal Frameworkアプリケーションの保護」を参照してください。また、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のFusion WebアプリケーションでのADFセキュリティの有効化に関する項も参照してください。

6.6 知識が必要な構成ファイル

Portal Frameworkアプリケーションを作成したときに自動生成されるいくつかの構成ファイルは、ポータル・プロジェクトのWEB-INFフォルダとPage Flowsフォルダに配置されます。

この項では、これらのファイルについて簡単に説明します。

- 第6.6.1項「Frameworkアプリケーション・テンプレートのデフォルトのweb.xmlファイル」

- 第6.6.2項「Frameworkアプリケーション・テンプレートのデフォルトのfaces-config.xmlファイル」

- 第6.6.3項「Frameworkアプリケーション・テンプレートのデフォルトのtrinidad-config.xmlファイル」

- 第6.6.4項「Frameworkアプリケーション・テンプレートのデフォルトのadfc-config.xmlファイル」

6.6.1 Frameworkアプリケーション・テンプレートのデフォルトのweb.xmlファイル

Portal Frameworkアプリケーションの構成の一部は、Java EEアプリケーション・デプロイメント・ディスクリプタ・ファイル(web.xml)の内容で決まります。web.xmlファイルでは、アプリケーション・サーバーが必要とする多数のアプリケーション設定を定義します。

注意:

コンテキスト・ルート・パスは、web.xmlでは指定されていません。アプリケーションがデプロイされるときに割り当てられます。

一般的な実行時設定には、初期化パラメータ、カスタム・タグ・ライブラリの場所、セキュリティ設定などがあります。どのテクノロジを使用するかに応じて、その他の設定がweb.xmlに追加されていることがあります。

注意:

web.xmlなどの標準のJava EEファイルには、通常、これに対応するOracle固有のファイル(weblogic.xmlなど)があり、Oracle固有の追加のオプションが含まれています。

web.xmlファイルは、Portal Frameworkアプリケーションのプロジェクトの相対ディレクトリ/public_html/WEB-INFに配置されます。

最初にPortal Frameworkアプリケーションを作成するときに、JSFサーブレットとマッピングの構成設定、およびリソース・サーブレットとマッピングの構成設定は、自動的に初期web.xmlファイルに追加されます。

<servlet></servlet>タグ内のFaces Servletエントリでは、JSFサーブレットjavax.faces.webapp.FacesServletに関する情報が提供されます。このサーブレットは、JSFを使用してユーザー・インタフェースを作成するWebアプリケーションのリクエスト処理ライフ・サイクルを管理します。構成設定では、JSFサーブレットがシンボリック名Faces Servletにマップされています。

<servlet></servlet>タグ内のresourcesエントリでは、ADFリソース・サーブレットに関する情報が提供されます。このサーブレットは、ResourceLoaderに委任することで、Webアプリケーションのリソース(イメージ、スタイル・シート、JavaScriptライブラリ)を提供します。

<servlet-mapping></servlet-mapping>タグでは、URLパターンがサーブレットのシンボリック名にマップされます。パス接頭辞か拡張子接尾辞パターンのいずれかを使用できます。

デフォルトでは、JDeveloperはパス接頭辞/faces/*を使用します。つまり、http://localhost:8080/SRDemo/faces/index.jspなどのURLが送信されると、このURLでJSFサーブレットがアクティブ化され、faces接頭辞を除いた/SRDemo/index.jspがロードされます。

注意:

Webページの拡張子に、jspやjspxではなく、jsfを使用する場合は、次に示すようにjavax.faces.DEFAULT_SUFFIXコンテキスト・パラメータをjsfに設定する必要があります。

<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.jsf</param-value>
</context-param>

その後で、拡張子がjsfのファイルに対してJSPサーブレットを起動するサーブレット・マッピングをweb.xmlに追加します。

Oracle JDeveloperでweb.xmlを編集するには、アプリケーション・ナビゲータで「web.xml」を右クリックし、ポップアップ・メニューから「開く」を選択します。これにより、Webアプリケーション・デプロイメント・ディスクリプタ・エディタでweb.xmlが概要モードで開かれます。構成要素の名前に精通している場合は、XMLエディタを使用してweb.xmlを変更することもできます。

web.xmlファイルで使用できる構成要素については、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のOracle ADF XMLファイルに関する項を参照してください。

6.6.2 Frameworkアプリケーション・テンプレートのデフォルトのfaces-config.xmlファイル

カスタム・バリデータやマネージドBeanなどのPortal Frameworkアプリケーションのリソースを登録して、すべてのページ間のナビゲーション・ルールを定義するには、faces-config.xmlファイルを使用します。このファイルのデフォルト名は、faces-config.xmlです。

リソースをパッケージ化する方法に応じて、1つのアプリケーションに1つまたは複数のfaces-config.xmlファイルを割り当てることができます。たとえば、次の項目ごとに個別のJSF構成ファイルを作成できます。

- アプリケーションの各領域

- カスタム・コンポーネントやレンダラを含む各ライブラリ

複数のfaces-config.xmlファイルの作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

例6-2に、WebCenter Portal Frameworkアプリケーション・テンプレートによって提供されるデフォルトのfaces-config.xmlファイルを示します。このファイルは、Frameworkアプリケーションのプロジェクトの相対ディレクトリ/public_html/WEB-INFに配置されます。

例6-2 Frameworkアプリケーション・テンプレートによって提供されるデフォルトのfaces-config.xmlファイル

<?xml version="1.0" encoding="US-ASCII"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee">
<application>
<default-render-kit-id>oracle.adf.rich</default-render-kit-id>
<view-handler>oracle.webcenter.portalframework.sitestructure.handler.CustomViewHandler</view-handler>
</application>
<lifecycle>
<phase-listener>oracle.webcenter.skin.view.SkinPhaseListener</phase-listener>
</lifecycle>
<managed-bean>
<managed-bean-name>preferenceBean</managed-bean-name>
<managed-bean-class>oracle.webcenter.portalframework.sitestructure.preference.PortalPreferences</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>login_success</from-outcome>
<to-view-id>/pages_home</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>logout_success</from-outcome>
<to-view-id>/pages_home</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
</faces-config>

faces-config.xmlファイルを編集するには、アプリケーション・ナビゲータでこのファイルをダブルクリックします。デフォルトでは、このファイルは、「エディタ」ウィンドウの下部のアクティブ「ダイアグラム」タブによって示されるように、ダイアグラム・モードで開きます。JSFナビゲーション・ルールを作成または更新するとき、「ダイアグラム」モードを使用すると、ページ・フローを視覚的に作成および管理できます。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

ナビゲーション・ルール以外の構成要素を作成または変更するには、エディタの「概要」モードを使用します。エディタ・ウィンドウの「概要」タブをクリックすると、このモードになります。

JSFでは、1つのfaces-config.xmlファイルに複数の<application>要素を使用できます。JSF構成エディタを使用する場合、最初のインスタンスのみを編集できます。その他の<application>要素については、XMLエディタを使用してファイルを直接編集する必要があります。XMLエディタを使用するには、faces-config.xmlファイルを開き、エディタ・ウィンドウの「ソース」タブに移動します。

faces-config.xmlファイルで使用できる構成要素のリファレンスは、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADF Faces構成に関する項を参照してください。

6.6.3 Frameworkアプリケーション・テンプレートのデフォルトのtrinidad-config.xmlファイル

Portal Frameworkアプリケーションの作成時に利用可能なデフォルトのtrinidad-config.xmlファイルには、アプリケーション・スキン・ファミリに関する情報が含まれます。さらに、これにはページ・アクセシビリティ・サポートのレベル、ページ・アニメーション、タイムゾーン、拡張デバッグ出力およびOracle Help for the Web (OHW)のURLに関する情報を含めることができます。faces-config.xml同様、trinidad-config.xmlファイルは、JSF式言語(EL)または静的値を使用して要素プロパティを定義できる単純なXML構造を持ちます。

例6-3に、WebCenter Portal Frameworkアプリケーション・テンプレートによって提供されるデフォルトのtrinidad-config.xmlファイルを示します。このファイルは、Frameworkアプリケーションのプロジェクトの相対ディレクトリ/public_html/WEB-INFに配置されます。

例6-3 Frameworkアプリケーション・テンプレートによって提供されるデフォルトのtrinidad-config.xmlファイル

<?xml version="1.0" encoding="US-ASCII"?>
<trinidad-config xmlns="http://myfaces.apache.org/trinidad/config">

<skin-family>#{preferenceBean.defaultTrinidadSkin}</skin-family>
<skin-version>v1</skin-version>
</trinidad-config>

スキン・ファミリに加え、trinidad-config.xmlファイルでは、次のアプリケーション値を定義できます。

- ページ・アニメーション

- ページ・アクセシビリティ・サポートのレベル

- タイムゾーン

- 拡張デバッグ出力

- Oracle Help for the Web (OHW)のURL

trinidad-config.xmlファイルのリファレンス情報は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のADF Faces構成に関する項を参照してください。

6.6.4 Frameworkアプリケーション・テンプレートのデフォルトのadfc-config.xmlファイル

adfc-config.xmlファイルは、ADFのバインドなしタスク・フローの構成ファイルです。このファイルには、バインドなしタスク・フローに含まれるアクティビティと制御フローに関するメタデータが格納されています。このファイルのデフォルト名は、adfc-config.xmlです。

「プロジェクト・プロパティ」ダイアログの「テクノロジ・スコープ」ページで、選択済のテクノロジとして「ADFページ・フロー」が指定されている場合は、自動的に新しいadfc-config.xmlソース・ファイルがプロジェクト内に作成されます。このadfc-config.xmlファイルは、バインドなしタスク・フローのメイン・ソース・ファイルです。

adfc-config.xmlファイルは、Portal Frameworkアプリケーションのプロジェクトの相対ディレクトリ/public_html/WEB-INFに配置されます。

注意:

Frameworkアプリケーションでタスク・フローを使用する予定がない場合は、adfc-config.xmlファイルを削除してもかまいません。

タスク・フローおよびadfc-config.xmlファイルの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のOracle ADF XMLファイルに関する項を参照してください。

6.7 アプリケーション・ナビゲータでの除外ファイルの追加

デフォルトでは、複数のファイルがアプリケーション・ナビゲータのビューから除外されています。これらのファイルが除外されているのは、ファイルを編集する必要がほとんどないためです。ただし、これらを編集する高度なユース・ケースの可能性もあるため、これらをJDeveloper UIに追加できる必要があります。

除外されたファイルを配置するには:

1. プロジェクト・フォルダを右クリックし、メニューから「プロジェクト・プロパティ」を選択します。

2. 「プロジェクト・プロパティ」ダイアログで、「プロジェクトのソース・パス」ノードの「Webアプリケーション」を選択します。

3. 図6-10に示すように、「除外」タブを選択します。

図6-10 「除外」タブ

4. 除外リストから要素を選択し、「削除」をクリックして除外リストから削除します。これで、目的の要素がアプリケーション・ナビゲータの該当するフォルダに自動的に追加されます。

例では、navigation-renderer.jspxファイルを使用して、ページ・テンプレートに即してリソースをレンダリングします。外部URLをページ内で表示する方法を変更する場合、まず除外リストからnavigation-renderer.jspxを削除すると、アプリケーション・ナビゲータのpagesフォルダの下にこれが表示されるようになります。次に、そのページを開き、必要に応じて編集します。

6.8 ポータルの保護

セキュリティは、ポータル全体、ページおよびサブページのコレクション、または単一ページに対して定義できます。カスタマイズ可能なコンポーネントで提供される個別のカスタム・コンポーネントおよびアクションに、セキュリティを定義できます。さらに、Webサービスを使用してバックエンド・サーバーに接続するOracle WebCenter Portalのツールとサービスに対しては、WS-Securityによるセキュアなアイデンティティ伝播を提供できます。

Oracle WebCenter PortalセキュリティはJAASおよびJ2EE標準に基づいているため、Portal Frameworkアプリケーションを保護する際に既存のアイデンティティ管理ストアで定義されるエンタープライズ・ロールを直接利用できます。構築するポータル内でロールを同期する必要はありません。定義されたユーザーとロールを直接参照して使用します。また、ポータルの開発フェーズでファイルベースのセキュリティを使用でき、デプロイ時に企業のアイデンティティ管理に簡単にスイッチオーバーできます。

Oracle WebCenter Portalには、ポータルのポリシーを表すために使用できる、アプリケーション・ロールも用意されています。ポリシー・ストアで定義されたアプリケーション・ロールに権限を関連付けることにより、その権限をポータル内に保持しておくことができます。デプロイメント時には、ユーザーとエンタープライズ・ロールをアプリケーション・ロールに関連付けると、それらの権限をエンド・ユーザーに付与できます。

場合によっては、独自の認証メカニズム(電子メールなど)を備えた既存のポータルを利用するほうが適していることもあります。電子メール・システムは、多くの場合、ポータルとは別の認証システム(別のユーザー名とパスワード)を使用します。そのポータルでは、電子メール・ユーザーをポータル・ユーザーにマップして、エンド・ユーザーが情報を要求するたびにユーザー名とパスワードを入力する必要がなくなるようにします。Oracle WebCenter Portal Frameworkには、このようなユーザー名とパスワードを、外部アプリケーション機能でセキュアに管理する方法が用意されています。

Portal Frameworkアプリケーションを保護するオプションの詳細は、第74章「WebCenter Portal Frameworkアプリケーションの保護」を参照してください。

7 Portal Frameworkアプリケーションのデプロイおよびテスト

この章では、統合WebLogic Server (IntegratedWebLogicServer)を使用してPortal Frameworkアプリケーションを実行、デプロイおよびテストする方法と、アプリケーションをJDeveloperからWebLogic管理対象サーバーにデプロイする方法について説明します。

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

- 第7.1項「Oracle WebLogicサーバーの概要」

- 第7.2項「統合WebLogic ServerへのPortal Frameworkアプリケーションのデプロイ」

- 第7.3項「WebLogic管理対象サーバーへのPortal Frameworkアプリケーションのデプロイ」

- 第7.4項「複数の環境間でのカスタマイズのトランスポート」

注意:

Oracle WebCenter Portalのパーソナライズのファイルのデプロイについては、第66.3項「パーソナライズ・ファイルのデプロイ」を参照してください。Oracle Enterprise Manager Fusion Middleware Control、Oracle WebLogic管理コンソール、WebLogic Scripting Tool (WLST)コマンドなど、他のメカニズムを使用したPortal Frameworkアプリケーションのデプロイについては、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「Portal Frameworkアプリケーションのデプロイ」の章を参照してください。

7.1 Oracle WebLogic Serverの概要

この項では、統合WebLogic ServerおよびOracle WebLogic管理対象サーバーの概要について説明します。Oracle JDeveloperを使用すると、アプリケーションを統合WebLogic Serverでテストおよびデプロイして、ステージングや詳細なテストのためにOracle JDeveloperの外部に存在するOracle WebLogic管理対象サーバーにデプロイしたり、必要な権限を持っている場合には実際の本番環境にデプロイしたりできます。

統合WebLogic Server

統合WebLogic Serverは、Oracle JDeveloperとともにパッケージ化されています。統合WebLogic Server接続は、「IDE接続」→「アプリケーション・サーバー」の下の「リソース・パレット」でIntegratedWebLogicServerと表示されます。統合WebLogic Serverを使用すると、設計時にアプリケーションを短時間で簡単にテストでき、アプリケーションをパッケージ化してWebLogic管理対象サーバーを作成および構成する必要はありません。

アプリケーションを実行すると、そのアプリケーションの統合WebLogic Serverインスタンスが自動的に起動されます。JDeveloperの「実行」→「サーバー・インスタンスの起動(IntegratedWebLogicServer)」メニュー・オプションを選択して、インスタンスを手動で起動することもできます。その場合、すべてのアプリケーションに対応するサーバー・インスタンスが1つ作成され、実行する任意のアプリケーションがこのサーバー・インスタンスを使用します。

統合WebLogic ServerでPortal Frameworkアプリケーションをテストすることは、次のように設計時の作業向上に役立ちます。

- デプロイの最適化: デザインタイムのテストのためにファイルをアーカイブして別のサーバーにコピーする必要がなくなります。

- 変更をアプリケーションにすぐに反映: ほとんどのファイルをプロジェクト・ディレクトリから直接実行できるので、アプリケーションの実行中に選択した変更を実行して反映させることができます。たとえば、JSPXページ上のタスク・フローを変更した場合、ブラウザでそのページをリフレッシュすると変更後の内容が表示されるので、アプリケーションを再デプロイする必要はありません。

- テストとデバッグを実行した後でアプリケーションをアンデプロイする必要がありません。ただし、統合WebLogic Serverを停止すると、そこで実行されていたアプリケーションは自動的にアンデプロイされます。

統合WebLogic ServerでのPortal Frameworkアプリケーションのテストの詳細は、第7.2項「統合WebLogic ServerへのPortal Frameworkアプリケーションのデプロイ」を参照してください。

WebLogic管理対象サーバー

Oracle WebLogic管理対象サーバーは、ドメインの一部としてOracle JDeveloperの外部に存在し、そのドメイン内の管理サーバーの管理下にあります。WebLogic管理対象サーバーでは、アプリケーションが、アプリケーションに必要なライブラリや他のリソースとともに、ホストされます。ドメインは、Oracle WebLogic Serverリソースの論理的に関連付けられたグループであり、任意の個数の管理対象サーバーが属することができます。管理対象サーバーは、テスト環境または本番環境、あるいはその両方の環境でアプリケーションを実行するように構成できます。

Oracle WebLogic管理対象サーバーへのPortal Frameworkアプリケーションのデプロイの詳細は、第7.3項「WebLogic管理対象サーバーへのPortal Frameworkアプリケーションのデプロイ」を参照してください。

7.2 統合WebLogic ServerへのPortal Frameworkアプリケーションのデプロイ

統合WebLogic Serverは、デプロイメント・プロファイルを作成しなくても、Oracle JDeveloper内でアプリケーションを実行できるように事前構成済です。ただし、統合WebLogic Serverインスタンスが停止すると、アプリケーションはアンデプロイされ、使用できなくなります。もっと安定したテスト・シナリオを実現するために、アプリケーションを統合WebLogic Serverにデプロイすることもできます。これらの2つのオプションについては、次のサブセクションで説明します:

- 第7.2.1項「統合WebLogic ServerでのPortal Frameworkアプリケーションの実行」

- 第7.2.2項「統合WebLogic ServerへのPortal Frameworkアプリケーションのデプロイ」

7.2.1 統合WebLogic ServerでのPortal Frameworkアプリケーションの実行

Portal Frameworkアプリケーションを実行するには、アプリケーション・ナビゲータの「プロジェクト」セクションでポータル・プロジェクトを右クリックして「実行」を選択するか、「実行」メニューから「実行」を選択するか、ツールバーから「実行」アイコンをクリックして、現在のプロジェクトを実行できます。

JDeveloperでアプリケーションを実行する場合、アプリケーションに基づいて名前が付けられたサーバー・インスタンスが自動的に作成されます。アプリケーションの実行中に、JDeveloperとブラウザを切り替えながら、アプリケーションをデザインタイムに変更し、変更を保存し、ブラウザでJSPXページをリフレッシュして変更を反映させることができます。JDeveloperでは、アプリケーションの処理状況を監視したり、サーバー・インスタンスを停止(それによってアプリケーションを停止)したりすることもできます。

アプリケーション・ページまたはプロジェクトを実行するとき、アプリケーションにちなんで名付けられた統合WebLogic Serverインスタンスで、Portal Frameworkアプリケーションのパッケージ化およびデプロイメントがトリガーされます。統合WebLogic Serverのインスタンスは、「Run Manager」パネル(図7-1)を使用して停止できます。「Run Manager」パネルにアクセスするには、「表示」メニューから「Run Manager」を選択します。統合WebLogic Serverインスタンスは、「IntegratedWebLogicServer」を選択し、「Run Manager」タブの赤い「終了」アイコンをクリックすれば停止できます。インスタンスは、ツールバーの赤い「終了」アイコンまたは「ログ」ウィンドウの「終了」アイコンを使用するか、「実行」メニューから「終了」オプションを選択しても停止できます。

図7-1 Run Manager

IntegratedWebLogicServerの「ログ」ウィンドウ(図7-2を参照)には、アクティビティの処理状況が表示されます。

図7-2 DefaultServerの「ログ」ウィンドウ

注意:

統合WebLogic ServerでPortal Frameworkアプリケーションを実行する場合、セキュアな属性と資格証明はデフォルトで移行されます。

7.2.2 統合WebLogic ServerへのPortal Frameworkアプリケーションのデプロイ

第7.2.1項「統合WebLogic ServerでのPortal Frameworkアプリケーションの実行」のとおり、Portal Frameworkアプリケーションを実行した場合、統合WebLogic Serverインスタンスが停止すると、アプリケーションはアンデプロイされ、使用できなくなります。IntegratedWebLogicServerを再起動しても、アプリケーションは使用可能になりません。もっと安定したテスト・シナリオを実現するために、「デプロイ」オプションを使用して、アプリケーションを統合WebLogic Serverにデプロイできます。このデプロイ済アプリケーションは、統合WebLogic Serverが実行されている間、常に使用可能です。

アプリケーションのデプロイの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「Fusion Webアプリケーションのデプロイ」の章を参照してください。

注意:

Portal Frameworkアプリケーションをデプロイする前に、Oracle WebCenter Portal用および分析タスク・フローで使用されるアクティビティ用にローカル・データ・ソースを作成する必要がある場合は、第4.2.2項「データベース接続の設定」を参照してください。

アプリケーションを統合WebLogic Serverにデプロイするには:

1. JDeveloperでアプリケーションを開きます。

2. 「実行」メニューから「サーバー・インスタンスの起動(IntegratedWebLogicServer)」を選択して、サーバー・インスタンスを起動します。

3. 「アプリケーション」メニューで「デプロイ」を選択し、application name_application1の形式で表示されている(図7-3)デフォルトのデプロイメント・プロファイルを選択します。

図7-3 「アプリケーション」メニューの「デプロイ」オプション

4. 「デプロイ」ダイアログで、「アプリケーション・サーバーへのデプロイ」が選択されていることを確認し、「次へ」をクリックします。

5. 「IntegratedWebLogicServer」を選択し、「次へ」をクリックします。

6. 「WebLogicオプション」画面でデフォルトの選択を受け入れ、「次へ」をクリックします。

7. 「サマリー」画面でデプロイメントの詳細を確認し、「終了」をクリックします。

8. 「デプロイメント構成」ダイアログ」ダイアログで「デプロイ」をクリックします。
「デプロイメント構成」ダイアログでは、ターゲット・メタデータ・リポジトリまたは共有メタデータ・リポジトリを選択できます。JDeveloperにより事前に作成されたファイル・システムのMDSリポジトリが「リポジトリ名」フィールド(図7-4)に表示されます。

図7-4 「デプロイメント構成」ダイアログ

このアプリケーションの再デプロイを試みた場合、「アプリケーション」→「デプロイ」メニューを選択すると、アプリケーションの以前のデプロイメント・ターゲットを選択するオプションが表示されます(図7-5)。これは、「デプロイ」ダイアログ画面をスキップして直接「デプロイメント構成」ダイアログに進み、以前のターゲットに再デプロイする場合に便利です。

図7-5 「デプロイ」オプションが表示された「アプリケーション」メニュー

7.3 WebLogic管理対象サーバーへのPortal Frameworkアプリケーションのデプロイ

外部のテスト・サイトまたはステージング・サイトを使用してPortal Frameworkアプリケーションをテストする準備ができたら、JDeveloperから直接Oracle WebLogic管理対象サーバーにアプリケーションをデプロイできます。

Fusion Middleware Control、Oracle WebLogic管理コンソールおよびWLSTコマンドを使用したPortal Frameworkアプリケーションのデプロイの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「Portal Frameworkアプリケーションのデプロイ」の章を参照してください。

この項には次のサブセクションが含まれます:

- 第7.3.1項「デプロイのロードマップ」

- 第7.3.2項「Frameworkアプリケーションのパッケージ化」

- 第7.3.3項「デプロイのためのターゲット環境の準備」

- 第7.3.4項「管理対象サーバーへのPortal Frameworkアプリケーションのデプロイ」

7.3.1 デプロイのロードマップ

この項では、フロー・チャートと表を使用して、Portal FrameworkアプリケーションをOracle WebLogic管理対象サーバーにデプロイするために必要な前提条件とタスクの概要について説明します。図7-6に、Portal Frameworkアプリケーションをデプロイする手順と、それらを実行するロールを示します。

図7-6 管理対象サーバーへのFrameworkアプリケーションのデプロイ

表7-1に、JDeveloperからPortal Frameworkアプリケーションをデプロイするためのタスクとサブタスクおよびそれらを実行する必要があるアクターを示します。

表7-1 管理対象サーバーへのFrameworkアプリケーションのデプロイ

アクター

タスク

サブタスク

ノート

開発者

1. アプリケーションのパッケージ化

1.a データ・ソース・タイプの選択(データベース接続のパッケージ化)

グローバル・データ・ソースまたはアプリケーションレベル・データ・ソースのどちらかを使用できます。

グローバル・データ・ソースを使用する場合、デプロイの前にWLS管理コンソールでデータ・ソースを作成する必要があります。

アプリケーションレベル・データ・ソースを使用する場合、デプロイの後にWLS管理コンソールで資格証明マッピングを追加する必要がある場合があります(次の注意を参照)。

注意: JDeveloperからデプロイする方法は2つあります。

1つは管理対象サーバーに直接デプロイする方法、もう1つはEARファイルにデプロイした後でFusion Middleware Control、WLSTまたはWLS管理コンソールのいずれかを使用してEARファイルをデプロイする方法です。

JDeveloperから直接デプロイする場合、JDeveloperが自動的に資格証明マッピングを処理するので、資格証明マッピングの手順は必要ありません。ただし、JDeveloperの外部でEARファイルをデプロイする場合はその手順が必要です。

1.b アプリケーション・セキュリティ・データのパッケージ化

このサブタスクでは、資格証明、アイデンティティ・データおよびアプリケーション・ポリシーのパッケージ化が行われます。

1.c デプロイメント・プロファイルの作成

このサブタスクでは、WARファイルとEARファイルの作成が行われます。

初期状態で、デフォルトのデプロイメント・プロファイルが使用可能です。ただし、要件ごとにコンテキスト・ルートやアプリケーション名を指定する独自のデプロイメント・プロファイルを作成することもできます。

管理者

2. ターゲット環境の準備

2.a 管理対象サーバーの作成およびプロビジョニング

2.b MDSリポジトリの作成および登録

2.c ターゲット環境の構成

2.d サーバー接続の作成

開発者

3. JDeveloperから管理対象サーバーへのアプリケーションのデプロイ

最後の手順で、JDeveloperから管理対象サーバーにアプリケーションをデプロイします。

7.3.2 Frameworkアプリケーションのパッケージ化

Portal Frameworkアプリケーションをデプロイする場合、データベースに接続するためにデータベース接続と関連セキュリティも移行する必要がある場合があります。また、アプリケーションをOracle WebLogic管理対象サーバーにデプロイできるようにPortal Frameworkアプリケーションとその関連ファイルをパッケージ化する方法を示すデプロイメント・プロファイルをプロジェクトレベルとアプリケーションレベルで作成する必要もあります。

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

- 第7.3.2.1項「データベース接続とアプリケーション・セキュリティのパッケージ化」

- 第7.3.2.2項「デプロイメント・プロファイルの作成」

7.3.2.1 データベース接続とアプリケーション・セキュリティのパッケージ化

Portal Frameworkアプリケーションをデプロイする場合、データベースに接続するためにデータベース接続と関連セキュリティもパッケージ化する必要があります。この項では、JDBCデータ・ソースとJDBC URLの2つのデータベース接続タイプのどちらかを使用するPortal Frameworkアプリケーションをパッケージ化する方法について説明します。また、パスワードを指定するデータベース接続を使用するアプリケーションまたは共有資格証明またはパブリック資格証明を指定する外部アプリケーションのセキュリティの移行について説明します。

管理者によって定義されているポリシー(たとえば管理者がアプリケーションレベルのデータ・ソースを一切許可していない場合)に基づいて、ターゲット・サーバーへのデータベース接続および個々の資格証明を移行する必要がある場合があります。後述するパッケージ化オプションを使用して、データベース接続の処理方法を選択できます。

この項には次のサブセクションが含まれます:

- 第7.3.2.1.1項「データベース接続のパッケージ化」

- 第7.3.2.1.2項「アプリケーション・セキュリティ・データのパッケージ化」

7.3.2.1.1 データベース接続のパッケージ化

Portal FrameworkアプリケーションでJDBCデータベース接続を使用する場合、JDeveloperからそれらのデータベース接続をOracle WebLogic管理対象サーバーに移行する方法を選択する必要があります。次の選択肢があります。

- グローバル・データ・ソース:
Fusion Middleware Control、Oracle WebLogic管理コンソールまたはWLST (wldeployer)コマンドを使用して本番モードで動作中の管理対象サーバーにアプリケーションEARファイルをデプロイする場合は、このタイプのデータ・ソースを選択することをお薦めします。

グローバル・データ・ソースを選択するには、パスワードのインダイレクションを使用するアプリケーションレベルのデータ・ソースがJDeveloperによって作成されないように、EARファイルを作成する際に「デプロイ中にweblogic-jdbc.xmlディスクリプタを自動生成および同期化」チェック・ボックスの選択を解除します。かわりに、デフォルトのWebCenter PortalスキーマとACTIVITIESスキーマを使用して本番モードの管理対象サーバーにアプリケーションをデプロイする前またはデプロイした後に、Oracle WebLogic管理コンソールを使用してグローバル・データ・ソースを作成します。グローバル・データ・ソースの作成の詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』のJDBCデータ・ソースの作成に関する項を参照してください。

- パスワードのインダイレクションを使用するアプリケーションレベルのデータ・ソース:
統合WebLogic Serverでアプリケーションを実行する場合、JDeveloperではパスワードのインダイレクションを使用するアプリケーションレベルのデータ・ソースがデフォルトで生成されます。これは、図7-7に示すように、「アプリケーションのプロパティ」ダイアログで「デプロイ中にweblogic-jdbc.xmlディスクリプタを自動生成および同期化」チェック・ボックスが選択されている場合です。

図7-7 「デプロイ中にweblogic-jdbc.xmlディスクリプタを自動生成および同期化」チェック・ボックス

アプリケーション・レベルのインダイレクションを使用するデータ・ソースを生成するために、JDeveloperでは次の処理が実行されます。

- アプリケーション・リソースの接続ごとに<connection>-jdbc.xmlファイル(WC-jdbc.xmlなど)が生成されます。

- <connection>-jdbc.xmlファイルに間接パスワード属性が設定されます。

<jdbc-driver-params>
<use-password-indirection>true</use-password-indirection>
</jdbc-driver-params>

- weblogic-application.xmlを更新して、各<connection>-jdbc.xmlファイルをモジュールとして追加します。例:

<module>
<name>WC</name>
<type>JDBC</type>
<path>META-INF/WC-jdbc.xml</path>
</module>

- web.xmlファイルが存在する場合、このファイルの各JDBC JNDI名にリソース参照を追加します。例:

<resource-ref>
<description>WC-Connection</description>
<res-ref-name>jdbc/WCDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

パスワードのインダイレクションを使用するアプリケーション・データ・ソースを生成する場合、アプリケーションを有効化できるようにするために、Oracle WebLogic管理コンソールで資格証明マッピングを追加する必要があります。資格証明マッピングの追加の詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』のJDBCデータ・ソースの作成に関する項を参照してください。

注意:

WLSTではサーバーにパスワードのインダイレクションの資格証明マッピングを設定できないので、パスワードのインダイレクションを使用するアプリケーションレベルのデータ・ソースを使用するアプリケーションをデプロイするために、WLSTコマンドを使用しないでください。

7.3.2.1.2 アプリケーション・セキュリティ・データのパッケージ化

この項で説明する内容は、ADFセキュリティの構成ウィザードを使用してアプリケーションのセキュリティを構成した場合、またはデータベース接続のパスワードなどのセキュアな属性を使用する接続または共有資格証明またはパブリック資格証明を使用する外部アプリケーションがアプリケーションに含まれる場合にのみ適用可能です。

- 資格証明のパッケージ化

- アイデンティティ・データのパッケージ化

- アプリケーション・ポリシーのパッケージ化

資格証明のパッケージ化

資格証明を移行する必要がない場合、「アプリケーションのプロパティ」ダイアログの「セキュリティ・デプロイメント・オプション」セクションの「資格証明」チェック・ボックスの選択を解除します(図7-8を参照)。

図7-8 セキュリティ・デプロイメント・オプション

「セキュリティ・デプロイメント・オプション」セクションのデフォルト選択をそのままにする場合、WebLogicドメインが開発モードまたは本番モードのどちらであるかに応じて、資格証明の移行が次のように実行されます。

- Portal Frameworkアプリケーションを、本番モードで実行されている管理対象サーバーにデプロイする場合、アプリケーション内にパッケージ化されている接続のセキュアな属性および外部アプリケーションで指定されている共有資格証明またはパブリック資格証明は、ドメインレベルの資格証明ストアには移行されません。これは、セキュアなプロパティがデプロイ環境と本番環境で異なる可能性があるからです。したがって、Oracle Fusion Middleware Oracle WebCenter Portalの管理のセキュリティに関連する項で説明されているように、WLSTコマンドまたはFusion Middleware Controlを使用して、接続のセキュアな属性および外部アプリケーションの共有資格証明またはパブリック資格証明を再構成する必要があります。
資格証明移行の動作の詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』の資格証明ストアの移行に関する項を参照してください。

- 開発モードでPortal Frameworkアプリケーションをデプロイする場合、最初に資格証明の移行を有効化する必要があります。開発モードでデプロイするアプリケーションの資格証明の移行を有効化するには、domain\binにあるsetDomainEnv.cmdファイルまたはsetDomainEnv.shファイルに次のオプションを追加することによって、管理対象サーバーを-Djps.app.credential.overwrite.allowed=trueを指定して起動します。

set EXTRA_JAVA_PROPERTIES=-Djps.app.credential.overwrite.allowed=true %EXTRA_JAVA_PROPERTIES%

アイデンティティ・データのパッケージ化

図7-8では、「セキュリティ・デプロイメント・オプション」セクションの「ユーザーとグループ」チェック・ボックスはデフォルトで選択されています。これは、ドメインで構成されているオーセンティケータがユーザーとグループの作成を許可している場合、アプリケーションのjazn-data.xmlファイルで定義されているユーザーとグループがWebLogic管理対象サーバーに構成されているアイデンティティ・ストアに移行されることを示しています。アイデンティティ・ストアを移行するとき、管理対象サーバー用に構成されたアイデンティティ・ストアに定義されているユーザーおよびグループは、アプリケーションのアクセスに使用される必要があるので、このオプションの選択を解除する必要があります。

アプリケーション・ポリシーのパッケージ化

「アプリケーション・ポリシー」チェック・ボックスが選択されているとき、weblogic-application.xmlファイルのjps.policystore.migrationパラメータはOVERWRITEに設定されます。これは、アプリケーションのデプロイメントおよび再デプロイメントの際に、アプリケーションとともにパッケージ化されているアプリケーション・ポリシーが、アプリケーションがデプロイされるドメインのドメインレベルのポリシー・ストアで上書きされることを意味します。

「アプリケーション・ポリシー」チェック・ボックスが選択されていないとき、jps.policystore.migrationパラメータはMERGEに設定されます。これは、アプリケーション・ポリシーがアプリケーションの再デプロイメント中ではなく、デプロイメント中に移行し、既存のアプリケーション・ポリシーは上書きされないことを意味します。

7.3.2.2 デプロイメント・プロファイルの作成

JDeveloperの外部に存在する管理対象サーバーにFusion Middleware ControlまたはWLS管理コンソールを使用してアプリケーションをデプロイすることは、デプロイメント・プロファイルまたはエンタープライズ・アーカイブ(EAR)ファイルを使用する場合にかぎり実行できます。Portal FrameworkアプリケーションをOracle WebLogic管理対象サーバーにデプロイできるように、EARファイルにはアプリケーションとその関連ファイルがパッケージ化(またはアーカイブ)されます(これは通常はターゲットが本番サーバーである場合にシステム管理者によって実行されます)。

注意:

Portal FrameworkアプリケーションなどのOracle ADFアプリケーションは、EARファイルとしてのみデプロイできます。

EARファイルには、adf-config.xml、connections.xml、weblogic-application.xml、jazn-data.xml、メタデータ・アーカイブ(MAR)ファイルおよびすべてのプロジェクト関連WARファイルなどのアプリケーション・アーティファクトが含まれます。MDSのメタデータまたはポートレットが含まれるPortal Frameworkアプリケーションの場合は、メタデータ・アーカイブ・ファイル(拡張子.MAR)が自動的に生成され、EARファイルに格納されます。このファイルには、MDSのメタデータとポートレットのすべてのカスタマイズ・データが含まれます。

Portal Frameworkアプリケーションの場合、アプリケーションを構築する際に、WAR(プロジェクトレベル)とEARレベルの両方のデプロイメント・プロファイルが自動的に作成されます。これらにはそれぞれ次のような名前が付けられます。

<application name>_webapp1
<application name>_application1

<application name>は、作成時にアプリケーションの名前として指定された名前です。

ただし、アプリケーションがWebCenter Portal Frameworkアプリケーション・テンプレートを使用して作成されなかった場合は、アプリケーションのデプロイメント・プロファイル・ファイルを作成する必要があることがあります。また、EARファイルに固有の名前を付けたり、「アプリケーション・アセンブリ」セクションを使用してEARファイルに含まれる内容を変更したりする必要がある場合も、固有のEARファイルを作成できます。アプリケーションのEARデプロイメント・プロファイルの作成については、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「Fusion Webアプリケーションのデプロイ」の章を参照してください。

EARファイルを作成するには、次のようにします。

1. JDeveloperでアプリケーションを開きます。

2. 「アプリケーション」メニューから「デプロイ」を選択し、さらにデプロイメント・プロファイルの名前を選択します。application name_application1という名前のEARレベルのデプロイメント・プロファイルが、デフォルトで使用可能です。

3. 「デプロイ」ダイアログの「デプロイメント・アクション」画面で、「EARにデプロイ」を選択し、「次へ」をクリックします。

4. 「サマリー」画面でデプロイメントの詳細を確認し、「終了」をクリックします。
これは、図7-9に示されているように、EARファイルをJDEV_HOME\mywork\application_name\deploy\に位置するdeployフォルダに作成します。

図7-9 デプロイメントのEARステータス - ログ

7.3.3 デプロイのためのターゲット環境の準備

この項では、Portal Frameworkアプリケーションをデプロイする前にWebLogic管理対象サーバーのインスタンスを作成およびプロビジョニングする方法について説明します。

この項には次のサブセクションが含まれます:

- 第7.3.3.1項「Oracle WebLogic管理対象サーバーのインスタンスの作成およびプロビジョニング」

- 第7.3.3.2項「メタデータ・サービス・リポジトリの作成および登録」

- 第7.3.3.3項「ターゲット環境の構成」

- 第7.3.3.4項「WebLogic管理対象サーバー接続の作成」

7.3.3.1 Oracle WebLogic管理対象サーバーのインスタンスの作成およびプロビジョニング

Portal Frameworkアプリケーションをデプロイする前に、必要なすべての共有ライブラリとMDSリポジトリが含まれるOracle WebCenter Custom Portalテンプレートに基づいて、WebLogic管理対象サーバーを作成する必要があります。新しい管理対象サーバーの作成方法の手順については、『Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド』の既存のドメインの拡張に関する項を参照してください。

注意:

Portal Frameworkアプリケーションを、Oracle WebCenter Portalのインストール時に作成したいずれかの事前構成済管理対象サーバーまたはドメインの管理サーバーにデプロイすることはお薦めしません。

7.3.3.2 メタデータ・サービス・リポジトリの作成および登録

WebLogic管理対象サーバー・インスタンスを作成およびプロビジョニングした後、Oracle Fusion Middleware Oracle WebCenter Portalの管理のメタデータ・サービス・リポジトリの作成および登録に関する項で説明されているように、WebLogicドメインの管理サーバー・インスタンス上にアプリケーションのメタデータ・サービス・リポジトリ(MDS)スキーマを作成および登録する必要があります。

7.3.3.3 ターゲット環境の構成

管理対象サーバーを作成、および、MDSリポジトリを作成および登録した後、データ・ソースの構成、および、アイデンティティ・ストアおよびポリシー・ストアと資格証明ストアへの接続を継続します。データ・ソースの構成については、『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』のJDBCデータ・ソースの作成に関する項を参照してください。データ・ソースを設定するとき、パスワードを入力する必要があります。そうでないと、アプリケーションのデプロイ時に接続が作成されない場合がありますので注意してください。

7.3.3.4 WebLogic管理対象サーバー接続の作成

JDeveloperの外部に存在するOracle WebLogic管理対象サーバーのインスタンスにJDeveloperを使用してアプリケーションをデプロイできるようにするには、アプリケーションのデプロイ先である管理対象サーバーのインスタンスへの接続を作成する必要があります。Oracle WebLogic管理対象サーバーのインスタンスへの接続を作成する前に、ターゲットの管理対象サーバーのインスタンスが稼働し、必要なライブラリが存在していることを確認します。

Oracle WebLogic管理対象サーバーへの接続を作成するには:

1. JDeveloperで、「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」で、「一般」を開き、「接続」、「アプリケーション・サーバー接続」の順に選択します。

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

4. アプリケーション・サーバー接続の作成ウィザードのステップ1で、新しい接続の名前(WC_CustomPortalなど)を入力し、「次へ」をクリックします。

5. ステップ2で、認証のためのユーザー名とパスワードを指定して、「次へ」をクリックします。

6. ステップ3で、WebLogic管理対象サーバーのホスト名(webcenter.myserver.example.comなど)およびポート番号(7888など)を入力します。

7. 「WebLogicドメイン」フィールドで、WebLogic管理対象サーバーのインスタンスが作成されるドメインの名前(wc_domainなど)を指定し、「次へ」をクリックします。

8. ステップ4で、「接続のテスト」をクリックします。
テストが正常終了した場合、ターゲットのWebLogic管理対象サーバーへの接続は作成されています。

9. 「終了」をクリックします。

7.3.4 管理対象サーバーへのPortal Frameworkアプリケーションのデプロイ

Portal Frameworkアプリケーションは、ローカル・アプリケーション・データ・ソースまたはグローバル・データ・ソースのどちらかを使用して、管理対象サーバーにデプロイできます。ローカル・アプリケーション・データ・ソースには、デプロイされたアプリケーションからしかアクセスできません。ただし、JDeveloperから直接デプロイされた場合に他のデータ・ソースを構成しなくても正常に機能するという点では、簡単なデプロイ方法です。

グローバル・データ・ソースは、サーバー上の他のアプリケーションで共有できることによる利点があります。サーバーでは、グローバル・データ・ソースのすべてのユーザーによってデータベース接続構成の更新がより簡単に維持および利用されます。データ・ソースの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のデータ・ソースの選択に関する項を参照してください。

この項には次のサブセクションが含まれます:

- 第7.3.4.1項「ローカル・データ・ソースを使用した管理対象サーバーへのデプロイ」

- 第7.3.4.2項「グローバル・データ・ソースを使用した管理対象サーバーへのデプロイ」

7.3.4.1 ローカル・データ・ソースを使用した管理対象サーバーへのデプロイ

管理対象サーバーにデプロイする際、アプリケーションのEARファイルが生成されます。EARファイルには、MDSリポジトリにデプロイされるメタデータ・コンテンツを含むメタデータ・アーカイブ(MARファイル)がパッケージ化されます。さらに、adf-config.xmlファイルが再構成されて、mds-configがターゲット・デプロイ環境に合わせて変更されます。アプリケーション全体の機能、セキュリティ、キャッシュおよび変更永続性は、変更されません。他のOracleコンポーネントが存在する場合、それらのプロパティもこのファイルで構成されます。同様に、JSFとJSTLの各共有ライブラリも、パッケージ化でweblogic.xmlファイルに追加されます。

ローカル・データ・ソースを使用してPortal Frameworkアプリケーションを管理対象サーバーにデプロイするには:

1. JDeveloperで、アプリケーション・ナビゲータで、デプロイするアプリケーションを開きます。

2. アプリケーションにWebCenterスキーマを使用するタスク・フローが含まれる場合は、ローカル・データ・ソースを作成します。アプリケーションで分析タスク・フローが使用される場合は、アクティビティ・スキーマ用に個別のローカル・データ・ソースを作成します。詳細は、第4.2.2項「データベース接続の設定」を参照してください。

3. 「アプリケーション」メニューから「アプリケーション・プロパティ」を選択します。
「アプリケーションのプロパティ」ダイアログが表示されます(図7-10)。

図7-10 「アプリケーションのプロパティ」ダイアログ

4. ナビゲーション・パネルから「デプロイメント」を選択して、「デプロイメント」オプションを表示します。

5. 「デプロイ中にweblogic-jdbc.xmlディスクリプタを自動生成および同期化」チェック・ボックスが選択されていることを確認し、「OK」をクリックします。

6. 「アプリケーション」メニューから、「デプロイ」、アプリケーション名の順に選択します。
「デプロイメント・アクション」ダイアログが表示されます(図7-11)。

図7-11 デプロイメント・アクションの選択

7. 「アプリケーション・サーバーへのデプロイ」を選択して、「次へ」をクリックします。

8. 管理対象サーバーの接続名(WC_CustomPortalなど)を選択して、「次へ」をクリックします(図7-12)。
デプロイ先のサーバーがリストに表示されていない場合は、追加アイコン(+)をクリックし、接続の詳細を入力してサーバーをリストに追加します。

図7-12 「サーバーの選択」ダイアログ

9. 「ドメイン内の選択したインスタンスへのデプロイ」を選択し、リストから管理対象サーバー(WC_CustomPortalなど)を選択して、「次へ」をクリックします(図7-13)。
通常は、「ドメイン内の全インスタンスへのデプロイ」の選択を解除し、デプロイ先に特定のサーバーおよびクラスタを選択します。これらのオプションの使用の詳細は、オンライン・ヘルプを参照してください。

図7-13 「WebLogicオプション」デプロイメント・ダイアログ

10. 「デプロイメント・サマリー」ダイアログで、デプロイメントの詳細を確認します。「終了」をクリックして、デプロイを開始します。
「デプロイメント構成」ダイアログが表示されます(図7-14)。

11. リポジトリ名(mds-CustomPortalDSなど)を選択し、パーティション名(パーティションが存在しない場合は、デプロイ時に作成されます)を入力して、「デプロイ」をクリックします。

図7-14 「デプロイメント構成」ダイアログ

12. その後、Oracle Fusion Middleware Oracle WebCenter Portalの管理のデプロイ後の構成に関する項の説明に従い、必要に応じてセキュリティまたはデータ・ソース接続の構成を行います。

7.3.4.2 グローバル・データ・ソースを使用した管理対象サーバーへのデプロイ

WebCenter Custom Portalテンプレートを使用して作成された管理対象サーバーでアプリケーションを実行する予定がない場合、またはWebCenterDSとActivitiesDSのどちらでもないカスタム・データ・ソースに対してアプリケーションを実行する予定がある場合は、グローバル・データ・ソースを使用して管理対象サーバーにデプロイすることをお薦めします。

デフォルトのデータ・ソース名を使用することをお薦めしますが、デフォルトではない事前シード済データ・ソースを使用する場合は、それらのデータ・ソースに適切な名前を付けて、その名前にマップされるデータ・ソースを作成するために、デプロイの前または後にグローバル・データ・ソースを作成する手順を実行する必要があります。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のデータ・ソースの選択に関する項を参照してください。

グローバル・データ・ソースを使用して管理対象サーバーにデプロイするには:

1. JDeveloperで、デプロイするアプリケーションを開きます。

2. アプリケーションでデータ・ソースとして使用するJNDI名を決定します。
JNDI名は、アプリケーションで使用するデータベース接続をJDeveloperで作成したのか、それともデフォルトを使用するのかによって異なります。次の表にデフォルトのJNDI名を示します。

データ・ソース

JDeveloperのJNDI名

デフォルトのJNDI名

WebCenterDS

jdbc/WebCenterConnectionNameDS

(WebCenterConnectionNameは、WebCenterスキーマ・データベース接続の名前)

jdbc/webcenter/CustomPortalDS

ActivitiesDS

jdbc/ActivitiesConnectionNameDS

(ActivitiesConnectionNameは、アクティビティ・スキーマ・データベース接続の名前)

jdbc/activities/CustomPortalDS

3. 「アプリケーション」メニューから「アプリケーション・プロパティ」を選択します。

4. ナビゲーション・パネルから「デプロイメント」を選択して、「デプロイメント」オプションを表示します。

5. 「デプロイ中にweblogic-jdbc.xmlディスクリプタを自動生成および同期化」チェック・ボックスが選択されている場合はその選択を解除し、「OK」をクリックします。

6. 「アプリケーション」メニューから、「デプロイ」、アプリケーション名の順に選択します。

7. 「アプリケーション・サーバーへのデプロイ」を選択し、「次へ」をクリックします(図7-15)。

図7-15 デプロイメント・アクションの選択

8. 管理対象サーバーの接続名(WC_CustomPortalなど)を選択して、「次へ」をクリックします(図7-16)。
デプロイ先のサーバーがリストに表示されていない場合は、追加アイコン(+)をクリックし、接続の詳細を入力してアプリケーション・サーバーをリストに追加します。

図7-16 管理対象サーバー接続の選択

9. 「ドメイン内の選択したインスタンスへのデプロイ」を選択し、リストから管理対象サーバー(WC_CustomPortalなど)を選択して、「次へ」をクリックします(図7-17)。
通常は、「ドメイン内の全サーバー・インスタンスへのデプロイ」の選択を解除し、「サーバー・インスタンス」ダイアログを使用して、デプロイ先に特定のサーバーおよびクラスタを選択します。これらのオプションの使用の詳細は、オンライン・ヘルプを参照してください。

図7-17 管理対象サーバーの選択

10. 「デプロイメント・サマリー」ダイアログで、デプロイメントのオプションが正しいことを確認し、「終了」をクリックしてデプロイメントを開始します。
「デプロイメント構成」ダイアログが表示されます(図7-18)。

11. リポジトリ名(mds-CustomPortalDSなど)を選択し、パーティション名(パーティションが存在しない場合は、デプロイ時に作成されます)を入力して、「デプロイ」をクリックします。

図7-18 「デプロイメント構成」ダイアログ

12. その後、Oracle Fusion Middleware Oracle WebCenter Portalの管理のデプロイ後の構成に関する項の説明に従い、必要に応じてセキュリティまたはデータ・ソース接続の構成を行います。

7.4 複数の環境間でのカスタマイズのトランスポート

デプロイされているアプリケーションを新しい環境に移行する場合、ページ、WebCenter Portalのツールとサービス、およびポートレット(PDK-JavaおよびWSRPバージョン2のプロデューサ)に対して行われたカスタマイズも移行する必要があります。このプロセスを支援するエクスポート・ユーティリティとインポート・ユーティリティが用意されています。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「Portal Frameworkアプリケーションのエクスポート、インポート、バックアップおよびリカバリの管理」の章を参照してください。

8 WebCenter Portal Frameworkアプリケーションのライフ・サイクルの理解

この章では、WebCenter Portal Frameworkアプリケーションをライフ・サイクルを通して管理するためのタスク、ツールおよびテクニックを説明します。

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

- 第8.1項「WebCenter Portal Frameworkアプリケーションのライフ・サイクルとは」

- 第8.2項「主要なライフ・サイクル・タスクについて」

- 第8.3項「ポータルのライフ・サイクルへの参加者」

- 第8.4項「構築環境およびテスト環境の理解」

- 第8.5項「ステージング環境および本番環境の理解」

- 第8.6項「ライフ・サイクルを管理するツール」

- 第8.7項「反復開発の理解」

- 第8.8項「夜間ビルド・スクリプトの構成」

- 第8.9項「ステージング環境または本番環境の初期設定」

- 第8.10項「WebCenter Portal Frameworkアプリケーションの既存環境への移行」

- 第8.11項「管理対象サーバーへのデプロイ」

- 第8.12項「ターゲットのサーバーでのアプリケーションのデプロイおよび構成」

- 第8.13項「ステージングから本番に伝播させる伝播ツールの使用」

- 第8.14項「Oracle WebCenter Contentからのコンテンツの伝播」

- 第8.15項「ライフ・サイクルを通したセキュリティの管理」

- 第8.16項「ポートレット・プリファレンスの移行」

- 第8.17項「本番サイトの変更のロールバック」

8.1 WebCenter Portal Frameworkアプリケーションのライフ・サイクルとは

WebCenter Portal Frameworkアプリケーションのライフ・サイクルとは、開発から本番までの、Framework Portalアプリケーションがたどる過程です。ライフ・サイクルのフェーズには、通常、開発、テスト、ステージングおよび本稼働が含まれます。各フェーズでは特定のタスクを実行する必要があります。コンテンツ・リポジトリの設定など、一部のタスクは一度だけ実行します。その他のタスクは、夜間ビルドなどで頻繁に実行されます。ポータルのライフ・サイクルのフェーズについて、表8-1で説明します。

表8-1 WebCenter Portal Frameworkアプリケーションのライフ・サイクルのフェーズ

ライフ・サイクル・フェーズ

主要なアクター/ロール

説明

開発

- 開発者

- コンテンツ・モデラー

- コンテンツ・コントリビュータ

開発ポータルは主にソース・コントロールであり、ファイルベースです。開発者はJDeveloperでローカルの作業をし、統合WebLogic Serverにデプロイします。開発ポータルは、通常、テストのデータとコンテンツを使用します。ライフ・サイクルのこのフェーズで開発される機能の一部は、次のとおりです。

- ポートレット

- タスク・フロー

- 共有ライブラリ

- スキン

- ナビゲーション・モデル

- ページ・テンプレート

- 表示テンプレート

- コンテンツ・モデル

- データ転送とポートレット間通信

- セキュリティ

開発環境からのコードは、(通常夜間に)ビルドされ、クリーンで独立したターゲット環境にデプロイされます。WebCenterには、この目的に適応できるビルド・スクリプトが用意されています。第8.8項「夜間ビルド・スクリプトの構成」を参照してください。

テスト

- 開発者

- QAエンジニア

- IT管理者

開発ポータルは、(通常夜間に)ビルドされ、独立したテスト環境にデプロイされます。テスト環境には、通常、Metadata Service (MDS)とデータベース・ベースのポリシー・ストア、および専用のOracle WebCenter Contentインスタンスが含まれています。

テスト環境には、本番ポータルには組み込まれないテスト・データやテスト・コンテンツが含まれることもあります。

ポートレット・プロデューサは、テスト環境と開発環境で共有される場合もあります。ただし、使用負荷が高い場合には、個別インスタンスの作成をお薦めします。

ステージング

- サイト・マネージャ

- IT管理者

- コンテンツ・コントリビュータ

ステージング環境では、ポータルが本番に移行する前に最終的な構成およびテストが行われる安定した環境が提供されます。コンテンツ・コントリビュータはコンテンツを追加して、ポータルの構造を調整します。

一般に、ステージング環境には、専用のOracle WebCenter Contentサーバーおよび専用のポートレット・プロデューサ・サーバーが含まれます。ステージング・サーバーは、通常、本番サイトのミラーとして保持されます。

本番

- サイト・マネージャ

- IT管理者

- コンテンツ・コントリビュータ

本番ポータルはライブで、エンド・ユーザーも使用できます。本番ポータルは、リソース・マネージャ、Oracle WebCenter Portalのコンポーザなどのツールで変更できます。たとえば、管理者はポータルにポートレットをさらに追加したり、ポータルのコンテンツを再構成できます。

適切な権限を持った個々のユーザーは、ビューをカスタマイズすることも可能です。Oracle Fusion Middleware Oracle WebCenter Portalの管理を参照してください。

WebCenterでは、メタデータを本番環境に移行する伝播ツールが用意されています。第8.13項「ステージングから本番に伝播させる伝播ツールの使用」を参照してください。

コンテンツは、Oracle WebCenter Contentレプリケーション・ツールを使用してプロビジョニングされます。第8.14項「Oracle WebCenter Contentからのコンテンツの伝播」を参照してください。

WebCenterでは、ポートレット・プリファレンスをインポートおよびエクスポートするためのWLSTコマンドを用意しています。詳細は、第8.16項「ポートレット・プリファレンスの移行」を参照してください。

8.2 主要なライフ・サイクル・タスクとは

ライフ・サイクルの各フェーズでは、特定のタスクを実行するアクター(開発者、管理者、コンテンツ・コントリビュータなど)が必要です。この項では、ポータルのライフ・サイクルの各フェーズで実行されるタスクの種類の概要を示します。

- 第8.2.1項「1回かぎりの設定タスク」

- 第8.2.2項「開発環境のタスク」

- 第8.2.3項「夜間ビルド環境のタスク」

- 第8.2.4項「テスト環境のタスク」

- 第8.2.5項「ステージング環境のタスク」

- 第8.2.6項「本番環境のタスク」

8.2.1 1回かぎりの設定タスク

開発、ビルド/テスト、ステージングおよび本番の各環境を設定するには、特定の準備手順を実行する必要があります。表8-2に、これらの予備設定タスクおよびそれを適用する環境のリストを示します。第8.8項「夜間ビルド・スクリプトの構成」および第8.9項「ステージング環境または本番環境の初期設定」も参照してください。

表8-2 一般的な1回かぎりの設定タスク

設定タスク

開発

ビルド/テスト

ステージング

本番

JDeveloperのインストール

はい

いいえ

いいえ

いいえ

Oracle WebCenter Portalのインストール

はい

はい

はい

はい

Oracle WebLogic Serverのインストール(ドメインおよび管理対象サーバーの作成)

いいえ

はい

はい

はい

RCUによる必要なデータベース・スキーマの作成

いいえ

はい

はい

はい

Oracle WebCenter Contentのインストールおよび構成

はい

はい

はい

はい

Oracle Access Managerなどのアイデンティティ管理コンポーネントのインストール

いいえ

はい

はい

はい

ポリシー・ストアでの必要なOracle Platformセキュリティ・サービス・ポリシーの作成

いいえ

はい

はい

はい

資格証明ストアでの必要なユーザー資格証明の作成

いいえ

はい

はい

はい

バックエンド・サーバーへの接続の作成

はい

はい

はい

はい

ビルド・スクリプトの作成

はい

いいえ

いいえ

いいえ

デプロイおよび構成スクリプトの作成

いいえ

いいえ

はい

はい

Oracle WebCenter Portalのパーソナライズの統合/構成 *

はい

はい

はい

はい

* Oracle WebCenter Portalのパーソナライズの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「パーソナライズの管理」の章、および第66章「Oracle WebCenter Portalアプリケーションのパーソナライズ」を参照してください。

環境の初期設定のもう1つのテクニックは、既存のインスタンスのクローニングです。通常、これはステージング・インスタンスから本番インスタンスをクローニングする際に使用します。この「テストから本番へ」の手法の詳細は、『Oracle Fusion Middleware管理者ガイド』のテスト環境から本番環境への移行に関する項を参照してください。

8.2.2 開発環境のタスク

開発環境では、各開発者にはローカルのJDeveloperインスタンスがあり、これがソース・コントロール・システムおよび共有Oracle WebCenter Contentリポジトリに接続されています。開発者はメタデータとコードをソース・コントロールに保存します。ポートレットは個々にプロデューサ・サーバーにデプロイされ、ポータルで使用されます。

開発環境では、開発者は通常、統合WebLogic Serverを使用してアプリケーションをローカルに構築し、実行します。ローカルの開発環境では、MDSおよびポリシー・ストアはどちらもファイルベースです。

詳細は、第2章「開発環境の設定」および第3章「チームでの効率的な作業」を参照してください。

8.2.3 夜間ビルド環境のタスク

通常、開発者はJDeveloperで作業してコード変更をローカルに統合WebLogic Serverで実行します。コード変更はソース・コントロール・システムにチェックインされます。

毎日夜間にビルドされるクリーンな環境を作成するビルド環境を設定する場合には、各ビルドについて次のような特定のタスクを実行する必要があります。

- スキーマの作成(通常、Oracleリポジトリ作成ユーティリティ(RCU)を使用)

- ドメインの作成および設定

- 管理対象サーバーの作成および構成

- アプリケーションのデプロイ

WebCenterには、環境に対して変更および使用できるビルド・スクリプトのサンプルが用意されています。第8.8項「夜間ビルド・スクリプトの構成」を参照してください。夜間ビルドは、通常、QAエンジニア、テクニカル・ライター、マネージャなどの組織内の人間が使用できます。第8.4項「構築環境およびテスト環境の理解」も参照してください。

Oracle WebCenter Portalのパーソナライズの開発環境への統合については、第66.2項「アプリケーションへのパーソナライズの統合」を参照してください。

8.2.4 テスト環境のタスク

通常、テスト環境はQAエンジニアがアクセスする夜間ビルド環境のミラーです。クリーンなテスト環境の提供に関与するタスクは、通常、クリーンなビルド環境の作成と同じです。第8.4項「構築環境およびテスト環境の理解」も参照してください。

8.2.5 ステージング環境のタスク

実行時ツールは、開発環境よりもステージング環境でさらに大きな役割を果たします。ただし、開発の更新をステージ環境に対して不定期にデプロイする必要があります。これらがさらに断続的な更新になるように、WebCenterでは、使用環境に合せてコピーと変更が可能なデプロイおよび構成スクリプトのセットを備えています。デプロイおよび構成スクリプトは、環境間の変数である情報(サーバー名、ポート、コンテンツ管理接続など)を区分けします。詳細は、第8.5.1項「ステージング環境のプロビジョニング」および第8.12項「ターゲットのサーバーでのアプリケーションのデプロイおよび構成」を参照してください。

Oracle WebCenter Portalのパーソナライズの統合および構成については、Oracle Fusion Middleware Oracle WebCenter Portalの管理のパーソナライズの要件と制限に関する項を参照してください。

8.2.6 本番環境のタスク

ステージング環境で変更をテストして承認したら、これらを本番環境にプッシュする必要があります。WebCenterでは、WebCenter Portal管理コンソールに、すべてのポータルのメタデータをステージングから本番サーバーに移行する伝播ツールが用意されています。詳細は、第8.13項「ステージングから本番に伝播させる伝播ツールの使用」を参照してください。

WebCenterでは、ポートレット・プリファレンスをインポートおよびエクスポートするためのWLSTコマンドを用意しています。詳細は、第8.16項「ポートレット・プリファレンスの移行」を参照してください。

8.3 ポータルのライフ・サイクルへの参加者

様々な人がポータルのライフ・サイクルに関与します。一般に、これらの人々(表8-1の主要なアクター)は、次の1つ以上の一般的なロールに分類されます。

- 開発者: JDeveloperおよび第8.8項「夜間ビルド・スクリプトの構成」で説明するビルド・スクリプトを使用します。

- IT管理者: 第8.12項「ターゲットのサーバーでのアプリケーションのデプロイおよび構成」で説明するデプロイおよび構成スクリプトを使用します。

- サイト・マネージャ: Portal Frameworkアプリケーションに対する管理権限を持っています。サイト・マネージャはWebCenter Portal管理コンソールを使用して、ポータルのレイアウト、コンテンツおよびセキュリティ設定を変更します。Oracle Fusion Middleware Oracle WebCenter Portalの管理および第8.15項「ライフ・サイクルを通したセキュリティの管理」も参照してください。

- コンテンツ・モデラー: Oracle WebCenter ContentのSite Studioデザイナを使用してコンテンツをモデリングします。詳細は、Site StudioおよびOracle WebCenter Contentのドキュメントを参照してください。

- コンテンツ・ディストリビュータ: イメージ、ドキュメント・ファイル、ビデオおよびオーディオ・コンテンツなど、ポータルに表示される、またはポータルから使用できるすべてのコンテンツを開発します。

8.4 ビルド環境およびテスト環境の理解

開発者は通常、ローカルにビルドして実行しますが、自動的に夜間に実行されるビルド環境をお薦めします。ビルド環境とは、Portal Frameworkアプリケーションのクリーンなデプロイメントを意味します。

ビルド環境を設定するには、一度バックエンド・サーバーおよび接続をインストールして作成する必要があります。たとえば、ビルド環境にはWebLogic Serverインスタンスが必要で、通常、インストールされたOracle WebCenter Contentインスタンスへのアクセスが含まれます。さらに、ビルド環境にはデータベースに基づくMDSとポリシー・ストアが含まれます。

図8-1に、開発環境から、ビルド環境、テスト環境への一般的な流れを示します。

注意:

図8-1は、考えられるすべてのポータル機能を表してはいません。たとえばOracle WebCenter Portalのパーソナライズはこの図には描かれていません。詳細は、第66.3項「パーソナライズ・ファイルのデプロイ」を参照してください。

図8-1 開発環境からビルド環境、テスト環境へのフロー

Antベースのビルド・スクリプトを使用して、ソース・コントロールからEARを構築してデプロイする方法が一般的です。EARには、メタデータ、コードおよびシード済ポリシーが含まれます。また、ビルド・スクリプトは、ポートレットに対して行われたカスタマイズをEARメタデータにパッケージ化します。第8.8項「夜間ビルド・スクリプトの構成」を参照してください。夜間ビルドで実行されるタスクには、次のようなものがあります。

- スキーマの作成(RCUを使用)

- 管理対象サーバーおよびドメインの設定

- EARの構築およびデプロイ

- その他の設定タスクの実行

ベスト・プラクティスとして、Oracle WebCenter Contentアーカイブ・ツールを使用して、Oracle WebCenter Contentのテスト・コンテンツとWebアセットを環境間で移動します。第8.14項「Oracle WebCenter Contentからのコンテンツの伝播」を参照してください。ポートレットのデプロイについては、第61章「ポートレット・プロデューサのデプロイ」を参照してください。

Oracle WebCenter Portalのパーソナライズの開発環境への統合については、第66.2項「アプリケーションへのパーソナライズの統合」を参照してください。

8.5 ステージング環境および本番環境の理解

この項では、ポータルのライフ・サイクルのステージング・フェーズおよび本番フェーズについて説明します。図8-2に、ステージング環境から本番環境への一般的な流れを示します。

注意:

図8-2は、考えられるすべてのポータル機能を表してはいません。たとえばOracle WebCenter Portalのパーソナライズはこの図には描かれていません。詳細は、第66.3項「パーソナライズ・ファイルのデプロイ」を参照してください。

図8-2 ステージング環境から本番環境への流れ

8.5.1 ステージング環境のプロビジョニング

ステージング環境では、ポータルが本番に移行する前に最終的な構成およびテストが行われる安定した環境が提供されます。一般に、ステージング環境には、専用のOracle WebCenter Contentサーバーおよび専用のポートレット・プロデューサ・サーバーが含まれます。一般的な設定タスクは、表8-2を参照してください。

初めてステージング環境を設定する場合には、第8.9項「ステージング環境または本番環境の初期設定」を参照してください。ステージング環境への増分変更の詳細は、第8.12項「ターゲットのサーバーでのアプリケーションのデプロイおよび構成」を参照してください。

必要な場合は、Oracle WebCenter Contentアーカイブ・ツールを使用して、Oracle WebCenter ContentのコンテンツとWebアセットをテスト環境とステージング環境との間で移動できます。第8.14項「Oracle WebCenter Contentからのコンテンツの伝播」を参照してください。ポートレットの移行については、第8.16項「ポートレット・プリファレンスの移行」を参照してください。

パーソナライズの要件、依存性およびオプションの全リストは、Oracle Fusion Middleware Oracle WebCenter Portalの管理のパーソナライズの要件と制限に関する項を参照してください。

8.5.2 ステージング環境へのコンテンツの追加

コンテンツ開発者は、Oracle WebCenter Contentコンテンツ・コントリビューション・ツールを使用して、コンテンツをステージング・サーバーに直接追加できます。Oracle WebCenter Contentのコンテンツ・ワークフロー機能を使用して、コンテンツの承認を管理できます。また、WebCenterにはコンテンツの作成および編集用のブラウザベースのツールが備わっています。たとえば、次の操作が可能です。

- 既存のOracle WebCenter Contentのリージョン・データ・ファイルの編集

- 新規Oracle WebCenter Contentのリージョン・データ・ファイルの作成

- 既存のHTMLコンテンツの編集

- 新規イメージのアップロード

8.5.3 ステージングから本番へのポータルの移動

ステージング環境は、プロビジョニングおよびテストが完了すると、本番環境に移行してユーザーがアクセスできるようになります。ライブ本番環境では、自動スクリプトやレプリケーション・テクニックを使用してメタデータ、コンテンツ、Webアセットに対する増分更新を実行できます。

通常、そのような更新は個々のコンテンツ・ディストリビュータではなく、サイト・マネージャが実行します。詳細は、第8.13項「ステージングから本番に伝播させる伝播ツールの使用」を参照してください。

コンテンツ・モデルやリージョン定義の変更は、サイト・マネージャにより本番サーバーにプッシュされます。Oracle WebCenter Contentレプリケーションを使用して、ステージングおよび本番サーバー間でコンテンツをレプリケートできます。第8.14項「Oracle WebCenter Contentからのコンテンツの伝播」を参照してください。

WebCenterでは、ポートレット・プリファレンスをインポートおよびエクスポートするためのWLSTコマンドを用意しています。詳細は、第8.16項「ポートレット・プリファレンスの移行」を参照してください。

8.6 ライフ・サイクルを管理するツール

WebCenter PortalはJDeveloperおよびOracle ADFの上に構築されます。そのため、アプリケーションのライフ・サイクル管理では、次のような利点があります。

- 開発フレームワーク: JDeveloperおよびOracle ADFには、アプリケーションの構築および更新に使用できるツールとフレームワークが備わっています。Portal Frameworkアプリケーションへのポートレット、コンテンツおよびカスタマイズ機能の追加は、目的のオブジェクトをソースまたはWYSIWYG環境にドラッグ・アンド・ドロップするだけで済みます。

- 反復開発: WebCenterには、チームの生産性を大きく向上させる反復開発機能が備わっています。第2.3.1項「Portal Frameworkアプリケーションでの反復開発の準備」を参照してください。

- ラウンドトリップ開発: ラウンドトリップ開発とは、メンテナンスや拡張のため、デプロイされた実行時ポータルからJDeveloperにリソースを戻すことができる機能および技法です。ラウンドトリップ開発の詳細は、第9.6項「ラウンドトリップ開発での作業」を参照してください。

- エンタープライズ・デプロイメント: アプリケーションを本番環境にデプロイする準備ができたら、WebCenterで提供されるデプロイメント・スクリプトを使用できます。詳細は、第8.12項「ターゲットのサーバーでのアプリケーションのデプロイおよび構成」と第8.13項「ステージングから本番に伝播させる伝播ツールの使用」を参照してください。デプロイメントの詳細は、第7章「Portal Frameworkアプリケーションのデプロイおよびテスト」を参照してください。

注意:

WebCenter Portalのサービスでは、通常、Oracle WebCenter Portalのディスカッション・サーバーのようなバックエンドが開発環境で使用できる必要があります。

- 規格に基づいた管理: ブラウザベースのツールにより、管理者はPortal FrameworkアプリケーションとWebCenter Portalのツールとサービスをデプロイ、構成および管理できます。さらに、業界標準に基づいたJMXメソッドで構築されたツールにより、管理者はヘルス・ステータス、パフォーマンス、人気に関する精度の高い制御と監視メカニズムを提供します。長期にわたる過去のパフォーマンスやステータスのレポート(単独のOracle Application Serverコンテキスト内)を取得するツールも備わっています。Portal Frameworkアプリケーション・メトリックは、使い慣れたApplication Server Controlの監視および管理インタフェースを使用して提供されます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理を参照してください。

8.7 反復開発の理解

- 第8.7.1項「反復開発とは」

- 第8.7.2項「反復開発のしくみ」

- 第8.7.3項「反復開発の有効化」

8.7.1 反復開発とは

反復開発では、統合WebLogic ServerでPortal Frameworkアプリケーションを実行しながら、このアプリケーションに変更を加え、ブラウザの現在のページをリフレッシュするだけで、その変更の効果を確認できます。反復開発機能は、特定の最適化機能を無効にすることにより動作します。反復開発によって、開発者はポータルの構築時により速く効率的に作業できます。

たとえば、反復開発では、次のコンポーネントに対する変更が、ブラウザをリフレッシュするとすぐに確認できます。

- ページ定義

- ナビゲーション・モデル

- ページ階層

- 既存のJSPXファイル

- ページ・テンプレート

- リソース・カタログ

- ページへのタスク・フローの追加

- ページへのポートレットの追加

次の種類の操作は、反復開発ではサポートされていません。これらの操作は、アプリケーションの再実行が必要になります。

- 新しいファイルの明示的な作成(JSPX、ページ定義など)。

- 構成ファイル(web.xmlやadfc-config.xmlなど)の編集。

- 新しいファイルの暗黙的な作成。たとえば、ページ階層のノードにサブページを追加すると、新しい*pages.xmlファイルが作成されます。

8.7.2 反復開発のしくみ

反復開発は、特定のMDSおよび実行時レイヤーのキャッシュをオフにすることで動作します。これらのパフォーマンス最適化機能が無効になるため、開発環境でアプリケーションを実行するとパフォーマンスが低下していることに気付く場合があります。

注意:

アプリケーションを統合WebLogic Serverにデプロイすると、web.xmlファイルのorg.apache.myfaces.trinidad.CHECK_FILE_MODIFICATIONフラグが、自動的にtrueに設定されます。この設定により、サーバーはJSPファイルとスキニングCSSファイルの変更時刻を自動的にチェックして、それらに変更があるときには、保存した状態を破棄します。反復開発機能を有効化しているかどうかにかかわらず、この構成になります。

反復開発を有効にすると、アプリケーション構成に次の変更が行われます。

- MDSキャッシュのサイズが0に設定されます。この設定により、すべてのメタデータ・ファイルがリクエストのたびにリロードされます。

- ナビゲーション・モデルのキャッシュは、リクエストのたびに無効化されます。

スキン開発の場合、圧縮されていないスキンを使用するようにアプリケーションを設定できます。この設定はデフォルトではありません。開発環境でのみ使用してください。web.xmlを更新して、次のコンテキスト・パラメータでこの機能を有効にできます。

<context-param>
<param-name>org.apache.myfaces.trinidad.DISABLE_CONTENT_COMPRESSION</param-name>
<param-value>true</param-value>
</context-param>

注意:

ポータルでOracle JSF Portlet Bridgeポートレットを利用していると、ADFはコンシューマとプロデューサ間でのスキンの共有を試行します。そのため、コンシューマ側で圧縮を無効にしているときには、プロデューサ側でも圧縮を無効にする必要があります。このようにしていないと、プロデューサは、コンシューマが生成した非圧縮IDと一致する正しいコードを生成しなくなります。第58章「Oracle JSF Portlet Bridgeを使用したJSFアプリケーションからのポートレットの作成」も参照してください。

ポータルが統合WebLogic Serverで実行しているときにリソースのベース定義(ソース)を実行時に編集する場合、反復開発が予想どおりに機能しません。つまり、JDeveloperでリソース・ファイルを編集して保存すると、実行ページをリフレッシュしても変更は表示されません。これは、統合WebLogic Serverでリソースをベース・ドキュメント・レベルで実行時に編集すると、リソースのベース・ドキュメントのコピーがMDS書込みディレクトリに作成されるためです。それ以降、このコピーされたバージョンが使用され、JDeveloperのベース・ドキュメントのバージョンは無視されます。この問題に遭遇し、ファイルに行われた変更をJDeveloperで取得する場合、次の手順を行った後にアプリケーションを再実行する必要があります。

1. アプリケーション・ナビゲータで、アプリケーション名の隣の「アプリケーション・メニュー」アイコンをクリックし、「アプリケーション・プロパティ」を選択します。

2. 「アプリケーション・プロパティ」ダイアログで、左側のペインの「実行」ノードを開き、「MDS」を選択します。

3. 右側のペインで「各実行の前にカスタマイズを削除」を選択します。これにより、アプリケーションが実行されるたびに、すべての実行時カスタマイズのMDSがクリアされます。

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

8.7.3 反復開発の有効化

詳細は、第2.3.1.1項「反復開発の有効化」を参照してください。

8.8 夜間ビルド・スクリプトの構成

Portal Frameworkアプリケーションを作成すると、Antビルド・スクリプトとプロパティ・ファイルがファイルシステム上のメイン・アプリケーション・ディレクトリに自動的に作成されます。作成されるファイルは、次のとおりです。

- build.xml: アプリケーションのクリーニング、コンパイル、構築およびデプロイのための標準のターゲット一式が含まれています。このファイルをソース・コントロールにチェックインして開発者が使用できるようにします。

- build.properties: アプリケーション用のJDeveloperワークスペース・ファイル(.jwsファイル)の場所とアプリケーションのWARファイルの出力フォルダを指定します。build.xmlファイルにはbuild.propertiesファイルが含まれ、これによりbuild.xmlはこれらの環境固有の変数を取り込むことができます。プロパティ・ファイルをカスタマイズして、ビルド環境で使用する設定および環境変数を一致させることができます。

ビルド・スクリプトを実行する前に、JAVA_HOME環境変数とANT_HOME環境変数が適切に設定されていることを確認します。例:

JAVA_HOME = /path_to_your_java_installation/jdk
ANT_HOME = /path_to_your_ant_installation

アプリケーションを構築およびデプロイするには、antターゲットallを使用します。例:

ant all

Oracle WebCenter Portalのパーソナライズを使用してポータルのパーソナライズ機能を提供している場合、手動でbuild.xmlファイルを更新する必要があります。詳細は、第66.3項「パーソナライズ・ファイルのデプロイ」を参照してください。

8.9 ステージング環境または本番環境の初期設定

ステージング環境または本番環境の初期設定およびプロビジョニングの詳細は、『Oracle Fusion Middleware管理者ガイド』のOracle WebCenter Portalの新しいターゲット環境への移行に関する項を参照してください。セキュリティ・ポリシーおよび資格証明の環境への最初の移動については、第8.15項「ライフ・サイクルを通したセキュリティの管理」も参照してください。

8.10 WebCenter Portal Frameworkアプリケーションの既存環境への移行

このシナリオでは、Oracle WebCenter Portalがインストールおよび構成されている作業用本番環境があり、変更内容を本番環境にローリングする前に、アプリケーションや構成の変更をテストします。たとえば、既存のセキュリティ・ポリシーや構成を変更したとします。

デプロイ・スクリプトと構成スクリプトによる既存の環境の更新をお薦めします。サンプル・スクリプトはWebCenterに用意されているので、それを環境に合うように自由に変更できます。詳細は、第8.12項「ターゲットのサーバーでのアプリケーションのデプロイおよび構成」および第66.3項「パーソナライズ・ファイルのデプロイ」を参照してください。

WebCenterには、WebCenter Portal管理コンソールに組み込まれた伝播ツールが備わっています。伝播ツールは、アプリケーションをステージング環境から本番環境へ移動するためのものです。第8.13項「ステージングから本番に伝播させる伝播ツールの使用」を参照してください。

Oracle WebCenter Contentのコンテンツの移動の詳細は、第8.14項「Oracle WebCenter Contentからのコンテンツの伝播」を参照してください。

セキュリティ・ポリシーと資格証明の移動の詳細は、第8.15項「ライフ・サイクルを通したセキュリティの管理」を参照してください。

詳細は、『Oracle Fusion Middleware管理者ガイド』のOracle WebCenter Portalの既存のターゲット環境への移行に関する項を参照してください。

8.11 管理対象サーバーへのデプロイ

JDeveloperで作業するPortal Frameworkアプリケーション開発者は、通常、統合WebLogic Serverにアプリケーションをローカルにデプロイします。ライフ・サイクルの他のフェーズ(テスト、ステージングおよび本番)では、適切な管理対象サーバーへのデプロイメントをお薦めします。あるいは、ポートレット開発の場合、サービス・プロデューサ管理対象サーバーにデプロイする必要があります。管理対象サーバーへのデプロイの詳細は、第7.3項「WebLogic管理対象サーバーへのPortal Frameworkアプリケーションのデプロイ」および第66.3項「パーソナライズ・ファイルのデプロイ」を参照してください。Oracle Fusion Middleware Oracle WebCenter Portalの管理の管理対象サーバーの作成に関する項も参照してください。

8.12 ターゲットのサーバーでのアプリケーションのデプロイおよび構成

ライフ・サイクルの間、通常のポータルはテスト・サーバー、ステージング・サーバーおよび本番サーバーへデプロイされます。この項では、Portal Frameworkアプリケーションをターゲットのサーバーでデプロイおよび構成する手法について説明します。

- 第8.12.1項「概要」

- 第8.12.2項「デプロイおよび構成スクリプトの使用」

8.12.1 概要

WebCenterに用意された構成可能スクリプトで、アプリケーションを容易に該当するサーバーのインスタンスにデプロイして構成できます。ビルドおよびデプロイ・スクリプトは、ターゲットのサーバーにサーバーと接続の情報を指定する、シンプルなプロパティ・ファイル・パラメータを取ります。各ターゲットのサーバーに対して一度だけこのプロパティ・ファイルを作成する必要があります。その後、デプロイを実行し、パラメータとして適切なプロパティ・ファイルを使用してスクリプトを構成します。

アプリケーションのデプロイには、ojdeployを使用するのではなく、この項で説明するスクリプトを使用することをお薦めします。ベスト・プラクティスは、JDeveloperにより提供されるAntタスクを使用してアプリケーションを構築し、この項で説明するスクリプトを使用してアプリケーションをデプロイおよび構成することです。ojdeployコマンドライン・ユーティリティを使用すると、JDeveloper IDEを起動しないでJDeveloperからアプリケーションをデプロイできます。

注意:

第8.13項「ステージングから本番に伝播させる伝播ツールの使用」で説明する伝播ツールは、主に、サイト管理者が承認されたサイト構造の変更内容を停止時間が生じることなく本番環境にプッシュする際に使用します。

ヒント:

ビルド・スクリプトおよびデプロイ・スクリプトは、サーバー名、ポート、コンテンツ管理接続、データベース接続など、環境間で可変の情報を分離します。Portal Frameworkアプリケーションの大半の部分では、アプリケーションを別のサーバーに再デプロイする際に変更する必要はありません。たとえば、アプリケーションの名前は変更しません。

8.12.2 デプロイおよび構成スクリプトの使用

この項で説明するデプロイおよび構成スクリプトを使用するのは、主に、本番アプリケーションがほとんど読取り専用でライブの場合のみです。このシナリオでは、コンテンツ・ディストリビュータがステージングされたアプリケーションに対してアクティブな変更を加え、コンテンツを本番へ移行する前にコンテンツの承認を受けます。自動コンテンツ・レプリケーションを使用して、適切なワークフローの承認後にコンテンツをステージングから本番へ移行することをお薦めします。第8.14項「Oracle WebCenter Contentからのコンテンツの伝播」を参照してください。

セキュリティ変更は、デプロイおよび構成スクリプトによる影響を受けません。本番へのサイト構造の変更をプッシュするには、管理者は、第8.13項「ステージングから本番に伝播させる伝播ツールの使用」で説明するように伝播ツールを使用できます。第8.15項「ライフ・サイクルを通したセキュリティの管理」も参照してください。

アプリケーションをターゲットの環境にデプロイして構成するには:

1. 端末のウィンドウで、デプロイおよび構成スクリプトを含むディレクトリに移動します。これらのスクリプトはcreate_profile.cshおよびdeploy_and_config.cshと呼ばれます。これらのファイルはWEBCENTER_HOME/webcenter/scripts/stage2prodにあります。WEBCENTER_HOMEは、WebCenterがインストールされるディレクトリです。

注意:

stage2prodのデプロイおよび構成スクリプトは、サンプルです。別の場所で独自のスクリプトを自由に開発できます(デプロイ環境でサンプルをコピーして、それを変更した後)。

2. まず、ターゲットのサーバーのURL、ユーザー名、パスワードなどのターゲット環境に固有の情報をsetup.propertiesファイルに記述する必要があります。setup.propertiesファイルはWEBCENTER_HOME/webcenter/scripts/stage2prod/setupにあります。それには、setup.propertiesファイルを開いて、ターゲット環境の該当する値を追加します。例8-1にサンプル・ファイルを示します。

注意:

WebLogic Serverデプロイメントでは、WebSphereサーバー・プロパティの下にリストされたプロパティは無視してかまいません。Oracle Fusion Middlewareサードパーティ・アプリケーション・サーバー・ガイドのWebSphereにデプロイされたアプリケーションのデプロイおよび構成スクリプトの使用に関する項も参照してください。

例8-1 setup.propertiesサンプル・ファイル

# Adminserver
admin.jmx.url=t3\://hostname\:7001
admin.user=weblogic
admin.password=welcome1

# Application
webcenter.app.name=webapp
webcenter.app.server=WC_CustomPortal
webcenter.app.version=V2.0

3. create_profile.cshとdeploy_and_config.cshを更新して、デプロイ環境に反映させます。

setenv WC_HOME <webcenter_home>
setenv SCRIPTS_DIR <scripts_home>

WC_HOMEはWebCenterのホームで、SCRIPTS_DIRはスクリプトが置かれている場所です。デフォルトでは、スクリプトの場所は$WC_HOME/webcenter/scripts/stage2prodです。スクリプトを別の場所にコピーした場合は、SCRIPTS_DIRをその場所に設定してください。

4. create_profileスクリプトを実行します。このスクリプトへの入力は、setup.properitesファイルです。たとえば、Linux環境では次のように入力します。

./create_profile.csh

このスクリプトは、アプリケーション環境を調べ、WEBCENTER_HOME/webcenter/scripts/stage2prod/setupにwcconfig.propertiesという出力プロパティ・ファイルを作成します。

5. 必要に応じて、出力ファイルwcconfig.propertiesの名前を、ターゲット環境を反映する名前に変更します。たとえば、ターゲット環境がステージング環境の場合には、出力ファイルの名前をwstage.propertiesのように変更できます。
wcconfig.propertiesファイルは、ターゲット環境でのポータルの実行に必要なすべての構成情報を指定します。たとえば、コンテンツ管理リポジトリ、omniポートレット、WSRPプロデューサ、Oracle WebCenter Portalのパーソナライズなどの設定が含まれます。例8-2にサンプルprofile.propertiesファイルを示します。

例8-2 サンプルprofile.propertiesファイル

webcenter.wcps.app.name=wcps-services
webcenter.wcps.app.server=WC_Utilities
admin.jmx.url=t3\://hostname\:7001
doclib.Content.cis.socket.host=hostname
app.mds.jndi=jdbc/mds/SpacesDS
webcenter.app.archive=/net/hostname/scratch/webapp.ear
doclib.Content.cis.socket.port=9444
webcenter.wcps.archive=/net/hostname/scratch/wcps.mar
webcenter.app.name=webapp
admin.user=weblogic
app.mds.repository=mds-SpacesDS
app.mds.partition=wcps-services
webcenter.app.version=V2.0
web.OmniPortlet.url=http\://hostname\:7101/portalTools/omniPortlet/providers/omniPortlet
app.restart=false
webcenter.app.server=WC_CustomPortal

注意:

profile.properties内のプロパティはすべて値が指定されている必要があります。プロパティが不要の場合には、値を空のままにせず、削除するかコメント・アウトします。

6. create_profileを実行して、各ターゲット環境にプロパティ・ファイルを作成します。たとえば、テスト、ステージングおよび本番環境にそれぞれファイルを作成できます。

7. wcconfig.propertiesファイル(あるいは名前を変更した場合はそのファイル)を入力として受け入れるようにdeploy_and_configスクリプトを編集します。

8. deploy_and_confgスクリプトを実行します。このスクリプトへの入力はprofile.propertiesファイル(またはファイル名を変更したファイル)です。たとえば、Linux環境では次のように入力できます。

./deploy_and_config.csh

deploy_and_configスクリプトは、入力として2つのモードのうちの1つを取ります。2つのモードとは、deploy_configとp13n_metadataです。例:

./deploy_and_config.csh p13n_metadata

deploy_configモードは、入力がdeploy_and_config.cshに渡されない場合のデフォルト・モードです。deploy_configモードは、デプロイと構成のタスクを実行します。パーソナライズ・メタデータを更新するのみの場合には、スクリプトの入力としてp13n_metadataに渡してデフォルト動作をオーバーライドできます。

このスクリプトは、Portal Frameworkアプリケーションをデプロイして構成し、ターゲット環境で実行します。

8.12.3 デプロイ後の変更の管理

アプリケーションのデプロイ後に実行されたWebCenter Portal構成の変更はすべて、MDSにカスタマイズとして保存されます。たとえば、アプリケーションにconnections.xmlで定義された接続があり、その後別の管理対象サーバーにアプリケーションをデプロイし、Oracle Enterprise Manager Fusion Middleware ControlコンソールまたはWLSTを使用して構成を実行した場合、その変更内容はMDSにカスタマイズとして保存されます。それ以降、新しいEARファイルをデプロイしても、それ以前に実行した接続の変更内容は有効のままで、EARファイル内の接続の定義をオーバーライドします。Fusion Middleware ControlコンソールまたはWLSTで実行した構成の変更内容は、再デプロイ後も存続します。Oracle Fusion Middleware Oracle WebCenter Portalの管理のOracle WebCenter Portal管理ツールに関する項も参照してください。

注意:

ポートレット・プロデューサをデプロイする際には、カスタマイズは現在構成されているプロデューサの接続にアップロードされます。デプロイおよび構成スクリプトを使用して、プロデューサ接続を管理する(デプロイ後に再構成してからアプリケーションを再デプロイするのではなく)ことをお薦めします。デプロイおよび構成スクリプトでは、接続情報が変更されるたびにプロデューサのカスタマイズが適切に再デプロイされます。

8.13 ステージングから本番に伝播させる伝播ツールの使用

WebCenter Portal管理コンソールには、ポータル・メタデータをステージングから本番サーバーへ移行する伝播ツールが備わっています。サイト管理者はこのツールを時々使用して、承認されたサイト構造の変更内容を停止時間が生じることなく本番サーバーにプッシュします。

注意:

伝播ツールは、ポータルのメタデータとOracle WebCenter Portalのパーソナライズ・ファイルの伝播をサポートしています。パーソナライズのファイルの伝播の詳細は、第66.3.4項「パーソナライズ・ファイルの伝播」を参照してください。

注意:

WebCenterでは、ポートレット・プリファレンスをインポートおよびエクスポートするためのWLSTコマンドを用意しています。そのコマンドを使用して、ステージング・サーバーと本番サーバーの間でポートレット・プリファレンス・データをレプリケートします。詳細は、第8.16項「ポートレット・プリファレンスの移行」を参照してください。

- 第8.13.1項「伝播ツールの概要」

- 第8.13.2項「伝播ツールの構成」

- 第8.13.3項「ポータル・メタデータの伝播」

8.13.1 伝播ツールの概要

WebCenterには、ポータル・メタデータをステージングから本番に移行する伝播ツールが備わっています。実際には、ステージング環境と本番はステージング・ポータルに変更が施されるまでは同一のままです。変更内容はテストして承認されると、管理者は伝播ツールを使用して変更内容を本番サーバーにプッシュします。この転送の際には、本番サーバーを再起動する必要はありません。

適切に構成されていれば、伝播ツールは図8-3に示すようにWebCenter Portal管理コンソールにタブとして表示されます。

図8-3 「伝播」タブ

「伝播」タブの「ラベル履歴」部分には、各伝播に作成されたラベル、「伝播」タブの外側に作成されたラベル、デプロイ中に作成されたラベルやWLSTを使用して作成されたラベルなどのリストが表示されます。各ラベルには、最後の伝播が実行されてから変更されたファイルのリストが表示されます。ラベルの内容を表示するには、図8-4に示すように、ラベル名の左の矢印ボタンをクリックします。

図8-4 ラベルを開いたときの「伝播」タブ

8.13.2 伝播ツールの構成

注意:

伝播ツールの使用で、いずれかのMDSドキュメントのファイル名にマルチバイトのNLS文字が含まれている場合、ステージング・マシンはそのNLSに対して構成する必要があります。

「伝播」タブは、ステージング・サーバーにデプロイされたポータルでURL接続が構成されている場合、WebCenter Portal管理コンソールに表示されるのみです。このURL接続は本番サーバーを指しており、ProductionURLConnectionという名前である必要があります。

このURL接続の構成には、Fusion Middleware Controlコンソールを使用するかOracle WebLogic Scripting Tool (WLST)を使用するかの2つの選択肢があります。この項では、両方のテクニックを説明します。

8.13.2.1 Oracle Enterprise Manager Fusion Middleware ControlコンソールによるURL接続の構成

Fusion Middleware ControlコンソールでURL接続を構成するには:

1. ブラウザで、ステージング・サーバー・ドメインのFusion Middleware Controlコンソールを開きます。Fusion Middleware Controlコンソールの起動の詳細は、『Oracle Enterprise Manager管理者ガイド』を参照してください。

2. ナビゲーション・ツリーで、「アプリケーションのデプロイ」フォルダを開き、アプリケーションをクリックします。図8-5を参照してください。

3. 右側のアプリケーション・ペインで、「アプリケーションのデプロイ」メニューを開き、「ADF」サブメニューから「ADF接続の構成」を選択します。図8-5に示すように、「ADF接続構成」パネルが開きます。

図8-5 Fusion Middleware Controlコンソールでのアプリケーションの選択

4. 「接続の作成」ボックスで、URLの「接続タイプ」を選択して「接続名」にProductionURLConnectionと入力します。図8-6を参照してください。

注意:

接続の名前はProductionURLConnectionにしてください。この名前は大文字と小文字を区別します。

図8-6 接続の作成

5. 「URL接続」ボックスで、「編集」をクリックします。

6. 「URL接続」ダイアログ・ボックスに次のとおり入力します。

- URL: 本番サーバーのURL(ホスト名とポート番号を含む)を入力します。

- ユーザー名: 接続用ユーザー名を入力します。

- パスワード: 接続用パスワードを入力します。

- 認証レルム: 「認証レルム」の値を入力する必要があります。このフィールドを空白のままにしないでください。ProductionRealmなどの任意の文字列を入力できます。
残りのフィールドには、デフォルト値をそのまま使用できます。図8-7を参照してください。

図8-7 「URL接続」ダイアログ

7. 「URL接続」ダイアログに入力したら、「OK」をクリックします。

8. Fusion Middleware Controlコンソール・ウィンドウの右上隅にある「適用」をクリックします。

8.13.2.2 WLSTによるURL接続の構成

Oracle WebLogic Scripting Tool (WLST)コマンドを使用してURL接続を作成できます。コマンドへのパラメータは、前述の項第8.13.2.1項「Oracle Enterprise Manager Fusion Middleware ControlコンソールによるURL接続の構成」で説明した、Fusion Middleware Controlコンソールの「URL接続」ダイアログに入力した値と同じであることに注意してください。

次に示すのは、各パラメータに指定されたサンプル値を使用したWLSTコマンドの例です。ここの値を本番サーバーに関連する値に置換します。

adf_createHttpURLConnection(appName='portalApp', name='ProductionURLConnection',
url='http://production_adminserver_host:7001', user='weblogic',
password='password_for_weblogic', realm='ProductionRealm'

WLSTの詳細は、Oracle Technology Networkの『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』を参照してください。

8.13.3 ポータル・メタデータの伝播

ステージング・ポータル上で施した変更を本番ポータルに移動するには、伝播ツールを使用します。

1. 伝播ツールは、第8.13.2項「伝播ツールの構成」の説明に従って、必ず構成しておいてください。伝播ツールを使用するには、管理者の権限を取得しておく必要があります。

2. WebCenter Portal管理コンソールを開きます。デフォルトでは、管理コンソールは次のURLにあります。

http://<server>:<port>/<context_root>/admin

WebCenter Portal管理コンソールの使用の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の管理コンソールを使用したPortal Frameworkアプリケーションの管理に関する項を参照してください。

3. 「伝播」タブを選択します。

注意:

「伝播」タブが表示されない場合は、管理者の権限を取得していないか、伝播ツールが第8.13.2項「伝播ツールの構成」の説明のとおりに正しく構成されていない可能性があります。

4. 「伝播」をクリックして、ファイルを本番サーバーに転送します。

8.14 Oracle WebCenter Contentからのコンテンツの伝播

手動または自動によるレプリケーションを使用して、ある環境から別の環境にコンテンツを移動することをお薦めします。あるいは、コンテンツを手動で伝播する方法もありますが、このオプションは、ソース・サーバーとターゲット・サーバーが相互通信できない場合のみお薦めします。

Oracle WebCenter Contentのコンテンツを伝播するツールとオプションの詳細は、Oracle WebCenter Content Content Serverシステム管理者ガイドのシステムの移行とアーカイブの管理に関する項を参照してください。その章には、アーカイブ・ファイルのエクスポートとインポートによるOracle WebCenter Contentのコンテンツの伝播についての説明があります。また、レプリケーションの設定方法と使用方法の説明もあります。レプリケーションでは、エクスポート、インポートおよび転送の各機能を自動化できます。たとえば、レプリケーションを使用して自動的に、あるコンテンツ・サーバーのインスタンスからエクスポートし、そのアーカイブを別のコンピュータに転送し、別のコンテンツ・サーバー・インスタンスにインポートできます。

8.15 ライフ・サイクルを通したセキュリティの管理

この項では、セキュリティ・ポリシーと資格証明を1つの環境から別の環境へ移行するテクニックについて説明します。移行は自動でも手動でも実行できます。自動的な移行は、通常、アプリケーションを初めてデプロイする際に使用されます。手動の移行は再デプロイで使用されます。

8.15.1 初回デプロイに対するセキュリティ・ポリシーの移行

アプリケーション・ポリシーが記載されたjazn-data.xmlをEARファイルにパッケージ化する際に、Oracle Platform Security Services (OPSS)ではweblogic-application.xmlのアプリケーション構成設定に基づいてポリシーの移行が実行されます。例8-3に、初回デプロイで自動的にポリシー移行を実現できるweblogic-application.xmlの推奨設定を示します。

例8-3 ポリシーの自動移行の設定(weblogic-application.xml)

<wls:application-param>
<wls:param-name>jps.policystore.migration</wls:param-name>
<wls:param-value>MERGE</wls:param-value>
</wls:application-param>

<wls:application-param>
<wls:param-name>jps.policystore.removal</wls:param-name>
<wls:param-value>OFF</wls:param-value>
</wls:application-param>

<wls:listener>
<wls:listener-class>oracle.security.jps.wls.listeners.JpsApplicationLifecycleListener</wls:listener-class>
</wls:listener>

JpsApplicationLifecycleListenerをweblogic-application.xmlで指定して、ポリシーと資格証明の移行を有効化する必要があります。jps.policystore.migrationをMERGEに設定するようお薦めします。この構成では、jazn-data.xmlにパッケージ化されているポリシーが初回デプロイ時に必ず移行されます。アプリケーションのアンデプロイ時にアプリケーション・ポリシーがポリシー・ストアから削除されないように、jps.policystore.removalはOFFに設定してください。

8.15.2 再デプロイ時のセキュリティ・ポリシーの移行

再デプロイ時には、本番システムで変更されたポリシーの上書きを回避することが重要です。jps.policystore.migrationパラメータがMERGEに設定されていると、ステージング環境からのすべての新規ポリシーは本番ポリシーにマージされます。この設定では、既存ポリシーへの変更(ロールの権限の変更、ロールの削除、ロールのメンバーシップの削除など)は、競合の原因となる恐れがあるため再デプロイ時には移行されません。

本番ポリシーをjazn-data.xmlにパッケージ化されているステージング環境のセキュリティ・ポリシーで上書きする場合には、migrateSecurityStore WLSTコマンドを使用します。migrateSecurityStoreコマンドの詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』を参照してください。

8.15.3 初回デプロイに対する資格証明の移行

アプリケーションの資格証明の移行サポートは、アプリケーションのポリシーの移行と似ています。JpsApplicationLifecycleListenerでは、別のセキュリティ施行によるアプリケーションのデプロイと再デプロイでの資格証明の移行に対応しています。

cwallet.ssoのアプリケーション資格証明とMETA-INF/ディレクトリ内のEARファイルにパッケージ化されたアプリケーション資格証明を使用して、OPSSではweblogic-application.xmlに記載された構成設定に基づいて、資格証明がシステムの資格証明ストアに移行されます。

例8-3に、初回デプロイで自動的に資格証明の移行を実現できるweblogic-application.xmlの推奨設定を示します。

例8-4 資格証明の自動移行の設定(weblogic-application.xml)

<wls:application-param>
<wls:param-name>jps.credstore.migration</wls:param-name>
<wls:param-value> MERGE </wls:param-value>
</wls:application-param>

すべての新規資格証明がデプロイおよび再デプロイ時に移行されるように、jps.credstore.migrationをMERGEに設定してください。この設定では、cwallet.ssoからの新規資格証明のキー/値のみが移行されます。既存の資格証明のキーへの変更は移行されません。

8.15.4 再デプロイ時の資格証明の移行

ステージングで変更された資格証明を本番に移動する必要がある場合には、migrateSecurityStoreコマンドを使用して変更された資格証明を移行します。migrateSecurityStoreコマンドの詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』を参照してください。

8.16 ポートレット・プリファレンスの移行

WebCenterでは、ポートレット・プリファレンスをインポートおよびエクスポートするためのWLSTコマンドを用意しています。エクスポートされたプリファレンス(カスタマイズおよびパーソナライズ)をターゲット・アプリケーションにインポートできます(ステージング・アプリケーションからのエクスポートや本番アプリケーションへのインポートなど)。詳細は、『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』のWebCenter PortalカスタムWLSTコマンドに関する項に記載されたexportPortletClientMetadataとimportPortletClientMetadataを参照してください。また、エクスポートとインポートが有効化されていることを確認してください。第59.3.14項「設計時にポートレット・プロデューサをエクスポートおよびインポートする方法」を参照してください。

第61.5項「WebLogic管理対象サーバーへのポートレット・プロデューサのデプロイ」も参照してください。

8.17 本番サイトの変更のロールバック

まれに、本番サーバーにプッシュした変更をステージングからロールバックする必要が生じることがあります。この章で説明する伝播モデルは、ステージング・インスタンスへの少量の変更を伝播ツールで本番にプッシュすることを前提としています。変更をロールバックする必要が生じたら、手動でその変更をステージング・インスタンスで元に戻し、新たに変更したステージング・インスタンスを適切な検証とテストの後に本番にプッシュしなおしてください。このプロセスで、元の変更がロールバックされ、本番システムは元の状態に戻されます。

9 ポータル・リソース管理の概要

この章では、WebCenter Portal Frameworkアプリケーションで使用できる様々なポータル・リソースと、それらに対して実行できるいくつかの一般的な操作について説明します。ポータル・リソースには、ナビゲーション・モデル、ページ・テンプレート、ページ・スタイル、リソース・カタログなどが含まれます。

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

- 第9.1項「ポータル・リソースの概要」

- 第9.2項「ポータル・リソースの作成」

- 第9.3項「ポータル・リソースの編集」

- 第9.4項「ポータル・リソースの削除」

- 第9.5項「実行時のポータル・リソースの使用」

- 第9.6項「ラウンドトリップ開発での作業」

- 第9.7項「WebCenter Portalリソースの使用」

ヒント:

ポータル・リソースは、アセットと呼ばれる場合もあります。

9.1 ポータル・リソースの概要

Portal Frameworkアプリケーションでは、ポータルの構造、ルック・アンド・フィールおよびコンテンツを定義するための次のポータル・リソースを提供します。

- ページ・テンプレートは、ページ・コンテンツ周辺のインタフェースを定義し、ページ・グループ間で一貫したフック・アンド・フィールが適用されるようにします。詳細は、第11章「ページ・テンプレートの開発」を参照してください。

- ナビゲーション・モデルは、ページ、コンテンツ・リポジトリ、外部Webページなど、複数のソースからの情報をまとめてリンクする方法を定義します。詳細は、第10章「ナビゲーション・モデルの開発」を参照してください。

- リソース・カタログは、ユーザーがページ、ページ・テンプレートおよびタスク・フローに追加できるコンポーネントを定義します。詳細は、第14章「リソース・カタログの開発」を参照してください。

- スキンは、色やフォントなど、特定のポータルまたはアプリケーション全体の外観およびルック・アンド・フィールを定義します。詳細は、第13章「スキンの開発」を参照してください。

- ページ・スタイルは、新規作成されたページのレイアウトを定義し、ページでサポートされるコンテンツ・タイプを示す場合もあります。詳細は、第12.2項「ページ・スタイルの開発」を参照してください。

- コンテンツ・プレゼンタ表示テンプレートは、コンテンツを表示するためのテンプレートを定義します。詳細は、第27章「コンテンツ・プレゼンタ表示テンプレートの作成」を参照してください。

- タスク・フロー・スタイルは、実行時に使用され、データ・コントロールを表示するためデータ・プレゼンタを使用して作成されるタスク・フローのレイアウトを定義します。詳細は、第12.3項「タスク・フロー・スタイルの開発」を参照してください。

9.2 ポータル・リソースの作成

ポータル・リソースの作成プロセスは、ポータル・リソースのタイプにより異なります。

表9-1に、様々なポータル・リソースの作成に関する詳細の参照先を示します。

表9-1 ポータル・リソースの作成

ポータル・リソース

詳細

ページ・テンプレート

第11.3項「ページ・テンプレートの作成」

ナビゲーション・モデル

第10.2項「ナビゲーション・モデルの作成」

リソース・カタログ

第14.2項「リソース・カタログの作成」

スキン

第13.2項「スキンの作成」

ページ・スタイル

第12.2.1項「ページ・スタイルを作成する方法」

コンテンツ・プレゼンタ表示テンプレート

第27.3項「コンテンツ・プレゼンタ表示テンプレートの作成」

タスク・フロー・スタイル

第12.3.1項「タスク・フロー・スタイルを作成する方法」

9.3 ポータル・リソースの編集

ポータル・リソースの編集プロセスは、ポータル・リソースのタイプにより異なります。

表9-2に、様々なポータル・リソースの編集に関する詳細の参照先を示します。

表9-2 ポータル・リソースの編集

ポータル・リソース

詳細

ページ・テンプレート

第11.4項「ページ・テンプレートの編集」

ナビゲーション・モデル

第10.3項「ナビゲーション・モデルの編集」

リソース・カタログ

第14.3項「リソース・カタログの編集」

スキン

第13.3項「スキンの編集」

ページ・スタイル

第12.2.1項「ページ・スタイルを作成する方法」

コンテンツ・プレゼンタ表示テンプレート

第27.3項「コンテンツ・プレゼンタ表示テンプレートの作成」

タスク・フロー・スタイル

第12.3.1項「タスク・フロー・スタイルを作成する方法」

9.4 ポータル・リソースの削除

ポータル・リソースが不要になった場合は、これを削除できます。

注意:

ポータル・リソースを削除する前に、それが使用されていないことを確認する必要があります。削除するポータル・リソースとしてマークされると、そのリソースは使用中であっても削除されます。

ポータル・リソースを削除するには

1. アプリケーション・ナビゲータで、削除するポータル・リソースを右クリックし、「削除」を選択します。

2. 「削除の確認」ダイアログによって、アプリケーション内でそのポータル・リソースが使用されているかどうかが識別されます。詳細を表示するには、「使用方法の表示」をクリックします。
この情報を使用して、ポータル・リソースを本当に削除するのかどうかを決断できます。

3. 続行してナビゲーション・モデルを削除するには、「はい」をクリックします。操作を取り消す場合は、「いいえ」をクリックします。

9.5 実行時のポータル・リソースの使用

ヒント:

実行時、ポータル・リソースは、アセットと呼ばれます。

ポータルは、常に進化しているアプリケーションです。ポータルの初期フレームワークがデプロイメントの前に設計されますが、これは実際には起点の役割を担います。ポータルの設計は、ポータルの実際のユーザーによって拡張されていくことが多いです。

この実行時リソース管理では、次のことを行えます。

- 実行時開発: ページ、スキン、データ・コントロールなどのポータル・リソースを実行時に作成することによって、デプロイ後もポータルの開発を続けます。詳細は、第9.5.1.5項「実行時のアセット・ページの使用方法」を参照してください。

- ラウンドトリップ開発: デプロイ済ポータルからJDeveloperにポータル・リソースをプルして、さらに開発してから、拡張したリソースを実行中アプリケーションにアップロードして戻します。詳細は、第9.6項「ラウンドトリップ開発での作業」を参照してください。

- 反復開発 - 実行中のポータルに、アプリケーションの再デプロイや再起動の必要なく、JDeveloperからメタデータのみのリソースを取り込んで表示する、新しく強化された表示方法を提供します。詳細は、第2.3.1項「Portal Frameworkアプリケーションでの反復開発の準備」を参照してください。

- WebCenter Portalの拡張: JDeveloperでWebCenter Portalの新規リソースを構築および管理して、それらのリソースを実行時ポータルに配布できるように定期的にパッケージ化します。詳細は、第55.1項「WebCenter Portalのアセットの開発」を参照してください。

Portal Frameworkアプリケーションでは、実行時管理コンソールの「アセット」ページより、実行時ポータル・リソース管理を有効にします。管理コンソールを使用すると、適切な権限のあるユーザーは、アプリケーションのデプロイ後もポータルの開発を続けられます(図9-1)。

図9-1 実行時管理コンソールの「アセット」ページ

実行時、適切な権限を持つユーザーは、次のリソースを作成および管理できます。

- ページ

- ページ・テンプレート

- ナビゲーション・モデル

- リソース・カタログ

- スキン

- ページ・スタイル(既存のページ・スタイルをコピーすることによってのみ、実行時に作成可能)

- コンテンツ・プレゼンタ表示テンプレート(実行時には作成不可)

- タスク・フロー・スタイル(既存のタスク・フロー・スタイルをコピーすることによってのみ、実行時に作成可能)

- タスク・フロー

- データ・コントロール

実行時管理コンソールの「アセット」ページを使用することにより、ユーザーはポータル・リソースまたはアプリケーション全体をランタイム環境からダウンロードし、それらをJDeveloperで編集して、デプロイ済のアプリケーションにアップロードして戻すこともできます。

ユーザーは、JDeveloperで最初からポータル・リソースを作成して、それをアーカイブ・ファイルにエクスポートし、デプロイ済ポータルにアップロードすることもできます。これは、WebCenter Portalで使用するために、完全に機能するポータル・リソースを追加で作成する場合のきわめて有用な方法です。

このプロセスは、ラウンドトリップ開発と呼ばれます。詳細は、第9.6項「ラウンドトリップ開発での作業」を参照してください。

9.5.1 ポータル・リソースの実行時管理の有効化

アプリケーションの「アセット」ページにポータル・リソースを公開することにより、ポータル管理者が実行時にそれらを管理できるようにすることが可能です。

WebCenter Portal Frameworkアプリケーション・テンプレートを使用してアプリケーションを作成した場合、「アセット」ページが実行時管理コンソールの一部として自動的に用意されます。

必要に応じて、「アセット」ページをアプリケーション内の別のページに追加できますが、これは、「リソース・タイプのリスト」タスク・フローを対象ページに追加することによって実行できます。

ポータル・リソースを「アセット」ページに公開して、実行時管理を使用可能にするには、そのリソースをアプリケーション・プロジェクトのoracle/webcenter/portalappディレクトリの下に配置し、ポータル・リソースとして明示的に識別されるようにする必要があります。

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

- 第9.5.1.1項「「アセット」ページをページに追加する方法」

- 第9.5.1.2項「ポータル・リソースを「アセット」ページに組み込む方法」

- 第9.5.1.3項「ポータル・リソースのプロパティを更新する方法」

- 第9.5.1.4項「ポータル・リソースを「アセット」ページから削除する方法」

- 第9.5.1.5項「実行時の「アセット」ページの使用方法」

9.5.1.1 「アセット」ページをページに追加する方法

WebCenter Portal Frameworkアプリケーション・テンプレートを使用して作成されたアプリケーションの場合、「アセット」ページは、実行時管理コンソールの一部としてそのまま使用可能です(図9-1)。

さらに、「アセット」ページをアプリケーション内の任意のページに追加できます。これは、WebCenter Portal Frameworkアプリケーション・テンプレートを使用しないため、実行時管理コンソールがプロジェクトに含まれていない場合に特に有用です。

ページに「アセット」ページを追加する場合、ページの表示アクセス権を持つすべてのユーザーがその「アセット」ページを表示し、リソース・プロパティの表示、リソースのプレビューなどのポータル・リソースに関する表示関連操作を実行できます。ユーザーが新しいリソースの作成、リソースの編集、リソースの削除など、ポータル・リソースに関する他の操作を実行できるようにするには、使用するポータル・リソースのタイプに関する適切な権限を持っている必要があります。これらの権限は、ロール・マネージャ・タスク・フローを使用してプロビジョニングできます。詳細は、第74.4項「ロール・マネージャ・タスク・フローの使用」を参照してください。

ヒント:

Administratorロールには、デフォルトで、「アセット」ページで使用可能なすべてのポータル・リソース・タイプに対する管理アクセス権があります。

「アセット」ページを追加するには:

1. 「アセット」ページを追加するページを開きます。

2. 「リソース・パレット」で「WebCenter Portal - サービス・カタログ」を開き、「タスク・フロー」を開きます。

3. 「アセット・タイプのリスト」タスク・フローを選択して、それをページ上の目的の場所にドラッグします。

4. 表示されたメニューから、「リージョン」を選択します。
「アセット」ページ・ライブラリをプロジェクトに追加するよう要求される場合があります。「ライブラリの追加」をクリックして確認します。

5. 「アセット」ページが対象のページに追加されます。

6. ユーザーが実行時にポータル・リソースをアップロードおよびダウンロードできるようにするには、「アセット」ページ・タスク・フローが含まれるフォームのusesUploadプロパティをtrueに設定する必要があります。

<af:form id="f1" usesUpload="true">

9.5.1.2 ポータル・リソースを「アセット」ページに組み込む方法

ポータル・リソースを「アセット」ページに組み込み、実行時管理を使用可能にするには、そのリソースをポータル・リソースとして明示的に識別する必要があります。

ナビゲーション・モデルおよびリソース・カタログの場合、ポータル・リソースとして作成チェック・ボックスを選択することにより、最初にリソースを作成するときにポータル・リソースとして識別するオプションがあります。ページ・テンプレートやスキンなど、その他のリソースの場合は、リソースの作成後にそのリソースをポータル・リソースとして識別する必要があります。

ポータル・リソースを「アセット」ページに組み込むには:

1. アプリケーション・ナビゲータで、「アセット」ページに組み込むポータル・リソースを右クリックし、「ポータル・リソースの作成」を選択します。

注意:

ポップアップ・メニューに「ポータル・リソースの作成」オプションが表示されない場合は、そのリソースがoracle/webcenter/portalappディレクトリの下にないということです。リソースを適切なディレクトリに移動するには、リソースを右クリックして、「リファクタ」を選択し、「移動」を選択します。

2. 「ポータル・リソースの作成」ダイアログ(図9-2)の「表示名」フィールドで、必要に応じて名前を編集します。
これは、実行時に「アセット」ページにリスト表示される名前であるため、ユーザーが表示名からリソースを簡単に識別できるようにしておきます。

図9-2 「ポータル・リソースの作成」ダイアログ

3. 「リソース・タイプ」フィールドでは、「アセット」ページに組み込まれているリソースの種類が特定されます。このフィールドを編集することはできません。

4. 「アイコンURL」フィールドに、ポータル・リソースのグラフィカル表現として使用するイメージのパスとファイル名を入力します。
このイメージは、ページ・スタイルで、「ページの作成」ダイアログに表示するアイコンを指定するためだけに使用されます。

5. 「説明」フィールドに、ポータル・リソースの説明を入力します。この説明は、ユーザーがこのリソースをアプリケーションで使用するかどうかを決める際の助けとなるものにする必要があります。
この説明は、「アセット」ページのポータル・リソースの名前の下に表示されます。

6. ポータル・リソースでサポートされる追加属性の値を指定します。

7. ポータル・リソースのリソースレベル・セキュリティを指定する場合は、「セキュリティ」タブをクリックします。そうしない場合は、手順11に移ります。
リソースレベル・セキュリティでは、個々のポータル・リソースのアプリケーションレベル・セキュリティをオーバーライドして、実行時にリソースの編集および削除を実行できるユーザーまたはグループを指定できます。

8. 「デフォルトのアクセス・ポリシーをオーバーライド」(図9-3)を選択します。

図9-3 「ポータル・リソースの作成」の「セキュリティ」タブ

9. 「新規ロールへの権限の追加」アイコン(プラス記号で表される)をクリックし、権限を付与するロールを選択します。

10. 実行時のポータル・リソースへの完全なアクセス権を付与するには、「管理」チェック・ボックスを選択します。このロールを有するユーザーは、このポータル・リソースを編集および削除できます。
実行時にポータル・リソースを編集する権限を付与するには、「更新」チェック・ボックスを選択します。このロールを有するユーザーは、このポータル・リソースを編集できますが、削除はできません。

注意:

ユーザーには、「アセット」ページにアクセスするための適切な権限も必要です。詳細は、第9.5.1.1項「「アセット」ページをページに追加する方法」を参照してください。

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

ポータル・リソースが「アセット」ページに公開され、適切な権限を持つユーザーは実行時にリソースを管理できます。

9.5.1.3 ポータル・リソースのプロパティを更新する方法

「アセット」ページで公開されているポータル・リソースの詳細を更新できます。

ポータル・リソースのプロパティを更新するには:

1. アプリケーション・ナビゲータで、編集するポータル・リソースを右クリックし、「ポータル・リソースの更新」を選択します。

2. 「ポータル・リソースの更新」ダイアログで、必要に応じて各フィールドを編集します。
このダイアログのフィールドの詳細は、第9.5.1.2項「ポータル・リソースを「アセット」ページに組み込む方法」を参照してください。

3. 完了したら「OK」をクリックします。

9.5.1.4 ポータル・リソースを「アセット」ページから削除する方法

ユーザーが実行時に特定のポータル・リソースを管理できるようにする必要がなくなった場合、そのリソースを「アセット」ページから削除できます。

ポータル・リソースを「アセット」ページから削除するには:

1. アプリケーション・ナビゲータで、削除するポータル・リソースを右クリックし、「ポータル・リソースの削除」を選択します。

2. 「ポータル・リソースの削除」ダイアログで、「はい」をクリックして、「アセット」ページからポータル・リソースを削除することを確認します。
ポータル・リソースが「アセット」ページから削除され、実行時に管理できなくなります。ポータル・リソース自体は削除されないため、Portal Frameworkアプリケーション内では引き続き使用できます。

9.5.1.5 実行時の「アセット」ページの使用方法

実行時には、「アセット」ページで、ポータルに使用できるリソースの管理ツールへアクセスできます。たとえば、管理者は、新規ポータル・リソース(ナビゲーション・モデル、ページ・テンプレート、スキンなど)の作成、既存のリソースの編集、他のアプリケーションからエクスポートしたリソースのアップロードなどを実行できます。

実行時管理コンソールの「アセット」ページを使用して実行時にポータル・リソースを管理する方法については、『Oracle Fusion Middleware Oracle WebCenter Portalの管理』のPortal Frameworkアプリケーションのアセットの管理に関する項を参照してください。

9.6 ラウンドトリップ開発での作業

ポータル・リソースの実行時管理を有効にする場合、これらのリソースをJDeveloperにプルして戻せるようにできます。たとえば、ユーザーが実行時に新しいナビゲーション・モデルをポータルに追加する場合、JDeveloperでそれをさらに調整できます。これを実行するには、「アセット」ページを使用して、デプロイ済アプリケーションからポータル・リソースをダウンロードする必要があります。その後、ポータル・リソースをJDeveloperにインポートし、開発作業を実行し、リソースをエクスポートして、最終的にデプロイ済アプリケーションにアップロードして戻すことができます。これは、ラウンドトリップ開発と呼ばれます。

このプロセスは、WebCenter Portalを含め、「アセット」ページが組み込まれているすべてのデプロイ済Portal Frameworkアプリケーションのポータル・リソースに対して実行できます。

注意:

Oracle WebCenter PortalにはJDeveloperプロジェクト(WebCenterSpacesResources)が用意されており、WebCenter Portalのポータル・リソースの開発に利用できます。第55章「JDeveloperを使用したWebCenter Portalのコンポーネントの開発」には、WebCenterSpacesResourcesプロジェクトを使用してWebCenter Portalで使用するリソースを構築する方法が記載されています。

ラウンドトリップ開発のプロセスは、次のように機能します。

1. JDeveloperでPortal Frameworkアプリケーションを構築します

2. アプリケーションをデプロイします

3. ポータル・リソースを追加または編集し、実行時にアプリケーションにコンテンツを追加します

4. 「アセット」ページを使用して、ポータル・リソースをEARファイルにダウンロードします
第9.6.1項「「アセット」ページを使用してポータル・リソースをダウンロードする方法」を参照してください。

5. EARファイルをJDeveloperにインポートします
第9.6.2項「ポータル・リソースをJDeveloperにインポートする方法」を参照してください。

6. JDeveloperでポータル・リソースを編集します

7. ポータル・リソースをEARファイルにエクスポートします
第9.6.3項「ポータル・リソースをJDeveloperからエクスポートする方法」を参照してください。

8. 「アセット」ページを使用して、ポータル・リソースをデプロイ済アプリケーションにアップロードします
第9.6.4項「「アセット」ページを使用してリソースをアップロードする方法」を参照してください。

9. 手順3から繰り返します。

さらに、アプリケーションのデプロイ後に、開発者はJDeveloperで引き続きリソースを作成および編集でき、それらのリソースをデプロイ済アプリケーションに定期的にアップロードできます。

図9-4は、前述のラウンドトリップ開発プロセスを示しています。

図9-4 ラウンドトリップ開発

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

- 第9.6.1項「「アセット」ページを使用してポータル・リソースをダウンロードする方法」

- 第9.6.2項「ポータル・リソースをJDeveloperにインポートする方法」

- 第9.6.3項「ポータル・リソースをJDeveloperからエクスポートする方法」

- 第9.6.4項「「アセット」ページを使用してリソースをアップロードする方法」

注意:

JDeveloperで作成し、JDeveloperからエクスポートしたタスク・フローをデプロイ済アプリケーション(またはWebCenter Portal)にアップロードすることはできませんが、実行時に作成したタスク・フローをJDeveloperにインポートし、変更してランタイム・アプリケーションにエクスポートして戻すことは可能です。タスク・フローのインポート、変更およびエクスポートの手順は、タスク・フロー・スタイルのものと同じです。このため、この項で示したエクスポート、インポートおよび編集の各タスクは、タスク・フローおよびタスク・フロー・スタイルに適用できます。

カスタム・タスク・フローの追加とエクスポートの詳細は、第15.4項「ページへのカスタム・タスク・フローの追加」を参照してください。

9.6.1 「アセット」ページを使用してポータル・リソースをダウンロードする方法

ポータル・リソースをJDeveloperで編集する場合、まず、デプロイ済アプリケーションで「アセット」ページを使用して、リソースのメタデータすべてを格納するEARファイルにポータル・リソースをダウンロードする必要があります。

この方法については、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアセットのダウンロードに関する項を参照してください。

9.6.2 ポータル・リソースをJDeveloperにインポートする方法

EARファイルがある場合、これをJDeveloperにインポートし、ここでポータル・リソースを編集できます。

注意:

Portal Frameworkアプリケーションまたは適切なテクノロジ・スコープが含まれるアプリケーションにポータル・リソースをインポートする必要があります。

注意:

ポータル・リソースをJDeveloperにインポートする場合、リソースがすでに存在するときは、JDeveloper内のリソースがアーカイブからのリソースで上書きされます。元のリソースは一時的な場所に保存され、それはログで確認できます。

ポータル・リソースをJDeveloperにインポートするには:

1. アプリケーション・ナビゲータで、リソースのインポート先のアプリケーションの「ポータル」プロジェクトを右クリックして、「ポータル・リソースのインポート」を選択します。

2. 「ポータル・リソースのインポート」ダイアログ(図9-5)の「インポート・アーカイブ・ファイル名」フィールドで、インポートするポータル・リソースが含まれるアーカイブ・ファイルを入力するか参照します。

図9-5 「ポータル・リソースのインポート」ダイアログ

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

注意:

ポータル・リソースで表示されたり参照されるアーティファクト(アイコンやイメージなど)は、ポータル・リソースがダウンロードされる際にはアーカイブ内に含まれません。ポータル・リソースをインポートする場合には、依存アーティファクトを手動で管理して移動する必要があります。ポータル・リソース・アーティファクトをコンテンツ・サーバーで専用のフォルダ構造を使用して、必要に応じてコンテンツを簡単に識別したり移動したりできるようにすることをお薦めします。

MDS内にアーティファクトを格納しているレガシー・ポータル・リソースを管理している場合には、依存アーティファクトをコンテンツ・サーバーに再配置することをお薦めします。ただし、MDSに格納されたアーティファクトを移動させる必要がない場合、管理者は、MDS WLSTコマンドexportMetadataおよびimportMetadataを使用できます。

9.6.3 ポータル・リソースをJDeveloperからエクスポートする方法

ポータル・リソースの編集後に、それをエクスポートして、デプロイ済アプリケーションにアップロード可能なEARファイルを作成する必要があります。

ポータル・リソースをJDeveloperからエクスポートするには:

1. アプリケーション・ナビゲータで、エクスポートするリソースを右クリックし、「ポータル・リソースのエクスポート」を選択します。

注意:

ポップアップ・メニューに「ポータル・リソースのエクスポート」オプションが表示されない場合は、そのリソースがポータル・リソースではないということです。リソースをポータル・リソースとして作成する方法は、第9.5.1.2項「ポータル・リソースを「アセット」ページに組み込む方法」を参照してください。

2. 「ポータル・リソースのエクスポート」ダイアログ(図9-6)の「エクスポート・アーカイブ・ファイル名」フィールドで、エクスポート・ファイルのパスおよびファイル名を入力するか参照します。
既存のファイルを選択した場合、そのファイルのコンテンツは上書きされます。

図9-6 「ポータル・リソースのエクスポート」ダイアログ

3. 「OK」をクリックします。
エクスポート・アーカイブには、JSPXファイルやページ定義など、リソースを構成するファイルが含まれています。アーカイブには、generic-site-resources.xmlファイルおよびエクスポートされたリソースに関する情報のみが含まれるレジストリ・ファイルも含まれています。

注意:

ポータル・リソースで表示されたり参照されるアーティファクト(アイコンやイメージなど)は、アーカイブ内に含まれません。ポータル・リソースをアップロードする場合には、依存アーティファクトを手動で管理して移動する必要があります。ポータル・リソース・アーティファクトをコンテンツ・サーバーで専用のフォルダ構造を使用して、必要に応じてコンテンツを簡単に識別したり移動したりできるようにすることをお薦めします。

MDS内にアーティファクトを格納しているレガシー・ポータル・リソースを管理している場合には、依存アーティファクトをコンテンツ・サーバーに再配置することをお薦めします。ただし、MDSに格納されたアーティファクトを移動させる必要がない場合、管理者は、MDS WLSTコマンドexportMetadataおよびimportMetadataを使用できます。

9.6.4 「アセット」ページを使用してリソースをアップロードする方法

最後の手順では、更新済リソースのEARファイルを取得し、「アセット」ページを使用して、リソースをデプロイ済アプリケーションにアップロードして戻します。

この方法については、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアセットのアップロードに関する項を参照してください。

9.7 WebCenter Portalリソースの使用

WebCenter Portalは、ポータルの構築、ソーシャル・ネットワーキング、通信、コラボレーションおよび個人の生産性に対して最新のテクノロジを提供するWebベースのアプリケーションです。WebCenter Portalには、ユーザーがポータルで利用できる様々な組込みポータル・リソースがデフォルトで用意されています。これらの組込みポータル・リソースがユーザーの要件を満たさない場合には、アプリケーション管理者がWebCenter Portal内でさらにリソースを作成できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のアセットの作成に関する項を参照してください。

ヒント:

WebCenter Portalでは、ポータル・リソースは、アセットと呼ばれます。

場合によっては、必要な機能をすべて提供するポータル・リソースの作成に必要なコントロールが、WebCenter Portalによって提供されないこともあります。そのような場合、もともとWebCenter Portalで作成したポータル・リソースをJDeveloperに移して編集し、WebCenter Portalにアップロードして戻すことが可能です。

また、ページ・スタイルやタスク・フロー・スタイルなど、WebCenter Portalで使用される一部のポータル・リソースは、WebCenter Portalでは作成できません。かわりにこれらのリソースは、JDeveloperで作成し、エクスポートしてWebCenter Portalにアップロードする必要があります。

Oracle WebCenter Portalには特別なJDeveloperプロジェクト(WebCenterSpacesResources)が用意されており、WebCenter Portalで使用するポータル・リソースの開発に利用できます。詳細は、第55.1項「WebCenter Portalのアセットの開発」を参照してください。

JDeveloperでWebCenter Portalリソースを使用している場合、次の点を考慮してください。

ナビゲーション・モデル

- WebCenter Portalナビゲーション・モデルで必要なすべてのリソースは、WebCenter Portal内に存在します。したがって、WebCenter Portalナビゲーション・モデルを再構成して少し編集するには、JDeveloperを使用するだけで済みます。最初に、WebCenter Portalで可能なかぎりのナビゲーション・モデルを作成し、必要なリソースを追加する必要があります。その後、JDeveloperを使用してリソースの順番を調整し、すべての必要な属性とパラメータを設定できます。

- JDeveloperを使用してWebCenter Portalナビゲーション・モデルにリソースを追加する場合には、リソースの「プロパティの表示」ダイアログにアクセスしてWebCenter Portalからリソースのパスを取得する必要があります。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のアセットに関する情報の表示に関する項を参照してください。

- リソースをWebCenter Portalナビゲーション・モデルに追加する際には、リソースへのパスを手動で入力する必要があります。「参照」アイコンは使用できません。たとえば、ページへのリンクを入力するには、WebCenter PortalでページのIDを識別し、次にpage://pathToXmlFileのように値を手動で入力する必要があります。

ページ・テンプレート

- ページ・テンプレートには、contentというファセット定義を含める必要があります。

- ページ・テンプレートには、class="WCPGTEMPLATE"と指定されたUIコンポーネントを少なくとも1つ含める必要があります。スキンを実行時に編集することによって、基本タブでテンプレートの背景をターゲットにすることができますが、それは現行スタイルによります。

10 ナビゲーション・モデルの開発

この章では、Oracle JDeveloperを使用してWebCenter Portal Frameworkアプリケーション用のナビゲーションを作成および管理する方法を説明します。

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

- 第10.1項「ナビゲーション・モデルの概要」

- 第10.2項「ナビゲーション・モデルの作成」

- 第10.3項「ナビゲーション・モデルの編集」

- 第10.4項「デフォルトのナビゲーション・モデルの選択」

- 第10.5項「ナビゲーション・モデルのコンテンツのフィルタリング」

- 第10.6項「ナビゲーション・モデルの削除」

- 第10.7項「ナビゲーション・レジストリ・ファイルの編集」

- 第10.8項「ナビゲーション・レンダラの編集」

- 第10.9項「REDIRECT_OPTIONSコンテキスト・パラメータの設定」

- 第10.10項「ナビゲーションURLの予約済キーワード」

- 第10.11項「ナビゲーション・モデル開発のヒント」

- 第10.12項「ポータル・ナビゲーションの視覚化」

- 第10.13項「ナビゲーション・モデルを使用したサイトマップの作成」

10.1 ナビゲーション・モデルの概要

通常、ポータルは様々なソースからの情報を提供する多数のページで構成されます。ユーザーには、簡単にこれらすべてのページ間を移動して、必要な特定の情報に素早くアクセスできる方法が必要です。このポータルのページ間を移動するパスに、ポータル・ナビゲーションを提供します。

ポータル・ナビゲーションを使用して、外部ページ、コンテンツ・リポジトリ、ポートレット、タスク・フローなど、他のリソースへのアクセスを提供することもできます。

ナビゲーション・モデルは、ナビゲーションのコンテンツ、構造およびメタデータを定義します。ナビゲーション・モデルを作成する場合、追加するアイテムとそれらのアイテムの階層を指定します。ナビゲーション・モデルには、次のリソースを含めることができます。

- ページ(個々のページとページの階層)

- 外部リンク

- コンテンツ(個々のコンテンツ・アイテムまたはコンテンツ問合せの結果)

- 他のナビゲーション・モデル

- ポートレット、タスク・フローおよび外部アプリケーション

詳細は、第10.3項「ナビゲーション・モデルの編集」を参照してください。

次に示す、動的に生成されるリソースを追加することもできます。

- カスタム・リソース

- コンポーネント

- カスタム・フォルダ

- カスタム・コンテンツ

詳細は、第10.3.6項「動的に生成されたリソースをナビゲーション・モデルに追加する方法」を参照してください。

シード済ナビゲーション・モデル

新しいPortal Frameworkアプリケーションを作成すると、ナビゲーション・モデルが作成されます(default-navigation-model.xml)。このシード済ナビゲーション・モデル上にアプリケーションを構築するか、または独自のものを作成できます。異なるユーザー・タイプに対する別々のナビゲーション・モデルの作成が必要になる場合もあります。

注意:

独自のナビゲーション・モデルを作成する場合、シード済ナビゲーション・モデルを拡張しないで、デフォルトのナビゲーション・モデルとして設定することをお薦めします。詳細は、第10.4項「デフォルトのナビゲーション・モデルの選択」を参照してください。

ナビゲーション・モデルを作成すると、これをポータル内のいずれかのページまたはページ・テンプレートで公開できます。詳細は、第10.12項「ポータル・ナビゲーションの視覚化」を参照してください。

実行時管理

Portal Frameworkアプリケーションは、デプロイ後もポータルの開発をユーザーが続行できるように、ナビゲーション・モデルの実行時管理をサポートしています。実行時管理により、権限のあるユーザーがブラウザ・ベースの環境でアプリケーションのナビゲーション・モデルを管理したり、新規に作成でき、JDeveloperのインストールや知識は必要ありません。詳細は、第9.5項「実行時のポータル・リソースの使用」を参照してください。

ラウンドトリップ開発

ポータルの再デプロイ時に変更内容が失われないように、実行時に作成または変更されたナビゲーション・モデルをJDeveloperに取り込むことができます。必要な場合は、これらのナビゲーション・モデルを編集してさらに改良でき、デプロイ済ポータルに再びアップロードできます。詳細は、第9.6項「ラウンドトリップ開発での作業」を参照してください。

10.2 ナビゲーション・モデルの作成

アプリケーション用に作成されたシード済ナビゲーション・モデルが要件を満たさない場合には、独自のナビゲーション・モデルを作成できます。

ナビゲーション・モデルを作成するには:

1. アプリケーション・ナビゲータで、ナビゲーション・モデルを作成するノード(通常は、/oracle/webcenter/portalapp/navigations)を右クリックし、「新規」を選択します。

2. 「新規ギャラリ」で、「Web層」を開き、「ポータル・フレームワーク」→「ナビゲーション」の順に選択し、「OK」をクリックします。

3. 「ナビゲーションの作成」ダイアログ(図10-1)の「ファイル名」フィールドに、ナビゲーション・モデルを表すXMLファイルの名前(mainNavigation.xmlなど)を入力します。

図10-1 「ナビゲーションの作成」ダイアログ

4. 「ディレクトリ」フィールドに、ナビゲーション・モデル定義のXMLファイルを作成する場所の絶対ディレクトリ・パスを入力します。

注意:

Portal Frameworkアプリケーションにおいて、実行時管理コンソールの「アセット」ページで新規ナビゲーション・モデルを公開するには、ナビゲーション・モデルをApplication_Root/Portal/public_html/oracle/webcenter/portalappディレクトリに作成する必要があります。デフォルトでは、Portal Frameworkアプリケーションには別個のnavigationsディレクトリが含まれています。

5. 「ポータル・リソースとして作成」を選択して、実行時に適切な権限を持つユーザーが実行時管理コンソールの「アセット」ページでナビゲーション・モデルを管理できるようにします。

注意:

このオプションが使用できるのは、ナビゲーション・モデルを格納したディレクトリがApplication_Root/Portal/public_html/oracle/webcenter/portalappディレクトリか、そのサブディレクトリのいずれかである場合のみです。

ヒント:

このオプションをこの時点で選択しなくても、ナビゲーション・モデルを後から実行時管理コンソールに追加できます。その場合は、リソース・カタログを右クリックして「ポータル・リソースの作成」を選択します。

6. 「OK」をクリックします。
Portal Frameworkアプリケーションでナビゲーション・モデルを作成すると、そのナビゲーション・モデルに対応するナビゲーション・モデル定義ファイル(XMLファイル)が指定のディレクトリに作成されます。ナビゲーション・モデル定義ファイルが「デザイン」ビュー(図10-2)で開きます。

図10-2 「デザイン」ビューのナビゲーション・モデル

ナビゲーション・モデル定義ファイルは最初は空なので、編集してナビゲーション・モデルの構造とコンテンツを設計する必要があります。詳細は、第10.3項「ナビゲーション・モデルの編集」を参照してください。

ヒント:

追加するリソースを最初から作成しない場合には、開始点としてdefault-navigation-model.xmlファイルのソース・コードを新規ナビゲーション・モデル定義のソース・ビューにコピーすることも可能です。

適切なディレクトリの下にナビゲーション・モデルを作成し、「ポータル・リソースとして作成」オプションを選択した場合は、ナビゲーション・モデルの実行時管理が自動的に可能になります。詳細は、第9.5項「実行時のポータル・リソースの使用」を参照してください。

シード済ナビゲーション・モデルを拡張するのではなく、Portal Frameworkアプリケーションで独自のナビゲーション・モデルを作成する場合は、そのナビゲーション・モデルをアプリケーションのデフォルト・ナビゲーション・モデルとして設定することをお薦めします。これにより、ページおよびページ・テンプレート内でナビゲーション・モデルをはるかに容易に使用できます。詳細は、第10.4項「デフォルトのナビゲーション・モデルの選択」を参照してください。

10.3 ナビゲーション・モデルの編集

ナビゲーション・モデルのコンテンツを定義するために、シード済ナビゲーション・モデルdefault-navigation-model.xmlを編集して、アプリケーション内でユーザーがアクセスできるようにするリソースのノードを追加できます。シード済ナビゲーション・モデルは、WebCenter Portal Frameworkアプリケーション・テンプレートを使用してアプリケーションを作成する際に自動的に作成されます。

ナビゲーション・モデルを独自に作成して、編集することもできます。詳細は、第10.2項「ナビゲーション・モデルの作成」を参照してください。

ノードをナビゲーション・モデルに追加するには、次の2つの方法があります。

- リソースを、JDeveloperの別の領域から「デザイン」ビューのナビゲーション・モデルにドラッグ・アンド・ドロップします。

- ナビゲーション・モデルの「デザイン」ビューで、「新しいノードを追加します」メニューのオプションを使用します(図10-3)。

図10-3 ナビゲーション・モデルの「新しいノードを追加します」メニュー

ナビゲーション・モデルの「デザイン」ビューで、既存のナビゲーション・モデル・ノードの変更および削除もできます。

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

- 第10.3.1項「リソースをナビゲーション・モデルにドラッグ・アンド・ドロップする方法」

- 第10.3.2項「ページをナビゲーション・モデルに追加する方法」

- 第10.3.3項「フォルダをナビゲーション・モデルに追加する方法」

- 第10.3.4項「セパレータをナビゲーション・モデルに追加する方法」

- 第10.3.5項「その他のリソースをナビゲーション・モデルに追加する方法」

- 第10.3.6項「動的に生成されたリソースをナビゲーション・モデルに追加する方法」

- 第10.3.7項「ナビゲーション・モデルまたはナビゲーション・モデル・ノードの表示オプションを設定する方法」

- 第10.3.8項「ナビゲーション・モデル内のノードを再配置する方法」

- 第10.3.9項「ナビゲーション・モデルまたはナビゲーション・モデル・ノードを表示または非表示にする方法」

- 第10.3.10項「ナビゲーション・モデル・ノードを編集する方法」

- 第10.3.11項「ナビゲーション・モデル・ノードを削除する方法」

10.3.1 リソースをナビゲーション・モデルにドラッグ・アンド・ドロップする方法

ナビゲーション・モデル定義ファイルの「デザイン」ビュー内で目的の場所にリソースをドラッグ・アンド・ドロップすることにより、次のリソースをナビゲーション・モデルに追加できます。

- ページ: アプリケーション・ナビゲータから。そのページのみを追加するか、そのページとサブページを含むページ問合せを追加するかを選択するように求められます。

- URL接続: 「アプリケーション・リソース」ペインまたは「リソース・パレット」から

- コンテンツ・アイテム: 「アプリケーション・リソース」ペインまたは「リソース・パレット」内のコンテンツ・サーバー接続から

- ポートレット: 「アプリケーション・リソース」ペインまたは「リソース・パレット」から

- タスク・フロー: 「アプリケーション・リソース」ペインまたは「リソース・パレット」から

- 外部アプリケーション: 「アプリケーション・リソース」ペインまたは「リソース・パレット」から

- ナビゲーション・モデル: アプリケーション・ナビゲータから。ナビゲーション・モデルが別のナビゲーション・モデル内に埋め込まれます。

10.3.2 ページをナビゲーション・モデルに追加する方法

ナビゲーション・モデルの大部分は、アプリケーション内の様々なページへのリンクで構成されます。アプリケーション内にある任意のJSPXページへのリンクを追加できます。

ナビゲーション・モデルにページを追加するには:

1. アプリケーション・ナビゲータで、ページを追加するナビゲーション・モデルを右クリックし、「開く」を選択します。

2. ナビゲーション・モデルの「デザイン」ビューの左側の「ナビゲーション」列で、ページを追加するナビゲーション・モデルのノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「リンク」を選択します。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、より説明的なIDに変更することもできます。IDはナビゲーション・モデル内で一意である必要があります。
このIDは、ナビゲーション・モデル内のノードへの直接アクセスを提供するために使用されます。たとえば、最上位レベル・ノードのIDがhome、その下にある子ノードのIDがsalesならば、次のURLを使用して子ノードにアクセスできます。

http://host:port/application-context-root/servlet/home/sales

注意:

ノードがナビゲーション・モデルの最上位レベルにある場合は、IDをナビゲーションURLの予約済キーワードのいずれかにしないでください。詳細は、第10.10項「ナビゲーションURLの予約済キーワード」を参照してください。

ヒント:

IDが一意ではないか、無効な文字を入力した場合、フィールドの境界線が赤くなります。

5. 「タイプ」ドロップダウン・リストから、「ページ」を選択します。

6. 「ファクトリ・クラス」フィールドには、ページに適した値が自動的に移入され、編集できません。

7. 「URL」フィールドで、ページにアクセスするURLを入力するか、これを参照します。URLには次の形式を使用する必要があります。

page://pathToPage/pageName

例:

page://oracle/webcenter/portalapp/pages/myPage.jspx

ヒント:

ページのパスがわからない場合は、「ファイルを参照します」をクリックしてアプリケーション内のページを探します。

8. 指定したページ・テンプレートを使用して、アプリケーションのコンテンツ領域にページをレンダリングするには、「ページ・テンプレートでのURLのレンダリング」を選択します。
ページから定義されたURLへのクライアント側リダイレクトを実行するには、「URLにリダイレクト」を選択します。

9. 「表示可能」フィールドで、実行時にナビゲーション・モデルがレンダリングされるとき、ナビゲーション・モデルにページを表示するかどうかを指定します。デフォルト値はEL式#{true}で、これはすべてのユーザーに対して常にページを表示することを意味します。ページがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、ページの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

注意:

ナビゲーション・モデル内のノードは、セキュリティに基づいて自動的にフィルタ処理されます。ユーザーがページへのアクセス権を持たない場合には、レンダリングされたナビゲーション・モデルにそのページは表示されません。

10. 「URL属性」セクションで、ページに目的の表示オプションを指定します。詳細は、第10.3.7項「ナビゲーション・モデルまたはナビゲーション・モデル・ノードの表示オプションを設定する方法」を参照してください。

11. 「URLパラメータ」セクションで、必要に応じて、選択したページでサポートしているパラメータの値を入力します。
「追加」アイコンをクリックして、「パラメータ」表に行を作成します。

たとえば、url_renderer_widthパラメータとurl_renderer_heightパラメータを追加し、値をピクセル単位で指定することによって、ページの表示に使用されるインライン・フレームのサイズを指定できます。

12. ナビゲーション・モデル定義ファイルを保存します。

10.3.3 フォルダをナビゲーション・モデルに追加する方法

ナビゲーション・モデル内のノードのサブセットを作成したり、類似したノードをグループにまとめたりするために、ナビゲーション・モデルを階層式に編成できます。ナビゲーション・モデルに多数のノードが存在する場合は、実行時にこの階層を縮小してスペースを節約できます。

ナビゲーション・モデル内でノードを別のノードの下に配置することにより、この階層を作成できます。親の役割を果たすノードがないノードのコレクションがある場合は、フォルダを作成できます。フォルダは基礎となるリソースを指さず、他のナビゲーション・モデル・ノードを格納する役割のみを果たします。

ナビゲーション・モデルにフォルダを追加するには:

1. アプリケーション・ナビゲータで、フォルダを追加するナビゲーション・モデルを右クリックし、「開く」を選択します。

2. ナビゲーション・モデルの「デザイン」ビューの左側の「ナビゲーション」列で、フォルダを追加するナビゲーション・モデルのノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「フォルダ」を選択します。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、より説明的なIDに変更することもできます。IDはナビゲーション・モデル内で一意である必要があります。
このIDは、ナビゲーション・モデル内のノードへの直接アクセスを提供するために使用されます。たとえば、最上位レベル・ノードのIDがhome、その下にある子ノードのIDがsalesならば、次のURLを使用して子ノードにアクセスできます。

http://host:port/application-context-root/servlet/home/sales

注意:

ノードがナビゲーション・モデルの最上位レベルにある場合は、IDをナビゲーションURLの予約済キーワードのいずれかにしないでください。詳細は、第10.10項「ナビゲーションURLの予約済キーワード」を参照してください。

ヒント:

IDが一意ではないか、IDに無効な文字を入れた場合、フィールドの境界線が赤くなります。

5. 「表示可能」フィールドで、実行時にナビゲーション・モデルがレンダリングされるとき、フォルダを表示するかどうかを指定します。デフォルト値はEL式#{true}です。これは、フォルダが常にすべてのユーザーに表示されることを意味します。フォルダがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、フォルダの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

6. 「フォルダ属性」セクションに、フォルダの任意の表示オプションを指定します。詳細は、第10.3.7項「ナビゲーション・モデルまたはナビゲーション・モデル・ノードの表示オプションを設定する方法」を参照してください。

7. 「フォルダ・パラメータ」セクションで、必要に応じて、フォルダでサポートしているパラメータの値を入力します。
「追加」アイコンをクリックして、「パラメータ」表に行を作成します。

8. ナビゲーション・モデル定義ファイルを保存します。

10.3.4 セパレータをナビゲーション・モデルに追加する方法

セパレータは、ナビゲーション・モデルをノードのグループに視覚的に分割します。セパレータを使用して、ナビゲーション・モデルが実行時にレンダリングされるときに、ナビゲーション・モデル内のノードを視覚的に分割できるので、ノードを見つけやすくなります。

ナビゲーション・モデルにセパレータを追加するには:

1. アプリケーション・ナビゲータで、セパレータを追加するナビゲーション・モデルを右クリックし、「開く」を選択します。

2. ナビゲーション・モデルの「デザイン」ビューの左側の「ナビゲーション」列で、セパレータを追加するナビゲーション・モデルのノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「セパレータ」を選択します。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、より説明的なIDに変更することもできます。IDはナビゲーション・モデル内で一意である必要があります。
このIDは、ナビゲーション・モデル内のノードへの直接アクセスを提供するために使用されます。たとえば、最上位レベル・ノードのIDがhome、その下にある子ノードのIDがsalesならば、次のURLを使用して子ノードにアクセスできます。

http://host:port/application-context-root/servlet/home/sales

注意:

ノードがナビゲーション・モデルの最上位レベルにある場合は、IDをナビゲーションURLの予約済キーワードのいずれかにしないでください。詳細は、第10.10項「ナビゲーションURLの予約済キーワード」を参照してください。

ヒント:

IDが一意ではないか、IDに無効な文字を入れた場合、フィールドの境界線が赤くなります。

5. 「表示可能」フィールドで、実行時にナビゲーション・モデルがレンダリングされるとき、セパレータを表示するかどうかを指定します。デフォルト値はEL式#{true}です。これは、セパレータが常にすべてのユーザーに表示されることを意味します。セパレータがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、セパレータの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

6. ナビゲーション・モデル定義ファイルを保存します。

10.3.5 その他のリソースをナビゲーション・モデルに追加する方法

ナビゲーション・モデルに他のリソース(ドキュメント、外部Webページ、ポートレット、タスク・フローなど)を追加できます。

ナビゲーション・モデルに他のリソースを追加するには:

1. アプリケーション・ナビゲータで、リソースを追加するナビゲーション・モデルを右クリックし、「開く」をクリックします。

2. ナビゲーション・モデルの「デザイン」ビューの左側の「ナビゲーション」列で、リソースを追加するナビゲーション・モデルのノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックし、追加するリソースのタイプを選択します。

- コンテンツ・アイテム: ドキュメントを追加します。

- コンテンツ問合せ: 特定の問合せ基準を満たすドキュメントの集合を追加します。

- リンク: ポートレット、タスク・フロー、外部アプリケーションまたはWebページを追加します。

- ページ問合せ: ページのリストを追加します。

- ナビゲーション参照: 別のナビゲーション・モデルを埋め込みます。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、より説明的なIDに変更することもできます。IDはナビゲーション・モデル内で一意である必要があります。
このIDは、ナビゲーション・モデル内のノードへの直接アクセスを提供するために使用されます。たとえば、最上位レベル・ノードのIDがhome、その下にある子ノードのIDがsalesならば、次のURLを使用して子ノードにアクセスできます。

http://host:port/application-context-root/servlet/home/sales

注意:

ノードがナビゲーション・モデルの最上位レベルにある場合は、IDをナビゲーションURLの予約済キーワードのいずれかにしないでください。詳細は、第10.10項「ナビゲーションURLの予約済キーワード」を参照してください。

ヒント:

IDが一意ではないか、IDに無効な文字を入れた場合、フィールドの境界線が赤くなります。

5. 「表示可能」フィールドで、実行時にナビゲーション・モデルがレンダリングされるとき、ノードを表示するかどうかを指定します。デフォルト値はEL式#{true}です。これは、ノードが常にすべてのユーザーに表示されることを意味します。ノードがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、ノードの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

6. 残りのフィールドは、リソース・タイプに固有のものです。詳細は、表10-1を参照してください。

表10-1 ナビゲーション・モデル・リソースのフィールド

フィールド

適用対象

説明

ファクトリ・クラス

リンク

コンテンツ・アイテム

このフィールドには、リソース・タイプの適切なファクトリ・クラスが自動的に移入され、編集できません。

フォルダの内容の挿入

コンテンツ問合せ

ページ問合せ

問合せの結果をフォルダの下に表示せず、レンダリングされたナビゲーション・モデルに直接表示する場合に選択します。

ページ・スタイル

ページ問合せ

ナビゲーション・モデルに含めるページのスタイルを選択します。

ページ・テンプレート

ページ問合せ

リソースが選択されている場合、リソースの表示に使用するページ・テンプレートを選択します。

ページ可視性

ページ問合せ

非表示のフラグが立てられている場合でもページを含めるかどうかを選択します。

パス

ページ問合せ

ナビゲーション参照

ページ問合せの開始点として使用するページに対応したXMLファイルのパスとファイル名を入力します。例:

/oracle/webcenter/portalapp/pagehierarchy/pages/pages.xml
/oracle/webcenter/portalapp/pagehierarchy/pages/productsPages.xml

問合せ

コンテンツ問合せ

ナビゲーション・モデルに含めるコンテンツを識別するための問合せ基準を入力します。次に例を示します。

SELECT * FROM cmis:document WHERE cmis:name LIKE 'Foo%'

問合せのフォーマット方法の詳細およびその他の例については、Oracle Fusion Middlewareコンテンツ管理RESTサービス開発者ガイドを参照してください。

URLにリダイレクト

リンク

コンテンツ・アイテム

定義されたURLへのクライアント側リダイレクトを実行する場合に選択します。

ページ・テンプレートでのURLのレンダリング

リンク

コンテンツ・アイテム

指定したページ・テンプレートを使用して、現在のページにリソースをレンダリングする場合に選択します。

リポジトリ

コンテンツ問合せ

検索するコンテンツを含むコンテンツ・リポジトリを入力または参照します。

注意: リポジトリ名を手動で(つまり、ドラッグ・アンド・ドロップまたは「リソースの選択」ダイアログを使用せずに)入力し、リポジトリの接続が「リソース・パレット」内でのみ使用可能になっている場合は、まず接続をアプリケーションに追加したことを確認してください(「アプリケーション・リソース」ペイン内で)。

スコープ

ページ問合せ

このフィールドは、Portal Frameworkアプリケーションには適用できません(有効範囲は常に現在のアプリケーション)。

タイプ

リンク

コンテンツ・アイテム

ナビゲーション・モデルに追加するリンクのタイプ(「外部リンク」、「外部アプリケーション」、「ページ」、「タスクフロー」、「ポートレット」、「コンテンツ」)を選択します。

URL

リンク

コンテンツ・アイテム

リソースの場所を入力します。場所がわからない場合は、「ファイルを参照します」アイコンをクリックして使用可能なリソースを参照します。

表10-2に、様々なリソース・タイプに使用するURL形式を示します。

注意: 「ポートレット」、「外部アプリケーション」または「コンテンツ」リソースのURLを手動で(つまり、ドラッグ・アンド・ドロップまたは「リソースの選択」ダイアログを使用せずに)入力し、リポジトリの接続が「リソース・パレット」内でのみ使用可能になっている場合は、まず接続をアプリケーションに追加したことを確認してください(「アプリケーション・リソース」ペイン内で)。

表10-2に、様々なリソース・タイプに使用するURL形式を示します。

表10-2 様々なリソース・タイプのURLの形式

リソース・タイプ

アプリケーション内での場所

URLの形式

外部リンク

なし

リンクするWebページの絶対パスまたは相対パス。

注意: 「外部リンク」オプションを使用してmailto:リンクをナビゲーションに含める場合、ナビゲーションUIはこのタイプのリンクを明示的に処理する必要があります。詳細は、第10.12項「ポータル・ナビゲーションの視覚化」を参照してください。

外部アプリケーション

「アプリケーション・リソース」ペイン内の外部アプリケーション接続

extapp://externalApplicationId

ページ

アプリケーション・ナビゲータ

page://pathToPage/pageName

例:

page://oracle/webcenter/portalapp/pages/myPage.jspx

ADFライブラリからのタスク・フロー

リソース・パレット

taskflow://pathToTaskFlow/taskFlowDefinitionFileName#taskFlowId

注意: このようにタスク・フローに直接移動することにより、タスク・フローのパラメータを設定できます。タスク・フローをさらに詳細に制御する必要がある場合は、タスク・フローをページに追加して、ページをナビゲーション・モデルに追加します。

アプリケーション内のタスク・フロー

アプリケーション・ナビゲータ

taskflow://PathToTaskFlow/taskFlowDefinitionFileName#taskFlowId

注意: このようにタスク・フローに直接移動することにより、タスク・フローのパラメータを設定できます。タスク・フローをさらに詳細に制御する必要がある場合は、タスク・フローをページに追加して、ページをナビゲーション・モデルに追加します。

ポートレット

「アプリケーション・リソース」ペインまたは「リソース・パレット」内のポートレット・プロデューサ接続

portlet://producerId/portletId

注意: この方法でナビゲーションを直接ポートレットに指定すると、ユーザーがポートレットに移動したときにポートレットをカスタマイズできません。ユーザーがポートレットをカスタマイズできるようにするには、ポートレットをページに追加してカスタマイズ可能なポートレット・インスタンスを作成し、そのページをナビゲーション・モデルに追加します。

コンテンツ

「アプリケーション・リソース」ペインまたは「リソース・パレット」内のコンテンツ・リポジトリ接続

content://contentConnectionId/documentId

7. リソースの「属性」セクションで、リソースに目的の表示オプションを指定します。詳細は、第10.3.7項「ナビゲーション・モデルまたはナビゲーション・モデル・ノードの表示オプションを設定する方法」を参照してください。

8. リソースの「パラメータ」セクションで、必要に応じて、リソースでサポートしているパラメータの値を入力します。
「追加」アイコンをクリックして、「パラメータ」表に行を作成します。

リンクに対しては、url_renderer_widthパラメータとurl_renderer_heightパラメータを追加し、値をピクセル単位で指定することによって、リンクのターゲットの表示に使用されるインライン・フレームのサイズを指定できます。

コンテンツ・プレゼンタ表示テンプレートを使用してコンテンツ・アイテムまたはコンテンツ問合せの結果を表示する場合、「パラメータ」セクションで「追加」アイコンをクリックして「templateView」を選択します。

templateViewパラメータの「値」フィールドに、次のようなコンテンツのレンダリングに使用する表示テンプレート・ビューIDを入力します。

- 単独のコンテンツ・アイテムの場合: oracle.webcenter.content.templates.default.detail

- コンテンツ問合せの場合: oracle.webcenter.content.templates.default.list.simple

注意:

コンテンツ・プレゼンタ表示テンプレートを使用してWikiページを表示すると、デフォルトでそのWikiページ内のリンクがドキュメント・ビューアで表示されます。コンテンツ・プレゼンタを使用してWikiページのリンクを表示する場合、adf-config.xmlファイルを編集する必要があります。詳細は、第30.3.5項「コンテンツ・プレゼンタでのWikiページ・リンクの表示」を参照してください。

10.3.6 動的に生成されたリソースをナビゲーション・モデルに追加する方法

ナビゲーション・モデルに既知のリソースを追加するだけでなく、実行時に動的に生成されるリソースを追加することも可能です。

- カスタム・リソースは、サード・パーティ・リソースへのリンクです。

- カスタム・コンポーネントは、単純なADF Facesコンポーネント、2つ以上のコンポーネントを含む複合オブジェクト、内部に任意のHTMLコンテンツを追加できるJSF Verbatimタグなどのリソースです。

- カスタム・フォルダは、実行時に動的にコンテンツを表示するように構成されます。カスタム・フォルダはリソースを含むフォルダとして追加されません。つまり、リソースを動的に表示する、ファクトリ・クラスへのリファレンスのみが含まれます。

- カスタム・コンテンツ・プロバイダは、実行時に1つ以上のリソースを動的に生成します(生成しない場合もあります)。これはカスタム・フォルダに非常に似ていますが、カスタム・フォルダを追加する場合は、実行時にナビゲーション・モデルがレンダリングされると、空の場合でも必ずフォルダが表示される点が異なっています。カスタム・コンテンツ・プロバイダを使用すると、フォルダ内にコンテンツが存在する場合にのみ、実行時にフォルダが表示されます。

動的に生成されたリソースをナビゲーション・モデルに追加するには:

1. アプリケーション・ナビゲータで、リソースを追加するナビゲーション・モデルを右クリックし、「開く」をクリックします。

2. ナビゲーション・モデルの「デザイン」ビューの左側の「ナビゲーション」列で、リソースを追加するナビゲーション・モデルのノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックし、追加するリソースのタイプを選択します。

- リンク: カスタム・リソースを追加します。また、「タイプ」ドロップダウン・リストから「その他」を選択する必要があります。

- コンポーネント: カスタム・コンポーネントを追加します。

- カスタム・フォルダ: カスタム・フォルダを追加します。

- カスタム・コンテンツ: カスタム・コンテンツ・プロバイダを追加します。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、より説明的なIDに変更することもできます。IDはナビゲーション・モデル内で一意である必要があります。
このIDは、ナビゲーション・モデル内のノードへの直接アクセスを提供するために使用されます。たとえば、最上位レベル・ノードのIDがhome、その下にある子ノードのIDがsalesならば、次のURLを使用して子ノードにアクセスできます。

http://host:port/application-context-root/servlet/home/sales

注意:

ノードがナビゲーション・モデルの最上位レベルにある場合は、IDをナビゲーションURLの予約済キーワードのいずれかにしないでください。詳細は、第10.10項「ナビゲーションURLの予約済キーワード」を参照してください。

ヒント:

IDが一意ではないか、IDに無効な文字を入れた場合、フィールドの境界線が赤くなります。

5. 「表示可能」フィールドで、実行時にナビゲーション・モデルがレンダリングされるとき、ノードを表示するかどうかを指定します。デフォルト値はEL式#{true}です。これは、ノードが常にすべてのユーザーに表示されることを意味します。ノードがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、ノードの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

6. 残りのフィールドは、リソース・タイプに固有のものです。詳細は、表10-3を参照してください。

表10-3 カスタム・ナビゲーション・モデル・リソースのフィールド

フィールド

適用対象

説明

コンポーネント・ファクトリ:*

カスタム・コンポーネント

oracle.adf.rc.component.XmlComponentFactoryなど、oracle.adf.rc.component.ComponentFactoryインタフェースを実装し、一連のパラメータに基づいてコンポーネントのインスタンスを作成するJavaクラスを入力または参照します。

名前を入力すると、クラスパスから有効なファクトリ・クラスがフィールドに自動的に入力されます。

詳細は、第C.4項「カタログへの動的リソースの追加に使用可能なファクトリ・クラス」を参照してください。

コンテンツ・プロバイダ

カスタム・コンテンツ

oracle.adf.rc.spi.plugin.catalog.CustomContentProviderV2インタフェースを実装するJavaクラスを入力または参照します。

詳細は、第C.4項「カタログへの動的リソースの追加に使用可能なファクトリ・クラス」を参照してください。

ファクトリ・クラス

カスタム・リソース

カスタム・リソースのURLを解決できるURLResourceFactory実装クラスを入力するか参照します。

初期コンテキスト・ファクトリ

カスタム・フォルダ

javax.naming.spi.InitialContextFactoryインタフェースを実装して一連のパラメータに基づいてフォルダを生成するJavaクラスを入力または参照します。

詳細は、第C.4項「カタログへの動的リソースの追加に使用可能なファクトリ・クラス」を参照してください。

フォルダの内容の挿入

カスタム・フォルダ

カスタム・フォルダのコンテンツをフォルダの下に表示せず、レンダリングされたナビゲーション・モデルに直接表示する場合に選択します。

パス

カスタム・フォルダ

カスタム・フォルダのMDSパスを入力します。

URLにリダイレクト

カスタム・リソース

ページから定義されたURLへのクライアント側リダイレクトを実行する場合に選択します。

ページ・テンプレートでのURLのレンダリング

カスタム・リソース

指定したページ・テンプレートを使用して、現在のページにリソースをレンダリングする場合に選択します。

タイプ

カスタム・リソース

「その他」を選択します。

URL

カスタム・リソース

リソースにアクセスするURLを入力します。

7. リソースの「属性」セクションで、リソースに目的の表示オプションを指定します。詳細は、第10.3.7項「ナビゲーション・モデルまたはナビゲーション・モデル・ノードの表示オプションを設定する方法」を参照してください。

注意:

通常、カスタム・コンテンツ・プロバイダでは、属性を指定する必要がありません。コンテンツ・プロバイダで生成されたリソースの属性は、コンテンツ・プロバイダで指定されます。

8. リソースの「パラメータ」セクションで、次の操作を行います。

- カスタム・リソースの場合は、必要に応じて、カスタム・リソースでサポートされているパラメータの値を入力します。

- カスタム・フォルダの場合は、ファクトリ・クラスを実装する際に定義したパラメータを追加します。これらのパラメータは、アプリケーションのその他のアーティファクトにバインドできます。

- カスタム・コンテンツ・プロバイダの場合は、カスタム・コンテンツ・プロバイダのパラメータを定義します。ここで定義するパラメータは、CustomContentProviderV2実装に渡され、この実装により解釈されます。

「追加」アイコンをクリックして、「パラメータ」表に行を作成します。

9. ナビゲーション・モデル定義ファイルを保存します。

10.3.7 ナビゲーション・モデルまたはナビゲーション・モデル・ノードの表示オプションを設定する方法

ナビゲーション・モデルまたはそのいずれかのノードに対する様々な表示オプションを指定して、ナビゲーション・モデルが実行時にレンダリングされる際の外観と動作を決定できます。使用できる表示オプションは、リソースのタイプの応じて異なります。

ナビゲーション・モデル・ノードの表示オプションを設定するには:

1. アプリケーション・ナビゲータで、ナビゲーション・モデルを右クリックして、「開く」を選択します。

2. ナビゲーション・モデルの「デザイン」ビューで、左側の「ナビゲーション」列から、表示オプションを設定する対象のノードを選択します。
ナビゲーション・モデルの表示オプションを設定するには、ルート・ノードを選択します。

3. リソースの「属性」パネルで、「追加」アイコンをクリックして設定する属性を選択します。表10-4に使用できる属性を示します。

表10-4 ナビゲーション・モデルの表示オプション

属性

説明

役職

ナビゲーション・モデルが実行時にレンダリングされるときにノードに表示されるタイトル。

AccessKey

ユーザーがマウスを使用せずにノードにアクセスする場合に入力できるキーのニーモニック(単一文字)。

説明

ノードの説明。

IconURI

ノードを視覚的に表すアイコン。これは、ナビゲーション・モデルが実行時にレンダリングされる際にタイトルの隣に表示されます。

Subject

ノードの検索を容易にするキーワード。

Target

ノードが選択された際に表示されるコンテナ・ページ上の場所。同一のブラウザ・ウィンドウ(_self)、新規ウィンドウ(_blank)、ポップアップ(_popup)のいずれかか、ナビゲーションUIでサポートされるその他の場所となります。

注意: ポップアップはページではサポートされていません。

ToolTip

ユーザーがマウスをタイトル上に置いたときにノードに関する追加情報を提示するテキスト。

Modified

ノードの最終変更日。この属性は、サイト・マップの作成に使用されます。

ChangeFrequency

ノードが変更される頻度(always、hourly、daily、weekly、monthly、yearly、never)。この属性は、サイト・マップの作成に使用されます。

Significance

ナビゲーション・モデル内の他のノードに対するこのノードの優先度(0.0から1.0)。この属性は、サイト・マップの作成に使用されます。

ExternalId

ページの静的リンクからナビゲーション・モデル内のノードへ直接参照できるID。

詳細は、第10.10項「ナビゲーションURLの予約済キーワード」を参照してください。

4. 「値タイプ」ドロップダウン・リストから、次のいずれかを選択します。

- リテラル文字列: 属性に対する値として文字列を指定します。

- リソース・バンドル - リソース・バンドルを使用して、属性のローカライズ値を指定します。

5. 「表示値」フィールドに、属性の値を入力します。リソース・バンドルを使用している場合、「参照」アイコンをクリックしてローカライズ値を検索するリソース・バンドルを選択します。

6. ナビゲーション・モデル定義ファイルを保存します。

10.3.8 ナビゲーション・モデル内のノードを再配置する方法

ノードを追加した後、ナビゲーション・モデル内でノードを移動できます。ノードを再配置する方法は次のとおりです。

- ノードを元の場所から別の場所にドラッグ・アンド・ドロップします。
ノードをナビゲーション・モデル内に移動するには、ノードを選択して目的の場所にドラッグします。ノード(子)を別のノード(親)の下にインデントさせるには、子ノードを選択して親ノードの上にドラッグします。

- 「親の変更」ポップアップ・メニュー・オプションを使用して、ノードを別の場所に移動します。

「親の変更」オプションを使用してノードを再配置するには:

1. アプリケーション・ナビゲータで、ナビゲーション・モデルを右クリックして、「開く」を選択します。

2. ナビゲーション・モデルの「デザイン」ビューで、左側の「ナビゲーション」列からノードを右クリックして、ポップアップ・メニューから「親の変更」を選択します。

3. 「親の選択」ダイアログ(図10-4)で、ノードを含める親ノードを選択して「OK」をクリックします。

図10-4 「親の変更」ダイアログ

注意:

ナビゲーション・モデル内の任意のノードを、別のノードの親にできます。

4. ナビゲーション・モデル定義ファイルを保存します。

10.3.9 ナビゲーション・モデルまたはナビゲーション・モデル・ノードを表示または非表示にする方法

ナビゲーション・モデルまたはそのノードのいずれかを実行時に表示するかどうかを指定できます。

ヒント:

確定したtrueまたはfalseの値を指定するほか、EL式を使用して表示条件を指定することによって、ナビゲーション・モデルまたはノードが表示可能かどうかを動的に決定することもできます。

ナビゲーション・モデルまたはナビゲーション・モデル・ノードを表示または非表示にするには:

1. アプリケーション・ナビゲータで、ナビゲーション・モデルを右クリックして、「開く」を選択します。

2. ナビゲーション・モデルの「デザイン」ビューで、左側の「ナビゲーション」列から、可視性を設定する対象のノードを選択します。
ナビゲーション・モデルの可視性を設定するには、ルート・ノードを選択します。

3. 「表示可能」フィールドで、ナビゲーション・モデルまたはノードをアプリケーションで使用可能にするかどうかを指定します。このフィールドは、EL値を取ります。デフォルトは#{true}です。これは、ナビゲーション・モデルまたはノードが表示可能であることを示します。falseまたは#{false}を入力すると、ナビゲーション・モデルまたはノードが非表示になります。あるいはEL式を入力して、ナビゲーション・モデルまたはノードを表示可能にする条件を指定します。フィールドが空の場合、値はデフォルトでtrueになります。

4. ナビゲーション・モデル定義ファイルを保存します。

10.3.10 ナビゲーション・モデル・ノードを編集する方法

ナビゲーション・モデル・ノードを編集するには、ナビゲーション・モデル定義ファイルの「ナビゲーション」セクションでノードを選択します。リソースの属性とパラメータは、ページの右側に表示されます。これらの属性とパラメータの値を編集して、ナビゲーション・モデル定義ファイルを保存できます。リソースの属性とパラメータの詳細は、この章の該当する前項を参照してください。

10.3.11 ナビゲーション・モデル・ノードを削除する方法

リソースを削除するには、ナビゲーション定義ファイルの「ナビゲーション」セクションでリソースを選択し、「選択したノードを削除します」アイコンをクリックします。

図10-5 ナビゲーション・モデルの「デザイン」ビューの「削除」オプション

10.4 デフォルトのナビゲーション・モデルの選択

すべてのPortal Frameworkアプリケーションが、デフォルトのナビゲーション・モデルを定義します。これは、デフォルトでアプリケーションが使用する必要のあるナビゲーション・モデルを指定するのに便利です。これにより、実際の名前を指定せずに、このデフォルト・ナビゲーション・モデルを参照できます。たとえば、ナビゲーションEL式では、#{navigationContext.defaultNavigationModel}のように、デフォルトのナビゲーション・モデルが参照されることが多くあります。

最初にPortal Frameworkアプリケーションを作成すると、シード済ナビゲーション・モデル(default-navigation-model.xml)がアプリケーションのデフォルト・ナビゲーション・モデルとして設定されます。続いて、アプリケーションのメイン・ナビゲーション・パスに使用する独自のナビゲーション・モデルを作成すると、使用するたびにこのナビゲーション・モデルを明示的に参照するのではなく、それをデフォルトとして設定できます。これにより、アプリケーション内でナビゲーション・モデルを使用するプロセスがはるかに簡単になります。

Portal Frameworkアプリケーションにデフォルトのナビゲーション・モデルを設定するには、adf-config.xmlファイルのoracle.webcenter.portalapp.navigation.modelプリファレンスを編集します。

デフォルトのナビゲーション・モデルを選択するには:

1. アプリケーション・ナビゲータの「アプリケーション・リソース」ペインで、adf-config.xmlファイルを右クリックして、「開く」を選択します。

ヒント:

adf-config.xmlファイルを探すには、「ディスクリプタ」ノードを開き、さらに「ADF META-INF」ノードを開きます。

2. 「ソース」タブをクリックします。

3. 次のidを使用して、ADFプリファレンスを見つけます。

oracle.webcenter.portalapp.navigation.model

4. value属性を、アプリケーションのデフォルトとして使用するナビゲーション・モデルのパスに設定します。次に例を示します。

value="/oracle/webcenter/portalapp/navigations/myNavigationModel.xml"

例10-1に、完全なプリファレンス要素の例を示します。

例10-1 デフォルトのナビゲーション・モデルのADFプリファレンス

<preference id="oracle.webcenter.portalapp.navigation.model"
desc="Default Navigation Model"
value="/oracle/webcenter/portalapp/navigations/myNavigationModel.xml"
resourceType="navigation" display="true"/>

5. adf-config.xmlファイルを保存します。

10.5 ナビゲーション・モデルのコンテンツのフィルタリング

フィルタを使用して、実行時にナビゲーション・モデルをレンダリングする際にナビゲーション・モデルに組み込むノードを、特定の基準に応じて決定できます。

ヒント:

ノードの「表示可能」フィールドにEL式を指定すると、ナビゲーション・モデルの個別ノードを条件に基づいて非表示にすることも可能です。詳細は、第10.3.9項「ナビゲーション・モデルまたはナビゲーション・モデル・ノードを表示または非表示にする方法」を参照してください。

ナビゲーション・モデルのコンテンツをフィルタ処理するには:

1. アプリケーション・ナビゲータで、ナビゲーション・モデルを右クリックして、「開く」を選択します。

2. ナビゲーション・モデルの「デザイン」ビューの左側にある「ナビゲーション」パネルで、ナビゲーション・モデルを表現するノード(ルート・ノード)を選択します。

3. 「ナビゲーション・フィルタ」フィールドに、ナビゲーション・モデル内で選択済ノードを特定の基準に応じて除外する際に使用するJavaクラスの名前を入力します。
このJavaクラスは、oracle.adf.rc.spi.plugin.catalog.CatalogDefinitionFilterインタフェースを実装します。

ノードはセキュリティに基づいて自動的にフィルタ処理されます。ユーザーが特定のリソースへのアクセス権を持たない場合には、ナビゲーション・モデルが実行時にレンダリングされる際にそのリソースのノードは表示されません。

4. 変更内容を保存します。

10.6 ナビゲーション・モデルの削除

アプリケーション内でナビゲーション・モデルが不要になった場合は、ナビゲーション・モデルを削除できます。

注意:

アプリケーションのデフォルト・ナビゲーション・モデルを削除する場合は、デフォルト・ナビゲーション・モデルを有効なナビゲーション・モデルに変更する必要があります。詳細は、第10.4項「デフォルトのナビゲーション・モデルの選択」を参照してください。

ナビゲーション・モデルを削除するには、アプリケーション・ナビゲータ内でナビゲーション・モデルを右クリックして、ポップアップ・メニューから「削除」を選択します。詳細は、第9.4項「ポータル・リソースの削除」を参照してください。

10.7 ナビゲーション・レジストリ・ファイルの編集

ナビゲーション・レジストリは、ユーザーが実行時にナビゲーション・モデルに追加できるリソースを登録するための専用リソース・カタログです。各Portal Frameworkアプリケーションには、アプリケーションの作成時に作成される1つのナビゲーション・レジストリ・ファイルnavigation-registry.xmlが含まれます。このファイルを編集して、たとえばユーザーが実行時に他のナビゲーション・モデルを埋め込むことができないように、ナビゲーション参照リソースを削除できます。

ナビゲーション・レジストリを編集するには:

1. アプリケーション・ナビゲータで、navigation-registry.xmlファイルを右クリックします。

ヒント:

このファイルは、Application_Root/oracle/webcenter/portalapp/navigationsの下にあります。

2. このファイルをその他のリソース・カタログと同じ方法で編集します。詳細は、第14.3項「リソース・カタログの編集」を参照してください。
次のリソースをナビゲーション・レジストリに追加できます。

- フォルダ

- リンク

- タスク・フロー

- ポートレット

- コンテンツ

- その他

- リソース・カタログ

- コンポーネント

- カスタム・フォルダ

- カスタム・コンテンツ

ナビゲーション・レジストリの既存のリソースを変更および削除して、レジストリのリソースを再配置することもできます。

3. 終了したら、navigation-registry.xmlファイルを保存します。

10.8 ナビゲーション・レンダラの編集

ナビゲーション・レンダラは、ナビゲーション・モデル経由でのアクセス時に、次のようなページ以外のリソースをレンダリングするJSPXページです。

- ポートレット

- コンテンツ

- 外部リンク

- 外部アプリケーション

- タスク・フロー

ナビゲーション・レンダラ・ページを編集して、これらのリソース・タイプのレンダリング方法を変更できます。たとえば、ナビゲーション・レンダラ・タスク・フローの前または後にイメージを追加したり、フローからストレッチ・レイアウトに変更することができます。

注意:

非常に多くの場合、既存のナビゲーション・レンダラを編集して、各自の要件に適合できるようにする必要があります。しかし、必要な場合には独自のナビゲーション・レンダラ・ページを作成できます。たとえば、ナビゲーション・レンダラでは、contentファセットが期待されます。別のファセットを使用する場合には、独自のページを作成して、テンプレートの適切な場所にナビゲーション・レンダラ・タスク・フローを配置できます。

独自のナビゲーション・レンダラ・ページを作成することにした場合は、そのナビゲーション・レンダラ・タスク・フローを格納するナビゲーション・レンダラ・リージョンを含める必要があります。

アプリケーションのナビゲーション・レンダラとしてページを設定するには、ナビゲーション・レンダラADFプリファレンス(oracle.webcenter.portalapp.navigation.renderer)を編集して適切なファイルを指すようにします。ADFプリファレンスの編集方法の詳細は、第10.4項「デフォルトのナビゲーション・モデルの選択」を参照してください。

ナビゲーション・レンダラ・ページはデフォルトでは非表示のため、編集できるようにするには、まずアプリケーションでこれを表示する必要があります。

ナビゲーション・レンダラを編集するには:

1. アプリケーション・ナビゲータで、アプリケーション・プロジェクトを右クリックして「プロジェクト・プロパティ」を選択します。

2. 「プロジェクト・プロパティ」ダイアログで、「プロジェクトのソース・パス」ノードを開き、「Webアプリケーション」を選択します。

3. 「除外」タブを選択します。

4. ナビゲーション・レンダラ・ファイル(navigation-renderer.jspx)を選択して、「削除」をクリックし、除外ファイルのリストからそのファイルを削除します。

5. 「OK」をクリックします。
ナビゲーション・レンダラJSPXファイルは、アプリケーション・ナビゲータで次のノードの下にリストされるようになります。

/oracle/webcenter/portalapp/pages/

6. アプリケーション・ナビゲータで、navigation-renderer.jspxを右クリックして、「開く」を選択します。

7. 「ソース」タブをクリックして、必要に応じてファイルを編集します。

8. 終了したら、navigation-renderer.jspxファイルを保存します。

10.9 REDIRECT_OPTIONSコンテキスト・パラメータの設定

アプリケーションで部分ページ・リフレッシュ(PPR)が使用されていない場合、ユーザーがナビゲーション・モデルのノードにナビゲートするたびに、ブラウザのURLが変更されます。しかし、ブラウザで表示されているURLは現在のページを示さず、最後に表示されたページのURLが表示されます。

ブラウザで現在のページのURLを表示できるようにするには、web.xmlファイルでoracle.webcenter.navigationframework.REDIRECT_OPTIONSコンテキスト・パラメータを設定します。

注意:

oracle.webcenter.navigationframework.REDIRECT_OPTIONSコンテキスト・パラメータを設定すると、ナビゲーションごとにリクエスト/レスポンスが追加され、パフォーマンスに影響を及ぼします。

REDIRECT_OPTIONSコンテキスト・パラメータを設定するには:

1. アプリケーション・ナビゲータで、web.xmlファイルを右クリックし、「開く」を選択します。

2. 概要エディタで、「コンテキスト初期化パラメータ」セクションを開きます。

3. コンテキスト初期化パラメータの作成アイコンをクリックします。

4. 「名前」フィールドに、oracle.webcenter.navigationframework.REDIRECT_OPTIONSと入力します。

5. 「値」フィールドに、toPrettyURLと入力します。
これにより、web.xmlファイルに次のように追加されます。

<context-param>
<param-name>oracle.webcenter.navigationframework.REDIRECT_OPTIONS</param-name>
<param-value>toPrettyURL</param-value>
</context-param>

6. web.xmlファイルを保存します。

10.10 ナビゲーションURLの予約済キーワード

特定の予約済キーワードを使用して、ナビゲーション・モデル内のノードへの直接アクセスを提供できます。これらの予約済キーワードは次のとおりです。

- wcnav_defaultSelection: ナビゲーション・モデルの最初のナビゲート可能なノードにアクセスする場合に使用します。

- wcnav_currentSelection: ナビゲーション・モデルの現在選択されているノードにアクセスする場合に使用します。

- wcnav_externalId: 指定の外部IDを持つ、ナビゲーション・モデル内のノードにアクセスする場合に使用します。

- wcnav_title: 指定のタイトルを持つ、ナビゲーション・モデル内のノードにアクセスするために使用します。

これらのキーワードは、ページまたはページ・テンプレート内のaf:goLinkコンポーネント(例10-2)、またはナビゲーション・モデル内の外部リンク・ナビゲーション・アイテムのURL(例10-3)で使用できます。

例10-2 goLinkコンポーネントからナビゲーション・モデル・ノードへの直接アクセスの提供

<af:goLink id="pt_glink1" text="Navigation Item"
destination="/faces/wcnav_defaultSelection"/>

例10-3 外部リンク・ナビゲーション・アイテムからナビゲーション・モデル・ノードへの直接アクセスの提供

<url visible="#{true}"
factoryClass="oracle.webcenter.portalframework.sitestructure.rc.UrlResourceFactory"
id="externalLink"
url="/faces/wcnav_externalId/myNavigationItem">
</url>

デフォルトでは、これらのURLはデフォルト・ナビゲーション・モデル内のノードへのアクセスを提供します。デフォルト以外のナビゲーション・モデル内にあるノードに直接アクセスするには、wcnav.modelPath URLパラメータを設定してナビゲーション・モデルのパスを指定する必要があります。例を次に示します。

/faces/wcnav_externalId/myNavigationItem?wcnav .modelPath=/oracle/webcenter/siteresources/scopedMD/
s7f446cab_f622_4b68_a83e_b7eaf28b52ec/navigation/gsr0271c712_721a_4565_9f0e_755784a7093b/
myProjectNavigationModel

リンクを使用する場所によっては、URLパラメータをエンコードする必要が生じることがあります。たとえば、外部IDにスペースまたは特殊文字が含まれる場合は、/faces/wcnav_externalId/my%2Fnav%2FitemのようにURLを指定します。

10.11 ナビゲーション・モデル開発のヒント

Portal Frameworkアプリケーションのナビゲーション・モデルを作成する際には、次のことを考慮してください。

- メインのナビゲーション・モデルは1つだけ使用するようにします。複数のナビゲーション・モデルを使用すると、フレンドリURLの制御が制限されます。

- Portal Frameworkアプリケーションの各セクションが、わかりやすいサブルート名を持つようにします。たとえば、Footerフォルダの下にすべてのフッター・リンクを配置します。

- Portal Frameworkアプリケーションの別の部分にユーザーを導くすべてのリンク(ヘッダーとフッターのリンクを含む)をナビゲーション・モデルに組み込みます。

- 外部IDを使用してアプリケーションの永続リンクを公開します。これにより、ナビゲータ・モデル・ノードが移動しても、外部アプリケーションが中断なくこれらのリンクを参照できます。

- ページがパラメータを定義している場合は、ナビゲーション・モデル・ノードでこれらのパラメータを設定して、ページのレンダリング方法を動的に制御できます。

- ページ・リンクは可能なかぎり多く使用します。たとえば、連絡先リンクを組み込む場合は、リンクを表示するページを作成し、ナビゲーション・モデルにそのページを組み込みます。

詳細は、Oracle WebCenter & ADF Architecture Teamのブログを参照してください。

10.12 ポータル・ナビゲーションの視覚化

ナビゲーションの視覚化により、ナビゲーションがアプリケーションにどのように表示されるかが決まります。たとえば、ナビゲーションを各ページの上部に一連のタブとして、あるいはページの横にツリー構造として表示できます。あるいは、ナビゲーションの視覚化として、マスター/ディテール・ナビゲーションを表示する方法も一般的です。たとえば、ページの上部にタブがあり、各タブには、ページの横にツリー構造で表示される追加のナビゲーションがあります。

通常、ページ・テンプレートにナビゲーションの視覚化を追加するため、これを1箇所で定義してポータル全体に一貫して伝播させることができます。ただし、個々のページにナビゲーションの視覚化を追加することもできます。

Oracle WebCenter Portalでは、ナビゲーションを視覚化するためにページまたはページ・テンプレートに追加できる組込みのナビゲーション・タスクが、リソース・カタログの「WebCenter Portal - サービス・カタログ」にいくつか提供されています。これらの組込みナビゲーション・タスク・フローにより、ナビゲーション・モデルをすばやくテストできますが、ナビゲーションの視覚化はかなり簡単になります。これらの組込みナビゲーション・タスク・フローの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のページ・テンプレートへのナビゲーションの追加に関する項を参照してください。

さらに高度な視覚化が必要になる場合も多くあります。これを行うには、ADFナビゲーション・コンポーネントとOracle WebCenter PortalナビゲーションのAPIを使用して、独自のナビゲーションUIを作成する必要があります。

注意:

ページまたはページ・テンプレートによって参照されるナビゲーション・モデルに、mailto:リンクを使用する外部リンク・ナビゲーション・アイテムが含まれる場合は、これらのアイテムを明示的に処理する必要があります。次の例では、JSTLを使用してナビゲーション・アイテムのexternalURLを調査し、これが文字列mailto:で開始しているかどうかを確認しています。その文字列で開始している場合は、ADF Faces goLinkコンポーネントを使用してリンクがレンダリングされます。

<c:choose>
<c:when test="${fn:startsWith(node.externalURL, 'mailto:')}">
<af:goLink id="pt_gl_mail" text="#{node.title}"
destination="#{node.externalURL}"/>
</c:when>
<c:otherwise>
...
</c:otherwise>
</c:choose>

Oracle WebCenter Portalには、ポータルにナビゲーションを追加するためのAPIが2セット用意されています。

- 式言語(EL)のAPI: EL式を使用して、ナビゲーション・モデルとナビゲーション・ノードを取得します。

- REST API: 標準のHTTPメソッドを使用して、ナビゲーション・モデルとナビゲーション・ノードを指し示し、取得されたオブジェクトの標準表現を返します。REST APIは、クライアント側のプログラミング言語(JavaScript + HTMLなど)や環境(iPhoneなど)の利用時に使用できます。

注意:

ナビゲーション・モデルを使用してアプリケーション内でナビゲーションをトリガーするタスク・フローには、wcnav_outcomeをルート・レベルに伝播するwcnav_parentActionというparent-actionアクティビティをタスク・フロー定義に次のように含める必要があります。

<parent-action id="wcnav_parentAction">
<root-outcome>wcnav_outcome</root-outcome>
</parent-action>

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

- 第10.12.1項「ナビゲーション式言語のAPIの使用」

- 第10.12.2項「ナビゲーションREST APIの使用」

- 第10.12.3項「ポータル・ナビゲーションの視覚化のヒント」

10.12.1 ナビゲーション式言語のAPIの使用

Oracle WebCenter Portalには、式言語(EL)の一連のAPIが用意されており、これらを使用すると、ナビゲーション・モデルを取得して、そのモデルを実行時モデルとして表すことができます。実行時モデルは、ADF Facesナビゲーション・コンポーネントに直接バインドできます。

使用可能なナビゲーションEL式は、第F.7項「ナビゲーションに関連するEL」にすべてリストされています。

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

- 第10.12.1.1項「ナビゲーション・コンテキストの概要」

- 第10.12.1.2項「ナビゲーション実行時モデルの概要」

- 第10.12.1.3項「ナビゲーション・リソースの概要」

- 第10.12.1.4項「ナビゲーション・モデルをリンクのリストとしてレンダリングする方法」

- 第10.12.1.5項「ナビゲーション・モデルをツリーとしてレンダリングする方法」

- 第10.12.1.6項「ナビゲーション・モデルを3レベルのメニューとしてレンダリングする方法」

- 第10.12.1.7項「ナビゲーション・モデルをブレッドクラムとしてレンダリングする方法」

- 第10.12.1.8項「マスター/ディテール・ナビゲーションのレンダリング方法」

注意:

この項では、ナビゲーションEL APIの使用方法について、いくつかの例を紹介します。完全な作業例については、Portal Frameworkアプリケーションの作成時に作成されるデフォルトのページ・テンプレート(pageTemplate_globe.jspxおよびpageTemplate_swooshy.jspx)を参照してください。

10.12.1.1 ナビゲーション・コンテキストの概要

ナビゲーション・コンテキストは、システム内のすべてのナビゲーション要素にアクセスするエントリ・ポイントです。具体的には、これを使用すると、プリファレンス、状態、直接参照を介してナビゲーション・モデルにアクセスでき、実際にノードにナビゲートするカスタムUIを作成するフックが提供されます。

ナビゲーション・モデルへのアクセス

- デフォルトのナビゲーション・モデル(プリファレンス) - これは、adf-config.xmlファイルのADFプリファレンスoracle.webcenter.portalapp.navigation.modelで指定されるモデルです。これを使用すると、アプリケーション全体で使用される一般的なモデルを定義でき、各ページやページ・テンプレートに移動して値を設定するのではなく、値を1箇所で変更できます。デフォルトのナビゲーション・モデルを取得するEL式は次のようになります。

#{navigationContext.defaultNavigationModel}

注意:

oracle.webcenter.portalapp.navigation.modelプリファレンスを設定する方法については、第10.4項「デフォルトのナビゲーション・モデルの選択」を参照してください。

- 現在のナビゲーション・モデル(状態) - このモデルは、現在のビューへのナビゲートに使用されるものです。設定されない場合、デフォルトのナビゲーション・モデルを返します。アプリケーションには複数のナビゲーション・モデルを含めることができます。現在のナビゲーション・モデルを取得するEL式は次のようになります。

#{navigationContext.currentNavigationModel}

この式を使用すると、ページまたはページ・テンプレート内で単一の値を使用でき(ブレッドクラムを表示する場合など)、特定のナビゲーション・モデルを選択せずに正しい値を表示できます。

- ナビゲーション・モデルの直接アクセス(直接参照) - 特定のナビゲーション・モデルのXML定義のパスを渡して、そのモデルを選択することもできます。特定のナビゲーション・モデルを取得するEL式は次のようになります。

#{navigationContext.navigationModel['modelPath=path']

ここで、pathは、ナビゲーション・モデル定義ファイルのパスです。たとえば、次のようになります。

#{navigationContext.navigationModel['modelPath=/oracle/webcenter/portalapp/navigations/myNavigation']}

注意:

ファイル名の拡張子.xmlを含める必要はありません。

リソース・ナビゲーション

ナビゲーション・モデルをUIコンポーネントのactionListener属性にバインドするためのコアBean操作には次のELを使用します。例:

#{navigationContext.processAction}

例

例10-4では、現在のナビゲーション・モデルにアクセスして<af:outputText/>でツリーをレンダリングする、ナビゲーション・コンテキストを使用した簡単なツリーUIが作成されます。

例10-4 簡単なツリー・ナビゲーションUI

<af:tree var="node"
value="#{navigationContext.currentNavigationModel.treeModel['startNode=/,
includeStartNode=true,
depth=1']}"
id="t1">
<f:facet name="nodeStamp">
<af:outputText value="#{node.title}" id="ot1"/>
</f:facet>
</af:tree>

例10-5では、ナビゲーション・コンテキストのprocessActionリスナーを使用して、現在のノードをnodeというパラメータでactionListenerに属性として渡すADF commandImageLinkコンポーネントのナビゲーションを処理します。

例10-5 UIコンポーネントへのナビゲーション・モデルのバインド

<af:tree var="node"
value="#{navigationContext.currentNavigationModel.treeModel['startNode=/,
includeStartNode=true,
depth=1']}"
id="t1">
<f:facet name="nodeStamp">
<af:commandImageLink text="#{node.title}"
id="sm_c1b"
actionListener="#{navigationContext.processAction}"
inlineStyle="#{node.selected ? 'font-weight:bold;' : ''}">
<f:attribute name="node" value="#{node}"/>
</af:commandImageLink>
</f:facet>
</af:tree>

10.12.1.2 ナビゲーション実行時モデルの概要

ナビゲーション実行時モデルは、基礎となるXML定義を実行時モデルとして公開し、個々のノードへの直接アクセスを提供します。実行時モデルは、セキュリティや可視性といった要因を考慮し、UIオブジェクトにバインドできる、セッションに固有の表現を作成します。

注意:

ナビゲーションのコンテンツ、構造およびメタデータの定義のために作成するナビゲーション・モデルと、ナビゲーション・モデルの実行時の動作を決定するナビゲーション実行時モデルとの違いに注意してください。

デフォルトの実行時モデル(defaultTreeModel、defaultListModel、defaultMenuModelおよびdefaultSiteMap)を使用してモデル全体にアクセスしたり、実行時モデルの作成時に各種パラメータを使用して固有のサブツリーにアクセスできます。例:

#{navigationContext.defaultNavigationModel.menuModel['startNode=home,
includeStartNode=false, depth=2']}

基礎となるADF FacesのMenuModel、TreeModelおよびListModelの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』を参照してください。

モデルへのアクセス

次の実行時モデルは、基礎となる次のナビゲーション・モデルに基づいて作成できます。

- UIモデル

- ツリー・モデル

#{navigationContext.defaultNavigationModel.defaultTreeModel}
#{navigationContext.defaultNavigationModel.treeModel['parameters']}

- メニュー・モデル

#{navigationContext.defaultNavigationModel.defaultMenuModel}
#{navigationContext.defaultNavigationModel.menuModel['parameters']}

- リスト・モデル

#{navigationContext.defaultNavigationModel.defaultListModel}
#{navigationContext.defaultNavigationModel.listModel['parameters']}

- 検索エンジン・モデル

- サイトマップ

#{navigationContext.defaultNavigationModel.defaultSiteMap}
#{navigationContext.defaultNavigationModel.siteMap['parameters']}

リソース(またはノード)へのアクセス

次のEL式を使用して、ナビゲーション・モデル内の特定のノードにアクセスできます。

- #{navigationContext.defaultNavigationModel.currentSelection}

- #{navigationContext.defaultNavigationModel.rootNode}

- #{navigationContext.defaultNavigationModel.node['path']}

例

例10-6では、現在のナビゲーション・モデルのメニュー・モデルをブレッドクラムとしてレンダリングします。

例10-6 ナビゲーション・モデルのメニュー・モデルとしてのレンダリング

<af:breadCrumbs id="bc1"
var="node"
value="#{navigationContext.currentNavigationModel.defaultMenuModel}">
<f:facet name="nodeStamp">
<af:commandNavigationItem id="cni1"
text="#{node.title}"
actionListener="#{navigationContext.processAction}"
partialSubmit="true">
<f:attribute name="node" value="#{node}"/>
</af:commandNavigationItem>
</f:facet>
</af:breadCrumbs>

例10-7では、デフォルトのナビゲーション・モデルに基づき、アプリケーションのサイトマップを作成します。

例10-7 サイトマップの作成

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"  version="2.1"
xmlns:f="http://java.sun.com/jsf/core">
<jsp:directive.page contentType="text/xml;charset=UTF-8" />
<f:view>
${navigationContext.defaultNavigationModel.defaultSiteMap}
</f:view>
</jsp:root>

サイトマップの詳細は、第10.13項「ナビゲーション・モデルを使用したサイトマップの作成」を参照してください。

10.12.1.3 ナビゲーション・リソースの概要

ナビゲーション・リソースは、ナビゲーション・モデル内の各ノードに対して個々のプロパティにアクセスできます。これらのプロパティは、次のカテゴリに分類されます。

- 属性 - ユーザーがナビゲーション要素に対して指定する共通のプロパティ。ページのノードのレンダリングに使用され、次の属性があります。

- Title - ナビゲーション・モデルが実行時にレンダリングされるときにノードに表示されるタイトル。

- AccessKey - ユーザーがマウスを使用せずにノードにアクセスする場合に入力できるキーのニーモニック(単一文字)。

- Description - ノードの説明。

- IconURI - ノードを視覚的に表すアイコン。これは、ナビゲーション・モデルが実行時にレンダリングされる際にタイトルの隣に表示されます。

- Subject - ノードの検索を容易にするキーワード。

- Target - ノードの選択時にそのノードが表示されるコンテナ・ページの場所。同じブラウザ・ウィンドウ内(_self)、新しいウィンドウ(_blank)、ポップアップ(_popup)、あるいはナビゲーションUIでサポートされる場所になります。

- ToolTip - ユーザーがマウスをタイトル上に置いたときにノードに関する追加情報を提示するテキスト。

- Modified - ノードの最終変更日。この属性は、サイトマップの作成に使用されます。

- ChangeFrequency - ノードの変更が見込まれる頻度(常時、1時間に一度、毎日、週に一度、月に一度、年に一度、変更なし)。この属性は、サイトマップの作成に使用されます。

- Significance - ナビゲーション・モデル内のその他のノードと比較した、該当ノードの優先度(0.0から1.0)。この属性は、サイトマップの作成に使用されます。

- ExternalId - ページの静的リンクからナビゲーション・モデルの任意のノードへの直接参照を有効にするID。

- Parameters - 各ノードに固有のユーザー定義プロパティ。これらは、名前と値のペアで、任意の値が含まれます。

- State - 問合せが可能で、ノードへのナビゲートに使用できる組込みプロパティ。例:

- ノードのタイプ。フォルダやセパレータなど

- ノードがナビゲートできるかどうか

- ノードのパス

- 親ノード、子ノードまたは兄弟ノードへのアクセス

- ノードが、ナビゲーション・モデル内の現在選択されているノードかどうか、選択されているノードのパス上にあるかどうか

完全なリストについては、第F.7項「ナビゲーションに関連するEL」を参照してください。

例

例10-8では、ADF commandImageLinkコンポーネントを様々な属性でレンダリングします。

例10-8 属性によるcommandImageLinkのレンダリング

<af:commandImageLink text="#{node.title}"
id="cil1"
actionListener="#{navigationContext.processAction}"
shortDesc="#{node.attributes['ToolTip']}"
accessKey="#{node.attributes['AccessKey']}"
inlineStyle="#{node.selected ? 'font-weight:bold;' : ''}">
<f:attribute name="node" value="#{node}"/>
</af:commandImageLink>

例10-9では、パラメータを介して、ノードから対応するページに渡される値にアクセスします。

例10-9 ページ・パラメータへのノード値の引渡し

homePageDef.xml

<pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel"
version="11.1.1.55.96" id="homePageDef"
Package="oracle.webcenter.portalapp.pages">
<parameters>
<parameter id="NavigationParameter"
value="#{navigationContext.currentNavigationModel.currentSelection.parameters
['MyNavParam']}"/>
</parameters>

例10-10では、ノードにナビゲートできるかどうかに基づき、ブレッドクラム・リンクを条件付きで表示します。これは、UIコンポーネントの基準をノードのタイプにも置いています。

例10-10 ナビゲーション・ノードの条件付き表示

<af:breadCrumbs id="bc1"
var="node"
value="#{navigationContext.currentNavigationModel.defaultMenuModel}">
<f:facet name="nodeStamp">
<af:switcher facetName="#{node.navigable}" id="swn1">
<f:facet name="true">
<af:commandNavigationItem id="cni1" text="#{node.title}"
actionListener="#{navigationContext.processAction}"
partialSubmit="true">
<f:attribute name="node" value="#{node}"/>
</af:commandNavigationItem>
</f:facet>
<f:facet name="false">
<af:outputText value="#{node.title}" rendered="#{!node.separator}" id="ot3"/>
</f:facet>
</af:switcher>
</f:facet>
</af:breadCrumbs>

10.12.1.4 ナビゲーション・モデルをリンクのリストとしてレンダリングする方法

ポータルのナビゲーションを視覚化するには、一般的な方法としてリンクのリストがあります。リンクをクリックすると、そのリンクに関連付けられたリソースにナビゲートします。

例10-11では、現在のナビゲーション・モデルのリスト・モデルを取得し、そのモデルをページに垂直にレンダリングします。コードは、各ノードをADF commandImageLinkコンポーネントに順にバインドしながら、ナビゲーション・モデルを反復します。ノードに子が含まれる場合、別のイテレータがページにその子をレンダリングします。ノードがナビゲートできない場合、そのノードはリンクとしてレンダリングされません。現在選択されているノードは太字で表示されます。

例10-11 リンクのリストとしてのナビゲーション

<af:panelGroupLayout id="pgl1" layout="vertical">
<af:spacer id="sp1" height="20px"/>
<af:iterator id="i1"
value="#{navigationContext.currentNavigationModel.listModel['startNode=/,
includeStartNode=false']}"
var="node">
<af:panelGroupLayout layout="vertical">
<af:commandImageLink id="cil2" text="#{node.title}"
actionListener="#{navigationContext.processAction}"
action="pprnav"
icon="#{node.attributes[pageFlowScope.tnBean.iconKey]}"
disabled="#{not node.navigable}"
inlineStyle="#{node.onSelectedPath ? 'font-weight:bold;' : ''}">
<f:attribute name="node" value="#{node}"/>
</af:commandImageLink>
<af:iterator id="i2" value="#{node.children}" var="node2">
<af:panelList id="pl1">
<af:commandImageLink id="cil3" text="#{node2.title}"
actionListener="#{navigationContext.processAction}"
action="pprnav"
icon="#{node2.attributes[pageFlowScope.tnBean.iconKey]}"
disabled="#{not node2.navigable}"
inlineStyle="#{node2.onSelectedPath ? 'font-weight:bold;' : ''}">
<f:attribute name="node" value="#{node2}"/>
</af:commandImageLink>
</af:panelList>
</af:iterator>
</af:panelGroupLayout>
</af:iterator>
<af:spacer id="sp3" height="20px"/>
</af:panelGroupLayout>

10.12.1.5 ナビゲーション・モデルをツリーとしてレンダリングする方法

ポータルのナビゲーションを視覚化するには、ツリー構造による方法もあります。ナビゲーション・ツリーは、通常、ページの横にリストされるため、ナビゲーション階層全体を表示するには便利な方法です。ユーザーは、ナビゲーションの任意のノードにすぐにナビゲートできます。ツリー構造を使用する場合、リンクの簡単なリストに比べて、ユーザーがナビゲーション・モデルの様々なノードの展開と折りたたみを行えるという利点があります。

ページまたはページ・テンプレートにツリー構造を含めるには、ADF Faces treeナビゲーション・コンポーネントをナビゲーション・モデルにバインドできます。この方法を例10-12に示します。この例では、ナビゲーション階層の第2レベルがデフォルトで縮小されていますが、ユーザーはアイコンを使用してノードを開き、子を表示できます。

例10-12 ツリーとしてのナビゲーション

<af:panelGroupLayout id="pgl1" layout="vertical">
<af:spacer id="sp2" height="20px"/>
<af:tree id="tree1" var="node" initiallyExpanded="true"
value="#{navigationContext.currentNavigationModel.treeModel['includeStartNode=false']}">
<f:facet name="nodeStamp">
<af:commandImageLink id="cil2" text="#{node.title}"
actionListener="#{navigationContext.processAction}"
action="pprnav"
icon="#{node.attributes[pageFlowScope.tnBean.iconKey]}"
disabled="#{not node.navigable}"
inlineStyle="#{node.onSelectedPath ? 'font-weight:bold;' : ''}">
<f:attribute name="node" value="#{node}"/>
</af:commandImageLink>
</f:facet>
</af:tree>
<af:spacer id="sp3" height="20px"/>
</af:panelGroupLayout>

10.12.1.6 ナビゲーション・モデルを3レベルのメニューとしてレンダリングする方法

ナビゲーションをメニューとしてレンダリングすることもできます。メニューには、最上位レベルのナビゲーションが表示されます。ユーザーが特定のノード上にマウスを置くと、そのノードが子を持つ場合、子はポップアップ・メニューで表示されます。

図10-5は、現在のナビゲーション・モデルのリスト・モデルを取得し、そのモデルをページに垂直にレンダリングしています。コードはナビゲーション・モデルを反復します。ノードに子が含まれる場合、別のイテレータがその子を反復します。子を持たないノードは、メニュー・アイテムとしてレンダリングされます。第2レベルのナビゲーション・モデルでは、いずれかのノードが子を持つ場合、また別のイテレータが実行されます。繰り返しになりますが、子を持たないノードは、メニュー・アイテムとしてレンダリングされます。第3レベルのナビゲーション・ノードでは、ノードはメニュー・アイテムとしてレンダリングされます。ナビゲートできないノードはリンクとしてレンダリングされません。現在選択されているノードは太字で表示されます。

例10-13 メニューとしてのナビゲーション

<af:panelGroupLayout id="pgl1" layout="vertical">
<af:spacer id="sp1" height="20px"/>
<af:menuBar id="mb1">
<af:iterator id="i1"
value="#{navigationContext.currentNavigationModel.listModel['startNode=/,
includeStartNode=false']}"
var="node">
<af:switcher id="s1"
facetName="#{empty node.children ? 'leafNode' : 'parentNode'}">
<f:facet name="parentNode">
<af:menu id="m1" text="#{node.title}"
inlineStyle="#{node.onSelectedPath ? 'font-weight:bold;' : ''}">
<af:iterator id="i2" value="#{node.children}"
var="node2">
<af:switcher id="s2"
facetName="#{empty node2.children ? 'leafNode' : 'parentNode'}">
<f:facet name="parentNode">
<af:menu id="m2" text="#{node2.title}"
inlineStyle="#{node2.onSelectedPath ? 'font-weight:bold;' : ''}">
<af:iterator id="i3" value="#{node2.children}"
var="node3">
<af:commandMenuItem id="cml3"
text="#{node3.title}"
actionListener="#{navigationContext.processAction}"
action="pprnav"
icon="#{node3.attributes[pageFlowScope.tnBean.iconKey]}"
disabled="#{not node3.navigable}"
inlineStyle="#{node3.onSelectedPath ?
'font-weight:bold;' : ''}">
<f:attribute name="node" value="#{node3}"/>
</af:commandMenuItem>
</af:iterator>
</af:menu>
</f:facet>
<f:facet name="leafNode">
<af:commandMenuItem id="cml1"
text="#{node2.title}"
actionListener="#{navigationContext.processAction}"
action="pprnav"
icon="#{node2.attributes[pageFlowScope.tnBean.iconKey]}"
disabled="#{not node2.navigable}"
inlineStyle="#{node2.onSelectedPath ?
'font-weight:bold;' : ''}">
<f:attribute name="node" value="#{node2}"/>
</af:commandMenuItem>
</f:facet>
</af:switcher>
</af:iterator>
</af:menu>
</f:facet>
<f:facet name="leafNode">
<af:commandMenuItem id="cml2" text="#{node.title}"
actionListener="#{navigationContext.processAction}"
action="pprnav"
icon="#{node.attributes[pageFlowScope.tnBean.iconKey]}"
disabled="#{not node.navigable}"
inlineStyle="#{node.onSelectedPath ? 'font-weight:bold;' : ''}">
<f:attribute name="node" value="#{node}"/>
</af:commandMenuItem>
</f:facet>
</af:switcher>
</af:iterator>
</af:menuBar>
<af:spacer id="sp3" height="20px"/>
</af:panelGroupLayout>

10.12.1.7 ナビゲーション・モデルをブレッドクラムとしてレンダリングする方法

ユーザーがポータル・ナビゲーション内で自身の位置をすばやく判断できるように、ページにブレッドクラムの証跡を提供できます。ブレッドクラムは、ポータル内の現在位置と、その位置に到達するまでのナビゲーション経由のパスを示します。ユーザーは、そのパスに従って任意のポイントにすぐに戻ることができます。ブレッドクラムは、通常、他のフォームのナビゲーションに加えてページ上で使用されます。

ページまたはページ・テンプレートにブレッドクラムを含めるには、ADF Faces breadCrumbsナビゲーション・コンポーネントをナビゲーション・モデルにバインドできます。この方法を例10-14に示します。

例10-14 ブレッドクラムとしてのナビゲーション

<af:panelGroupLayout id="pgl1" layout="vertical">
<af:spacer id="sp1" height="20px"/>
<af:breadCrumbs id="bc1" var="node"
value="#{navigationContext.currentNavigationModel.menuModel[
'includeStartNode=false']}">
<f:facet name="nodeStamp">
<af:commandNavigationItem id="cil1" text="#{node.title}"
actionListener="#{navigationContext.processAction}"
action="pprnav"
icon="#{node.attributes[pageFlowScope.tnBean.iconKey]}"
disabled="#{not node.navigable}">
<f:attribute name="node" value="#{node}"/>
</af:commandNavigationItem>
</f:facet>
</af:breadCrumbs>
<af:spacer id="sp2" height="20px"/>
</af:panelGroupLayout>

10.12.1.8 マスター/ディテール・ナビゲーションのレンダリング方法

ポータルでは、多くの場合、マスター/ディテール・ナビゲーションの視覚化が提供されます。たとえば、ページの上部にタブとして表示され、各タブにはページの横にツリー構造として表示される追加のナビゲーションがあります。

例10-15のマスター/ディテール・ナビゲーションでは、マスターおよびディテール・ナビゲーションに同じナビゲーション・モデルが使用されます。マスター・ナビゲーションは、最上位レベルのナビゲーション・モデルを、ページ上部のリンクのリストとしてレンダリングします。ディテール・ナビゲーションは、現在選択されている最上位レベルのノードの子をツリーとしてレンダリングします。

ヒント:

次の例でc:setタグが正しく機能するためには、jsp:rootタグに次の内容を追加して、JSTLライブラリを組み込む必要があります。

xmlns:c="http://java.sun.com/jsp/jstl/core"

例10-15 単一のナビゲーション・モデルを使用したマスター/ディテール・ナビゲーション

<af:panelGroupLayout id="pgl1" layout="vertical">
<af:spacer id="sp1" height="20px"/>
<!-- Master -->
<af:navigationPane id="np1" var="node" hint="bar" level="1"
value="#{navigationContext.navigationModel[
'modelPath=/oracle/webcenter/portalapp/navigations/master-detail']
.defaultMenuModel}">
<f:facet name="nodeStamp">
<af:commandNavigationItem id="cil1" text="#{node.title}"
actionListener="#{navigationContext.processAction}"
action="pprnav"
icon="#{node.attributes[pageFlowScope.tnBean.iconKey]}"
disabled="#{not node.navigable}"
inlineStyle="#{node.onSelectedPath ? 'font-weight:bold;' : ''}">

<f:attribute name="node" value="#{node}"/>
</af:commandNavigationItem>
</f:facet>
</af:navigationPane>
<af:spacer id="sp2" height="20px"/>
<!-- Setup the parameters for detail query -->
<c:set value="startNode=/${navigationContext.navigationModel[
'modelPath=/oracle/webcenter/portalapp/navigations/master-detail']
.currentSelection.prettyUrlPath[1]}, includeStartNode=false"
var="currSel" scope="session"/>
<!-- Detail -->
<af:tree id="tree1" var="node2" initiallyExpanded="true"
value="#{navigationContext.navigationModel[
'modelPath=/oracle/webcenter/portalapp/navigations/master-detail']
.treeModel[currSel]}">
<f:facet name="nodeStamp">
<af:commandImageLink id="cil2" text="#{node2.title}"
actionListener="#{navigationContext.processAction}"
action="pprnav"
icon="#{node2.attributes[pageFlowScope.tnBean.iconKey]}"
disabled="#{not node2.navigable}"
inlineStyle="#{node2.onSelectedPath ? 'font-weight:bold;' : ''}">
<f:attribute name="node" value="#{node2}"/>
</af:commandImageLink>
</f:facet>
</af:tree>
<af:spacer id="sp3" height="20px"/>
</af:panelGroupLayout>

前述の例は、2つの異なるナビゲーション・モデル(マスター・ナビゲーション用とディテール・ナビゲーション用)を使用するように記述することもできます。例10-16にその方法を示します。

例10-16 複数のナビゲーション・モデルを使用したマスター/ディテール・ナビゲーション

<af:panelGroupLayout id="pgl1" layout="vertical">
<af:spacer id="sp1" height="20px"/>
<!-- Master -->
<af:navigationPane id="np1" var="node" hint="bar" level="1"
value="#{navigationContext.navigationModel[
'modelPath=/oracle/webcenter/portalapp/navigations/master']
.defaultMenuModel}">
<f:facet name="nodeStamp">
<af:commandNavigationItem id="cil1" text="#{node.title}"
actionListener="#{navigationContext.processAction}"
action="pprnav"
icon="#{node.attributes[pageFlowScope.tnBean.iconKey]}"
disabled="#{not node.navigable}"
inlineStyle="#{node.onSelectedPath ? 'font-weight:bold;' : ''}">
<f:attribute name="node" value="#{node}"/>
</af:commandNavigationItem>
</f:facet>
</af:navigationPane>
<af:spacer id="sp2" height="20px"/>
<!-- Setup the parameters for detail query -->
<c:set value="startNode=/${navigationContext.navigationModel[
'modelPath=/oracle/webcenter/portalapp/navigations/master']
.currentSelection.prettyUrlPath[1]}, includeStartNode=false"
var="currSel" scope="session"/>
<!-- Detail -->
<af:tree id="tree1" var="node2" initiallyExpanded="true"
value="#{navigationContext.navigationModel[
'modelPath=/oracle/webcenter/portalapp/navigations/master']
.treeModel[currSel]}">
<f:facet name="nodeStamp">
<af:commandImageLink id="cil2" text="#{node2.title}"
actionListener="#{navigationContext.processAction}"
action="pprnav"
icon="#{node2.attributes[pageFlowScope.tnBean.iconKey]}"
disabled="#{not node2.navigable}"
inlineStyle="#{node2.onSelectedPath ? 'font-weight:bold;' : ''}">
<f:attribute name="node" value="#{node2}"/>
</af:commandImageLink>
</f:facet>
</af:tree>
<af:spacer id="sp3" height="20px"/>
</af:panelGroupLayout>

10.12.2 ナビゲーションREST APIの使用

Oracle WebCenter Portalには、アプリケーションのナビゲーション・モデルにアクセスするためのREST APIが用意されています。ナビゲーションREST APIを使用して、ナビゲーション・モデルを視覚化するために使用されるインタフェースにアクセスします。RESTは、一般的にクライアント側でスクリプト化されるリッチ・インターネット・アプリケーションの作成時に使用され、サーバー側アプリケーションからのデータと対話する機能を必要とします。たとえば、Oracle WebCenter Portal iPhoneアプリケーションは、REST APIを使用してPortal Frameworkアプリケーションと対話します。

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

ナビゲーションREST APIにアクセスするには、次のようにURLを作成します。

http://host:port/<ApplicationContextRoot>/api/navigations/default-navigation-model

ここで、hostとportはポータルが実行されているサーバーのホスト名とポート番号、<ApplicationContextRoot>はポータル・アプリケーションのコンテキスト・ルートです。例:

http://localhost:7101/MyPortalApplication-Portal-context-root/api/navigations/default-navigation-model

このリクエストに対するレスポンスにより、次のresourceTypeのリンク要素で識別される、ナビゲーションREST APIのエントリ・ポイントURI (href)が提供されます。

urn:oracle:webcenter:navigations

GETリクエストをこのエントリ・ポイントURIに送信すると、アプリケーション内にナビゲーション・モデルのリストが返されます。たとえば、次のようになります。

<sitestructure>
...
<navigation-list>
oracle/webcenter/siteresources/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed/
navigations/default-navigation
</navigation-list>
<navigation-list>
oracle/webcenter/siteresources/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed/
navigations/admin-navigation
</navigation-list>
<navigation-list>
oracle/webcenter/siteresources/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed/
navigations/myNavigation
</navigation-list>
...
</sitestructure>

この情報を使用すると、表10-5にリストされるURIで、特定のナビゲーション・モデルとその中にあるノードに関する情報の取得を開始できます。表10-5に示したURIを、URLのhttp://host:port/<ApplicationContextRoot>の部分に追加して、目的のRESTエンドポイントにアクセスできます。

表10-5 ナビゲーションのREST URIモデル

REST URI

戻り値

.../api/navigations

アプリケーションのすべてのナビゲーション・モデル。

.../api/navigations/default-navigation-model

デフォルトのナビゲーション・モデルのプロパティ。

.../api/navigations/pathToModel/modelId

指定したナビゲーション・モデル(modelId)のプロパティ。

.../api/navigations/pathToModel/modelId/resources

指定したナビゲーション・モデル(modelId)のすべてのルート・リソース。

.../api/navigations/pathToModel/modelId/resources/pathToResource/resourceId

指定したナビゲーション・モデル(modelId)の指定したリソース(resourceID)。

...api/navigations/pathToModel/modelId/resources/pathToResource/resourceId/children

指定したナビゲーション・モデル(modelId)の指定したリソース(resourceId)の子をすべてリストするナビゲーション・ツリー。

.../api/navigations/pathToModel/modelId/resources/pathToResource/resourceId/children?depth=dep

指定したナビゲーション・モデル(modelId)の指定したレベル(dep)までの指定のリソース(resourceId)の子をリストするナビゲーション・ツリー。

それぞれのナビゲーション可能ノードにprettyURL要素が存在し、この要素を使用してナビゲーション・モデル階層をさらに深く掘り下げることができます。

10.12.3 ポータル・ナビゲーションの視覚化のヒント

ポータル・ナビゲーション・モデルを視覚化する際には、次のことを考慮してください。

- ページまたはページ・テンプレートを編成するには、HTML divタグとspanタグではなく、ADF Facesレイアウト・コンポーネントを使用します。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』の「Webページ上のコンテンツの編成」の章を参照してください。

- Portal Frameworkアプリケーションが一般向けの場合、または検索エンジンの最適化を有効にする場合は、goLinkPrettyUrlメソッドと組み合せてaf:goLinkコンポーネントを使用して、ナビゲーションの視覚化を追加します。

- スキンを使用してスタイル、装飾イメージおよび形状を管理します。

- ページ・テンプレートを選択するには、adf-config.xml内でデフォルト・ページ・テンプレート設定を使用するか、個々のナビゲーション・リンクに対して「ページ・テンプレートでのURLのレンダリング」オプションを使用します。

詳細は、Oracle WebCenter & ADF Architecture Teamのブログを参照してください。

10.13 ナビゲーション・モデルを使用したサイトマップの作成

検索エンジンがWebサイトをクロールすると、標準リンクのHTML(<a href="url">text</a>など)を解析します。ただし、ADFベースのWebサイトでは、リンクがJavaScriptとして生成されます。このため、これらをブラウザで実行すると、ページの変更やナビゲーションが生じます。これらのJavaScriptリンクは、検索エンジンで解釈できません。

GoogleやBingなど、一般的な一部の検索エンジンではサイトマップがサポートされます。サイトマップは、サイトのURLと、各URLに関する追加メタデータ(たとえば、URLが最終更新された場合、通常のその変更頻度、サイトの他のURLと比較した重要度など)をリストするXMLファイルであるため、検索エンジンはさらに知的にサイトをクロールできます。サイトマップを検索エンジンに送信したり、robots.txtファイルで参照することで、索引用にページのリストを検索エンジンに送ることができます。

サイトマップの詳細を参照するには、次の場所に移動してください:

http://sitemaps.org/

Portal Frameworkアプリケーションでは、サイトマップURLを指定できます。このURLを検索エンジンに登録すると、そのアプリケーションでページ・セットへの索引付けが行われます。検索エンジンのユーザー・エージェントが、ADFでサポートされるエージェントと一致するする場合、リクエストに対してJavaScriptではなくHTMLが返されます。

注意:

現在、ADFに登録されているユーザー・エージェントは、Googleのgooglebotのみです。

例10-17に示すように、アプリケーションのサイトマップは、ナビゲーション・モデルに基づき作成できます。

例10-17 サイトマップの作成

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
Xmlns:f=http://java.sun.com/jsf/core">
<jsp:directive.page contentType="text/xml;charset=UTF-8" />
<f:view>
${navigationContext.defaultNavigationModel.defaultSiteMap}
</f:view>
</jsp:root>

11 ページ・テンプレートの開発

ページ・テンプレートでは、ポータル・ページでの共通領域の構造が提供されます。この章では、Oracle JDeveloperを使用して、WebCenter Portal (ポータル・ビルダー)で構築されるWebCenter Portal Frameworkアプリケーションおよびポータルに表示されるポータル・ページ用のページ・テンプレートを設計および開発する方法について説明します。

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

- 第11.1項「ページ・テンプレートの開発の概要」

- 第11.2項「ページ・テンプレートの開発のベスト・プラクティス」

- 第11.3項「ページ・テンプレートの作成」

- 第11.4項「ページ・テンプレートの編集」

- 第11.5項「ページへのページ・テンプレートの適用」

- 第11.6項「デフォルト・ページ・テンプレートの選択」

- 第11.7項「ページ・テンプレートの削除」

- 第11.8項「ページ・テンプレートのチュートリアルと例」

11.1 ページ・テンプレートの開発の概要

ページ・テンプレートでは、ユーザーの画面における個々のページおよびページ・グループの表示方法を定義し、ポータル・ページの構造とレイアウトの点における一貫性を確保します。つまり、ページ・テンプレートを変更すると、そのテンプレートを参照するすべてのページで自動的にその変更が継承されます。

関連項目:

ページ・テンプレートの一般情報は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のページ・テンプレートでの作業に関する項を参照してください。

JDeveloperを使用して、WebCenter Portal (ポータル・ビルダー)で構築されるPortal Frameworkアプリケーションおよびポータル用のページ・テンプレートを開発することをお薦めします。JDeveloperでは、完全に機能するページ・テンプレートを最初から構築するか、または特定の要件に適合するように既存のページ・テンプレートを調整して詳細に開発することができます。また、ページ・テンプレートはポータル・ビルダーで開発することもできますが、機能の編集は制限されます。

開発が完了したページ・テンプレートは、WebCenter Portal (ポータル・サーバー)に直接アップロードして、すぐに使用したり、テストしたりできます。または、ページ・テンプレートをファイルにエクスポートして、後でポータル・ビルダーによりWebCenter Portalにアップロードできます。

ページ・テンプレートは次に示す方法で開発できます。

- 第11.3項「ページ・テンプレートの作成」の説明に従って、ページ・テンプレートを最初から構築します。

- 第11.4項「ページ・テンプレートの編集」の説明に従って、WebCenter Portal (ポータル・ビルダー)に用意されているすぐに使用できるページ・テンプレートをダウンロードして変更します。

- 第11.1.4項「WebCenter Portal Frameworkアプリケーションの組込みページ・テンプレートの理解」および第11.4項「ページ・テンプレートの編集」の説明に従って、JDeveloperに用意されているすぐに使用できるページ・テンプレートを活用します。

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

- 第11.1.1項「ページ・テンプレートの構造の理解」

- 第11.1.2項「ページ・テンプレートのレイアウトの理解」

- 第11.1.3項「ページ・テンプレートのレイアウト・コンポーネントの理解」

- 第11.1.4項「WebCenter Portal Frameworkアプリケーションの組込みページ・テンプレートの理解」

11.1.1 ページ・テンプレートの構造の理解

ページ・テンプレートの標準的な要素は次のとおりです。

- ヘッダー、コンテンツ領域(各ページで異なる)およびフッター。ヘッダーとフッターには、一般にブランド固有の要素が含まれます。たとえば、ヘッダーには通常、ロゴや、場合によってはスローガンが含まれます。フッターには通常、連絡先および著作権情報が含まれます。

- ナビゲーション。ページ・テンプレートは、ポータルのナビゲーションをいくつかの方法で公開できます。たとえば、モバイル・デバイスの場合、ポータル・ナビゲーションは、ポップアップまたはスライド・イン/アウトとして表示されることがあります。デスクトップ・ブラウザの場合、通常、ポータル・ナビゲーションは、ページの上部(横並び)またはページの横側(縦並び)に表示されます。

- ブランド要素。たとえば、ページ・テンプレートには、会社のロゴ、スローガン、または著作権に関するメッセージが含まれる場合があります。

- リンクとアクション。たとえば、ログイン/ログアウトのリンク、ドロップダウン・メニュー、またはグローバル・リンク(Web管理者へのメール・メッセージの送信やプライバシ情報の表示などへのリンク)。

- 条件要素。たとえば、ページの一部の要素は、ユーザーがパブリック・ユーザーか認証されたユーザーかによって、あるいは、ユーザーのロールおよび権限によってそれぞれ異なります。

図11-1に、これらの要素を示すページ・テンプレートに基づいたサンプル・アプリケーションを示します。

図11-1 ページ・テンプレートを使用するサンプル・ポータル

11.1.2 ページ・テンプレートのレイアウトの理解

ページ・テンプレートの設計で最も重要な側面の1つは、テンプレートとページ・コンテンツの両方の要素でコンポーネントをどのようにレイアウトするかという点です。基本的に次の2つの方針があります。

- 最も一般的なレイアウトは、フロー・レイアウトです。コンポーネントは、隣合せまたは縦並びで配置され、元々のサイズで表示されます。ページのコンテンツがブラウザ・ウィンドウのサイズを超えた場合、ブラウザのページにはスクロール・バーが表示されます。

- ストレッチ・レイアウトは、ページ・コンテンツが大きな領域を占める場合や、ブラウザ・ウィンドウのサイズに応じてページ・コンテンツを拡大および縮小する場合に適している可能性があります。コンポーネントは、ページ上の使用可能なスペースいっぱいに表示されるようストレッチされます。たとえば、ストレッチ・レイアウトは、ページに表またはグラフが含まれていて、そのサイズにかかわらずコンテンツ領域全体にこれを表示する場合に適しています。また、編集領域が含まれるページで、コンテンツ領域と同じ高さと幅でエディタを使用する必要がある場合にも適しています。このレイアウトにはページ・コンテンツ用の領域があり、ブラウザ・ウィンドウのサイズ内にコンテンツが収まらない場合は、ページ上の領域にスクロール・バーが追加されます。つまり、個々のコンポーネントにスクロール・バーが表示されます(1ページ上に複数のスクロール・バーが表示されることがあります)。
ストレッチにより、表示可能な領域を最大限使用できるようになります。タブ、アコーディオン、メニュー、ポップアップを使用して、表示可能な領域を拡張できます。ページにスクロール・バーが追加されると、コンテンツ領域がスクロールされる間、ナビゲーション領域、ページ・ヘッダーおよびページ・フッターはそのままビューに残ります。

ほとんどのWebサイトではフロー・レイアウトが使用されており、ユーザーが親しみやすく感じる見込みが高いため、フロー・レイアウトを使用することもできます。ただし、種類が豊富なダッシュボードとアプリケーション向けの場合やデスクトップ操作を模倣する必要がある場合には、ストレッチ・レイアウトが優れています。同一ページでフロー・レイアウトとストレッチ・レイアウトを結合することも可能です。

垂直方向の動作

レイアウトがフローであるかまたはストレッチであるかに応じて、次に示すようにページの垂直方向の動作が異なります。

- フロー・レイアウト:

- ヘッダーまたはフッターは常に表示されているわけではありません

- ページの高さはページのコンテンツに基づいて計算されます

- コンテンツが垂直方向にストレッチされることはありません

- ブラウザにスクロール・バーが表示されることもあります

- ストレッチ・レイアウト:

- ヘッダーおよびフッターは常に表示されます

- ページの高さはブラウザ・ウィンドウにより決まります

- コンテンツは垂直方向にストレッチされます

- コンテンツ領域にスクロール・バーが表示されることがあります。

水平方向の動作

レイアウトがフローであるかまたはストレッチであるかに応じて、次に示すようにページの水平方向の動作が異なります。

- フロー・レイアウト:

- ページにサイド・バー(左側のナビゲーションなど)がある場合でも、サイド・バーは常に表示されているわけではありません

- ページの幅は固定値に設定されます

- 一部のコンポーネントは、既存スペースを満たすようにストレッチされることがあります

- ブラウザにスクロール・バーが表示されることもあります

- ストレッチ・レイアウト:

- ページにサイド・バー(左側のナビゲーションなど)がある場合、サイド・バーは常に表示されています

- ページの幅はブラウザ・ウィンドウにより決まります

- コンテンツは水平方向にストレッチされます

- コンテンツにスクロール・バーが表示されることもあります。

11.1.3 ページ・テンプレートのレイアウト・コンポーネントの理解

ページ・テンプレートの基礎となる構造は、Oracle Application Development Framework (ADF)のレイアウト・コンポーネントによって指定されます。ページ・テンプレートで使用するのに適したレイアウトを決定したら(第11.1.2項「ページ・テンプレートのレイアウトの理解」を参照)、ADFレイアウト・コンポーネントを使用してページ・テンプレートを作成します。このタスクを実行するには、必要な構造とレイアウトを実現するためのADFコンポーネント、および使用するベスト・プラクティス(第11.2項「ページ・テンプレートの開発のベスト・プラクティス」を参照)について理解する必要があります。

関連項目:

- レイアウト・コンポーネントごとの外観の詳細は、ADF Facesリッチ・クライアントの次のデモ・オンライン・ツールを参照してください。
http://jdevadf.oracle.com/adf-richclient-demo/faces/visualDesigns/index.jspx

デモ・ツールで、「ソースの表示」メニューから「ページ」または「ページ・テンプレート」を選択し、ページ構造を実現するために使用されているレイアウト・コンポーネントと属性を確認します。

- 第11.8項「ページ・テンプレートのチュートリアルと例」

図11-2と図11-3に、ページ・テンプレートのレイアウトで使用されている一般的なADFコンポーネント、およびページ・テンプレートのコードと生成されたレイアウトを示します。

- af:panelGridLayout—行(gridRow)およびセル(gridCell)を使用して構造化レイアウトを定義する、汎用性のあるレイアウト・コンポーネント。このコンポーネントは、小規模なクライアント側フットプリントを提供すると同時にレイアウト機能において非常に柔軟性があるため、優先される一般的なレイアウト・コンポーネントです。また、このコンポーネントを使用すると、行および列の形式で必要なレイアウトに一致するように、ページ領域を無理なく定義できます。panelGridLayoutを指定すると、固定または可変の列幅(%またはピクセル)を簡単に指定できますが、他のレイアウト・コンポーネントを使用した場合ほど簡単には実行できません。図11-2を参照してください。

- af:panelGroupLayout—水平、垂直、またはスクロール可能な構造に配置されたコンポーネントのフロー・シリーズ。通常、panelGroupLayoutは、フロー・レイアウト、およびストレッチ・レイアウト内部のフロー・コンテンツとともに使用されます。また、コンテンツが使用可能なスペースに適合していない場合は、垂直および水平方向のスクロール・バーを表示します。図11-2および図11-3を参照してください。

- af:panelSplitter—ユーザーによる変更が可能な2つのセクションに分割されたストレッチ・ボックス。図11-3を参照してください。

図11-2 ページ・テンプレートのコードと生成されたストレッチ・レイアウト: 例1

図11-3 ページ・テンプレートのコードと生成されたストレッチ・レイアウト: 例2

11.1.4 WebCenter Portal Frameworkアプリケーションの組込みページ・テンプレートの理解

注意:

タスク・フロー数が削減され、パフォーマンスが高速化された最新の11.1.1.8.3ページ・テンプレートの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のWebCenter Portalの組込みページ・テンプレートについての項を参照してください。第11.4項「ページ・テンプレートの編集」の説明に従って、JDeveloperでこれらのページ・テンプレートをダウンロードして変更できます。

Portal Frameworkアプリケーションを作成して、図11-4に示されているように、「標準ポータル機能のアプリケーションの構成」チェック・ボックスを選択すると(第6.1項「新しいWebCenter Portal Frameworkアプリケーションの作成」を参照)、アプリケーションにpageTemplate_globe.jspxおよびpageTemplate_swooshy.jspxという2つの組込みテンプレートが追加されます。

図11-4 WebCenter Portal Frameworkアプリケーションの作成ウィザード - ステップ4/5

これらの組込みページ・テンプレートは、両方とも基本的には同じ機能を提供しますが、使用するグラフィックスが異なります。図11-5に、pageTemplate_globe.jspxページ・テンプレートを示します。

図11-5 組込みページ・テンプレート - pageTemplate_globe.jspx

1. ポータルのホーム・ページへのリンク

2. タグ・ライン

3. ようこそメッセージ

4. 実行時管理コンソールへのリンク

5. ユーザーのログイン時にログアウト・リンクに変換されるログイン領域

6. ナビゲーション・バー

7. テンプレートに基づいてページにコンテンツを追加するための領域

8. 著作権情報

これらのページ・テンプレートは、次の属性を使用します。

表11-1 組込みページ・テンプレートの属性

名前

タイプ

デフォルト値

contentWidth

String

960px

showNavigation

Boolean

true

showGreetings

Boolean

#{securityContext.authenticated}

showLogin

Boolean

true

showAdmin

Boolean

#{securityContext.authenticated}

isAdminPage

Boolean

false

isEditingTemplate

Boolean

false

特定の要件を満たすようにこれらの組込みページ・テンプレートを編集することも、独自のページ・テンプレートを最初から作成することもできます。独自のページ・テンプレートを作成する場合は、タスク・フロー数が削減され、パフォーマンスが高速化された、推奨されるレイアウト・コンポーネントの例を含む最新の11.1.1.8.3ページ・テンプレートを参照することをお薦めします。『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のWebCenter Portalの組込みページ・テンプレートについての項を参照してください。

11.2 ページ・テンプレートの開発のベスト・プラクティス

ページ・テンプレートはポータルのすべてのページに存在するため、ページ・テンプレートを設計する際は、そのパフォーマンスを最適化してベスト・プラクティスに適合するように注意深く計画を立てる必要があります。この項では、ポータルのページ・テンプレートを開発する際のヒントについて説明します。

WebCenter Portal (ポータル・ビルダー)のページ・テンプレートに関する注意:

ページ・テンプレートの開発は複雑なタスクです。JDeveloperを使用して、WebCenter Portal (ポータル・ビルダー)で構築されるPortal Frameworkアプリケーションおよびポータル用のページ・テンプレートを開発することをお薦めします。また、ページ・テンプレートはポータル・ビルダーで開発することもできますが、機能の編集は制限されます。

開発が完了したページ・テンプレートは、WebCenter Portal (ポータル・サーバー)に直接アップロードして、すぐに使用したり、テストしたりできます。または、ページ・テンプレートをファイルにエクスポートして、後でポータル・ビルダーによりWebCenter Portalにアップロードできます。

詳細は、第11.3項「ページ・テンプレートの作成」、第11.4「ページ・テンプレートの編集」および第55.1項「WebCenter Portalのアセットの開発」を参照してください。

表11-2に、ページ・テンプレートから最良の結果を実現するための考慮事項およびガイダンスのクイック・リファレンス・サマリーを示します。

表11-2 ページ・テンプレートのベスト・プラクティスのサマリー

考慮事項

ベスト・プラクティス

パフォーマンス

ページ・テンプレートの開発のベスト・プラクティスに関する項の内容はすべてページ・テンプレートのパフォーマンスを向上させることを目的としており、ベスト・プラクティス全体にわたって留意する必要があるいくつかの一般的なヒントがあります。

- 埋込みタスク・フローの使用は最小限に留めます。たとえば、『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のWebCenter Portalの組込みページ・テンプレートについての項で説明しているように、WebCenter Portalに組み込まれている最新のすぐに使用できるページ・テンプレートを参照してください。

- ADFレイアウト・コンポーネントの使用は最小限に留めます。ADFレイアウト・コンポーネントの数が少なければ、スキンの適用が簡単になります。panelGridLayoutを行(gridRow)およびセル(gridCell)とともに使用して、ページ・テンプレート構造全体を実装します。

- 装飾を目的とするイメージは使用しないでください(角が丸められた四角形など)。イメージではなく、CSSの使用を検討してください。

- 可能な場合は、メニューやダイアログなどのADFコンポーネントのロードは先に延ばします。この処理は、contentDeliveryやchildCreationなどのADFを使用して制御できます。

- ページ・テンプレートのレンダリングの際に余分な時間を要する要素は使用せず、かわりに処理時間が短くて済む要素を使用するようにしてください。

レイアウト

ページ・テンプレートの設計で最も重要な側面の1つは、テンプレートとページ・コンテンツの両方の要素でコンポーネントをどのようにレイアウトするかという点です。ページ・テンプレートでは、フロー・レイアウトまたはストレッチ・レイアウトが使用できます。これら2つの戦略の詳細は、第11.1.2項「ページ・テンプレートのレイアウトの理解」を参照してください。

ページ・テンプレート開発者は、コンテンツ・ファセットをページのストレッチ領域またはフロー領域のいずれに配置するかを制御できます。したがって、ページ・コンテンツは、レイアウト戦略を考慮に入れて作成する必要があります。

ページ・テンプレートに関する最適な戦略を決定したら、選択したレイアウトを作成する際のヒントについて次の各項を参照してください。

- 第11.2.1項「ストレッチ・レイアウトの作成のベスト・プラクティス」

- 第11.2.2項「フロー・レイアウトの作成のベスト・プラクティス」

ナビゲーション

ページ・テンプレートは、ポータルのナビゲーションをいくつかの方法で公開できます。たとえば、デスクトップ・ブラウザの場合、通常、ポータル・ナビゲーションは、ページの上部(横並び)またはページの横側(縦並び)に表示されます。

- トップ・ナビゲーション・ページ・テンプレートは、ヘッダー領域にポータル・ナビゲーションを公開します。トップ・ナビゲーションの場合、ページの水平方向の領域を有効に使用できるため、ポータル・ナビゲーションのトップ・レベル・ページが7レベル以下の場合は、この方式をお薦めします。このページ・テンプレートの設計には、通常、ヘッダー、ページおよびフッターのセクションが含まれ、フロー・レイアウトが必要なサイトの開始点に適しています。

- サイド・ナビゲーション・ページ・テンプレートは、ページの左側のサイドバーにポータル・ナビゲーションを公開します。サイド・ナビゲーションは垂直方向に表示され、ナビゲーション・アイテムのリストが長くても対応できるため、ポータル・ナビゲーションのトップ・レベル・ページが7レベルを超える場合は、この方式をお薦めします。ナビゲーション・モデルが複雑な場合は、サイド・ナビゲーション・テンプレートを選択します。

デバイスごとに、異なるナビゲーション・モデルを使用できます。たとえば、モバイル・デバイスに対して最適化されたページ・テンプレートの場合、ナビゲーションは、ポップアップまたはスライド・イン/アウトとして表示できます。

WebCenter Portal (Portal Default Navigation Model)ですぐに使用できるナビゲーション・モデルは共有アセットであり、ページ・テンプレートに埋め込むことにより、必要に応じてカスタマイズおよび拡張が可能な構築済のナビゲーションを表示できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のナビゲーション・モデルの編集に関する項およびWebCenter Portalの組込みページ・テンプレートについての項(埋込みナビゲーション・タスク・フローの例)を参照してください。

スキン

:
各ページ・テンプレートは、スキンとともに機能して、ポータル内のページのルック・アンド・フィール全体を決定します。ページ・テンプレートはページ上のコンポーネントの構造を制御し、スキンは色、フォントなどのコンポーネントの視覚的な外観、およびページ上のコンポーネントの位置、高さ、幅などのその他の要素を制御します。

各ページ・テンプレートで優先スキンを定義すると、それぞれのページ・テンプレートで最適に機能するスキンを指定できます。そのページ・テンプレートをポータルのデフォルト・ページ・テンプレートとして選択したり、システムのデフォルトとして選択すると、デフォルトのスキンは自動的にそのページ・テンプレートの優先スキンに更新されます。

詳細は、第13章「スキンの開発」を参照してください。

保管場所

Portal Frameworkアプリケーションにおいて、実行時管理コンソールの「アセット」ページで新規ページ・テンプレートを公開するには、ページ・テンプレートをApplication_Root/Portal/public_html/oracle/webcenter/portalapp/pagetemplatesディレクトリ(すぐに使用できるテンプレートの保管場所)に作成する必要があります。このディレクトリにページ・テンプレートを作成すると、次の利点があります。

- ページ・テンプレートをリソース・アーカイブにパッケージ化し、他のWebCenter Portal Frameworkアプリケーションまたはポータル・ビルダーで構築されるポータルにインポートして使用できます。再利用可能な汎用ページ・テンプレートを作成できます。

- ページ・テンプレートを実行時に管理コンソールで管理できます。

ページ・テンプレートをインポートしたら、pagetemplate-metadata.xmlを編集して、新しくインポートされたテンプレートをJDeveloper用に登録する必要があります。

詳細は、第9.5.1項「ポータル・リソースの実行時管理の有効化」を参照してください。

実行時の動作

実行時に認可ユーザーがコンポーザで編集できるページ・テンプレートをJDeveloperで開発する場合は、第11.2.3項「実行時に編集できるページ・テンプレートの開発のベスト・プラクティス」で説明されているヒントに従ってください。

ページ・テンプレートの開発時に「関連ADFmページ定義の作成」オプションを選択すると、テンプレートにポートレットとタスク・フローを含めて、実行時の切替えを有効にできます。詳細は、第11.3項「ページ・テンプレートの作成」および第11.5.3項「実行時にPortal Frameworkアプリケーションでページ・テンプレートの動的切替えを有効にする方法」を参照してください。

コンポーネント

ADFレイアウト・コンポーネントごとの外観の詳細は、ADF Facesリッチ・クライアントのデモ・オンライン・ツール(http://jdevadf.oracle.com/adf-richclient-demo/faces/visualDesigns/index.jspx)を参照してください。コンポーネントの「ソースの表示」メニューから「ページ」または「ページ・テンプレート」を選択し、使用されているタグと属性およびコンポーネント構造のページの外観を確認します。

ページに使用されているページ・テンプレートは変更される可能性があるため、カスタム・コンポーネントの設計では、フローおよびストレッチのコンテキストで適切に表示されるようにします。

コンポーネントの外観のカスタマイズに関するヒントは、第11.2.4項「コンポーネントの外観のカスタマイズのベスト・プラクティス」を参照してください。

スクロール

スクロールバーは、フロー・アイランド・コンテンツの周囲にのみ追加できます。スクロールバーの実装に関するヒントは、第11.2.5項「ページ・テンプレートでのスクロールの定義のベスト・プラクティス」を参照してください。

余白、境界線およびパディング

ブラウザのCSSボックス・モデル・ルールのため、コンポーネント上の余白、境界線、パディングの定義が複雑になる場合があります。これらの複雑さの解決に関するヒントは、第11.2.6項「余白、境界線、パディングの定義のベスト・プラクティス」を参照してください。

属性

ページ・テンプレートまたはページ・テンプレートを使用するページで設定できる属性について検討してください。たとえば、showFooterは、ページ・フッターを表示するかどうかを指定します。

属性を持たないページ・テンプレートは構文的に正しいものです。ただし、テンプレートのレンダリングが多少異なる複数のページに対して1つのページ・テンプレートを使用する場合は、ページ・テンプレートの属性が役に立ちます。

ページ・テンプレートでの属性の使用に関する詳細は、第11.2.7項「Portal Frameworkアプリケーションでのページ・テンプレート・コンテンツの非表示のベスト・プラクティス」および第11.3項「ページ・テンプレートの作成」を含む、この章全体で説明しています。

リンク

ページ・テンプレートにリンクを追加するには、すぐに使用できるページ・テンプレートで提供されているコンポーネントをコピーして、リンク・ナビゲーション、メニュー、ブレッドクラム、ボタンおよびイメージを組み込みます。

goButtonやgoLinkなどのgoコンポーネントは、クライアント側の機能を実行しないため、クライアント側のフットプリントはほとんど用意されていません。また、これらのコンポーネントは、検索エンジン用に最適化されたURLを使用できるため、ポータル内の一般的なナビゲーションではcommandコンポーネント(commandButton、commandLink)よりも優先されます。

国際化

国際化手法を考慮したページ・テンプレートを作成する場合、リソース・バンドル・ファイルへの静的テキストの格納などの推奨されるプラクティスに関する詳細は、第75章「複数言語に対応したポータルの構築」を参照してください。

ページ・テンプレートの命名(表示名)

表示名は、新規ページの作成の際にユーザーに公開されます。このため、テンプレートの使用対象のページ・タイプをユーザーが簡単に識別できるようなページ・テンプレート名にする必要があります。

関連項目:

ページ・テンプレートの一般的なベスト・プラクティスの詳細は、Oracle Technology Network (OTN)で入手可能なタイトル『Reference: Layout Best Practices』(http://www.oracle.com/technetwork/developer-tools/adf/layoutbestpractices-083827.html)のホワイト・ペーパーを参照してください。

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

- 第11.2.1項「ストレッチ・レイアウトの作成のベスト・プラクティス」

- 第11.2.2項「フロー・レイアウトの作成のベスト・プラクティス」

- 第11.2.3項「実行時に編集できるページ・テンプレートの開発のベスト・プラクティス」

- 第11.2.4項「コンポーネントの外観のカスタマイズのベスト・プラクティス」

- 第11.2.5項「ページ・テンプレートでのスクロールの定義のベスト・プラクティス」

- 第11.2.6項「余白、境界線、パディングの定義のベスト・プラクティス」

- 第11.2.7項「Portal Frameworkアプリケーションでのページ・テンプレート・コンテンツの非表示のベスト・プラクティス」

:

11.2.1 ストレッチ・レイアウトの作成のベスト・プラクティス

ページ・テンプレートに最適なレイアウトがストレッチ・レイアウトである場合(第11.1.2項「ページ・テンプレートのレイアウトの理解」)、レイアウトの開発時には次のヒントに従ってください。

- 作成する外部構造に格納されたコンテナは、ストレッチでき、その子をストレッチできます。documentコンポーネントの内部で、たとえばコンテナpanelGridLayout (図11-2)を行(gridRow)およびセル(gridCell)とともに使用するか、コンテナpanelSplitter (図11-3)を使用します。

注意:

各レイアウトまたはパネル・コンポーネントのタグ・ドキュメントでは、ストレッチできるかどうか、およびそのコンポーネントの「形状管理」ドキュメントでストレッチを実現する方法が識別されます。一部のコンポーネントには、子をストレッチさせるかどうかを決定する属性が含まれています。例: documentにはmaximized属性が、showDetailItemにはstretchChildren属性が含まれます。

- フロー・アイランドを作成します。ストレッチ可能な外部構造の内部に、フロー(ストレッチでない)コンポーネントのアイランドを作成します。これをストレッチからフローへ遷移させるには、この遷移ではストレッチ対象となっていてもその子をストレッチさせないため、panelGroupLayoutをlayout="scroll"またはlayout="vertical"と一緒に使用します。

- ストレッチ・コンポーネントでは、dimensionsFrom="auto"と設定することにより、ストレッチ・コンポーネント(panelStretchLayoutなど)自身がストレッチされる場合は、その子のみをストレッチしようと試みます。ストレッチされない場合は、その子をフロー(ストレッチではなく)します。

- フロー・コンテナ内部では、何かを垂直方向にストレッチ(高さにパーセント値を使用して)させないでください。

- inlineStyleのposition CSSプロパティは使用しないでください。使用すると、このプロパティをスキンで指定したスタイルでオーバーライドする機能が動作しなくなります。

注意:

次のコンポーネントは、信頼できる状態でストレッチできないコンポーネントのごく一部です。

- 大半の入力コンポーネント

- panelBorderLayout

- panelFormLayout

- panelGroupLayout (layout="default"とともに)

- panelGroupLayout (layout="horizontal"とともに)

- panelHeader (type="flow"とともに)

- panelLabelAndMessage

- panelList

- panelGrid

- tableLayout (Apache MyFaces Trinidad HTMLコンポーネント)

11.2.2 フロー・レイアウトの作成のベスト・プラクティス

ページ・テンプレートに最適なレイアウトがフロー・レイアウトである場合(第11.1.2項「ページ・テンプレートのレイアウトの理解」)、レイアウトの開発時には次のヒントに従ってください。

- panelGridLayoutを行(gridRow)およびセル(gridCell)とともに使用して、フローする構造化レイアウトを定義します。

- スクロール・バーが複数になることを避けるため、layout="vertical"を使用するかわりに、スクロールのpanelGroupLayoutコンポーネントをネストしないでください。

- 大半のストレッチ可能なADFコンポーネントは、dimensionsFrom="auto"でのフロー・コンテキストでも機能します。

- コンポーネントを水平にストレッチさせるには、styleClass="AFStretchWidth"を(inlineStyle="width:100.0%"のかわりに)使用します。

カスタマイズ可能なコンポーネントの使用:

- panelCustomizableで、layout="auto"を使用してその子をストレッチするかどうかを調べます。

- フロー・レイアウトまたはストレッチ・レイアウトをサポートするには、showDetailFrameをstretchChildren="auto"と指定して使用します。

11.2.3 実行時に編集できるページ・テンプレートの開発のベスト・プラクティス

実行時にコンポーザで編集できるようなページ・テンプレートを設計時にJDeveloperで作成するには、次のヒントに従ってください。

- コンポーザ・グループのコンポーネントをコンポーネント・パレットに追加します。

- ページ・テンプレートにpageCustomizableは追加しないでください。

- 他のコンポーネントを保持している水平または垂直方向のレイアウトをコンテナに提供する、最低1つのpanelCustomizableコンポーネントを追加します。

- panelCustomizableコンポーネントの内部で、コンポーネントに対して表示、非表示、移動などのアクションを追加できるクロムを提供するshowDetailFrame内のADFコンポーネント(outputText、richTextEditor、goLinkなど)を追加します。フレームまたは埋込みコンポーネント・プロパティを編集できます。

注意:

showDetailFrameコンポーネントは処理時間に影響を与えるため、この手法は慎重に使用してください。エンド・ユーザーがコンポーネントを移動させることができない場合は、コンポーネントをshowDetailFrameにラップしないでください。

設計時にページに追加するために使用できるコンポーネントの大部分は、実行時にリソース・カタログでも使用できます。表11-3では、設計時コンポーネントを実行時コンポーネントにマップしています。

表11-3 設計時から実行時へのコンポーネント・マッピング

設計時(JDeveloper)

実行時(コンポーザ)

panelCustomizable

Box

outputText

HTML Markup

goLink

Hyperlink

goImageLink

Image

showDetailFrame

Movable Box

richTextEditor

Text

inlineFrame

Web Page

11.2.4 コンポーネントの外観のカスタマイズのベスト・プラクティス

コンポーネントの外観をカスタマイズするには、次のヒントに従ってください。

- カスタム・スタイルには、メンテナンスが簡単で、ページ・テンプレートのソースを変更しなくても変更可能なCascading Style Sheets (CSS)を使用します。たとえば、CSSコードbackground-color: blueを使用して、ページの背景色を青色に変更します。

- 既存のスキンに必要なすべてが備わっていない場合には、一貫した外観の変更に対してカスタム・スキンを使用します。

- インスタンス固有の代替スタイルには、styleClass属性を使用します。対応するスタイル定義は、カスタム・スキン(推奨)、af:resourceタグにより提供されるスタイルなどの管理しやすい場所に保存します。

- 最後の手段として、inlineStyle、contentStyle、labelStyleなどのコンポーネントの属性を使用します。これらの属性は、単一のスタイル・シートに収集されているのではなくコンポーネント全体にわたって散在しているため、より多くのページのRaw HTMLサイズを使用し、前述のメカニズムを1つ以上使用している場合には不要なこともあります。スタイルはWebブラウザで直接処理されるため、非常に強力ですが、エラーが発生しやすいという代償を伴います。

- ブラウザではすべての要素のすべてのスタイルがサポートされていませんし、スタイルの特定の組合せでは明確でない結果となります。次のスタイル構成は回避してください。

- %単位のheight値を持つinlineStyle

- 90%から100%のwidth値を持つinlineStyle (かわりにstyleClass="AFStretchWidth"またはstyleClass="AFAuxiliaryStretchWidth"を使用してください)

- height、topおよびbottom値を持つinlineStyle

- width、leftおよびright値を持つinlineStyle

- position値を持つinlineStyle

- 親コンポーネントによりストレッチされた子の場合、width値またはheight値を持つinlineStyle

11.2.5 ページ・テンプレートでのスクロールの定義のベスト・プラクティス

ページ・テンプレートでスクロールを定義するには、次のヒントに従ってください。

- ページ・コンテンツが使用可能な画面サイズ全体を占めるように設計を行うことにより、エンド・ユーザーが水平方向にスクロールしないで済むようにしてください。

- スクロールバーは、フロー・アイランド・コンテンツの周囲にのみ追加できます。ストレッチ外部フレームからフロー・アイランドへの切替え用遷移コンポーネントには、panelGroupLayoutにlayout="scroll"を含めることをお薦めします。このpanelGroupLayoutのコンテンツが割り当てられたスペースの大きさに合わない場合、ブラウザではスクロールバーが必要かどうかが判断され、自動的に追加されます。

- スクロールpanelGroupLayoutコンポーネントをネストすると、ユーザーには複数のスクロールバーが表示されるため、ネストしないでください。また、これはストレッチ領域からフロー領域への遷移でのみ使用され、フロー領域内部にストレッチ領域がないため、通常、ネストされたスクロールバーを使用して終了できません。最もよいのは、ユーザーが検索している項目を表示するためにスクロールする必要がある領域の数を、最小限にすることです。ユーザーが必要とするスクロールについて十分検討してください。不要なスクロールバーが存在する場合、そのpanelGroupLayoutのlayout属性をverticalに変更する必要がある場合があります。

11.2.6 余白、境界線、パディングの定義のベスト・プラクティス

ブラウザのCSSボックス・モデル・ルールのため、コンポーネント上の余白、境界線、パディングの定義が複雑になる場合があります。多くの場合、このようなスタイルを適用するには、複数のコンポーネントを一緒に使用する必要があります。

- スクロール領域では、追加のpanelGroupLayoutにlayout="vertical"でパディングを定義し、外側のpanelGroupLayoutでlayout="scroll"を指定して、その内部に追加する必要があります。

- ストレッチ領域では、panelGroupLayoutコンポーネントをpanelGridLayoutの内部にラップし、gridCellコンポーネントの内部にスペーサを指定することが必要になる場合があります。図11-2を参照してください。

関連項目:

様々なメカニズムをパディングに適用するには、ナビゲーション-マスター-ディテール、タイル・フロー、タイル・ストレッチのレイアウト・パターン例を参照してください。

http://jdevadf.oracle.com/adf-richclient-demo/faces/feature/layoutBasicTest.jspx

11.2.7 Portal Frameworkアプリケーションでのページ・テンプレート・コンテンツの非表示のベスト・プラクティス

Portal Frameworkアプリケーションでは、ページ・テンプレートのパーツを非表示にするページ・テンプレートに基づいた特殊なページがいくつか存在します。これらのページでは、ページ・テンプレートで指定した属性を使用して、この処理を実現します。

- すぐに使用できるlogin.jspxおよびerror.jspxの場合: showNavigation=falseおよびshowLogin=false.

- 組込み管理ページの場合: isAdminPage=true.

- テンプレートを編集する場合は、アセット・マネージャがisEditingTemplate=trueと設定します。

テンプレートがデフォルト・テンプレートとして使用される場合、またはユーザーがすぐに使用できるログイン・ページを使用する場合は、カスタム・ページ・テンプレートでこれらの属性を使用します。

コンポーザを使用して、編集可能なコンポーネントによりページ・テンプレートを編集できる場合があります。ページを編集する際は、ページ・テンプレートではなくページ・コンテンツのみを編集できるように、コンテンツ・ファセット参照以外のテンプレート・コンテンツを非表示にすることをお薦めします。たとえば、rendered属性を使用します。

rendered = "#{!composerContext.inEditMode or attrs.isEditingTemplate}"

11.3 ページ・テンプレートの作成

ページ・テンプレートを作成する前に、第11.2項「ページ・テンプレートの開発のベスト・プラクティス」に目を通しておいてください。

この項では、独自設計の新規ページ・テンプレートを最初から作成する方法について説明します。または、Portal Frameworkアプリケーションで提供されている2つの組込みページ・テンプレートか、WebCenter Portalで提供されている最新のテンプレート(推奨)から開始し、要件に合わせて変更できます。開始点として既存のページ・テンプレートを使用するには、第11.4項「ページ・テンプレートの編集」を参照してください。

注意:

ページ・テンプレートの作成は、複雑なタスクです。JDeveloperを使用して、WebCenter Portal (ポータル・ビルダー)で構築されるPortal Frameworkアプリケーションおよびポータル用のページ・テンプレートを開発することをお薦めします。また、ページ・テンプレートはポータル・ビルダーで開発することもできますが、機能の編集は制限されます。

開発が完了したページ・テンプレートは、WebCenter Portal (ポータル・サーバー)に直接アップロードして、すぐに使用したり、テストしたりできます。または、ページ・テンプレートをファイルにエクスポートして、後でポータル・ビルダーによりWebCenter Portalにアップロードできます。

ページ・テンプレートを作成するには:

1. アプリケーション・ナビゲータで、ページ・テンプレートを作成および格納するノードを右クリックし(図11-6)、「新規」を選択します。

図11-6 pagetemplatesフォルダの内容

- Portal Frameworkアプリケーションの場合、推奨されるディレクトリは/oracle/webcenter/portalapp/pagetemplatesです。

注意:

Portal Frameworkアプリケーションにおいて、実行時管理コンソールの「アセット」ページで新規ページ・テンプレートを公開するには、ページ・テンプレートをApplication_Root/Portal/public_html/oracle/webcenter/portalappディレクトリに作成する必要があります。デフォルトでは、Portal Frameworkアプリケーションには別個のpagetemplatesディレクトリが含まれており、このディレクトリには組込みページ・テンプレートが格納されています。

- ページ・テンプレートをWebCenter Portal (ポータル・ビルダー)で使用する場合は、第55.1項「WebCenter Portalのアセットの開発」の説明に従い、WebCenterSpacesResourceプロジェクトを使用して、共有アセットまたはポータル・アセット用のディレクトリを選択します。

2. 「新規ギャラリ」で、「Web層」を開き、「JSF」を選択して、「JSFページ・テンプレート」を選択し、「OK」をクリックします。

3. 「JSFページ・テンプレートの作成」ダイアログ(図11-7)で、「ファイル名」フィールドに、ページ・テンプレートを表すJSPXファイルの名前(myCompanyPageTemplate.jspxなど)を入力します。
このファイル名によって、アプリケーション・ナビゲータでページ・テンプレートが識別されます。

図11-7 「JSFページ・テンプレートの作成」ダイアログ

4. 「ディレクトリ」フィールドで、ページ・テンプレートを作成する場所のフル・ディレクトリ・パスを確認するかまたは入力します。

5. 「ページ・テンプレート名」フィールドに、このテンプレートの使用対象のページ・タイプをユーザーが簡単に識別できるような、ページ・テンプレートの表示名を入力します。

6. ページ・テンプレートにいずれかの事前定義済レイアウトを使用する場合は、「クイック・スタート・レイアウトの使用」を選択します。

7. ページ・テンプレートにADFm Modelデータ・バインディングを使用する場合は、「関連ADFmページ定義の作成」を選択します。
ページ定義をページ・テンプレートに関連付けると、モデル要素が含まれるオブジェクト(タスク・フローやポートレットなど)をページ・テンプレートに組み込むことができるようになります。また、ユーザーは、実行時に別のページ・テンプレートに切り替えることができるようになります。実行時ページ・テンプレートの切替えが機能するように、次のいずれかの条件を満たす必要があります。

- アプリケーション内のすべてのページ・テンプレートに関連ページ定義があります。

- アプリケーション内のいずれのページ・テンプレートにも関連ページ定義がません。

したがって、Portal Frameworkアプリケーションで提供される組込みページ・テンプレートには関連ページ定義があるため、Portal Frameworkアプリケーションでページ・テンプレートの切替えが機能するように、アプリケーション内で作成する他のページ・テンプレートにも関連ページ定義を指定する必要があります。

8. 「ファセット定義」タブをクリックして、コンテンツを挿入できるページ・テンプレートで領域(ファセット)を定義します。
ファセットは、テンプレート内のプレースホルダであり、テンプレートを使用してページにより入力されます。ADFページ・テンプレートでは、任意の数のファセットを指定できますが、Portal Frameworkアプリケーションでは、テンプレートごとにcontentと呼ばれる1つのファセットを指定する必要があります。通常、WebCenter Portalの実行時ツールが認識できるのはこのファセットのみであるため、Portal Frameworkアプリケーションでは他のファセットは使用されません。他のファセットは、設計時にJDeveloperでのみ使用できます。

WebCenter Portalアプリケーションでの使用が意図されたページ・テンプレートには、ファセット定義を少なくとも1つは含める必要があり、その名前はcontentにする必要があります。このファセット定義を作成するには:

1. 「新規」アイコンをクリックして、「ファセット定義」タブに新規行を追加します。

2. 新規ファセット定義の「名前」フィールドに、contentと入力します。

3. 「説明」フィールドに、たとえばMain content areaなど、ファセット定義の簡単な説明を入力します。

4. 必要に応じて、追加のファセット定義を作成します。

5. ページ・テンプレート内の必要な場所にファセットを追加する方法の詳細は、第11.4項「ページ・テンプレートの編集」を参照してください。

例11-1は、pageTemplate_globe.jspx組込みページ・テンプレートの<af:xmlContent>セクション内にある、contentファセット定義を示しています。

例11-1 Globe組込みページ・テンプレートのcontentファセット

<af:xmlContent>
<component xmlns="http://xmlns.oracle.com/adf/faces/rich/component">
<display-name>Globe Page Template</display-name>
<facet>
<description>Facet for content</description>
<facet-name>content</facet-name>
<facet>
...
</component>
</af:xmlContent>

9. 「属性」タブをクリックして、「新規」アイコンをクリックし、テンプレートを使用するページからテンプレート自体に値を渡すための属性を定義します。これらの値をページ・テンプレートで使用することにより、テンプレートを使用する個々のページに実際に表示されるものを制御できるようになります。
属性を持たないページ・テンプレートは構文的に正しいものです。ただし、テンプレートのレンダリングが多少異なる複数のページに対して1つのページ・テンプレートを使用する場合は、ページ・テンプレートの属性が役に立ちます。

たとえば、pageTemplate_globe.jspx組込みページ・テンプレートには、シード済「管理」ページへのリンクが含まれています。現行ページが「管理」ページである場合、リンクの表示は必要ありません。テンプレートでは、isAdminPageという属性を使用して、現行ページがシード済「管理」ページかどうかが識別されます。この属性の値は、テンプレートを使用するページによって設定され、「管理」ページへのリンクを表示するかどうかを判別します。

例11-2に、ページ・テンプレートのisAdminPage属性定義を示します。

例11-2 Globe組込みページ・テンプレートの属性定義

<af:xmlContent>
...
<attribute>
<attribute-name>isAdminPage</attribute-name>
<attribute-class>java.lang.Boolean</attribute-class>
...
<default-value>#{false}</default-value>
</attribute>
</af:xmlContent>

例11-3は、シード済「管理」ページにリンクをレンダリングするかどうかを指定するisAdminPage属性の値を使用するページ・テンプレートを示しています。

例11-3 「管理」ページのリンクのレンダリングに使用する条件値

<af:pageTemplateDef var="attrs">
...
<af:goLink id="pt_glnk1" text="Administration"
destination="/admin"
rendered="#{attrs.showAdmin !=attrs.isAdminPage}"
inlineStyle="font-size:small; color:White;"/>

例11-4は、シード済「管理」ページでisAdminPage属性をtrueに設定して、ユーザーが「管理」ページを表示する際にページ・テンプレートでリンクがレンダリングされないようにする方法を示しています。

例11-4 ページ・テンプレートの属性の値の設定

<af:pageTemplate ... isAdminPage="true">

例11-5は、ページ・テンプレートがcontentWidth属性の値を使用して、ページ幅を設定する方法を示しています。デフォルト値は960ピクセルです

例11-5 contentWidth属性

<attribute>
<attribute-name>contentWidth</attribute-name>
<attribute-class>java.lang.String</attribute-class>
<default-value>960px</default-value>
</attribute>

10. 「OK」をクリックします。
ページ・テンプレートが作成され、ビジュアル・エディタで開かれます。次の手順では、ページ・テンプレートを編集して、レイアウトとコンテンツを定義します。

11.4 ページ・テンプレートの編集

ページ・テンプレートは、最初の作成の後に編集できます。組込みページ・テンプレートのいずれかを編集して、個別の要件に適合するように変更することもできます。加えるすべての変更が、そのページ・テンプレートを使用するすべてのページに自動的に公開されます。

注意:

ページ・テンプレートの編集は、複雑なタスクです。JDeveloperを使用して、WebCenter Portal (ポータル・ビルダー)で構築されるPortal Frameworkアプリケーションおよびポータル用のページ・テンプレートを開発することをお薦めします。また、ページ・テンプレートはポータル・ビルダーで開発することもできますが、機能の編集は制限されます。

開発が完了したページ・テンプレートは、WebCenter Portal (ポータル・サーバー)に直接アップロードして、すぐに使用したり、テストしたりできます。または、ページ・テンプレートをファイルにエクスポートして、後でポータル・ビルダーによりWebCenter Portalにアップロードできます。

ページ・テンプレートを編集する前に、第11.2項「ページ・テンプレートの開発のベスト・プラクティス」に目を通しておいてください。

独自のページ・テンプレートに組み込むことができる機能の例は、次を参照してください。

- Portal Frameworkアプリケーションの2つの組込みページ・テンプレート。第11.1.4項「WebCenter Portal Frameworkアプリケーションの組込みページ・テンプレートの理解」を参照してください。

- WebCenter Portalで提供される組込みページ・テンプレート(特に、タスク・フロー数が削減され、パフォーマンスを最適化するpanelGridLayoutコンポーネントを含む最新のテンプレートのことですが、これは行(gridRow)およびセル(gridCell)を使用して構造化レイアウトを定義します)。『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のWebCenter Portalの組込みページ・テンプレートについての項を参照してください。

組込みページ・テンプレートに基づいてページ・テンプレートを作成するのではない場合でも、組込みページ・テンプレートはアイデアをつかむ上で検討に値します。たとえば、組込みページ・テンプレートには、ログイン・フォーム、およびナビゲーションの視覚化に関して役に立つ例が含まれており、このテンプレートは要件に合わせて変更できます。

反復開発が有効な場合、ページ・テンプレートに加えた変更はすべて、実行中のPortal Frameworkアプリケーションで即座に確認できます。反復開発の詳細は、第2.3.1項「Portal Frameworkアプリケーションでの反復開発の準備」を参照してください。

ページ・テンプレートを編集するには:

1. ページ・テンプレートにWebCenter Portal固有のコンポーネントを追加するには、最初にJDeveloperでプロジェクトにJSPライブラリを追加する必要があります。例:

JDev_HOME/jdeveloper/webcenter/modules/oracle.webcenter.framework_11.1.1/spaces-components.jar

プロジェクトにライブラリを追加したら、SpacesDeclarativeComponentsという名前の新規コンポーネント・パレットが表示されます。パレットからページ・テンプレートにコンポーネントを移動できます。同一の組込みコンポーネントは、実行時に「テンプレート開発」にあるリソース・カタログを通して使用できます。

2. アプリケーション・ナビゲータで、編集するページ・テンプレートを右クリックし、「開く」を選択します。

- Portal Frameworkアプリケーションの場合、ページ・テンプレートの推奨されるディレクトリは/oracle/webcenter/portalapp/pagetemplatesです。

注意:

Portal Frameworkアプリケーションにおいて、実行時管理コンソールの「アセット」ページで新規ページ・テンプレートを公開するには、ページ・テンプレートをApplication_Root/Portal/public_html/oracle/webcenter/portalappディレクトリに格納する必要があります。デフォルトでは、Portal Frameworkアプリケーションには別個のpagetemplatesディレクトリが含まれています。

- ページ・テンプレートをWebCenter Portal (ポータル・ビルダー)で使用する場合は、第55.1項「WebCenter Portalのアセットの開発」の説明に従い、WebCenterSpacesResourceプロジェクトを使用して、共有アセットまたはポータル・アセット用のページ・テンプレートを見つけます。

3. ビジュアル・エディタで、ページ・テンプレートのレイアウトやコンテンツに必要な変更を加えます。

1. コンポーネント・パレットからコンポーネントをドラッグして、ビジュアル・エディタ内のページ・テンプレートにドロップします。
ナビゲーションの視覚化は、ページ・テンプレートの重要な側面です。ナビゲーションの視覚化をページ・テンプレートに追加する処理の詳細は、第10.12項「ポータル・ナビゲーションの視覚化」を参照してください。

ポートレット、タスク・フロー、コンテンツなど、その他のリソースをページ・テンプレートに追加する方法の詳細は、第15章「ページの作成とリソースの追加」を参照してください。

ページ・テンプレートで提供できるその他の機能として、ログイン/ログアウトや検索のフィールドがあります。組込みページ・テンプレートには、ログイン・フォームの例が含まれています。

ページ・テンプレート全体で、式言語(EL)式を使用して、定数値のかわりに変数値を指定できます。一般的なEL式については、付録F「式言語式」を参照してください。

2. ユーザーがページ・テンプレートに基づいたページに独自のコンテンツを配置できるページ・テンプレート内の領域について、次の操作を行います。

1. コンポーネント・パレットから「FacetRef」コンポーネントをドラッグし、ページ・テンプレート内の該当する場所にそれをドロップします。

2. ファセット参照の挿入ダイアログで、ファセット名ドロップダウン・リストから、ページ・テンプレートのこの領域に使用するファセットを選択します。新しいファセット名を入力する場合、JDeveloperでは、ページ・テンプレート定義ファイルに新しいファセット定義を作成します。

例11-6は、pageTemplate_globe.jspx組込みページ・テンプレートにcontentファセットが組み込まれる方法を示しています。

例11-6 Globe組込みページ・テンプレートのcontentファセット

<af:pageTemplateDef var="attrs">
<af:panelGroupLayout id="pt_root" layout="scroll">
<af:panelGroupLayout id="pt_pg12" layout="vertical">
...
<af:facetRef facetName="content"/>
...
</af:panelGroupLayout>
</af:panelGroupLayout>
...
<af:pageTemplateDef>

3. 新規ファセット定義または属性を追加するには、「構造」ウィンドウでaf:pageTemplateDefタグを選択して、プロパティ・インスペクタを使用します。たとえば、第11.3項「ページ・テンプレートの作成」の手順を参照してください。

4. JSFページ・テンプレートの一般情報は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のページ・テンプレートの使用に関する項を参照してください。

4. ページ・テンプレート定義ファイルを保存します。

11.5 ページへのページ・テンプレートの適用

この項では、ページ・テンプレートをPortal Frameworkアプリケーションのページに適用する方法について説明します。

注意:

ページ・テンプレートをJDeveloperで開発してWebCenter Portal (ポータル・ビルダー)で使用する場合、このタスクはポータル・ビルダーを使用して実行されますが、ページ・テンプレートはアプリケーション・レベルまたはポータル・レベルのいずれかで選択され、ポータル内のすべてのページの構造とレイアウト(ヘッダー、本文、ナビゲーションおよびフッター)を定義します。ポータル・ビルダーについては、ポータル間でグローバルなデフォルト設定を構成するには『Oracle Fusion Middleware Oracle WebCenter Portalの管理』のデフォルト・ページ・テンプレートの選択に関する項、およびポータルのデフォルト・ページ・テンプレートを選択するには『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のポータルのページ・テンプレートの変更に関する項を参照してください。

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

- 第11.5.1項「Portal Frameworkアプリケーションでのページ作成時にページ・テンプレートを適用する方法」

- 第11.5.2項「Portal Frameworkアプリケーションでページに適用されたページ・テンプレートを変更する方法」

- 第11.5.3項「実行時にPortal Frameworkアプリケーションでページ・テンプレートの動的切替えを有効にする方法」

- 第11.5.3.1項「実行時の処理」

11.5.1 Portal Frameworkアプリケーションでのページ作成時にページ・テンプレートを適用する方法

Portal FrameworkアプリケーションでJSFページを作成する際に、図11-8に示す「JSFページの作成」ダイアログで、ページに適用するページ・テンプレートを選択できます。

図11-8 「JSFページの作成」ダイアログの「ページ・テンプレート」オプション

Portal Frameworkアプリケーションでのページ作成の詳細は、第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」を参照してください。

11.5.2 Portal Frameworkアプリケーションでページに適用されたページ・テンプレートを変更する方法

ページを作成する際には、そのページで使用する特定のページ・テンプレートを選択できます(第11.5.1項「Portal Frameworkアプリケーションでのページ作成時にページ・テンプレートを適用する方法」を参照)。これによって、ページ・テンプレートへの静的参照が、ページのJSPXファイルに追加されます。例11-7に、その参照を示します。

例11-7 ページのページ・テンプレートの参照

<af:pageTemplate
viewId="/oracle/webcenter/portalapp/pagetemplates/examplePageTemplate.jspx"
value="#{bindings.pageTemplateBinding  }"
id="pt1">
<f:facet name="content"/>
</af:pageTemplate>

ページ・テンプレートのバインディングが、ページのページ定義ファイルに作成されます。例11-8に、そのバインディングを示します。

例11-8 ページへのページ・テンプレートのバインディング

<executables>
<variableIterator id="variables"/>
<page path="oracle.webcenter.portalapp.pagetemplates.examplePageTemplatePageDef"
id="pageTemplateBinding" Refresh="ifNeeded"/>
</executables>

対象のページに別のページ・テンプレートを適用するには、これら両方の参照を変更する必要があります。

11.5.3 実行時にPortal Frameworkアプリケーションでページ・テンプレートの動的切替えを有効にする方法

デフォルト・ページ・テンプレート設定から、使用するページ・テンプレートを指定するEL式を使用するように、ページのJSPXファイルとページ定義ファイル内の参照を変更できます。適切な権限を持ったユーザーは、実行時管理コンソールを使用して、別のデフォルト・ページ・テンプレートに切り替えることができます。

注意:

ページ・テンプレート間の実行時の切替えは、ページ定義が関連付けられた状態でページ・テンプレートが作成されている場合にのみ可能です。

実行時のページ・テンプレートの動的切替えを有効にするには:

1. アプリケーション・ナビゲータで、ページのJSPXファイルを右クリックし、「開く」を選択します。

2. 「ソース」タブをクリックします。

3. 次のコードを置き換えます。

<af:pageTemplate viewId="pathToPageTemplate"
value="#{bindings.pageTemplateBinding}"
id="ptId">
<f:facet name="content"/>
</af:pageTemplate>

置換後:

<af:pageTemplate value="#{bindings.pageTemplateBinding.templateModel}"
id="ptId">
<f:facet name="content"/>
</af:pageTemplate>

これは、ページによって使用されるページ・テンプレートが、ページ・テンプレートのページ定義の中で定義されていることを指定します。

4. JSPXページを右クリックし、「ページ定義に移動」を選択します。

5. 「ソース」タブをクリックします。

6. 次のコードを置き換えます。

<page path="pathToPageTemplatePageDef"
id="pageTemplateBinding" Refresh="ifNeeded"/>

置換後:

<page viewId="${preferenceBean.defaultPageTemplate}"
id="pageTemplateBinding" Refresh="ifNeeded"/>

${preferenceBean.defaultPageTemplate} EL式は、デフォルト・ページ・テンプレート設定からページ・テンプレートの名前を取得します。

7. デフォルト・ページ・テンプレートは、第11.6項「デフォルト・ページ・テンプレートの選択」で説明するように設定できます。

11.5.3.1 実行時の処理内容

適切な権限を持つユーザーが実行時管理コンソールでページ・テンプレートを選択する際には、式#{bindings.pageTemplateBinding.templateModel}により常に管理コンソールで設定されたページ・テンプレートが返されるため、すべてのページでこのページ・テンプレートが使用されます。

関連項目:

Portal Frameworkアプリケーションのデフォルト設定の構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの管理』のデフォルト・ページ・テンプレートの選択に関する項を参照してください。

11.6 デフォルト・ページ・テンプレートの選択

この項では、Portal Frameworkアプリケーションのすべてのページで使用される、デフォルト・ページ・テンプレートを設定する方法について説明します。

注意:

ページ・テンプレートを開発してWebCenter Portal (ポータル・ビルダー)で使用する場合、このタスクはポータル・ビルダーを使用して実行されますが、ポータルのすべてのページにおけるデフォルト・ページ・テンプレートは、アプリケーション・レベルまたはポータル・レベルのいずれかで選択されます。ポータル・ビルダーについては、ポータル間でグローバルなデフォルト設定を構成するには『Oracle Fusion Middleware Oracle WebCenter Portalの管理』のデフォルト・ページ・テンプレートの選択に関する項、およびポータルのデフォルト・ページ・テンプレートを選択するには『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のポータルのページ・テンプレートの変更に関する項を参照してください。

Portal Frameworkアプリケーションを最初に作成する際には、pageTemplate_globe.jspx組込みページ・テンプレートが、アプリケーションのデフォルト・ページ・テンプレートとして設定されます。アプリケーション・ページの構造とレイアウトに使用する独自のページ・テンプレートを後で作成した場合は、それをデフォルト・ページ・テンプレートとして設定できます。

Portal Frameworkアプリケーションにデフォルト・ページ・テンプレートを設定するには、adf-config.xmlファイルのoracle.webcenter.portalapp.pagetemplate.pageTemplateプリファレンスを編集します。プリファレンスBean #{preferenceBean}を使用すると、実行時にadf-config.xmlのこのセクションおよびそこで指定した構成にアクセスできます。

デフォルト・ページ・テンプレートを選択するには:

1. アプリケーション・ナビゲータの「アプリケーション・リソース」ペインで、adf-config.xmlファイルを右クリックして、「開く」を選択します。

ヒント:

adf-config.xmlファイルを探すには、「ディスクリプタ」ノードを開き、さらに「ADF META-INF」ノードを開きます。

2. 「ソース」タブをクリックします。

3. 次のIDを持つADFプリファレンスを見つけます。

oracle.webcenter.portalapp.pagetemplate.pageTemplate

4. value属性を、アプリケーションのデフォルトとして使用するページ・テンプレートのパスに設定します。次に例を示します。

value="/oracle/webcenter/portalapp/pagetemplates/examplePageTemplate.jspx

例11-9に全プリファレンス要素の例を示します。

例11-9 デフォルトのページ・テンプレートのADFプリファレンス

<preference id="oracle.webcenter.portalapp.pagetemplate.pageTemplate"
desc="Default Page Template"
value="/oracle/webcenter/portalapp/pagetemplates/examplePageTemplate.jspx"
resourceType="Template" display="true"/>

5. adf-config.xmlファイルを保存します。

これにより、実際の名前を指定せずに、デフォルト・ページ・テンプレートを参照できるようになります。例11-10に、明示的に選択されたページ・テンプレートではなく、アプリケーションのデフォルト・ページ・テンプレートをページが使用するように指示するためにページのページ定義ファイルに組み込むEL式を示します。

例11-10 アプリケーションのデフォルト・ページ・テンプレートを使用するためのEL式

<page viewId="${preferenceBean.defaultPageTemplate}"
id="pageTemplateBinding" Refresh="ifNeeded"/>

11.7 ページ・テンプレートの削除

この項では、Portal Frameworkアプリケーションでページ・テンプレートを削除する方法について説明します。

注意:

ページ・テンプレートを開発してWebCenter Portal (ポータル・ビルダー)で使用する場合、このタスクはポータル・ビルダーを使用して実行されますが、デフォルト・ページ・テンプレートは、アプリケーション・レベルまたはポータル・レベルのいずれかで削除されます。ポータル・ビルダーについては、『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のアセットの削除に関する項を参照してください。

注意:

ページ・テンプレートを削除する前に、そのページ・テンプレートを使用しているページが存在しないことを確認してください。ページ・テンプレートを削除する際に、そのページ・テンプレートへの直接参照があるページを実行しようとすると、実行時エラーが発生します。

JDeveloperでページ・テンプレートを削除するには:

- アプリケーション・ナビゲータでページ・テンプレートを右クリックして、コンテキスト・メニューから「削除」を選択します。

詳細は、第9.4項「ポータル・リソースの削除」を参照してください。

11.8 ページ・テンプレートのチュートリアルと例

次の補足チュートリアルと例は、ページ・テンプレートに関する追加情報を示しています。

- ページ・テンプレートの調査。Oracle WebCenter Portal Frameworkアプリケーションにおいて、推奨されるプラクティスを含む、単純なページ・テンプレートの詳細を分析します。
http://www.oracle.com/technetwork/middleware/webcenter/portal/learnmore/dissectingapagetemplate-1926909.pdf

- Oracle WebCenter Portalオンライン・トレーニング。Oracle WebCenter Portalアプリケーションでのページ・テンプレートの作成と使用。以前のリリースでポータルのページ・テンプレートを作成して使用するための記録済プレゼンテーションおよびスライドを示します。
http://www.oracle.com/technetwork/middleware/webcenter/portal/learnmore/pagetemplates-1438595.pdf

- WebCenter Portalのモバイル配信の最適化。ページ重みに関連するWebCenter Portalの一般的なパフォーマンスのボトルネックを識別して分析し、パフォーマンスとレスポンス時間を向上させると同時にポータルを合理化するための一般的な方法について説明します。ページ・テンプレート開発のコンテキストで特に興味深いのは、「ページの設計とコンポーネントの選択」に関する項です。アプリケーションのサンプルをダウンロードできます。
http://www.ateam-oracle.com/webcenter-mobile-delivery/

- WebCenterアプリケーションでのリンクの使用。リンクを使用する際の考慮事項について説明します。ページ・テンプレートに関連するのは、メニュー、ブレッドクラム、ボタンおよびイメージ内のリンクです。
http://www.ateam-oracle.com/working-with-links-in-webcenter-application/

12 ページ・スタイルとタスク・フロー・スタイルの開発

この章では、Oracle JDeveloperを使用してWebCenter Portal Frameworkアプリケーション用のページ・スタイルとタスク・フロー・スタイルを作成および管理する方法を説明します。

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

- 第12.1項「スタイルの概要」

- 第12.2項「ページ・スタイルの開発」

- 第12.3項「タスク・フロー・スタイルの開発」

12.1 スタイルの概要

Oracle WebCenter Portalは、ポータル内のコンテンツのレイアウトを決定する数種類のスタイルを提供しています。

- ページ・スタイルは、実行時に作成される新規ページ内のコンテンツのレイアウトを決定します。詳細は、第12.1.1項「ページ・スタイルの概要」を参照してください。

- タスク・フロー・スタイルは、実行時に作成されるタスク・フローのコンテンツのレイアウトを決定します。タスク・フロー・スタイルには、タスク・フローに追加されるデータ視覚化にバインドできるオブジェクトを含めることもできます。詳細は、第12.1.2項「タスク・フロー・スタイルの概要」を参照してください。

- コンテンツ・プレゼンタ表示テンプレートは、コンテンツ・プレゼンタ・コンテンツ・アイテムのページ上でのレイアウトを定義します。これらのテンプレートについては、この章では説明していません。詳細は、第27章「コンテンツ・プレゼンタ表示テンプレートの作成」を参照してください。

実行時管理

Portal Frameworkアプリケーションは、デプロイ後もポータルの開発をユーザーが続行できるように、スタイルの実行時管理をサポートしています。実行時管理により、権限のあるユーザーがスタイルをブラウザ・ベースの環境で管理でき、JDeveloperのインストールや知識は必要ありません。詳細は、第9.5項「実行時のポータル・リソースの使用」を参照してください。

ラウンドトリップ開発

ポータルの再デプロイ時に変更内容が失われないように、実行時に作成または変更されたスタイルをJDeveloperに取り込むことができます。必要な場合は、これらのスタイルを編集してさらに改良でき、デプロイ済ポータルに再びアップロードできます。詳細は、第9.6項「ラウンドトリップ開発での作業」を参照してください。

注意:

コンテンツ・プレゼンタの表示テンプレートを実行時に作成することはできません。実行時にページ・スタイルとタスク・フロー・スタイルを作成するには、既存のスタイルのコピーを作成する必要があります。

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

- 第12.1.1項「ページ・スタイルの概要」

- 第12.1.2項「タスク・フロー・スタイルの概要」

12.1.1 ページ・スタイルの概要

ページ・スタイルは、実行時に作成するページに使用するJSPXページです。ページ・スタイルには、新規作成されたページのレイアウトが示され、ページでサポートされるコンテンツ・タイプも示される場合があります。

ユーザーがページ・スタイルを使用してページを作成する場合、レイアウトと初期コンテンツが、ページ・スタイルから新規作成されたページにコピーされます。ページ・テンプレートとは異なり、ページ・スタイルは参照ベースではありません。つまり、ページ・スタイルを変更しても、その変更は、スタイルを使用するページに継承されません。

通常、ページ・スタイルには、指定したページの有用性と外観を強化するコンポーネントが含まれます。これらのコンポーネントには、インプレースHTMLテキスト・エディタ、イメージ、レイアウト・ボックス、ハイパーリンクなどが含まれます。コンテンツ・コントリビュータを使用すると、ページにコンテンツをさらに移入できます。図12-1は、ページ・スタイルに基づいたポータル・ページのサンプルを示しています。ページ・スタイルで定義されるのはコンテンツ領域のレイアウトのみであり、そのページ・テンプレートによりページの他の部分のレイアウトも定義されることに注意してください。

図12-1 ページ・スタイルを使用したページのサンプル

JDeveloperでページ・スタイルを作成できますが、それらのページ・スタイルは、実行時にページを作成する際にのみ使用されます。

ユーザーは、使用可能なページ・スタイルに基づいて実行時にページを作成できます。実行時管理コンソールの「アセット」ページでは、「ページの作成」オプションを使用できます。このオプションは、ページ - 新規作成タスク・フローが含まれるその他のアプリケーション・ページでも使用できます。ユーザーが「ページの作成」オプションをクリックすると、図12-2に示すように、「ページの作成」ダイアログに一連の事前定義済スタイルが表示されます。ユーザーは、スタイルを選択し、それに基づいてページを作成できます。レイアウトが新規ページにすでに配置されているため、ユーザーはページの様々な領域にコンテンツを追加するだけです。

図12-2 「ページの作成」ダイアログ・ボックス

12.1.2 タスク・フロー・スタイルの概要

タスク・フロー・スタイルはページ・スタイルとよく似ていますが、ページではなくタスク・フローを作成するために実行時に使用される点が異なります。タスク・フロー・スタイルは、タスク・フローに追加されるデータ視覚化にバインドできるオブジェクトを組み込むことができるので、データ・プレゼンタで使用するタスク・フローを作成する際に特に便利です。

タスク・フロー・スタイルは、実行時にタスク・フローを作成する際にのみ使用されますが、JDeveloperで作成および公開されます。

タスク・フロー・スタイルは、新規タスク・フローの作成ダイアログ・ボックス(図12-3)に表示されます。ユーザーは、そのスタイルに基づいて、スタイルを選択してタスク・フローを作成できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のタスク・フローの使用に関する項を参照してください。

図12-3 新規タスク・フローの作成ダイアログ

12.2 ページ・スタイルの開発

ページ・スタイルは、新規タスク・フローを実行時に作成するためのテンプレートとして使用できるJSPXページです。

ユーザーが実行時に新規ページを作成する際には、図12-2に示す「ページの作成」ダイアログに、使用可能なページ・スタイルが表示されます。

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

- 第12.2.1項「ページ・スタイルを作成する方法」

- 第12.2.2項「ページ・スタイルの開発に関する必知事項」

- 第12.2.3項「ページ・スタイルを削除する方法」

注意:

WebCenter Portalで使用するページ・スタイルをJDeveloperで開発できます。詳細は、第9.7項「WebCenter Portalリソースの使用」を参照してください。

12.2.1 ページ・スタイルを作成する方法

ページ・スタイルの作成方法としては、既存のページ・スタイルのいずれかをダウンロードして、JDeveloperにインポートすることをお薦めします。その後、このページ・スタイルを新規ページ・スタイルの開始点として使用でき、作成後はページ・スタイルをエクスポートしてアプリケーションに再びアップロードできます。

また、この方法でページ・スタイルを作成すれば、「ページの作成」ダイアログでこのスタイルを使用できるようになります。

ページ・スタイルを作成するには:

1. デプロイ済アプリケーションで、既存のページ・スタイルのいずれかをダウンロードします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のアセットのダウンロードに関する項を参照してください。

2. ダウンロードしたページ・スタイルをJDeveloperにインポートします。詳細は、第9.6.2項「ポータル・リソースをJDeveloperにインポートする方法」を参照してください。

3. アプリケーション・ナビゲータで、インポートしたページ・スタイルを右クリックして、「開く」を選択します。

4. ビジュアル・エディタで、ページ・スタイルのコンテンツのレイアウトに変更を加えます(ページを編集するときと同じ方法で)。
ページ・スタイルのコンテンツを定義する方法については、第17.6.1項「実行時に作成したページ用のテンプレートを作成する方法」、および第12.2.2項「ページ・スタイルの開発に関する必知事項」を参照してください。

例12-1に、サンプル・ページ・スタイル/oracle/webcenter/portalapp/pages/pageStyles/TemplateFlowingTwoColumn.jspxのコードを示します。このコードにより、35パーセントと65パーセントの割合で2つの列を送り提供するように設計される基本ページが作成されます。例12-2に、関連するページ定義ファイル/oracle/webcenter/portalapp/pages/pageStyles/TemplateFlowingTwoColumnPageDef.jspxを示します。

例12-1 カスタムのページ・スタイルのソース・コード

<?xml version='1.0' encoding='utf-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:pe="http://xmlns.oracle.com/adf/pageeditor"
xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:trh="http://myfaces.apache.org/trinidad/html" version="2.1">
<jsp:directive.page deferredSyntaxAllowedAsLiteral="true"/>
<jsp:directive.page contentType="text/html;charset=utf-8"/>
<f:view>
<af:document title="#{pageDocBean.title}" id="docrt">
<af:form usesUpload="true" id="f1">
<af:pageTemplate value="#{bindings.pageTemplateBinding.templateModel}"
id="T">
<f:facet name="content">
<pe:pageCustomizable id="pcl1">
<af:panelGroupLayout id="pgl1" layout="scroll"
styleClass="replace_with_scheme_name"
inlineStyle="replace_with_inline_style">
<trh:tableLayout id="tl1" width="100%">
<trh:rowLayout id="rl1">
<trh:cellFormat id="cf1" width="35%" valign="top">
<cust:panelCustomizable id="hm_pnc1" layout="scroll"/>
</trh:cellFormat>
<trh:cellFormat id="cf2" width="65%" valign="top">
<cust:panelCustomizable id="hm_pnc2" layout="scroll"/>
</trh:cellFormat>
</trh:rowLayout>
</trh:tableLayout>
<trh:tableLayout id="tl2"/>
</af:panelGroupLayout>
<f:facet name="editor">
<pe:pageEditorPanel id="pep1"/>
</f:facet>
</pe:pageCustomizable>
</f:facet>
</af:pageTemplate>
</af:form>
</af:document>
</f:view>
</jsp:root>

例12-2 カスタムのページ・スタイルのページ定義

<pageDefinition version="11.1.1.41.30" id="TemplateFlowingTwoColumnPageDef"
Package="oracle.webcenter.siteresources.scopedMD.s8bba98ff_4cbb_40b8_beee_296c916a23ed.pageStyle.gsr2b052c53_0eba_43fd_81e2_7f12dbb885a5">
<parameters/>
<executables>
<page viewId="#{preferenceBean.defaultPageTemplate}"
id="pageTemplateBinding" Refresh="ifNeeded"/>
<taskFlow id="pageeditorpanel" taskFlowId="#{pageEditorBean.pageEditorPanel}"/>
</executables>
</pageDefinition>

5. 変更内容を保存します。

6. ページ・スタイルをエクスポートします。詳細は、第9.6.3項「ポータル・リソースをJDeveloperからエクスポートする方法」を参照してください。

7. エクスポートしたページ・スタイルをデプロイ済アプリケーションにアップロードします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のアセットのアップロードに関する項を参照してください。

12.2.2 ページ・スタイルの開発に関する必知事項

ポータル・リソースとして公開するページ・スタイルの開発については、いくつかの前提条件があります。

- ページ・スタイルがページ・テンプレートに基づいている場合は、ページ・スタイルのJSPXファイルの設計時に、contentファセットまたはページ・テンプレートで定義されているその他のファセットを追加して、ページ・コンテンツが含まれるようにします。

- ページをカスタマイズ可能にするには、コンテンツ・ファセット内にPage Customizableコンポーネントを追加します。Page Customizableには、子であるPanel Customizableコンポーネントがデフォルトで含まれているため、ユーザーは実行時にコンテンツをページに追加できます。

- ページ・スタイルに使用するページ・テンプレートを動的に選択できるようにするには、ページ・スタイルのJSPXファイルで、そのページ・テンプレートの定義がページ・スタイルのページ定義の中に含まれていることを、次のように指定します。

<af:pageTemplate value="#{bindings.pageTemplateBinding.templateModel}" id="T">

その後、次のようにページ・スタイルのページ定義の中でEL値を指定して、ページ・テンプレートの名前をデフォルト・ページ・テンプレート設定から取得できます。

<page viewId="#{preferenceBean.defaultPageTemplateViewId}"
id="pageTemplateBinding" Refresh="ifNeeded"/>

実行時に、適切な権限を持ったユーザーが、実行時管理コンソールで新しいデフォルト・ページ・テンプレートを選択することにより、別のページ・テンプレートに切り替えることができます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のデフォルト・ページ・テンプレートの選択に関する項を参照してください。

- 次の例に示すように、使用するページ・テンプレートを制御するマネージドBeanを作成できます。

public class siteTemplatesManager {
final private String templateA = "/templateA.jspx";
final private String templateB = "/templateB.jspx";
private String currentSiteTemplateViewId;

public siteTemplatesManager() {
super();
currentSiteTemplateViewId = templateA;
}
public String gettemplateViewId() {
return currentSiteTemplateViewId;
}
public void settemplateAViewId(ActionEvent ae) {
currentSiteTemplateViewId = templateA;
}
public void settemplateBViewId(ActionEvent ae) {
currentSiteTemplateViewId = templateB;
}
}

12.2.3 ページ・スタイルを削除する方法

ページ・スタイルがアプリケーション内で必要ではなくなった場合、それを削除できます。

ページ・スタイルを削除すると、「ページの作成」ダイアログに表示されなくなります。ページ・スタイルを削除しても、そのページ・スタイルを使用してすでに作成済のページには影響がありません。

ページ・スタイルを削除するには、アプリケーション・ナビゲータでページ・スタイルを右クリックして、ポップアップ・メニューから「削除」を選択します。詳細は、第9.4項「ポータル・リソースの削除」を参照してください。

12.3 タスク・フロー・スタイルの開発

タスク・フロー・スタイルは、新規タスク・フローを実行時に作成するためのテンプレートとして使用できるADFタスク・フローです。

タスク・フロー・スタイルの作成を選択する目的として、次の場合があります。

- タスク・フローに特定の整合性のあるレイアウトを提供します。

- UIピッカーをシードします。このUIピッカーは、タスク・フロー・スタイル(ポータル・ピッカー・ドロップダウンを使用するタスク・フロー・スタイルなど)から作成されるタスク・フローで使用できます。このスタイルに基づくタスク・フローが「アクティビティ・ストリーム」タスク・フローに移入される場合、ピッカー・ドロップダウンを、「アクティビティ・ストリーム」タスク・フローの入力パラメータに関連付けることができます。「アクティビティ・ストリーム」タスク・フローは、選択したポータルに固有のアクティビティを表示します。

- データに個別にバインドできる事前定義済UIを提供します。たとえば、タスク・フロー・スタイルでフロー・データ・レイアウトを作成し、そこからタスク・フローを作成し、データ・コントロールをドロップしてから、フロー・データ・レイアウトをデータ・コントロールにバインドできます。

ユーザーが実行時に新規タスク・フローを作成する際には、図12-3に示す新規タスク・フローの作成ダイアログに、使用可能なタスク・フロー・スタイルが表示されます。

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

- 第12.3.1項「タスク・フロー・スタイルを作成する方法」

- 第12.3.2項「タスク・フロー・スタイルの開発に関する必知事項」

- 第12.3.3項「タスク・フロー・スタイルを削除する方法」

注意:

WebCenter Portalで使用するタスク・フロー・スタイルをJDeveloperで開発できます。詳細は、第9.7項「WebCenter Portalリソースの使用」を参照してください。

12.3.1 タスク・フロー・スタイルを作成する方法

タスク・フロー・スタイルの作成は、タスク・フローの作成と同じですが、タスク・フロー・スタイルは、実行時にタスク・フローを作成するためのテンプレートとして使用することのみを目的として作成します。

タスク・フロー・スタイルの作成方法としては、既存のタスク・フロー・スタイルのいずれかをダウンロードして、JDeveloperにインポートすることをお薦めします。その後、このタスク・フロー・スタイルを新規タスク・フロー・スタイルの開始点として使用でき、作成後はタスク・フロー・スタイルをエクスポートしてアプリケーションに再びアップロードできます。

また、この方法でタスク・フロー・スタイルを作成すれば、新規タスク・フローの作成ダイアログでこのスタイルを使用できるようになります。

タスク・フロー・スタイルを作成するには:

1. デプロイ済アプリケーションで、既存のタスク・フロー・スタイルのいずれかをダウンロードします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のアセットのダウンロードに関する項を参照してください。

2. ダウンロードしたタスク・フロー・スタイルをJDeveloperにインポートします。詳細は、第9.6.2項「ポータル・リソースをJDeveloperにインポートする方法」を参照してください。

3. アプリケーション・ナビゲータで、インポートしたタスク・フロー・スタイルを右クリックして、「開く」を選択します。

4. タスク・フロー・スタイルのコードに変更を加えます。

5. 変更内容を保存します。

6. タスク・フロー・スタイルをエクスポートします。詳細は、第9.6.3項「ポータル・リソースをJDeveloperからエクスポートする方法」を参照してください。

7. エクスポートしたタスク・フロー・スタイルをデプロイ済アプリケーションにアップロードします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のアセットのアップロードに関する項を参照してください。

12.3.2 タスク・フロー・スタイルの開発に関する必知事項

実行時にタスク・フローを作成する際に使用するタスク・フロー・スタイルを公開するには、次の要件を考慮する必要があります。

- タスク・フロー・スタイルとして使用される、タスク・フローのビュー・フラグメントを1つだけ作成します。ビュー・フラグメントのJSFFファイルは、タスク・フロー定義のXMLファイルと同じ場所に作成する必要があります。

- コンポーザ・タグ・ライブラリからビュー・フラグメントにPanel Customizableコンポーネントを追加します。これによって、実行時にこのタスク・フロー・スタイルに基づくタスク・フローに値を移入できるようになります。

- JSFFファイルを右クリックして「ページ定義に移動」を選択し、ビュー・フラグメントのページ定義を作成します。ビュー・フラグメントのページ定義も、タスク・フロー定義XMLファイルと同じディレクトリに置く必要があります。

- タスク・フロー・スタイルが、EL値などを使用してコードを参照する場合、そのコードはデプロイ済アプリケーションに含まれる必要があります。

12.3.3 タスク・フロー・スタイルを削除する方法

タスク・フロー・スタイルがアプリケーション内で必要ではなくなった場合、それを削除できます。

タスク・フロー・スタイルを削除すると、実行時に新規タスク・フローの作成ダイアログに表示されなくなります。タスク・フロー・スタイルを削除しても、そのタスク・フロー・スタイルを使用してすでに作成済のタスク・フローには影響がありません。

タスク・フロー・スタイルを削除するには、アプリケーション・ナビゲータでタスク・フロー・スタイルを右クリックして、ポップアップ・メニューから「削除」を選択します。詳細は、第9.4項「ポータル・リソースの削除」を参照してください。

13 スキンの開発

この章では、Oracle JDeveloperを使用してWebCenter Portal Frameworkアプリケーション用のスキンを作成および管理する方法を説明します。

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

- 第13.1項「スキンの概要」

- 第13.2項「スキンの作成」

- 第13.3項「スキンの編集」

- 第13.4項「アプリケーションへのスキンの適用」

- 第13.5項「ユーザー用スキンの条件付変更」

- 第13.6項「個別共有ライブラリとしてのスキンのデプロイ」

- 第13.7項「スキンでの問題のトラブルシューティング」

13.1 スキンの概要

スキンを使用すると、色、フォント、イメージ、およびアプリケーション・コンポーネントの高さや幅などのディメンションの詳細を定義して、自社に適したルック・アンド・フィールを表すことができます。

スキンは、Cascading Style Sheet (CSS)仕様に基づいています。スキンは、アプリケーション・コンポーネントのスタイルを定義する種々のスキン・セレクタを含むCSSファイルです。スタイル関連のプロパティを変更することにより、任意のコンポーネントのルック・アンド・フィールを調整できます。アプリケーション内でスキンを使用すると、各コンポーネントに対して個別にスタイルを指定したり、各ページにスタイルシートを挿入する必要がなくなります。各コンポーネントで自動的に、スキンで定義されているスタイルが使用されます。スキンにより、ポータル・ページ自体を変更せずにアプリケーションの外観を変更できます。

ADF Facesスキンは、Portal Frameworkアプリケーションのルック・アンド・フィールを制御します。ADF Facesスキンの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のADF Facesスキンに関する項を参照してください。

シード済スキン

Portal Frameworkアプリケーションを作成する際に、シード済スキンportal-skin.cssがアプリケーションに追加されます。

特定の要件を満たすようにこのシード済スキンを編集することも、独自のスキンを作成することもできます。独自のスキンの作成を選択した場合でも、シード済スキンは、独自のスキンで実現できる様々なものを見つける際に役立つツールです。

実行時管理

Portal Frameworkアプリケーションは、デプロイ後もポータルの開発をユーザーが続行できるように、スキンの実行時管理をサポートしています。実行時管理により、権限のあるユーザーがブラウザ・ベースの環境でアプリケーションのスキンを管理したり、新規に作成でき、JDeveloperのインストールや知識は必要ありません。詳細は、第9.5項「実行時のポータル・リソースの使用」を参照してください。

ラウンドトリップ開発

ポータルの再デプロイ時に変更内容が失われないように、実行時に作成または変更されたスキンをJDeveloperに取り込むことができます。必要な場合は、これらのスキンを編集してさらに改良でき、デプロイ済ポータルに再びアップロードできます。詳細は、第9.6項「ラウンドトリップ開発での作業」を参照してください。

13.2 スキンの作成

デフォルトで、Portal Frameworkアプリケーションは、portal-skin.cssファイルで定義されるportalスキンを使用します。このファイルは必要に応じて簡単に編集できます。ただし、アプリケーションでカスタム・スキンを使用する場合は、CSSファイルを作成して、必要なスキン・セレクタを定義する必要があります。

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

- 第13.2.1項「CSSファイルを作成する方法」

- 第13.2.2項「スキン・スタイル・セレクタを定義する方法」

- 第13.2.3項「スキン関連のアーティファクトに関する必知事項」

13.2.1 CSSファイルを作成する方法

ADF Facesスキンの作成については、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のアプリケーションにカスタム・スキンを追加する方法に関する項を参照してください。

注意:

デフォルトでは、CSSファイルを作成すると、JDeveloperではそのファイルはApplication_Root/Portal/public_html/cssフォルダの下に格納されます。

ただし、このデフォルトの場所に作成されたスキンは、実行時管理コンソールの「アセット」ページには含まれていないため、実行時に管理することはできません。

権限のあるユーザーが実行時にスキンを管理できるようにするには、次のディレクトリにスキンを作成する必要があります。

Application_Root/Portal/public_html/oracle/webcenter/portalapp

デフォルトでは、Portal Frameworkアプリケーションには別個のskinsディレクトリが含まれています。

詳細は、第9.5.1.2項「ポータル・リソースを「アセット」ページに組み込む方法」を参照してください。

13.2.2 スキン・スタイル・セレクタを定義する方法

CSSファイルの作成後、アプリケーション内のコンポーネントに必要なADF Facesスキン・セレクタを定義する必要があります。たとえば、.AFDefaultFontFamily:aliasセレクタを使用して、次のようにアプリケーションにフォント・ファミリを指定できます。

.AFDefaultFontFamily:alias {
font-family: Tahoma, Verdana, Helvetica, sans-serif;
}

詳細の参照先は、次のとおりです。

- ADF Facesスキン・セレクタの概要は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のスキン・スタイル・セレクタに関する項を参照してください。スキンで使用できるセレクタについては、Oracle JDeveloperのオンライン・ヘルプも参照してください。これらの情報は、JDeveloperのオンライン・ヘルプのFusionのADF Facesコンポーネントのスキン・セレクタ、およびFusionのデータ視覚化ツール・コンポーネントのスキン・セレクタを参照してください。

- ADF Facesコンポーネントのスタイル・セレクタの定義は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のスキン・スタイル・プロパティの定義に関する項、およびコンポーネントのスタイル・プロパティの変更に関する項を参照してください。

13.2.3 スキン関連のアーティファクトに関する必知事項

Oracleは、イメージやアイコンなどのアセット関連のアーティファクトをコンテンツ・サーバーに保管し、アセット・アーティファクト専用のフォルダ構造をコンテンツ・サーバー上で作成することをお薦めします。これにより、必要な場合にコンテンツを容易に特定し、移動できます。

13.3 スキンの編集

CSSファイルを編集してスタイル・セレクタを編集または追加することにより、スキンを最初に作成した後でスキンに変更を加えることができます。portal-skin.cssファイルを編集することにより、シード済portalスキンを編集することもできます。

スキンを編集するには:

1. アプリケーション・ナビゲータで、編集するスキンを右クリックし(たとえば、portal-skin.css)、「開く」を選択します。

2. スキンのソース・コード内で、アプリケーションのコンポーネントに必要なADF Facesスキン・セレクタを定義します。たとえば、アプリケーション・コンテンツのフォント・サイズを16pxに設定するには、.AFDefaultFont:aliasスキン・セレクタを次のように使用できます。
詳細は、第13.2.2項「スキン・スタイル・セレクタを定義する方法」を参照してください。

3. CSSファイルを保存します。

13.4 アプリケーションへのスキンの適用

すべてのPortal Frameworkアプリケーションが、デフォルトのスキンを定義します。これは、アプリケーション内のページすべての外観を決定します。

Portal Frameworkアプリケーションを最初に作成するときに、シード済スキン(portal)がアプリケーションのデフォルト・スキンとして設定されます。ユーザー独自のスキンを後で作成した場合は、そのスキンをかわりにデフォルトとして設定できます。

Portal Frameworkアプリケーションにデフォルトのスキンを設定するには、adf-config.xmlファイルのoracle.webcenter.portalapp.skinプリファレンスを編集します。

注意:

実行時管理が有効になっている場合、権限のあるユーザーは実行時にスキンを変更できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のポータルのスキンの変更に関する項を参照してください。

アプリケーションにスキンを適用するには:

1. アプリケーション・ナビゲータの「アプリケーション・リソース」ペインで、adf-config.xmlファイルを右クリックして、「開く」を選択します。

ヒント:

adf-config.xmlファイルを探すには、「ディスクリプタ」ノードを開き、さらに「ADF META-INF」ノードを開きます。

2. 「ソース」タブをクリックします。

3. 次のIDを持つADFプリファレンスを見つけます。

oracle.webcenter.portalapp.skin

4. value属性を、アプリケーションに適用するスキンのファミリ名に設定します。たとえば、次のとおりです。

value="portal"

値は、スキンの「ポータル・リソースの作成」または「ポータル・リソースの更新」ダイアログのSkin Family属性で指定された値と同じである必要があります。

5. 必要に応じて、descプロパティで、適用するスキンの説明を指定します。実行時に、この値がスキンの表示名として表示されます。

6. displayプロパティは、スキンのリストを実行時にスキン・ピッカーに表示するかどうかを指定します。例13-1に全プリファレンス要素の例を示します。

例13-1 デフォルトのスキンのADFプリファレンス

<portal:preference id="oracle.webcenter.portalapp.skin"
desc="Default Portal Skin" value="portal"
resourceType="Skin" display="true"/>

7. adf-config.xmlファイルを保存します。

注意:

Application_Root/Portal/public_html/oracle/webcenter/portalapp/skins以外の場所で作成したスキンを適用する場合には、そのスキンをtrinidad-skins.xmlファイルに登録して、そのスキンを使用するようにアプリケーションを構成する必要があります。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のカスタム・スキンの登録方法に関する項を参照してください。

13.5 ユーザー用スキンの条件付変更

実際のアプリケーション・ロジックに影響を与えずに、ユーザー、ページ、アプリケーションなどに対して、それぞれ異なるスキンを割り当てることができます。スキンを条件付で設定するには、trinidad-config.xmlファイルで<skin-family>エントリを使用します。

動的に評価できるEL式を使用して、表示するスキンを決定できます。たとえば、ユーザーのブラウザがドイツ語ロケールに設定されているときドイツ語スキンを使用し、それ以外では英語スキンを使用する場合には、trinidad-config.xmlファイルで次の<skin-family>エントリを使用します。

<skin-family>#{facesContext.viewRoot.locale.language=='de' ? 'german' : 'english'}</skin-family>

詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のスキンを動的に変更するためのコンポーネントの構成方法に関する項を参照してください。

注意:

<skin-family>のデフォルト値は#{preferenceBean.defaultTrinidadSkin}です。デフォルト値を変更すると、アプリケーション・ユーザーは実行時にリソース・マネージャでスキンを設定できません。

また、SkinSetting APIを使用して、ユーザー向けスキンを条件付で設定することもできます。使用できるコールについては、APIを参照してください。このAPIは、次のサイトから入手できます。

http://download.oracle.com/docs/cd/E15523_01/apirefs.1111/e15995/oracle/webcenter/generalsettings/model/SkinSetting.html

13.6 個別共有ライブラリとしてのスキンのデプロイ

Oracle WebCenter Portalは様々なデフォルト・スキンを提供しています。すべてのOracle WebCenter Portalスキン・アーティファクトは、共有ライブラリ(oracle.webcenter.skin)で使用できます。共有ライブラリはEARとしてパッケージ化されており、次のタイプのファイルがある複数のスキンJARが含まれています。

- .cssファイル: スキン・セレクタ・ファイル

- .png: イメージ・ファイル

- .js: javascriptファイル

- trinidad-skins.xml: スキン定義ファイル

デフォルトでは、oracle.webcenter.skin共有ライブラリは、すべてのPortal Frameworkアプリケーションとポートレット・プロデューサ・アプリケーションによって参照されます。したがって、すべてのスキンはクラスパスを介して使用できます。Portal Frameworkアプリケーションでポートレットを使用すると、ポートレットはアプリケーションに対して定義されたスキンを使用してレンダリングされます。そのため、スキン共有を実現するには、同一のスキンが共有ライブラリを介して、Portal Frameworkアプリケーションとポートレット・プロデューサ・アプリケーションの両方でアクセス可能である必要があります。

ただし、Portal Frameworkアプリケーションでportal-skin.cssを変更した場合が考えられます。したがって、共有ライブラリで使用可能なスキンは、Portal Frameworkアプリケーションで使用可能な更新バージョンと同じではありません。Portal Frameworkアプリケーションのスキンのバージョンが共有ライブラリのスキンと同一ではない場合、Portal FrameworkアプリケーションとPortlet Producerアプリケーション間のスキンの共有が失敗します。これは、Portal Frameworkアプリケーションが変更済スキンを使用する場合に、ポートレット・プロデューサが共有ライブラリでパッケージ化された元のバージョンのスキンにしかアクセスできないためです。Portal Frameworkアプリケーションは、最新のスキンの変更をレンダリングに反映します。一方、同じアプリケーション内のポートレットでは、共有ライブラリから元のスキンを使用してレンダリングします。この動作はスキンのコーディネーションと呼ばれます。

デフォルトのスキンを使用せずに、Portal Frameworkアプリケーション内でポータル・リソースとして新規カスタム・スキンを作成したり、一意のスキン・ファミリIDでスキンをtrinidad-skins.xmlに定義する場合があります。アプリケーションでポートレットが使用される場合、ポートレット・プロデューサは共有ライブラリでカスタム・スキンを検出できません。これによりスキンの不一致エラーが発生し、ポートレットはPortal Frameworkアプリケーションで使用されるカスタム・スキンではなく、必要最小限の単純なスキンでレンダリングされます。

そのため、Portal Frameworkアプリケーションでスキンを変更したりカスタム・スキンを作成するたびに、その新規スキンや変更済スキンを共有ライブラリとしてデプロイする必要があります。

共有ライブラリとしてスキンをデプロイするには:

1. trinidad-skins.xmlのコピーがPortal FrameworkアプリケーションのWEB-INFフォルダで確実に使用できるようにします。そうでない場合には、新規の作成となります。

2. trinidad-skins.xmlを更新して、新規に作成するスキンのCSSファイルを指定します。

3. 新規MANIFEST.MFファイルをプロジェクトで作成し、新規共有ライブラリの詳細を指定します。
次に、MANIFEST.MFファイルのサンプル・コードを示します。

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 1.6.0 (Sun Microsystems, Inc.)
Extension-Name: oracle.webcenter.customskin
Implementation-Title: oracle.webcenter.customskin
Implementation-Version: 11.1.1
Implementation-Vendor: Oracle
Specification-Title: Custom WebCenter shared library
Specification-Version: 11.1.1

4. 新規デプロイメント・プロファイルを作成するには:

1. 「ポータル」プロジェクトを右クリックし、「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」→「デプロイメント・プロファイル」→「共有ライブラリJARファイル」を選択して、「OK」をクリックします。

3. 「デプロイメント・プロファイルの作成」ダイアログで、「デプロイメント・プロファイル名」フィールドにプロファイル名を入力して「OK」をクリックします。

4. 「JARデプロイメント・プロファイルのプロパティの編集」ダイアログで、manifestファイルを含めるチェック・ボックスが選択されていることを確認します。

5. 「追加のmanifestファイルをMANIFEST.MFにマージ」セクションで、「追加」ボタンを使用して、trinidad-skins.xmlと必要なスキンCSSファイルを共有ライブラリに追加します。

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

7. 「プロジェクト・プロパティ」ダイアログで、「OK」をクリックします。

5. 「ポータル」プロジェクトを右クリックし、「デプロイ」を選択し、JAR共有ライブラリのデプロイメント・プロファイル名を選択します。

6. 「デプロイ」ダイアログで、「Weblogicアプリケーション・サーバーにデプロイ」を選択して「次へ」をクリックします。

7. ポートレット・プロデューサをホストするWebLogic Serverを選択し、「次へ」をクリックします。

8. 「共有ライブラリとしてデプロイ」が選択されていることを確認し、「終了」をクリックします。

9. Portal Frameworkアプリケーションとポートレット・プロデューサ・アプリケーションの両方で、カスタム・スキン共有ライブラリを参照するように/META-INF/weblogic-application.xmlを更新します。

<library-ref>
<library-name>Custom_Library_Name</library-name>
<specification-version>Library_Version</specification-versi     on>
</library-ref>

10. Portal Frameworkアプリケーションとポートレット・プロデューサ・アプリケーションの両方を再デプロイします。
これでカスタム・スキンをこのアプリケーション間で共有できます。

注意:

カスタム・スキン共有ライブラリはデプロイする必要があり、実際のスキン共有が実現されるには、WebLogic Serverコンソールで「アクティブ」と表示されている必要があります。共有ライブラリJARになんらかの問題がある場合(不適切なマニフェスト、不正なバージョンなど)、デプロイ済共有ライブラリはWebLogic Serverコンソールで「アクティブ」とは表示されません。

注意:

複数のスキン・ファイルがある場合、すべてのスキン・アーティファクトを1つの共有ライブラリJARに格納して、2つのtrinidad-skins.xmlファイルを1つのファイルに統合できます。この共有ライブラリはすべてのカスタム・スキン開発で引き続き使用できます。

13.7 スキンでの問題のトラブルシューティング

この項では、スキンの使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

問題

アプリケーションで、設計時に加えたスキンの変更内容が反映されません。

解決方法

開発時にスキンを変更した後、サーバーを再起動せずにCSSの変更内容を確認できます。CHECK_FILE_MODIFICATIONコンテキスト・パラメータは、スキンのタイムスタンプをチェックして、スキンが変更されていればリロードするようサーバーに要求します。この設定は、反復開発がアプリケーションで有効になっていると、自動的にtrueに設定されます。反復開発が無効になっている場合には、次の例で示すように、WEB-INF/web.xmlでCHECK_FILE_MODIFICATIONがtrueに設定されていることを確認します。

<context-param>
<param-name>org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION</param-name>
<param-value>true</param-value>
</context-param>

問題

スキンのCSSファイルをブラウザで開くと、スキン・セレクタがエンコードされ圧縮された状態で表示されます。

解決方法

デフォルトでは、CSSファイルのクラス名は、ファイルの全サイズを削減するために圧縮されています。したがって、たとえばFirefoxのFirebug拡張子のスキン・セレクタは、元の名前との関連がほとんどないエンコードされた値になっています。たとえば、CSSファイルには次のようなエントリが含まれていることがあります。

.x123 {color: #534741}

圧縮が無効となっているときにCSSファイルを調べる方が簡単です。圧縮を無効化するには、次のコードで示すように、WEB-INF/web.xmlでDISABLE_CONTENT_COMPRESSIONコンテキスト・パラメータの値をtrueに設定します。

<context-param>
<param-name>org.apache.myfaces.trinidad.DISABLE_CONTENT_COMPRESSION</param-name>
<param-value>true</param-value>
</context-param>

圧縮が無効になると、エントリは次のようになります。

.af_panelFormLayout_label-cell
{
color: #534741
}

パフォーマンスの向上には、本番環境でCSSの圧縮を有効にすることをお薦めします。CSS圧縮を無効にすると、次の問題のシナリオで説明するように、スキンの不一致につながる場合があります。

問題

ポートレットが含まれるページを実行すると、ポートレットがスタイルや形式なしでレンダリングされます。

解決方法

アプリケーションでADFアプリケーションに基づいたポートレットを使用すると、ポートレット・プロデューサはアプリケーションのスキンを一致させようとします。スキンが一致すると、プロデューサはアプリケーションのスキンを使用します。

スキン圧縮はスキンを一致させるときには考慮されません。スキン圧縮設定が異なるがスキンが一致する場合、プロデューサは".x123"のようなIDを返し、アプリケーションでこれらの値が見つけられることを期待しますが、アプリケーションは".af_panelFormLayout_label-cell"のような値を返す場合があります。したがって、スタイルが見つからず、ポートレットのレンダリングに失敗します。

アプリケーションとポートレット・プロデューサは、同じスキンは圧縮の設定を使用する必要があります。アプリケーションで圧縮されていないスキンを使用したら、ポートレット・プロデューサでも圧縮されていないスキンを使用する必要があります。

問題

MDSフォルダ構造(oracle/webcenter/portalapp)内のスタイルシート・ファイル(CSS)が、trinidad-skins.xmlで指定されているように有効になりません。

解決方法

MDSフォルダ構造内のスタイルシート・ファイル(CSS)では、次の例で示すように、trinidad-skins.xml内のパスに接頭辞"mds:"を付けてください。

<skin>
<id>myskin2.desktop</id>
<family>myskin2</family>
<render-kit-id>org.apache.myfaces.trinidad.desktop</render-kit-id>
<style-sheet-name>mds:/oracle/webcenter/portalapp/css/skin.css</style-sheet-name>
<extends>fusion.desktop</extends>
</skin>

問題

WebLogicのログ出力に、次のメッセージが含まれています。

<SkinFactoryImpl> <getSkin> Cannot find a skin that matches family portal and version 1.1. We will use the skin portal.desktop

解決方法

アプリケーションのtrinidad-config.xmlファイルを編集し、<skin-version>要素を削除します。

<?xml version="1.0" encoding="UTF-8"?>
<trinidad-config xmlns="http://myfaces.apache.org/trinidad/config">
<skin-family>#{preferenceBean.defaultTrinidadSkin}</skin-family>
<skin-version)v1.1</skin-version>
</trinidad-config>

14 リソース・カタログの開発

この章では、Oracle JDeveloperを使用してWebCenter Portal Frameworkアプリケーション用のリソース・カタログを作成および管理する方法を説明します。

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

- 第14.1項「リソース・カタログの概要」

- 第14.2項「リソース・カタログの作成」

- 第14.3項「リソース・カタログの編集」

- 第14.4章「デフォルト・リソース・カタログの選択」

- 第14.5項「リソース・カタログのアイテムのフィルタリング」

- 第14.6項「リソース・カタログの削除」

- 第14.7項「タスク・フロー・パラメータおよびタスク・フローを囲んでいるShow Detail Framesの属性の定義」

- 第14.8項「リソース・カタログに関する問題のトラブルシューティング」

14.1 リソース・カタログの概要

リソース・カタログを使用すると、統合された検索および参照のユーザー・インタフェースに、本来であれば関連しない1つ以上のリポジトリのコンテンツの結合ビューが提供されます。リソース・カタログは、ページ、ページ・テンプレートまたはタスク・フローに組み込むことができるすべてのリソースを定義し、編成するためのメカニズムを提供します。リソースはソース・リポジトリを起点とし、図14-1に示すようにリソース・カタログを介して公開されます。

図14-1 リソース・カタログの概要

JDeveloperを使用すると、2タイプのリソース・カタログ(設計時リソース・カタログと実行時リソース・カタログ)が表示されます。

設計時リソース・カタログはリソース・パレットで使用でき、開発者向けのお気に入りリストのようなものです。WebCenter Portal - サービス・カタログは、WebCenter Portal拡張機能バンドルをインストールするとそのまま使用可能な設計時のカタログです。このカタログに含まれるタスク・フローとデータ・コントロールをPortal Frameworkアプリケーションに追加できます。WebCenter Portal - サービス・カタログの他に、接続を定義してカタログを作成し、それらの接続で公開されるリソースを編成できます。そのようなリソースは、開発中のどのアプリケーションでも再利用できます。

関連項目:

- 第2.2.2項「JDeveloper用のWebCenter Portal拡張機能のインストール」

- リソース・パレットおよびカタログの詳細は、Oracle JDeveloperオンライン・ヘルプを参照してください。
この情報をJDeveloperで検索するには、「ヘルプ」メニューから「目次」を選択します。「ヘルプ・センター」で、「JDeveloperの基本」を開き、「リソース・パレットでの作業」を選択します。

WebCenter Portalおよびデプロイ済Portal Frameworkアプリケーションでは、実行時リソース・カタログによって、コンポーザを使用してページ、タスク・フローおよびページ・テンプレートにデータを取り込む際に使用できるリソースが決まります。

関連項目:

- 第18.1項「コンポーザ・コンポーネントを使用した編集可能ページの設計」

- 第11章「ページ・テンプレートの開発」

シード済リソース・カタログの構成

Page Customizableコンポーネントをアプリケーションのページに追加すると、カタログ定義ファイル(default-catalog.xml)を持つシード済リソース・カタログがアプリケーションで構成されます。作成したアプリケーションのタイプに応じて、カタログ定義ファイルは次のいずれかのフォルダで作成されます。

- Portal Frameworkアプリケーションでは、default-catalog.xmlファイルはApplication_Root/Portal/public_html/oracle/webcenter/portalapp/catalogsディレクトリにあります。この場合のリソース・カタログには、図14-2のようなフォルダが含まれています。

図14-2 デフォルトのリソース・カタログ

- Portal Framework以外のアプリケーションでは、default-catalog.xmlファイルはAPPLICATION_ROOT/Portal/src/portalディレクトリにあります。この場合、リソース・カタログにはADF Faces Componentsフォルダがあり、そこにはユーザーがページを追加できるADF Facesコンポーネントが含まれています。

アプリケーションにポートレット・プロデューサを登録している場合には、リソース・カタログの「ポートレット」フォルダにそのプロデューサのポートレットが表示されます。プロデューサを登録していない場合、「ポートレット」フォルダは非表示になります。

独自のリソース・カタログを作成することも、シード済カタログを変更してビジネス関連のコンポーネントを組み込むこともできます。

実行時管理

Portal Frameworkアプリケーションは、デプロイ後もポータルの開発をユーザーが続行できるように、リソース・カタログの実行時管理をサポートしています。実行時管理により、権限のあるユーザーがリソース・カタログをブラウザ・ベースの環境で作成および管理でき、JDeveloperのインストールや知識は必要ありません。詳細は、第9.5項「実行時のポータル・リソースの使用」を参照してください。

ラウンドトリップ開発

ポータルの再デプロイ時に変更内容が失われないように、実行時に作成または変更されたリソース・カタログをJDeveloperに取り込むことができます。必要な場合は、これらのリソース・カタログを編集してさらに改良でき、デプロイ済ポータルに再びアップロードできます。詳細は、第9.6項「ラウンドトリップ開発での作業」を参照してください。

14.2 リソース・カタログの作成

アプリケーション用に作成されたシード済リソース・カタログが要件を満たさない場合、または複数のリソース・カタログを構成する必要がある場合は、必要なすべてのリソースを含む独自のリソース・カタログを作成できます。

注意:

適切にリソース・カタログを実装するには、定義の元となるXMLスキーマだけでなく、アプリケーションが定義を検索する場所も知っておく必要があります。詳細は付録B「コンポーザ・コンポーネントのプロパティおよびファイル」を参照してください。

リソース・カタログを作成するには:

1. アプリケーション・ナビゲータで、リソース・カタログを作成するノード(通常は、/oracle/webcenter/portalapp/catalogs)を右クリックし、「新規」を選択します。

2. 「新規ギャラリ」で、「Web層」を開き、「ポータル・フレームワーク」→「リソース・カタログ」の順に選択して、「OK」をクリックします。

3. 「アプリケーション・リソース・カタログの作成」ダイアログの「ファイル名」フィールドに、リソース・カタログを表すXMLファイルの名前を入力します(たとえば、users-catalog.xml)。

図14-3 「アプリケーション・リソース・カタログの作成」ダイアログ

4. 「ディレクトリ」フィールドに、リソース・カタログ定義のXMLファイルを作成する場所の絶対ディレクトリ・パスを入力します。

注意:

Portal Frameworkアプリケーションにおいて、実行時管理コンソールの「アセット」ページで新規リソース・カタログを公開するには、リソース・カタログをApplication_Root/Portal/public_html/oracle/webcenter/portalappディレクトリに作成する必要があります。デフォルトでは、Portal Frameworkアプリケーションには別個のcatalogsディレクトリが含まれています。

Portal Framework以外のアプリケーションでは、Application_Root/Portal/src/portalディレクトリにリソース・カタログを作成します。

ヒント:

このオプションをこの時点で選択しなくても、リソース・カタログを後から実行時管理コンソールに追加できます。その場合は、リソース・カタログを右クリックして「ポータル・リソースの作成」を選択します。

5. 「ポータル・リソースとして作成」を選択して、適切な権限を持つユーザーが実行時管理コンソールの「アセット」ページでリソース・カタログを実行時に管理できるようにします。

注意:

Portal Frameworkアプリケーションでこのオプションを使用するには、入力したディレクトリがApplication_Root/Portal/public_html/oracle/webcenter/portalappディレクトリか、そのサブディレクトリのいずれかであることが必要です。

6. 「OK」をクリックします。
Portal Frameworkアプリケーションでリソース・カタログを作成すると、リソース・カタログのカタログ定義ファイル(XMLファイル)が指定のディレクトリに作成されます。「デザイン」ビューでカタログ定義ファイルが開きます。

図14-4 デザイン・ビュー内のリソース・カタログ

カタログ定義ファイルは最初は空なので、編集してリソース・カタログの構造とコンテンツを設計する必要があります。詳細は、第14.3項「リソース・カタログの編集」を参照してください。

ヒント:

追加するリソースを最初から作成しない場合には、開始点としてdefault-catalog.xmlファイルのソース・コードを新規カタログ定義のソース・ビューにコピーすることも可能です。

適切なディレクトリの下にリソース・カタログを作成し、「ポータル・リソースとして作成」オプションを選択した場合は、リソース・カタログの実行時管理が自動的に可能になります。詳細は、第9.5項「実行時のポータル・リソースの使用」を参照してください。

14.3 リソース・カタログの編集

リソース・カタログのコンテンツを定義するために、シード済リソース・カタログdefault-catalog.xmlを編集して、アプリケーション内のページとタスク・フローにユーザーが追加できるようにするリソースを追加できます。シード済リソース・カタログは、WebCenter Portal Frameworkアプリケーション・テンプレートを使用してアプリケーションを作成する際に自動的に作成されます。

リソース・カタログを独自に作成して、編集することもできます。詳細は、第14.2項「リソース・カタログの作成」を参照してください。

リソース・カタログにリソースを追加するには、次の2通りの方法を使用できます。

- リソースを、JDeveloperの別の領域から「デザイン」ビューのリソース・カタログにドラッグ・アンド・ドロップします。

- リソース・カタログの「デザイン」ビューで、「新しいノードを追加します」メニューのオプションを使用します(図14-5)。

図14-5 リソース・カタログの「新しいノードを追加します」メニュー

リソース・カタログの「デザイン」ビューでは、既存のリソースの再配置、変更および削除を行うこともできます。

XMLエディタの左側には「カタログ」セクションがあり、カタログのコンポーネントの階層構造が表示されます。そのページの右側には、選択済リソースの属性とパラメータを定義するフィールドが表示されます。

ヒント:

リソース・カタログを最初から作成する場合には、デフォルトのカタログ定義ファイルを参照して、カタログ内にリソースを含める方法についてヒントを得ることができます。

注意:

コンポーザのスタンドアロン・バージョン(WebCenter Portal Frameworkを使用しないコンポーザ)を使用する場合、リソースをカタログに追加するには、<resource>要素を直接カタログ定義ファイルのソースに追加します。詳細は、第C.3.12項「resource」を参照してください。

関連項目:

カタログ定義ファイルとその属性は次の項を参照してください。

- 第C.2項「XMLスキーマ」

- 第C.3項「カタログ定義の属性」

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

- 第14.3.1項「リソースへの接続の定義方法」

- 第14.3.2項「リソース・カタログにリソースをドラッグ・アンド・ドロップする方法」

- 第14.3.3項「リソース・カタログにリンクを追加する方法」

- 第14.3.4項「リソース・カタログにフォルダを追加する方法」

- 第14.3.5項「リソース・カタログにカスタム・コンポーネントを追加する方法」

- 第14.3.6項「リソース・カタログにカスタム・フォルダを追加する方法」

- 第14.3.7項「リソース・カタログにカスタム・コンテンツ・プロバイダを追加する方法」

- 第14.3.8項「リソース・カタログを別のリソース・カタログに追加する方法」

- 第14.3.9項「リソース・カタログまたはリソースの表示オプションを設定する方法」

- 第14.3.10項「カタログ内のリソースを再配置する方法」

- 第14.3.11項「リソース・カタログまたはリソースを表示または非表示にする方法」

- 第14.3.12項「リソース・カタログ内のリソースを編集する方法」

- 第14.3.13項「リソース・カタログからリソースを削除する方法」

- 第14.3.14項「リソース・カタログで設計時に作成されたデータ・コントロールを公開する方法」

- 第14.3.15項「リソース・カタログで実行時に作成されたデータ・コントロールを公開する方法」

- 第14.3.16項「リソース・カタログのポートレット可視性の制御方法」

14.3.1 リソースへの接続の定義方法

WebCenter Portalのツールとサービス、ポートレットなど多くのリソースへは、アプリケーションのconnections.xmlファイルで定義された接続を経由してアクセスします。そのため、リソース・カタログへそのようなリソースを追加するには、事前に接続を作成する必要があります。

様々な方法でリソースへの接続を作成できます。この項では、「リソース・パレット」から接続を作成する方法を説明します。接続を作成するその他の方法の詳細は、第4.2項「ツールとサービスを利用するためのFrameworkアプリケーションの準備」を参照してください。

「リソース・パレット」から接続を作成するには:

1. 「リソース・パレット」で、左上隅の「新規」アイコンをクリックします。

2. 「接続の作成」および作成する接続のタイプを選択します。
接続タイプのウィザードが表示されます。

3. 接続に関する必要な情報を入力してウィザードを続行します。
「終了」をクリックすると、「リソース・パレット」の「接続」の下に接続が表示されます。

4. 「リソース・パレット」で接続を右クリックし、ポップアップ・メニューから「アプリケーションに追加」を選択します。
または、アプリケーション・ナビゲータの「アプリケーション・リソース」パネルに、「リソース・パレット」から接続をドラッグ・アンド・ドロップすることもできます。

14.3.2 リソース・カタログにリソースをドラッグ・アンド・ドロップする方法

カタログ定義ファイルの「デザイン」ビューでリソースを目的の場所にドラッグ・アンド・ドロップすることによって、カタログに次のリソースを追加できます。

- ポートレット: 「アプリケーション・リソース」ペインまたは「リソース・パレット」から

- コンテンツ: 「アプリケーション・リソース」ペインまたは「リソース・パレット」内のコンテンツ・サーバー接続から

- タスク・フロー: 「アプリケーション・リソース」ペインまたは「リソース・パレット」から

注意:

ADFタスク・フローをカタログに追加し、カタログをデプロイ済のアプリケーションにエクスポートする場合には、このタスク・フローを共有ライブラリとしてデプロイ済アプリケーションにデプロイする必要があります。

詳細は、第15.4項「ページへのカスタム・タスク・フローの追加」を参照してください。

- リソース・カタログ: アプリケーション・ナビゲータから。これにより、リソース・カタログが別のリソース・カタログ内に埋め込まれます。

14.3.3 リソース・カタログにリンクを追加する方法

次のリソースへのリンクをカタログに追加できます。

- タスク・フロー: WebCenter Portalのツールとサービス・タスク・フロー(リソース・パレット内)、またはJDeveloperで作成したカスタム・タスク・フロー(アプリケーション・ナビゲータ内)へのリンク。

- ポートレット: 登録済のポートレット・プロデューサへのリンク。ポートレット・プロデューサの登録およびページへのポートレット追加の詳細は、第63章「ポートレットの消費」を参照してください。

- コンテンツ: 既存のコンテンツ・サーバー接続からファイルまたはディレクトリへのリンク。

- その他: カスタム・コンポーネント(そのコンポーネントのXMLコードを提供することで作成します)へのリンク。

リンクを追加するには:

1. アプリケーション・ナビゲータ内で、リンクを追加する対象のリソース・カタログを右クリックして、「開く」を選択します。

2. リソース・カタログの「デザイン」ビューで、左側の「カタログ」セクションから、リンクを追加する対象のリソース・カタログ内のノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「リンク」を選択します。
url要素がカタログに追加されます。ページの右側には、新しいリンクの属性とパラメータを定義するフィールドが表示されます。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、より説明的なIDに変更することもできます。IDは、カタログ定義ファイル内で一意であることが必要です。

5. 「タイプ」リストから、作成するリソースのタイプを選択します。「タスクフロー」、「ポートレット」、「コンテンツ」または「その他」を選択できます。

注意:

ADFタスク・フローをカタログに追加し、カタログをデプロイ済のアプリケーションにエクスポートする場合には、このタスク・フローを共有ライブラリとしてデプロイ済アプリケーションにデプロイする必要があります。

詳細は、第15.4項「ページへのカスタム・タスク・フローの追加」を参照してください。

6. カスタム・リソースへのリンクを追加する(つまり、「タイプ」リストから「その他」を選択した)場合は、コンポーネントのファクトリ・クラスを指定します。その他すべてのリソース・タイプの場合、「ファクトリ・クラス」の値には、選択したリンク・タイプに応じた値が自動的に移入されます。
使用可能なリソース・タイプのファクトリ・クラスは、次のとおりです。

- タスク・フロー: oracle.webcenter.portalframework.sitestructure.rc.TaskFlowResourceFactory

- ポートレット: oracle.webcenter.portalframework.sitestructure.rc.PortletResourceFactory

- コンテンツ: oracle.webcenter.content.model.rc.ContentUrlResourceFactory

詳細は、第C.4項「カタログへの動的リソースの追加に使用可能なファクトリ・クラス」を参照してください。

7. 「URL」フィールドに、リソースにアクセスするためのURLを入力します。場所がわからない場合は、「ファイルを参照します」アイコンをクリックして使用可能なリソースを参照します。表14-1に、各リソース・タイプに使用するURL形式を示します。

表14-1 様々なリソース・タイプのURLの形式

リソース・タイプ

アプリケーション内での場所

URL形式

ADFライブラリからのタスク・フロー

リソース・パレット

taskflow://pathToTaskFlow/taskFlowDefinitionFilName#taskFlowId

アプリケーション内のタスク・フロー

アプリケーション・ナビゲータ

taskflow://pathToTaskFlow/taskFlowDefinitionFileName#taskFlowId

ポートレット

「アプリケーション・リソース」ペインまたは「リソース・パレット」内のポートレット・プロデューサ接続

portlet://producerId/portletId

コンテンツ

「アプリケーション・リソース」ペイン内の「コンテンツ・リポジトリ」接続

content://contentConnectionId/documentId

注意:

ポートレットまたはコンテンツ・タイプのリソースのURLを手動で入力した場合に、そのリソースの接続をリソース・パレット内のみで使用できるようにするには、まずそのアプリケーションへの接続を追加します。

8. 「表示可能」フィールドで、実行時にリソース・カタログにリンクを表示するかどうかを指定します。デフォルト値はEL式#{true}で、これはすべてのユーザーに対して常にリンクを表示することを意味します。リンクがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、リンクの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

9. オプションで、「URL属性」セクションにリンクの任意の表示オプションを指定します。詳細は、第14.3.9項「リソース・カタログまたはリソースの表示オプションの設定方法」を参照してください。

10. 「URLパラメータ」セクションで、必要に応じて、リソースでサポートしているパラメータの値を入力します。これらのパラメータは、アプリケーションのその他のアーティファクトにバインドできます。
「追加」アイコンをクリックして、「パラメータ」表に行を作成します。

11. カタログ定義ファイルを保存します。

14.3.4 リソース・カタログにフォルダを追加する方法

フォルダを作成し、類似リソースをグループ化できます。その結果、カタログの編成が改善されます。

フォルダを追加するには:

1. アプリケーション・ナビゲータ内で、フォルダを追加する対象のリソース・カタログを右クリックして、「開く」を選択します。

2. リソース・カタログの「デザイン」ビューで、左側の「カタログ」セクションから、フォルダを追加する対象のリソース・カタログ内のノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「フォルダ」を選択します。
folder要素がカタログに追加されます。ページの右側には、新しいフォルダの属性とパラメータを定義するフィールドが表示されます。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、より説明的なIDに変更することもできます。IDはリソース・カタログ内で一意であることが必要です。

5. 「表示可能」フィールドで、実行時にリソース・カタログにフォルダを表示するかどうかを指定します。デフォルト値はEL式#{true}で、これはすべてのユーザーに対して常にフォルダを表示することを意味します。フォルダがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、フォルダの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

6. オプションで、「フォルダ属性」セクションにフォルダの任意の表示オプションを指定します。詳細は、第14.3.9項「リソース・カタログまたはリソースの表示オプションの設定方法」を参照してください。

7. 「フォルダ・パラメータ」セクションで、必要に応じて、フォルダでサポートしているパラメータの値を入力します。これらのパラメータは、アプリケーションのその他のアーティファクトにバインドできます。
「追加」アイコンをクリックして、「パラメータ」表に行を作成します。

8. カタログ定義ファイルを保存します。

14.3.5 リソース・カタログにカスタム・コンポーネントを追加する方法

単一のADF Facesコンポーネント、2つ以上のコンポーネントを含む複合オブジェクト、内部に任意のHTMLコンテンツを追加できるJSF Verbatimタグなどのカスタム・コンポーネントを、リソース・カタログに追加できます。カタログに追加可能な任意のHTMLの例は、YouTubeビデオです。

カスタム・コンポーネントを追加するには:

1. アプリケーション・ナビゲータ内で、カスタム・コンポーネントを追加する対象のリソース・カタログを右クリックして、「開く」を選択します。

2. リソース・カタログの「デザイン」ビューで、左側の「カタログ」セクションから、カスタム・コンポーネントを追加する対象のリソース・カタログ内のノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「コンポーネント」を選択します。
component要素がカタログに追加されます。ページの右側には、新しいコンポーネントの属性とパラメータを定義するフィールドが表示されます。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、より説明的なIDに変更することもできます。IDはリソース・カタログ内で一意であることが必要です。

5. 「コンポーネント・ファクトリ:*」フィールドに、oracle.adf.rc.component.XmlComponentFactoryなど、oracle.adf.rc.component.ComponentFactoryインタフェースを実装し、一連のパラメータに基づいてコンポーネントのインスタンスを作成するJavaクラスの名前を入力します。
名前を入力すると、クラスパスから有効なファクトリ・クラスがフィールドに自動的に入力されます。「参照」アイコンを使用しても、クラスを選択できます。

詳細は、第C.4項「カタログへの動的リソースの追加に使用可能なファクトリ・クラス」を参照してください。

6. 「表示可能」フィールドで、実行時にリソース・カタログにコンポーネントを表示するかどうかを指定します。デフォルト値はEL式#{true}で、これはすべてのユーザーに対して常にコンポーネントを表示することを意味します。コンポーネントがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、コンポーネントの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

7. オプションで、「コンポーネント属性」セクションにカスタム・コンポーネントの任意の表示オプションを指定します。詳細は、第14.3.9項「リソース・カタログまたはリソースの表示オプションの設定方法」を参照してください。

8. 「コンポーネント・パラメータ」セクションを使用して、ファクトリ・クラスを実装する際に定義されたパラメータを追加します。
たとえば、XMLコンポーネントを追加する場合、「パラメータ」セクションで「追加」アイコンをクリックし、「xml」を選択します。表示される新しい行で、「値」フィールドにコンポーネントのXMLコードを指定します。

注意:

xmlオプションは、oracle.adf.rc.component.XmlComponentFactoryをコンポーネント・ファクトリとして選択している場合にのみ表示されます。

コンポーネントを正しく機能させるには、次の例のように、カスタム・コンポーネントIDが#になるように指定し、ネームスペースを指定する必要があります。

<cust:panelCustomizable id="#" xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable"/>

#という値により、コンポーネントに対し、動的に一意のIDが生成されます。

9. カタログ定義ファイルを保存します。

14.3.6 リソース・カタログにカスタム・フォルダを追加する方法

フォルダが動的に移入されるように、リソース・カタログ・アダプタを使用してフォルダを追加できます。カスタム・フォルダは、カタログへのリソースを含むフォルダとして追加されません。カスタム・フォルダにはリソースを動的に表示する、ファクトリ・クラスへの参照のみが含まれます。

カスタム・フォルダを追加するには:

1. アプリケーション・ナビゲータ内で、カスタム・フォルダを追加する対象のリソース・カタログを右クリックして、「開く」を選択します。

2. リソース・カタログの「デザイン」ビューで、左側の「カタログ」セクションから、カスタム・フォルダを追加する対象のリソース・カタログ内のノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「カスタム・フォルダ」を選択します。
customFolder要素がカタログに追加されます。ページの右側には、新しいフォルダの属性とパラメータを定義するフィールドが表示されます。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、より説明的なIDに変更することもできます。IDはリソース・カタログ内で一意であることが必要です。

5. 「初期コンテキスト・ファクトリ」フィールドで、javax.naming.InitialContextFactoryインタフェースを実装して一連のパラメータに基づいてフォルダを生成するJavaクラスの名前を入力します。
詳細は、第C.4項「カタログへの動的リソースの追加に使用可能なファクトリ・クラス」を参照してください。

6. 「表示可能」フィールドで、実行時にリソース・カタログにフォルダを表示するかどうかを指定します。デフォルト値はEL式#{true}で、これはすべてのユーザーに対して常にフォルダを表示することを意味します。フォルダがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、フォルダの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

7. 「フォルダの内容の挿入」を選択し、カスタム・フォルダの内容をフォルダの下に表示するのではなく、カタログに直接表示します。

8. オプションで、「カスタム・フォルダ属性」セクションにフォルダの任意の表示オプションを指定します。詳細は、第14.3.9項「リソース・カタログまたはリソースの表示オプションの設定方法」を参照してください。

9. 「カスタム・フォルダ・パラメータ」セクションに、ファクトリ・クラスを実装する際に定義したパラメータを追加します。これらのパラメータは、アプリケーションのその他のアーティファクトにバインドできます。
「パラメータ」セクションで「追加」アイコンをクリックし、「パラメータ」表に新しい行を作成します。

ファクトリ・クラスがパラメータを公開している場合、「追加」アイコンのドロップダウン・メニューが表示される場合があります。たとえば、コンテンツ・プレゼンタ固有のファクトリ・クラスでは、templateViewパラメータが表示されます。

10. カタログ定義ファイルを保存します。

14.3.7 リソース・カタログにカスタム・コンテンツ・プロバイダを追加する方法

カスタム・コンテンツ・プロバイダは、実行時に0以上のカタログ・エントリを動的に生成します。カタログ・エントリには、フォルダ、リンク、カスタム・フォルダ、コンポーネントなどが含まれます。カスタム・フォルダを追加すると、フォルダがカタログ内に作成され、空の場合でも実行時に表示されます。ただし、カスタム・コンテンツ要素を追加した場合には、フォルダはカタログ内に作成されますが、コンポーネントが含まれている場合にのみ実行時に表示されます。この違いを除いては、カスタム・コンテンツ・プロバイダはカスタム・フォルダと同じです。

カスタム・コンテンツ・プロバイダを追加するには:

1. アプリケーション・ナビゲータ内で、カスタム・コンテンツ・プロバイダを追加する対象のリソース・カタログを右クリックして、「開く」を選択します。

2. リソース・カタログの「デザイン」ビューで、左側の「カタログ」セクションから、カスタム・コンテンツ・プロバイダを追加する対象のリソース・カタログ内のノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「カスタム・コンテンツ」を選択します。
customContent要素がカタログに追加されます。ページの右側には、新しいフォルダの属性とパラメータを定義するフィールドが表示されます。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、より説明的なIDに変更することもできます。IDはリソース・カタログ内で一意であることが必要です。

5. 「コンテンツ・プロバイダ」フィールドで、oracle.adf.rc.spi.plugin.catalog.CustomContentProviderV2インタフェースを実装するクラスの完全修飾名を入力します。
「参照」アイコンを使用して、このインタフェースを実装するクラスのリストを表示できます。第C.4項「カタログへの動的リソースの追加に使用可能なファクトリ・クラス」も参照してください。

6. 「表示可能」フィールドで、実行時にリソース・カタログにフォルダを表示するかどうかを指定します。デフォルト値はEL式#{true}で、これはすべてのユーザーに対して常にフォルダを表示することを意味します。フォルダがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、フォルダの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

7. オプションで、「カスタム・コンテンツ属性」セクションにフォルダの任意の表示オプションを指定します。詳細は、第14.3.9項「リソース・カタログまたはリソースの表示オプションの設定方法」を参照してください。

8. 「カスタム・コンテンツ・パラメータ」セクションで、フォルダ上のパラメータを定義します。ここで定義するパラメータは、CustomContentProviderV2実装に渡され、この実装により解釈されます。
「パラメータ」セクションで「追加」アイコンをクリックし、「パラメータ」表に新しい行を作成します。

9. カタログ定義ファイルを保存します。

14.3.8 リソース・カタログを別のリソース・カタログに追加する方法

選択したカタログ内に別のリソース・カタログを含めることができます。別のカタログを追加する際には、このカタログへのポインタのみがカタログ定義ファイルに追加されます。実際のカタログ・コンテンツは、実行時にのみ挿入されます。

リソース・カタログを別のリソース・カタログに追加するには:

1. アプリケーション・ナビゲータ内で、リソース・カタログを追加する対象のリソース・カタログを右クリックして、「開く」を選択します。

2. リソース・カタログの「デザイン」ビューで、左側の「カタログ」セクションから、リソース・カタログを追加する対象のリソース・カタログ内のノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「カタログ参照」を選択します。
catalog要素がカタログに追加されます。ページの右側には、リソース・カタログの属性とパラメータを定義するフィールドが表示されます。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、より説明的なIDに変更することもできます。IDはリソース・カタログ内で一意であることが必要です。

5. 「パス」フィールドで、MDSパスをカタログ定義ファイルに入力します(たとえば、\oracle\webcenter\portalapp\catalogs\custom-catalog.xml)。
「参照」アイコンを使用し、アプリケーション・フォルダを参照してカタログ定義ファイルを選択します。

6. 「表示可能」フィールドで、実行時にリソース・カタログにフォルダを表示するかどうかを指定します。デフォルト値はEL式#{true}で、これはすべてのユーザーに対して常にフォルダを表示することを意味します。フォルダがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、フォルダの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

7. オプションで、「カタログ属性」セクションで、リソース・カタログの目的の表示オプションを指定します。詳細は、第14.3.9項「リソース・カタログまたはリソースの表示オプションの設定方法」を参照してください。

8. カタログ定義ファイルを保存します。

14.3.9 リソース・カタログまたはリソースの表示オプションを設定する方法

リソース・カタログまたはそのリソースのいずれかの様々な表示オプションを指定して、その外観と動作を決定できます。使用できる表示オプションは、リソースのタイプの応じて異なります。

- タイトル: カタログ内のリソースに使用されるラベル。この属性はデフォルトで定義されています。この値は必要に応じて変更できます。

- 説明: このリソースの説明。

- 件名: リソース・カタログのキーワード検索を容易にするキーワード。

- ツールチップ: カタログのこのリソース名の上にマウスを置くと表示されるツールチップ。

- IconURI: カタログ内でリソース名の隣に表示するアイコンの場所。

リソース・カタログまたはリソースの表示オプションを設定するには:

1. アプリケーション・ナビゲータで、リソース・カタログを右クリックして、「開く」を選択します。

2. リソース・カタログの「デザイン」ビューで、左側の「カタログ」列から、表示オプションを設定する対象のリソースを選択します。
リソース・カタログの表示オプションを設定するには、ルート・ノードを選択します。

3. リソースの「属性」パネルで、「追加」アイコンをクリックして設定する属性を選択します。表14-2

表14-2 リソース・カタログ表示オプション

属性

説明

役職

リソース・カタログ内のリソースに表示されるタイトル。

説明

リソースの説明。

Subject

ノードの検索を容易にするキーワード。

ToolTip

ユーザーがマウスをタイトル上に置いたときにリソースに関する追加情報を提示するテキスト。

IconURI

リソースを視覚的に表すアイコン。これは、リソース・カタログ内でタイトルの隣に表示されます。

4. 「値タイプ」ドロップダウン・リストから、次のいずれかを選択します。

- リテラル文字列: 属性に対する値として文字列を指定します。

- リソース・バンドル - リソース・バンドルを使用して、属性のローカライズ値を指定します。

5. 「表示値」フィールドに、属性の値を入力します。リソース・バンドルを使用している場合、「参照」アイコンをクリックしてローカライズ値を検索するリソース・バンドルを選択します。

6. カタログ定義ファイルを保存します。

14.3.10 カタログ内のリソースを再配置する方法

リソースを追加した後、リソース・カタログ内で別のフォルダにリソースを移動できます。リソースを再配置する方法は次のとおりです。

- リソースをフォルダから別のフォルダにドラッグ・アンド・ドロップします。

- 「親の変更」ポップアップ・メニューのオプションを使用して、リソースを別のフォルダに移動します。

「親の変更」オプションを使用してリソースを再配置するには:

1. アプリケーション・ナビゲータで、リソース・カタログを右クリックして、「開く」を選択します。

2. リソース・カタログの「デザイン」ビューで、左側の「カタログ」列から、リソースを右クリックしてポップアップ・メニューから「親の変更」を選択します。

3. 「親の選択」ダイアログ(図14-6)で、リソースを含めるフォルダを選択して「OK」をクリックします。

図14-6 「親の変更」ダイアログ

注意:

「OK」ボタンが有効になるのは、リソースに有効な場所を選択した場合のみです。

4. ナビゲーション・モデル定義ファイルを保存します。

14.3.11 リソース・カタログまたはリソースを表示または非表示にする方法

リソース・カタログまたはそのリソースのいずれかを実行時に表示するかどうかを指定できます。

ヒント:

確定したtrueまたはfalseの値を指定するほか、EL式を使用して表示条件を指定することによって、リソース・カタログまたはリソースが表示可能かどうかを動的に決定することもできます。

リソース・カタログまたはリソースを表示または非表示にするには:

1. アプリケーション・ナビゲータで、リソース・カタログを右クリックして、「開く」を選択します。

2. リソース・カタログの「デザイン」ビューで、左側の「カタログ」列から、可視性を設定する対象のリソースを選択します。
ナビゲーション・モデル・リソース・カタログの可視性を設定するには、ルート・ノードを選択します。

3. 「表示可能」フィールドで、リソース・カタログまたはリソースがアプリケーション内で使用可能かどうかを指定します。このフィールドは、EL値を取ります。デフォルトは#{true}です。これは、リソース・カタログまたはリソースが表示可能であることを示します。falseまたは#{false}を入力すると、リソース・カタログまたはリソースが非表示になります。または、EL式を入力して、リソースを表示可能にする条件を指定します。フィールドが空の場合、値はデフォルトでtrueになります。

4. ナビゲーション・モデル定義ファイルを保存します。

14.3.12 リソース・カタログ内のリソースを編集する方法

リソースを編集するには、カタログ定義ファイルの「カタログ」セクションでリソースを選択します。リソースの属性とパラメータは、ページの右側に表示されます。これらの属性とパラメータの値を編集して、カタログ定義ファイルを保存できます。リソースの属性とパラメータの詳細は、この章の該当する前項を参照してください。

14.3.13 リソース・カタログからリソースを削除する方法

リソースを削除するには、カタログ定義ファイルの「カタログ」セクションでこれを選択し、「選択したノードを削除します」アイコンをクリックします(図14-7)。

図14-7 リソース・カタログの「デザイン」ビューの「削除」オプション

14.3.14 リソース・カタログで設計時に作成されたデータ・コントロールを公開する方法

Oracle WebCenter Portalは、アプリケーション・ページおよびタスク・フローに追加できる大量のサービス・データ・コントロールを公開します。さらに、JDeveloperで独自のSQLまたはWebサービス・データ・コントロールが作成されていることもあります。ユーザーがこれらのデータ・コントロールをページおよびタスク・フローに追加できるようにするには、リソース・カタログ内のデータ・コントロールを公開する必要があります。これには、例14-1と例14-8に示すように、カタログ定義ファイルにcustomFolderエントリを追加する必要があります。

例14-1 設計時に作成されたデータ・コントロール用のカスタム・フォルダ

<customFolder id="dtDataControls"
factoryClass="oracle.webcenter.datacomposer.internal.adapter.datacontrol.DTDataControlContextFactory">
<attributes>
<attribute value="Design Time Data Controls" attributeId="Title"/>
<attribute value="Data controls created at design time" attributeId="Description"/>
<attribute value="design time data controls,DT, data controls" attributeId="Subject"/>
<attribute value="/adf/webcenter/folderlists_qualifier.png" attributeId="IconURI"/>
</attributes>
</customFolder>

図14-8 設計時データ・コントロール・フォルダ

customFolderをカタログ内で変換可能なリソースとして公開するには、フォルダの文字列属性をリソース文字列としてリソース・バンドルに保存する必要があります。それには、カタログ定義ファイルでresourceBundle属性を指定し、変換可能な各属性にisKey属性を指定する必要があります。すると、次の例で示すように、その属性値はリソース・バンドルに保存されます。

カタログ定義のresourceBundle属性は、次のとおりです。

<catalogDefinition id="DefaultCatalog" visible="#{true}"
resourceBundle="oracle.webcenter.portalapp.catalogs.DefaultCatalogBundle"
definitionFilter="portal.catalog.DefaultCatalogFilter"
xmlns="http://xmlns.oracle.com/adf/rcs/catalog">

変換可能なリソースの属性で定義されるisKey属性は、次のとおりです。

<customFolder id="dtDataControls"
factoryClass="oracle.webcenter.datacomposer.internal.adapter.datacontrol.DTDataControlContextFactory">
<attributes>
<attribute value="DATACONTROL_FOLDER.TITLE" isKey="true" attributeId="Title"/>
<attribute value="DATACONTROL_FOLDER.DESCRIPTION" attributeId="Description" isKey="true"/>
<attribute value="DATACONTROL_FOLDER.KEYWORDS" attributeId="Subject" isKey="true"/>
<attribute value="/adf/webcenter/folderlists_qualifier.png" isKey="false" attributeId="IconURI"/>
</attributes>
</customFolder>

リソース・バンドルの使用の詳細は、第20.12項「実行時リソース文字列編集の構成」を参照してください。

アプリケーションに設計時データ・コントロールがあるかどうかに関係なく、実行時、リソース・カタログにはDesign Time Data Controlsというタイトルのフォルダが表示されます。

デプロイ済アプリケーションでは、実行時管理コンソールの「アセット」ページを使用して、設計時データ・コントロールを個別にカスタム・カタログに追加できます。即時利用可能なカタログは、実行時には編集できません。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のリソース・カタログへのリソースの追加に関する項を参照してください。

デプロイ済のアプリケーションでのカスタム・データ・コントロールの公開

アプリケーション内で作成したSQLまたはWebサービス・データ・コントロールがあり、すでにデプロイ済のアプリケーションでこれらを公開する場合は、次の手順に従う必要があります。

- アプリケーションをADF共有ライブラリにパッケージ化します。

- アプリケーションをWebLogic Serverインスタンスにデプロイします。詳細は、第55.2.5項「WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)への拡張機能のデプロイ」を参照してください。

この構成を実行する場合、デプロイ済データ・コントロールは実行時リソース・レジストリの「デザインタイム・データ・コントロール」フォルダで使用できます。ユーザーはデータ・コントロールをレジストリから任意のカスタム・リソース・カタログに追加でき、そこからページおよびタスク・フローでそのデータ・コントロールを使用できます。

14.3.15 リソース・カタログで実行時に作成されたデータ・コントロールを公開する方法

ユーザーは、実行時管理コンソールの「アセット」ページで、実行時にデータ・コントロールを作成できます。実行時に作成したデータ・コントロールをリソース・カタログで動的に表示するには、例14-2に示すように、カタログ定義ファイルにcustomFolderエントリを追加します。

例14-2 実行時に作成されたデータ・コントロール用のカスタム・フォルダ

<customFolder id="rtDataControls"
factoryClass="oracle.webcenter.datacomposer.internal.adapter.datacontrol.DataControlContextFactory">
<attributes>
<attribute value="Runtime Data Controls" attributeId="Title"/>
<attribute value="Data controls created at runtime" attributeId="Description"/>
<attribute value="runtime data controls,RT,data controls" attributeId="Subject"/>
<attribute value="/adf/webcenter/folderlists_qualifier.png" attributeId="IconURI"/>
</attributes>
</customFolder>

このフォルダを変換可能なリソースとして公開するには、フォルダの文字列属性をリソース文字列としてリソース・バンドルに保存する必要があります。変換可能なリソースの作成方法の例は、第14.3.14項「リソース・カタログで設計時に作成されたデータ・コントロールを公開する方法」を参照してください。

データ・コントロールがフォルダにあるかどうかに関係なく、実行時、カタログにはRuntime Data Controlsというタイトルのフォルダが表示されます。

14.3.16 リソース・カタログのポートレット可視性の制御方法

ポートレットが保護されているかどうかに関係なく、最初の何もしていない状態で、リソース・カタログでは使用できるすべてのプロデューサのポートレットが表示されます。したがって、ユーザーはアクセス権のない保護されたポートレットでも使用できます。ユーザーがそのようなポートレットをページに追加すると、ポートレット・コンポーネントは追加されますが、コンテンツは表示されません。ユーザーがアクセスできるポートレットのみを表示して使用するように、リソース・カタログのポートレットの可視性を制御できます。PortletItemSecurityHelperインタフェースを実装して、ユーザーの権限に基づいて条件付きでリソース・カタログにポートレットを表示します。

リソース・カタログのポートレットの可視性を制御するには:

1. PortletItemSecurityHelperインタフェースを独自のアイテム・セキュリティ・ヘルパー・クラス(CustomPortletSecurityHelper.javaなど)に実装します。
例14-3では、PortletItemSecurityHelperインタフェース実装の例を示します。この例での前提条件は次のとおりです。

- ポートレットを表示できるユーザーを制御するための権限が各ポートレットに対して定義されている。

- ポートレットに対するユーザーの権限をチェックするための権限クラス(PortletVisibilityPermission)が定義されている。

例14-3 PortletItemSecurityHelperのサンプル実装

public class CustomPortletSecurityHelper extends PortletItemSecurityHelper
{
public boolean canView(String producerId, String portletId)
{
String permissionPath = producerId + '/' + portletId;
PortletVisibilityPermission permission = new PortletVisibilityPermission (permissionPath, VIEW_ACTION);
try
{
// throws AccessControlException if the permission is not granted
JpsAuth.checkPermission(permission);
canView = true;
sLogger.logp(Level.FINE, SOURCE_CLASS, method,
"PortletVisibilityPermission check passed. Producer={0}, Portlet={1} Action=view",
new Object[]{producerId, portletId});
}
catch(AccessControlException ace)
{
canView = false;
sLogger.logp(Level.FINE, SOURCE_CLASS, method,
"PortletVisibilityPermission check passed. Producer={0}, Portlet={1} Action=view",
new Object[]{producerId, portletId});
}
return canView;
}
}

2. アプリケーションのMETA-INFディレクトリでrc_ext.xmlファイルを作成し、次のコードを追加してリソース・カタログに実装を登録します。

<extension xmlns:="http://xmlns.oracle.com/adf/rc/extension"
id="your.extension.id"
name="Your Extension Name"
version="11.1.1.4.0">
<item-security-helper class="your.implementation.class.name"/>
</extension>

実行時にユーザーがコンポーザで「コンテンツの追加」をクリックすると、リソース・カタログにはユーザーが権限を持つポートレットのみが表示されます。

14.4 デフォルト・リソース・カタログの選択

アプリケーションおよびページのレベルでデフォルト・カタログを構成できます。異なる基準に応じて異なるリソース・カタログを使用することもできます。

この項には次のサブセクションが含まれます:

- 第14.4.1項「アプリケーション用のデフォルト・リソース・カタログを選択する方法」

- 第14.4.2項「複数のリソース・カタログの構成方法」

- 第14.4.3項「ページ用のデフォルト・リソース・カタログを選択する方法」

14.4.1 アプリケーション用のデフォルト・リソース・カタログを選択する方法

それぞれのPortal Frameworkアプリケーションにはデフォルト・リソース・カタログが定義され、ユーザーがページ、タスク・フローまたはページ・テンプレートにコンテンツを追加する際に使用されます。

Portal Frameworkアプリケーションを最初に作成するときに、シード済リソース・カタログ(default-catalog.xml)がアプリケーションのデフォルト・リソース・カタログとして設定されます。ユーザー独自のリソース・カタログを後で作成した場合は、そのカタログをデフォルトとして設定できます。

Portal Frameworkアプリケーションのadf-config.xmlファイル内で、デフォルト・リソース・カタログを設定できます。詳細は

アプリケーション用のデフォルト・リソース・カタログを選択するには:

1. アプリケーションのadf-config.xmlファイルを開きます。

2. 次の例に示すように、<rcv:rcv-config>要素内のcatalog-name属性値を変更し、カスタム・カタログ名を指定します。

<rcv:rcv-config>
<rcv:default-catalog catalog-name="/oracle/webcenter/portalapp/catalogs/myCustomCatalog.xml"/>
</rcv:rcv-config>

catalog-name属性は、デフォルトのカタログとして使用されるカタログを特定します。

指定するパスは、リソース・カタログのルート・ディレクトリへの相対パスです。たとえば、新しいカタログ定義をC:\JDeveloper\mywork\RCSampleApp\Portal\Public_Html\oracle\webcenter\portalapp\catalogs\myCustomCatalog.xmlとして保存した場合、catalog-name値は/oracle/webcenter/portalapp/catalogs/myCustomCatalog.xmlになります。名前はMDSパスの一部を表すため、/セパレータを使用します。

注意:

adf-config.xmlで作成できるリソース・カタログ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。

3. adf-config.xmlファイルを保存します。

14.4.2 複数のリソース・カタログの構成方法

ほとんどのビジネスでは、ユーザーとグループが自分でページに追加できるリソースにのみアクセスできるようにすることが要求されます。このニーズに対応するために、アプリケーションでは複数のリソース・カタログを構成できます。様々なカタログを、編集されるページ、ユーザー、ユーザー・ロールなど特定の基準に基づいて様々なユーザーに公開できます。この項では、複数のリソース・カタログをアプリケーションに関連付ける方法を説明します。次のサブセクションが含まれます:

複数のカタログを使用するには、ResourceCatalogSelector APIを実装して、ユーザーと編集されるページに適したカタログを選択します。アプリケーションのadf-config.xmlファイルにcatalog-selectorエントリを追加し、ResourceCatalogSelectorクラスの名前を指定する必要があります。catalog-selectorを指定しない場合、デフォルトのカタログがすべての編集可能なページに使用され、すべてのユーザーに同一のコンテンツが表示されます。catalog-selectorを指定する場合、デフォルトのカタログは指定したセレクタがnullを返した場合にのみ使用されます。

複数のリソース・カタログを構成するには:

1. カスタム・カタログを作成するには、第14.2項「リソース・カタログの作成」および第14.3項「リソース・カタログの編集」で概説した手順を実行します。

2. 独自のリソース・カタログ・セレクタ・クラス(CatalogSelector.javaなど)に、oracle.adf.rc.model.config.ResourceCatalogSelectorインタフェースを実装します。
例14-4に、カスタム・リソース・カタログ(admin-catalog.xml)を管理者権限のあるahunoldに表示し、users-catalog.xmlをユーザーskingとユーザーjdoeに表示するカタログ・セレクタ実装を示します。これらのいずれかのカタログのレンダリングで問題がある場合には、デフォルトのカタログがユーザーに表示されます。

例14-4 複数のリソース・カタログにエントリを表示するサンプルResourceCatalogSelector

package webcenter;

import javax.faces.context.FacesContext;

import java.util.Map;

import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.context.ExternalContext;

import oracle.adf.rc.model.config.ResourceCatalogSelector;
import oracle.adf.rc.model.dc.RCVContext;

import oracle.adf.rc.model.config.ResourceCatalogSelector;

/**
* CatalogSelector is a sample implementation of the ResourceCatalogSelector
* interface.
*
* This implementation is based on the authenticated user
*/
public class CatalogSelector implements ResourceCatalogSelector {
public CatalogSelector() {
}

/**
* Returns the Id of the catalog that must be used for the current
* user.
*
* @param context a Map cont
* @return id of the catalog to be used for the current user or
*         null if the default catalog must be used.
*/
public String getCatalogName(Map context) {
// if no catalog is selected, return null & ensure that the Composer uses the
// default catalog defined in the rcv-config
String retval = null;

// get information about the current user.
FacesContext fctx = FacesContext.getCurrentInstance();
ExternalContext ectx = fctx.getExternalContext();
String user = ectx.getRemoteUser();

if (user == null || user.length() == 0) {
// user name is not available so use the default catalog
retval = null;

}
else if (user.equals("jdoe") || user.equals("sking")  ) {
// return users-catalog for users jdoe and sking
retval = "users-catalog";

}
else if (user.equals("ahunold")) {
// return admin-catalog for user ahunold
retval = "admin-catalog";

}

return retval;

}
}

3. adf-config.xmlファイルに、次の例で示すように、<rcv:catalog-selector>タグを使用して、リソース・カタログの選択用に作成したクラス名を入力します。

<rcv:rcv-config>
<rcv:default-catalog catalog-name="/oracle/webcenter/portalapp/catalogs/default-catalog.xml"/>
<rcv:catalog-selector class-name="webcenter.CatalogSelector"/>
</rcv:rcv-config>

catalog-nameの値はMDSパスを持つデフォルトのカタログ定義ファイルに対応します。

注意:

adf-config.xmlで作成できるリソース・カタログ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。

14.4.3 ページ用のデフォルト・リソース・カタログを選択する方法

アプリケーション・ページにコンポーザ・コンポーネントが含まれる場合には、Page Customizableコンポーネントでcatalog属性にカタログ名を指定できます。静的値またはEL値を指定できます。詳細は、第B.1.1項「Page Customizableコンポーネント」を参照してください。

14.5 リソース・カタログのアイテムのフィルタリング

カタログ・コンテンツを基本的にはすべてのユーザーに対して同一になるように配置し、コンテンツのサブセットをユーザーごとに別の表示にするには、リソース・カタログを構成し、特定の基準に基づいて選択したアイテムをフィルタ処理で除外できます。

たとえば、2人のユーザーAとBがあるページに対して異なる権限を持っている場合、ユーザーAにはカタログ全体を表示し、ユーザーBにはカタログのアイテムのサブセットのみを表示するようアプリケーションを構成できます。

カタログにフィルタを適用するには、oracle.adf.rc.spi.plugin.catalog.CatalogDefinitionFilterインタフェースを実装する必要があります。さらに、このフィルタをリソース・カタログに関連付ける必要があります。

ヒント:

また、リソースの「表示可能」フィールドにEL式を指定すると、目的のカタログの個別リソースを条件に基づいて非表示にすることも可能です。詳細は、第14.3.11項「リソース・カタログまたはリソースを表示または非表示にする方法」を参照してください。

リソース・カタログのアイテムをフィルタ処理するには:

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を開き、「Java」、「Javaクラス」の順に選択して「OK」をクリックします。

3. 「Javaクラスの作成」ダイアログで、クラスの名前を入力します(たとえば、CatalogFilter)。

4. 「オプション属性」セクションの下に、oracle.adf.rc.spi.plugin.catalog.CatalogDefinitionFilterインタフェースを追加します。

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

6. フィルタリング・アイテムにロジックを指定します。

注意:

フィルタ・ロジックの実装時には、通常、現在のユーザーと現在のページに関する情報が必要です。この情報は、FacesContextから取得できます。

例14-5に、CatalogDefinitionFilterサンプル実装を示します。これは、ユーザーjdoeのDiscussionsフォルダ(forumsFolder)をカスタム・カタログusers-catalog.xmlで非表示にするように構成されています。その他すべてのユーザーには、カタログ全体(ADF Faces ComponentsフォルダとDiscussionsフォルダを含む)が表示されます。

例14-5 CatalogDefinitionFilter実装を示すサンプル

package webcenter;

import oracle.adf.rc.catalog.CatalogElement;
import oracle.adf.rc.spi.plugin.catalog.CatalogDefinitionFilter;

import java.util.Hashtable;

import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

public class CatalogFilter implements CatalogDefinitionFilter {

public boolean includeInCatalog(CatalogElement element, Hashtable env) {

ExternalContext ectx =FacesContext.getCurrentInstance().getExternalContext();

if ("jdoe".equals(ectx.getRemoteUser()) && "forumsFolder".equals(element.getId()))
return false;
else
return true;
}

}

7. アプリケーション・ナビゲータで、リソース・カタログを右クリックして、「開く」を選択します。

8. リソース・カタログの「デザイン」ビューで、左側の「カタログ」パネルから、リソース・カタログのルート・ノードを選択します。

9. 「カタログ・フィルタ」フィールドに、作成したJavaクラスの名前を入力します(たとえば、webcenter.CatalogFilter)。
これにより、definitionFilter属性がファイルの「ソース」ビューに追加されます。

10. カタログ定義ファイルを保存します。

14.6 リソース・カタログの削除

アプリケーション内でリソース・カタログが不要になった場合は、リソース・カタログを削除できます。

リソース・カタログを削除するには、アプリケーション・ナビゲータでカタログを右クリックして、ポップアップ・メニューから「削除」を選択します。詳細は、第9.4項「ポータル・リソースの削除」を参照してください。

14.7 タスク・フロー・パラメータおよびタスク・フローを囲んでいるShow Detail Framesの属性の定義

実行時にコンポーザでリソース・カタログからのタスク・フローをアプリケーションのページに追加すると、タスク・フローは自動的にShow Detail Frameコンポーネントで囲まれます。この囲んでいるShow Detail Frameに関連付けられたタイトル、高さ、幅などの属性を初期化するには、そのタスク・フローを含むカタログ定義ファイルでこれらの属性を定義します。タスク・フローのプロパティを囲んでいるShow Detail Frameのプロパティと区別するには、Show Detail Frameプロパティの接頭辞としてattr.を使用する必要があります。

たとえば、ユーザーが暗い背景色の設定を使用したページにタスク・フローを追加すると、そのタスク・フローは囲んでいるShow Detail Frameコンポーネントの背景色設定を引き続き使用します。これは、ユーザーが望む外観ではないことがあります。Show Detail Frameの背景色プロパティをユーザーが変更できるようにするには、リソース・カタログの背景色属性を初期化して公開する必要があります。実行時にタスク・フローのプロパティを編集する際に、ユーザーはShow Detail Frameの背景色属性を変更することもできます。

同様に、タスク・フローのパラメータを初期化することも可能です。EL式を使用して、カタログ定義ファイル内のそのようなパラメータを定義できます。実行時にタスク・フローのプロパティを編集する際に、ユーザーは公開されたパラメータの値を変更することもできます。タスク・フローのプロパティを初期化したパラメータと区別するには、そのようなパラメータの接頭辞としてparameter.を使用する必要があります。

タスク・フローのパラメータおよびShow Detail Frameプロパティを初期化するには:

1. 目的のタスク・フローが含まれるカタログ定義ファイルを開きます。

2. タスク・フローの<url>または<resource>要素内に、各パラメータの<attribute>エントリおよび定義するShow Detail Frame属性を追加します。
パラメータのattributeIdには、parameter.の接頭辞を付けたパラメータ名を指定する必要があります。Show Detail Frame属性のattributeIdには、attr.の接頭辞を付けた属性名を指定する必要があります。次に例を示します。

<url visible="#{true}" factoryClass="oracle.webcenter.portalframework.sitestructure.rc.TaskFlowResourceFactory"
id="wallMiniView"
url="taskflow://oracle/webcenter/peopleconnections/wall/controller/taskflows/WallViewer.xml#WallViewer">
<attributes>
<attribute value="WALL_MINIVIEW.TITLE" attributeId="Title" isKey="true"/>
<attribute value="WALL_MINIVIEW.DESCRIPTION" attributeId="Description" isKey="true"/>
<attribute value="#{securityContext.userName}" attributeId="parameter.userName"/>
<attribute value="false" attributeId="attr.stretchContent"/>
<attribute value="never" attributeId="attr.showResizer"/>
</attributes>
<contents/>
</url>

注意:

リソース・バンドルからの値の場合にのみ、isKey属性を追加して、それをtrueに設定します。その属性を追加しない場合には、isKey値はデフォルトのfalseに設定されます。

3. カタログ定義ファイルを保存します。

14.8 リソース・カタログに関する問題のトラブルシューティング

この項では、リソース・カタログの使用中に発生する可能性がある問題のトラブルシューティングに役立つ情報を提供します。

ロギングの構成の詳細は、「コンポーザのADFロギングの構成」を参照してください。

問題

リソース・カタログが空です。

解決方法

デフォルトのカタログは、MDSには使用できません。デプロイメント・プロファイルに、デフォルトのカタログ・ファイルをコピーする際に必要なエントリが含まれていることを確認します。また、adf-config.xmlのMDSセクションで、ネームスペース・エントリがデフォルトのカタログ・ファイルを指していることを確認します。

問題

プロジェクト・タスク・フローがリソース・カタログに表示されません。

解決方法

タスク・フローはADFライブラリ(JARファイル)としてパッケージ化され、プロジェクトに追加されている必要があります。また、タスク・フローIDが次の形式で指定されていることも確認する必要があります。

taskflow://Path_to_Task_Flow/Task_Flow_Definition_File_Name#Task_Flow_ID

例:

taskflow://oracle/webcenter/peopleconnections/wall/controller/taskflows/WallViewer.xml#WallViewer

15 ページの作成とリソースの追加

この章では、Portal Frameworkアプリケーションでページを作成する方法について説明します。また、アプリケーションのコンテンツを構築するためにこれらのページに追加できる様々なリソースについても説明します。

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

- 第15.1項「ページの概要」

- 第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」

- 第15.3項「ページへのWebCenter Portalのツールとサービス・タスク・フローの追加」

- 第15.4項「ページへのカスタム・タスク・フローの追加」

- 第15.5項「コンテンツ・サーバーからページへのコンテンツの追加」

- 15.6項「ページへのポートレットの追加」

- 第15.7項「ページへのページレットの追加」

- 第15.8項「ページへのデータ・コントロールの追加」

- 第15.9項「外部アプリケーションの使用」

15.1 ページの概要

ページは、Portal Frameworkアプリケーションの基礎となる構成要素です。Portal Frameworkアプリケーションでページを使用して、ユーザーに提供する様々な種類のコンテンツを公開します。詳細は、第5.3.2項「ページ、ページ・テンプレートとスタイル、およびポータルのページ階層の理解」を参照してください。

ページには、次のように様々なリソースからのコンテンツを組み入れることができます。

- ポートレットおよびページレット

- WebCenter Portalタスク・フローおよびカスタム・タスク・フロー

- UCMからのコンテンツ

- 外部アプリケーション

- データ・コントロール

アプリケーション内にあるページへのコンテンツの追加は、その他のあらゆるWebアプリケーションへのコンテンツの追加と同じです。

15.2 WebCenter Portal Frameworkアプリケーションでのページの作成

WebCenter Portal Frameworkアプリケーション・テンプレートを使用すると、新規Portal Frameworkアプリケーションにいくつかのデフォルト・ページが移入されます。この初期フレームワークより高度なアプリケーションを開発するには、独自のページを追加する必要があります。

注意:

Portal Frameworkアプリケーション・ページは、JDeveloper内でJSPページ(JSPファイル)としてではなく、必ずJSPドキュメント(JSPXファイル)として作成してください。ページ・カスタマイズが格納されるようにするには、そのページがXMLで表されている必要があります。XML形式のJSPドキュメントを作成するように選択することで、Portal Frameworkアプリケーション・ページのカスタマイズが常に可能になります。

1. 「アプリケーション・ナビゲータ」で、アプリケーション・プロジェクト内のpagesフォルダ(/oracle/webcenter/portalapp/pages)を右クリックして、「新規作成」を選択します。

ヒント:

ページ階層で使用されるページは、oracle/webcenter/portalappの下に配置する必要があります。詳細は、第5.3.2項「ページ、ページ・テンプレートとスタイル、およびポータルのページ階層の理解」を参照してください。

2. 「新規ギャラリ」で、「Web層」を開いて、「JSF」、「JSFページ」の順に選択し、「OK」をクリックします。

3. 「JSFページの作成」ダイアログ(図15-1)の「ファイル名」フィールドで、ページのファイル名を入力します。

図15-1 「JSFページの作成」ダイアログ

4. 「XMLドキュメントの作成(*.jspx)」を選択します。

5. 「初期ページ・レイアウトおよびコンテンツ」セクションで、「ページ・テンプレート」を選択し、ページのレイアウトと構造の定義に使用するページ・テンプレートを選択します。ページ・テンプレートの詳細は、第11章「ページ・テンプレートの開発」を参照してください。
ページを作成した後、コードを編集して、ページ・テンプレートの動的選択を可能にできます。詳細は、第11.5.3項「実行時にPortal Frameworkアプリケーションでページ・テンプレートの動的切替えを有効にする方法」を参照してください。

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

Portal Frameworkアプリケーション・ページに特有でない、このダイアログに表示されるその他の設定については、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のビュー・ページの作成に関する項を参照してください。

レイアウト・コンポーネントなどの一般コンポーネントをページに追加する方法については、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のJSFページにADF Facesコンポーネントを追加する方法に関する項を参照してください。

ユーザーがアプリケーションのページを実行時に編集できるようにするには、コンポーザ・コンポーネントを追加する必要があります。詳細は、第18章「コンポーザを使用したページの実行時編集の有効化」を参照してください。

15.3 ページへのWebCenter Portalのツールとサービス・タスク・フローの追加

WebCenter Portalのツールとサービスは、ソーシャル・コンピューティング・サービス、個人の生産性サービス、オンラインでの認識およびコミュニケーション、コンテンツ統合、Web分析などのエンタープライズ2.0機能によってアプリケーションを拡充します。WebCenter Portalのツールとサービスは、タスク・フローを通して機能を公開します。WebCenter Portalのツールとサービスの詳細は、第4章「WebCenter Portalのツールとサービス用アプリケーションの準備」を参照してください。

WebCenter Portal Frameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、適切なすべてのWebCenter Portalのツールとサービス接続ウィザードおよびタグ・ライブラリが、新規ギャラリおよびコンポーネント・パレットにすぐに表示され、使用できるようになります。WebCenter Portalのツールとサービス・タスク・フローまたはコンポーネントを利用する場合、必要なライブラリが自動的にプロジェクトに追加されます。アプリケーションは、利用するツールまたはサービスに応じた特定の前提条件を満たす必要があります。たとえば、サービスでユーザーのアイデンティティを認識する必要がある場合、アプリケーションでユーザー認証に一定レベルのセキュリティを提供する必要があります。詳細は、第4章「WebCenter Portalのツールとサービス用アプリケーションの準備」を参照してください。

個々のWebCenter Portalのツールとサービス、およびそのタスク・フローの詳細は、表15-1を参照してください。

表15-1 WebCenter Portalのツールとサービス - 詳細情報

WebCenter Portalのツールとサービス

詳細

アクティビティ・グラフ

第46章「アクティビティ・グラフの統合」

分析

第47章「分析の統合」

お知らせ

第32章「お知らせの統合」

ブログ

第30.4項「ブログの統合」

ディスカッション

第33章「ディスカッションの統合」

ドキュメント

第28章「ドキュメントの統合」

イベント

第48章「イベントの統合」

インスタント・メッセージおよびプレゼンス(IMP)

第34章「インスタント・メッセージおよびプレゼンスの統合」

リンク

第43章「リンクの統合」

リスト

第49章「リストの統合」

メール

第35章「メールの統合」

通知

第50章「通知の統合」

ピープル・コネクション

第VI部「ピープル・コネクションの使用」

投票

第36章「投票の統合」

最近のアクティビティ

第51章「最近のアクティビティの統合」

RSS

第52章「RSSの統合」

検索

第45章「検索の統合」

タグ

第44章「タグの統合」

Wiki

第30.3項「Wikiの統合」

ワークリスト

第41章「ワークリストの統合」

注意:

WebCenter Portalのツールとサービス・タスク・フローが要件を満たさない場合は、カスタマイズしてルック・アンド・フィールや機能を変更できます。たとえば、テキストを追加したり、ラベルを変更したり、リージョンやコンポーネントを削除したり、追加の属性を表示したりできます。詳細は、第23章「WebCenter Portalのツールとサービス・タスク・フローのカスタマイズ」を参照してください。

15.4 ページへのカスタム・タスク・フローの追加

タスク・フローは、ページと同様に、ポートレット、コンテンツ、その他のタスク・フローなどのコンポーネントを追加できるコンテナです。タスク・フローをページやその他のタスク・フローに追加できます。JDeveloperで作成したタスク・フローをリソース・カタログに含めて、ユーザーがそれらのタスク・フローを実行時にページやその他のタスク・フローに追加できるようにすることが可能です。

カスタム・タスク・フローはリソース・カタログにドラッグ・アンド・ドロップできるため、ユーザーは実行時にページやタスク・フローに追加する際に使用できます。詳細は、第14.3.2項「リソース・カタログにリソースをドラッグ・アンド・ドロップする方法」を参照してください。アプリケーションをデプロイすると、タスク・フローもターゲット・インスタンスにデプロイされます。

様々なタイプのADFタスク・フローを作成する方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFタスク・フローの作成に関する項を参照してください。

すでにデプロイ済のアプリケーションに、JDeveloperで作成してエクスポートしたタスク・フローを直接アップロードすることはできませんが、実行時に作成したタスク・フローをJDeveloperにインポートし、変更して、デプロイ済アプリケーションにエクスポートして戻すことは可能です。

JDeveloperで作成したタスク・フローのデプロイ済アプリケーションへの公開

カスタム・タスク・フローをJDeveloperで作成し、それをすでにデプロイされているアプリケーションに公開する場合、そのタスク・フローが含まれるプロジェクトをADF共有ライブラリとしてランタイム・アプリケーションにデプロイする必要があります。タスク・フローが含まれるライブラリにアプリケーションからアクセス可能になると、実行時リソース・レジストリにそのライブラリが組み込まれ、そこからカスタムのリソース・カタログにライブラリを追加できます。

注意:

タスク・フローを表示または編集する権限は、タスク・フローの作成時にデフォルトではプロビジョニングされません。タスク・フローが実行時に必ず表示されるように、共有ライブラリをデプロイする前に、そのタスク・フローに対して少なくとも表示権限を付与する必要があります。詳細は、第22.6.1項「タスク・フローに対する権限の付与」を参照してください。

Portal Frameworkアプリケーションにアプリケーションを共有ライブラリとしてデプロイする手順は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のWebLogic管理対象サーバーへのアプリケーションのデプロイに関する項を参照してください。ただし、アプリケーション・インストール・アシスタントの実行時に、「ターゲット指定スタイルの選択」ページで「このデプロイメントをライブラリとしてインストールする」を選択してください。

WebCenter Portalインスタンスにアプリケーションをデプロイする手順は、第55.2.5項「WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)への拡張機能のデプロイ」を参照してください。

15.5 コンテンツ・サーバーからページへのコンテンツの追加

Content Serverのコンテンツ・リポジトリ内のコンテンツにアクセスできるようにするには、Content Serverへの接続を作成する必要があります。詳細は、第25.2.1項「Oracle Content Serverアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法」を参照してください。

コンテンツ・サーバーへの接続が確立されると、ユーザーは使いやすいインタフェースを使用して、実行時にドキュメントを管理、表示および検索できます。詳細は、第28章「ドキュメントの統合」を参照してください。

次に、コンテンツ・タスク・フローまたはドキュメント・コンポーネントのいずれかをページに追加して、コンテンツ・サーバーのコンテンツを公開します。コンテンツ・タスク・フローには、次のコンテンツ・プレゼンタおよびドキュメント・タスク・フローが含まれます。

- コンテンツ・プレゼンタ

- ドキュメント・エクスプローラ

- ドキュメント・リスト・ビューア

- ドキュメント・マネージャ

- ドキュメント・ナビゲータ

- フォルダ・ビューア

- 最近のドキュメント

- ドキュメント・ビューア

- ドキュメント・ミニ・プロパティ

- ドキュメント・プロパティ

- リッチ・テキスト・エディタ

- ドキュメント・アップロード

- ドキュメント・バージョン履歴

- AutoVue

次のようなドキュメント・コンポーネントがあります。

- ドキュメント・リンク

- ドキュメント・インライン・フレーム

- ドキュメント・イメージ

コンテンツ・プレゼンタ・タスク・フローの詳細は、第29.1項「コンテンツ・プレゼンタ・タスク・フローの理解」を参照してください。ドキュメント・タスク・フローの詳細は、第29.2項「ドキュメント・タスク・フローの理解」を参照してください。ドキュメント・コンポーネントの詳細は、第29.3項「ドキュメント・コンポーネントの理解」を参照してください。

コンテンツ・プレゼンタ・タスク・フローを使用する場合は、独自のコンテンツ・プレゼンタ表示テンプレートを作成することもできます。コンテンツ・プレゼンタ表示テンプレートでは、コンテンツ・リポジトリのアイテムをページでレンダリングする方法が定義されます。詳細は、第27章「コンテンツ・プレゼンタ表示テンプレートの作成」を参照してください。

15.6 ページへのポートレットの追加

ポートレットは再利用可能なWebコンポーネントで、多数の異なるソースからコンテンツを描画できます。ポートレットは、複数のソースからのデータを意味のある関連した方法で提示する手段を提供します。ポートレットの詳細は、第57章「ポートレットの概要」を参照してください。

ポートレットをアプリケーションに追加するには、ポートレットのプロデューサをPortal Frameworkアプリケーションに登録しておく必要があります。詳細は、第63.2項「WebCenter Portal Frameworkアプリケーションへのポートレット・プロデューサの登録」を参照してください。

ポートレット・プロデューサを登録した後は、アプリケーションに組み込む任意のポートレットを、該当するページにドラッグ・アンド・ドロップできます。詳細は、第63.5項「ページへのポートレットの追加」を参照してください。

15.7 ページへのページレットの追加

ページレットは、ポートレットに似ていますが、ポートレットがポータル専用に設計されていることに対して、ページレットは、ポータルやその他のWebアプリケーションを含め、あらゆるWebページで実行できます。ページレットを使用すれば、他のWeb環境でプラットフォーム固有のポートレットを公開できます。

ページへのページレットへの追加の詳細は、第62.7項「Webアプリケーションでのページレットの使用」を参照してください。

15.8 ページへのデータ・コントロールの追加

データ・コントロールは、様々なデータ・ソースから情報を取得して、Portal Frameworkアプリケーション内にユーザー・インタフェース(UI)コンポーネントを作成する際に使用されます。データ・コントロールでは、簡単に使用できるメソッドが提供され、これをJSFページにドラッグ・アンド・ドロップして、URL、ファイルおよびフォルダなどのADFコンポーネントとしてコンテンツを公開できます。データ・ソースからJSFページにコンテンツを追加するには、まずデータ・ソースへの接続を作成してから、その接続を使用して、リポジトリに基づいたデータ・コントロールを作成する必要があります。

カスタムのデータ・コントロールを作成して、様々なデータ・ソースに接続し、それらのデータ・ソースをアプリケーション・ページやタスク・フローに追加できます。データ・コントロールの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

JDeveloperで作成されてエクスポートされたデータ・コントロールを、すでにデプロイ済のアプリケーションに直接アップロードすることはできません。また、実行時に作成したデータ・コントロールをJDeveloperにインポートすることもできません。

WebCenter Portalのツールとサービスによっては、ツールまたはサービスのカスタマイズされた表示を作成するためのデータ・コントロールを備えているものがあります。アプリケーション内でのこれらのデータ・コントロール利用の詳細は、第4.1.3項「WebCenter Portalのデータ・コントロールの使用」を参照してください。

すでにデプロイされているアプリケーションで利用するためのデータ・コントロールの公開

Portal Frameworkアプリケーションの実行時リソース・レジストリには、デフォルトでDesign Time Data Controlsフォルダが含まれています。このフォルダは、WebCenter Portalのツールとサービスのシードされたデータ・コントロール、およびデプロイ前にアプリケーションに追加されたその他のデータ・コントロールを公開します。すでにデプロイされているPortal Frameworkアプリケーションで新規データ・コントロールを公開するには、データ・コントロールが含まれるプロジェクトをランタイム・アプリケーションにADF共有ライブラリとしてデプロイする必要があります。データ・コントロールが含まれるライブラリにアプリケーションからアクセス可能になると、実行時リソース・レジストリにそのライブラリが表示され、そこからカスタムのリソース・カタログにライブラリを追加できます。

Portal Frameworkアプリケーションにアプリケーションを共有ライブラリとしてデプロイする手順は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のWLS管理コンソールを使用したアプリケーションのデプロイに関する項を参照してください。ただし、アプリケーション・インストール・アシスタントの実行時に、「ターゲット指定スタイルの選択」ページで「このデプロイメントをライブラリとしてインストールする」を選択してください。

WebCenter Portalインスタンスにアプリケーションをデプロイする手順は、第55.2.5項「WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)への拡張機能のデプロイ」を参照してください。

15.9 外部アプリケーションの使用

ページに追加するリソースで、独自の認証プロセスを定義するアプリケーションへのアクセスが必要な場合、外部アプリケーションを追加して、ユーザーがシングル・サインオンを利用できるようにすることが可能です。

たとえば、ページに、個別ログインが必要なアプリケーションを指すポートレットが含まれている場合があります。あるいは、ページにメール・タスク・フローが含まれている場合、ユーザーが毎回個別にログインする必要がないように、メール・サーバー・ユーザーをアプリケーション・ユーザーにマップする外部アプリケーションを指定する必要があります。

ユーザーが外部アプリケーションに初めてアクセスすると、そのユーザーは、外部アプリケーションのユーザー名とパスワードの入力を求められます。これらの資格証明は、ユーザーにマップされ、資格証明ストアに安全に格納されます。それ以降は、認証時に資格証明ストアによってこれらの資格証明が外部アプリケーションに提供されます。外部アプリケーションの資格証明が変更されないかぎり、マップされた情報が資格証明ストアから読み込まれるため、ユーザーによる資格証明の入力は1回のみです。

詳細は、第74.13項「外部アプリケーションの使用」を参照してください。

第III部

アプリケーションのカスタマイズとカスタマイズ・オプションの拡張

第III部の内容は次のとおりです。

- 第16章「WebCenterポータル・コンポーザの使用」

- 第17章「ページの実行時作成および管理の有効化」

- 第18章「コンポーザを使用したページの実行時編集の有効化」

- 第19章「コンポーザを使用した実行時編集機能の拡張」

- 第20章「コンポーザの拡張構成の実行」

- 第21章「コンポーザ固有のMDS構成の実行」

- 第22章「コンポーザ・コンポーネントのデフォルトのセキュリティ動作の変更」

- 第23章「WebCenter Portalのツールとサービス・タスク・フローのカスタマイズ」

16 WebCenter Portalコンポーザの使用

この章では、Oracle WebCenter Portalのコンポーザについて概説し、実行時にサポートする様々なタスクについて説明します。

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

- 第16.1項「コンポーザの概要」

- 第16.2項「アプリケーションのカスタマイズとユーザーのカスタマイズ」

- 第16.3項「ページの編集モードと表示モード」

- 第16.4項「ページ表示モードでのページのカスタマイズ」

- 第16.5項「ページの編集」

- 第16.6項「コンポーザ・コンポーネント」

- 第16.7項「セキュリティおよびコンポーザ」

16.1 コンポーザの概要

コンポーザは、アプリケーション実行時にページ・コンテンツを追加および編集するための完全に統合されたページ・エディタです。コンポーザの機能を理解するには、まず、次のステージから構成される、典型的なアプリケーション開発ライフサイクルを確認します。

- アプリケーション開発者は、設計時にアプリケーションを作成します。
設計時とは、従来、アプリケーションを作成または編集するためのIDEベースの環境を表します。Oracle WebCenter Portalの場合、Oracle JDeveloperが設計時環境を提供します。

- アプリケーション管理者は、これらのアプリケーションをマネージド・サーバーにデプロイします。

- エンド・ユーザーは、実行時にデプロイされたアプリケーションにアクセスします。
実行時とは、Webアプリケーションにアクセスするために使用されるブラウザ・ベースの環境を表します。

各ステージに異なるカテゴリのユーザーが関与することがわかります。多くの場合、これらのユーザーの一部またはすべてが実行時にページを変更する必要があります。たとえば、ワークリストやメール・タスク・フローなどの、ログイン・ユーザーに関する情報を表示するダッシュボードのようなアプリケーションについて考えてみます。ページ開発者は、ダッシュボード・ページを作成し、これに必要なコンポーネントおよびタスク・フローを移入します。アプリケーション管理者は、アプリケーションを顧客のサイトにデプロイします。顧客のサイトでは、組織の様々なレベルの人がダッシュボードを表示し、次のリクエストを行います。

- 部門の管理者は、「部門ニュース」タスク・フローを追加します。

- LOB管理者は、「個人/役職者が使用する経費」タスク・フローを追加します。

- 国のサイト管理者は、それぞれの国の運営または規則を表示するタスク・フローを追加します。

また、コンテンツ・コントリビュータ、モデレータおよびエンド・ユーザーは、ビジネス・ニーズに基づいてページ・アーティファクトを追加、削除または変更します。典型的なアプリケーション開発環境では、これらのリクエストはページ開発者に渡されます。開発者は、開発環境でアプリケーションを変更し、これを顧客のサイトに再デプロイします。

単純な変更を開発者に戻すのではなく、コンポーザはMetadata Services (MDS)とともに、ビジネス・ユーザーが実行時にアプリケーション・ページを編集できる編集ツールを提供します。実行時に行われた変更はメタデータとして保存され、ベースのアプリケーション定義から隔離されます。実行時にアプリケーション・ページを編集するこの概念は、実行時に設計と呼ばれます。これは、設計時にアプリケーションを変更してこれを再デプロイする必要を最小化します。

コンポーザは、実行時にアプリケーション設計を行う動作を制御するコンポーネントを提供します。この章では、コンポーザを有効に使用するために必要な基本的な概念および用語について説明します。

16.2 アプリケーションのカスタマイズとユーザーのカスタマイズ

ユーザーが実行時にページを変更すると、通常その変更はそのユーザーのみが使用できます。アプリケーションを構成して、ページにアクセスするすべてのユーザーまたはユーザーのサブセットが実行時の変更を使用できるようにすることができます。LOBのメンバーが使用する経費の詳細を表示するダッシュボード・ページの例について考えてみます。LOB管理者がページを変更し、いくつかの経費に関するガイドラインを追加する場合、その変更はすべてのメンバーに表示される必要があります。そのような要件に対処するために、コンポーザでは、ユーザーはページを異なるモードで編集し、変更をユーザーのカスタマイズ(ページの個々のユーザーの表示のみに影響)またはアプリケーションのカスタマイズ(全員のページの表示に影響)として保存できます。

ユーザーの変更をユーザーのカスタマイズまたはアプリケーションのカスタマイズとして保存するには、これらをバックエンドで別々に保存する必要があります。メタデータ・ドメインでは、MDSは、ベース・アプリケーション定義の上の別々のレイヤーにカスタマイズを保存することを許可しています。ビジネス要件に応じて、単一のレイヤーまたは複数のレイヤーに変更を保存できます。

単一レイヤー構成では、変更は、アプリケーションのカスタマイズとしてすべてのユーザーがアクセスできる共通レイヤーに保存されます。この場合、変更をユーザーのカスタマイズとして保存することはできません。

複数レイヤー構成では、変更は、ページが編集されたモード、ページを編集したユーザー、ユーザー・ロールなどの指定された条件に基づいて個別の場所に保存されます。この種の構成では、各カスタマイズ・レイヤーは他のレイヤーから隔離されますが、レイヤーを相互に積み重ねてアップグレード時に柔軟性を持たせることができます。たとえば、ユーザーが、表示されるページのデフォルトのテーマを変更する必要があるとします。この変更は、ページの他者の表示に影響を与えずに、このユーザーに対してのみ保存されることが期待されているとします。したがって、このページのパーソナライズ権限を持っているエンド・ユーザーによって行われる変更がユーザーのカスタマイズとして保存され、カスタマイズレベル権限を持っているログイン・ユーザーによって行われる変更がアプリケーションのカスタマイズとして保存されるように設定できます。パーソナライズ権限とカスタマイズ/編集権限を持つユーザーが使用できるタスクをそれぞれ決定できます。

MDSおよびカスタマイズ・レイヤーの詳細は、第21.1項「MDSの概要」を参照してください。

16.3 ページの編集モードと表示モード

ユーザーがブラウザでアプリケーション・ページを開くと、ページは表示モードで開きます。また、コンポーザは編集モードという別のモードへのアクセスを提供し、適切な権限を持つユーザーはアプリケーション・ページを編集できます。これらのモードは次のように説明できます。

- 編集モード: 通常このモードは、アクセス権限を持つ認証されたユーザーが使用してページ・コンテンツを編集できます。表示モードで実行できるタスクに加えて、コンポーザは、編集モードへの切り替えおよびコンポーネントの追加、コンポーネントの削除、コンポーネントのプロパティの編集などのタスクの実行のための制御を提供します。通常、編集モードでページに対して行われる変更はアプリケーションのカスタマイズとして保存され、そのページにアクセスするすべてのユーザーが使用できます。

- 表示モード: ブラウザで開いたときに表示されるページのデフォルト・ビュー。このモードでは、ユーザーは、コンポーネントの再配置、コンポーネントの折りたたみと展開およびレイアウトの変更などのタスクを実行できます。通常、表示モードでページに対して行われる変更はそのユーザーのみが使用でき、ユーザーのカスタマイズとして保存されます。

16.3.1 編集モードについて

コンポーザの編集モードには、広範なアプリケーションのカスタマイズ機能が用意されています。編集モードでは、ユーザーは、コンテンツの追加、ページとコンポーネントのプロパティの編集、コンポーネントの削除、コンポーネントの再配置、ページ・レイアウトの変更などを行えます。

この章で説明する機能をアプリケーションに提供するには、Change Mode LinkまたはChange Mode Button、Page Customizable、Panel Customizable、Show Detail Frame、Custom ActionsおよびLayout Customizableの各コンポーザ設計時コンポーネントをページに追加します。これらのコンポーネントの詳細は、第16.6項「コンポーザ・コンポーネント」を参照してください。

Change Mode LinkコンポーネントまたはChange Mode Buttonコンポーネントをカスタマイズ可能なページに追加すると、コンポーザの表示モードのページに「編集」リンクが表示されます。ユーザーが「編集」リンクまたはボタンをクリックすると、編集モードのコンポーザでページが開きます。図16-1は、表示モードのページの「編集」リンクを示しています。

図16-1 表示モードでの「編集」リンク

編集モードでは、デフォルトのコンポーザ・ツールバーに、編集中のページのタイトル、「ページ・プロパティ」アイコン、「ページのリセット」アイコンおよび「閉じる」ボタン(図16-2)が表示されます。

図16-2 コンポーザのツールバー

デフォルトでは、編集モードのページには「コンテンツの追加」と「構造」の2つのビューが表示されます。ただし、「デザイン」、「コンテンツの追加」、「構造」、「選択」および「プレビュー」のいずれかまたはすべてのビューを表示するようにページを構成できます。DesignViews属性を使用して、編集モードで表示するビューを指定します。値をallと指定すると、「コンテンツの追加」ビューを除くすべてのビューが編集モードで使用可能になります。拡張機能を使用できるように、コンポーザにすべてのビューを表示するようにページを構成することをお薦めします。DesignViews属性の詳細は、表B-1「Page Customizableコンポーネントの属性」を参照してください。

この項には次のサブセクションが含まれます:

- 第16.3.1.1項「編集モードの「コンテンツの追加」ビューについて」

- 第16.3.1.2項「編集モードの「構造」ビューについて」

- 第16.3.1.3項「編集モードの「デザイン」ビューについて」

- 第16.3.1.4項「編集モードの「選択」ビューについて」

- 第16.3.1.5項「編集モードの「プレビュー」ビューについて」

16.3.1.1 編集モードの「コンテンツの追加」ビューについて

「コンテンツの追加」ビュー(図16-3)は、コンポーザのページを開く際のデフォルト・ビューです。このビューでは、ページとコンテンツがWYSIWYGで表示され、各コンポーネントのコントロールを直接選択できます。

図16-3 コンポーザの「コンテンツの追加」ビュー

16.3.1.2 編集モードの「構造」ビューについて

「構造」ビュー(図16-4)は、コンポーネント・ナビゲータのページ・コンポーネントをWYSIWYGおよび階層式にレンダリングします。「コンテンツの追加」、「プロパティ」、「削除」、「切取り」および「貼付け」の各コントロールを「構造」ビューのツールバーで使用でき、これらによりコンポーザで特定の操作が実行されます。「構造」ビューでは、ユーザーは「デザイン」ビューまたは「コンテンツの追加」ビューでは選択できないコンポーネントのプロパティにアクセスし、プロパティを変更できます。たとえば、多くのADF Facesコンポーネントは「構造」ビューでのみ編集できます。ユーザーは、タスク・フロー内のコンポーネントも編集できます。

注意:

childCreation属性は、ポップアップ・ダイアログの子をコンポーザで表示できるかどうかを決定します。デフォルトでは、この属性はdeferredに設定されており、ポップアップ・ダイアログの子を表示する際に使用できます。値をimmediateに設定すると、ポップアップ・ダイアログの子を表示できます。

childrenCreation属性をimmediateに設定すると、パフォーマンスに影響を与えます。ページ上でポップアップを使用する必要がない場合には、deferredのデフォルト設定を使用するとCPUのペナルティと不要なメモリーの使用を避けることができます。ポップアップは非モーダルで表示されるため、アプリケーションではエラーなしでそのファクトを処理できる必要があります。

詳細は、付録F「式言語式」の第F.13項「コンポーザに関連するEL式」を参照してください。

図16-4 ページの「構造」ビュー

デフォルトでは、コンポーネント・ナビゲータはコンポーザ内でページの右側に表示されます。「ドッキング」メニューを使用して、上、下または左側の表示を選択できます(図16-5)。ユーザーは、コンポーネント・ナビゲータのエッジの境界をドラッグして、その高さまたは幅を変更できます。

図16-5 構造の配置オプションとサイズ変更

コンポーネント・ナビゲーションのルートには、設計時のPage Customizableコンポーネントの直接の子があります。ノードがコンポーネント・ナビゲーションで選択されると、対応するコンポーネントがページで選択されます。同様に、コンポーネントがページで直接選択されると、対応するノードがコンポーネント・ナビゲータで選択されます。

ページの下部にあるグレーの領域には、選択したコンポーネントのブレッドクラム・トレイルが表示されます(図16-6)。ブレッドクラム・トレイルは、ページでコンポーネントがどのようにネストされているかを示します。コンポーネントが選択されていないと、ブレッドクラム・バーはページ名のみを表示します。コンテナ名は、クリックすると選択したコンポーネントを強調表示するリンクです。

図16-6 ページの「構造」ビューで選択されたコンポーネントのブレッドクラム

編集可能なタスク・フローには、タスク・フローの横に「タスク・フローの編集」リンクがあります。「タスク・フローの編集」リンクをクリックすると、コンポーネント・ナビゲータにタスク・フローのページまたはフラグメント内のコンポーネントの階層が表示されます。ユーザーは、このページまたはフラグメントを編集し、タスク・フローをズーム・アウトするために「閉じる」をクリックできます。詳細は、第16.5.2項「タスク・フロー内のコンテンツの編集」を参照してください。同様に、宣言コンポーネントに、選択した宣言コンポーネントのファセット内部のコンポーネントをユーザーが編集できる「開く」リンクが表示されます。

注意:

- 「保存」ボタンは、アプリケーションがサンドボックスを使用するように構成されている場合のみコンポーザのツールバーに表示されます。サンドボックスの詳細は、第21.2項「コンポーザのサンドボックスの使用」を参照してください。

- アプリケーションを保護し、コンポーネントにカスタマイズ制限を適用することによって、ユーザーがこれらのタスクのすべてまたは一部を実行できないように制限することができます。詳細は、第16.7項「セキュリティおよびコンポーザ」を参照してください。

16.3.1.3 編集モードの「デザイン」ビューについて

「デザイン」ビュー(図16-7)では、ページとコンテンツがWYSIWYGで表示され、各コンポーネントのコントロールを直接選択できます。リソース・カタログがページの右側にインライン表示され、そこからページに追加するコンポーネントを選択できます。

インライン・リソース・カタログを非表示にして、かわりにページの各領域に「コンテンツの追加」ボタンを表示することもできます。これは、コンポーネントを追加できる場所の特定に役立ちます。

「デザイン」ビューは、デフォルトでは編集モードで使用できません。このビューを使用可能にするには、Page CustomizableコンポーネントのDesignViews属性の値をdesignまたはallに設定します。詳細は、表B-1「Page Customizableコンポーネントの属性」を参照してください。

「デザイン」ビューの表示を選択した場合は、このビューがデフォルト・ビューとして表示され、「コンテンツの追加」ビューは編集モードで表示されません。

図16-7 コンポーザの「デザイン」ビュー

16.3.1.4 編集モードの「選択」ビューについて

「選択」ビュー(図16-8)は、ページとそのコンテンツのWYSIWYG表示を提供します。このビューでは、コンポーネントを選択して、そのコンポーネントのプロパティまたはその親コンポーネントのプロパティにすばやくアクセスできます。選択ビューでは、コンポーネントを削除できません。

デザイン・ビューの場合と同様に、リソース・カタログがページの右側にインライン表示され、そこからページに追加するコンポーネントを選択できます。

編集モードでは、「選択」ビューはデフォルトでは使用できません。このビューを使用可能にするには、Page CustomizableコンポーネントのDesignViews属性の値をselectまたはallに設定します。詳細は、表B-1「Page Customizableコンポーネントの属性」を参照してください。

図16-8 ページ編集モードの「選択」ビュー

16.3.1.5 編集モードの「プレビュー」ビューについて

「プレビュー」ビューは、公開されるページのプレビューを、アプリケーションに表示されるときと同様に表示します。

編集モードでは、「プレビュー」ビューはデフォルトでは使用できません。このビューを使用可能にするには、Page CustomizableコンポーネントのDesignViews属性の値をpreviewまたはallに設定します。詳細は、表B-1「Page Customizableコンポーネントの属性」を参照してください。

16.4 ページ表示モードでのページのカスタマイズ

コンポーザより、ユーザーは表示モードと編集モードでページをカスタマイズできます。この項では、ページ表示モードでユーザーが可能なユーザー・カスタマイズ・タスクの概要について説明します。このようなタスクには、コンポーネントの再配置、コンポーネントの折りたたみと展開およびページ・レイアウトの変更などがあります。この項で説明する機能を有効にするには、次のコンポーザの設計時コンポーネントをページに追加します: Panel Customizable、Show Detail Frame、Custom ActionsおよびLayout Customizable。これらのコンポーネントの詳細は、第16.6項「コンポーザ・コンポーネント」を参照してください。表示モードのページに対して行われた変更はこれらの変更を行うユーザーのみが使用できます。

この項には次のサブセクションが含まれます:

- 第16.4.1項「コンポーネントの再配置」

- 第16.4.2項「レイアウトの変更」

- 第16.4.3項「コンポーネントの展開と縮小」

注意:

ページで実行できる編集タスクの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「ポータル・ページの作成および編集」の章を参照してください。

16.4.1 コンポーネントの再配置

この機能では、ユーザーは、最も役に立つコンテンツがページの上部に表示されるようにページのコンポーネントを編成できます。ユーザーは、次の2つの方法でコンポーネントを再配置できます。

- ドラッグ・アンド・ドロップ
ユーザーは、ページのPanel Customizableコンポーネント内またはPanel Customizableコンポーネント間でコンポーネントをドラッグ・アンド・ドロップしてこれを再配置できます。編集モードでPanel Customizableコンポーネントを識別するのは困難であるため、ユーザーは単純にコンポーネントを配置したい場所にドラッグできます。実線のボックスはドロップできる場所を示します。

- 「アクション」メニューの使用
Show Detail Frameコンポーネントまたはポートレット・コンポーネントの移動アクションでは、ユーザーは、これらのコンポーネントを親のPanel Customizableコンポーネント内で移動できます。Panel Customizableに複数の子コンポーネントがある場合、子のShow Detail Frameまたはポートレットを他の子コンポーネントの位置に対して左右または上下に移動できます。図16-9は、「上へ移動」アクションおよび「下へ移動」アクションがあるサンプルのShow Detail Frameコンポーネントを示しています。この例では、「下へ移動」を選択すると、Latest NewsコンポーネントがPress Releaseコンポーネントの真下に移動します。

図16-9 Show Detail Frameの「アクション」メニュー

16.4.2 レイアウトの変更

この機能では、ユーザーは、コンポーザに用意されている一連の事前定義済のレイアウトを切り替えることができます。「レイアウトの変更」アイコンを使用して、ユーザーはニーズや好みに合せて8つの異なるレイアウトから選択できます。コンポーザ・ライブラリのLayout Customizableコンポーネントは、図16-10に示すようにページの「レイアウトの変更」アイコンの表示を有効にします。

図16-10 「レイアウトの変更」アイコン

図16-11は、Layout Customizableコンポーネントで使用可能なレイアウト・オプションを示しています。ページまたは領域に現在適用されているレイアウトは、グレーの境界線で強調表示されています。

図16-11 レイアウト・オプション

16.4.3 コンポーネントの展開と縮小

ページでコンポーネントの展開と縮小を有効にすることによって、外観を損ねることなくページにより多くの詳細情報を含めることができます。ユーザーは、必要に応じてコンポーネントを縮小したり展開したりできます。

Show Detail Frameまたはポートレットの「縮小」アイコンを使用すると、ユーザーはそのコンポーネントを縮小し、そのヘッダーのみを表示できます。図16-12は、Show Detail Frameコンポーネントの「縮小」アイコンを示しています。

図16-12 Show Detail Frameの「縮小」アイコン

縮小されたコンポーネントで「展開」アイコンを使用すると、ユーザーはコンポーネントがヘッダーとコンテンツを表示するようにこれを展開できます。図16-13は、2つの閉じられたShow Detail Frameコンポーネントの「展開」アイコンを示しています。

図16-13 Show Detail Frameの「展開」アイコン

16.5 ページの編集

この項では、コンポーザがページ編集モードで提供する編集機能について説明します。内容は次のとおりです。

- 第16.5.1項「コンテンツの追加」

- 第16.5.2項「タスク・フロー内のコンテンツの編集」

- 第16.5.3項「宣言型コンポーネント内のコンテンツの編集」

- 第16.5.4項「ページ・コンテンツの再配置」

- 第16.5.5項「コンポーネントのプロパティおよびパラメータの編集」

- 第16.5.6項「現在のレイヤーのコンポーネント・プロパティのリセットとオーバーライド」

- 第16.5.7項「リソース文字列の編集」

- 第16.5.8項「コンポーネントの表示または非表示」

- 第16.5.9項「コンポーネントの削除」

- 第16.5.10項「レイアウトの変更」

- 第16.5.11項「ページ・プロパティの編集」

- 第16.5.12項「子コンポーネントの表示名のカスタマイズ」

- 第16.5.13項「ページ・パラメータへのコンポーネントの関連付け」

- 第16.5.14項「ページのリセット」

- 第16.5.15項「エラー検出時のアプリケーションのカスタマイズのリセット」

- 第16.5.16項「アプリケーションのカスタマイズ保存時のラベルの作成」

- 第16.5.17項「アプリケーションのカスタマイズの管理」

注意:

アプリケーションを保護し、コンポーネントにカスタマイズ制限を適用することによって、ユーザーがこれらのタスクのすべてまたは一部を実行できないように制限することができます。詳細は、第16.7項「セキュリティおよびコンポーザ」を参照してください。

ユーザーがページで実行できる実行時編集タスクの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のページの編集に関する項を参照してください。

16.5.1 コンテンツの追加

権限のあるユーザーは、ニュースや株式の最新情報を表示するポートレットなどのページにカスタム・コンテンツを追加できます。コンポーザにより、ユーザーは編集モードで任意のコンテナにコンテンツを追加できます。Oracle WebCenter Portalのリソース・カタログ(Oracle Business Dictionaryとも呼ばれる)には、ユーザーがページに追加できるリソースが含まれています。これらには、ドキュメント、Oracle ADFコンポーネント、ポートレットおよびタスク・フローが含まれています。カタログは、ページの編集モードで、次の方法を使用して起動できます。

- 「コンテンツの追加」ビューと「デザイン」ビューで、ページの任意のコンテナ・コンポーネントの「コンテンツの追加」ボタンをクリックします。
「デザイン」ビューで、デフォルトではインライン・リソース・カタログが使用可能ですが、これを非表示にして、かわりにページの各領域に「コンテンツの追加」ボタンを表示することもできます。これは、コンポーネントを追加できる場所の特定に役立ちます。

- 「構造」ビューでは、コンテナ・コンポーネントを選択して、「構造」ビューのツールバーの「選択したコンポーネントにコンテンツを追加」アイコンをクリックします。

注意:

コンテナ・コンポーネントのカスタマイズを制限している場合、ユーザーは、実行時にこの内部にコンポーネントを追加できません。詳細は、第22.1項「カスタマイズ・ポリシーの定義によるコンポーネント・レベルの制限の適用」を参照してください。

図16-14は、Portal Frameworkアプリケーションの「コンテンツの追加」ダイアログを示しています。

図16-14 「コンテンツの追加」ダイアログ

「コンテンツの追加」ダイアログにはフォルダとコンポーネントが含まれています。カタログのアイテムの隣にある「開く」リンクは、アイテムがフォルダであることを示しています。権限のあるユーザーは、このリンクをクリックしてフォルダをドリルダウンできます。アイテムの隣にある「追加」リンクは、アイテムをページに追加できることを示しています。「追加」リンクは、コンポーネントまたはフォルダの隣に表示されます。コンポーネントは、「コンテンツの追加」リンクがクリックされたコンテナに最初の子として追加されます。

注意:

ダイアログの「上」アイコンを使用すると、ユーザーは最上位フォルダに戻ることができます。

リソースをページに追加するためのドロップ・ハンドラを構成した場合、「追加」リンクに、コンポーネントをページに追加するためのものと異なるオプションを含むコンテキスト・メニューが表示されます。詳細は、第19.6項「コンポーザUIイベントのイベント・ハンドラの構成」を参照してください。

構成に応じて、ダイアログは権限のあるユーザーに対して次のコンポーネントのすべてまたはサブセットを公開します。

注意:

詳細は、第14章「リソース・カタログの開発」を参照してください。

- ADF Facesコンポーネント
「Web開発」フォルダには、JDeveloperの設計時コンポーネントであるPanel CustomizableおよびShow Detail Frameと似ているBoxコンポーネントおよびMovable Boxコンポーネントが用意されています。JDeveloperでは、これらのコンポーネントは、コンポーザ・タグ・ライブラリで使用できます。

注意:

設計時にページに追加されたPanel CustomizableコンポーネントおよびShow Detail Frameコンポーネントは、引き続き同じ呼び名です。これらのコンポーネントは、実行時にそれぞれBoxコンポーネントおよびMovable Boxコンポーネントと表示されることはありません。

このフォルダには、HTML Markup、Hyperlink、Image、TextおよびWeb Pageの各コンポーネントが提供されています。これらはそれぞれ、JDeveloperの設計時コンポーネントOutput Text、Go Link、Go Image Link、Rich Text EditorおよびInline Frameに類似しています。JDeveloperでは、これらのコンポーネントは、ADF Facesタグ・ライブラリで使用できます。

カタログの「Web開発」フォルダには、図16-15に示すようにこれらのコンポーネントが含まれています。

図16-15 ページに追加可能なADF Facesコンポーネント

- タスク・フロー
権限のあるユーザーは、カスタム・タスク・フローおよび即時利用可能なWebCenter Portalのツールとサービス・タスク・フローをページに追加できます。ページに追加されるタスク・フローは、Movable Boxコンポーネント内に自動的に含まれます。その結果、タスク・フローは、コンポーネントを移動または削除するためのオプション付きのヘッダーを表示します。

注意:

タスク・フローを囲んでいるMovable Boxコンポーネントは、そのタスク・フローがページで表示されている場合のみ表示されます。つまり、タスク・フローの表示権限すら付与しない場合、これを囲むMovable Boxもページで表示されません。

- ポートレット
ポートレット・フォルダは、登録済プロデューサをすべてリストします。権限のあるユーザーは必要なポートレットにナビゲートし、これをページに追加できます。ポートレット・フォルダは、Oracle JDeveloperで登録された任意のJava-PDKまたはWSRPプロデューサからポートレットを公開します。ポートレット・プロデューサの登録の詳細は、第63章「ポートレットの消費」を参照してください。

- ドキュメント
コンテンツ管理フォルダは、ユーザーがページに追加できるドキュメントおよびフォルダをリストします。

詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のページのWeb開発コンポーネントの使用に関する項を参照してください。

16.5.1.1 タブ・セットまたはタブのBoxコンポーネントへの追加

Boxコンポーネントにあるツールバーには、タブまたはタブのセットをBoxコンポーネントに追加するオプション(図16-16)が用意されています。タブを使用して、ページの個別のレイヤーとしてコンテンツ・リージョンを追加します。新しいタブそれぞれが現在選択されたタブの下のレイヤーとして配置され、コンテンツを移入できるリージョンを含みます。

「タブ・セットまたはタブの追加」アイコンは、Panel CustomizableコンポーネントのshowTabAction属性がtrueに設定されている場合に使用可能です。

図16-16 「ボックス」コンポーネントにある「タブ・セットまたはタブの追加」アイコン

ユーザーが「ボックス」コンポーネントにある「タブ・セットまたはタブの追加」アイコンをクリックすると、コンポーザはタブをBoxコンポーネントの周りに追加します。「構造」ビューでは、図16-17に示すように、BoxコンポーネントがShow Detail Itemコンポーネント内にネストされていて、さらにこれがPanel Tabbedコンポーネント内にネストされています。ユーザーは、この方法で任意の数のタブを追加できます。

図16-17 「構造」ビューのTabコンポーネント

ユーザーが最初に追加するタブは、選択したBoxコンポーネントを囲みます。その後の各タブは、新しいBoxコンポーネントをその内部に含みます。

権限のあるユーザーは、「コンテンツの追加」ビューまたは「デザイン」ビューの「削除」アイコンをクリックしてタブを削除できます。最後のタブを削除すると、Panel Tabbedコンポーネントがページから削除されます。また、「構造」ビューでPanel Tabbedコンポーネントを削除することによって、タブ・セットを削除できます。その内部にあるBoxを削除せずにタブのみを削除するには、ユーザーは、まずBoxをPanel Tabbedコンポーネントの外側に移動(切取りおよび貼付け)してからPanel Tabbedコンポーネントを削除する必要があります。

16.5.1.2 既存のコンポーネントに隣接するBoxコンポーネントの追加

「コンテンツの追加」ビューまたは「デザイン」ビューの「ボックス」コンポーネントにあるツールバーには、コンポーネントの前または後ろに別のBoxコンポーネントを追加するオプションが用意されています。この機能を使用すると、ユーザーは、ページでコンポーネントのレイアウトを変更できます。

ユーザーが「ボックス」コンポーネントにある「追加」アイコンをクリックすると、コンポーザは別のBoxコンポーネントをその前または後ろに追加し、両方のBoxコンポーネントをPanel Group Layoutで囲みます。使用するアイコンに応じて、新しいBoxコンポーネントは、元のBoxコンポーネントの左、右、上または下に追加され、親のPanel Group LayoutコンポーネントにあるLayout属性がhorizontalまたはverticalに設定されます。ユーザーは、この方法で多くの連続したBoxコンポーネントを追加できます。新しいBoxコンポーネントの方向が変わるたびに、適切なレイアウト設定(水平方向または垂直方向)を持つ新しいPanel Group Layoutが新規および既存のBoxコンポーネントの周りに追加されます。

注意:

「追加」アイコンは、次の場合にはコンポーネント上にレンダリングされません。

- Panel CustomizableコンポーネントのallowAction属性がfalseに設定されている場合

- Panel Customizableがストレッチされている場合

- Panel Customizableコンポーネントが制限されている場合

詳細は、第22章「コンポーザ・コンポーネントのデフォルトのセキュリティ動作の変更」を参照してください。

ユーザーは、「コンテンツの追加」ビュー、「デザイン」ビューおよび「構造」ビューを使用して、追加したBoxコンポーネントを削除できます。

注意:

Panel Group LayoutにBoxコンポーネントが2つしかなく、その内の1つを削除すると、Panel Group Layoutも削除されます。

「ボックス」コンポーネントのツールバーには、編集アイコンに加えて次のボックス追加アイコンがあります。

- 上にボックスを追加

- 下にボックスを追加

- 左にボックスを追加

- 右にボックスを追加

16.5.1.2.1 上にボックスを追加

「上にボックスを追加」アイコン(図16-18)をクリックすると、Boxコンポーネントが選択したBoxコンポーネントの上に追加されます。Panel Group Layoutのlayout属性はverticalに設定されます。

図16-18 「ボックス」コンポーネントの「上にボックスを追加」アイコン

図16-19は、Boxコンポーネントの隣に別のBoxコンポーネントを追加する前の「構造」ビューでのBoxコンポーネントの表示です。

図16-19 隣接する別のBoxコンポーネントを追加する前のBoxコンポーネント

図16-20は、コンポーネント・ナビゲータで垂直に整列された2つのBoxコンポーネントを示しています。

図16-20 上に追加されたBoxコンポーネント

ユーザーは、「上にボックスを追加」アイコンを繰り返しクリックして、多くの連続したBoxコンポーネントを同じ親Panel Group Layoutの中に垂直に追加できます。

16.5.1.2.2 下にボックスを追加

「下にボックスを追加」アイコン(図16-21)をクリックすると、Boxコンポーネントが選択したBoxコンポーネントの下に追加されます。Panel Group Layoutのlayout属性はverticalに設定されます。

図16-21 「ボックス」コンポーネントの「下にボックスを追加」アイコン

ユーザーは、「下にボックスを追加」アイコンを繰り返しクリックして、多くの連続したBoxコンポーネントを同じ親Panel Group Layoutの中に垂直に追加できます。

16.5.1.2.3 左にボックスを追加

「左にボックスを追加」アイコン(図16-22)をクリックすると、Boxコンポーネントが選択したBoxコンポーネントの左に追加されます。Panel Group Layoutのlayout属性はhorizontalに設定されます。

図16-22 「ボックス」コンポーネントの「左にボックスを追加」アイコン

図16-23は、コンポーネント・ナビゲータで水平に整列された2つのBoxコンポーネントを示しています。

図16-23 左に追加されたBoxコンポーネント

ユーザーは、「左にボックスを追加」アイコンを繰り返しクリックして、多くの連続したBoxコンポーネントを同じ親Panel Group Layoutの中に水平に追加できます。

16.5.1.2.4 右にボックスを追加

「右にボックスを追加」アイコン(図16-24)をクリックすると、Boxコンポーネントが選択したBoxコンポーネントの右に追加されます。Panel Group Layoutのlayout属性はhorizontalに設定されます。

図16-24 「ボックス」コンポーネントの「右にボックスを追加」アイコン

ユーザーは、「右にボックスを追加」アイコンを繰り返しクリックして、多くの連続したBoxコンポーネントを同じ親Panel Group Layoutの中に水平に追加できます。

16.5.2 タスク・フロー内のコンテンツの編集

Oracle ADFタスク・フローは、1つ以上のビューから構成され、タスク・フローの各ビューはページまたはページ・フラグメントと関連付けられています。タスク・フローをページに追加すると、現在のビューに関連付けられたフラグメントのコンテンツがページに表示されます。コンポーザでは、ユーザーは、タスク・フローの現在のビューで使用されるページまたはフラグメントのコンポーネントを編集できます。タスク・フローのページまたはフラグメントに対して変更が行われるため、変更は、タスク・フローのページまたはフラグメントが使用されるすべての場所に反映されます。

「構造」ビューには、タスク・フローを開き、コンポーネント・ナビゲータでそのページまたはフラグメントにあるコンポーネントのみを表示するオプションが用意されています。ユーザーは、ページまたはフラグメントを編集し、タスク・フローを閉じて、そのタスク・フローを含むページにナビゲートして戻ることができます。

タスク・フローのカスタマイズ権限を持つユーザーは、そのページまたはフラグメントを編集できます。

コンポーネント・ナビゲータの各タスク・フローは、図16-25に示すように、その隣に「タスク・フローの編集」リンクを表示します。

図16-25 タスク・フローの「タスク・フローの編集」リンク

「タスク・フローの編集」リンクをクリックすると、「構造」ビューがズーム・インし、タスク・フローのページとそのコンポーネントが表示されます(図16-26)。

図16-26 タスク・フロー内のコンポーネント

ユーザーは、タスク・フローのページでコンポーネントを選択し、他のページのコンポーネントの編集と同様にコンポーザでこれを編集できます。ただし、コンポーザは、あるタスク・フローから別のタスク・フローへのコンポーネントの移動をサポートしていません。

複数のユーザーが同時に同じタスク・フローを編集しようとすると、互いに注意するようそれぞれのユーザーに警告する並行性警告がコンポーザに表示されます。ただし、この警告は、サンドボックスがアプリケーションで構成されている場合のみ表示されます。このような場合に変更がどのように保存されるかについての詳細は、「並行編集時の処理」を参照してください。

開いているタスク・フローの隣の「閉じる」リンクをクリックすると、コンポーネント・ナビゲータは、このタスク・フローを含むページを表示します。

16.5.2.1 タスク・フローのリセット

「構造」ビューのツールバーにある「タスク・フローのリセット」ボタン(図16-27)は、タスク・フローに対して行われたアプリケーションのカスタマイズを削除し、これを前に保存されたバージョンまたは元のデフォルトの状態にリセットするオプションを提供する「タスク・フローのリセット」ダイアログを起動します。タスク・フローを前に保存されたラベルの状態に確実にリセットできるのは、アプリケーションがデータベース・ストアを使用するように構成されている場合のみです。「タスク・フローのリセット」ボタンは、タスク・フローへのズーム・イン時にのみレンダリングされます。

注意:

アプリケーションで「ページのリセット」ボタンを無効にすると、「タスク・フローのリセット」ボタンも無効になります。ユーザーは、変更を行った後にはタスク・フローをリセットできません。詳細は、第16.5.14項「ページのリセット」を参照してください。

図16-27 「タスク・フローのリセット」ボタン

特定のラベルへのロールバック

アプリケーションがデータベース・ストアを使用するように構成されている場合、ユーザーがアプリケーションのカスタマイズを保存するたびに新しいバージョンのタスク・フローが生成されます。アプリケーションにサンドボックスが構成されている場合、SAVED_LABEL_%規則を備えたラベルを作成することによって、コンポーザによってタスク・フローを確実に次のようにリセットできます。

- SAVED_LABEL_%規則に従うラベル名が1つのみの場合、コンポーザはタスク・フローをそのラベルの状態にリセットします。

- SAVED_LABEL_%規則に従うラベル名がない場合、コンポーザはタスク・フローを元のデフォルトの状態にリセットします。

- SAVED_LABEL_%規則に従うラベルが複数ある場合、コンポーザはタスク・フローをそれらの内で最新のラベルの状態にリセットします。

特定のラベルにロールバックするには、サンドボックスを使用するようにアプリケーションを構成しておく必要があります。具体的には、カスタマイズされるタスク・フローのネームスペースは、アプリケーションのadf-config.xmlファイルの<metadata-namespaces>セクションで定義する必要があります。詳細は、第21.2.1項「コンポーザのサンドボックスの作成を有効にする方法」を参照してください。

特定のラベルにロールバックすることは、カスタマイズ・メタデータに対する依存性がアプリケーションにあり、タスク・フローを元の状態にリセットすると問題が発生する場合に便利です。

ユーザーがタスク・フローをリセットすると、次の変更が発生します。

- 現在選択されているフラグメントのみがリセットされます。タスク・フローのその他のフラグメントはリセットされません。

- ネストされたタスク・フローはリセット操作によって影響を受けません。

- タスク・フローがリセットされると、変更は、このタスク・フローを使用するすべてのページに反映されます。

- 実行時にタスク・フローに追加されたコンポーネントは削除されます。ただし、タスク・フローのページまたはフラグメントでテンプレートを使用している場合、テンプレートにあるPanel Customizableコンポーネント内に追加されたコンポーネントは削除されません。

例16-1は、SAVE_LABEL_接頭辞を持つラベルを作成するサンプル・コードを示しています。

例16-1 SAVE_LABEL_接頭辞を持つラベルを作成するコード

import oracle.mds.versioning.VersionHelper;
import oracle.mds.naming.Namespace;

. . .
long labelNumber = (long)(Math.random() * 1000000000);
String savedlabel = "SAVE_LABEL_" + labelNumber;

MDSInstance mdsInstance = (MDSInstance)ADFContext.getCurrent().getMDSInstanceAsObject();

VersionHelper vh = VersionHelper.get(mdsInstance);

Namespace[] validNamespaces = new Namespace[1];
Namespace pageNamespace = Namespace.create(<pagePath or taskflow path>, NamespaceRestriction.CUSTOMIZATIONS);

validNamespaces[0] = pageNamespace;
vh.createLabel(savedlabel, null, validNamespaces);

16.5.3 宣言型コンポーネント内のコンテンツの編集

アプリケーション・ページに宣言型コンポーネントが含まれている場合、ユーザーはコンポーザでこれらのコンポーネントを編集できます。宣言型コンポーネントの編集は、タスク・フローの編集と似ています。詳細は、第16.5.2項「タスク・フロー内のコンテンツの編集」を参照してください。

図16-28および図16-29は、宣言型コンポーネントで使用可能な「コンポーネントの編集」オプションと「閉じる」オプションを示しています。

図16-28 宣言型コンポーネントの編集オプション

図16-29 宣言型コンポーネントを編集中に表示される「閉じる」オプション

16.5.4 ページ・コンテンツの再配置

この機能では、たとえば、最も役に立つコンテンツがページの上部に移動できるように、最も簡単に使用できる場所に基づいて、ユーザーはページのコンポーネントを編成できます。ページ上のコンテンツを次の方法で再配置できます。

- ページにある同じPanel Customizableコンポーネント内またはPanel Customizable(あるいはBox)コンポーネントの間でコンポーネントをドラッグ・アンド・ドロップします。

- Show Detail Frameまたはポートレットの「アクション」メニューにある「移動」アクションを使用して、これを親Panel Customizableコンポーネント内で移動します。Panel Customizableコンポーネントの子コンポーネントの数、およびそれらのコンポーネントの向きに応じて、コンポーネントを左、右、上または下に移動できます。

- コンテナ内でコンポーネントを順序変更するには、コンテナの「コンポーネント・プロパティ」ダイアログで、「子コンポーネント」タブをクリックし、子コンポーネントそれぞれに表示される上下の矢印を使用します(図16-30)。

注意:

カスタマイズが制限されているコンポーネントは、その親がカスタマイズ可能である場合、その親コンテナ内で再配置できます。

「子コンポーネント」タブには、直接の子コンポーネントのリストをタブの上部に表示し(「コンポーネント」リスト)、次にそのコンポーネントに対して定義されたすべてのファセットのリストを表示します(「固定コンポーネント」リスト)。ファセット・コンポーネントは再配置できないため、これらのコンポーネントには上下の矢印はありません。「固定コンポーネント」リストは、コンポーネントにファセットが含まれている場合のみ表示されます。

図16-30 コンテナの「子コンポーネント」タブの順序変更オプション

- 「構造」ビューのツールバー(図16-31)上の「切取り」および「貼付け」を使用します。「貼付け」メニューを使用すると、ユーザーは、コンポーネント・ナビゲータでコンポーネントを他の任意のコンポーネントの中、前または後ろに貼り付けることができます。

図16-31 「構造」ビューのツールバーの「切取り」オプションおよび「貼付け」オプション

「切取り」ボタンおよび「貼付け」ボタンは、ユーザーが切取りまたは貼付けの操作をサポートしていないコンポーネントを選択した場合にはグレー表示されます。切取りおよび貼付けの操作は、次の条件ではサポートされません。

- ターゲット・コンポーネントが切り取ったコンポーネントと同じページにない場合。

- ターゲット・コンポーネントが切り取ったコンポーネント内部にネストされている場合。

- ターゲット・コンポーネントがファセットされたコンポーネント(つまり、ファセット内部のコンポーネント)の前または後ろにある場合。

- ターゲット・コンポーネントの親がカスタマイズ可能でない場合。

- 切り取ったコンポーネントの親がカスタマイズ可能でない場合。

注意:

カスタマイズが制限されているコンポーネントは、その親がカスタマイズ可能である場合、その親コンテナ内で再配置できます。

例: カスタマイズ可能ページにADF Faces Tableコンポーネントが含まれている場合、コンポーザの「構造」ビューで、ユーザーは表および列グループ内またはこれらの間で列を順序変更または移動できます。コンピュータのアクセサリを販売するために作成したサンプル・アプリケーションについて考えてみます。このアプリケーションのホーム・ページには、ソフトウェアおよびハードウェアの販売に関する詳細を含む2つの表があります。ハードウェア・オプションの表には3つの列があります。ハード・ディスクの列には、図16-32に示すように、列グループ内に磁気ディスクおよび半導体の列があります。

図16-32 サンプル・アプリケーションの表

ユーザーは、「構造」ビューに切り替えて、ハード・ディスク列内で磁気ディスクと半導体の列を順序変更したり、これらを列グループ外に移動して他の任意の列(ワイヤレスの列など)の隣に貼り付けることができます。

ユーザーは、列を選択し、「切取り」をクリックしてから別の列を選択し、「前に貼付け」または「後に貼付け」をクリックできます。

16.5.5 コンポーネントのプロパティおよびパラメータの編集

「コンポーネント・プロパティ」ダイアログを使用すると、ユーザーは、ポートレットやタスク・フローなどのコンポーネントに関連付けられたコンポーネントのプロパティおよびパラメータを編集できます。

注意:

コンポーネントは次の場合には編集できません。

- 設計時に、コンポーネントにId属性が設定されなかった場合

- コンポーネントまたはその属性のいずれかが制限されている場合
カスタマイズの制限の詳細は、第22章「コンポーザ・コンポーネントのデフォルトのセキュリティ動作の変更」を参照してください。

- これがADF Facesライブラリのコンポーネントである場合

「コンテンツの追加」ビューおよび「デザイン」ビューで、コンポーネントの「編集」アイコンをクリックすると、図16-33に示すように「コンポーネント・プロパティ」ダイアログが表示されます。

図16-33 「コンポーネント・プロパティ」ダイアログ

「表示オプション」タブでは、ユーザーは、背景やタイトルなどの視覚的なプロパティを編集できます。「パラメータ」タブが使用可能な場合、ユーザーはこのタブを使用して、ポートレットやタスク・フローなどのコンポーネントのパラメータを編集できます。

「コンポーネント・プロパティ」のカスタマイズの視覚的な意味

「表示オプション」タブにあるプロパティの隣のアイコンは、プロパティが実行時に編集されたことを意味します。2つの異なるアイコンが使用され、現在のコンテキストおよび異なるレイヤーで行われた変更を示します。図16-34は、プロパティが更新されたことを示すために使用される2つの異なるアイコンを示しています。

注意:

プロパティのカスタマイズの視覚的意味は、アプリケーションで複数のカスタマイズ・レイヤーを構成した場合のみ関係します。詳細は、第21.3項「カスタマイズ・レイヤーの表示モードおよび編集モードへの追加: 例」を参照してください。

図16-34 プロパティのカスタマイズの視覚的意味

「コンポーネント・プロパティ」ダイアログでは、ユーザーは、現在のコンテキストの視覚的プロパティをリセットすることもできます。詳細は、第16.5.6項「現在のレイヤーのコンポーネント・プロパティのリセットとオーバーライド」を参照してください。

16.5.6 現在のレイヤーのコンポーネント・プロパティのリセットとオーバーライド

ユーザーは、現在のレイヤーのコンポーネント・プロパティに対して行ったアプリケーションのカスタマイズをリセットおよびオーバーライドできます。「コンポーネント・プロパティ」ダイアログには、「コンポーネント・プロパティ」ダイアログのパネルにある特定のプロパティまたはすべてのプロパティをリセットするオプションが用意されています。

プロパティのコンテキスト・メニューにある「オーバーライド」オプション(図16-35)を使用すると、ユーザーは、別のレイヤーの値を現在のレイヤーの固定値として使用できます。たとえば、ユーザーは、レイヤーXのMovable BoxコンポーネントにあるShort Descプロパティを編集して、これをFirst Frameに設定します。別のレイヤーYでこのコンポーネントを編集しているユーザーは、First FrameをレイヤーYのShort Descの固定値として選択できます。レイヤーYのこのコンポーネントにアクセスしているすべてのユーザーには、今後この値が表示されます。Short Descの値は、レイヤーXでこの値が変更されてもレイヤーYでは変更されません。ユーザーがプロパティに値を入力すると、そのプロパティの「オーバーライド」オプションはグレー表示されます。

図16-35 「コンポーネント・プロパティ」ダイアログの「リセット」オプションと「オーバーライド」オプション

プロパティのコンテキスト・メニューにある「リセット」オプションを使用すると、ユーザーは、そのプロパティを元の状態にリセットできます。プロパティがそのレイヤーで編集されたことがない場合、またはユーザーがそのプロパティを表示された値(別のレイヤーから取得)でオーバーライドすることを選択した場合、「リセット」オプションはグレー表示されます。

「すべてリセット」ボタンを使用すると、ユーザーは、「表示オプション」タブにあるすべてのプロパティをリセットできます。ユーザーは、「表示オプション」タブでレンダリングされた視覚的なプロパティに適用されたアプリケーションのカスタマイズのみをリセットできます。

注意:

「リセット」オプションと「すべてリセット」ボタンは、コンポーネントが新しく作成された場合または現在のレイヤーで変更された属性がない場合には使用できません。

16.5.7 リソース文字列の編集

コンポーザで編集されたコンポーネント・プロパティは、現在の言語でのみ使用できます。たとえばタスク・フローをページに追加する場合、コンポーザで入力するタスク・フロー・タイトルは現在の言語でのみ使用可能です。そのため、別のロケールのユーザーには、そのようなプロパティの翻訳された値が表示されません。実行時に編集されたコンポーネント・プロパティの言語サポートを提供するために、コンポーザではユーザーは、文字列値を取るプロパティのリソース文字列を編集できます。これは、JDeveloperが提供するリソース文字列エディタ機能に似ています。コンポーザでリソース文字列に対して行った変更は、アプリケーション・オーバーライド・バンドルに保存されます。バンドルは翻訳に送られ、翻訳されたバージョンがアプリケーションに戻されます。こうして、ユーザーは自身の言語でプロパティ値を表示できます。

オーバーライド・バンドルおよび既存(リリース11.1.1)のPortal Frameworkアプリケーションでのリソース文字列編集の構成の詳細は、第20.12項「実行時リソース文字列編集の構成」を参照してください。

実行時、文字列値を取ることができるコンポーネント表示オプションについては、プロパティ・フィールドの隣の「編集」メニューで、図16-35に示すように、「テキスト・リソースの選択」オプションが提供されます。ユーザーは、このオプションを選択して、プロパティのリソース文字列を編集できます。

「テキスト・リソースの選択」ダイアログ(図16-36)には、既存のリソースを検索するオプション、リソース・キーを編集または削除するオプションおよび新しいリソース・キーと値のペアを追加するオプションが用意されています。

図16-36 「テキスト・リソースの選択」ダイアログ

「テキスト・リソースの選択」ダイアログは、次のものを表示します。

- 「キー」フィールド: 新しいキー名の指定または既存の名前の変更を行います。これは、リソース・バンドルのロケール固有のオブジェクトを一意に識別するために使用される文字列値です。
このキー名には、リソースが属しているMDSレイヤーが自動的に接頭辞として付いています。この接頭辞は、実行時に作成されたキーと設計時に作成されたキーを区別する際に役に立ちます。

既存のキーに対して表示される「編集」アイコンと「新規キー/値」アイコン(図16-37)を使用すると、ユーザーは次のタスクを実行できます。

- 編集: 既存のリソース文字列のキー値を変更します。新しい値を持つ文字列は、オーバーライド・バンドルに保存されます。

- 新規キー/値: アプリケーション・オーバーライド・バンドルにキーと値のペアを作成します。

図16-37 リソース文字列キーを作成および編集するためのアイコン

ユーザーが編集できるのは、同じMDSレイヤーで作成された文字列のみです。その他の文字列は、読取り専用として表示されます。

注意:

「テキスト・リソースの選択」ダイアログで値を直接入力してリソース・バンドルのデフォルトのコンテンツをオーバーライドしようとすると、この変更は有効にならず、空白ページが表示されます。

したがって、「テキスト・リソースの選択」ダイアログで値を直接入力するのではなく、新しいリソース文字列を作成することをお薦めします。

- 「表示値」フィールド: リソース文字列を指定してUIでの表示用に変換するかまたは既存の文字列を変更します。

- 「説明」フィールド: リソースの翻訳可能な説明を指定するかまたは既存の説明を変更します。

- 「作成」ボタン: 新しいリソース文字列を作成します。「作成」ボタンをクリックすると、検索結果表に、新しいリソースを作成するための入力フィールドを備えた新しい行が用意されます。ユーザーは、行の内側をダブルクリックし(図16-38)、「キー」、「表示値」および「説明」に値を指定してから「OK」をクリックして新しい文字列を作成できます。

図16-38 検索結果表で新しいリソース文字列を作成するためのフィールド

ユーザーは、オーバーライド・バンドルに保存される非アクティブ文字列を作成できるのみです。最後の列の「使用」ボタンをクリックすると、現在のプロパティ値として文字列を使用することが選択されます。

- 「削除」ボタン: 選択したリソースを検索結果表から削除します。

- 「検索」フィールド: 既存のリソースを検索します。ユーザーは、同じレイヤー、異なるMDSレイヤーまたは設計時にJSPXファイルで定義および使用されたリソース・バンドルで作成された文字列を検索できます。

- 「リフレッシュ」: 検索結果表をリフレッシュします。

- 検索結果表: 検索結果を表示し、文字列を編集し、新しい文字列に値を指定します。
ユーザーは、同じレイヤーで作成された文字列を編集できます。設計時または別のMDSレイヤーで作成されたその他の文字列は、プロパティで使用できるだけで編集できません。

リンクまたはステータス・インジケータ・トグルは最後の列に表示され、ユーザーは文字列をアクティブにしたり、翻訳対象リソースにしたり、文字列をアクティブ・リソースとして指定できます(図16-39)。

図16-39 リソース文字列の「アクティブ」ステータス

注意:

設計時に作成されたリソース文字列を検索すると、コンポーザは、JSPXファイルでリソース文字列を指定するときに使用されるc:setタグを検索します。

次の例は、JSPXページでComposerBundleを定義する際に使用されるc:set要素を示しています。

<c:set var="portalBundle"
value="#{compBundle['test.resource.ComposerBundle']}"/>

ノート

- コンポーザは、実行時に約500のリソース文字列の作成をサポートします。この数を超えると、アプリケーションのパフォーマンスは低下します。

- リソース文字列エディタの検索条件では、大文字と小文字が区別されます。

- 検索文字列の説明を検索するには、ユーザーは検索条件に完全な文字列値を指定する必要があります。

- JDeveloperの「プロパティ・バンドル」または「リスト・リソース・バンドル」で作成されたエントリの文字列説明は、リソース文字列エディタには表示されません。

- リソース文字列を編集するオプションは、「パラメータ」タブと「イベント」タブのプロパティには無効です。
ADFリソースのEL値がページ・パラメータ、タスク・フロー・パラメータ、ポートレット・パラメータなどのページ定義パラメータで参照される場合、ELをバインドすると空の値が返されます。ユーザーは、ページ定義パラメータでADFリソースのEL値を参照しないようにする必要があります。

16.5.8 コンポーネントの表示または非表示

ユーザーは、ページで様々なオプションを使用してコンポーネントの表示と非表示を選択できます。ユーザーは、次の方法でコンポーネントを非表示または表示にできます。

注意:

動作の表示または非表示がコンポーネントのrenderedプロパティに関連付けられます。ユーザーがコンポーネントを非表示にする場合、renderedプロパティはfalseに設定されます(またはこの逆)。コンポーネントのrendered属性がEL値の場合は、その値は表示または非表示オプションの使用時に失われます。値はtrueまたはfalseに設定されます。

- コンポーネントの「編集」アイコンをクリックします。「コンポーネント・プロパティ」ダイアログで、「コンポーネントの表示」チェック・ボックスを選択解除します(図16-40)。

図16-40 「コンポーネント・プロパティ」ダイアログの「コンポーネントの表示」オプション

「コンポーネントの表示」チェック・ボックスを選択解除して、ダイアログの「適用」または「OK」をクリックすると、ページにコンポーネントが再度レンダリングされます。

- コンポーネントを非表示にするには、コンポーネント・ナビゲータまたは「構造」ビューのページでコンポーネントを右クリックし、コンテキスト・メニューで「コンポーネントの非表示」を選択します(図16-41)。

図16-41 ページの「構造」ビューの「コンポーネントの非表示」オプション

非表示のコンポーネントはページに表示されませんが、コンポーネント・ナビゲータにはグレー表示されます。非表示コンポーネントのコンテキスト・メニューには、「コンポーネントの表示」オプションが表示され、ページのコンポーネントが再度レンダリングされます。

注意:

動作の表示または非表示がコンポーネントのrenderedプロパティに関連付けられます。ユーザーがコンポーネントを非表示にする場合、renderedプロパティはfalseに設定されます(またはこの逆)。コンポーネントのrendered属性がEL値の場合は、その値は表示または非表示オプションの使用時に失われます。値はtrueまたはfalseに設定されます。

16.5.9 コンポーネントの削除

ユーザーは、ページのヘッダーにある「削除」アイコンをクリックして、ページからコンポーネントを削除できます。

ユーザーは「削除」ダイアログで削除の確認を求められます。

注意:

コンポーネントに対してカスタマイズ制限を定義した場合、そのコンポーネントに対する「削除」アイコンは実行時に無効になります。詳細は、第22.1.1項「タイプ・レベルのカスタマイズ・ポリシーの定義方法」を参照してください。

16.5.10 レイアウトの変更

「レイアウトの変更」アイコンを使用すると、ユーザーは8つの事前定義されたレイアウトのセットからレイアウトを選択できます。デフォルトのページ・レイアウトはthreeColumnです。

「構造」ビューで、ユーザーはLayout Customizableコンポーネントを選択し、そのプロパティを表示できます。レイアウト・オプションは、「コンポーネント・プロパティ」ダイアログに表示されます。ユーザーは、任意の事前定義されたレイアウトを選択し、「適用」または「OK」をクリックできます。

注意:

ユーザーが事前定義されたレイアウト・オプションを使用できるのは、設計時にページにLayout Customizableコンポーネントを追加した場合のみです。詳細は、第16.6.5項「Layout Customizable」を参照してください。

16.5.11 ページ・プロパティの編集

「ページ・プロパティ」ダイアログでは、ユーザーは、ページのパラメータの作成または編集およびプロパティの表示を実行できます。図16-42は、「ページ・プロパティ」ダイアログの「表示オプション」タブを示しています。

図16-42 「ページ・プロパティ」ダイアログ

「パラメータ」タブで、ユーザーは、コンポーネント・プロパティにリンク可能なページ・パラメータを作成し、ページ上のコンポーネントをページ・コンテキストに適応させることができます。たとえば、ページにSYMBOLというパラメータがあり、このデフォルト値がORCLであるとします。このページには、株式グラフ、株価および会社情報のタスク・フローが含まれているとします。これらのタスク・フローは、これらすべてのタスク・フローがSYMBOLの値の変化に応答し、これに応じて更新されるようにページ・パラメータでリンクすることができます。

16.5.12 子コンポーネントの表示名のカスタマイズ

ページ上のコンポーネントは、多数の子コンポーネントの親である場合があります。親コンポーネントのプロパティを表示すると、「コンポーネント・プロパティ」ダイアログの「子コンポーネント」タブに記載されたその親の子コンポーネントを検索できます。複数の子コンポーネントが同じタイプの場合、それらを子コンポーネントのリストで互いに区別できないことがあります。たとえば、panelGroupLayoutコンポーネントはそのlayout属性の値を表示名として使用します(例: vertical)。そのため、「構造」ビューでは図16-43に示すように、複数のpanelGroupLayoutコンポーネントが子コンポーネントのリストですべて同じ名前になる場合があります。

図16-43 子コンポーネント名: 「構造」ビューおよび「コンポーネント・プロパティ」ダイアログ

特定の子コンポーネントを特定して操作する必要がある場合、ページのソース・コードを編集して任意のコンポーネントに一意の表示名を指定し、容易に識別できるようにすることが可能です。この表示名は、ヒント・テキストと「コンポーネント・プロパティ」ダイアログに表示されます。この機能を実装するカスタム属性はcomposer_name_hintで、次のように<f:attribute>を使用して指定できます。

構文:

<f:attribute name="composer_name_hint" value="display_name"/>

例:

<af:panelGroupLayout id="pgl1" layout="scroll" inlineStyle="">
<f:attribute name="composer_name_hint" value="Main Area"/>
</ af:panelGroupLayout>

図16-44に、親panelCustomizable (Box)コンポーネントに対する「コンポーネント・プロパティ」ダイアログの「子コンポーネント」タブを示します。子の親コンポーネントには4つのpanelCustomizable (Box)子コンポーネントが含まれます。

この表示名Boxは親コンポーネントと4つの子コンポーネントに使用され、それらを識別することはできません。

図16-44 composer_name_hintを定義していないコンポーネント: 「構造」ビューと「コンポーネント・プロパティ」ダイアログ

これらのコンポーネントの表示名をカスタマイズするために、ソース・コードを編集してcomposer_name_hint属性を各コンポーネントに追加できます。composer_name_hint 値は、次の場所で公開されています。

- 「構造」ビューでは、composer_name_hint値がコンポーネントのヒント・テキストとして表示されます(図16-45)。

図16-45 composer_name_hintが定義されたコンポーネント: 「構造」ビューのヒント・テキスト

- 「選択」ビューで選択したコンポーネントを右クリックすると、コンポーネントやその親コンポーネントのcomposer_name_hint値を示すコンテキスト・メニューが表示されます(図16-46)。

図16-46 composer_name_hintが定義されたコンポーネント: 「選択」ビューのヒント・テキスト

- コンポーネントの「コンポーネント・プロパティ」ダイアログには、タイトルにcomposer_name_hint値が含まれます(図16-47)。

- 親コンポーネントの「コンポーネント・プロパティ」ダイアログでは、「子コンポーネント」タブにcomposer_name_hint値を表示名として使用する各子コンポーネントの一覧が示されます(図16-47)。

図16-47 <f:attribute>が定義されたコンポーネント: 「コンポーネント・プロパティ」ダイアログ

図16-47に示された親Box (panelCustomizable)コンポーネントとその4つの子Boxコンポーネントに対するこのページのソース・コードは、次のようになります。

<af:showDetailItem id="82127" text="Project XYZ" xmlns:af="http://xmlns.server.com/adf/faces/rich" disclosed="true" inflexibleHeight="100">
<cust:panelCustomizable id="45399" layout="scroll" xmlns:cust="http://xmlns.server.com/adf/faces/customizable">
<f:attribute name="composer_name_hint" value="Project XYZ content area"/>
<cust:panelCustomizable id="273" xmlns:cust="http://xmlns.server.com/adf/faces/customizable">
<f:attribute name="composer_name_hint" value="header area"/>
</cust:panelCustomizable>
<cust:panelCustomizable id="959" xmlns:cust="http://xmlns.server.com/adf/faces/customizable">
<f:attribute name="composer_name_hint" value="dept area"/>
</cust:panelCustomizable>
<cust:panelCustomizable id="393" xmlns:cust="http://xmlns.server.com/adf/faces/customizable">
<f:attribute name="composer_name_hint" value="employee area"/>
</cust:panelCustomizable>
<cust:panelCustomizable id="941" xmlns:cust="http://xmlns.server.com/adf/faces/customizable">
<f:attribute name="composer_name_hint" value="project area"/>
</cust:panelCustomizable>
</cust:panelCustomizable>
</af:showDetailItem>

16.5.13 ページ・パラメータへのコンポーネントの関連付け

コンポーザを使用すると、ユーザーは、ページ・パラメータを読み取り、それに応じて動作が変更されるように、ポートレットやタスク・フローをページ・パラメータとリンクできます。

ユーザーは、「コンポーネント・プロパティ」ダイアログを使用して、ポートレットとタスク・フロー・パラメータをページ・パラメータに関連付けられます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「ページ、タスク・フロー、ポートレットおよびADFコンポーネントの作成」の章を参照してください。

コンポーネントとページ・パラメータの関連付けに加えて、コンポーザを使用すると、ユーザーは、表示オプションおよびパラメータの値をページURLを介して渡すこともできます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のページURLによるパラメータ値の受渡しに関する項を参照してください。

16.5.14 ページのリセット

「ページのリセット」アイコンは、編集モードのページで使用できます。このアイコンは、「ページのリセット」ダイアログを起動します。このダイアログでは、現在のレイヤーまたは最上位レイヤーでページに対して行われた編集を削除し、これを前に保存されたバージョンまたは元のデフォルトの状態にリセットするオプションを使用できます。

図16-48 「ページのリセット」ダイアログ

注意:

「ページのリセット」アイコンは、コンポーザのツールバーにレンダリングされたデフォルトのアドオンです。ユーザーにページをリセットさせたくない場合、このアイコンを無効にできます。詳細は、第19.2.5項「アドオンを選択的に表示する方法」を参照してください。

特定のラベルへのロールバック

アプリケーションがデータベース・ストアを使用するように構成されている場合、ユーザーがアプリケーションのカスタマイズを保存するたびに新しいバージョンのページが生成されます。アプリケーションにサンドボックスが構成されている場合、SAVE_LABEL_%規則を備えたラベルを作成することによって、コンポーザによってページを確実に次のようにリセットできます。

- SAVE_LABEL_%規則に従うラベル名が1つのみの場合、コンポーザはページをそのラベルの状態にリセットします。

- SAVE_LABEL_%規則に従うラベル名がない場合、コンポーザはページを元のデフォルトの状態にリセットします。

- SAVE_LABEL_%規則に従うラベルが複数ある場合、コンポーザはページをそれらの内で最新のラベルの状態にリセットします。

特定のラベルにロールバックするには、サンドボックスを使用するようにアプリケーションを構成しておく必要があります。具体的には、カスタマイズされるページのネームスペースは、アプリケーションのadf-config.xmlファイルの<metadata-namespaces>セクションで定義する必要があります。詳細は、第21.2.1項「コンポーザのサンドボックスの作成を有効にする方法」を参照してください。

特定のラベルにロールバックすることは、カスタマイズ・メタデータに対する依存性がアプリケーションにあり、ページを元の状態にリセットすると問題が発生する場合に便利です。

注意:

- ユーザーは、ページで行われたアプリケーションのカスタマイズのみをリセットできます。ベース・ページまたは共有コンポーネントのページで定義されたコンポーネントはそのままになります。

- ユーザーがページをリセットすると、実行時にページに追加されたコンポーネントは削除されます。ただし、ページでテンプレートを使用している場合、テンプレートにあるPanel Customizableコンポーネント内に追加されたコンポーネントは削除されません。

例16-2は、SAVE_LABEL_接頭辞を持つラベルを作成するサンプル・コードを示しています。

例16-2 SAVE_LABEL_接頭辞を持つラベルを作成するコード

import oracle.mds.versioning.VersionHelper;
import oracle.mds.naming.Namespace;

....
long labelNumber = (long)(Math.random() * 1000000000);
String savedlabel = "SAVE_LABEL_" + labelNumber;

MDSInstance mdsInstance = (MDSInstance)ADFContext.getCurrent().getMDSInstanceAsObject();

VersionHelper vh = VersionHelper.get(mdsInstance);

Namespace[] validNamespaces = new Namespace[1];
Namespace pageNamespace = Namespace.create(<pagePath or taskflow path>, NamespaceRestriction.CUSTOMIZATIONS);

validNamespaces[0] = pageNamespace;
vh.createLabel(savedlabel, null, validNamespaces);

16.5.15 エラー検出時のアプリケーションのカスタマイズのリセット

コンポーザには、ページの破損を引き起こすカスタマイズ・エラーをユーザーに警告するメカニズムが用意されています。ユーザーは、次の方法でエラーに関する警告を受けます。

- 変更がMDSに保存される場合、「エラー」ダイアログ(図16-49)によって、ユーザーが現在のコンテキストで行った最後の変更のみまたはすべての変更をロールバックするオプションが提供されます。

図16-49 ユーザーに変更の破棄を求める「エラー」ダイアログ

- 変更がまだMDSに保存されていない場合、「エラー」ダイアログ(図16-50)は、エラーが発生し、ページが再ロードされることをユーザーに通知します。

図16-50 ページの再ロードをユーザーに通知する「エラー」ダイアログ

次の操作を実行中に発生するエラーは、ページの破損を引き起こす場合があります。

- 切取りおよび貼付けオプション使用時の間違った位置へのコンポーネントの貼付け(表の列の表外への貼付けなど)。

- コンポーネントまたはタスク・フローの追加(エラーが発生するWebサービスをコールするタスク・フローの追加など)。

- ドラッグ・アンド・ドロップの方法を使用したページへのShow Detail Frameコンポーネントの移動

16.5.16 アプリケーションのカスタマイズ保存時のラベルの作成

図16-51に示す、コンポーザのツールバーの「保存してラベル付け」ボタンを使用すると、ユーザーは、アプリケーションのカスタマイズを新しいラベルに保存できます。コンポーザで作成されたラベルはcomposer_の接頭辞を付けて格納されます。つまり、myLabelという名前で作成されたラベルはcomposer_myLabelとして格納されます。

ラベルを作成すると、ユーザーは、選択したオブジェクトのカスタマイズを選択したラベルのカスタマイズにリセットできます。これは、「カスタマイズ・マネージャ」の「プロモート」リンクを使用して実現できます。詳細は、「カスタマイズ・メタデータのプロモート」というタイトルの項を参照してください。

注意:

「保存してラベル付け」ボタンが表示されるのは、サンドボックスをアプリケーションのMDSデータベース・ストアで構成し、Page CustomizableコンポーネントのallowLabel属性をtrueに設定した場合のみです。この属性の詳細は、第B.1.1項「Page Customizableコンポーネント」を参照してください。

図16-51 コンポーザのツールバーの「保存してラベル付け」ボタン

16.5.17 アプリケーションのカスタマイズの管理

「カスタマイズ・マネージャ」はコンポーザのアドオン・パネルで、ここでユーザーは、XMLドキュメント、ページ、ページ・フラグメント、ページのタスク・フローなどのオブジェクトのカスタマイズ・メタデータを管理できます。これは、このようなすべてのオブジェクトのリストをページに表示し、これらのオブジェクトがカスタマイズされるレイヤーに関する詳細を提供します。ユーザーは、選択したオブジェクトのカスタマイズ・メタデータをダウンロードし、これを編集し、修正したメタデータ・ファイルをアップロードできます。また、「カスタマイズ・マネージャ」は、カスタマイズを削除したり、前に保存したラベルからのカスタマイズをプロモートしたりするオプションも提供します。

カスタマイズ・マネージャは、デフォルトではカスタム・アプリケーションで使用できません。特定の構成を実行することにより有効にできます。詳細は、第19.2.4項「カスタマイズ・マネージャのアドオンの表示方法」を参照してください。カスタマイズ・マネージャのアドオンをアプリケーションが表示できるように構成する場合は、図16-52に示すように、コンポーザのツールバーに「カスタマイズ・マネージャ」アイコンが表示されます。

図16-52 「カスタマイズ・マネージャ」ボタン

「カスタマイズ・マネージャ」ボタンをクリックすると、図16-53に示すように、「カスタマイズ・マネージャ」ダイアログが起動します。

図16-53 「カスタマイズ・マネージャ」ダイアログ

「カスタマイズ・マネージャ」は、各レイヤーのカスタマイズされたページ、フラグメントまたはXMLドキュメントそれぞれに対して、「削除」、「プロモート」、「ダウンロード」および「アップロード」のリンクを表示します。ユーザーは、検索フィールドでJSPX、JSFFまたはXMLのファイル名を指定し、そのファイルのオブジェクトのカスタマイズの詳細を表示し、そのカスタマイズを管理できます。ファイルを検索するには、ファイルへの絶対パス(/oracle/webcenter/portalapp/pages/home.jspxなど)を指定する必要があります。

注意:

深くネストされたタスク・フローまたは循環依存性を持つタスク・フローの場合、「カスタマイズ・マネージャ」は、最大で深度10のタスク・フローを表示します。

ユーザーは、アプリケーションが実行されている現在のMDSコンテキストでカスタマイズを管理できます。「現在のコンテキスト」列には、選択したレイヤーのカスタマイズを管理するオプションが表示されます。ドロップダウン・メニューには、ページまたはフラグメントがカスタマイズされたレイヤーがリストされます。この列は、行ったカスタマイズを管理するすべてのユーザーにとって便利です。「すべてのレイヤー」列には、アプリケーションのすべてのレイヤーのカスタマイズを管理するオプションが表示されます。この列は、すべてのレイヤーで行われたカスタマイズを管理する管理者にとって便利です。

注意:

- アプリケーションのサンドボックスを構成し、すべての「カスタマイズ・マネージャ」操作をサンドボックスで実行する場合(ユーザーがカスタマイズ・ドキュメントをアップロードする場合など)、これは、ユーザーがそのセッションで行われた変更を保存または破棄するまで、サンドボックスに格納されます。

- 選択したオプションを表示するためにのみ「カスタマイズ・マネージャ」をカスタマイズできます。たとえば、「ダウンロード」、「削除」または「アップロード」のリンクを表示または非表示にできます。さらに、現在のコンテキストの詳細のみまたはすべてのレイヤーの詳細を表示することを選択できます。
これらの設定は、カスタマイズ・マネージャ・タスク・フローのパラメータを使用して行えます。タスク・フローでパラメータ・サポートを有効にすることによって、ユーザーが実行時に「カスタマイズ・マネージャ」をカスタマイズできるようにすることも可能です。詳細は、第19.8項「プロパティ・フィルタの定義」を参照してください。

この項では、「カスタマイズ・マネージャ」によって提供される機能について説明します。次のサブセクションが含まれます:

- カスタマイズ・メタデータのダウンロード

- カスタマイズされるすべてのオブジェクトのカスタマイズ・メタデータのダウンロード

- カスタマイズ・メタデータのアップロード

- カスタマイズ・メタデータの削除

- カスタマイズ・メタデータのプロモート

カスタマイズ・メタデータのダウンロード

「ダウンロード」リンクでは、ユーザーは、選択したページ、フラグメントまたはXMLドキュメントのカスタマイズ・ドキュメントを選択したレイヤーからダウンロードできます。これは、ユーザーがコンポーネントのカスタマイズ・メタデータを編集する場合やカスタマイズ・メタデータを調査する場合に便利です。たとえば、ページにエラーが表示されている場合、ユーザーはカスタマイズをダウンロードして確認し、必要に応じてこれをOracleサポート・サービスに送信できます。こうすることによって、ページのカスタマイズの問題の診断に役立ちます。

「保存」ダイアログを使用すると、ユーザーは、ドキュメントを保存する場所を選択できます。ユーザーは、このファイルをローカルで編集し、これをサイトに再アップロードできます。ファイルのアップロードの詳細は、「カスタマイズ・メタデータのアップロード」を参照してください。

カスタマイズされるすべてのオブジェクトのカスタマイズ・メタデータのダウンロード

ページの下部にある「すべてのレイヤーに対するカスタマイズのダウンロード」リンクを使用すると、ユーザーは、「カスタマイズ・マネージャ」に表示されるすべてのカスタマイズ・ドキュメントを含むZIPファイルをダウンロードできます。

カスタマイズ・メタデータのアップロード

「アップロード」リンクを使用すると、ユーザーは、選択したアーティファクト(ページ、フラグメント、XMLドキュメントなど)のカスタマイズ・ドキュメントを特定のレイヤーにアップロードできます。図16-54は、ユーザーがアップロードするファイルを選択できる「カスタマイズのアップロード」ダイアログを示しています。

図16-54 「カスタマイズのアップロード」ダイアログ

アーティファクトは、アップロードしたドキュメントのメタデータに基づいてカスタマイズされます。

注意:

ページのFormタグのusesUpload属性は、「カスタマイズ・マネージャ」の「アップロード」リンクの表示を制御します。usesUploadをfalseに設定すると、「アップロード」リンクは動作しません。

カスタマイズ・メタデータの削除

「削除」リンクを使用すると、ユーザーは、選択したアーティファクトのカスタマイズ・ドキュメントを特定のレイヤーから削除できます。

カスタマイズ・メタデータのプロモート

ページをカスタマイズしている間、ユーザーは、任意の時点でアプリケーションのカスタマイズを保存し、新しいラベルを作成してそのカスタマイズを保存できます。「カスタマイズ・マネージャ」の「プロモート」リンクを使用すると、ユーザーは、ラベルを選択し、選択したページまたはタスク・フローのアプリケーションのカスタマイズをラベルのカスタマイズにリセットできます。

注意:

「プロモート」オプションが使用可能なのは、サンドボックス対応のアプリケーションのみです。

コンポーザの「保存してラベル付け」オプションの詳細は、第16.5.16項「アプリケーションのカスタマイズ保存時のラベルの作成」を参照してください。

「プロモート」リンクは、図16-55に示すように、プロモートされるすべての使用可能なラベルおよびファイルをリストする「ドキュメントのプロモート」ダイアログを起動します。

図16-55 「ラベルの選択」ダイアログ

ユーザーは、ラベルを選択し、そのラベルを選択したアーティファクトのサンドボックスにプロモートできます。つまり、選択したアーティファクトのアプリケーションのカスタマイズは、指定したラベルのカスタマイズにリセットされます。タスク・フローを選択した場合、すべてのページ・フラグメントおよびページ定義がプロモートされます。ページまたはフラグメントを選択した場合、ページまたはフラグメントおよびそのページ定義がプロモートされます。ユーザーは、使用可能な任意のレイヤーからラベルを選択し、そのラベルのカスタマイズをプロモートできます。たとえば、アプリケーションにレイヤーMCOOPER、JDOEおよびSITEがあり、MCOOPERレイヤーで作業しているユーザーがページの「プロモート」リンクをクリックすると、「プロモート」ダイアログに3つすべてのレイヤーで使用可能なすべてのラベルがリストされます。

16.6 コンポーザ・コンポーネント

実行時にJSPXドキュメント(*.jspx)を編集できるようにするには、アプリケーション設計時にOracle JDeveloperで、ページにコンポーザ・コンポーネントを追加する必要があります。

注意:

コンポーザは、JSPXページおよびADF Facesでのみ動作します。これらのコンポーネントはJSPページには追加できません。コンポーザ・コンポーネントのページへの追加の詳細は、第18.1項「コンポーザ・コンポーネントを使用した編集可能ページの設計」を参照してください。

JDeveloperのコンポーザ・タグ・ライブラリ(図16-56)は、コンポーネント・パレットから使用でき、ページを編集可能にするために追加できるコンポーネントを提供します。

図16-56 コンポーネント・パレットのコンポーザ・タグ・ライブラリ

この項では、ページの編集を可能にするために使用されるコンポーザ・コンポーネントの概要を説明します。次のサブセクションが含まれます:

- 第16.6.1項「Page Customizable」

- 第16.6.2項「Change Mode LinkおよびChange Mode Button」

- 第16.6.3項「Panel Customizable」

- 第16.6.4項「Show Detail Frame」

- 第16.6.5項「Layout Customizable」

これらのコンポーネントおよびその他のコンポーザ・コンポーネント(Custom Actionなど)の詳細は、付録B「コンポーザ・コンポーネントのプロパティおよびファイル」を参照してください。

16.6.1 Page Customizable

Page Customizableコンポーネントは、ページの編集可能領域を定義します。この領域内では、コンポーネントのプロパティの編集、ページへのコンテンツの追加、コンテンツの配置などを行えます。

Page Customizableコンポーネントを追加すると、実行時にコンポーザをページに含めることが可能になります。ユーザーは、ページの上部で使用できるページ関連の制御、コンポーネントの「コンテンツの追加」ボタンおよび各編集可能ページ・コンポーネントの「編集」アイコンを使用して、コンポーザでページを編集できます(図16-57)。

図16-57 Page Customizableコンポーネント

1操作で複数のアプリケーション・ページの実行時編集を可能にするには、Page Customizableコンポーネントをそれらのページに使用するADFページ・テンプレートに追加します。これにより、Page Customizableを各ページに手動で追加する必要がなくなります。Page Customizableコンポーネントの追加の詳細は、第18.1.2項「Page Customizableコンポーネントを使用した実行時カスタマイズの有効化方法」を参照してください。

16.6.2 Change Mode LinkおよびChange Mode Button

Change Mode LinkまたはChange Mode Buttonコンポーネントは、ページの表示モードから編集モードへの簡単な切替え方法を提供します。図16-58は、ページのChange Mode Linkコンポーネントを示しています。

図16-58 Change Mode Linkコンポーネント

Change Mode LinkまたはChange Mode Buttonの使用法の詳細は、第18.1.3項「Change Mode LinkまたはChange Mode Buttonを使用したページ・モードの切替えを有効にする方法」を参照してください。

16.6.3 Panel Customizable

Panel Customizableは、ユーザーが実行時にコンポーネントを追加できるページの領域を定義します。ユーザーは、Panel Customizableの子コンポーネントとして追加されるShow Detail Frameコンポーネントまたはポートレットを移動または最小化できます。ユーザーは、ページの別のPanel Customizableコンポーネントにこれらのコンポーネントをドラッグ・アンド・ドロップすることも可能です。

編集モードでは、Panel Customizableコンポーネントは、点線のボックスとしてレンダリングされます。実際、Panel Customizableは、実行時リソース・カタログではBoxと呼ばれます。図16-59に示すように、ページの各Panel Customizableコンポーネントに「コンテンツの追加」ボタンが表示されます。このボタンを使用してリソース・カタログ・ビューアを開き、Panel Customizable内にコンポーネントを追加できます。

図16-59 Panel Customizableコンポーネント

詳細は、第18.1.4項「Panel Customizableコンポーネントを使用したページの編集可能領域の定義方法」を参照してください。

16.6.4 Show Detail Frame

Show Detail Frameコンポーネントは、アイコンを含むヘッダーとともに子コンポーネントの周りに境界またはクロムをレンダリングし、ユーザーがいくつかの操作を実行できるようにします。このメニューで使用可能なアクションでは、ユーザーがコンポーネントおよびそのコンテンツをページの新しい場所に移動できます(図16-60)。ユーザーは、Show Detail FrameコンポーネントをあるPanel Customizableコンポーネントからページにある別のPanel Customizableコンポーネントにドラッグ・アンド・ドロップすることも可能です。Show Detail Frameは、移動可能にするためにはPanel Customizableコンポーネント内に含まれている必要があります。

図16-60 Show Detail Frameコンポーネント

Show Detail Frameコンポーネントは次のアクションを可能にします。

- コンポーネントを縮小および展開します

- ページの別の場所にコンテンツを移動します

- タスク・フローを子コンポーネントとして追加した場合、「アクション」メニューを使用してカスタム・アクションとともにタスク・フロー・ナビゲーションを有効にします。

- ADF Facesの「リッチ・テキスト・エディタ」を子コンポーネントとして追加した場合、エンド・ユーザーは、「リッチ・テキスト・エディタ」のテキストを編集および保存できるようになります。

Show Detail Frameのファセットを使用すると、独自のUIコントロールを追加してコンテンツの表示をさらにカスタマイズできます。これらのファセットの使用方法の詳細は、第20.1項「ファセットを使用したShow Detail Frameコンポーネントでのカスタム・アクションの有効化」を参照してください。

このコンポーネントのページへの追加の詳細は、第18.1.6項「Show Detail Frameコンポーネントを使用したコンポーネントのカスタマイズの有効化方法」を参照してください。

16.6.5 Layout Customizable

Layout Customizableコンポーネントは、エンド・ユーザーがその子コンポーネントをいくつかの事前定義された方法(2列、3列など)でレイアウトできるコンテナです。ページのすべてのコンポーネントがLayout Customizableコンポーネントに囲まれるような方法でページを設計できます。このような場合、レイアウトはページ全体に適用されます。

レイアウト変更を使用して事前定義されたレイアウトにアクセスします。デフォルトでは、レイアウト変更は、ページの表示モードとページの編集モードの両方で表示されます。Layout Customizableコンポーネント属性を使用することによって、レイアウト変更をアイコン、テキストまたはアイコンおよびテキストとして表示することを選択できます。また、表示モードでレイアウト変更を表示するか非表示にするかを決定できます。図16-61は、ユーザーがレイアウト変更をクリックしたときに表示するLayout Customizableコンポーネントおよび事前定義されたレイアウトを示しています。

図16-61 Layout Customizableコンポーネント

詳細は、第18.1.5項「Layout Customizableコンポーネントを使用したページのレイアウトのカスタマイズの有効化方法」を参照してください。

16.7 セキュリティおよびコンポーザ

エンド・ユーザー、アプリケーション開発者および管理者によってアクセスされるアプリケーションでは、すべての編集タスクの実行をすべてのユーザーに許可することは推奨されない場合があります。たとえば、コンポーネントの再配置や表示したくない領域の非表示などのタスクを実行することによってページの表示をカスタマイズすることのみをエンド・ユーザーに許可する必要がある場合があります。一方、アプリケーション開発者は、ページのコンテンツ、コンポーネント・プロパティなどを更新することを許可される必要があります。ページ、コンポーネントまたはコンポーネント属性をカスタマイズする機能は、タグ、ページ、コンポーネントおよび属性のレベルでセキュリティ定義から継承されます。ただし、ビジネス要件に合せてデフォルトのセキュリティ定義を様々なレベルでオーバーライドできます。

ページ、操作、コンポーネント、コンポーネント属性などの様々なレベルでアプリケーション・セキュリティを定義できます。コンポーネントでアプリケーション・カスタマイズを制限できるいくつかの方法があります。コンポーザは、コンポーネントがこれらのルールに従ってカスタマイズできるかどうかを判断します。たとえば、ユーザーがコンポーネントをカスタマイズするには、その前に、アプリケーション・カスタマイズが許可されるかどうかを判断するために、コンポーネントのセキュリティ制限のソースを問い合せます。コンポーネントがアプリケーション・カスタマイズを許可しない場合、コンポーザはこれが制限されているとみなします。つまり、コンポーザはコンポーネントを明示的にセキュリティ保護されているものとして処理します。表16-1に、アプリケーション・カスタマイズ制限を反映するコンポーザの動作を示します。

表16-1 コンポーザ・コンポーネントのカスタマイズ制限

制限

動作

ページ(およびそのコンテンツ)をカスタマイズ可能

コンポーザにより、制限なしでコンポーネントの編集が許可されます。

ページが制限されている

コンポーザは表示されますが、どのオプション(「ページ・プロパティ」、「編集」アイコンなど)にもアクセスできません。

いくつかの操作が制限されている

コンポーザは表示されますが、制限された操作に対応するオプションは無効になります。

コンポーネントが制限されている

「編集」アイコンはコンポーネントにレンダリングされず、そのプロパティは編集できません。

コンポーネントの属性が制限されている

制限された属性はコンポーザに表示されません。

開発者は、コンポーザのAPIを使用して、コンポーネントの属性が制限されているかどうかを確認できます。

セキュリティを実装中に付与される権限に応じて、ユーザーは、アプリケーションにログインするときに、異なるユーザーおよびアプリケーションのカスタマイズのタスクを実行できます。

注意:

保護されたアプリケーションでは、すべてのユーザーの権限を確認し、権限のあるユーザーに対してのみページ上で「編集」リンクまたはボタンを有効にすることをお薦めします。認証されていないユーザーが偶然ページの編集モードに入った場合でも、コンポーネント・プロパティの変更が可能です。

選択したユーザーの「編集」リンクまたはボタンを有効にするには、Change Mode LinkまたはChange Mode Buttonコンポーネントのrendered属性のEL値を指定します。詳細は、第B.1.2項「Change Mode LinkおよびChange Mode Button」を参照してください。

この項では、コンポーザ・コンポーネントのデフォルトのセキュリティ動作について説明します。次のサブセクションが含まれます:

- 第16.7.1項「ページおよびタスク・フローのセキュリティ」

- 第16.7.2項「MDSのカスタマイズ制限」

- 第16.7.3項「コンポーネントのアクション・レベルのセキュリティ」

デフォルトのセキュリティ動作のオーバーライドの詳細は、第22章「コンポーザ・コンポーネントのデフォルトのセキュリティ動作の変更」を参照してください。

16.7.1 ページおよびタスク・フローのセキュリティ

アプリケーションのjazn-data.xmlファイルは、ページ・レベルおよびタスク・フロー・レベルのセキュリティ情報のリポジトリです。コンポーザは、このファイルを参照し、ユーザーの権限に基づいて編集機能を有効にします。

- ページまたはタスク・フローのパーソナライズ権限を持っているユーザーは、第16.4項「ページ表示モードでのページのカスタマイズ」で説明しているユーザーのカスタマイズのみを実行できます。

- 編集権限またはカスタマイズ権限を持っているユーザーは、コンテンツの追加、コンポーネント・プロパティの編集、コンポーネントの削除などのすべての実行時編集タスクを実行できます。コンポーザおよびOracle WebCenter Portalのカスタマイズ可能コンポーネントは、編集権限とカスタマイズ権限を区別しません。

注意:

コンポーザおよびOracle WebCenter Portalのカスタマイズ可能コンポーネントは、付与権限をすべての権限のスーパー・セットとする権限のカスケードをサポートしています。ページまたはタスク・フローの付与権限を持つユーザーは、編集、パーソナライズおよび表示の権限を持っているとみなされます。パーソナライズ権限を持つユーザーは、表示権限も持っているとみなされます。

表16-2は、ページおよびタスク・フロー・レベルの権限に基づいたコンポーザ動作を示しています。コンポーザおよびOracle WebCenter Portalのカスタマイズ可能コンポーネントと関係のある権限のみがこの表にリストされています。付与権限は、すべての権限のスーパー・セットであるためリストされていません。付与権限を持つユーザーは、すべての編集タスクを実行できます。

表16-2 ページ権限またはタスク・フロー権限とコンポーザの動作のマッピング

権限

コンポーザの動作

編集またはカスタマイズ

ユーザーは、コンポーザが起動されたページの編集モードに切り替えてページを編集できます。

編集権限またはカスタマイズ権限のいずれかを持つユーザーは、すべての実行時編集タスクを実行できます。

ページまたはタスク・フローの編集権限またはカスタマイズ権限を持っている場合、ユーザーは次のことを実行できます。

- コンテンツの追加

- コンポーネント・プロパティの編集

- コンテンツの再配置

- コンポーザでのコンポーネントの削除

- ポートレットのパーソナライズまたはカスタマイズ

- 表示モードでのポートレットまたはタスク・フローの移動。これはユーザー・カスタマイズとして存続されます。

- 表示モードでのタスク・フローまたはポートレットの展開および縮小。これはユーザー・カスタマイズとして存続されます。

- タスク・フローでの表の列のサイズ変更。これはユーザー・カスタマイズとして存続されます。

- ページの元の状態へのリセット

- 表示モードでのコンポーネントの削除

注意: ページ・レベルの権限を持っているかまたはタスク・フロー・レベルの権限の持っているかに応じて、これらのタスクのすべてまたは一部を実行できます。

ユーザーがページの編集権限またはカスタマイズ権限を持っていないのにこれを編集しようとすると、これを行う権限がないことを示すメッセージが表示されます。

ユーザーがタスク・フローの編集権限またはカスタマイズ権限を持っていない場合、「構造」ビューにタスク・フローの「編集」オプションが表示されません。

パーソナライズ

表示モードで、ページのパーソナライズ権限を持っているユーザーは次のことを実行できます。

- コンテンツの再配置

- ポートレットのパーソナライズ

- 表示モードでのポートレットまたはタスク・フローの移動。これはユーザー・カスタマイズとして存続されます。

- 表示モードでのタスク・フローまたはポートレットの展開および縮小。これはユーザー・カスタマイズとして存続されます。

- タスク・フローでの表の列のサイズ変更。これはユーザー・カスタマイズとして存続されます。

- 表示モードでのコンポーネントの削除

注意: パーソナライズ権限を持っていても、ユーザーはポートレットのカスタマイズは実行できません。

パーソナライズ権限、編集権限、カスタマイズ権限のいずれも持っていないユーザーがページを編集しようとすると、これを行う権限がないことを示すメッセージが表示されます。

表示

表示権限を持っているユーザーは、ページまたはタスク・フローの表示のみを行え、ユーザーまたはアプリケーションのカスタマイズは実行できません。

16.7.1.1 タスク・フローのセキュリティ

タスク・フローをカスタマイズ可能ページに追加すると、コンポーザは、タスク・フローおよびタスク・フローのページのコンポーネントを編集するオプションを提供します。保護されたアプリケーションでは、コンポーザは、カスタマイズ可能なページおよびタスク・フローに提供された権限に基づいて、編集機能を提供します。タスク・フロー権限およびコンポーザの動作の詳細は、表16-2を参照してください。

アプリケーション・ページで、コンポーネントは、JSPXページに直接またはタスク・フローなどの共有コンポーネント内のページ・フラグメントに配置できます。タスク・フロー内のコンポーネントに対する制限は、ページ・フラグメントから導出されます。タスク・フローのセキュリティについて理解を深めるには、図16-62に示すような、タスク・フローを含むページで、このタスク・フローが別のタスク・フローを含む例を検討します。

図16-62 ネストされたタスク・フローを含むページの構造

このページのコンポーネントは次のようにセキュリティを継承します。

- Component1、Component2およびRegion3はDocument.jspxからセキュリティ定義を継承します。

- ComponentA、ComponentBおよびRegionCはregion3.jsffからセキュリティ定義を継承します。

- ComponentXおよびComponentYはregionC.jsffからセキュリティ定義を継承します。

タスク・フローは権限のカスケードをサポートしません。つまり、ページ権限は、タスク・フロー内のコンポーネントによって継承されません。ただし、ページの編集権限またはカスタマイズ権限を持っていないユーザーは、ページのタスク・フローをカスタマイズできません。

たとえば、Document.jspxおよびregionC.jsffの編集権限またはカスタマイズ権限を付与するがregion3.jsffの編集権限またはカスタマイズ権限を付与しない場合、ユーザーは、Component1、Component2、RegionC、ComponentXおよびComponentYはカスタマイズできますが、ComponentA、ComponentBおよびRegionCはカスタマイズできません。

保護されたアプリケーションでは、タスク・フローの権限は、アプリケーションのjazn-data.xmlファイルに格納されます。タスク・フローで使用可能なアクションのリストはタスク・フローの権限クラスoracle.adf.controller.security.TaskFlowPermissionによって定義されます。この権限クラスは、タスク・フローの操作にマップされる、タスク・フロー固有のアクションを定義します。デフォルトでは、表示権限のみがタスク・フローに与えられます。ユーザーが実行時にタスク・フローを編集できるようにするには、カスタマイズ権限がタスク・フローに付与されていることを確認する必要があります。詳細は、第18.3.1.1項「タスク・フローの追加に関する考慮事項」および第22.6項「タスク・フローのセキュリティの実装」を参照してください。

タスク・フローとそのセキュリティ動作の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

16.7.2 MDSのカスタマイズ制限

Portal Frameworkアプリケーションには、すべてのアプリケーション・オブジェクトのアプリケーションのカスタマイズを制限するデフォルトのMDS構成があります。実行時のページ編集を有効にするには、Page Customizableコンポーネントをページに追加して、このデフォルトの制限を非アクティブにする必要があります。Page Customizableコンポーネントは、その下にあるすべてのコンポーネントのアプリケーションのカスタマイズを有効にします。ただし、ネストされたページまたはフラグメントのコンポーネントのカスタマイズは有効になりません。たとえば、Page Customizableがページ・テンプレートで使用されていて、その内部にFacet Refがある場合、Facet Ref内部のコンポーネントのカスタマイズはデフォルトで有効になりません。

MDSのタイプ・レベルの制限またはインスタンス・レベルの制限を使用して、コンポーネントの一連の属性に対するアプリケーションのカスタマイズを有効化できます。タイプ・レベルの制限は、インスタンス全体の指定されたコンポーネント・タイプに適用できます。実行時、カスタマイズを有効化した属性は、コンポーザで編集可能プロパティとして表示され、制限された属性は、選択したコンポーネントの「コンポーネント・プロパティ」ダイアログに表示されません。詳細は、第22.1項「カスタマイズ・ポリシーの定義によるコンポーネント・レベルの制限の適用」を参照してください。

16.7.3 コンポーネントのアクション・レベルのセキュリティ

Panel CustomizableコンポーネントおよびShow Detail Frameコンポーネントは、サポートされている個々のアクションに制限を行うことができます。たとえば、現在のユーザーがShow Detail Frameを最小化できるかどうかの制限を指定できます。

コンポーネントのアクションの制限を行うかどうかを決定できます。コンポーネントのアクションの制限はadf-config.xmlで指定できます。制限を指定して、現在のユーザーに適用可能な場合、Panel CustomizableまたはShow Detail Frameはアクションをレンダリングしません。

アクション・レベルの制限の適用の詳細は、第22.5項「Panel CustomizableおよびShow Detailコンポーネント・アクションでのアクション・レベルの制限の適用」を参照してください。

17 ページの実行時作成および管理の有効化

この章では、実行時にページを作成および管理する方法について説明します。

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

- 第17.1項「ページの作成と管理の概要」

- 第17.2項「ページおよびタスク・フローの作成」

- 第17.3項「ページ - 新規作成タスク・フローのパラメータの値の定義」

- 第17.4項「タスク・フローのビュー・ページの作成方法」

- 第17.5項「ページの管理」

- 第17.6項「カスタムのスタイルおよびテンプレートの概要」

- 第17.7項「ページ・ビューのカスタマイズ」

- 第17.8項「高度なページの管理に関する情報」

17.1 ページの作成と管理の概要

実行時にアプリケーション内で新規ページとタスク・フローを作成できます。デフォルトまたはカスタムのスタイルおよびテンプレートに基づいてページを作成できます。これらは、ページ - 新規作成タスク・フローまたはページAPIのいずれかを使用して作成できます。

ページまたはタスク・フローを作成した後、ユーザーはページ・データ・コントロールまたはページAPIのいずれかを使用して、これらを表示および管理できます。APIは、アプリケーション内にスコープと呼ばれる作業領域を定義する方法を提供します。スコープは、特定のチームまたはコミュニティを対象とするカスタム・ページを分類する際に便利です(WebCenter Portalのポータルと似ています)。

表17-1で、ページ開発ツールについて説明します。

表17-1 ページ開発ツール

ツール

説明

ページ - 新規作成

実行時にページまたはタスク・フローを作成するタスク・フロー。

ページ・データ・コントロール

実行時にリストされたページおよびタスク・フローに関する情報を表示または削除するためのデータ・コントロール。ページ・データ・コントロールは、アプリケーションにページ・ライブラリを追加した後、設計時に使用できます。

デフォルトでは、ページ・ライブラリは、WebCenter Portalのアプリケーション・テンプレートを使用するとき、またはページ - 新規作成タスク・フローを追加するときにアプリケーションに追加されます。

ページAPI

実行時にページおよびタスク・フローを作成および管理するためのAPI。

ページは、リンク、検索、タグなど、様々なWebCenter Portalのツールとサービスに統合されています。「最近のアクティビティ」を使用してページでの最新の変更を追跡できます。「最近のアクティビティ」と組み合せて動作するように事前に構成されているため、ページは「最近のアクティビティ」が使用する情報を自動的に生成し、ページでの最新の追加、変更または削除を表示します。

17.2 ページおよびタスク・フローの作成

ページ - 新規作成タスク・フローまたはページAPIのいずれかを使用して、ページとタスク・フローを実行時に作成できます。

注意:

ページ - 新規作成タスク・フローは、ページおよびタスク・フローを作成し、タスク・フローのパラメータを編集する方法を提供します。コピー、名前変更、スコープの作成などの操作を実行するには、ページ - 新規作成タスク・フローとともにページAPIを使用する必要があります。ページAPIは、ページ内のカスタマイズに柔軟性をもたらします。

ページ - 新規作成タスク・フローを使用すると、実行時に「ページの作成」ダイアログを起動できます。「ページの作成」ダイアログでは、ユーザーは、事前定義されたスタイルおよびテンプレートに基づいてページを作成できます。

ページのスタイルおよびテンプレートは、コンテンツを配置できる領域(つまり、ページ・レイアウト)を記述しているデフォルト・ページ構造と、ページのルック・アンド・フィールに影響する背景色およびイメージの両方を提供します。ページを作成する際には、ページ・スタイルとテンプレートを選択できます。さらに、ページ・レイアウトのコンポーネントを使用してページの有用性や体裁を向上できます。これらのコンポーネントには、インプレースHTMLテキスト・エディタ、イメージ、レイアウト・ボックス、ハイパーリンクなどが含まれます。

図17-1に実行時の「ページの作成」ダイアログを示します。

図17-1 デフォルトのスタイルの「ページの作成」ダイアログ

一部のページ・スタイルには、ページ特有の用途を示すプロパティが含まれます。たとえば、Webページ・スタイルには、URLを指定するための構成可能なプロパティが含まれます。Webページ・スタイルには様々な用途があり、たとえばWikiまたはブログ・ページを埋め込んだり、外部Webコンテンツをアプリケーション内で公開できます。

多くの場合、ページを改訂する際にページ・レイアウトを切り替えることができます。空白のページで開始し、最初からレイアウト、ルック・アンド・フィールを作成することもできます。

実行時、ページ - 新規作成タスク・フローを使用して作成したページのリストを表示し、これらのページを作成、コピー、更新または削除できます。

詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のページの編集に関する項を参照してください。

17.2.1 ページの作成方法

この項では、ページ - 新規作成タスク・フローをアプリケーションに追加して、実行時のページ作成を可能にする方法を説明します。次のサブセクションが含まれます:

- 第17.2.1.1項「ページ - 新規作成タスク・フローの追加方法」

- 第17.2.1.2項「JDeveloperでのページのセキュリティ設定」

- 第17.2.1.3項「実行時のページの作成方法」

- 第17.2.1.4項「実行時に作成したページの構造」

- 第17.2.1.5項「実行時に作成したページにアクセスする方法」

17.2.1.1 ページ - 新規作成タスク・フローの追加方法

ページ - 新規作成タスク・フローをPortal Frameworkアプリケーションに追加するには:

1. ページを作成します。第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」で説明している手順を実行します。

2. タスク・フローを追加するカスタマイズ可能なページを開きます。

3. リソース・パレットで「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。

4. 「ページ - 新規作成」タスク・フローをページにドラッグ・アンド・ドロップします。

5. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

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

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

8. アプリケーションを実行して、「ページの作成」ボタンがページに表示されていることを確認します。

9. 「ページの作成」をクリックします。
「ページの作成」ダイアログが開きます(図17-1を参照)。

10. ページ名を入力して、ページ・テンプレートとページ・スタイルを選択します。

11. 「作成」をクリックします。
選択した情報に基づいてページが作成されます。ページが作成される場所の詳細は、第17.2.1.4項「実行時に作成したページの構造」を参照してください。

注意:

タスク・フローを追加した後、タスク・フローのパラメータを編集できます。ページ - 新規作成タスク・フローのパラメータの詳細は、第17.3項「ページ - 新規作成タスク・フローのパラメータの値の定義」を参照してください。

ページの詳細情報(実行時に作成したページの削除方法など)は、第17.5項「ページの管理」を参照してください。

17.2.1.2 JDeveloperでのページのセキュリティ設定

ページで独自に特定のADFセキュリティの構成を行う必要はありません。ページは、Portal Frameworkアプリケーションに対して設定されたセキュリティに準拠します。保護されていないアプリケーションでは、「ページの作成」ダイアログで作成されたすべてのページは、データ・コントロールに表示され、すべての人が表示できます。保護されているアプリケーションでは、ユーザーは、自分で作成したページまたは権限を付与されているページのみを表示できます。

アプリケーションおよびページ - 新規作成タスク・フローを保護するには:

1. 第4.2.1.1項「ツールとサービスのセキュリティの実装」の手順に従います。

2. ページにページ - 新規作成タスク・フローを追加した後、アプリケーション・リソース内のjazn-data.xmlファイルを見つけて、その名前をダブルクリックします。

3. 「リソース権限」をクリックし、「リソース・タイプ」ドロップダウン・リストから「タスク・フロー」を選択します。

4. 「ADFライブラリからインポートされたタスク・フローを示します」チェック・ボックスを選択します。

5. 「リソース」列で、page-create-pageタスク・フローを選択します。

6. 「付与先」列で、「追加」アイコンをクリックし、タスク・フローのアクセス権限を付与するロールを追加します。

7. 必要なロールを選択して「OK」をクリックします。
新しく追加されたロールが「付与先」リストに表示されます。

8. 「アクション」列で、選択したロールに付与する特権を選択します(図17-2)。

図17-2 ページ - 新規作成タスク・フローの権限の追加

9. 「リソース・タイプ」から、「Webページ」を選択して、ページ - 新規作成タスク・フローを追加したページにセキュリティを適用します。
手順5から8で説明した同じ手順(ページの選択、ロールの追加および権限の適用)に従います。

注意:

「ページ・データ・コントロール」データ・コントロールは、保護されたアプリケーションまたは保護されていないアプリケーションに対するセキュリティ設定を必要としません。

17.2.1.3 実行時のページの作成方法

詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「ポータル・ページの作成と編集」の章を参照してください。

17.2.1.4 実行時に作成したページの構造

ページ - 新規作成タスク・フローまたはページAPIを使用して実行時に作成したページは、アプリケーションのルートの下にあるmdsフォルダに格納されます。表17-2に、ページおよびタスク・フローのファイル名に使用されるデフォルトの書式の例を示します。

表17-2 デフォルトのファイル名の書式

ファイル・タイプ

書式

ページ

Page<N>.jspx (Nの値は1から始まります)

例: Page1.jspx、Page2.jspx、Page<N>.jspx

ページ定義

Page1PageDef.xml、Page2PageDef.xml、Page<N>PageDef.xml

タスク・フローのビュー・ページ

Page1.jsff、Page2.jsff、PageN.jsff

タスク・フローのビュー・ページ定義

Page1PageDef.xml、Page2PageDef.xml、Page<N>PageDef.xml

タスク・フロー定義

Page1.xml、Page2.xml、Page<N>.xml

ページAPIを使用してページを作成する場合、ファイル名の書式にカスタム値を指定できます。例: myPage<N>.jspx (Nの値は1から始まります)

次の例は、ユーザーuser1によって実行時に作成されたページ(Page1.jspx)およびそれに関連するページ定義(Page1PageDef.xml)の構造を示しています。

例17-1 デフォルトのスコープで作成されたページ

mds\oracle\webcenter\page\scopedMD\s8bba98ff_4cbb_40b8_beee_296c916a23ed\user\user1\Page1.jspx

例17-2 デフォルトのスコープで作成されたページ定義

mds\pageDefs\oracle\webcenter\page\scopedMD\s8bba98ff_4cbb_40b8_beee_296c916a23ed\user\user1\Page1PageDef.xml

例17-3 カスタム・スコープで作成されたページ

mds\oracle\webcenter\page\scopedMD\<scopeGUID>\Page1.jspx

例17-4 カスタム・スコープで作成されたページ定義

mds\pageDefs\oracle\webcenter\page\scopedMD\<scopeGUID>\Page1PageDef.xml

例17-4で、scopeGUIDは、ページによって特定のスコープに割り当てられた一意のIDです。

例17-5 デフォルトのスコープで作成されたタスク・フローのビュー・ページ

mds\oracle\webcenter\page\scopedMD\s8bba98ff_4cbb_40b8_beee_296c916a23ed\user\user1\Page1.jspx

例17-6 デフォルトのスコープで作成されたタスク・フロー定義

mds\oracle\webcenter\page\scopedMD\s8bba98ff_4cbb_40b8_beee_296c916a23ed\user\user1\Page1.xml

例17-7 デフォルトのスコープで作成されたタスク・フローのビュー・ページ定義

mds\pageDefs\oracle\webcenter\page\scopedMD\s8bba98ff_4cbb_40b8_beee_296c916a23ed\user\user1\Page1PageDef.xml

例17-8 カスタム・スコープで作成されたタスク・フローのビュー・ページ

mds\oracle\webcenter\page\scopedMD\<scopeGUID>\Page1.jspx

例17-9 カスタム・スコープで作成されたタスク・フローの定義

mds\oracle\webcenter\page\scopedMD\<scopeGUID>\Page1.xml

例17-10 カスタム・スコープで作成されたタスク・フローのページ定義

mds\pageDefs\oracle\webcenter\page\scopedMD\<scopeGUID>\Page1PageDef.xml

例17-10で、scopeGUIDは、ページによって特定のスコープに割り当てられた一意のIDです。

17.2.1.5 実行時に作成したページにアクセスする方法

デフォルトのスコープのページにアクセスするには、次のURLを入力します。

http://<server>:<port>/<app name>/faces/oracle/webcenter/page/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed/user/<user guid>/Page1.jspx

カスタム・スコープのページにアクセスするには、次のURLを入力します。

http://<server>:<port>/<app name>/faces/oracle/webcenter/page/scopedMD/<scope guid>/Page1.jspx

17.3 ページ - 新規作成タスク・フローのパラメータの値の定義

この項では、ページ - 新規作成タスク・フローのパラメータの値にアクセスし、これを定義する方法を説明します。次のサブセクションが含まれます:

- 第17.3.1項「ページ - 新規作成タスク・フローのパラメータにアクセスする方法」

- 第17.3.2項「ページ - 新規作成タスク・フローのスコープの設定」

- 第17.3.3項「結果パラメータの設定」

- 第17.3.4項「スタイルの指定」

- 第17.3.5項「ADFテンプレートの指定」

- 第17.3.6項「コマンド・リンクの表示」

- 第17.3.7項「イメージの表示」

- 第17.3.8項「ラベルのカスタマイズ」

17.3.1 ページ - 新規作成タスク・フローのパラメータにアクセスする方法

ページ - 新規作成タスク・フローのパラメータにアクセスするには:

1. アプリケーション・ナビゲータに移動し、ページ - 新規作成タスク・フローを表示する.jspxページを右クリックして、「ページ定義に移動」を選択します。

2. 「実行可能ファイル」セクションで、スクロールしてpagecreatepageタスク・フローを選択します。

3. 「編集」(鉛筆)アイコンをクリックし、任意のパラメータを編集します。
設計ビューの「ページ・データ・バインディング定義」を図17-3に示します。

図17-3 ページ・データ・バインディング定義

図17-4に示すように、「タスク・フロー・バインディングの編集」ダイアログが開きます。

図17-4 「ページ - 新規作成」タスク・フローの「タスク・フロー・バインディングの編集」

次のページ - 新規作成のオプション・パラメータを使用できます。

- showtemplate
デフォルトでは、「ページ・テンプレート」ドロップダウン・リストがアプリケーション実行時にページ作成タスク・フローに表示されます。showtemplateをfalseに設定することにより、ページ・テンプレート・オプションを非表示にできます。

- scopename
詳細は、第17.3.2項「ページ - 新規作成タスク・フローのスコープの設定」を参照してください。

- outcome
詳細は、第17.3.3項「結果パラメータの設定」を参照してください。

- templatefile
詳細は、第17.3.4項「スタイルの指定」を参照してください。

- adftemplate
詳細は、第17.3.5項「ADFテンプレートの指定」を参照してください。

- uitype
詳細は、第17.3.6項「コマンド・リンクの表示」を参照してください。

- icon
詳細は、第17.3.7項「イメージの表示」を参照してください。

- label
詳細は、第17.3.8項「ラベルのカスタマイズ」を参照してください。

17.3.2 ページ - 新規作成タスク・フローのスコープの設定

デフォルトでは、ページ - 新規作成タスク・フローを使用して作成したページおよびタスク・フローはデフォルトのスコープに格納されます。ページ - 新規作成タスク・フローに特定のスコープを割り当てるには、図17-5に示すように、スコープ名をoracle_webcenter_page_createpage_scopenameパラメータに割り当てる必要があります。

図17-5 oracle_webcenter_page_createpage_scopenameパラメータ

図17-5で、PageViewBeanは、getScopeName()メソッドを起動してscopeNameの値をフェッチするカスタム・マネージドBeanです。ページAPIを使用します。これを実行することによって、ページ - 新規作成タスク・フローは、すべてのページおよびタスク・フローをデフォルトのスコープではなく指定したスコープの下に作成します。

次のサンプル・コードは、スコープの作成のみを強調しています。スコープがすでに存在する場合、ユーザーは、スコープ名をScopeオブジェクトから取得できます。

例17-11 アプリケーション・ページのスコープの作成

import oracle.webcenter.framework.service.Scope;
import oracle.webcenter.framework.service.ScopeAlreadyExistsException;
import oracle.webcenter.framework.service.ServiceContext;

public class PageViewBean {
private String scopeName;

public String getScopeName() {
String scopeName = "MyScope";
ServiceContext sContext = ServiceContext.getContext();
try {
Scope scope =
sContext.createScope(scopeName); // Creates a new scope
this.scopeName = scope.getName(); // Returns the scope name
sContext.setScope(scope); // Setting the Scope. This step is important.
} catch (ScopeAlreadyExistsException scopeExistsException) {
System.out.println("Scope Already Exists...");
}
return this.scopeName;
}

public void setScopeName(String scopeName) {
this.scopeName = scopeName;
}

}

17.3.3 結果パラメータの設定

結果パラメータは、ページが作成された後にコールされるJavaメソッドを定義します。このメソッドでは、動的コンテンツのページへの追加、ダイアログをコールして新しいページの作成を確認するユーザー・インタフェースのリフレッシュ、または新しく作成したページへのブラウザ・ナビゲーションの開始を実行できます。ページ作成後に起動されるようにJavaメソッドを指定するには(つまり、ユーザーが「ページの作成」ダイアログで「作成」ボタンをクリックした後にJavaメソッドがコールされる)、「タスク・フロー・バインディングの編集」ダイアログで次のように入力します。

oracle_webcenter_page_createpage_outcome = ${'view.MyTestClass.go'}

文字列パラメータを使用するかまたはパラメータなしのいずれかでメソッドを定義できます。この文字列パラメータ値は、フルパスでの新しいページの名前です。メソッドが両方の方法で定義される場合、パラメータ付きの方が起動されます。

次の例では、メソッドgo(String newPagePath)が起動されます。このメソッドは、JavaクラスMyTestClass.javaのある新しく作成されたページにユーザーをリダイレクトします。newPagepathの値がページによって渡されます。

package view;

import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

public class MyTestClass {
public MyTestClass() {
}

/*
This method is executed only when there is no other go(String newPagePath) method with a String argument .
*/
public void go() {
System.out.println("go() method without parameters executed.");
}

/*
This method is prioritized and executed even when there are other go() methods without arguments.
*/
public void go(String newPagePath) {
System.out.println("go(String newPagePath) method with parameter executed.");
try {
FacesContext context = FacesContext.getCurrentInstance();
String viewID = context.getViewRoot().getViewId();
System.out.println("ViewID=" + viewID);

ExternalContext extCtx = context.getExternalContext();
String targetURI =
extCtx.getRequestContextPath() + "/faces" + viewID;
System.out.println("Navigate to: " + targetURI);
extCtx.redirect(targetURI);
context.responseComplete();
} catch (Exception ee) {
System.out.println("Error: " + ee.toString());
}

}
}

17.3.4 スタイルの指定

ページには、ページ・サービス・ライブラリ内にパッケージ化されている、即時利用可能なスタイルが用意されています。これらのスタイルを使用するかまたは独自のカスタム・スタイルを作成できます。

この項では、即時利用可能なスタイルおよびカスタム・スタイルの適用方法を説明します。次のサブセクションが含まれます:

- 第17.3.4.1項「即時利用可能なスタイル」

- 第17.3.4.2項「カスタム・スタイル」

注意:

スタイルの詳細は、第17.6項「カスタムのスタイルおよびテンプレートの概要」を参照してください。

17.3.4.1 即時利用可能なスタイル

次の即時利用可能なスタイルが用意されています(図17-1を参照)。

- 空白

- 左を狭く

- 右を狭く

- ストレッチ

- テキスト・ページ

- 3列

- Webページ

即時利用可能なスタイルをページ - 新規作成タスク・フローと関連付けるには、オプションのパラメータoracle_webcenter_page_createpage_templatefileを使用します。このパラメータ値を使用して即時利用可能なスタイルのリストを含むファイルの場所を指定します。

即時利用可能なスタイルをページ - 新規作成タスク・フローと関連付けるには:

1. mystylesという名前のフォルダをPortal Frameworkアプリケーションのpublic_htmlフォルダの下に作成します。

2. mystyles内に、default_pageservice_styles.xmlという名前のファイルを作成します。

3. templateDef要素を使用して、即時利用可能なスタイルすべてに対するエントリを追加します。
templateDef要素は、次の属性を取ります。

- name: この属性は、ページ・スタイルを定義する.jspxページへのパスを指定します。デフォルトのスタイルを使用する場合、使用するスタイルを定義するページへのパスを指定する必要があります。デフォルトのページ・スタイルのページ・ファイルは、ページ・ライブラリ内にあります。例:

name="/oracle/webcenter/page/pstemplates/TemplateThreeColumn.jspx"

TemplateThreeColumn.jspxは、3列テンプレート・スタイルを定義するページ・ライブラリ内のページです。

- title: titleに入力した値は、「ページの作成」ダイアログのスタイルの名前として使用されます。即時利用可能なスタイルのタイトルは任意の名前に変更できます。例: title="Three Column Layout"またはtitle="Sales Standard"。

- icon: この属性は、スタイルのイメージ・アイコンを指定します。
即時利用可能なスタイルの場合、スタイルのアイコンを指定しないと、即時利用可能なスタイルそれぞれに割り当てられたデフォルトのアイコンが使用されます。

例17-12にその他の即時利用可能なスタイルをリストしているサンプルのdefault_pageservice_styles.xmlファイルの内容を示します。

例17-12 サンプルのdefault_pageservice_styles.xmlファイル

<?xml version="1.0" encoding="UTF-8" ?>
<templatesDef xmlns="http://xmlns.oracle.com/webcenter/page">
<templateDef name="/oracle/webcenter/page/pstemplates/TemplateThreeColumn.jspx" title="Three Column Layout" />
<templateDef name="/oracle/webcenter/page/pstemplates/TemplateText.jspx" title="Text Page" />
<templateDef name="/oracle/webcenter/page/pstemplates/TemplateStretch.jspx" title="Stretch" />
<templateDef name="/oracle/webcenter/page/pstemplates/TemplateWeb.jspx" title="Web Page" />
<templateDef name="/oracle/webcenter/page/pstemplates/TemplateBlank.jspx" title="Blank" />
<templateDef name="/oracle/webcenter/page/pstemplates/TemplateNarrowLeft.jspx" title="Left Narrow Column Layout" />
<templateDef name="/oracle/webcenter/page/pstemplates/TemplateNarrowRight.jspx" title="Right Narrow Column Layout" />
</templatesDef>

4. 第17.3.1項「ページ - 新規作成タスク・フローのパラメータにアクセスする方法」の説明のとおりに、「タスク・フロー・バインディングの編集」ダイアログを開きます。

5. oracle_webcenter_page_createpage_templatefileパラメータ値を${'/mystyles/default_pageservice_style.xml'}に設定します。
例:

oracle_webcenter_page_createpage_templatefile = ${'/mystyles/default_pageservice_style.xml'}

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

17.3.4.2 カスタムのスタイル

この例では、Newsというラベルの付いたカスタム・スタイルをページ - 新規作成タスク・フローと関連付けます。

カスタム・スタイルをページ - 新規作成タスク・フローと関連付けるには:

1. .jspxファイルでカスタム・スタイルを定義します(たとえば、NewsTemplate.jspx)。

注意:

ADFテンプレートの作成方法の詳細は、第17.6項「カスタムのスタイルおよびテンプレートの概要」を参照してください。

2. XMLファイルでカスタム・スタイルのエントリを追加します(たとえば、custom_pageservice_style.xml)。
例:

<?xml version="1.0" encoding="UTF-8" ?>
<templatesDef xmlns="http://xmlns.oracle.com/webcenter/page">
<templateDef name="NewsTemplate.jspx" title="News" icon="/images/news.png" />
</templatesDef>

注意:

templateDef要素およびスタイル関連の.xmlファイルで使用する構文の詳細は、第17.3.4.1項「即時利用可能なスタイル」を参照してください。

3. custom_pageservice_style.xmlをアプリケーションのpublic_htmlフォルダ内のフォルダに保存します。
例:

…/public_html/mystyles/custom_pageservice_style.xml

4. 次のファイルは、custom_pageservice_style.xmlと同じフォルダに配置する必要があります。

- カスタム・スタイルを定義するファイル(たとえば、NewsTemplate.jspx)。

- カスタム・スタイル・ファイルのページ定義ファイル(たとえば、NewTemplatePageDef.xml)。

- カスタム・スタイルのベースであるADFテンプレート(たとえば、defaultTemplate.jspx)。この手順は、ADFテンプレートを使用している場合のみ該当します。

注意:

oracle_webcenter_page_createpage_adftemplateを使用してADFテンプレートの場所を指定する場合、このファイル(defaultTemplate.jspx)をmystylesフォルダの下に配置する必要はありません。第17.3.5項「ADFテンプレートの指定」に従って、ファイルに異なる場所を指定できます。

5. 第17.3.1項「ページ - 新規作成タスク・フローのパラメータにアクセスする方法」の説明のとおりに、「タスク・フロー・バインディングの編集」ダイアログを開きます。

6. oracle_webcenter_page_createpage_templatefileパラメータを${'/mystyles/custom_pageservice_style.xml'}に設定します(ここで、mystylesはアプリケーションのpublic_htmlフォルダの下のフォルダです)。
例:

oracle_webcenter_page_createpage_templatefile = ${'/mystyles/custom_pageservice_style.xml'}

17.3.5 ADFテンプレートの指定

設計時と実行時の両方のページで同じテンプレートを使用する場合、ADFテンプレートを使用できます。必要なことは、ページ - 新規作成タスク・フローがテンプレートの場所を指すようにすることのみです。

ADFテンプレートをページ - 新規作成タスク・フローと関連付けるには:

1. 第17.3.1項「ページ - 新規作成タスク・フローのパラメータにアクセスする方法」の説明のとおりに、「タスク・フロー・バインディングの編集」ダイアログを開きます。

2. oracle_webcenter_page_creatpage_adftemplateパラメータの隣の「値」列で、ADFテンプレートへのパスを入力します。
例:

${'templates/portalTemplate.jspx'}

図17-6では、portalTemplate.jspxというADFテンプレートが使用されます。

図17-6 oracle_webcenter_page_createpage_adftemplateパラメータ

ADFテンプレートはアプリケーションのpublic_htmlフォルダにあります。この場合、portalTemplate.jspxのパスは、../public_html/templates/portalTemplate.jspxです。

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

17.3.6 コマンド・リンクの表示

デフォルトでは、ページ - 新規作成タスク・フローはコマンド・ボタンとしてレンダリングされます(図17-7)。かわりに、これをコマンド・リンク(図17-8)としてレンダリングすることを指定できます。

図17-7 コマンド・ボタン

図17-8 コマンド・リンク

ページ - 新規作成タスク・フローをコマンド・リンクとしてレンダリングするには:

1. 第17.3.1項「ページ - 新規作成タスク・フローのパラメータにアクセスする方法」の説明のとおりに、「タスク・フロー・バインディングの編集」ダイアログを開きます。

2. oracle_webcenter_page_createpage_uitypeパラメータを次の値に修正します: ${'link'}。
例:

oracle_webcenter_page_createpage_uitype = ${'link'}

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

17.3.7 イメージの表示

アイコンをページ - 新規作成タスク・フロー・ボタンまたはリンクと関連付けることができます。

「ページ - 新規作成」タスク・フロー・ボタンまたはリンクのアイコンを指定するには:

1. 第17.3.1項「ページ - 新規作成タスク・フローのパラメータにアクセスする方法」の説明のとおりに、「タスク・フロー・バインディングの編集」ダイアログを開きます。

2. oracle_webcenter_page_createpage_iconパラメータを必要な値に修正します。
例:

oracle_webcenter_page_createpage_icon = ${'/images/page.jpg'}

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

17.3.8 ラベルのカスタマイズ

デフォルトでは、ページ - 新規作成タスク・フローのコマンド・ボタンまたはリンクのラベルは「ページの作成」です。oracle_webcenter_page_createpage_labelパラメータ値を使用して、独自の値を指定できます。

図17-9にカスタム・ラベルを備えたコマンド・ボタンとしてレンダリングされたタスク・フローを示します。

図17-9 カスタム・ラベル

コマンド・ボタンまたはリンクのラベルを変更するには:

1. 第17.3.1項「ページ - 新規作成タスク・フローのパラメータにアクセスする方法」の説明のとおりに、「タスク・フロー・バインディングの編集」ダイアログを開きます。

2. oracle_webcenter_page_createpage_labelパラメータを希望する文字列値に修正します。
例:

oracle_webcenter_page_createpage_label = ${'Create New Page'}

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

17.4 タスク・フローのビュー・ページの作成方法

タスク・フローのビュー・ページの作成には、次のタイプのオブジェクトが必要です。

- タスク・フローのビュー・ページ(JSFFファイル)

- ページ・ビューのページ定義

- タスク・フローを定義するタスク・フロー定義XMLファイル

ページ - 新規作成タスク・フローによりタスク・フローのビュー・ページの作成を有効にするには:

1. 設計時に、ページ - 新規作成タスク・フローをページ(home.jspx)に追加します。

2. 第17.3.1項「ページ - 新規作成タスク・フローのパラメータにアクセスする方法」の説明のとおりに、「タスク・フロー・バインディングの編集」ダイアログを開きます。

3. oracle_webcenter_page_createpage_labelパラメータに指定された値を修正して「ページの作成」ボタンまたはリンクのラベルを変更します。
例:

oracle_webcenter_page_createpage_label = ${'Create Task Flow'}

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

5. XMLファイル(たとえば、custom_taskflow_styles.xml)を作成し、すべてのタスク・フローのスタイルのエントリを含めます。
例:

<?xml version='1.0' encoding="UTF-8"?>
<templatesDef xmlns="http://xmlns.oracle.com/webcenter/page">
<templateDef name="mytaskflow_view.jsff" title="News"   icon="/images/news.png" type="taskflow"/>
</templatesDef>

XMLファイルの要素templateDefには、次の属性が含まれています。

- name: タスク・フローのビュー・ページの名前を指定します

- title: 「ページの作成」ダイアログでタスク・フローのビュー・ページ・スタイルと関連付けるラベルを指定します

- icon: タスク・フローのイメージ・アイコンを指定します

注意:

サンプルの属性の構文は、第17.3.4.1項「即時利用可能なスタイル」の手順3を参照してください。

6. アプリケーションのpublic_htmlフォルダの下に、フォルダ(たとえば、mystyles)を作成し、これにcustom_taskflow_styles.xmlファイルを追加します。

7. 次のファイルもmystylesフォルダの下にあることを確認します。

- mytaskflow_view.jsff(タスク・フローのビュー・ページ)

- mytaskflow_viewPageDef.xml(タスク・フローのビュー・ページ定義)

- mytaskflow_view.xml(タスク・フロー定義)

8. 「タスク・フロー・バインディングの編集」ダイアログを再び開き、手順5で作成したXMLファイルへのパスをoracle_webcenter_page_createpage_templatefileパラメータに指定します。
例:

oracle_webcenter_page_createpage_templatefile=${'/mystyles/custom_taskflow_styles.xml' }

この例では、mystylesは、アプリケーションのpublic_htmlフォルダの下のフォルダです。

9. home.jspxページを実行し、「タスク・フローの作成」ボタンをクリックします。

10. タスク・フローのタイトルを入力し、(第17.3.4.2項「カスタム・スタイル」で作成した)「ニュース」スタイルを選択して、「作成」をクリックします。
新しいタスク・フローのビュー・ページがレンダリングされます。

タスク・フローが作成される場所の詳細は、第17.2.1.4項「実行時に作成したページの構造」を参照してください。

17.5 ページの管理

ページ・データ・コントロールまたはページAPIのいずれかを使用してページを管理できます。この項には次のサブセクションが含まれます:

- 第17.5.1項「ページ・データ・コントロールを使用したページの管理」

- 第17.5.2項「ページAPIを使用したページおよびタスク・フローの管理」

17.5.1 ページ・データ・コントロールを使用したページの管理

ページ・データ・コントロールを使用して、ページ・ビューをカスタマイズできます。データ・コントロールを使用すると、実行時に既存のページの情報を表示したり、リストされたページを削除することができます。ページ・データ・コントロール(Page Data Control)は、ページ・ライブラリに含まれていて、設計時、このライブラリをアプリケーションに追加した後に使用できます。

ページ・データ・コントロールの詳細は、第17.8.2項「ページ・データ・コントロールの使用」を参照してください。

17.5.2 ページAPIを使用したページおよびタスク・フローの管理

APIを使用して、ページとタスク・フローを管理できます。これらには、ページおよびタスク・フローの削除、非表示ステータスの変更、ページ・スキーム(名前、背景色、背景イメージ)の変更およびページのコピーを行うAPIが含まれています。

ページAPIの詳細は、第17.8.1項「ページJava APIの使用」を参照してください。

17.6 カスタムのスタイルおよびテンプレートの概要

実行時、ユーザーが「ページの作成」オプションをクリックすると、「ページの作成」ダイアログは、ページを作成するための一連の事前定義されたスタイルを表示します(図17-1を参照)。ユーザーは、これらのページ・スタイルの1つを選択し、関連するスタイルのテンプレートに基づいてページを作成します。スタイルは、ページに特別なルック・アンド・フィールを提供します。テンプレートは、ページ・レイアウトを提供します。テンプレートは、実行時ページの基になるADFページです。ページは、デフォルトまたはカスタムのスタイルおよびテンプレートに基づくことができます。

「ページの作成」ダイアログにカスタムの選択肢を用意するには、それを、たとえば/mytemplates/templates.xmlで定義する必要があります。ディレクトリ/mytemplatesはWebコンテンツのルートの下に配置してください。

「ページの作成」ダイアログで使用可能なデフォルトのオプションを使用しないことを選択した場合、次のタイプのカスタム・テンプレートをアプリケーションで使用できます。

- 実行時ページで使用するページおよびページ・フラグメントのテンプレート

- ページおよびページ・フラグメントのテンプレートのベースとして使用するADFテンプレート

- 「ページの作成」ダイアログ自体が使用するテンプレート

この項では、ページ - 新規作成タスク・フローをカスタマイズし、「ページの作成」ダイアログおよび実行時に作成した新しいページに様々なテンプレートを使用する方法を説明します。次のサブセクションが含まれます:

- 第17.6.1項「実行時に作成したページ用のテンプレートを作成する方法」

- 第17.6.2項「ADFテンプレートの使用方法」

- 第17.6.3項「「ページの作成」ダイアログ用のスタイルの作成」

注意:

templates.xmlファイルの詳細は、第17.3.4項「スタイルの指定」を参照してください。

17.6.1 実行時に作成したページ用のテンプレートを作成する方法

設計の要件に応じてカスタム・ページ・テンプレートを作成し、ページ・スタイルをこれらのテンプレートと関連付けることができます。「ページの作成」ダイアログのスタイル・オプションを制限するか、または様々なスタイル・セットを提供する場合、次の高水準のタスクを実行する必要があります。

- 様々なページ・スタイル用のテンプレートとして使用するページまたはページ・フラグメントを作成します。

- 「ページの作成」ダイアログのパラメータを編集して、新しいページ・スタイルを指定します。

この項では、両方の手順を行います。次のサブセクションが含まれます:

- 第17.6.1.1項「ページまたはページ・フラグメントのスタイルを作成する方法」

- 第17.6.1.2項「「ページの作成」ダイアログのスタイルの編集方法」

17.6.1.1 ページまたはページ・フラグメントのスタイルを作成する方法

ページまたはページ・フラグメントのスタイルを作成するには:

1. Oracle JDeveloperで、必要なすべての情報(ヘッダー、ようこそメッセージ、ログイン/ログアウトのリンクなど)を含むJSFテンプレートを作成します。

2. ページを作成するとき、そのテンプレートに基づいてページ(JSPX)を作成します。
タスク・フローを作成するとき、そのテンプレートに基づいてページ・フラグメント(JSFF)を作成します。

テンプレートに基づいてページを作成する際には、テンプレートがコピーされ、新規ページがそれに基づいて作成されます。

3. 必要なすべての内容をJSPXファイルまたはJSFFファイルに入れます。
たとえば、コンテンツを表示するファセットがある場合、Page Customizableコンポーネントをコンポーザからその周囲にドロップし、実行時にページを編集可能にできます。document title、styleClassおよびinlineStyleの各属性に正しい値を設定したことを確認します。

注意:

このページまたはページ・フラグメントが実行時にカスタマイズできるページのテンプレートとして使用される場合、このページまたはフラグメントのすべてのコンポーネントのID属性が一意の値に設定されていることを確認する必要があります。

例17-13にページ・フラグメントのスタイルpstemplateview.jsffのサンプル・コードを示します。

例17-13 新しいページ・スタイルのサンプル・コード

<?xml version='1.0' encoding='utf-8'?>
<!-- Copyright (c) 2006, 2008, Oracle and/or its affiliates.
All rights reserved. -->
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:pe="http://xmlns.oracle.com/adf/pageeditor"
xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<jsp:directive.page contentType="text/html;charset=utf-8"/>
<f:loadBundle basename="oracle.webcenter.page.view.resource.PGUIBundle"
var="res"/>
<f:view>
<af:document title="#{pageDocBean.title}" id="docrt">
<af:form usesUpload="true" id="f1">
<af:pageTemplate viewId="/oracle/webcenter/page/pstemplates/defaultTemplate.jspx" id="T">
<f:facet name="content">
<pe:pageCustomizable id="pcl1">
<af:panelStretchLayout id="psl2"
styleClass="replace_with_scheme_name"
inlineStyle="replace_with_inline_style">
<f:facet name="center">
<af:panelGroupLayout id="pgl1"
layout="scroll">
<pe:layoutCustomizable id="lc1"
showLayoutChanger="#{pageServiceBean.isEditMode}"
text="Change Layout"
showIcon="false"
type="threeColumnNarrow"
shortDesc="Layout Changer">
<cust:panelCustomizable id="mainC"/>
<f:facet name="contentA">
<cust:panelCustomizable id="cnta"/>
</f:facet>
<f:facet name="contentB">
<cust:panelCustomizable id="cntb"/>
</f:facet>
</pe:layoutCustomizable>
</af:panelGroupLayout>
</f:facet>
</af:panelStretchLayout>
<f:facet name="editor">
<pe:pageEditorPanel id="pep1"/>
</f:facet>
</pe:pageCustomizable>
</f:facet>
</af:pageTemplate>
</af:form>
</af:document>

注意:

スタイルを定義するJSPXページのページ定義ファイルには、id属性およびPackage属性に対する次の構文が含まれている必要があります。これらの値は、ページがカスタム・スタイルに基づいて作成されるときに、該当する値に置き換えられます。

<?xml version="1.0" encoding="UTF-8" ?>
<pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel"
version="11.1.1.41.30"
id="ps_pagedefusage"
Package="ps_package">

または、作成しているJSPXテンプレート・ファイルまたはJSFFテンプレート・ファイルは、ADFテンプレートに基づくことができます。

例17-14にADFテンプレートのサンプル・コードを示します。

注意:

独自のADFテンプレートを設計することを選択してページ・スタイルを設定する場合、Panel Group LayoutコンポーネントまたはPanel Stretch LayoutコンポーネントをPage Customizableの直接の子として持つ必要があります。また、次に太字で示すように、styleClassおよびinlineStyleのプレースホルダーを設定する必要があります。ページ・スタイル値はプレースホルダー・テキストを置き換えます。

例17-14 ADFテンプレートを使用するページ・スタイルのサンプル・コード

<?xml version='1.0' encoding='utf-8'?>
<!-- Copyright (c) 2006, 2008, Oracle and/or its affiliates.
All rights reserved. -->
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:pe="http://xmlns.oracle.com/adf/pageeditor"
xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<jsp:directive.page deferredSyntaxAllowedAsLiteral="true"/>
<jsp:directive.page contentType="text/html;charset=utf-8"/>
<f:view>
<af:document title="#{pageDocBean.title}" id="docrt">
<af:form usesUpload="true" id="f1">
<af:pageTemplate
viewId="/oracle/webcenter/webcenterapp/view/templates/WebCenterAppShellTemplate.jspx"
value="#{bindings.shellTemplateBinding}" id="T">
<f:facet name="content">
<pe:pageCustomizable id="pcl1">
<af:panelStretchLayout id="psl2"
styleClass="replace_with_scheme_name"
inlineStyle="replace_with_inline_style">
<f:facet name="center">
<af:panelGroupLayout id="pgl1"
layout="scroll">
<pe:layoutCustomizable id="lc1"
showLayoutChanger="#{pageServiceBean.isEditMode}"
text="#{uib_o_w_w_r_WebCenter.LABEL_CHANGE_LAYOUT}"
showIcon="false" type="oneColumn"
shortDesc="#{uib_o_w_w_r_WebCenter.LABEL_CHANGE_LAYOUT}">
<cust:panelCustomizable id="mainC"/>
<f:facet name="contentA">
<cust:panelCustomizable id="cnta"/>
</f:facet>
<f:facet name="contentB">
<cust:panelCustomizable id="cntb"/>
</f:facet>
</pe:layoutCustomizable>
</af:panelGroupLayout>
</f:facet>
</af:panelStretchLayout>
<f:facet name="editor">
<pe:pageEditorPanel id="pep1"/>
</f:facet>
</pe:pageCustomizable>
</f:facet>
</af:pageTemplate>
</af:form>
</af:document>
</f:view>
</jsp:root>

例17-15にADFテンプレートportalTemplate.jspxに基づくページ・スタイルNewsTemplate.jspxのサンプル・コードを示します。af:pageTemplateタグのviewId属性は、使用されるADFテンプレートの名前を指定します。

ADFテンプレートの使用については、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』を参照してください。

例17-15 ADFテンプレートに基づくページ・スタイルのサンプル・コード

<?xml version='1.0' encoding='utf-8'?>
<!-- Copyright (c) 2006, 2008, Oracle and/or its affiliates.
All rights reserved. -->
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:pe="http://xmlns.oracle.com/adf/pageeditor"
xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<jsp:directive.page contentType="text/html;charset=utf-8"/>
<f:loadBundle basename="oracle.webcenter.page.view.resource.PGUIBundle"
var="res"/>
<f:view>
<af:document title="#{pageDocBean.title}">
<af:form usesUpload="true">
<af:pageTemplate viewId="/mytemplates/portalTemplate.jspx"
value="#{bindings.pageTemplateBinding}">
<f:facet name="pageContent">
<pe:pageCustomizable id="pgc1">
<af:panelStretchLayout id="psl1"
styleClass="#{pageDocBean.CSSStyle}"
inlineStyle="#{pageDocBean.inlineStyle}">
<f:facet name="center">
<af:panelGroupLayout id="pgl1" layout="scroll">
<pe:layoutCustomizable id="lc1"
showLayoutChanger="#{pageServiceBean.isEditMode}"
text="#{res['TEMPLATE.CHANGE_LAYOUT']}"
showIcon="false" type="oneColumn"
shortDesc="#{res['TEMPLATE.CHANGE_                                              LAYOUT']}">
<cust:panelCustomizable id="mainC">
<cust:showDetailFrame id="sdf2"
showMinimizeAction="none"
showMoveAction="none"
showRemoveAction="none"
displayHeader="false"
displayShadow="false"
stretchContent="false"
shortDesc="#{null}"
background="light"
showResizer="never"
text="Text">
<af:richTextEditor id="rtepc" clientComponent="true"
simple="true" label="#{null}"
rows="20" readOnly="false"
contentStyle="width:100%;"/>
</cust:showDetailFrame>
</cust:panelCustomizable>
<f:facet name="contentA">
<cust:panelCustomizable id="cnta"/>
</f:facet>
<f:facet name="contentB">
<cust:panelCustomizable id="cntb"/>
</f:facet>
</pe:layoutCustomizable>
</af:panelGroupLayout>
</f:facet>
</af:panelStretchLayout>
<f:facet name="editor">
<pe:pageEditorPanel/>
</f:facet>
</pe:pageCustomizable>
</f:facet>
</af:pageTemplate>
</af:form>
</af:document>
</f:view>
</jsp:root>

別のスタイルを表示したり、スタイルに別のテンプレートを使用するには、これを定義する必要があります(たとえば、/mytemplates/templates.xmlで)。ディレクトリ/mytemplatesはWebコンテンツのルートの下に配置してください。templates.xmlファイルの詳細は、第17.3.4項「スタイルの指定」を参照してください。

例17-16にサンプルのtemplates.xmlファイルを示します。

例17-16 templates.xmlファイル

<?xml version='1.0' encoding="UTF-8"?>
<templatesDef xmlns="http://xmlns.oracle.com/webcenter/page">
<templateDef name="TemplateBlank.jspx"
title="Blank"/>
<templateDef name="TemplateNarrowLeft.jspx"
title="Left Narrow Column Layout"/>
<templateDef name="TemplateNarrowRight.jspx"
title="Right Narrow Column Layout"/>
<templateDef name="TemplateThreeColumn.jspx"
title="Three Column Layout"/>
<templateDef name="TemplateStretch.jspx"
title="Stretch"/>
<templateDef name="TemplateText.jspx"
title="Text"/>
<templateDef name="TemplateWeb.jspx"
title="Web"/>
<templateDef name="NewsTemplate.jspx"
title="News"/>
</templatesDef>

17.6.1.2 「ページの作成」ダイアログのスタイルの編集方法

「ページの作成」ダイアログのスタイルを編集し、参照を新しいページ・スタイルに追加するには:

1. /mytemplates/templates.xmlファイルを作成し、表示しないデフォルトのページ・スタイルのtemplateDefエントリをコメント・アウトします。

2. 別のテンプレートと関連付けるスタイルのtemplateDefエントリで、次の例に示すようにname属性およびtype属性を編集します。

<templateDef name="pstemplateview.jsff"
title="News"
icon="/images/news.png"
type="taskflow"/>

ここで

- nameは、使用するページ・スタイルの名前です。

- titleは、「ページの作成」ダイアログでスタイルに表示されるラベルです。

- typeは、ページ・スタイルのタイプです。これは、値pageまたはtask flowを取ります。デフォルト値pageは、スタイルの関連付けられたテンプレートに基づいてページを作成します。値task flowは、スタイルの関連付けられたテンプレートに基づいてページのタスク・フロー・ビューを作成します。

3. 新しいスタイルを「ページの作成」ダイアログに追加する場合、次の例に示すように、templateDefエントリを追加します。

<templateDef name="pstemplateview3.jsff"
title="Rich Text"
type="taskflow"
forGroupSpace="false"/>

4. XMLファイルを保存します。

実行時、「ページの作成」ダイアログは指定したスタイルを表示します。これらのスタイルを使用してユーザーが作成するページおよびタスク・フロー・ページ・ビューは、定義したJSPXテンプレートまたはJSFFテンプレートに基づきます。

17.6.2 ADFテンプレートの使用方法

ページ・テンプレートがADFテンプレートに基づいている場合、ページ作成タスク・フローを構成して、ユーザーやスコープなどの異なる条件に応じて、異なるADFテンプレートを使用できます。

次のいずれかの方法で実行時ページ作成に使用するADFテンプレートを指定できます。

- ページ作成タスク・フローでoracle_webcenter_page_createpage_adftemplateパラメータを使用(第17.3.4項「スタイルの指定」を参照)。

- createPage() APIおよびcreateTaskflow() APIでADFTemplateViewIDパラメータを使用。

ADFテンプレートに基づいたJSPXページ・テンプレートには、viewId属性が指定されたaf:pageTemplateタグが含まれています。viewId属性には、このADFテンプレートの名前が含まれています。例17-15にADFテンプレートportalTemplate.jspxに基づいたページ・テンプレートを示します。

ページ作成時に使用するADFテンプレート名を指定すると、ページ・テンプレートのaf:pageTemplateタグが検索され、指定した値を使用してviewId属性が更新されます。

この項では、指定された状況でどのADFテンプレートを使用するかを指定する方法を説明します。次のサブセクションが含まれます:

- 第17.6.2.1項「タスク・フローのパラメータを使用してADFテンプレート名を指定する方法」

- 第17.6.2.2項「APIパラメータを使用してADFテンプレート名を指定する方法」

17.6.2.1 タスク・フローのパラメータを使用してADFテンプレート名を指定する方法

タスク・フローのパラメータを使用してADFテンプレート名を指定するには:

1. ページ - 新規作成タスク・フローを含むJSPXファイルを開きます。

2. ページ名を右クリックし、「ページ定義に移動」を選択します。

3. ページ定義ファイルの「実行可能ファイル」の下で「ページの作成」タスク・フローを選択し、ヘッダーにある「編集」アイコンをクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログが開かれ、このタスク・フローでサポートされる入力パラメータのリストが表示されます。

5. oracle_webcenter_page_createpage_adftemplateパラメータを設定します。
一定の値(たとえば、${'/mytemplates/defaultTemplate2.jspx'})を定義する場合、このADFテンプレートは、ページの作成タスク・フローを使用して作成したすべてのページに使用されます。

ただし、パラメータにEL値を指定することによって、異なる条件(ユーザーやスコープなど)に基づいて異なるADFテンプレートを使用することができます。

たとえば、2人のユーザーuser1とuser2がいて、それぞれのユーザーが作成するページに異なるADFテンプレートを使用するとします。値${MyClass.ADFTemplate}をoracle_webcenter_page_createpage_adftemplateパラメータに入力し、メソッドMyClass.getADFTemplate()を定義して、ログインしたユーザーに基づいて異なるADFテンプレートを返すようにする必要があります。

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

17.6.2.2 APIパラメータを使用してADFテンプレート名を指定する方法

APIパラメータを使用してADFテンプレート名を指定するには:

1. ページまたはタスク・フローを作成し、ADFテンプレートのビュー・アクティビティのIDを指定します。
続いてページまたはタスク・フローがそのADFテンプレートに基づいて作成されます。

ページを作成するには:

PageService.createPage(
String pageType, String nameFormat, String title,
String pageTemplate, String pageTemplatePath,
String ADFTemplateViewID,
String cssStyle, String schemeBGImage, String schemeBGColor)

ここでADFTemplateViewIDはADFテンプレートのビュー・アクティビティのIDです。

タスク・フローを作成するには:

PageService.createTaskflow(
String nameFormat, String title,
String pageTemplate, String pageTemplatePath,
String ADFTemplateViewID,
String cssStyle, String schemeBGImage, String schemeBGColor)

ここでADFTemplateViewIDはADFページ・テンプレートのビュー・アクティビティのIDです。

17.6.3 「ページの作成」ダイアログ用のスタイルの作成

独自のページ・スタイルを使用するには、これを/mytemplates.templates.xmlファイルで定義します。異なるページ・スタイルのセットを持つ個々のXMLファイルを管理する場合、XMLファイルを作成し、これをページ - 新規作成タスク・フローから参照できます。たとえば、異なる権限を持つ2人のユーザーに2つの異なるオプションを表示するには、2つのXMLファイルを作成し、各XMLファイルで異なるスタイルを定義する必要があります。これで「ページの作成」ダイアログで各ユーザーにそれぞれのオプションを表示できます。

この項では、実行時の「ページの作成」ダイアログの新しいスタイルを作成してこれを参照する方法を説明します。次のサブセクションが含まれます:

- 第17.6.3.1項「「ページの作成」ダイアログのスタイルを作成する方法」

- 第17.6.3.2項「新しいスタイルをページ - 新規作成タスク・フローから参照する方法」

17.6.3.1 「ページの作成」ダイアログのスタイルを作成する方法

「ページの作成」ダイアログのスタイルを作成するには:

1. /mytemplatesディレクトリで、XMLファイル(たとえばtemplates2.xml)を作成します。

2. templatesDef要素を追加し、その中に「ページの作成」ダイアログに含める各スタイルのtemplateDefエントリを追加します。
例17-17は、サンプルXMLファイルtemplates2.xmlに入力されたコードを示しています。このコードは、第17.6.1.1項「ページまたはページ・フラグメント・スタイルを作成する方法」で作成したpstemplateview.jsffフラグメントを参照します。

例17-17 「ページの作成」ダイアログのスタイルのサンプル・コード

<?xml version="1.0" encoding="UTF-8" ?>
- <templatesDef xmlns="http://xmlns.oracle.com/webcenter/page">
<templateDef name="pstemplateview.jsff" title="News" icon="/images/news.png"
type="taskflow" />
</templatesDef>

ここで

- nameは、テンプレートとして使用するページまたはページ・フラグメントの名前です。

- titleは、「ページの作成」ダイアログのスタイルのラベルです。

- typeは、テンプレートのタイプです。これは、値pageまたはtaskflowを取ります。デフォルト値pageは、スタイルの関連付けられたテンプレートに基づいてページを作成します。値taskflowは、スタイルの関連付けられたテンプレートに基づいてページのタスク・フロー・ビューを作成します。

3. XMLファイルを保存します。

17.6.3.2 新しいスタイルをページ - 新規作成タスク・フローから参照する方法

新しいXMLファイルをページ - 新規作成タスク・フローから参照するには:

1. ページ - 新規作成タスク・フローを含むJSPXページを開きます。

2. JSPXページを右クリックし、「ページ定義に移動」を選択します。

3. ページ定義ファイルの「実行可能ファイル」の下で「ページの作成」タスク・フローを選択し、ヘッダーにある「編集」アイコンをクリックします。
「タスク・フロー・バインディングの編集」ダイアログが開かれ、このタスク・フローでサポートされる入力パラメータのリストが表示されます。

4. oracle_webcenter_page_createpage_templatefileパラメータにテンプレート・ファイル名を指定します。
一定の値(たとえば、${'/mytemplates/templates2.xml'})を定義する場合、このテンプレートは、「ページの作成」ダイアログで常に使用されます。

ただし、パラメータにEL値を指定することによって、異なるテンプレートを異なる条件(ユーザーやスコープなど)に基づいてダイアログに使用することができます。

たとえば、2人のユーザーuser1とuser2がいて、各ユーザーに異なるページ・スタイルを表示するとします。この場合、「ページの作成」ダイアログに2つのテンプレートを持っている必要があります。たとえば、新しいテンプレートtemplates2.xmlを作成し、デフォルトのテンプレートtemplates.xmlを更新したとします。ここで、${TemplateBean.template}をoracle_webcenter_page_createpage_templatefileパラメータに対して指定できます。

この値を使用するには、まずuser1にtemplates.xmlをuser2にtemplates2.xmlを戻すメソッドgetTemplate()を指定してマネージドBeanのTemplateBean.javaを作成します。実行時に、user1とuser2には、「ページの作成」ダイアログでそれぞれ異なるオプションが表示されます。

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

6. 「すべて保存」をクリックして作業を保存します。

17.7 ページ・ビューのカスタマイズ

この項では、ページ・ビューをカスタマイズする様々な方法を説明します。次のサブセクションが含まれます:

- 第17.7.1項「ADF Facesコンポーネントを使用したページのレンダリング」

- 第17.7.2項「ページおよびタスク・フローのユーザー・セキュリティの管理」

17.7.1 ADF Facesコンポーネントによるページのレンダリング

ADF Facesコンポーネントを使用して実行時ページをレンダリングできます。たとえば、ADF Facesコンポーネントを使用して、ページをタブ、リンクおよびイメージ・リンク(すなわち、ページのサムネイル・ビュー)としてレンダリングできます。この項では、ADF Facesコンポーネントを使用して作成できるページのタイプの例を示します。次のサブセクションが含まれます:

- 第17.7.1.1項「ADF Facesコンポーネントを使用したページのタブとしてのレンダリング」

- 第17.7.1.2項「ADF Facesコンポーネントを使用したページのリンクとしてのレンダリング」

- 第17.7.1.3項「ADF Facesコンポーネントを使用したページのイメージ・リンクとしてのレンダリング」

17.7.1.1 ADF Facesコンポーネントを使用したページのタブとしてのレンダリング

アプリケーションを設計してページをタブとしてのレンダリングするとき、広範なADF Facesコンポーネントを使用してこれを実現できます。この項では、ページのタブとしてのレンダリングをサポートするADF Facesコンポーネントについて説明します。次のサブセクションが含まれます:

- 第17.7.1.1.1項「af:navigationPaneを使用したページのタブとしてのレンダリング」

- 第17.7.1.1.2項「af:panelTabbedを使用したページのタブとしてのレンダリング」

17.7.1.1.1 af:navigationPaneを使用したページのタブとしてのレンダリング

例17-18は、navigationPaneコンポーネントを使用してページをタブとしてどのようにレンダリングできるかについて説明しています。

ここでは、ページ・リストの取得に、カスタムBean (MyPageServiceBean)のpagesというメソッドが使用されます。ページAPIを使用してページのリストを取得する方法の詳細は、ページAPIの項のgetPages()メソッドを参照してください。

例17-18 af:navigationPaneを使用したページのタブとしてのレンダリング

<af:navigationPane id="tabs">
<af:forEach var="tab" items="#{MyPageServiceBean.pages}">
<af:commandNavigationItem text="#{tab.title}"  id="cni1"/>
</af:forEach>
</af:navigationPane>

例17-9に示したコードの出力は、一連のタブとしてレンダリングされます(図17-10)。

図17-10 ページのタブとしてのレンダリング

17.7.1.1.2 af:panelTabbedを使用したページのタブとしてのレンダリング

例17-19は、panelTabbedコンポーネントを使用してページをタブとしてどのようにレンダリングできるかについて説明しています。

ここでは、ページ・リストの取得に、カスタムBean (MyPageServiceBean)のpagesというメソッドが使用されます。

例17-19 af:panelTabbedを使用したページのタブとしてのレンダリング

<af:panelTabbed id="pt1" >
<af:forEach var="tab" items="#{ MyPageServiceBean.pages}">
<af:showDetailItem text="#{tab.title}" id="sdi1"/>
</af:forEach>
</af:panelTabbed>

例17-19のコードの出力は、一連のタブとしてレンダリングされます(図17-11)。

図17-11 ページのaf:panelTabbedコンポーネントとしてのレンダリング

17.7.1.2 ADF Facesコンポーネントを使用したページのリンクとしてのレンダリング

この項では、ADF Facesコンポーネントを使用してページを様々なタイプのリンクとしてレンダリングする例を示します。次のサブセクションが含まれます:

- 第17.7.1.2.1項「af:commandLinkを使用したページのリンクとしてのレンダリング」

- 第17.7.1.2.2項「af:goLinkを使用したページのリンクとしてのレンダリング」

17.7.1.2.1 af:commandLinkを使用したページのリンクとしてのレンダリング

例17-20は、af:commandLinkを使用してページをリンクとしてどのようにレンダリングできるかについて説明しています。

例17-20 af:commandLinkを使用したページのリンクとしてのレンダリング

<af:panelGroupLayout id="pgl1" layout="vertical">
<af:forEach var="tab" items="#{MyPageServiceBean.pages}">
<af:commandLink text="#{tab.title}" id="cl1"/>
</af:forEach>
</af:panelGroupLayout>

例17-20に示したコードの出力は、一連のリンクとしてレンダリングされます(図17-12)。

図17-12 ページのリンクとしてのレンダリング

17.7.1.2.2 af:goLinkを使用したページのリンクとしてのレンダリング

例17-21は、af:goLinkを使用してページをリンクとしてどのようにレンダリングできるかについて説明しています。

例17-21 af:goLinkを使用したページのリンクとしてのレンダリング

<af:panelGroupLayout id="pgl2" layout="vertical">
<af:activeOutputText value="List Of Pages" id="aot2"
inlineStyle="font-weight:bold; font-size:small;"/>
<af:forEach var="tab" items="#{pageServiceBean.pages}">
<af:goLink text="#{tab.title}" id="gl1"/>
</af:forEach>
</af:panelGroupLayout>

例17-21に示したコードの出力は、一連のリンクとしてレンダリングされます(図17-12)。

17.7.1.3 ADF Facesコンポーネントを使用したページのイメージ・リンクとしてのレンダリング

イメージ・リンクは、フル・ページ・ビューにアクセスするためにユーザーがクリックする、ページのリンクされたサムネイル・ビューです。例17-22は、ページをイメージ・リンクとしてどのようにレンダリングできるかについて説明しています。

例17-22 ページのサムネイル・ビューのレンダリング

<af:panelGroupLayout id="pg1_11" layout="scroll">
<af:panelGroupLayout id="pg11" layout="horizontal" halign="center"
valign="middle">
<h:panelGrid id="ds" columns="4" cellpadding="10" cellspacing="5"
style="text-align: center;" rowClasses="bottomAlign">
<af:forEach varStatus="stat" begin="0" end="#{MyPageServiceBean.pageCount}">
<af:panelGroupLayout id="sdsd" layout="vertical"
halign="center">
<af:commandImageLink text="" id="cil1"
icon="/<image_name>}"/>
<af:activeOutputText value="Page Title" id="aot3"/>
</af:panelGroupLayout>
</af:forEach>
</h:panelGrid>
</af:panelGroupLayout>
</af:panelGroupLayout>

例17-22で、pageCountは、現在のスコープでページ数を取得するカスタムBean (MyPageServiceBean)からのメソッドです。ユーザーは、ページAPIから他のメソッドを使用してこのメソッドを自分で書き込む必要があります。

例17-22で、<image_name>は、ページを関連付けるイメージの名前です。

例17-22のコードの出力は、ページのリンクされた一連のサムネイル・ビューとしてレンダリングされます(図17-13)。

図17-13 ページのイメージ・リンクとしてのレンダリング

17.7.2 ページおよびタスク・フローのユーザー・セキュリティの管理

コンポーザの一部であるセキュリティ・パネルまたはページAPIのいずれかを使用して、ページおよびタスク・フローへのアクセスを管理できます。

実行時セキュリティの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のページ・セキュリティの設定に関する項を参照してください。

ページAPIを使用したページ・アクセスの設定の詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

17.8 高度なページの管理に関する情報

この項では、ページを操作するために使用できるAPIおよびデータ・コントロールについて説明します。次の項が含まれます:

- 第17.8.1項「ページJava APIの使用方法」

- 第17.8.2項「ページ・データ・コントロールの使用方法」

17.8.1 ページJava APIの使用方法

この項では、Java APIについて説明します。ここでは、これらのAPIの場所、アプリケーションでこれらを使用できるようにする方法およびこれらを使用してページを作成する方法について説明します。次のサブセクションが含まれます:

- 第17.8.1.1項「ページAPIを使用するために必要な構成設定」

- 第17.8.1.2項「ページAPIの概要」

- 第17.8.1.3項「ページAPIを使用するようにアプリケーションを設定する方法」

- 第17.8.1.4項「例: ページを作成する方法」

17.8.1.1 ページAPIを使用するために必要な構成設定

ページAPIを使用するには、次の手順を実行する必要があります。

1. adf-config.xmlファイルに次のエントリがあることを確認します。

<namespace path="/oracle/webcenter/page/scopedMD"
metadata-store-usage="WebCenterFileMetadataStore"/>
<namespace path="/pageDefs"
metadata-store-usage="WebCenterFileMetadataStore"/>
<namespace path="/mytemplates"
metadata-store-usage="WebCenterFileMetadataStore"/>

adf-config.xmlにこれらのエントリが存在しない場合、テキスト・エディタを使用してこれらを追加します。

2. 動的ページ・マッピングを使用するように.cpxファイルを構成します。

<Application xmlns="http://xmlns.oracle.com/adfm/application"
version="11.1.1.51.35" id="DataBindings" SeparateXMLFiles="false"
Package="view" ClientType="Generic"
PageMapClass="oracle.jbo.uicli.mom.DynamicPageMapImpl"
BasePageDefPackageName="pageDefs">
<definitionFactories>
<factory nameSpace="http://xmlns.oracle.com/adf/controller/binding"
className="oracle.adf.controller.internal.binding.TaskFlowBindingDefFactoryImpl"/>
<dtfactory className="oracle.adf.controller.internal.dtrt.binding.BindingDTObjectFactory"/>
</definitionFactories>
<pageMap/>
<page path="/page1.jspx" usageId="view_page1PageDef"/>
</pageMap>
<pageDefinitionUsages/>
<page id="view_page1PageDef" path="view.pageDefs.page1PageDef"/>
</pageDefinitionUsages>
<dataControlUsages>
<dc id="PageServiceDC"
path="oracle.webcenter.page.internal.model.PageServiceDC"/>
</dataControlUsages>
</Application>

.cpxファイルにこれらのエントリが存在しない場合、テキスト・エディタを使用してこれらを追加します。

17.8.1.2 ページAPIの概要

ページAPIは、oracle.webcenter.page.model.PageServiceクラスにあります。

次のAPIをページで使用できます。

- createPage: 第17.8.1.4項「例: ページを作成する方法」を参照

- deletePage

- createTaskflow: 例17-23「ページ・サービスAPIを使用したタスク・フローのビュー・ページの作成」を参照

- deleteTaskflow

- createScope

- deleteScope

- copyPage

- getPageList: 例17-24「ページAPIを使用したページのリストの取得」を参照

- setPageTitle: 例17-25「ページAPIを使用したページのタイトルの設定」を参照

- changeHiddenStatus

- changePageScheme: 例17-26「ページAPIを使用したページのスキームの設定」を参照

- setPageAccess

ページAPIの詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

例17-23 ページAPIを使用したタスク・フローのビュー・ページの作成

PageDef createTaskflow(String nameFormat, String title, String pageTemplate,
String pageTemplatePath, String cssStyle, String schemeBGImage, String schemeBGColor)
throws DuplicateNameException, InvalidNameException, LockUnavailableException;

ここで

- nameFormatは、タスク・フローの名前のフォーマットです。これには、users/UserA/taskflow{0}.jspxなどのサブパスを含めることができます。

- titleは、タスク・フローのタイトルです。

- pageTemplateは、タスク・フローに使用されるテンプレートです。

- pageTemplatePathは、タスク・フローのテンプレートのパスです。

- cssStyleは、このタスク・フローのCascading Style Sheetファイルです。

- schemeBGImageは、カスタム・スキームの背景イメージです。

- schemeBGColorは、カスタム・スキームの背景色です。

これは、新しく作成されたタスク・フローのPageDefを戻し、次のものをスローします。

- 指定された名前を更新に使用できない場合、InvalidNameException。

- 同じ名前のページがすでに存在する場合、DuplicateNameException。

- 別のページまたはタスク・フローの操作が進行中の場合、LockUnavailableException。

例17-24 ページAPIを使用したページのリストの取得

PageDef getPageList(String path)

ここで

- pathは、ユーザーが表示可能なすべてのページのリストを表示する場所を示すパスです。パスを指定しないと、現在のスコープでユーザーが表示できるすべてのページのリストが戻されます。

現在のスコープまたは特定のパスの下で非表示ではないすべてのページのリストが戻されます。

例17-25 ページAPIを使用したページのタイトルの設定

setPageTitle(String pagepath, String title)
throws InvalidNameException, ObjectChangedException, LockUnavailableException, oracle.webcenter.framework.translations.exception.TranslationsException;

ここで

- pagepathは、タイトルを変更するページのパスです。

- titleは、ページの新しい名前です。

ページの名前が更新され、次のものがスローされます。

- 指定された名前を更新に使用できない場合、InvalidNameException。

- 最後に取得されてからページが変更されている場合、ObjectChangedException。

- 別のページの操作が進行中の場合、LockUnavailableException。

例17-26 ページAPIを使用したページのスキームの設定

setPageScheme(String pagepath, String schemeName, String schemeBGImage, String schemeBGColor, String otherCSS)

ここで

- pagepathは、スキームを変更するページのパスです。

- schemeNameは、ページのCSSの名前です。

- schemeBGImageは、カスタム・スキームの背景イメージです。

- schemeBGColorは、カスタム・スキームの背景色です。

- otherCSSは、指定するその他のCSS属性を示します。

JSPXページでページのスキーム・プロパティが更新されます。

17.8.1.3 ページAPIを使用するようにアプリケーションを設定する方法

ページAPIを使用するには、JDeveloperアプリケーションにOracle WebCenter Portalのページ拡張機能が存在している必要があります。JDeveloperで、「ヘルプ」→「バージョン情報」メニューに進み、「拡張機能」タブをクリックします。図17-14に示すように、「WebCenter Portal - ページ・サービス」を探します。

図17-14 JDeveloperの拡張機能

注意:

Oracle WebCenter Portalの拡張機能の追加の詳細は、第2章「開発環境の設定」を参照してください。

「WebCenter Portal - ページ・サービス」がOracle WebCenter Portalの拡張機能に含まれていることを確認した後、ページ・ライブラリをプロジェクトに追加する必要があります。

プロジェクトにページ・ライブラリを追加するには:

1. 「Portal」プロジェクトを右クリックし、「プロジェクト・プロパティ」→「ライブラリとクラスパス」の順に選択します。

2. 「ライブラリの追加」をクリックします。

3. 「WebCenterページ・サービス」および「WebCenterページ・サービス・ビュー」ライブラリを選択します(図17-15を参照)。

図17-15 ページ・ライブラリの追加

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

JDeveloperをコード・エディタとして使用しない場合、CLASSPATHを次のjarファイルに設定できます。

- Jdev_Home/jdeveloper/webcenter/jlib/pagem.jar

- Jdev_Home/jdeveloper/webcenter/jlib/pages.jar

- Jdev_Home/jdeveloper/webcenter/jlib/page-service-view.jar

- Jdev_Home/jdeveloper/webcenter/jlib/page-service-skin.jar

17.8.1.4 例: ページを作成する方法

この項では、ページAPIを使用してページを作成する方法の例を示します。要件によっては別のメソッドが必要な場合があります。PageServiceオブジェクトで必要なメソッドを起動するモデルとして、このサンプル・コードではcreatePageメソッドを起動する方法を使用します。

通常、ページAPIを使用して作成されるページは、テンプレートに基づきます。APIを使用してページの作成を開始する前に、各テンプレート・ファイル(MyPageTemplate1.jspxなど)が、JSPXページと同じディレクトリにページ定義ファイル(この場合MyPageTemplate1PageDef.xml)を持っていることを確認する必要があります。

例17-27に、createPage() APIを使用してMyScopeというスコープを作成し、MDSセッション・インスタンスを作成して、この新しいスコープを持つページ・クラスをインスタンス化し、このスコープ内にページを作成する方法を示します。新しいページは、MyPageTemplate1.jspxテンプレートに基づいて作成されます。

例17-27 ページの作成方法を示すサンプル

...

public void createMyPage
{
try
{
MDSSession mdsSess = (MDSSession)ADFContext.getCurrent().getMDSSessionAsObject();
PageServiceConfig config = new PageServiceConfig(mdsSess, "defaultScope");
mPageService = PageServiceFactory.createInstance(config);

String pageNameFormat ="Page{0}.jspx";
String pageTitle ="New Page";

//
// The template used to create the new page is /mytemplates/MyPageTemplate1.jspx
// path "/mytemplates" should be defined as a MDS namespace.
// Also MyPageTemplate1.jspx should have a pageDef called "MyPageTemplate1PageDef.xml and
// it has the same path as the jspx file.

PageDef newPage = mPageService.createPage(
"personaluserpage", pageNameFormat, pageTitle,
"MyPageTemplate1.jspx",
"/mytemplates/",
null, null, null);

}
catch(Exception e)
{
// Handle exception
}
}

...

注意:

ページAPIを使用して作成されるページおよびタスク・フローには、デフォルトでは権限が付与されません。明示的にページの権限を定義する必要があります。

ページAPIの詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

17.8.2 ページ・データ・コントロールの使用方法

ページ・データ・コントロールを使用すると、実行時に既存のページの情報を表示したり、リストされたページを削除できます。

この項では、ページ・データ・コントロールをプロジェクトに追加する方法、およびこれを使用してページを表示、編集および削除する方法を説明します。次のサブセクションが含まれます:

- 第17.8.2.1項「ページ・データ・コントロールを追加する方法」

- 第17.8.2.2項「実行時にページを表示、編集および削除する方法」

17.8.2.1 ページ・データ・コントロールを追加する方法

この項では、設計時にページ・データ・コントロールを追加する例を示します。

プロジェクトにページ・データ・コントロールを追加するには:

1. アプリケーション・ナビゲータの「データ・コントロール」パネルに「ページ・データ・コントロール」が表示されていることを確認します。
「ページ・データ・コントロール」は、次のいずれかのアクションを実行すると、アプリケーション・ナビゲータに表示されます。

- プロジェクトにページ - 新規作成タスク・フローを追加(第17.2.1.1項「ページ - 新規作成タスク・フローの追加方法」を参照)。

- 第4.1.3項「WebCenter Portalのデータ・コントロールの使用」の説明に従って、「ページ・データ・コントロール」を追加。

2. アプリケーション・ナビゲータの「データ・コントロール」パネルで、図17-16に示すように、「ページ・データ・コントロール」を開きます。

図17-16 ページ・データ・コントロール

3. 「getPageTree()」の下で、「PageTreeNode」をドラッグし、これをページにドロップします。

4. 「作成」メニューで「表」を選択し、「ADF読取り専用表」を選択します。

5. 「表の列の編集」ダイアログで、「OK」をクリックします。

6. 「アクション・バインディングの編集」ダイアログで、scopeNameパラメータを入力し、指定したスコープの下にリストされたすべてのページを表示します。「OK」をクリックします。
値を入力しないと、データ・コントロールはデフォルトのスコープを使用します。図17-17では、スコープ値は、カスタム・マネージドBeanからフェッチされます。

図17-17 scopeNameパラメータ

7. 新しい列を手順4で作成した表に追加します。

8. 実行時にページを削除する列を追加するには、deletePage(string)メソッドをドラッグし、これを新しい列にドロップします。

9. 「作成」メニューで「メソッド」を選択し、「ADFリンク」を選択します。

10. 「アクション・バインディングの編集」ダイアログの「パラメータ」セクション(図17-18を参照)で、pagePathパラメータに次の値を指定します。

#{bindings.PageTreeNode.treeModel.rowData.pagePath}

図17-18 「アクション・バインディングの編集」ダイアログ

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

12. 「データ・コントロール」パネルで、「ページ・データ・コントロール」→「getPageTree()」→「PageTreeNode」→「操作」の順に開きます。

13. 「実行」をドラッグし、ページにADFボタンとしてドロップします。

14. プロパティ・インスペクタで、ボタンのText属性をRefreshに設定します。
これでページのリストにリフレッシュ機能が付き、ユーザーは、ページの追加またはリストからのページの削除の後にリストをリフレッシュできます。

15. オプションで、ページ編集モードを起動するリンクとしてページを表示するには、ページ・ソースを表示し、次のように表のページ・パス列のoutputText要素をgoLinkに置き換えます。
置換前

<af:outputText value="#{row.pagePath}"/>

置換後

<af:goLink destination="/faces#{row.pagePath}" text="#{row.title}" targetFrame="_top"/>

16. ページを保存し、ブラウザで実行します。

17. 作成したデータ・コントロール表は図17-19のようになります。

図17-19 データ・コントロール表のサンプル

17.8.2.2 実行時にページを表示、編集および削除する方法

実行時にページを表示するには、第17.2.1.1項「ページ - 新規作成タスク・フローの追加方法」の手順16で生成したリンクを選択します。アプリケーションが正しく保護されていれば、実行時にページに編集リンクが表示されます。

ページを削除するには、該当するページの行にある「deletePage」ボタンをクリックします。このボタンは、第17.2.1.1項「ページ - 新規作成タスク・フローの追加方法」の手順8で生成されたものです。表の「リフレッシュ」ボタンをクリックして、表から削除されたページ行を除去します。

ページを実行時に表示、編集および削除する方法については、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「ポータル・ページの操作」の部を参照してください。

18 コンポーザを使用したページの実行時編集の有効化

この章では、Portal Frameworkアプリケーションのページにコンポーザ・コンポーネントを追加して、ページの実行時編集を可能にする方法を説明します。

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

- 第18.1項「コンポーザ・コンポーネントを使用した編集可能ページの設計」

- 第18.2項「コンポーザ・コンポーネントを使用した編集可能ページの設計: 例」

- 第18.3項「ページへのコンテンツの移入」

- 第18.4項「コンポーザの問題のトラブルシューティング」

18.1 コンポーザ・コンポーネントを使用した編集可能ページの設計

コンポーザ・タグ・ライブラリには、Oracle JDeveloperでページに追加できる設計時コンポーネントが用意されており、実行時のページ編集が可能になります。設計時にコンポーザ・コンポーネントを使用してページを作成すると、実行時にコンポーザはページ編集モードに入り、要件に応じてページを変更するオプションを提供します。

Portal FrameworkアプリケーションとPortal Framework以外のアプリケーションでカスタマイズを有効にできます。アプリケーション内で、次のタイプのページのカスタマイズを有効にできます。

- ページ・テンプレートに基づいていない通常のJSPXページ

- JSPXテンプレート・ページ

- ページ・テンプレートに基づくJSPXページ

コンポーザ・コンポーネントおよびその属性の詳細は、第16.6項「コンポーザ・コンポーネント」を参照してください。

この項では、設計時にコンポーザ・コンポーネントをページに追加し、これを実行時に編集可能にする方法を説明します。次のサブセクションが含まれます:

- 第18.1.1項「カスタマイズ可能ページの作成方法」

- 第18.1.2項「Page Customizableコンポーネントを使用した実行時カスタマイズの有効化方法」

- 第18.1.3項「Change Mode LinkまたはChange Mode Buttonを使用したページ・モードの切替えを有効にする方法」

- 第18.1.4項「Panel Customizableコンポーネントを使用したページの編集可能領域の定義方法」

- 第18.1.5項「Layout Customizableコンポーネントを使用したページのレイアウトのカスタマイズの有効化方法」

- 第18.1.6項「Show Detail Frameコンポーネントを使用したコンポーネントのカスタマイズの有効化方法」

- 第18.1.7項「カスタマイズ可能ページを作成するページ・テンプレートの作成方法」

- 第18.1.8項「移入されたページでカスタマイズを有効にする方法」

- 第18.1.9項「コンポーザ・コンポーネントの追加時に行われる処理」

- 第18.1.10項「実行時の処理」

- 第18.1.11項「編集可能ページの設計時の必知事項」

18.1.1 カスタマイズ可能ページの作成方法

Portal Frameworkアプリケーションでのカスタマイズ可能JSPXページの作成については、第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」を参照してください。

JDeveloperで新しいページを作成するとき、これは、図18-1に示すように、Webコンテンツの下でアプリケーション・ナビゲータにリストされます。また、ページはエディタで開かれ、アクティブなエディタ・パネルになります。

図18-1 アプリケーション・ナビゲータのカスタマイズ可能JSPXページ

セキュリティに関する考慮事項

デフォルトでは、Portal Frameworkアプリケーションは、ADFセキュリティで構成されます。デフォルトのユーザー名およびパスワード(weblogic/weblogic1)は自動的に作成されます。

保護されたアプリケーションでユーザーがページを編集できるようにするには、ページの編集権限またはカスタマイズ権限を必要なユーザーまたはロールに付与する必要があります。権限の付与の詳細は、第74.4項「ロール・マネージャ・タスク・フローの使用」を参照してください。

アプリケーションでADFセキュリティが有効になっていない場合、セキュリティを実装し、アプリケーションを構成してユーザーが個別のアイデンティティを持つようにユーザーを認証することによって、ユーザーの権限が実行時のカスタマイズ機能にどのように影響するかをテストできます。アプリケーションで基本的なセキュリティ・モデルを実装する手順は、第74.3項「ADFセキュリティ設定の構成」を参照してください。

18.1.2 Page Customizableコンポーネントを使用した実行時カスタマイズの有効化方法

Page Customizableコンポーネントをページに追加すると、ユーザーがページの編集モードに切り替えたときにコンポーザが起動します。Page Customizableコンポーネントを追加すると、一部の構成ファイルがデフォルトのコンポーザ固有の設定によって自動的に更新されます。詳細は、第18.1.9項「コンポーザ・コンポーネントの追加時に行われる処理」を参照してください。

注意:

ページにPage Customizableを追加する前の考慮事項については、第18.1.11項「編集可能ページの設計時の必知事項」を参照してください。

ページにPage Customizableコンポーネントを追加するには:

1. カスタマイズ可能なJSPXページを開きます。

2. コンポーネント・パレットで、ドロップダウン・リストから「ADF Faces」を選択し、Panel Stretch Layoutコンポーネントをページにドラッグします。

注意:

Panel Stretch Layoutコンポーネントは、centerファセットの子をストレッチし、使用可能なスペースすべてを埋めます。これは、ユーザーがブラウザ上の場合にも当てはまります。

3. コンポーネント・パレットで、ドロップダウン・リストから「コンポーザ」を選択します。

4. Page CustomizableコンポーネントをPanel Stretch Layoutのcenterファセットに追加します。
Page Customizableがaf:form要素内でネストされていることを確認する必要があります。Page Customizableはリッチ・クライアント・コンポーネントで、正常に機能するためにはリッチ・クライアント・フレームワークが必要です。

5. Page Customizableコンポーネントの必須属性には、ページにコンポーネントを追加する際にデフォルト値が移入されます。
属性値の定義または変更は、第B.1.1項「Page Customizableコンポーネント」を参照してください。

6. ページを保存します。
図18-2に示すように、Page Customizableコンポーネントの下にPanel Customizableコンポーネントが子コンポーネントとしてデフォルトで追加され、Page Editor Panelとその他の各種ファセットが追加されます。

図18-2 Page Customizableコンポーネント

図18-1は、ページ・ソース・ビューのpe:pageCustomizableタグを示しています。

例18-1 ページの「ソース」ビューのPage Customizableコンポーネント

<pe:pageCustomizable id="pageCustomizable1"
<cust:panelCustomizable id="panelcustomizable1"
layout="scroll"/>
<f:facet name="editor">
<pe:pageEditor id="pep1"/>
</f:facet>
</pe:pageCustomizable>

18.1.3 Change Mode LinkまたはChange Mode Buttonを使用したページ・モードの切替えを有効にする方法

ユーザーがページの編集モードに簡単に切り替えられるようにするには、ページにChange Mode LinkまたはChange Mode Buttonコンポーネントを追加する必要があります。

注意:

編集モードへの切替えを可能にする別の方法は、変更モードAPIを使用することです。このAPIの詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

ページにPage Customizableコンポーネントを追加する前の考慮事項については、第18.1.11項「編集可能ページの設計時の必知事項」を参照してください。

Change Mode LinkまたはChange Mode Buttonコンポーネントを追加するには:

1. コンポーネント・パレットで、「コンポーザ」を選択します。

2. 「構造」ウィンドウの、前の項で追加したPanel Stretch Layoutのtopファセット内で、コンポーネント・パレットからChange Mode LinkまたはChange Mode Buttonコンポーネントをドラッグします。
Change Mode LinkまたはChange Mode Buttonがaf:form要素内でネストされていることを確認する必要があります。Change Mode LinkまたはChange Mode Buttonコンポーネントはリッチ・クライアント・コンポーネントで、正常に機能するためにはリッチ・クライアント・フレームワークが必要です。

注意:

- ページでPanel Stretch Layoutを使用していない場合は、Change Mode LinkまたはChange Mode Buttonコンポーネントを「構造」ウィンドウのPage Customizableコンポーネントの上に追加します。こうすることによって、Change Mode LinkまたはChange Mode Buttonが実行時に正しく表示されます。

- ページにPage Customizableがある場合のみChange Mode LinkまたはChange Mode Buttonを使用します。Change Mode LinkまたはChange Mode Buttonが含まれているがPage Customizableコンポーネントが含まれていないページを実行すると問題が発生する場合があります。

3. Change Mode LinkまたはChange Mode Buttonコンポーネントの必須属性は、ページにコンポーネントを追加する際にデフォルトで設定されます。
第B.1項「コンポーザ・コンポーネントのプロパティ」の表B-2を参照して、オプションで、その他の属性を設定できます。

注意:

保護されたアプリケーションでは、すべてのユーザーの権限を確認し、権限のあるユーザーに対してのみページ上で「編集」リンクまたはボタンを有効にすることをお薦めします。認証されていないユーザーが偶然ページ編集モードに入った場合、コンポーネント・プロパティを変更することはできますが、その変更は保存されません。

選択したユーザーの「編集」リンクまたはボタンを有効にするには、Change Mode LinkまたはChange Mode Buttonコンポーネントのrendered属性のEL値を指定します。詳細は、第B.1.2項「Change Mode LinkおよびChange Mode Button」を参照してください。

図18-3に示すように、「構造」ウィンドウのaf:formタグ内に、pe:changeModeLinkまたはpe:changeModeButtonタグが表示されます。

図18-3 Change Mode Link

図18-4に、JDeveloperのページの「設計」ビューのChange Mode Linkを示します。

図18-4 「設計」ビューのChange Mode Link

18.1.4 Panel Customizableコンポーネントを使用したページの編集可能領域の定義方法

Panel Customizableコンポーネントは、ポートレットまたはリージョンの追加、配置、削除などのページ構成またはコンテンツ管理のタスクに必要です。デフォルトでは、1つのPanel CustomizableコンポーネントがPage Customizableコンポーネントの直接の子として自動的に追加されます。要件に応じて、このPanel Customizableコンポーネント内にさらにPanel Customizableコンポーネントを追加できます。

実行時にコンポーネントをドラッグ・アンド・ドロップできるのはPanel Customizableコンポーネント内のみです。

注意:

ページにPage Customizableを追加する前の考慮事項については、第18.1.11項「編集可能ページの設計時の必知事項」を参照してください。

ページにPanel Customizableコンポーネントを追加するには:

1. コンポーネント・パレットで、ドロップダウン・リストから「コンポーザ」を選択します。

2. コンポーネント・パレットから「構造」ウィンドウにPanel Customizableコンポーネントをドラッグして、フォーム内の適切な場所にドロップします。
Panel Customizableがaf:form要素内でネストされていることを確認する必要があります。Panel Customizableコンポーネントはリッチ・クライアント・コンポーネントで、正常に機能するためにはリッチ・クライアント・フレームワークが必要です。

注意:

- Page Customizableコンポーネントには、デフォルトで1つの直接の子のPanel Customizableコンポーネントが含まれています。別のPanel CustomizableをPage Customizableの直接の子コンポーネントとして追加しないでください。Page Customizableに複数の子コンポーネントがある場合、最初の子コンポーネントのみはページの実行中に選択されます。

- 実行時にコンポーネントをドロップできるのはPanel Customizableコンポーネント内のみであるため、ページのルートのPanel Customizableコンポーネントは削除しないでください。

3. Panel Customizableコンポーネントの必須属性は、ページにコンポーネントを追加する際にデフォルトで設定されます。
第B.1項「コンポーザ・コンポーネントのプロパティ」の表B-6を参照して、オプションで、その他の属性を設定できます。

注意:

ストレッチ・レイアウトをPanel Customizableに選択した場合、最初の子コンポーネントがストレッチされ、Panel Customizableコンポーネントの使用可能なスペースを埋めます。その他の子コンポーネントは、ページから削除されていなくても無視されます。

18.1.5 Layout Customizableコンポーネントを使用したページのレイアウトのカスタマイズの有効化方法

Layout Customizableコンポーネントを使用して、ページまたはページの領域にあるコンポーネントのレイアウトの実行時定義または変更を有効にします。実行時にユーザーがレイアウトをカスタマイズすることを許可する場合のみ、このコンポーネントを使用します。静的レイアウトでは、Panel Group LayoutまたはPanel Stretch Layoutなどの代替のコンポーネントを使用します。

Layout Customizableコンポーネントを追加するには:

1. コンポーネント・パレットで、ドロップダウン・リストから「コンポーザ」を選択します。

2. Layout Customizableコンポーネントを「構造」ウィンドウにドラッグして、Panel Customizableコンポーネント内にドロップします。
ターゲットのPanel Customizableコンポーネントは、Page Customizableコンポーネントの子である必要があります。

Layout Customizableがaf:form要素内でネストされていることを確認します。Layout Customizableコンポーネントはリッチ・クライアント・コンポーネントで、正常に機能するためにはリッチ・クライアント・フレームワークが必要です。

注意:

Page Customizableの直接の子のPanel Customizableを削除し、Layout CustomizableをPage Customizableの直接の子として追加できます。ただし、Page Customizableに直接の子コンポーネントが1つしかないことを確認する必要があります。

3. Layout Customizableコンポーネントの必須属性は、ページにコンポーネントを追加する際にデフォルトで設定されます。
第B.1項「コンポーザ・コンポーネントのプロパティ」の表B-3を参照して、オプションで、その他の属性を設定できます。

注意:

Layout Customizableコンポーネントが実行時にページにはっきりと表示されることを確認するには、Text属性を使用してコンポーネントに説明ラベルを提供します。

図18-5に示すように、pe:layoutCustomizableタグは、「構造」ウィンドウのcust:panelCustomizableタグ内にあります。子のPanel Customizableコンポーネントは、デフォルトでLayout Customizableコンポーネント内に追加されます。また、Panel Customizableコンポーネントは、Layout Customizableコンポーネントの各ファセット内に追加されます。これらのPanel Customizableコンポーネントにより、実行時にLayout Customizableコンポーネント内にコンテンツを追加できるようになります。

直接の子として追加されたPanel Customizableは、メイン領域(実行時のレイアウトの中央領域)になります。デフォルトの2つのLayout Customizableファセット内に追加されたPanel Customizableコンポーネントは、AおよびBという2つのコンテンツ領域になります。実行時に事前定義済のレイアウトを選択すると、選択したパターンでコンテンツが表示されるように、これら3つの領域が配置されます。各レイアウト・タイプでコンテンツがどのようにレイアウトされるかに関する詳細は、「事前定義されたレイアウト・タイプ」を参照してください。

注意:

oneColumnレイアウトでは、AおよびBは、Panel Customizableコンポーネントに子コンポーネントが含まれている場合のみレンダリングされます。

図18-5 Layout Customizableコンポーネント

18.1.6 Show Detail Frameコンポーネントを使用したコンポーネントのカスタマイズの有効化方法

プロパティの編集、コンポーネントの移動、最小化、削除などのカスタマイズを有効にする場合、Show Detail FrameコンポーネントをページのPanel Customizableコンポーネント内にドロップできます。その後、このShow Detail Frame内にコンポーネントを追加できます。

注意:

各Show Detail Frameコンポーネントにある子コンポーネントは1つのみである必要があります。複数の子コンポーネントを追加した場合、最初の1つのみがレンダリングされます。その他の直接の子コンポーネントは、設計時または実行時にレンダリングされません。

複数のコンポーネントがShow Detail Frameに囲まれる必要がある場合、Panel Group LayoutやPanel Customizableなどのグループ化コンポーネントをShow Detail Frameコンポーネントに追加し、ADF Facesコンポーネントまたはその他のコンテンツをこのグループ化コンポーネントに含めます。

Show Detail Frameコンポーネントを使用して、ページ表示モードおよび編集モードでのカスタマイズを有効にします。表示モードで行われた変更はそのユーザーのみが使用でき、編集モードで行われた変更はすべてのアプリケーション・ユーザーが使用できます。

ページにShow Detail Frameコンポーネントを追加するには:

1. コンポーネント・パレットで、「コンポーザ」を選択します。

2. 「構造」ウィンドウにShow Detail Frameコンポーネントをドラッグして、Panel Customizableコンポーネント内にドロップします。
Show Detail Frameコンポーネントは、ページのPanel Customizableコンポーネントにネストさせる必要があります。

3. Show Detail Frameコンポーネントの必須属性は、ページにコンポーネントを追加する際にデフォルトで設定されます。
第B.1項「コンポーザ・コンポーネントのプロパティ」の表B-7を参照して、オプションで、その他の属性を設定できます。

図18-6に示すように、cust:showDetailFrameタグがcust:panelCustomizableタグ内に追加されます。

図18-6 Show Detail Frameコンポーネント

このタイプのタスクをさらに理解するには、第18.2項「コンポーザ・コンポーネントを使用した編集可能ページの設計: 例」を参照してください。

18.1.7 カスタマイズ可能ページを作成するページ・テンプレートの作成方法

アプリケーションでカスタマイズ可能ページを多数作成することを計画している場合、カスタマイズを可能にしたADFページ・テンプレートのページに基づいて作成できます。コンポーザ・コンポーネントをテンプレート自体に追加することによって、これらのコンポーネントをカスタマイズ可能ページそれぞれに追加する必要をなくすことができます。

ページ・テンプレートを作成し、そのカスタマイズを有効にするには:

1. JDeveloperのアプリケーション・ナビゲータで、テンプレートを作成するアプリケーションのポータル・プロジェクトに移動し、そのポータル・プロジェクトを右クリックし、「新規」を選択します。

2. 「新規ギャラリ」で、「Web層」を開き、「JSF」、「JSFページ・テンプレート」の順に選択し、「OK」をクリックします。

3. 「JSFページ・テンプレートの作成」ダイアログで、テンプレートのファイル名を入力し、レイアウトを選択し、新規ファセットを宣言します。

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

5. テンプレートで、コンポーザのタグ・ライブラリから、Change Mode LinkまたはChange Mode ButtonコンポーネントをPanel Stretch Layoutコンポーネントの上に追加します。

6. Page CustomizableコンポーネントをPanel Stretch Layoutコンポーネントのcenterファセット内に追加します。

7. 子のPanel CustomizableコンポーネントをPage Customizableから削除し、Panel Group Layoutコンポーネントをその場所に追加します。

8. Panel Group Layoutのlayout属性をscrollに設定します。

9. Facet RefコンポーネントをPanel Group Layout内に追加し、手順3でファセットを宣言する際に使用した同じ名前を指定します。テンプレートは、図18-7に示すようにファセットを表示します。

図18-7 新しいページ・テンプレート・ファイル

10. テンプレート・ファイルを保存します。

このテンプレートに基づいてカスタマイズ可能ページを作成できるようになりました。ページを作成したら、Panel CustomizableまたはLayout Customizableコンポーネントを新しいページに表示されるファセット内に追加できます。ページ・コンテンツをPanel CustomizableまたはLayout Customizableコンポーネントに追加できます。

18.1.8 移入されたページでカスタマイズを有効にする方法

コンテンツが移入されたJSPXページを持つ既存のADFアプリケーションがあり、カスタマイズを有効にする場合、Page Customizableコンポーネント内のすべてのコンテンツを移動してこれを実行できます。

まずPage Customizable、次にLayout Customizable、さらにPanel CustomizableコンポーネントおよびShow Detail Frameコンポーネントの必須の階層を追加する必要があります。既存のコンポーネントそれぞれをドラッグし、Page Customizable内の適切な場所にドロップします。

注意:

- Page Customizableコンポーネントの直接の子コンポーネントは1つのみであることを確認します。
複数の直接の子コンポーネントを追加すると、最初の子コンポーネントのみが実行時にレンダリングされます。最初の子コンポーネントがページに合せてストレッチされます。その他の直接の子コンポーネントはすべて無視され、ページにレンダリングされません。

- 実行時にユーザーがレイアウトをカスタマイズすることを許可する場合のみ、Layout Customizableコンポーネントを使用します。静的レイアウトでは、Panel Group Layout、Panel Stretch Layoutコンポーネントなどの代替のコンポーネントを使用します。

- 最良の結果を得るためには、ソース・コードの編集によってではなく、「構造」ウィンドウを使用してコンポーネントを移動します。

18.1.9 コンポーザ・コンポーネントの追加時に行われる処理

ページにPage Customizableコンポーネントを追加する際には、次の構成が自動的に実行されます。

- デフォルトのリソース・カタログの定義ファイルdefault-catalog.xmlがアプリケーションで構成されます。default-catalog.xmlファイルは、Application_Root/Portal/src/portalディレクトリにあります。アプリケーションのエンド・ユーザーが使用できるデフォルト・リソース・カタログにコンポーネントを追加するには、第14章「リソース・カタログの開発」を参照してください。
Portal Frameworkアプリケーションで、default-catalog.xmlファイルはApplication_Root/Portal/public_html/oracle/webcenter/portalapp/catalogsディレクトリにあり、ページを作成しPage Customizableコンポーネントを追加しなくてもすぐに使用できます。

- アプリケーションにリソース・カタログ・ビューアが構成されます。実行時、コンポーザは、このビューアからページにリソースを追加するオプションをユーザーに提供します。

- Application_Root/Project_Name/public_html/WEB-INFディレクトリで使用可能なweb.xmlファイルは、更新されてMDS JSPプロバイダを構成します。

- ComposerChangeManagerは、アプリケーションのweb.xmlファイル内に構成されます。詳細は、第20.11項「永続性変更マネージャの構成」を参照してください。

- アプリケーションを作成すると、最小限のadf-config.xmlファイルも作成されます。アプリケーション・ページにPage Customizableコンポーネントを追加すると、必要な構成がadf-config.xmlファイルに追加されます。たとえば、変更の永続性は、このファイルのadf-faces-configセクションで構成されます。詳細は、第20.11項「永続性変更マネージャの構成」を参照してください。

- Application_Root/Portal/adfmsrc/portalディレクトリのDataBindings.cpxファイルは更新され、ページにタスク・フローが存在できるようになります。

- ページ定義ファイルは、Oracle WebCenter Portal拡張JARファイルの一部として入手可能なコンポーザ・タスク・フローに対するバインディングを使用して更新されます。例18-2は、Page Customizableコンポーネントがアプリケーション・ページに追加された後のページ定義ファイルのコードを示しています。

図18-2 Page Customizableコンポーネントを追加した後のページ定義ファイル

<?xml version="1.0" encoding="UTF-8" ?>
<pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel"
version="11.1.1.57.95" id="rcpagePageDef"
Package="portal.pageDefs">
<parameters/>
<executables>
<variableIterator id="variables"/>
<taskFlow id="pageeditorpanel"
taskFlowId="#{pageEditorBean.pageEditorPanel}"
xmlns="http://xmlns.oracle.com/adf/controller/binding"/>
</executables>
<bindings/>
</pageDefinition>

関連項目:

コンポーザ・コンポーネントを追加するときに作成または変更されるファイルの詳細は、第B.2項「コンポーザ固有のファイルと構成」を参照してください。

18.1.10 実行時の処理

実行時、ユーザーは、第16.4項「ページ表示モードでのカスタマイズ機能」および第16.5項「ページの編集」で説明されているすべてのタスクを実行できます。

各コンポーザ・コンポーネントには、第16.6項「コンポーザ・コンポーネント」で説明されている実行時機能が用意されています。

注意:

ページで実行する実行時カスタマイズは、アプリケーションをターゲット・サーバーにデプロイするときに引き継がれません。

18.1.11 編集可能ページの設計時の必知事項

カスタマイズ可能ページにコンポーザ・コンポーネントを追加する際には、次の事項に注意する必要があります。

- 保護されたアプリケーションでユーザーがページを編集できるようにするには、ページの編集権限またはカスタマイズ権限を必要なユーザーまたはロールに明示的に付与する必要があります。権限の付与の詳細は、第74.4項「ロール・マネージャ・タスク・フローの使用」を参照してください。

- コンポーネントの実行時カスタマイズを有効にするには、ページにPage Customizableコンポーネントを1つだけ追加します。

注意:

ページに2つ目のPage Customizableコンポーネントを追加しないでください。ページを実行すると、最初のPage Customizableコンポーネントのみが選択されます。

- Page Customizableコンポーネントの直接の子コンポーネントは1つのみであることを確認します。
複数の直接の子コンポーネントを追加すると、最初の子コンポーネントのみが実行時にレンダリングされます。最初の子コンポーネントがページに合せてストレッチされます。その他の直接の子コンポーネントはすべて無視されます。

- カスタマイズ可能にするすべてのコンポーネントをPage Customizableコンポーネント内に配置します。

- 実行時の編集を有効にするには、ID属性がページのすべてのコンポーネントで定義されていることを確認する必要があります。ID値がないコンポーネントの実行時編集は、コンポーザではサポートされていません。
ID値のないコンポーネントがページに含まれている場合、コンポーザでページを編集中に問題が発生する場合があります。

- 表示モードのユーザー・カスタマイズを有効にするには、Show Detail FrameコンポーネントをPanel Customizableコンポーネント内に配置します。

- 単一の子のみを含める場合にはShow Detail Frameを使用します。Show Detail Frameで複数のコンポーネントを囲む必要がある場合、Panel Group LayoutやPanel Customizableなどのグループ化コンポーネントをShow Detail Frameコンポーネント内に配置し、ADF Facesコンポーネントまたはその他のコンテンツをこのグループ化コンポーネント内に配置します。

- ポートレットをShow Detail Frameコンポーネント内に配置する必要はありません。ポートレットは、Show Detail Frameコンポーネントと類似のヘッダーおよび表示オプションに備えられます。

18.2 コンポーザ・コンポーネントを使用した編集可能ページの設計: 例

この例では、実行時にカスタマイズ可能なページを作成するとします。このページの名前はMyPage.jspxで、MyWebCenterAppという名前のPortal Frameworkアプリケーションに含まれています。

カスタマイズ可能ページを作成するには:

1. 第6章「WebCenter Portal Frameworkアプリケーションの作成」で説明している手順を実行して、MyWebCenterAppという名前のPortal Frameworkアプリケーションを作成します。

2. 第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」で説明している手順を実行して、MyPage.jspxという名前のJSPXページを作成します。

3. ADF Facesタグ・ライブラリからMyPage.jspxにPanel Stretch Layoutを追加します。

注意:

Panel Stretch Layoutコンポーネントは、centerファセットの子をストレッチし、ブラウザの使用可能なスペースすべてを埋めます。これは、ブラウザ上でも同様です。したがって、コンポーネントをこの子コンポーネント内に配置することによって、確実にページのカスタマイズ可能部分がブラウザ領域全体を占めるようにできます。

4. 第18.1.2項「Page Customizableコンポーネントを使用した実行時カスタマイズの有効化方法」の手順に従って、Page Customizableをコンポーザ・タグ・ライブラリからcenterファセットに追加します。

5. Page Customizableの境界色をblueに設定し、編集可能領域を他の編集できない領域から区別します。
Page Customizableのプロパティ・インスペクタのスタイル・カテゴリの下で、「ボックス」タブをクリックし、Border Color属性をBlueに設定します。

6. 子Panel Customizableの境界色をredに設定します。
Panel Customizableのプロパティ・インスペクタのスタイル・カテゴリの下で、「ボックス」タブをクリックし、Border Color属性をRedに設定します。

7. 第18.1.3項「Change Mode LinkまたはChange Mode Buttonを使用したページ・モードの切替えを有効にする方法」の手順を実行して、Change Mode LinkコンポーネントをPanel Stretch Layoutの上部ファセットに追加します。

8. centerファセット内で、第18.1.5項「Layout Customizableコンポーネントを使用したページのレイアウトのカスタマイズの有効化方法」の手順を実行して、Page Customizableの直接の子であるPanel Customizableに、Layout Customizableコンポーネントを追加します。

9. 第18.1.6項「Show Detail Frameコンポーネントを使用したコンポーネントのカスタマイズの有効化方法」の手順を実行して、Show Detail Frameコンポーネントをページの各Panel Customizable内に追加します。
図18-8は、Layout Customizableの直接の子であるPanel Customizableコンポーネントの内部、およびContentAとContentBのファセットの直接の子であるPanel Customizableコンポーネントの内部にある、Show Detail Frameコンポーネントを示しています。

10. この例のため、Rich Text EditorおよびImageコンポーネントをLayout Customizableでネストされた2つのShow Detail Frameコンポーネント内に追加します。これらのコンポーネントそれぞれをADF Facesタグ・ライブラリからページの必要な場所にドラッグ・アンド・ドロップします。
ページのコンポーネントの階層を図18-8に示します。

図18-8 MyPage.JSPXのコンポーネント階層

11. ページの編集権限またはカスタマイズ権限を必要なユーザーまたはロールに付与します。権限の付与の詳細は、第74.4項「ロール・マネージャ・タスク・フローの使用」を参照してください。

12. MyPage.jspxを実行します。
ページが表示モードで開きます。ページの「編集」リンクをクリックして編集モードに入ります。ページがコンポーザで開きます。コンポーザでは、第16.5項「ページの編集」で説明されているすべての編集タスクを実行できます。

図18-9に実行時の編集モードでのページの外観を示します。

図18-9 コンポーザで開いたMyPage

アプリケーションがADFセキュリティで構成されていない場合、このガイドのその他の例でサンプル・ページを使用するには、アプリケーションでADFセキュリティを構成します。

アプリケーションでセキュリティを構成するには:

1. フォーム・ベースの認証でADFセキュリティを構成し、デフォルトのログイン・ページを生成します。
詳細は、第74.3項「ADFセキュリティの構成」を参照してください。

2. 3人のユーザーahunold、skingおよびjdoeを作成します。
詳細手順は、第74.2項「アプリケーション・ロールの作成」を参照してください。

MyPage.jspxを実行すると、ログイン画面が表示されます。作成した3つのユーザー名のいずれかを使用してログインできます。

18.3 ページへのコンテンツの移入

必要なコンポーザ・コンポーネントを備えた編集可能ページを作成した後、通常のJSPXページと同様にページにコンテンツを移入できます。ただし、コンポーザ対応のページにコンテンツを追加するときに理解しておく必要がある、制限および推奨事項があります。

設計時の編集可能ページの移入は、その他のADF Facesページの移入と似ています。コンポーネントをIDEの様々な領域からページにドラッグ・アンド・ドロップできます。ポートレット、タスク・フロー、ADF Facesコンポーネントなどのコンポーネントを追加できます。

Page Customizableコンポーネント内の任意の場所にコンポーネントをドラッグ・アンド・ドロップすると、Id属性が一意の値に設定されます。Id属性は、コンポーネントの編集および変更された状態の維持に必要です。実行時にコンポーネントをページに追加すると、Id属性が自動的に設定されます。

18.3.1 コンテンツをページに追加するときの必知事項

コンテンツを編集可能ページに追加するときには、次の点を考慮してください。

- Page CustomizableコンポーネントでネストされているPanel Customizableコンポーネント内にコンポーネントを追加します。こうすることによって、コンポーネントを実行時に編集できます。

- Show Detail Frameコンポーネントには、子コンポーネントとしてOracle ADF Facesコンポーネントまたはタスク・フローを含めることができます。ただし、ポートレットには、Show Detail Frameコンポーネントに用意されているものと似ているヘッダーが含まれ、直接Panel Customizableコンポーネントに追加できます。Show Detail Frameコンポーネントにポートレットを含めることの利点はこれ以上ありません。

- コンポーザの「構造」ビューで選択可能にするコンポーネントの場合、そのコンポーネントがリッチ・クライアント・フレームワークに準拠し、クライアント側コンポーネントを生成することを確認します。

- ページでADF FacesコンポーネントのOutput TextとOutput FormattedがPage Customizableコンポーネント内でネストされている場合、clientComponent属性値を設定していることを確認してください。この属性値が設定されていない場合、実行時にページでコンポーネントを移動または再配置しようとするとエラーが発生する場合があります。

- 編集可能ページでポートレットを消費するには、まずアプリケーションにポートレット・プロデューサを登録する必要があります。詳細は、第63章「ポートレットの消費」を参照してください。

18.3.1.1 タスク・フローの追加に関する考慮事項

ユーザーは、カスタマイズ可能ページに追加されたタスク・フローをパーソナライズ、カスタマイズおよび編集できます。保護されたアプリケーションでは、タスク・フローのカスタマイズ権限を持つユーザーは、タスク・フローのページのコンポーネントも編集できます。

タスク・フローをカスタマイズ可能ページに追加するときには、次の点を考慮してください。

- ルック・アンド・フィール、レイアウト設計および対話に関する一貫性をユーザーに提供し、問題(過剰な余白、過剰なスクロール・バー、大きいデータ・セットを表示するときの遅い応答、不安定な応答、予期できない応答など)を回避するために、付録D「コンポーザ対応のページで使用するタスク・フローの作成のガイドライン」のガイドラインに従ってタスク・フローが作成されていることを確認します。

- 保護されたアプリケーションで、ユーザーがコンポーザでタスク・フローのコンテンツを表示できるようにするには、タスク・フローがアプリケーションのjazn-data.xmlファイルにTaskFlowPermission権限を持ち、少なくともViewアクションがプロビジョニングされていることを確認します。これはデフォルトでは有効になっていないため、明示的に設定する必要があります。

- 保護されたアプリケーションで、ユーザーがタスク・フローのページでコンポーネントを編集できるようにするには、タスク・フローがアプリケーションのjazn-data.xmlファイルにTaskFlowPermission権限を持ち、Customizeアクションがプロビジョニングされていることを確認します。これはデフォルトでは有効になっていないため、明示的に設定する必要があります。

- タスク・フローですべての必須パラメータに有効な値を指定したことを確認します。

詳細は、第22章の「タスク・フロー・セキュリティの実装」を参照してください。

18.4 コンポーザの問題のトラブルシューティング

この項では、コンポーザの使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

コンポーザのADFロギングの構成

JDeveloperでアプリケーションを作成する際は、JDeveloperのデバッグ・ツールを使用して、Webページまたはページ定義ファイルのエラーを簡単に検出できます。Javaロガーを設定してJava診断メッセージを表示することも可能です。ロギングの構成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「ADFコンポーネントのテストおよびデバッグ」の章を参照してください。コンポーザのロギングを構成するには、そのガイドのタスクを実行し、oracle.adf.view.page.editorパッケージおよびoracle.adfinternal.view.page.editorパッケージが目的のロギング・レベルでlogging.xmlファイルに構成されていることを確認します。

問題

ページを実行すると、次のエラーが表示されます。

java.lang.IllegalStateException: The expression "#{bindings.pageeditorpanel.regionModel}"
(that was specified for the RegionModel "value" attribute of the region component with id "pePanel")
evaluated to null. This is typically due to an error in the configuration of the
objects referenced by this expression. If it helps, the expression
"#{bindings.pageeditorpanel}" evaluates to "null". If it helps, the expression
"#{bindings}" evaluates to "view_untitled1PageDef". Now using an empty RegionModel instead.

解決方法

このエラーは、Page Customizableコンポーネントを含むページに、そのページ定義ファイルでバインドしている必須のタスク・フローがない場合に発生します。ページ定義ファイルの<executables>ノードの下に次の有効なエントリが含まれていることを確認します。

<taskFlow id="pageeditorpanel" taskFlowId="#{pageEditorBean.pageEditorPanel}"xmlns="http://xmlns.oracle.com/adf/controller/binding"/>

このエラーは、ページがページ・テンプレートに基づいていて、そのページ・テンプレートにPage Customizableコンポーネントが含まれている場合にも発生します。この場合は、af:pageTemplateタグにvalue="#{bindings.pageTemplateBinding}"属性が含まれていません。

ページ定義ファイルの<executables>ノードの下に次のエントリが含まれていることを確認します。

<page path="view.pageDefs.templateDef1PageDef" id="pageTemplateBinding" Refresh="ifNeeded"/>

問題

ユーザーが編集モードに切り替えられません。編集リンク(Change Mode LinkまたはChange Mode Button)が無効のように見えます。

解決方法

そのページに関するユーザーの権限が表示権限のみである可能性があります。ユーザーがそのページの編集権限を持っていることを確認してください。ページの基になるページ・テンプレートでは、表示権限のみを持っていれば十分です。

問題

コンポーザの「コンポーネント・プロパティ」ダイアログの書込みイベント中に例外が発生します。

解決方法

このエラーは、アプリケーション・ページにADFデータ視覚化コンポーネントとコンポーザ・コンポーネントの両方が含まれる場合に発生します。

最も容易にロードされるアプリケーション・クラスに次のコードを追加して、DvtElementObjectFactoryクラスをOracle ADF FactoryManagerオブジェクトとともに登録します。

...
import oracle.adfdt.model.dvt.objects.DvtElementObjectFactory;
import oracle.adfdt.model.managers.FactoryManager;
...
static
{
FactoryManager.getInstance().registerFactory(new DvtElementObjectFactory());
}

19 コンポーザを使用した実行時編集機能の拡張

この章では、コンポーザの宣言的でプログラム可能な拡張性メカニズムを使用して、ビジネス・ニーズに合うように実行時機能をカスタマイズする方法について説明します。

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

- 第19.1項「拡張性オプションの概要」

- 第19.2項「コンポーザのアドオンの作成」

- 第19.3項「カスタム・プロパティ・パネルの作成」

- 第19.4項「式ビルダーの拡張」

- 第19.5項「タスク・フローのパラメータのカスタムLOVまたはピッカーの構成」

- 第19.6項「コンポーザUIイベントのイベント・ハンドラの構成」

- 第19.7項「リソース・カタログのドロップ・ハンドラの構成」

- 第19.8項「プロパティ・フィルタの定義」

- 第19.9項「カスタマイズ・マネージャ・タスク・フローのパラメータ・サポートの有効化」

- 第19.10項「コンポーザのツールバーのカスタマイズ」

- 第19.11項「「デザイン」ビューまたは「コンテンツの追加」ビューでの直接選択の有効化」

- 第19.12項「コンポーザの拡張性機能の問題のトラブルシューティング」

19.1 拡張性オプションの概要

コンポーザは、カスタマイズ可能なアプリケーション・ページを構築するフレームワークを提供します。デフォルトの機能に加えて、コンポーザのフレームワークを拡張し、エンド・ユーザーが使用できる実行時機能を拡張できます。アプリケーションのadf-config.xmlファイルおよびコンポーザの拡張ファイルpe_ext.xmlで拡張機能を構成する必要があります。これらのファイルの詳細は、第19.1.8項「構成ファイル」を参照してください。

この項では、コンポーザの実行時機能を宣言的に拡張するために使用できるオプションについて説明します。次のサブセクションが含まれます:

- 第19.1.1項「コンポーザのアドオン」

- 第19.1.2項「コンポーザのカスタム・プロパティ・パネル」

- 第19.1.3項「コンポーザのイベント・ハンドラ」

- 第19.1.4項「ドロップ・ハンドラ」

- 第19.1.5項「コンポーネントのプロパティ・フィルタ」

- 第19.1.6項「カスタマイズ・マネージャ」

- 第19.1.7項「コンポーザのツールバーのカスタマイズ」

19.1.1 コンポーザのアドオン

デフォルトのコンポーザ・ツールバー(図19-1)は、次のものを含んでいます。

- ページ・タイトル: 編集モードで開いているページのタイトルを示します。

- 「ページ・プロパティ」アイコン: 「ページ・プロパティ」ダイアログを開き、ユーザーがホスト・ページのメタデータを編集できるようにします。

- 「ページのリセット」アイコン: 現在の編集セッションでページに行った変更を元に戻します。

- 「閉じる」ボタン: 編集モードを終了し、標準UIにユーザーを戻します。

図19-1 コンポーザのツールバーのデフォルト・アドオン

「ページ・プロパティ」および「ページのリセット」アイコンはアドオンの例です。これらのアイコンをクリックして、ページ・プロパティの編集およびページ・カスタマイズのリセットを行うためのパネルを表示します。通常、アドオンは、ページ編集モードのコンポーザのツールバーのアイコンとしてレンダリングされるカスタム・タスク・フローです。「ページ・プロパティ」アドオンと「ページのリセット」アドオンとともに表示されるアドオンを作成できます。たとえば、コンポーザのツールバーに「リビジョン」アイコンが表示されるように、ページ・リビジョン履歴を表示するアドオンを作成できます。このアイコンをクリックするとページのリビジョン履歴が表示されます。「ページ・プロパティ」アドオンと「ページのリセット」アドオンを、作成するカスタム・アドオンと置き換えることもできます。

カスタムのアドオンを構成するプロセスには、タスク・フローの作成、これらのJARファイルへのパッケージ化およびこれらのコンポーザ拡張ファイルでの定義が含まれます。詳細は、第19.2項「コンポーザのアドオンの作成」を参照してください。

19.1.2 コンポーザのカスタム・プロパティ・パネル

「コンポーネント・プロパティ」ダイアログには、様々なタブに属性のカテゴリが表示されます。各タブは、プロパティ・パネルと呼ばれます。コンポーザのデフォルトの「コンポーネント・プロパティ」ダイアログは、Oracle JDeveloperのプロパティ・インスペクタに似ています。コンポーネントのカスタム・プロパティ・パネルを作成して登録し、これらにコンポーネント・プロパティを移入し、「コンポーネント・プロパティ」ダイアログのデフォルトのタブとともにこれらをタブとして表示できます。

カスタム・プロパティ・パネルを構成するプロセスには、タスク・フローとしてのこれらの作成、これらのJARファイルへのパッケージ化およびこれらのコンポーザ拡張ファイルでの定義が含まれます。詳細は、第19.3項「カスタム・プロパティ・パネルの作成」を参照してください。

19.1.3 コンポーザのイベント・ハンドラ

コンポーザには、実行時にページを編集するための直感的なユーザー・インタフェースが用意されています。これには、「保存」ボタン、「閉じる」ボタン、「削除」ボタンなどのUIコンポーネントが含まれます。ユーザーがコンポーザでボタンやアイコンをクリックすると、イベント・ハンドラで確実に特定のアクションが実行されます。イベント・ハンドラは、コンポーザのイベントが起動されると、コンポーザによってコールされて戻されるコードです。コンポーザの各UIイベントはイベント・ハンドラと関連付けられています。イベントの起動時に異なる処理または複数の処理を実行して、コンポーザの本来の機能を拡張する必要がある場合があります。たとえば、ユーザーが「保存」をクリックしたとき、デフォルトでコンポーネントに用意されている保存動作に加えて、キャッシュした情報のクリーニングやリソースへの接続などの追加のタスクを実行するようにアプリケーションを構成する必要がある場合があります。イベント・ハンドラを使用してこれを実現できます。詳細は、第19.6項「コンポーザUIイベントのイベント・ハンドラの構成」を参照してください。

19.1.4 ドロップ・ハンドラ

リソース・カタログは、ユーザーがページに追加できるリソースを提供します。リソース名の隣の「追加」リンクで、ユーザーはリソースをページに追加できます。コンポーザは、ドロップ・ハンドラを提供し、カタログで追加操作を処理します。デフォルトでは、ドロップ・ハンドラはカタログの各リソースに対して構成されています。リソースへのドロップ処理の完全な制御を提供する場合、そのリソースに追加のドロップ・ハンドラを作成できます。そうすると、「追加」リンクは、リソースをページに追加するための様々なオプションを備えたコンテキスト・メニューを表示します。1つ以上のドロップ・ハンドラを作成し、カタログでリソースの様々なフレーバを処理できます。

次のタイプのドロップ・ハンドラを追加できます。

- コンポーザを使用して登録され、ユーザーがリソース・カタログで「追加」リンクをクリックするとコールされるJavaクラス。この場合、リソースは選択したデータ・フレーバに基づくページに追加されます。

- コンポーザを使用して登録され、ユーザーがリソース・カタログで「追加」リンクをクリックするとコールされるタスク・フロー。この場合、リソースのどの情報をページに表示する必要があるかをユーザーが決定できるタスク・フローが起動されます。

詳細は、第19.7項「リソース・カタログのドロップ・ハンドラの構成」を参照してください。

19.1.5 コンポーネントのプロパティ・フィルタ

「コンポーネント・プロパティ」ダイアログは、選択したコンポーネントのプロパティを表示します。デフォルトでは、コンポーザは特定のコンポーネント・プロパティをフィルタ処理し、プロパティのサブセットをユーザーに表示します。フィルタを宣言的に定義して、ユーザーに表示する必要がないプロパティをさらに非表示にしたり、非表示のプロパティを表示したりできます。詳細は、第19.8項「プロパティ・フィルタの定義」を参照してください。

19.1.6 カスタマイズ・マネージャ

カスタマイズ・マネージャは、ページやタスク・フローなどのオブジェクトに関するアプリケーションのカスタマイズをユーザーがダウンロード、アップロード、リセットおよび削除できるタスク・フローです。コンポーザ内またはコンポーザ外のある管理ページ上でカスタマイズ・マネージャを構成できます。カスタマイズ・マネージャの構成および使用の詳細は、第19.9項「カスタマイズ・マネージャ・タスク・フローのパラメータ・サポートの有効化」を参照してください。

19.1.7 コンポーザのツールバーのカスタマイズ

デフォルトのコンポーザ・ツールバーには、図19-2に示すように、ページ名、「ページ・プロパティ」アイコンと「ページのリセット」アイコンおよび「閉じる」ボタンの各要素が表示されます。

図19-2 デフォルト要素を備えたコンポーザのツールバー

要素を追加、削除または再配置してツールバーをカスタマイズできます。既存の要素をカスタム要素でオーバーライドすることも可能です。たとえば、編集しているページの名前をユーザーに表示しない場合、ページ名を表示するメッセージを削除できます。

コンポーザのツールバーのカスタマイズの詳細は、第19.10項「コンポーザのツールバーのカスタマイズ」を参照してください。

19.1.8 構成ファイル

この章で説明する拡張性構成を開始する前に、理解する必要がある2つの重要な構成ファイルがあります。この章で説明するほとんどの拡張機能は、これらのファイルで定義されます。

- コンポーザ拡張ファイル(pe_ext.xml)
コンポーザ拡張ファイル(pe_ext.xml)では、コンポーザが提供する編集機能を拡張できます。このファイル内で、要素を追加して新しいコンポーザ・アドオンおよびカスタム・プロパティ・パネルを登録し、選択的にパネルをレンダリングし、イベント・ハンドラを登録し、プロパティ・フィルタを定義できます。pe_ext.xmlファイルは、デフォルトではアプリケーションで使用できません。アドオン、プロパティ・パネルまたはイベント・ハンドラなどのタスクを初めて実行するときにこのファイルを作成する必要があります。このファイルをプロジェクトのWebコンテキスト・ルートの下のMETA-INFディレクトリまたはapplication_home/project/src/META-INFディレクトリに作成します。アプリケーションを実行するとき、pe_ext.xmlファイルは、アプリケーションのクラスパスに含まれているJARファイルから取得されます。アプリケーションには複数の拡張ファイルを含めることができます。ただし、拡張ファイルを含むJARがアプリケーションのクラスパスで使用でき、pe_ext.xmlファイルが処理のために取得されるようにする必要があります。META-INFフォルダにpe_ext.xmlが含まれている各JARが処理され、コンポーザの拡張機能がロードされて結合されます。コンポーザの機能を拡張するためにpe_ext.xmlで定義できる様々な要素の詳細は、第B.2.1項「pe_ext.xml」を参照してください。

- アプリケーションのadf-config.xmlファイル
adf-config.xmlファイルは、通常デプロイ時に決定され、実行時に変更されることがあるアプリケーション・レベルの設定を指定します。コンポーザでの新しいアドオンおよびカスタム・プロパティ・パネルの登録、カスタマイズ・レイヤーの作成などのタスクを実行するとき、adf-config.xmlファイルに適切なエントリを追加する必要があります。adf-config.xmlファイルはアプリケーションを作成するときに自動的に作成され、Page Customizableコンポーネントをページに追加すると特定の構成がこのファイルに追加されます。

adf-config.xmlで作成できるコンポーザ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。

19.2 コンポーザのアドオンの作成

コンポーザには、実行時編集のために次のデフォルトのアドオンが用意されています。

- ページ・プロパティ
このダイアログは、ユーザーがコンポーザのツールバーの「ページ・プロパティ」アイコンをクリックすると開きます。「ページ・プロパティ」ダイアログは、現在のページのプロパティを表示し、ユーザーはプロパティ値を変更できます。

- ページのリセット
「ページのリセット」ダイアログは、ユーザーがコンポーザのツールバーの「ページのリセット」アイコンをクリックすると開きます。「ページのリセット」ダイアログでは、ユーザーはページに対して作成されたアプリケーションのカスタマイズを削除し、これを以前に保存したバージョンまたは元のデフォルトの状態にリセットできます。詳細は、第16.5.14項「ページのリセット」を参照してください。

これらに加えて、コンポーザで新規アドオンを登録できます。たとえば、コンポーザのツールバーに「リビジョン」アイコンが表示されるように、ページ・リビジョン履歴を表示するアドオンを作成できます。このアイコンをクリックするとページのリビジョン履歴が表示されます。

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

- 第19.2.1項「アドオンの作成および登録の方法」

- 第19.2.2項「実行時の処理」

- 第19.2.3項「コンポーザのデフォルトのアドオンの除外方法」

- 第19.2.4項「カスタマイズ・マネージャのアドオンの表示方法」

- 第19.2.5項「アドオンを選択的に表示する方法」

19.2.1 アドオンの作成および登録の方法

コンポーザのツールバーにあるアイコンから起動できるカスタム・タスク・フローを作成および登録できます。登録されたすべてのアドオンに、ツールバーに表示される関連アイコンがあります。

この項では、アドオンを作成し、これをコンポーザを使用して登録する手順を順を追って説明します。ここには、アプリケーションに関する情報を表示するアドオンの作成方法を示す例が含まれています。例のアドオンは、ユーザーがクリックしてアプリケーションの情報を含むタスク・フローを起動できるコンポーザのツールバーの「情報」アイコン(図19-3)をレンダリングします。

図19-3 コンポーザのツールバーの「情報」アイコン

この項には次のサブセクションが含まれます:

- 第19.2.1.1項「アドオン・タスク・フローの作成」

- 第19.2.1.2項「コンポーザを使用したアドオンの登録」

- 第19.2.1.3項「アドオンのadf-config.xmlへの登録」

19.2.1.1 アドオン・タスク・フローの作成

コンポーザのアドオンは、JSPXページまたはページ・フラグメントを使用して作成するタスク・フローです。

アドオンを作成するには:

1. アプリケーション・プロジェクトで、custompanelview.jsffというJSFFファイルを作成します。

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「Web層」を展開し、「JSF」を選択してから「JSFページ」またはJSFフラグメントを選択します。

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

2. 例19-1に示すようなコードを追加してフラグメントを設計します。

例19-1 JSFFフラグメントのサンプル・コード

<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<af:panelGroupLayout id="pnlgrp1" layout="vertical" halign="center">
<af:spacer id="sp1" height="20" />
<af:image id="customimage"              source="/images/DemoLogo.jpg"
shortDesc="Demo Logo"/>
<af:spacer id="sp2" height="20"/>
<af:outputText id="output1" value="This is a sample shopping cart application based on Oracle ADF Framework.
It also uses the Oracle WebCenter Portal Framework to enable collaboration, application customization and user customization features."/>
<af:spacer id="sp3" height="20"/>
<af:outputText id="output2" value="Build : 11.1.1"
inlineStyle="font-weight:bold;"/>
</af:panelGroupLayout>
</jsp:root>

注意:

実行時、アドオン・パネルは、このフラグメントのコンテンツに合うように自動的にサイズ設定されます。

3. custom-panel-task-flowというタスク・フロー定義を作成します。

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「Web層」を展開し、「JSF」、「ADFタスク・フロー」の順に選択します。

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

4. タスク・フロー定義に作成したcustompanelview.jsffフラグメントをドロップします。

関連項目:

『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFタスク・フローのスタート・ガイド

5. タスク・フロー定義ファイルを保存します。

(オプション)1つのアプリケーションでタスク・フローを作成し、これを別のアプリケーションで使用する場合、まずADFライブラリでこのタスク・フローをパッケージ化し、使用するアプリケーションに結果として得られるJARを追加する必要があります。

ADFライブラリでタスク・フローをパッケージ化するには:

1. タスク・フローのデプロイメント・プロファイルを作成します。

1. 「ポータル」プロジェクトを右クリックし、「新規」を選択します。

2. 「新規ギャラリ」で、「一般」を開き、「デプロイメント・プロファイル」、「ADFライブラリのJARファイル」の順に選択して「OK」をクリックします。

3. 「デプロイメント・プロファイルの作成 -- ADFライブラリJARファイル」ダイアログで、デプロイメント・プロファイルの名前を入力して「OK」をクリックします。

4. 「ADFライブラリJARデプロイメント・プロファイルのプロパティ」ダイアログで「OK」をクリックします。

5. 「プロジェクト・プロパティ」ダイアログで、「OK」をクリックします。

2. アプリケーション・ナビゲータで、プロジェクト・フォルダを右クリックして、「デプロイ」、デプロイメント・プロファイル名の順に選択します。

3. 「デプロイ」ダイアログで、「ADFライブラリのJARファイルへのデプロイ」を選択します。

4. 「終了」をクリックします。
こうすることによって、JARファイルを含むdeployフォルダが<Application_Root>\Portal\deploy\にあるプロジェクト・フォルダに作成されます。

アドオンを使用する任意のアプリケーションにこのJARファイルを追加できます。

19.2.1.2 コンポーザを使用したアドオンの登録

タスク・フローを作成した後、これをコンポーザを使用して登録し、デフォルトのオプションとともにコンポーザのツールバーに表示されるようにする必要があります。

コンポーザを使用してアドオンを登録するには:

1. コンポーザ拡張ファイルがまだ存在していない場合、このファイル(pe_ext.xml)をプロジェクトのWebコンテキスト・ルート(たとえば、APPLICATION_HOME\Portal\src\META-INFディレクトリ)の下のMETA-INFディレクトリに作成します。

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を展開し、「XML」、「XML文書」の順に選択します。

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

ファイルの名前をpe_ext.xmlにします。

2. ファイルの<addon-config>要素をネストされた<panels>要素とともに追加します。

3. アドオンとして登録する各タスク・フローに1つの<panel>要素を追加します。
拡張ファイルの<panels>要素には、パネルを必要な数だけ宣言できます。

例19-2に、<panel>エントリを備えた拡張ファイルのコードを示します。

例19-2 コンポーザの拡張ファイル

<?xml version="1.0" encoding="US-ASCII" ?>
<pe-extension xmlns="http://xmlns.oracle.com/adf/pageeditor/extension">
<addon-config>
<panels>
<panel name="oracle.custom.panel" title="About"
icon="http://myforums.oracle.com/jive3/images/question-pts-available-16x16.gif"
taskflow-id="/WEB-INF/custom-panel-task-flow.xml#custom-panel-task-flow" />
</panels>
</addon-config>
</pe-extension>

addon-configおよび他のネストされた要素の詳細は、第B.2.1.1項「addon-config」を参照してください。

4. (オプション)次の例に示すようにevent-handlers要素をpanel要素内に追加して、カスタム・パネルにイベント・ハンドラを登録します。

<event-handlers>
<event-handler event="close">
oracle.custom.TaskFlowEventHandler
</event-handler>
</event-handlers>

詳細は、第19.6項「コンポーザUIイベントのイベント・ハンドラの構成」を参照してください。

5. pe_ext.xmlファイルを保存します。

19.2.1.3 アドオンのadf-config.xmlへの登録

アドオンを登録するには、これへの参照をアプリケーションのadf-config.xmlファイルに追加する必要があります。addon-panelsエントリを追加して新しいアドオンを定義します。

アドオンをadf-config.xmlファイルに登録するには:

1. アプリケーションのadf-config.xmlファイルを開きます。これは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダにあります。

2. ファイルで次のネームスペースをadf-config要素内に追加します。

xmlns:pe="http://xmlns.oracle.com/adf/pageeditor/config"

3. ネームスペースを付けて<pe:page-editor-config>エントリを追加し、その中に<pe:addon-panels>を含めます。
カスタム・アドインを登録するとき、デフォルトのアドオンはデフォルトでコンポーザに表示されます。デフォルトのアドオンをすべて表示するには、<pe:addon-panels>タグのshow-default-addons属性をtrueに設定する必要があります。この属性のデフォルト値はfalseです。

<pe:addon-panels>内で、例19-3に示すように新しいパネルの<pe:addon-panel>エントリを追加します。

name属性には、コンポーザ拡張ファイルでパネルの登録に使用した名前が含まれている必要があります。

例19-3 adf-config.xmlで参照される新しいアドオン

<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
<pe:addon-panels show-default-addons="true">

<pe:addon-panel name="oracle.custom.panel" />

</pe:addon-panels>
</pe:page-editor-config>

注意:

<addon-panels>の下で<addon-panel>エントリをまったく指定しない場合、デフォルトのオプションのみがコンポーザに表示されます。

4. adf-config.xmlファイルを保存します。

adf-config.xmlで作成できるコンポーザ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。

19.2.2 実行時の処理

コンポーザを使用して登録するカスタム・アドインは、デフォルトのアドインとともにコンポーザのツールバーにレンダリングされます。

この例では、コンポーザのツールバーに「情報」アイコンがレンダリングされます(図19-4)。

図19-4 コンポーザのツールバーの「情報」アイコン

このアイコンをクリックすると、アプリケーションの情報タスク・フローが表示されます(図19-5)。

注意:

アドオン・パネルは、タスク・フロー内のコンテンツに合せて自動的にサイズ設定されます。

図19-5 アプリケーションの情報タスク・フロー

19.2.3 コンポーザのデフォルトのアドオンの除外方法

「ページ・プロパティ」、「ページのリセット」および「カスタマイズ・マネージャ」の各アイコンをコンポーザのツールバーに表示または非表示にすることを選択できます。これらのアドオンのいずれかを非表示にするには、<pe:addon-panels>のshow-default-addons属性をtrueに設定し、非表示にするデフォルトのアドオンのエントリを追加し、そのアドオンのrendered属性をfalseに設定する必要があります。

例19-4に、「ページ・プロパティ」アドオンを非表示にするコードを示します。

例19-4 「ページのリセット」オプションを除外したadf-config.xmlファイル

<pe:addon-panels show-default-addons="true">
<!-- Hide the Reset Page add-on -->
<pe:addon-panel name="oracle.adf.pageeditor.addonpanels.page-reset" rendered="false"/>

. . .

</pe:addon-panels>

除外されたアドオン(「ページのリセット」)はコンポーザのツールバーに表示されません。他のデフォルトのアドオンはデフォルトの順序でツールバーに表示されます。

19.2.4 カスタマイズ・マネージャのアドオンの表示方法

カスタマイズ・マネージャは、タスク・フロー、ページおよび指定したページのページ・フラグメントのアプリケーションのカスタマイズをユーザーが管理できるコンポーザのアドオンです。詳細は、第16.5.17項「アプリケーションのカスタマイズの管理」を参照してください。

カスタマイズ・マネージャのアドオンは、コンポーザのライブラリで使用できますが、デフォルトではレンダリングされません。これを有効にするには、次の例に示すように、<pe:page-editor-config>内部の<pe:addon-panel>要素を使用してアプリケーションのadf-config.xmlファイルでこれを構成します。

<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
<pe:addon-panels show-default-addons="true">
<pe:addon-panel name="oracle.adf.pageeditor.addonpanels.customization-manager"/>

. . .

</pe:addon-panels>
. . .
</pe:page-editor-config>

この構成を行うと、コンポーザのツールバーは、図19-6に示すように「カスタマイズ・マネージャ」アイコンを表示します。

図19-6「カスタマイズ・マネージャ」アイコン

19.2.5 アドオンを選択的に表示する方法

ビジネス要件に応じて、コンポーザで様々なユーザーが使用できるアドオンを選択的に非表示にする必要がある場合があります。アドオンを選択的に非表示にするには、例19-5に示すように、<pe:addon-panels>のshow-default-addons属性をtrueに設定し、非表示にするデフォルトのアドオンのエントリを追加し、EL式を使用してそのアドオンのrendered属性をfalseにする必要があります。

例19-5 adf-config.xmlファイルのrendered属性の設定

<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
<pe:addon-panels show-default-addons="true">
<pe:addon-panel name="oracle.adf.pageeditor.addonpanels.page-reset"
rendered="#{securityBean.userInPageResetRole}" />
. . .
</pe:addon-panels>
. . .
</pe:page-editor-config>

この例では、securityBeanバッキングBeanは、ログイン・ユーザーのロールに応じてtrueまたはfalseのいずれかを返します。返された値がfalseの場合、コンポーザはコンポーザのツールバーに「ページのリセット」アイコンを表示しません。返された値がtrueの場合、コンポーザは「ページのリセット」アイコンを表示します。

注意:

コンポーザのツールバーで「ページのリセット」アイコンを非表示にすると、タスク・フローのコンテンツの編集中に表示される「タスク・フローのリセット」アイコンも非表示になります。

renderedのデフォルト値はtrueです。つまり、アドオンにrendered属性を指定しないと、そのアドオンは常に表示されます。

19.3 カスタム・プロパティ・パネルの作成

ユーザーがコンポーネントの「編集」アイコンをクリックすると、コンポーザは、「コンポーネント・プロパティ」ダイアログにコンポーネントのプロパティを表示します。「コンポーネント・プロパティ」ダイアログには、一連のタブが用意されています。各タブは、関係する属性のグループを表示します。属性には、コンポーネントの動作および視覚的スタイルのプロパティを制御する関連値があります。たとえば、「スタイル」タブは、幅、高さ、背景色などのコンポーネントのスタイル関係のプロパティを表示します。

同様に、ユーザーが「ページ・プロパティ」アイコンをクリックすると、「ページ・プロパティ」ダイアログが独自の一連のタブとともに開きます。これらのタブには、表示関連のページ・プロパティ、ページ・パラメータおよびセキュリティ設定が含まれています。

「コンポーネント・プロパティ」ダイアログまたは「ページ・プロパティ」ダイアログに表示されるタブとともにレンダリングするカスタム・プロパティ・パネルを作成して登録できます。また、デフォルトのパネルの削除やカスタム・プロパティ・パネルへの置換も行えます。たとえば、Sourceプロパティのピッカーを表示することによってImageコンポーネントのよりフレンドリなプロパティ・パネルを開発できます。こうすることによって、ユーザーは使用可能なオプションからイメージを容易に選択できるようになります。

この項では、カスタム・プロパティ・パネルの作成方法を説明します。デフォルトのプロパティ・パネルを除外、オーバーライドおよび選択的にレンダリングする方法も説明します。次のサブセクションが含まれます:

- 第19.3.1項「カスタム・プロパティ・パネルの作成および登録の方法」

- 第19.3.2項「実行時の処理」

- 第19.3.3項「デフォルトのプロパティ・パネルのオーバーライド方法」

- 第19.3.4項「デフォルトのプロパティ・パネルの除外方法」

- 第19.3.5項「プロパティ・パネルの選択的レンダリング方法」

- 第19.3.6項「カスタム・プロパティ・パネルでのプロパティおよびパラメータの表示方法」

19.3.1 カスタム・プロパティ・パネルの作成および登録の方法

カスタム・プロパティ・パネルの作成は、アドオンの作成と似ています。つまり、カスタム・プロパティ・パネルをタスク・フローとして作成し、これをコンポーザ拡張ファイルに登録します。ただし、コンポーザのアドオンはadf-config.xmlファイルのaddon-panels要素を使用して構成されるのに対して、カスタム・プロパティ・パネルは拡張ファイル自体のproperty-panels要素を使用して構成されます。

カスタム・プロパティ・パネルを構成して、常に「コンポーネント・プロパティ」ダイアログに表示できます。または、パネルを構成して、特定のコンポーネントまたはタスク・フローが編集のために選択されたときのみ表示することも可能です。

この項では、カスタム・プロパティ・パネルを作成および登録する方法を説明します。次のサブセクションが含まれます:

- 第19.3.1.1項「カスタム・プロパティ・パネルの作成」

- 第19.3.1.2項「コンポーネントに対するカスタム・プロパティ・パネルの登録」

- 第19.3.1.3項「タスク・フローに対するカスタム・プロパティ・パネルの登録」

19.3.1.1 カスタム・プロパティ・パネルの作成

プロパティ・パネルには、ページまたはコンポーネントのプロパティを編集する方法が用意されています。たとえば、ユーザーは、選択したタスク・フローで「編集」アイコンをクリックし、そのパラメータ値を変更し、「コンポーネント・プロパティ」ダイアログでその視覚的属性を変更できます。

コンポーザでは、プロパティ・パネルをコンポーネントおよびタスク・フローと関連付けることができます。ユーザーがコンポーネントまたはタスク・フローの「編集」アイコンをクリックすると、コンポーザは「コンポーネント・プロパティ」ダイアログを開き、オブジェクトと関連付けたカスタム・プロパティ・パネルをデフォルトのプロパティ・パネルとともに表示します。

カスタム・プロパティ・パネルを作成し、これをコンポーザ拡張ファイルで宣言する手順は、コンポーザのアドオンを作成して宣言する手順と似ています。詳細は、第19.2.1.1項「アドオン・タスク・フローの作成」および第19.2.1.2項「コンポーザを使用したアドオンの登録」を参照してください。

例19-6に、pe_ext.xmlファイルでのサンプルのプロパティ・パネル宣言を示します。

例19-6 pe_ext.xmlでのカスタム・プロパティ・パネル宣言

<pe-extension xmlns="http://xmlns.oracle.com/adf/pageeditor/extension">
<addon-config>
<panels>
<panel name="sample-panel" title="Sample Panel"
taskflow-id="/WEB-INF/sample_task_flow.xml#sample_task_flow"/>
</panels>
</addon-config>
</pe-extension>

カスタム・パネルを作成し、pe_ext.xmlファイルで宣言した後、例19-7に示すように、<property-panels>要素を使用してこれを構成する必要があります。こうすることによって、パネルは、コンポーザ・コンポーネント・プロパティおよび「ページ・プロパティ」ダイアログで自動的に表示されます。

例19-7 pe_ext.xmlでのカスタム・プロパティ・パネル構成

<addon-config>
<panels>
. . .
</panels>
<property-panels>
<property-panel name="samplepanel">
<panel name="sample-panel" rendered="true"/>
</property-panel>
</property-panels>
</addon-config>

1つの<panel>要素を使用して、各カスタム・パネルを登録します。<panel>は、「コンポーネント・プロパティ」ダイアログのタブに対応します。任意の数の<panel>要素を追加できます。

19.3.1.2 コンポーネントに対するカスタム・プロパティ・パネルの登録

拡張ファイルにカスタム・パネルを登録するとき、パネルをコンポーネントまたはタスク・フローと関連付けることができます。カスタム・プロパティ・パネルはそのコンポーネントまたはタスク・フローに対してのみレンダリングされます。この項では、特定のコンポーネントに対してプロパティ・パネルを登録する方法を説明します。

コンポーネントに対してプロパティ・パネルを登録するには:

1. コンポーザ拡張ファイル(pe_ext.xml)を作成します(これがまだ存在していない場合)。
拡張ファイルの作成の詳細は、第19.2.1.2項「コンポーザを使用したアドオンの登録」を参照してください。

2. pe_ext.xmlファイルの<addon-config>セクション内に<property-panels>要素を追加します。

3. <property-panel>宣言を<property-panels>要素内に追加します。
<property-panel>エントリは複数指定できます。

4. <property-panel>要素内で、<component>要素を追加してコンポーネントの実行時クラス名(オプション)および<panel>要素を指定し、ファイルの<addon-config>セクションのパネルを宣言する際に使用した名前を指定します。
例19-8に、コンポーネントの完全修飾クラス名を指定することでCommand Buttonコンポーネントに関連付けられたカスタム・プロパティ・パネルを示します。Oracle ADFコンポーネントとその実行時クラスの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

例19-8 コンポーネントに対してプロパティ・パネルを登録するコード

<pe-extension xmlns="http://xmlns.oracle.com/adf/pageeditor/extension">
<addon-config>
<property-panels>
<property-panel name="cmdbtn">
<component>oracle.adf.view.rich.component.rich.nav.RichCommandButton</component>
<panel name="prop.panel.cmdbtn" />
<panel name="prop.panel.generic" />
</property-panel>
</property-panels>
</addon-config>
. . .
</pe-extension>

注意:

プロパティ・パネルを登録するとき、これをコンポーネントまたはタスク・フローと関連付けない場合(次の項で説明)、登録したパネルは常に「コンポーネント・プロパティ」ダイアログおよび「ページ・プロパティ」ダイアログにレンダリングされます。

コンポーネントに複数のプロパティ・パネルを構成するには、複数の<panel>要素を<property-panel>要素内に含めることができます。<property-panels>要素およびそのネストされた要素の詳細は、第B.2.1.2項「property-panels」を参照してください。

「子コンポーネント」、「スタイル」、「パラメータ」などのすべてのデフォルトのパネルは、定義したカスタム・パネルとともに表示されます。

19.3.1.3 タスク・フローに対するカスタム・プロパティ・パネルの登録

コンポーザ拡張ファイルに登録することで、タスク・フローのカスタム・プロパティ・パネルを定義できます。例19-9に、タスク・フローへのカスタム・プロパティ・パネルの登録に使用されるサンプル・コードを示します。

特定のタスク・フローに対して登録されたカスタム・プロパティ・パネルは、これが関連付けられたタスク・フローが選択された場合のみ表示されます。それ以外の場合には、デフォルトのプロパティ・パネルが表示されます。

注意:

タスク・フロー固有のカスタム・プロパティ・パネルは、タスク・フロー・パラメータまたはタスク・フローの動作と関係のあるその他の側面をカスタマイズする際にのみ使用します。

カスタム・プロパティ・パネルは、Oracle JSF Portlet Bridgeを使用してレンダリングされたタスク・フローに関連付けられている場合には動作しません。

タスク・フローに対してプロパティ・パネルを登録するには:

1. pe_ext.xmlファイルの<addon-config>要素内に<property-panels>要素を追加します。
拡張ファイルの作成の詳細は、第19.2.1.2項「コンポーザを使用したアドオンの登録」を参照してください。

2. この中にproperty-panel宣言を追加します。
property-panelエントリは複数指定できます。

3. taskflow-id要素およびpanel要素をproperty-panel要素内に追加します。
taskflow-id要素を追加してタスク・フロー名を指定します。panel要素を追加して、ファイルのaddon-configセクションでプロパティ・パネルを宣言する際に使用した名前を指定します。

例19-9に、dashboardタスク・フローと関連付けられたカスタム・プロパティ・パネルを示します。

例19-9 タスク・フロー・インスタンスにプロパティ・パネルを登録するためのコード

<pe-extension xmlns="http://xmlns.oracle.com/adf/pageeditor/extension">
<addon-config>
<property-panels>
<property-panel name="dashboard">
<taskflow-id>/WEB-INF/dashboard-taskflow#prop-panel</taskflow-id>
<panel name="dashboard.prop-panel" />
</property-panel>
</property-panels>
</addon-config>
. . .
</pe-extension>

注意:

- (<component>または<taskflow-id>タグを使用して)カスタム・プロパティ・パネルをコンポーネントまたはタスク・フローと関連付けない場合、登録したパネルは、「コンポーネント・プロパティ」ダイアログおよび「ページ・プロパティ」ダイアログのすべてのページ、タスク・フローおよびコンポーネントにレンダリングされます。
property-panel要素内には、複数のpanel要素を登録できます。property-panels要素およびそのネストされた要素の詳細は、第B.2.1.2項「property-panels」を参照してください。

- パネルのタスク・フロー・フラグメントでカスタム・プロパティ・パネルに関する属性およびパラメータをエンド・ユーザーが編集できるようにするには、表示する各プロパティのShow Propertyコンポーネントを追加する必要があります。Show Propertyコンポーネントの値属性は、プロパティおよびパラメータの値の読取りおよび書込みを行うロジックを含むマネージドBeanと関連付けられます。詳細は、第19.3.6項「カスタム・プロパティ・パネルでのプロパティおよびパラメータの表示方法」を参照してください。

19.3.2 実行時の処理

カスタム・プロパティ・パネルを特定のコンポーネントまたはタスク・フローと関連付けた場合、実行時このパネルは、指定したコンポーネントまたはタスク・フローから起動した「コンポーネント・プロパティ」ダイアログでタブとしてレンダリングされます。カスタム・プロパティ・パネルを特定のコンポーネントまたはタスク・フローと関連付けなかった場合、実行時このカスタム・プロパティ・パネルは、すべてのページ、コンポーネントおよびタスク・フローに対して「ページ・プロパティ」ダイアログと「コンポーネント・プロパティ」ダイアログの両方でタブとしてレンダリングされます。

注意:

「コンポーネント・プロパティ」ダイアログおよび「ページ・プロパティ」ダイアログで、カスタム・パネルは、タスク・フローを含むタブ・コンポーネントによってサイズ設定されます。タブ・コンポーネント自体のサイズは、現在適用されているスキンのルールによって決まります。このルールはaf|panelTabbed.Tabをコールされます。

19.3.3 デフォルトのプロパティ・パネルのオーバーライド方法

コンポーザの「コンポーネント・プロパティ」ダイアログは、デフォルトで次のパネルを表示します: 「表示オプション」、「子コンポーネント」、「イベント」、「スタイル」、「コンテンツ・スタイル」および「パラメータ」。pe_ext.xmlファイルでカスタム・パネルを宣言および登録するときにデフォルトのパネルの名前を使用して特定のパネルをオーバーライドできます。デフォルトのパネルの詳細は、第B.3項「コンポーザのデフォルト・アドオンとプロパティ・パネル」を参照してください。

例19-10に、「表示オプション」パネルをcustom-panel-task-flowというタスク・フローを使用して定義したパネルでオーバーライドするコードを示します。

例19-10 デフォルトのパネルをオーバーライドするサンプル・コード

<addon-config>
<panels>
<panel name="oracle.adf.pageeditor.pane.generic-property-inspector" title="Sample Panel"
icon="http://myforums.oracle.com/jive3/images/question-pts-available-16x16.gif"
taskflow-id="/WEB-INF/custom-panel-task-flow.xml#custom-panel-task-flow" />
</panels>
<property-panels>
<property-panel name="samplepanel">
<panel name="oracle.adf.pageeditor.pane.generic-property-inspector" rendered="true"/>
</property-panel>
</property-panels>
</addon-config>

19.3.4 デフォルトのプロパティ・パネルの除外方法

即時利用可能な、すべてのデフォルトのプロパティ・パネルは、構成したカスタム・プロパティ・パネルとともに表示されます。「ページ・プロパティ」ダイアログまたは「コンポーネント・プロパティ」ダイアログでデフォルトのプロパティ・パネルを非表示にするために、そのパネル専用の行を追加し、rendered属性をfalseに設定できます。

例19-11に、Command Buttonコンポーネントの「コンテンツ・スタイル」プロパティ・タブがfalseに設定されたrendered属性を示します。デフォルトのプロパティ・パネルの詳細は、第B.3項「コンポーザのデフォルト・アドオンとプロパティ・パネル」を参照してください。

例19-11 プロパティ・パネルのrendered属性

<pe-extension xmlns="http://xmlns.oracle.com/adf/pageeditor/extension">
<addon-config>
<property-panels>
<property-panel name="cmdbtn">
<component>oracle.rich.CommandButton</component>
<panel name="prop.panel.cmdbtn" />
<panel name="oracle.adf.pageeditor.pane.content-style-editor" rendered="false" />
</property-panel>
</property-panels>
</addon-config>
. . .
</pe-extension>

19.3.5 プロパティ・パネルの選択的レンダリング方法

アプリケーションに登録されたカスタム・プロパティ・パネルは、指定したコンポーネントの「編集」アイコンをユーザーがクリックすると、「コンポーネント・プロパティ」ダイアログにレンダリングされます。アプリケーションを構成して、ログイン・ユーザーのロール、表示中のページなどの異なる条件に基づいてプロパティ・パネルを選択的にレンダリングできます。プロパティ・パネルを選択的に表示するために、次の例に示すように、property-panelのrendered属性のEL値を使用できます。

<property-panel name="global-but-just" rendered="#{bean.showProperty}">

19.3.6 カスタム・プロパティ・パネルでのプロパティおよびパラメータの表示方法

コンポーネントのカスタム・プロパティ・パネルを構築する場合、コンポーザ・タグ・ライブラリから使用可能なShow Propertyコンポーネントを使用して、カスタム・パネルにコンポーネントの属性を表示できます。カスタム・パネル・タスク・フローを定義するページ・フラグメントで、表示する各属性に対して1つのShow Propertyコンポーネントを追加する必要があります。Show Propertyは、(カスタム・パネルを作成した)コンポーネントまたはタスク・フローのプロパティ値を読み取る宣言型コンポーネントで、カスタム・パネルにそのプロパティの入力フィールドを表示します。ユーザーは、入力フィールドを使用してパネルのプロパティ値を編集できます。

カスタム・パネルの詳細は、第19.3.1.1項「カスタム・プロパティ・パネルの作成」を参照してください。

Show Propertyコンポーネントを追加するには:

1. カスタム・パネル・タスク・フロー用に作成したページ・フラグメントを開きます。

2. コンポーネント・パレットで、「コンポーザ」を選択します。

3. カスタム・パネルに表示するコンポーネント属性それぞれのShow Propertyコンポーネントをドラッグ・アンド・ドロップします。

4. 属性がカスタム・パネルに正しく表示されるようにするには、第B.1.7項「Show Property」を参照して、各Show Propertyコンポーネントに属性を設定します。

注意:

コンポーザの外側のページでもShow Propertyコンポーネントを使用できます。

例

Show Detail Frameコンポーネント内に含まれている天気ウィジェットの例を考えてみます。カスタム・プロパティ・パネルが作成され、ユーザーは、天気ウィジェットのText、Auto RefreshおよびRefresh Intervalの各属性を編集できます。これには、ユーザーがこれらの属性に値を指定するための3つのフィールドがあります。ユーザーが天気ウィジェットの3つの属性を設定できるようにするために、パネルで表示する各属性に1つのShow Propertyコンポーネントが追加されます。実行時にユーザーが天気ウィジェットを編集すると、「コンポーネント・プロパティ」ダイアログは、図19-7に示すように3つの属性を含むカスタム・パネルを表示します。

図19-7 Show Detail Frameコンポーネント・プロパティを表示するカスタム・パネル

天気ウィジェットは、次の例に示すようにPollコンポーネントとともにページで使用されます。

<cust:showDetailFrame text="Weather" id="sdf1" contentStyle="height:220.0px;"
partialTriggers="p1">
<af:region value="#{bindings.weathertaskflowdefinition1.regionModel}"
id="r1"/>
<af:poll id="p1" interval="60000"/>
</cust:showDetailFrame>

Pollコンポーネントは、リフレッシュされたコンテンツを天気ウィジェットに一定間隔で送信するために使用されます。デフォルトの間隔は60000ミリ秒です。

カスタム・パネルには、3つのpanelLabelandMessageコンポーネントが含まれ、Text、Auto RefreshおよびRefresh Intervalの各属性の入力フィールドが用意されています。このパネルのフィールドは次のように実装されます。

- showPropertyコンポーネントは、次の例に示すように各panelLabelandMessageコンポーネントに追加されます。

<!-- Input field for setting the Text attribute, which displays on the component header -->
<af:panelLabelAndMessage label="Text" id="plam2">
<pedc:showProperty label="Text" id="sp1" simple="true"
value="#{sdfCustomPanel.text}"/>
</af:panelLabelAndMessage>

<!-- Checkbox to enable auto refresh, which controls whether the widget must be refreshed -->
<af:panelLabelAndMessage label="Auto Refresh" id="plam3">
<pedc:showProperty label="Auto Refresh" id="sp2" simple="true"
type="boolean" autoSubmit="true"
value="#{sdfCustomPanel.autoRefresh}"/>
</af:panelLabelAndMessage>

<!-- LOV to display values for Refresh Interval when auto refresh is enabled -->
<af:panelLabelAndMessage label="Refresh Interval" id="plam4">
<pedc:showProperty label="Refresh Interval" id="sp3" simple="true"
type="list" disabled="#{!sdfCustomPanel.autoRefresh}"
value="#{sdfCustomPanel.refreshInterval}"
selectItems="#{sdfCustomPanel.selectItems}"
binding="#{sdfCustomPanelRequestBean.refreshIntervalShowProp}"/>
</af:panelLabelAndMessage>

ここで、sdfCustomPanelは、マネージドBeanであるSDFCustomPanelBean.javaを参照します。

- カスタム・パネルのタスク・フロー定義には、Beanへの参照が含まれています。

<managed-bean id="mb1">
<managed-bean-name id="mb1_name">sdfCustomPanel</managed-bean-name>
<managed-bean-class id="mb1_class">portal.weather.panel.SDFCustomPanelBean</managed-bean-class>
<managed-bean-scope id="mb1scope">session</managed-bean-scope>
</managed-bean>

- SDFCustomPanelBean.java Beanには、パネルに表示される様々な属性の値を処理するロジックが用意されています。Beanでは、SelectionContext APIは、次のように各属性の値を読み書きするために使用されます。

- 選択したコンポーネント、つまりプロパティが表示されるコンポーネントを保持します。この例では、Show Detail Frameコンポーネントが天気ウィジェットとしてその内部に含まれます。

- 選択したコンポーネントの属性値を読み取ります。

- ユーザーが指定した属性値を取得し、その値をコンポーネント属性に設定します。

たとえば、Refresh Interval属性は、Auto Refreshが選択された場合のみ有効で、マネージドBeanで定義された値を含むドロップダウン・メニューを表示します。ページのPollコンポーネントは、Show Propertyコンポーネントにワイヤリングされ、ウィジェットのリフレッシュがShow Propertyコンポーネントの値によって行われるようになります。Refresh Intervalプロパティの値を処理するコードは次のとおりです。

. . .
/** Set the refresh interval attribute value on the component
public void setRefreshInterval(String _refreshInterval)
{
this._refreshInterval = _refreshInterval;
}
**/

public String getRefreshInterval()
{
if (_autoRefresh == true && _refreshInterval != null)
return _refreshInterval;

// Get hold of the component whose properties you want to edit
SelectionContext selCtx =
Context.getCurrentInstance().getSelectionContext();
UIComponent selComp = selCtx.getSelectedComponent().getUIComponent();
if (selComp instanceof ShowDetailFrame)
{
// Get the refresh interval value specified for the Poll component
RichPoll pollComp = (RichPoll) selComp.findComponent("p1");
if (_autoRefresh == false)
_refreshInterval = "Refresh interval not applicable";
else if (pollComp.getInterval() < 0)
_refreshInterval = "60000";
else
_refreshInterval = Integer.toString(pollComp.getInterval());
}

return _refreshInterval;
}
. . .
public List<SelectItem> getSelectItems()
{
return _selectItems;
}
. . .
private static List<SelectItem> _selectItems;
static
{
_selectItems = new ArrayList<SelectItem>();
SelectItem si = new SelectItem("60000", "1 Minutes");
_selectItems.add(si);
si = new SelectItem("120000", "2 Minutes");
_selectItems.add(si);
si = new SelectItem("180000", "3 Minutes");
_selectItems.add(si);
}

- ユーザーがRefresh Intervalプロパティの値を選択し、「コンポーネント・プロパティ」ダイアログで「適用」をクリックすると、保存リスナーがコールされ、保存イベント・ハンドラによって値がBeanに戻されて保存されます。保存イベント・ハンドラの実装の関連コードは次のとおりです。

public void save()
{
. . .
if (_autoRefresh)
{
aa = new AttributeComponentChange("interval", Integer.parseInt(_refreshInterval));
changeManager.addComponentChange(context, pollComp, aa);
aa.changeComponent(pollComp);
}
else
{
aa = new AttributeComponentChange("interval", new Integer(-1));
changeManager.addComponentChange(context, pollComp, aa);
aa.changeComponent(pollComp);
}
}

19.4 式ビルダーの拡張

「コンポーネント・プロパティ」ダイアログの「パラメータ」タブおよび「表示オプション」タブのすべてのプロパティは、式言語(EL)式を取ることができます。このようなパラメータで使用できる「式ビルダー」オプションは、図19-8に示すように単純に式ビルダーである「編集」ダイアログを開きます。式ビルダーは、取得可能だが取得できない場合には未知である値が必要な場合(たとえば、値を現在のユーザーまたは現在のアプリケーション・スキンの名前にする場合)に特に便利です。

図19-8 式言語エディタ

式ビルダーをカスタマイズして、コンポーザ拡張ファイルpe_ext.xmlに必要なエントリを作成することによってオプションを増やすことができます。ELを無効化するか、または既存のELを上書きから保護するためにコンポーザを構成することもできます。

この項では、式ビルダーを拡張してカスタム機能を追加する方法を説明します。次のサブセクションが含まれます:

- 第19.4.1項「式ビルダーの拡張方法」

- 第19.4.2項「式言語を保護する方法」

- 第19.4.3項「実行時の処理」

19.4.1 式ビルダーの拡張方法

カスタム・オプションを式の値のドロップダウン・リストに追加することによって、式ビルダーを拡張できます。カスタム・オプションを定義し、pe_ext.xmlファイルに含める必要があります。追加する新しい各オプションに対して、<selector>要素を定義し、これをpe_ext.xmlファイルに含める必要があります。

コンポーザ拡張ファイルでカスタム・オプションを構成するには:

1. 式ダイアログにカスタム・オプションを移入するロジックを備えたJava Bean(たとえば、UserInformation.java)を作成します。例19-12に、新しい文字列(User Name)を式ダイアログのカスタム値として表示するために使用するサンプルのJava Beanのコードを示します。

例19-12 式ダイアログにカスタム値を追加するサンプル・コード

package view;

import java.util.ArrayList;
import java.util.List;

import oracle.adf.view.page.editor.elbuilder.ELParameter;
import oracle.adf.view.page.editor.elbuilder.ELParameterValue;

public class UserInformation implements ELParameter {
public String getName() {
return mName;
}

public List<ELParameterValue> getValues() {
if (mValues == null)
{
mValues = new ArrayList<ELParameterValue>();
for(String[] args : mValueList)
{
mValues.add(new ELParameterValue(args[0], args[1]));
}
}
return mValues;
}
private static String[][] mValueList =    {new String[]{"User Name", "#{securityContext.userName}"}};

private String mName = "User Name";
private List<ELParameterValue> mValues;  }

2. <elbuilder-config>要素をpe_ext.xmlファイルに追加してBeanを登録します。
拡張ファイルの作成の詳細は、第19.2.1.2項「コンポーザを使用したアドオンの登録」を参照してください。

3. <selector>要素を<elbuilder-config>セクション内に追加し、次の例に示すように作成したBeanの詳細を提供します。

<elbuilder-config>
<!-- define selector -->
<selector id="UserInformation">
view.UserInformation
</selector>

<!-- include selector -->
<selectors>
<selector id="UserInformation" rendered="true"/>
</selectors>
</elbuilder-config>

複数の<selector>エントリを異なるカスタム・オプションに含めることができます。

カスタム・オプションは、デフォルトではすべての属性に対して表示されます。<selector>のrendered属性を使用して、特定の条件に基づいてオプションを条件付きで表示できます。

4. pe_ext.xmlファイルを保存します。

19.4.2 式言語を保護する方法

アプリケーションまたは特定の.jspxページで、ELを無効化するか、または既存のELを上書きから保護するためにコンポーザを構成できます。これは、第19.11項「「デザイン」ビューでの直接選択の有効化」で説明しているように、エンド・ユーザーに要素を公開する際に特に役立ちます。

アプリケーションの設定を定義するには、<pe:page-editor-config>タグ内のadf-config.xmlの次の要素を変更します。

- <pe:allow-el>は、コンポーネント・プロパティに対してELの入力が可能かどうかを定義します。デフォルトはtrueです。ELがすでにプロパティに対して定義されている場合、これを変更することはできません。

- <pe:protect-el>は、フォーム要素のELが読取り専用であるかどうかを定義します。デフォルトはfalseです。ELがすでに定義されていて、コンポーネントが別のレベルで編集されている場合は、ELを変更することはできません。

特定の.jspxページの動作を定義するには、<pe:pageCustomizable>タグ内の次の要素を使用します。

- allowEL (boolean)は、ELがアプリケーション・ページで実行できるかどうかを定義します。デフォルトはtrueです。ELがすでにプロパティに対して定義されている場合、これを変更することはできません。

- protectEL (boolean)は、フォーム要素のELが読取り専用であるかどうかを定義します。デフォルトはfalseです。ELがすでに定義されていて、コンポーネントが別のレベルで編集されている場合は、ELを変更することはできません。

.jspxページで定義される設定は、adf-config.xmlで定義される設定より優先されます。

19.4.3 実行時の処理

実行時の式ビルダーのセレクタは、カスタム値をデフォルト値とともに表示します。

ELが無効な場合、式ビルダーにはアクセスできず、ELはプロパティ・フィールドで許可されません。

ベース・ドキュメントまたは現在の編集レイヤーより上位のMDSレイヤーが属性値としてELを設定した場合、およびprotectELがtrueである場合、ELは「パラメータ」タブでも「表示オプション」タブでも変更できません。(LOVから取得されたELが許可されます。)

19.5 タスク・フローのパラメータのカスタムLOVまたはピッカーの構成

通常、コンポーザでタスク・フローのパラメータを編集中、ユーザーは「コンポーネント・プロパティ」ダイアログにあるテキスト・ボックスに値を入力します。しかし、ユーザーが特定のフィールドに指定する値について混乱することが多いです。これを推測のままにしておくのではなく、各パラメータが取ることができる値がわかっている開発者は、可能な場合には有効なすべてのオプションをリストすることによってユーザーが容易に操作できるようにすることができます。コンポーザを構成して、値のリスト(LOV)またはピッカーを任意のパラメータに対して表示できます。

次のオプションを使用して事前定義された一連のパラメータ値を表示できます。

- 静的LOV
事前定義された値のリストを表示します。

- 動的LOV
ページが実行されているときに計算されるEL値を評価して生成される値のリストを表示します。

- グローバルLOV
アプリケーションの任意のタスク・フローで使用できる値のグローバル・リストを表示します。

- ピッカー
ピッカー・フォーマット(たとえば、ドキュメント・ピッカー)ですべての値を表示します。

この項では、様々なタイプのLOVをタスク・フローのパラメータ用に構成する方法を説明します。次のサブセクションが含まれます:

- 第19.5.1項「LOVの構成方法」

- 第19.5.2項「実行時の処理」

この項の手順の説明に使用する例

この項の手順の一部は、図19-9に示すように、選択した都市の天気の情報を表示する単純な天気タスク・フロー(weather-task-flow-definition)の例を使用します。

図19-9 天気タスク・フロー

このタスク・フローには、選択した都市の天気の詳細を選択した温度単位(華氏または摂氏)で表示するようにそれぞれをユーザーが変更できる2つのパラメータ(zipCodeとtempUnits)が用意されています。この天気タスク・フローの例は、次のタイプのLOVを構成する方法を説明するために使用します。

- 図19-10に示すような、tempUnitsパラメータの値CelsiusおよびFahrenheitを持つ静的LOV。

図19-10 tempUnitsパラメータの静的LOV

- 都市名または郵便番号をユーザーが指定して対応する詳細を天気タスク・フローに表示できる2つのフィールドを持つピッカー(図19-11)。

図19-11 zipCodeパラメータの都市ピッカー

- または、実行時に評価されるEL値に基づいて値を表示するzipCodeパラメータの動的LOV(図19-12)。

図19-12 zipCodeパラメータの動的LOV

天気タスク・フローには、例19-13に示すようにコードを備えたタスク・フロー定義ファイル(weather-task-flow-definition.xml)が含まれています。

例19-13 weather-task-flow-definition.xmlファイル

<?xml version="1.0" encoding="US-ASCII" ?>
<adfc-config xmlns="http://xmlns.oracle.com/adf/controller" version="1.2">
<task-flow-definition id="weather-task-flow-definition">
<default-activity id="defaultactivity1">weather</default-activity>
<input-parameter-definition id="inputparam1">
<name id="inputparam1name">zipcode</name>
<value>#{pageFlowScope.zipcode}</value>
<class>java.lang.String</class>
<required/>
</input-parameter-definition>
<input-parameter-definition id="inputparam2">
<name id="ip2name">tempUnits</name>
<value>#{pageFlowScope.tempUnits}</value>
<class>java.lang.String</class>
</input-parameter-definition>
<view id="weather">
<page>/weather.jsff</page>
</view>
<use-page-fragments/>
</task-flow-definition>
</adfc-config>

太字で表示したパラメータは、実行時にユーザーが指定した値がセッションBean (pageFlowScope)に格納され、ここからその値を別のコンポーネントが読み取ることができるような方法で定義されます。

実行時にタスク・フローを編集すると、「パラメータ」タブは、パラメータ値を入力するための2つの入力テキスト・フィールドを表示します。次の項では、これらのタスク・フローのパラメータのLOVを有効にして、ユーザーが事前定義されたオプションのリストから選択できるようにする方法を説明します。

19.5.1 LOVの構成方法

この項では、様々なタイプのLOVをタスク・フローのパラメータ用に構成する方法を説明します。次のサブセクションが含まれます:

- 第19.5.1.1項「静的LOVの構成」

- 第19.5.1.2項「動的LOVの構成」

- 第19.5.1.3項「ピッカーの構成」

- 第19.5.1.4項「グローバル・リストからのLOVの構成」

19.5.1.1 静的LOVの構成

静的LOVを使用して、パラメータに対して事前定義された値のリストを表示します。コンポーザ拡張ファイル(pe_ext.xml)でネストされた<enumeration>要素を備えた<lov-config>セクションを定義することによって、静的LOVを構成できます。この項では、天気タスク・フローの例を使用して、tempUnitsパラメータの静的LOVを構成する方法を説明します。

静的LOVを構成するには:

1. コンポーザ拡張ファイルのpe_ext.xmlが存在していない場合、このファイルをプロジェクトのWebコンテキスト・ルート(たとえば、APPLICATION_HOME\Portal\adfmsrc\META-INFディレクトリ)の下のMETA-INFディレクトリに作成します。

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を展開し、「XML」、「XML文書」の順に選択します。

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

ファイルの名前をpe_ext.xmlにします。

2. 次のコード例に示すように、<lov-config>セクションを追加し、ネストされた<enumeration>要素を備えたタスク・フロー定義を含みます。

<lov-config>
<!-- Entry for the task flow in which you are configuring the LOV -->
<task-flow-definition taskflow-id="/WEB-INF/weather-task-flow-definition.xml#weather-task-flow-definition">

<!-- Specifying the parameter for which you want to define a static LOV -->
<input-parameter-definition>
<name>tempUnits</name>
<!-- List of values to be displayed for the parameter -->
<enumeration inline="true">
<item>
<name>Celcius</name>
<value>c</value>
<description>Temperature in Celcius</description>
</item>
<item>
<name>Fahrenheit</name>
<value>f</value>
<description>Temperature in Fahrenheit</description>
</item>
</enumeration>
</input-parameter-definition>

</task-flow-definition>
</lov-config>

<lov-config>セクション内に任意の数の静的LOVを構成できます。

注意:

パラメータ名として翻訳可能な文字列を指定できるようにするために、名前にEL値を使用できます(たとえば、#{resourceBundle.temp_units})。

3. ファイルを保存します。

19.5.1.2 動的LOVの構成

動的LOVを使用して、実行時にEL値を評価して動的に生成されるリストを表示します。この項では、天気タスク・フローの例を使用して、zipCodeパラメータの動的LOVを構成する方法を説明します。例を簡潔にしておくために、マネージドBeanは、実行時にZipcodeフィールドに表示される静的値のみを提供します。

動的LOVを構成するには:

1. Bean(たとえば、weatherBean)を作成し、Zipcodeパラメータの値のリストを定義します。次の例に関連するコード・スニペットを示します。

package portal.weather;

. . .

public List<SelectItem> getCitiesList() {
return citiesList;
}

private static final String F = "&deg;F";
private static final String C = "&deg;C";
private static final String [][] selectItems = {{"Redwood City", "94065"},
{"Novi, MI", "48375"},
{"Los Angeles", "90001"},
{"New York", "10036"}};

private static final List<SelectItem> citiesList = new ArrayList<SelectItem>();
static {
for (String[] city : selectItems){
citiesList.add(new SelectItem(city[1], city[0]));
}
}

2. 次の例に示すように、アプリケーションのfaces-config.xmlファイルにweatherBeanを登録します。

<managed-bean>
<managed-bean-name>weatherBean</managed-bean-name>
<managed-bean-class>portal.weather.WeatherBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>

3. コンポーザ拡張ファイルのpe_ext.xmlが存在していない場合、このファイルをプロジェクトのWebコンテキスト・ルート(たとえば、APPLICATION_HOME\Portal\adfmsrc\META-INFディレクトリ)の下のMETA-INFディレクトリに作成します。

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を展開し、「XML」、「XML文書」の順に選択します。

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

ファイルの名前をpe_ext.xmlにします。

4. 次の例に示すように、<lov-config>セクションを追加し、<enumeration>要素を備えたタスク・フロー定義を含め、パラメータ値のマネージドBeanを参照します。

<lov-config>
<task-flow-definition taskflow-id="/WEB-INF/weather-task-flow-definition.xml#weather-task-flow-definition">
<input-parameter-definition>
<name>zipcode</name>
<value>90001</value>
<enumeration items="#{weatherBean.citiesList}"/>
<input-parameter-definition>
</task-flow-definition>
</lov-config>

<lov-config>セクション内に任意の数の動的LOVを構成できます。

5. ファイルを保存します。

19.5.1.3 ピッカーの構成

通常、ピッカーを使用すると、ユーザーは、使用可能なすべてのオプション(色ピッカー、日付ピッカーなど)を表示するポップアップ・ダイアログから値を選択できます。タスク・フローのパラメータのピッカーを構成することには、次の高水準のタスクが含まれます。

- 選択したUIを使用してピッカー・タスク・フローを作成します。

- ピッカー・タスク・フローのパラメータを定義します。これらのパラメータを使用して、メイン・タスク・フローのパラメータ(ピッカーを構成するためのパラメータ)を移入します。

- メイン・タスク・フローのパラメータを構成して、作成したピッカーを表示します。この構成をpe_ext.xmlファイルに追加する必要があります。

この項では、例として天気タスク・フローを使用して、これらの手順を詳細に説明します。zipCodeパラメータの都市ピッカーを構成する方法を示します。ピッカー・タスク・フローでは、ユーザーは、都市名を指定し、その場所の郵便番号を取得できます。ピッカーからの郵便番号は、天気タスク・フローのZipcodeフィールドに入力されます。この項には次のサブセクションが含まれます:

- 第19.5.1.3.1項「ピッカー・タスク・フローの作成」

- 第19.5.1.3.2項「タスク・フローのパラメータに対するピッカーの登録」

19.5.1.3.1 ピッカー・タスク・フローの作成

JSFFフラグメントを使用してピッカー・タスク・フローを作成します。フラグメントを設計して、選択したフィールドまたはオプションを表示します。

ピッカー・タスク・フローを作成するには:

1. アプリケーション・プロジェクトで、ADFタスク・フロー(たとえば、weather-picker-task-flow-definition)を作成します。

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「Web層」を展開し、「JSF」、「ADFタスク・フロー」の順に選択します。

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

2. ビュー・オブジェクトをタスク・フローに追加します(たとえば、weatherPicker)。

3. ビューをダブルクリックしてweatherPicker.jsffフラグメントを作成します。

関連項目:

様々なタイプのADFタスク・フローを作成する方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「ADFタスク・フローのスタート・ガイド」の章を参照してください。

4. 選択したコンポーネントを使用してフラグメントを設計します。例19-14に、XMLファイルでユーザーが郵便番号を検索できる2つのInput Textコンポーネントと「OK」と「取消」の2つのUIコントロールを含むサンプルのタスク・フローを示します。

例19-14 ピッカーのJSFFフラグメントのサンプル・コード

<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:f="http://java.sun.com/jsf/core">
<af:panelStretchLayout id="psl1">
<f:facet name="center">
<af:panelGroupLayout id="pgl1" layout="vertical">

<af:panelGroupLayout id="pgl2" layout="horizontal">
<!-- Text field and Search button to search for a city by specifying the ZIP code -->
<af:inputText label="Enter Zip Code" id="it1"
value="#{pageFlowScope.weatherPicker.searchZipcode}"/>
<af:commandButton text="Search By Zipcode" id="cb1"
actionListener="#{pageFlowScope.weatherPicker.zipcodeSearch}"/>
</af:panelGroupLayout>

<af:panelGroupLayout id="pgl3" layout="horizontal">
<!-- Text field and Search button to search for a city by specifying the city name -->
<af:inputText label="Enter City" id="it2"                        value="#{pageFlowScope.weatherPicker.searchCity}"/>
<af:commandButton text="Search By City" id="cb2"
actionListener="#{pageFlowScope.weatherPicker.citySearch}"/>
</af:panelGroupLayout>

<!-- Output components to display the result from the search -->
<af:outputFormatted value="#{pageFlowScope.weatherPicker.city}"
id="of2"/>
<af:outputFormatted value="#{pageFlowScope.weatherPicker.zipcode}"
id="of3"/>

</af:panelGroupLayout>
</f:facet>
<f:facet name="bottom">
<af:panelGroupLayout layout="horizontal" halign="end" id="pkrPgl">

<!-- OK button -->
<af:commandButton action="ok"
actionListener="#{pageFlowScope.weatherPicker.populateReturnValue}"
text="#{Bundle.OK_BUTTON_TEXT}" id="okBtn"/>
<af:spacer width="5" id="s1"/>

<!-- Cancel button -->
<af:commandButton actionListener="#{pageFlowScope.weatherPicker.closePickerPopup}"
text="#{Bundle.CANCEL_BUTTON_TEXT}"
id="cnclBtn"/>
</af:panelGroupLayout>
</f:facet>
</af:panelStretchLayout>
</jsp:root>

「OK」ボタンおよび「取消」ボタンのアクション・リスナーは、マネージドBeanのweatherPickerを参照します。このBeanには、メイン・タスク・フローのパラメータにピッカーで指定した値を移入するロジックも含まれています。

5. ピッカー・タスク・フロー定義で参照したBeanを作成し、メイン・タスク・フローに値を返すロジックを追加します。
次の例は、名前によって都市を検索し、郵便番号を返すロジックを含むweatherPicker Beanの関連コード・スニペットを示しています。

package portal.weather.picker;

. . .

public void populateReturnValue(ActionEvent ae) {
Map map = (Map)RequestContext.getCurrentInstance().getPageFlowScope().get("outParam");
if (map != null)
map.put("outParamVal", _zipcode);
}

public void closePickerPopup(ActionEvent ae) {
UIComponent component = ae.getComponent();
while (!(component instanceof RichPopup))
component = component.getParent();
if (component != null)
((RichPopup)component).cancel();
}
. . .

6. 次の例に示すように、weatherPicker Beanをタスク・フロー定義ファイルに登録します。

<managed-bean id="pickerbean">
<managed-bean-name id="pickerbeanname">weatherPicker</managed-bean-name>
<managed-bean-class id="pickerbeanclass">portal.weather.picker.WeatherPicker</managed-bean-class>
<managed-bean-scope id="pickerbeanscope">pageFlow</managed-bean-scope>
</managed-bean>

7. 次の例に示すように、ピッカー・タスク・フローの2つの入力パラメータinParamValとoutParamを定義します。

<!-- Parameter used to store the value that must be passed to the main task flow -->
<input-parameter-definition id="pickerip1">
<name id="pickerip1name">outParam</name>
<value>#{pageFlowScope.outParam}</value>
<class>java.util.Map</class>
</input-parameter-definition>

<!-- Parameter used to store the value specified by the user in the picker -->
<input-parameter-definition id="pickerip2">
<name id="pickerip2name">inParamVal</name>
<value>#{pageFlowScope.inParamVal}</value>
<class>java.lang.String</class>
</input-parameter-definition>

これらのパラメータは、pageFlowScopeで参照され、メイン・タスク・フローのパラメータzipCodeを読み取り、移入するために使用されます。「郵便番号」フィールドの隣のピッカー・アイコンをユーザーがクリックすると、inParamValを使用して、フィールドの現在の値がセッションBeanに渡されます。ユーザーがピッカー・タスク・フローで都市名を指定して「OK」をクリックすると、Beanはその都市の郵便番号を取得し、outParamを使用してメインの天気タスク・フローに渡します。

8. タスク・フローの戻りアクティビティおよび「OK」ボタンと「取消」ボタンに対する制御フロー・ルールを定義します。これらのアクティビティおよびルールによって、いずれかのボタンがクリックされると制御はタスク・フローに返されます。次の例に示すようにタスク・フローの戻りアクティビティおよび制御フロー・ルールを定義できます。

<!-- The outcome to be returned to the task flow if a user clicks OK -->
<task-flow-return id="ok">
<outcome id="ok1">
<name id="okayed">ok</name>
</outcome>
</task-flow-return>
<!-- The outcome to be returned to the task flow if a user clicks Cancel -->
<task-flow-return id="cancel">
<outcome id="cancel1">
<name id="canceled">cancel</name>
</outcome>
</task-flow-return>

<!-- Rules to pass control flow to the ok activity if the user clicks OK and to the cancel activity if the user clicks Cancel -->
<control-flow-rule id="flowrule1">
<from-activity-id id="fromactivity1">weatherPicker</from-activity-id>
<control-flow-case id="flowcase1">
<from-outcome id="fromoutcome1">ok</from-outcome>
<to-activity-id id="toactivity1">ok</to-activity-id>
</control-flow-case>
<control-flow-case id="flowcase2">
<from-outcome id="fromoutcome2">cancel</from-outcome>
<to-activity-id id="toactivity2">cancel</to-activity-id>
</control-flow-case>
</control-flow-rule>

タスク・フロー定義は、次の例のようなコードを備えます。

<?xml version="1.0" encoding="US-ASCII" ?>
<adfc-config xmlns="http://xmlns.oracle.com/adf/controller" version="1.2">
<task-flow-definition id="weather-picker-task-flow-definition">
<default-activity id="pickeractivity1">weatherPicker</default-activity>
<input-parameter-definition id="pickerip1">
<name id="pickerip1name">outParam</name>
<value>#{pageFlowScope.outParam}</value>
<class>java.util.Map</class>
</input-parameter-definition>
<input-parameter-definition id="pickerip2">
<name id="pickerip2name">inParamVal</name>
<value>#{pageFlowScope.inParamVal}</value>
<class>java.lang.String</class>
</input-parameter-definition>
<managed-bean id="pickerbean">
<managed-bean-name id="pickerbeanname">weatherPicker</managed-bean-name>
<managed-bean-class id="pickerbeanclass">portal.weather.picker.WeatherPicker</managed-bean-class>
<managed-bean-scope id="pickerbeanscope">pageFlow</managed-bean-scope>
</managed-bean>
<view id="weatherPicker">
<page>/weatherPicker.jsff</page>
</view>
<task-flow-return id="ok">
<outcome id="ok1">
<name id="okayed">ok</name>
</outcome>
</task-flow-return>
<task-flow-return id="cancel">
<outcome id="cancel1">
<name id="canceled">cancel</name>
</outcome>
</task-flow-return>
<control-flow-rule id="flowrule1">
<from-activity-id id="fromactivity1">weatherPicker</from-activity-id>
<control-flow-case id="flowcase1">
<from-outcome id="fromoutcome1">ok</from-outcome>
<to-activity-id id="toactivity1">ok</to-activity-id>
</control-flow-case>
<control-flow-case id="flowcase2">
<from-outcome id="fromoutcome2">cancel</from-outcome>
<to-activity-id id="toactivity2">cancel</to-activity-id>
</control-flow-case>
</control-flow-rule>
<use-page-fragments/>
</task-flow-definition>
</adfc-config>

9. タスク・フロー定義ファイルを保存します。

19.5.1.3.2 タスク・フローのパラメータに対するピッカーの登録

タスク・フローのパラメータのカスタム・ピッカーを表示するには、コンポーザ拡張ファイルpe_ext.xmlでそのパラメータのピッカーを構成する必要があります。

タスク・フローのパラメータに対してピッカーを構成するには:

1. コンポーザ拡張ファイルのpe_ext.xmlが存在していない場合、このファイルをプロジェクトのWebコンテキスト・ルート(たとえば、APPLICATION_HOME\Portal\adfmsrc\META-INFディレクトリ)の下のMETA-INFディレクトリに作成します。

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を展開し、「XML」、「XML文書」の順に選択します。

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

ファイルの名前をpe_ext.xmlにします。

2. 次のコード例に示すように、<lov-config>セクションを追加し、ピッカー・タスク・フローを参照する<enumeration>要素を備えたタスク・フロー定義を含みます。

<?xml version="1.0" encoding="UTF-8"?>
<pe-extension xmlns="http://xmlns.oracle.com/adf/pageeditor/extension">
<lov-config>
<task-flow-definition taskflow-id="/WEB-INF/weather-task-flow-definition.xml#weather-task-flow-definition">
<!-- Parameter for which you defined the picker -->
<input-parameter-definition>
<name>zipCode</name>
<value>null</value>
<!-- enumeration items coming from the picker task flow -->
<enumeration picker="/WEB-INF/weather-picker-task-flow-definition.xml#weather-picker-task-flow-definition"/>
</input-parameter-definition>
</task-flow-definition>
</lov-config>
</pe-extension>

<lov-config>セクション内に任意の数のパラメータのピッカーを構成できます。

3. ファイルを保存します。

実行時にメイン・タスク・フローを編集すると、「コンポーネント・プロパティ」ダイアログにはそのパラメータの隣に拡大アイコンが表示されます。アイコンをクリックすると、ユーザーが値を選択できるピッカー・タスク・フローが起動します。

19.5.1.4 グローバル・リストからのLOVの構成

アプリケーション内の別のタスク・フローのパラメータにLOVを再使用する場合、LOVをグローバル・レベルで定義し、タスク・フローのパラメータからこれを参照できます。

グローバル・リストからLOVを構成するには:

1. コンポーザ拡張ファイルのpe_ext.xmlが存在していない場合、このファイルをプロジェクトのWebコンテキスト・ルート(たとえば、APPLICATION_HOME\Portal\adfmsrc\META-INFディレクトリ)の下のMETA-INFディレクトリに作成します。

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を展開し、「XML」、「XML文書」の順に選択します。

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

ファイルの名前をpe_ext.xmlにします。

2. 次のコード例に示すように、<lov-config>セクションを追加し、(タスク・フロー定義の外側で)<enumeration>要素内の値をリストします。

<lov-config>
<!-- Global enumerations ->
<enumeration id="temperature">
<item>
<name>Celcius</name>
<value>c</value>
<description>Temperature in Celcius</description>
</item>
<item>
<name>Fahrenheit</name>
<value>f</value>
<description>Temperature in Fahrenheit</description>
</item>
</enumeration>
<task-flow-definition . . . >
. . .
<lov-config>

<lov-config>セクション内に任意の数のグローバルLOVを構成できます。

3. 次の例に示すように、pe_ext.xmlファイルの任意の入力パラメータ定義からこのグローバルLOVを参照します。

<task-flow-definition taskflow-id="/WEB-INF/weather-task-flow-definition.xml#weather-task-flow-definition">
<input-parameter-definition>
<name>tempUnits</name>
<value>Celsius</value>
<enumeration ref="temperature"/>
</input-parameter-definition>
</task-flow-definition>

4. ファイルを保存します。

19.5.2 実行時の処理

タスク・フローのパラメータに対して構成したLOVのタイプに応じて、パラメータ値を指定するための異なるオプションがユーザーに表示されます。

温度の単位フィールドには、pe_ext.xmlファイルで定義した静的LOVから値がリストされます。

「郵便番号」フィールドのピッカーを構成した場合、このフィールドの右側に拡大アイコンが表示されます。このアイコンは、ユーザーが名前または郵便番号を指定することによって都市を選択できるピッカーを起動します。

19.6 コンポーザUIイベントのイベント・ハンドラの構成

イベント・ハンドラは、コンポーザを使用して登録され、ユーザーがページでアクションを実行するとコールされるJavaクラスです。たとえば、「保存」ボタンをクリックすると、コンポーザはアプリケーションに保存イベントに応答する機会を与えるアプリケーション・コードにコール・バックします。コンポーザがデフォルトで提供するイベント・ハンドラに加えて、カスタム・プロパティ・パネルの変更を保存するなど、アプリケーション固有のイベントに対して追加のハンドラを構成できます。

この項では、コンポーザでUIイベントのイベント・ハンドラを作成および登録する方法について説明します。次のサブセクションが含まれます:

- 第19.6.1項「コンポーザUIイベントのハンドラの作成および登録の方法」

- 第19.6.2項「イベント・ハンドラを作成および登録する際の処理」

- 第19.6.3項「その他のコンポーザのイベント・ハンドラの構成」

19.6.1 コンポーザUIイベントのハンドラの作成および登録の方法

コンポーザを使用してイベント・ハンドラを登録すると、これは、対応するイベントがコンポーザUIで起動されるときにコールされます。

この項では、イベント・ハンドラを作成し、コンポーザを使用してこれを登録する方法を説明します。次のサブセクションが含まれます:

- 第19.6.1.1項「イベント・ハンドラの登録をサポートするUIイベント」

- 第19.6.1.2項「保存イベント・ハンドラの作成: 例」

- 第19.6.1.3項「コンポーザを使用したイベント・ハンドラの登録」

19.6.1.1 イベント・ハンドラの登録をサポートするUIイベント

表19-1に、現在コンポーザがハンドラの登録をサポートしているUIイベントをリストします。

表19-1 ハンドラの登録がサポートされているイベント

イベント

原因

イベント・タイプ

リスナー・インタフェース(oracle.adf.view.page.editor.event)

メソッド

イベント・インタフェース

保存

ユーザーがコンポーザのツールバーの「保存」または「保存してラベル付け」ボタンをクリックするか、または「コンポーネント・プロパティ」ダイアログまたは「ページ・プロパティ」ダイアログの「適用」(保存)または「OK」(保存して閉じる)ボタンをクリックすると起動します。

save

SaveListener

processSave

SaveEvent

閉じる

ユーザーがコンポーザのツールバーで「閉じる」ボタンをクリックすると起動します。

close

CloseListener

processClose

CloseEvent

削除

ユーザーがコンポーネントを削除すると起動します。

delete

DeletionListener

processDeletion

DeletionEvent

getComponentを使用して削除されたコンポーネントを取得します。

追加

ユーザーがアイテムの「追加」ボタンをクリックして、リソース・カタログからページにコンポーネントを追加すると起動します。

add

AdditionListener

processAddition

AdditionEvent

選択

ユーザーが次の項目を選択すると起動します。

- 「デザイン」ビューまたは「コンテンツの追加」ビューのPanel CustomizableコンポーネントまたはShow Detail Frameコンポーネントの「編集」アイコン

- 「構造」ビューのページまたは階層に含まれるコンポーネント

select

SelectionListener

processSelection

SelectionEvent

属性変更

ユーザーが属性を変更すると起動します。

属性変更が無効な場合、リスナーはAbortProcessingExceptionを呼び出して、警告メッセージの重大度を設定します。重大度が「致命的」または「エラー」(デフォルト)に設定される場合、ユーザーは「適用」または「OK」をクリックする前に、プロパティ・インスペクタで属性を修正するように強制されます。他の重大度のすべてが通知ポップアップに表示されますが、ユーザーはさらにアクションを行うことなく保存できます。

attribute-change

AttributeChangeListener

processAttributeChange

AttributeChangeEvent

getMessageSeverity and setMessageSeverityを使用して警告重大度を取得して設定します。

setMessageSummary and setMessageDetailを使用して警告のメッセージを定義します。リスナーがエラーなしに属性変更を確認する場合でもメッセージを表示するには、setMessageSummary("")
setMessageSeverity(FacesMessage.SEVERITY_INFO);
setShowMessage(true)を使用します。

19.6.1.2 保存イベント・ハンドラの作成: 例

コンポーザを使用してイベントを登録するには、まずJavaクラスを作成し、イベント・ハンドラに適切なリスナーを実装する必要があります。この項では、保存イベント・ハンドラを作成する手順を説明します。同様の手順を実行して、表19-1にリストされている、すべてのサポートされているイベントのイベント・ハンドラを作成できます。

保存イベント・ハンドラは、ユーザーがコンポーザのツールバーで「保存」ボタンをクリックするか、または「コンポーネント・プロパティ」ダイアログまたは「ページ・プロパティ」ダイアログで「適用」ボタンまたは「OK」ボタンをクリックするとコールされます。保存イベント・ハンドラはoracle.adf.view.page.editor.event.SaveListenerを実装する必要があります。保存イベントのisCommitメソッドを使用して、ページに対して行われた変更とコンポーネント・プロパティに対して行われた変更を区別できます。値がtrueの場合、ユーザーがコンポーザのツールバーで「保存」ボタンをクリックし、ページに対して行われた変更を保存したことを示します。値がfalseの場合、ユーザーが「コンポーネント・プロパティ」ダイアログで「適用」ボタンまたは「OK」ボタンをクリックし、コンポーネント・プロパティに対して行われた変更を保存したことを示します。

保存イベント・ハンドラを作成するには:

1. JDeveloperで、Portalプロジェクトを選択し、「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を開き、「Java」、「Javaクラス」の順に選択して、「OK」をクリックします。

3. 「Javaクラスの作成」ダイアログで、クラスの名前(SaveHandlerなど)を指定します。

4. 「オプション属性」セクションで、oracle.adf.view.page.editor.event.SaveListenerインタフェースを追加します。

注意:

oracle.adf.view.page.editorクラスパスを表示できない場合、コンポーザがプロジェクトのライブラリとクラスパスに含まれていることを確認してください。これを実行するには、アプリケーション・ナビゲータでプロジェクトを右クリックして「プロジェクト・プロパティ」を選択します。「プロジェクト・プロパティ」ダイアログで、「ライブラリとクラスパス」を選択し、「コンポーザ」をリストに追加します。

5. 「OK」をクリックします。
Javaクラスのソースは次のようになります。

package view;

import javax.faces.event.AbortProcessingException;

import oracle.adf.view.page.editor.event.SaveEvent;
import oracle.adf.view.page.editor.event.SaveListener;

public class SaveHandler implements SaveListener {
public Class1() {
super();
}
public void processSave(SaveEvent saveEvent) throws AbortProcessingException {
// Your implementation goes here
}
}

イベントを取り消す必要がある場合、メソッドはこの例外をスローすることがあるため、throws AbortProcessingExceptionとしてprocessSaveメソッドを宣言する必要があります。例外オブジェクト(作成時)にこのイベントを取り消すための理由を含めることができます。

この例外をスローするとき、このイベントの残りの処理は取り消され、キューに入っているリスナーはスキップされます。

これと同様の手順を実行することによって、サポートされているすべてのイベントのイベント・ハンドラを作成できます。

19.6.1.3 コンポーザを使用したイベント・ハンドラの登録

イベント・ハンドラを作成および実装した後、コンポーザを使用してこれを登録する必要があります。登録は、対応するイベントがUIで発生したときに、ハンドラがコンポーザによってコールされて戻されるようにするために必要です。

コンポーザ拡張ファイル(/META-INF/pe_ext.xml)でイベント・ハンドラを登録します。このファイルの作成の詳細は、第19.2.1.2項「コンポーザを使用したアドオンの登録」を参照してください。

イベント・ハンドラを登録するには:

1. アプリケーションのpe_ext.xmlファイルに、次のエントリを追加します。

<event-handlers>
<event-handler event="save">view.SaveHandler</event-handler>
</event-handlers>

event属性およびevent-handlerタグ間に提供する値は、入力したイベントのタイプおよびイベント・クラスに指定した名前に対して一意です。

2. ファイルを保存します。

19.6.2 イベント・ハンドラを作成および登録する際の処理

実行時、登録したイベント・ハンドラは、拡張ファイルの順序およびこれらがクラス・パスで見つかる順序に応じてコールされます。コンポーザのネイティブ・イベント・ハンドラは最後にコールされます。

イベント・ハンドラのprocessEventNameメソッドの起動時に、イベント・ハンドラがiAbortProcessingExceptionをスローする場合、イベントは取り消されて、コンポーザのネイティブ・イベント・ハンドラを含むイベント・ハンドラがこれ以上コールされません。ただし、イベント・ハンドラのインスタンス化時にエラーが発生する場合は、コンポーザが次のイベント・ハンドラを続行します。警告メッセージがログに記録されます。

19.6.3 その他のコンポーザのイベント・ハンドラの構成

コンポーザのページでトリガーされた各UIイベントでは、対応するイベント・ハンドラはアプリケーションで登録されたリスナーからメソッドをコールして戻します。いくつかの追加の構成を実行することにより、イベント・ハンドラが実行される順序を指定し、リスナーがプロセスを終了するように構成するか、またはイベントが処理されるようにコンポーザに通知できます。

19.6.3.1 イベント・ハンドラの順序番号の指定

イベント・ハンドラの順序を指定することによって、イベント・ハンドラ(したがってリスナー)がコールされる順序を決定できます。pe_ext.xmlファイルで登録されたイベント・ハンドラに対してsequence属性を定義することによって、リスナーへの順序番号の割当てまたはデフォルト値の変更を行えます。

リスナーに順序番号を指定するには:

1. アプリケーションのpe_ext.xmlファイルで、順序指定するハンドラのevent-handler要素を探します。

2. sequence属性を次のように追加します。

<event-handlers>
<event-handler event="save" sequence="101">view.SaveHandler</event-handler>
</event-handlers>

sequence属性の値は正の整数である必要があります。この属性を定義しないと、イベント・ハンドラは、デフォルトの順序番号100に内部的に割り当てられます。

コンポーザ組込みのリスナーおよび順序番号のないリスナーは、デフォルトの順序番号100に割り当てられます。特定のイベント・ハンドラを他のイベント・ハンドラより前にコールする場合、100未満の値を指定する必要があります。

3. ファイルを保存します。

19.6.3.2 イベント処理の終了

イベント・ハンドラを構成して、例外をスローすることによって現在のイベントおよびその後のすべてのイベントの処理を終了できます。このためには、リスナーをthrowsAbortProcessingExceptionとして実装するときに使用したメソッドを宣言する必要があります。また、ハンドラを構成して、イベントがEvent.setEventHandled(true)メソッドを使用して処理されたことをコンポーザに通知できます。

たとえば、deleteイベント・ハンドラを構成して、現在のイベントおよび保留中のすべての削除イベントを終了し、ユーザーがコンポーザでコンポーネントを削除しようとしたときに例外をスローできます。これを有効にするには、例19-15に示すようにDeletionListenerインタフェースを実装する必要があります。

例19-15 DeletionListenerの実装

public class DeleteHandler implements DeletionListener
{
...
public void processDeletion(DeletionEvent delEvent) throws  AbortProcessingException
{
// Get the component that must be deleted
UIComponent comp = delEvent.getComponent();

if (comp != null)
{
try
{
// Assuming that a custom method, handleDelete(comp), handles deletion of
// a component and returns true on successful deletion and false in case
// of failure
boolean deleteSucceeded = handleDelete(comp);

// If deletion failed, then notify Composer that the delete event
// has been handled. No further events are processed.
if (!deleteSucceeded)
delEvent.setEventHandled(true);
}

catch (Exception e)
{
// Catch Exception throw by handleDelete(comp) and handle it by throwing
// AbortProcessingException to stop processing of delete events.
throw new AbortProcessingException(e)
}
}
}
...
}

19.7 リソース・カタログのドロップ・ハンドラの構成

ドロップ・ハンドラは、コンポーザを使用して登録され、ユーザーがリソース・カタログで「追加」リンクをクリックするとコールされるJavaクラスです。ドロップ・ハンドラは、処理できるデータ・フレーバを宣言します。カタログの各リソースにフレーバがあります。ユーザーがリソースの隣の「追加」リンクをクリックすると、コンポーザは登録されているすべてのドロップ・ハンドラを問い合せ、このフレーバを処理できるかどうか確認します。そのフレーバを処理できるドロップ・ハンドラが1つのみの場合、制御がそのドロップ・ハンドラに渡され、リソースがすぐにページに追加されます。そのフレーバを処理できるドロップ・ハンドラが複数ある場合、コンテキスト・メニューに使用可能なドロップ・ハンドラが表示されます。リソースは、ユーザーがコンテキスト・メニューからJavaドロップ・ハンドラを選択したときにページにドロップされます。

複数のJavaドロップ・ハンドラを持つリソースの例は、カタログでドキュメント・サービスを構成した場合のDocumentsフォルダ内で使用可能なPersonal Documentsサブフォルダです。このサブフォルダは、Content Presenter、Document List ViewerまたはDocument Libraryとして追加できます。

注意:

リリース11.1.1.1で追加操作を処理するために使用されるAdditionListenerメカニズムはまだ使用可能ですが、現在コンポーザはまずドロップ・ハンドラをコールし、カタログで追加操作を処理します。既存のAdditionListenersをドロップ・ハンドラに変換することをお薦めします。

この項では、ドロップ・ハンドラを作成し、これをアプリケーションに登録する手順を説明します。次のサブセクションが含まれます:

- 第19.7.1項「ドロップ・ハンドラの作成および登録の方法」

- 第19.7.2項「実行時の処理」

19.7.1 ドロップ・ハンドラの作成および登録の方法

この項では、リソース・カタログからXMLコンテンツを追加するサンプルのドロップ・ハンドラを作成し、コンポーザを使用してこのドロップ・ハンドラを登録する方法を説明します。次のサブセクションが含まれます:

- 第19.7.1.1項「ドロップ・ハンドラの作成」

- 第19.7.1.2項「コンポーザを使用したドロップ・ハンドラの登録」

- 第19.7.1.3項「XMLコンポーネントのリソース・カタログへの追加」

19.7.1.1 ドロップ・ハンドラの作成

コンポーザを使用してドロップ・ハンドラを作成するには、まず抽象ベース・クラス(DropHandler)を拡張し、getName()、getAcceptableFlavors()およびhandleDrop()の各メソッドを実装する必要があります。この項では、TestというXMLコンポーネントをリソース・カタログに追加し、XMLコンテンツを追加するためのCustom XMLというドロップ・ハンドラを作成する例を説明します。

ドロップ・ハンドラを作成するには:

1. JDeveloperで、Portalプロジェクトを選択し、「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を開き、「Java」、「Javaクラス」の順に選択して、「OK」をクリックします。

3. 「Javaクラスの作成」ダイアログで、クラスの名前(TestDropHandlerなど)を指定します。

4. 「拡張」フィールドで、入力または参照してDrophandlerクラス(oracle.adf.view.page.editor.drophandler.DropHandler)を選択します。

注意:

oracle.adf.view.page.editorクラスパスを表示できない場合、コンポーザがプロジェクトのライブラリとクラスパスに含まれていることを確認してください。これを実行するには、アプリケーション・ナビゲータでプロジェクトを右クリックして「プロジェクト・プロパティ」を選択します。「プロジェクト・プロパティ」ダイアログで、「ライブラリとクラスパス」を選択し、「コンポーザ」をリストに追加します。

5. 必要なインポート文を追加して「OK」をクリックします。
Javaクラスのソースは次のようになります。

package test;

import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;

import java.io.ByteArrayInputStream;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import oracle.adf.rc.component.XmlComponentFactory;
import oracle.adf.view.page.editor.drophandler.DropEvent;
import oracle.adf.view.page.editor.drophandler.DropHandler;

import org.apache.myfaces.trinidad.change.AddChildDocumentChange;
import org.apache.myfaces.trinidad.change.ChangeManager;
import org.apache.myfaces.trinidad.change.DocumentChange;
import org.apache.myfaces.trinidad.context.RequestContext;

import org.w3c.dom.Document;
import org.w3c.dom.DocumentFragment;

public class TestDropHandler extends DropHandler {
public TestDropHandler() {
super();
}

public String getName() {
return null;
}

public DataFlavor[] getAcceptableFlavors() {
return new DataFlavor[0];
}

public boolean handleDrop(DropEvent dropEvent) {
return false;
}
}

6. getName()メソッドを次のように実装し、ドロップ・ハンドラの名前を返します。

public class TestDrophandler extends DropHandler {
public TestDrophandler() {
super();
}

public String getName() {
return "Custom XML";
}
. . .

この値(Custom XML)は、リソース・カタログのXMLコンポーネントの隣の「追加」リンクのコンテキスト・メニューに表示されます。

7. getAcceptableFlavors()メソッドを次のように実装し、XMLコンポーネントでサポートされるデータ・フレーバのリストを取得します。

public class TestDropHandler extends DropHandler
{
private static final DataFlavor[] ACCEPTABLE_FLAVORS =
{ XmlComponentFactory.XML_STRING_FLAVOR };

. . .

public DataFlavor[] getAcceptableFlavors() {
return ACCEPTABLE_FLAVORS;
}
. . .

8. 次のサンプル・ファイルに示すようにhandleDrop(DropEvent)メソッドを実装し、ドロップ・ハンドラを処理し、XMLコンポーネントをページに追加します。

public class TestDropHandler extends DropHandler
{
. . .

public boolean handleDrop(DropEvent de) {
Transferable transferable = de.getTransferable();
UIComponent container = de.getContainer();
int index = de.getDropIndex();

try {
FacesContext context = FacesContext.getCurrentInstance();
RequestContext rctx = RequestContext.getCurrentInstance();

String fragMarkup = null;

// Get the TransferData from the Transferable (expecting a String)
Object data = getTransferData(transferable);
if (data instanceof String) {
fragMarkup = "<?xml version='1.0' encoding='UTF-8'?>" + (String)data;
} else {
return false;
}

// Get a DocumentBuilder
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(false);
DocumentBuilder builder = factory.newDocumentBuilder();

// Parse the xml string into a Document object using DocumentBuilder
byte[] markupBytes = fragMarkup.getBytes();
Document newDoc =
builder.parse(new ByteArrayInputStream(markupBytes));

// Transform the Document into a DocumentFragment
DocumentFragment docFrag = newDoc.createDocumentFragment();
docFrag.appendChild(newDoc.getDocumentElement());

// Create an "add child" document change, that is, insert the fragment
DocumentChange change = null;
if (index < container.getChildCount()) {
// Get the ID of the component we'll be adding just before
String insertBeforeId = container.getChildren().get(index).getId();
change = new AddChildDocumentChange(insertBeforeId, docFrag);
} else {
change = new AddChildDocumentChange(docFrag);
}

// Apply the "add child" DocumentChange using ChangeManager
ChangeManager changeManager = rctx.getChangeManager();
changeManager.addDocumentChange(context, container, change);

// Refresh the target container using PPR
rctx.addPartialTarget(container);

// Mark the drop as completed.
return true;
} catch (Exception e) {
return false;
}
}

この例では、DropEventパラメータがhandleDropメソッドに渡されます。このパラメータには、次に説明する3つの属性があります。

- transferableは、DataFlavorと同様に、追加するデータを含む標準Javaクラスです。

- containerは、コンポーネントのドロップ先であるコンテナです。

- indexは、コンテナ内のコンポーネントの位置です。たとえば、1番目、2番目などです。

9. TestDropHandler.javaファイルを保存します。

19.7.1.2 コンポーザを使用したドロップ・ハンドラの登録

ドロップ・ハンドラを実装した後、コンポーザを使用してこれを登録する必要があります。登録は、ユーザーがカタログで「追加」リンクをクリックしたときに、ハンドラがコンポーザによってコールされるようにするために必要です。コンポーザ拡張ファイル(/META-INF/pe_ext.xml)でドロップ・ハンドラを登録します。このファイルの作成の詳細は、第19.2.1.2項「コンポーザを使用したアドオンの登録」を参照してください。

ドロップ・ハンドラを登録するには:

1. pe_ext.xmlファイルで、次のエントリを追加します。

<drop-handlers>
<drop-handler>test.TestDropHandler</drop-handler>
</drop-handlers>

ここで、TestDropHandlerはドロップ・ハンドラの実装の名前です。

2. ファイルを保存します。

必要数の<drop-handler>要素を追加することによって、拡張ファイルに任意の数のドロップ・ハンドラを登録できます。

19.7.1.3 XMLコンポーネントのリソース・カタログへの追加

XmlComponentFactoryクラスによって生成されたXMLコンポーネントのドロップ・ハンドラを作成したため、XMLコンポーネントをリソース・カタログに追加してからそのコンポーネントを実行時にページに追加することによって、実行時にドロップ・ハンドラがどのように動作するかをテストできます。

XMLコンポーネントをカタログに追加するには:

1. デフォルトのカタログ定義ファイル(default-catalog.xml)を開きます。
このファイルの場所については、第14.4項「デフォルト・リソース・カタログの選択」を参照してください。

2. 次のコードをファイルの<contents>セクション内に追加します。

<component id="pc" factoryClass="oracle.adf.rc.component.XmlComponentFactory">
<attributes>
<attribute attributeId="Title" value="Test"/>
<attribute attributeId="Description" value="XML content you can add to application pages"/>
<attribute attributeId="IconURI" value="/adf/pe/images/elementtext_qualifier.png"/>
</attributes>
<parameters>
<parameter id="xml">
<af:outputText value="Hello!" xmlns:af="http://xmlns.oracle.com/adf/faces/rich"/>
</parameter>
</parameters>
</component>

3. default-catalog.xmlファイルを保存します。
実行時に、リソース・カタログはXMLコンポーネントを表示します。詳細は、第14.3.5項「リソース・カタログにカスタム・コンポーネントを追加する方法」を参照してください。

19.7.2 実行時の処理

ユーザーがカタログのコンポーネントの「追加」リンクをクリックすると、そのフレーバをサポートしているすべてのドロップ・ハンドラが「追加」リンクのコンテキスト・メニューのオプションとして表示されます。ただし、そのフレーバを処理できるドロップ・ハンドラが1つのみの場合、リソースはすぐにページに追加されます。

図19-13に、Custom XMLオプションおよびデフォルトのXMLオプションを備えたTest XMLコンポーネントの「追加」リンクをクリックしたときに表示されるコンテキスト・メニューを示します。

図19-13 カタログのXMLコンポーネントのドロップ・ハンドラ

19.8 プロパティ・フィルタの定義

一部のコンポーネント・プロパティは、デフォルトでフィルタ処理によって除外されるため、コンポーザの「コンポーネント・プロパティ」ダイアログに表示されません。デフォルトのフィルタは、コンポーザの拡張ファイル(/META-INF/pe_ext.xml)の<filter-config>セクションで定義されています。

グローバル・フィルタは、すべてのコンポーネントの属性をフィルタ処理します。これらは<global-attribute-filter>タグを使用して定義されます。タグ・レベルのフィルタは、指定したコンポーネントの属性のみをフィルタ処理します。これらは<taglib-filter>タグを使用して定義されます。

注意:

拡張ファイルでは、任意の数の<taglib-filter>タグを<filter-config>の下に持つことができますが、すべてのグローバル属性フィルタを定義する<global-attribute-filter>タグは1つのみ持つことができます。

「コンポーネント・プロパティ」ダイアログでさらに多くのプロパティを非表示にするために追加のフィルタを定義できます。この項では方法について説明します。次のサブセクションが含まれます:

- 第19.8.1項「プロパティ・フィルタの定義方法」

- 第19.8.2項「実行時の処理」

- 第19.8.3項「プロパティ・フィルタの削除方法」

19.8.1 プロパティ・フィルタの定義方法

コンポーザは、組込みフィルタ構成を定義します。拡張ファイル(pe_ext.xml)を使用して、追加のプロパティ・フィルタの定義およびフィルタの削除を実行できます。(1つのタグに対してでも)異なる拡張ファイルで任意の数のフィルタを定義できます。コンポーザは、すべての拡張ファイルからのフィルタ処理情報をマージします。

注意:

pe_ext.xmlファイルの作成の詳細は、第19.2.1.2項「コンポーザを使用したアドオンの登録」を参照してください。

例外ファイルでプロパティ・フィルタを定義するには、filter-config要素を使用します。次の要素は、含まれているattributeタグに対して定義されます。

- label要素により、UIの要素に対するデフォルト・ラベルをオーバーライドできます。ELを使用してローカライズされた文字列を取得するか、またはデザイン・ビューまたはソース・ビューで異なるラベルを表示できます。

- view要素を特定のビュー(designまたはsource)の特定のタグの属性をフィルタするために使用できます。

- filtered要素は、グローバルにフィルタされる場合にも属性を表示するために使用できます。グローバルにフィルタされた要素をリストアするには、filtered="false"を使用します。

pe_ext.xmlファイルで、次の例に示すようにfilter-config要素を追加します。

<filter-config>
<global-attribute-filter>
<attribute name="readOnly" filtered="false" label="Read Only"/>
<attribute name="required" filtered="false" label="Mandatory"/>
<attribute name="shortDesc" filtered="false" label="#{Bundle.PNL_TB_SHORTDESC}"/>
</global-attribute-filter>

<taglib-filter namespace="http://xmlns.oracle.com/adf/faces/rich">
<tag name="goLink">
<attribute name="accessKey" view="design"/>
<attribute name="targetFrame" filtered="false" view="source"/>
<attribute name="destination" filtered="false" label="#{pageEditorPanelBean.layoutView ?  'Where do you want to surf?' : 'Destination'}"/>
</tag>
<tag name="inputText">
<attribute name="all" view="design"/>
<attribute name="label" label="Field Name" filtered="false" />
<attribute name="readOnly" filtered="false" />
<attribute name="required" filtered="false" />
<attribute name="rendered" filtered="false" />
<attribute name="wrap" filtered="false" />
</tag>
</taglib-filter>
</filter-config>

ファイルを保存します。

19.8.2 実行時の処理

実行時、コンポーザのプロパティを編集すると、フィルタ処理によって除外されたプロパティは「コンポーネント・プロパティ」ダイアログにレンダリングされません。

19.8.3 プロパティ・フィルタの削除方法

前にフィルタ処理されたプロパティが「コンポーネント・プロパティ」ダイアログにレンダリングされるように、グローバル・フィルタおよびタグレベル・フィルタを削除できます。これは、コンポーザの組込みフィルタやアプリケーションの別の場所で定義された別の拡張ファイルによってフィルタ処理されて除外されたプロパティを表示する際に便利です。

注意:

プロパティ・フィルタを削除した後、フィルタは、別の拡張ファイルでそのプロパティに対して定義されても「コンポーネント・プロパティ」ダイアログにレンダリングされます。

プロパティ・フィルタを削除するには:

1. META-INFディレクトリにあるコンポーザ拡張ファイル(pe_ext.xml)を編集します。
このファイルのエントリを編集してプロパティ・フィルタを削除できます。

2. フィルタの削除元の属性を検索し、次の例に示すように、<attribute>タグでfilteredをfalseに設定します。

<pe-extension xmlns="http://xmlns.oracle.com/adf/pageeditor/extension">
. . .
<filter-config>
<global-attribute-filter>
<attribute name="accessKey" filtered="false" />
<attribute name="attributeChangeListener" />
. . .
</global-attribute-filter>
<taglib-filter namespace="http://xmlns.oracle.com/adf/faces/rich">
<tag name="activeCommandToolbarButton">
. . .
<attribute name="windowWidth" filtered="false"/>
</tag>
</taglib-filter>
</filter-config>
</pe-extension>

3. ファイルを保存します。

19.9 カスタマイズ・マネージャ・タスク・フローのパラメータ・サポートの有効化

タスク・フローで受け渡すパラメータを有効にする場合、管理者は、特定のパラメータを設定することによってカスタマイズ・マネージャをカスタマイズできます。デフォルトでは、管理者は、コンポーザのカスタマイズ・マネージャ・タスク・フローにパラメータを渡すことはできません。表19-2では、カスタマイズ・マネージャ・タスク・フローでサポートされているパラメータについて説明しています。

表19-2 カスタマイズ・マネージャ・タスク・フローのパラメータ

パラメータ名

値

説明

defaultPage

ページのURI

管理するデフォルト・ページを指定するために使用します。この値がnullの場合、現在のページが使用されます。

dynamicNodeMap

Map<String,List<CustomizationManagerNode>>

ページ、XMLドキュメントまたは指定されたページあるいはフラグメントのタスク・フローのリストを次の形式を使用して返すために使用されます。

Page1.jspx -> List of {CustomizationManagerTaskFlowNode or CustomizationManagerPageNode or CustomizationManagerXMLNode}

CustomizationManagerTaskFlowNodeを使用して、そのページ内の動的タスク・フローを渡します。

そのページのページ・テンプレートを渡すためにはCustomizationManagerPageNodeを使用します。

このページが所有するXMLドキュメントを渡すためにはCustomizationManagerXMLNodeを使用します。

showBase

true/false

デフォルト: false

ベース・ドキュメントの列を表示または非表示にするために使用します。

showCurrentLayers

true/false

デフォルト: true

現在使用しているレイヤーの詳細を表示する列を表示または非表示にするために使用します。

showAllLayers

true/false

デフォルト: true

現在のレイヤー以外のレイヤーの詳細を表示する列を表示または非表示にするために使用します。

showLayersforCurrent

Map<String,List<String>>

「現在のコンテキスト」列で使用可能である必要があるレイヤーのリストを指定するために使用します。

このパラメータは、レイヤー名およびレイヤー値のリストならびに「現在のコンテキスト」列に表示する必要があるパターンを取ります。詳細は、例19-16を参照してください。

showLayersforAll

Map<String,List<String>>

「すべてのレイヤー」列で使用可能である必要があるレイヤーのリストを指定するために使用します。

このパラメータは、レイヤー名およびレイヤー値のリストならびに「すべてのレイヤー」列に表示する必要があるパターンを取ります。詳細は、例19-16を参照してください。

labelPrefixes

List<String>

「プロモート」ダイアログに表示する必要がある、空白で区切られたラベルの接頭辞のリストを指定するために使用します。指定された接頭辞を使用して作成されたラベルのみが「プロモート」ダイアログに表示されます。

デフォルトでは、すべてのラベルが表示されます。

maxDepth

String

カスタマイズ・マネージャでのタスク・フローの階層の深さを制限するために使用します。

デフォルト値は10です。したがって、循環依存性を持つタスク・フローがある場合、このパラメータは、深さを10のネストされたタスク・フローに制限することによって、スタック・オーバーフローを防ぎます。

最大ネストの10タスク・フローを表示できます。カスタマイズ・マネージャは、10より大きい値を指定しても、深さ10しか表示しません。

showDownload

true/false

デフォルト: true

「ダウンロード」リンクを表示または非表示にするために使用します。

showUpload

true/false

デフォルト: true

「アップロード」リンクを表示または非表示にするために使用します。

showDelete

true/false

デフォルト: true

「削除」リンクを表示または非表示にするために使用します。

showPromote

true/false

デフォルト: true

「プロモート」リンクを表示または非表示にするために使用します。

注意:

MapおよびListの実装は、クラスタベースの環境で正しく動作するようにカスタマイズ・マネージャに対して連続化可能である必要があります。通常、ArrayListおよびHashMapは連続化可能です。

この項では、カスタマイズ・マネージャ・タスク・フローでパラメータの編集を可能にする手順を説明します。次のサブセクションが含まれます:

- 第19.9.1項「カスタマイズ・マネージャ・タスク・フローのパラメータを設定する方法」

- 第19.9.2項「パラメータのサポートを有効にした場合の処理」

19.9.1 カスタマイズ・マネージャ・タスク・フローのパラメータを設定する方法

カスタマイズ・マネージャ・タスク・フローにパラメータを渡すには、アプリケーションのadf-config.xmlファイルのカスタマイズ・マネージャのアドオン・パネル構成の一部としてparameters属性を定義する必要があります。

タスク・フローでパラメータ編集を有効にするには:

1. アプリケーションのadf-config.xmlファイルを開きます。これは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダにあります。

2. ファイルで次のネームスペースをadf-config要素内に追加します。

xmlns:pe="http://xmlns.oracle.com/adf/pageeditor/config"

3. ネームスペースを付けて<pe:page-editor-config>エントリを追加し、<pe:addon-panels>を含めます。
<pe:addon-panels>内で、例19-16に示すように、デフォルトのカスタマイズ・マネージャ・パネルの<pe:addon-panel>エントリを追加し、parameters属性をappUtilBean.customizationManagerParamsに設定することによって定義します。

例19-16 adf-config.xmlで参照されるカスタマイズ・マネージャのアドオン

<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
<pe:addon-panels>
<pe:addon-panel name="oracle.adf.pageeditor.addonpanels.customization-manager" parameters="#{AppUtilBean.customizationManagerParams}"/>
. . .
</pe:addon-panels>
</pe:page-editor-config>

ここで、AppUtilBeanは、AppUtilBeanクラスのサンプル実装で、これを次の例に示します。

public Map<String, Object> getCustomizationManagerParams()
{
Map<String, Object> paramMap = new HashMap<String, Object>();
Map<String, List<String>> showLayersForCurrent = new HashMap<String, List<String>>();
showLayersForCurrent.put("user", Arrays.asList("admin%", "weblogic"));
paramMap.put("showLayersForCurrent", showLayersForCurrent);

Map<String, List<String>> showLayersForAll = new HashMap<String, List<String>>();
showLayersForAll.put("enterprise", Arrays.asList("Frys"));
paramMap.put("showLayersForAll", showLayersForAll);

return paramMap;
}

4. adf-config.xmlファイルを保存します。

19.9.2 パラメータのサポートを有効にした場合の処理

カスタマイズ・マネージャは、新しいパラメータ設定の基づいてユーザーにオプションを表示します。

19.10 コンポーザのツールバーのカスタマイズ

要素を追加、削除または再配置し、既存の要素をオーバーライドすることによってデフォルトのコンポーザのツールバーをカスタマイズできます。ツールバーの拡張性を有効にするために、コンポーザのツールバーの要素がセクションにグループ化されています。これらのセクションを使用してツールバーをカスタマイズできます。それぞれのセクションには固有の名前が付いており、1つ以上の要素が中に含まれています。

注意:

「保存」ボタンがツールバーに表示されるのは、アプリケーションがサンドボックスを使用するように構成されている場合のみです。詳細は、第21.2項「コンポーザのサンドボックスの使用」を参照してください。

「ヘルプ」アイコンがツールバーに表示されるのは、アプリケーションでヘルプ・プロバイダを構成した場合またはコンポーザ・パネルまたはダイアログからヘルプをフックアップした場合のみです。

コンポーザのツールバーは、ADF Faces Toolboxタグを使用して作成されます。ツールバーの各行はToolbarタグです。したがって、セパレータ・バーなどのUIコンポーネントはToolbarコンポーネントから継承されます。

表19-3ではツールバーの領域を説明します。

表19-3 ツールバーの領域

セクションまたは領域

説明

message

ページ名付きのメッセージを含む領域。

statusindicator

ステータス・インジケータを含む領域。

menu

ユーザーが「デザイン」ビューと「構造」ビューを切り替えることができる「表示」メニューを含む領域。

addonpanels

コンポーザのアドオンを含む領域。アドオンは、この領域内ですべて順次表示されます。詳細は、第19.2項「コンポーザのアドオンの作成」を参照してください。

help

「ヘルプ」アイコンを含む領域。

button

「保存」ボタンおよび「閉じる」ボタンを含む領域。

stretch

2つのセクション間の広い空間。

newline

セクション間の改行。改行の後のすべてのセクションは、ツールバーで新しい行になります。

ツールバー・セクションを使用して、次の方法でコンポーザのツールバーをカスタマイズできます。

- 組込み要素の再配置および非表示

- カスタム要素を使用した新しいセクションの追加

- デフォルトのセクションを変更してカスタム要素を表示

この項では、コンポーザのツールバーをカスタマイズする手順を説明します。次の項が含まれます:

- 第19.10.1項「ツールバー要素を再配置または非表示にする方法」

- 第19.10.2項「実行時の処理」

- 第19.10.3項「新しいセクションをツールバーに追加する方法」

- 第19.10.4項「ツールバーのセクションをオーバーライドしてカスタム・コンテンツを表示する方法」

19.10.1 ツールバー要素を再配置または非表示にする方法

Page CustomizableコンポーネントのtoolbarLayout属性を使用して、表示するツールバーのセクションおよびその表示順を制御します。

アプリケーションのすべての編集可能ページのツールバーをカスタマイズするために、テンプレートを作成し、Page Customizableコンポーネントをテンプレートに追加し、toolbarLayout属性をPage Customizableコンポーネントに対して指定できます。その後、このテンプレートに基づいてアプリケーションのすべてのページをカスタマイズできます。

toolbarLayoutの値を指定しないと、この属性は、コンポーザのツールバーのセクションのデフォルト・レイアウトであるmessage addonpanels stretch button helpに内部的に設定されます。

アプリケーション・ページのツールバーをカスタマイズするには:

1. JDeveloperのカスタマイズ可能なJSPXページを開き、「構造」ウィンドウでPage Customizableコンポーネントを選択します。

2. プロパティ・インスペクタで、Appearanceの下のtoolbarLayout属性に空白区切り値を指定します。
表19-3のセクション名は、この属性の有効値です。

注意:

ツールバーで1行ごとに1つのstretch値のみを追加できます。複数のstretch値を追加すると、最初の1つのみが表示され、その他はすべて無視されます。

「ソース」ビューで、toolbarLayout属性は次の例に示すように表示されます。

<pe:pageCustomizable id="pageCustomizable1"
toolbarLayout="button stretch statusindicator menu"
<cust:panelCustomizable id="panelCustomizable1" layout="scroll"/>
<f:facet name="editor">
<pe:pageEditorPanel id="pep1"/>
</f:facet>
</pe:pageCustomizable>

3. JSPXファイルを保存します。

19.10.2 実行時の処理

実行時ツールバーには、指定したセクションが指定した順序で表示されます(図19-14)。

図19-14 カスタマイズしたコンポーザのツールバー

19.10.3 新しいセクションをツールバーに追加する方法

toolbarLayout属性でファセットを作成し、ファセット名を指定することによって、カスタム・セクションを追加できます。新しいファセットにツールバーに表示する要素を移入します。次の例は、セクションの作成方法、具体的には、ユーザーが不具合をレポートできるポップアップを開く「バグをレポート」アイコンを追加する方法を説明します。

カスタム・セクションを追加するには:

1. ツールバーをカスタマイズするJPSXページを開きます。

2. ファセットをPage Customizable内に追加し、これにbugreportという名前を付けます。

3. Command Toolbar Buttonコンポーネントをファセット内に追加し、text属性をReport a Bugに設定します。

4. アイコンにイメージを追加するには、icon属性を使用してイメージへのパスを指定します。

5. Show Popup Behaviorコンポーネントを追加し、Command Toolbar Buttonをクリックしたときにポップアップを起動します。
「ソース」ビューで、Page Customizableは次のように表示されます。

<pe:pageCustomizable id="pageCustomizable1"
toolbarLayout="message stretch bugrep newline menu stretch button"
<f:facet name="bugrep">
<af:commandToolbarButton id="cmd1" text="Report a bug"
icon="/images/bug.png"
clientComponent="true">
<af:showPopupBehavior popupId="p1" triggerType="action"/>
</af:commandToolbarButton>
</f:facet>
. . .
<af:popup id="p1">
<af:dialog id="dlg1" title="File a Bug"
affirmativeTextAndAccessKey="File">
<af:panelFormLayout labelWidth="30%" id="pfl1">
<af:inputText id="it0" maximumLength="80"
label="Product/Component" required="true"/>
<af:inputText id="it1" maximumLength="80" label="Subject"
required="true"/>
<af:inputText id="it2" rows="3" label="Problem" required="true"/>
<af:inputText id="it3" rows="3" label="Steps" required="true"/>
</af:panelFormLayout>
</af:dialog>
</af:popup>
. . .
</pe:pageCustomizable>

6. ページを保存します。
実行時に、コンポーザ・ツールバーに「バグをレポート」アイコンが表示されます。このアイコンをクリックすると、バグ提出ダイアログが表示され、ユーザーはこれを使用して不具合を報告できます。

19.10.4 ツールバーのセクションをオーバーライドしてカスタム・コンテンツを表示する方法

デフォルトのツールバーのセクションと同じ名前のファセットを追加し、これにカスタム・コンテンツを移入することによって、デフォルトのツールバーのセクションにカスタム・コンテンツを表示できます。ファセットのコンテンツは、デフォルトのセクションのコンテンツをオーバーライドします。たとえば、ユーザーへのカスタム・メッセージをEditing Page: Page_Nameメッセージの場所に表示するために、messageというカスタム・ファセットを作成し、ユーザーに表示するテキストを含むOutput Textコンポーネントを含めることができます。Output Textコンポーネントは、デフォルトのメッセージの場所に表示されます。次の例は、カスタム・ツールバー・メッセージを含むPage Customizableコンポーネントを示しています。

<pe:pageCustomizable id="pageCustomizable1"
toolbarLayout="message newline button stretch statusindicator menu"
<cust:panelCustomizable id="panelCustomizable1" layout="scroll"/>
<f:facet name="message">
<af:outputText value="Welcome!"/>
</f:facet>
<f:facet name="editor">
<pe:pageEditorPanel id="pep1"/>
</f:facet>
</pe:pageCustomizable>

19.11 「デザイン」ビューまたは「コンテンツの追加」ビューでの直接選択の有効化

直接選択により、ユーザーはコンポーザの「構造」ビューから「デザイン」ビューまたは「コンテンツの追加」ビューまで特定のカスタマイズ機能を拡張し、実行時にページ内から要素を変更できます。これにより、基礎となるアプリケーションにダメージを及ぼさないような安全な環境を作りながら、ビジネス・ユーザーの手でより多く制御することができます。

すべての直接選択機能は、「構造」ビューで使用できますが、ビジネス・ユーザーには「構造」ビューを安全かつ効率的に使用する知識や経験がありません。これらのユーザーは簡単にページを壊して、アプリケーション・ロジックを回避することができます。

直接選択を使用して、少数の選択したコンポーネントを選択可能および編集可能にすることができます。たとえば、フォーム内のフィールドの順序の変更、フォーム・フィールドのラベルの変更、表内の列名の変更またはフォームの特定のフィールドの非表示など。

直接選択機能の詳細は、第19.11.2項「実行時の処理」を参照してください。

19.11.1 直接選択を有効化および構成する方法

この項では、アプリケーションで直接選択を有効化および構成する方法について説明します。

1. まず、「選択」ビューを有効にする必要があります。adf-config.xmlの<pe:page-editor-config>タグの内側に、<pe:enable-design-views>タグを追加して使用可能なビューを定義します。使用可能な定数値は次のとおりです。

- all: すべてのビューを使用可能にして、ビュー間を切り替えるタブを含むツールバーを表示します。

- design: 「デザイン」ビューを唯一の使用可能なビューにします。

- add-content: 従来の「コンテンツの追加」ビューを唯一の使用可能なビューにします。

- select: 「選択」ビューを唯一の使用可能なビューにします。

- source: 「構造」ビューを唯一の使用可能なビューにします。

- preview: 「プレビュー」を唯一の使用可能なビューにします。

たとえば、「選択」ビューと「コンテンツの追加」ビューのみを使用する場合は、次のタグを追加できます。

<pe:enable-design-views> select add content</pe:enable-design-views>

下の例に示すように、ELを使用して適切なビューを決定することもできます。

<pe:enable-design-views>#{testBean.designViews}</pe:enable-design-views>

注意:

この設定は、アプリケーションのデフォルトを定義します。designViews=""属性を使用してpageCustomizableタグでこの設定をオーバーライドできます。

2. pe-ext.xmlで、特定のコンポーネントの直接選択を有効化または無効化するために<selection-config>タグを追加し、関連付けられた操作を定義します。コンポーネントを選択可能にするためには、このタグ内で操作を定義する必要があります。(操作が定義されておらず、選択がコンポーネントに対して有効になっていない場合、コンポーネントを選択すると空のフレームが表示されます。)
<selection-config>タグ内で、<global-filter>を使用して、また<selection-taglib-filter>を使用してネームスペースおよびタグによって、直接選択をグローバルに構成できます。<selection>タグには2つの必須属性があります。

- view: 直接選択を有効にするビューを定義します。

- enabled: 直接選択が指定されたビューで有効化されるかどうかを設定します。

利用可能な操作は、各特定コンポーネントの下の<operation>タグ内で定義されています。次の要素は、操作の定義に使用されます。

- name: 実行される操作(標準またはカスタム)を定義します。操作名はプロパティ・パネルIDと同じです。標準操作のリストは、第B.3.2「デフォルトのプロパティ・パネルの項」を参照してください。カスタム操作の場合、名前はカスタム・パネルIDと同じです。カスタム操作の詳細は、第19.3項「カスタム・プロパティ・パネルの作成」を参照してください。

- label(オプション): ポップアップ・ウィンドウにタブ・ラベルを設定します。デフォルト・ラベルは操作名です。

- filtered: ポップアップ・ウィンドウの操作を含むようにfalseに設定します。

注意:

最初に、少数のコンポーネントを選択し、次に機能がテストされ習得されるようにさらにコンポーネントを追加することをお薦めします。これは次の例に示すように、<global-filter>タグの選択をグローバルに無効にしてから、<selection-taglib-filter>を使用して個々のコンポーネントの選択を有効にすることによって、簡単に実行できます。

<selection-config>
<global-filter>
<selection view="design" enabled="false"/>
</global-filter>

<selection-taglib-filter
namespace="http://xmlns.oracle.com/adf/faces/customizable">
<tag name="showDetailFrame">
<selection view="design" enabled="true"/>
<operation name="oracle.adf.pageeditor.pane.sdfprop"
label="SDF Change Property"
filtered="false"/>
</tag>
</selection-taglib-filter>

<selection-taglib-filter namespace="http://xmlns.oracle.com/adf/faces/rich">
<tag name="goLink">
<selection view="design" enabled="true"/>
<operation name="oracle.adf.pageeditor.pane.generic-property-inspector"
label="Change Property"
filtered="false"/>
<operation name="oracle.adf.pageeditor.pane.inline-style-editor"
label="Inline Style"
filtered="false"/>
</tag>
<tag name="commandButton">
<selection view="design" enabled="true"/>
<operation name="oracle.adf.pageeditor.pane.generic-property-inspector"
label="Change Property"
filtered="false"/>
</tag>
</selection-taglib-filter>
</selection-config>

さらにユーザー経験を簡単にするため、直接選択によりユーザーは、よリ少数のセットが表示されるようにタグの特定の属性をフィルタできます。詳細は、第19.8.1項「プロパティ・フィルタの定義方法」を参照してください。

3. .jspxページ内の特定のコンポーネントの直接選択を有効化または無効化するには、次の例に示すように、コンポーネント・タグ内に<f:attribute name="pe-select" value="true|false">タグを追加します。このタグの設定は、pe_ext.xmlファイルのコンポーネントの<selection-config>の設定をオーバーライドします。(前述のように、直接選択を有効にするには、pe_ext.xmlファイルのコンポーネントに対する操作を定義する必要があります。定義しない場合、これを選択すると空のダイアログが開きます。)

<af:panelGroupLayout id="pgl2" layout="vertical">
<f:attribute name="pe-select" value="false"/>
<af:inputText id="it6" label="Unselectable" value="Enter here..."/>
<af:goLink id="gl1" destination="http://www.oracle.com" text="Oracle"/>
<af:inputText id="it7" label="Selectable(override)" value="Enter here...">
<f:attribute name="pe-select" value="true"/>
</af:inputText>
</af:panelGroupLayout>

4. フォーム・フィールドで式言語の使用を拒否して既存のELが上書きされないようにするには、第19.4.2項「式言語を保護する方法」を参照してください。

特定の要素の詳細は、付録B「コンポーザ・コンポーネントのプロパティおよびファイル」を参照してください。

- 第B.2.1.9項「selection-config」

- 第B.2.2.6項「enable-design-views」

- 第B.2.2.8項「allow-elとprotect-el」

19.11.2 実行時の処理

直接選択が有効になっている場合、実行時のページの外部に対する表示は、エンド・ユーザーに対する表示と同じです(図19-15)。

図19-15 「選択」ビュー

コンポーネントのプロパティを編集するには、ユーザーは有効な要素を選択し、「コンポーネントの編集」または「親コンポーネントの編集」(適用可能な場合)をクリックできます(図19-16)。

図19-16 要素の直接選択の有効化

「コンポーネント・プロパティ」ダイアログにより、ユーザーはコンポーネントに対して定義されたプロパティを編集し、コンポーネントに対して構成された他の操作にアクセスできます。ユーザーが「親コンポーネントの編集」を選択した場合、「子の管理」タブがダイアログに含まれています。ELが上書きが許可されないか、上書きから保護されない場合、図19-17で示すように、「式ビルダー」および「オーバーライド」オプションが使用できません。このイメージには編集から保護されるフィールドの例も含まれています(「コンポーネントの表示」)。

図19-17 「コンポーネント・プロパティ」ダイアログ

複数の操作がダイアログのタブに表示されます。タブの順序はパネル登録で定義されています。操作が囲んでいるコンポーネントに対して登録されていない場合、その操作のタブは表示されません。パネル登録の詳細は、第19.3項「カスタム・プロパティ・パネルの作成」を参照してください。

19.12 コンポーザの拡張性機能の問題のトラブルシューティング

この項では、コンポーザの拡張性機能を使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

ロギングの構成の詳細は、第18章「コンポーザを使用したページの実行時編集の有効化」を参照してください。

問題

アドオンを作成したが、コンポーザのツールバーに表示されません。

解決方法

次の点を確認してください。

- pe_ext.xmlファイルがアプリケーションまたはJARファイルの/META-INFフォルダにあり、クラス・パスで利用可能です。

- パネルをpe_ext.xmlで登録する際に指定したタスク・フロー・バインディングIDが的確です。

- <pe:addon-panel>エントリがadf-config.xmlファイルの<pe:page-editor-config>セクションの下に存在します。

- アドオンがJARファイルにある場合、JARファイルがADFライブラリとして作成されていることを確認してください。

アドオンの詳細は、第19.2項「コンポーザのアドオンの作成」を参照してください。

問題

カスタム・プロパティ・パネルを登録しました。ただし、プロパティを表示するコンポーネントを選択する際に、このパネルが「コンポーネント・プロパティ」ダイアログに表示されません。

解決方法

次の点を確認してください。

- pe_ext.xmlファイルがアプリケーションまたはJARファイルの/META-INFフォルダにあり、クラス・パスで利用可能です。

- パネルをpe_ext.xmlで登録する際に指定したタスク・フロー・バインディングIDが的確です。

- property-panelの登録が正しく、パネルを表示するコンポーネントに対して指定されています。さらに、コンポーネントの完全修飾クラス名がcomponentノードを使用して正しく指定されています。

- プロパティ・パネルの登録の重複によってパネル・エントリがオーバーライドされていません。

- レンダリングされた属性を使用するようにパネルが構成されている場合、値またはELがtrueに評価されています。

- アドオンがJARファイルにある場合、JARファイルがADFライブラリとして作成されていることを確認してください。

カスタム・プロパティ・パネルの詳細は、第19.3項「カスタム・プロパティ・パネルの作成」を参照してください。

問題

「コンポーネント・プロパティ」ダイアログでコンポーネントの一部のプロパティが表示されません。

解決方法

コンポーネント・プロパティがフィルタ処理されていないことおよび制限されていないことを確認します。詳細は、第19.8.1項「プロパティ・フィルタの定義方法」および第22.4項「属性レベルのセキュリティの適用」を参照してください。

20 コンポーザの拡張構成の実行

この章では、コンポーザの特定の拡張構成を実行し、エンド・ユーザーの操作性を向上する方法を説明します。

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

- 第20.1項「ファセットを使用したShow Detail Frameコンポーネントでのカスタム・アクションの有効化」

- 第20.2項「ファセットを使用したShow Detail Frameコンポーネントでのカスタム・アクションの有効化: 例」

- 第20.3項「タスク・フローでのカスタム・アクションの有効化」

- 第20.4項「コンポーネント・ナビゲータ内のタスク・フローに表示されるカスタム・アクションの有効化」

- 第20.5項「コンポーザにアクセスするためのキーボード・ショートカットの構成」

- 第20.6項「イベント対応のタスク・フローの作成」

- 第20.7項「「構造」ビューにデフォルトで表示するアプリケーション・ページの構成」

- 第20.8項「アプリケーションの「構造」ビューの無効化」

- 第20.9項「タスク・フローのズーム機能の無効化」

- 第20.10項「コンポーネントへのスタイルの適用」

- 第20.11項「永続性変更マネージャの構成」

- 第20.12項「実行時リソース文字列編集の構成」

- 第20.13項「コンポーザの拡張構成の問題のトラブルシューティング」

20.1 ファセットを使用したShow Detail Frameコンポーネントでのカスタム・アクションの有効化

Show Detail Frameコンポーネントのファセットを使用して、Show Detail Frameコンポーネントのカスタム・アクションを定義して表示できます。たとえば、アプリケーションが提供するサービスのリストがShow Detail Frameに含まれている場合、様々なサービスの詳細を含むタスク・フローを開くカスタム・アクション(Show Detailed Information)を追加できます。

Show Detail Frameコンポーネントがサポートしているファセットの詳細は、第B.1.5項「Show Detail Frameコンポーネント」を参照してください。

Oracle JDeveloperは、「構造」ウィンドウにShow Detail Frameコンポーネントで使用可能なすべてのファセットを表示しますが、UIコンポーネントを含むもののみがアクティブで表示されます。

Show Detail Frameファセットを追加するには、次の手順を実行します:

1. 「構造」ウィンドウでShow Detail Frameコンポーネントを右クリックし、「ファセット - 詳細フレームの表示」を選択して、このオプションの右側に表示される矢印をクリックします。

2. サポートされているファセットのリストから追加するファセットを選択します。

注意:

ファセット名の隣のチェック・マークは、ファセットがすでにShow Detail Frameコンポーネントに挿入されていることを意味します。そのファセット名を再度選択すると、このファセットはページから削除されます。

そのファセットのf:facet要素はページに挿入されます。

3. 設計要件に応じてファセットにコンポーネントを追加します。
Show Detail Frameファセットの作成と使用をエンド・ツー・エンドで示した例は、第20.2項「ファセットを使用したShow Detail Frameコンポーネントでのカスタム・アクションの有効化: 例」を参照してください。

20.2 ファセットを使用したShow Detail Frameコンポーネントでのカスタム・アクションの有効化: 例

Panel Customizableコンポーネントを備えたJSPXページ(Page1)があるとします。Panel Customizable内にShow Detail Frameコンポーネント(showDetailFrame1)があります。Show Detail Frame内にADFタスク・フローがあります。Panel Customizableには、他に2つのShow Detail Frameコンポーネントがあり、一方はshowDetailFrame1の上、他方は下にあります。タスク・フローは、2つのOutput Textコンポーネントをページに表示します。

Additional ActionsファセットをShow Detail Frameコンポーネントで構成して、「処理」メニューに「上へ移動」アクションと「下へ移動」アクションとともに「カスタマイズ」アクションを表示できます。実行時、「カスタマイズ」アクションを使用すると、ユーザーはOutput Textコンポーネントのテキストをカスタマイズできます。この項では、この結果を得るための手順を説明します。次のサブセクションが含まれます:

- 第20.2.1項「ADFタスク・フローの作成方法」

- 第20.2.2項「追加のアクション・ファセットを組み込む方法」

- 第20.2.3項「リダイレクト・ページの作成方法」

- 第20.2.4項「ページ間のナビゲーション・ルールの作成方法」

- 第20.2.5項「実行時の処理」

20.2.1 ADFタスク・フローの作成方法

ADFタスク・フローを作成するには:

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規」ダイアログで、「Web層」ノードの下の「JSF」を選択し、アイテムの下の「ADFタスク・フロー」を選択します。

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

4. 「タスク・フローの作成」ダイアログで「OK」をクリックし、デフォルト値を受け入れてタスク・フロー定義ファイルを作成します。

5. コンポーネント・パレットの「ADFタスク・フロー」タグ・ライブラリから、2つのビュー要素(view1とview2)をタスク・フロー定義ファイルにドロップします。

6. 「制御フロー・ケース」をview1からview2にドロップします。

7. 最初のビュー要素をクリックし、次に2番目のビュー要素をクリックして制御フロー・ラインを描きます。
この制御フロー・ケースにnextという名前を付けます。

8. 同様に、「制御フロー・ケース」をview2からview1にドロップして戻し、これにprevという名前を付けます。

9. BackingBean.javaというバッキングBeanを作成し、2つの変数view1とview2の値を含めます。
view1とview2は、それぞれinitialValue1とinitialValue2を使用して初期化されます。Beanのコードが、次の例に示すとおりであることを確認します。

package view;

public class BackingBean {
public BackingBean() {
}

private String view2 ="initial Value1";
private String view1 = "initial Value2";

public void setView2(String view2) {
this.view2 = view2;
}

public String getView2() {
return view2;
}

public void setView1(String view1) {
this.view1 = view1;
}

public String getView1() {
return view1;
}
}

10. タスク・フロー定義ファイルで、view1をダブルクリックし、その要素にページ・フラグメント(view1.jsff)を作成します。

11. Panel Group Layoutおよび2つのOutput Textコンポーネントをview1.jsffに追加します。

12. 最初のOutput TextコンポーネントのValueを#{backingBean.view1}に指定し、2番目のOutput TextコンポーネントのValueを#{backingBean.view2}に指定します。

13. view1.jsffを保存して閉じます。

14. タスク・フロー定義ファイルで、view2をダブルクリックし、その要素のページ・フラグメント(view2.jsff)を作成します。

15. Output Textコンポーネントを1つだけview2.jsffに追加し、Valueを#{backingBean.view2}に指定します。

16. view2.jsffを保存して閉じます。

20.2.2 追加のアクション・ファセットを組み込む方法

追加のアクション・ファセットを組み込むには:

1. Panel CustomizableコンポーネントおよびネストされたShow Detail Frameコンポーネントを備えているJSPXページ(Page1.jspx)を作成します。

2. さらに2つのShow Detail Frameコンポーネントを既存のShow Detail Frameコンポーネントの上下に追加します。
3つのShow Detail Frameコンポーネントを追加する目的は、「上へ移動」アクションと「下へ移動」アクションを最初のShow Detail Frameコンポーネント(showDetailFrame1)の追加アクションとともに表示できるようにすることです。

3. 前の手順で作成したタスク・フロー定義ファイルをshowDetailFrame1内に追加します。

4. 「構造」ウィンドウで最初のShow Detail Frameを右クリックし、「ファセット - 詳細フレームの表示」を選択します。

5. このオプションの右にある矢印をクリックし、サポートされているファセットのリストから「追加のアクション」を選択します。
そのファセットのf:facet-additionalActions要素はページに挿入されます。

6. Panel Group Layoutを「追加のアクション」ファセット内に追加し、ButtonコンポーネントをPanel Group Layoutコンポーネント内に追加します。

7. ButtonのText属性をCustomizeに設定し、customizeをAction値として指定します。
構造ナビゲータのページは図20-1に示すように表示されます。

図20-1 構造ナビゲータのPage1.jspx

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

20.2.3 リダイレクト・ページの作成方法

リダイレクト・ページを作成するには:

1. Page2.jspxというJSPXページを作成し、2つのInput Textコンポーネントおよび1つのButtonコンポーネントを追加します。

2. 最初のInput TextコンポーネントのValueを#{backingBean.view2}に指定し、2番目のInput TextコンポーネントのValue属性を#{backingBean.view1}に設定します。
バッキングBeanに関してInput Textコンポーネントを追加する目的は、ユーザーの入力をBeanに渡し、これがPage1.jspxのOutput Textコンポーネントで反映できるようにすることです。

3. Buttonコンポーネントで、Text属性をOKに設定し、backをAction値として指定します。

4. ページを保存します。
ナビゲーション・ルールを定義することによって2つのページ間を切り替えることができます。

20.2.4 ページ間のナビゲーション・ルールの作成方法

ページ間のナビゲーション・ルールを定義するには:

1. アプリケーション・ナビゲータのプロジェクトのWEB-INFフォルダの下で、faces-config.xmlファイルをダブルクリックしてこれを開きます。

2. 「概要」タブをクリックして、概要モードでファイルを表示します。

3. 「マネージドBean」セクションの「追加」アイコンをクリックします。

4. 「マネージドBeanの作成」ダイアログで、backingBeanを名前として指定します。

5. 「クラス名」フィールドで、その隣の「参照」ボタンをクリックし、前に作成したBackingBean Javaクラスを参照します。「OK」をクリックします。

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

7. 「有効範囲」リストで、「セッション」を選択し「OK」をクリックします。

8. ページ上の「ナビゲーション・ルール」タブを選択します。

9. 「ビュー(自)」表で、Page1.jspxを選択します。

10. 「ナビゲーション・ケース」の下で、「ビューID(至)」列でPage2.jspx、「結果(自)」列で「カスタマイズ」、「リダイレクト」列で「true」を選択します。

11. 「ビュー(自)」表で、Page2.jspxを選択します。

12. 「ナビゲーション・ケース」の下で、「ビューID(至)」列でPage1.jspx、「結果(自)」列で「戻る」、「リダイレクト」列で「true」を選択します。
「ソース」ビューで、これらのエントリが次のように表示されます。

<managed-bean>
<managed-bean-name>backingBean</managed-bean-name>
<managed-bean-class>view.BackingBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id>/Page1.jspx</from-view-id>
<navigation-case>
<from-outcome>customize</from-outcome>
<to-view-id>/Page2.jspx</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/Page2.jspx</from-view-id>
<navigation-case>
<from-outcome>back</from-outcome>
<to-view-id>/Page1.jspx</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>

13. ファイルを保存します。

20.2.5 実行時の処理

JDeveloperでPage1.jspxを実行します。図20-2に示すように、showDetailFrame1コンポーネントの「アクション」メニューに、「カスタマイズ」アクションが表示されます。

図20-2 「アクション」メニューの「カスタマイズ」アクション

「カスタマイズ」をクリックすると、Page2.jspx (図20-3)が表示され、ここでLabel1およびLabel2の値を更新できます。

図20-3 テキストを編集するオプションを備えたページ

「OK」をクリックするとPage1.jspxに戻り、最近のテキスト変更が反映されます。

20.3 タスク・フローでのカスタム・アクションの有効化

タスク・フローをShow Detail Frameコンポーネントに含めることによって、これをカスタマイズできます。Show Detail Frameコンポーネントには、コンポーネントを再配置、表示または非表示にする特定のデフォルトのアクションが用意されています。さらに、カスタム・アクションを定義して、実行時にタスク・フロー内で目的のナビゲーション・フローをトリガーできます。タスク・フローでカスタム・アクションを有効にできる方法は2つあります。

- カスタム・アクションがShow Detail Frameコンポーネントの「処理」メニューに表示されるように、タスク・フローでカスタム・アクションを直接有効にします。

- カスタム・アクションがShow Detail Frameコンポーネントの「処理」メニューに表示されるように、タスク・フローを囲んでいるShow Detail Frameコンポーネントでカスタム・アクションを有効にします。

この項では、両方のアプローチについて説明します。次のサブセクションが含まれます:

- 第20.3.1項「タスク・フローでカスタム・アクションを直接有効にする方法」

- 第20.3.2項「タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法」

- 第20.3.3項「実行時の処理」

- 第20.3.4項「タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法: 例」

20.3.1 タスク・フローでカスタム・アクションを直接有効にする方法

タスク・フローを自己完結にし、アプリケーション・レベルで定義されたグローバル・カスタム・アクションを継承する必要がない場合、この項の手順を実行します。ネストされた<customActions>要素を持つ<customComps-config>セクションをadf-settings.xmlファイルで構成することによって、タスク・フローでカスタム・アクションを定義できます。adf-settings.xmlファイルで指定された追加カスタム・アクションは、このタスク・フローを囲むShow Detail Frameコンポーネントに表示されます。

通常、タスク・フローはパッケージ化されADFライブラリとしてデプロイされます。タスク・フローのカスタム・アクションを含むadf-settings.xmlファイルを作成すると、このファイルもADFライブラリでパッケージ化されます。

タスク・フローでカスタム・アクションを有効にするには:

1. adf-settings.xmlファイルが存在していない場合、このファイルをプロジェクトのWebコンテキスト・ルート(たとえば、APPLICATION_ROOT/Portal/src/META-INFディレクトリ)の下のMETA-INFディレクトリに作成します。

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を展開し、「XML」、「XML文書」の順に選択します。

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

ファイルにadf-settings.xmlという名前を付けます。

2. ファイルで<custComps-config>セクションをネストされた<customActions>要素とともに追加します。

3. Show Detail Frameの「処理」メニューにカスタム・アクションとして表示する内部タスク・フローのアクションそれぞれに<customAction>要素を1つ追加します。
<customActions>要素の下に任意の数のカスタム・アクションを追加できます。

例20-1に、<customAction>エントリを備えたadf-settings.xmlファイルのコードを示します。

例20-1 adf-settings.xmlファイルのcustComps-configセクション

<cust:custComps-config xmlns="http://xmlns.oracle.com/adf/faces/customizable/config">
<customActions>
<customAction action="next" location="chrome"
rendered="true"
icon="/adf/webcenter/editheader_ena.png"
text="Next"
taskFlowId="/WEB-INF/task-flow-definition.xml#task-flow-definition"
shortDesc="next"/>
<customAction action="prev" location="chrome"
rendered="true"
icon="/adf/webcenter/editheader_ena.png"
text="Previous"
taskFlowId="/WEB-INF/task-flow-definition.xml#task-flow-definition"
shortDesc="prev"/>
</customActions>
</cust:custComps-config>

カスタム・アクションの定義は、タスク・フロー・レベルの設定で使用するtaskFlowId属性を除いて、タスク・フロー・レベルとアプリケーション・レベルで似ています。この属性は、カスタム・アクションを定義する必要があるタスク・フローを識別するために使用されます。ADFライブラリには複数のタスク・フローが存在する場合があるため、カスタム・アクションをレンダリングする必要があるタスク・フローを識別する際にこの属性は役に立ちます。

注意:

- カスタム・アクションのアイコンを定義する場合、指定するイメージがプロジェクト・ルート・フォルダで利用できることを確認する必要があります。

- ページのすべてのタスク・フローで定義された内部アクションのカスタム・アクションを定義できますが、実行時、Show Detail Frameは、タスク・フローの現在のビューのADFc結果に対応するカスタム・アクションのみを表示します。

4. adf-settings.xmlファイルを保存します。

20.3.2 タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法

囲んでいるShow Detail Frameコンポーネントでタスク・フローのカスタム・アクションを定義できます。これらのアクションが実行時に起動されると、タスク・フローで目的のナビゲーション・フローがトリガーされます。たとえば、ターゲットのタスク・フロー・フラグメントがShow Detail Frame内ではなく別個のブラウザ・ウィンドウで開くことを指定するShow Detail Frameでカスタム・アクションを定義できます。

Custom ActionコンポーネントをページのShow Detail Frameコンポーネントの子として追加することによって、Show Detail Frameコンポーネントでカスタム・アクションを指定できます。この方法で定義されたカスタム・アクションは、このカスタム・アクションを子として持っているShow Detail Frameインスタンスでのみ使用できます。または、アプリケーションのadf-config.xmlファイルでカスタム・アクションを指定できます。この方法で定義されたカスタム・アクションは、アプリケーションのすべてのShow Detail Frameインスタンスで使用できます。

この項では、Show Detail Frameでのカスタム・アクションの定義について説明します。次のサブセクションが含まれます:

- 第20.3.2.1項「インスタンス・レベルでのカスタム・アクションの定義」

- 第20.3.2.2項「グローバル・レベルでのカスタム・アクションの定義」

- 第20.3.2.3項「別個のブラウザ・ウィンドウにタスク・フロー・ビューを表示するカスタム・アクションの構成」

20.3.2.1 インスタンス・レベルでのカスタム・アクションの定義

Custom Actionコンポーネントを使用して特定のShow Detail Frameコンポーネントのインスタンスでカスタム・アクションを定義します。Custom Actionコンポーネントはコンポーザ・タグ・ライブラリにあります。カスタム・アクションは、Show Detail Frameを含むページのJSPXページ定義ファイルに格納されます。

インスタンス・レベルでカスタム・アクションを定義するには:

1. コンポーネント・パレットで、「コンポーザ」を選択します。

2. Custom Actionをドラッグし、これをShow Detail Frameコンポーネント内のページ上でaf:region要素の下にドロップします。
Show Detail Frameの「処理」メニューにカスタム・アクションとして表示する内部タスク・フローのアクションそれぞれにCustom Actionコンポーネントを1つ追加します。

注意:

Custom Actionコンポーネントをaf:region要素の下に追加します。リージョンがShow Detail Frameの最初の子コンポーネントでない場合、問題が発生する場合があります。

3. 第B.1項「コンポーザ・コンポーネントのプロパティ」の表B-9を参照してCustom Actionの属性を定義します。
各Custom Actionのaction属性には、関連するタスク・フローの適切なADFcの結果を移入してください。コードは、例20-2に示すようになります。

例20-2 カスタム・アクションのコード

<cust:showDetailFrame text="showDetailFrame 1" id="sdf1">
<af:region value="#{bindings.taskflowdefinition1.regionModel}"
id="r1"/>
<cust:customAction action="navigatefromview1" id="ca1"
location="both" icon="/Logo1.JPG"
text="View1 Action"
shortDesc="Custom View1 Action"/>
<cust:customAction action="navigatefromview2"
location="both" id="ca2"
icon="/Logo2.JPG" text="View2 Action"
shortDesc="Custom View2 Action"/>
</cust:showDetailFrame>

注意:

タスク・フローのADFc結果のすべてに対してカスタム・アクションを追加できますが、表示するタスク・フローのビューに応じて、いくつかのカスタム・アクションを実行時に使用できるか、どのカスタム・アクションも使用できません。

対応するタスク・フローのアクションなしでカスタム・アクションを定義すると、そのカスタム・アクションは実行時にShow Detail Frameヘッダーにレンダリングされません。

関連項目:

『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のタスク・フローの作成に関する項

4. 保存してページを実行します。

実行時、Show Detail Frameの「処理」メニューから処理を選択すると、関連する制御フロー・ルールがトリガーされ、ターゲットのタスク・フロー・フラグメントがレンダリングされます。

20.3.2.2 グローバル・レベルでのカスタム・アクションの定義

グローバル・レベルでカスタム・アクションを定義することは、そのカスタム・アクションをアプリケーションのすべてのShow Detail Frameインスタンスで使用可能にすることを意味します。グローバル・レベルのカスタム・アクションはアプリケーションのすべてのShow Detail Frameコンポーネントで使用可能ですが、実行時にShow Detail Frameのヘッダーにはタスク・フローの現在のビューのADFc結果に対応するカスタム・アクションのみが表示されます。

グローバル・レベルのカスタム・アクションは、アプリケーションのadf-config.xmlファイルで定義します。

グローバル・レベルでカスタム・アクションを定義するには:

1. アプリケーションのadf-config.xmlファイルを開きます。これは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダにあります。

2. 例20-3に示すように、各アクションに対してネストされた<customAction>タグを備えた<customActions>要素を使用してカスタム・アクションを定義します。

ヒント:

ページ編集モードにのみカスタム・アクションをレンダリングするために、<customAction>タグのrendered属性を#{composerContext.inEditMode}に設定できます。こうすると、ページが編集モードの場合にtrueの値が返されます。

例20-3 adf-config.xmlファイルのカスタム・アクション定義

<cust:adf-config-child xmlns="http://xmlns.oracle.com/adf/faces/customizable/config">
<enableSecurity value="true" />
<customActions>
<cust:customAction action="forward" displayName="Move Forward"
location="menu" rendered="true"
icon="/move_forward.png"/>
<cust:customAction action="backward" tooltip="Move Backward"
location="chrome" rendered="true"
icon="/move_backward.png"/>
</customActions>
</cust:adf-config-child>

注意:

- 第22.5項「Panel CustomizableおよびShow Detailコンポーネント・アクションでのアクション・レベルの制限の適用」の手順を実行してShow Detail Frameコンポーネントのアクションに制限を実装した場合、cust:customizableComponentsSecurityセクションはすでにadf-config.xmlファイルにあります。例20-3に示すcust:adf-config-childセクションではなく前述のセクション自体でカスタム・アクションを定義できます。

- カスタム・アクションのアイコンを定義する場合、指定するイメージがプロジェクト・ルート・フォルダで利用できることを確認する必要があります。

- ページのすべてのタスク・フローで定義された内部アクションのカスタム・アクションを定義できますが、実行時、Show Detail Frameのヘッダーは、タスク・フローの現在のビューのADFc結果に対応するカスタム・アクションのみを表示します。

3. adf-config.xmlファイルを保存します。

カスタム・アクションの定義の詳細は、第20.3.4項「タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法: 例」を参照してください。

グローバル・レベルのカスタム・アクションとインスタンス・レベルのカスタム・アクションの間の競合の解決

各カスタム・アクションは、そのaction属性の値によって一意に識別されます。グローバル・レベルとインスタンス・レベルで同じaction属性値を持つカスタム・アクションを定義した場合、他の属性値に応じて実行時にこれらのカスタム・アクションがどのように起動されるか関して競合が発生する場合があります。このような場合、Show Detail FrameのinheritGlobalActions属性が他のカスタム・アクション属性(action属性以外)の動作を次のように定義します。

注意:

Show Detail FrameコンポーネントのinheritGlobalActions設定(trueまたはfalse)に関係なく次のようになります。

- rendered属性は、インスタンス・レベルで指定されていなくても継承されません。

- グローバル・レベルまたはインスタンス・レベルのlocation属性は、グローバル・レベルとインスタンス・レベルの両方で同じ値に設定する必要があります。

- inheritGlobalActions=trueまたはinheritGlobalActions(デフォルトはfalse)の値を指定しなかった場合、カスタム・アクション属性の動作は次のようになります。

- グローバル・レベルとインスタンス・レベルでカスタム・アクション属性を定義した場合、インスタンス・レベルで指定した属性値が使用されます。

- カスタム・アクション属性をインスタンス・レベルでのみ定義した場合、その属性値が使用されます。

- カスタム・アクション属性をグローバル・レベルでのみ定義した場合、その値は無視され、デフォルト値が使用されます。

- inheritGlobalActions=trueの場合、カスタム・アクション属性の動作は次のようになります。

- カスタム・アクション属性をインスタンス・レベルで定義した場合、同じ属性がグローバル・レベルで指定されているかどうかにかかわらず、その値が使用されます。

- カスタム・アクション属性をグローバル・レベルでのみ定義した場合、その値が使用されます。

- カスタム・アクション属性をグローバル・レベルでもインスタンス・レベルでも定義しなかった場合、属性のデフォルト値が使用されます。

アプリケーション・ページを設計した後、アプリケーションを本番環境にデプロイする必要があります。詳細は、第7章「Portal Frameworkアプリケーションのデプロイおよびテスト」を参照してください。

注意:

開発環境のページで実行する実行時カスタマイズは、アプリケーションをターゲット・サーバーにデプロイするときに引き継がれません。

20.3.2.3 別個のブラウザ・ウィンドウにタスク・フロー・ビューを表示するカスタム・アクションの構成

カスタム・アクションは通常、ターゲットのタスク・フロー・ビューをShow Detail Frameコンポーネント内の所定の場所に表示します。ただし、カスタム・アクションを定義して、別個のブラウザ・ウィンドウにタスク・フロー・ビューを表示できます。

別個のブラウザ・ウィンドウにタスク・フロー・ビューを表示するには、そのビューに対応するカスタム・アクションのタスク・フロー定義ファイルおよびaction属性において、そのビューの制御フロー・ルールに接頭辞dialog:を付ける必要があります。次の例にaction属性の定義を示します。

<cust:customAction action="dialog:Next" id="ca1"
location="both" icon="/move_forward.png"
text="Next Action"
shortDesc="Next Action"/>

ポップアップ・ウィンドウでのプロパティの設定

タスク・フロー・リージョン内のコマンド・コンポーネントに対して、useWindow、windowEmbedStyle、windowHeight、windowWidthおよびreturnListenerの各属性を使用して、デフォルトの動作を指定できます。コマンド・コンポーネントは、使用できるこのような属性が他にも存在する場合があります。戻りリスナーを指定した場合、ダイアログを閉じるときに特定アクション・イベントがコールされ、次のナビゲーションの結果が決定されます。デフォルトでは、この設定がないと、ダミーのRich Command Linkコンポーネントが作成され、タスク・フロー・アクションをトリガーします。

コマンド・コンポーネントでリスナーを定義する場合、カスタム・アクションを構成してこのコンポーネントのアクション・イベントをコールする必要もあります。カスタム・アクション定義(グローバル・レベルとインスタンス・レベル)のactionComponent属性では、アクション・イベントのキューに入る必要があるコマンド・コンポーネントのIDを指定できます。actionComponent属性が指定された場合、Show Detail Frameコンポーネントは、このコンポーネントのアクション・イベントをキューに入れます。このコマンド・コンポーネントはタスク・フロー内部にあるため、いつでもその属性値を変更できます。

例

タスク・フローをShow Detail Frameコンポーネント内に含め、このタスク・フローのナビゲーションの結果に対応するSimple Editカスタム・アクションを定義した例について考えてみます。タスク・フロー内のCommand Buttonコンポーネントは、Simple Editカスタム・アクションをクリックすると300x200のサイズのモード付きインライン・ポップアップを起動するように構成されています。戻りリスナーは、ポップアップが閉じると必ずコールされるようにコマンド・コンポーネントで構成されています。

リージョン内のCommand Buttonコンポーネントのソース・コードは次のとおりです。

<af:commandButton text="dialog:simpleEditPoup"
id="SDFCustomActionCmd_simpleEditPoup"
action="dialog:simpleEditPoup" useWindow="true"
windowEmbedStyle="inlineDocument" windowWidth="300"
windowHeight="200"
windowModalityType="applicationModal"
returnListener="#{pageFlowScope.recentPagesBean.refreshMainView}"
visible="false"/>

例20-4に、adf-config.xmlファイルでカスタム・アクションを定義して、タスク・フローの結果に対応するグローバル・カスタム・アクションを指定する方法を示します。Command ButtonコンポーネントのIDは、カスタム・アクションのactionComponent属性に対して指定されます。

例20-4 adf-config.xmlファイルで定義されたグローバル・カスタム・アクション

<customizableComponentsSecurity xmlns="http://xmlns.oracle.com/adf/faces/customizable/config">
<enableSecurity value="true"/>
<customActions>
<customAction action="dialog:simpleEditPoup"
text="Simple Edit"
shortDesc="Simple Edit"
location="menu"
rendered="#{!changeModeBean.inEditMode}"
icon="/adf/pe/images/editproperties_ena.png"
actionComponent="SDFCustomActionCmd_simpleEditPoup"/>
</customActions>
</customizableComponentsSecurity>

例20-5に、コンポーザ・タグ・ライブラリからJSPXページにCustom Actionコンポーネントを追加して、タスク・フローの結果に対応するインスタンス・レベルのカスタム・アクションを指定する方法を示します。Command ButtonコンポーネントのIDは、カスタム・アクションのactionComponent属性に対して指定されます。

例20-5 JSPXページで定義されたインスタンス・レベルのカスタム・アクション

<cust:showDetailFrame id="sdf_for_RecentPagesTF1"
text="Recent Pages" stretchContent="false"
showResizer="never">
<af:region id="RecentPagesTF1"
value="#{bindings.regionBinding1.regionModel}"/>
<cust:customAction action="dialog:simpleEditPoup"
text="My Simple Edit"
shortDesc="Simple Edit"
location="menu"
rendered="#{!changeModeBean.inEditMode}"
icon="/adf/pe/images/editproperties_ena.png"
actionComponent="SDFCustomActionCmd_simpleEditPoup"/>
</cust:showDetailFrame>

注意:

ポップアップ・ダイアログで起動されるカスタム・アクションは、新しいリクエストとしてサーバーに送信されます。コンポーザのサンドボックスを使用していて、ページ編集モードで操作している場合、このリクエストはコードをサーブレット・フィルタに追加することによって表示モードで起動され、新しいサンドボックスはこのページで作成されません。

20.3.3 実行時の処理

adf-settings.xmlファイルで構成したカスタム・アクションは、adf-config.xmlファイルで構成したカスタム・アクションとマージされ、選択したタスク・フローの現在のビューと関係のあるすべてのアクションが親のShow Detail Frameコンポーネントの「処理」メニューに表示されます。

グローバル・レベルでカスタム・アクションを有効にした場合、これらのカスタム・アクションが子のタスク・フローの現在のビューのナビゲーション結果に対応する場合、Show Detail Frameのヘッダーにこれらのカスタム・アクションが表示されます。

action属性値に接頭辞dialog:を付けると、タスク・フローのターゲット・ビューが別個のブラウザ・ウィンドウに開きます。

20.3.4 タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法: 例

この例では、アプリケーションにタスク・フロー(customactions)が含まれていて、Show Detail Frame内にあるものとします。このタスク・フローには、3つのビュー要素(view_gadget、edit_settingsおよびabout_gadget)と3つの関連制御フロー・ルール(ViewGadget、EditSettingsおよびAboutGadget)が含まれています。目的は、カスタム・アクションを定義して、制御フロー・ルールをShow Detail Frameコンポーネントの「処理」メニューのアクションとして使用できるようにすることです。

この例では、制御フロー・ルールは、ユーザーが3つのビュー間をナビゲートして行き来できるように追加されています。各ビュー要素には、同じ名前の関連ページ・フラグメントがあります。

- view_gadget.jsffフラグメントには、Panel Stretch Layoutコンポーネントがあります。このコンポーネントのcenterファセットには、Value属性がView Gadgetに設定されているActive Output Textコンポーネントが移入されます。

- edit_settings.jsffフラグメントには、Panel Stretch Layoutコンポーネントがあります。このコンポーネントのcenterファセットには、Value属性がEdit Gadget Settingsに設定されているActive Output Textコンポーネントが移入されます。

- about_gadget.jsffフラグメントには、Panel Stretch Layoutコンポーネントがあります。このコンポーネントのcenterファセットには、Value属性がAbout This Gadgetに設定されているActive Output Textコンポーネントが移入されます。

タスク・フローでカスタム・アクションを有効にするには:

1. customactionsタスク・フローをカスタマイズ可能ページ(MyPage.jspx)のShow Detail Frameコンポーネント内に配置します。
カスタマイズ可能ページの作成の詳細は、第18.1.1項「カスタマイズ可能ページの作成方法」を参照してください。

2. Custom Actionコンポーネントをコンポーザ・タグ・ライブラリからShow Detail Frameコンポーネントの子として追加し、Action属性およびText属性をそれぞれViewGadgetおよびView Gadgetに設定します。

3. さらに2つのCustom ActionコンポーネントをShow Detail Frameに追加します。

- 最初のコンポーネントのAction属性およびText属性をそれぞれEditSettingsおよびEdit Settingsに設定します。

- 2番目のコンポーネントのAction属性およびText属性をそれぞれAboutGadgetおよびAbout Gadgetに設定します。

4. MyPage.jspxを保存して実行します。
view_gadgetページ・フラグメントは、ページの(My Gadgetという名前の)Show Detail Frameコンポーネントにレンダリングされます。「処理」メニューには、「About Gadget」オプションおよび「Edit Settings」オプションが表示されます。「About Gadget」をクリックして、about_gadgetフラグメントにナビゲートします。「処理」メニューには他の2つのフラグメントのナビゲーション・ルールが表示されることに注意してください(図20-4)。

図20-4 タスク・フローを囲んでいるShow Detail Frameのカスタム・アクション

この実際の動作を確認するには、Oracle Technology Network (OTN)のOracle WebCenter Suite 11gのデモとサンプルのページにある、Composer Custom Actionsサンプル・アプリケーションComposerCustomActions.jwsをご覧ください。

20.4 コンポーネント・ナビゲータ内のタスク・フローに表示されるカスタム・アクションの有効化

コンポーザの「構造」ビューのコンポーネント・ナビゲータには、図20-5に示すように、タスク・フローにズーム・インし、そのページまたはフラグメントのコンポーネントを表示するオプションが用意されています。

図20-5 タスク・フロー・インスタンスの編集処理

ユーザーは、ズーム・インし、ページまたはフラグメントを編集し、タスク・フローからズーム・アウトしてそのタスク・フローを含むページにナビゲートして戻ることができます。タスク・フロー名の隣に表示される「タスク・フローの編集」リンクおよび「閉じる」リンクに加えて、図20-6に示すように、タスク・フロー名の隣にカスタム・アクションも表示するようにアプリケーションを構成できます。

図20-6 タスク・フロー・インスタンスのカスタム・アクション

この項では、コンポーネント・ナビゲータでタスク・フローのカスタム・アクションを有効にする手順を説明します。次の項が含まれます:

- 第20.4.1項「コンポーネント・ナビゲータでカスタム・アクションを構成する方法」

- 第20.4.2項「実行時の処理」

20.4.1 コンポーネント・ナビゲータでカスタム・アクションを構成する方法

コンポーネント・ナビゲータでタスク・フローに対するカスタム・アクションを表示するには、カスタム・アクションの動作を定義するJava Beanを作成し、このBeanをタスク・フローを含むアプリケーション・ページからコールする必要があります。この項では、これを行う手順を詳細に説明します。次のサブセクションが含まれます:

- 第20.4.1.1項「カスタム・アクションのロジックの定義」

- 第20.4.1.2項「カスタム・アクションを含むJSPXページの作成」

- 第20.4.1.3項「タスク・フローを含むアプリケーション・ページからのJSPXページのコール」

20.4.1.1 カスタム・アクションのロジックの定義

まず、ユーザーに提供するカスタム・アクションを決定し、ユーザーがそのカスタム・アクションを選択したときに実装されるロジックを含むJava Beanを作成する必要があります。この項では、カスタム・アクションをクリックするとユーザーにメッセージを表示する単純なロジックを実装する手順を説明します。サンプルのBeanには、カスタム・リンクとともに「閉じる」リンクと「タスク・フローの編集」リンクを表示するコードも含まれています。

Java Beanを作成するには:

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を開き、「Java」、「Javaクラス」の順に選択して、「OK」をクリックします。

3. 「Javaクラスの作成」ダイアログで、「名前」フィールドにBackingBeanと入力し、「OK」をクリックします。
「ソース」ビューにBackingBean.javaファイルが表示されます。

4. 次のように必要なライブラリをインポートします。

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import oracle.adf.view.page.editor.sourceview.ComponentInfo;

5. 次のコードを追加します。

public class BackingBean {
public BackingBean() {
}

public void action(ActionEvent actionEvent) {
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_INFO, "Sample message to test whether the custom action works.",
null));
}

public boolean isRendered() {
return ComponentInfo.isRegion();
}

public String getZoomText() {
return ComponentInfo.isRootNode() ? "Close" : "Edit Task Flow";
}
}

このロジックでは、ユーザーがタスク・フロー・リージョンに対するカスタム・アクション・リンクをクリックすると、定義したサンプル・メッセージが表示されます。

isRegion() APIを使用して、カスタム・アクション・リンクがページのタスク・フロー・リージョンに対してのみ表示されていることを確認します。isRootNode() APIを使用して、「タスク・フローの編集」リンクまたは「閉じる」リンクがタスク・フローのルート・コンポーネントに対して表示されていることを確認します。

6. Beanを保存します。

20.4.1.2 カスタム・アクションを含むJSPXページの作成

この項では、コンポーザでユーザーに表示するカスタム・アクションを含むJSPXページを作成する手順を説明します。

JSPXページを作成するには:

1. アプリケーション・プロジェクトで、customList.jspxというJSPXファイルを作成します。

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「Web層」を展開し、「JSF」、「JSFページ」の順に選択します。

3. ページの名前を入力し、「OK」をクリックします。

2. 次のサンプル・ページに示すように、Output Text、Command Linkなどのコンポーネントを使用してカスタム・アクションUIを設計します。

<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<jsp:directive.page contentType="text/html;charset=UTF-8"/>
<af:componentDef var="attrs" componentVar="component">
<af:panelGroupLayout id="dc_pgl1" rendered="#{backingBean.rendered}">
<af:outputText value="[" id="dc_ot1"/>
<af:commandLink text="Test" id="dc_cl1"
actionListener="#{backingBean.action}"
binding="#{backingBean.customLink}"/>
<af:outputText value="]" id="dc_ot2"/>
</af:panelGroupLayout>
</af:componentDef>
</jsp:root>

このサンプルでは、Testというカスタム・アクションを作成します。このアクションのactionListener属性およびbinding属性は、前に作成したBackingBeanにバインドされます。

3. デフォルトの「タスク・フローの編集」オプションおよび「閉じる」オプションもタスク・フローの隣に表示するには、次の例に示すように、zoomというファセットを定義する必要があります。

<af:xmlContent>
<component xmlns="http://xmlns.oracle.com/adf/faces/rich/component">
<facet>
<facet-name>zoom</facet-name>
</facet>
</component>
</af:xmlContent>

4. 次の例に示すように、ページ・コンテンツにzoomファセットを含めます。

<af:outputText value="[" id="dc_ot3"/>
<af:facetRef facetName="zoom"/>
<af:outputText value="]" id="dc_ot4"/>

customLink.jspxページのソースは次のとおりです。

<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<jsp:directive.page contentType="text/html;charset=UTF-8"/>
<af:componentDef var="attrs" componentVar="component">
<af:panelGroupLayout id="dc_pgl1" rendered="#{backingBean.rendered}">
<af:outputText value="[" id="dc_ot1"/>
<af:commandLink text="Test" id="dc_cl1"
actionListener="#{backingBean.action}"
binding="#{backingBean.customLink}"/>
<af:outputText value="]" id="dc_ot2"/>
<af:outputText value="[" id="dc_ot3"/>
<af:facetRef facetName="zoom"/>
<af:outputText value="]" id="dc_ot4"/>
</af:panelGroupLayout>
<af:xmlContent>
<component xmlns="http://xmlns.oracle.com/adf/faces/rich/component">
<facet>
<facet-name>zoom</facet-name>
</facet>
</component>
</af:xmlContent>
</af:componentDef>
</jsp:root>

5. JSPXページを保存します。

20.4.1.3 タスク・フローを含むアプリケーション・ページからのJSPXページのコール

タスク・フローを含む単純なJSPXページ(MyPage.jspx)があるとします。ページのソースを次の例に示します。

<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:pe="http://xmlns.oracle.com/adf/pageeditor"
xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable">
<jsp:directive.page contentType="text/html;charset=UTF-8"/>
<f:view>
<af:document id="d1">
<af:form id="f1">
<af:panelStretchLayout topHeight="50px" id="psl1">
<f:facet name="top">
<pe:changeModeLink id="cml1"/>
</f:facet>
<f:facet name="center">
<!-- id="af_one_column_header_stretched"  -->
<pe:pageCustomizable id="pageCustomizable1">
<cust:panelCustomizable id="panelCustomizable1" layout="scroll">
<af:region value="#{bindings.taskflowdefinition1.regionModel}"
id="r1"/>
</cust:panelCustomizable>
<f:facet name="editor">
<pe:pageEditorPanel id="pep1"/>
</f:facet>
</pe:pageCustomizable>
</f:facet>
</af:panelStretchLayout>
</af:form>
</af:document>
</f:view>
</jsp:root>

タスク・フロー(taskflowdefinition1)には、次のview.jsffフラグメントが含まれています。

<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<af:panelGroupLayout layout="scroll" id="pgl1">
<af:commandButton text="commandButton 1" id="cb1"/>
<af:commandButton text="commandButton 2" id="cb2"/>
</af:panelGroupLayout>
</jsp:root>

作成したカスタム・アクションを表示するには、コンポーザ内からcustomLink.jspxページがコールされるようにする必要があります。Page CustomizableコンポーネントのsourceViewNodeAction属性を使用して、このカスタム・アクションを含むJSPXページを参照します。

Page Customizableタグが、ページ・ソースに次のように表示されます。

<pe:pageCustomizable id="pageCustomizable1"
sourceViewNodeAction="/customLink.jspx">

sourceViewNodeAction属性は、JSPXファイルの名前、またはJSPXファイル名として評価されるEL値を取ることができます。

20.4.2 実行時の処理

ブラウザに対してMyPage.jspxを実行し、コンポーザの「構造」ビューでページを開くと、コンポーネント・ナビゲータは、ページの各タスク・フロー・インスタンスの隣に「テスト」リンクおよび「タスク・フローの編集」リンクを表示します。

20.5 コンポーザにアクセスするためのキーボード・ショートカットの構成

通常、ユーザーは、ページで「編集」リンクまたはボタンをクリックしてページ編集モードに入ります。アプリケーションを構成して、キーボード・ショートカットを使用してページ編集モードにユーザーが入ることができるようにできます。さらに、アプリケーションを構成して、ショートカット・キーを使用して他のイベントを実行できます。この項では、コンポーザに対してキーボード・ショートカットを有効にして、そのショートカット・キーのイベント・ハンドラを構成する方法を説明します。次のサブセクションが含まれます:

- 第20.5.1項「編集モードへのリンクなしのエントリを有効にする方法」

- 第20.5.2項「ショートカット・キーのイベント・ハンドラの構成方法」

- 第20.5.3項「実行時の処理」

20.5.1 編集モードへのリンクなしのエントリを有効にする方法

<pe:mode-switch-key>要素をアプリケーションのadf-config.xmlファイルに追加することによって、ページ編集モードへのリンクなしのエントリを構成できます。<pe:mode-switch-key>要素を設定するときに構成されたデフォルトのキーボード・ショートカットは[Ctrl]+[Shift]+[E]です。ユーザーはこのキー・シーケンスを使用して、ページの表示モードと編集モードを切り替えられます。ただし、<pe:key-sequence>プロパティを追加することによって選択したキーを構成できます。

<pe:mode-switch-key>プロパティを追加するには:

1. アプリケーションのadf-config.xmlファイルを開きます。これは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダにあります。

2. 例20-6に示すように、<pe:mode-switch-key>プロパティを追加し、その値をtrueに設定します。この例は、ショートカット値がCtrl+Eである<pe:key-sequence>プロパティを示します。

例20-6 リンクなしの編集モード・エントリの有効化

<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
<pe:mode-switch-key>
<pe:enabled>true</pe:enabled>
<pe:key-sequence>ctrl E</pe:key-sequence>
</pe:mode-switch-key>
. . .
</pe:page-editor-config>

3. ファイルを保存します。

20.5.2 ショートカット・キーのイベント・ハンドラの構成方法

次の例に示すように、<pe:mode-switch-handler>要素を使用して、ショートカット・キーを使用したときにトリガーされる必要があるイベントを指定します。

<pe:mode-switch-key>
<pe:enabled>true</pe:enabled>
<pe:mode-switch-handler>#{PageEditorBean.handleModeSwitch}</pe:mode-switch-handler>
</pe:mode-switch-key>

ここで、次のサンプルで示すように、handleModeSwitchはModeChangeEventメソッドを使用し、2つのモード間を切り替えるロジックを提供します。

public void handleModeSwitch(ModeChangeEvent editMode)
{
// Your implementation to handle mode change goes here
}

20.5.3 実行時の処理

ユーザーは、構成したショートカットを使用してアプリケーション・ページにアクセスし、編集モードに入れます。

20.6 イベント対応のタスク・フローの作成

コンポーザには、タスク・フローのイベントをコンテキストに即して関連付ける方法が用意されています。コンテキスト・イベントをアクション・ハンドラと関連付け、プロデューサでイベントがトリガーされたときにプロデューサ・コンポーネントからコンシューマ・コンポーネントに値を渡すことができます。

実行時に使用可能なイベントの場合、設計時にイベント機能をタスク・フローに組み込む必要があります。イベント対応のタスク・フローをカスタマイズ可能ページに追加すると、各タスク・フローの「コンポーネント・プロパティ」ダイアログに「イベント」タブが組み込まれ、ここで関連付けアクティビティの多くが行われます。イベント機能の組込みの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のコンテキスト・イベントの作成に関する項を参照してください。

20.7 「構造」ビューにデフォルトで表示するアプリケーション・ページの構成

ページで「編集」ボタンまたはリンクをクリックしてユーザーがコンポーザを起動すると、ページはデフォルトでは「コンテンツの追加」ビューまたは「デザイン」ビューで開きます。ビジネスで必要な場合、デフォルトでコンポーザの「構造」ビューで表示するようにアプリケーション・ページを構成できます。

20.7.1 「構造」ビューにデフォルトで表示するアプリケーション・ページを構成する方法

Page CustomizableコンポーネントのEdit Mode view属性を使用して、編集モードのデフォルトのページ・ビューを指定できます。

「構造」ビューにデフォルトでページを開くには:

1. JDeveloperでJSPXページを開きます。

2. 構造ナビゲータでPage Customizableコンポーネントを選択します。

3. プロパティ・インスペクタで、Edit Mode View属性のドロップダウン・リストをクリックして、「ソース」を選択します。

注意:

選択したユーザーのみ「構造」ビューでページを開くために、Edit Mode View属性にEL値を指定できます。

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

「構造」ビューの位置とサイズの設定

デフォルトでは、「構造」ビューのコンポーネント・ナビゲータは、ページの右側に表示され、そのデフォルトの幅は200ピクセルです。Page CustomizableコンポーネントでsourceViewPosition属性およびsourceViewSize属性をそれぞれ使用して、コンポーネント・ナビゲータに対して別の位置またはサイズを指定できます。これらの属性の詳細は、第B.1.1項「Page Customizableコンポーネント」を参照してください。

20.7.2 実行時の処理

ユーザーが「編集」リンクまたはボタンをクリックすると、コンポーザは「構造」ビューでページを開きます。

20.8 アプリケーションの「構造」ビューの無効化

デフォルトでは、コンポーザ対応ページで「構造」ビューは有効になっています。タスク・フロー、ポートレットおよびレイアウトの各コンポーネントを除くページ・コンポーネントをユーザーが編集できないようにする場合、「構造」ビューを無効にできます。この項では方法について説明します。次のサブセクションが含まれます:

- 第20.8.1項「「構造」ビューを無効にする方法」

- 第20.8.2項「実行時の処理」

注意:

「構造」ビューの編集機能の詳細は、第16.5項「ページの編集」を参照してください。

20.8.1 「構造」ビューを無効にする方法

アプリケーションのadf-config.xmlファイルで<pe:enable-source-view>エントリをfalseに設定して「構造」ビューを無効にできます。

注意:

adf-config.xmlで作成できるコンポーザ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。

「構造」ビューを無効にするには:

1. アプリケーションのadf-config.xmlファイルを開きます。これは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダにあります。

2. 例20-7に示すように、enable-source-viewプロパティを追加し、その値をfalseに設定します。

例20-7 adf-config.xmlでの「構造」ビューの無効化

<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
<pe:enable-source-view>false</pe:enable-source-view>
</pe:page-editor-config>

3. ファイルを保存します。

20.8.2 実行時の処理

ユーザーがページ編集モードに切り替えると、図20-7に示すように、ページは「コンテンツの追加」ビューまたは「デザイン」ビューにレンダリングされ、「構造」ビューはユーザーに表示されません。

図20-7 「構造」タブがないページの「コンテンツの追加」ビュー

20.9 タスク・フローのズーム機能の無効化

アプリケーションのadf-config.xmlファイルで<pe:enable-zoom>プロパティをfalseに設定することによって、アプリケーションでタスク・フローにズーム・インする機能を無効にできます。

注意:

adf-config.xmlで作成できるコンポーザ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。

タスク・フローのズーム機能を無効にするには:

1. 「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダにあるadf-config.xmlファイルを開きます。

2. 例20-8に示すように、<pe:enable-zoom>プロパティを追加し、その値をfalseに設定します。

例20-8 adf-config.xmlでのタスク・フローのズーム機能の無効化

<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
<pe:source-view>
<pe:enable-zoom>false</pe:enable-zoom>
</pe:source-view>
</pe:page-editor-config>

3. ファイルを保存します。

タスク・フローにズーム・インする機能はアプリケーション全体で無効になります。

20.10 コンポーネントへのスタイルの適用

次のいずれかの方法を使用して、コンポーネントのヘッダーおよびコンテンツに様々なスタイルを適用することによって、コンポーザ・コンポーネントのルック・アンド・フィールを変更できます。

- スタイル・セレクタを使用してスキンを構築し、そのスキンをPortal Frameworkアプリケーションに適用します。スタイル・セレクタおよびスキンの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』の「スタイルとスキンを使用した外観のカスタマイズ」の章を参照してください。

- プロパティ・インスペクタを介して、JDeveloperのスタイル・プロパティを使用して、スタイル情報を指定します。詳細は、「contentStyleプロパティおよびinlineStyleプロパティの理解」を参照してください。

注意:

JDeveloperのスタイル・プロパティは、スキンCSSからのスタイル情報をオーバーライドします。ただし、JDeveloperを使用してスタイル・プロパティを定義する場合、このスタイルは選択したコンポーネントのみのスタイルをオーバーライドし、子コンポーネントはスキンで指定されたスタイルを使用し続けます。

スタイル関連のプロパティinlineStyleおよびstyleClassを変更して、設計時にPage Customizable、Panel Customizable、Layout CustomizableおよびShow Detail Frameの各コンポーネントのルック・アンド・フィールを調整できます。

Show Detail Frameコンポーネントには、別の関連スタイル・プロパティ(contentStyle)があり、これはコンポーネント内のコンテンツのスタイルを定義します。styleClassプロパティでは、スキンから別のスタイルを選択でき、一方inlineStyleプロパティおよびcontentStyleプロパティは、コンポーネントのその特定のインスタンスのアプリケーション・スキンで指定された対応するスタイルをオーバーライドします。

inlineStyleプロパティはstyleClassをオーバーライドします。また、コンポーネント・インスタンスで設定されたプロパティは、コンポーネントのそのインスタンスのみに影響します。アプリケーション内のその他のコンポーネント・インスタンスは影響を受けません。

注意:

backgroundプロパティは、Show Detail Frameコンポーネントのルック・アンド・フィールを調整する際にも便利です。これは、コンポーネント・インスタンスにdark、mediumまたはlightの色のスキームを提供するために使用されます。inlineStyle、contentStyleおよびstyleClassの各プロパティとは異なり、backgroundプロパティはスキンで機能します。コンポーネント・インスタンスのbackgroundプロパティに指定された値に応じて、スキンは、関連するスタイルを適用します。

contentStyleプロパティおよびinlineStyleプロパティの理解

スタイル・プロパティのinlineStyleとcontentStyleは、サポートする属性のタイプが類似しています。これらのプロパティの違いは、影響の範囲です。inlineStyleがコンポーネント全体のスタイル情報を提供するのに対し、contentStyleはコンポーネント・コンテンツのスタイル情報のみを提供します。contentStyleプロパティはShow Detail Frameコンポーネントで使用できますがPanel Customizableコンポーネントでは使用できません。

inlineStyleプロパティは、CSSをコンポーネントのルート、つまり最上位のDOM要素に適用します。これは、スキンから色、フォントなどを選択する子要素のスタイルをオーバーライドしません。たとえば、コンポーネント・ヘッダーがスキニングされた場合、inlineStyleを設定してもコンポーネント・ヘッダーには影響しません。contentStyleは、コンポーネントのコンテンツ部分を囲むDOM要素にCSSを適用します。Show Detail Frameでは、コンテンツはヘッダーの下の領域のことです。

コンポーネント・コンテンツでは、contentStyleに指定した値が、inlineStyleに指定した値よりも優先されます。また、コンポーネント・インスタンスでは、contentStyleは、親コンポーネント(Panel Customizableコンポーネント内でネストされたポートレットなど)のinlineStyle値とcontentStyle値のいずれにも優先されます。

図20-8 プロパティ・インスペクタでのcontentStyleおよびinlineStyleのスタイルの定義

20.11 永続性変更マネージャの構成

セッション間でユーザー・カスタマイズおよびアプリケーション・カスタマイズを永続するには、アプリケーションを構成して変更の永続性フレームワークを使用する必要があります。コンポーザ・コンポーネントをカスタマイズ可能ページに追加すると、コンポーザは、アプリケーションを構成してComposerChangeManagerを使用し、実行時にページに対して行われた変更が適切に永続されます。この項では、コンポーザ対応ページを含む新しいPortal Frameworkアプリケーションでのデフォルト変更マネージャ構成について説明します。

コンポーザ・コンポーネントをアプリケーション・ページに初めて追加するとき、コンポーザは次のことを行い、変更の永続性を有効にします。

- CHANGE_PERSISTENCEコンテキスト・パラメータをweb.xmlファイルに追加し、その値をComposerChangeManagerに設定します。このコンテキスト・パラメータは、次の例に示すように、永続性を処理するために使用されるChangeManagerクラスを登録します。

<context-param>
<param-name>org.apache.myfaces.trinidad.CHANGE_PERSISTENCE</param-name>
<param-value>oracle.adf.view.page.editor.change.ComposerChangeManager</param-value>
</context-param>

- adf-config.xmlファイルのpersistent-change-manager要素をMDSDocumentChangeManagerに設定します。コンポーザは、adf-faces-configセクション内のMDSDocumentChangeManagerを次のように構成します。

<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config">
<persistent-change-manager>
<persistent-change-manager-class>
oracle.adf.view.rich.change.MDSDocumentChangeManager
</persistent-change-manager-class>
</persistent-change-manager>
. . .
</adf-faces-config>

ファイルのtaglib-configセクションは、次の例に示すように、デフォルトで永続されるコンポーネントのタグおよび属性をリストします。

<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config">
...
<taglib-config>
<taglib uri="http://xmlns.oracle.com/adf/faces/customizable">
<tag name="showDetailFrame">
<persist-operations>all</persist-operations>
<attribute name="expansionMode">
<persist-changes>true</persist-changes>
</attribute>
<attribute name="contentStyle">
<persist-changes>true</persist-changes>
</attribute>
</tag>
<tag name="panelCustomizable">
<persist-operations>all</persist-operations>
</tag>
</taglib>
<taglib uri="http://xmlns.oracle.com/adf/pageeditor">
<tag name="layoutCustomizable">
<persist-operations>all</persist-operations>
<attribute name="type">
<persist-changes>true</persist-changes>
</attribute>
</tag>
</taglib>
</taglib-config>
</adf-faces-config>

さらに、このセクションでその他のタグおよび属性を定義してpersist-changes属性をtrueに設定することによって、そのタグおよび属性の変更の永続性を有効にできます。詳細は、第22.4.1項「コンポーネント・レベルでの変更の永続性の定義方法」を参照してください。

操作と属性への変更を永続化する場合は、persist-operations属性を含めて、値をallに設定します。persist-operations属性がタグに含まれる場合、タグが子の追加、移動、並べ替えおよび削除、ファセットの追加および削除などの変更を永続化します。

暗黙的に永続化されるADF Facesコンポーネントおよび属性のリストは、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「ユーザーによる実行時カスタマイズの許可」の章を参照してください。

ComposerChangeManager

ChangeManagerクラスは、エンド・ユーザーによって実行されたアプリケーション・カスタマイズを永続するために必要です。ComposerChangeManagerは、セッション内およびセッション間(MDSへ)の両方の変更の永続性を処理します。これは、次のようにユーザーの変更を適切な変更マネージャに委任します。

- 表示モードの変更は、FilteredPersistenceChangeManagerにルーティングされ、暗黙的カスタマイズ(列のサイズ変更やヘッダーの折りたたみなど)がアプリケーションのadf-config.xmlファイルで構成されたフィルタ・ルールに応じて動作するようにします。

- 編集モードの変更は、MDSDocumentChangeManagerにルーティングされ、暗黙的カスタマイズと明示的カスタマイズの両方が常に永続され、セッション間で使用できるようにします。

注意:

コンポーザ・コンポーネントをアプリケーション・ページに追加するとき、(「プロジェクト・プロパティ」ダイアログの)セッションの期間のカスタマイズを有効にするオプションは無効になっています。これは、コンポーザ対応のアプリケーション・ページがセッション間で(MDSへ)永続される必要があるためです。

20.12 実行時リソース文字列編集の構成

コンポーザで編集されたコンポーネント・プロパティは、現在の言語でのみ使用できます。たとえばタスク・フローをページに追加する場合、コンポーザで入力するタスク・フロー・タイトルは現在の言語でのみ使用可能です。そのため、別のロケールのユーザーには、そのようなプロパティの翻訳された値が表示されません。実行時に編集されたコンポーネント・プロパティの言語サポートを提供するために、現在コンポーザは、文字列値を取ることができるコンポーネント表示オプションのリソース文字列を編集するオプションをユーザーに提供しています。これは、JDeveloperのADF Facesが提供するリソース文字列エディタ機能に似ています。コンポーザでリソース文字列に行われた変更は、アプリケーションで他のリソース・バンドルとともに翻訳される、オーバーライドバンドルに保存されます。翻訳されたものは、アプリケーションにインポートされて戻されます。こうして、ユーザーは自身の言語でプロパティ値を表示できます。

注意:

コンポーザは、実行時に約500のリソース文字列の作成をサポートします。この数を超えると、アプリケーションのパフォーマンスは低下します。

この項では、リソース文字列の編集を可能にするための手順について説明します。次の項が含まれます:

- 第20.12.1項「リソース文字列エディタの概要」

- 第20.12.2項「アプリケーションでリソース文字列エディタを有効にする方法」

- 第20.12.3項「オーバーライドバンドルの構成方法」

- 第20.12.4項「実行時の処理」

20.12.1 リソース文字列エディタの概要

実行時、文字列値を取ることができるコンポーネント表示オプションでは、プロパティ・フィールドの隣の「編集」メニューは、「テキスト・リソースの選択」オプションを提供します。このオプションをクリックするとリソース文字列エディタが開き、既存のリソースの検索、リソース・キーの編集または削除および新しいリソース・キー/値のペアの追加を行うオプションが提供されます。実行時のリソース文字列の編集の詳細は、第16.5.7項「リソース文字列の編集」を参照してください。

コンポーザでリソース文字列に対して行った変更は、アプリケーション・オーバーライド・バンドルに保存されます。バンドルは翻訳に送られ、翻訳されたバージョンがアプリケーションに戻されます。こうして、ユーザーは自身の言語でプロパティ値を表示できます。

ComposerOverrideBundle.xlfは、コンポーザ・ライブラリにパッケージされている空のXLIFFファイルです。このバンドルは、設計時にコンポーザ・コンポーネントをページに追加するときにアプリケーションで使用できるようになります。実行時、コンポーザはこのバンドルを内部的に使用し、リソース文字列の編集時にアプリケーションのオーバーライドバンドルからの読取りおよびこれへの書込みを行います。

新しいプロパティ値および更新されたプロパティ値は、オーバーライドバンドルに保存されます。ユーザーは、作成または変更される各文字列のキー、値および説明を指定する必要があります。アプリケーションで行われるすべてのリソース文字列の変更は、単一のオーバーライドバンドルに保存されます。様々なレイヤーで行われた実行時の変更を区別するために、キー値にはMDSレイヤー名および値が接頭辞として付けられ、RT_<MDSレイヤー名><MDSレイヤー値>_キー名のフォーマットである必要があります。たとえば、RT_sitewebcenter_WELCOME_MESSAGEとなります。選択したプロパティに対して、ユーザーは、任意のMDSレイヤーで作成したリソース文字列を検索および使用できます。ただし、編集できるのは、同じMDSレイヤーで作成されたリソース文字列のみです。オーバーライドバンドルの検索に加えて、ユーザーは、設計時にJSPXページで作成されて使用された文字列も検索できます。内部的に、コンポーザは、JSPXファイルでc:setタグを使用して定義したすべてのリソース・バンドルを検索します。

英語でのリソース文字列の実行時の変更は、デフォルトのアプリケーションオーバーライドバンドルに保存されます。ユーザーは、言語を変更し、その言語でリソース文字列を作成または編集できます。ユーザーがリソース文字列を書き込む言語それぞれに対して個別のオーバーライドバンドルが作成され、ファイル名にはその言語のイニシャルが接尾辞として付けられます。たとえば、Application1でフランス語で編集されたリソース文字列は、Application1OverrideBundle_fr.xlfという名前のバンドルに保存されます。

リソース文字列エディタの現在の制限

- コンポーザは、実行時に約500のリソース文字列の作成をサポートします。この数値を超えると、アプリケーションのパフォーマンスが低下します

- リソース文字列エディタの検索条件では、大文字と小文字が区別されます。

- 検索文字列の説明を検索するには、ユーザーは検索条件に完全な文字列値を指定する必要があります。

- JDeveloperの「プロパティ・バンドル」または「リスト・リソース・バンドル」で作成されたエントリの文字列説明は、リソース文字列エディタには表示されません。

- リソース文字列を編集するオプションは、「パラメータ」タブと「イベント」タブのプロパティには無効です。
ADFリソースのEL値がページ・パラメータ、タスク・フロー パラメータ、ポートレット・パラメータなどのページ定義パラメータで参照される場合、バインドしているELは空の値を返します。ユーザーは、ページ定義パラメータでADFリソースのEL値を参照しないようにする必要があります。

20.12.2 アプリケーションでリソース文字列エディタを有効にする方法

アプリケーションでリソース文字列の編集を有効にするには、アプリケーションのadf-config.xmlファイルの<pe:page-editor-config>セクションに<pe:resource-string-editor>要素を次のように追加する必要があります。

<pe:page-editor-config>
<pe:resource-string-editor>
<pe:enabled>true</pe:enabled>
</pe:resource-string-editor>
</pe:page-editor-config>

編集するページ、ユーザー、ロールなどの特定の条件に基づいてリソース文字列を選択的に有効にする場合、enabled属性にEL値を使用できます。

20.12.3 オーバーライドバンドルの構成方法

アプリケーションでリソース文字列の編集を有効にする場合、オーバーライド・バンドルoracle.adf.view.page.editor.resource.ComposerOverrideBundle.xlfを使用するようにアプリケーションを構成する必要があります(まだ使用されていない場合)。このオーバーライド・バンドルは、pageeditor.jarファイルに含まれており、実行時にユーザーがリソース文字列を作成または編集するときに、アプリケーションのオーバーライド・バンドルに対する読取りおよび書込みに使用されます。

オーバーライドバンドルを構成するには:

1. JDeveloperでアプリケーションを開きます。

2. 「アプリケーション」メニューから、「アプリケーション・プロパティ」を選択します。

3. 「アプリケーション・プロパティ」ダイアログの左パネルの「リソース・バンドル」を選択します。

4. 「バンドル」セクションにoracle.adf.view.page.editor.resource.ComposerOverrideBundle.xlfが表示されていない場合は、「追加」ボタンをクリックしてバンドルを追加します。

5. 「リソース・バンドルの選択」ダイアログの「ファイル名」フィールドに、oracle.adf.view.page.editor.resource.ComposerOverrideBundle.xlfと入力して、「開く」をクリックします。

6. 「アプリケーション・プロパティ」ダイアログで、「オーバーライド済」チェック・ボックスを選択します(図20-9)。
こうすることによって、実行時にユーザーがファイルを使用できます。

図20-9 「アプリケーションのプロパティ」ダイアログ

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

この項の手順を繰り返し、アプリケーションの任意のリソース・バンドルを実行時にユーザーに表示します。

注意:

実行時の読取りおよび書込みの操作に関してリソース・バンドルにアクセスできるようにするには、「アプリケーションのプロパティ」ダイアログでそのバンドルの「オーバーライド」オプションを選択している必要があります。

実行時に、プロパティ・バンドル、リスト・リソース・バンドルおよびXLIFFリソース・バンドルにアクセスできるようにすることができます。

20.12.4 実行時の処理

文字列を取るプロパティの隣の「編集」アイコンをユーザーがクリックすると、「テキスト・リソースの選択」オプションが使用可能になります。このオプションをクリックすると、リソース文字列エディタが開き、そこでユーザーはリソース文字列を作成、変更または削除できます。詳細は、第16.5.7項「リソース文字列の編集」を参照してください。

20.13 コンポーザの拡張構成の問題のトラブルシューティング

この項では、コンポーザの拡張構成の実行時に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

ロギングの構成の詳細は、「コンポーザのADFロギングの構成」を参照してください。

問題

グローバルまたはインスタンス・レベルのCustom Actionを追加しました。ただし、これはchromeまたはShow Detail Frameの「アクション」メニューのいずれにも表示されません。

解決方法

次の点を確認してください。

- Show Detail Frameの最初の子は、af:regionである必要があります。

- タスク・フローに現在表示されているビューは、カスタム・アクションの処理と一致するそのタスク・フロー定義ファイルの結果を含む必要があります。

- この処理に接頭辞dialog:がある場合、タスク・フロー定義の結果にも同じ接頭辞がある必要があります。

詳細は、第20.3.2項「タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法」を参照してください。

問題

コンポーザがADFアプリケーション・ページで動作しません。Oracle WebCenter Portalのリソース・カタログまたは「コンポーネント・プロパティ」ダイアログを使用すると、エラーがログに報告されます。カスタマイズは、まったく保存されません。オブジェクトはカタログから追加されません。

解決方法

コンポーザは、MDSDocumentChangeManagerおよびComposerChangeManagerと互換性があります。web.xmlファイルのCHANGE_PERSISTENCEコンテキスト・パラメータをこれらのいずれかに設定する必要があります。次の例に、CHANGE_PERSISTENCEをMDSDocumentChangeManagerに設定する方法を示します。

<context-param>
<param-name>org.apache.myfaces.trinidad.CHANGE_PERSISTENCE</param-name>
<param-value>oracle.adf.view.rich.change.MDSDocumentChangeManager</param-value>
</context-param>

コンポーザを構成するとき、CHANGE_PERSISTENCEの値がoracle.adf.view.page.editor.change.ComposerChangeManagerに変更されます。

21 コンポーザ固有のMDS構成の実行

この章では、実行時にページに対して行われた変更を保存するためのカスタマイズ・レイヤーを作成する方法を説明します。コンポーザのサンドボックスの作成を有効にし、変更をバック・エンドに保存する前にプレビューするオプションをユーザーに提供する方法も説明します。

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

- 第21.1項「MDSの概要」

- 第21.2項「コンポーザのサンドボックスの使用」

- 第21.3項「カスタマイズ・レイヤーの表示モードおよび編集モードへの追加: 例」

- 第21.4項「コンポーザを使用したMDS関連の問題のトラブルシューティング」

21.1 MDSの概要

ほとんどの業界では、様々な顧客および分野で役に立つようにエンタープライズ・アプリケーションをカスタマイズします。サイトレベルでアプリケーションを変更すると問題が発生する可能性があります。たとえば、アプリケーション・レベルのカスタマイズでアプリケーションをアップグレードすると、データの損失またはデータ・マージ・エラーが発生する場合があります。結果として、すべてのマージ競合を解決するまで新しいバージョンのアプリケーションをデプロイできません。

メタデータ・ドメインでは、MDSにこのような問題に対処するカスタマイズ機能が用意されています。このカスタマイズ機能を使用すると、ベースのアプリケーション定義の上に適用される、元の状態に干渉しないカスタマイズ・レイヤーを作成できます。カスタマイズ・レイヤー(またはレイヤー化された変更)は、独自のドキュメントに記述され、ベースのアプリケーション定義から隔離されて格納されます。実行時、適用可能なカスタマイズは、メタデータ・ストアからロードされ、ベースのメタデータ定義の上にレイヤー化され、目的の効果を実現します。製品のアップグレードおよびパッチは、ベースのメタデータ定義にのみ影響するため、カスタマイズは正しい動作を継続します。

カスタマイズ・レイヤー

MDSでは、クライアントは複数のカスタマイズ・タイプを指定できます。たとえば、カスタマイズを実行時モード、アプリケーション・ロール、ユーザー・ロール、アプリケーションの状態またはクライアント指定の条件に追加できます。このようなカスタマイズ・タイプそれぞれは、カスタマイズ・レイヤーと呼ばれ、CustomizationClassを使用して描写されます。CustomizationClassはインタフェースMDSで、ベース定義でオーバーレイされるカスタマイズ・レイヤーを特定するために使用されます。たとえば、アプリケーションを構成して、ユーザーが属している部門に基づいてカスタマイズを保存できます。DepartmentCCというカスタマイズ・レイヤーを作成でき、そこで異なる部門のユーザーによって行われたアプリケーションのカスタマイズは、レイヤー内の異なるフォルダに格納されます。その他の例は、MDSを構成して表示モードの変更をユーザー・カスタマイズとしてあるレイヤーで保存し、編集モードの変更をアプリケーション・カスタマイズとして別のレイヤーで保存する場合(またはこの逆)です。

カスタマイズ・レイヤーは、優先順位の順番で適用されます。つまり、同じ変更が、指定のユーザーおよびセッションに適用される2つの異なるレイヤーで行われた場合、高い優先順位のレイヤーで定義された変更がまず適用されます。

CustomizationClassを実装する場合、これをMDSで登録する必要があります。MDSには、CustomizationClassタイプのリストを単一のMetadataObjectと関連付ける方法が用意されています。これは、ファイングレイン関連付けと呼ばれます。MDSには、CustomizationClassタイプのリストを一連のMetadataObjectsと関連付ける方法も用意されています。これは粗密な関連付けと呼ばれます。CustomizationClassおよびカスタマイズ・レイヤーの作成の詳細は、第21.3項「カスタマイズ・レイヤーの表示モードおよび編集モードへの追加: 例」を参照してください。

コンポーザのサンドボックス

通常、Portal Frameworkアプリケーションでは、実行時のカスタマイズ内容はJDEV_HOME/jdev/system_directory/o.mds.dt/adrs/application_name/AutoGeneratedMar/mds_adrs_writedirディレクトリにすぐに保存されます。表示モードと編集モードの両方で行われた変更はこの方法で保存されます。ただし、特定の状況では、ユーザーは、変更をバック・エンドに実際に保存する前に、まず独自のビューでカスタマイズを適用してその変更を保持するか取り消すかを評価する必要がある場合があります。データベース・リポジトリを使用してカスタマイズを格納する場合、コンポーザを構成してサンドボックスを作成できます。サンドボックスの作成の詳細は、第21.2項「コンポーザのサンドボックスの使用」を参照してください。

21.2 コンポーザのサンドボックスの使用

サンドボックスは、実行時のページ・カスタマイズをバック・エンドにコミットするまで保存する一時ストレージ・レイヤーです。サンドボックスを構成すると、コンポーザのツールバーに「保存」ボタンが表示され、ユーザーは変更を保存できます。サンドボックス対応のアプリケーションでは、ユーザーがまず変更を保存せずに「閉じる」をクリックすると、「クローズの確認」ダイアログによって、コンポーザを閉じる前に変更を保存するか、取り消すかの確認を求められます。

表示モードで行われたユーザー・カスタマイズはすぐに保存されます。このような変更はページを変更したユーザーに対してのみ使用可能であるため、保存する前に変更を確認する特定の値はありません。

編集モードのカスタマイズはページにアクセスするすべてのユーザーが使用できるため、サンドボックスを有効にして、変更をコミットする前にユーザーがページ・カスタマイズを確認し、これを評価できます。アプリケーションでサンドボックスを有効にした場合、ページの編集モードでコンポーザのツールバーに「保存」ボタンが表示されます。

この項では、サンドボックスの作成を有効にする手順およびサンドボックス対応アプリケーションの実行時の動作を説明します。次のサブセクションが含まれます:

- 第21.2.1項「コンポーザのサンドボックスの作成を有効にする方法」

- 第21.2.2項「実行時の処理」

- 第21.2.3項「アプリケーションのサンドボックスを無効にする方法」

- 第21.2.4項「失効したサンドボックスを破棄する方法」

21.2.1 コンポーザのサンドボックスの作成を有効にする方法

アプリケーションがデータベース・ストアを使用している場合のみサンドボックスを有効にできます。したがって、この項の手順を実行する前にデータベース・ストアが構成されていることを確認する必要があります。データベース・ストアの設定の詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』を参照してください。

この項では、コンポーザのサンドボックスの作成を有効にする方法を説明します。次のサブセクションが含まれます:

- 第21.2.1.1項「アプリケーションのadf-config.xmlファイルの更新」

- 第21.2.1.2項「アプリケーションのweb.xmlファイルの更新」

- 第21.2.1.3項「アプリケーションのデータベース・ストアの選択」

- 第21.2.1.4項「実行時のフル・ページ・リフレッシュの有効化」

21.2.1.1 アプリケーションのadf-config.xmlファイルの更新

デフォルトでは、サンドボックスの作成は、(adf-config.xmlファイルの<mds-config>セクションで定義された)デフォルトのカスタマイズ・ストアにマップされたすべてのネームスペースに対して有効になっています。ただし、選択した数のネームスペースに対してのみサンドボックスを有効にできます。これを行うには、<pe:sandbox-namespaces>要素をadf-config.xmlファイルに追加してから、サンドボックスの作成をサポートするネームスペースを定義する必要があります。

注意:

adf-config.xmlで作成できるコンポーザ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。

adf-config.xmlでサンドボックスの作成を構成するには:

1. adf-config.xmlファイルを開きます。これは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダにあります。

2. 例21-1に示すように、<metadata-namespaces>要素の下で、<namespace>要素が、サンドボックスの作成を有効にするすべてのメタデータに対して定義されていることを確認します。

例21-1 adf-config.xmlファイルのネームスペースの定義

<!-- Your jspx customizations alone go here -->
<namespace path="/pages" metadata-store-usage="WebCenterFileMetadataStore">
<namespace-restriction type="CUSTOMIZATIONS"/>
</namespace>
<!-- Your pagedef customizations alone go here -->
<namespace path="/pageDefs" metadata-store-usage="WebCenterFileMetadataStore">
<namespace-restriction type="CUSTOMIZATIONS"/>
</namespace>

3. 例21-2に示すように、<pe:sandbox-namespaces>要素を<pe:page-editor-config>セクション内に追加し、サンドボックスの作成を有効にするすべてのネームスペースの個別の<pe:namespace>タグを追加します。

例21-2 サンドボックスの作成のためのネームスペースの構成

<pe:sandbox-namespaces>
<pe:namespace path="/pages"/>
<pe:namespace path="/pageDefs"/>
</pe:sandbox-namespaces>

4. adf-config.xmlファイルを保存します。

21.2.1.2 アプリケーションのweb.xmlファイルの更新

ページの編集モードからサンドボックスが構成されたことを確認するには、アプリケーションのweb.xmlファイルでフィルタを作成し、適切なフィルタ・マッピングを設定する必要があります。すべてのリクエストがこのフィルタを通るようにルーティングされ、サンドボックスがすべての編集モードのカスタマイズに対して作成されます。ファイル・システムのメタデータ・ストアを使用している場合、フィルタされたリクエストに対して実行される処理はありません。

注意:

web.xmlで作成できるコンポーザ固有構成の詳細は、第B.2.4項「web.xmlの更新」を参照してください。

この項では、コンポーザ固有のフィルタおよびその関連フィルタ・マッピングをアプリケーションのweb.xmlファイルに定義する例を提供します。ここでは、フィルタ(WebCenterComposerFilter)を追加する方法を説明します。

コンポーザ固有のフィルタおよびフィルタ・マッピングを定義するには:

1. application_root/Portal/public_html/WEB-INF/web.xmlファイルを開きます。

2. WebCenterComposerFilterを追加してからadfBindingsフィルタを追加します。

<filter>
<filter-name>composerFilter</filter-name>
<filter-class>oracle.adf.view.page.editor.webapp.WebCenterComposerFilter</filter-class>
</filter>

3. 例21-3に示すように、AdfBindingFilterのフィルタ・マッピングの前に対応する<filter-mapping>要素を追加します。

例21-3 コンポーザ固有のフィルタのためのフィルタ・マッピング

<filter-mapping>
<filter-name>composerFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>

<url-pattern>タグを使用してWebCenterComposerFilterを通過する必要があるページを指定し、ページが編集モードになったときにサンドボックスの作成を有効化できるようにします。

注意:

フィルタの定義順序が重要です。リクエストがこれらのフィルタで順番に渡されるので、適切な順序で定義されていないと、アプリケーションは設計されたように実行されません。web.xmlファイルではWebCenterComposerFilterを最初に実装してから、その後でAdfBindingFilterを実装する必要があります。

4. web.xmlファイルを保存します。

21.2.1.3 アプリケーションのデータベース・ストアの選択

サンドボックスの作成を有効にするには、アプリケーションを構成しデータベース・ストアを使用する必要があります。したがって、アプリケーションをWebLogic管理対象サーバーにデプロイするときに、データベース・リポジトリを選択し、そのアプリケーションのパーティション名を指定します。

JDeveloperからWebLogic管理対象サーバーへのアプリケーションのデプロイの詳細は、第7.3.4.1項「ローカル・データ・ソースを使用した管理対象サーバーへのデプロイ」を参照してください。

21.2.1.4 実行時のフル・ページ・リフレッシュの有効化

アプリケーションでサンドボックスの作成を有効にするとき、ページ編集モードに入るときとそのモードを終了するときにフル・ページ・リフレッシュが実行されるようにする必要があります。その実行手順の詳細は第21.3.7項「サーブレットをリダイレクトしてMDSカスタマイズ・レイヤー間の切替えを有効にする方法」を参照してください。

21.2.2 実行時の処理

ユーザーがページ編集モードに切り替えるとき、コンポーザのツールバーに「保存」ボタンが表示されるということは、サンドボックスの作成がアプリケーションで有効であることを示します。ページまたはページの共有コンポーネントに対して行われた変更は、ユーザーが「保存」をクリックするまで保存されません。保存されると、すべてのアプリケーション・ユーザーがこのカスタマイズを使用できます。「保存」ボタンがレンダリングされない場合、サンドボックスを使用できず、各変更はすぐにコミットされます。

「コンポーネント・プロパティ」ダイアログでコンポーネント・プロパティを編集するとき、「適用」をクリックすると次のようになります。

- サンドボックスを使用できない場合、ページがリフレッシュされてコンポーネント・プロパティに対して行われた変更が表示され、変更はバック・エンドに保存されます。

- サンドボックスを使用できる場合、ページがリフレッシュされてコンポーネント・プロパティに対して行われた変更が表示されます。変更を保存するには、ユーザーは「保存」をクリックする必要があります。

ページで「保存」または「閉じる」をクリックすると、次のイベントが実行されます。

- 「保存」をクリックすると、サンドボックスがコミットされ、新しいサンドボックスが作成されます。ページは編集モードのままです。

- 「閉じる」をクリックすると、次の2つのイベントのいずれかが発生します。

- 最後の保存操作以降の変更がない場合、サンドボックスが破棄され、コンポーザが閉じ、ユーザーは表示モードに戻ります。

- 保存されていない変更がある場合、図21-1に示すように、「クローズの確認」ダイアログにページ名と保存されていないタスク・フロー名がリストされます。

図21-1 コンポーザの「クローズの確認」ダイアログ

ユーザーは、次のオプションから選択できます。

- 「保存」をクリックして、サンドボックスをコミットし、コンポーザを閉じます。

- 「保存しない」をクリックして、サンドボックスを破棄し、コンポーザを閉じます。

- 「取消」をクリックし、ダイアログを閉じ、変更を保存せずにコンポーザに戻ります。

注意:

ユーザーがページを編集中にページ外にナビゲートし、そのページに戻った場合、保存されていない変更は失われます。

並行編集時の処理

同じカスタマイズ・レイヤーを使用して2人以上のユーザーが同じページまたはタスク・フローを編集している場合、図21-2に示すように、ページに別のユーザーがページまたはタスク・フローを編集しているというメッセージがそれぞれのユーザーに表示されます。

図21-2 ページ並行処理メッセージ

複数のユーザーが同じカスタマイズ・レイヤーで同時にタスク・フローにズームインし、それを編集している場合、図21-3に示すように、並行処理メッセージが表示されます。

図21-3 タスク・フローの並行処理メッセージ

注意:

ユーザーがタスク・フローにズームインし、いくつかのカスタマイズを行い、タスク・フローからズームアウトした場合、そのユーザーがカスタマイズを保存するまで、タスク・フローの並行処理メッセージが他のユーザーに対して継続して表示されます。

最後に保存された変更は前の変更を上書きします。たとえば、ユーザーAとBがページまたはタスク・フローを同時に編集している場合、並行性の問題は次のように処理されます。

- Aが最初にページまたはタスク・フローを保存すると、Aの変更がMDSにコミットされます。その後、Bがページまたはタスク・フローを保存すると、Aの変更はBの変更で上書きされます。

- Bが表示モードでコンポーネントをパーソナライズ(たとえば移動)しようとしている間にAがその同じコンポーネントを削除すると、WebCenterのエラー・ページがBに表示されます。Bは、元のページにナビゲートして戻る必要があります。削除されたコンポーネントは表示されず、Bは他のコンポーネントで作業を継続できます。

21.2.3 アプリケーションのサンドボックスを無効にする方法

変更がすぐにバック・エンドにコミットされるようにするために、サンドボックスを無効にできます。

サンドボックスを無効にするには:

1. adf-config.xmlファイルを開きます。これは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダにあります。

2. <pe:page-editor-config>要素の下に<pe:disable-sandbox>属性を追加し、これをtrueに設定します。

3. adf-config.xmlを保存します。

21.2.4 失効したサンドボックスを破棄する方法

ユーザーが実行時にページを編集するとき、ブラウザが予期せずに閉じた場合またはユーザーがページ外にナビゲートした場合、そのセッションで使用されていたサンドボックスは使用可能なままです。同じページにアクセスしている他のユーザーには、同じページを別のユーザーが編集しているという並行処理メッセージが表示されたままになります。このような失効したサンドボックスを破棄して、データベース・ストアの領域を解放し、パフォーマンスを向上できます。

失効したサンドボックスが次の場合に破棄されるようにできます。

- セッションがタイムアウトした場合。
アプリケーションのweb.xmlファイルの<session-timeout>要素は、サンドボックスが破棄されるまでの期間を定義できます。これが確実に起こるようにするためには、アプリケーションのweb.xmlファイルでWebCenterComposerSessionListenerを構成する必要があります。このリスナーは、セッションがタイムアウトになるとコールされます。これは、同じユーザーがページ編集モードに入るときに新しいサンドボックスを作成します。

- ユーザーがページの編集モードに同じユーザー名で再ログインした場合。
この場合、同じユーザーが編集モードに切り替えると、新しいサンドボックスが作成されます。

WebCenterComposerSessionListenerを構成するには:

1. application_root/Portal/public_html/WEB-INF/web.xmlファイルを開きます。

2. 次の例に示すように、新しいリスナー(WebCenterComposerSessionListener)を定義します。

<listener>
<description>Composer Http Session Listener</description>
<display-name>Composer Http Session Listener</display-name>
<listener-class>
oracle.adf.view.page.editor.webapp.WebCenterComposerSessionListener
</listener-class>
</listener>

3. web.xmlファイルを保存します。

web.xmlで作成できるコンポーザ固有構成の詳細は、第B.2.4項「web.xmlの更新」を参照してください。

21.3 カスタマイズ・レイヤーの表示モードおよび編集モードへの追加: 例

カスタマイズをクライアント定義の条件に基づいてメタデータ・オブジェクトに適用できます。たとえば、エンド・ユーザーの権限、アプリケーションのデプロイ場所(ローカライゼーションとも呼ばれる)または特定の産業分野に基づいて使用するアプリケーションおよびメタデータ・オブジェクトをカスタマイズできます。このような各カテゴリ(権限、ローカライゼーションおよび分野)は、カスタマイズ・レイヤーを指し、それぞれがCustomizationClassを使用して描写されます。CustomizationClassはインタフェースMDSで、ベース定義でオーバーレイされるカスタマイズ・レイヤーを特定するために使用されます。例については、第21.3.3項「カスタムUserCCヒント・レイヤーの作成方法」を参照してください。

CustomizationClassを実装する場合、これをMDSで登録する必要もあります。MDSには、CustomizationClassタイプのリストを単一のMetadataObjectと関連付ける機能が用意されています。これは、ファイングレイン関連付けと呼ばれます。MDSには、CustomizationClassタイプのリストを一連のMetadataObjectsと関連付ける機能も用意されています。これは粗密な関連付けと呼ばれます。

カスタマイズ可能アプリケーションは、複数のカスタマイズ・レイヤーを持つことができます。カスタマイズを適用するレイヤーを選択できます。カスタマイズ先として選択したレイヤーは、ヒント・レイヤーと呼ばれます。コンポーザ・コンポーネントをJSFページにドロップすると、ADFは、アプリケーションにデフォルトのSiteCC (site)ヒント・レイヤーを構成します。その結果、adf-config.xmlファイルが更新され、SiteCCカスタマイズ・クラスを組み込みます。このヒント・レイヤーは、ページに対して行われたすべてのカスタマイズを格納します。

この項では、例を使用して、カスタマイズ・ヒント・レイヤーを表示実行時モードおよび編集実行時モードに追加すると、ユーザーのカスタマイズ機能がすべてのユーザーにどのように提供され、アプリケーションのカスタマイズ機能が選択したユーザーにどのように提供されるかを説明します。アプリケーションのカスタマイズを編集モードで有効にするために、siteヒント・レイヤーが追加されます。ユーザーのカスタマイズを表示モードで有効にするために、userヒント・レイヤーが追加されます。デフォルトでは、userヒント・レイヤーはsiteヒント・レイヤーの上に適用されます。userヒント・レイヤーは、表示モードで行われたすべてのユーザーのカスタマイズ内容を、カスタマイズを行ったユーザー用に作成された特定の場所に格納します。このような変更はそのユーザーにしか表示されません。siteヒント・レイヤーは、編集モードで行われたすべてのアプリケーションのカスタマイズを格納し、すべてのユーザーに対して表示されます。

実行時にヒント・レイヤーを有効にするために、コンポーザはWebCenterComposerFilterフィルタを提供し、MDS SessionOptionsオブジェクトを作成するための抽象ファクトリを定義する方法を提供します。このオブジェクトでは、実行時に適用可能なカスタマイズ・レイヤーが提供され、ユーザーはロールに基づいてユーザーのカスタマイズ(表示モード)およびアプリケーションのカスタマイズ(編集モード)を実行できます。新しいMDSセッションを作成するとき、このオブジェクトのMDSSession.createSessionメソッドを使用して、セッションのオプションを指定します。

この項では、カスタマイズ・レイヤーを作成、実装および登録し、WebCenterComposerFilterを構成し、MDSカスタマイズ・レイヤー間で切り替える例を提供します。次のサブセクションが含まれます:

- 第21.3.1項「JSFページへのコンポーザの追加方法」

- 第21.3.2項「カスタムSiteCCヒント・レイヤーの作成方法」

- 第21.3.3項「カスタムUserCCヒント・レイヤーの作成方法」

- 第21.3.4項「ComposerSessionOptionsFactoryクラスの実装方法」

- 第21.3.5項「コンポーザでの実装の登録方法」

- 第21.3.6項「WebCenterComposerFilterの構成方法」

- 第21.3.7項「サーブレットをリダイレクトしてMDSカスタマイズ・レイヤー間の切替えを有効にする方法」

- 第21.3.8項「実行時の処理」

21.3.1 JSFページへのコンポーザの追加方法

この項では、JSFページにPage Customizableコンポーネントを追加する方法を説明します。この演習の目的は、adminユーザーがサイト・レベルでカスタマイズを実行できるように、実行時に編集モードのコンポーザを提供することです。この項では、実行時に表示モードから編集モードへの切替えを可能にするために、Change Mode Linkを追加します。

JSFページにコンポーザを追加するには:

1. JSPXページを開き、「コンポーネント・パレット」から「コンポーザ」を選択します。

2. Change Mode Linkを選択し、これをページにドロップします。

3. Page Customizableを選択し、これをページにドロップします。
「ソース」ビューは次のようになります。

<af:form id="f1">
<pe:changeModeLink id="cml1"/>
<pe:pageCustomizable id="pageCustomizable1">
<cust:panelCustomizable id="panelCustomizable1" layout="scroll"/>
<f:facet name="editor">
<pe:pageEditor id="pep1"/>
</f:facet>
</pe:pageCustomizable>
</af:form>

これらのコンポーネントをページにドロップすると、デフォルトのSiteCCヒント・レイヤーがADFによって拡張されます。その結果、adf-config.xmlファイルがこのカスタマイズ・クラスで更新されます。

<cust-config>
<match>
<customization-class name="oracle.adf.share.config.SiteCC" />
</match>
</cust-config>

注意:

アプリケーションでUserCCをデフォルトのヒント・レイヤーとして使用する場合、adf-config.xmlファイルのcust-configセクションで、単純にoracle.adf.share.config.SiteCCをoracle.adf.share.config.UserCCに置き換えます。ただし、UserCCをデフォルトのヒント・レイヤーとして使用するには、アプリケーションを保護してある必要があります。アプリケーションでユーザーおよびロールをプロビジョニングしないと、UserCCヒント・レイヤーを実装できません。

21.3.2 カスタムSiteCCヒント・レイヤーの作成方法

この項では、編集モードで実行されたすべてのアプリケーション・レベルのカスタマイズ内容が格納される、カスタムSiteCCヒント・レイヤー(site)を作成する方法を説明します。このサンプル・アプリケーションでは、アプリケーション・レベルのカスタマイズ内容は、/mds/mdssys/cust/site/webcenter/pagename.jspx.xmlディレクトリに格納されます。

siteヒント・レイヤーを作成するには:

1. 「ファイル」メニューから、「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を開き、「Java」、「Javaクラス」の順に選択して、「OK」をクリックします。
「Javaクラスの作成」ダイアログが開きます。

3. 「名前」フィールドにSiteCCと入力します。

4. 「拡張対象」フィールドにCustomizationClassと入力します。
こうすることによってoracle.mds.cust.CustomizationClassがインポートされます。

「抽象メソッドの実装」チェック・ボックスが選択されていることを確認します。

5. 「OK」をクリックします。
SiteCC.javaファイルは「ソース」ビューにレンダリングされます。

6. 「ソース」ビューで、public class SiteCC extends CustomizationClassの後に[Enter]を押し、次の文字列を追加します。

{
private static final String DEFAULT_LAYER_NAME = "site";
private String mLayerName = DEFAULT_LAYER_NAME;
private String mLayerValue = "webcenter";

次のライブラリがインポートされます。

import oracle.mds.core.MetadataObject;
import oracle.mds.core.RestrictedSession;
import oracle.mds.cust.CacheHint;

7. ここで太字で示したようにコードを更新します。

public class SiteCC extends CustomizationClass
{
private static final String DEFAULT_LAYER_NAME = "site";
private String mLayerName = DEFAULT_LAYER_NAME;
private String mLayerValue = "webcenter";
//Note: You can provide any site name.

public CacheHint getCacheHint()
{
return CacheHint.ALL_USERS;
}

public String getName()
{
return mLayerName;
}

public String[] getValue(RestrictedSession mdsSession, MetadataObject mo)
{
return new String[] { mLayerValue };
}
}

8. SiteCC.javaファイルを保存します。

21.3.3 カスタムUserCCヒント・レイヤーの作成方法

この項では、ユーザーscott用のカスタムuserヒント・レイヤーを作成する方法を示す例を説明します。このレイヤーはsiteレイヤーの上に適用されます。表示モードでユーザーが実行するユーザーのカスタマイズは、ログイン・ユーザー専用に作成されたフォルダのこのuserヒント・レイヤーに保存されます。この例では、表示モードで実行したユーザーのカスタマイズ内容は、/mds/mdssys/cust/user/scott/pagename.jspx.xmlディレクトリに格納されます。

注意:

説明上の目的のため、この例では、UserCCヒント・レイヤーが1人のユーザー(scott)のみのために作成される単純なシナリオを説明します。実際のアプリケーションでは、UserCCレイヤーを構成して、このページをリクエストしたユーザーの名前を返すことができます。

userヒント・レイヤーを作成するには:

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を開き、「Java」、「Javaクラス」の順に選択して、「OK」をクリックします。
「Javaクラスの作成」ダイアログが開きます。

3. 「名前」フィールドにUserCCと入力します。

4. 「拡張対象」フィールドにCustomizationClassと入力します。
こうすることによってoracle.mds.cust.CustomizationClassがインポートされます。

「抽象メソッドの実装」チェック・ボックスが選択されていることを確認します。

5. 「OK」をクリックします。
「ソース」ビューにUserCC.javaファイルが表示されます。

6. 「ソース」ビューで、public class UserCC extends CustomizationClassの後に[Enter]を押し、次の文字列を追加します。

{
private static final String DEFAULT_LAYER_NAME = "user";
private String mLayerName = DEFAULT_LAYER_NAME;
private String mLayerValue = "scott"; //The name of the logged-in user
in this example. The logged-in user name can be acquired dynamically.

次のライブラリがインポートされます。

import oracle.mds.core.MetadataObject;
import oracle.mds.core.RestrictedSession;
import oracle.mds.cust.CacheHint;

7. ここで太字で示したようにコードを更新します。

public class UserCC extends CustomizationClass
{
private static final String DEFAULT_LAYER_NAME = "user";
private String mLayerName = DEFAULT_LAYER_NAME;
private String mLayerValue = "scott";

public CacheHint getCacheHint()
{
return CacheHint.USER;
}

public String getName()
{
return mLayerName;
}

public String[] getValue(RestrictedSession mdsSession, MetadataObject mo)
{
return new String[]{mLayerValue};
}
}

8. UserCC.javaファイルを保存します。

21.3.4 ComposerSessionOptionsFactoryクラスの実装方法

この項では、ADFが提供するComposerSessionOptionsFactoryクラスが実装され、MDS SessionOptionsを各HTTPリクエストに提供します。

ComposerSessionOptionsFactoryクラスを実装するには:

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を開き、「Java」、「Javaクラス」の順に選択して、「OK」をクリックします。
「Javaクラスの作成」ダイアログが開きます。

3. 「名前」フィールドにAppsSessionOptionsFactoryImplと入力します。

4. 「OK」をクリックします。
AppsSessionOptionsFactoryImpl.javaファイルが「ソース」ビューにレンダリングされます。

5. 次のライブラリをインポートします。

import oracle.adf.view.page.editor.mds.ComposerSessionOptionsFactory;
import oracle.adf.view.page.editor.mode.ModeContext;
import oracle.mds.config.CustClassListMapping;
import oracle.mds.config.CustConfig;
import oracle.mds.core.SessionOptions;
import oracle.mds.cust.CustClassList;
import oracle.mds.cust.CustomizationClass;

6. 次のコードを追加してComposerSessionOptionsFactoryクラスを実装し、SessionOptionsを渡します。

public class AppsSessionOptionsFactoryImpl
implements ComposerSessionOptionsFactory
{

public SessionOptions createSessionOptions(SessionOptions defaultSessionOptions, String mode)
{
CustomizationClass[] custLayer;
CustConfig custConfig = null;

if (ModeContext.EDIT_MODE.equals(mode))
{
//Mode is Edit, change to SiteCC
custLayer = EDIT_LAYER;
}
else
{
//Mode is View, change to UserCC + SiteCC
custLayer = VIEW_LAYER;
}

try
{
CustClassList custClassList = new CustClassList(custLayer);
CustClassListMapping custClassListMapping =
new CustClassListMapping("/", null, null, custClassList);
custConfig = new CustConfig(new CustClassListMapping[]
{ custClassListMapping });
}
catch (Exception e)
{
e.printStackTrace();

}
if(defaultSessionOptions.getServletContextAsObject() != null){
return new SessionOptions(defaultSessionOptions.getIsolationLevel(),
defaultSessionOptions.getLocale(), custConfig,
defaultSessionOptions.getVersionContext(),
defaultSessionOptions.getVersionCreatorName(),
defaultSessionOptions.getCustomizationPolicy(),
defaultSessionOptions.getServletContextAsObject());
}
else
{
return new SessionOptions(defaultSessionOptions.getIsolationLevel(),
defaultSessionOptions.getLocale(), custConfig,
defaultSessionOptions.getVersionContext(),
defaultSessionOptions.getVersionCreatorName(),
defaultSessionOptions.getCustomizationPolicy());
}
}

//Edit mode SiteCC
private static final CustomizationClass[] EDIT_LAYER =
new CustomizationClass[]
{ new SiteCC() };

//View mode SiteCC + USerCC
private static final CustomizationClass[] VIEW_LAYER =
new CustomizationClass[]
{ new SiteCC(), new UserCC() };

}

7. AppsSessionOptionsFactoryImpl.javaファイルを保存します。

21.3.5 コンポーザでの実装の登録方法

siteカスタマイズ・レイヤーおよびuserカスタマイズ・レイヤーを機能させるには、コンポーザにComposerSessionOptionsFactoryクラスを登録する必要があります。たとえば、具体的なクラスがview.AppsSessionOptionsFactoryImplの場合、次のスニペットをアプリケーション・ディレクトリの/.adf/META-INFフォルダにあるadf-config.xmlファイルに追加する必要があります。

<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
<pe:session-options-factory>view.AppsSessionOptionsFactoryImpl</pe:session-options-factory>
</pe:page-editor-config>

21.3.6 WebCenterComposerFilterの構成方法

アプリケーション・ディレクトリのPortal/public_html/WEB-INFフォルダにあるweb.xmlファイルのWebCenterComposerFilterフィルタを構成する必要があります。このフィルタは、すべてのHTTPリクエストについてコンポーザの具体的なSessionOptionsFactoryをADFに登録します。フィルタがADFからコールを受信すると、リクエストをアプリケーションに転送し、新しくカスタマイズされたレイヤーでSessionOptionsを取得します。SessionOptionsでSandboxまたはVersionContextを設定していない場合、コンポーザはその独自のサンドボックスを設定し、それをADFに返します。サンドボックスの詳細は、第21.2.1項「コンポーザのサンドボックスの作成を有効にする方法」を参照してください。

composerFilterとそのフィルタ・マッピングは、ADFBindingFilterより前に構成する必要があります。たとえば、次のweb.xmlファイルを参照してください。

....

<!-- WebCenterComposerFilter goes here -->
<filter>
<filter-name>composerFilter</filter-name>
<filter-class>oracle.adf.view.page.editor.webapp.WebCenterComposerFilter</filter-class>
</filter>
<filter>
<filter-name>adfBindings</filter-name>
<filter-class>oracle.adf.model.servlet.ADFBindingFilter</filter-class>
</filter>
.....
<!-- WebCenterComposerFilter mapping goes here -->
<filter-mapping>
<filter-name>composerFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>adfBindings</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
....

注意:

フィルタの定義順序が重要です。リクエストがこれらのフィルタで順番に渡されるので、適切な順序で定義されていないと、アプリケーションは設計されたように実行されません。web.xmlファイルではWebCenterComposerFilterを最初に実装してから、その後でAdfBindingFilterを実装する必要があります。

web.xmlで作成できるコンポーザ固有構成の詳細は、第B.2.4項「web.xmlの更新」を参照してください。

21.3.7 サーブレットをリダイレクトしてMDSカスタマイズ・レイヤー間の切替えを有効にする方法

サーブレットをリダイレクトする、つまり実行時にフル・ページをリフレッシュするには、次のものを作成する必要があります。

- AppNavigationUtils.redirectToSamePage()メソッドをコールするAppNavigationUtilsクラス

- AppNavigationUtilsクラスを使用するAppCloseHandler CloseListener

- 編集モードを表示するAppModeBean

この項では、これらのオブジェクトの作成方法を説明します。次のサブセクションが含まれます:

- 第21.3.7.1項「AppNavigationUtilsクラスの作成方法(ここから開始)」

- 第21.3.7.2項「AppCloseHandlerの作成方法」

- 第21.3.7.3項「AppCloseHandlerの登録方法」

- 第21.3.7.4項「AppModeBeanの作成方法」

21.3.7.1 AppNavigationUtilsクラスの作成方法(ここから開始)

AppNavigationUtilsクラスを作成するには:

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を開き、「Java」、「Javaクラス」の順に選択して、「OK」をクリックします。
「Javaクラスの作成」ダイアログが開きます。

3. 「名前」フィールドに、AppNavigationUtilsと入力し、「OK」をクリックします。
AppNavigationUtils.javaファイルは「ソース」ビューにレンダリングされます。

4. 次のライブラリをインポートします。

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

5. 次のコードを追加します。

public class AppNavigationUtils
{

public static void redirectToSamePage()
{
HttpServletRequest request =
(HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
String url = request.getRequestURL().toString();
String _adfCtrlState = request.getParameter("_adf.ctrl-state");
url = url + "?_adf.ctrl-state="+ _adfCtrlState;
System.out.println(url);
try
{
FacesContext.getCurrentInstance().getExternalContext().redirect(url);
FacesContext.getCurrentInstance().responseComplete();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}

6. AppNavigationUtils.javaファイルを保存します。

21.3.7.2 AppCloseHandlerの作成方法

AppCloseHandlerを作成するには:

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を開き、「Java」、「Javaクラス」の順に選択して、「OK」をクリックします。
「Javaクラスの作成」ダイアログが開きます。

3. 「名前」フィールドに、AppCloseHandlerと入力し、「OK」をクリックします。
「ソース」ビューにAppCloseHandler.javaファイルが表示されます。

4. 次のライブラリをインポートします。

import oracle.adf.view.page.editor.event.CloseEvent;
import oracle.adf.view.page.editor.event.CloseListener;

5. 次のコードを追加します。

public class AppCloseHandler
implements CloseListener
{

public void processClose(CloseEvent closeEvent)
{
AppNavigationUtils.redirectToSamePage();
}
}

6. AppCloseHandler.javaファイルを保存します。

21.3.7.3 AppCloseHandlerの登録方法

AppCloseHandlerを作成した後、これをコンポーザ拡張ファイルpe_ext.xmlに登録する必要があります。

このイベント・ハンドラを登録するには:

1. pe_ext.xmlファイルで、次のエントリを追加します。

<event-handlers>
<event-handler event="close">view.AppCloseHandler</event-handler>
</event-handlers>

2. ファイルを保存します。

イベント・ハンドラの詳細は、第19.6項「コンポーザUIイベントのイベント・ハンドラの構成」を参照してください。

21.3.7.4 AppModeBeanの作成方法

AppModeBeanを作成するには:

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を開き、「Java」、「Javaクラス」の順に選択して、「OK」をクリックします。
「Javaクラスの作成」ダイアログが開きます。

3. 「名前」フィールドに、AppModeBeanと入力し、「OK」をクリックします。
「ソース」ビューにAppModeBean.javaファイルが表示されます。

4. 次のライブラリをインポートします。

import javax.faces.event.ActionEvent;import oracle.adf.view.page.editor.mode.ModeContext;

5. 次のコードを追加します。

public class AppModeBean
{

public void edit(ActionEvent actionEvent)
{
ModeContext.getCurrent().setEditMode();
AppNavigationUtils.redirectToSamePage();
}
}

6. ファイルを保存します。

21.3.8 実行時の処理

siteカスタマイズ・レイヤーの機能を確認するには、まずブラウザでJSFページを実行します。次に、ページにadminとしてログインし、「編集」リンクをクリックして編集モードに切り替えます。実行時、ページをカスタマイズします。たとえば、Webページ、移動可能ボックスまたはイメージをページにドロップします。ページは図21-4のようになります。

図21-4 カスタマイズされたページ

アプリケーション・ディレクトリの/mds/mdssys/cust/site/webcenterに移動し、pagename.jspx.xmlファイルを開きます。これは、ページに対して実行したアプリケーション・レベルのカスタマイズが格納される場所です。

userカスタマイズ・レイヤーを使用するには、ページにscottとしてログインし、表示モードでページをパーソナライズします。次にアプリケーション・ディレクトリの/mds/mdssys/cust/user/scottに移動し、pagename.jspx.xmlファイルを開きます。これは、ページに対して実行したユーザーレベルのカスタマイズが格納される場所です。

21.4 コンポーザを使用したMDS関連の問題のトラブルシューティング

この項では、コンポーザの使用中に発生する可能性のあるMDS関連の問題のトラブルシューティングに役立つ情報を提供します。

ロギングの構成の詳細は、「コンポーザのADFロギングの構成」を参照してください。

問題

アプリケーションはMDSサンドボックスを使用するように構成されています。アプリケーションを実行すると、サンドボックスは動作せず、また例外も生成しません。

解決方法

次の点を確認してください。

- データベース・リポジトリが使用されています。サンドボックスは、データベース・ベースのリポジトリでのみ動作し、ファイルベースのリポジトリでは動作しません。

- web.xmlのフィルタの順序が正確です。サンドボックスが正しく動作するためには、<filter>エントリが正しい順序である必要があります。

詳細は、第21.2項「コンポーザのサンドボックスの使用」を参照してください。

22 コンポーザ・コンポーネントのデフォルトのセキュリティ動作の変更

この章では、コンポーザ・コンポーネントのデフォルトのセキュリティ動作をオーバーライドする方法について説明します。

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

- 第22.1項「カスタマイズ・ポリシーの定義によるコンポーネント・レベルの制限の適用」

- 第22.2項「セキュリティ・ロールの使用によるコンポーネント・インスタンス・レベルのカスタマイズ制限の適用: 例」

- 第22.3項「customizationAllowed属性を使用したタグ・レベルのセキュリティの適用」

- 第22.4項「属性レベルのセキュリティの適用」

- 第22.5項「Panel CustomizableおよびShow Detailコンポーネント・アクションでのアクション・レベルの制限の適用」

- 第22.6項「タスク・フローのセキュリティの実装」

- 第22.7項「コンポーザのデフォルト・セキュリティ・ポリシーのオーバーライド」

- 第22.8項「コンポーザのコンポーネント・セキュリティでの問題のトラブルシューティング」

22.1 カスタマイズ・ポリシーの定義によるコンポーネント・レベルの制限の適用

デフォルトで、MDSはページ・コンポーネントのアプリケーション・カスタマイズを制限します。つまり、ユーザーは実行時にコンポーネントまたはその属性をカスタマイズできません。アプリケーション・カスタマイズを有効にするには、コンポーネントおよびその属性のデフォルト制限を解除する必要があります。Page Customizableコンポーネントをページに追加し、それにコンテンツを移入する場合、Page Customizableおよびそのすべての子コンポーネントのデフォルトのカスタマイズ制限が解除されます。ただし、Page Customizableコンポーネントがテンプレートの一部である場合などのインスタンスによっては、コンポーネントおよびその属性のアプリケーション・カスタマイズを明示的に許可する必要がある場合があります。この項では、コンポーネントおよびその属性にMDSのタイプ・レベルの制限またはインスタンス・レベルの制限を適用する方法について説明します。次のサブセクションが含まれます:

- 第22.1.1項「タイプ・レベルのカスタマイズ・ポリシーの定義方法」

- 第22.1.2項「インスタンス・レベルのカスタマイズ・ポリシーの定義方法」

注意:

ページ・テンプレートを使用したカスタマイズ可能ページの作成の詳細は、第18.1.7項「カスタマイズ可能ページを作成するページ・テンプレートの作成方法」を参照してください。

22.1.1 タイプ・レベルのカスタマイズ・ポリシーの定義方法

コンポーネントにタイプ・レベルの制限を適用する場合は、そのコンポーネントのすべてのインスタンスが制限されます。これは、ユーザーの特定の集合のみに特定のコンポーネントまたはその属性の編集を許可し、他のすべてのユーザーにそれの編集を制限する場合に便利です。たとえば、ページ作成者またはアプリケーション管理者のみに実行時のページ・レイアウトの変更を許可する場合は、タイプ・レベルの制限をLayout Customizableコンポーネントに対して定義し、adminロールを有するユーザーのみにこのコンポーネントの編集を可能にできます。

スタンドアロンXMLファイルのコンポーネントおよびその属性に対してタイプ・レベルの制限を有効化し、このファイルをadf-config.xmlファイルのmds-configセクションまたはmds-config.xmlファイルに登録できます。スタンドアロンXMLファイルには、カスタマイズ制限を指定する必要があるタイプに一致する注釈が含まれています。

mds-config.xmlファイルをアプリケーションのMETA-INFディレクトリに作成し、スタンドアロン・ファイルをmds-config.xmlファイルに登録できます。

選択したコンポーネントまたは属性のアプリケーション・カスタマイズをタイプ・レベルで可能にするには:

1. standalone.xmlなど、XMLドキュメントを作成して次のコードを追加し、太字のテキストを適切な値に置き換えます。

<?xml version="1.0" encoding="UTF-8" ?>
<grammarMetadata xmlns="http://xmlns.oracle.com/bali/xml/metadata"
xmlns:mds="http://xmlns.oracle.com/mds"
namespace="tag_namespace">
<elementMetadata elementName="component_name">
<mds:customizationAllowed>true</mds:customizationAllowed>
<attributeMetadata attributeName="attribute_name">
<mds:customizationAllowedBy>security_roles</mds:customizationAllowedBy>
</attributeMetadata>
</elementMetadata>
</grammarMetadata>

<customizationAllowedBy>タグを使用できるのは一度のみです。宣言の一部に、許可されるポリシーの空白区切りのリストとして、複数の値を指定できます。特定のユーザーまたはロールに対してアプリケーション・カスタマイズを有効または無効にするには、そのユーザーまたはロールをMDSセッションのカスタマイズ・ポリシーに含める必要があります。詳細は、第22.2.3項「カスタマイズ・ポリシーを含めるためのSessionOptionsオブジェクトのカスタマイズ方法」を参照してください。

<customizationAllowed>タグは、値にブールを使用します。このタグの値がtrueの場合は、継承されたその他のカスタマイズ・ポリシーで許可されていれば、指定されたコンポーネントを誰でもカスタマイズできることを意味します。

同じオブジェクトが<customizationAllowed>false</customizationAllowed>でタグ付けされている場合には、<customizationAllowedBy>タグは機能しません。また、カスタマイズは、オブジェクト・ツリーの最上位レベルで許可される必要があります。そうしない場合は、デフォルトの動作で、カスタマイズを下位レベルで許可しないことが指定されます。

2. 次のいずれかの方法で、このXMLファイルを登録します。
XMLファイルをadf-config.xmlファイルに登録するには、次の形式を使用してtype-config要素をmds-configセクション内に追加します。

<mds-config xmlns="http://xmlns.oracle.com/mds/config">
<type-config>
<standalone-definitions>
<classpath>File_Path/standalone.xml</classpath>
</standalone-definitions>
</type-config>
</mds-config>

mds-config.xmlファイルをアプリケーションのMETA-INFフォルダに作成し、次の形式でtype-config要素をファイルのmds-component-configセクション内に追加します。

<?xml version="1.0" encoding="UTF-8" ?>
<mds-component-config version="11.1.1.000" xmlns="http://xmlns.oracle.com/mds/config">
<type-config>
<standalone-definitions>
<classpath>File_Path/standalone.xml</classpath>
</standalone-definitions>
</type-config>
</mds-component-config>

3. スタンドアロン・ファイルおよび関連付けられたXSDを共有ライブラリJARファイルで使用可能にします。そうしないと、MDSでそれらがロードされません。
実行時に、MDSでは、META-INFディレクトリ内のすべてのmds-configインスタンスが検索され、スタンドアロン・ファイルで指定されたすべてのカスタマイズ制限がロードされます。

22.1.2 インスタンス・レベルのカスタマイズ・ポリシーの定義方法

インスタンス・レベルの制限は、コンポーネントの特定インスタンスのカスタマイズを許可または制限する場合に便利です。インスタンス・レベルのカスタマイズ・ポリシーのコードは、タイプ・レベルのポリシー定義で使用されるコードと似ています。ただし、インスタンス・レベルのポリシーは、タイプ・レベルのポリシーをオーバーライドします。つまり、インスタンス・レベルの制限では、タイプからの制限に関係なく、trueが保持されます。たとえば、ログイン・ページ、およびユーザー・プリファレンス・ページなどの他のページで、いくつかのUI要素があるフォームを使用している場合は、ユーザーに、ログイン・ページ上以外のフォームのすべてのインスタンスをカスタマイズすることを許可できます。このためには、タイプ・レベルでフォームのカスタマイズを許可して、ログイン・ページ内のインスタンスにのみカスタマイズを制限できます。

コンポーネントまたはその属性のカスタマイズをインスタンス・レベルで可能にできます。コンポーネント・レベルでカスタマイズ制限を適用するには、JDeveloperで、コンポーネントのcustomizationAllowedおよびcustomizationAllowedBy属性を設定できます(第22.1.1項「タイプ・レベルのカスタマイズ・ポリシーの定義方法」を参照)。コンポーネントの属性に制限を適用するには、この項で説明した手順を実行します。

コンポーネント属性のためのインスタンス・レベルのポリシーはRDFファイルで定義します。RDFファイルはMDSによって取得され、ポリシーが実装されます。

インスタンス・レベルのカスタマイズ・ポリシーを定義するには:

1. JSPXファイルと同じ名前で、拡張子RDFを使用して、RDFファイル(main.jspx.rdfなど)を作成します。
このファイルはapplication_home/project/public_html/mdssys/mdxフォルダに作成します。このフォルダ構造にRDFファイルを作成すると、MDSによりファイルが取得され、ここで定義したポリシーが実装されます。

2. コンポーネントの属性に制限を適用するには、次の形式でタグを含めます。

tag_id(xmlns(tag_prefix=tag_namespace))/@tag_prefix:attribute_name

次の例は、Go Image Linkコンポーネント、およびCommand Buttonコンポーネントのtext属性に制限を適用する方法を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description rdf:about="/"/>
<!-- Opens the customization on a tag with ID 'gil1'.  -->
<rdf:Description rdf:about="gil1">
<customizationAllowed xmlns="http://xmlns.oracle.com/mds">false</customizationAllowed>
</rdf:Description>

<!-- Restricts customizations on a commandButton component's 'text' attribute. -->
<rdf:Description rdf:about="cb1/@text">
<customizationAllowed xmlns="http://xmlns.oracle.com/mds">false</customizationAllowed>
</rdf:Description>

実行時に、これらのポリシーが読み取られ、それに応じてアーチファクトのカスタマイズも可能になります。

22.2 セキュリティ・ロールの使用によるコンポーネント・インスタンス・レベルのカスタマイズ制限の適用: 例

この項では、様々なユーザー・ロールおよび責任に基づいて、特定のコンポーネント機能へのアクセスを制限するためにどのようにコンポーネント・レベルの制限を使用できるかを説明します。特に、インスタンス・レベルのカスタマイズ制限をPanel Customizableコンポーネントに適用して、adminロールを有するユーザーのみにカスタマイズ・アクセスを提供する方法を説明します。つまり、adminロールを有するユーザーが実行時にシステムにログインする場合、ユーザーはインスタンス・レベルのカスタマイズが適用されたPanel Customizableをカスタマイズできます。

コンポーザのプロパティ・インスペクタでは、Panel Customizableのプロパティは、admin権限がないユーザーには表示されません。制限されたコンポーネントでは、「編集」アイコンまたはメニュー・アイテムは無効です。これらのユーザーは、適用された制限のため、どのMovable BoxもPanel Customizableにドロップできません。また、このPanel Customizable内のShow Detail Frameを再配置できません。

ユーザー・ロールに基づいて機能を制限することは、カスタマイズ制限を適用するための1つの方法です。コンポーネント機能へのアクセスを有効化または制限するために、ロール・ベースの結果を提供するExpression Language式(EL)を使用することもできます。

注意:

MDSのカスタマイズ制限は、SplitterおよびshowDetailItemなどのADF Facesコンポーネントではなく、Panel Customizable、Show Detail FrameおよびLayout Customizableコンポーネントによってのみネイティブで受け入れられます。

この項には次のサブセクションが含まれます:

- 第22.2.1項「ADFセキュリティの構成方法」

- 第22.2.2項「jazn-data.xmlファイルでのロールおよび付与権限の定義方法」

- 第22.2.3項「カスタマイズ・ポリシーを含めるためのSessionOptionsオブジェクトのカスタマイズ方法」

- 第22.2.4項「コンポーザでの実装の登録方法」

- 第22.2.5項「WebCenterComposerFilterの構成方法」

- 第22.2.6項「インスタンス・レベルのカスタマイズ制限の適用方法」

- 第22.2.7項「実行時の処理」

22.2.1 ADFセキュリティの構成方法

インスタンス・レベルのカスタマイズ制限を適用する前に、ADFセキュリティを使用してアプリケーションを保護する必要があります。詳細は、第74.3項「ADFセキュリティの構成」を参照してください。

22.2.2 jazn-data.xmlファイルでのロールおよび付与権限の定義方法

前の項では、実行時に、adminロールを有するユーザーのみがPanel Customizableのすべての機能にアクセスして、その属性をカスタマイズできるよう、Panel Customizableコンポーネントにカスタマイズ制限が適用されます。

この項では、adminおよびcustomerという2つのロールが作成され、両方のユーザーにページ権限が付与されます。adminロールを有するユーザーは、Panel Customizable (panelCustomizable1)コンポーネントをカスタマイズできます。ただし、前の項で適用したカスタマイズ制限のため、customerロールを有するユーザーはpanelCustomizable1をカスタマイズする権限がなく、これらのユーザーはpanelCustomizable1のすべての機能は使用できません。

jazn-data.xmlファイルでロールを作成するには:

1. 「アプリケーション・リソース」パネルで、jazn-data.xmlファイルを右クリックして「開く」を選択します。

2. 「アプリケーション・ロール」タブをクリックします。

3. 「アプリケーション・ロール」ページで、図22-1に示すように、「ロール」セクションの「追加」アイコンをクリックして、「新しいロールの追加」を選択します。

図22-1 jazn-data.xmlファイルのアプリケーション・ロール

4. 「名前」フィールドで、ロール名adminを指定します。

5. オプションで、「表示名」フィールドおよび「説明」フィールドで、新しいロールのための表示名および説明を指定します。

6. 手順3から6を繰り返し、別のロールcustomerを追加します。

7. 「ユーザー」タブをクリックします。

8. 「ユーザー」ページで、「新規ユーザー」アイコンをクリックし、資格証明を指定して新規ユーザーを作成します。これらのユーザーにロールを割り当てます。このためには、図22-2に示すように、「割当済ロール」セクションの「ロールの割当て」アイコンをクリックし、「アプリケーション・ロールの割当て」を選択します。

図22-2 jazn-data.xmlファイル内の「ユーザー」セクション

9. ページの左側にある「リソース権限」タブをクリックします。

10. 「リソース・タイプ」から、「Webページ」を選択します。

11. ページ定義のリストから、権限を付与するページを選択します。

12. 「付与先」列で、図22-3に示すように、「権限受領者の追加」アイコンをクリックして、リストから「アプリケーション・ロールの追加」を選択します。

図22-3 jazn-data.xmlファイルのリソース

13. 「ロールの選択」ダイアログで(図22-4)、adminロールおよびcustomerロールを選択し、「OK」をクリックします。

図22-4 「ロールの選択」ダイアログ

14. それぞれのロールを選択し、図22-5に示すように、すべての権限(カスタマイズ、付与、パーソナライズおよび表示)を付与します。

図22-5 jazn-data.xmlファイル内の権限リスト

ユーザーとロールの作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「Fusion WebアプリケーションでのADFセキュリティの有効化」の章を参照してください。

22.2.3 カスタマイズ・ポリシーを含めるためのSessionOptionsオブジェクトのカスタマイズ方法

adminロールを有するユーザーのみがPanel Customizableのすべての機能にアクセスできるという、Panel Customizableコンポーネントの予期された実行時動作(それをカスタマイズする機能を含む)を可能にするには、このリクエストのためのMDSセッションにおいてそのカスタマイズ・ポリシーにそのユーザー・ロールを含める必要があります。これを実現するには、次のカスタマイズ・ポリシーをSessionOptionsオブジェクトに含めます。

SecurityContext stx = ADFContext.getCurrent().getSecurityContext();
cPol = new CustomizationPolicy(stx.getUserRoles());

次に、このカスタマイズ・ポリシーを持つMDSセッションが作成されます。

ComposerSessionOptionsFactoryクラスを実装するには:

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を開き、「Java」、「Javaクラス」の順に選択して、「OK」をクリックします。

3. 「Javaクラスの作成」ダイアログの「名前」フィールドに、AppsSessionOptionsFactoryImplと入力します。

4. 「OK」をクリックします。
AppsSessionOptionsFactoryImpl.javaファイルが「ソース」ビューにレンダリングされます。

5. 次のライブラリをインポートします。

import oracle.adf.share.ADFContext;
import oracle.adf.share.security.SecurityContext;
import oracle.adf.view.page.editor.mds.ComposerSessionOptionsFactory;
import oracle.adf.view.page.editor.mode.ModeContext;
import oracle.mds.config.CustClassListMapping;
import oracle.mds.config.CustConfig;
import oracle.mds.core.SessionOptions;
import oracle.mds.cust.CustClassList;
import oracle.mds.cust.CustomizationClass;
import oracle.mds.cust.CustomizationPolicy;

6. 次のコードを追加してComposerSessionOptionsFactoryクラスを実装し、SessionOptionsを渡します。

public class AppsSessionOptionsFactoryImpl
implements ComposerSessionOptionsFactory
{
public AppsSessionOptionsFactoryImpl()
{
}
public SessionOptions createSessionOptions(SessionOptions sessionOptions,
String mode)
{    CustomizationClass[] custLayer;
CustConfig custConfig = null;
CustomizationPolicy cPol = null;
if (ModeContext.EDIT_MODE.equals(mode))
{
//Mode is Edit, change to SiteCC
custLayer = EDIT_LAYER;
}
else
{
//Mode is View, change to UserCC + SiteCC
custLayer = VIEW_LAYER;
}
try
{
CustClassList custClassList = new CustClassList(custLayer);
CustClassListMapping custClassListMapping =
new CustClassListMapping("/", null, null, custClassList);
custConfig = new CustConfig(new CustClassListMapping[]
{ custClassListMapping });
SecurityContext stx = ADFContext.getCurrent().getSecurityContext();
cPol = new CustomizationPolicy(stx.getUserRoles());
}
catch (Exception e)
{
e.printStackTrace();
}
if(sessionOptions.getServletContextAsObject() != null)
{
return new SessionOptions(sessionOptions.getIsolationLevel(),
sessionOptions.getLocale(), custConfig,
sessionOptions.getVersionContext(),
sessionOptions.getVersionCreatorName(),
cPol == null ?
sessionOptions.getCustomizationPolicy() : cPol,
sessionOptions.getServletContextAsObject());
}
else
{
return new SessionOptions(sessionOptions.getIsolationLevel(),
sessionOptions.getLocale(), custConfig,
sessionOptions.getVersionContext(),
sessionOptions.getVersionCreatorName(),
cPol == null ?
sessionOptions.getCustomizationPolicy() : cPol);
}
}
//Edit mode SiteCC
private static final CustomizationClass[] EDIT_LAYER =
new CustomizationClass[]
{ new SiteCC() };
//View mode SiteCC + USerCC
private static final CustomizationClass[] VIEW_LAYER =
new CustomizationClass[]
{ new SiteCC(), new UserCC() };
}

22.2.4 コンポーザでの実装の登録方法

第21.3.5項「コンポーザでの実装の登録方法」で説明した手順を実行して、ComposerSessionOptionsFactoryクラスの実装を登録します。ここで、ユーザー・ロールはMDSセッションのカスタマイズ・ポリシーに含まれました。

22.2.5 WebCenterComposerFilterの構成方法

WebCenterComposerFilterを構成するには、第21.3.6項「WebCenterComposerFilterの構成方法」で説明した手順を実行します。

22.2.6 インスタンス・レベルのカスタマイズ制限の適用方法

この項では、Panel Customizableコンポーネント上の特定ロールに対してアプリケーション・カスタマイズを有効にします。実行時に、adminなど、指定したロールのみが、その属性のカスタマイズを含むPanel Customizableのすべての機能にアクセスできます。他のロールを有するユーザーも、限られたコンポーネント機能のみを使用できます。

インスタンス・レベルのカスタマイズ制限を適用するには:

1. JSPXページで、コンポーザ・タグ・ライブラリからChange Mode Linkコンポーネントを追加します。

2. Page CustomizableコンポーネントをChange Mode Linkコンポーネントの下に追加します。

3. Page Customizable内のコンポーネントPanel Customizableにインスタンス・レベルのカスタマイズ制限を適用します。
この制限は、ディレクトリpublic_html/mdssys/mdx/<pagename>.jspx.rdfに格納されます。

「ソース」ビューは次のようになります。

<pe:changeModeLink id="cml1"/>
<pe:pageCustomizable id="pageCustomizable1">
<cust:panelCustomizable id="panelCustomizable1" layout="scroll"/>
<f:facet name="editor">
<pe:pageEditorPanel id="pep1"/>
</f:facet>
</pe:pageCustomizable>

「設計」ビューは、図22-6のようになります。

図22-6 「設計」ビュー: 「許可されているカスタマイズ」

4. Panel Customizable内にShow Detail Frameコンポーネントを追加し、別のPanel CustomizableコンポーネントをShow Detail Frameコンポーネントの子として含めます。

注意:

この手順は、複数のコンポーネントを示すことによって実行時の動作をより説明しやすいよう、説明のためのみにあります。コンポーザ・コンポーネントを追加する方法の詳細は、第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」を参照してください。

22.2.7 実行時の処理

実行時の処理は、ログオンしているユーザーによって異なります。違いを確認するには、あるユーザーとしてログインしてから別のユーザーとしてログインしてください。例:

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

adminロールを有するユーザーとしてページにログインし、編集モードに切り替えます。Panel Customizableコンポーネントの内と外に、「コンテンツの追加」ボタンおよび「編集」アイコンが表示されます。図22-7で示すように、adminロールを有するユーザーとして、外側にあるPanel Customizableのプロパティにアクセスできます。つまり、adminロールを有するユーザーは、このコンポーネントを編集できます。

図22-7 admin用の編集モード

customerロールを有するユーザーとしてページにログインし、編集モードに切り替えます。Panel Customizable外では、「コンテンツの追加」ボタンおよび「編集」アイコンは使用できません。つまり、このコンポーネントは、customerロールを有するユーザーには編集できません。「構造」ビューでは、「コンテンツの追加」アイコンと「編集」アイコンはコンポーネントに対してグレー表示されます。

22.3 customizationAllowed属性を使用したタグ・レベルのセキュリティの適用

デフォルトでは、Page Customizableコンポーネントは、その下にあるすべてのコンポーネントのアプリケーション・カスタマイズを有効にします。これを、いくつかのコンポーネントに対してカスタマイズを制限するように変更できます。Page Customizableコンポーネントは、ネストされたページまたはフラグメント上にあるコンポーネントに対してカスタマイズを有効にしません。このようなコンポーネントに対して手動でカスタマイズを有効にする必要があります。このような要件に対処するために、MDSは、customizationAllowed属性およびcustomizationAllowedBy属性を提供しています。これらの属性は、ページ上の特定コンポーネントに対するカスタマイズの有効化または制限に使用できます。

customizationAllowed属性は、コンポーネントを実行時にカスタマイズできるかどうかを制御します。この属性をfalseに設定する場合は、コンポーネントを実行時にカスタマイズできません。つまり、「コンポーネント・プロパティ」ダイアログでは、プロパティはグレー表示され、編集は許可されません。

customizationAllowedBy属性は、カスタマイズを可能にするロールを指定します。

この項では、コンポーネントに対してカスタマイズを有効化および制限する例を提供します。次のサブセクションが含まれます:

- 第22.3.1項「イメージ・コンポーネントに対するアプリケーション・カスタマイズの有効化方法」

- 第22.3.2項「イメージ・コンポーネントに対するカスタマイズの制限方法」

詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の拡張メタデータ・プロパティに関する項を参照してください。

22.3.1 イメージ・コンポーネントに対するアプリケーション・カスタマイズの有効化方法

イメージ・コンポーネントに対してアプリケーション・カスタマイズを有効化するには:

1. 第18.2項「コンポーザ・コンポーネントを使用した編集可能ページの設計: 例」で作成したMyPage.jspxページで、ADF Faces Imageコンポーネント、たとえば、panelCustomizable1というPanel Customizable内のbrandingImage.gifを追加します。
アプリケーション・カスタマイズは、Imageコンポーネントに対して自動的に有効になります(Page Customizableコンポーネント内にネストされているため)。

2. MyPage.jspxを実行します。

3. ページの編集モードに切り替えます。

4. 「構造」を選択して、ページの「構造」ビューに切り替えます。

5. 「構造」ビュー・パネル内のコンポーネント階層でイメージを選択し、プロパティの表示アイコンをクリックします。
「コンポーネント・プロパティ」ダイアログにイメージ・プロパティが表示されます。このダイアログで、使用可能なプロパティを編集できます。プロパティを編集して、「OK」をクリックします。プロパティの編集可能値は、アプリケーション・カスタマイズがコンポーネントに対して有効になっていることを表します。

22.3.2 イメージ・コンポーネントに対するカスタマイズの制限方法

イメージ・コンポーネントに対してcustomizationAllowed属性をfalseに設定することで、ページ上のイメージのカスタマイズを制限できます。

イメージ・コンポーネントのカスタマイズを制限するには:

1. Oracle JDeveloperで、前の項で追加したImageコンポーネントを選択し、プロパティ・インスペクタで、customizationAllowedの値をfalseに設定します。

2. MyPage.jspxを実行します。

3. ページの編集モードに切り替えます。

4. 「構造」を選択して、ページの「構造」ビューに切り替えます。

5. 「構造」ビュー・パネル内のコンポーネント階層でイメージを選択し、プロパティの表示アイコンをクリックします。
「コンポーネント・プロパティ」ダイアログで、プロパティがグレー表示され、編集はできなくなります。

22.4 属性レベルのセキュリティの適用

特定のコンポーネント属性を実行時にカスタマイズできるかどうかを選択できます。また、属性に行われた変更がMDSなどの永続ストアまで持続する必要があるかどうかを指定できます。次の方法で、属性レベルのセキュリティを適用できます。

- プロパティ・フィルタを定義することによる

- コンポーネント・レベルで変更を持続させることによる

プロパティ・フィルタの適用の詳細は、第19.8.1項「プロパティ・フィルタの定義方法」を参照してください。

この項では、コンポーネント・レベルで変更を持続させる方法を説明します。次のサブセクションが含まれます:

- 第22.4.1項「コンポーネント・レベルでの変更の永続性の定義方法」

- 第22.4.2項「実行時の処理」

22.4.1 コンポーネント・レベルでの変更の永続性の定義方法

アプリケーションが、変更を持続させるためにFilteredPersistenceChangeManagerを使用して構成されている場合は、adf-config.xmlファイル内のpersist-changes属性を使用して、特定の属性への変更を持続させる必要があるかどうかを指定できます。

注意:

変更の永続性の詳細は、第20.11項「永続性変更マネージャの構成」を参照してください。

adf-config.xmlで作成できるコンポーザ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。

例22-1は、いくつかの属性のために定義されたpersist-changes属性を持つサンプルadf-config.xmlファイルを示しています。

例22-1 adf-config.xmlファイル内でのpersist-changes属性の使用

<adf-config xmlns="http://xmlns.oracle.com/adf/config">
<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config">
<persistent-change-manager>
<persistent-change-manager-class>
oracle.adf.view.rich.change.MDSDocumentChangeManager
</persistent-change-manager-class>
</persistent-change-manager>
<taglib-config>
<taglib uri="http://xmlns.oracle.com/adf/pageeditor">
<tag name="imageLink">
<attribute name="destination">
<persist-changes>true</persist-changes>
</attribute>
</tag>
<tag name="customAction">
<attribute name="text">
<persist-changes>true</persist-changes>
</attribute>
<attribute name="icon">
<persist-changes>true</persist-changes>
</attribute>
</tag>
</taglib>
</taglib-config>
</adf-faces-config>
</adf-config>

22.4.2 実行時の処理

persist-changes属性を含み、値をtrueに設定する場合、コンポーネント属性に対して行われた変更は、そのコンポーネントのいずれのインスタンスでも維持されます。

注意:

persist-changes属性は、表示モードで行われた暗黙的カスタマイズにのみ適用されます。

22.5 Panel CustomizableおよびShow Detailコンポーネント・アクションでのアクション・レベルの制限の適用

Panel CustomizableコンポーネントおよびShow Detail Frameコンポーネントに対してアクションを実行するユーザーの能力は、ページ・セキュリティから継承します。継承は、adf-config.xmlファイル内のアプリケーション規模のスイッチenableSecurityの値に基づきます。アプリケーションを作成するときに「WebCenter Portal Frameworkアプリケーション」テンプレートを選択する場合、adf-config.xmlファイルは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダに存在します。

この項では、Panel CustomizableおよびShow Detail Frameコンポーネント・アクションに対してアクション・レベルの制限を適用する方法を説明します。次のサブセクションが含まれます:

- 第22.5.1項「adf-config.xmlへのenableSecurityセクションの追加方法」

- 第22.5.2項「アクション・カテゴリ・レベルでのセキュリティの定義」

- 第22.5.3項「アクション・レベルでのセキュリティの定義」

22.5.1 adf-config.xmlへのenableSecurityセクションの追加方法

enableSecurity要素は、デフォルトではadf-config.xml内で使用できません。Panel CustomizableコンポーネントおよびShow Detail Frameコンポーネントのためのページ・レベルのセキュリティ継承をオーバーライドまたは拡張するには、例22-2のようにcustomizableComponentsSecurityセクションをadf-config.xmlファイルに追加し、そのセクション内のenableSecurity要素をtrueに設定します。

例22-2 adf-config.xmlのカスタマイズ可能コンポーネント・セキュリティ・セクション内のenableSecurity要素

<cust:customizableComponentsSecurity
xmlns="http://xmlns.oracle.com/adf/faces/customizable/config">
<cust:enableSecurity value="true"/>
<cust:actionsCategory>
..........................................
</cust:customizableComponentsSecurity>

アクションに対する制限は、次のレベルで実装できます。

- ページ・レベル: Oracle WebCenter Portalのカスタマイズ可能コンポーネントがページ・レベルの権限を継承するように、これらのコンポーネントのセキュリティを定義できます。これがデフォルトの動作です。
デフォルトでは、カスタマイズ可能コンポーネントは、編集、パーソナライズまたはカスタマイズなど定義されているページ・レベル権限から、許容されるアクションを継承します。つまり、ページに対する編集、パーソナライズまたはカスタマイズの権限を有するユーザーは、そのページに対する表示モードのユーザー・カスタマイズを実行できます。enableSecurity要素によって、セキュリティ継承動作をオーバーライドできます。次の値のいずれかを取ることができます。

- true: trueに設定した場合(指定されていない場合はデフォルト)、ユーザーがコンポーネントを変更できるかどうかは、まずページ権限に基づいて決定され、次に、そのタイプの権限に対して指定されている現在のアクション・セットに応じて調整されます。たとえば、ユーザーがカスタマイズ権限を持っている場合、カスタマイズ・カテゴリを構成するアクション(移動、カスタマイズなど)はユーザーに使用できますが、adf-config.xmlファイルで定義されるアクションによってオーバーライドされます。

- false: falseに設定した場合、すべてのアクションがユーザーに選択可能になります。adf-config.xmlで構成されたアクションとユーザーのページ権限は無視されます。

- アクション・カテゴリ・レベル: Panel CustomizableコンポーネントおよびShow Detail Frameコンポーネントのすべてのアクションに対してセキュリティを定義できます。
adf-config.xmlファイル内にactionsCategory要素を追加すると、複数のアクションに対するセキュリティを同時に定義できます。有効化したactionCategory属性に基づいて、コンポーネントに適切な権限が設定されます。

- アクション・レベル: Panel CustomizableコンポーネントおよびShow Detail Frameコンポーネントの個々のアクションに対してセキュリティを定義できます。
adf-config.xmlファイル内でactions要素を使用すると、各アクションを有効化または無効化できます。有効化したactions属性に基づいて、コンポーネントに適切な権限が設定されます。

注意:

- adf-config.xmlファイルでenableSecurityをtrueに設定し、アクションまたはアクション・カテゴリに対する制限を定義する場合は、これらの制限を有効にするために、表示権限に加えて、ページに対してパーソナライズ権限またはカスタマイズ権限を付与する必要があります。
enableSecurity要素を使用しないかfalseに設定する場合、ページ・レベルの権限は受け入れられます。このような場合、ページではデフォルトですべてのカスタマイズ可能コンポーネント・アクションがレンダリングされるため、ページに対する表示権限があるだけで十分です。

- 権限は、親からのみ継承できます。階層内の他の位置にあるコンポーネントからの継承は、サポートされていません。

- アクション・カテゴリ・レベルまたはアクション・レベルで定義された制限は、アプリケーション全体にわたるPanel CustomizableコンポーネントまたはShow Detail Frameコンポーネントのすべてのインスタンスに適用できます。コンポーネントの単一インスタンスに対して制限を適用できません。

adf-config.xmlファイルでenableSecurityをtrueに設定する場合、アプリケーション・レベルでコンポーネント・アクションのセキュリティを定義できます。trueの値は、adf-config.xml内に指定されているactionsCategoryおよびactionsの値以外に権限チェックが行われることを示します。

22.5.2 アクション・カテゴリ・レベルでのセキュリティの定義

adf-config.xmlファイルのカスタマイズ可能コンポーネント・アクション・セキュリティ・セクションにactionsCategory要素を追加して、複数のPanel CustomizableおよびShow Detail Frameコンポーネント・アクションに対するセキュリティを定義できます。有効化したactionsCategory属性に基づいて、コンポーネントに適切な権限が設定されます。

adf-config.xmlファイルのactionsおよびactionsCategory要素には、特定のデフォルト・マッピングがあります。表22-1に、様々なactionsCategory属性と、デフォルトでサポートされるアクションを示します。

adf-config.xmlで作成できるコンポーザ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。

表22-1 アクション・カテゴリおよびアクション・マッピング

actionsCategory

サポートされるアクション

personalizeActionsCategory

showMoveAction

showRemoveAction

showMinimizeAction

showResizer

allowAction

customizeActionsCategory

showEditAction

showAddContentAction

showSplitAction

personalizeActionsCategory設定およびcustomizeActionsCategory設定の組合せに基づくコンポーネントの動作は、次のとおりです。

- personalizeActionsCategoryおよびcustomizeActionsCategoryの両方がfalseに設定される場合、ユーザーは、Show Detail Frameコンポーネントを移動、展開、折りたたみ、削除、サイズ変更または編集できず、Panel Customizableコンポーネントを編集または削除することや、それらにコンテンツを追加することもできません。

- personalizeActionsCategoryがtrueに設定され、customizeActionsCategoryがfalseに設定される場合、ユーザーは、Show Detail Frameコンポーネントを移動、展開、折りたたみ、削除またはサイズ変更できますが、それらを編集できません。また、Panel Customizableコンポーネントを削除して、それらの内部にコンポーネントを再配置できますが、それらを編集することやページにコンポーネントを追加できません。

注意:

他のアクション設定と同様に、allowAction設定は、ページへのコンテンツの追加およびページ上のコンテンツの移動または再配置の機能を制御します。詳細は、第22.5.3項「アクション・レベルでのセキュリティの定義」を参照してください。

- personalizeActionsCategoryおよびcustomizeActionsCategoryの両方がtrueに設定される場合、ユーザーは、Show Detail Frameコンポーネントを移動、展開、折りたたみ、削除、サイズ変更および編集でき、Panel Customizableコンポーネントを編集および削除することや、それらにコンテンツを追加することもできます。ユーザーは、「コンテンツの追加」ボタンを使用してリソース・カタログからコンテンツを追加したり、ボックスの追加アイコンを使用してBoxコンポーネントを追加したり、ドラッグ・アンド・ドロップすることで他のPanel Customizableコンポーネントからコンポーネントを移動できます。

注意:

権限が付与からカスタマイズ、パーソナライズ、表示の順にカスケードするため、personalizeActionsCategoryをfalseに設定し、customizeActionsCategoryをtrueに設定することはお薦めできません。つまりカスタマイズを有効にする場合は、ユーザーにすでにページに対するパーソナライズ権限がある必要があります。

例22-3に、adf-config.xmlファイルのカスタマイズ可能コンポーネント・アクション・セキュリティ・セクションに追加できるactionsCategoryエントリを示します。

例22-3 カスタマイズ可能コンポーネント・セキュリティ・セクション内のactionsCategory要素

<cust:customizableComponentsSecurity
xmlns="http://xmlns.oracle.com/adf/faces/customizable/config">
<cust:enableSecurity value="true"/>

<cust:actionsCategory>
<cust:actionCategory name="personalizeActionsCategory" value="true"/>
<cust:actionCategory name="customizeActionsCategory" value="false"/>
</cust:actionsCategory>

<cust:actions>
..........................................
</cust:actions>

</cust:customizableComponentsSecurity>

例22-4に示すように、これらの要素の値にはELも使用できます。

例22-4 actionCategoryエントリ内のカスタマイズ可能コンポーネントで使用されるEL

<cust:actionsCategory>
<cust:actionCategory name="personalizeActionsCategory" value="#{appBusinessRules.InsideCorpNetwork}"/>
</cust:actionsCategory>

参照用として、マネージドBeanのappBusinessRulesは、第74.15項「ポートレットおよびカスタマイズ可能コンポーネントの継承されたセキュリティのオーバーライド」の例74-7で示すように定義されます。

22.5.3 アクション・レベルでのセキュリティの定義

adf-config.xmlファイルのカスタマイズ可能コンポーネント・アクション・セキュリティ・セクション内でactions要素を使用して、個々のShow Detail Frameアクションを表示または非表示できます。有効化したactions属性に基づいて、Show Detail Frameコンポーネントに適切な権限が設定されます。

adf-config.xmlで作成できるコンポーザ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。

他のアクション設定と同様に、allowAction設定は、ページへのコンテンツの追加およびページ・コンテンツの移動または再配置の機能を制御します。

コンポーザでは、ユーザーは次の方法でコンテンツを追加および再配置できます。

- 「ボックスの追加」アイコンを使用してBoxコンポーネントを追加します。

- 「コンテンツの追加」ボタンを使用して、リソース・カタログからBoxコンポーネントにコンテンツを追加します。

- Show Detail Frameコンポーネントの「アクション」メニューで「上へ移動」および「下へ移動」アクションを使用することで、Panel Customizableコンポーネント内でShow Detail Frameコンポーネントを移動します。

- Panel Customizableコンポーネントと交わるようにShow Detail Frameコンポーネントをドラッグ・アンド・ドロップします。

表22-2に、allowAction設定およびshowAddContentAction設定に応じてコンテンツを追加できるかどうかを示します。

表22-2 ページへのコンテンツの追加のためのアクション設定

allowAction設定

showAddContentAction設定

「コンテンツの追加」ボタンが表示されているかどうか

true

true

はい

true

false

いいえ

false

true

いいえ

false

false

いいえ

表22-3では、allowAction設定およびshowSplitAction設定に応じて「ボックスの追加」アイコンを使用してコンテンツを追加する機能を説明します。

表22-3 ページでのコンテンツの再配置のためのアクション設定

allowAction設定

showSplitAction設定

「ボックスの追加」アイコンが表示されているかどうか

true

true

はい

true

false

いいえ

false

true

いいえ

false

false

いいえ

表22-4では、allowActionおよびshowMoveAction設定によってページにコンテンツを移動する機能を説明します。

表22-4 ページでのコンテンツの移動のためのアクション設定

allowAction設定

showMoveAction設定

ページ上でコンテンツを移動したかどうか

true

true

はい

true

false

いいえ

false

true

いいえ

false

false

いいえ

注意:

- アクション・カテゴリ・レベルおよびアクション・レベルの両方でセキュリティを定義し、一部のアクションの値が矛盾する場合は、falseの値がtrueより優先されます。たとえば、personalizeActionsCategoryをtrueに設定し、allowActionをfalseに設定する場合、ユーザーは、実行時にアプリケーションのページにコンテンツを追加できません。同様に、personalizeActionsCategoryをfalseに設定するがallowActionをtrueに設定する場合も、ユーザーは、実行時にアプリケーションのページにコンテンツを追加できません。

- アクション設定を使用した制限は、ページの「コンテンツの追加」ビューまたは「デザイン」ビューでのみ適用できます。つまり、Show Detail FrameコンポーネントでshowEditAction、showRemoveActionなどのアクションをfalseに設定する場合、ユーザーはページの「コンテンツの追加」ビューまたは「デザイン」ビューでこのようなコンポーネントを編集または削除できません。ただし、ユーザーは「構造」ビューでこのようなコンポーネントを選択して、それらを編集または削除できます。

例22-5に、adf-config.xmlファイルのカスタマイズ可能コンポーネント・アクション・セクションに追加できるactionsエントリを示しています。要素値にはELを使用できます。

例22-5 カスタマイズ可能コンポーネント・セキュリティ・セクション内のaction要素

<cust:customizableComponentsSecurity
xmlns="http://xmlns.oracle.com/adf/faces/customizable/config">
<cust:enableSecurity value="true"/>

<cust:actionsCategory>
..........................................
</cust:actionsCategory>

<cust:actions>
<cust:action name="showMinimizeAction" value="true"/>
<cust:action name="showMoveAction" value="false"/>
</cust:actions>

</cust:customizableComponentsSecurity>

22.6 タスク・フローのセキュリティの実装

タスク・フロー編集権限は、タスク・フローを編集する体験に非常に大きな影響を与えるため、タスク・フローに対する編集権限はデフォルトでは無効になっています。実際に、デフォルトでは、タスク・フローに対して権限は与えられていません。適切な権限を有するユーザーのみがタスク・フローを編集できることを確実にするには、コンポーザ・コンテキストで次の2つのタスクを実行することで、タスク・フローのセキュリティを実装できます。

- タスク・フローに明示的に編集、カスタマイズまたは付与権限を与えます。

- コンポーザにタスク・フローの権限のチェックを可能にし、適切な権限を有するユーザーのみにタスク・フローの編集またはカスタマイズを許可します。

この項では、タスク・フローに対して制限を適用して権限チェックを可能にする方法を説明します。次のサブセクションが含まれます:

- 第22.6.1項「タスク・フローに対する権限の付与」

- 第22.6.2項「タスク・フローの権限チェックの有効化」

22.6.1 タスク・フローに対する権限の付与

jazn-data.xmlファイル概要エディタの「リソース権限」ページで権限付与を作成することで、タスク・フローのアクセス・ポリシーを定義できます。作成した権限は、ファイルのポリシー・ストア・セクションのメタデータとして表示されます。これらの権限またはパーミッションは、コンポーザでのタスク・フローのズーム・インおよび編集の機能を制御します。

jazn-data.xmlファイルでのタスク・フローに対する権限を付与または取り消すには:

1. 「アプリケーション」メニューから、「保護」→「リソース権限」の順に選択します。

2. jazn-data.xmlファイル内で、「リソース・タイプ」から「タスク・フロー」を選択します。

3. 「リソース」リストから、タスク・フローを選択して、「付与先」列の「権限受領者の追加」アイコンをクリックし、必要なロール・カテゴリ(「アプリケーション・ロールの追加」など)を選択します。

4. 権限を付与するロールを選択するか、「追加」アイコンをクリックして新規ロールを作成します。

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

6. 「アクション」列で1つ以上の権限を選択します(図22-8)。

図22-8 jazn-data.xmlファイル内のタスク・フロー・セキュリティ・リージョン

7. jazn-data.xmlファイルを保存します。

注意:

customize権限とview権限を付与する場合は、ファイルのソース・ビューに権限付与が次のように表示されます。

<permissions>
<permission>
<class>oracle.adf.controller.security.TaskFlowPermission</class>
<name>/WEB-INF/task-flow-definition.xml#task-flow-definition</name>
<actions>customize,view</actions>
</permission>
</permissions>

TaskFlowPermissionクラスは、タスク・フローの操作にマップされるタスク・フロー固有アクションを定義します。

タスク・フロー権限に基づくコンポーザの動作の詳細は、第16.7.1項「ページおよびタスク・フローのセキュリティ」を参照してください。

タスク・フローに付与する権限の定義の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFバインド・タスク・フローのポリシーの定義方法に関する項を参照してください。

22.6.2 タスク・フローの権限チェックの有効化

ユーザーがタスク・フローの編集を試みるとき、デフォルトでは、コンポーザはタスク・フローの権限をチェックしません。タスク・フローのセキュリティを強化するには、タスク・フローの権限をチェックして編集に必要な権限を有するユーザーのみを許可するように、コンポーザを構成する必要があります。それを行うには、次の例で示すように、アプリケーションのadf-config.xmlファイル内の<pe:task-flow-security>要素のcheck-permissionプロパティを設定します。

<pe:page-editor-config>
<pe:security-config>
<pe:task-flow-security check-permission="true" />
</pe:security-config>
</pe:page-editor-config>

adf-config.xmlの設定の詳細は、第B.2.2項「adf-config.xml」を参照してください。

注意:

前のリリースでは、次のJVMパラメータを使用してサーバーを実行することで、タスク・フローに対して権限チェックを有効にできました。

-Doracle.composer.enableTaskflowPermissionCheck=true

ただし、現在この方法は非推奨です。後方互換性のために、コンポーザはまずenableTaskflowPermissionCheckフラグをチェックしてからadf-config.xmlファイル内の設定をチェックします。

22.7 コンポーザのデフォルト・セキュリティ・ポリシーのオーバーライド

コンポーザでは、カスタマイズを有効にするために次のセキュリティ・チェックが実行されます。

- ページ上のリージョンが編集権限またはカスタマイズ権限を付与されています。

- タスク・フローが編集権限またはカスタマイズ権限を付与されてます。

注意:

これは、デフォルトでは有効になっていない、オプションのセキュリティ設定です。

- コンポーネントはイテレータではネストされていません。

- MDSカスタマイズ制限がコンポーネントおよび属性に適用されています。

ユーザーは、前述の条件を満たしている場合のみ、ページおよびタスク・フローをカスタマイズできます。デフォルトでは、コンポーザは、ページ・レベルのセキュリティ・チェックを実行するためにpagePolicyを使用します。

場合によっては、様々なセキュリティ・チェックを実行する必要がある(おそらく、コンポーザによってすでに提供されているものにアプリケーション・レベルのいくつかのチェックを追加する)可能性があります。それを行うには、コンポーザのデフォルトのセキュリティ・ポリシーをカスタム・ポリシーでオーバーライドします。この項では、その実行方法を説明します。次の項が含まれます:

- 第22.7.1項「カスタム・セキュリティ・ポリシーの作成方法」

- 第22.7.2項「コンポーザでのカスタム・ポリシーの登録方法」

- 第22.7.3項「実行時の処理」

22.7.1 カスタム・セキュリティ・ポリシーの作成方法

コンポーザの基本セキュリティ・クラスを拡張することで、カスタム・ポリシーを作成できます。ページまたはタスク・フローをチェックするかどうかに応じて、次の基本セキュリティ・クラスを拡張できます。

- ページ・ポリシー: oracle.adf.view.page.editor.security.BasePageSecurityPolicy

- タスク・フロー・ポリシー: oracle.adf.view.page.editor.security.TaskflowPermissionPolicy

もう一歩前進するために、カスタム・チェックが適用できない場合や適切な結果を実現しない場合にコンポーザのデフォルト・チェックが実行されるように、ポリシーを構成できます。このためには、DefaultPageSecurityPolicyクラスを拡張して、例22-6で示すようにsuper.isCustomizable()メソッドをコールする必要があります。

例22-6 DefaultPageSecurityPolicyを拡張するカスタム・ポリシー

public class CustomPageSecurityPolicy extends DefaultPageSecurityPolicy
{
. . .

public boolean isCustomizable()
{
// Security checks that this custom page policy must perform should go here
. . .
// If we cannot determine the security policy, chain it to Composer's default implementation
return super.isCustomizable();
}
}

22.7.2 コンポーザでのカスタム・ポリシーの登録方法

コンポーザのセキュリティ・ポリシーをオーバーライドするようカスタム・ポリシーを構成するには、<pe:security-config>セクションをアプリケーションのadf-config.xmlファイルに含めて、カスタム・セキュリティ・ポリシーを登録する必要があります。

カスタム・セキュリティ・ポリシーを登録するには:

1. 「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダから、アプリケーションのadf-config.xmlファイルを開きます。

2. <pe:page-editor-config>セクションが存在しない場合は追加し、その中に次のコードを追加します。

<pe:security-config>
<pe:security-policies>
<pe:security-policy name="optional_unique_name" override="composer_security_policy_name">
<pe:policy-class>fully_qualified_custom_policy_class_name</pe:policy-class>
</pe:security-policy>
</pe:security-policies>
</pe:security-config>

ここで

overrideは、オーバーライドされるデフォルト・ポリシーを指定します。オプションは、pagePolicyおよびtaskflowPolicyです。

タスク・フロー・ポリシーの詳細は、第22.6項「タスク・フローのセキュリティの実装」を参照してください。

注意:

ここに記載していない即時利用可能なポリシーは、引き続きデフォルトでチェックされます。

<pe:policy-class>は、カスタム・ポリシー・クラスの名前を指定します。

3. adf-config.xmlファイルを保存します。

22.7.3 実行時の処理

コンポーザは、カスタム・ポリシーで定義されているセキュリティ・チェックを実行し、それに応じてコンポーネントに対してカスタマイズを有効にします。

22.8 コンポーザのコンポーネント・セキュリティでの問題のトラブルシューティング

この項では、コンポーザ・コンポーネントの使用中に発生する可能性のあるセキュリティ関連問題のトラブルシューティングに役立つ情報を提供します。

ロギングの構成の詳細は、「コンポーザのADFロギングの構成」を参照してください。

問題

Show Detail FrameおよびPanel Customizableで「編集」アイコンが表示されないか、Panel Customizableで「コンテンツの追加」ボタンが表示されません。また、Panel Customizableコンポーネントの外部にShow Detail Frameを移動できないか、別のPanel Customizableコンポーネントにドロップできません。

解決方法

MDSを使用することでPanel Customizableが制限されていることと、adf-config.xmlでエントリを使用することでコンポーネント・アクションが保護されていないことを確認します。

問題

jazn-data.xmlファイルでタスク・フローに権限を付与できません。

解決方法

第22.6項「タスク・フローのセキュリティの実装」で記述しているように、Java起動パラメータでサーバーを実行していることを確認します。

23 WebCenter Portalのツールとサービス・タスク・フローのカスタマイズ

この章では、Oracle JDeveloperのカスタマイズ開発者ロールを使用して、Oracle WebCenter Portalのツールとサービス・タスク・フローのルック・アンド・フィールや機能を拡張または変更する方法を説明します。

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

- 第23.1項「タスク・フローのカスタマイズの概要」

- 第23.2項「タスク・フローのカスタマイズの準備」

- 第23.3項「JDeveloperカスタマイズ開発者ロールの構成」

- 第23.4項「Oracle WebCenter Portalのツールとサービス・タスク・フローのカスタマイズ」

- 第23.5項「WebCenterポータルまたはデプロイ済WebCenter Portalアプリケーションへのタスク・フローのカスタマイズの適用」

- 第23.6項「デプロイ済WebCenter Portalアプリケーションからのカスタマイズの削除」

- 第23.7項「カスタマイズ可能なOracle WebCenter Portalのツールとサービス・タスク・フローのカタログ」

23.1 タスク・フローのカスタマイズの概要

タスク・フローのカスタマイズをWebCenter Portalまたはデプロイ済Portal Frameworkアプリケーションに適用する場合、そのカスタマイズは、アプリケーションのタスク・フローのすべてのインスタンスに適用されます。個々のタスク・フロー・インスタンスにカスタマイズをデプロイする必要はありません。

JDeveloperでは、タスク・フローのカスタマイズはアプリケーション・レベルでデプロイされるため、カスタマイズはすべてのポータルに適用されます。特定のポータルのみのタスク・フローをカスタマイズする場合は、WebCenter Portalの管理ツールをタスク・フローのカスタマイズに使用する必要があります。これについては、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「ポータルのタスク・フローのカスタマイズ」の章に説明があります。テキストの追加、既存のコネクタを非表示にする、既存のコンテンツを再配置するなど、カスタマイズに若干の変更を加える場合も、実行時管理ツールを使用できます。カスタマイズにポータルのすべてのインスタンスに適用する複雑なレイアウト変更が必要な場合、この章で説明する開発ベースのカスタマイズ・アプローチを使用してください。

注意:

Portal Frameworkアプリケーションに対してビュー・レベルのカスタマイズが実行可能な場合、ADFモデルおよびControllerのカスタマイズは、このリリースではサポートされていません。様々なカスタマイズ・タイプの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Java EE開発者ガイド』を参照してください。

23.2 タスク・フローのカスタマイズの準備

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

- 第23.2.1項「WebCenter Portalタスク・フローのカスタマイズの準備」

- 第23.2.2項「WebCenter Portal Frameworkアプリケーションのカスタマイズの有効化」

23.2.1 WebCenter Portalタスク・フローのカスタマイズの準備

この項のタスクは、WebCenter Portalタスク・フローのカスタマイズでのみ必要で、次の各トピックで説明します。

- 第23.2.1.1項「WebCenter PortalカスタマイズJDeveloper拡張機能のインストール」

- 第23.2.1.2項「タスク・フロー・カスタマイズ・アプリケーションの作成」

23.2.1.1 WebCenter PortalカスタマイズJDeveloper拡張機能のインストール

WebCenter Portalのタスク・フローをカスタマイズするには、まずWebCenter PortalカスタマイズJDeveloper拡張機能をインストールする必要があります。

WebCenter PortalカスタマイズJDeveloper拡張機能は、WebCenter Portalタスク・フロー・カスタマイズ・アプリケーション・テンプレートを含み、さらにOracle WebCenter Portal Frameworkおよびサービス・デザインタイムJDeveloper拡張機能バンドルに含まれない、ポータル・サーバー固有のタスク・フローもいくつか含んでいます。

注意:

Oracle WebCenter Portal Frameworkおよびサービス・デザインタイム拡張機能の最新バージョンをインストール済ではない場合は、カスタマイズ拡張機能の前にインストールする必要があります。

WebCenter PortalカスタマイズJDeveloper拡張機能をインストールするには:

1. JDeveloperで、「ヘルプ」→「更新のチェック」を選択します。

2. 「更新の確認」ウィザードで、「ようこそ」ページが表示されたら、「次へ」をクリックします。

3. 「ソース」ページの「更新センターの検索」リストで、Oracle Fusion Middleware製品を選択し、「次へ」をクリックします。

4. 「更新」ページで、Oracle WebCenter Portalカスタマイズ・フレームワーク・デザインタイム拡張機能を選択して、「終了」をクリックします。

5. JDeveloperを終了し、再起動します。

23.2.1.2 タスク・フロー・カスタマイズ・アプリケーションの作成

WebCenter Portalでタスク・フローをカスタマイズしている場合は、WebCenter Portalタスク・フロー・カスタマイズ・アプリケーションも作成する必要があります。

タスク・フロー・カスタマイズ・アプリケーションを作成するには:

1. 次のいずれかの方法で、WebCenter Portalタスク・フロー・カスタマイズ・アプリケーションの作成ウィザードにアクセスします。

- 「ファイル」メニューから「新規」を選択します。「新規ギャラリ」ダイアログで「一般」を開き、「アプリケーション」→「WebCenter Portalタスク・フロー・カスタマイズ・アプリケーション」を選択して、「OK」をクリックします。

- 「アプリケーション」メニューから「新規」を選択します。汎用アプリケーションの作成ウィザードで、「アプリケーション・テンプレート」リストから「WebCenter Portalタスク・フロー・カスタマイズ・アプリケーション」を選択します。

- 既存のアプリケーションが開いている場合は、アプリケーション・ナビゲータで、アプリケーション名をクリックして、「新規アプリケーション」を選択します。汎用アプリケーションの作成ウィザードで、「アプリケーション・テンプレート」リストから「WebCenter Portalタスク・フロー・カスタマイズ・アプリケーション」を選択します。

- 既存のアプリケーションが開いている場合は、アプリケーション・ナビゲータで、アプリケーション名を右クリックして、「新規」を選択します。「新規ギャラリ」ダイアログで「一般」を開き、「アプリケーション」→「WebCenter Portalタスク・フロー・カスタマイズ・アプリケーション」を選択して、「OK」をクリックします。

2. アプリケーション作成ウィザードの「アプリケーションの名前付け」ページ(図23-1)で、「アプリケーション名」フィールドにアプリケーションの名前を入力します。

図23-1 WebCenter Portalタスク・フロー・カスタマイズ・アプリケーションの作成ウィザード

3. 「ディレクトリ」フィールドでは、デフォルト・パスを受け入れるか、アプリケーションを格納するディレクトリのパスを入力します。
例:

C:\JDeveloper\mywork\myCustomizationApplication

オプションで、「参照」ボタンをクリックして、目的のディレクトリに移動します。

4. 必要に応じて、「アプリケーション・パッケージの接頭辞」フィールドに、このアプリケーション内に作成されるパッケージに使用する接頭辞を入力します。

5. 「終了」をクリックし、デフォルトのプロジェクト構成を使用してタスク・フロー・カスタマイズ・アプリケーションを作成します。

23.2.2 WebCenter Portal Frameworkアプリケーションのカスタマイズの有効化

Portal Frameworkアプリケーションでタスク・フローを有効にするには、最初にWebCenter Portal Frameworkアプリケーション・テンプレートを使用してアプリケーションを作成済であることを確認します(第6.1項「新しいWebCenter Portal Frameworkアプリケーションの作成」を参照)。その後、次に説明する手順を実行します。

Portal Frameworkアプリケーションでカスタマイズを有効にするには:

1. アプリケーション・ナビゲータで、Portalプロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。

2. 「プロジェクト・プロパティ」ダイアログで「ADFビュー」を選択し、「シード・カスタマイズの有効化」チェック・ボックスを選択します(図23-2)。

図23-2 「シード・カスタマイズの有効化」オプション

3. 「OK」をクリックしてファイルを保存します。

23.3 JDeveloperの「カスタマイズ開発者」ロールの構成

第23.2項「タスク・フローのカスタマイズの準備」で説明されているように、カスタマイズ・アプリケーションを作成した後、またはアプリケーションのカスタマイズを有効化した後、JDeveloperの「カスタマイズ開発者」ロールで使用するカスタマイズ・レイヤーの値を構成する必要があります。

1. JDeveloperで、「ツール」→「プリファレンス」の順に選択します。

2. 「プリファレンス」ダイアログで、「ロール」を選択し、「カスタマイズ開発者」オプションを選択します(図23-3)。

図23-3 「カスタマイズ開発者」オプション

3. 「OK」をクリックします。
JDeveloperを終了するよう求められます。「はい」をクリックします。JDeveloperを再起動すると、「カスタマイズ開発者」ロールを使用するようになります。

「カスタマイズ開発者」ロールを使用して起動した場合、アプリケーション・ナビゲータ内でアプリケーション名の隣に小さい人型を含むアイコンが表示されます(図23-4)。

図23-4 「カスタマイズ開発者」ロールを示すアイコン

「カスタマイズ・コンテキスト」ウィンドウも表示されます(図23-5)。

図23-5 「カスタマイズ・コンテキスト」ウィンドウ

4. Portal Frameworkアプリケーションで、「カスタマイズ・コンテキスト」ウィンドウの「グローバル・レイヤー値のオーバーライド」をクリックします。

5. 「オーバーライドの確認」ダイアログで、「はい」をクリックします。

6. CustomizationLayerValues.xmlファイルに、アプリケーションのカスタマイズ・クラスの構成を入力します。デフォルトのADFサイト・カスタマイズ・クラスを使用しているアプリケーションでは、次のコードを使用します。

<cust-layers xmlns="http://xmlns.oracle.com/mds/dt">
<cust-layer name="site" id-prefix="s">
<cust-layer-value value="site" display-name="Site" id-prefix="s"/>
</cust-layer>
</cust-layers>

7. ファイルを保存します。
「カスタマイズ・コンテキスト」ウィンドウ内のレイヤー値が、CustomizationLayerValues.xmlで定義した値に設定されます。これは、Oracle WebCenter Portalのツールとサービス・タスク・フローのカスタマイズが有効になるように、アプリケーションが正常に構成されたことを示しています。

8. アプリケーション・ナビゲータで、「ナビゲータの表示オプション」ドロップダウン・メニューの「ライブラリの表示」が有効になっていることを確認します(図23-6)。

ヒント:

「ナビゲータの表示オプション」アイコンは、「プロジェクト」ツールバーの右端にあります。

図23-6 ナビゲータの表示オプション - 「ライブラリの表示」

23.4 Oracle WebCenter Portalのツールとサービス・タスク・フローのカスタマイズ

JDeveloperのカスタマイズ開発者ロールは、ベースのライブラリJARのコードを変更することなくADFライブラリをカスタマイズできる、強力なメカニズムです。Oracle WebCenter PortalおよびOracle ADFの両方でMDSを利用するため、カスタマイズ開発者ロールを使用してWebCenter Portalのツールとサービス・タスク・フローを拡張できます。WebCenter Portalのツールとサービス・タスク・フローはすべて、ADFライブラリにパッケージ化されるため、JDeveloperデザインタイムでのタスク・フローのカスタマイズが可能です。「カスタマイズ開発者」ロールを構成する手順の詳細は、第23.3項「JDeveloperの「カスタマイズ開発者」ロールの構成」を参照してください。

タスク・フローのカスタマイズによって実現可能なユース・ケースは、次のとおりです。

- タスク・フローの列名を含むラベルを変更します。

- タスク・フローで使用されるアイコンを変更します。たとえば、ディスカッション・フォーラム・タスク・フローの「編集」アイコンおよび「リフレッシュ」アイコンを新しいアイコンに置き換えます。

- タスク・フローの表の列の順序を変更します。

- 主要タブの検索ボックスなど、すべてのリージョンまたはコンポーネントを削除します。

- 式言語を使用して追加の属性を表示します。たとえば、ピープル・ピッカー・タスク・フローをカスタマイズして追加のユーザー・プロファイル属性を表示します。

前述の項の説明に従って、カスタマイズのためのアプリケーションの準備の後、アプリケーションを起動して必要なカスタマイズを行います。

- タスク・フローのカスタマイズの詳細は、第23.4.1項「例: WebCenter Portalのためのタスク・フローのカスタマイズ」、および第23.4.2項「例: WebCenter Portal Frameworkアプリケーションのためのタスク・フローのカスタマイズ」を参照してください。

- カスタマイズ可能なタスク・フローのリストについては、第23.7項「カスタマイズ可能なOracle WebCenter Portalのツールとサービス・タスク・フローのカタログ」を参照してください。

- カスタマイズを完了した後、第23.5項「WebCenter Portalまたはデプロイ済WebCenter Portalアプリケーションへのタスク・フローのカスタマイズの適用」の説明に従ってカスタマイズをデプロイします。

23.4.1 例: WebCenter Portalのためのタスク・フローのカスタマイズ

WebCenter Portalでタスク・フローをカスタマイズするには、第23.2.1.2項「タスク・フロー・カスタマイズ・アプリケーションの作成」で作成したカスタマイズ・アプリケーションを開いて、カスタマイズを行います。

この項では、2種類の一般的なカスタマイズについて例をあげて説明します。内容は次のとおりです。

- 第23.4.1.1項「例: ワークリスト・タスク・フローのカスタマイズ」

- 第23.4.1.2項「例: ディスカッション・フォーラム・タスク・フローのカスタマイズ」

23.4.1.1 例: ワークリスト・タスク・フローのカスタマイズ

この例では、ワークリスト・タスク・フローをカスタマイズして、各ワークリスト項目の2行のエントリをワークリスト項目の詳細にリンクする1行に置き換え、以前は2行目に表示していた詳細をポップアップで表示するように変更する方法を示します。図23-7は、デフォルトの2行のエントリ構成のワークリストの例を示します。

図23-7 ワークリスト - カスタマイズ前

ワークリスト・タスク・フローをカスタマイズするには:

1. 「カスタマイズ開発者」ロールをまだ使用していない場合は、第23.3項「JDeveloperの「カスタマイズ開発者」ロールの構成」の最初で説明しているように、このロールに切り替えます。

2. WebCenter Portalタスク・フロー・カスタマイズ・アプリケーションを開きます。

3. 「カスタマイズ・コンテキスト」ウィンドウで、「次のカスタマイズ・コンテキストを使用して編集」が選択されていて、カスタマイズ・レイヤーとしてWebCenter (webcenter)が選択されていることを確認します(図23-8)。

図23-8 WebCenter Portalのカスタマイズ・コンテキスト

4. アプリケーション・ナビゲータ内で、ViewControllerプロジェクトを開いて、プロジェクトで使用可能なすべてのライブラリを表示します。

ヒント:

ライブラリが表示されない場合は、「プロジェクト」バーの「ナビゲータの表示オプション」を選択し、「ライブラリの表示」を選択します。

5. 「WebCenterワークリスト・サービス・ビュー」ライブラリを開き、「worklist-service-ui-component-view.jar」→「oracle.webcenter.worklist」→「view」→「jsf」→「fragments」の順に開きます。

6. 「worklist.jsff」を右クリックし、「開く」を選択します。

7. ビューのリスト・ビュー・ファセットに切り替えます。ページ上の空白のファセットをクリックし、「次に切替え - list」を選択します(図23-9)。

図23-9 リスト・ビューに切替え

8. 「構造」ウィンドウで、構造ツリーを展開してaf:outputText - #{row.title}コンポーネントを探します。コンポーネントを右クリックして、「af:outputText - #{row.title}の前に挿入」→「リンク」を選択します。

9. 「構造」ウィンドウで、新規作成した「af:commandLink」をクリックし、「プロパティ・インスペクタ」ダイアログを開きます。

10. プロパティ・インスペクタで、「テキスト」フィールドの横にある下矢印をクリックし、「式ビルダー」を選択します(図23-10)。式として#{row.title}と入力します。

図23-10 プロパティ・インスペクタ

11. プロパティ・インスペクタの「外観」セクションを開きます。ShortDescフィールドの横にある下矢印をクリックし、「式ビルダー」を選択します。式として#{row.dateInfoSummary}と入力します。

12. ActionListenerフィールドに、openTaskDetailsApp()と入力します。

13. 新規追加したcommandLinkを検索し、次のコンポーネントを削除します。
af:outputText - #{row.title}
af:panelGroupLayout

14. アプリケーション・ナビゲータの「ADFライブラリのカスタマイズ」ノードの下に生成されるworklist.jsff.xmlファイルには、例23-1に示すようなコードが含まれます。

例23-1 更新されたworklist.jsffファイル

<mds:customization version="11.1.1.61.15"
xmlns:mds="http://xmlns.oracle.com/mds">
<mds:insert parent="pg13" position="first
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<af:commandLink xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
text="#{row.title}" id="swccl1"
shortDesc="#{row.dateInfoSummary}"
actionListener="#{backingBeanScope.wlbbean.openTaskDetailsApp}"/>
</mds:insert>
<mds:replace node="ot2"/>
<mds:replace node="pg14"/>
</mds:customization>

15. 第23.5項「WebCenter Portalまたはデプロイ済WebCenter Portalアプリケーションへのタスク・フローのカスタマイズの適用」の説明に従って、メタデータ・デプロイメント・プロファイルをWebCenter Portalにデプロイします。

図23-11は、1行でポップアップを備えたカスタマイズ後のサンプル・ワークリストを示します。

図23-11 ワークリスト - カスタマイズ後

23.4.1.2 例: ディスカッション・フォーラム・タスク・フローのカスタマイズ

この例では、ディスカッション・フォーラム・タスク・フローをカスタマイズして、ディスカッションを開始したユーザーのプロファイル・イメージを表示する方法を示します。図23-12は、プロファイル・イメージのないディスカッション・フォーラムの例を示します。

図23-12 ディスカッション・フォーラム - カスタマイズ前

ディスカッション・フォーラム・タスク・フローをカスタマイズするには:

1. 「カスタマイズ開発者」ロールをまだ使用していない場合は、第23.3項「JDeveloperの「カスタマイズ開発者」ロールの構成」の最初で説明しているように、このロールに切り替えます。

2. WebCenter Portalタスク・フロー・カスタマイズ・アプリケーションを開きます。

3. アプリケーション・ナビゲータ内で、ViewControllerプロジェクトを開いて、プロジェクトで使用可能なすべてのライブラリを表示します。

ヒント:

ライブラリが表示されない場合は、「プロジェクト」バーの「ナビゲータの表示オプション」を選択し、「ライブラリの表示」を選択します。

4. 「WebCenterディスカッション・サービス・ビュー」ライブラリを開き、「forum-view.jar」→「oracle.webcenter.collab」→「view」→「forum」→「jsf」→「fragments」の順に開きます。

5. 「ListTopics.jsff」を右クリックして、「開く」を選択します。

6. 「構造」ウィンドウで、ページ上の<rtc:presence>タグを検索します。このタグを使用すると、ユーザーの名前がレンダリングされます。

7. rtc.:presenceタグを右クリックし、「後ろに挿入」→「ADF Faces」の順に選択し、ダイアログから「パネル・グループ・レイアウト」を選択します。

8. 「構造」ウィンドウで「パネル・グループ・レイアウト」を右クリックし、「挿入」→「イメージ・コンポーネント」の順に選択します。

9. 新しいイメージ・コンポーネントのプロパティ・インスペクタで、「ソース」プロパティを#{webCenterProfile[row.createdBy].photoURI['SMALL']}に設定します。ELによって現在のユーザーがプロファイル写真として設定したイメージの場所が戻されます。

10. ファイルを保存してプロジェクトを再ビルドします。
生成したListTopics.jsff.xmlファイルには、次のようなコードが含まれます。

例23-2 更新されたListTopics.jsff.xmlファイル

<mds:customization version="11.1.1.60.46" xmlns:mds="http://xmlns.oracle.com/mds">
<mds:insert after="p1" parent="frmltpgl11"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<af:panelGroupLayout xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
id="swcpgl1">
<af:image xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
source="#{webCenterProfile[row.createdBy].photoURI['SMALL']}" id="swci1"/>
</af:panelGroupLayout>
</mds:insert>
</mds:customization>

11. 第23.5項「WebCenter Portalまたはデプロイ済WebCenter Portalアプリケーションへのタスク・フローのカスタマイズの適用」の説明に従って、メタデータ・デプロイメント・プロファイルをWebCenter Portalアプリケーションにデプロイします。

図23-13は、プロファイル・イメージ付きのカスタマイズ後のディスカッション・フォーラムの例を示します。

図23-13 ディスカッション・フォーラム - カスタマイズ後(ユーザー・プロファイル・イメージ付き)

23.4.2 例: WebCenter Portal Frameworkアプリケーションのためのタスク・フローのカスタマイズ

Portal Frameworkアプリケーションでタスク・フローをカスタマイズするには、最初に第23.2.2項「WebCenter Portal Frameworkアプリケーションのカスタマイズの有効化」の手順を実行します。

この項では、可能なカスタマイズの例を2通り説明します。内容は次のとおりです。

- 第23.4.2.1項「例: ドキュメント・ライブラリ - リスト・ビュー・タスク・フローのカスタマイズ」

- 第23.4.2.2項「例: コンテンツ・プレゼンタ・タスク・フローのカスタマイズ」

23.4.2.1 例: ドキュメント・ライブラリ - リスト・ビュー・タスク・フローのカスタマイズ

次の例では、ドキュメント・ライブラリ - リスト・ビュー・タスク・フローをカスタマイズして、HTMLレンディションと呼ばれる新しい列を追加する方法を示しています。これらの手順を実行する前に、第23.2.2項「WebCenter Portal Frameworkアプリケーションのカスタマイズの有効化」の説明に従って、カスタマイズ可能なPortal Frameworkアプリケーションを準備します。

ドキュメント・ライブラリ - リスト・ビュー・タスク・フローをカスタマイズするには:

1. Portal FrameworkアプリケーションをJDeveloperで開き、「カスタマイズ開発者」ロールを使用していることを確認します。

2. リソース・パレットの「カタログ」の下で、「WebCenter Portal - サービス・カタログ」を展開し、「タスク・フロー」フォルダを開きます。

3. 「ドキュメント・ライブラリ - リスト・ビュー」を右クリックし、「プロジェクトに追加」を選択します。確認ダイアログが表示されたら、「ライブラリの追加」をクリックします。

4. アプリケーション・ナビゲータ内で、「Portal」プロジェクトを開いて、プロジェクトで使用可能なすべてのライブラリを表示します。

ヒント:

ライブラリが表示されない場合は、「プロジェクト」バーの「ナビゲータの表示オプション」を選択し、「ライブラリの表示」を選択します。

5. 「WebCenterドキュメント・ライブラリ・サービス・ビュー」ライブラリを開き、「doclib-service-view.jar」→「oracle.webcenter.doclib」→「view」→「jsf」→「fragments」の順に開きます。

6. docListViewer.jsffを右クリックして、「開く」を選択します。

7. 新しい列をITEM_NAME_COLUMN_HEADERの後に追加します。

1. 「構造」ウィンドウで、タイトルが#{dlBndl.ITEM_NAME_COLUMN-HEADER}の列を右クリックし、「コピーして貼付け」を選択して新しいADF列コンポーネントを作成します。

2. 新しいADF列コンポーネントのプロパティ・インスペクタで、headerTextプロパティをHTML Renditionに変更します。

3. 「構造」ウィンドウで、新しい列を展開してaf:imageコンポーネントを削除します。

4. af:switcher -> f:facet – false内のaf:goLinkコンポーネントを右クリックし、「プロパティに移動」を選択します。

5. TextとDestinationの値を変更します。例:

Text=" Get Conversion (HTML)"
Destination="http://host:port/idcplg?IdcService=GET_DYNAMIC_CONVERSION &amp;dID=#{item.dID}&amp;coreContentOnly=1#{item.portletLinkPostfix}"

8. ファイルを保存します。

23.4.2.2 例: コンテンツ・プレゼンタ・タスク・フローのカスタマイズ

この例では、コンテンツ・プレゼンタ・タスク・フローをカスタマイズして、コンポーザ編集モードで境界とツールバーの表示を制御する方法を説明します。 これらの手順を実行する前に、第23.2.2項「WebCenter Portal Frameworkアプリケーションのカスタマイズの有効化」の説明に従って、カスタマイズ可能なPortal Frameworkアプリケーションを準備します。

コンテンツ・プレゼンタ・タスク・フローをカスタマイズするには:

1. Portal FrameworkアプリケーションをJDeveloperで開き、「カスタマイズ開発者」ロールを使用していることを確認します。

2. リソース・パレットの「カタログ」の下で、「WebCenter Portal - サービス・カタログ」を展開し、「タスク・フロー」フォルダを開きます。

3. 「ドキュメント - コンテンツ・プレゼンタ」を右クリックし、「プロジェクトに追加」を選択します。確認ダイアログが表示されたら、「ライブラリの追加」をクリックします。

4. アプリケーション・ナビゲータ内で、「Portal」プロジェクトを開いて、プロジェクトで使用可能なすべてのライブラリを表示します。

ヒント:

ライブラリが表示されない場合は、「プロジェクト」バーの「ナビゲータの表示オプション」を選択し、「ライブラリの表示」を選択します。

5. 「WebCenterドキュメント・ライブラリ・サービス・ビュー」ライブラリを開き、「doclib-service-view.jar」→「oracle.webcenter.doclib」→「view」→「jsf」→「taskflows」→「presenter」の順に開きます。

6. 「presenterSingleView.jsff」を右クリックして、「開く」を選択します。

7. 「ソース」ビューで、次のようにメインaf:panelGroupLayoutコンポーネントのコードを編集します。

<af:panelGroupLayout id="psvPgl1"
partialTriggers="psvCtb3 psvPopup2 psvPopup3 psvPopup4 psvCbNp1 psvCbNp0"
layout="vertical"
inlineStyle="#{composerContext.subView == 'contentContribution'
and pageServiceBean.canEdit ? 'border:2px dashed blue' : ''}">

ヒント:

2px dashed blueの境界を別のスタイルに変更することもできます。

8. 次のようにaf:panelBoxコンポーネントのコードを編集します。

<af:panelBox id="psvPbNp0" showHeader="never" background="light"
ramp="highlight" inlineStyle="width:350px"
rendered="#{composerContext.subView == 'layout'
and backingBeanScope.presenterBacking.nodePending
and pageServiceBean.canEdit}">

9. contentContributionファセットの下にあるaf:toolbar - 1コンポーネントのコードを次のように編集します。

<af:toolbar id="psvTb1" flex="1"
stretchId="psvSp1" rendered="#{pageServiceBean.canEdit}">

10. ファイルを保存します。

23.5 WebCenterポータルまたはデプロイ済WebCenter Portalアプリケーションへのタスク・フローのカスタマイズの適用

前述の項で、WebCenter Portalのツールとサービス・タスク・フローのカスタマイズ方法について、異なるシナリオで説明しました。これらの演習では、生成されたMDSカスタマイズが出力されます。カスタマイズは、libraryCustomizationパッケージの下のアプリケーションのPortalまたはViewControllerプロジェクトに、.xml.xmlまたは.jsff.xmlファイルとして表示されます。これらのカスタマイズ・ドキュメントは、基本的に実行時のカスタマイズの動作を示すベース・ドキュメントの最上部に、MDSが変更を適用するための手順です。

タスク・フローのカスタマイズを完了した後、これをデプロイ済アプリケーションに適用する必要があります。実行時にJDeveloperのタスク・フローで実行されるカスタマイズを表示するには、これらのカスタマイズをデプロイ済アプリケーションのMDSリポジトリにインポートする必要があります。

注意:

このプロセスにより、ランタイムWebCenter Portalアプリケーションのメタデータ・リポジトリが更新され、これらの手順の実行前にMDSスキーマがバックアップされます。また、カスタマイズを開発環境またはステージング環境でカスタマイズをテストすることもベスト・プラクティスです。

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

- 第23.5.1項「WebCenter Portal Frameworkアプリケーション: メタデータ・デプロイメント・プロファイルの作成」

- 第23.5.2項「JDeveloperからの直接的なタスク・フローのカスタマイズのデプロイ」

- 第23.5.3項「WLSTを使用したタスク・フローのカスタマイズのデプロイ」

23.5.1 WebCenter Portal Frameworkアプリケーション: メタデータ・デプロイメント・プロファイルの作成

Portal Frameworkアプリケーションの場合は、まずメタデータ・デプロイメント・プロファイルを作成する必要があります。

注意:

WebCenter Portalタスク・フロー・カスタマイズ・アプリケーションを使用してWebCenter Portalのタスク・フローをカスタマイズしている場合、これらの手順は不要です。

メタデータ・デプロイメント・プロファイルを作成するには:

1. アプリケーション・ナビゲータで、アプリケーション名を右クリックし、「アプリケーション・プロパティ」を選択します(図23-14)。

図23-14 「アプリケーション・プロパティ」

2. 「デプロイメント」をクリックし、「新規」をクリックして新規メタデータ・デプロイメント・プロファイルを作成します。

3. 「デプロイメント・プロファイルの作成」ダイアログ(図23-15)の「アーカイブ・タイプ」で、ドロップダウン・リストから「MARファイル」を選択します。

図23-15 デプロイメント・プロファイルの作成

4. 「OK」をクリックして「デプロイメント・プロファイルの作成」ダイアログを閉じます。

5. 「OK」をクリックしてから再び「OK」をクリックして、デプロイメント・プロファイルの作成を終了します。

23.5.2 JDeveloperからの直接的なタスク・フローのカスタマイズのデプロイ

JDeveloperから直接、タスク・フローのカスタマイズをデプロイできます。

タスク・フローのカスタマイズをJDeveloperから直接デプロイするには:

1. アプリケーション・ナビゲータで、アプリケーション名を右クリックし、「デプロイ」を選択してメタデータ・デプロイメント・プロファイルを選択します(図23-16)。

図23-16 メタデータ・デプロイメント・プロファイルのデプロイ

2. 「メタデータのデプロイ」ダイアログ(図23-17)で、「デプロイ済アプリケーションへのエクスポート」を選択して「次へ」をクリックします。

図23-17 「metadataのデプロイ」ダイアログ

3. 「アプリケーション・サーバー」ページ(図23-18)で、デプロイするインスタンスのアプリケーション・サーバー接続を選択するか、+アイコンをクリックして新しい接続を作成します。「次へ」をクリックします。

図23-18 metadataのデプロイ: アプリケーション・サーバー

4. 「サーバー・インスタンス」ページ(図23-19)で、カスタマイズしているアプリケーションをデプロイするサーバーを選択します。複数のサーバーで単一のアプリケーションをホストする高可用性インストールの場合、カスタマイズは1つのサーバーにのみデプロイする必要があります。「次へ」をクリックします。

図23-19 「metadataのデプロイ」ダイアログ: サーバー・インスタンス

5. 「デプロイ済アプリケーション」ページ(図23-20)で、カスタマイズをデプロイするアプリケーションを選択して、「次へ」をクリックします。

図23-20 metadataのデプロイ: デプロイ済アプリケーション

6. 「終了」をクリックしてカスタマイズをデプロイします。

23.5.3 WLSTを使用したタスク・フローのカスタマイズのデプロイ

WLSTコマンドimportMetadataを使用してタスク・フローのカスタマイズをデプロイすることもできます。

WLSTを使用してタスク・フローのカスタマイズをデプロイするには:

1. アプリケーション・ナビゲータで、アプリケーション名を右クリックし、「デプロイ」を選択してメタデータ・デプロイメント・プロファイルの名前を選択します(図23-21)。

図23-21 メタデータ・デプロイメント・プロファイルのデプロイ

2. 「metadataのデプロイ」ダイアログで、「MARにデプロイ」ファイルを選択して「終了」をクリックします。

ヒント:

また、「デプロイ済アプリケーションにエクスポート」オプションを選択してプリケーションをデプロイするサーバーの接続詳細を構成し、適切なアプリケーションを選択することでデプロイ済アプリケーションにメタデータをエクスポートできます。

3. JDeveloperは、JDEV_USERホーム・ディレクトリのアプリケーション・ディレクトリにMARファイルを作成します。カスタマイズが含まれるこのMARファイルを、ターゲット・アプリケーションがデプロイされるディレクトリにコピーします。このアプリケーションのカスタマイズ・バージョンを常に保持できるよう、このファイルのバックアップを管理します。

4. MDS WLSTコマンドimportMetadataを使用して、タスク・フローのカスタマイズをアプリケーションのMDSリポジトリにインポートします。
例23-3は、importMetadata WLSTコマンドを実行する方法の例を示しています。コマンド構文や詳細な例は、『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』のimportMetadataに関する項を参照してください。

例23-3 カスタマイズをインポートするコマンドライン

wls:/weblogic/serverConfig>importMetadata(application='webcenter',
server='WC_Spaces', fromLocation='/path/metadata.mar',
docs='/**')

WLSTコマンドを実行する方法については、Oracle Fusion Middleware Oracle WebCenter Portalの管理のOracle WebLogic Scripting Tool (WLST)コマンドの実行に関する項を参照してください。

23.6 デプロイ済WebCenter Portalアプリケーションからのカスタマイズの削除

タスク・フローのカスタマイズを削除して、タスク・フローの動作またはルック・アンド・フィールを元のデプロイメントに戻すことができます。

MDS WLSTコマンドdeleteMetadataを使用して、適用されたカスタマイズを削除します。

注意:

deleteMetadataコマンドは、誤って使用するとメタデータ・ドキュメントを意図せず失う場合があるため、注意して使用する必要があります。次のサンプル・コマンドは、第23.4.1.2項「例: ディスカッション・フォーラム・タスク・フローのカスタマイズ」で作成したカスタマイズを削除します。

例23-4は、deleteMetadata WLSTコマンドを実行する方法の例を示しています。コマンド構文や詳細な例は、『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』のdeleteMetadataに関する項を参照してください。

例23-4 デプロイ済WebCenter Portalアプリケーションからカスタマイズ・メタデータを削除するコマンド

deleteMetadata(application='webcenter',server='WC_Spaces',
docs='/oracle/webcenter/webcenterapp/view/taskflows/discussionServices/**',
excludeBaseDocs='true')

WLSTコマンドを実行する方法については、Oracle Fusion Middleware Oracle WebCenter Portalの管理のOracle WebLogic Scripting Tool (WLST)コマンドの実行に関する項を参照してください。

23.7 カスタマイズ可能なOracle WebCenter Portalのツールとサービス・タスク・フローのカタログ

次のOracle WebCenter Portalのツールとサービス・タスク・フローは、ビュー・レベルのカスタマイズで有効です。これらのタスク・フローは、ライブラリまたはJARファイル内、および表23-1で指定した定義パスにあります。

注意:

分析タスク・フローをカスタマイズするには、次のJARをプロジェクトに追加する必要があります。

JDEV_HOME/webcenter/modules/oracle.webcenter.framework_11.1.1/analytics-reporting-service-view.jar

JDEV_HOME/webcenter/modules/oracle.webcenter.framework_11.1.1/analytics-reporting-service-model.jar

表23-1 Oracle WebCenter Portalのツールとサービスのカスタマイズ可能なタスク・フロー

説明

ライブラリ/JARファイル

定義パス

ノート

アクティビティ・ストリーム - ミニ・ビュー

WebCenter Portalのアクティビティ・ストリーミング・サービス・ビュー

oracle/webcenter/activitystreaming/controller/taskflows/activity-streaming-miniview.xml

アクティビティ・ストリームの表はカスタム・タグで、カスタマイズできません。

アクティビティ・ストリーム - メイン・ビュー

WebCenter Portalのアクティビティ・ストリーミング・サービス・ビュー

oracle/webcenter/activitystreaming/controller/taskflows/activity-streaming-mainview.xml

アクティビティ・ストリームの表はカスタム・タグで、カスタマイズできません。

分析 - コンソール

analytics-reporting-service-view.jarおよびanalytics-reporting-service-model.jarに含まれるタスク・フロー

oracle/webcenter/analytics/view/jsf/taskflows/seeded/analytics-console.xml

分析 - WebCenter Portalトラフィック

analytics-reporting-service-view.jarおよびanalytics-reporting-service-model.jarに含まれるタスク・フロー

oracle/webcenter/analytics/view/jsf/taskflows/seeded/analytics-report-summary.xml

分析 - ページ・トラフィック

analytics-reporting-service-view.jarおよびanalytics-reporting-service-model.jarに含まれるタスク・フロー

oracle/webcenter/analytics/view/jsf/taskflows/seeded/analytics-report-page-traffic.xml

分析 - ログイン・メトリック

analytics-reporting-service-view.jarおよびanalytics-reporting-service-model.jarに含まれるタスク・フロー

oracle/webcenter/analytics/view/jsf/taskflows/seeded/analytics-report-login.xml

分析 - ポートレット・トラフィック

analytics-reporting-service-view.jarおよびanalytics-reporting-service-model.jarに含まれるタスク・フロー

oracle/webcenter/analytics/view/jsf/taskflows/seeded/analytics-report-portlet-traffic.xml

分析 - ポートレット・レスポンス時間

analytics-reporting-service-view.jarおよびanalytics-reporting-service-model.jarに含まれるタスク・フロー

oracle/webcenter/analytics/view/jsf/taskflows/seeded/analytics-report-portlet-resptime.xml

分析 - ポートレット・インスタンス・トラフィック

analytics-reporting-service-view.jarおよびanalytics-reporting-service-model.jarに含まれるタスク・フロー

oracle/webcenter/analytics/view/jsf/taskflows/seeded/analytics-report-portlet-instance-traffic.xml

分析 - ポートレット・インスタンス・レスポンス時間

analytics-reporting-service-view.jarおよびanalytics-reporting-service-model.jarに含まれるタスク・フロー

oracle/webcenter/analytics/view/jsf/taskflows/seeded/analytics-report-portlet-instance-resptime.xml

分析 - 検索メトリック

analytics-reporting-service-view.jarおよびanalytics-reporting-service-model.jarに含まれるタスク・フロー

oracle/webcenter/analytics/view/jsf/taskflows/seeded/analytics-report-search-phrases.xml

分析 - ドキュメント・メトリック

analytics-reporting-service-view.jarおよびanalytics-reporting-service-model.jarに含まれるタスク・フロー

oracle/webcenter/analytics/view/jsf/taskflows/seeded/analytics-report-document-view.xml

分析 - Wikiメトリック

analytics-reporting-service-view.jarおよびanalytics-reporting-service-model.jarに含まれるタスク・フロー

oracle/webcenter/analytics/view/jsf/taskflows/seeded/analytics-report-wiki-view.xml

分析 - ブログ・メトリック

analytics-reporting-service-view.jarおよびanalytics-reporting-service-model.jarに含まれるタスク・フロー

oracle/webcenter/analytics/view/jsf/taskflows/seeded/analytics-report-blog-view.xml

分析 - ディスカッション・メトリック

analytics-reporting-service-view.jarおよびanalytics-reporting-service-model.jarに含まれるタスク・フロー

oracle/webcenter/analytics/view/jsf/taskflows/seeded/analytics-report-discussion-forum-view.xml

お知らせ

WebCenter Portalのお知らせサービス・ビュー

oracle/webcenter/collab/announcement/view/taskflows/main-view-definition.xml

お知らせ - クイック・ビュー

WebCenter Portalのお知らせサービス・ビュー

oracle/webcenter/collab/announcement/view/taskflows/mini-view-definition.xml

アプリケーション・ナビゲータ

WebCenter Portalビュー

oracle/webcenter/webcenterapp/view/taskflows/applinks/AppNavigatorRegion.xml

ブログ

oracle/webcenter/blog/view/jsf/taskflows/blogDigestViewer/blog-main-view.xml

カレンダ・メイン・ビュー

WebCenter Portalのイベント・サービス・ビュー

oracle/webcenter/collab/events/view/taskflows/calendar-main-view.xml

カレンダ・ミニ・ビュー

WebCenter Portalのイベント・サービス・ビュー

oracle/webcenter/collab/events/view/taskflows/calendar-mini-view.xml

言語の選択タスク・フロー

WebCenter Portalビュー

oracle/webcenter/webcenterapp/view/taskflows/translations/ChooseLanguageTaskflow.xml

コミュニティ・ブラウザ・リージョン

WebCenter Portalビュー

oracle/webcenter/community/view/taskflows/browser/CommunityBrowserRegion.xml

コミュニティ連絡先タスク・フロー

WebCenter Portalビュー

oracle/webcenter/people/view/jsf/regions/community-contacts-task-flow.xml

コネクション - カード

WebCenter Portalピープル・コネクション・ビュー

oracle/webcenter/peopleconnections/connections/controller/taskflows/table-of-connections-taskflow.xml

コネクション - 詳細ビュー

WebCenter Portalピープル・コネクション・ビュー

oracle/webcenter/peopleconnections/connections/controller/taskflows/connections-mini-view-advanced-taskflow.xml

コネクション

WebCenter Portalピープル・コネクション・ビュー

oracle/webcenter/peopleconnections/connections/controller/taskflows/connections-main-view-taskflow.xml

コネクション - クイック・ビュー

WebCenter Portalピープル・コネクション・ビュー

oracle/webcenter/peopleconnections/connections/controller/taskflows/connections-main-view-untabbed-taskflow.xml

コネクション - ミニ・ビュー

WebCenter Portalピープル・コネクション・ビュー

oracle/webcenter/peopleconnections/connections/controller/taskflows/connections-mini-view-taskflow.xml

カスタマイズ・マネージャ・タスク・フロー

Oracle Composer

oracle/adfinternal/pageeditor/manager/taskflows/customization-manager-taskflow.xml

ディスカッション・フォーラム

WebCenter Portalのディスカッション・サービス・ビュー

oracle/webcenter/collab/forum/view/taskflows/main-task-flow.xml

ディスカッション - 人気のあるトピック

WebCenter Portalのディスカッション・サービス・ビュー

oracle/webcenter/collab/forum/view/taskflows/popularTopic-task-flow.xml

ディスカッション - 最近のトピック

WebCenter Portalのディスカッション・サービス・ビュー

oracle/webcenter/collab/forum/view/taskflows/recentTopic-task-flow.xml

ディスカッション - クイック・ビュー

WebCenter Portalのディスカッション・サービス・ビュー

oracle/webcenter/collab/forum/view/taskflows/miniview-task-flow.xml

ディスカッション - 監視フォーラム

WebCenter Portalのディスカッション・サービス・ビュー

oracle/webcenter/collab/forum/view/taskflows/watchedForum-task-flow.xml

ディスカッション - 監視トピック

WebCenter Portalのディスカッション・サービス・ビュー

oracle/webcenter/collab/forum/view/taskflows/watchedTopic-task-flow.xml

ドキュメント - AutoVue

WebCenter Portalのドキュメント・ライブラリ・サービス・ビュー

oracle/webcenter/doclib/view/jsf/taskflows/docViewer/autovue.xml

ドキュメント - コンテンツ・プレゼンタ

WebCenter Portalのドキュメント・ライブラリ・サービス・ビュー

oracle/webcenter/doclib/view/jsf/taskflows/presenter/contentPresenter.xml

ドキュメント - ドキュメント・マネージャ

WebCenter Portalのドキュメント・ライブラリ・サービス・ビュー

oracle/webcenter/doclib/view/jsf/taskflows/docManager/documentManager.xml

ドキュメント - ドキュメント・ナビゲータ

WebCenter Portalのドキュメント・ライブラリ・サービス・ビュー

oracle/webcenter/doclib/view/jsf/taskflows/treeNav/treeNavigator.xml

ドキュメント - ドキュメント・ビューア

WebCenter Portalのドキュメント・ライブラリ・サービス・ビュー

oracle/webcenter/doclib/view/jsf/taskflows/docViewer/documentViewer.xml

ドキュメント - フォルダ・ビューア

WebCenter Portalのドキュメント・ライブラリ・サービス・ビュー

oracle/webcenter/doclib/view/jsf/taskflows/folderViewer/folderView.xml

ドキュメント - ドキュメント・エクスプローラ

WebCenter Portalのドキュメント・ライブラリ・サービス・ビュー

oracle/webcenter/doclib/view/jsf/taskflows/explore/explorer.xml

ドキュメント - リスト・ビューア

WebCenter Portalのドキュメント・ライブラリ・サービス・ビュー

oracle/webcenter/doclib/view/jsf/taskflows/docListViewer.xml

ドキュメント - メイン・ビュー

WebCenter Portalのドキュメント・ライブラリ・サービス・ビュー

oracle/webcenter/doclib/view/jsf/taskflows/mainView.xml

ドキュメント - ミニ・プロパティ

WebCenter Portalのドキュメント・ライブラリ・サービス・ビュー

oracle/webcenter/doclib/view/jsf/taskflows/miniProperties/miniProps.xml

ドキュメント - プロパティ

WebCenter Portalのドキュメント・ライブラリ・サービス・ビュー

oracle/webcenter/doclib/view/jsf/taskflows/docViewer/docInfo.xml

ドキュメント - 最近のドキュメント

WebCenter Portalのドキュメント・ライブラリ・サービス・ビュー

oracle/webcenter/doclib/view/jsf/taskflows/recentDocuments.xml

ドキュメント - リッチ・テキスト・エディタ

WebCenter Portalのドキュメント・ライブラリ・サービス・ビュー

oracle/webcenter/doclib/view/jsf/taskflows/richTextEditor/editor.xml

ドキュメント - アップロード

WebCenter Portalのドキュメント・ライブラリ・サービス・ビュー

oracle/webcenter/doclib/view/jsf/taskflows/upload/uploader.xml

ドキュメント - バージョン履歴

WebCenter Portalのドキュメント・ライブラリ・サービス・ビュー

oracle/webcenter/doclib/view/jsf/taskflows/versionHistory/history.xml

イベント

WebCenter Portalのイベント・サービス・ビュー

oracle/webcenter/collab/events/view/taskflows/calendar-main-view.xml

エクスポート・リージョン

内部 - WebCenter Portal管理者によってポータルまたはポータル・テンプレートのエクスポートのために起動されます。

oracle/webcenter/webcenterapp/view/taskflows/lifecycle/Exportregion.xml

フィードバック

WebCenter Portalピープル・コネクション・ビュー

oracle/webcenter/peopleconnections/kudos/controller/taskflows/KudosDetailViewer.xml

フィードバック - クイック・ビュー

WebCenter Portalピープル・コネクション・ビュー

oracle/webcenter/peopleconnections/kudos/controller/taskflows/KudosMiniViewer.xml

リンク

WebCenter Portalのリンク・サービス・ビュー

oracle/webcenter/relationship/view/jsf/resources/links-detail.xml

リンク・ダイアログ

WebCenter Portalのリンク・サービス・ビュー

oracle/webcenter/relationship/view/jsf/resources/links-detail-popup.xml

リスト - メイン・ビュー

WebCenter Portalのリスト・サービス・ビュー

oracle/webcenter/list/view/jsf/regions/main-view-task-flow.xml

list-instance-view-task-flow

WebCenter Portalのリスト・サービス・ビュー

oracle/webcenter/list/view/jsf/regions/list-instance-view-task-flow.xml

このタスク・フローの表の列は実行時に動的に設定され、カスタマイズできません。

メッセージ・ボード - クイック・ビュー

WebCenter Portalピープル・コネクション・ビュー

oracle/webcenter/peopleconnections/wall/controller/taskflows/WallViewer.xml

メッセージ・ボード

WebCenter Portalピープル・コネクション・ビュー

oracle/webcenter/peopleconnections/wall/controller/taskflows/WallDetailViewer.xml

ナビゲーション - メニュー

ナビゲーションのタスク・フロー

oracle/webcenter/navigationtaskflows/view/pagemenu-definition.xml

ナビゲーション - ブレッドクラム

ナビゲーションのタスク・フロー

oracle/webcenter/navigationtaskflows/view/pagebreadcrumb-definition.xml

ナビゲーション - ツリー

ナビゲーションのタスク・フロー

oracle/webcenter/navigationtaskflows/view/pagetree-definition.xml

組織ビュー

WebCenter Portalピープル・コネクション・ビュー

oracle/webcenter/peopleconnections/profile/view/jsf/regions/orgview/organization-view.xml

ページ - 新規作成

WebCenter Portalのページ・サービス・ビュー

oracle/webcenter/page/view/jsf/fragments/page-create-page.xml

投票 - 投票マネージャ

WebCenter Portalの投票とアンケート・サービス・ビュー

oracle/webcenter/collab/survey/view/jsf/taskflows/list-surveys-definition.xml

投票 - クイック・ビュー

WebCenter Portalの投票とアンケート・サービス・ビュー

oracle/webcenter/collab/survey/view/jsf/taskflows/quick-poll-definition.xml

投票 - 投票の実施

WebCenter Portalの投票とアンケート・サービス・ビュー

oracle/webcenter/collab/survey/view/jsf/taskflows/take-polls-definition.xml

投票 - 投票結果の表示

WebCenter Portalの投票とアンケート・サービス・ビュー

oracle/webcenter/collab/survey/view/jsf/taskflows/view-results-definition.xml

プロファイル・ギャラリ

WebCenter Portalピープル・コネクション・ビュー

oracle/webcenter/peopleconnections/personalweb/view/jsf/regions/profile-gallery.xml

プロファイル

WebCenter Portalピープル・コネクション・ビュー

oracle/webcenter/peopleconnections/profile/view/jsf/regions/extended/extended-profile.xml

プロファイル - スナップショット

WebCenter Portalピープル・コネクション・ビュー

oracle/webcenter/peopleconnections/view/jsf/regions/profile-snapshot.xml

パブリッシャ

WebCenter Portalピープル・コネクション・ビュー

oracle/webcenter/peopleconnections/wall/controller/taskflows/Publisher.xml

推奨コネクション

WebCenter Portalのアクティビティ・グラフ・サービス・ビュー

view/oracle/webcenter/activitygraph/controller/taskflows/recommended-connections.xml

このタスク・フローは、主にコードで生成されます。コンテンツはリソース・ファイルおよびメタデータ・マッピングを介してのみカスタマイズできます。

リソース・アクション・ハンドら - リソース・ビューア

WebCenter Portalの共通ビュー

oracle/webcenter/framework/service/controller/taskflows/resourceViewer.xml

最近のアクティビティ

WebCenter Portalの最近のアクティビティ・サービス・ビュー

oracle/webcenter/recentactivity/controller/taskflows/recent-activities.xml

RSSビューア

WebCenter PortalのRSSサービス・ビュー

oracle/webcenter/rssviewer/view/jsf/fragments/RSSViewerTaskFlow.xml

検索

WebCenter Portalの検索サービス・ビュー

oracle/webcenter/search/controller/taskflows/searchResults.xml

検索プリファレンス

WebCenter Portalの検索サービス・ビュー

oracle/webcenter/search/controller/taskflows/preferences.xml

検索 - 保存済の検索

WebCenter Portalの検索サービス・ビュー

oracle/webcenter/search/controller/taskflows/allSavedSearches.xml

検索ツールバー

WebCenter Portalの検索サービス・ビュー

oracle/webcenter/search/controller/taskflows/localToolbarSearch.xml

セキュリティ - 偽装

WebCenter Portalの共通ビュー

oracle/webcenter/security/view/impersonation/jsf/taskflows/impersonation-task-flow-definition.xml

セキュリティ - 偽装 - マイ偽装者

WebCenter共通ビュー

oracle/webcenter/security/view/impersonation/jsf/taskflows/impersonation-myimpersonators-task-flow-definition.xml

セキュリティ - 偽装 - マイ被偽装者

WebCenter共通ビュー

oracle/webcenter/security/view/impersonation/jsf/taskflows/impersonation-myimpersonatees-task-flow-definition.xml

セキュリティ - 自己登録

WebCenter共通ビュー

oracle/webcenter/security/view/selfregistration/jsf/taskflows/selfreg-task-flow-definition.xml

WebCenter Portalおよびカスタム・アプリケーションで使用されるパブリック・ユーザー登録。どちらもカスタマイズ可能です。

セキュリティ - 自己登録 - 公開招待

WebCenter共通ビュー

oracle/webcenter/security/view/selfregistration/jsf/taskflows/invitation-task-flow-definition.xml

WebCenter Portalに参加するためのパブリック・ユーザーの招待カスタム・アプリケーションでのみ使用されます。

セキュリティ - エンタープライズ・ロール - メンバー

WebCenter共通ビュー

oracle/webcenter/security/view/rolemembers/jsf/taskflows/rolemembers-task-flow-definition.xml

エンタープライズ・グループのメンバーをリストします。WebCenter Portalおよびカスタム・アプリケーションで使用されます。どちらもカスタマイズ可能です。

セキュリティ - エンタープライズ・ロール - メンバー検索

WebCenter共通ビュー

oracle/webcenter/security/view/rolemembers/jsf/taskflows/rolemembers-psearch-task-flow-definition.xml

特定のパターンのエンタープライズ・グループのメンバーを返します。WebCenter Portalおよびカスタム・アプリケーションで使用されます。どちらもカスタマイズ可能です。

セキュリティ - エンタープライズ・ロール - メンバー・ビューア

WebCenter共通ビュー

oracle/webcenter/security/view/rolemembers/jsf/taskflows/rolemembers-browser-task-flow-definition.xml

タブ付きページです。1つのタブにはグループのメンバーが表示され、もう1つのタブには検索フォームが提供されます。WebCenter Portalおよびカスタム・アプリケーションで使用されます。どちらもカスタマイズ可能です。

セキュリティ - ロール・マネージャ

WebCenter共通ビュー

oracle/webcenter/security/view/rolemanager/jsf/taskflows/global-rolemanager-task-flow-definition.xml

アプリケーション・ロールの作成、変更および削除を行うインタフェースです。カスタム・アプリケーションでのみ使用されます。

セキュリティ - 外部アプリケーションの資格証明プロビジョニング

WebCenter Portalの外部アプリケーション・サービス・ビュー

oracle/adfinternal/extapp/view/fragments/extapp-credential-provisioning-taskflow.xml

特定の外部アプリケーションの資格証明プロビジョニングです。WebCenter Portalおよびカスタム・アプリケーションで使用されます。どちらもカスタマイズ可能です。

セキュリティ - 外部アプリケーションのパスワード変更

WebCenter Portalの外部アプリケーション・サービス・ビュー

oracle/adfinternal/extapp/view/fragments/extapp-change-password-taskflow.xml

作成済のすべての外部アプリケーションのパスワードを変更するための画面です。WebCenter Portalおよびカスタム・アプリケーションで使用されます。どちらもカスタマイズ可能です。

類似アイテム

WebCenter Portalのアクティビティ・グラフ・サービス・ビュー

view/oracle/webcenter/activitygraph/controller/taskflows/similar-items.xml

このタスク・フローは、主にコードで生成されます。コンテンツはリソース・ファイルおよびメタデータ・マッピングを介してのみカスタマイズできます。

類似ポータル

WebCenter Portalのアクティビティ・グラフ・サービス・ビュー

view/oracle/webcenter/activitygraph/controller/taskflows/similar-group-space.xml

このタスク・フローは、主にコードで生成されます。コンテンツはリソース・ファイルおよびメタデータ・マッピングを介してのみカスタマイズできます。

ポータル

WebCenter Portalビュー

oracle/webcenter/community/view/taskflows/browsers/CommunityBrowserRegion.xml

ポータル・メンバー

WebCenter Portalビュー

oracle/webcenter/webcenterapp/view/taskflows/admin/table-of-members-taskflow.xml

サブスクリプション・プリファレンス

WebCenter Portalの通知サービス・ビュー

oracle/webcenter/notification/view/jsf/regions/SubscriptionPreferences.xml

このタスク・フローのサブスクリプション・プリファレンス表はカスタマイズできません(af:iteratorを使用)。

サブスクリプション・ビューア

WebCenter Portalの通知サービス・ビュー

oracle/webcenter/notification/view/jsf/regions/SubscriptionsViewer.xml

タグ・クラウド

WebCenter Portalのタグ付けサービス・ビュー

oracle/webcenter/tagging/controller/taskflows/tag-selection.xml

タグ付けダイアログ

WebCenter Portalのタグ付けサービス・ビュー

oracle/webcenter/tagging/controller/taskflows/launch-dialog.xml

タグ付けしたアイテム

WebCenter Portalのタグ付けサービス・ビュー

oracle/webcenter/tagging/controller/taskflows/related-resources.xml

タグ付け - 個人ビュー

WebCenter Portalのタグ付けサービス・ビュー

oracle/webcenter/tagging/controller/taskflows/tagging-personal-view.xml

タグ付け - 関連リンク

WebCenter Portalのタグ付けサービス・ビュー

oracle/webcenter/tagging/controller/taskflows/related-links.xml

タグ付け - 類似アイテム

WebCenter Portalのタグ付けサービス・ビュー

oracle/webcenter/tagging/controller/taskflows/related-links.xml

トップ・アイテム

WebCenter Portalのアクティビティ・グラフ・サービス・ビュー

oracle/webcenter/activitygraph/controller/taskflows/top-items.xml

このタスク・フローは、主にコードで生成されます。コンテンツはリソース・ファイルおよびメタデータ・マッピングを介してのみカスタマイズできます。

ワークリスト

WebCenter Portalのワークリスト・サービス・ビュー

oracle/webcenter/worklist/view/jsf/taskFlowDefs/worklist.xml

第IV部

コンテンツの統合と公開

第IV部の内容は次のとおりです。

- 第24章「コンテンツの統合と公開の概要」

- 第25章「コンテンツ・リポジトリ接続の構成」

- 第26章「コンテンツ・データ・コントロールの使用」

- 第27章「コンテンツ・プレゼンタ表示テンプレートの作成」

- 第28章「ドキュメントの統合」

- 第29章「ポータル・ページへのコンテンツ・タスク・フローおよびドキュメント・コンポーネントの追加」

- 第30章「Wikiとブログの統合」

- 第31章「Content Management REST API」

24 コンテンツの統合と公開の概要

この章では、コンテンツ・データ・コントロール、Content Management Interoperability Services (CMIS) REST API、コンテンツ・プレゼンタおよびドキュメント・ツールといったWebCenter Portal Frameworkアプリケーションにコンテンツを統合する様々な方法について説明します。選択する方法は、アプリケーションの要件と、コンテンツをどのようにエンド・ユーザーに公開するかによって異なります。

コンテンツをPortal Frameworkアプリケーションに統合するには、次のいずれかの方法を使用します(詳細は、この章の最後に紹介する関連資料を参照)。

- ドキュメントのタスク・フローとコンポーネントでは、Wikiやブログなど、Portal Frameworkアプリケーションでページ上にフォルダとファイルを表示するための様々な形式が提供されます。アプリケーションに合ったタスク・フローを選択することによって、Content Server、Oracle PortalまたはSharePointコンテンツ・リポジトリにあるフォルダとファイルへのアクセス、追加および管理を行う機能、それらのファイルとフォルダのプロパティを構成し表示する機能、およびファイルとフォルダのコンテンツを検索する機能が提供されます。

注意:

SharePointをコンテンツ・リポジトリとして使用するには、第25.2.3.1項「SharePoint用Oracle WebCenterアダプタのインストール」の説明に従って、SharePointアダプタのインストールが必要です。SharePointの管理は、Oracle Enterprise Manager Fusion Middleware ControlコンソールではなくWLSTコマンドを使用して行います。

ドキュメント・タスク・フローとドキュメント・コンポーネント(リンク、プレビューおよびイメージなど)を使用すると、コンテンツをアプリケーションに追加し、アプリケーションに組み込まれたドキュメント・タスク・フローとコンテンツもエンド・ユーザーに用意して、実行時にドキュメントの管理、表示および検索ができます。

- コンテンツ・プレゼンタを使用すると、Portal Frameworkアプリケーションにおけるコンテンツの選択およびプレゼンテーションを細部までカスタマイズできます。接続されるコンテンツ・リポジトリがContent Serverであり、WebCenter Portal管理者が前提条件構成を完了させた場合のみ、コンテンツ・プレゼンタ・タスク・フローが利用できます。コンテンツ・プレゼンタを使用すると、単一のコンテンツ・アイテム、フォルダの下にあるコンテンツ、アイテムのリストまたはコンテンツの問合せを選択するか、パーソナライズ・コンダクタのシナリオの結果に基づいてコンテンツを選択してから、Portal Frameworkアプリケーション内のページにコンテンツをレンダリングするためのテンプレートを選択できます。コンテンツ・プレゼンタでは表示されるコンテンツの追加や管理においてドキュメント・ツールに依存しません。

- CMIS REST APIでは、コンテンツ・サーバー内のコンテンツを表面化および管理できます。

- コンテンツ・データ・コントロールでは、JCRアダプタを使用することによって、コンテンツ・サーバー、Oracle PortalまたはSharePointコンテンツ・リポジトリに格納されたコンテンツへの読取り専用アクセスを実現できます。また、Portal Frameworkアプリケーションにおけるコンテンツの表示方法を厳重に管理することもできます。
この機能は主に、以前のリリースとの後方互換性を維持するため、およびコンテンツ・プレゼンタまたはドキュメント・ツールとそのタスク・フローによって対応できない要件を満たすために提供されます。

表24-1に、これらの方法の概要を、ニーズに対して最適な方法を選択できるよう比較形式で示します。

表24-1 コンテンツをFrameworkアプリケーションに統合する方法

コンテンツ・データ・コントロール

Content Management REST API

コンテンツ・プレゼンタ

ドキュメント・ツール

リポジトリ

- コンテンツ・サーバー

- Oracle Portal

- SharePoint

- コンテンツ・サーバー

- コンテンツ・サーバー

- コンテンツ・サーバー

- Oracle Portal

- SharePoint

コンテンツ・タイプ

- フォルダとコンテンツ・ファイル。

- メタデータ・プロパティをサポートするフォルダとコンテンツ・ファイル。

- メタデータ・プロパティをサポートするフォルダとコンテンツ・ファイル。

- Oracle Site Studioリージョン定義ベースのコンテンツをサポートします。

- フォルダとコンテンツ・ファイル。

- コンテンツ・サーバーのみ。フォルダとコンテンツ・ファイルのメタデータ・プロパティをサポートします。

コンテンツ表示

- ADFレンダリング・コンポーネント(ADF実行リンク、ADF実行ボタン、ADFイメージおよびADFインライン・フレーム機能)を使用してコンテンツを表面化します。

- REST APIとクライアント側またはサーバー側のカスタム・アプリケーション・コードを使用してコンテンツを表面化します。

- 単一アイテム選択、フォルダおよび問合せ結果によりコンテンツを表面化します。

- 主にコンテンツのレンダリングを目的としたタスク・フロー・ベースのコンポーネント。

- 単一アイテム選択、フォルダおよび問合せ結果によりコンテンツを表面化します。

- 表示テンプレート(組込みテンプレートまたはJDeveloperで開発されたカスタム表示テンプレート)内にコンテンツを表面化します。

- Oracle Site Studioの表示テンプレートをSite Studioコンテンツに再利用します。

- WebCenterパーソナライズ・サービスのコンダクタ・シナリオ(問合せ結果)をサポートします。

- 主にコンテンツのコラボレーションと管理を目的としたタスク・フロー・ベースのコンポーネント。

Content Serverのみ:

- ドキュメント・プレビュー

- リンクの表示

- イメージの表示

- ファイル情報(プロパティ、バージョン履歴)の表示

- メタデータの表示

コンテンツ管理

なし

REST APIとクライアント側またはサーバー側のカスタム・アプリケーション・コードを使用してコンテンツを管理します。

フォルダとコンテンツ・ファイル、およびそれらに関連付けられたメタデータ・フィールドを作成、更新および削除します。

HTMLおよびSite Studioコンテンツのコンテキスト内コントリビューション編集。

グラフィカル・ユーザー・インタフェースを使用してコンテンツを管理します。

フォルダとコンテンツ・ファイルを作成、更新および削除します。

Content Serverのみ:

- 関連するメタデータ・プロパティの管理

- アイテム・レベルのセキュリティ

- Oracle Workflow (WebCenter Portalのみ)

- メタデータの表示

利点

様々なコンテンツ・リポジトリと統合された標準JCR API。

クライアント側のスタイル開発に役立つ柔軟なRESTベースAPI。

表示テンプレートを使用した柔軟な表示。

Oracle Site Studioのサポート。

簡単に管理対象コンテンツにアクセスできるUIを提供するタスク・フローの選択。

制限

コンテンツが読取り専用です。

Oracle Site Studioはサポートされません。

コンテンツがOracle Content Serverリポジトリ内に格納されている必要があります。

Oracle Site Studioはサポートされません。

コンテンツがコンテンツ・サーバー・リポジトリ内に格納されている必要があります。

Oracle Site Studioはサポートされません。

次の章では、使用する方法にかかわらず必要になる情報が提供されます。

- WebCenter Portalアプリケーションによって使用されるコンテンツ・リポジトリの構成と管理の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のコンテンツ・リポジトリの管理に関する項を参照してください。

- 分散しているコンテンツへのアクセスを提供するコンテンツ・リポジトリ接続の構成と編集については、第25章「コンテンツ・リポジトリ接続の構成」を参照してください。

次の章では、コンテンツ・データ・コントロールの使用に関する情報が提供されます。

- Javaコンテンツ・リポジトリ(JCR)データ・コントロールを使用して、コンテンツ・リポジトリへの読取り専用アクセスを可能にする方法については、第26章「コンテンツ・データ・コントロールの使用」を参照してください。

次のマニュアルでは、CMIS (Content Management Interoperability Services) REST APIの使用に関する情報が提供されます。

- Oracle Fusion Middleware Content Management REST Service開発者ガイド

次の章では、コンテンツ・プレゼンタの使用に関する情報が提供されます。

- 第27章「コンテンツ・プレゼンタ表示テンプレートの作成」

- 第29章「ポータル・ページへのコンテンツ・タスク・フローおよびドキュメント・コンポーネントの追加」

- WebCenter Portalアプリケーションで実行時にコンテンツを使用する方法については、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のコンテンツ・プレゼンタを使用したコンテンツの公開に関する項を参照してください。

次の章では、ドキュメント・タスク・フロー、ドキュメント・コンポーネント(リンク、インライン・フレームおよびイメージ)、Wiki、ブログなど、ドキュメント・ツールの使用に関する情報が提供されます。

- 第28章「ドキュメントの統合」

- 第29章「ポータル・ページへのコンテンツ・タスク・フローおよびドキュメント・コンポーネントの追加」

- 第30章「Wikiとブログの統合」

- WebCenter Portalアプリケーションで実行時にコンテンツを使用する方法については、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のポータルでのコンテンツの使用に関する項を参照してください。

25 コンテンツ・リポジトリ接続の構成

この章では、コンテンツに対するアクセスを提供するためにコンテンツ・リポジトリへの接続を構成する方法、およびPortal Frameworkアプリケーションでページにコンテンツを追加する方法について説明します。

Portal Frameworkアプリケーションにコンテンツを統合するその他の方法は、第24章「コンテンツの統合と公開の概要」を参照してください。

この章には次の項が含まれます。

- 第25.1項「コンテンツ・アダプタの概要」

- 第25.2項「コンテンツ・リポジトリ接続の構成」

- 第25.3項「コンテンツ・リポジトリ接続の編集」

- 第25.4項「新規Portal Frameworkアプリケーションに対する既存のリポジトリ接続の使用」

25.1 コンテンツ・アダプタの概要

Portal Frameworkアプリケーションでは、次のアダプタを使用できます。

- Oracle WebCenter Content: Content Server: Content Serverアダプタは、Content Serverによって管理される自動情報システムからのコンテンツを統合します。このシステムでは、Webサイトを共通アクセス・ポイントとして使用し、ビジネス情報を共有、管理および配信します。
このアダプタはOracle WebCenter Portal拡張機能バンドルでバンドルされているので、デフォルトで統合されます。

- Oracle Portal: Oracle Portalアダプタは、Oracle Portalスキーマに存在するコンテンツ・リポジトリからコンテンツを統合するために使用します。
このアダプタはOracle WebCenter Portal拡張機能バンドルでバンドルされているので、デフォルトで統合されます。

- SharePoint用Oracle WebCenterアダプタ: このアダプタは、Microsoft SharePoint 2007リポジトリからのコンテンツを統合するために使用します。
このアダプタは、第25.2.3.1項「SharePoint用Oracle WebCenterアダプタのインストール」の説明に従ってインストールする必要があります。

- ファイル・システム: ファイル・システム・アダプタは、オペレーティング・システムのファイル・システムに存在するコンテンツをJSFページに追加するために使用します。
このアダプタはOracle WebCenter Portal拡張機能バンドルでバンドルされているので、デフォルトで統合されます。

注意:

ファイル・システム・アダプタは、開発環境でのみ使用することを目的としています。

25.2 コンテンツ・リポジトリ接続の構成

JSFページで公開されるリポジトリ・コンテンツにアクセスするには、コンテンツ・リポジトリ接続が必要です。またこうした接続は、WebCenter Portal REST APIを通じてリポジトリ・コンテンツにアクセスするためにも必要です。

この項では、Oracle WebCenter Content: Content Server、Oracle Portal、SharePoint用Oracle WebCenterアダプタおよびファイル・システム・アダプタに基づいてコンテンツ・リポジトリ接続を構成する方法について説明します。コンテンツ・プレゼンタは、Content Serverコンテンツ・リポジトリで使用可能なコンテンツに接続して取得できます。JCRデータ・コントロールにより、Content Server、Oracle Portal、SharePoint用Oracle WebCenterアダプタおよびファイル・システムに接続できます。

接続は、アプリケーション・ナビゲータ内のアプリケーション・リソースの下およびリソース・パレット内のIDE接続の下に作成できます。

この項には次のサブセクションが含まれます:

- 第25.2.1項「Oracle Content Serverアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法」

- 第25.2.2項「Oracle Portalアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法」

- 第25.2.3項「SharePoint用Oracle WebCenterアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法」

- 第25.2.4項「ファイル・システム・アダプタに基づいてコンテンツ・リポジトリ接続を作成する方法」

- 第25.2.5項「リポジトリ接続の作成時に行われる処理」

- 第25.2.6項「リポジトリ接続の作成について」

25.2.1 Oracle Content Serverアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法

この項では、Content Serverベースのコンテンツ・リポジトリ接続の構成方法について説明します。以降の手順を正常に終了するには、Content Serverリリース11.1.1.8.0以上を使用する必要があります。Oracle WebCenter Portal用コンテンツ・サーバーを構成する方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のOracle WebCenterコンテンツ・サーバー・リポジトリの構成に関する項を参照してください。

ポータルまたはFrameworkアプリケーションでコンテンツ・サーバーを動作させるために必要な前提条件およびタスクの概要は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のコンテンツ・サーバーの構成ロードマップに関する項を参照してください。

Content Serverベースのリポジトリ接続を作成するには:

1. Oracle JDeveloperでPortal Frameworkアプリケーションを開きます。

2. 「アプリケーション・リソース」パネルで、「接続」を右クリックし、「接続の作成」→「コンテンツ・リポジトリ」を選択します。

3. 「コンテンツ・リポジトリ接続の作成」ダイアログで、接続の接続名(MyOCSConnectionなど)を指定します。

注意:

(たとえば、WLSTを使用して管理者によって)接続がすでに確立されている管理対象WebLogic Serverインスタンスにポータルをデプロイする場合、その管理対象サーバー接続で使用されたものと同じ接続名を使用する必要があります。正確な接続名がわからない場合はポータルのシステム管理者に連絡してください。

ヒント:

「アプリケーション・リソース」パネルでのアプリケーション固有接続の作成か、ソース・パレット(IDE接続)での共通接続の作成かを選択できます。

4. 「リポジトリ・タイプ」ボックスからOracle Content Serverを選択します。

5. ドキュメントのプライマリ接続として設定を選択し、ドキュメント・ツールまたはコンテンツ・プレゼンタによるすべてのコンテンツ管理操作について、この接続をプライマリ(デフォルト)接続にします。このオプションを選択すると、構成がadf-config.xmlファイルに書き込まれ、この接続がデフォルト接続として識別されます。connectionNameパラメータがドキュメント・タスク・フロー用に指定されていると、その値によりこの設定がオーバーライドされます。

注意:

ドキュメントのプライマリ(デフォルト)接続として接続を設定するには、「接続の作成場所」で「アプリケーション・リソース」オプションを選択する必要があります。これは、IDE接続として作成された接続を直接使用できないためであり、アプリケーションに追加する必要があります。

6. 表25-1および図25-1に示すように、「構成パラメータ」でパラメータの値を入力します。

表25-1 Content Serverの構成パラメータ

構成パラメータ

値

RIDCソケット・タイプ

Content Serverリスナー・ポートまたはWebサーバー・フィルタでクライアント・ライブラリを接続するかどうかを決定します。socket、socketssl、webまたはjaxwsを指定できます。

socket: Content Serverに接続するためにintradocソケット接続を使用します。クライアントIPアドレスは、Content Serverで許可されたアドレスのリストに追加する必要があります。これは、Content Server構成ファイル内のSocketHostAddressSecurityFilterの設定に対応します。

socketssl: SSLプロトコルにより保護されたContent Serverに接続するためにintradocソケット接続を使用します。クライアントの証明書は、接続を許可するサーバーのトラスト・ストア内にインポートする必要があります。

web: Content Serverに接続するためにHTTP(S)接続を使用します。

jaxws: コンテンツ・サーバーに接続するためにHTTP(S)接続を使用します。

表25-2は、各RIDCソケット・タイプに必要な構成パラメータの詳細です。

サーバー・ホスト名

Content Serverが実行するシステムのホスト名。たとえば、mycontentserver.mycompany.comなどです。

コンテンツ・サーバー・リスナー・ポート

「サーバー・ホスト名」フィールドで指定したサーバーのポート。これは、Content Server構成ファイルのIntradocServerPort設定に対応し、デフォルトはポート4444です。

注意: コンテンツ・サーバーのintradocport値のデフォルトは4444ですが、この値はコンテンツ・サーバーの構成に応じて変わる可能性があります。

Webサーバー・プラグインのURL

RIDCソケット・タイプがwebの場合、次のURLであることが必要です。

Content Serverリリース11.1.1.8.0の場合: http://host_name:port_number/_dav/web_root/plugin_root。たとえば、http://mycontentserver:4444/_dav/cms/idcplgのようになります。

Webサーバー・コンテキスト・ルート

Portal Frameworkアプリケーションで高度なメタデータおよびSite Studioの機能を統合するためのコンテンツ・サーバー用Webサーバー・コンテキスト・ルート。Webサーバー・コンテキスト・ルートの形式は/context_rootです。たとえば、/csと入力します。

管理ユーザー名

コンテンツ・サーバー・インスタンスの管理権限を持つユーザー名。デフォルトでは、sysadminに設定されています。

管理パスワード

Content Server管理ユーザーのパスワード。たとえば、passwordと入力します。これは、Web接続でのみ必要です。

キーストア・ファイルの場所

セキュリティ・アサーションに署名するための秘密鍵を含むキーストアの場所。キーストアの場所は絶対パスであることが必要です。たとえば、c:\keys\keystore.xyzなどです。

キーストア・パスワード

キーストアへのアクセスに必要なパスワードです。

秘密鍵の別名

キーストアのクライアント秘密鍵のエイリアスです。この鍵は、サーバーに対するメッセージの署名に使用します。この秘密鍵に対応する公開鍵は、サーバーのキーストアにインポートされていることが必要です。

秘密鍵のパスワード

キーストアから鍵を取得するのに必要なクライアント秘密鍵パスワードです。

JAX-WSクライアント・セキュリティ・ポリシー

RIDCソケット・タイプがJAX-WSである場合に使用されるクライアント・セキュリティ・ポリシーを入力します。

JAX-WSクライアント・セキュリティ・ポリシーには、有効なOWSMポリシーを使用できますが、Content ServerのネイティブWebサービスであるIdcWebLoginサービスに対して構成されたセキュリティ・ポリシーに一致する必要があります。IdcWebLoginサービスの詳細は、『Oracle WebCenter Content Content Server開発者ガイド』のWebCenter Content Webサービスに関する項を参照してください。

事前定義されたセキュリティ・ポリシーの詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のセキュリティ・ポリシーに関する項を参照してください。

クライアント側でセキュリティ・ポリシーを構成する場合の詳細は、『Oracle WebCenter Content Content Server開発者ガイド』のクライアントの構成に関する項を参照してください。

サーバー側でセキュリティ・ポリシーを構成する場合の詳細は、『Oracle WebCenter Content Content Server開発者ガイド』のWS-Policyを通じたWS-Securityの構成に関する項を参照してください。

キャッシュ無効化間隔

WebCenterのキャッシュで外部Content Serverのコンテンツの変更を自動的に検出するのに使用される間隔(分)。これらのアイテムへの変更がコンテンツ・サーバーのUIに対して直接行われた場合に、WebCenterによってキャッシュされたアイテムが自動的にクリアされます。

間隔は分単位で指定します。値が0の場合、キャッシュ無効化は無効になります。キャッシュ無効化が有効になる最小値は2です。

バイナリ・キャッシュの最大エントリ・サイズ

Content Serverバイナリ・ドキュメントのWebCenterキャッシュの最大サイズ(バイト数)。このサイズより大きいドキュメントは、WebCenterでキャッシュされません。単位はバイトで、デフォルトは102400 (100KB)です。

表25-2 各RIDCソケット・タイプに対するコンテンツ・サーバー接続パラメータ

接続パラメータ

RIDCソケット・タイプ: web

RIDCソケット・タイプ: socket

RIDCソケット・タイプ: socketssl

RIDCソケット・タイプ: jaxws

サーバー・ホスト名

該当なし

コンテンツ・プレゼンタの場合は必須

デフォルトは、ローカル・ホストです。

コンテンツ・プレゼンタの場合は必須

デフォルトは、ローカル・ホストです。

該当なし

コンテンツ・サーバー・リスナー・ポート

該当なし

サーバー内の受信プロバイダに対して指定されたポート。

デフォルトは、4444です。

注意: コンテンツ・サーバーのintradocport値のデフォルトは4444ですが、この値はコンテンツ・サーバーの構成に応じて変わる可能性があります。

サーバー内のsslincomingプロバイダに対して指定されたポート。

デフォルトは、4444です。

該当なし

Webサーバー・プラグインのURL

必須

該当なし

該当なし

必須

http://hostname:port/web_rootの形式を使用します。

たとえば、http(s)://myhost.com:9044/idcnativewsのようになります。

Webサーバー・コンテキスト・ルート

オプション

オプション

オプション

オプション

JAX-WSクライアント・セキュリティ・ポリシー

該当なし

該当なし

該当なし

グローバル・ポリシー・アタッチメントが使用されていない場合は必須です。使用されている場合は、空白のままにしておく必要があります。

これは、OWSMクライアント・セキュリティ・ポリシーの名前です。このポリシーは、Content Server上で適用された対応サーバー側ポリシーに一致する必要があります。セキュリティ・ポリシーの詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のセキュリティ・ポリシーに関する項を参照してください。

管理ユーザー名

必須

オプション

デフォルトは、sysadminです。

オプション

デフォルトは、sysadminです。

オプション

デフォルトは、weblogicです。

管理パスワード

必須

該当なし

該当なし

パスワードが使用されるかどうかは、選択したJAX-WSセキュリティ・ポリシーに応じて異なります。

キーストアおよび秘密鍵

該当なし

該当なし

必須

該当なし

アイデンティティ伝播

実行時にはサポートされません

サポート対象

テスト目的では、ユーザー名が指定されていない場合や無効なユーザー名が指定された場合、ゲストとして接続します。

サポート対象

テスト目的では、ユーザー名が指定されていない場合や無効なユーザー名が指定された場合、ゲストとして接続します。

JAX-WSセキュリティ・ポリシーでアイデンティティ伝播をサポートする場合に、サポートされます。

外部アプリケーション

必須

サポート対象

パスワードは使用されません。

サポート対象

パスワードは使用されません。

サポート対象

パスワードが使用されるかどうかは、選択したJAX-WSセキュリティ・ポリシーに応じて異なります。

ユーザー名およびパスワード

サポート対象

サポート対象

パスワードはテスト接続操作中に検証されません。

サポート対象

パスワードはテスト接続操作中に検証されません。

サポート対象

パスワードが使用されるかどうかは、選択したJAX-WSセキュリティ・ポリシーに応じて異なります。

図25-1 コンテンツ・リポジトリ接続 - Content Server

7. 「ログイン・タイムアウト(ミリ秒)」フィールドで、時間をミリ秒単位で指定します。コンテンツ・リポジトリとのセッションの確立を試行する際にアプリケーションが待機する必要がある時間がこのタイムアウト時間により決まります。ネットワーク接続や接続試行先コンテンツ・リポジトリ・サーバーが低速な場合、このフィールドで指定されたデフォルト値をオーバーライドすることを検討してください。

8. 適切な認証方法を選択します。詳細は、第25.2.6.1項「アイデンティティ伝播および外部アプリケーションの認証方式の使用について」を参照してください。アイデンティティ伝播認証方式を選択した場合、Content ServerでSecure Socket Layer (SSL)を構成する必要があります。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のコンテンツ・サーバーの構成の前提条件に関する項を参照してください。

9. 「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスの下にある「ユーザー名」フィールドおよび「パスワード」フィールドは、アイデンティティ伝播認証方式のオプションです。保護されたアプリケーションで、アイデンティティ伝播が選択認証方式である場合、「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスを選択することにより、認証されたコンテンツ・リポジトリ接続に設計時に移動できます。このチェック・ボックスを選択した場合、指定したユーザー名およびパスワードが認証可能であるかどうかを検証できます。

注意:

「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスが選択されると、入力した資格証明が使用されます。このチェック・ボックスの選択が解除されると、接続は「外部アプリケーション」の資格証明(存在する場合)を使用してテストされます。それ以外の場合はNULLの資格証明が使用されます。

認証に「外部アプリケーション」を選択し、公開または共有資格証明も指定した場合、公開または共有資格証明が設計時のログインに使用できるため、このフィールドは空白のままにできます。ただし、「外部アプリケーション」を選択して、公開または共有資格証明を指定していない場合、ここでユーザー名とパスワードを指定する必要があります。

10. 「接続のテスト」をクリックして、接続詳細を適切に入力したかどうか確認します。「成功しました。」というステータスが表示されるはずです。
テスト中に、ユーザー名とパスワードが使用されます(指定した場合)。指定しない場合、共有資格証明または公開資格証明とともに外部アプリケーションが定義されていると、その情報が使用されます。それ以外の場合、ゲスト・ユーザーが使用されます。

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

12. 「アプリケーション・リソース」パネルで、先ほど作成したリポジトリ接続を開きます。「接続資格証明」ダイアログが表示されます。

注意:

資格証明を保存しない(「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスを選択しない)場合、あるいは公開または共有資格証明を使用する外部アプリケーションを指定しない場合、「接続資格証明」ダイアログが表示されます。

13. Content Server接続のユーザー名とパスワードを入力し、「OK」をクリックします。「アプリケーション・リソース」パネルに接続が表示されます。

25.2.2 Oracle Portalアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法

この項では、Oracle Portalアダプタに基づいたコンテンツ・リポジトリ接続を作成する方法について説明します。リポジトリ接続を作成する前に、第25.2.6項「リポジトリ接続の作成について」を参照してください。この接続を使用して、Oracle PortalリポジトリからJSFページにコンテンツを追加するコンテンツ・データ・コントロールを構成できます。

Oracle Portalリポジトリ接続を作成するには:

1. Oracle JDeveloperでPortal Frameworkアプリケーションを開きます。

2. 「アプリケーション・リソース」パネルで、「接続」を右クリックし、「接続の作成」→「コンテンツ・リポジトリ」を選択します。

3. 「コンテンツ・リポジトリ接続の作成」ダイアログで、接続の名前(MyOraclePortalなど)を指定します。

ヒント:

「アプリケーション・リソース」パネルでのアプリケーション固有接続の作成か、ソース・パレット(IDE接続)での共通接続の作成かを選択できます。

4. 図25-2に示すように、「リポジトリ・タイプ」ボックスから「Oracle Portal」を選択します。

図25-2 コンテンツ・リポジトリ接続 - Oracle Portal

5. ドキュメントのプライマリ接続として設定を選択し、ドキュメント・ツールまたはコンテンツ・プレゼンタによるすべてのコンテンツ管理操作について、この接続をプライマリ(デフォルト)接続にします。このオプションを選択すると、構成がadf-config.xmlファイルに書き込まれ、この接続がデフォルト接続として識別されます。connectionNameパラメータがドキュメント・タスク・フロー用に指定されていると、その値によりこの設定がオーバーライドされます。

注意:

ドキュメントのプライマリ(デフォルト)接続として接続を設定するには、「接続の作成場所」で「アプリケーション・リソース」オプションを選択する必要があります。これは、IDE接続として作成された接続を直接使用できないためであり、アプリケーションに追加する必要があります。

6. 「データベース接続」リストから接続を選択するか、Oracle Portalスキーマへの新規接続を作成します。

1. データベース接続の作成ウィザードで接続名とタイプを指定します。

2. Oracle Portalスキーマのデータベース・ユーザー名とパスワードを入力します。デフォルトでは、ユーザーはPORTALです。

3. カスタムJDBC URLを指定する場合、「Oracle (JDBC)設定」で「カスタムJDBC URLの入力」チェック・ボックスを選択し、ポータル・スキーマのデータベースURLを次のjdbc形式で指定します。

jdbc:oracle:thin:@dbhost:dbport:dbsid

4. 前述の手順を行わない場合は、ドライバを選択し、ホスト名、JDBCポート、SIDおよびサービス名を、表25-3および図25-3に示すように入力します。

表25-3 Oracle Portalベースのコンテンツ・データ・コントロールを作成するためのパラメータ

パラメータ

説明

ドライバ

ドライバには、シン・ドライバとoci8ドライバの2つのタイプがあります。

シン・ドライバは、TCP/IPネットワーク・プロトコルを介してOracle Databaseリリース8i以上のデータベースに接続する場合に使用できます。このドライバは、すべてのプロジェクトのデフォルトOracle JDBCライブラリに含まれています。

oci8ドライバは、Oracle Application Serverに対して実行されるJavaアプリケーションを作成する場合に使用します。これは、Oracle Database用に最適化されたthickドライバです。Javaコードとネイティブ・コードが混合されています。このドライバは、あらゆるデータベース・プロトコル(TCP、IPX、BEQなど)を取り扱います。これは、格納されているコンピュータから実行されるアプリケーションに対して推奨されます。

ホスト名

Oracle Databaseの名前。TCP/IPによって解決可能なIPアドレスまたはホスト名(myserverなど)を使用します。デフォルト値はlocalhostです。

JDBCポート

TCP/IPポートを識別するための値。

SID

Oracleデータベース・インスタンスの一意のシステム識別子。

サービス名

Oracleデータベース・インスタンスのサービス名。

図25-3 データベース接続の作成

5. 「接続のテスト」をクリックして、接続詳細を適切に入力したかどうか確認します。「成功しました。」というステータスが表示されるはずです。

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

7. 「コンテンツ・リポジトリ接続の作成」ダイアログの「ログイン・タイムアウト(ミリ秒)」フィールドで、時間をミリ秒単位で指定します。コンテンツ・リポジトリとのセッションの確立を試行する際にアプリケーションが待機する必要がある時間がこのタイムアウト時間により決まります。ネットワーク接続や接続試行先コンテンツ・リポジトリ・サーバーが低速な場合、このフィールドで指定されたデフォルト値をオーバーライドすることを検討してください。

8. 適切な認証方法を選択します。詳細は、第25.2.6.1項「アイデンティティ伝播および外部アプリケーションの認証方式の使用について」を参照してください。

9. 「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスを選択し、ポータル・インスタンスにログインするためのOracle Portalシングル・サインオンのユーザー名とパスワードを入力します。ここで入力されたOracle Portalシングル・サインオンのユーザー名とパスワードは接続のテストで使用され、設計時にのみ機能します。次に、「OK」をクリックします。

注意:

「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスが選択されると、入力した資格証明が使用されます。このチェック・ボックスの選択が解除されると、接続は「外部アプリケーション」の資格証明(存在する場合)を使用してテストされます。それ以外の場合はNULLの資格証明が使用されます。

認証に「外部アプリケーション」を選択し、公開または共有資格証明も指定した場合、公開または共有資格証明が設計時のログインに使用できるため、このフィールドは空白のままにできます。外部アプリケーションに公開と共有の両方の資格証明を指定した場合、公開資格証明が優先されます。ただし、「外部アプリケーション」を選択して、公開または共有資格証明を指定していない場合、ここでユーザー名とパスワードを指定する必要があります。

10. 「アプリケーション・リソース」パネルで、先ほど作成したリポジトリ接続を開きます。「接続資格証明」ダイアログが表示されます。

注意:

資格証明を保存しない(「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスを選択しない)場合、あるいは公開または共有資格証明を使用する外部アプリケーションを指定しない場合、「接続資格証明」ダイアログが表示されます。

11. Oracle Portal接続のユーザー名とパスワードを入力し、「OK」をクリックします。「アプリケーション・リソース」パネルに接続が表示されます。

関連項目:

この接続を使用してデータ・コントロールを作成するには、第26.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」に記載された手順を行ってください。

25.2.3 SharePoint用Oracle WebCenterアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法

SharePoint用Oracle WebCenterアダプタは、Microsoft SharePoint 2007リポジトリ内のコンテンツを抽出および検索します。このアダプタは、Microsoft SharePoint SOAPインタフェースを使用してリポジトリにアクセスします。SharePoint用Oracle WebCenterアダプタを構成および使用する前に、第25.2.6.3項「SharePoint用Oracle WebCenterアダプタについて」を参照することをお薦めします。

この項には次のサブセクションが含まれます:

- 第25.2.3.1項「SharePoint用Oracle WebCenterアダプタのインストール」

- 第25.2.3.2項「SharePoint用Oracle WebCenterアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法」

- 第25.2.3.3項「Microsoft SharePointコンテンツおよびサービスのマッピング」

25.2.3.1 SharePoint用Oracle WebCenterアダプタのインストール

SharePoint用Oracle WebCenter Portalアダプタを構成する前に、JDeveloperにこれをインストールする必要があります。

アダプタのファイルはOracle WebCenter PortalコンパニオンDVDに収録されているofm_wc_generic_jcr_sharepoint_adapter_11.1.1.4.0.zipファイルの中にあります。このZIPファイルを一時的な場所に抽出すると、TEMP_LOCATION/WebCenter/services/content/adaptersディレクトリ内にアダプタのファイルが見つかります。

アダプタをインストールするには:

1. Oracle JDeveloperを起動します(まだ起動していない場合)。

2. 「ヘルプ」メニューから「更新の確認」を選択します。

3. 更新のチェック・ウィザードの「ようこそ」ページで、「次へ」をクリックします。

4. 「ソース」ページで、「ローカル・ファイルからインストール」を選択し、TEMP_LOCATION/WebCenter/services/content/adaptersディレクトリからoracle.webcenter.content.jcr.sharepoint.earを選択します。これは、Oracle WebCenter PortalのコンパニオンDVDからofm_wc_generic_jcr_sharepoint_adapter_11.1.1.4.0.zipファイルの内容を抽出した一時ディレクトリです。

5. 「終了」をクリックします。要求されたら、JDeveloperを再起動します。

25.2.3.2 SharePoint用Oracle WebCenterアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法

SharePoint用Oracle WebCenterアダプタに基づくリポジトリ接続を作成するには:

1. Oracle JDeveloperでPortal Frameworkアプリケーションを開きます。

2. 「アプリケーション・リソース」パネルで、「接続」を右クリックし、「接続の作成」→「コンテンツ・リポジトリ」を選択します。

3. 「コンテンツ・リポジトリ接続の作成」ダイアログで、接続の接続名(MySPConnectionなど)を指定します。

ヒント:

「アプリケーション・リソース」パネルでのアプリケーション固有接続の作成か、ソース・パレット(IDE接続)での共通接続の作成かを選択できます。

4. 「リポジトリ・タイプ」ボックスからJCR SharePointアダプタを選択します。

注意:

このオプションは、SharePoint用Oracle WebCenterアダプタの拡張機能がインストールされている場合にのみ表示されます。

5. ドキュメントに対するデフォルト接続にする場合、ドキュメントのプライマリ接続として設定を選択します。このオプションを選択すると、構成がadf-config.xmlファイルに書き込まれ、この接続がドキュメントのデフォルト接続として識別されます。ドキュメント・ライブラリ・タスク・フローがconnectionName入力パラメータを指定せずに使用された場合、この接続が使用されます。ドキュメントの詳細は、第28章「ドキュメントの統合」を参照してください。

注意:

ドキュメントのプライマリ接続として接続を設定するには、「接続の作成場所」で「アプリケーション・リソース」オプションを選択する必要があります。これは、IDE接続として作成された接続を直接使用できないためであり、アプリケーションに追加する必要があります。

6. 「構成パラメータ」で、接続するSharePointサイトのWebアドレスであるSharePoint URLを入力します。たとえば、図25-4に示すように、http://mysharepoint.mycompany.comと入力します。

図25-4 コンテンツ・リポジトリ接続 - SharePoint用Oracle WebCenterアダプタ

7. LIKE制限の文字数を表す整数値を入力します。値を設定しない場合、Microsoft SharePoint Serverに渡される検索パターン文字列の制限として、LIKE制限はデフォルトの64文字になります。値を0に設定した場合、全文字列がサーバーに渡されます。つまり、LIKE制限は無効になります。このパラメータはオプションです。デフォルトの状態のまま設定することをお薦めします。関連情報は、第25.2.6.3項「SharePoint用Oracle WebCenterアダプタについて」を参照してください。

8. 「ログイン・タイムアウト(ミリ秒)」フィールドで、時間をミリ秒単位で指定します。コンテンツ・リポジトリとのセッションの確立を試行する際にアプリケーションが待機する必要がある時間がこのタイムアウト時間により決まります。デプロイ済アプリケーションとMicrosoft SharePointリポジトリの間では高速なネットワーク接続を使用することをお薦めします。ネットワーク接続や接続試行先コンテンツ・リポジトリ・サーバーが低速な場合、このフィールドで指定されたデフォルト値をオーバーライドすることを検討してください。

9. 「外部アプリケーション」認証方式を選択します。この認証方式の詳細は、第25.2.6.1項「アイデンティティ伝播および外部アプリケーションの認証方式の使用について」を参照してください。

注意:

Microsoft SharePoint用Oracle WebCenterアダプタでは、アイデンティティ伝播認証方式はサポートされません。したがって、外部アプリケーション認証方式により、リポジトリのアクセス時に、すべてのユーザーに対する資格証明の単一共有セットを使用します。また、外部アプリケーションの構成で共有資格証明および公開資格証明を省略することによって、各ユーザーがリポジトリに最初にアクセスするときに独自のログイン資格証明を入力できるようにこのオプションを構成できます。これによってシステムでは、以降のアクセス・リクエストでそれぞれの固有の資格証明が再使用されます。

10. 「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスを選択し、「ユーザー名」と「パスワード」を指定します。この手順はオプションであり、前の手順で作成した外部アプリケーション認証資格証明をオーバーライドする場合にのみ必要です。さらに、このオーバーライドはJDeveloperの設計時にのみ適用されます。

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

12. オプションで接続をテストするには、「アプリケーション・リソース」パネルで、先に作成したリポジトリ接続を開きます。「接続資格証明」ダイアログが表示されます。

注意:

資格証明を保存しない(「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスを選択しない)場合、あるいは公開または共有資格証明を使用する外部アプリケーションを指定しない場合、「接続資格証明」ダイアログが表示されます。

13. この接続のユーザー名とパスワードを入力し、「OK」をクリックします。「アプリケーション・リソース」パネルに接続が表示されます。
この手順はオプションです。

25.2.3.3 Microsoft SharePointコンテンツおよびサービスのマッピング

SharePoint用Oracle WebCenterアダプタは、サイト、リスト、リスト・アイテム、メタデータ、ドキュメント、さらに検索やセキュリティといったMicrosoft SharePointにより提供されるコンテンツ・サービスなど、SharePointサーバーで管理されるコンテンツにマップするように設計されています。

このアダプタは、JCR標準に関連するコンテンツおよびコンテンツ・サービスにマップします。つまりこのアダプタは、Microsoft SharePointのグラフィカル・ユーザー・インタフェース(GUI)およびJCR標準の一部ではないアプリケーション・レベル機能にはマップしません。たとえば、このアダプタはMicrosoft SharePointサーバーのGUIアプリケーション・ロジックにマップしませんが(JCRにより対応されません)、JCRまたはJavaのアプリケーションがSharePointリストなどのGUIロジックの一部をリストアできるように(アプリケーションが意図する場合)、GUI関連のメタデータを提供します。

Microsoft SharePointドキュメント・ライブラリのデフォルトのJCR位置

図25-5に示すように、SharePointサービスv3チーム・サイトの共有ドキュメント・ライブラリは、パス/sp:Site/sp:RootWeb/sp:Lists/Shared Documents/sp:Filesに表示されます。

図25-5 SharePointサービスv3チーム・サイト用の共有ドキュメント・ライブラリ・パス

インストール中に作成されたMicrosoft Office SharePoint Server (MOSS) 2007サイトでは、図25-6に示すように、ドキュメント・センターのドキュメント・ライブラリはパス/sp:Site/sp:RootWeb/sp:Webs/Docs/sp:Lists/Documents/sp:Filesに位置します。このパスは、ドキュメント・センターがSharePointメイン・サイトのサブサイトである構造を反映しています。

ファイルは、プライマリ・タイプnt:fileおよびmix-inタイプsp:FileのJCRノードです。フォルダは、プライマリ・タイプnt:folderおよびmix-inタイプsp:FolderのJCRノードです。sp: mix-inは、その定義の点でnt:unstructuredに似ています。

図25-6 MOSS 2007サイトのドキュメント・センターのドキュメント・ライブラリ・パス

25.2.4 ファイル・システム・アダプタに基づいてコンテンツ・リポジトリ接続を作成する方法

この項では、ファイル・システム・アダプタに基づいたコンテンツ・リポジトリ接続を作成する手順について説明します。ファイル・システム・アダプタは、開発環境でのみ使用することを目的としています。

ファイル・システム・リポジトリ接続を作成するには:

1. Oracle JDeveloperでPortal Frameworkアプリケーションを開きます。

2. 「アプリケーション・リソース」パネルで、「接続」を右クリックし、「接続の作成」→「コンテンツ・リポジトリ」を選択します。

3. 「コンテンツ・リポジトリ接続の作成」ダイアログで、接続の名前(MyConnectionなど)を入力します。

ヒント:

「アプリケーション・リソース」パネルでのアプリケーション固有接続の作成か、ソース・パレット(IDE接続)での共通接続の作成かを選択できます。

4. 「リポジトリ・タイプ」ボックスから「ファイル・システム」を選択します。

5. ドキュメントのプライマリ接続として設定を選択し、ドキュメント・ツールまたはコンテンツ・プレゼンタによるすべてのコンテンツ管理操作について、この接続をプライマリ(デフォルト)接続にします。このオプションを選択すると、構成がadf-config.xmlファイルに書き込まれ、この接続がデフォルト接続として識別されます。connectionNameパラメータがドキュメント・タスク・フロー用に指定されていると、その値によりこの設定がオーバーライドされます。

注意:

ドキュメントのプライマリ(デフォルト)接続として接続を設定するには、「接続の作成場所」で「アプリケーション・リソース」オプションを選択する必要があります。これは、IDE接続として作成された接続を直接使用できないためであり、アプリケーションに追加する必要があります。

6. 「構成パラメータ」で「ベース・パス」行を選択し、C:\MyContentなどのコンテンツが置かれているフォルダのパスを入力します。

注意:

ファイル・システム接続を作成する場合、次の点を考慮する必要があります。

- 第26.5項「コンテンツ・データ・コントロールを使用したコンテンツの統合」では、ベース・パス値が、ファイル・システム・ベースのデータ・コントロールのルート("/")として使用されます。

- Unixシステムで作業している場合、ファイル・システム・アダプタはUnixシステムの大/小文字が区別されるファイル名特性を継承します。このため、Unixシステムで、ファイルへの参照で元のファイル名と同じ大/小文字が使用されていることを確認してください。たとえば、Test.htmlというファイルがMicrosoft Windowsシステムで作成されたとします。このファイルをLinuxシステムで参照する場合は、必ず、test.htmlやTEST.htmlではなくTest.htmlを使用してください。

7. 「ログイン・タイムアウト(ミリ秒)」フィールドは空白のままにしておきます。

8. 「接続のテスト」をクリックして、接続詳細を適切に入力したかどうか確認します。図25-7に示すように、Success!というステータスが表示されます。

図25-7 ファイル・システム接続

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

10. 「アプリケーション・リソース」パネルで、先ほど作成したリポジトリ接続を開きます。

25.2.5 リポジトリ接続の作成時に行われる処理

リポジトリへの接続を作成する場合、図25-8に示すように、リポジトリのメイン・ディレクトリのコンテンツが「アプリケーション・リソース」パネルの「コンテンツ・リポジトリ接続」の下に表示されます。フォルダおよびファイルは、ダブルクリックすると表示されます。

図25-8 アプリケーション・リソース

リポジトリ接続を使用すると、リポジトリ・コンテンツとJSFページの統合を可能にするJCRデータ・コントロールを作成できます。詳細は、第26.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」および第26.5項「コンテンツ・データ・コントロールを使用したコンテンツの統合」を参照してください。またこうした接続は、ドキュメント・ツールおよびコンテンツ・プレゼンタ・タスク・フローを通じて利用できます。詳細は、第28章「ドキュメントの統合」を参照してください。

25.2.6 リポジトリ接続の作成について

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

- 第25.2.6.1項「アイデンティティ伝播および外部アプリケーションの認証方式の使用について」

- 第25.2.6.2項「Oracle Portalについて」

- 第25.2.6.3項「SharePoint用Oracle WebCenterアダプタについて」

25.2.6.1 アイデンティティ伝播および外部アプリケーションの認証方式の使用について

「コンテンツ・リポジトリ接続の作成」ダイアログには、認証方法として次のオプションが用意されています。

- アイデンティティ伝播: このオプションを選択した場合、リポジトリに資格証明が渡されません。現在のユーザーのアイデンティティが、Javaセキュリティ・コンテキストから決定されたものとしてリポジトリ・コネクタでかわりに使用されます。これは、アプリケーションとリポジトリでユーザーの認証に同じアイデンティティ・ストアが使用される場合にのみ、使用することが必要です。
認証されたユーザーのみがリポジトリでサポートされるか、パブリック・ユーザーまたはゲスト・ユーザーに制限アクセスのみが提供される場合があるため、この認証方法を使用する場合、ADFセキュリティの構成ウィザードを使用してアプリケーションにセキュリティを構成することをお薦めします。第26.4項「コンテンツ・リポジトリのデータ・コントロールの保護」を参照してください。

- 外部アプリケーション: 外部アプリケーションの方式では、現在のユーザー・アイデンティティを直接リポジトリに伝播しない、その他のすべてのケースで使用できます。詳細は、第74.13項「外部アプリケーションの使用」および第28.3項「ドキュメント・ツールのセキュリティの設定」を参照してください。
外部アプリケーションでは、様々な資格証明を接続に関連付けることができます。

- アプリケーションがセキュアでない場合、またはユーザーがまだログインしていない場合は、公開資格証明が使用されます。

- 認証されたユーザーには、共有資格証明が使用されます。

- 共有資格証明を指定しない場合、アプリケーションとコンテンツ・リポジトリで同じユーザー・ストアを使用しないと、マップ済資格証明を使用してアイデンティティ伝播と同様の結果を得ることができます。この場合、外部アプリケーション・サービスによって実行時の画面が提供され、ユーザーは、コンテンツ・リポジトリにアクセスするための資格証明を指定できます。これらの資格証明はセキュアに格納され、このユーザーが確立を試みるその後の接続に使用されます。

外部アプリケーションを構成する場合は、「新規」をクリックして外部アプリケーションの登録ウィザードを起動し、次を実行します。

1. 外部アプリケーションの名前を指定します。

2. 「ログインURL」フィールドにhttp://content-server.mycompany.com/idc/などの外部アプリケーションのURLを入力します。

注意:

このURLはオプションで、コンテンツ・リポジトリの独自ユーザー・インタフェースへのクリックスルー・ログインを提供する場合のみ必須です。クリックスルー・ログインの構成方法の詳細は、外部アプリケーションのドキュメントを参照してください。

3. 「認証の詳細」でリストから、「基本」を選択します。「ログインの詳細」の下にあるフィールドは空白のままにします。
このオプションは、クリックスルー・ログインが必要でない場合に選択します。クリックスルー・ログインを有効にした場合、リポジトリで使用される認証方式に基づいて、別のオプションを選択する必要があります。

4. デフォルト値を受け入れて、「次へ」をクリックします。

5. 設計時および実行時に使用できる共有資格証明を入力します。ユーザーが独自の資格証明を指定する必要がある場合、共有資格証明を指定しないでください。

6. 設計時および実行時に使用できるパブリック資格証明を入力します。パブリック資格証明は、パブリック・ユーザーにドキュメントまたはコンテンツを表示する場合にのみ指定します。

7. 「終了」をクリックします。

25.2.6.2 Oracle Portalについて

Oracle Portalアダプタを使用する際は、次のことを考慮してください。

- Oracle Portalベースのコンテンツ・データ制御機能を使用するには、適切なパッチが適用されていれば、Oracle Portalリリース10.1.4.1、10.1.4.2または11.1.1.0.0をインストールできます。適用するパッチを調べるには、(必要なプラットフォームの)Oracle Application Serverリリース11.1.1.0.0のリリース・ノートを参照してください。

- サポートされるタイプは、アイテム・タイプfile、image、imagemapおよびtextと、これらのアイテム・タイプに基づいたカスタム・タイプのみです。

- portal:containerページ・タイプおよびその拡張要素がサポートされます。

- コンテンツは常に、ページ・グループのデフォルト言語で公開されます。たとえば、デフォルト言語の異なる3つのページ・グループがある場合、コンテンツはこれらのデフォルト言語に対してのみ表示され、翻訳が存在していても表示されません。

25.2.6.3 SharePoint用Oracle WebCenterアダプタについて

SharePoint用Oracle WebCenterアダプタを構成および使用する場合、次の点を考慮してください。

- アダプタは、anonymousアクセスを許可するように構成されたMicrosoft SharePointリポジトリへの接続をサポートしません。

- アダプタが実行中のアプリケーション・サーバー・インスタンスとMicrosoft SharePointリポジトリ間に高速のネットワーク接続が必要です。

- Microsoft SharePointバージョン: Oracle WebCenter Portalでは、次のMicrosoft SharePointバージョンがサポートされます。

- Microsoft Office SharePoint Server (MOSS) 2007 SP2

- Microsoft Windows SharePoint Services (WSS)バージョン3 SP2

- バージョニング設定: Oracle WebCenter Portalでは、次のMicrosoft SharePoint 2007ドキュメント・ライブラリ・バージョニング設定がサポートされます。

- チェックアウトが必要: いいえ

- コンテンツの承認: いいえ

- ドキュメントのバージョン履歴: バージョニングなし

他のいずれかのバージョニング設定が構成されている場合、アダプタは正しく機能しません。たとえば、Require CheckOutをyesに設定した場合、アップロード操作は失敗します。ドキュメントのバージョン履歴またはコンテンツの承認が有効である場合、新しいバージョンまたはドキュメントの表示が制限されます。

- セッション・ベースのメモリー・キャッシュ: パフォーマンス上の理由から、SharePoint用Oracle WebCenterアダプタではセッション・ベースのメモリー・キャッシュが維持されます。このアダプタを使用するPortal Frameworkアプリケーションでは、未使用のセッションがすべて閉じられ、アダプタ・メモリー・キャッシュがリリースされるように、アプリケーションのweb.xmlファイルでHttp Session time-outを構成する必要があります。

- マッピング: マッピングでは、JCR APIで定義され関連するコンテンツのアーティファクトおよびサービスのみが考慮されます。さらにアダプタは、サーバー側のカスタム追加コンポーネントに依存しないので、ネイティブSharePoint Webサービスによりサポートされる程度まで、コンテンツおよびサービスにマップします。したがって、次のことが該当します。

- 全文検索では、SharePointサーバーによって索引を付けられたアイテムのみが返されます。

- 検索可能な列セットは制限されます。

- 検索では固定されたノード・タイプ・セットがサポートされます。

- 一部の検索では、WebサービスからJCRに結果をマップするのに必要な全情報をアダプタが受信しないので、追加ネットワーク・ラウンドトリップが必要になります。

アダプタは、ネイティブWebインタフェースによってコンテンツが公開される方法と類似した階層的な方法でMicrosoft SharePointサーバーからのコンテンツを公開します。階層のアイテムは、nt:folderまたはnt:fileのいずれかのプライマリ・タイプか、それらの組合せを持ちます。SharePointの追加固有特性は、mix-in(つまり、sp:Folder、sp:Fileなど)として追加されるいくつかのインスタンスに含まれます。これらの例ではsp接頭辞によって識別されるSharePoint固有のネームスペースは、SharePointサーバーによって制御されるアイテムに使用されます。ユーザーによって制御されるアイテム(Web、ドキュメント、リスト・アイテムなど)は、デフォルトのネームスペースに含まれます。このアダプタにより、SharePointドキュメント・ライブラリへの書込み権限が許可されます。つまり、フォルダの作成またはネイティブSharePoint Webインタフェースへファイルのアップロードとともに、ドキュメント・ライブラリ内でフォルダおよびファイルを作成できます。次のリスト・アイテムに、この階層的なマッピングを表す例を示します。

- サイト構造: SharePointサイトの構造マッピングは次のとおりです。

- /sp:Site: サイトのルート要素。

- /sp:Site/sp:RootWeb: ルートWeb要素。

- /sp:Site/sp:RootWeb/sp:Lists: サイト内の全リストのルートに対するパス。

- /sp:Site/sp:RootWeb/sp:Lists/Shared Documents/sp:Files: ドキュメント・ライブラリ内のファイルおよびフォルダ階層の先頭に対するパス。この例では、共有ドキュメント・ライブラリを示しています。すべてのサイト・ドキュメント・ライブラリは、それぞれが独自のドキュメント・ライブラリ名によって、/sp:Site/sp:RootWeb/sp:Listsの下にマップされます。

- /sp:Site/sp:RootWeb/sp:Lists/Shared Documents/sp:Files/myFiles: サイトの共有ドキュメント・ドキュメント・ライブラリ内のフォルダの例です。

- /sp:Site/sp:RootWeb/sp:Webs/mySubSite: サイトのサブサイトはすべて、/sp:Site/sp:RootWeb/sp:Websの下でマップされます。この例では、mySubSiteという名前のサブサイトへのパスを示しています。このサブサイト自体に、ドキュメント・ライブラリが含まれることがあります。

- このアダプタは、1つ以上の必須SharePoint列を必要とする設定のSharePointドキュメント・ライブラリに対するwriteアクセスをサポートしません。

- 検索および索引付け:

- JCRおよびネイティブMicrosoft SharePoint検索: SharePoint用Oracle WebCenterアダプタは、JCRの問合せを評価するためにネイティブSharePoint検索Webサービスを使用します。JCR 1.0で使用可能であっても、SharePoint検索サービスで使用可能でない機能は通常、無視されます。

- 索引付きアイテム: ネイティブ検索では、Microsoft SharePointサーバーによって索引を付けられたアイテムのみが検索されます。検索条件に一致する他のアイテムは無視されます。デフォルトでSharePoint Services 2007は、制限されたドキュメント・タイプ・セットに対して検索および全文索引付けを行うように構成されます。この詳細、およびより複雑なデプロイメントで検索および索引付けを有効にする方法の詳細は、Microsoft社のドキュメントを参照してください。

- LIKE制限: SharePointのネイティブ問合せ言語では、アダプタがパターンに一致するURL (ドキュメント・パス)に問合せを制限する際にLIKEキーワードが使用されます。ネイティブLIKE演算子では、64文字までの文字列のパターン一致がサポートされます。したがって、SharePoint用Oracle WebCenterアダプタは、正しいURL制限が適用されるよう、結果セットにクライアント側のフィルタリングが適用されます。アダプタのLIKE制限パラメータはこの機能を制御し、この制限が設定されていない場合は64文字の制限がデフォルト値として適用されます。パラメータを0に設定して、クライアント側のフィルタリングを無効にできます。パラメータをそれ以外の値に設定して、異なる文字制限を適用することもできます。ただし、この制限はSharePointインスタンスで64文字よりも大きなURLでのLIKEテストがサポートされている場合にのみ増加できます。

- 作成および変更のタイムスタンプ: SharePointドキュメント・ライブラリのコンテンツを表示するときに、アダプタはライブラリ内にドキュメントが作成または最後に更新された時間として、作成および変更のタイムスタンプを報告します。Microsoft Officeドキュメントなどの一部のドキュメント・タイプでは、ネイティブSharePoint検索は各ドキュメントに格納されたドキュメント・メタデータを評価します。これは、ドキュメントがドキュメント・ライブラリにアップロードまたは更新された時間とは異なる場合があるため、誤解を招く検索結果となることがあります。

- 検索キーワードの結合: アダプタは、OR式での検索キーワードの結合をサポートしません。

- 最終更新者による検索: アダプタは、最終更新者による検索をサポートしません。

- 作成者による検索: タスク・フローで提供される値は、GBR10021\spmemberではなくGBR10021\\spmemberのような形式である必要があります。前者はIllegalState例外となり、ページはロードされません。

- サポートされるJCR検索演算子およびプロパティ: アダプタでサポートされるのは次のとおりです。

- 比較用の関係演算子: =、>=、>、<=、<、LIKE、<>、IS NULL、IS NOT NULL。最終位置ステップでは、条件、下位オブジェクトおよび自己演算子(//)がサポートされます。

- 比較用のプロパティ: サイズ、作成者、変更日時、URL、タイトル、IsDocument、ContentClass、SiteName、説明、FileName、jcr:data、jcr:mimeType、jcr:created、jcr:lastModified。

25.3 コンテンツ・リポジトリ接続の編集

この項では、共通またはアプリケーション固有のコンテンツ・リポジトリ接続を編集する方法について説明します。この項には次のサブセクションが含まれます:

- 第25.3.1項「共通リポジトリ接続の編集方法」

- 第25.3.2項「Frameworkアプリケーション固有のコンテンツ・リポジトリ接続の編集方法」

25.3.1 共通リポジトリ接続の編集方法

共通リポジトリ接続(IDE接続)は、リソース・パレットで作成および編集します。

共通リポジトリ接続を編集するには:

1. リソース・パレットで、編集するリポジトリ接続を右クリックし、図25-9に示すように「プロパティ」を選択します。図25-10に示すように、「リポジトリ接続の編集」ダイアログが表示されます。

図25-9 リソース・パレット - プロパティ

図25-10 コンテンツ・リポジトリ接続の編集

2. 適切なパラメータを変更します。

3. 接続をテストし、「OK」をクリックします。

25.3.2 Frameworkアプリケーション固有のコンテンツ・リポジトリ接続の編集方法

アプリケーション固有のコンテンツ・リポジトリ接続は、「アプリケーション・リソース」パネルの下に表示されます。

Portal Frameworkアプリケーション固有のコンテンツ・リポジトリ接続を編集するには:

1. 「アプリケーション・リソース」パネルで、編集するリポジトリ接続を右クリックし、図25-11に示すように「プロパティ」を選択します。図25-12に示すように、「コンテンツ・リポジトリ接続の編集」ダイアログが表示されます。

図25-11 「アプリケーション・リソース」 - 「プロパティ」

図25-12 コンテンツ・リポジトリ接続の編集

2. 適切なパラメータを変更します。リポジトリのタイプに応じて、リポジトリ接続を作成する方法について説明する前述の項を参照してください。たとえばコンテンツ・サーバーの場合、第25.2.1項「Oracle Content Serverアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法」を参照してください。

3. 接続をテストし、「OK」をクリックします。

25.4 新規Portal Frameworkアプリケーションに対する既存のリポジトリ接続の使用

既存のリポジトリ接続は、リソース・パレットで共通リポジトリとして作成した場合、Portal Frameworkアプリケーションに使用できます。

既存のリポジトリ接続を使用するには:

1. Oracle JDeveloperで、既存のリポジトリ接続を使用するPortal Frameworkアプリケーションを開きます。

2. リソース・パレットに移り、図25-13に示すように、新規アプリケーションに使用するリポジトリ接続(MyConnection_2など)を選択して新規アプリケーションの「アプリケーション・リソース」パネルにドロップします。

ヒント:

あるいは、接続を右クリックして「アプリケーションに追加」を選択します。「アプリケーション・リソース」パネルに接続が表示されます。

図25-13 既存の共通リポジトリ接続(IDE接続)をアプリケーションにドラッグする

これで、第26.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」に記載のように、このリポジトリ接続からの新規アプリケーション用データ・コントロールを構成できます。

26 コンテンツ・データ・コントロールの使用

この章では、ドキュメントやリレーショナル・コンテンツなどのコンテンツにアクセスするためのJCRデータ・コントロールの使用方法について説明します。

JCR APIは、基礎となるリポジトリまたはコンテンツのタイプに関係なく、コンテンツへの独立したアクセスを可能にします。JSR 170で定義されているJCR 1.0 APIは、コンテンツの読取り、書込み、参照および検索のための一連の基本機能を提供しています。JCRデータ・コントロールでは、他のJCR 1.0リポジトリとの接続および読取りも可能です。コンテンツ・サーバー、Oracle Portal、SharePoint用Oracle WebCenterアダプタおよびファイル・システムで使用可能なコンテンツをJSFページに追加するには、まずリポジトリへの接続を作成した後、その接続を使用してリポジトリに基づいてデータ・コントロールを作成します。詳細は、第24章「コンテンツの統合と公開の概要」を参照してください。

この章には次の項が含まれます。

- 第26.1項「コンテンツ・データ・コントロールの概要」

- 第26.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」

- 第26.3項「コンテンツ・リポジトリ・データ・コントロールの編集」

- 第26.4項「コンテンツ・リポジトリのデータ・コントロールの保護」

- 第26.5項「コンテンツ・データ・コントロールを使用したコンテンツの統合」

26.1 コンテンツ・データ・コントロールの概要

コンテンツ・データ・コントロールとは、すべてのデータ・オブジェクト、コレクション、メソッドおよび操作のコンテナであり、Portal Frameworkアプリケーション内にユーザー・インタフェース(UI)コンポーネントを作成するために使用されます。データ・コントロールでは、簡単に使用できるメソッドが提供され、これをJSFページにドラッグ・アンド・ドロップして、URL、ファイルおよびフォルダなどのADFコンポーネントとしてコンテンツを公開できます。コンテンツを公開するためのメソッド、パラメータおよびデフォルト属性は、すべてのJCRデータ・コントロール間で類似していますが、コンテンツ統合モジュールによって、要件に応じた属性のカスタマイズを柔軟に行えます。

どのタイプのコンテンツ・データ・コントロールにも、コンテンツをリンク、表、ファイルおよびフォルダとして公開しコンテンツに検索機能と拡張検索機能を追加するためのメソッドおよびパラメータが含まれています。パラメータには、2つのタイプの属性(デフォルトおよびカスタム)が含まれます。デフォルト属性は、ファイル・システム、Oracle Portal、Oracle WebCenter Content: Content ServerおよびSharePoint用Oracle WebCenterアダプタに基づくデータ・コントロールで共通です。カスタム属性は、リポジトリに固有であり、コンテンツ・データ・コントロールの作成中に追加できます。

次の各項で、ファイル・システム、Oracle Portal、コンテンツ・サーバーおよびSharePoint用Oracle WebCenterアダプタに基づくデータ・コントロールで共通のメソッド、パラメータおよびデフォルト属性について説明します。

- 第26.1.1項「getItemsメソッド」

- 第26.1.2項「searchメソッド」

- 第26.1.3項「advancedSearchメソッド」

- 第26.1.4項「getURIメソッド」

- 第26.1.5項「getAttributesメソッド」

26.1.1 getItemsメソッド

getItemsメソッドは、リポジトリ内の特定位置を開始点として格納されているファイルおよびフォルダを返します。このメソッドを使用すると、フォーム、表および階層ツリー内にコンテンツを公開できます。また、このメソッドを使用すると、ナビゲーション・リストおよびボタンも作成できます。

表26-1に、getItemsメソッドのパラメータを示します。

表26-1 getItemsメソッドのパラメータ

パラメータ

説明

path

getItemsの開始ポイントを定義します。

type

返される要素(ファイルのみ、フォルダのみ、またはオブジェクト)を指定します。

getItemsメソッドは、表26-2に示された属性を返します。

表26-2 getItemsメソッドの戻り属性

パラメータ

説明

icon16

ドキュメントでアイテムに使用するアイコンへのURIを指定します。

icon32

ドキュメントでアイテムに使用するアイコンへのURIを指定します。

ID

IDが必要なドキュメント・タスク・フローへのパラメータです。

lastModified

アイテムの最終変更日に関する説明です。

name

返されるファイルまたはフォルダの名前を指定します。

path

コンテンツ・リポジトリ内での、返されるファイルまたはフォルダの場所を指定します。

URI

ファイルまたはフォルダのダイレクト・アクセスURL。

primaryType

返されるオブジェクトがファイルかフォルダまたはそれ以外のタイプであるかを指定します。

26.1.2 searchメソッド

searchメソッドを使用すると、名前パターンまたはキーワードでの標準検索を作成できます。

表26-3に、searchメソッドのパラメータを示します。

表26-3 searchメソッドのパラメータ

パラメータ

説明

path

検索の開始パス。

isRecursive

指定されたフォルダのみを検索する(=false)か、指定されたパスから始まるツリー全体を検索する(=true)かを指定します。

デフォルト値はfalseです。つまり、このフィールドを空白のままにすると、指定したフォルダでsearchが実行されます。この値がtrueの場合にのみ、階層全体でsearchが実行されます。

keyword

全文検索の検索キーワード。

namePattern

名前でのパターン検索。ワイルドカード%は任意の数の文字に対して、ワイルドカード_は1文字に対して使用します。

searchメソッドは、表26-4に示す属性を返します。

表26-4 searchメソッドの戻り属性

パラメータ

説明

icon16

ドキュメントでアイテムに使用するアイコンへのURIを指定します。

icon32

ドキュメントでアイテムに使用するアイコンへのURIを指定します。

ID

IDが必要なドキュメント・タスク・フローへのパラメータです。

lastModified

アイテムの最終変更日に関する説明です。

name

返されるファイルまたはフォルダの名前を指定します。

path

コンテンツ・リポジトリ内での、返されるファイルまたはフォルダの場所を指定します。

URI

ファイルまたはフォルダのダイレクト・アクセスURL。

primaryType

返されるオブジェクトがファイルかフォルダまたはそれ以外のタイプであるかを指定します。

26.1.3 advancedSearchメソッド

advancedSearchメソッドを使用すると、使用可能な属性から検索基準セットを作成することにより、拡張検索を実行できます。

表26-5に、advancedSearchメソッドのパラメータを示します。

表26-5 advancedSearchメソッドのパラメータ

パラメータ

説明

path

検索の開始パス。

isRecursive

指定されたフォルダのみを検索する(=false)か、指定されたパスから始まるツリー全体を検索する(=true)かを指定します。

デフォルト値はfalseです。つまり、このフィールドを空白のままにすると、指定したフォルダでsearchが実行されます。この値がtrueの場合にのみ、階層全体でsearchが実行されます。

keyword

全文検索の検索キーワード。

namePattern

名前でのパターン検索。ワイルドカード%は任意の数の文字に対して、ワイルドカード_は1文字に対して使用します。

matchAny

すべての述語が一致する必要がある(=false)か、いずれかの述語が一致すればよい(=true)かを指定します。

predicates

属性、コンパレータおよび値から構成されるSimplePredicateパラメータのコレクション。

type

返される要素(ファイルのみ、フォルダのみ、またはオブジェクト)を指定します。

advancedSearchメソッドは、表26-6に示す属性を返します。

表26-6 advancedSearchメソッドの戻り属性

パラメータ

説明

icon16

ドキュメントでアイテムに使用するアイコンへのURIを指定します。

icon32

ドキュメントでアイテムに使用するアイコンへのURIを指定します。

ID

IDが必要なドキュメント・タスク・フローへのパラメータです。

lastModified

アイテムの最終変更日に関する説明です。

name

返されるファイルまたはフォルダの名前を指定します。

path

コンテンツ・リポジトリ内での、返されるファイルまたはフォルダの場所を指定します。

URI

ファイルまたはフォルダのダイレクト・アクセスURL。

primaryType

返されるオブジェクトがファイルかフォルダまたはそれ以外のタイプであるかを指定します。

26.1.4 getURIメソッド

getURIメソッドは、ファイルまたはフォルダのダイレクト・アクセスURLであるURI属性を返します。そのpathパラメータによりオブジェクトへのパスを指定します。このメソッドを使用すると、コンテンツへのリンクを作成したり、ページでコンテンツをインライン表示できます。getURIメソッドは、URI属性を返します。

26.1.5 getAttributesメソッド

getAttributesメソッドは、特定のファイルまたはフォルダの属性および値のリストを返します。そのpathパラメータによりオブジェクトへのパスを指定します。

表26-7に、getAttributesメソッドにより返される属性を示します。

表26-7 getAttributesメソッドの戻り属性

パラメータ

説明

name

属性の名前

value

属性の値

26.2 JCRアダプタ対応のコンテンツ・データ・コントロールの構成

この項では、コンテンツのリポジトリ接続に基づくコンテンツ・データ・コントロールを作成する方法について説明します。

- 第26.2.1項「コンテンツ・リポジトリ・データ・コントロールの構成」

- 第26.2.2項「コンテンツ・リポジトリのデータ・コントロールを構成する場合の処理」

26.2.1 コンテンツ・リポジトリ・データ・コントロールの構成

コンテンツ・リポジトリ・データ・コントロールの作成手順は、データ・コントロールの作成に使用した接続のタイプに関係なく同じです。コンテンツ・リポジトリへの接続を作成していない場合、第25.2項「コンテンツ・リポジトリ接続の構成」を参照してください。この項では、コンテンツ・サーバーベースの接続を使用してコンテンツ・データ・コントロールが作成されます。

既存のコンテンツ・リポジトリ接続を使用してコンテンツ・データ・コントロールを作成するには:

1. アプリケーション・ナビゲータで、新しいデータ・コントロールのプロジェクト・エントリを作成するポータル・プロジェクトを選択します。
これは、データ・コントロールの定義とデータ・コントロールの使用を分離するために必要です。ポータル・プロジェクトを選択した場合、ユーザー・インタフェースが作成されるViewControllerプロジェクト内ではなく、「アプリケーション・ソース」サブ・フォルダ内にデータ・コントロール定義ファイルが作成されます。

2. 「アプリケーション・リソース」パネルで、リポジトリ接続を作成した「接続」フォルダを開きます。

3. 新規データ・コントロールに使用するリポジトリ接続をドラッグし、「データ・コントロール」パネルにドロップします。
または、「ファイル」メニューから「新規」を選択します。「新規ギャラリ」で、「ビジネス層」を開き、「コンテンツ・リポジトリ」、「コンテンツ・リポジトリのデータ・コントロール」の順に選択し、「OK」をクリックします。

「接続名」リストで接続の名前が選択された状態で、「コンテンツ・リポジトリのデータ・コントロールの作成」ダイアログが表示されます。

注意:

リソース・パレットでリポジトリ接続を作成した場合、リソース・パレットで接続を右クリックし「データ・コントロールの作成」を選択します。リソース・パレットから「データ・コントロール」パネルに、必要な接続をドラッグ・アンド・ドロップできます。

新しい接続を追加するには、「コンテンツ・リポジトリ接続を新規に作成します」アイコンをクリックし、「コンテンツ・リポジトリ接続の作成」ダイアログ・ボックスを表示します。詳細は、第25.2項「コンテンツ・リポジトリ接続の構成」を参照してください。

4. 「データ・コントロール名」フィールドに、MyDataControlなどのデータ・コントロールの名前を入力します。

5. カスタム属性を追加するには、「追加」アイコンをクリックします。次に、「データ・コントロール」パネルに表示する属性の名前を入力し、そのタイプを選択して、JCRパスを入力します。
Content Serverで、次に示すようにdPropertyNameという名前のメタデータ属性がアダプタにマップされます。

jcr:content/idc:metadata/idc:dPropertyName

たとえば、プロパティ名がdWorkflowStateである場合、jcr:content/idc:metadata/idc:dWorkflowStateとしてマップされます。

Oracle Portalで、次に示すようにメタデータ属性がアダプタにマップされます。

portal:name of the attribute in Oracle Portal

注意:

アイテム属性のJCRパスを取得するには、必要なアイテムに対してgetAttributesメソッドを実行します。次に、「データ・コントロール」パネルで各データ・コントロールを右クリックし、「定義の編集」を選択して、パスが含まれるようウィザードに再度入力します。

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

注意:

データ・コントロールには、事前定義されたJCRのノード・タイプが含まれます。これらの基本的なノード・タイプは、フォルダ(nt:folder)およびファイル(nt:file)を表します。これらは、nt:baseスーパータイプの子であるnt:hierarchyNodeから導出されます。特定リポジトリの操作性をカスタマイズするために、基本タイプから追加ノード・タイプを導出できます。

26.2.2 コンテンツ・リポジトリのデータ・コントロールを構成する場合の処理

データ・コントロールが正常に構成されると、「データ・コントロール」パネルにノードとして表示されます。このノードを開くと、図26-1に示すような新しいデータ・コントロールのメソッド、パラメータおよび操作の階層リストが表示されます。「データ・コントロール」パネルの使用方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のFusion WebアプリケーションでのADFモデルの使用に関する項を参照してください。

図26-1 「データ・コントロール」パネル - Content Server

表26-8に、データ・コントロールのアイコンおよびオブジェクト階層を示します。

表26-8 「データ・コントロール」パネルのアイコンおよびオブジェクト階層

アイコン

名前

説明

使用方法

データ・コントロール

データ・コントロールを表します。UIコンポーネントを作成するためにデータ・コントロール自体を使用できませんが、その下のリストに含まれるいずれかの子オブジェクトを使用できます。ビジネス・サービスの定義方法に応じて、複数のデータ・コントロールが存在する場合があります。

他のオブジェクトのコンテナとして機能するもので、何かを作成するためには使用されません

メソッド

パラメータを受け入れ、ビジネス・ロジックを実行し、オプションで単一の値、構造体またはそれらのコレクションを返すことができるデータ・コントロールまたはその公開された構造体の操作を表します

コマンドのコンポーネント

パラメータを受け入れるメソッド(コマンド・コンポーネントおよびパラメータ化されたフォーム)

メソッドの戻りオブジェクト

カスタム・メソッドによって返されるオブジェクトを表します。返されるオブジェクトは、単一の値またはコレクションです。

メソッドの戻りオブジェクトは、それを返すメソッドの下の子として示されます。メソッドの戻りオブジェクトの下の子として表示されるオブジェクトは、該当コレクションの属性、親コレクションに関連するアクションを実行する他のメソッド、および親コレクション上で実行可能な操作です。

単一値(テキスト・フィールドおよび選択リスト)

コレクション(フォーム、表、ツリーおよび範囲ナビゲーション・コンポーネント)

単一値のメソッド戻りオブジェクトがドロップされた場合、メソッドはフレームワークによって自動的に起動されません。またユーザーは、実行可能プログラムとして起動アクションを作成するか、メソッドを起動するボタンとして対応メソッドをドロップする必要があります。

属性

オブジェクト内の個別データ要素を表します(行内の属性など)。属性は、それが属するコレクションまたはメソッド戻りオブジェクトの下に子として示されます。

ビュー・オブジェクトに含まれていた属性のみがコレクションの下に表示されます。ビュー・オブジェクトが1つ以上のエンティティ・オブジェクトに結合する場合、そのビュー・オブジェクトのコレクションには基礎となるすべてのエンティティ・オブジェクトからの選択された属性が含まれます。

ラベル、テキスト・フィールド、日付および選択リストのコンポーネント

操作

親オブジェクト上でアクションを実行する組込みデータ・コントロール操作を表します。データ・コントロール操作は、コレクションまたはメソッドの戻りオブジェクト、およびルート・データ・コントロール・ノードの下にある「操作」フォルダに位置します。特定のコレクションまたはメソッドの戻りオブジェクトの子である操作はそのオブジェクトに対してのみ動作するのに対して、データ・コントロール・ノード下にある操作はデータ・コントロール内のすべてのオブジェクトに対して動作します。

操作に1つ以上のパラメータが必要である場合、操作の下にある「パラメータ」フォルダに示されます。

ボタンやリンクなどのUIコンポーネント

パラメータ

パラメータが示されているメソッドまたは操作によって宣言されたパラメータ値を表します。パラメータは、メソッドまたは操作の下にある「パラメータ」フォルダに示されます。

ラベル、テキストおよび選択リストのコンポーネント

ポータル・プロジェクトの下に次のファイルが作成されます(図26-2)。

- DataControls.dcx: Oracle JDeveloperは、データ・コントロールが最初に作成されたときにこのファイルを作成します。このファイルには、現在のプロジェクトの下で作成されたすべてのOracle ADFデータ・コントロールが含まれます。このファイルは、データ・コントロールの初期化に必要です。

- datacontrolname.xml: このファイルには、データ・コントロールの属性、アクセッサおよび操作が含まれます。

- advancedSearch_return.xml: このファイルには、advancedSearchメソッドの戻り型定義が含まれます。

- getAttributes_return.xml: このファイルには、getAttributesメソッドの戻り型定義が含まれます。

- getItems_return.xml: このファイルには、getItemsメソッドの戻り型定義が含まれます。

- getURI_return.xml: このファイルには、getURIメソッドの戻り型定義が含まれます。

- search_return.xml: このファイルには、searchメソッドの戻り型定義が含まれます。

- Return.xml: このファイルは、コレクションに対する標準操作を定義します。

図26-2 プロジェクト・パネル - ポータル・プロジェクト

26.3 コンテンツ・リポジトリ・データ・コントロールの編集

この項では、第26.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」の説明に従って構成したコンテンツ・データ・コントロールを編集するための一般的な手順を示します。

コンテンツ・データ・コントロールを編集するには:

1. Oracle JDeveloperで、コンテンツ・データ・コントロールが含まれるアプリケーションに移動します。

2. 「データ・コントロール」ペインで、編集するデータ・コントロールを右クリックし、図26-3に示すように「定義の編集」を選択します。図26-4に示す「コンテンツ・リポジトリのデータ・コントロールの編集」ダイアログが表示されます。

図26-3 データ・コントロールの編集

図26-4 「コンテンツ・リポジトリのデータ・コントロールの編集」ダイアログ

3. 別の接続を選択するには、「接続名」リストを使用します。

4. 接続を追加するには、「コンテンツ・リポジトリ接続を新規に作成します」アイコンをクリックし、「コンテンツ・リポジトリ接続の作成」ダイアログを表示します。作成する接続タイプ固有の構成パラメータの詳細は、第25.2項「コンテンツ・リポジトリ接続の構成」を参照してください。

5. 既存の接続を編集するには、「選択したコンテンツ・リポジトリ接続を編集します」アイコンをクリックし、「コンテンツ・リポジトリ接続の編集」ダイアログを表示します。構成パラメータの詳細は、変更する接続のタイプに応じて、第25.2項「コンテンツ・リポジトリ接続の構成」で対応する項を参照してください。

6. カスタム属性を追加するには「カスタム属性」ボックスの「新規属性の追加」アイコンを、削除するには「選択された属性の削除」アイコンを使用します。

7. 「OK」をクリックして変更を適用します。

26.4 コンテンツ・リポジトリのデータ・コントロールの保護

コンテンツ・リポジトリ接続のセキュリティを有効にできます。詳細は、第74章「WebCenter Portal Frameworkアプリケーションの保護」を参照してください。

26.5 コンテンツ・データ・コントロールを使用したコンテンツの統合

この項では、データ・コントロールのgetURIメソッド、getItemsメソッド、searchメソッドおよびadvancedSearchメソッドを使用します。データ・コントロール・メソッドを使用する基本手順は、そのメソッドをページにドラッグ・アンド・ドロップすることです。メソッドをドロップすると、そのADF Facesタグがページのソースに追加され、タグが「構造」ウィンドウに表示されます。たとえば、getURIのURI属性を実行リンクとしてドロップすると、af:goLinkがページに追加されます。af:goLinkの宛先は、EL式#{bindings.URI.inputValue}に設定されます。このEL式は、af:goLinkの宛先値をバインディング・コンテナのURI値に関連付けます。

ページ定義ファイルでは、methodIteratorがexecutables要素に追加され、methodActionがbindings要素に追加されます。methodIterator要素およびmethodAction要素は、使用されるデータ・コントロールおよびメソッドを定義します。methodActionのNamedData属性は、このメソッドのコールで提供する必要がある入力パラメータ値を定義します。pathパラメータおよびtypeパラメータは、すべてのデータ・コントロール・メソッドで共通です。ただし、searchおよびadvancedSearchのNamedDataには、それぞれのメソッドに固有の追加パラメータが含まれます。たとえば、advancedSearchメソッドでは、検索の条件、検索が再帰的であるかどうかなどを定義するためにNamedDataを使用することもできます。

ページ定義には、ADFに対するバインディング・コンテナで使用可能なアイテムの属性を定義するAttrNames要素が含まれます。こうしたアイテムは、データ・コントロールの作成時に定義されたデフォルト属性およびカスタム属性に基づきます。

「データ・コントロール」パネルおよびページ定義ファイルの使用の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のFusion WebアプリケーションでのADFモデルの使用に関する項を参照してください。

この項の例では、次のデータ・コントロール・メソッドを使用しています。

- getURI: リポジトリ・フォルダにテキスト・リンクおよびクリック可能イメージ・リンクを追加します。

- getItems: ADF表およびツリーにリポジトリ・コンテンツを公開します。

- searchおよびadvancedSearch: 検索条件に一致するリポジトリのアイテムを表示します。

この項には次のサブセクションが含まれます:

- 第26.5.1項「リンクとしてのコンテンツの公開」

- 第26.5.2項「実行時の処理」

- 26.5.3項「表でのコンテンツの公開」

- 第26.5.4項「実行時の処理」

- 26.5.5項「ツリーでのフォルダ・コンテンツの公開」

- 第26.5.6項「実行時の処理」

- 26.5.7項「コンテンツ・リポジトリへの検索機能の追加」

- 第26.5.8項「実行時の処理」

- 第26.5.9項「検索機能の使用」

26.5.1 リンクとしてのコンテンツの公開

この項では、ファイル・システムに格納されたファイルへのハイパーリンクの作成方法およびそれらをテキストおよびイメージ・リンクに変換する方法について説明します。「ADF実行リンク」およびgetURIメソッドを使用してテキスト・リンクを作成し、「ADF Faces」のイメージを使用してイメージ・リンクを作成します。

この項では、次の手順について説明します。

- 第26.5.1.1項「テキスト・リンクとしてのコンテンツの公開」

- 第26.5.1.2項「ドキュメントへリンクするクリック可能イメージの作成」

始める前に:

1. 第25.2項「コンテンツ・リポジトリ接続の構成」の説明に従って、リポジトリ接続を構成します。

2. 第26.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」の説明に従って、データ・コントロールを構成します。

3. 第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」の説明に従ってページを作成します。

26.5.1.1 テキスト・リンクとしてのコンテンツの公開

この項では、getURIメソッドのOracle ADF実行リンク・オプションを使用して、コンテンツをテキスト・リンクとして公開します。また、リポジトリの特定アイテムを表示するためのリンクを作成します。

テキスト・リンクとしてコンテンツを公開するには:

1. アプリケーション・ナビゲータで、ページ(myPage.jspxなど)をダブルクリックしてビジュアル・エディタ内に開きます。

2. 「データ・コントロール」パネルで、リポジトリ接続の下の「getURI (String)」メソッドを開き、「Return」を開きます。図26-5に示すように、URI属性が表示されます。

図26-5 getURIメソッドのURI属性

3. テキスト・リンクを作成するには、「URI」属性を選択し、「構造」ウィンドウのh:formの下またはページ上にドロップします。図26-6に示すように、「作成」メニューから「リンク」を選択し、次に「ADF実行リンク」を選択します。
最初にノードをページにドロップした場合、「アクション・バインディングの編集」ダイアログが表示されます。

図26-6 getURIメソッドのOracle JDeveloperポップアップ・メニュー

4. 図26-7に示すように、pathパラメータの「値」フィールドに、リンクを作成するファイルのパスを入力します。/PlasmaNews.htmlなどのように、必ずスラッシュ(/)を入力してください。このパスを後で変更または削除するには、設計モードでノードの隣にある矢印アイコンをクリックし、ポップアップ・メニューから「バインディングに移動」を選択します。

図26-7 アクション・バインディングの編集

注意:

編集、パーソナライズ、カスタマイズおよび表示の権限を属性レベルで付与するには、第26.4項「コンテンツ・リポジトリのデータ・コントロールの保護」を参照してください。

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

6. ページを右クリックし、「実行」を選択します。ブラウザに、「アクション・バインディングの編集」ダイアログに入力したファイル・パスのURLが書式設定なしで表示されます。

7. デフォルトでは、リンクにはテキストgoLink1が表示されます。「構造」ウィンドウで、「af:goLink - goLink1」を選択し、「プロパティ・インスペクタ」のプロパティを表示します。

8. 図26-8に示すように、「Text」フィールドにPlasma Newsなどのリンク名を入力します。

図26-8 「実行リンク」のプロパティ

9. ページを右クリックし、「実行」を選択します。図26-9に示すように、ブラウザ・ウィンドウに新しいリンクを備えたページが表示されます。

図26-9 ブラウザでのADF実行リンク

10. リンクをクリックして、適切なファイルが表示されることを確認します。

第26.5.1.2項「ドキュメントへリンクするクリック可能イメージの作成」で、このテキスト・リンクを拡張してイメージ・リンクにします。

同じJSFページに別のアイテムへのリンクを追加するには:

1. アプリケーション・ナビゲータで、ADF実行リンクを作成したページを右クリックし、「ページ定義に移動」を選択します。図26-10に示すように「設計」ビューに「ページ・データ・バインディング定義」が表示されます。

図26-10 ページ・データ・バインディング定義

2. ページ定義の「ソース」ビューに移動します。

3. 次の例に太字で示したように、executables要素で、別のmethodIteratorを追加し、methodIterator idおよびBindsの値を変更します。

<executables>
<variableIterator id="variables"/>
<methodIterator Binds="getURI.result" DataControl="MyDataControl"
RangeSize="25" BeanClass="portal.MyDataControl.getURI_return"
id="getURIIterator"/>
<methodIterator Binds="getURI1.result" DataControl="MyDataControl"
RangeSize="25" BeanClass="portal.MyDataControl.getURI_return"
id="getURIIterator1"/>
</executables>

4. 次の例に太字で示したように、Bindings要素で、別のmethodActionを追加し、methodAction id、ReturnNameおよびNDValueを変更します。

<methodAction id="getURI"
RequiresUpdateModel=true Action="invokeMethod" MethodName="getURI"
IsViewObjectMethod="false" DataControl="MyDataControl"
InstanceName="MyDataControl"
ReturnName="MyDataControl.methodResults.getURI_MyDataControl_getURI_result">
<NamedData NDName="path" NDValue="/PlasmaNews.html"
NDType="java.lang.String"/>
</methodAction>
<methodAction id="getURI1"
RequiresUpdateModel="true" Action="invokeMethod" MethodName="getURI"
IsViewObjectMethod="false" DataControl="MyDataControl"
InstanceName="MyDataControl"
ReturnName="MyDataControl.methodResults.getURI_MyDataControl_getURI1_result">
<NamedData NDName="path" NDValue="/FusionOrderDemoLogo.jpg"
NDType="java.lang.String"/>
</methodAction>

5. 次の例に太字で示したように、Bindings要素で、別のattributeValuesタグを追加して新しいIdを指定します。

<attributeValues
IterBinding="getURIIterator"
id="URI">
<AttrNames>
<Item Value="URI"/>
</AttrNames>
</attributeValues>
<attributeValues
IterBinding="getURIIterator1"
id="URI1">
<AttrNames>
<Item Value="URI"/>
</AttrNames>
</attributeValues>

6. 「データ・コントロール」パネルで、リポジトリ接続の下の「getURI (String)」メソッドを開き、「Return」を開きます。URI属性が表示されます。

7. テキスト・リンクを作成するには、「URI」属性を選択し、「構造」ウィンドウのh:formの下またはページ上にドロップします。図26-11に示すように、「作成」メニューから「リンク」を選択し、次に「ADF実行リンク」を選択します。

図26-11 getURIメソッドのOracle JDeveloperポップアップ・メニュー

8. 「構造」ウィンドウで、新しいgoLink(「af:goLink2」など)をダブルクリックして、「実行リンクのプロパティ」ウィンドウを表示します。

9. 「テキスト」フィールドに、新規リンクの表示名(FOD Logoなど)を入力します。

10. 「リンク先」フィールドで下矢印をクリックして「式ビルダー」ダイアログを表示します。次に、「ADFバインディング」、「バインディング」および「URI1」を開きます。

11. 「inputValue」変数をダブルクリックして#{bindings.URI1.inputValue}式を作成し、「OK」をクリックします。この式は、executablesおよびbindingsに追加した新しい要素に基づいています。

12. ページを実行します。新しいリンクに、手順4で指定した新しいパス(NDValue)からのコンテンツが表示されます。図26-12に、第26.5.1.1項「テキスト・リンクとしてのコンテンツの公開」の冒頭で追加した「Plasma News」リンクとともに、新しいリンク「FOD Logo」が表示されています。

図26-12 新しいテキスト・リンク

この手順に従うことで、必要なだけいくつでもリンクを追加できます。

26.5.1.2 ドキュメントへリンクするクリック可能イメージの作成

この項では、ADF FacesのImageオプションを使用してクリック可能イメージ(イメージ・オブジェクトをクリックすると、ドキュメントが表示される)としてドキュメントを公開します。

コンテンツをクリック可能イメージとして公開するには:

1. アプリケーション・ナビゲータで、ADF実行リンクを作成したページをダブルクリックして開きます。

2. 第26.5.1.1項「テキスト・リンクとしてのコンテンツの公開」の冒頭で作成したテキスト・リンクを変換するには、「構造」ウィンドウで「af:goLinkの中に挿入」を選択し、「参照」を選択します。「項目の挿入」ダイアログが表示されます。

3. 図26-13に示すように、「作成する項目を選択します」リストから「イメージ」を選択します。

図26-13 ADF Faces項目の挿入

4. 「OK」をクリックします。「イメージの挿入」ダイアログが表示されます。

5. イメージ・リンクとして表示するイメージ・ファイル(plasma.jpgなど)を参照します。

6. 「終了」をクリックします。

7. ページを右クリックし、「実行」を選択します。図26-14に、サンプル出力を示します。

図26-14 ブラウザでのADFオブジェクト・イメージ・リンク

26.5.2 実行時の処理

前の例では、ADF実行リンクを使用して、ファイル・システムに格納されたファイルに対するハイパーリンクを作成し、ADF FacesのgetURIメソッドおよびイメージ・コンポーネントを使用してテキストおよびイメージのリンクに変換しました。

実行時にADFフレームワークは、ページで必要になるデータ・コントロール・メソッドを起動するためにページ定義ファイルの情報を使用します。ページのライフサイクルの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「Fusionページのライフサイクルの理解」の章を参照してください。

実行時にgetURIデータ・コントロール・メソッドが起動され、指定したパスがデータ・コントロールが構成されたコンテンツ・リポジトリの有効なHTTP URIに変換されます。戻されるURLは、ターゲット・リポジトリへの構文的に正しいURLですが、リソースの検出を保証するものではありません。つまり、getURIメソッドでは、既存のJCRノードに対応するパスは検証されません。ページがレンダリングされ、クリック可能イメージまたはリンクがクリックされると、アプリケーションのゲット・ハンドラによってHTTP URLがJCRパスに変換され、そのJCRパスのコンテンツの取得が試行されます。ゲット・ハンドラはまた、リポジトリから情報が取得できる場合は、レスポンスContent-Typeヘッダー内のmimeType情報を提供します。JCRでは、jcr:mimeTypeはnt:resourceノード・タイプのオプションのプロパティのためです。

26.5.3 表でのコンテンツの公開

この項では、getItemsデータ・コントロール・メソッドを使用して、表でファイルおよびフォルダ情報を公開します。この項では、次の手順について説明します。

- 第26.5.3.1項「読取り専用形式でのファイルおよびフォルダの表示」

- 第26.5.3.2項「実行リンクとしてのName属性の表示」

- 第26.5.3.3項「ファイルのみが表示される表の構成」

始める前に:

1. 第25.2項「コンテンツ・リポジトリ接続の構成」の説明に従って、リポジトリ接続を構成します。

2. 第26.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」の説明に従って、データ・コントロールを構成します。

3. 第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」の説明に従ってページを作成します。

26.5.3.1 読取り専用形式でのファイルおよびフォルダの表示

ここで、getItemsメソッドを使用して読取り専用のADF表を作成します。

読取り専用表でフォルダ・コンテンツを表示するには:

1. ページをビジュアル・エディタで開くために、アプリケーション・ナビゲータでダブルクリックします。

2. 図26-15に示すように、「データ・コントロール」パネルで、データ・コントロールの下の「getItems」メソッドおよび「Return」ノードを開きます。

図26-15 getItemsメソッドの「Return」ノード

3. このデータ・コントロールを介して使用可能なすべてのファイルおよびフォルダがリストされる表を作成するには、「Return」ノードをページまたは「構造」ウィンドウの「af:form」の下にドロップします。図26-16に示すように、「作成」メニューから「表」を選択し、次に「ADF読取り専用表」を選択します。

図26-16 getItemsメソッドの「コンテキストの作成」メニュー

4. 図26-17に示すように、「表の列の編集」ダイアログで、「getItems.name値バインディング」の行を選択し、「ラベルの表示」に適切な値(Nameなど)を入力します。
path、URI、primaryTypeおよびlastModified属性に対してこの手順を繰り返します。name、Location、URLなどの新しい表示ラベルを入力し、「OK」をクリックします。

図26-17 表の列の編集

5. 最初にノードをページにドロップした場合、「アクション・バインディングの編集」ダイアログが表示されます。
図26-18に示すように、「アクション・バインディングの編集」ダイアログで、コンテンツ・ディレクトリのパスをpathパラメータとして入力します。必ずスラッシュ(/)を入力してください。このパスを後で変更または削除するには、設計モードでノードの隣にある矢印アイコンをクリックし、ポップアップ・メニューから「バインディングに移動」を選択します。

typeパラメータは空白のままにしておきます。これは、表にファイルとフォルダの両方を表示することを示します。

図26-18 アクション・バインディングの編集

6. 「OK」をクリックします。図26-19に示すような表が、ページに表示されます。

図26-19 フォルダ・コンテンツを公開するための読取り専用表

注意:

ページ・キャッシュのオンとオフを切り替えることができます。このためには、ページ定義を開き、「構造」ウィンドウで「実行可能ファイル」を開き、「getItemsIterator」を選択します。次に、プロパティ・インスペクタで、CacheResultsをtrueまたはfalseに適宜設定します。

7. ページを実行します。コンテンツ・ディレクトリで使用可能なすべてのファイルおよびフォルダのリストが表示されます。図26-20は、実行時にファイルとフォルダの両方を示す読取り専用表です。

図26-20 読取り専用表に表示されたファイルおよびフォルダ

デフォルトでは、表にはファイルまたはフォルダの属性が読取り専用テキスト(af:outputText)として表示されます。次の項で、Name属性(name)を実行リンク(af:goLink)として表示する方法を説明します。

26.5.3.2 実行リンクとしてのName属性の表示

この項では、第26.5.3.1項「読取り専用形式でのファイルおよびフォルダの表示」で作成した表のName属性を、ADF実行リンク・コンポーネントを使用してリンクに変換します。また、「名前」列のみを表示するように表を構成します。

実行リンクとしてName属性を表示するには:

1. 「構造」ウィンドウ(図26-21)で、表の最初の列(af:column - Name)を開いて、デフォルトの表示形式「af:outputText - #{row.name}」を表示します。

図26-21 「名前」列のデフォルト書式設定

2. ページのリンク元ビューで、実行リンクを使用する「名前」列を変更します。リンクには名前が表示されますが、エントリのURIにリンクされています。
太字のaf:outputTextを置き換えます。

<af:column sortProperty="#{bindings.Return.hints.name.name}"
sortable="false" headerText="Name" id="c7">
<af:outputText value="#{row.name}" id="ot3"/>
</af:column>

太字に示すようにaf:goLinkに置き換えます。

<af:column sortProperty="#{bindings.Return.hints.name.name}"
sortable="false" headerText="Name" id="c7">
<af:goLink text="#{row.name}" id="goLink2"      destination="#{row.bindings.URI.inputValue}"/>
</af:column>

3. 「構造」ウィンドウで、「af:column - URI」を右クリックし、「削除」を選択します。

4. アプリケーション・ナビゲータでページを右クリックし、「実行」を選択します。図26-22に示すような、ハイパーリンク付きのファイルおよびフォルダ名のリストが表示されます。この図では、name属性がリンクとして示されています。「URI」列のリンクをクリックすると、対応するファイルまたはフォルダが開き、そのコンテンツが表示されます。

図26-22 ハイパーリンクとして表示されたフォルダ・コンテンツ

5. ファイル名をクリックします。選択したファイルが、ブラウザ・ウィンドウに表示されます。

6. フォルダの名前をクリックすると、図26-23に示すように、フォルダのコンテンツが表示されます。

図26-23 フォルダのコンテンツ

「名前」列のみを表示するよう表を構成するには:

1. 「構造」ウィンドウの「af:table - t1」ノードで、「名前」列以外のすべての列を削除します。

2. 「af:table - t1」ノードをダブルクリックし、プロパティ・インスペクタを表示します。

3. 図26-24に示すように、「共通」タブの「ID」フィールドに名前(myFilesなど)を入力します。

図26-24 表のプロパティ - 「共通」タブ

4. ページを実行して出力を表示します。他の行は設計時に「構造」ウィンドウから削除されたため、図26-25には表の列のみを表示しています。表の作成時にtypeパラメータを空白のままにしたため、この表はファイルとフォルダの両方を表示しています。

図26-25 1列のみの表に表示されたファイルおよびフォルダ

次の項では、ファイルのみが表示されるように「名前」列を構成します。

26.5.3.3 ファイルのみが表示される表の構成

フォルダではなく、ファイルのみが表示されるように表を構成するには、type属性を使用します。

ファイルを表示するように表を構成するには:

1. ページを右クリックし、「ページ定義に移動」を選択します。

注意:

ページに表示されるアイテムの数を制御するために使用されるRangeSizeバインディング設定は、ページ定義ファイル内で、デフォルトで10に設定されています。この設定は、プロパティ・インスペクタで適宜変更できます。

2. 「概要」タブで、「バインディング」の「getItems」をダブルクリックします。「アクション・バインディングの編集」ダイアログが表示されます。

3. 「type」オプションは、nt:fileとnt:folderです。ファイルのみが表示されるように指定するには、図26-26に示すように、「値」列にnt:fileを入力し、「OK」をクリックします。

4. 図26-26 ファイルのみの表示

5. ここで、ページを実行します。図26-27では、列タイプがnt:fileであるので、1列の表にファイルのみが表示されています。

図26-27 1列の表に表示されたファイル

26.5.4 実行時の処理

JCRデータ・コントロールのgetItemsメソッドは、JCRフォルダの子アイテム(タイプnt:folder)を取得します。このメソッドは、フォルダへのパスを指定してコールされます。オプションで、戻される子ノードを制限するタイプも指定できます。

pathパラメータは、フォルダのパスであることが必要です。このルールの例外としては、リポジトリのルートはフォルダにする必要はないことです。このため、getItemsメソッドでは、フォルダに対応するパスやリポジトリのルートであるパスの子アイテムを取得できます。それ以外の場合、getItemsメソッドでは子アイテムの取得を試行しないので、結果セットは移入されません。

実行時に、JCRデータ・コントロールはSession.getItemメソッドをコールします。このメソッドはJCRノードを返します。次にデータ・コントロールは、子ノードを取得するためにnode.getNodesをコールします。子ノードは、指定のタイプ(nt:fileタイプなど)に従ってフィルタ処理されます。データ・コントロールは、これらの子ノードをADFに渡します。バインディング・コンテナを通じてデータ・コントロール・アイテム属性としてJCRプロパティを利用できるように、データ・コントロールはJCRノード・オブジェクトをADFに適合させます。

この例では、データ・コントロールによって返されたコレクションの各行が行としてaf:table表に格納されます。ただし、データ・コントロールによって返される使用可能なすべてのADFアイテム属性についてではなく、af:tableで定義された各af:columnについてのみ、列が表示されます。この例の冒頭部分では、ドラッグ・アンド・ドロップ・アクションにより、データ・コントロールによって返された各ADFアイテムで使用可能な各ADF属性について、af:columnが作成されます。

名前のaf:columnのみを含めるようにaf:tableが変更されている場合、実行時にADFアイテムの名前のみを要求します。つまり、データ・コントロールは、JCRノードの名前をフェッチするメソッドを実行します。設計時に名前列がaf:goLinkに変換されている場合、次の構文に示すように、実行リンクのリンク先はアイテムのURI値に設定されます。

<af:goLink text="#{row.name}" destination="#{row.URI}"/>

実行時にデータ・コントロールは、表の各ADFアイテムについて、アイテムのJCR名とそのHTTP URLの両方を返すメソッドを実行します。

26.5.5 ツリーでのフォルダ・コンテンツの公開

この項では、getItemsメソッドを使用して、コンテンツを階層ツリー形式で公開します。この項では、次の手順について説明します。

- 第26.5.5.1項「読取り専用形式でのファイルおよびフォルダの表示」

- 第26.5.5.2項「ハイパーリンクとしてのファイル名の表示」

始める前に:

1. 第25.2項「コンテンツ・リポジトリ接続の構成」の説明に従って、リポジトリ接続を構成します。

2. 第26.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」の説明に従って、データ・コントロールを構成します。

3. 第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」の説明に従ってページを作成します。

26.5.5.1 読取り専用形式でのファイルおよびフォルダの表示

この項では、コンテンツをツリー形式で表示します。

コンテンツをツリー形式で表示するには:

1. アプリケーション・ナビゲータで、ページをダブルクリックしてデザイン・ビューで開きます。

2. 図26-28に示すように、「データ・コントロール」で、該当するデータ・コントロールの下のgetItemsメソッドを展開します。

図26-28 getItemsメソッドのパラメータ

3. コンテンツをADFツリーとして表示するには、「Return」ノードを選択してページにドラッグします。図26-29に示すように、「作成」メニューから「ツリー」を選択し、次に「ADFツリー」を選択します。
最初にノードをページにドロップした場合、「アクション・バインディングの編集」ダイアログが表示されます。

図26-29 Oracle JDeveloperのgetItemsの「作成」メニュー

4. ベース・パスの下の要素をすべて表示するツリーを作成するには、図26-30に示すように、pathパラメータにスラッシュ(/)を入力します。このパスを後で変更または削除するには、設計モードでノードの隣にある矢印アイコンをクリックし、ポップアップ・メニューから「バインディングに移動」を選択します。
ファイルとフォルダの両方を表示するために、typeは空白にしておきます。

図26-30 「アクション・バインディングの編集」ダイアログ

5. 「OK」をクリックします。「ツリー・バインディングの編集」ダイアログが表示されます。

6. 実行時のアイテムの名前、パスおよびタイプを表示するには、「使用可能な属性」で適切な属性を選択し、「表示属性」リストに移動します。

7. 図26-31に示すように、「ツリー・レベル・ルール」ボックスで、「ルールの追加」アイコンをクリックして「アイテム」を選択し、ルールを作成します。これによって、ツリーでその子アイテムを検索できます。

図26-31 ツリー・バインディングの編集

8. 「OK」をクリックします。図26-32に示すように、ツリーがページに表示されます。

図26-32 フォルダ・コンテンツをナビゲートするためのツリー

9. ページを実行して、結果を表示します。
ページがブラウザ・ウィンドウに表示されると、データ・コントロールを介して使用可能なファイルおよびフォルダのリストが表示されます。図26-33は、JSFページにドロップされたADFツリーに基づく読取り専用形式のファイルおよびフォルダのツリーを示しています。ブランチを開くと、このサブディレクトリ内のコンテンツが表示されます。

注意:

デフォルトでは、レンジ・サイズは10です。ツリーに表示されるアイテムの数を変更するには、ページ定義ファイル(namePageDef.xml)でデータ・コントロールに対するRangeSizeプロパティを編集します。

図26-33 ツリーで表示されたフォルダ・コンテンツ

デフォルトでは、ツリーにはファイルおよびフォルダの名前が読取り専用テキストとして表示されます。次の項では、ファイル名へのハイパーリンクを作成する方法について説明します。また次の項では、ツリーでの移動に必要になるので、フォルダ名は読取り専用テキストのままにします。

26.5.5.2 ハイパーリンクとしてのファイル名の表示

フォルダ名を読取り専用にしたまま、ファイル名にハイパーリンクを作成するには、2つのファセット(フォルダ用とファイル用に1つずつ)を持つaf:switcherコンポーネントが必要です。

フォルダおよびファイルにSwitcherコンポーネントを使用するには:

1. 「構造」ウィンドウで、「f:facet - nodeStamp」に移動し、af:outputText-#{node}を削除します。

2. 「nodeStamp」を右クリックし、「f:facet - nodeStampの中に挿入」を選択し、「参照」を選択します。

3. 「項目の挿入」ダイアログで、カテゴリを選択するためのドロップダウン・リストから「ADF Faces」を選択します。

4. 「作成する項目を選択します」リストから「スイッチャ」を選択し、「OK」をクリックします。
図26-34に示すように、「構造」ウィンドウの「f:facet - nodeStamp」の下にスイッチャが追加されます。

図26-34 Switcherコンポーネントに変換された出力テキスト

5. プロパティ・インスペクタが表示されていない場合、「af:switcher」をダブルクリックして表示します。

6. 「共通」タブの「FacetName」フィールドで、式#{node.primaryType}を入力します。

7. 「構造」ウィンドウで、スイッチャのファセットを2つ挿入します。「af:switcher」を右クリックし、「af:switcherの中に挿入」→「ファセット」の順に選択します。「ファセットの挿入」ダイアログが表示されます。

8. 最初のファセットにnt:folderという名前を付け、「OK」をクリックします。フォルダ名に追加の書式設定は必要ないので、ノード名はプレーン・テキストとして表示できます。2番目のファセットnt:fileに名前を付けます。このファセットは、図26-35のように表示されます。

図26-35 2つのファセットを持つSwitcherコンポーネント

9. 「f:facet - nt:folder」を右クリックし、「f:facet - nt:folderの中に挿入」を選択して「参照」を選択します。

10. 「項目の挿入」ダイアログで、ドロップダウン・リストから「ADF Faces」を選択します。

11. 「作成する項目を選択します」リストから「出力テキスト」を選択し、「OK」をクリックします。

12. プロパティ・インスペクタが表示されていない場合は、「af:outputText - outputText1」をダブルクリックして表示します。「共通」タブの「値」フィールドで、式#{node.name}を入力します。

13. 「f:facet - nt:file」を右クリックし、「f:facet - nt:folderの中に挿入」を選択して「参照」を選択します。

14. 「項目の挿入」ダイアログで、ドロップダウン・リストから「ADF Faces」を選択します。

15. 「作成する項目を選択します」リストから「実行リンク」を選択し、「OK」をクリックします。

16. プロパティ・インスペクタが表示されていない場合は、構造ウィンドウで、「af:goLink - goLink」をダブルクリックして表示します。

17. 「共通」タブの「テキスト」フィールドで、#{node.name}式を入力します。

18. 「リンク先」フィールドに、式#{node.URI}を入力します。

19. 「ターゲット・フレーム」リストから、「空白」を選択します。

20. ページを実行します。図26-36では、af:treeの下にあるスイッチャのnt:fileファセットがリンク(node.URI)に変換されたので、ファイル名がハイパーリンクとして表示されています。リンクをクリックすると、対応するアイテムが表示されます。

図26-36 ハイパーリンクとしてのファイル名で構成されたツリー

26.5.6 実行時の処理

JCRデータ・コントロールのgetItemsメソッドは、JCRフォルダの子アイテム(タイプnt:folder)を取得するために設計されました。このメソッドは、フォルダへのパスを指定して起動されます。オプションで、戻される子ノードを制限するタイプも指定できます。pathパラメータには、子アイテムを取得するgetItemsメソッドのフォルダへのパスを指定する必要があります。このルールの例外としては、リポジトリのルートはフォルダにする必要はないことです。このため、getItemsメソッドでは、フォルダに対応するパスやリポジトリのルートであるパスの子アイテムを取得できます。それ以外の場合、getItemsメソッドでは子アイテムの取得を試行しないので、結果セットは移入されません。パスが有効な場合、データ・コントロールはこのパス上のJCR Session.getItem()を起動してJCRノードを返します。その後、node.getNodes()を起動してすべての子ノードを取得します。子ノードは、nt:fileタイプの子ノードのみを返すなど、提供されるタイプに応じてフィルタ処理されます。これは、データ・コントロールがADFに提供する結果です。バインディング・コンテナを通じてデータ・コントロール・アイテム属性としてJCRプロパティを利用できるように、データ・コントロールはJCRノード・オブジェクトをADFに適合させます。

af:treeは、ツリーでノードとしてデータ・コントロールによって返されるコレクションで各ノードをレンダリングします。この例の冒頭部分では、各ノードのname、typeおよびURIを表示します。これらの各値は、データ・コントロールを通じて取得されます。スイッチャをaf:treeに追加した場合、ノードのレンダリング方法を区別するためにノードのprimaryType値が使用されます。ノードのプライマリ・タイプがnt:folderである場合、その名前のみがツリー・ノードに表示されます。ただし、ノードのタイプがnt:fileである場合、ノードはgo:Linkをレンダリングし、リンク先はノードのURIになります。ツリーのフォルダ・ノードの子ノードを取得するために、データ・コントロールのgetItemsメソッドが再度起動されます。

26.5.7 コンテンツ・リポジトリへの検索機能の追加

この項では、2つの例をあげて、統合されたコンテンツに対して標準検索機能および拡張検索機能を追加する方法を示します。標準検索では、ユーザーは、名前や特定の場所にあるコンテンツ・フラグメントに基づいてコンテンツを検索できます。拡張検索では、ユーザーはコンテンツの属性値によって検索できます。

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

- 第26.5.7.1項「標準検索機能の追加」

- 第26.5.7.2項「拡張検索機能の追加」

始める前に:

1. 第25.2項「コンテンツ・リポジトリ接続の構成」の説明に従って、リポジトリ接続を構成します。

2. 第26.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」の説明に従って、データ・コントロールを構成します。

3. 第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」の説明に従ってページを作成します。

26.5.7.1 標準検索機能の追加

この項では、標準検索機能をページで有効にします。これによって、ワイルドカード(%)検索が行えるようになります。

検索機能を有効にするには:

1. アプリケーション・ナビゲータで、ページをダブルクリックして開きます。

2. 「データ・コントロール」パネルで、「search」ノードを開きます。

3. ユーザーがボタンをクリックして検索を実行できるようにするには、「search」ノードをページにドラッグ・アンド・ドロップします。「作成」メニューから、「パラメータ」、「ADFパラメータ・フォーム」の順に選択します。「フォーム・フィールドの編集」ダイアログが表示されます。

4. 「OK」をクリックします。図26-37に示すように、ADFパラメータ・フォームがページに追加されます。

図26-37 「デザイン・ビュー」での「ADFパラメータ・フォーム」

5. 検索結果を読取り専用表に表示できるようにするには、「Return」ノードをページにドラッグ・アンド・ドロップします。「作成」メニューで「表」を選択し、「ADF読取り専用表」を選択します。「表の列の編集」ダイアログが表示されます。

6. 「OK」をクリックします。図26-38のような表が表示されます。

図26-38 4つの列が含まれる表 - 検索

7. このページを実行し、「search_path」で/を指定し、「namePattern」で%jpg%を指定します。図26-39に示すように、リポジトリのルートに格納されているすべての.jpgファイルが表示されます

図26-39 .jpgファイルの検索結果

26.5.7.2 拡張検索機能の追加

この項では、ファイル・システム・リポジトリに含まれるアイテムの最終変更日に基づいて検索を実行することを可能にする拡張検索機能をページに追加します。

拡張検索機能を有効にするには:

1. アプリケーション・ナビゲータで、拡張検索機能を作成するページを開きます。ページは、新規マネージドBean内に自動的に公開される必要があります(name=advancedSearch、class=AdvancedSearch、package=view)。(「JSFページの作成」ダイアログ→「ページの実装」→「新規マネージドBeanでのUIコンポーネントの自動公開」)
この例では、ページ名はadvancedSearch.jspxです。

2. ページをダブルクリックして開きます。

3. コンポーネント・パレットで「ADF Faces」を選択します。

4. 「ADF Faces」→「レイアウト・コンポーネント」のリストから、「パネル・フォーム・レイアウト」をページにドラッグします。

5. コンポーネント・パレットから、「入力日」を「パネル・フォーム・レイアウト」にドラッグします。

6. プロパティ・インスペクタの「共通」タブで、「ラベル」を「Modified after」に設定します。

7. アプリケーション・ナビゲータの「portal.backing」で、AdvancedSearch.javaをダブルクリックして開きます。

8. 次のインポート宣言を追加します。こうした宣言は、次の手順で追加するgetPredicatesメソッドで必要になります。

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import oracle.vcr.datacontrol.search.Predicate;
import oracle.vcr.datacontrol.search.Operator;

9. リポジトリに格納されたアイテムの最終変更日に基づく拡張検索を有効にするために、次のメソッドを追加します。

public List<Predicate> getPredicates() {
ArrayList<Predicate> predicates = new ArrayList<Predicate>();
if (id1.getValue() != null && !id1.getValue().equals(""))
{
Calendar cal = Calendar.getInstance();
cal.setTime((Date)id1.getValue());
predicates.add(new Predicate("jcr:content/jcr:lastModified"
, Operator.GREATER_THAN
, cal));
}
// ... other predicates
if (predicates.size()>0)
return predicates;
return null;
}

10. 「データ・コントロール」パネルで、「advancedSearch」ノードをページにドラッグ・アンド・ドロップします。「作成」メニューから、「メソッド」、「ADFボタン」の順に選択します。「アクション・バインディングの編集」ダイアログが表示されます。

11. 「パス」では、検索を行うディレクトリのパス(/など)を指定します。isRecursiveではtrueを指定し、matchAnyではfalseを指定します。

12. 条件として、「値」フィールドの隣にある矢印を選択して、「EL式ビルダーの表示」を選択します。「変数」ダイアログが表示されます。

13. 「ADFマネージドBean」、「backingBeanScope」および「advancedSearch」を開き、「述語」を選択します。これによって、式${backingBeanScope.advancedSearch.predicates}が、図26-40に示すように追加されるので、「OK」をクリックします。

図26-40 「変数」ダイアログ - 条件

14. 「アクション・バインディングの編集」ダイアログで「OK」をクリックします。

15. 「データ・コントロール」パネルで、「advancedSearch」ノードを開きます。「Return」をドラッグし、ページの「advancedSearch」ADFボタンの後にドロップします。「作成」メニューで「表」を選択し、「ADF読取り専用表」を選択します。

16. 「表の列の編集」ダイアログで、必要に応じて列のラベルを編集します。次に、「OK」をクリックします。図26-41のような「設計」ビューが表示されます。

図26-41 拡張検索 - 「設計」ビュー

17. プロパティ・インスペクタの「動作」タブで、ContentDeliveryプロパティをimmediateに設定します。

18. ブラウザでページを表示するには、アプリケーション・ナビゲータでページを右クリックし、「実行」を選択します。ブラウザにadvancedSearchページが表示されます。

19. 「最終変更」日付を入力して「advancedSearch」ボタンをクリックします。図26-42に示すように、該当日の後に変更されたファイルが表示されます。

図26-42 拡張検索の結果

26.5.8 実行時の処理

実行時に「検索」ボタンをクリックすると、searchメソッドが起動し、UIを通じて提供された値がパラメータとして検索に使用されます。実行時に、ワイルドカード(%)検索を実行できます。たとえば、.jpg拡張子を持つファイルを検索するには、「search_path」フィールドに/を入力し、「namePattern」フィールドに%jpgを入力して、「検索」をクリックします。.jpg拡張子を持つすべてのファイルが読取り専用表に表示されます。

実行時に、JCRデータ・コントロールでは指定パラメータを使用して、指定パラメータのXPath問合せを構成します。標準検索の例では、問合せは次のとおりです。

Non-recursive:
XPath query /jcr:root/element(*, nt:file)[jcr:like(ojcr:local-name(), '%jpg%')]

Recursive:
XPath query /jcr:root//element(*, nt:file)[jcr:like(ojcr:local-name(), '%jpg%')]

拡張検索の例では、advancedSearchメソッドのpredicateパラメータ値を構成するのにバッキングBeanが必要であるので、まずバッキングBeanをページに追加します。次に、「パネル・フォーム・レイアウト」UIコンポーネントをページにドロップします。このコンポーネントで、日付ベースの検索条件を提供するために実行時に使用されるInputDateコンポーネントをドロップします。advancedSearchメソッドの条件パラメータでは、searchメソッドに条件の組合せを指定できます。それぞれのパラメータでは、検索に適用する必要があるアイテムのプロパティ値を指定できます。この例では、条件で変更日のみがテストされますが、変更日付とmimeTypeなど、複数のテストを含めることもできます。

バッキングBeanのgetPredicatesメソッドは、実行時にページにより提供される日付からpredicatesメソッドを構成するためにハードコーディングされています。設計時に、predicatesメソッドの戻り値は、条件のadvancedSearchメソッドのパラメータにバインドされます。これによって、実行時に正しいpredicate値を構成するために、advancedSearchメソッドを起動する前にgetPredicatesメソッドを起動します。

実行時に、JCRデータ・コントロールでは指定パラメータを使用して、指定パラメータのXPath問合せを構成します。この例では、問合せは次のとおりです。

/jcr:root//element(*, nt:hierarchyNode)[jcr:content/@jcr:lastModified >
xs:dateTime('2009-02-15T00:00:00.000+05:30')]

26.5.9 検索機能の使用

検索機能を追加するときは、次の点を考慮してください。

- 特定の操作の使用方法は、アダプタと、基礎となるリポジトリの実装によって異なります。読取り操作と問合せ操作は似ていますが、全文検索の動作は異なります。また別の例として、ファイル・システムおよびOracle Portalのアダプタでは、primaryType属性に基づいた検索はサポートされていません。typeに基づく検索方法でサポートされているのは、要素(*, type)構成を介した検索のみです。

- Oracle Portalアダプタを使用する場合、検索機能の動作は、「Oracle Text」が有効であるか、または無効であるかによって異なります。「Oracle Text」が無効である場合、検索はOracle Portalコンテンツのメタデータ内で実行されます。「Oracle Text」を有効にすると、ファイルのコンテンツを含めて、すべての索引付きコンテンツが検索されます。これはまた、Content Serverにも該当します。つまり、Content Serverベースのアダプタは、「Oracle Text」を使用してドキュメントに対して全文索引操作を実行します。

- Oracle Portalアダプタでは翻訳はサポートされていないため、コンテンツはページ・グループの基本言語でのみ返されます。基本言語が異なる複数のページ・グループにわたる検索は、サポートされていません。

27 コンテンツ・プレゼンタ表示テンプレートの作成

この章では、即時利用可能なコンテンツ・プレゼンタ表示テンプレート、新しい表示テンプレートの作成方法および表示テンプレートをユーザーが使用できるようにする方法について説明します。

注意:

コンテンツ・プレゼンタでは、コンテンツ・サーバーベースのコンテンツのみを使用できます。他のコンテンツ・リポジトリ接続タイプはサポートされません。

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

- 第27.1項「コンテンツ・プレゼンタ表示テンプレートの概要」

- 第27.2項「デフォルト表示テンプレートの使用」

- 第27.3項「コンテンツ・プレゼンタ表示テンプレートの作成」

- 第27.4項「ページへのコンテンツ・プレゼンタ・タスク・フローの追加」

- 第27.5項「コンテンツ・プレゼンタ表示テンプレートの有効化」

- 第27.6項「実行時の処理」

- 第27.7項「キャッシュ・メカニズムとしてのCoherenceの構成」

- 第27.8項「コンテンツ・プレゼンタ表示テンプレートのパフォーマンスの最適化」

- 第27.9項「コンテンツ・プレゼンタのチュートリアルと例」

27.1 コンテンツ・プレゼンタ表示テンプレートの概要

コンテンツ・プレゼンタ表示テンプレートは、コンテンツ・プレゼンタがポータルまたはFrameworkアプリケーション・ページ上でコンテンツ・アイテム(イメージとテキストを含む)をレンダリングする方法を定義するJSFFファイル(JSFページ・フラグメント)です。WebCenter Portalには即時利用可能な表示テンプレートがいくつか装備されており、これらを使用してすぐに作業を開始できますが、特定の表示要件を満たすために独自のテンプレートを作成することもできます。

コンテンツ・プレゼンタ表示テンプレートが値を提供する標準的な状況を次に示します。

- ページの異なる部分に対して異なるレイアウトを提供します。たとえば、同じページ上に異なるソースからの記事があり、各記事用に独自のレイアウトが必要な場合が考えられます(詳細は、第27.3.3項「複数アイテムの表示テンプレートの定義」参照)。

- 表示デバイスの機能に基づいてコンテンツを表示します。表示デバイスが標準モニター、タブレット、スマートフォンのどれかに応じて、表示テンプレートを提供できます(詳細は、第27.3.4項「レスポンシブ・テンプレートの使用」参照)。

コンテンツ・プレゼンタ表示テンプレートを使用してコンテンツを使用可能にすることによって、手動で個々のレイアウトを作成することなく、標準化されたテンプレートで複雑な表示問題を解決できます。ユーザーが表示テンプレートを使用できるようにすると、開発者を介さずに、事前定義済の部署または会社の標準に基づいてレイアウトの要件を解決できます。

ヒント:

サンプル表示テンプレートは$ORACLE_HOME/jdeveloper/webcenter/samples/contentpresenterに格納されています。これらのサンプル・ファイルは、Oracle JDeveloperに対するWebCenter Portalの拡張機能の一部としてインストールされています。

表示テンプレートでは充実したADFコンポーネントをすべて使用できるので、コンテンツを表示するために堅牢で人目を引くテンプレートをすばやく簡単に作成できます。ただし、テンプレートでこれらのコンポーネントを使用する必要はありません。

コンテンツ・プレゼンタ表示テンプレートでは、単一コンテンツ・アイテム、複数コンテンツ・アイテムまたは双方の組合せを処理できます。たとえば、複数コンテンツ・アイテムのテンプレートで各アイテムのタブをレンダリングしてから、単一アイテムのテンプレートをコールして選択アイテムの詳細をレンダリングできます。

各コンテンツ・アイテムは、コンテンツ・サーバーのリポジトリで定義された特定コンテンツ・タイプに関連付けらます。コンテンツ・タイプはコンテンツ・アイテムのプロパティを定義します。コンテンツ・タイプはコンテンツ・サーバーのプロファイル定義とSite Studioのリージョン定義にマップできます。

ヒント:

コンテンツ・プレゼンタADFテンプレートを使用して、Site Studioリージョン・テンプレートではなくSite StudioとWebCenter Portalを統合することをお薦めします。推奨フローは次のとおりです。

- Site Studioでリージョン定義を開発します。

- JDeveloperを使用して、リージョン定義を参照するADFテンプレートを開発します。

- テンプレートを公開してそれらをポータル・サーバーにインポートします。

- コンテンツ・プレゼンタを使用して、コンテンツをレンダリングし、ユーザーがコンテンツを提供できるようにします。

コンテンツ・タイプはコンテンツ・リポジトリ(WebCenter Portalコンテンツ・サーバー)で作成されます。コンテンツ・プレゼンタ表示テンプレートの開発者は、選択されたコンテンツ・アイテムのページ上での表示方法を定義できるように、関連付けられたコンテンツ・タイプに定義されたプロパティの名前を知っておくことが必要です。

ヒント:

コンテンツ・サーバーで定義されている既存コンテンツ・タイプのプロパティを判断する1つの方法は、ポータルの「コンテンツ・プレゼンタ構成」ダイアログを使用する方法です。この方法の詳細は、第27.3.7項「コンテンツ・タイプのプロパティ名の発見」を参照してください。

実行時に権限のあるエンド・ユーザーは、「コンテンツ・プレゼンタ構成」ダイアログで表示テンプレートを選択できます。コンテンツ・プレゼンタ・テンプレートの使用時期と使用方法の決定、およびベスト・プラクティスの詳細は、次のブログ・エントリを参照してください。

http://www.ateam-oracle.com/portal-and-content-content-integration-best-practices

27.2 デフォルト表示テンプレートの使用

WebCenter Portalには、デフォルトのコンテンツ・プレゼンタ表示テンプレートがいくつか装備されています。こうした事前に構築されているテンプレートは、単一コンテンツ・アイテムと複数コンテンツ・アイテムを表示するためのオプションを提供します。

たとえば、デフォルトのドキュメント詳細ビュー・テンプレートには、作成日付、変更日付、作成者のユーザー名、変更者のユーザー名およびパスを含む単一のコンテンツ・アイテムの詳細情報が表示されます。図27-5は、実行時にこのテンプレートで表示されるコンテンツ・アイテムを示しています。

図27-1 デフォルトのドキュメント詳細ビュー表示テンプレート

複数コンテンツ・アイテムの表示には、複数のコンテンツ・アイテムをアコーディオン形式で表示するアコーディオン・ビューを始め、いくつかのオプションが提供されています。この形式では、図27-2に示されているように、各アイテムを開いてその詳細を表示できます。(アコーディオン・ビューでは、常に1つのアイテムが開きます。つまり、すべてのアイテムを閉じることはできません。いつでも、どの単一アイテムを開くかのみを変更できます。)

図27-2 アコーディオン・ビュー表示テンプレート

デフォルトの表示テンプレートの全リストは、第29.7.1項「コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート」を参照してください。

27.3 コンテンツ・プレゼンタ表示テンプレートの作成

デフォルトの表示テンプレート(第27.2項「デフォルト表示テンプレートの使用」を参照)がニーズを満たさない場合、カスタムのコンテンツ・プレゼンタ・テンプレートを定義できます。

ヒント:

新しいコンテンツ・プレゼンタ表示テンプレートを作成するだけでなく、デフォルトのテンプレートの1つをコピーして変更することもできます。

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

- 第27.3.1項「コンテンツ・プレゼンタ表示テンプレートについて」

- 第27.3.2項「単一アイテムの表示テンプレートの作成」

- 第27.3.3項「複数アイテムの表示テンプレートの定義」

- 第27.3.4項「レスポンシブ・テンプレートの使用」

- 第27.3.5項「レスポンシブ・テンプレートの拡張」

- 第27.3.6項「EL式を使用したコンテンツ・アイテム情報の取得」

- 第27.3.7項「コンテンツ・タイプのプロパティ名の発見」

- 第27.3.8項「表示テンプレートにおける外部ファイルの参照」

- 第27.3.9項「カスタム・ビューにおけるSite Studioリージョン要素の参照」

- 第27.3.10項「コンテンツ・プレゼンタ表示テンプレートの使用」

27.3.1 コンテンツ・プレゼンタ表示テンプレートについて

コンテンツ・プレゼンタ表示テンプレートの定義方法は、ニーズに応じて異なります。一般的には、コンテンツの特定単一アイテムについて表示テンプレートを定義してから、単一アイテムの表示テンプレートへのコールを含む複数コンテンツ・アイテムの表示テンプレートを定義します。

テンプレート定義には、次のように他の表示テンプレートへのコールを含めることができます。

- 単一コンテンツ・アイテムの表示テンプレートは、別の単一コンテンツ・アイテムの表示テンプレートをコールできます。

- 複数コンテンツ・アイテムの表示テンプレートは、単一コンテンツ・アイテムの表示テンプレートをコールできます(次の例を参照)。

- 複数コンテンツ・アイテムの表示テンプレートは、別の複数コンテンツ・アイテムの表示テンプレートをコールできます。

コンテンツ・プレゼンタ表示テンプレートを作成する際の基本的なタスクは、次のとおりです。

- 単一アイテムと複数アイテムのいずれの表示テンプレートを作成するかを決定します。第27.3.2項「単一アイテムの表示テンプレートの作成」と第27.3.3項「複数アイテムの表示テンプレートの定義」を参照してください。

- コンテンツ・アイテムによってどのような情報を表示するかを決定します。また、この情報を取得して表示するために、たとえば、WebCenter PortalのEL式をテンプレートで使用することも検討してください。EL式の使用方法の詳細は、第27.3.6項「EL式を使用したコンテンツ・アイテム情報の取得」と付録F「式言語式」を参照してください。

- テンプレートのルック・アンド・フィールをデザインします。表示テンプレートでは、標準JSFF構造に加え、ADFコンポーネントを使用できます。『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』を参照してください。

- ポータル・リソースとしてテンプレートをエクスポートします。第27.5.1項「ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート」を参照してください。

- 第27.7項「キャッシュ・メカニズムとしてのCoherenceの構成」の説明に従って、本番環境(オプションですがお薦めします)およびHA環境(必須です)用のキャッシュ・メカニズムとしてCoherenceを使用するようにコンテンツ・プレゼンタを構成します。

27.3.2 単一アイテムの表示テンプレートの作成

コンテンツ・プレゼンタ表示テンプレートを作成する単一コンテンツ・アイテムの例を次に示します。

- ページ上で特定ルック・アンド・フィールで表示する個々のアイテム。

- 特定タイプのアイテムの異なるビュー(例: 記事の短いビューと詳細ビュー)。

- 類似アイテムの異なるバージョン(例: グループ別に異なるプロパティ・セットを使用して異なる方法でフォーマットされるプレス・リリース)。

単一コンテンツ・アイテムの表示テンプレートの定義では、表27-1にリストされているJSPタグを使用します。

表27-1 単一コンテンツ・アイテムのコンテンツ表示テンプレートのタグ

JSPタグ

説明

例

contentTemplateDef

必須。単一コンテンツ・アイテムのテンプレートを定義します。

属性:

var - この表示テンプレートによりレンダリングされるコンテンツ・ノードを指定します。テンプレート定義コードで、第27.3.6.1項「コンテンツ・アイテムの基本情報の取得」に記載されているEL式を使用して、ノードに関する必須情報を取得できます。

<dt:contentTemplateDef var="node">
<af:outputText value="#{node.name}" />
</dt:contentTemplateDef>

renderProperty

オプション。指定ノード・プロパティの文字列値をインラインで取得およびレンダリングします。

属性:

id - このコンポーネントを識別します。この値は、ネーミング・コンテナである最寄りの親コンポーネント内で一意であることが必要です。

name - 取得するプロパティの名前を指定します。これがシステム・プロパティ(cm_createdBy、cm_createdDate、cm_modifiedDateおよびcm_path)の場合は、ノード上の値が使用されます。指定しないと、primaryPropertyが定義されている場合、これが使用されます。

node - 使用するノードを指定します。この値は、マネージドBeanにバインドされた属性またはリクエスト属性変数のいずれかになります。

blockSize - バイナリ・プロパティのバイト列を読み込むための、ブロック・サイズをバイト数で指定します。デフォルトは2048バイトです。

startIndex - 印刷を開始する位置のインデックス(起点は0)をドキュメントのバイト数で指定します。デフォルトは0です。

endIndex - 印刷を停止する位置のインデックス(起点は0)をドキュメントのバイト数で指定します。デフォルトはblockSizeの値になります。

rendered - (レンダリング・レスポンス・フェーズ中に)このコンポーネントをレンダリングするか以降の任意のフォーム実行時に処理するかどうかを指定します。デフォルト値はtrueです。

<!--
Handling of text-based primary
properties (HTML, text, etc.).
-->
<dt:contentTemplateDef var="node">
<cmf:renderProperty id="rp1"
name="#{node.primaryProperty.name}"
node="#{node}"/>
</dt:contentTemplateDef>

contentTemplate

オプション。contentTemplateDefの下にネストされます。

別の単一アイテム・テンプレートをコールします。

属性:

node - 必須。表示される必要があるコンテンツ・リポジトリ・ノードを指定します。

nodesHint - オプション。表示テンプレートが反復コンポーネントでコールされると、すべての可能なテンプレートの事前包含ができます。contentTemplateがcontentTemplateDefタグの内部で使用されている場合は、この属性は必要ありません。

view - オプション。ターゲット・ビュー名を指定します。

id - オプション。JSFコンポーネントIDを指定します。

rendered - オプション。コンポーネントがレンダリングされるかどうかを指定します。

<dt:contentTemplateDef var="node">
<af:outputText value="#{node.name}" >
<dt:contentTemplate node="#{node}"
view="templates.pressrelease.item"
/>
</af:outputText>
</dt:contentTemplateDef>

単一コンテンツ・アイテムの表示テンプレートを作成するには:

1. JDeveloperでJSFFファイルを作成します。

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「Web層」を展開し、「JSF」、「JSFページ・フラグメント」の順に選択します。

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

4. 「新規JSFページ・フラグメントの作成」ダイアログで、表示テンプレート・ファイルの名前を入力します。

5. ポータルWebプロジェクトの oracle/webcenter/portalapp/pagesフォルダを指すように「ディレクトリ」フィールドを設定します。このディレクトリは正しいルート・パスから設定する必要があります。JDeveloperでは、ルート・パスはPROJECT_NAME > Webコンテンツになります。ファイル・システムの場合、ルート・パスはPROJECT_ROOT/public_htmlです。たとえば、PROJECT_ROOT/public_html/oracle/webcenter/portalapp/pagesになります。最初にpagesにサブフォルダを作成し、そのサブフォルダにJSFFを格納する方法をお薦めします。

2. 「表示」、「コンポーネント・パレット」の順に選択して、コンポーネント・パレットを開きます。

3. コンポーネント・パレット最上部のドロップダウン・リスト(図27-3)で、次の手順に従います。

- 表示テンプレート・タグのリストは、「WebCenterコンテンツ表示テンプレート」を選択します。

- renderPropertyタグは、「WebCenterコンテンツ管理フェース」を選択します。

図27-3 コンポーネント・パレットのコンテンツ表示テンプレート・タグ

4. 「ソース」ビューで、必要な表示テンプレート・タグをコンポーネント・パレットからページにドラッグ・アンド・ドロップして、テンプレートを定義します。各タグおよび必要なパラメータ値の情報は、表27-1を参照してください。

例27-1および例27-2に、単一コンテンツ・アイテム表示テンプレートの定義のサンプルを示します。これらの例のユース・ケースでは、特定のス類のドキュメント(プレス・リリース)が、会社内の2つの異なる部門によって作成され、それぞれの部門で独自のコンテンツ・タイプとプロパティを定義しています。これらのサンプル・コンテンツ・プレゼンタ表示テンプレートでは、これらの2つの異なるコンテンツ・タイプを一貫した方法で表示できます。

例27-1に示すテンプレートは、プレス・リリース・ドキュメントの見出しを表すxHeadingという名前のプロパティと、そのドキュメントの場所を表すxDestinationUrlというプロパティを使用するプレス・リリースを処理します。所定のコンテンツ・タイプに対するこうしたプロパティ名の取得方法を学ぶには、第27.3.7項「コンテンツ・タイプのプロパティ名の発見」を参照してください。

例27-1 プレス・リリース・ドキュメントのサンプル・コンテンツ・プレゼンタ表示テンプレート

<?xml version = '1.0'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
version="2.1"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates">
<dt:contentTemplateDef var="node">
<af:goImageLink text="#{node.propertyMap['xHeading'].value}"
id="gil1"
icon="#{node.icon.smallIcon}"
destination="#{node.propertyMap['xDestinationUrl'].value}"
targetFrame="_blank">
</af:goImageLink>
</dt:contentTemplateDef>
</jsp:root>

例27-2に示すテンプレートは、プレス・リリース・ドキュメントの見出しを表すdDocTitleという名前のプロパティと、そのドキュメントの場所を表すxLinkUrlというプロパティを使用するプレス・リリースを処理します。

例27-2 別のプレス・リリース・ドキュメントのサンプル・コンテンツ・プレゼンタ・テンプレート

<?xml version = '1.0'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
version="2.1"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates">
<dt:contentTemplateDef var="node">
<af:goImageLink text="#{node.propertyMap['dDocTitle'].value}"
id="gil1"
icon="#{node.icon.smallIcon}"
destination="#{node.propertyMap['xLinkUrl'].value}"
targetFrame="_blank">
</af:goImageLink>
</dt:contentTemplateDef>
</jsp:root>

27.3.3 複数アイテムの表示テンプレートの定義

コンテンツ・プレゼンタ表示テンプレートを作成する複数コンテンツ・アイテムの例を次に示します。

- 1つのページに表示する一群の類似アイテム(例: 本のリストや写真による従業員名簿)。

- 問合せ結果(例: 先週変更された全ドキュメント)。

- Content Serverフォルダの全ドキュメントのリスト。

コンテンツ・プレゼンタ表示テンプレートでは、単一アイテムと複数アイテムを組み合せることもできます。たとえば、複数コンテンツ・アイテムのテンプレートで各アイテムのタブをレンダリングしてから、単一アイテムのテンプレートをコールして選択アイテムの詳細をレンダリングできます。この手順の例は、A-Teamのブログ・エントリ「Enable Content Editing of Iterative Components」を参照してください。

複数コンテンツ・アイテムの表示テンプレートの定義では、表27-2にリストされているJSPタグを使用します。

表27-2 複数コンテンツ・アイテムのコンテンツ表示テンプレートのタグ

JSPタグ

説明

例

contentListTemplateDef

必須。複数コンテンツ・アイテムのテンプレートを定義します。

属性:

var - この表示テンプレートによりレンダリングされるコンテンツ・ノードを指定します。テンプレート定義コードで、第27.3.6.1項「コンテンツ・アイテムの基本情報の取得」に記載されているEL式を使用して、ノードに関する必須情報を取得できます。

<dt:contentListTemplateDef var="nodes">
<af:iterator value="#{nodes}" var="node">
<af:outputText value="#{node.name}" />
</af:iterator>
</dt:contentListTemplateDef>

contentListTemplate

オプション。contentListTemplateDefの下にネストされます。

別の複数アイテム・テンプレートをコールします。

属性:

nodes - 必須。表示する必要があるVCRノードのリストを提供します

category - 必須。ターゲット・テンプレートのカテゴリを指定します。

view - 必須。ターゲット・ビュー名を指定します。

id - オプション。JSFコンポーネントIDを指定します。

rendered - オプション。コンポーネントがレンダリングされるかどうかを指定します。

<dt:contentListTemplateDef var="nodes">
<!--
Reuse the default bulleted list view, but
indent it with a <blockquote>
-->
<f:verbatim>
<blockquote>
</f:verbatim>
<dt:contentListTemplate nodes="#{nodes}"
category="oracle.webcenter.content.
templates.default.category"
view="oracle.webcenter.content.
templates.default.list.bulleted"/>
<f:verbatim>
</blockquote>
</f:verbatim>
</dt:contentListTemplateDef>

contentTemplate

オプション。contentListTemplateDefの下にネストされます。

単一アイテム・テンプレートをコールします。

属性:

node - 必須。表示される必要があるコンテンツ・リポジトリ・ノードを指定します。

nodesHint - オプション。表示テンプレートが反復コンポーネントでコールされると、すべての可能なテンプレートの事前包含ができます。contentTemplateがcontentListTemplateDefタグの内部で使用されている場合、この属性は通常必要とされます。

view - オプション。ターゲット・ビュー名を指定します。

id - オプション。JSFコンポーネントIDを指定します。

rendered - オプション。コンポーネントがレンダリングされるかどうかを指定します。

<dt:contentListTemplateDef var="nodes">
<af:iterator rows="0" var="node"
varStatus="iterator" value="#{nodes}">
<dt:contentTemplate node="#{node}"
view="templates.pressrelease.listitem"
nodesHint="#{nodes}"/>
</af:iterator>
</dt:contentListTemplateDef>

複数コンテンツ・アイテムの表示テンプレートを定義するには:

1. 第27.3.2項「単一アイテムの表示テンプレートの作成」の手順1から3の説明に従って、JDeveloperでJSFFファイルを作成し、コンポーネント・パレットを開きます。

2. 「ソース」ビューで、必要な表示テンプレート・タグをコンポーネント・パレットからページにドラッグ・アンド・ドロップします。各タグと必要なパラメータ値の情報は、表27-2を参照してください。

例27-3は、複数コンテンツ・アイテムの表示テンプレートのサンプル定義を示しています。

例27-3 複数プレス・リリース表示用のサンプル表示テンプレート定義(press-release-list-view.jsff)

このテンプレート定義では、参照されるビュー(view="mycorp.content.templates.pressrelease.listitem")に従って、表示するように選択されたデータ・アイテムを順に処理します。

<?xml version = '1.0'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates">
<dt:contentListTemplateDef var="nodes">
<af:panelGroupLayout layout="scroll" id="nodeListPanel" valign="middle">
<af:iterator rows="0" var="node" varStatus="iterator" value="#{nodes}">
<dt:contentTemplate node="#{node}"
view="mycorp.content.templates.pressrelease.listitem"
nodesHint="#{nodes}"/>
</af:iterator>
</af:panelGroupLayout>
</dt:contentListTemplateDef>
</jsp:root>

27.3.4 レスポンシブ・テンプレートの使用

CSS3 Media Queriesを使用すると、コンテンツをレンダリングして、画面解像度などの条件に適応できます。デフォルトのコンテンツ・プレゼンタ・テンプレートである記事ビューと全記事ビューは、レスポンシブ・レイアウト用に、コンテンツ・プレゼンタ・テンプレートでCSS3 Media Queriesをどう使用するかを示す例です。これらのレスポンシブ・テンプレートの拡張方法は、第27.3.5項「レスポンシブ・テンプレートの拡張」を参照してください。コンテンツ・プレゼンタのデフォルトの表示テンプレートのパラメータは、第29.7.1項「コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート」を参照してください。また、スマートフォン、タブレットなどのモバイル・デバイスのためのビューポート設定の最適化は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のモバイル・デバイスのポータルの最適化に関する項を参照してください。

- 第27.3.4.1項「前提条件」

- 第27.3.4.2項「複数記事の表示」

- 第27.3.4.3項「CSS3 Media Queriesの使用」

27.3.4.1 前提条件

第27.3.4.2項「複数記事の表示」で説明されている記事ビューおよび全記事ビュー・テンプレートは、Site Studio RD_ARTICLEリージョン定義に依存します。そのため、記事ビューおよび全記事ビュー・コンテンツ・プレゼンタ・テンプレートを使用可能にするには、Site Studioをコンテンツ・サーバーで有効にする必要があります。

Site Studioの有効化、およびコンテンツ・サーバーにRD_ARTICLEリージョン定義をシードする手順は次のとおりです。

1. Site Studioを有効にします(Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のSite Studio統合の理解に関する項を参照)。

2. Site Studioが有効になったら、WebCenter Portalを起動(または再起動)します(これで、RD_ARTICLEリージョン定義がシードされます)。

27.3.4.2 複数記事の表示

例27-4のテンプレート定義では、表示するように選択されたデータ・アイテムを順に処理し、3つのスタイル・クラスを使用します。

- article: 各コンテンツ・アイテムに適用

- article-3: ページが3列の行に分割される場合、最初の列に配置される各コンテンツ・アイテムに適用

- article-2: ページが2列の行に分割される場合、最初の列に配置される各コンテンツ・アイテムに適用

スタイル・クラスは、articles.cssスタイル・シートに定義されています。

例27-4 複数記事表示用のサンプル表示テンプレート定義(articles.jsff)

<?xml version = '1.0'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rah="http://xmlns.oracle.com/webcenter/resourcehandler"
xmlns:tr="http://myfaces.apache.org/trinidad">
<dt:contentListTemplateDef var="nodes">
<af:resource type="css" source="/oracle/webcenter/content/templates/seeded/articles.css"/>
<af:iterator rows="0" var="node" varStatus="iterator" value="#{nodes}"
id="it0">
<h:panelGroup styleClass="#{(iterator.index % 3 == 0) ? 'article-3 ' : ''}#{(iterator.index % 2 == 0) ? 'article-2 ' : ''}article"
id="pg1">
<af:commandLink immediate="true" partialSubmit="true" id="cl2">
<rah:resourceActionBehavior id="rah1"
serviceId="oracle.webcenter.content.presenter"
resourceId="#{node.id}"
resourceTitle="#{node.propertyMap['RD_ARTICLE:TITLE'].asTextHtml}"
useResourcePopup="never"/>
<f:attribute name="taskFlowInstId"
value="a5fafea8-90e6-4972-997d-314401b6c98b"/>
<f:attribute name="datasourceType" value="dsTypeSingleNode"/>
<f:attribute name="datasource"
value="#{node.id.repositoryName}#dDocName:#{node.propertyMap['dDocName'].value}"/>
<f:attribute name="templateView"
value="oracle.webcenter.content.templates.sitestudio.fullarticle"/>
<f:attribute name="regionTemplate" value="#{false}"/>
<af:outputText value="#{node.propertyMap['RD_ARTICLE:IMAGE'].asTextHtml}"
escape="false" id="ot4"/>
<tr:panelHeader text="#{node.propertyMap['RD_ARTICLE:TITLE'].asTextHtml}"
id="ph1">
<af:outputText value="#{node.propertyMap['RD_ARTICLE:SUMMARY'].asTextHtml}"
escape="false" id="ot3"/>
</tr:panelHeader>
</af:commandLink>
</h:panelGroup>
</af:iterator>
</dt:contentListTemplateDef>
</jsp:root>

27.3.4.3 CSS3 Media Queriesの使用

例27-5のスタイル・シートは、ブラウザの幅に応じて異なる方法でコンテンツをレンダリングするために、Media Queriesを使用します。

例27-5 CSS3 Media Queriesを使用するスタイル・シート(articles.css)

/* Default styles */
.article {
display: block;
float: left;
width: 31.623931623931625%;
margin-left: 2.564102564102564%;
margin-bottom: 1em;
}
.article-3 {
margin-left: 0;
clear: both;
}
.article img {
width: 100%;
margin: 0 0 .25em;
float: none;
padding-top: 0;
display: block;
border: 0;
}
.article h1 {
font-size: 1.5em;
}

@media only screen and (max-width : 480px) {
/* up to width of iPhone (excluding iPhone 5 in landscape) */
.article {
margin-top: .5em;
float: left;
display: inline;
width: 100%;
margin-left: 0;
}
.article-3 {
width: 100%;
clear: none;
}
.article img {
margin-right: 4%;
width: 48%;
float: left;
}
.article {
font-size: 1em;
}
.article h1 {
font-size: 1.25em;
}
}

@media only screen and (min-width : 481px) and (max-width : 780px) {
/* up to the width of iPad in portrait and iPhone 5 in landscape */
.article {
display: block;
float: left;
width: 48.71794871794871%;
margin-left: 2.564102564102564%;
clear: none;
}
.article-3 {
margin-left: 2.564102564102564%;
clear: none;
}
.article-2 {
margin-left: 0;
clear: both;
}
.article h1 {
font-size: 1.25em;
}
}

@media only screen and (min-width : 769px) and (max-width : 1024px) {
/* up to the width of iPad in landscape */
}

@media only screen and (min-width : 1025px) {
/* desktop */
}

27.3.5 レスポンシブ・テンプレートの拡張

次の項では、デフォルトのテンプレートがローカル要件を満たさない場合に、それらの編集に必要な手順について説明します。スマートフォン、タブレットなどのモバイル・デバイス用のビューポート設定の最適化は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のモバイル・デバイスのポータルの最適化に関する項を参照してください。

この項には次のサブセクションが含まれます:

- 第27.3.5.1項「記事ビュー・テンプレートの拡張」

- 第27.3.5.2項「全記事ビュー・テンプレートの拡張」

- 第27.3.5.3項「デフォルトのテンプレートの適応」

27.3.5.1 記事ビュー・テンプレートの拡張

記事ビュー・テンプレートを拡張するには次の手順を実行します。

1. 複数アイテムを表示するために空のテンプレートを作成し(第27.3.3項「複数アイテムの表示テンプレートの定義」参照)、JDEVELOPER/webcenter/samples/contentpresenter/ディレクトリにあるarticles.jsffのコンテンツを空のテンプレートにコピーします。

2. 次のように変更して、artices.jsffによって使用されるCSSを新しいテンプレートに埋め込みます。

<af:resource type="css" source="/oracle/webcenter/content/templates/seeded/articles.css"/>

変更後:

<af:resource type="css">
/* Default styles */
.article {
display: block;
float: left;
width: 31.623931623931625%;
margin-left: 2.564102564102564%;
margin-bottom: 1em;
}
.article-3 {
margin-left: 0;
clear: both;
}
.article img {
width: 100%;
margin: 0 0 .25em;
float: none;
padding-top: 0;
display: block;
border: 0;
}
.article h1 {
font-size: 1.5em;
}

@media only screen and (max-width : 480px) {
/* up to width of iPhone */
.article {
margin-top: .5em;
float: left;
display: inline;
width: 100%;
margin-left: 0;
}
.article-3 {
width: 100%;
clear: none;
}
.article img {
margin-right: 4%;
width: 48%;
float: left;
}
.article {
font-size: 1em;
}
.article h1 {
font-size: 1.25em;
}
}

@media only screen and (min-width : 481px) and (max-width : 780px) {
/* up to the width of iPad in portrait */
.article {
display: block;
float: left;
width: 48.71794871794871%;
margin-left: 2.564102564102564%;
clear: none;
}
.article-3 {
margin-left: 2.564102564102564%;
clear: none;
}
.article-2 {
margin-left: 0;
clear: both;
}
.article h1 {
font-size: 1.25em;
}
}

@media only screen and (min-width : 769px) and (max-width : 1024px) {
/* up to the width of iPad in landscape */
}

@media only screen and (min-width : 1025px) {
/* desktop */
}
</af:resource>

3. 要件に合うように新しいテンプレートを編集します(第27.3.5.3項「デフォルトのテンプレートの適応」参照)。

4. 新しいテンプレートをポータル・リソースとしてエクスポートします(第27.5.1項「ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート」参照)。

5. WebCenter PortalまたはFrameworkアプリケーションに新しいテンプレートをアップロードします(第27.5.2項「新しいコンテンツ・プレゼンタ表示テンプレートのアップロード」参照)。

27.3.5.2 全記事ビュー・テンプレートの拡張

全記事ビュー・テンプレートを拡張するには、次を実行します。

1. 単一アイテムを表示するために空のテンプレートを作成し(第27.3.2項「単一アイテムの表示テンプレートの作成」参照)、JDEVELOPER/webcenter/samples/contentpresenter/ディレクトリにあるfull-article.jsffのコンテンツを空のテンプレートにコピーします。

2. 次のように変更して、full-artice.jsffによって使用されるCSSを新しいテンプレートに埋め込みます。

<af:resource type="css" source="/oracle/webcenter/content/templates/seeded/articles.css"/>

変更後:

<af:resource type="css">
/* Default styles */
.full-article h1 {
font-size: 1.5em;
}
.full-article-image img {
margin-left: 4%;
width: 48%;
float: right;
}

@media only screen and (max-width : 480px) {
/* up to width of iPhone */
.full-article-image img {
margin-left: 0;
width: 100%;
float: none;
}
}

@media only screen and (min-width : 481px) and (max-width : 780px) {
/* up to the width of iPad in portrait */
}

@media only screen and (min-width : 769px) and (max-width : 1024px) {
/* up to the width of iPad in landscape */
}

@media only screen and (min-width : 1025px) {
/* desktop */
}
</af:resource>

3. 要件に合うように新しいテンプレートを編集します(第27.3.5.3項「デフォルトのテンプレートの適応」参照)。

4. 新しいテンプレートをポータル・リソースとしてエクスポートします(第27.5.1項「ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート」参照)。

5. 新しいテンプレートをアップロードします(第27.5.2項「新しいコンテンツ・プレゼンタ表示テンプレートのアップロード」参照)。

27.3.5.3 デフォルトのテンプレートの適応

この項では、記事ビューおよび全記事ビュー・テンプレートに対して行う変更、およびその変更方法の概要について説明します。例:

- Internet Explorer 8などの古いブラウザでレスポンシブ・レイアウトをサポートするようにテンプレートを更新する場合。

- 異なるリージョン定義を操作するするようにテンプレートを更新する場合。

これらの拡張については、次の項で説明します。

- 第27.3.5.3.1項「古いブラウザ用のレスポンシブ・レイアウトのサポート」

- 第27.3.5.3.2項「異なるリージョン定義の使用」

- 第27.3.5.3.3項「テンプレートにおけるレイアウトの更新」

27.3.5.3.1 古いブラウザ用のレスポンシブ・レイアウトのサポート

現在のレスポンシブ・テンプレートはCSS3 Media Queriesに依存しますが、古いブラウザではサポートされていません。そのため、レスポンシブ・デザインを有効にするには、Media Queriesを受理してJavaScriptを使用できる、サード・パーティのJavaScriptライブラリを使用する必要があります。

これを行うには:

- サード・パーティのJavaScriptライブラリを含むWebCenter Portal用カスタム共有ライブラリを作成してデプロイします(第55.2項「WebCenter Portalのタスク・フロー、データ・コントロールおよびマネージドBeanの開発」参照)。

- サード・パーティのJavaScriptライブラリへの参照をテンプレートに追加します(path/to/3rd/party/library.jsがカスタム共有ライブラリ内のJavaScriptファイルへのパスです)。

<af:resource type="javascript" source="path/to/3rd/party/library.js"/>

27.3.5.3.2 異なるリージョン定義の使用

この項では、レスポンシブ・テンプレート内のリージョン定義の変更方法について説明します。たとえば、TITLE、LEAD、IMAGEおよびBODYという4つの要素を含む、RD_NEWSという名前のリージョン定義があるとします(第27.3.9項「カスタム・ビューにおけるSite Studioリージョン要素の参照」参照)。この場合、この新しいリージョン定義を参照するようにテンプレートを更新します。それには、RD_ARTICLESの参照をRD_NEWSに変更し、SUMMARYの参照をLEADに変更します。

ニュース・ビュー

このテンプレートは、記事ビュー・テンプレートに基づいて新しいアイテム(RD_NEWSタイプ)のリストを表示します。

<?xml version = '1.0'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rah="http://xmlns.oracle.com/webcenter/resourcehandler"
xmlns:tr="http://myfaces.apache.org/trinidad">
<dt:contentListTemplateDef var="nodes">
<af:resource type="css" source="/oracle/webcenter/content/templates/seeded/articles.css"/>
<af:iterator rows="0" var="node" varStatus="iterator" value="#{nodes}"
id="it0">
<h:panelGroup styleClass="#{(iterator.index % 3 == 0) ? 'article-3 ' : ''}#{(iterator.index % 2 == 0) ? 'article-2 ' : ''}article"
id="pg1">
<af:commandLink immediate="true" partialSubmit="true" id="cl2">
<rah:resourceActionBehavior id="rah1"
serviceId="oracle.webcenter.content.presenter"
resourceId="#{node.id}"
resourceTitle="#{node.propertyMap['RD_NEWS:TITLE'].asTextHtml}"
useResourcePopup="never"/>
<f:attribute name="taskFlowInstId"
value="a5fafea8-90e6-4972-997d-314401b6c98b"/>
<f:attribute name="datasourceType" value="dsTypeSingleNode"/>
<f:attribute name="datasource"
value="#{node.id.repositoryName}#dDocName:#{node.propertyMap['dDocName'].value}"/>
<f:attribute name="templateView"
value="oracle.webcenter.content.templates.newsitem"/>
<f:attribute name="regionTemplate" value="#{false}"/>
<af:outputText value="#{node.propertyMap['RD_NEWS:IMAGE'].asTextHtml}"
escape="false" id="ot4"/>
<tr:panelHeader text="#{node.propertyMap['RD_NEWS:TITLE'].asTextHtml}"
id="ph1">
<af:outputText value="#{node.propertyMap['RD_NEWS:LEAD'].asTextHtml}"
escape="false" id="ot3"/>
</tr:panelHeader>
</af:commandLink>
</h:panelGroup>
</af:iterator>
</dt:contentListTemplateDef>
</jsp:root>

ニュース・アイテム・ビュー

このテンプレートは、全記事ビュー・テンプレートに基づいてニュース・アイテム全体(View ID: oracle.webcenter.content.templates.newsitem)を表示します。

<?xml version = '1.0'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:tr="http://myfaces.apache.org/trinidad">
<dt:contentTemplateDef var="node">
<af:resource type="css" source="/oracle/webcenter/content/templates/seeded/articles.css"/>
<af:panelGroupLayout id="psl1" layout="vertical">
<tr:panelHeader text="#{node.propertyMap['RD_NEWS:TITLE'].asTextHtml}"
styleClass="full-article" id="ph1">
<tr:panelGroupLayout id="pgl1" styleClass="full-article-image">
<af:outputText value="#{node.propertyMap['RD_NEWS:IMAGE'].asTextHtml}"
escape="false" id="ot4"/>
</tr:panelGroupLayout>
<af:outputText value="#{node.propertyMap['RD_NEWS:BODY'].asTextHtml}"
escape="false" id="ot3"/>
</tr:panelHeader>
</af:panelGroupLayout>
</dt:contentTemplateDef>
</jsp:root>

27.3.5.3.3 テンプレートにおけるレイアウトの更新

コンテンツにより適合するようにテンプレートのレイアウトを変更するとします。たとえば、1列のレイアウトでは、記事の要約のテキストが長い場合、記事ビュー・テンプレートはそのテキストをイメージの下にも表示します。

図27-4 広いレイアウトの記事

これを変更して、イメージの下にテキストが表示されないようにできます。

図27-5 狭いレイアウトの記事

これを行うには、記事ビュー・テンプレートに基づいて新しいテンプレートを作成し、テキストのブロックにスタイル・クラス(article-text)を追加して、このスタイル・クラスの表示CSSプロパティを、狭いレイアウト用のtable-cellに設定します。

<?xml version = '1.0'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rah="http://xmlns.oracle.com/webcenter/resourcehandler"
xmlns:tr="http://myfaces.apache.org/trinidad">
<dt:contentListTemplateDef var="nodes">
<af:resource type="css">
/* Default styles */
.article {
display: block;
float: left;
width: 31.623931623931625%;
margin-left: 2.564102564102564%;
margin-bottom: 1em;
}
.article-3 {
margin-left: 0;
clear: both;
}
.article img {
width: 100%;
margin: 0 0 .25em;
float: none;
padding-top: 0;
display: block;
border: 0;
}
.article h1 {
font-size: 1.5em;
}

@media only screen and (max-width : 480px) {
/* up to width of iPhone */
.article {
margin-top: .5em;
float: left;
display: inline;
width: 100%;
margin-left: 0;
}
.article-3 {
width: 100%;
clear: none;
}
.article img {
margin-right: 4%;
width: 48%;
float: left;
}
.article {
font-size: 1em;
}
.article h1 {
font-size: 1.25em;
}
/* Set the display CSS property to table-cell for the article-text style class in the narrow layout */
.article-text {
display: table-cell;
}
}

@media only screen and (min-width : 481px) and (max-width : 780px) {
/* up to the width of iPad in portrait */
.article {
display: block;
float: left;
width: 48.71794871794871%;
margin-left: 2.564102564102564%;
clear: none;
}
.article-3 {
margin-left: 2.564102564102564%;
clear: none;
}
.article-2 {
margin-left: 0;
clear: both;
}
.article h1 {
font-size: 1.25em;
}
}

@media only screen and (min-width : 769px) and (max-width : 1024px) {
/* up to the width of iPad in landscape */
}

@media only screen and (min-width : 1025px) {
/* desktop */
}
</af:resource>
<af:iterator rows="0" var="node" varStatus="iterator" value="#{nodes}"
id="it0">
<h:panelGroup styleClass="#{(iterator.index % 3 == 0) ? 'article-3 ' : ''}#{(iterator.index % 2 == 0) ? 'article-2 ' : ''}article"
id="pg1">
<af:commandLink immediate="true" partialSubmit="true" id="cl2">
<rah:resourceActionBehavior id="rah1"
serviceId="oracle.webcenter.content.presenter"
resourceId="#{node.id}"
resourceTitle="#{node.propertyMap['RD_ARTICLE:TITLE'].asTextHtml}"
useResourcePopup="never"/>
<f:attribute name="taskFlowInstId"
value="a5fafea8-90e6-4972-997d-314401b6c98b"/>
<f:attribute name="datasourceType" value="dsTypeSingleNode"/>
<f:attribute name="datasource"
value="#{node.id.repositoryName}#dDocName:#{node.propertyMap['dDocName'].value}"/>
<f:attribute name="templateView"
value="oracle.webcenter.content.templates.sitestudio.fullarticle"/>
<f:attribute name="regionTemplate" value="#{false}"/>
<af:outputText value="#{node.propertyMap['RD_ARTICLE:IMAGE'].asTextHtml}"
escape="false" id="ot4"/>
<tr:panelHeader text="#{node.propertyMap['RD_ARTICLE:TITLE'].asTextHtml}"
id="ph1" styleClass="article-text">
<af:outputText value="#{node.propertyMap['RD_ARTICLE:SUMMARY'].asTextHtml}"
escape="false" id="ot3"/>
</tr:panelHeader>
</af:commandLink>
</h:panelGroup>
</af:iterator>
</dt:contentListTemplateDef>
</jsp:root>

27.3.6 EL式を使用したコンテンツ・アイテム情報の取得

この項では、コンテンツ・アイテムに関する特定情報を取得および表示するためにコンテンツ・プレゼンタ表示テンプレートの定義で使用できるEL式について説明します。

第27.3.2項「単一アイテムの表示テンプレートの作成」および第27.3.3項「複数アイテムの表示テンプレートの定義」で説明したコンテンツ・プレゼンタ表示テンプレートを定義するときに、次の表で説明するEL式を使用します。これらの式は、表27-1および表27-2で説明したJSPタグとともに使用されます。

この項には次のサブセクションが含まれます:

- 第27.3.6.1項「コンテンツ・アイテムの基本情報の取得」

- 第27.3.6.2項「コンテンツ・アイテムのプロパティおよび値の操作」

- 第27.3.6.3項「コンテンツ・アイテムのアイコンおよびURLの操作」

- 第27.3.6.4項「グループ・ポータル情報の操作」

27.3.6.1 コンテンツ・アイテムの基本情報の取得

表27-3にリストされているEL式を使用すると、表示テンプレートでコンテンツ・アイテムの基本情報を表示できます。

表27-3 基本コンテンツ情報を取得するためのEL式

EL式

説明

#{node.createdBy}

ノードの作成者のユーザー名を返します。

#{node.createdDate}

ノードの作成日を返します。

#{node.hasParentNode}

現在のノードが有効な親ノードIDを持っている場合または親がないノードの場合、trueを返します。

#{node.icon}

現在のWebアプリケーションで定義されたアイコン・サービスを返します。

#{node.id}

ノードの識別子を返します。

#{node.isFolder}

このノードがフォルダまたはコンテナと関連付けられている場合、trueを返します。

#{node.isInherited}

このノードが別のオブジェクト・クラス定義によって継承された場合、trueを返します。

#{node.modifiedBy}

ノードの最終更新者のユーザー名を返します。

#{node.modifiedDate}

ノードの最終更新日を返します。

#{node.name}

ノードの名前を返します。

#{node.parentId}

親ノードの識別子を返します。

#{node.path}

ノードのパスを返します。

#{node.primaryProperty}

ノードの主要プロパティがある場合、それを返します。

#{node.propertyMap}

プロパティ名をキーとする、ラップされたプロパティ・オブジェクトのマップを作成して返します。プロパティには#{node.propertyMap['myProp']}または#{node.propertyMap.myProp}としてアクセスできます。

#{node.url}

このノードの主要プロパティがある場合、そのノード・プロパティURLサービスのインスタンスを返します。デフォルトでは、#{node.url.renderUrl}に解決されます。これは#{node.primaryProperty.url}のショートカットです。

27.3.6.2 コンテンツ・アイテムのプロパティおよび値の操作

表27-4と表27-5で説明されているEL式を使用して、コンテンツ・アイテムのノード・プロパティとプロパティ値に対するアクションを実行します。

ヒント:

所定のコンテンツ・タイプに定義されたプロパティ名を判断するには、第27.3.7項「コンテンツ・タイプのプロパティ名の発見」を参照してください。

表27-4 コンテンツ・アイテムのノード・プロパティのEL式

EL式

説明

#{node.propertyMap['myProp'].asTextHtml}

タイプがテキストまたはHTMLの場合、テキストまたはHTMLとしてこのプロパティを返します。isHTMLまたはisPlainTextがtrueの場合、テキストまたはHTMLは文字列として返されます。

#{node.propertyMap['myProp'].hasValue}

このプロパティに値が関連付けられている場合、trueを返します。

#{node.propertyMap['myProp'].icon}

現在のWebアプリケーションで定義されたアイコン・サービスを返します。

#{node.propertyMap['myProp'].indexedName}

複数値を持つプロパティのインデックス付き名前を返します。たとえば、colorという名前の複数値を持つノード・プロパティにblue、red、orangeが含まれている場合、red値のインデックス付き名前はcolor[1]になります。#{node.propertyMap['color[2]'].value.stringValue}というEL式は、このリストのorangeというcolorを参照します。

#{node.propertyMap['myProp'].isAudio}

プロパティのMIMEタイプがaudio/の場合、trueを返します。

#{node.propertyMap['myProp'].isBinary}

現在のプロパティのタイプがProperty.BINARYの場合、trueを返します。

#{node.propertyMap['myProp'].isBoolean}

現在のプロパティのタイプがProperty.BOOLEANの場合、trueを返します。

#{node.propertyMap['myProp'].isCalendar}

現在のプロパティのタイプがProperty.CALENDARの場合、trueを返します。

#{node.propertyMap['myProp'].isDouble}

現在のプロパティのタイプがProperty.DOUBLEの場合、trueを返します。

#{node.propertyMap['myProp'].isExcel}

プロパティのMIMEタイプがapplication/vnd.ms-excel、application/excel、application/x-excelまたはapplication/x-msexcelの場合、trueを返します。

#{node.propertyMap['myProp'].isGIF}

プロパティのMIMEタイプがimage/gifの場合、trueを返します。

#{node.propertyMap['myProp'].isHTML}

プロパティのMIMEタイプがtext/htmlの場合、trueを返します。

#{node.propertyMap['myProp'].isImage}

プロパティのMIMEタイプがimage/の場合、trueを返します。

#{node.propertyMap['myProp'].isJPEG}

プロパティのMIMEタイプがimage/jpegの場合、trueを返します。

#{node.propertyMap['myProp'].isLink}

現在のプロパティのタイプがProperty.LINKの場合、trueを返します。

#{node.propertyMap['myProp'].isLong}

現在のプロパティのタイプがProperty.LONGの場合、trueを返します。

#{node.propertyMap['myProp'].isMSWord}

プロパティのMIMEタイプがapplication/vnd.ms-wordまたはapplication/mswordの場合、trueを返します。

#{node.propertyMap['myProp'].isMultiValued}

このプロパティが複数値を持つ場合、trueを返します。

#{node.propertyMap['myProp'].isNested}

現在のプロパティのタイプがProperty.NESTEDの場合、trueを返します。

#{node.propertyMap['myProp'].isPDF}

プロパティのMIMEタイプがapplication/pdfの場合、trueを返します。

#{node.propertyMap['myProp'].isPlainText}

プロパティのMIMEタイプがtext/plainの場合、trueを返します。

#{node.propertyMap['myProp'].isPNG}

プロパティのMIMEタイプがimage/pngの場合、trueを返します。

#{node.propertyMap['myProp'].isPowerPoint}

プロパティのMIMEタイプがapplication/vnd.ms-powerpoint、application/mspowerpointまたはapplication/x-mspowerpointの場合、trueを返します。

#{node.propertyMap['myProp'].isPrimaryProperty}

このプロパティが主要プロパティの場合、trueを返します。

#{node.propertyMap['myProp'].isRequired}

このプロパティが必須の場合、trueを返します。

#{node.propertyMap['myProp'].isRetricted}

このプロパティが制限付きの場合、trueを返します。

#{node.propertyMap['myProp'].isRichText}

プロパティのMIMEタイプがtext/richtextの場合、trueを返します。

#{node.propertyMap['myProp'].isString}

現在のプロパティのタイプがProperty.STRINGの場合、trueを返します。

#{node.propertyMap['myProp'].isTextBased}

このプロパティがテキスト・ベース(isHTML、isPlainText、isString、isCalendar、isBoolean、isDouble、isLong)の場合、trueを返します。

#{node.propertyMap['myProp'].isVideo}

プロパティのMIMEタイプがvideo/の場合、trueを返します。

#{node.propertyMap['myProp'].isXML}

プロパティのMIMEタイプがtext/xmlの場合、trueを返します。

#{node.propertyMap['myProp'].isZip}

プロパティのMIMEタイプがapplication/zipの場合、trueを返します。

#{node.propertyMap['myRefNode'].linkAsNode}

myRefNodeプロパティをノードとして返します。ここで、myRefNodeはリンク・プロパティ・タイプです。プロパティはEL式で参照できます。

例:
#{node.propertyMap['myRefNode'].linkAsNode.primaryProperty.url.renderUrl}

#{node.propertyMap['myProp'].name}

プロパティの名前を返します。

#{node.propertyMap['myProp'].nestedProperty}

この単一値プロパティのネストされたプロパティを取得して、プロパティのリストを返します。

#{node.propertyMap['myProp'].type}

このプロパティ値のデータ型を返します。たとえば、String、Integer、Longなどです。

#{node.propertyMap['myProp'].url}

このプロパティのURLサービスを返します。

#{node.propertyMap['myProp'].value}

このプロパティの値サービスを返します。

#{node.propertyMap['myProp'].nestedProperties}

静的リストの要素を返します。例:

<af:iterator var="listItem"
value="#{node.propertyMap['ARTICLE_RGD:Paragraphs'].nestedProperties}"
varStatus="vs">
<af:outputText id="ot1" value='#{listItem[0].value}'/>
<af:outputText id="ot3" value="#{listItem[1].value}"/>
</af:iterator>

#node.propertyMap['regionDefName:elementName'].asTextHtml}

Site StudioデータをHTMLテキストとして返します。例:

#node.propertyMap['RD_NEWS:LEAD'].asTextHtml}

要素名(LEAD)には、接頭辞としてリージョン定義名(RD_NEWS)が付きます。第27.3.9項「カスタム・ビューにおけるSite Studioリージョン要素の参照」も参照してください。

表27-5 コンテンツ・アイテムのノード・プロパティ値のEL式

EL式

説明

#{node.propertyMap['myProp'].value.binaryValue}

バイナリ・プロパティ・タイプまたは添付ファイルのカスタム属性を返します。binaryValueに使用できる属性は次のとおりです。

- contentType – バイナリ・コンテンツのMIMEタイプを返します(例: textまたはhtml)。

- name – バイナリ・コンテンツのファイル名を返します(例: index.html)。

- size – バイナリ・コンテンツのサイズを返します。サイズを返せない場合、-1を返します。

#{node.propertyMap['myProp'].value.booleanValue}

このプロパティの値をjava.lang.Booleanとして返します。

#{node.propertyMap['myProp'].value.calendarValue}

このプロパティの値をjava.util.Calendarとして返します。

#{node.propertyMap['myProp'].value.doubleValue}

このプロパティの値をjava.lang.Doubleとして返します。

#{node.propertyMap['myProp'].value.longValue}

このプロパティの値をjava.lang.Longとして返します。

#{node.propertyMap['myProp'].value.orderedPosition}

プロパティが複数値を持つ場合、プロパティのインデックスを返します。

例:
#{node.propertyMap['address[0]'].value.orderedPosition},

#{node.propertyMap['myProp'].value.stringValue}

このプロパティの値をjava.lang.Stringとして返します。

例:
#{node.propertyMap['firstName'].value.stringValue}

27.3.6.3 コンテンツ・アイテムのアイコンおよびURLの操作

表27-6と表27-7で、コンテンツ・アイテムとプロパティに関連付けられたアイコンとURLを操作するためのEL式について説明します。

表27-6 コンテンツ・アイテムのノードまたはプロパティ・アイコンのEL式

EL式

説明

#{node.icon.largeIcon}

#{node.propertyMap['myDoc'].icon.largeIcon}

大きいアイコンのイメージ・リソースのURLを返します。

例:
<af:image source="#{node.propertyMap['projectFolder'].largeIcon}"/>

#{node.icon.smallIcon}

#{node.propertyMap['myDoc'].icon.smallIcon}

小さいアイコンのイメージ・リソースのURLを返します。

例:
<af:image source="#{node.icon.smallIcon}" />

表27-7 コンテンツ・アイテムのノードURLのEL式

EL式

説明

#{node.url.downloadUrl}

バイナリ・コンテンツへのURLを作成します。ダウンロードを強制し、オペレーティング・システムはコンテンツ・タイプに基づいてコンテンツをレンダリングします。

例:
<af:goLink destination="#{node.url.downloadUrl}" targetFrame="_blank"/>

#{node.url.renderUrl}

バイナリ・コンテンツへのURLを作成します。コンテンツ・タイプに基づいてブラウザがコンテンツをレンダリングできるようにします。

デフォルトでは、#{node.url}は#{node.url.renderUrl}に解決します。

例:
<af:goLink destination="#{node.url.renderUrl}" targetFrame="_blank"/>

27.3.6.4 グループ・ポータル情報の操作

表27-8および表27-9に、コンテンツ・プレゼンタ・テンプレートでのグループ・ポータル情報の操作に使用できるEL式を示します。

表27-8 基本グループ・ポータル情報のEL式

EL式

説明

#{spaceContext.currentSpace.metadata.createdBy}

#{spaceContext.space[portalName].metadata.createdBy}

現在のグループ・ポータルまたは指定したグループ・ポータルを作成したユーザーを返します。

#{spaceContext.currentSpace.metadata.creationDate}

#{spaceContext.space[portalName].metadata.creationDate}

現在のポータルまたは指定したポータルが作成された日時を表すjava.util.Calendarオブジェクトを返します。

#{spaceContext.currentSpace.metadata.customAttributes[attributeName]}

#{spaceContext.space[portalName].metadata.customAttributes[attributeName]}

attributeNameというポータルの特定のカスタム属性の値を返します。

#{spaceContext.currentSpace.metadata.defaultLanguage}

#{spaceContext.space[portalName].metadata.defaultLanguage}

現在のポータルまたは指定したポータルのデフォルト言語を返します。

#{spaceContext.currentSpace.metadata.description}

#{spaceContext.space[portalName].metadata.description}

現在のポータルに関連付けられた説明と表示名を、ポータルが作成された言語で返します。ポータル名が翻訳されている場合、翻訳された名前は表示されません。

例: #{spaceContext.space['FinanceProject'].metadata.description}

財務活動に従事するすべての複合チームを評価します。

#{spaceContext.currentSpace.metadata.displayName}

#{spaceContext.space[portalName].metadata.displayName}

現在のポータルまたは指定したポータルに関連付けられた表示名を、ポータルが作成された言語で返します。ポータル名が翻訳されている場合、ポータルが作成された名前が表示されます。

例:

Web20Portalという名前のグループ・ポータルの表示名がWeb 2.0 Portalの場合、

#{spaceContext.space['Web20Portal'].metadata.displayName}

これは、Web 2.0 Portalと評価されます。

#{spaceContext.currentSpace.metadata.guid}

#{spaceContext.space[portalName].metadata.guid}

現在のポータルまたは指定したポータルに関連付けられた一意のIDを返します。

#{spaceContext.space[portalName].metadata.icon}

#{spaceContext.currentSpace.metadata.icon}

現在のポータルまたは指定したポータルに関連付けられたアイコンへのURLを返します。

#{spaceContext.currentSpace.metadata.keywords}

#{spaceContext.space[portalName].metadata.keywords}

現在のポータルまたは指定したポータルに関連付けられた検索可能なキーワードのカンマ区切りリストを返します。

#{spaceContext.currentSpace.metadata.lastUpdatedDate}

#{spaceContext.space[portalName].metadata.lastUpdatedDate}

現在のグループ・ポータルまたは指定したグループ・ポータルが最後に更新された日時を表すjava.util.Calendarオブジェクトを返します。

#{spaceContext.space[portalName].metadata.logo}

#{spaceContext.currentSpace.metadata.logo}

現在のポータルまたは指定したポータルのロゴに関連付けられたイメージへのパスを返します。

#{spaceContext.currentSpace.metadata.name}

#{spaceContext.space[portalName].metadata.name}

通常、ポータルのバックエンドでプリティURLで使用される、現在のポータルまたは指定したポータルの名前を返します。

#{spaceContext.currentSpace.metadata.groupSpaceURI}

#{spaceContext.space[portalName].metadata.groupSpaceURI}

現在のポータルまたは指定したポータルのプリティURLを返します。

#{spaceContext.currentSpace.metadata.closed}

#{spaceContext.space[portalName].metadata.closed}

ポータルが閉じられているかどうかを示すブール値を返します。

#{spaceContext.currentSpace.metadata.discoverable}

#{spaceContext.space[portalName].metadata.discoverable}

ユーザーがポータルの存在を検索または「マイ・ポータル」のリストからの取得によって検出できるかどうかを示すブール値を返します。

#{spaceContext.currentSpace.metadata.offline}

#{spaceContext.space[portalName].metadata.offline}

ポータルが遮断されているかどうかを示すブール値を返します。

#{spaceContext.currentSpace.metadata.publishRSS}

#{spaceContext.space[portalName].metadata.publishRSS}

ポータルがRSSフィードを公開しているかどうかを示すブール値を返します。

#{spaceContext.currentSpace.metadata.selfRegistration}

#{spaceContext.space[portalName].metadata.selfRegistration}

ユーザーによるポータルのサブスクライブが許可されているかどうかを示すブール値を返します。

#{spaceContext.currentSpace.metadata.unsubscriptionApprovalRequired}

#{spaceContext.space[portalName].metadata.unsubscriptionApprovalRequired}

現在のポータルまたは指定したポータルからのサブスクライブ解除に承認が必要かどうかを表すブール値を返します。

表27-9 ポータルUI情報のEL式

EL式

説明

#{spaceContext.space[portalName].metadata.uiMetadata.gsSiteTemplateId}

#{spaceContext.currentSpace.metadata.uiMetadata.gsSiteTemplateId}

現在のポータルまたは指定したポータルに関連付けられたページ・テンプレートのIDを返します。

#{spaceContext.space[portalName].metadata.uiMetadata.rcForGSPages}

#{spaceContext.currentSpace.metadata.uiMetadata.rcForGSPages}

現在のポータルまたは指定したポータルに関連付けられたリソース・カタログのIDを返します。

#{spaceContext.space[portalName].metadata.uiMetadata.rcForGSSiteTemplates}

#{spaceContext.currentSpace.metadata.uiMetadata.rcForGSSiteTemplates}

現在のポータルのページ・テンプレートに関連付けられたリソース・カタログのIDを返します。

#{spaceContext.space[portalName].metadata.uiMetadata.gsSiteStructureId}

#{spaceContext.currentSpace.metadata.uiMetadata.gsSiteStructureId}

現在のポータルに関連付けられたナビゲーション・モデルのIDを返します。

#{spaceContext.space[portalName].metadata.uiMetadata.skin}

#{spaceContext.currentSpace.metadata.uiMetadata.skin}

現在のポータルに関連付けられたADF Facesスキン・ファミリを返します。

#{spaceContext.space[portalName].metadata.uiMetadata.footerHidden}

#{spaceContext.currentSpace.metadata.uiMetadata.footerHidden}

ポータルのフッターが非表示かどうかを表すブール値を返します。

#{spaceContext.space[portalName].metadata.uiMetadata.copyrightMessage}

#{spaceContext.currentSpace.metadata.uiMetadata.copyrightMessage}

ポータルで使用する著作権メッセージを返します。

#{spaceContext.space[portalName].metadata.uiMetadata.privacyPolicyUrl}

#{spaceContext.currentSpace.metadata.uiMetadata.privacyPolicyUrl}

従っているプライバシ・ポリシー・ドキュメントのURLを返します。

27.3.7 コンテンツ・タイプのプロパティ名の発見

コンテンツ・プレゼンタ表示テンプレートの開発者は、選択されたコンテンツ・アイテムのページ上での表示方法を定義できるように、関連付けられたコンテンツ・タイプに定義されたプロパティの名前を知っておくことが必要です。

各コンテンツ・アイテムは、コンテンツ・サーバーのリポジトリで定義された特定コンテンツ・タイプに関連付けらます。コンテンツ・タイプはコンテンツ・サーバーのプロファイル定義とSite Studioのリージョン定義にマップできます。タイプは、コンテンツ・サーバーで作成され、コンテンツ・アイテムのプロパティを定義します。コンテンツ・アイテムのコンテンツ・タイプのプロパティ名は、表示名とは異なり、コンテンツ・サーバーから取得する必要があります。詳細は、Oracle WebCenter Content Content Serverアプリケーション管理者ガイドのコンテンツ・タイプの管理に関する項を参照してください。

注意:

RESTサービスを使用しても、コンテンツ・タイプのプロパティ名を取得できます。詳細は『Oracle Fusion Middleware Content Management REST Service開発者ガイド』を参照してください。

27.3.8 表示テンプレートにおける外部ファイルの参照

場合によっては、CSSファイルのような外部ファイルを表示テンプレートで参照する必要があります。このようなすべての参照では、Webアプリケーションのルートへの相対パスか絶対パスを指定します。例:

- 絶対パス – http://host:port/mypath/file.css

- 相対パス – /webcenter/mypath/file.css

外部ファイルに対するローカル参照は使用しないでください。第27.5項「コンテンツ・プレゼンタ表示テンプレートの有効化」で説明されているように、外部ファイルへのローカル参照は、コンテンツ・プレゼンタ表示テンプレートのWebCenter Portalアプリケーションへのアップロードに含まれないため、動作しません。

27.3.9 カスタム・ビューにおけるSite Studioリージョン要素の参照

カスタム表示テンプレートを使用してSite Studioリージョン定義要素を表示できます。たとえば、TITLE、LEAD、IMAGEおよびBODYという4つの要素を持つRD_NEWSというSite Studioリージョン定義があると仮定します。コンテンツ・プレゼンタ表示テンプレートでは、次のようなノード・プロパティEL式を使用して、これらの要素を参照できます。

#node.propertyMap['RD_NEWS:LEAD'].asTextHtml}

例27-6は、こうしたSite Studioリージョン要素をcontentTemplateDef定義に含める方法を示します。

例27-6 テンプレートにおけるSite Studioリージョン要素の参照

<dt:contentTemplateDef var="node">
<af:panelGroupLayout layout="vertical" id="pgl3">
<af:panelGroupLayout layout="horizontal" valign="top" inlineStyle="background-color:#FFF; padding:10px;" id="pgl4">
<af:panelGroupLayout layout="vertical" id="pgl2" valign="top">
<af:outputText value="#{node.propertyMap['dInDate'].value.calendarValue}" id="ot3" styleClass="bodytext" converter="javax.faces.DateTime"/>
</af:panelGroupLayout>
<af:spacer width="10px;" id="s1" inlineStyle="background-color:#DDD; color:white;"/>
<af:panelGroupLayout layout="vertical" id="pgl1" valign="top">
<af:outputText value="#{node.propertyMap['xTargetGroup'].value}" id="ot12" inlineStyle="background-color:#0A9FC0; color:white; text-align:left; padding:5px;"/>
<af:goLink text="#{node.propertyMap['RD_NEWS:TITLE'].asTextHtml}" id="gil1"
destination="#{'/faces/home/news-viewer?news_id='}#{node.propertyMap['dDocName'].value}" styleClass="newstitle"/>
<af:outputText value="#{node.propertyMap['RD_NEWS:LEAD'].asTextHtml}" id="ot2" styleClass="bodytext"/>
</af:panelGroupLayout>
<af:panelGroupLayout layout="vertical" id="pgl32" valign="top" styleClass="newsimage">
<af:outputText value="#{node.propertyMap['RD_NEWS:IMAGE'].asTextHtml}" escape="false" id="ot1"  inlineStyle="max-width:100px;"/>
</af:panelGroupLayout>
</af:panelGroupLayout>
<af:panelGroupLayout layout="horizontal" id="aaaa">
</af:panelGroupLayout>
</af:panelGroupLayout>
</dt:contentTemplateDef>

複数のテンプレートでSite Studioリージョン要素を参照する方法を示す完全なエンドツーエンドの例は、WebCenterアーキテクチャ・チームのブログ・エントリ(http://www.ateam-oracle.com/content-presenter-cmis-complete)を参照してください。

27.3.10 コンテンツ・プレゼンタ表示テンプレートの使用

コンテンツ・タスク・フローでの表示テンプレートの使用の詳細は、第29.5項「コンテンツ・タスク・フローのページへの追加」および第29.7.1項「コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート」を参照してください。Portal Frameworkアプリケーションへの表示テンプレートの統合の詳細は、第27.5項「コンテンツ・プレゼンタ表示テンプレートの有効化」を参照してください。

注意:

コンテンツ・プレゼンタの表示テンプレートを使用してWikiページをPortal Frameworkアプリケーションで表示すると、デフォルトでそのWikiページ内のリンクがドキュメント・ビューアで表示されます。コンテンツ・プレゼンタを使用してWikiページのリンクを表示する場合、adf-config.xmlファイルを編集する必要があります。詳細は、第30.3.5項「コンテンツ・プレゼンタでのWikiページ・リンクの表示」を参照してください。

27.4 ページへのコンテンツ・プレゼンタ・タスク・フローの追加

設計時または実行時にコンテンツ・プレゼンタ・タスク・フローを追加できます。設計時のJDeveloperを使用したコンテンツ・プレゼンタの追加の詳細は、第29章「ポータル・ページへのコンテンツ・タスク・フローおよびドキュメント・コンポーネントの追加」を参照してください。実行時のコンテンツ・プレゼンタの追加の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「コンテンツ・プレゼンタを使用したコンテンツの公開」の章を参照してください。

27.5 コンテンツ・プレゼンタ表示テンプレートの有効化

この項では、ポータルまたはFrameworkアプリケーションのコンテンツ・プレゼンタでコンテンツ・プレゼンタ表示テンプレートを使用する方法を説明します。

- 第27.5.1項「ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート」

- 第27.5.2項「新しいコンテンツ・プレゼンタ表示テンプレートのアップロード」

- 第27.5.3項「新しいコンテンツ・プレゼンタ表示テンプレートのテスト」

注意:

ローカルで構成されたJDev環境を使用してPortal Frameworkアプリケーションを開発する場合、アプリケーションでコンテンツ・プレゼンタ表示テンプレートを使用するには、第27.5.1項「ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート」の説明に従ってポータル・リソースとしてエクスポートします。第27.5.2項「新しいコンテンツ・プレゼンタ表示テンプレートのアップロード」で説明されているアップロード・タスクの実行は不要です。

27.5.1 ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート

この項では、ポータル・リソースとしてコンテンツ・プレゼンタ表示テンプレートをエクスポートする方法を説明します。この手順は、実行時にポータルおよびコンテンツ・プレゼンタにコンテンツ・プレゼンタ表示テンプレートを追加する際に必要です。

1. 前述の第27.3項「コンテンツ・プレゼンタ表示テンプレートの作成」の説明に従ってコンテンツ・プレゼンタ表示テンプレートを作成します。

2. アプリケーション・ナビゲータで、コンテンツ・プレゼンタ表示テンプレート・ファイル(JSFFファイル)を右クリックし、「ポータル・リソースの作成」を選択します。

3. 「ポータル・リソースの作成」ダイアログに入力します。このダイアログは、単一アイテムと複数アイテムのどちらのテンプレートを作成するかによって異なります。単一アイテムのテンプレートのダイアログは図27-6に示されています。複数アイテムのテンプレートのダイアログは図27-7に示されています。

図27-6 単一アイテムのテンプレートの「ポータル・リソースの作成」ダイアログ

図27-7 複数アイテムのテンプレートの「ポータル・リソースの作成」ダイアログ

通常は「ポータル・リソースの作成」ダイアログのデフォルト設定で十分ですが、「ビューID」フィールドに一意の値を入力する必要があります。「表示名」は、実行時に表示テンプレートのドロップダウン・メニューに表示される名前です。

ビューIDパラメータは人間が判読可能な形式を意図しているので、自動的には生成されません。たとえば、ビューIDを使用して、あるテンプレートを別のテンプレートからプログラムによって参照できます。たとえば、複数コンテンツ・アイテムのテンプレートで各アイテムのタブをレンダリングし、選択されたタブの下で使用される単一アイテムのテンプレートをコールして、選択されたアイテムの詳細をレンダリングできます。また、たとえば、コンテンツ・プレゼンタ・タスク・フローのパラメータとしてビューIDを渡すことで、あるテンプレートを別のテンプレートに含めることができます。これを示す詳細な例は、WebCenterアーキテクチャ・チームのブログ・エントリ(http://www.ateam-oracle.com/content-presenter-cmis-complete)を参照してください。第27.3.9項「カスタム・ビューにおけるSite Studioリージョン要素の参照」も参照してください。

単一アイテムのテンプレート用の「ポータル・リソースの作成」ダイアログには、他に次の属性が含まれます。

- テンプレート・タイプ – テンプレートが単一アイテムと複数アイテムのどちらのテンプレートかを反映します。

- コンテンツ・リポジトリ名 – デフォルトでは、ポータル・リソースは、アプリケーションのデフォルト・コンテンツ接続に関連付けられたリポジトリを使用します。ポータル内で使用するためにポータル・リソースをエクスポートする場合、ポータルの接続名で使用されるものと一致するリポジトリを選択する必要があります。

- コンテンツ・タイプ – テンプレートが有効なコンテンツ・タイプを選択できます。メニューに表示されるコンテンツ・タイプのリストは、選択されたコンテンツ・リポジトリに応じて異なります。

- コンテンツ・タイプのデフォルト・ビュー – 「True」に設定すると、表示テンプレートが、リポジトリとコンテンツ・タイプの所定の組合せに使用するデフォルト・テンプレートであることを指定します。

- ビューID – この項で前述したように、テンプレートをプログラム的に参照するために使用する一意の値。

複数アイテムのテンプレート用の「ポータル・リソースの作成」ダイアログには、他に次の属性が含まれます。

- テンプレート・タイプ – テンプレートが単一アイテムと複数アイテムのどちらのテンプレートかを反映します。

- カテゴリ名 – 表示テンプレートのカテゴリに指定する名前。カテゴリを説明する名前を指定するか、「デフォルトのテンプレート」のカテゴリ名を使用できます。

- カテゴリID – カテゴリのID。カテゴリ名として「デフォルトのテンプレート」を選択すると、このフィールドは読取り専用となり、oracle.webcenter.content.templates.default.categoryが設定されます。新しいカテゴリを作成する場合、この値には一意の文字列を指定できます。たとえば、oracle.webcenter.content.templates.pressrelease.categoryを指定できます。2つのリソースが同じIDを持つ場合、それらはユーザー・インタフェースで同じグループにまとめられます。

- ビューID – この項で前述したように、テンプレートをプログラム的に参照するために使用する一意の値。

注意:

「ポータル・リソースの作成」ダイアログの他のフィールドの詳細は、第9.6.3項「ポータル・リソースをJDeveloperからエクスポートする方法」を参照してください。

4. 終了したら、ダイアログで「OK」をクリックします。

5. コンテンツ・プレゼンタ表示テンプレート(JSFF)ファイルを再度右クリックして、今回は「ポータル・リソースのエクスポート」を選択します。

6. 「ポータル・リソースのエクスポート」ダイアログで、エクスポートしたポータル・リソース(JSPX)・ファイルを配置するディレクトリを入力するか参照します。このファイルはファイル・システムの任意の場所に配置できます。

7. 「ポータル・リソースのエクスポート」ダイアログで「OK」をクリックします。

これで、コンテンツ・プレゼンタ表示テンプレートがポータル・リソースとしてエクスポートされたので、次の手順でそれをポータルにアップロードします。表示テンプレートのポータル・リソースをアップロードすると、ポータル・ページにコンテンツ・プレゼンタを追加するときに、表示テンプレートのリストから使用可能になります。

27.5.2 新しいコンテンツ・プレゼンタ表示テンプレートのアップロード

新しい表示テンプレートは、リソース・マネージャを含むデプロイ済のポータルまたはFrameworkアプリケーションにアップロードできます。アプリケーション管理者がコンテンツ・プレゼンタ表示テンプレートをポータルまたはFrameworkアプリケーションにアップロードするには:

注意:

コンテンツ・プレゼンタ表示テンプレートおよびターゲット・アプリケーションを開発した設計時のFrameworkアプリケーションとポータルで、同じリポジトリ接続名と詳細にする必要があります。また、表示テンプレートの外部ファイルへの参照は、絶対パスまたは相対パス参照で指定する必要があります。第27.3.8項「表示テンプレートにおける外部ファイルの参照」を参照してください。

注意:

WebCenter Portalインスタンス内の特定のポータルのスコープからのアップロードは、ポータルの管理ツールのアプリケーション・スコープからのアップロードとは異なります。詳細は、第55.1.5項「JDeveloperでのWebCenter Portalアセットの編集」の、アプリケーションレベル・リソースとポータルレベル・リソースの項を参照してください。

1. ポータルまたはFrameworkアプリケーションを開きます。

2. 「管理」をクリックします。
管理者権限を持っている必要があります。

3. 「共有アセット」を選択します。

4. 「外観とレイアウト」の「コンテンツ・プレゼンタ」をクリックします。

5. 図27-8に示された「アップロード」を選択します。

図27-8 表示テンプレート・ポータル・リソースのアップロード

6. 「新しいコンテンツ・プレゼンタのアップロード」ダイアログで、ファイル・システム上に保存したポータル・リソース・ファイルに移動します。

7. テンプレート・ファイルを選択したら、「OK」をクリックします。操作に成功した場合、「情報」ダイアログが「リソースは正常にアップロードされました。」というメッセージとともに表示されます。

8. 図27-9に示すように、コンテンツ・プレゼンタ・テンプレートのリストから該当するコンテンツ・プレゼンタ表示テンプレートを見つけてそれを選択します。

図27-9 テンプレートの表示と非表示の状態の切替え

9. テンプレートをユーザーに表示し、コンテンツ・プレゼンタで使用できるようにするには、「使用可能」チェック・ボックスを選択します。

これで、新しいコンテンツ・プレゼンタ表示テンプレートを、ポータルまたはFrameworkアプリケーションのコンテンツ・プレゼンタで使用する準備が整いました。

27.5.3 新しいコンテンツ・プレゼンタ表示テンプレートのテスト

この項では、コンテンツ・プレゼンタを使用してコンテンツ・プレゼンタ表示テンプレートをテストする方法を説明します。

1. コンテンツ・プレゼンタ表示テンプレートを追加したポータルまたはFrameworkアプリケーションを現在実行中でない場合、これを起動します。このアプリケーションには、コンテンツ・プレゼンタが使用できるContent Server接続が必要です。ポータルでは、前の項で説明されている設定手順を完了したばかりの場合、「管理」ページの右上隅のポータルに戻るリンクをクリックします。

2. 新しいコンテンツ・プレゼンタ表示テンプレートを使用するポータルまたはFrameworkアプリケーションに移動します。それを編集できる必要があることに注意してください。

3. オプションとして、表示テンプレートをテストするために新しいページを作成します。「ページ・アクション」メニューから「新規ページの作成」を選択します。次に、「保存」と「閉じる」を選択します。

4. 新規ページまたは既存のページで、「ページ・アクション」メニューから「ページの編集」を選択します。

5. コンテンツ・プレゼンタを追加するページの部分で「コンテンツの追加」ボタンを選択します。

6. 図27-10に示すように、「コンテンツの追加」ダイアログで「コンテンツ管理」フォルダを開きます。

図27-10 コンテンツ管理フォルダのオープン

7. 「コンテンツの追加」ダイアログで、コンテンツ・プレゼンタの隣の「追加」ボタンをクリックします。

8. 「コンテンツの追加」ダイアログを閉じます。

9. コンテンツ・プレゼンタ・ツール・バーでタスク・フローの「編集」アイコンを選択します(図27-11を参照)。

図27-11 「編集」アイコンの選択

10. これが新しいページの場合、「コンテンツ」タブで1つ以上のコンテンツ・アイテムを選択します。

11. 「コンテンツ・プレゼンタ構成」ウィンドウで、「テンプレート」タブを選択します。

12. 図27-12に示されているように、「テンプレート」メニューからコンテンツ・プレゼンタ表示テンプレートを選択します。

図27-12 コンテンツ・プレゼンタ表示テンプレートの選択

このコンテンツ・プレゼンタ・テンプレートが、コンテンツ・プレゼンタ・インスタンスに適用されます。コンテンツ・プレゼンタと表示テンプレートの使用の詳細は、第29.2項「ドキュメント・タスク・フローの理解」と第27.2項「デフォルト表示テンプレートの使用」を参照してください。

27.6 実行時の処理

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

- 第27.6.1項「実行時の概要」

- 第27.6.2項「選択されたコンテンツ・アイテムの表示テンプレートの識別」

27.6.1 実行時の概要

コンテンツ・プレゼンタ表示テンプレートを定義したら、コンテンツ・プレゼンタ・タスク・フロー・パラメータでコンテンツと表示テンプレートを指定して、アプリケーションのページにコンテンツ・プレゼンタ・タスク・フローを追加できます(第29.6項「コンテンツ・タスク・フローのパラメータの変更」と第27.2項「デフォルト表示テンプレートの使用」を参照)。

アプリケーションにドキュメント・サービスを統合する場合(第28章「ドキュメントの統合」を参照)、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「コンテンツ・プレゼンタを使用したコンテンツの公開」の章で説明されているように、アプリケーションのエンド・ユーザーは「コンテンツ・プレゼンタ構成」ダイアログでコンテンツとコンテンツ・プレゼンタ表示テンプレートを選択して、アプリケーションの編集可能なページにコンテンツを含めることができます。「コンテンツ・プレゼンタ構成」ダイアログで公開する表示テンプレートをコンテンツ・プレゼンタが識別する方法については、第27.6.2項「選択されたコンテンツ・アイテムの表示テンプレートの識別」を参照してください。

27.6.2 選択されたコンテンツ・アイテムの表示テンプレートの識別

実行時にユーザーが「コンテンツ・プレゼンタ構成」ダイアログでコンテンツを選択すると、コンテンツ・プレゼンタはリソース・マネージャをチェックして、選択されたコンテンツ・アイテムに適した表示テンプレートを識別し、ユーザーが選択できるように「コンテンツ・プレゼンタ構成」ダイアログの「テンプレート」ページに有効なテンプレートのリストを公開します。第9章「ポータル・リソース管理の概要」も参照してください。アップロードしたテンプレートも、選択可能になるように、リソースのリストで使用可能にする必要があります。詳細は、第27.5.2項「新しいコンテンツ・プレゼンタ表示テンプレートのアップロード」を参照してください。

単一コンテンツ・アイテムのテンプレートの場合は、コンテンツ・プレゼンタは次の優先順位に従って有効なテンプレートのリストを生成します。

1. リソース・マネージャで、コンテンツ・アイテムのコンテンツ・リポジトリとコンテンツ・タイプに一致するテンプレート定義をチェックします。

2. デフォルトのコンテンツ・リポジトリ(*)と指定のコンテンツ・タイプに一致するテンプレート定義を追加します。

3. 継承されたコンテンツ・タイプに一致するテンプレート定義を追加します。

4. デフォルトのコンテンツ・リポジトリ(*)とデフォルトのコンテンツ・タイプ(*)に一致するテンプレート定義を追加します。

複数コンテンツ・アイテムのテンプレートの場合は、コンテンツ・プレゼンタは次の優先順位に従って有効なテンプレートのリストを生成します。

1. リソース・マネージャで、選択されたテンプレート・カテゴリに関連付けられたテンプレート定義をチェックします。

2. デフォルト・カテゴリ(*)に関連付けられたテンプレート定義を追加します。

たとえば、ユーザーが複数コンテンツ・アイテム(フォルダの複数の子、検索の複数の結果など)を選択した場合、「コンテンツ・プレゼンタ構成」ダイアログには、コンテンツ・アイテムのリポジトリに基づいて、カテゴリのリストとそのカテゴリおよびデフォルト・カテゴリに関連付けられたテンプレートのリストが表示されます。

注意:

「コンテンツ・プレゼンタ構成」ダイアログでユーザーがテンプレートを選択すると、そのテンプレートを使用して実行中のアプリケーションで選択されたコンテンツ・アイテムが表示されます。後でなんらかの理由でそのテンプレートがリソース・マネージャから削除された場合、コンテンツ・プレゼンタは前述の優先順位に従ってコンテンツ・アイテムを表示するために最も一致度の高いテンプレートを自動的に選択します。

27.7 キャッシュ・メカニズムとしてのCoherenceの構成

デフォルトでは、コンテンツ・プレゼンタはCMIS REST APIを使用して、ローカル(メモリー内)・キャッシュ用のコンテンツ・サーバーのコンテンツを表面化します。そのため、キャッシュ用にCoherenceを使用するには、まずそれを有効にする必要があります。本番環境ではCoherenceを使用することをお薦めします。これは、高可用性環境での要件です。

注意:

ご使用のCoherenceのライセンスは、購入したライセンス・オプションによっては複数ノードの環境をサポートしない可能性があります。ライセンス契約の内容を確認するには、Oracle Fusion Middlewareライセンス情報のOracle Coherenceに関する項を確認してください。

Coherenceの構成ファイルを変更することで、WebCenterポータルおよびFrameworkアプリケーションの両方に対してCoherenceでのコンテンツ・キャッシュを有効にできます。WebCenter Portalでは、第27.7.1項「Coherenceの構成ファイルの変更」に記載されている手順に従うのみで実現します。Frameworkアプリケーションでは、追加の手順で構成ファイルをアプリケーション(EAR)のクラスパスまたはサーバーのシステム・クラスパスに追加する必要があります(詳細は、第27.7.2項「EARクラスパスへのCoherence構成ファイルの追加」参照)。

この項には次のサブセクションが含まれます:

- 第27.7.1項「Coherenceの構成ファイルの変更」

- 第27.7.2項「EARクラスパスへのCoherence構成ファイルの追加」

- 第27.7.3項「Coherence構成の検証」

27.7.1 Coherenceの構成ファイルの変更

Coherence構成ファイルのサンプル(例27-7)は、content-app-lib.earファイル内に用意されています。このEARファイルは、ORACLE_HOME/webcenter/modules/oracle.webcenter.content.integration_11.1.1/content-app-lib.earにあります。サンプル・ファイルの場所は、/content-app-lib.ear/APP-INF/classes/sample-content-coherence-cache-config.xmlです。このファイルをコピーして名前をcontent-coherence-cache-config.xmlに変更し、ファイル(jar xvf content-app-lib.ear)を開いて値をローカル・デプロイメントのニーズに合わせて設定できます。表27-10にこのファイル内のキャッシュ・エントリを示します。content-coherence-cache-config.xmlファイルを変更したら、content-coherence-cache-config.xmlファイルのみを含む.jarファイル(jar cvf portal-coherence.jar content-coherence-cache-config.xml)を作成し、それを$DOMAIN_HOME/libにコピーしてシステム・クラスパスに設定します。

例27-7 Coherence構成ファイルのサンプル

<!DOCTYPE cache-config SYSTEM "cache-config.dtd">
<cache-config>
<caching-scheme-mapping>
<cache-mapping>
<cache-name>repo.ucm.nodeUidCache.*</cache-name>
<scheme-name>ContentNodeCaches</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>repo.ucm.nodePathToUidCache.*</cache-name>
<scheme-name>ContentNodeCaches</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>repo.ucm.securityInfoCache.*</cache-name>
<scheme-name>ContentNodeCaches</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>repo.ucm.typeNameCache.*</cache-name>
<scheme-name>ContentTypeCaches</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>repo.ucm.typeNamesCache.*</cache-name>
<scheme-name>ContentTypeCaches</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>binaryCache.*</cache-name>
<scheme-name>ContentBinaryCaches</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>repo.ucm.searchCriteriaCache.*</cache-name>
<scheme-name>ContentSearchCaches</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name> repo.ucm.indexedFieldsCache.*</cache-name>
<scheme-name>ContentSearchCaches</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>repo.ucm.securityUserCache.*</cache-name>
<scheme-name>ContentSecurityCaches</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>repo.ucm.profileTriggerValueCache.*</cache-name>
<scheme-name>ContentProfileCaches</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>binaryContentTypeCache.*</cache-name>
<scheme-name>ContentBinaryCaches</scheme-name>
</cache-mapping>
</caching-scheme-mapping>
<caching-schemes>
<!--    The following schemes are all local.  For a clustered deployment,
a distributed, replicated, or other clustered scheme is recommended.
See Coherence documentation for more information.
-->
<local-scheme>
<scheme-name>ContentNodeCaches</scheme-name>
<expiry-delay>1m</expiry-delay>
<high-units>100</high-units>
</local-scheme>
<local-scheme>
<scheme-name>ContentTypeCaches</scheme-name>
<expiry-delay>30m</expiry-delay>
<high-units>50</high-units>
</local-scheme>
<local-scheme>
<scheme-name>ContentBinaryCaches</scheme-name>
<expiry-delay>1m</expiry-delay>
<high-units>100000</high-units>
<unit-calculator>
<class-scheme>
<class-name>com.tangosol.net.cache.SimpleMemoryCalculator</class-name>
</class-scheme>
</unit-calculator>
</local-scheme>
<local-scheme>
<scheme-name>ContentSearchCaches</scheme-name>
<expiry-delay>5m</expiry-delay>
<high-units>50</high-units>
</local-scheme>
<local-scheme>
<scheme-name>ContentSecurityCaches</scheme-name>
<expiry-delay>10m</expiry-delay>
<high-units>50</high-units>
</local-scheme>
<local-scheme>
<scheme-name>ContentProfileCaches</scheme-name>
<expiry-delay>1h</expiry-delay>
<high-units>100</high-units>
</local-scheme>
<!--
<class-scheme>
<scheme-name>ContentDisabledCaches</scheme-name>
<class-name>com.tangosol.util.NullImplementation$NullMap</class-name>
</class-scheme>
-->
</caching-schemes>
</cache-config>

表27-10 content-coherence-cache-config.xml内のキャッシュ・エントリ

キャッシュ・エントリ名

説明

repo.ucm.nodeUidCache.*

IDに基づいてリポジトリのノードのリストを格納します。このキャッシュ・エントリのサイズは、アクティブなリポジトリ内のノードの数に依存します。

このキャッシュは、ノード・データのリフレッシュ時期およびこのデータが他のアプリケーションから変更された回数に基づいて有効期限が切れます。

キー - ノードUID - 文字列

値 - コンテンツ・サーバー・ノード・オブジェクト

repo.ucm.nodePathToUidCache.*

パスに基づいてリポジトリのノードのリストを格納します。このキャッシュのサイズは、アクティブなリポジトリ内のノードの数に依存します。このキャッシュ・エントリは、ノード・データのリフレッシュ時期およびデータが他のアプリケーションから変更された回数に応じて有効期限が切れます。サイズおよび有効期限は、nodeUidCacheのものと同じである必要があります。

キー - ノード・パス - 文字列

値 - ノードUID - 文字列

repo.ucm.securityInfoCache.*

ノードのキャッシュ済セキュリティ情報を格納します。このキャッシュのサイズは、リポジトリ内のノードの数に依存します。このキャッシュは、ノード・セキュリティ・データの更新頻度に基づいて有効期限が切れます。

キー - ノードUID - 文字列

値 - ノードのセキュリティ情報

repo.ucm.typeNameCache.*

コンテンツ・タイプ情報をキャッシュします。このキャッシュのサイズは、リポジトリ内のタイプの数に依存します。このキャッシュは、タイプ情報のリフレッシュ時期およびタイプが他のアプリケーションから変更された回数に基づいて有効期限が切れます。

キー - コンテンツ・タイプUID - 文字列

値 - ContentTypeオブジェクト

repo.ucm.typeNamesCache.*

コンテンツ・サーバーが認識しているすべてのタイプ名をキャッシュします。すべてのタイプ名は同時に(単一キー)キャッシュされるため、同時に有効期限が切れます。

このキャッシュは、新しいタイプの作成または削除の頻度に基づいて有効期限が切れます。

キー - このキャッシュには1つのキーtypeNamesしかありません

値 - タイプ名のArrayList<String>

binaryCache.*

バイナリ・プロパティ・データをキャッシュします。リポジトリ構成プロパティBinaryCacheMaxEntrySizeより小さいバイナリのみキャッシュされます。

このキャッシュのサイズは、BinaryCacheMaxEntrySize設定より小さいバイナリ・プロパティの使用回数と使用頻度に基づくか、またはバイナリ・キャッシュで使用されるメモリー容量の合計に基づきます。

このキャッシュは、バイナリ・データのリフレッシュ時期およびこのデータが他のアプリケーションから変更された回数に基づいて有効期限が切れます。

キー - ノードUIDおよびバイナリ・プロパティUID (nodeUid.propUid) - 文字列

値 - バイナリ・ストリーム・データ - byte[]

repo.ucm.searchCriteriaCache.*

コンテンツ・サーバーの検索文法に基づいて、パラメータへの検索問合せセットをキャッシュします。このキャッシュのサイズは、繰り返し実行されることが予想される一意の検索の数に依存します。

最終的に未使用の検索の有効期限が切れて、キャッシュ・メモリーを抑えるように、有効期限を設定する必要があります。

キー - 検索問合せパラメータのセット。

値 - コンテンツ・サーバー用語での検索問合せパラメータのセット。

repo.ucm.indexedFieldsCache.*

リポジトリの索引付き(検索可能)システム・プロパティを保持します。このキャッシュには、次の3つのキーがあります。

- indexedFieldsは、コンテンツ・サーバーのすべての索引付きフィールドを保持します。

- indexedFolderPropsは、フォルダの索引付きシステム・プロパティを保持します。

- indexedDocPropsは、ドキュメントの索引付きシステム・プロパティを保持します。

このキャッシュは、索引付きフィールドの変更頻度に基づいて有効期限が切れます。

キー - 文字列

値 - Map<String,Boolean>は、各索引付きプロパティ名のキー、およびそのプロパティも順序付けが可能かを示すブール値を保持します。

repo.ucm.securityUserCache.*

ローカル・ユーザー名(現在のアプリケーション)とコンテンツ・サーバー内の同じユーザーの名前との間のマッピングをキャッシュします。このキャッシュのサイズは、同時ユーザーまたはよくアクセスするユーザー、あるいはその両方の数に依存します。

このキャッシュは、ユーザー・アイデンティティ・マッピングの更新頻度に基づいて有効期限が切れます。

キー - ローカル・ユーザーID - 文字列

値 - コンテンツ・サーバーのユーザーID - 文字列

repo.ucm.profileTriggerValueCache.*

ドキュメントが作成されたときに使用可能になるように、特定のプロファイルのプロファイル・トリガー値をキャッシュします。このキャッシュ内の最大エントリ数は、暗黙的にコンテンツ・サーバー・サーバー上のプロファイルの最大数に制限されます。キャッシュ・エントリは小さいサイズです。プライマリ・エントリで異なるのは有効期限です。これは、プロファイル・トリガー・フィールドの値がコンテンツ・サーバー内で変更される頻度に依存します。これらの値は、プロファイルがコンテンツ・サーバー・システム上で一旦構成されると変更されることはほとんどありません。そのため、有効期限を適切に設定する必要があります。

キー - コンテンツ・サーバー・プロファイル名 - 文字列

値 - コンテンツ・サーバーのプロファイル・トリガー値 - 文字列

27.7.2 EARクラスパスへのCoherence構成ファイルの追加

次の手順は、Coherence構成ファイルを含むJARファイルをEARクラスパスに追加する方法を示しています。

注意:

次の手順は、Portal Frameworkアプリケーションにのみ必要です。

1. アプリケーションのsrcディレクトリの下に(例: WebCenterPortalCoherence/src)、APP-INF/libという名前のディレクトリを作成し、そこに、content-coherence-cache-config.xmのコンテンツを含むportal-coherence.jarファイルを配置します。

2. アプリケーションのアプリケーション・プロパティを開き、「デプロイ」を選択します。

3. EARファイルに含まれているプロファイルを編集します(図27-13を参照)。

図27-13 XMLファイルへのEARクラスパスの追加

4. Packagingという名前の新しいファイル・グループを追加します。「型」はPackagingのままにします。

5. アプリケーションをデプロイし、デプロイされた管理対象サーバーを再起動します。アプリケーションをデプロイしたら、Coherenceを有効にする必要があります。

27.7.3 Coherence構成の検証

Coherenceが実行中であることを確認するには、次をsetDomainEnv.shファイルに追加します。

JAVA_OPTIONS="${JAVA_OPTIONS} -Dtangosol.coherence.management=all"
export JAVA_OPTIONS

アプリケーションがデプロイされた管理対象サーバーを再起動した後、コマンドラインからjconsoleと入力し、WC_Spacesに対応するプロセスを選択してJConsoleを開き、サーバーに接続します。JConsoleの「MBean」タブでCoherenceを確認します。

また、ログ・ファイルには次のような出力があります。

2013-06-26 14:45:47.321/1278.178 Oracle Coherence GE 3.6.0.4 &lt;Info&gt;
(thread=[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default
(self-tuning)', member=n/a): Loaded cache configuration from
"zip:/oracle/app/admin/domains/webcenter/servers/WC_CustomPortal/tmp/_WL_
user/WebCenterPortalCoherence_application1_
V2.0/i092wg/APP-INF/lib/portal-coherence.jar!/content-coherence-cache-config.xml"

27.8 コンテンツ・プレゼンタ表示テンプレートのパフォーマンスの最適化

コンテンツ・プレゼンタ表示テンプレートで表示するためにコンテンツ・ノードを取得すると、ほとんどのコンテンツ・アイテム・ノード・プロパティ値はノードとともに即座に取得されますが、一部の値は後で必要な場合のみロードされます。ノード・プロパティ値の選別的なロードは、パフォーマンスの違いをもたらすほか、ユーザーや開発者に透過的です。

コンテンツ・プレゼンタ表示テンプレートの開発者は、異なるプロパティ値がロードされたことに気付いた場合、テンプレートのパフォーマンスを最適化できます。たとえば、一般的なリストの表示テンプレートの場合、ノードを最初に取得したときに即座にロードされるプロパティのみを参照して、後で必要なときにロードされるプロパティを避けると、より高速にレンダリングされます。

2番目の考慮点は、ノードの取得方法(検索による方法と親IDによるフェッチする方法)によって決まります。検索(「問合せの結果」など)のためのノード取得時には即座にロードされるプロパティが、他の取得方法(「フォルダの下のコンテンツ」など)では後でロードされる可能性があります。表27-11は、取得メカニズム別に、ノード取得時にノード・プロパティが即座にロードされるかどうかを示しています。

表27-11に示されているノード・プロパティに関する情報は、『Oracle Fusion Middleware Oracle WebCenter Content構成リファレンス』を参照してください。

表27-11 ノード取得メカニズム別のノード・プロパティのロード

OCSグローバル・プロファイル・プロパティ

ノードの初回取得時にロードするか

親IDによる取得(「フォルダの下のコンテンツ」)

検索(「問合せの結果」)

UUIDによる取得(「単一のコンテンツ・アイテム」と「アイテムのリスト」)

VaultFileSize

N

Y

Y

dCheckoutUser

Y

N

Y

dCreateDate

Y

Y

Y

dDocAccount

Y

Y

Y

dDocAuthor

Y

Y

Y

dDocName

Y

Y

Y

dDocTitle

Y

Y

Y

dDocType

Y

Y

Y

dFormat

Y

Y

Y

dID

Y

Y

Y

dInDate

Y

Y

Y

dIsCheckedOut

Y

N

Y

dOutDate

Y

Y

Y

dReleaseDate

Y

N

Y

dReleaseState

Y

N

Y

dRevClassID

Y

N

Y

dRevLabel

Y

Y

Y

dRevRank

Y

N

Y

dRevisionID

Y

Y

Y

dSecurityGroup

Y

Y

Y

dStatus

Y

N

Y

dWebExtension

Y

Y

Y

dWorkflowState

N

N

Y

idcPrimaryFile

Y

Y

Y

idcRenditions

N

N

Y

xCollectionID

Y

Y

Y

xComments

Y

Y

Y

xForceFolderSecurity

Y

Y

Y

xHidden

Y

Y

Y

xInihibitUpdate

Y

Y

Y

xReadOnly

Y

Y

Y

27.9 コンテンツ・プレゼンタのチュートリアルと例

次の補足チュートリアルと例は、コンテンツ・プレゼンタの使用方法を示します。

- 「Using Content Presenter Templates」: Site Builderでリージョン定義を構築し、(Site Studioのリージョン・テンプレートではなく)コンテンツ・プレゼンタ・テンプレートの基礎としてそのリージョン定義を使用して、そのテンプレートをPortal Frameworkアプリケーション・ページに追加する方法について説明します。
http://yonaweb.be/webcenter_tutorial/using_content_presenter_templates

- 「UCM, Site Studio and Templates」: WebCenter Portal内のコンテンツのやり取りを行うコンポーネント(コンテンツ・サーバー、Site Studioおよびコンテンツ・プレゼンタ)について説明します。
http://www.ateam-oracle.com/portal-and-content-components-part-1-ucm-site-studio-and-templates-2-of-7

- 「Content Presenter-CMIS-Complete」: コンテンツ・プレゼンタ・ベースのページや複雑なCMISおよびカスタム・テンプレートを使用して、フィルタリング可能なコンテンツ・リスト・ビューアを作成する手順を説明します。
http://www.ateam-oracle.com/content-presenter-cmis-complete

28 ドキュメントの統合

この章では、ドキュメントをPortal Frameworkアプリケーションに統合して、コンテンツをアプリケーションに追加すると同時に、実行時にドキュメントを管理、表示および検索するためにアプリケーションに組み込まれたコンテンツおよびドキュメント・タスク・フローをエンド・ユーザーに提供する方法を説明します。

注意:

WebCenter Portal Frameworkアプリケーションにコンテンツを統合するその他の方法の説明は、第24章「コンテンツの統合と公開の概要」を参照してください。

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

- 第28.1項「WebCenter Portal Frameworkアプリケーションのドキュメントの概要」

- 第28.2項「接続の設定」

- 第28.3項「ドキュメント・ツールのセキュリティの設定」

- 第28.4項「他のWebCenterサービスとドキュメント・ツールの併用」

- 第28.5項「コンテンツ・リポジトリにファイルをアップロードするためのパラメータの設定」

28.1 WebCenter Portal Frameworkアプリケーションのドキュメントの概要

ドキュメント・ツールは、フォルダとファイルへのアクセスとその追加および管理、ファイルおよびフォルダ・プロパティの構成と表示、ならびにコンテンツ・サーバー、Oracle PortalまたはSharePoint、あるいは開発環境の場合はファイル・システム・コンテンツ・リポジトリのファイルおよびフォルダ・コンテンツの検索を行うための機能を提供します。これらの機能は、ドキュメント・タスク・フロー、ドキュメント・コンポーネント(リンク、インライン・フレームおよびイメージ)、Wikiならびにブログを通して提供されます。

注意:

SharePointをコンテンツ・リポジトリとして使用するには、第25.2.3.1項「SharePoint用Oracle WebCenterアダプタのインストール」の説明に従って、SharePointアダプタのインストールが必要です。SharePointの管理は、Oracle Enterprise Manager Fusion Middleware ControlコンソールではなくWLSTコマンドを使用して行います。

ドキュメントをPortal Frameworkアプリケーションに統合するには、WebCenter Portal管理者は管理対象のドキュメントを含むコンテンツ・リポジトリへの接続を設定する必要があります。使用するコンテンツ・リポジトリで認証が必要な場合、第28.2項「接続の設定」の説明に従って、コンテンツ・リポジトリへの接続を構成する際に必ず外部アプリケーションを設定してください。

28.2 接続の設定

ドキュメント・ツールとタスク・フローを使用する前に、管理対象のドキュメントを含むコンテンツ・サーバー、Oracle PortalまたはSharePointコンテンツ・リポジトリへの接続を設定する必要があります。作成済の接続を再利用することも、新たに作成することもできます。

注意:

Oracle JDeveloperで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でEnterprise Manager Fusion Middleware Controlを使用して、後から接続を追加、削除または変更することもできます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理を参照してください。

選択されたアプリケーション・セキュリティとコンテンツ・リポジトリ接続の認証が、互換性があることが必要です。たとえば、パブリック資格証明のみが定義されている外部アプリケーションを使用するように接続が構成されている場合、アプリケーションでユーザー認証を強制する必要はありません。接続構成の詳細は、第25.2項「コンテンツ・リポジトリ接続の構成」を参照してください。

28.3 ドキュメント・ツールのセキュリティの設定

ドキュメント・タスク・フローは、コンテンツ・リポジトリ接続でサポートされているセキュリティ・オプションと同じセキュリティ・オプションをサポートしています。Oracle Content ServerやOracle Portalなどのリモート・コンテンツ・リポジトリにアクセスするため、このサービスは専用のユーザー・アカウントで外部アプリケーションを使用できます。コンテンツ・リポジトリでのセキュリティの使用の詳細は、第26.4項「コンテンツ・リポジトリ・データ・コントロールの保護」を参照してください。外部アプリケーションの使用の詳細は、第74.13項「外部アプリケーションの使用」を参照してください。

Oracle PortalやOracle Content Serverといった自らの認証を処理するコンテンツ・リポジトリを使用する場合、そのコンテンツ・リポジトリを外部アプリケーション定義と関連付けて、資格証明プロビジョニングを実行できます。共有資格証明またはパブリック資格証明なしで外部アプリケーションを使用するようにコンテンツ・リポジトリへの接続を変更できます。これを行うと、エンド・ユーザーがその資格証明を提供できるように、外部アプリケーション - パスワードの変更タスク・フローが自動的に統合されます。

既存のコンテンツ・リポジトリ接続の外部アプリケーションを登録するには:

1. 「アプリケーション・リソース」ペインで、接続名を右クリックして「プロパティ」を選択します。

2. 「コンテンツ・リポジトリ接続の編集」ダイアログ・ボックスで、「認証」の下で「外部アプリケーション」を選択します(図28-1を参照)。

図28-1 「コンテンツ・リポジトリ接続」ダイアログでの「外部アプリケーション」の選択

3. 緑色のプラス記号(+)をクリックして、外部アプリケーションの登録ウィザードを開始します。

4. 「名前」ページで、「アプリケーション名」と「アプリケーション表示名」を入力し(図28-2)、「次へ」をクリックします。

図28-2 外部アプリケーションのネーミング

5. 「一般」ページの「認証の詳細」の下で、「認証方式」リストから「BASIC」を選択し(図28-3)、「次へ」をクリックします。

図28-3 「Basic」認証方式の選択

6. 「追加フィールド」ページで、「次へ」をクリックします。

7. 「共有資格証明」ページで、「次へ」をクリックします。

8. 「パブリック資格証明」ページで、「パブリック資格証明を指定します」を選択し、コンテンツ・リポジトリの「ユーザー名」と「パスワード」を入力します(図28-4)。

図28-4 パブリック資格証明の指定

9. 「終了」をクリックします。これで、外部アプリケーションを使用して認証するように接続が設定されます(図28-5)。

図28-5 新しい外部アプリケーションの使用

10. 「コンテンツ・リポジトリ接続の編集」ダイアログ・ボックスで、「OK」をクリックします。「アプリケーション・リソース」パネルに、その外部アプリケーションが表示されます(図28-6)。

図28-6 「アプリケーション・リソース」パネルの外部アプリケーション

セキュリティを適用しなかった場合、コンテンツ・リポジトリがコンテンツへのアクセスにログインを要求すると、ユーザーは認証できません。実行時にパブリック・コンテンツのみが表示されます。

28.4 他のWebCenterサービスとドキュメント・ツールの併用

ドキュメント・ツールは、他の様々なWebCenterサービスと併用できます。たとえば、コンテンツ・リポジトリのドキュメントにタグを追加して、アプリケーション全体にわたって検索し、その結果にドキュメントを取得したり、コンテンツ・リポジトリへの最近の変更を追跡できます。

タグ・サービスとドキュメント・ツールの併用方法の例は、第44.3.3項「ページにタグを表示するオプションの方法」を参照してください。

これらのサービスを併用する方法の詳細は、第4章「WebCenter Portalのツールとサービス用アプリケーションの準備」を参照してください。

注意:

ドキュメント・ツールと検索サービスを統合すると、検索サービスによってすべてのコンテンツ・リポジトリ接続から結果が返されます。

28.5 コンテンツ・リポジトリにファイルをアップロードするためのパラメータの設定

ドキュメント・マネージャ、ドキュメント・エクスプローラおよびフォルダ・ビューア・タスク・フローによって、コンテンツ・リポジトリにファイルをアップロードできます。WebCenter Portal FrameworkはApache MyFaces Trinidadを使用して、ブラウザからアプリケーション・サーバーへのファイルのアップロードを処理します。

Apache MyFaces Trinidadのデフォルト設定を変更するために、web.xmlファイルに3つのパラメータを追加できます。このファイルを編集するには、アプリケーションのViewControllerプロジェクトを開きます。「Webコンテンツ」で、web.xmlファイルを開きます。「概要」で、「アプリケーション」→「コンテキスト初期化パラメータ」に移動し、緑色のプラス記号(+)をクリックしてパラメータとその値を追加するか(表28-1の説明を参照)、または単純に「ソース」ビューでコードを更新します。変更を加えたら、web.xmlファイルを保存して、Oracle JDeveloperを再起動します。

表28-1 Apache MyFaces Trinidadのパラメータ

パラメータ

説明

org.apache.myfaces.trinidad.UPLOAD_MAX_MEMORY

1つのファイルがアップロード時に使用できる最大メモリー量(バイト単位)

org.apache.myfaces.trinidad.UPLOAD_MAX_DISK_SPACE

1つのファイルがアップロード時に使用できる最大ディスク領域(バイト単位)

org.apache.myfaces.trinidad.UPLOAD_TEMP_DIR

アップロードされるファイルを一時的に格納するディレクトリ

詳細は、Apache MyFaces Trinidadのドキュメント(http://myfaces.apache.org/trinidad/devguide/fileUpload.html)を参照してください。

29 ポータル・ページへのコンテンツ・タスク・フローおよびドキュメント・コンポーネントの追加

この章では、コンテンツ・タスク・フローおよびドキュメント・コンポーネントを使用してPortal Frameworkアプリケーションでページにコンテンツを追加する方法について説明します。Portal Frameworkアプリケーションでは、様々な方法でコンテンツを表示するために、コンテンツ・プレゼンタまたはドキュメント・タスク・フローを使用して、1つ以上の接続コンテンツ・リポジトリからアプリケーションにコンテンツを追加できます。アプリケーションの開発では、コンテンツ・タスク・フローを使用して、アプリケーションのエンド・ユーザーと同じ方法で、コンテンツを表示、編集および管理できます。

注意:

- WebCenter Portal Frameworkアプリケーションにコンテンツを統合するその他の方法の説明は、第24章「コンテンツの統合と公開の概要」を参照してください。

- コンテンツ・タスク・フローのコンテンツの表示、編集および管理の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のドキュメントの使用に関する項を参照してください。

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

- 第29.1項「コンテンツ・プレゼンタ・タスク・フローの理解」

- 第29.2項「ドキュメント・タスク・フローの理解」

- 第29.3項「ドキュメント・コンポーネントの理解」

- 第29.4項「選択したフォルダまたはファイルのページへの追加」

- 第29.5項「コンテンツ・タスク・フローのページへの追加」

- 第29.6項「コンテンツ・タスク・フローのパラメータの変更」

- 第29.7項「コンテンツ・タスク・フローのパラメータ」

29.1 コンテンツ・プレゼンタ・タスク・フローの理解

コンテンツ・プレゼンタにより、WebCenter Portalアプリケーションでコンテンツの選択およびプレゼンテーションを正確にカスタマイズできます。

接続されるコンテンツ・リポジトリがContent Serverであり、WebCenter Portal管理者が前提条件構成を完了させた場合のみ、コンテンツ・プレゼンタ・タスク・フローが利用できます。

関連項目:

- Oracle Fusion Middleware Oracle WebCenter Portalの管理のコンテンツ・サーバーの構成の前提条件に関する項

- 第25.2.1項「Oracle Content Serverアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法」

コンテンツ・プレゼンタ・タスク・フローにより、コンテンツの単一アイテム、フォルダ下のコンテンツ、アイテムのリストまたはコンテンツに対する問合せを選択するか、パーソナライズ・コンダクタのシナリオの結果に基づいてコンテンツを選択してから、WebCenter Portalアプリケーションのページにコンテンツをレンダリングするテンプレートを選択できます。

コンテンツ・プレゼンタでは表示されるコンテンツの追加や管理においてドキュメント・ツールに依存しません。

コンテンツ・プレゼンタ・タスク・フローをページに追加する場合、第29.4項「選択したフォルダまたはファイルのページへの追加」および第29.5項「コンテンツ・タスク・フローのページへの追加」を参照してください。

注意:

コンテンツのアイテムを表示するためにコンテンツ・プレゼンタ・タスク・フローを含むページ・テンプレートにページが基づく場合、ページ・テンプレート開発者は、ページ・テンプレートのコンテンツを表示するために、次のように手動でタスク・フロー・プロパティを変更する必要があります。

- datasource: connection_name#dDocName:content_ID

- datasourceType: dsTypeSingleNode

- taskFlowInstId: 一意の識別子

コンテンツ・プレゼンタ・タスク・フローの詳細は、表29-4「コンテンツ・プレゼンタ・タスク・フローのパラメータ」を参照してください。

ページ・テンプレートの作成の詳細は、第11.3項「ページ・テンプレートの作成」を参照してください。

29.2 ドキュメント・タスク・フローの理解

ドキュメント・タスク・フローは、Wikiおよびブログを含めて、Portal Frameworkアプリケーションでページ上にフォルダおよびファイルを表示するための様々なフォーマットを提供しています。アプリケーションに合ったタスク・フローを選択することによって、Content Server、Oracle PortalまたはSharePointコンテンツ・リポジトリにあるフォルダとファイルへのアクセス、追加および管理を行う機能、それらのファイルとフォルダのプロパティを構成し表示する機能、およびファイルとフォルダのコンテンツを検索する機能が提供されます。

注意:

SharePointをコンテンツ・リポジトリとして使用するには、第25.2.3.1項「SharePoint用Oracle WebCenterアダプタのインストール」の説明に従って、SharePointアダプタのインストールが必要です。SharePointの管理は、Oracle Enterprise Manager Fusion Middleware ControlコンソールではなくWLSTコマンドを使用して行います。

Portal Frameworkアプリケーションでドキュメント・タスク・フローをページに追加するには、最初にWebCenter Portal管理者がコンテンツ・リポジトリ接続を確立することにより、ドキュメント・ツールをアプリケーションに統合する必要があります。詳細は、第28章「ドキュメントの統合」および第25章「コンテンツ・リポジトリ接続の構成」を参照してください。

ドキュメント・タスク・フローとドキュメント・コンポーネント(リンク、プレビューおよびイメージなど)を使用すると、コンテンツをアプリケーションに追加し、アプリケーションに組み込まれたドキュメント・タスク・フローとコンテンツもエンド・ユーザーに用意して、実行時にドキュメントの管理、表示および検索ができます。

表29-1に、ドキュメント・タスク・フローの概要を示します。

表29-1 ドキュメント・タスク・フロー

フォルダおよびファイルのリスト

個々のフォルダ

個々のファイル

ドキュメント・エクスプローラ・タスク・フロー。2つのペインにフォルダおよびファイルを表示し、ドキュメント・ナビゲータおよびフォルダ・ビューア・タスク・フローの機能を結合します。また、Windows Explorerユーザーが使い慣れたインタフェースにより、インプレースでのプレビューおよび編集機能、堅牢な管理機能を提供します。サイズは中からフル・ページの幅です。図29-1を参照してください。

X

X

ドキュメント・リスト・ビューア・タスク・フロー。単一のペインにフラット・リストとしてフォルダおよびファイルを表示します。個別のウィンドウおよびいくつかの管理機能で、プレビューおよび編集を可能にします。サイズは狭から中ページの幅です。図29-2を参照してください。

X

X

ドキュメント・マネージャ・タスク・フロー。layoutプロパティ(explorer、tableまたはtreeTable)によって指定されるフォルダおよびファイルを表示します。explorerレイアウトはドキュメント・エクスプローラ・タスク・フローと同一のもので、showDocuments、showFoldersおよびtreeNavCollapsedプロパティを持ちません。図29-3、図29-4および図29-5を参照してください。

X

X

ドキュメント・ナビゲータ・タスク・フロー。単一ペインにフォルダおよびファイルのネストされた階層を表示し、全階層を表示するためのフォルダの展開および縮小を提供します。サイズは狭から中ページの幅です。図29-6を参照してください。

X

X

フォルダ・ビューア・タスク・フロー。単一ペインにフラット・リストとしてフォルダのコンテンツを表示し、Windowsユーザーが使い慣れた簡単なインタフェースにより、インプレースでのプレビューおよび編集機能、堅牢なドキュメント管理機能を提供します。サイズは中からフル・ページの幅です。図29-7を参照してください。

X

X

最近のドキュメント・タスク・フロー。現在のフォルダで、最近作成されたファイルまたは変更されたファイルのリストを表示します。図29-8を参照してください。

X

ドキュメント・ビューア・タスク・フロー。ファイルのプレビューを表示するか、プレビューをサポートしないファイルのファイル・プロパティを表示します。図29-9および図29-10を参照してください。

X脚注 1

X

ドキュメント・ミニ・プロパティ・タスク・フロー。読取り専用ビューでファイルの基本プロパティを表示します。図29-11を参照してください。

X^1

X

ドキュメント・プロパティ・タスク・フロー。ファイルの基本プロパティおよびアドバンスト・プロパティに加えて、プロパティ値を変更するための「編集」ボタンを表示します。図29-12を参照してください。

X^1

X

リッチ・テキスト・エディタ・タスク・フロー。リッチ・テキスト・エディタでHTMLまたはWikiドキュメントを表示します。

X

X

ドキュメント・アップロード・タスク・フロー。ユーザーが新しいドキュメントをページにアップロードできる「アップロード」ダイアログを表示します。

X

X

ドキュメント・バージョン履歴・タスク・フロー。ファイルのバージョンのリストを表示し、選択したバージョンを削除できます。図29-13および図29-14を参照してください。

X

AutoVueタスク・フロー。ファイルのAutoVueマークアップをハイパーリンク付きのマークアップ名の表に表示します(『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のOracle AutoVueを使用したドキュメントのコラボレーションに関する項を参照)。

X

脚注 1 ドキュメント・ビューア、ドキュメント・ミニ・プロパティまたはドキュメント・プロパティ・タスク・フローでフォルダ情報を表示するには、タスク・フローのresourceIDプロパティにターゲット・フォルダのIDを設定します。第29.7項「コンテンツ・タスク・フローのパラメータ」を参照してください。

ドキュメント・タスク・フローをページに追加する場合、第29.4項「選択したフォルダまたはファイルのページへの追加」および第29.5項「コンテンツ・タスク・フローのページへの追加」を参照してください。

各ドキュメント・タスク・フローの詳細は、次のリンクをクリックしてOracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の関連する項を参照してください。

- ドキュメント・エクスプローラ・タスク・フローの理解
図29-1に、ドキュメント・エクスプローラ・タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第29.7.2項「ドキュメント・エクスプローラ・タスク・フローのパラメータ」を参照してください。

図29-1 ドキュメント・エクスプローラ・タスク・フロー

- ドキュメント・リスト・ビューア・タスク・フローの理解
図29-2に、ドキュメント・リスト・ビューア・タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第29.7.3項「ドキュメント・リスト・ビューア・タスク・フローのパラメータ」を参照してください。

図29-2 ドキュメント・リスト・ビューア・タスク・フロー

- ドキュメント・マネージャ・タスク・フローの理解
図29-3、図29-4および図29-5に、ドキュメント・マネージャ・タスク・フローの3つの異なるレイアウトの例を示します。explorerレイアウト(デフォルト)は、プロパティshowDocuments、showFoldersおよびtreeNavCollapsedを除いて、ドキュメント・エクスプローラ・タスク・フローの場合と同じです。このタスク・フローのプロパティ設定の詳細は、第29.7.4項「ドキュメント・マネージャ・タスク・フローのパラメータ」を参照してください。

図29-3 ドキュメント・マネージャ・タスク・フロー: エクスプローラのレイアウト

図29-4 ドキュメント・マネージャ・タスク・フロー: 表のレイアウト

図29-5 ドキュメント・マネージャ・タスク・フロー: ツリー表のレイアウト

- ドキュメント・ナビゲータ・タスク・フローの理解
図29-6に、ドキュメント・ナビゲータ・タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第29.7.5項「ドキュメント・ナビゲータ・タスク・フローのパラメータ」を参照してください。

図29-6 ドキュメント・ナビゲータ・タスク・フロー

- フォルダ・ビューア・タスク・フローの理解
図29-7に、フォルダ・ビューア・タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第29.7.6項「フォルダ・ビューア・タスク・フローのパラメータ」を参照してください。

図29-7 フォルダ・ビューア・タスク・フロー

- 最近のドキュメント・タスク・フローの理解
図29-7に、最近のドキュメント・タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第29.7.7項「最近のドキュメント・タスク・フローのパラメータ」を参照してください。

図29-8 最近のドキュメント・タスク・フロー

- ドキュメント・ビューア・タスク・フローの理解
図29-9および図29-10に、異なるファイル・タイプのドキュメント・ビューア・タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第29.7.8項「ドキュメント・ビューア・タスク・フローのパラメータ」を参照してください。

図29-9 Wordファイルのドキュメント・ビューア・タスク・フロー

図29-10 Wikiドキュメントのドキュメント・ビューア・タスク・フロー

- ドキュメント・ミニ・プロパティ・タスク・フローの理解
図29-11に、ドキュメント・ミニ・プロパティ・タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第29.7.9項「ドキュメント・ミニ・プロパティ・タスク・フローのパラメータ」を参照してください。

図29-11 ドキュメント・ミニ・プロパティ・タスク・フロー

- ドキュメント・プロパティ・タスク・フローの理解
図29-12に、ドキュメント・プロパティ・タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第29.7.10項「ドキュメント・プロパティ・タスク・フローのパラメータ」を参照してください。

図29-12 ドキュメント・プロパティ・タスク・フロー

- ドキュメント・バージョン履歴タスク・フローの理解
図29-13および図29-14に、horizontalLayoutプロパティにそれぞれ水平方向、垂直方向の形式が設定されたドキュメント・バージョン履歴タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第29.7.13項「ドキュメント・バージョン履歴・タスク・フローのパラメータ」を参照してください。

図29-13 ファイルのバージョン履歴タスク・フロー: 垂直レイアウト

図29-14 ファイルのバージョン履歴タスク・フロー: 水平レイアウト

29.3 ドキュメント・コンポーネントの理解

ドキュメント・ツールは、ポータル・ページにドキュメント・コンポーネントを追加するための機能を提供します。第29.4項「選択したフォルダまたはファイルのページへの追加」に記載されているように、選択したフォルダまたはファイル(図29-15)のコンテナとしてドキュメント・コンポーネントをページに追加できます。

図29-15 ポータル・ページへのファイルの追加

ドキュメント・コンポーネントにより、ファイル・タイプに応じて、様々な方法でページ上に個々のファイルを表示できます。

- リンクでは、選択したファイルの名前がリンクとして表示され、エンド・ユーザーがクリックするとネイティブ・アプリケーションでファイル・コンテンツを表示できます(図29-16)。

図29-16 リンク・コンポーネント(Microsoft Wordファイル用)

- インライン・フレームは、選択したファイルのコンテンツをプレビューとしてページに表示します(図29-17)。

図29-17 インライン・フレーム・コンポーネント(HTMLファイル用)

- イメージは、選択したファイルをイメージとしてページに表示します(図29-18)。

図29-18 イメージ・コンポーネント(JPEGファイル用)

Portal Frameworkアプリケーションでページにドキュメント・コンポーネントを追加するには、第28章「ドキュメントの統合」に記載されているように、まずコンテンツ・リポジトリへの接続を確立することによりドキュメント・ツールをアプリケーションに統合する必要があります。

表29-2は、様々なコンテンツ・タイプで使用可能なドキュメント・コンポーネントを示しています。

表29-2 フォルダおよびファイルのコンポーネント

コンテンツ・タイプ

ドキュメント・コンポーネント

フォルダ

リンク(ADF実行リンク)

様々なタイプのドキュメント(XML、PDF、JAVA、TXT、DOC、XLS、HTM)

リンク(ADF実行リンク)

ブラウザでレンダリングできるドキュメント(HTML、Flash、PDFおよびイメージ)

インライン・フレーム(ADFインライン・フレーム)

イメージ(PNG、JPG、GIF)

リンク(ADF実行リンク)

インライン・フレーム(ADFインライン・フレーム)

イメージ(ADFイメージ)

これらのドキュメント・コンポーネントのいずれかを使用してフォルダまたはファイルを表示する場合、第29.4項「選択したフォルダまたはファイルのページへの追加」を参照してください。

29.4 選択したフォルダまたはファイルのページへの追加

この項では、図29-19および図29-20に示すように、選択したフォルダまたはファイルの必要なコンテナを選択することによって、接続されているコンテンツ・リポジトリから個々のフォルダまたはファイルをページに表示する方法を説明します。特定のフォルダまたはファイルに依存せずにコンテンツ・タスク・フローをページに追加する場合、第29.5項「コンテンツ・タスク・フローのページへの追加」を参照してください。

図29-19 ポータル・ページへのフォルダの追加

図29-20 ポータル・ページへのファイルの追加

表29-3に、ポータル・ページでのフォルダおよびファイルの表示に使用可能なすべてのコンテナを示します。

表29-3 個々のフォルダおよびファイルをページに追加するためのコンテナ

ルート・フォルダ

フォルダ

個々のファイル

- ドキュメント・エクスプローラ

- ドキュメント・リスト・ビューア

- ドキュメント・マネージャ

- ドキュメント・ナビゲータ

- フォルダ・ビューア

- 最近のドキュメント

- ドキュメント・ビューア脚注 1

- ドキュメント・ミニ・プロパティ^1

- ドキュメント・プロパティ^1

- ドキュメント・アップロード

- リッチ・テキスト・エディタ

- コンテンツ・プレゼンタ

- ドキュメント・エクスプローラ

- ドキュメント・リスト・ビューア

- ドキュメント・マネージャ

- ドキュメント・ナビゲータ

- フォルダ・ビューア

- ドキュメント・ビューア^1

- ドキュメント・ミニ・プロパティ^1

- ドキュメント・プロパティ^1

- ドキュメント・アップロード

- リッチ・テキスト・エディタ

- コンテンツ・プレゼンタ

- ドキュメント・ビューア

- ドキュメント・ミニ・プロパティ

- ドキュメント・プロパティ

- リッチ・テキスト・エディタ

- ドキュメント・アップロード

- ドキュメント・バージョン履歴

- AutoVue

- リンク・コンポーネント

- インライン・フレーム・コンポーネント

- イメージ・コンポーネント

脚注 1 ドキュメント・ビューア、ドキュメント・ミニ・プロパティまたはドキュメント・プロパティ・タスク・フローでフォルダ情報を表示するには、タスク・フローのresourceIDパラメータにターゲット・フォルダのIDを設定します。第29.7項「コンテンツ・タスク・フローのパラメータ」を参照してください。

表29-3の各コンテナの詳細は、第29.1項「コンテンツ・プレゼンタ・タスク・フローの理解」、第29.2項「ドキュメント・タスク・フローの理解」および第29.3項「ドキュメント・コンポーネントの理解」を参照してください。

注意:

コンテンツ・リポジトリに保存されているアイテムがページにドロップされると、Portal Frameworkアプリケーションは、キャッシュされたコピー(使用可能な場合)をブラウザに表示する前にそのコンテンツが最新かどうかを確認するようにブラウザに指示します。デフォルトのコンテンツ検証プロセスは、リアルタイムのコンテンツ交換を必要とするコラボレーション・ユース・ケースをサポートします。

静的コンテンツまたは頻繁に変更されないコンテンツでは、コンテンツ検証チェックにより不要なパフォーマンスのオーバーヘッドが発生します。静的なコンテンツについては、次のことをお薦めします。

- Oracle Content Server: コンテンツ・プレゼンタを使用して、Content Serverに格納された静的コンテンツを表示します。コンテンツ・プレゼンタには、最新リリースのバージョンのコンテンツのみが表示されます。ワークフロー内の未リリースのコンテンツは表示されません。

- SharePointなど他のコンテンツ・リポジトリの場合、Web層のmod_wl_ohs構成ファイル(mod_wl_ohs.conf)を編集することにより、デフォルトのコンテンツ・キャッシュ設定をオーバーライドするように管理者に依頼してください。詳細は、Oracle Technology Network(http://www.oracle.com/technetwork/middleware/webcenter/owcs-ps3-sharepoint-wcs-wp-335282.pdf)において、WebCenter SpacesとのSharePoint 2007アダプタの統合のホワイト・ペーパーでキャッシュ制御レスポンス・ヘッダーの設定に関する項を参照してください。

Portal Frameworkアプリケーションで、選択したフォルダまたはファイルをページに追加するには(第6.1項「新しいWebCenter Portal Frameworkアプリケーションの作成」を参照):

1. 第4.2.1項「ツールとサービスを利用するようにアプリケーションを準備する方法」の手順に従い、セキュリティを実装します。

2. ドキュメント・タスク・フローを追加する場合、アプリケーションにドキュメント・ツールを追加するコンテンツ・リポジトリ接続を作成します(第28章「ドキュメントの統合」を参照)。

3. タスク・フローを追加するアプリケーションでページを作成または開きます(第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」を参照)。

4. フォルダまたはファイルを表示するタスク・フローをアプリケーションのエンド・ユーザーが編集することを許可するかどうかを検討してください。

- 実行時のページ編集を有効にするには、第18章「コンポーザを使用したページの実行時編集の有効化」を参照してください。

- アプリケーションのエンド・ユーザーが「編集」操作を使用してコンテンツ・プレゼンタまたはドキュメント・リスト・ビューア・タスク・フローをカスタマイズすることを許可するには、Show Detail Frameコンポーネント内にタスク・フローを追加します(第18.1.6項「Show Detail Frameコンポーネントを使用したコンポーネントのカスタマイズの有効化方法」を参照)。

5. 「アプリケーション・リソース」パネルで、「接続」、「コンテンツ・リポジトリ」の順に移動します。

6. 接続の名前を確認した後、必要に応じてそれを開いて、個々のフォルダまたはファイルに移動します。

7. ページにフォルダまたはファイルをドラッグし、マウス・ボタンを離すと、使用可能なタスク・フローおよびドキュメント・コンポーネントのメニューが表示されます。図29-21(ルート・フォルダ)、図29-22(サブフォルダ)および図29-23(個々のファイル)を参照してください。

図29-21 ポータル・ページへのコンテンツ・リポジトリ・ルート・フォルダの追加

図29-22 ポータル・ページへのサブフォルダの追加

図29-23 ポータル・ページへのファイルの追加

8. 使用するコンテンツ・タスク・フローまたはドキュメント・コンポーネントを選択します。ページに追加するフォルダまたはファイルで特定のタスク・フローがサポートされない場合、このメニューにタスク・フローは表示されません。

注意:

コンテンツ・プレゼンタ・タスク・フローは、接続するコンテンツ・リポジトリがコンテンツ・サーバーである場合にのみ使用可能です。コンテンツ・プレゼンタ・タスク・フローを選択すると、フォルダまたはファイルが該当タイプのデフォルト表示テンプレートで表示されます。

9. タスク・フローを選択すると表示される「タスク・フロー・バインディングの編集」ダイアログで、「OK」をクリックしてデフォルトのタスク・フロー・パラメータを受け入れるか、必要に応じてパラメータを変更します。詳細は、第29.7項「コンテンツ・タスク・フローのパラメータ」を参照してください。

10. ページとページ定義ファイルを保存し、ページをブラウザで実行します。これは、ページ(ページ定義ファイルではない)を右クリックし、「実行」を選択することで行います。

コンテンツ・タスク・フローのコンテンツの表示、編集および管理の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のポータルでのコンテンツの使用に関する項を参照してください。

29.5 コンテンツ・タスク・フローのページへの追加

ページにフォルダやファイルを含まない空のコンテンツ・タスク・フローを追加する場合があります。たとえば、コンテンツ・リポジトリ接続が存在しない場合、ターゲット・アイテムに動的にバインドするパラメータとしてEL式を使用する場合などがあります。

ニーズに最適なタスク・フローを選択するのに役立つ各コンテンツ・タスク・フローの詳細は、第24章「コンテンツの統合と公開の概要」を参照してください。

Portal Frameworkアプリケーションでページにコンテンツ・タスク・フローを追加するには:

1. 第4.2.1項「ツールとサービスを利用するようにアプリケーションを準備する方法」の手順に従い、セキュリティを実装します。

2. ドキュメント・タスク・フローを追加する場合、第28章「ドキュメントの統合」を参照してください。

3. タスク・フローを追加するアプリケーションでページを作成または開きます(第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」を参照)。

4. タスク・フローをページに追加する前に、アプリケーションのエンド・ユーザーにタスク・フローを編集することを許可するかどうかを検討してください。

- 実行時のページ編集を有効にするには、第18章「コンポーザを使用したページの実行時編集の有効化」を参照してください。

- アプリケーションのエンド・ユーザーが「編集」操作を使用してコンテンツ・プレゼンタまたはドキュメント・リスト・ビューア・タスク・フローをカスタマイズすることを許可するには、Show Detail Frameコンポーネント内にタスク・フローを追加します(第18.1.6項「Show Detail Frameコンポーネントを使用したコンポーネントのカスタマイズの有効化方法」を参照)。

5. 「リソース・パレット」で、「カタログ」、「WebCenter Portal - サービス・カタログ」の順に開きます。「タスク・フロー」で、該当するコンテンツ・タスク・フローを選択し、ページにドラッグします(図29-24)。

図29-24 JSFページへのスタンドアロン・ドキュメント・タスク・フローの追加

注意:

アプリケーションのエンド・ユーザーが「編集」操作を使用してコンテンツ・プレゼンタまたはドキュメント・リスト・ビューア・タスク・フローをカスタマイズすることを許可するには、Show Detail Frameコンポーネント内にタスク・フローをドラッグします(第18.1.6項「Show Detail Frameコンポーネントを使用したコンポーネントのカスタマイズの有効化方法」を参照)。

注意:

コンテンツ・プレゼンタの表示テンプレートを使用してWikiページをPortal Frameworkアプリケーションで表示すると、デフォルトでそのWikiページ内のリンクがドキュメント・ビューアで表示されます。コンテンツ・プレゼンタを使用してWikiページのリンクを表示する場合、adf-config.xmlファイルを編集する必要があります。詳細は、第30.3.5項「コンテンツ・プレゼンタでのWikiページ・リンクの表示」を参照してください。

6. 表示されたメニューから、「リージョン」を選択して「タスク・フロー・バインディングの編集」ダイアログを開きます(図29-25)。

図29-25 ドキュメント・エクスプローラ・タスク・フローに対するパラメータの指定

7. 「タスク・フロー・バインディングの編集」ダイアログで、「OK」をクリックしてデフォルトのタスク・フロー・パラメータを受け入れるか、必要に応じてパラメータを変更します。詳細は、第29.7項「コンテンツ・タスク・フローのパラメータ」を参照してください。

8. ページとページ定義ファイルを保存し、ページをブラウザで実行します。これは、ページ(ページ定義ファイルではない)を右クリックし、「実行」を選択することで行います。

コンテンツ・タスク・フローをページに追加した後、必要に応じて後でパラメータを変更できます。第29.6項「コンテンツ・タスク・フローのパラメータの変更」を参照してください。

コンテンツ・タスク・フローのコンテンツの表示、編集および管理の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のポータルでのコンテンツの使用に関する項を参照してください。

注意:

タスク・フローに対するカスタム・アクションの追加の詳細は、第20.3.2項「タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法」を参照してください。

注意:

デフォルトでは、タスク・フローは実行時に全画面に表示されます。このレイアウトを変更するためにADFレイアウト・コンポーネントを使用できます。ADFレイアウト・コンポーネントの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』を参照してください。

29.6 コンテンツ・タスク・フローのパラメータの変更

リージョンを作成した後、コンテンツ・タスク・フローのパラメータを変更するには:

1. ページの「バインディング」ビューに移動します(「ソース」タブの横にある「バインディング」タブをクリックします)。

2. 「実行可能ファイル」の下で、追加したタスク・フローを選択します。図29-26に、「実行可能ファイル」セクションでのドキュメント・リスト・ビューア・タスク・フローの例を示します。

図29-26 「バインディング」ビューでのドキュメント・リスト・ビュー・タスク・フロー

3. 「実行可能ファイル」という見出しの横にある鉛筆アイコンをクリックして、「タスク・フロー・バインディングの編集」ダイアログを表示します。

4. 「タスク・フロー・バインディングの編集」ダイアログで、タスク・フローのパラメータ設定を指定します。詳細は、第29.7項「コンテンツ・タスク・フローのパラメータ」を参照してください。

注意:

コンテンツ・プレゼンタ・タスク・フローの場合:

- 「コンテンツ・プレゼンタ構成」ダイアログを実行時に使用してアプリケーションのエンド・ユーザーがコンテンツと表示テンプレートを選択できるようにする場合、taskFlowInstIdを除いてすべてのパラメータ値を空白にできます。アプリケーションに一意なタスク・フロー・インスタンスIDを入力します(たとえば、contentPresenterInstance1)。

- コンテンツおよび表示テンプレートを指定する場合、非UTF-8文字コードを使用してエンコードされたファイルで、コンテンツ・プレゼンタが非ASCII文字をサポートしないことに注意してください。ユーザーがそのようなファイルをコンテンツ・プレゼンタでプレビューすると、非ASCII文字は文字化けして表示されます。

図29-27 タスク・フロー・バインディング・パラメータ

5. 「OK」をクリックして、パラメータを追加します。

29.7 コンテンツ・タスク・フローのパラメータ

各コンテンツ・タスク・フローは、独自のパラメータ・セットを持ちます。タスク・フローをページに追加する場合、こうした値を構成します。

次の項では、コンテンツ・タスク・フローのパラメータについて説明します。

- 第29.7.1項「コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート」

- 第29.7.2項「ドキュメント・エクスプローラ・タスク・フローのパラメータ」

- 第29.7.3項「ドキュメント・リスト・ビューア・タスク・フローのパラメータ」

- 第29.7.4項「ドキュメント・マネージャ・タスク・フローのパラメータ」

- 第29.7.5項「ドキュメント・ナビゲータ・タスク・フローのパラメータ」

- 第29.7.6項「フォルダ・ビューア・タスク・フローのパラメータ」

- 第29.7.7項「最近のドキュメント・タスク・フローのパラメータ」

- 第29.7.8項「ドキュメント・ビューア・タスク・フローのパラメータ」

- 第29.7.9項「ドキュメント・ミニ・プロパティ・タスク・フローのパラメータ」

- 第29.7.10項「ドキュメント・プロパティ・タスク・フローのパラメータ」

- 第29.7.11項「リッチ・テキスト・エディタ・タスク・フローのパラメータ」

- 第29.7.12項「ドキュメント・アップロード・タスク・フローのパラメータ」

- 第29.7.13項「ドキュメント・バージョン履歴・タスク・フローのパラメータ」

29.7.1 コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート

コンテンツ・プレゼンタ・タスク・フローは、接続するコンテンツ・リポジトリがコンテンツ・サーバーである場合に使用可能です。このタスク・フローでは、即時利用可能な表示テンプレートまたはカスタム表示テンプレートで選択ドキュメントを表示します。

関連項目:

- 第29.1項「コンテンツ・プレゼンタ・タスク・フローの理解」

- 第29.5項「コンテンツ・タスク・フローのページへの追加」

表29-4に、コンテンツ・プレゼンタ・タスク・フローのパラメータを示します。表29-5および表29-6は、templateViewパラメータおよびtemplateCategoryパラメータの値として指定できる単一および複数のコンテンツ・アイテムについて即時利用可能な表示テンプレートを示しています。

注意:

コンテンツおよび表示テンプレートを指定する場合、非UTF-8文字コードを使用してエンコードされたファイルで、コンテンツ・プレゼンタが非ASCII文字をサポートしないことに注意してください。ユーザーがそのようなファイルをコンテンツ・プレゼンタでプレビューすると、非ASCII文字は文字化けして表示されます。

「コンテンツ・プレゼンタ構成」ダイアログを実行時に使用してアプリケーションのエンド・ユーザーがコンテンツと表示テンプレートを選択できるようにする場合、taskFlowInstIdを除いてすべてのパラメータ値を空白にできます。アプリケーションに一意なタスク・フロー・インスタンスIDを入力します(たとえば、contentPresenterInstance1)。

実行時に、適切な権限を持つエンド・ユーザーが編集可能なページでコンテンツ・プレゼンタ・タスク・フローのパラメータを次の2つの方法で編集できます。

- タスク・フローで構成の「編集」アイコンをクリックして、コンテンツおよび表示テンプレートを指定できる「コンテンツ・プレゼンタ構成」ダイアログを表示します。実行時の「コンテンツ・プレゼンタ構成」ダイアログの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「コンテンツ・プレゼンタを使用したコンテンツの公開」の章を参照してください。

- タスク・フローのプロパティの「編集」アイコンをクリックして、タスク・フローのパラメータを設定および変更できる「コンポーネント・プロパティ」ダイアログを表示します。この方法で設定するパラメータは一般に、Portal Frameworkアプリケーションを作成する開発者による設計時の使用、またはパラメータをEL式にバインドする高度なユーザーを想定しています。エンド・ユーザーが「コンポーネント・プロパティ」ダイアログでパラメータ値を変更すると、「コンテンツ・プレゼンタ構成」ダイアログで指定した値が新しい値によりオーバーライドされます。

表29-4 コンテンツ・プレゼンタ・タスク・フローのパラメータ

パラメータ

説明

datasource

コンテンツのデータ・ソース。この値は、datasourceTypeの値に依存します。

- datasourceType = dsTypeSingleNodeである場合、次のフォーマットで単一のドキュメント・ノード識別子をdatasourceに設定します。
connection_name#dDocName:content_id

例: xmlns.oracle.com#dDocName:STAN_IDC-007619

- datasourceType = dsTypeFolderContentsである場合、次のフォーマットで単一のフォルダ・ノード識別子をdatasourceに設定します。
connection_name#dCollectionID:collection_id

例: xmlns.oracle.com#dCollectionID:45535

- datasourceType = dsTypeQueryExpressionである場合、CMIS検索式をdatasourceに設定します。
注意: CMIS問合せをdatasourceとして使用するには、有効なtaskFlowInstIdが必要です。

例:

select * from cmis:document where cmis:name like \'test%\'

connectionName=connection_name#select * from cmis:document where cmis:createdBy = \'weblogic\'

注意: connectionNameを指定しない場合、プライマリ接続が使用されます。

問合せのフォーマット方法と例の詳細は、『Oracle Fusion Middleware Content Management REST Service開発者ガイド』を参照してください。

- datasourceType = dsTypeMultiNodeである場合、次のフォーマットでカンマ区切りの一連のドキュメント・ノード識別子をdatasourceに設定します。
connection_name#dDocName:content_id, connection_name#dDocName:content_id, ...

例: myconn#dDocName:DOCUMENT_ID_12345,myconn#dDocName:DOCUMENT_ID_56789

- datasourceType = dsTypeScenarioResultsである場合、次のフォーマットでシナリオを参照するようにdatasourceを設定します。
conductor-connection-name=conductor_conn_name,namespace=scenario_namespace,scenario-name=scenario_name,inputparm1=value1,inputparm2=value2, ...

例:

conductor-connection-name=ConductorServiceLocal,namespace=CPNamespace,scenario-name=GetRelatedDocsScenario,topic=outdoors,interests=hiking

ここで:

connection_name = コンテンツ・リポジトリ接続の名前。

content_id = コンテンツ・サーバーでアイテムのコンテンツ情報ページに指定されたコンテンツのContent ID。

collection_id = コンテンツ・サーバーでフォルダ情報ページのURLに含まれるdCollectionID、またはコンテンツ・サーバーのCollectionID値。

conductor_connection_name = パーソナライズ・コンダクタを示すURL接続の名前(この名前は先頭がConductorであることが必要)。この値は、このURL接続のconnections.xmlファイルのReference name属性値に一致する必要があります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの管理』のコンテンツ・プレゼンタの構成に関する章、および付録A「Oracle WebCenter Portalファイル」(connections.xmlの詳細)を参照してください。

namespace = 指定のシナリオを含むネームスペースの名前。

scenario_name = コンテンツ・プレゼンタで使用するシナリオの名前。

パーソナライズ・コンダクタおよびシナリオの詳細は、第66章「Oracle WebCenter Portalアプリケーションのパーソナライズ」を参照してください。

datasourceType

コンテンツのデータ・ソース・タイプ。有効な値は、次のとおりです:

- dsTypeSingleNode: 単一のコンテンツ・アイテム。

- dsTypeFolderContents: フォルダのコンテンツ。

- dsTypeQueryExpression: 問合せの結果。

- dsTypeMultiNode: コンテンツ・アイテムの順序付けされたリスト。

- dsTypeScenarioResults: 指定シナリオの結果。第66章「Oracle WebCenter Portalアプリケーションのパーソナライズ」を参照してください。

maxResults

datasourceTypeがdsTypeQueryExpressionである場合に表示される結果の最大数です。

デフォルト: 100

regionTemplate

表示テンプレートがSite Studioリージョン定義テンプレートであるかどうかを指定します。この値は、Content Server 11g以上でのみ有効です。

- 選択: 表示テンプレートはSite Studioリージョン定義テンプレートです。templateView値には、リージョン・テンプレートのコンテンツIDが設定されます。

- 選択解除(デフォルト): 表示テンプレートはSite Studioリージョン定義テンプレートではありません。

Site Studioリージョン・テンプレートの作成および使用の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「コンテンツ・プレゼンタを使用したコンテンツの公開」、およびOracle Site Studioのドキュメント・ライブラリを参照してください。

taskFlowInstId

このタスク・フローの一意の識別子で、タスク・フロー・インスタンスとそのカスタマイズ設定およびパーソナライズ設定との関連付けの維持、および保存された問合せの管理するために内部的に使用されます。この値は、コンテンツ・プレゼンタ・タスク・フローのコンテンツを表示し、個々のファイルまたはフォルダのコンテンツを「アプリケーション・リソース」パネルからページに追加したときに自動的に生成されます。コンテンツ・プレゼンタ・タスク・フローを「リソース・パレット」からページに追加したときは、この値は空白です。この値を入力または編集して、タスク・フローの一意の識別子を設定します。

注意: CMIS問合せをdatasourceとして使用するには、有効なtaskFlowInstIdが必要です。

templateCategory

複数のコンテンツ・アイテムについて結果をレンダリングする際に使用する表示テンプレート・カテゴリID。このIDは、即時利用可能な表示テンプレート(表29-6)のデフォルト・テンプレート・カテゴリ、または第27.3項「コンテンツ・プレゼンタ表示テンプレートの作成」の記載に従って定義された複数のコンテンツ・アイテム用の表示テンプレートのために作成されたカスタム・カテゴリを表します。

templateView

単一のコンテンツ・アイテムについて結果をレンダリングする際に使用する表示テンプレート・ビューID。固有のコンテンツ・タイプについて、またはカテゴリID別リストベースのテンプレートについてリソース・マネージャで構成されたテンプレートのビューIDを入力します。このIDには、即時利用可能な表示テンプレート(表29-5)のいずれかまたは第27.3項「コンテンツ・プレゼンタ表示テンプレートの作成」の記載に従って定義されたカスタム表示テンプレートを参照するか、コンテンツがリージョンである場合にリージョン・テンプレートのcontentIDを設定できます。

表29-5および表29-6に、Oracle WebCenterで提供される即時利用可能な表示テンプレートを示します。

表29-5 単一のコンテンツ・アイテムを表示するための即時利用可能なテンプレート

単一のコンテンツ・アイテムの表示テンプレート

ビューID

説明

デフォルトのドキュメント詳細ビュー

oracle.webcenter.content.templates.default.document.details

単一のコンテンツ・アイテムについて、作成日、変更日、作成ユーザー名、変更ユーザー名、パスおよびコメントといった詳細情報を表示します。

デフォルトのリスト・アイテム・ビュー

oracle.webcenter.content.templates.default.list.item

個々のアイテム表示のために複数のコンテンツ・アイテム・ビューによって使用されます。クリック時にアイテムを表示またはダウンロードするリンクとしてアイコンおよびアイテム名を含む単一行を表示します。

デフォルトのビュー
(テンプレートが選択されていない場合のデフォルト)

oracle.webcenter.content.templates.default.detail

ブラウザで直接(イメージ、HTML、テキスト)またはクリック時に関連ファイルをダウンロードするリンクとして、単一のコンテンツ・アイテムを表示します。

全記事ビュー

oracle.webcenter.content.templates.sitestudio.fullarticle

記事のタイトル、イメージおよび本文を含む、記事のすべてを表示します。

これはレスポンシブ・テンプレートで、ブラウザの幅に応じたレスポンシブ・レイアウトを生成するためにCSS3 Media Queriesを使用することを意味します。詳細は、第27.3.4項「レスポンシブ・テンプレートの使用」を参照してください。

このテンプレートはRD_ARTICLE Site Studioリージョン定義を使用するため、コンテンツ・サーバーでSite Studioを有効にする必要があります。

表29-6 複数のコンテンツ・アイテムを表示するための即時利用可能なテンプレート

複数のコンテンツ・アイテムの表示テンプレート

ビューID

説明

アコーディオン・ビュー

oracle.webcenter.content.templates.default.list.panel.accordion

複数のコンテンツ・アイテムをアコーディオン形式で表示します。各アイテムを開くと詳細が表示されます。

記事ビュー(Site Studio Templateカテゴリ下)

oracle.webcenter.content.templates.sitestudio.articles

記事のタイトル、イメージおよび概要を含む、複数の記事のサマリーを表示します。

これはレスポンシブ・テンプレートで、ブラウザの幅に応じたレスポンシブ・レイアウトを生成するためにCSS3 Media Queriesを使用することを意味します。詳細は、第27.3.4項「レスポンシブ・テンプレートの使用」を参照してください。

このテンプレートはRD_ARTICLE Site Studioリージョン定義を使用するため、コンテンツ・サーバーでSite Studioを有効にする必要があります。

箇条書きビュー

oracle.webcenter.content.templates.default.list.bulleted

複数のコンテンツ・アイテムを箇条書きリスト形式で表示します。コンテンツ・アイテムのみ表示され、フォルダ・アイテムは省略されます。

フォルダ・ラベルを使用した箇条書きビュー

oracle.webcenter.content.templates.default.list.bulleted.label

複数のコンテンツ・アイテムを箇条書きリスト形式で表示します。リストの最初のアイテムを含むフォルダの名前がリスト上のラベルとして表示されます。datasourceTypeがdsTypeFolderContentsに設定されている場合、このテンプレートは、すべてのアイテムが同じ親フォルダを持つようにするために使用します。コンテンツ・アイテムのみ表示され、フォルダ・アイテムは省略されます。

カルーセル・ビュー

oracle.webcenter.content.templates.default.list.carousel

複数のコンテンツ・アイテムをカルーセル形式で表示します。スライダを左右に移動することで、アイテムを参照できます。

アイコン表示

oracle.webcenter.content.templates.default.list.tile

複数のコンテンツ・アイテムを、大きいアイコンとファイル名を並べて表示します。

リスト・ビュー
(テンプレートが選択されていない場合のデフォルト)

oracle.webcenter.content.templates.default.list.simple

複数のコンテンツ・アイテムを簡易リストに表示します。

詳細パネルを使用したリスト・ビュー

oracle.webcenter.content.templates.default.list.details.panel

左側のリストに複数のコンテンツ・アイテム、右側のパネルに選択アイテムの詳細が表示されます。

ソート可能な表ビュー

oracle.webcenter.content.templates.default.list.tabular

複数のコンテンツ・アイテムを、ドキュメント名、作成日および変更日を含むソート可能な表に表示します。

タブ・ビュー

oracle.webcenter.content.templates.default.list.panel.tabbed

複数のコンテンツ・アイテムをタブとして表示します。タブを選択すると、アイテムの詳細が表示されます。単純なリストにコンテンツ・アイテムが表示されます。

29.7.2 ドキュメント・エクスプローラ・タスク・フローのパラメータ

ドキュメント・エクスプローラ・タスク・フローは、フォルダおよびファイルのリストを、2つのペイン(フォルダを表示した左のペインと現在選択しているフォルダのコンテンツを表示した右のペイン)で表示します。フォルダおよびファイルの表示、管理およびコラボレーションのための機能豊富なドキュメント・タスク・フローです。

関連項目:

- Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のドキュメント・エクスプローラ・タスク・フローの理解に関する項

- 第29.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・エクスプローラ・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表29-7に、ドキュメント・エクスプローラ・タスク・フローのパラメータを示します。

表29-7 ドキュメント・エクスプローラ・タスク・フローのパラメータ

パラメータ

説明

connectionName

コンテンツ・リポジトリ接続の名前。値が選択されない場合、アプリケーション開発者または管理者が指定したデフォルトの接続が使用されます。コンテンツ・リポジトリ接続の構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WebCenter PortalまたはPortal Frameworkアプリケーション用のコンテンツ・リポジトリの登録」の章を参照してください。

デフォルト: アプリケーション開発者によって「コンテンツ・リポジトリ接続の作成」ダイアログ・ボックスのデフォルトとして選択されている接続。これは管理者が変更できます。

featuresOff

タスク・フローの無効化されている機能のリスト。項目を区切るには、カンマまたは空白を使用します。JavaDocで公開されている有効な値は、checkin、checkout、clipboard、close、delete、download、dnd、editwiki、editoffice、newfolder、newwiki、rename、upload、multifile-upload、profile-upload、search、advancedSearch、workflow、properties、history、comments、likes、links、tags、recommendations、autovue、title、related-items、social、sidebars、ilsです。

例:

${'search, advancedSearch, clipboard, dnd, rename, newfolder, upload, newwiki, checkin, checkout, editoffice, edithtml, delete, sidebars, history'}

pageSize

タスク・フローに表示する行の最大行数。タスク・フローのフォルダとファイルのリストが指定行数よりも大きい場合、タスク・フローにスクロール・バーが表示されます。デフォルト: 27

この値を変更する場合のある典型的シナリオを次に示します。

- 大半のエンド・ユーザーは大きな画面を所有しており、多くの行を表示できます。

- このタスク・フローをページの小さな領域に合せる場合があります。

注意: pageSizeを画面サイズに対して大きすぎる値に設定すると、エンド・ユーザーがタスク・フロー・スクロール・バーをアプリケーション・スクロール・バーに合せるのが難しくなります。

readOnly

すべてのコンテンツ管理操作を無効にし、非表示にするかどうかを指定します。

- ${true}: コンテンツ管理を無効化します。

- ${false} (デフォルト): コンテンツ管理をユーザーに公開します。

resourceId

現在フォーカスされているリソース。この値は、フォルダIDまたはドキュメントIDです。

resourceId値がconnectionNameとstartFolderPathの値と整合していることのチェックが行われ、明示的に指定されていないとデフォルト値に影響します。resourceIdが単独で指定されていると、connectionName値が継承され、startFolderPathはフォルダのリソース自体かファイルの親フォルダになります。

showDocuments

ナビゲーション・ツリーでドキュメントとフォルダを表示するかフォルダのみを表示するかを指定します。

- ${true}: ドキュメントおよびフォルダを表示します。

- ${false} (デフォルト): フォルダを表示し、ドキュメントを非表示にします。

showFolders

ナビゲーション・ツリーでドキュメントとフォルダを表示するかフォルダのみを表示するかを指定します。

- ${true} (デフォルト): ドキュメントおよびフォルダを表示します。

- ${false}: ドキュメントを表示し、フォルダを非表示にします。

startFolderPath

現在のタスク・フロー・インスタンスでルート・フォルダとして使用するフォルダの名前。

これは、タスク・フロー・インスタンスに表示するコンテンツのソースと範囲の決定に役立つコンテンツ・スコープ設定パラメータです。

現在のポータルのデフォルト・ルート・フォルダのコンテンツを表示するタスク・フロー用にこの値を設定する必要はありません。しかし、たとえば、開始フォルダをポータルのデフォルト・ルート・フォルダ以外にする場合や、別のポータルのコンテンツを表示する場合には、役立ちます。

例:

- ${'/PersonalSpaces/monty/Public'}

- ${'/WebCenterB5/Proj_X/Specs'}

この値を設定するEL式を指定できます。

デフォルト: 現在のポータルの指定接続で構成されたコンテンツ・リポジトリのルート・フォルダ。

treeNavCollapsed

ツリー・ナビゲーションを含むパネルを閉じるか開くかを指定します。

- ${true} (デフォルト): パネルを閉じます。

- ${false}: パネルを開きます。

29.7.3 ドキュメント・リスト・ビューア・タスク・フローのパラメータ

ドキュメント・リスト・ビューア・タスク・フローでは、単一のペインにフラット・リストとしてフォルダおよびファイルが表示されます。このタスク・フローでは、ユーザーがフォルダ階層をナビゲートし、検索問合せをカスタマイズできます。このタスク・フローは固有のニーズに役立つ可能性がありますが、その検索機能はコンテンツ・プレゼンタ・タスク・フローでレプリケートおよび拡張されています。

関連項目:

- Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のドキュメント・リスト・ビューア・タスク・フローの理解に関する項

- 第29.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・リスト・ビューア・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表29-8に、ドキュメント・リスト・ビューア・タスク・フローのパラメータを示します。

表29-8 ドキュメント・リスト・ビューア・タスク・フローのパラメータ

タスク・フローのパラメータ

説明

connectionName

コンテンツ・リポジトリ接続の名前。値が選択されない場合、アプリケーション開発者または管理者が指定したデフォルトの接続が使用されます。コンテンツ・リポジトリ接続の構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WebCenter PortalまたはPortal Frameworkアプリケーション用のコンテンツ・リポジトリの登録」の章を参照してください。

デフォルト: アプリケーション開発者によって「コンテンツ・リポジトリ接続の作成」ダイアログ・ボックスのデフォルトとして選択されている接続。これは管理者が変更できます。

createdAfter

指定の日時後に作成されたフォルダおよびファイルにタスク・フロー・コンテンツの表示を制限するフィルタリング値。

値では次のISO 8601形式を使用します。

${'yyyy-mm-ddThh:mm:ss.sssTZ'}Foot 1

例:

${'2011-03-17T18:24:36.000+01:00'}

createdBefore

指定の日時前に作成されたフォルダおよびファイルにタスク・フロー・コンテンツの表示を制限するフィルタリング値。

値では次のISO 8601形式を使用します。

${'yyyy-mm-ddThh:mm:ss.sssTZ'}1

例:

${'2011-03-17T18:24:36.000+01:00'}

creator

特定ユーザーにより作成されたフォルダおよびファイルにタスク・フロー・コンテンツの表示を制限するフィルタリング値。ユーザー・ログイン資格証明で指定したようにユーザー名を入力します。ユーザー名は1つのみ入力できます。値を入力しない場合、任意のユーザーによって作成されたコンテンツが表示されます。

例: ${'monty'}

lastModifiedAfter

指定の日時後に最後に変更されたフォルダおよびファイルにタスク・フロー・コンテンツの表示を制限するフィルタリング値。値を入力しない場合、直近の3か月内に変更されたコンテンツが表示されます。

値では次のISO 8601形式を使用します。

${'yyyy-mm-ddThh:mm:ss.sssTZD'}1

例:

${'2011-03-17T18:24:36.000+01.00'}

lastModifiedBefore

指定の日時前に変更されたフォルダおよびファイルにタスク・フロー・コンテンツの表示を制限するフィルタリング値。値を入力しない場合、最終更新日が適用されます。

値では次のISO 8601形式を使用します。

${'yyyy-mm-ddThh:mm:ss.sssTZD'}1

例:

${'2011-03-17T18:24:36.000+01:00'}

lastModifier

特定ユーザーにより最後に変更されたフォルダおよびファイルにタスク・フロー・コンテンツの表示を制限するフィルタリング値。ユーザー・ログイン資格証明で指定したようにユーザー名を入力します。ユーザー名は1つのみ入力できます。値を入力しない場合、変更された全ドキュメントが表示されます。

例: ${'monty'}

pageSize

タスク・フローに表示する行の最大行数。タスク・フローのフォルダとファイルのリストが指定行数よりも大きい場合、タスク・フローにスクロール・バーが表示されます。デフォルト値: 15

この値を変更する場合のある典型的シナリオを次に示します。

- 大半のエンド・ユーザーは大きな画面を所有しており、多くの行を表示できます。

- このタスク・フローをページの小さな領域に合せる場合があります。

注意: pageSizeを画面サイズに対して大きすぎる値に設定すると、エンド・ユーザーがタスク・フロー・スクロール・バーをアプリケーション・スクロール・バーに合せるのが難しくなります。

startFolderPath

現在のタスク・フロー・インスタンスでルート・フォルダとして使用するフォルダの名前。

これは、タスク・フロー・インスタンスに表示するコンテンツのソースと範囲の決定に役立つコンテンツ・スコープ設定パラメータです。

現在のポータルのデフォルト・ルート・フォルダのコンテンツを表示するタスク・フロー用にこの値を設定する必要はありません。しかし、たとえば、開始フォルダをポータルのデフォルト・ルート・フォルダ以外にする場合や、別のポータルのコンテンツを表示する場合には、役立ちます。

例:

- ${'/PersonalSpaces/monty/Public'}

- ${'/WebCenterB5/Proj_X/Specs'}

この値を設定するEL式を指定できます。

デフォルト: 現在のポータルの指定接続で構成されたコンテンツ・リポジトリのルート・フォルダ。

showFolders

ドキュメントとフォルダを表示するか、ドキュメントのみを表示するかを指定します。

- ${true}: フォルダとドキュメントを表示します

- ${false} (デフォルト): ドキュメントを表示し、フォルダを非表示にします

taskFlowInstId

このタスク・フローの一意の識別子で、タスク・フロー・インスタンスとそのカスタマイズ設定およびパーソナライズ設定との関連付けの維持、および保存された問合せの管理するために内部的に使用されます。この値は、ドキュメント・リスト・ビューア・タスク・フローのコンテンツを表示し、個々のファイルまたはフォルダのコンテンツを「アプリケーション・リソース」パネルからページに追加したときに自動的に生成されます。ドキュメント・リスト・ビューア・タスク・フローを「リソース・パレット」からページに追加したときは、この値は空白です。この値を入力または編集して、タスク・フローの一意の識別子を設定します。

脚注 1 TZは、タイムゾーンのインジケータです。UTC(協定世界時)で示す時間の場合、タイムゾーンのインジケータはZです。他のタイムゾーンにおける時間の場合、そのタイムゾーンにおけるUTCの時差をTZが示します。たとえば、12月のカリフォルニア現地時間(太平洋標準時(PST))の場合、TZインジケータは「-08:00」になります。

29.7.4 ドキュメント・マネージャ・タスク・フローのパラメータ

ドキュメント・マネージャ・タスク・フローでは、タスク・フロー・レイアウトの構成機能はもちろん、フォルダおよびファイルのコピー、移動、貼付け、削除など、包括的なドキュメント管理機能が提供されます。ドキュメント・マネージャ・タスク・フローは、フォルダおよびファイルをlayoutパラメータで指定したレイアウトで表示します。フォルダおよびファイルを2つのペイン(explorerレイアウト)、現在のフォルダのコンテンツのみを表示する単一ペイン(tableレイアウト)またはルート・フォルダから始まるフォルダ階層を表示する単一ペイン(treeTableレイアウト)に表示します。explorerレイアウトはドキュメント・エクスプローラ・タスク・フローと同一のもので、showDocuments、showFoldersおよびtreeNavCollapsedプロパティを持ちません。

関連項目:

- Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のドキュメント・マネージャ・タスク・フローの理解に関する項

- 第29.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・マネージャ・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表29-9に、ドキュメント・マネージャ・タスク・フローのパラメータを示します。

表29-9 ドキュメント・マネージャ・タスク・フローのパラメータ

タスク・フローのパラメータ

説明

connectionName

コンテンツ・リポジトリ接続の名前。値が選択されない場合、アプリケーション開発者または管理者が指定したデフォルトの接続が使用されます。コンテンツ・リポジトリ接続の構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WebCenter PortalまたはPortal Frameworkアプリケーション用のコンテンツ・リポジトリの登録」の章を参照してください。

デフォルト: アプリケーション開発者によって「コンテンツ・リポジトリ接続の作成」ダイアログ・ボックスのデフォルトとして選択されている接続。これは管理者が変更できます。

featuresOff

タスク・フローの無効化されている機能のリスト。項目を区切るには、カンマまたは空白を使用します。JavaDocで公開されている有効な値は、checkin、checkout、clipboard、close、delete、download、dnd、editwiki、editoffice、newfolder、newwiki、rename、upload、multifile-upload、profile-upload、search、advancedSearch、workflow、properties、history、comments、likes、links、tags、recommendations、autovue、title、related-items、social、sidebars、ilsです。

例:

${'search, advancedSearch, clipboard, dnd, rename, newfolder, upload, newwiki, checkin, checkout, editoffice, edithtml, delete, sidebars, history'}

layout

タスク・フローのターゲット・レイアウト。次のうちから選択します。

- ${'explorer'} (デフォルト): フォルダおよびファイルのリストを、2つのペイン(フォルダを表示した左のペインと現在選択しているフォルダのコンテンツを表示した右のペイン)で表示します。このレイアウトはドキュメント・エクスプローラ・タスク・フローと同一のもので、showDocuments、showFoldersおよびtreeNavCollapsedパラメータを持ちません。図29-3を参照してください。

- ${'table'}: 現在のフォルダのコンテンツを単一のペインに表示します。フォルダをクリックするとドリルダウンでき、ペインがフォルダ・コンテンツとともにリフレッシュされます。図29-4を参照してください。

- ${'treeTable'}: ルート・フォルダから始まるフォルダ階層が単一のペインに表示されます。フォルダを展開および縮小できます。図29-5を参照してください。

pageSize

タスク・フローに表示する行の最大行数。タスク・フローのフォルダとファイルのリストが指定行数よりも大きい場合、タスク・フローにスクロール・バーが表示されます。デフォルト: 27

この値を変更する場合のある典型的シナリオを次に示します。

- 大半のエンド・ユーザーは大きな画面を所有しており、多くの行を表示できます。

- このタスク・フローをページの小さな領域に合せる場合があります。

注意: pageSizeを画面サイズに対して大きすぎる値に設定すると、エンド・ユーザーがタスク・フロー・スクロール・バーをアプリケーション・スクロール・バーに合せるのが難しくなります。

readOnly

すべてのコンテンツ管理操作を無効にし、非表示にするかどうかを指定します。

- ${true}: コンテンツ管理を無効化します。

- ${false} (デフォルト): コンテンツ管理をユーザーに公開します。

resourceId

現在フォーカスされているリソース。この値は、フォルダIDまたはドキュメントIDです。

resourceId値がconnectionNameとstartFolderPathの値と整合していることのチェックが行われ、明示的に指定されていないとデフォルト値に影響します。resourceIdが単独で指定されていると、connectionName値が継承され、startFolderPathはフォルダのリソース自体かファイルの親フォルダになります。

startFolderPath

現在のタスク・フロー・インスタンスでルート・フォルダとして使用するフォルダの名前。

これは、タスク・フロー・インスタンスに表示するコンテンツのソースと範囲の決定に役立つコンテンツ・スコープ設定パラメータです。

現在のポータルのデフォルト・ルート・フォルダのコンテンツを表示するタスク・フロー用にこの値を設定する必要はありません。しかし、たとえば、開始フォルダをポータルのデフォルト・ルート・フォルダ以外にする場合や、別のポータルのコンテンツを表示する場合には、役立ちます。

例:

- ${'/PersonalSpaces/monty/Public'}

- ${'/WebCenterB5/Proj_X/Specs'}

この値を設定するEL式を指定できます。

デフォルト: 現在のポータルの指定接続で構成されたコンテンツ・リポジトリのルート・フォルダ。

29.7.5 ドキュメント・ナビゲータ・タスク・フローのパラメータ

ドキュメント・ナビゲータ・タスク・フローでは、フォルダおよびファイルが単一のペインに表示されます。フォルダを展開および縮小して、現在のフォルダのフォルダ階層を表示できます。このタスク・フローでは、エンド・ユーザーが使用できるオプション・メニューはありません。

関連項目:

- Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のドキュメント・ナビゲータ・タスク・フローの理解に関する項

- 第29.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・ナビゲータ・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表29-10に、ドキュメント・ナビゲータ・タスク・フローのパラメータを示します。

表29-10 ドキュメント・ナビゲータ・タスク・フローのパラメータ

パラメータ

説明

connectionName

コンテンツ・リポジトリ接続の名前。値が選択されない場合、アプリケーション開発者または管理者が指定したデフォルトの接続が使用されます。コンテンツ・リポジトリ接続の構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WebCenter PortalまたはPortal Frameworkアプリケーション用のコンテンツ・リポジトリの登録」の章を参照してください。

デフォルト: アプリケーション開発者によって「コンテンツ・リポジトリ接続の作成」ダイアログ・ボックスのデフォルトとして選択されている接続。これは管理者が変更できます。

featuresOff

タスク・フローの無効化されている機能のリスト。項目を区切るには、カンマまたは空白を使用します。JavaDocで公開されている有効な値は、checkin、checkout、clipboard、close、delete、download、dnd、editwiki、editoffice、newfolder、newwiki、rename、upload、multifile-upload、profile-upload、search、advancedSearch、workflow、properties、history、comments、likes、links、tags、recommendations、autovue、title、related-items、social、sidebars、ilsです。

例:

${'search, advancedSearch, clipboard, dnd, rename, newfolder, upload, newwiki, checkin, checkout, editoffice, edithtml, delete, sidebars, history'}

pageSize

タスク・フローに表示する行の最大行数。タスク・フローのフォルダとファイルのリストが指定行数よりも大きい場合、タスク・フローにスクロール・バーが表示されます。デフォルト: 27

この値を変更する場合のある典型的シナリオを次に示します。

- 大半のエンド・ユーザーは大きな画面を所有しており、多くの行を表示できます。

- このタスク・フローをページの小さな領域に合せる場合があります。

注意: pageSizeを画面サイズに対して大きすぎる値に設定すると、エンド・ユーザーがタスク・フロー・スクロール・バーをアプリケーション・スクロール・バーに合せるのが難しくなります。

readOnly

すべてのコンテンツ管理操作を無効にし、非表示にするかどうかを指定します。

- ${true}: コンテンツ管理を無効化します。

- ${false} (デフォルト): コンテンツ管理をユーザーに公開します。

resourceId

現在フォーカスされているリソース。この値は、フォルダIDまたはドキュメントIDです。

resourceId値がconnectionNameとstartFolderPathの値と整合していることのチェックが行われ、明示的に指定されていないとデフォルト値に影響します。resourceIdが単独で指定されていると、connectionName値が継承され、startFolderPathはフォルダのリソース自体かファイルの親フォルダになります。

showDocuments

ナビゲーション・ツリーでドキュメントとフォルダを表示するかフォルダのみを表示するかを指定します。

- ${true} (デフォルト): ドキュメントおよびフォルダを表示します。

- ${false}: フォルダを表示し、ドキュメントを非表示にします。

startFolderPath

現在のタスク・フロー・インスタンスでルート・フォルダとして使用するフォルダの名前。

これは、タスク・フロー・インスタンスに表示するコンテンツのソースと範囲の決定に役立つコンテンツ・スコープ設定パラメータです。

現在のポータルのデフォルト・ルート・フォルダのコンテンツを表示するタスク・フロー用にこの値を設定する必要はありません。しかし、たとえば、開始フォルダをポータルのデフォルト・ルート・フォルダ以外にする場合や、別のポータルのコンテンツを表示する場合には、役立ちます。

例:

- ${'/PersonalSpaces/monty/Public'}

- ${'/WebCenterB5/Proj_X/Specs'}

この値を設定するEL式を指定できます。

デフォルト: 現在のポータルの指定接続で構成されたコンテンツ・リポジトリのルート・フォルダ。

29.7.6 フォルダ・ビューア・タスク・フローのパラメータ

フォルダ・ビューア・タスク・フローでは、単一ペインにフラット・リストとしてフォルダのコンテンツのリストが表示されます。

関連項目:

- Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のフォルダ・ビューア・タスク・フローの理解に関する項

- 第29.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、フォルダ・ビューア・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表29-11に、フォルダ・ビューア・タスク・フローのパラメータを示します。

表29-11 フォルダ・ビューア・タスク・フローのパラメータ

パラメータ

説明

connectionName

コンテンツ・リポジトリ接続の名前。値が選択されない場合、アプリケーション開発者または管理者が指定したデフォルトの接続が使用されます。コンテンツ・リポジトリ接続の構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WebCenter PortalまたはPortal Frameworkアプリケーション用のコンテンツ・リポジトリの登録」の章を参照してください。

デフォルト: アプリケーション開発者によって「コンテンツ・リポジトリ接続の作成」ダイアログ・ボックスのデフォルトとして選択されている接続。これは管理者が変更できます。

featuresOff

タスク・フローの無効化されている機能のリスト。項目を区切るには、カンマまたは空白を使用します。JavaDocで公開されている有効な値は、checkin、checkout、clipboard、close、delete、download、dnd、editwiki、editoffice、newfolder、newwiki、rename、upload、multifile-upload、profile-upload、search、advancedSearch、workflow、properties、history、comments、likes、links、tags、recommendations、autovue、title、related-items、social、sidebars、ilsです。

例:

${'search, advancedSearch, clipboard, dnd, rename, newfolder, upload, newwiki, checkin, checkout, editoffice, edithtml, delete, sidebars, history'}

pageSize

タスク・フローに表示する行の最大行数。タスク・フローのフォルダとファイルのリストが指定行数よりも大きい場合、タスク・フローにスクロール・バーが表示されます。デフォルト: 27

この値を変更する場合のある典型的シナリオを次に示します。

- 大半のエンド・ユーザーは大きな画面を所有しており、多くの行を表示できます。

- このタスク・フローをページの小さな領域に合せる場合があります。

注意: pageSizeを画面サイズに対して大きすぎる値に設定すると、エンド・ユーザーがタスク・フロー・スクロール・バーをアプリケーション・スクロール・バーに合せるのが難しくなります。

readOnly

すべてのコンテンツ管理操作を無効にし、非表示にするかどうかを指定します。

- ${true}: コンテンツ管理を無効化します。

- ${false} (デフォルト): コンテンツ管理をユーザーに公開します。

resourceId

現在フォーカスされているリソース。この値は、フォルダIDまたはドキュメントIDです。

resourceId値がconnectionNameとstartFolderPathの値と整合していることのチェックが行われ、明示的に指定されていないとデフォルト値に影響します。resourceIdが単独で指定されていると、connectionName値が継承され、startFolderPathはフォルダのリソース自体かファイルの親フォルダになります。

showFolders

ナビゲーション・ツリーでドキュメントとフォルダを表示するかフォルダのみを表示するかを指定します。

- ${true} (デフォルト): ドキュメントおよびフォルダを表示します。

- ${false}: ドキュメントを表示し、フォルダを非表示にします。

startFolderPath

現在のタスク・フロー・インスタンスでルート・フォルダとして使用するフォルダの名前。

これは、タスク・フロー・インスタンスに表示するコンテンツのソースと範囲の決定に役立つコンテンツ・スコープ設定パラメータです。

現在のポータルのデフォルト・ルート・フォルダのコンテンツを表示するタスク・フロー用にこの値を設定する必要はありません。しかし、たとえば、開始フォルダをポータルのデフォルト・ルート・フォルダ以外にする場合や、別のポータルのコンテンツを表示する場合には、役立ちます。

例:

- ${'/PersonalSpaces/monty/Public'}

- ${'/WebCenterB5/Proj_X/Specs'}

この値を設定するEL式を指定できます。詳細は、第F.9項「ドキュメントに関連するEL」を参照してください。

デフォルト: 現在のポータルの指定接続で構成されたコンテンツ・リポジトリのルート・フォルダ。

29.7.7 最近のドキュメント・タスク・フローのパラメータ

最近のドキュメント・タスク・フローには、現在のユーザーによって最近に作成または変更されたファイルのリストが表示されます。

関連項目:

- Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の最近のドキュメント・タスク・フローの理解に関する項

- 第29.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、最近のドキュメント・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表29-12に、最近のドキュメント・タスク・フローのパラメータを示します。

表29-12 最近のドキュメント・タスク・フローのパラメータ

パラメータ

説明

connectionName

コンテンツ・リポジトリ接続の名前。値が選択されない場合、アプリケーション開発者または管理者が指定したデフォルトの接続が使用されます。コンテンツ・リポジトリ接続の構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WebCenter PortalまたはPortal Frameworkアプリケーション用のコンテンツ・リポジトリの登録」の章を参照してください。

デフォルト: アプリケーション開発者によって「コンテンツ・リポジトリ接続の作成」ダイアログ・ボックスのデフォルトとして選択されている接続。これは管理者が変更できます。

groupSpace

(WebCenter Portalでのみ使用)

タスク・フローにリストされている最近作成または変更されたドキュメントのソースであるポータルの名前。有効な値は、次のとおりです:

- 値なしまたは${null} (デフォルト): 接続するコンテンツ・リポジトリ全体のドキュメントを表示します。

- 固有のポータルの表示名またはID: 該当ポータルのドキュメントを表示します。

- ${'all'}: 非ポータル・ドキュメントを除く任意のポータルからのドキュメントを表示します。

lastModifiedAfter

指定の日時後に最後に変更されたフォルダおよびファイルにタスク・フロー・コンテンツの表示を制限するフィルタリング値。値を入力しない場合、直近の3か月内に変更されたコンテンツが表示されます。

値では次のISO 8601形式を使用します。

${'yyyy-mm-ddThh:mm:ss.sssTZD'}Foot 1

例:

${'2011-03-17T18:24:36.000+01.00'}

lastModifiedBefore

指定の日時前に変更されたフォルダおよびファイルにタスク・フロー・コンテンツの表示を制限するフィルタリング値。値を入力しない場合、最終更新日が適用されます。

値では次のISO 8601形式を使用します。

${'yyyy-mm-ddThh:mm:ss.sssTZD'}1

例:

${'2011-03-17T18:24:36.000+01:00'}

lastModifier

特定ユーザーにより最後に変更されたフォルダおよびファイルにタスク・フロー・コンテンツの表示を制限するフィルタリング値。ユーザー・ログイン資格証明で指定したようにユーザー名を入力します。ユーザー名は1つのみ入力できます。値を入力しない場合、変更された全ドキュメントが表示されます。

例: ${'monty'}

maxDocuments

表示するファイルの最大数。値を入力しないか、0を入力した場合、最近アクセスされたドキュメントが最大10個表示されます。

例: ${10}

値を囲む一重引用符がないことに注意してください。

デフォルト: ${null}

mostRecentFirst

タスク・フローでのファイルのソート順序を指定します。

- ${true} (デフォルト): 最新のドキュメントを最初にリストします。

- ${false}: 最も古いドキュメントを最初にリストします。

脚注 1 TZは、タイムゾーンのインジケータです。UTC(協定世界時)で示す時間の場合、タイムゾーンのインジケータはZです。他のタイムゾーンにおける時間の場合、そのタイムゾーンにおけるUTCの時差をTZが示します。たとえば、12月のカリフォルニア現地時間(太平洋標準時(PST))の場合、TZインジケータは「-08:00」になります。

29.7.8 ドキュメント・ビューア・タスク・フローのパラメータ

ドキュメント・ビューア・タスク・フローでは、フォルダのコンテンツが表示されるか、該当ファイル・タイプのデフォルトのテンプレートで個々のファイルのプレビューが表示されます。

関連項目:

- Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のドキュメント・ビューア・タスク・フローの理解に関する項

- 第29.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・ビューア・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表29-13に、ドキュメント・ビューア・タスク・フローのパラメータを示します。

図29-13 ドキュメント・ビューア・タスク・フローのパラメータ

パラメータ

説明

featuresOff

タスク・フローの無効化されている機能のリスト。項目を区切るには、カンマまたは空白を使用します。JavaDocで公開されている有効な値は、checkin、checkout、clipboard、close、delete、download、dnd、editwiki、editoffice、newfolder、newwiki、rename、upload、multifile-upload、profile-upload、search、advancedSearch、workflow、properties、history、comments、likes、links、tags、recommendations、autovue、title、related-items、social、sidebars、ilsです。

例:

${'search, advancedSearch, clipboard, dnd, rename, newfolder, upload, newwiki, checkin, checkout, editoffice, edithtml, delete, sidebars, history'}

initialSidebar

ドキュメント・ビューアで最初にフォーカスを持つタブ付きペインを指定します。有効な値は、次のとおりです:

- ${'comments'} (デフォルト)。「コメント」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のアイテムへのコメントに関する項を参照)。

- ${'tags'}。「タグ」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のファイルのタグ管理に関する項を参照)。

- ${'history'}。「履歴」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のファイルのバージョン履歴の表示および削除に関する項を参照)。

- ${'docInfo'}。「情報」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のフォルダおよびファイルのプロパティの使用に関する項を参照)。

- ${'tags'}。「リンク」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のドキュメント・リンクの管理に関する項を参照)。

- ${'autovue'}。Oracle AutoVueがインストールされている場合、ハイパーリンクされたマークアップ名の表に現在のドキュメントのAutoVueマークアップを表示する「Autovue」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のOracle AutoVueを使用したドキュメントでの共同作業に関する項を参照)。

readOnly

すべてのコンテンツ管理操作を無効にし、非表示にするかどうかを指定します。

- ${true}: コンテンツ管理を無効化します。

- ${false} (デフォルト): コンテンツ管理をユーザーに公開します。

resourceID

現在フォーカスされているリソース。この値は、フォルダIDまたはドキュメントIDです。

29.7.9 ドキュメント・ミニ・プロパティ・タスク・フローのパラメータ

ドキュメント・ミニ・プロパティ・タスク・フローでは、選択したファイルの基本プロパティが読取り専用ビューで表示されます。このタスク・フローは、すべてのファイル・タイプで利用可能です。

関連項目:

- Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のドキュメント・ミニ・プロパティ・タスク・フローの理解に関する項

- 第29.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・ミニ・プロパティ・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表29-14に、ドキュメント・ミニ・プロパティ・タスク・フローのパラメータを示します。

表29-14 ドキュメント・ミニ・プロパティ・タスク・フローのパラメータ

パラメータ

説明

resourceID

基本プロパティを表示するドキュメントのID。

29.7.10 ドキュメント・プロパティ・タスク・フローのパラメータ

ドキュメント・プロパティ・タスク・フローには、選択したファイルの基本プロパティおよびアドバンスト・プロパティに加えて、プロパティ値を変更するための「編集」ボタンが表示されます。これは、すべてのファイル・タイプで選択可能です。

関連項目:

- Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のドキュメント・プロパティ・タスク・フローの理解に関する項

- 第29.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・プロパティ・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表29-15に、ドキュメント・プロパティ・タスク・フローのパラメータを示します。

表29-15 ドキュメント・プロパティ・タスク・フローのパラメータ

パラメータ

説明

resourceID

基本プロパティおよびアドバンスト・プロパティを表示するドキュメントのID。

readOnly

エンド・ユーザーがドキュメント・プロパティを編集することを許可するかどうかを指定します。

- ${true}: 「基本」および「アドバンスト・プロパティ」ペインで「編集」ボタンを表示せず、したがってエンド・ユーザーがドキュメント・プロパティを編集する機能を無効にします。

- ${false}(デフォルト): 「基本」および「アドバンスト・プロパティ」ペインで「編集」ボタンを表示し、エンド・ユーザーがドキュメント・プロパティを編集することを許可します。

29.7.11 リッチ・テキスト・エディタ・タスク・フローのパラメータ

リッチ・テキスト・エディタ・タスク・フローでは、リッチ・テキスト・エディタにHTMLまたはWikiドキュメントが表示されます。

関連項目:

- 『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のリッチ・テキスト・エディタ(RTE)の使用に関する項

- 第29.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、リッチ・テキスト・エディタ・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表29-18に、リッチ・テキスト・エディタ・タスク・フローのパラメータを示します。

表29-16 リッチ・テキスト・エディタ・タスク・フローのパラメータ

パラメータ

説明

destinationID

現在フォーカスされているリソース。この値は、該当フォルダに新しいドキュメントを作成するためのフォルダID、または既存のドキュメントを編集するためのドキュメントID(ドキュメント・ビューア・タスク・フローのプロパティ・ペインに表示される)です。

featuresOff

タスク・フローの無効化されている機能のリスト。項目を区切るには、カンマまたは空白を使用します。JavaDocで公開されている有効な値は、checkin、checkout、clipboard、close、delete、download、dnd、editwiki、editoffice、newfolder、newwiki、rename、upload、multifile-upload、profile-upload、search、advancedSearch、workflow、properties、history、comments、likes、links、tags、recommendations、autovue、title、related-items、social、sidebars、ilsです。

例:

${'search, advancedSearch, clipboard, dnd, rename, newfolder, upload, newwiki, checkin, checkout, editoffice, edithtml, delete, sidebars, history'}

initialSidebar

ドキュメント・ビューアのサイドバーに表示するペインを指定します。有効な値は、次のとおりです:

- ${'comments'} (デフォルト)。「コメント」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のアイテムへのコメントに関する項を参照)。

- ${'tags'}。「タグ」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のファイルのタグ管理に関する項を参照)。

- ${'history'}。「履歴」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のファイルのバージョン履歴の表示および削除に関する項を参照)。

- ${'docInfo'}。「プロパティ」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のフォルダおよびファイルのプロパティの使用に関する項を参照)。

- ${'links'}。「リンク」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のドキュメント・リンクの管理に関する項を参照)。

- ${'recommendations'}。「推奨」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のドキュメントの推奨の表示に関する項を参照)。

注意: 値は大/小文字を区別します。

29.7.12 ドキュメント・アップロード・タスク・フローのパラメータ

ドキュメント・アップロード・タスク・フローでは、ユーザーが新しいドキュメントをページにアップロードできる「アップロード」ダイアログが表示されます。

関連項目:

- 『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のファイルのアップロードに関する項

- 第29.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・アップロード・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表29-18に、ドキュメント・アップロード・タスク・フローのパラメータを示します。

表29-17 ドキュメント・アップロード・タスク・フローのパラメータ

パラメータ

説明

destinationID

現在フォーカスされているリソース。この値は、フォルダにドキュメントをアップロードするためのフォルダIDを指定します。

destinationSelectionEnabled

アップロード先フォルダを変更できるかどうかを指定します。

- ${true}: 入力テキスト・ボックスとして、「参照」ボタンとともにアップロード先フォルダを表示します。

- ${false} (デフォルト): 読取り専用テキストとしてアップロード先フォルダを表示します。

featuresOff

タスク・フローの無効化されている機能のリスト。項目を区切るには、カンマまたは空白を使用します。JavaDocで公開されている有効な値は、checkin、checkout、clipboard、close、delete、download、dnd、editwiki、editoffice、newfolder、newwiki、rename、upload、multifile-upload、profile-upload、search、advancedSearch、workflow、properties、history、comments、likes、links、tags、recommendations、autovue、title、related-items、social、sidebars、ilsです。

例:

${'search, advancedSearch, clipboard, dnd, rename, newfolder, upload, newwiki, checkin, checkout, editoffice, edithtml, delete, sidebars, history'}

29.7.13 ドキュメント・バージョン履歴・タスク・フローのパラメータ

ドキュメント・バージョン履歴・タスク・フローでは、選択したファイルのバージョン・リストが読取り専用ビューで表示されます。このタスク・フローは、すべてのファイル・タイプで利用可能です。

関連項目:

- Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のドキュメント・バージョン履歴タスク・フローの理解に関する項

- 第29.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・バージョン履歴・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表29-18に、ドキュメント・バージョン履歴・タスク・フローのパラメータを示します。

表29-18 バージョン履歴・タスク・フローのパラメータ

パラメータ

説明

horizontalLayout

バージョン履歴情報のレイアウト方向を指定します。

- ${vertical} (デフォルト): 垂直方向(図29-13を参照)。

- ${horizontal}: 水平方向(図29-13を参照)。

resourceID

バージョン履歴を表示するドキュメントのID。

readOnly

すべてのコンテンツ管理操作を無効にし、非表示にするかどうかを指定します。

- ${true}: コンテンツ管理を無効化します。
${false} (デフォルト): コンテンツ管理をユーザーに公開します。

29.7.14 AutoVueタスク・フローのパラメータ

AutoVueタスク・フローでは、Oracle AutoVue機能が統合されており、ユーザーがドキュメントのレビューおよび共同作業ができます。

関連項目:

- 『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のOracle AutoVueによるドキュメントのコラボレーションに関する項

- 第29.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、AutoVueタスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表29-19に、AutoVueタスク・フローのパラメータを示します。

表29-19 AutoVueタスク・フローのパラメータ

パラメータ

説明

resourceId

AutoVueタスク・フローで表示するドキュメントのID。

30 Wikiとブログの統合

この章では、アプリケーション・エンド・ユーザーが共同作業を行ったりコンテンツやアイデアを共有できるように、Wikiとブログの機能をWebCenter Portal Frameworkアプリケーションに統合する方法について説明します。

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

- 第30.1項「Wikiとブログの概要」

- 第30.2項「Wikiとブログの要件」

- 第30.3項「Wikiの統合」

- 第30.4項「ブログの統合」

30.1 Wikiとブログの概要

Wikiは、ユーザーが登録の必要なしに参照、更新および削除できる、有用なコンテンツや情報の集合です。このように簡単に対話および様々な操作ができることから、Wikiは複数の人が一緒に記述されたコンテンツを作成できる、コラボレイティブな作成のための効果的なツールとなっています。

ブログは一般的に、個々のユーザーの経験および意見の個人的な記録です。どのようなタイプのアイデア、計画または視点のディスカッションやエバンジャライズにも役立つツールを提供します。ブログは、選択したグループの人々またはより広範な対象読者を想定して作成できます。一般的に各ブログには、様々なブログ投稿が含まれており、新たに追加されたブログ投稿が上に表示されます。ブログでは、全体的な概念に関する読者のコメントを歓迎します。

ドキュメント・ツールを使用することで、WikiとブログをPortal Frameworkアプリケーションに統合できます。アプリケーションで公開できるWikiページまたはブログの数に制限はありません。

30.2 Wikiとブログの要件

Wikiおよびブログの機能をサポートするために、ドキュメント・ツールではコンテンツ・サーバーを利用します。Portal FrameworkアプリケーションでWikiおよびブログの機能を使用するには、次の前提条件を満たす必要があります。

- Content Server 11gがWebCenter Portalのデフォルトのコンテンツ・リポジトリとしてインストールおよび構成されていることが必要です。Wikiおよびブログの機能は、Content Server 10gでは使用できません。Content Server 11gのインストールおよび構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「コンテンツ・リポジトリの管理」の章を参照してください。

- Content Server 11gへの接続が確立されていることが必要です。詳細は、第25.2.1項「Oracle Content Serverアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法」を参照してください。

- 必要に応じて第4.2項「ツールとサービスを利用するためのFrameworkアプリケーションの準備」に記載された手順を完了します。たとえば、ブログやWikiのドキュメントの作成時または更新時など、アクティビティを追跡するためにアクティビティ・ストリーム機能を使用できます。エンド・ユーザーは、意見を表明するためにWikiのドキュメントおよびブログの投稿にコメントを追加できます。コメントおよびアクティビティ・ストリームの機能を有効にするには、WebCenterスキーマがインストールされたデータベースへの接続を登録する必要があります。

こうした要件を満たした後、ドキュメント・ツールを使用してPortal FrameworkアプリケーションにWikiとブログを追加できます。

- アプリケーションにWikiを追加するには、追加Wikiドキュメント・アクションを提供するドキュメント・タスク・フロー(ドキュメント・エクスプローラ・タスク・フローなど)を追加する必要があります。第30.3項「Wikiの統合」を参照してください。

- アプリケーションにブログを追加するには、ブログ・タスク・フローを使用します。第30.4項「ブログの統合」を参照してください。

Portal FrameworkアプリケーションでWikiおよびブログをPDFに変換する場合、Oracle Fusion Middleware Oracle WebCenter Portalの管理のWikiおよびブログのPDF変換の有効化に関する項に記載されているように、アプリケーション管理者がWebCenter Conversionコンポーネントを構成する必要があります。

30.3 Wikiの統合

次の項では、Portal FrameworkアプリケーションにWikiドキュメントを追加するために必要な情報を提供します。

- 第30.3.1項「Wikiの統合について」

- 第30.3.2項「Wiki機能を提供するためのドキュメント・エクスプローラ・タスク・フローの追加」

- 第30.3.3項「ドキュメント・エクスプローラ・タスク・フローのパラメータの変更」

- 第30.3.4項「実行時の処理」

- 第30.3.5項「コンテンツ・プレゼンタでのWikiページ・リンクの表示」

30.3.1 Wikiの統合について

実行時にWikiドキュメントを追加および管理する機能をエンド・ユーザーに提供するには、Portal Frameworkアプリケーションにドキュメント・エクスプローラ・タスク・フローを追加する必要があります。設計時にこのタスク・フローを追加した場合、エンド・ユーザーのためにアプリケーションに組み込まれ、実行時にWikiドキュメントを操作できます。

ドキュメント・エクスプローラ・タスク・フローには、パラメータが関連付けられています。詳細は、第29.7.2項「ドキュメント・エクスプローラ・タスク・フローのパラメータ」を参照してください。

30.3.2 Wiki機能を提供するためのドキュメント・エクスプローラ・タスク・フローの追加

Wiki機能の有効化のためにPortal Frameworkアプリケーションを準備し、ドキュメント・エクスプローラ・タスク・フローを追加するには:

1. 第30.2項「Wikiとブログの要件」に記載された要件を満たしていることを確認します。

注意:

接続を設定する際、認証方法を選択する必要があります。アイデンティティ伝播を選択した場合、アプリケーションにADFセキュリティを実装し、Content ServerでSecure Socket Layer (SSL)を構成する必要があります。

外部アプリケーションを選択した場合、Content Serverに対するユーザーの認証に使用する外部アプリケーションを指定する必要があります。

詳細は、第4.2.1.1項「ツールとサービスのセキュリティの実装」を参照してください。

2. 第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」の説明に従って、Wikiの機能を提供するJSFページを作成または開きます。

3. ドキュメント・エクスプローラ・タスク・フローをページに追加する方法を選択します。

- 選択したフォルダまたはファイルが事前移入されたドキュメント・エクスプローラ・タスク・フローを追加する場合、第29.4項「選択したフォルダまたはファイルのページへの追加」を参照してください。

- タスク・フローのメニューおよびアクションを使用して移入できる空のタスク・フローとしてドキュメント・エクスプローラ・タスク・フローをスタンドアロンで追加する場合、第29.5項「コンテンツ・タスク・フローのページへの追加」を参照してください。

ドキュメント・エクスプローラ・タスク・フローに設定できるパラメータの詳細は、第29.7.2項「ドキュメント・エクスプローラ・タスク・フローのパラメータ」を参照してください。

このページを実行すると、図30-1に示すように、デフォルトのブラウザにドキュメント・エクスプローラ・タスク・フローが表示されます。エンド・ユーザーは、「新規Wikiドキュメント」をクリックすることによりWikiドキュメントを作成できます。詳細は、第30.3.4項「実行時の処理」を参照してください。

図30-1 新規Wikiドキュメントの作成

30.3.3 ドキュメント・エクスプローラ・タスク・フローのパラメータの変更

ドキュメント・エクスプローラ・タスク・フローのパラメータを変更する方法は、他のドキュメント・タスク・フローと同じです。詳細は、第29.6項「コンテンツ・タスク・フローのパラメータの変更」を参照してください。変更可能な特定のパラメータの詳細は、第29.7.2項「ドキュメント・エクスプローラ・タスク・フローのパラメータ」を参照してください。

30.3.4 実行時の処理

実行時に、権限のあるユーザーはWiki機能が公開されたPortal FrameworkアプリケーションでWikiドキュメントを作成できます。またユーザーは、Wikiドキュメントの編集、ダウンロード、名前の変更、共有およびサブスクライブを行い、その履歴とプロパティを表示できます。

実行時に、ドキュメント・エクスプローラ・タスク・フローを介して公開したフォルダが、ルート・フォルダとして表示されます。エンド・ユーザーは、「新規Wikiドキュメント」(図30-2)をクリックして空白のWikiドキュメントが表示されたリッチ・テキスト・エディタ (RTE) (図30-3)を開き、Wikiドキュメントを作成できます。

図30-2 新規Wikiドキュメントの作成

ユーザーは、完全に統合されたHTMLテキスト・エディタ(図30-3)であるリッチ・テキスト・エディタ(RTE)を使用してWikiコンテンツを追加および編集できます。

図30-3 新規Wikiドキュメントを表示するリッチ・テキスト・エディタ

注意:

デフォルトでは、「Wikiマークアップ」タブはRTEで非表示になっています。「Wikiマークアップ」タブを表示または非表示にするには、Oracle Fusion Middleware Oracle WebCenter Portalの管理のリッチ・テキスト・エディタでの「Wikiマークアップ」タブの表示および非表示に関する項の説明に従って、システム管理者が構成ファイルを編集します。

デフォルトでは、すべてのWikiドキュメントがルート・フォルダの直下に作成されます(図30-4)。

図30-4 「新規Wikiドキュメント」アクションを使用して作成されたWikiドキュメント

Portal FrameworkアプリケーションでWikiドキュメントを追加および管理するための実行時の手順は、WebCenter Portalでの手順と同じです。一般的な情報は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「Wikiの使用」の章を参照してください。

30.3.5 コンテンツ・プレゼンタでのWikiページ・リンクの表示

Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の選択したフォルダまたはファイルのページへの追加に関する項で説明されているように、実行時に、コンテンツ・プレゼンタを使用して既存のWikiドキュメントを表示するように選択できます。

コンテンツ・プレゼンタの表示テンプレートを使用してWikiドキュメントを表示している場合、デフォルトでWikiドキュメントに含まれるリンクがドキュメント・ビューアでレンダリングされます。リンク・ターゲットをコンテンツ・プレゼンタで表示するようにアプリケーションを構成できます。

ドキュメント・ビューアではなく、コンテンツ・プレゼンタのWikiドキュメントに存在するリンクのターゲットを開くには:

1. adf-config.xmlファイルを開きます。このファイルは、アプリケーション・ナビゲータの「アプリケーション・リソース」セクションにあるDescriptors/ADF META-INFの下にあります。

2. Namespaceエントリを次のように更新します。

xmlns:wpsC="http://xmlns.oracle.com/webcenter/framework/service"

3. ResourceActionHandlerエントリを次のように更新します。

<wpsC:adf-service-config
xmlns="http://xmlns.oracle.com/webcenter/framework/service">
<resource-handler
class="oracle.webcenter.portalframework.sitestructure.handler.NavigationResourceActionHandler"/>
</wpsC:adf-service-config>

4. adf-config.xmlを保存します。

30.4 ブログの統合

Portal Frameworkアプリケーションにブログ機能を統合した場合、権限のあるエンド・ユーザーがブログ投稿を作成および管理できます。ブログ機能を有効にするには、ブログ・タスク・フローを追加する必要があります。

次の項では、Portal Frameworkアプリケーションにブログを追加するために必要な情報を提供します。

- 第30.4.1項「ブログ・タスク・フローの理解」

- 第30.4.2項「ページへのブログの追加」

- 第30.4.5項「ブログ・タスク・フローのパラメータ」

- 第30.4.4項「ブログ・タスク・フローのパラメータの変更」

- 第30.4.3項「実行時の処理」

30.4.1 ブログ・タスク・フローの理解

他のページ・コンポーネントとともにブログをページに含める場合、ブログ・タスク・フローを使用して1つ以上のブログ要素をページに追加できます。表30-1にブログ・タスク・フローとその説明を示します。

表30-1 ブログ・タスク・フロー

ブログ・タスク・フロー

説明

ページに公開された例

ブログ・アーカイブ

日付に基づいてブログのコンポジット・リストを表示します。

ブログ・バナー

ブログのバナーを表示します。

ブログ・ダイジェスト

ブログまたはブログ投稿を表示します。

最近のブログ投稿

最新のブログ投稿のリストを表示します。

ブログ

デフォルトのデザインでブログまたはブログ投稿を表示します。

30.4.2 ページへのブログの追加

Portal Frameworkアプリケーションでページにブログを追加するには:

1. 第30.2項「Wikiとブログの要件」に記載された要件を満たしていることを確認します。

注意:

接続を設定する際、認証方法を選択する必要があります。アイデンティティ伝播を選択した場合、アプリケーションにADFセキュリティを実装し、Content ServerでSecure Socket Layer (SSL)を構成する必要があります。

外部アプリケーションを選択した場合、Content Serverに対するユーザーの認証に使用する外部アプリケーションを指定する必要があります。

詳細は、第4.2.1.1項「ツールとサービスのセキュリティの実装」を参照してください。

2. ブログ機能を公開するアプリケーションでページを作成または開きます(第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」を参照)。

3. ブログ・タスク・フローをページに追加する前に、エンド・ユーザーにタスク・フローを編集することを許可するかどうかを検討してください。実行時のページ編集を有効にするには、第18章「コンポーザを使用したページの実行時編集の有効化」を参照してください。

4. 既存のフォルダを使用してデフォルト・ブログ・ページを作成するか、コンポーネント・ブログ・タスク・フローを選択してカスタム・ブログを作成することで、ページにブログを追加します。

- 第30.4.2.1項「既存のフォルダを使用したブログの追加」

- 第30.4.2.2項「ブログ・タスク・フローを使用したページへのカスタム・ブログの追加」

30.4.2.1 既存のフォルダを使用したブログの追加

既存のフォルダがある場合、すでにブログ投稿が含まれている可能性があります。新しい空白のブログを作成する(第30.4.2.2項「ブログ・タスク・フローを使用したページへのカスタム・ブログの追加」を参照)かわりに、そのフォルダをブログ用のブログ投稿のソースとして確立できます。実行時に、ブログではそのフォルダ内のブログ投稿が表示されます。

選択したフォルダおよびそのコンテンツをページでブログとして公開するには:

1. 「アプリケーション・リソース」パネルで、「接続」、「コンテンツ・リポジトリ」の順に移動します。

2. Content Server接続の名前を特定し、その接続を開いてブログ・フォルダとして確立するフォルダにナビゲートします。

ヒント:

任意のフォルダをブログとして公開できます。ブログをより適切に編成するために、各ブログ・フォルダを親フォルダ(たとえば、Blogsというフォルダ)に保存することを検討してください。ドキュメント・タスク・フローまたはコンテンツ・サーバー・コンソールのいずれかを使用してフォルダを作成できます。

ブログ・フォルダに格納されたファイルは、そのメタデータのTypeフィールドでブログ投稿として識別され、Blog Postに設定されます。TypeをBlog Postに設定しないと、HTMLファイルをブログ・フォルダにアップロードしてもブログ投稿として公開されません。

3. ページにフォルダをドラッグしてマウス・ボタンを離すと、使用可能なすべてのタスク・フローを示すメニューが開きます(図30-5)。

図30-5 選択したフォルダで使用可能なタスク・フローのメニュー

4. メニューから、「ブログ」を選択して「タスク・フロー・バインディングの編集」ダイアログを開きます(図30-6)。

図30-6 ブログ・タスク・フローに対するパラメータの指定

5. 「タスク・フロー・バインディングの編集」ダイアログでは、選択したフォルダのリソースIDがresourceId値に自動的に移入されます。「OK」をクリックしてデフォルトのタスク・フロー・パラメータを受け入れるか、必要に応じてパラメータを変更します。詳細は、第30.4.5.5項「ブログ・タスク・フローのパラメータ」を参照してください。

6. ページとページ定義ファイルを保存し、ページをブラウザで実行します。これは、ページ(ページ定義ファイルではない)を右クリックし、「実行」を選択することで行います。

新しいブログには、選択したフォルダと同じ名前が設定されます。フォルダの下の既存のファイルは、そのTypeプロパティがBlog Postに設定されている場合はブログ投稿になります(コンテンツ・サーバーのファイル・プロパティの詳細は、『Oracle WebCenter Content Content Serverユーザーズ・ガイド』の情報更新フォームに関する項を参照してください)。投稿がブログに実行時に追加されると、ブログの投稿がこのフォルダに格納されます。第30.4.3項「実行時の処理」を参照してください。

30.4.2.2 ブログ・タスク・フローを使用したページへのカスタム・ブログの追加

ページに、ページの1つのコンポーネントとしてまたはページ全体として、空白のブログ・タスク・フローを追加する場合があります。たとえば、コンテンツ・リポジトリ接続が存在しない場合やターゲット・アイテムに動的にバインドするパラメータとしてEL式を使用する場合に、第30.4.2.1項「既存のフォルダを使用したブログの追加」で説明したメソッドのかわりにこのメソッドを使用します。また、個々のブログ・タスク・フローで、ブログの外観をカスタマイズできます。

カスタマイズされたブログ・タスク・フローをページに追加するには:

1. 「リソース・パレット」で、「WebCenter Portal - サービス・カタログ」を開きます。「タスク・フロー」の下で、追加するブログ・タスク・フローを選択し、ページにドラッグしてマウス・ボタンを放します。
5つの各ブログ・タスク・フローの詳細は、第30.4.1項「ブログ・タスク・フローの理解」を参照してください。

2. 表示されたメニューから、「リージョン」を選択します(図30-7)。

図30-7 リソース・パレットを使用したブログ・タスク・フローの追加

3. 「タスク・フロー・バインディングの編集」ダイアログで、「OK」をクリックしてデフォルトのタスク・フロー・パラメータを受け入れるか、必要に応じてパラメータを変更します。詳細は、第30.4.5項「ブログ・タスク・フローのパラメータ」を参照してください。

4. ブログを構成するのに必要な各ブログ・タスク・フローについて、この手順を繰り返します。

5. ページとページ定義ファイルを保存し、ページをブラウザで実行します。これは、ページ(ページ定義ファイルではない)を右クリックし、「実行」を選択することで行います。

内部的には新しいブログにはresourceIDで指定したフォルダと同じ名前が設定されますが、ページに表示される名前はブログ・バナー・タスク・フローのTitleパラメータで指定した値になります。フォルダの下の既存のファイルは、そのTypeプロパティがBlog Postsに設定されている場合はブログ投稿になります(コンテンツ・サーバーのファイル・プロパティの詳細は、『Oracle WebCenter Content Content Serverユーザーズ・ガイド』の情報更新フォームに関する項を参照してください)。投稿がブログに実行時に追加されると、ブログの投稿がこのフォルダに格納されます。第30.4.3項「実行時の処理」を参照してください。

30.4.3 実行時の処理

実行時に、ブログ・タスク・フローのresourceIDパラメータで指定したフォルダがページでブログとして公開されます。

- 第30.4.2.1項「既存のフォルダを使用したブログの追加」の説明に従ってブログを作成した場合、ブログとして公開したフォルダの名前が、ブログの名前としてブログ・バナーに表示されます。

- 第30.4.2.2項「ブログ・タスク・フローを使用したページへのカスタム・ブログの追加」の説明に従ってブログを作成した場合、ブログ・タスク・フローのresourceIDパラメータに指定したフォルダの名前が、内部的なブログの名前となります。ただし、ページに表示される名前は、ブログ・バナー・タスク・フローのTitleパラメータに指定した値です。

権限のあるユーザーはブログ投稿を作成でき、投稿はブログ・ページに表示されます。ユーザーは、ブログ投稿に対して編集、ダウンロード、コメントなどのタスクを実行できます。

デフォルトのブログ・ページ(図30-8)およびブログ・アーカイブ・タスク・フローでは、「アーカイブ」セクションに年および月ごとのブログ投稿へのリンクが提示されます。ある月をクリックすると、その月に作成されたすべてのブログ投稿が表示されます。

図30-8 デフォルトのブログ・ページ

ブログには、各ブログ投稿の様々な詳細が表示されます。これには、ブログ投稿のタイトル、ブログ投稿のコンテンツ、作成または変更の日付、ブログ投稿の作成ユーザーまたは最終変更ユーザーの名前およびブログ投稿に対するコメントの数などが含まれます。権限のあるユーザーは、「投稿の編集」アイコンをクリックして投稿を編集することや、「コメントの投稿」リンクをクリックしてブログ投稿に関するコメントを入力できます。

ブログ投稿のタイトルをクリックすると、ブログ投稿が開いてブログ・ページ全体が占有され(図30-9)、ブログ投稿を管理するためのコントロールが提示されます。

図30-9 ブログ投稿

ログインしていないパブリック・ユーザーがPortal Frameworkアプリケーションでブログ投稿を表示すると、各ブログ投稿に関連付けられたプロファイル写真は表示されません。パブリック・ユーザーに割り当てられたanonymous-roleは、デフォルトでプロファイルを表示する権限を付与されていないためです(表74-2「Portal Frameworkアプリケーションの自動セキュリティ権限付与」を参照)。システム管理者はgrantPermission WLSTコマンド(『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』のgrantPermissionに関する項を参照)を使用して、ブログ投稿者のプロファイル写真をパブリック・ユーザーに表示できます。例:

grantPermission(appStripe=<app-name>,
principalClass="oracle.security.jps.internal.core.principals.JpsAnonymousRoleI mpl",
principalName="anonymous-role",
permClass="oracle.webcenter.peopleconnections.profile.security.ProfilePermission",
permTarget="/oracle/webcenter/peopleconnections/profile/s8bba98ff_4cbb_40b8_beee_296c916a23ed/.*",
permActions="view")

実行時にPortal Frameworkアプリケーションでブログを管理する手順は、WebCenter Portalでブログを管理する手順と同じです。情報は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「ブログの使用」の章を参照してください。

30.4.4 ブログ・タスク・フローのパラメータの変更

ブログ・タスク・フローのパラメータを変更する手順は、他のドキュメント・タスク・フローと同じです。詳細は、第29.6項「コンテンツ・タスク・フローのパラメータの変更」を参照してください。変更可能な特定のパラメータの詳細は、第30.4.5項「ブログ・タスク・フローのパラメータ」を参照してください。

30.4.5 ブログ・タスク・フローのパラメータ

各ブログ・タスク・フローは、独自のパラメータ・セットを持ちます。これらの値は、ページにタスク・フローを追加するときに構成でき、またいつでも変更可能です。

次の項では、ブログ・タスク・フローのパラメータについて説明します。

- 第30.4.5.1項「ブログ・アーカイブ・タスク・フローのパラメータ」

- 第30.4.5.2項「ブログ・バナー・タスク・フローのパラメータ」

- 第30.4.5.3項「ブログ・ダイジェスト・タスク・フローのパラメータ」

- 第30.4.5.4項「最近のブログ投稿タスク・フローのパラメータ」

- 第30.4.5.5項「ブログ・タスク・フローのパラメータ」

30.4.5.1 ブログ・アーカイブ・タスク・フローのパラメータ

ブログ・アーカイブ・タスク・フローでは、日付に基づいてブログのコンポジット・リストが表示されます。

関連項目:

第30.4.1項「ブログ・タスク・フローの理解」

タスク・フローをページに追加すると、ブログ・アーカイブ・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-2 に、ブログ・アーカイブ・タスク・フローのパラメータを示します。

表30-2 ブログ・アーカイブ・タスク・フローのパラメータ

パラメータ

説明

resourceId

ブログ・フォルダのリソースID (図30-6を参照)。次の形式で指定できます。

- connection_name/path_to_folder
ここで、connection_nameはコンテンツ・サーバー接続の名前で、path_to_folderはブログとして公開するコンテンツ・サーバー上のフォルダへのパスです。

- connection_name#dCollectionID:dCollectionId
ここで、connection_nameはコンテンツ・サーバー接続の名前で、dCollectionIdはブログとして公開するコンテンツ・サーバー上のフォルダのコレクションIDです。

30.4.5.2 ブログ・バナー・タスク・フローのパラメータ

ブログ・バナー・タスク・フローでは、ブログのバナーが表示されます。

関連項目:

第30.4.1項「ブログ・タスク・フローの理解」

タスク・フローをページに追加すると、ブログ・バナー・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-3に、ブログ・バナー・タスク・フローのパラメータを示します。

表30-3 ブログ・バナー・タスク・フローのパラメータ

パラメータ

説明

resourceId

ブログ・フォルダのリソースID (図30-6を参照)。次の形式で指定できます。

- connection_name/path_to_folder
ここで、connection_nameはコンテンツ・サーバー接続の名前で、path_to_folderはブログとして公開するコンテンツ・サーバー上のフォルダへのパスです。

- connection_name#dCollectionID:dCollectionId
ここで、connection_nameはコンテンツ・サーバー接続の名前で、dCollectionIdはブログとして公開するコンテンツ・サーバー上のフォルダのコレクションIDです。

imageURL

(オプション)ブログ・バナーで使用される背景イメージ。指定しない場合、現在のスキンによって提供されるイメージがデフォルトの背景イメージになります。

title

(オプション)ブログ・バナーで使用されるタイトル。

デフォルト: ブログ・フォルダ名。

30.4.5.3 ブログ・ダイジェスト・タスク・フローのパラメータ

ブログ・ダイジェスト・タスク・フローには、ブログまたはブログ投稿が表示されます。

関連項目:

第30.4.1項「ブログ・タスク・フローの理解」

タスク・フローをページに追加すると、ブログ・ダイジェスト・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-4に、ブログ・ダイジェスト・タスク・フローのパラメータを示します。

表30-4 ブログ・ダイジェスト・タスク・フローのパラメータ

パラメータ

説明

resourceId

表示するターゲット・ブログ・リソース。これはフォルダID(このフォルダにリストされているブログが表示される場合)かドキュメントID(ブログの投稿が表示される場合)にできます。

フォルダは、次の形式で指定できます。

- connection_name/path_to_folder
ここで、connection_nameはコンテンツ・サーバー接続の名前で、path_to_folderはブログとして公開するコンテンツ・サーバー上のフォルダへのパスです。

- connection_name#dCollectionID:dCollectionId
ここで、connection_nameはコンテンツ・サーバー接続の名前で、dCollectionIdはブログとして公開するコンテンツ・サーバー上のフォルダのコレクションIDです。

注意: ユーザーによる新規ブログ投稿の追加(タスク・フローの「新規投稿」をクリックする)を許可するには、指定したフォルダにContent Serverに割り当てたセキュリティ・グループが必要です。

year

ブログ・エントリのフィルタに使用されるターゲット年を指定する4桁の数字。

例: 2012

month

ブログ・エントリのフィルタに使用されるターゲット月を指定する数字(1から12まで)。このパラメータを有効にするには、フィルタの年のパラメータも指定する必要があります。

例: 10 (10月)

hideComments

コメント機能が公開されるかどうかを指定します。

- 選択: 「コメント」リンクとペインは非表示になります。

- 選択解除(デフォルト): 「コメント」リンクとペインは表示されます。

pageSize

この数をブログ・ダイジェスト・ビューア内の表示ブログ投稿数が上回ると、「前へ」および「次へ」のアイコンが有効になります。

デフォルト: 10

30.4.5.4 最近のブログ投稿タスク・フローのパラメータ

最近のブログ投稿タスク・フローには、最新のブログ投稿のリストが表示されます。

関連項目:

第30.4.1項「ブログ・タスク・フローの理解」

タスク・フローをページに追加すると、最近のブログ投稿タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-5に、最近のブログ投稿タスク・フローのパラメータを示します。

表30-5 最近のブログ投稿タスク・フローのパラメータ

パラメータ

説明

resourceId

ブログ・フォルダのリソースID (図30-6を参照)。次の形式で指定できます。

- connection_name/path_to_folder
ここで、connection_nameはコンテンツ・サーバー接続の名前で、path_to_folderはブログとして公開するコンテンツ・サーバー上のフォルダへのパスです。

- connection_name#dCollectionID:dCollectionId
ここで、connection_nameはコンテンツ・サーバー接続の名前で、dCollectionIdはブログとして公開するコンテンツ・サーバー上のフォルダのコレクションIDです。

recentPostListSize

表示する最近の投稿の数。

デフォルト: 10

30.4.5.5 ブログ・タスク・フローのパラメータ

ブログ・タスク・フローには、デフォルトのデザインでブログまたはブログ投稿が表示されます。

関連項目:

第30.4.1項「ブログ・タスク・フローの理解」

ブログ・タスク・フローに固有のパラメータは、「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-6に、ブログ・タスク・フローのパラメータを示します。

表30-6 ブログ・タスク・フローのパラメータ

パラメータ

説明

resourceId

表示するターゲット・ブログ・リソース。これはフォルダID(このフォルダにリストされているブログが表示される場合)かドキュメントID(ブログの投稿が表示される場合)にできます。

フォルダは、次の形式で指定できます。

- connection_name/path_to_folder
ここで、connection_nameはコンテンツ・サーバー接続の名前で、path_to_folderはブログとして公開するコンテンツ・サーバー上のフォルダへのパスです。

- connection_name#dCollectionID:dCollectionId
ここで、connection_nameはコンテンツ・サーバー接続の名前で、dCollectionIdはブログとして公開するコンテンツ・サーバー上のフォルダのコレクションIDです。

注意: ユーザーによる新規ブログ投稿の追加(タスク・フローの「新規投稿」をクリックする)を許可するには、指定したフォルダにContent Serverに割り当てたセキュリティ・グループが必要です。

hideComments

コメント機能が公開されるかどうかを指定します。

- 選択: 「コメント」リンクとペインは非表示になります。

- 選択解除(デフォルト): 「コメント」リンクとペインは表示されます。

pageSize

この数をブログ・タスク・フロー内の表示ブログ投稿数が上回ると、「前へ」および「次へ」のアイコンが有効になります。

デフォルト: 10

31 Content Management REST API

OASIS CMIS (Content Management Interoperability Service)技術委員会は、Enterprise Content Management (ECM)システムの相互運用性の向上を可能にするWebサービス・インタフェース仕様の標準化を目指して活動しています。詳細は、OASISのCMISサイト(http://www.oasis-open.org/committees/cmis/)を参照してください。

Content Management REST Serviceは、CMIS RESTful AtomPubサーバー・バインディングを使用して、アプリケーション内に構成されたOracle Content Serverのリポジトリにアクセスするサーバーを提供します。

この章はOASIS CMIS仕様を補完するためのものであり、Content Management REST Serviceの具体的な実装について詳しく説明します。まず最初に、すべてのユーザーはOASIS CMIS仕様を確認する必要があります。この章は、http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis-spec-v1.0.htmlで参照可能なCMIS (Content Management Interoperability Service)バージョン1.0を参照しています。

この仕様には、ドメイン・モデルと2つのサーバー・バインディングが含まれています。前述のように、Content Management REST Serviceでは現在RESTful AtomPub bindingバインディングのみが実装されます。AtomおよびAtomPubはレスポンスのデフォルト・フォーマットであるため、ご使用に際してはこれらを十分理解していることが必要です。

注意:

CMISは、広範囲の異なるコンテンツ・システムのための最低限の共通の基準を提供します。これは、Oracle WebCenter Contentの機能と連携していません。利用可能な機能の詳細は、Content Management REST Serviceのサービス・ドキュメントを参照してください。

- 第31.1項「CMISドメイン・モデル」

- 第31.2項「CMIS第II部: RESTful AtomPubバインディング」

- 第31.3項「Content Management REST Serviceのベスト・プラクティスおよび例」

31.1 CMISドメイン・モデル

CMIS仕様の2項: 「Domain Model」では、1つ以上のコンテンツ管理リポジトリとともに動作するアプリケーションで使用可能なドメイン・モデルを定義しています。

- 31.1.1項「データ・モデル」

- 31.1.2項「サービス」

31.1.1 データ・モデル

Content Management REST Serviceのサービス・ドキュメントは、AtomPubワークスペースで構成されています。ワークスペースはそれぞれ、コンテンツ接続にマッピングされます(Content Management REST Serviceでサポートされているのは、Oracle WebCenter Contentリポジトリのみです)。サービス・ドキュメントの詳細は、次項第31.2項「CMIS第II部: RESTful AtomPubバインディング」を参照してください。

31.1.1.1 リポジトリ

このリリースでは、2.1.1項にリストされているオプション機能の一部は実装されていません。今後のリリースで、バージョニング、ACL、ポリシー、リレーションシップ、変更ログ、フォルダの下位要素/ツリーおよびレンディションの実装が検討される予定です。

Content Management REST Service実装には、具体的に次のオプション機能が含まれています。

capabilityGetDescendants = true
capabilityGetFolderTree = false
capabilityContentStreamUpdatability = anytime
capabilityChanges = none
capabilityRenditions = none
capabilityMultifiling = false
capabilityUnfiling = false
capabilityVersionSpecificFiling = false
capabilityPWCUpdateable = false
capabilityPWCSearchable = false
capabilityAllVersionsSearchable = false
capabilityJoin = none
capabilityACL = none
capabilityQuery = none, metadataonly, or both combined

31.1.1.2 オブジェクト

Content Management REST Serviceでは、ドキュメント・オブジェクトおよびフォルダ・オブジェクトがサポートされています。CMISでは、ノードのcmis:baseTypeIdはcmis:folderまたはcmis:documentとなります。また、タイプのcmis:baseIdはcmis:folderまたはcmis:documentとなります。

31.1.1.3 オブジェクト型

CMISオブジェクト型には、Oracle WebCenter Content: Content Serverメタデータ・フィールド定義および Oracle WebCenter ContentのSite Studioリージョン定義からマップされたフィールドが含まれています。

Oracle WebCenter Contentメタデータ・フィールドからCMISプロパティ定義へのマッピングは、次のとおりです。

表31-1 コンテンツ・サーバー・メタデータのマッピング

Oracle WebCenter Contentメタデータ

CMISプロパティ定義

選択リストを検証して構成されたオプション・リスト、およびYesNoViewビューやTrueFalseViewビューを持つTEXTメタデータ・フィールド

cmis:propertyBoolean

他のすべてのTEXTメタデータ・フィールド

cmis:propertyString

LONG TEXTメタデータ・フィールド

cmis:propertyString

MEMOメタデータ・フィールド

cmis:propertyString

INTEGERメタデータ・フィールド

cmis:propertyInteger

DATEメタデータ・フィールド

cmis:propertyDateTime

DECIMALメタデータ・フィールド

cmis:propertyDecimal

Site Studioリージョン定義フィールドからCMISプロパティ定義へのマッピングは、次のとおりです。

表31-2 Site Studioリージョン定義のマッピング

Site Studioリージョン定義

CMISプロパティ定義

イメージ要素定義フィールド

cmis:propertyString

WYSIWYG要素定義フィールド

cmis:propertyString

プレーン・テキスト要素定義フィールド

cmis:propertyString

静的リスト要素定義フィールド

cmis:propertyString

31.1.1.4 ドキュメント・オブジェクト

ドキュメント・オブジェクトは、リポジトリによって管理される基本的な情報エンティティです。CMIS仕様で定義されているように、ドキュメント・オブジェクトは、バージョニング可能、ファイリング可能、問合せ可能、制御可能およびACLControl可能にすることができます。前述のように、このリリースのContent Management REST Serviceでは、バージョニング、マルチファイリング、ポリシーまたはACLをサポートしていません。

あるNodeが FolderではなくDocumentであると判定された場合、その子ノードはCMISを介しては公開されません。CMISでは、各Documentオブジェクトは1つのコンテンツ・ストリームに関連付けられており、WebCenter CMIS RESTでは、このストリームは、そのドキュメントに関連付けられたOracle WebCenter Content: Content Serverバイナリです。

31.1.1.5 フォルダ・オブジェクト

CMIS仕様では、フォルダ・オブジェクトはコンテンツ・ストリームを持たず、バージョニング可能ではありません。ノードがフォルダであると判断されると、Content Management REST Serviceはそのノードをこの方法で公開します(Oracle WebCenter Contentでは、フォルダはコンテンツ・ストリームを持たず、バージョニング可能ではありません)。

31.1.1.6 リレーションシップ・オブジェクト

CMIS仕様の2.1.6項: 「Relationship Object」は適用できません。Content Management REST Serviceはこのリリースのリレーションシップをサポートしていません。

31.1.1.7 ポリシー・オブジェクト

CMIS仕様の2.1.7項: 「Policy Object」は適用できません。Content Management REST Serviceはこのリリースのポリシーをサポートしていません。

31.1.1.8 アクセス制御

CMIS仕様の2.1.8項: 「Access Control」は適用できません。Content Management REST ServiceはこのリリースのACLをサポートしていません。許容されるアクションの詳細は、次の項を参照してください。

31.1.1.8.1 AllowableActionsマッピング

この項では、オブジェクトに対して定義される許容可能なアクションを一覧表示します。このリリースの実装内容により、すべてのオブジェクトに対してハードコードされているアクションも一部あります。その他の許容可能なアクションは、リポジトリ構成に基づいて設定されます。

- canGetObjectRelationships = false

- canCreateRelationship = false

- canGetDescendants = false

- canGetFolderTree = false

- canCheckOut = false(バージョニング)

- canCancelCheckOut = false(バージョニング)

- canCheckIn = false(バージョニング)

- canAddObjectToFolder = false(マルチファイリング)

- canRemoveObjectFromFolder = false(アンファイリング/マルチファイリング)

- canApplyPolicy = false

- canGetAppliedPolicies = false

- canRemovePolicy = false

- canCreatePolicy = false

- canApplyACL = false

- canGetACL = false

- canGetRenditions = false

- canDeleteTree = true

- canGetAllVersions = false (versioning)

31.1.1.9 バージョニング

CMIS仕様の2.1.9項: 「Versioning」は適用できません。Content Management REST Serviceはこのリリースのバージョニングをサポートしていません。

31.1.1.10 問合せ

CMIS問合せは結果セットを返します。結果セットの各エントリ・オブジェクトには、問合せで指定されたプロパティのみが含められます。Content Management REST Serviceでは問合せ内でのJOINをサポートしていないため、各結果エントリは単一ノードからのプロパティを表します。共通の検索では、"SELECT * FROM …"などの問合せが使用されます。

- FROM句は検索対象のコンテンツ・タイプを指定します。

- FROM cmis:document ==> 任意のOracle WebCenter Contentドキュメント(例: IDC:GlobalProfile)

- FROM cmis:document ==> 任意のOracle WebCenter Contentフォルダ(例: IDC:Folder)

- FROM typeQueryName ==> タイプが問合せ可能であるかぎり、そのタイプのcmis queryName(例: ora:t:IDC!;GlobalProfile)

- cmis:document and cmis:folderタイプは常に問合せ可能です。その他のタイプは、リポジトリ内で検索可能であれば問合せ可能です。

- IN_FOLDER述語は、指定されたフォルダID(結果の親)として実装されます。

- IN_TREE述語は、指定されたフォルダID(結果のフォルダ構造内の親)として実装されます。

- CONTAINS() 述語は、フルテキスト問合せ表現の演算子です。

- cmis:documentおよびcmis:folderのプロパティは、それに対応するOracle WebCenter Contentシステム・プロパティが検索可能かつソート可能であれば、問合せ可能および順序付け可能となります。システム・プロパティは次のようにマッピングされます。

- cmis:createdBy ==> dDocAuthor

- cmis:lastModifiedBy ==> dDocCreator

- cmis:creationDate ==> dCreateDate

- cmis:lastModificationDate ==> dLastModifiedDate (10gでは、フォルダはdLastModifiedDateにマップされ、ドキュメントはdCreateDateにマップされます)

- cmis:name ==> dOriginalName(ドキュメント用)またはdCollectionName(フォルダ用)

- cmis:contentStreamFileName ==> dOriginalName

- cmis:contentStreamLength ==> VaultFileSize

- cmis:contentStreamMimeType ==> dFormat

- cmis:objectId ==> dDocName

- cmis:objectTypeId ==> Oracle WebCenter Contentプロファイル名またはSiteStudioリージョン定義名

注意:

cmis:objectTypeIdが順序付け可能となることはありません。

- cmis:path ==> IN_FOLDERまたはIN_TREE述語を使用してください。

注意:

CMIS問合せ内で表示できない機能が含まれるリポジトリもあれば、問合せ内で使用可能なCMIS問合せ述語(または述語の組合せ)が制限されるような制約を持つリポジトリもあります。前述のマッピングを使用して、リポジトリの機能と制約によるCMIS問合せでの考慮事項を確認してください。

- ネストされたプロパティは、問合せ可能でも順序付け可能でもありません。

- Content Management REST Serviceの実装では、Oracle WebCenter Contentでソート可能と指定されるプロパティが順序付け可能と出力されます。このリストには、実際にはOracle WebCenter Contentでソートできないプロパティが含まれていることがあります。Oracle WebCenter Contentでソート・エラーと出力されるフィールドに対して順序付けを可能にするには、次の手順に従って、指定したOracle WebCenter Contentフィールドをソート可能にします。

1. 「管理」に移動して、「管理アプレット」を開きます。

2. Configuration Managerアプレットを開いて、「拡張検索のデザイン」をクリックします。

3. 順序付け可能にするフィールドを編集し、「ソート可能」を選択します。

4. 変更内容を保存して「管理」を修了します。

次の表は、具体的な検索の注意事項と推奨事項を示します。問合せの例は、第31.3項「Content Management REST Serviceのベスト・プラクティスおよび例」を参照してください。

表31-3 検索に関する注意事項と推奨事項

注意事項

推奨事項

Oracle WebCenter Contentでは、null値または非null値での問合せに対するサポートが限定的です。

検索動作での相違に注意して、サポート対象外の基準に左右される検索表現式を記述しないでください。

フォルダの再帰的検索は、Oracle WebCenter Contentではサポートされていませんが、Oracle WebCenter Contentサーバーで右記のように構成されている場合、ドキュメント用にサポートされます。

検索範囲には、ドキュメントのみを含めるようにしてください(select * from cmis:documentのようなselect句を追加してください)。

検索オブジェクト上に検索パスを設定します(where IN_TREE('/StellentRepository/IDC:Folder/2のようなwhere句を追加してください)。

folders_g CollectiveSearchRecursiveContentとこれに関連する設定(Oracle WebCenter Content config.cfgファイルのCollectionMaxBranchなど)を構成します。

多値プロパティの演算子はサブストリング・マッチを実行します。これは、ANY <multiValuedQueryName> IN (<literal>, ...)または<literal> = ANY < multiValuedQueryName>に適用されます。Oracle WebCenter Contentでは、オプション・リスト付きのフィールドに値をカンマ区切り形式で格納します。たとえば、A、BおよびCという値がある場合には、「A, B, C」と表現されます。「A, B」に対してANY検索またはANY IN検索を使用すると、このアイテムが見つかります。

検索動作での相違に注意して、必要以上のマッチ数を検出しないようにするために、Configuration Managerアプレット内のOracle WebCenter Contentオプション・リスト・デリミタ文字を変更することを考慮してください。

フォルダ(FROM cmis:folder)の検索時には、各基準に対して最大1つの値を指定できます。より選択的な問合せを実行するために、各基準は他の基準と論理的にANDでつながれたものとみなされます。フォルダの検索時には、ORまたはNOT演算子のサポートはありません。

Oracle WebCenter Contentフォルダ検索では、ORおよびNOTを使用しないでください。

すべてのプロパティが検索可能というわけではなく、検索で検索可能でないプロパティに遭遇した場合はParseExceptionが返されます(400エラー)。

Oracle WebCenter Content Configuration Manager情報フィールドのセクションを調べるか、ContentType定義を見直すことで、指定のコンテンツ・タイプに対してどのプロパティが検索可能か理解してください。isSearchableフィールド設定のURLを調べます。

URLの例:

http://myContentServer/idc/idcplg?IdcService=VCR_GET_CONTENT_TYPE&vcrContentType=IDC:Folder&IsSoap=1

または、CMISを介して固有のタイプを調べます。

すべてのContentTypeが検索可能というわけではありません。検索できないContentTypesに対して検索を試みると、例外がスローされます。たとえば、IDC:FileReferenceは検索できません。

すべてのContentTypeが検索可能というわけではないことに注意してください。

String多値プロパティのみ検索可能です。

String以外の多値プロパティ・タイプの検索を指定しないでください。

LONGプロパティにはNOT演算子を使用できません。

サポートされている構文を使用して問合せを再構成してください。

ソート基準は1つしかサポートされていません。

2つ以上のソート基準を使用する検索表現式を記述しないでください。

ソートまたは索引の付いていないフィールドは、結果的に例外となります。

索引の付いていないフィールドで検索を実行すると、「DRG-10837: セクションdStatusは存在しません」などの埋込み例外コードで、例外がスローされます。

ソート基準としてそれらを使用する前に、どのフィールドに索引が付けられているのか把握してください。isSortableフィールド設定のURLを調べます。

URLの例: http://myContentServer/idc/idcplg?IdcService=GET_ADVANCED_SEARCH_OPTIONS&IsSoap=1

または、CMISでタイプを調べて、プロパティ定義が問合せ可能かどうかを確認します。

検索問合せでは空の値は許可されていません。

cmis:name != ''.のような基準を使用しないでください。

Notequals演算子は非文字列のプロパティではサポートされません。

検索動作での相違に注意して、サポート対象外の基準に左右される検索表現式を記述しないでください。

同じOracle WebCenter Contentリポジトリでの複数の検索パスはサポートされません。

検索動作での相違に注意して、サポート対象外の基準に左右される検索表現式を記述しないでください。

ドキュメントの検索時には、Oracle WebCenter Contentが適切に構成されていれば再帰的検索(フォルダ・ツリー検索)がサポートされます。

検索パスが設定されていない場合には、リポジトリ内のすべてのドキュメント(ファイル済と未ファイル分の両方)が検索されます。

コンテンツ・サーバーのfolders_g CollectionSearchRecursiveContentとこれに関連する設定(Oracle WebCenter Content config.cfgファイルのCollectionMaxBranchなど)を構成します。これらの設定は、Oracle WebCenter Contentドキュメントで記述されます。フォルダ・ツリーの範囲に絞ってドキュメント検索を実行するには、IN_TREE述語を使用します。

ドキュメントの検索でLIKE演算子を使用する場合、末尾のパス要素でワイルドカード(%)のみサポートされています。

検索動作での相違に注意して、サポート対象外の基準に左右される検索表現式を記述しないでください。

ドキュメント(select * from cmis:document)を検索する場合、複数のコンテンツ・タイプに検索を限定することはできません。たとえば、select * from IDC:MyProfile, IDC:AnotherProfileはサポートされません。これは、コンテンツ・タイプが明らかに複数でありJOINSがサポートされていないためです。

検索を複数のコンテンツ・タイプに限定する必要がある場合は、複数の問合せを出して同じ動作を実現します。すべてのタイプを横断的に検索する場合は、select文内でcmis:documentを使用します。

cmis:objectTypeIdが問合せで指定されている場合、Oracle WebCenter Content検索ではORはサポートされません。他のパラメータはこの基準とANDでつながれたものとみなされますが、ORはサポートされません。

この機能が必要がある場合は、複数の問合せを発行して同じ動作を実現します。

cmis:objectTypeId基準は、 ==、!=、およびlikeのみサポートしています。!=の使用はフォルダを除外するケースに限られています(select * from cmis:documentの追加と同じ動作になります)。

cmis:objectTypeId基準を使用するときは、有効な演算子に注意します。

問合せは、Oracle WebCenter Content検索エンジンの選択に応じて大文字と小文字を区別する場合があります。

Oracle WebCenter Content検索エンジンの選択は、大文字と小文字を区別するかどうかに影響することがあるので注意してください。メタデータがOracleTextSearchを使用して検索すると、検索エンジンは一般に大文字と小文字を区別しません。メタデータがDATABASE.FULLTEXTを使用して検索すると、検索エンジンは一般に大文字と小文字を区別します。メタデータ・フィールドにより正確な動作が異なることがあります。

31.1.2 サービス

CMIS仕様の第2.2項「サービス」で説明されているメソッドは、Content Management REST Serviceによって実装されています。具体的な実装の詳細は、第31.2項「CMIS第II部: RESTful AtomPubバインディング」で説明します。

31.2 CMIS第II部: RESTful AtomPubバインディング

CMIS仕様の3項: 「RESTful AtomPub Binding」では、1つ以上のコンテンツ管理リポジトリとともに動作するアプリケーションで使用可能なAtomPubに基づいた仕様を定義しています。RESTサービスはポータル・インスタンスを通して使用できます。

31.2.1 サービス・ドキュメント

リポジトリのナビゲーションはすべて、AtomPubサービス・ドキュメントから開始されます。リポジトリ内のすべてのアクセス可能コンテンツの検出は、このドキュメントからコレクション、リンクおよびテンプレートを介して行うことができます。CMIS Webアプリケーションのコンテキスト・ルートからのサービス・ドキュメントのURIは、/rest/cmis/repositoryです。

したがって、前述の例のようにアプリケーションがlibrary-context-root-overrideとともにデプロイされている場合、サービス・ドキュメントにはhttp://hostname:port/rest/cmis/repositoryというURLを介してアクセスします。

注意:

RESTアプリケーションはポータルとのみ使用可能で、Portal Frameworkアプリケーションとは使用できません。しかし、ポータルで使用可能なRESTおよびCMISリソースにアクセスするためのHTTPリクエストをFrameworkアプリケーションから生成できます。目的とする関連コンテンツへの接続でポータル・インスタンスが構成されていることを確認する必要があります。

デフォルトでは、このドキュメントにはOracle WebCenter Contentの構成済のリポジトリごとにワークスペースが含まれています(Oracle WebCenter ContentリポジトリのみがOracle WebCenter PortalのCMIS RESTでサポートされています)。単一リポジトリのサービス・ドキュメントを取得するには、CMIS AtomPubバインディング仕様の3.6.2.1項で説明されているように、repositoryId問合せパラメータを使用します。

前項で説明したように、サービス・ドキュメントはAtomPubワークスペースから構成されます。各ワークスペースは Oracle WebCenter Portal Content Server接続にマッピングされます。

ユーザーはサービス・ドキュメントから開始して、予測されたパスを使用してコレクションやリンクにナビゲートすることが想定されるためです。コレクションのリンクとタイトルおよびタイプとの関係はすべてCMIS仕様で定義されているため、一般的にはクライアント実装によるナビゲートが可能です。また、パスによるオブジェクトへのアクセス、IDによるオブジェクトへのアクセス、IDによるタイプへのアクセス、および問合せへのアクセスを簡単に行うためにリポジトリごとに定義されたテンプレートもあります。パスおよびIDのテンプレートでの変数の書式を確認するには、フォルダおよびドキュメントのエントリを参照してください。

31.2.2 レスポンス・フォーマット

CMIS仕様の3.1.3項: 「Response Formats」では、Acceptヘッダー内に表示されているサポート対象のメディア・タイプでオーバーライドされないかぎり、デフォルトでAtom/AtomPubスタイル・フォーマットが返されることが示されています。

一般的なAtomPubフィード・リーダーを使用すると、CMIS RESTサーバーにより返されたフィードをウォークスルーできます。すべてのCMIS詳細が表示されるわけではありませんが、リンクをナビゲートすることはできます。一般に、フィード・リーダーを設定するためには、特定のフィードのURIがわかっている必要があります。このURIは、サービス・ドキュメント(たとえば、typesdescendantsのワークスペース・リンク)をナビゲートすることにより確認できます。

問合せ構文の詳細は、CMIS仕様を参照してください。Content Management REST Serviceのベスト・プラクティスおよび例については、第31.3項「Content Management REST Serviceのベスト・プラクティスおよび例」を参照してください。

31.2.3 追加機能

Content Management REST ServiceではCMIS仕様の他に、次の追加機能を提供します。

- 第31.2.3.1項「フォルダの子コレクション」

- 第31.2.3.2項「ドキュメント・エントリ」

- 第31.2.3.3項「コンテンツ・ストリーム」

31.2.3.1 フォルダの子コレクション

この仕様は、次のCMISサービスを定義します。

- GET: getChildren

- POST: createDocument
またはcreateFolder
またはcreatePolicy
またはmoveObject
またはaddObjectToFolder

Content Management REST Serviceでは、次の追加のサービスが提供されます。

- POST: create
このサービスには、uid、fileName、contentId、commentsおよびsimpleResponseという5種類の問合せパラメータと、1つのヘッダー・パラメータSlugが用意されています。これは、簡単なバイナリ・リクエストのアップロードとして使用されることを意図したサービスです。このサービスでは新規ドキュメントが作成されます。SlugおよびfileNameを使用して、リクエストに添付されるバイナリの名前を付けます(両方のパラメータの使用はオプションで、1つのみを定義する必要があります。fileNameが最初にチェックされます)。commentsパラメータはオプションであり、Oracle WebCenter ContentがdDocNameを自動生成するように設定されている場合、contentIdはオプションです。

- POST: create Content-Type: multipart/form-data
このサービスには、1つの問合せパラメータuid(ドキュメントが作成されるフォルダのuid)が用意されています。ブール型の問合せパラメータsimpleResponseがfalseに設定されている場合、メディア・タイプapplication/atom+xml;type=entryをレスポンスとして返します。trueに設定されている場合、新しく作成されたドキュメントを指すURIとともに、メディア・タイプtext/htmlがレスポンスとして返されます。commentsおよびsimpleResponseパラメータは両方ともオプションであり、Oracle WebCenter ContentがdDocNameを自動生成するように設定されている場合、contentIdはオプションです。名前"fileUpload"が必要です。

<html>
<head>
<title>simple post</title>
</head>
<body>
<form action="http://<host>:<port>/rest/api/cmis/children/StellentRepository?uid=IDC:Folder/2"
method="POST"
enctype="multipart/form-data">
Select a document to upload: <input type="file" name="fileUpload"/><br>
<input type="hidden" name="comments" value="this is just a comment"/>
<input type="hidden" name="contentId" value="uniqueID1"/>
<input type="hidden" name="simpleResponse" value="true"/>
<input type="submit" value="Submit"/>
</form>
</body>
</html>

31.2.3.2 ドキュメント・エントリ

この仕様は、次のCMISサービスを定義します。

- GET: getObject、getObjectOfLatestVersion (getObject)

- PUT: updateProperties

- DELETE: deleteObject

Content Management REST Serviceでは、次の追加のサービスが提供されます。

- POST: postToDelete
この新しいサービスには、uidおよび_methodという2つの問合せパラメータが用意されています。ドキュメントはPOSTを介して削除できます。

http://<host>:<port>/rest/api/cmis/document/repoName?uid=ABC&_method="delete"

31.2.3.3 コンテンツ・ストリーム

この仕様は、次のCMISサービスを定義します。

- GET: getContentStream

- PUT: setContentStream

- DELETE: deleteContentStream

Content Management REST Serviceでは、次の追加のサービスが提供されます。

- POST: postTunnelContentStream
このサービスには、uid、overwriteFlag、fileName、commentsおよび_methodという5種類の問合せパラメータと、1つのヘッダー・パラメータSlugが用意されています。これは、簡単なバイナリ・リクエストのアップロードまたはPOSTを介した削除として使用されることを意図したサービスです。このサービスには、ドキュメントがすでに存在している必要があります。SlugおよびfileNameを使用して、リクエストに添付されるバイナリの名前を付けます(両方のパラメータの使用はオプションで、1つのみを定義する必要があります。fileNameが最初にチェックされます)。overwriteFlagパラメータは、デフォルトでtrueに設定されています。commentsパラメータはオプションで、_methodの有効な値は"delete"または"put"です(大文字と小文字を区別しません)。

http://<host>:<port>/rest/api/cmis/stream/repoName?uid=ABC&_method="delete"

- POST: postTunnelContentStream
Content-Type: multipart/form-data
このサービスには、1つの問合せパラメータuidが用意されています。これは、簡単なhtmlのmultipart/form-dataのアップロードまたはPOSTを介した削除として使用することを意図したサービスです。このサービスには、ドキュメントがすでに存在している必要があります。属性名"fileUpload"は必須です。"comments"はオプションで、"_method"の有効な値は"delete"または"put"です(大文字と小文字を区別しません)。

<form action="http://<host>:<port>/rest/api/cmis/stream/repoName?uid=WDOC019113"
method="POST"
enctype="multipart/form-data">
Select a document to upload: <input type="file" name="fileUpload"/><br>
<input type="hidden" name="comments" value="this is just a comment"/>
<input type="hidden" name="_method" value="PUT"/>
<input type="submit" value="Submit"/>
</form>

31.3 Content Management REST Serviceのベスト・プラクティスおよび例

この項では、Content Management REST Serviceの使用に関するベスト・プラクティスおよび例を示します。問合せ構文の詳細は、CMIS仕様を参照してください。

この項には次のサブセクションが含まれます:

- 31.3.1項「ベスト・プラクティス」

- 第31.3.2項「Content Management REST Serviceの例」

31.3.1 ベスト・プラクティス

Content Management REST Serviceを使用するリポジトリに対して推奨されるベスト・プラクティスを次に示します。

- 問合せの"FROM"部分に使用できるタイプを決めるには、AtomPubサービス・ドキュメントからタイプ・コレクションに関する項目を参照してください。タイプは必ず問合せ可能とし、必ずそのタイプの問合せ名を使用するようにする必要があります。
たとえば、IDC:GlobalProfileは次の例に似たタイプ情報を保持できます。

<cmis:localName>IDC:GlobalProfile</cmis:localName>
<cmis:displayName>IDC:GlobalProfile</cmis:displayName>
<cmis:queryName>ora:t:IDC!;GlobalProfile</cmis:queryName>
<cmis:queryable>true</cmis:queryable>

前述のタイプ情報に関する問合せの例は、"SELECT * FROM ora:t:IDC!;GlobalProfile"とすることができます。

- 問合せの"SELECT"および"WHERE"部分に使用できるプロパティを決めるには、関連するタイプのエントリを参照してください。そのタイプのプロパティ定義がそれぞれリストされ、問合せ可能および順序付け可能に対応する設定が用意されます。cmis:querynameがこの問合せで使用できる値です。
たとえば、IDC:GlobalProfileは次の例に似たプロパティ定義を保持できます。

<cmis:propertyStringDefinition>
<cmis:id>/stanl18-ucm11g/IDC:GlobalProfile.ora:p:dDocName</cmis:id>
<cmis:localName>dDocName</cmis:localName>
<cmis:displayName>dDocName</cmis:displayName>
<cmis:queryName>ora:p:dDocName</cmis:queryName>
<cmis:description>Content ID</cmis:description>
<cmis:propertyType>string</cmis:propertyType>
<cmis:cardinality>single</cmis:cardinality>
<cmis:updatability>readwrite</cmis:updatability>
<cmis:inherited>false</cmis:inherited>
<cmis:required>false</cmis:required>
<cmis:queryable>true</cmis:queryable>
<cmis:orderable>true</cmis:orderable>
</cmis:propertyStringDefinition>

前述のプロパティ定義に関する問合せの例は、"SELECT ora:p:dDocName FROM ora:t:IDC!;GlobalProfile"とすることができます。

- 問合せの可読性を高めるために、ContentTypeおよびPropertyDefinitionの名前には英数字以外の文字を使用しないでください。

31.3.2 Content Management REST Serviceの例

この項では、問合せの例をいくつか示します。問合せ構文の詳細は、CMIS仕様を参照してください。(問合せのURI全部を取得するには、サービス・ドキュメント内の問合せURIテンプレートを参照してください。)

- SELECT * from cmis:folder

- SELECT cmis:name, cmis:contentStreamFileName, cmis:contentStreamMimeType, cmis:contentStreamLength FROM cmis:document WHERE cmis:contentStreamFileName = 'BinaryName' AND cmis:contentStreamMimeType = 'text/html' AND cmis:contentStreamLength > 1

- SELECT cmis:name, cmis:creationDate, cmis:lastModificationDate FROM cmis:folder WHERE cmis:name = 'Trash' AND cmis:lastModificationDate > TIMESTAMP '2008-05-18T10:32:44.703-06:00'

- SELECT * FROM cmis:document WHERE cmis:name LIKE 'baker%'

- SELECT * FROM cmis:document WHERE cmis:name NOT IN ('nodeBoolean', 'nodeLong')

- SELECT cmis:name from cmis:document where IN_TREE('/StellentRepository')

- SELECT * FROM ora:t:IDC:GlobalProfile WHERE ora:p:xBooleanTestField = FALSE ORDER BY ora:p:dDocTitle ASC

- SELECT ora:p:xMultiValuedDelimiterTest FROM ora:t:IDC:GlobalProfile WHERE ANY ora:p:xMultiValuedDelimiterTest NOT IN ('four')

- SELECT cmis:name FROM ora:t:IDC:GlobalProfile WHERE CONTAINS('test') ORDER BY ora:p:dInDate DESC

- SELECT * FROM cmis:document where IN_TREE('/StellentRepository/IDC:Folder/2')

第V部

コミュニケーションとコラボレーションの有効化

第V部の内容は次のとおりです。

- 第32章「お知らせの統合」

- 第33章「ディスカッションの統合」

- 第34章「インスタント・メッセージおよびプレゼンスの統合」

- 第35章「メールの統合」

- 第36章「投票の統合」

32 お知らせの統合

この章では、設計時に、Portal Frameworkアプリケーションにお知らせを統合する方法について説明します。

この章には次の項が含まれます。

- 第32.1項「お知らせの概要」

- 第32.2項「お知らせの基本構成」

- 第32.3項「お知らせの使用の詳細情報」

お知らせの管理および組込みの詳細は、次を参照してください。

- Oracle Fusion Middleware Oracle WebCenter Portalの管理の「お知らせおよびディスカッションの管理」

- 『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「お知らせの使用」

32.1 お知らせの概要

ポータルおよびFrameworkアプリケーションを使用すると、お知らせを作成してアプリケーション・ページに公開できます。お知らせにアクセスすることで、コミュニティへの参加、問題の解決および知識の共有が促進されます。

ポータルでは、お知らせをフォーラムレベルのお知らせまたはグローバルなお知らせ(つまり、フォーラムに固有ではないシステムのお知らせ)として表示できますが、Frameworkアプリケーションでは、グローバルなお知らせのみ表示できます。

この項には次のサブセクションが含まれます:

- 第32.1.1項「お知らせの理解」

- 第32.1.2項「お知らせの要件」

- 第32.1.3項「実行時の処理」

32.1.1 お知らせの理解

WebCenter Portalでは次を実行できます。

- お知らせの作成

- 既存のお知らせの編集および削除

- お知らせのメール

- お知らせの表示方法のパーソナライズ。すべてのお知らせを表示するか、当日、今週、または今月送信されたお知らせのみを表示するかを選択できます。さらに、将来のお知らせ、アクティブなお知らせ、または期限切れのお知らせを表示することもできます。

- お知らせの管理。将来の日付でのお知らせの発行や、特定の日付での自動期限切れの指定など。

お知らせは、アクティビティ、RSSフィード、インスタント・メッセージ、メールなどのWebCenter Portalの他の多数の機能と統合されるため、イベントやディスカッションなどの他のWebCenter Portal機能にお知らせをリンクできます。たとえば、会社が新製品をお知らせするものとすると、見込み客が他の顧客に製品について質問できるディスカッション・フォーラムに直接お知らせをリンクしたり、インスタント・メッセージング・ツールにリンクして製品の情報収集や購入のためにカスタマ・サービスの担当者と直接話したりできます。

32.1.2 お知らせの要件

Frameworkアプリケーションでお知らせを使用するには、Oracle Fusion Middlewareに含まれているディスカッション・サーバーをインストールして構成する必要があります。

関連項目:

Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド

32.1.3 実行時の処理

実行時に、Create Announcements権限が付与されているユーザーはお知らせを投稿でき、View Announcements権限を持つユーザーはすべてこれらのお知らせを表示できます。たとえば、アプリケーション・スペシャリストは、お知らせを使用して、新機能の可用性やメンテナンスのための一時的なアプリケーションのシャットダウン計画を知らせることができます。

図32-1は、実行時のお知らせの例を示しています。

図32-1 お知らせ - クイック・ビュー・タスク・フローのサンプルのお知らせ

お知らせマネージャでお知らせを表示する場合は、お知らせタスク・フローがFrameworkアプリケーションに追加されていることを確認してください。その後で、アプリケーションにログインして、お知らせタスク・フローの「お知らせマネージャのオープン」アイコンをクリックします(図32-2)。

図32-2 「お知らせマネージャのオープン」アイコン

注意:

ユーザーが必要な権限を持っていない場合は、「お知らせマネージャのオープン」アイコンは表示されません。

図32-3は、お知らせマネージャ内のお知らせの例を示しています。

図32-3 お知らせマネージャのお知らせの例

Frameworkアプリケーションのアプリケーション管理者は、ページ上のお知らせの表示を制御する「作成」、「RSS」および「リフレッシュ」アイコンと、「表示」ドロップダウン・リストを提供するお知らせマネージャにアクセスできます。リスト内のお知らせごとに、「編集」、「削除」、「メール」および「リンク」アイコンを使用できます。

ページに対してユーザーが持っている権限、およびWebCenter Portalで使用可能になっていてアプリケーションで構成されている機能に応じて、お知らせマネージャのオプションの一部はユーザーに表示されないことがあります。たとえば、「削除」アイコンは、管理権限を持つユーザーにのみ表示されます。

実行時のお知らせの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「お知らせの使用」の章を参照してください。

32.2 お知らせの基本構成

この項では、お知らせをFrameworkアプリケーションに追加するために必要な手順について説明します。次のサブセクションが含まれます:

- 第32.2.1項「お知らせの接続の設定」

- 第32.2.2項「お知らせの設計時の追加」

- 第32.2.3項「お知らせサービスのセキュリティの設定」

32.2.1 お知らせの接続の設定

お知らせを利用するには、アプリケーションからディスカッション・サーバーへの接続を作成しておく必要があります。これを実行するには、ディスカッション・サーバーの接続情報が必要になります。

32.2.1.1 お知らせの接続

お知らせには、ディスカッション・サーバーへのディスカッション・フォーラム接続が必要です。ディスカッション・フォーラムの接続を追加登録することはできますが、一度にアクティブになる接続は1つのみです。

ディスカッション・フォーラム接続を作成したり、接続をアクティブに設定すると、お知らせとディスカッションの両方が同じ接続を使用します。既存の接続が存在する場合は、この項をスキップして第32.2.2項「お知らせの設計時の追加」を参照してください。

既存の接続がない場合は、新しいディスカッション・フォーラム接続を作成する必要があります。

注意:

Oracle JDeveloperで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でEnterprise Manager Fusion Middleware Controlを使用して、後から接続を追加、削除または変更できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理を参照してください。

32.2.1.2 お知らせ用の接続の設定方法

お知らせ接続を設定するには:

1. Oracle JDeveloperで、お知らせを利用する予定のアプリケーションを開きます。

注意:

お知らせ用のディスカッション・フォーラム接続を作成した場合、これはデフォルトでお知らせ用に使用されます。追加構成は必要ありません。

2. アプリケーション・ナビゲータの「アプリケーション・リソース」で、「接続」を右クリックし、リストから新しい接続「ディスカッション・フォーラム」を選択します。

3. 「名前」ページで、「アプリケーション・リソース」に接続を作成するように選択します。(「アプリケーション・リソース」の接続はそのアプリケーションでのみ使用可能ですが、「IDE接続」の接続は作成したすべてのアプリケーションで使用可能です。別のアプリケーションで接続を使用する予定がある場合は、接続を再作成しなくて済むよう「IDE接続」を選択します。)

注意:

IDEに接続を作成していて、アプリケーションには接続を作成していない場合は、その接続をアプリケーションに追加する必要があります。たとえば、「リソース・パレット」の「IDE接続」の下にある接続を右クリックし、「アプリケーションに追加」を選択します。

4. 「接続名」にMyDiscussionsなどの意味を表す名前を入力します。

5. 「デフォルト接続として設定」チェック・ボックスを選択します。複数の接続を保持できますが、アクティブな接続は1つのみです(デフォルト)。異なるディスカッション・サーバーが(たとえば、アプリケーション内の各ページごとに)ある場合、チェック・ボックスは選択しないでください。ただし、1つの接続がアクティブ接続としてマークされている必要があります(図32-4)。

注意:

接続をアクティブ接続として作成すると、その接続がデフォルトでないように編集することはできません。別のデフォルト接続を使用するには、新しい接続を作成し、それをデフォルト接続としてマークする必要があります。

図32-4 「ディスカッション接続の作成」、手順1

6. 「次へ」をクリックします。

7. 「一般」ページで、必須パラメータの値を入力します。

- URL: ディスカッション・サーバーのURLを入力します。例: http://discussions.example.com:8888/owc_discussions。

- Admin User: ディスカッション・サーバー管理者のユーザー名(adminなど)。ディスカッションおよびお知らせは、WebCenter Portalユーザーにかわってこのアカウントを使用して管理操作を実行します。
WebCenter Portalで、このアカウントは、主にポータル関連のディスカッションおよびお知らせの管理を行う場合に使用されます。このユーザーがスーパー管理者である必要はありません。ただし、ユーザーは、WebCenter Portalの現行のルート・カテゴリ(すべてのポータル関連ディスカッションおよびお知らせが格納されている、ディスカッション・サーバー上のカテゴリ)に対する管理権限を持っている必要があります。

8. オプションで、その他のパラメータの値を入力します。

- Connection Timeout: 接続に適したタイムアウトを指定します。これは、接続タイムアウト・メッセージが発行されるまでに、アプリケーションがディスカッション・サーバーからのレスポンスを待機する時間(秒単位)です。デフォルトは-1で、10秒がデフォルト値として使用されることを意味します。

- Policy URI for Authenticated Access: この接続がディスカッション・サーバーのWebサービスへの認証アクセスに使用するSAMLトークン・クライアント・ポリシーを選択します。SAML (Security Assertion Markup Language)は、認証権限および認可権限を定義するセキュリティ・トークンを渡すためのXMLベース標準です。(レシーバとの信頼関係を持っている)証明エンティティは、送信者保証と呼ばれる方式によってサブジェクトの検証を保証します。次のオプションが使用できます。

- WSS 1.0 SAMLトークン・クライアント・ポリシー(oracle/wss10_saml_token_client_policy)

- WSS 1.1メッセージ保護付きSAMLトークン・クライアント・ポリシー(oracle/wss11_saml_token_with_message_protection_client_policy)

指定したクライアント・ポリシーは、ディスカッション・サーバーのOWCDiscussionsServiceAuthenticatedエンドポイントに対して構成されるサービス・ポリシーと互換性がある必要があります。最初の何もしていない状態で、デフォルトのサービス・ポリシーは、WSS 1.0 SAMLトークン・サービス・ポリシー(oracle/wss10_saml_token_service_policy)です。

- Policy URI for Public Access: ディスカッション・サーバーのWebサービスへのパブリック・アクセス用にメッセージのセキュリティおよび整合性を強化するため、この接続で使用するクライアント・ポリシーを選択します。次のオプションが使用できます。

- None - これがデフォルトの設定です。

- WSS 1.1メッセージ保護クライアント・ポリシー(oracle/wss11_with_message_protection_client_policy)

指定したクライアント・ポリシーは、ディスカッション・サーバーのOWCDiscussionsServicePublicエンドポイントに対して構成されるサービス・ポリシーと互換性がある必要があります。最初の何もしていない状態では、パブリック・アクセスに対してサービス・ポリシーは構成されていません。

- Recipient Key Alias: メッセージ保護付きポリシー(OWCDiscussionsServicePublicおよびOWCDiscussionsServiceAuthenticatedエンドポイントに適用可能)に使用する受信者キーの別名を入力します。これは、構成されたキーストアにある、ディスカッション・サーバーの公開鍵を含む証明書の別名です。
詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WS-Securityの構成」の章を参照してください。

図32-5 「ディスカッション接続の作成」、手順2

9. 「接続のテスト」をクリックし、成功した場合は、「次へ」をクリックします。

10. 「ディスカッション接続の作成 - ステップ3/3」ページで、その他のパラメータを構成できます。例:
application.root.category.id: (WebCenter Portalのみ)すべてのディスカッション・フォーラムが格納される、ディスカッション・サーバーのアプリケーション・ルート・カテゴリID。たとえば、3に設定すると、すべてのフォーラムはカテゴリ3に格納されます。

注意:

パスワードなどのプロパティ値を暗号化するには、「セキュアなプロパティの追加」をクリックします。

11. 「終了」をクリックします。これで、接続が「アプリケーション・リソース」→「接続」の下にノードとして表示されます。

32.2.2 お知らせの設計時の追加

この項では、設計時にお知らせを組み込む方法について説明します。

32.2.2.1 お知らせタスク・フロー

「お知らせ」と「お知らせ - クイック・ビュー」のどちらのタスク・フローも現在のお知らせを表示します。さらに、「お知らせ」タスク・フローはタスク・フロー内でお知らせを管理するためのツールを提供します。「お知らせ - クイック・ビュー」タスク・フローでは、お知らせを管理するために「お知らせマネージャのオープン」アイコンをクリックする必要があり、管理者はこのタスク・フローを構成してすべてのお知らせ管理機能を削除できます。

表32-1 お知らせタスク・フロー

タスク・フロー

説明

お知らせ

このタスク・フローは、ユーザーが現在のすべてのお知らせを確認して、ユーザーの権限に基づいた操作を実行できるビューを表示します。

モデレータには、すべてのコマンド・ボタンが表示されますが、閲覧者には、リフレッシュとパーソナライズのオプションのみが表示されます。パーソナライズ・オプションを使用すると、ユーザーはお知らせを表示する日数を選択できるようになります。

parentIdパラメータは、お知らせが保持されるディスカッション・サーバー内のフォーラムIDです。各Frameworkアプリケーションは、ディスカッション・サーバーにフォーラムを作成する必要があります。

お知らせ - クイック・ビュー

このタスク・フローは、各種カテゴリのお知らせへのクイック・リンクを示すビューを表示します。

parentIdパラメータは、お知らせが保持されるディスカッション・サーバー内のフォーラムIDです。各Frameworkアプリケーションは、ディスカッション・サーバーにフォーラムを作成する必要があります。

このビューのルック・アンド・フィールは、このタスク・フロー・リージョンのレンダリングに指定するオプション・パラメータの値で変更します。

このタスク・フローを追加する方法の詳細は、第32.3.1項「お知らせ - クイック・ビュー・タスク・フローの追加方法」を参照してください。

32.2.2.2 ページへのお知らせの追加方法

お知らせタスク・フローは、お知らせの完全なビューを提供します。Frameworkアプリケーションに、お知らせタスク・フローを追加するには:

1. 第2章「開発環境の設定」の手順に従い、アプリケーションにセキュリティを実装し、新しいカスタマイズ可能なページを作成します。

2. お知らせを追加するページを開きます。

3. リソース・パレットで「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。

4. 「リソース・パレット」から「お知らせ」をドラッグし、af:form beginタグとendタグの間のページにドロップします。

5. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します(また、「ライブラリの追加」で確認します)。この操作の完了には時間がかかる場合があります。

6. 「タスク・フロー・バインディングの編集」ダイアログで、parentIdパラメータの値を入力します。
ディスカッション・サーバーは複数のFrameworkアプリケーションで共有できます。各Frameworkアプリケーションは、ディスカッション・サーバーにフォーラムを作成する必要があります。ここにparentIdとしてフォーラムID(たとえば、${2})を入力します。

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

8. ページを保存し、実行します。

32.2.2.3 お知らせタスク・フローのパラメータを変更する方法

お知らせタスク・フローには、必須およびオプションのタスク・フロー・バインディング・パラメータがあります。

パラメータ値は、ページにタスク・フローをドロップするときまたはページにタスク・フローを配置した後に調整できます。

1. ページの下部にある「バインディング」タブ(next to the 「ソース」タブの横)をクリックし、「タスク・フロー・バインディングの編集」ダイアログにナビゲートします。

2. 「実行可能ファイル」の下に、追加したタスク・フローが表示されます。図32-6に、「実行可能ファイル」セクションの検索タスク・フローの例を示します。

図32-6 ページ・データ・バインディング定義

3. タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログ(図32-7)で、必要に応じてバインディング・パラメータ値を変更します。

図32-7 お知らせ - クイック・ビューの「タスク・フロー・バインディングの編集」ダイアログ

5. 終了したら、「OK」をクリックします。

6. ページを保存して実行し、結果を表示します。

表32-2に、お知らせタスク・フロー固有のプロパティを示します。

表32-2 お知らせタスク・フローのパラメータ

プロパティ

説明

タスク・フロー

parentId

お知らせオブジェクトが維持されるディスカッション・サーバー内のフォーラムID。各Frameworkアプリケーションは、ディスカッション・サーバーにフォーラムを作成する必要があります。そのフォーラムID、たとえば${2}をここに入力します。

このパラメータが指定されていない場合は、お知らせはデフォルトのグローバルなお知らせになります。

お知らせ

お知らせ - クイック・ビュー

freeFlowView

お知らせのタイトル(件名)を削除して、お知らせの本文をそのまま表示するかどうかを表すブール値。

デフォルト値は、${false}です。この値は、お知らせリストにタイトルと本文をプレーン・テキストで表示し、それをtruncateAtパラメータとexpandedAnnouncementsパラメータで制御することを意味します。

${true}を入力すると、お知らせのタイトルは削除され、truncateAtとexpandedAnnouncementsの値は無視されます。

お知らせ - クイック・ビュー

expandedAnnouncements

お知らせの詳細(つまり、お知らせの本文)を表示するお知らせの数。ユーザーは、タイトルをクリックすることで、お知らせのすべてのコンテンツをリッチ・テキスト・モードで表示できます。

freeFlowViewがtrueに設定されている場合、expandedAnnouncementsに入力された値は無視されます。

お知らせ - クイック・ビュー

truncateAt

お知らせの本文を表示するお知らせの場合、各お知らせの表示文字数をこの値で指定します。

式言語(EL)式を入力します。たとえば、タイトルに続いてEL式${50}の値が設定されると、お知らせの表示は50文字以下になります。ユーザーは、お知らせのタイトルをクリックすると、お知らせ全体を表示できます。

値が指定されていない場合は、200文字表示されます。無効な正の整数が指定されると、すべての文字がプレーン・テキストで表示されます。

このパラメータは、expandedAnnouncementsに影響します。freeFlowViewにtrueが設定されている場合、truncateAtに入力した値は無視されます。

お知らせ - クイック・ビュー

pageSize

拡張クイック・ビューのページに表示するお知らせの数。

お知らせ - クイック・ビュー

visibleAnnouncements

クイック・ビューに表示するお知らせの数。

お知らせ - クイック・ビュー

hideToolbar

このタスク・フローのパーソナライズ機能を表示するかどうかを表すブール値。

お知らせ - クイック・ビュー

navigateToAnnouncementViewer

お知らせをポップアップで起動するか、お知らせマネージャにナビゲートするかを表すブール値。デフォルトの動作では、ポップアップで起動されます。お知らせマネージャにナビゲートする場合は、trueを入力します。

お知らせ - クイック・ビュー

expandAllAnnouncements

拡張クイック・ビューですべてのお知らせの詳細を表示するかどうかを表すブール値。デフォルト値はfalseで、お知らせではお知らせのタイトルのみが表示されます。

お知らせ - クイック・ビュー

「お知らせ - クイック・ビュー」タスク・フローのルック・アンド・フィールは、パラメータ値を使用して変更できます。たとえば、図32-12では、freeFlowViewパラメータがfalse(または空)に設定された実行時の「お知らせ - クイック・ビュー」タスク・フローを示しています。

図32-8 オプションのパラメータを使用した「お知らせ - クイック・ビュー」

図32-13では、freeFlowViewパラメータが${true}に設定された実行時の「お知らせ - クイック・ビュー」タスク・フローを示しています。

図32-9 freeFlowViewパラメータを使用した「お知らせ - クイック・ビュー」

32.2.3 お知らせのセキュリティの設定

デフォルトでは、Frameworkアプリケーションの認証されたユーザーがお知らせを表示しそれに関与できます。WebCenter Portalアプリケーションにログインしているユーザーはお知らせを表示でき、十分な権限を持つユーザーはお知らせを作成できます。お知らせを作成するには、バックエンド・ディスカッション・サーバーのモデレータまたは管理者である必要があります。

保護されていないFrameworkアプリケーションでは、アイデンティティの伝播は行われません。ユーザーはゲスト(匿名)ユーザーで、パブリック・カテゴリとパブリック・フォーラムのみを表示できます。保護されていないアプリケーションでは、お知らせからフェッチされたparentId(フォーラムID)がパブリック・フォーラムとなります。フォーラムがパブリックでない場合は、エラーがレポートされます。parentIdパラメータが一切指定されていない場合、WebCenter Portalはグローバルなお知らせをフェッチできません(つまり、お知らせはフォーラム用にスコープ設定されない)。パブリック・ユーザーはグローバルなお知らせを使用できません。各Frameworkアプリケーションは、グローバルなお知らせに依存するのではなく、専用のフォーラムIDを予約する必要があります。

ADFセキュリティで保護されたFrameworkアプリケーションでは、アイデンティティの伝播が有効です。アイデンティティに基づいて適切な権限がマッチングされ、対応するアクションが有効になります。アプリケーションのログインに使用するユーザー名が、ディスカッション・サーバーのログインに使用されます。お薦めする方法は、ディスカッション・サーバーとFrameworkアプリケーションが同じアイデンティティ・ストアを指すようにすることです。このようにすると、ユーザーはアプリケーションに一度ログインすると、自動的にディスカッション・サーバーに接続できるようになります。

注意:

お知らせには外部のLDAPベースのアイデンティティ・ストアが必要です。つまり、即時利用可能な組込みLDAPはお知らせでは使用できません。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第74.3項「ADFセキュリティの構成」を参照してください。

32.3 お知らせの使用の詳細情報

この項では、お知らせで使用可能なオプション機能について説明します。次のサブセクションが含まれます:

- 第32.3.1項「お知らせ - クイック・ビュー・タスク・フローの追加方法」

- 第32.3.2項「お知らせビューのカスタマイズ」

- 第32.3.3項「お知らせ用のポータルのRSSニュース・フィードURLの取得」

32.3.1 お知らせ - クイック・ビュー・タスク・フローの追加方法

「お知らせ - クイック・ビュー」タスク・フローは、お知らせのスナップショット(ダッシュボード)・ビューを提供します(図32-10)。

図32-10 「お知らせ - クイック・ビュー」

デフォルトでは、お知らせ - クイック・ビュー・タスク・フロー内のお知らせには、お知らせのタイトルがリンクとして表示されます。ただし、このタスク・フローは、お知らせのタイトルのみ、タイトルと一定量のコンテンツ、またはコンテンツのみを表示するように構成できます。

お知らせをクリックすると、そのお知らせはポップアップで表示されます。ここでは、「メール」アイコンを選択して、お知らせを特定の宛先にメールすることも、「リンク」アイコンを選択して、このお知らせにリンクすることもできます(図32-10)。

図32-11 お知らせのポップアップ

お知らせ - クイック・ビュー・タスク・フローには、ビューをカスタマイズするための多数のパラメータがあります。たとえば、お知らせマネージャへのリンクを削除して、管理コントロールを必要としないエンド・ユーザーにお知らせを表示できます。デフォルトでは、タスク・フローは10件のお知らせをリストしますが、この数とお知らせを表示する量は変更できます。「その他のお知らせ」リンクを使用すると、すべてのお知らせの完全なリストを含むポップアップが、ページ区切り動作で起動されます。これは、拡張クイック・ビュー(または、ミニ・ビュー)と呼ばれます。

「お知らせ - クイック・ビュー」をFrameworkアプリケーションに追加するには、第32.2.2項「お知らせの設計時の追加」で、お知らせタスク・フローに対して行った手順と同じ手順を実行します。ただし、「お知らせ - クイック・ビュー」をページ上にドラッグ・アンド・ドロップします。

表32-2は、「お知らせ - クイック・ビュー」のパラメータの説明です。「お知らせ - クイック・ビュー」のルック・アンド・フィールは、これらのパラメータに指定する値で変更できます。詳細は、第32.2.2.3項「お知らせタスク・フローのパラメータを変更する方法」を参照してください。

32.3.2 「お知らせ」ビューのカスタマイズ

「お知らせ - クイック・ビュー」のルック・アンド・フィールは、パラメータ値で変更できます。たとえば、図32-12では、freeFlowViewパラメータがfalseに設定された(または空の)実行時の「お知らせ - クイック・ビュー」を示しています。

図32-12 オプションのパラメータを使用した「お知らせ - クイック・ビュー」

図32-13では、freeFlowViewパラメータが${true}に設定された実行時の「お知らせ - クイック・ビュー」タスク・フローを示しています。

図32-13 freeFlowViewパラメータを使用した「お知らせ - クイック・ビュー」タスク・フロー

32.3.3 お知らせ用のポータルのRSSニュース・フィードURLの取得

WebCenter Portalの機能をFrameworkアプリケーションに公開すると、Frameworkアプリケーション・ユーザーは、RSSニュース・フィードを通じて、特定のポータルで行われていることを知ることができます。

RSSニュース・フィードをお知らせ用に構成して、ユーザーがFrameworkアプリケーションからポータルのお知らせを表示できるようにします。お知らせ用にポータルのRSSニュース・フィードURLを取得するには、次のWebCenter Portal APIメソッドのいずれかを使用してください。

- getServiceRSSFeedURL

- getServiceRSSFeedURLbyGuid

RSSフィードのURLを取得するには、ポータルを(名前またはGUIDで)特定し、必要なサービスを(サービスIDで)指定する必要があります。お知らせのサービスIDは、GroupSpaceWSClient.ANNOUNCEMENT_SERVICE_IDです。

これらのAPIを使用する方法の詳細は、第56.1.5.3.9項「WebCenter PortalのツールとサービスのためのRSSフィードURLの取得」を参照してください。

33 ディスカッションの統合

この章では、設計時に、Portal Frameworkアプリケーションにディスカッションを統合する方法について説明します。

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

- 第33.1項「ディスカッションの概要」

- 第33.2項「ディスカッションの基本構成」

- 第33.3項「ディスカッションの詳細情報」

ディスカッションの管理および組込みの詳細は、次を参照してください。

- Oracle Fusion Middleware Oracle WebCenter Portalの管理の「お知らせおよびディスカッションの管理」

- 『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「ディスカッションの使用」

33.1 ディスカッションの概要

ディスカッション・フォーラムはアプリケーション・ページに公開できるため、ユーザーはフォーラムの作成、質問の投稿および回答の検索を実行できます。たとえば、顧客が製品レビューを共有したり、カスタマ・サービス部門が質問にオンラインで回答したりできます。さらに、ディスカッション・フォーラムはディスカッションを保持し再度アクセスする手段を提供しています。

バックエンドのディスカッション・サーバーはコンテンツを階層で管理します。階層の一番上にはカテゴリ、その下にフォーラム、さらにその下にトピックがあります。各トピックの中にメッセージがあり、さらにメッセージをメッセージ内にネストできます。

アプリケーションでカテゴリが公開された場合、権限のあるユーザーは、指定のスコープ内での複数のフォーラムの作成およびこれらのフォーラムの下での複数のトピックの作成が可能です。カテゴリが公開されていない場合、権限のあるユーザーは、指定のスコープ内の1つのフォーラムの下で複数のトピックを作成できます。

33.1.1 ディスカッションの理解

ディスカッションを使用すると、(権限に応じて)次のことが可能です。

- 新しいディスカッション・フォーラムまたは新しいトピックの作成。

- 使用可能なフォーラムのリストからのフォーラムへのナビゲート。

- 既存のディスカッション・フォーラム、トピックまたはメッセージの編集、返信または削除。

- メイン・フォーラム・ビューへのトピックに対する返信数の表示。

- トピック名のクリックによる、すべての返信を参照するためのトピックのドリルダウン。

- トピックまたはフォーラムへの監視の追加。

- クイック・ビューでの次の項目の表示。

- 監視トピック

- 監視フォーラム

- 最も人気のある(よく見られている)トピック

- 最新のトピック

注意:

保護されたアプリケーションでは、ディスカッションの権限は個々のユーザーに割り当てられたユーザー・ロールに従って割り当てられます。ユーザーは、進行役、参加者または閲覧者になることができます。一部のアクティビティでは進行役または参加者ロールが必要です。詳細は、第33.2.3項「ディスカッションのセキュリティの設定」を参照してください。

ディスカッションは、インスタント・メッセージおよびプレゼンス、RSS、検索(フォーラム内で検索するため)など、多くのWebCenter Portalコンポーネントと統合されます。メールは、スレッドとしてディスカッションにアーカイブできます。。また、WebCenter Portalオブジェクトからディスカッションにリンクすることもできます。

33.1.2 ディスカッションの要件

ディスカッションにはディスカッション・サーバーが必要です。Oracle Fusion Middlewareに付属するディスカッション・サーバーをインストールおよび構成します。

関連項目:

Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド

33.1.3 実行時の処理

Frameworkアプリケーションでフォーラムを作成するには、バックエンドのディスカッション・サーバーで、進行役または管理者である必要があります。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のディスカッション・サーバーでの管理者ロールの付与に関する項を参照してください。

図33-1は、実行時のディスカッション・フォーラムを示しています。

図33-1 実行時のディスカッション・フォーラム・タスク・フロー

実行時のディスカッションの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「ディスカッションの表示と参加」の章を参照してください。

33.2 ディスカッションの基本構成

この項では、アプリケーションにディスカッションを追加するために必要な手順について説明します。次のサブセクションが含まれます:

- 第33.2.1項「ディスカッション用の接続の設定」

- 第33.2.2項「ディスカッション機能の設計時の追加」

- 第33.2.3項「ディスカッションのセキュリティの設定」

33.2.1 ディスカッション用の接続の設定

WebCenter Portal Frameworkアプリケーションのディスカッション・サーバーに対して、接続を作成する必要があります。ディスカッション・フォーラムの接続を追加登録することはできますが、一度にアクティブになる接続は1つのみです。

ディスカッション・フォーラム接続を作成したり、接続をアクティブに設定すると、お知らせとディスカッションの両方が同じ接続を使用します。既存の接続が存在する場合は、この項をスキップして第33.2.2項「ディスカッション機能の設計時の追加」を参照してください。

既存の接続がない場合は、新しいディスカッション・フォーラム接続を作成する必要があります。

33.2.1.1 ディスカッション接続

ディスカッションには、ディスカッション・サーバーへのディスカッション・フォーラム接続が必要です。

注意:

Oracle Developerで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でEnterprise Manager Fusion Middleware Controlを使用して、後から接続を追加、削除または変更できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理を参照してください。

33.2.1.2 ディスカッション用の接続の設定方法

次の手順に従って、ディスカッションの接続を設定してください。

1. ディスカッション・フォーラムを利用するアプリケーションを、Oracle JDeveloperで開きます。

注意:

お知らせ用のディスカッション・フォーラム接続を作成した場合、これはデフォルトでディスカッション用に使用されます。追加構成は必要ありません。

2. アプリケーション・ナビゲータの「アプリケーション・リソース」で、「接続」を右クリックし、リストから新しい接続「ディスカッション・フォーラム」を選択します。

3. 「名前」ページで、「アプリケーション・リソース」に接続を作成するように選択します。(「アプリケーション・リソース」の接続はそのアプリケーションでのみ使用可能ですが、「IDE接続」の接続は作成したすべてのアプリケーションで使用可能です。別のアプリケーションで接続を使用する予定がある場合は、接続を再作成しなくて済むよう「IDE接続」を選択します。)

4. 「接続名」にMyDiscussionsなどの一意の名前を入力します。

5. 「デフォルト接続として設定」チェック・ボックスを選択します。複数の接続を保持できますが、アクティブな接続は1つのみです(デフォルト)。異なるディスカッション・サーバーが(たとえば、ポータル内の各ページごとに)ある場合、チェック・ボックスは選択しないでください。ただし、1つの接続がデフォルト接続としてマークされている必要があります(図33-2)。

注意:

接続を作成してデフォルトの接続として設定すると、それがデフォルトでないように再設定することはできません。つまり、「デフォルト接続として設定」オプションの選択は解除できません。別のデフォルト接続を使用するには、新しい接続を作成し、それをデフォルト接続として設定する必要があります。

図33-2 「ディスカッション接続の作成」、手順1

6. 「次へ」をクリックします。

7. 「一般」ページで、必須パラメータの値を入力します。

- URL: ディスカッション・フォーラムおよびお知らせをホスティングする、ディスカッション・サーバーのURLを入力します。例: http://discuss-example.com:8888/owc_discussions

- Admin User: ディスカッション・サーバー管理者のユーザー名(adminなど)。ディスカッションおよびお知らせは、WebCenter Portalユーザーにかわってこのアカウントを使用して管理操作を実行します。
ポータルで、このアカウントは、主にポータル関連のディスカッションおよびお知らせの管理を行う場合に使用されます。このユーザーがスーパー管理者である必要はありません。ただし、ユーザーは、ポータルの現行のルート・カテゴリ(すべてのポータル関連ディスカッションおよびお知らせが格納されている、ディスカッション・サーバー上のカテゴリ)に対する管理権限を持っている必要があります。

注意:

Frameworkアプリケーションに、ポータル関連の機能が含まれていない場合は、管理者のユーザー名は必要ありません。

8. オプションで、その他のパラメータの値を入力します。

- Connection Timeout: 接続に適したタイムアウトを指定します。これは、接続タイムアウト・メッセージが発行されるまでに、アプリケーションがディスカッション・サーバーからのレスポンスを待機する時間(秒単位)です。デフォルトは-1で、これはデフォルトが使用されることを意味します。デフォルトは10秒です。

- Policy URI for Authenticated Access: この接続がディスカッション・サーバーのWebサービスへの認証アクセスに使用するSAMLトークン・クライアント・ポリシーを選択します。SAML (Security Assertion Markup Language)は、認証権限および認可権限を定義するセキュリティ・トークンを渡すためのXMLベース標準です。(レシーバとの信頼関係を持っている)証明エンティティは、送信者保証と呼ばれる方式によってサブジェクトの検証を保証します。次のオプションが使用できます。

- WSS 1.0 SAMLトークン・クライアント・ポリシー(oracle/wss10_saml_token_client_policy)

- WSS 1.1メッセージ保護付きSAMLトークン・クライアント・ポリシー(oracle/wss11_saml_token_with_message_protection_client_policy)

指定したクライアント・ポリシーは、ディスカッション・サーバーのOWCDiscussionsServiceAuthenticatedエンドポイントに対して構成されるサービス・ポリシーと互換性がある必要があります。最初の何もしていない状態で、デフォルトのサービス・ポリシーは、WSS 1.0 SAMLトークン・サービス・ポリシー(oracle/wss10_saml_token_service_policy)です。

- Policy URI for Public Access: ディスカッション・サーバーのWebサービスへのパブリック・アクセス用にメッセージのセキュリティおよび整合性を強化するため、この接続で使用するクライアント・ポリシーを選択します。次のオプションが使用できます。

- None - これがデフォルトの設定です。

- WSS 1.1メッセージ保護クライアント・ポリシー(oracle/wss11_with_message_protection_client_policy)

指定したクライアント・ポリシーは、ディスカッション・サーバーのOWCDiscussionsServicePublicエンドポイントに対して構成されるサービス・ポリシーと互換性がある必要があります。最初の何もしていない状態では、パブリック・アクセスに対してサービス・ポリシーは構成されていません。

- Recipient Key Alias: メッセージ保護付きポリシー(OWCDiscussionsServicePublicおよびOWCDiscussionsServiceAuthenticatedエンドポイントに適用可能)に使用する受信者キーの別名を入力します。これは、構成されたキーストアにある、ディスカッション・サーバーの公開鍵を含む証明書の別名です。
詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WS-Securityの構成」の章を参照してください。

図33-3 ディスカッション接続の作成、手順2

9. 「接続のテスト」をクリックし、成功した場合は、「次へ」をクリックします。

10. 「ディスカッション接続の作成 - ステップ3/3」ページで、その他のパラメータを構成できます。
application.root.category.id: (WebCenter Portalのみ)すべてのディスカッション・フォーラムが格納される、ディスカッション・サーバーのアプリケーション・ルート・カテゴリID。たとえば、3に設定すると、すべてのフォーラムはカテゴリ3に格納されます。

注意:

パスワードなどのプロパティ値を暗号化するには、「セキュアなプロパティの追加」をクリックします。

11. 「終了」をクリックします。これで、接続が「アプリケーション・リソース」→「接続」の下にノードとして表示されます。

33.2.2 ディスカッション機能の設計時の追加

この項では、ディスカッションの基本的な組込みについて説明します。

33.2.2.1ディスカッション・タスク・フロー

ニーズに最適な形式でディスカッションを提供する複数のタスク・フローがあります(表33-1)。

表33-1 ディスカッション・タスク・フロー

タスク・フロー

説明

ディスカッション・フォーラム

このタスク・フローでは、ディスカッション・フォーラム・ビューが表示されます。ユーザーは、すべてのディスカッションとその返信を参照できます。

ユーザーは権限に基づいて様々な操作を行うこともできます。進行役は、すべてのオブジェクトに対して作成、参照、更新および削除操作を行うことができます。参加者は、トピックの作成、自分で作成したトピックの編集、およびトピックへの返信ができます。閲覧者はオブジェクトの表示のみが可能です。

すべての監視フォーラムおよび監視トピックには、このタスク・フローからアクセスできます。監視フォーラムおよび監視トピックのタスク・フローでは、監視フォーラムまたは監視トピックのさらにフォーカスされたビューが提供されます。

ビューの外観は、パラメータにより変更できます。詳細は、第33.2.2.3項「ディスカッション・タスク・フローのパラメータを変更する方法」を参照してください。

ディスカッション - 人気のあるトピック

このタスク・フローでは、特定のカテゴリIDまたはフォーラムIDの下で、アプリケーション内で最も頻繁に閲覧されたトピックをユーザーが参照できるビューを提供します。

詳細は、第33.3.1項「ディスカッション - 人気のトピック・タスク・フローの追加」を参照してください。

ディスカッション - 最近のトピック

このタスク・フローでは、カテゴリIDまたはフォーラムIDが指定されたアプリケーション内の、最近のすべてのトピックをユーザーが参照できるビューを表示します。

詳細は、第33.3.2項「ディスカッション - 最近のトピック・タスク・フローの追加」を参照してください。

ディスカッション - 監視フォーラム

このタスク・フローでは、特定のカテゴリIDの下で、アプリケーション内の自分のすべての監視フォーラムをユーザーが参照できるビューを表示します。

詳細は、第33.3.3項「ディスカッション - 監視フォーラム・タスク・フローの追加」を参照してください。

ディスカッション - 監視トピック

このタスク・フローでは、特定のカテゴリIDまたはフォーラムIDの下で、アプリケーション内の自分のすべての監視トピックをユーザーが参照できるビューを表示します。

詳細は、第33.3.4項「ディスカッション - 監視トピック・タスク・フローの追加」を参照してください。

ディスカッション - クイック・ビュー

このタスク・フローでは、人気のトピック、最近のトピック、監視トピックおよび監視フォーラムの各タスク・フローの結合されたビューを表示します。4つのタスク・フローを別々に追加するのではなく、この単一のタスク・フローで、ドロップダウン・リストを使用して4つのビューのすべてを表すことにより、エンド・ユーザーによるパーソナライズが可能になります

詳細は、第33.3.5項「ディスカッション - クイック・ビュー・タスク・フローの追加」を参照してください。

33.2.2.2 ページへのディスカッションの追加方法

ディスカッション・フォーラム・タスク・フローでは、ディスカッションの完全なビューが提供されます。ディスカッション・フォーラム・タスク・フローをFrameworkアプリケーションに追加するには、次の手順に従います。

1. 第4.2.1項「ツールとサービスを利用するようにアプリケーションを準備する方法」の手順に従い、アプリケーションでセキュリティを実装し、カスタマイズ可能なページを作成します。

2. ディスカッションを追加するページを開きます。

3. 「リソース・パレット」で「カタログ」、「WebCenter - Frameworkサービス・カタログ」、「タスク・フロー」と開きます。

4. 「リソース・パレット」から「ディスカッション」をドラッグし、ページの上でドロップします。

5. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

6. ディスカッション・ライブラリをプロジェクトに追加するよう要求される場合があります。この場合は、「ライブラリの追加」をクリックします。この操作の完了には時間がかかる場合があります。

7. 「タスク・フロー・バインディングの編集」ダイアログ・ボックスで、パラメータの値を入力し、「OK」をクリックします。表33-2に、パラメータを示します。

8. ページを保存し、実行します。

注意:

アプリケーションではなくIDEで接続を作成した場合、その接続をアプリケーションに追加する必要があります。たとえば、「リソース・パレット」の「IDE接続」の下にある接続を右クリックし、「アプリケーションに追加」を選択します。

アプリケーション内のディスカッション・フォーラム・タスク・フローのすべてのインスタンスは、同じディスカッション・サーバーに対して実行されます。複数のディスカッション・フォーラム・タスク・フロー・インスタンスを追加する必要はありません。これは、お知らせやメールからのタスク・フローなど、バックエンド・サーバーへの接続が必要なすべてのタスク・フローに当てはまります。

ディスカッション・フォーラム・メイン・ビューには、アプリケーションで他のコンポーネントを必要とする機能がいくつかあります。

- メイン・ビューのリンクが機能するには、リンク・サービスを構成しておく必要があります。詳細は、第43章「リンクの統合」を参照してください。

- ユーザーのプレゼンス・インジケータが機能するには、WebCenter Portalプレゼンス・サービスを構成しておく必要があります。詳細は、第34章「インスタント・メッセージおよびプレゼンスの統合」を参照してください。

- ディスカッション・サーバーとWebCenter Portalが、同じアイデンティティ・ストアを指すようにすることをお薦めします。Frameworkアプリケーションおよびディスカッション・ページがセキュアであるように構成されている場合、アプリケーションのログイン時に、ディスカッションはディスカッション・サーバー内の資格証明に従います。

33.2.2.3 ディスカッション・タスク・フローのパラメータを変更する方法

ディスカッション・タスク・フローには、オプションのタスク・フロー・バインディング・パラメータがあります。

パラメータ値は、ページにタスク・フローをドロップするときまたはページにタスク・フローを配置した後に調整できます。

1. ページの下部にある「バインディング」タブ(next to the 「ソース」タブの横)をクリックし、「タスク・フロー・バインディングの編集」ダイアログにナビゲートします。

2. 「実行可能ファイル」の下に、追加したタスク・フローが表示されます。図33-4に、「実行可能ファイル」の検索タスク・フローの例を示します。

図33-4 ページ・データ・バインディング定義

3. タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログ(図33-5)で、必要に応じてバインディング・パラメータ値を変更します。

図33-5 ディスカッション・フォーラム・タスク・フロー用の「タスク・フロー・バインディングの編集」ダイアログ

5. 終了したら、「OK」をクリックします。

6. ページを保存して実行し、結果を表示します。

表33-2に、ディスカッション・タスク・フロー固有のプロパティを示します。

表33-2 ディスカッション・タスク・フローのパラメータ

プロパティ

説明

タスク・フロー

categoryId

このオプションのパラメータは、ビューのスコープ設定先となるOracle WebCenter Portalのディスカッション・サーバーの既存のカテゴリの識別子です。

値が指定されない場合、デフォルトのディスカッション・サーバーの適切なルート・カテゴリとなります。(このルート・カテゴリIDは、application.root.category.idという名前の追加のプロパティを接続に設定することにより、オーバーライドが可能です。)

ディスカッション・サーバー管理者インタフェースを使用して、テスト目的でカテゴリを作成し、ここでそのカテゴリ識別子を参照することもできます。

- ディスカッション・フォーラム

- ディスカッション - クイック・ビュー

- 人気のトピック

- 最近のトピック

- 監視フォーラム

- 監視トピック

forumId

このパラメータは、人気のあるトピックを取得するディスカッション・サーバーの既存のフォーラムの識別子です。

categoryIdとforumIdの両方が指定された場合は、categoryIdのみが有効になります。

- ディスカッション・フォーラム

- 人気のトピック

- 最近のトピック

- 監視トピック

disableToolbar

このパラメータは、「リフレッシュ」アイコンを含めたツールバーを表示するかどうかを示します。${true}、${false}を指定するか、未定義とします。このパラメータを未定義のままにした場合、デフォルトの動作(false)ではツールバーが表示されます。

- 人気のトピック

- 最近のトピック

- 監視フォーラム

- 監視トピック

showRecursiveForums

このパラメータでは、フォーラムをカテゴリのみに表示するか、サブカテゴリにも表示するかを指定します。

trueは、特定のカテゴリ/サブカテゴリの下のすべてのフォーラムが表示されることを意味しています。また、falseは、カテゴリの直接の子フォーラムのみが表示されることを意味しています。デフォルト値はfalseです。

注意: trueの場合、パフォーマンスに影響を及ぼす可能性があります。

ディスカッション・フォーラム

isCategoryView

「カテゴリID」で指定したカテゴリにグループ化されているフォーラム、または「フォーラムID」で指定したフォーラムで指定されているトピックを表示する機能。trueは、タスク・フローによりcategoryIdに分類されたフォーラムが表示されることを意味しています。falseはデフォルト値で、タスク・フローにより、指定されたforumIdに関連付けられたトピックが表示されることを意味しています。

このパラメータ値は、他のパラメータとの組合せで機能します。

ディスカッション・フォーラム

defaultTopicFetchSize

表示可能なトピックの数を設定します

ディスカッション・フォーラム

doNotAllowSelectingPageSize

trueに設定すると、ユーザーは表示可能なトピックの数を変更できなくなります。

ディスカッション・フォーラム

visibleTopicsFetchSize

表示可能な監視トピックの数を設定します。

- 最近のトピック

- 監視トピック

visibleForumsFetchSize

表示可能な監視フォーラムの数を設定します。

監視フォーラム

doNotShowMoreLink

trueに設定すると、「詳細」リンクを非表示にします。

- ディスカッション - クイック・ビュー

- 最近のトピック

- 監視フォーラム

- 監視トピック

パラメータ値の変更により、ディスカッション・フォーラムのビューのルック・アンド・フィールをカスタマイズできます。次の組合せが可能です。

注意:

双方向リンクでは、双方向に接続します。たとえば、ディスカッションのトピックからドキュメントへのリンクを作成すると、ドキュメントからトピックへ戻るリンクも作成されます。同様に、ディスカッションのトピックからドキュメントへのリンクを削除すると、ドキュメントからトピックへ戻るリンクは自動的に削除されます。

- categoryId: 複数のフォーラムが存在する場合、フォーラムのリスト・ビューが表示されます。フォーラムが1つのみの場合、フォーラムをドリル・ダウンし、双方向リンクが可能な状態ですべてのトピックをリストします。

- categoryIdおよびforumId: 双方向リンクが可能な状態でトピックのリスト・ビューが表示されます。

- isCategoryViewをtrueに設定: 双方向リンクが可能な状態でトピックのリスト・ビューが表示されます。

- categoryId、forumIdおよびisCategoryViewをfalseに設定: トピックのリスト・ビューが表示されますが、双方向リンクは使用できません。

- categoryIdおよびisCategoryViewをtrueに設定: 複数のフォーラムが存在する場合、フォーラムのリスト・ビューが表示されます。フォーラムが1つのみの場合、双方向リンクが可能な状態でそのフォーラムを表示します。

- forumIdおよびisCategoryViewをfalseに設定: トピックのリスト・ビューが表示されますが、双方向リンクは使用できません。

- categoryIdおよびisCategoryViewをfalseに設定: categoryIdを単独で指定した場合と同様です。

- forumIdおよびisCategoryViewをtrueに設定: forumIdおよびisCategoryViewをfalseに設定した場合と同様です。

- isCategoryView = true or false: 無視されます。Frameworkアプリケーションのデフォルトのスコープ(つまり、ルート・カテゴリの下に知るとされたすべてのフォーラム)が適用されます。

- forumId: forumIdおよびisCategoryViewをfalseに設定した場合と同様です。

33.2.3 ディスカッションのセキュリティの設定

デフォルトでは、WebCenter Portalアプリケーションの認証されたユーザーがディスカッション・フォーラムを表示しそれに関与できます。WebCenter Portalアプリケーションにログインしているユーザーはディスカッションを表示でき、十分な権限を持つユーザーはフォーラムとトピックを作成できます。フォーラムを作成するには、ディスカッションを提供するバックエンド・ディスカッション・サーバーのモデレータまたは管理者である必要があります。

保護されていないFrameworkアプリケーションでは、ユーザーのアイデンティティはディスカッション・サーバーに伝播されません。したがって、ユーザーはゲスト(つまり、匿名ユーザー)として識別され、パブリック・カテゴリおよびパブリック・フォーラムのみの表示が可能です。

注意:

カテゴリおよびフォーラムは、サーバー側の分類で、カテゴリからフォーラム、トピックの順に分類されます。つまり、フォーラムがトピックのコレクションの先頭となり、同様にカテゴリがフォーラムのコレクションの先頭になります。

保護されたFrameworkアプリケーションでは、ディスカッションの権限は個々のユーザーに割り当てられたユーザー・ロールに従って割り当てられます。たとえば、ユーザーは進行役、参加者または閲覧者になることができます。フォーラムの進行役は、フォーラム内のすべてのトピックおよびメッセージを編集および削除できます。フォーラムの参加者は、トピックの作成と、自分のトピックの編集ができます。フォーラムの閲覧者は、トピックおよびメッセージを表示できます。

保護されていないFrameworkアプリケーションでは、アイデンティティの伝播は行われません。ユーザーはゲスト(匿名)ユーザーで、パブリック・カテゴリとパブリック・フォーラムのみを表示できます。

ADFセキュリティで保護されたFrameworkアプリケーションでは、アイデンティティの伝播が有効です。アイデンティティに基づいて適切な権限がマッチングされ、対応するアクションが有効になります。アプリケーションのログインに使用するユーザー名が、ディスカッション・サーバーのログインに使用されます。お薦めする方法は、ディスカッション・サーバーとアプリケーションが同じアイデンティティ・ストアを指すようにすることです。ページを実行すると、ログイン・ページが表示され、ユーザー資格証明の入力を求められます。ディスカッション・サーバーで必要な権限を持つ、資格証明を入力します。

注意:

ディスカッションでは、jazn-data.xmlを使用したファイルベースではなく、LDAPベースのアイデンティティ・ストアが必要です。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第74.3項「ADFセキュリティの構成」を参照してください。

33.3 ディスカッションの詳細情報

この項では、ディスカッションで使用可能なオプション機能について説明します。次のサブセクションが含まれます:

- 第33.3.1項「ディスカッション - 人気のトピック・タスク・フローの追加」

- 第33.3.2項「ディスカッション - 最近のトピック・タスク・フローの追加」

- 第33.3.3項「ディスカッション - 監視フォーラム・タスク・フローの追加」

- 第33.3.4項「ディスカッション - 監視トピック・タスク・フローの追加」

- 第33.3.5項「ディスカッション - クイック・ビュー・タスク・フローの追加」

- 第33.3.6項「ディスカッション用のポータルのRSSニュース・フィードURLの取得」

- 第33.3.7項「カスタム・ディスカッションAPIの使用」

- 第33.3.8項「ディスカッションREST APIの使用」

- 第33.3.9項「ディスカッションのトラブルシューティング」

33.3.1 ディスカッション - 人気のトピック・タスク・フローの追加

ディスカッション - 人気のトピック・タスク・フローでは、特定のカテゴリIDまたはフォーラムIDの下で、アプリケーション内で最も頻繁に閲覧されたディスカッション・トピックをユーザーが参照できるビューを提供します。

注意:

人気のトピックは、トピックの返信に基づいて決められます。管理者が人気度を決めることはできません。

ディスカッション - 人気のトピック・タスク・フローをFrameworkアプリケーションに追加するには、第33.2.2.2項「ページへのディスカッションの追加方法」で、ディスカッション・フォーラム・タスク・フローに対して行った手順と同じ手順に従い、ページ上で「ディスカッション - 人気のトピック」をドラッグ・アンド・ドロップします。

表33-2に、このタスク・フローの使用可能なパラメータを示しています。

図33-6に、ディスカッション - 人気のトピック・タスク・フローの実行時の外観を示します。

図33-6 実行時の「ディスカッション - 人気のトピック」ビュー

33.3.2 ディスカッション - 最近のトピック・タスク・フローの追加

ディスカッション - 最近のトピック・タスク・フローでは、カテゴリIDまたはフォーラムIDが指定された、すべての最近のトピック(つまり、過去2日以内に投稿されたトピック)をユーザーが参照できるビューを表示します。

ディスカッション - 最近のトピック・タスク・フローをFrameworkアプリケーションに追加するには、第33.2.2.2項「ページへのディスカッションの追加方法」で、ディスカッション・フォーラム・タスク・フローに対して行った手順と同じ手順に従い、ページ上で「ディスカッション - 最近のトピック」をドラッグ・アンド・ドロップします。

表33-2に、このタスク・フローの使用可能なパラメータを示しています。

図33-7に、ディスカッション - 最近のトピック・タスク・フローの実行時の外観を示します。トピックの投稿を表示するには、関連したトピックをクリックします。

図33-7 実行時の「ディスカッション - 最近のトピック」ビュー

33.3.3 ディスカッション - 監視フォーラム・タスク・フローの追加

ディスカッション - 監視フォーラム・タスク・フローでは、特定のカテゴリIDの下で、自分のすべての監視フォーラムをユーザーが参照できるビューを表示します。

ディスカッション・フォーラムやディスカッション・トピックを監視し、最新かつ自分の活動に関連した情報を見守ることができます。監視するよう選択したフォーラムやトピックは個人用で、選択したものが自分の監視リストのビューに表示されます。監視するよう選択したフォーラムやトピックによって、他のユーザーが影響を受けることはありません。

あるユーザーがフォーラムまたはトピックに監視を配置すると、他のユーザーがそのフォーラムまたはトピックに追加するたびに、それがそのユーザーの監視対象フォーラムまたはトピックのリストに表示され、そのユーザーはメールで通知を受け取ります。

すべての監視フォーラムおよび監視トピックには、このフォーラム・タスク・フローからアクセスできます。監視フォーラムおよび監視トピックのタスク・フローでは、監視フォーラムまたは監視トピックのさらにフォーカスされたビューが提供されます。

ディスカッション - 監視フォーラム・タスク・フローをFrameworkアプリケーションに追加するには、第33.2.2.2項「ページへのディスカッションの追加方法」で、ディスカッション・フォーラム・タスク・フローに対して行った手順と同じ手順に従い、ページ上で「ディスカッション - 監視フォーラム」をドラッグ・アンド・ドロップします。

表33-2に、このタスク・フローの使用可能なパラメータを示しています。

図33-8に、ディスカッション - 監視フォーラム・タスク・フローの実行時の外観を示します。

図33-8 実行時の「ディスカッション - 監視フォーラム」ビュー

実行時にフォーラムまたはトピックを監視する方法は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「ディスカッションの使用」の章を参照してください。

33.3.4 ディスカッション - 監視トピック・タスク・フローの追加

ディスカッション - 監視フォーラム・タスク・フロー同様、ディスカッション - 監視トピック・タスク・フローは、特定のカテゴリIDまたはフォーラムIDの下で、自分のすべての監視トピックをユーザーが参照できるビューを表示します。

ディスカッション - 監視トピック・タスク・フローをFrameworkアプリケーションに追加するには、第33.2.2.2項「ページへのディスカッションの追加方法」で、ディスカッション・フォーラム・タスク・フローに対して行った手順と同じ手順に従い、ページ上で「ディスカッション - 監視トピック」をドラッグ・アンド・ドロップします。

表33-2に、このタスク・フローの使用可能なパラメータを示しています。

図33-9に、ディスカッション - 監視トピック・タスク・フローの実行時の外観を示します。

図33-9 実行時の「ディスカッション - 監視トピック」ビュー

実行時にフォーラムまたはトピックを監視する方法は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「ディスカッションの使用」の章を参照してください。

33.3.5 ディスカッション - クイック・ビュー・タスク・フローの追加

ディスカッション - クイック・ビュー・タスク・フローでは、人気のトピック、最近のトピック、監視トピックおよび監視フォーラムの各タスク・フローの結合されたビューを表示します。4つのタスク・フローを別々に追加するのではなく、この単一のタスク・フローで、ドロップダウン・リストを使用して4つのビューのすべてを表すことにより、エンド・ユーザーによるパーソナライズが可能になります。

デフォルトでは、監視トピックが表示されます。このタスク・フローに指定するパラメータは、categoryIdのみです。

ディスカッション - クイック・ビュー・タスク・フローをWebCenter Portal Frameworkアプリケーションに追加するには、第33.2.2.2項「ページへのディスカッションの追加方法」で、ディスカッション・フォーラム・タスク・フローに対して行った手順と同じ手順に従い、ページ上で「ディスカッション - クイック・ビュー」をドラッグ・アンド・ドロップします。

表33-2に、このタスク・フローの使用可能なパラメータを示しています。

図33-10に、ディスカッション - クイック・ビュー・タスク・フローの実行時の外観を示します。

図33-10 実行時の「ディスカッション - クイック・ビュー」

33.3.6 ディスカッション用のポータルのRSSニュース・フィードURLの取得

ポータル機能はFrameworkアプリケーションで公開できます。Frameworkアプリケーション・ユーザーは、RSSニュース・フィードを通じて、特定のポータルで行われていることを知ることができます。

RSSニュース・フィードをディスカッション用に構成して、Frameworkアプリケーション内でポータルのディスカッション・フォームをユーザーが表示できるようにします。ディスカッション用にポータルのRSSニュース・フィードURLを取得するには、次のWebCenter Portal APIメソッドのいずれかを使用してください。

- getServiceRSSFeedURL

- getServiceRSSFeedURLbyGuid

RSSフィードのURLを取得するには、ポータルを(名前またはGUIDで)特定し、必要なコンポーネントを(サービスIDで)指定する必要があります。ディスカッションのサービスIDは、GroupSpaceWSClient.DISCUSSION_SERVICE_IDです。

これらのメソッドを使用する方法の詳細は、第56.1.5.3.9項「WebCenter PortalのツールとサービスのためのRSSフィードURLの取得」を参照してください。

33.3.7 カスタム・ディスカッションAPIの使用

バックエンドのディスカッション・サーバーには、アプリケーションをさらにカスタマイズするためのAPIが用意されています。詳細は、Oracle Fusion Middlewareドキュメント・ライブラリのJiveフォーラムのドキュメントを参照してください(WebCenter Portal製品の部分にあります)。

33.3.8 ディスカッションREST APIの使用

WebCenter Portalは、ディスカッションをサポートするためのREST APIを提供しています。ディスカッションのREST APIを使用すると、ディスカッション・フォーラム、トピックおよびメッセージを投稿、参照、更新および削除できます。

この項では、ディスカッションに関連するREST APIメソッドについて説明します。次のサブセクションが含まれます:

- 第33.3.8.1項「ディスカッション・エントリ・ポイント」

- 第33.3.8.2項「ディスカッション・リソース・タイプの分類」

- 第33.3.8.3項「セキュリティに関する考慮事項」

- 第33.3.8.4項「ディスカッション・リソース・タイプ」

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

33.3.8.1 ディスカッション・エントリ・ポイント

各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。ディスカッションのエントリ・ポイントを見つけるには、次のresourceTypeを持つリンク要素を見つけます。

urn:oracle:webcenter:discussions:forums

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供されます。クライアントはこのエントリ・ポイントにHTTPリクエストを送信して、ディスカッションを操作します。

リソース索引の詳細は、第53.5.1項「リソース索引の使用」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

33.3.8.2 ディスカッション・リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」の該当の項を参照してください。

ディスカッションの分類は、次のとおりです。

urn:oracle:webcenter:discussions:forums
urn:oracle:webcenter:discussions:forum
urn:oracle:webcenter:discussions:forum:topics
urn:oracle:webcenter:discussions:forum:topic
urn:oracle:webcenter:discussions:forum:topic:messages
urn:oracle:webcenter:discussions:forum:topic:message

サービス・エントリ・ポイントの他、URLテンプレートにより、クライアントは、問合せパラメータを渡してリクエストをカスタマイズしたり戻されたデータのフォームを制御できます。

ディスカッション・リソース内のコレクション・リソースは、ページ区切り(startIndexおよびitemsPerPage)をサポートします。その他の問合せパラメータ(searchとprojection)はサポートされていません。

33.3.8.3 セキュリティ上の考慮事項

ディスカッションでは、セキュリティに関する特定の考慮事項はありません。一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

33.3.8.4 ディスカッション・リソース・タイプ

この項では、各リソース・タイプについて説明します。次のサブセクションが含まれます:

- 第33.3.8.4.1項「urn:oracle:webcenter:discussions:forums」

- 第33.3.8.4.2項「urn:oracle:webcenter:discussions:forum」

- 第33.3.8.4.3項「urn:oracle:webcenter:discussions:forum:topics」

- 第33.3.8.4.4項「urn:oracle:webcenter:discussions:forum:topic」

- 第33.3.8.4.5項「urn:oracle:webcenter:discussions:forum:topic:messages」

- 第33.3.8.4.6項「urn:oracle:webcenter:discussions:forum:topic:message」

33.3.8.4.1 urn:oracle:webcenter:discussions:forums

ディスカッション・フォーラムの参照(GET)および書込み(POST)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、このフォーラム・コレクション内の各フォーラムが含まれており、各フォーラムには、そのフォーラムの操作で使用するリンクが含まれています。POST操作からのレスポンスには、このフォーラム・コレクションに作成されたフォーラムと、そのフォーラムを操作するリンクが含まれています。

forumsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
forums

resourceindex
spaces
spaces:resourceindex
spaces:forums

forumsでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし、パラメータ: startIndex、itemsPerPage (ページ区切り)

- レスポンス - 本体: フォーラム

- POST

- リクエスト - 本体: フォーラム

- レスポンス - 本体: フォーラム

1ページに表示されるフォーラムの数のデフォルトは10です。詳細は、第53.5.2.5項「テンプレート」を参照してください。

forumsからリンクされるリソース・タイプ

表33-3は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表33-3 フォーラム関連のリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:discussions:forums

urn:oracle:webcenter:discussions:forum

33.3.8.4.2 urn:oracle:webcenter:discussions:forum

特定のディスカッション・フォーラムの参照(GET)、更新(PUT)および削除(DELETE)で使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、URIで識別された特定のフォーラムが含まれています。PUT操作からのレスポンスには、URIで識別されるフォーラムの変更されたバージョンが含まれています。DELETE操作からのレスポンスは、204です。

forumへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
forums
forum

resourceindex
spaces
spaces:resourceindex
spaces:forums
forum

resourceindex
activities
forum

forumでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- レスポンス - 本体: フォーラム

- PUT

- リクエスト - 本体: フォーラム

- レスポンス - 本体: フォーラム

- DELETE

- リクエスト - 本体: なし

- レスポンス - 本体: なし

forumの書込み可能要素

表33-4は、このリソースの書込み可能要素を示しています。

表33-4 フォーラムの書込み可能要素

要素

タイプ

必須

制約

説明

name

String

はい

1文字以上の文字

フォーラムの名前

displayName

String

いいえ

1文字以上の文字

表示に使用される名前

description

String

いいえ

1文字以上の文字

フォーラムの説明

forumの読取り専用要素

表33-5は、このリソースの読取り専用要素を示しています。

表33-5 forumの読取り専用要素

要素

タイプ

説明

id

整数

フォーラムのID

parentId

整数

親カテゴリのID

createdBy

String

フォーラムを作成したユーザーのID

author

personReference

フォーラムを作成したユーザーに関するユーザー情報。GUID、ID、表示名およびプロファイル・アイコンへのリンクで構成されます(createdByと同じユーザー)。

createdOn

日付

フォーラムが作成された日付

updatedBy

String

最後に変更を行ったユーザーのID

modifiedBy

personReference

最後に変更を行ったユーザーに関するユーザー情報。GUID、ID、表示名およびプロファイル・アイコンへのリンクで構成されます(updatedByと同じユーザー)。

updatedOn

日付

フォーラムが最後に変更された日付

webUrl

String

ディスカッション・サーバーへのダイレクト・アクセスURL

topicCount

整数

トピック数

messageCount

整数

メッセージ数

locked

Boolean

フォーラムがロックされている場合はTrue

favorite

Boolean

このフォーラムがお気に入りとしてマークされている場合はTrue

forumからリンクされるリソース・タイプ

表33-6は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表33-6 forumに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:discussions:forum

urn:oracle:webcenter:discussions:forum:topics

33.3.8.4.3 urn:oracle:webcenter:discussions:forum:topics

ディスカッション・トピックの参照(GET)および書込み(POST)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、このトピック・コレクション内の各トピックが含まれており、各トピックには、そのトピックの操作で使用するリンクが含まれています。POST操作からのレスポンスには、このトピック・コレクションに作成されたトピックと、そのトピックを操作するリンクが含まれています。

topicsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
forums
topics

resourceindex
spaces
spaces:resourceindex
spaces:forums
topics

topicsでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし、パラメータ: startIndex、itemsPerPage (ページ区切り)

- レスポンス - 本体: トピック

- POST

- リクエスト - 本体: トピック

- レスポンス - 本体: トピック

詳細は、第53.5.2.5項「テンプレート」を参照してください。

topicsからリンクされるリソース・タイプ

表33-7は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表33-7 topicsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:discussions:forum:topics

urn:oracle:webcenter:discussions:forum:topic

33.3.8.4.4 urn:oracle:webcenter:discussions:forum:topic

特定のディスカッション・トピックの参照(GET)、更新(PUT)および削除(DELETE)で使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、URIで識別される特定のトピックが含まれています。PUT操作からのレスポンスには、URIで識別されたトピックの変更されたバージョンが含まれています。DELETE操作からのレスポンスは、204です。

topicへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
forums
topics
topic

resourceindex
spaces
spaces:resourceindex
spaces:forums
topics
topic

resourceindex
activities
topicT

topicでサポートされるメソッド

次のメソッドは、このリソース・タイプでサポートされています。

- GET

- リクエスト-本体: なし

- レスポンス-本体: トピック

- PUT

- リクエスト-本体: トピック

- レスポンス-本体: トピック

- DELETE

- リクエスト-本体: なし

- レスポンス-本体: なし

topicの書込み可能要素

表33-8は、このリソース・タイプの書込み可能要素を示しています。

表33-8 topicの書込み可能要素

要素

タイプ

必須

制約

説明

subject

String

はい

1文字以上の文字

トピックの件名

body

String

いいえ

0文字以上の文字

トピックの内容

topicの読取り専用要素

表33-9は、このリソース・タイプの読取り専用要素を示しています。

表33-9 topicの読取り専用要素

要素

タイプ

説明

id

整数

トピックの識別子

parentId

整数

親メッセージの識別子

forumId

整数

このトピックの投稿先フォーラムの識別子

topicId

整数

このトピックの投稿先トピックの識別子

createdBy

String

トピックを作成したユーザーのID

author

personReference

トピックを作成したユーザーに関するユーザー情報。GUID、ID、表示名およびプロファイル・アイコンへのリンクで構成されます(createdByと同じユーザー)。

createdOn

日付

トピックが作成された日付

updatedBy

String

トピックを最後に更新したユーザー

updatedOn

日付

トピックが最後に更新された日付

webUrl

String

ディスカッション・サーバーへのダイレクト・アクセスURL

depth

整数

メッセージの階層の深度

messageCount

整数

このトピックの下の子メッセージ数

numberOfReplies

整数

このトピックに対する返信数

favorite

Boolean

そのユーザーでは、このトピックがお気に入りとしてのマークされているかどうか

locked

Boolean

トピックがロックされているかどうか

hidden

Boolean

トピックが非表示かどうか

hasAttachment

Boolean

トピックの添付ファイルの有無

topicからリンクされるリソース・タイプ

表33-10は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表33-10 topicに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:discussions:forum:topic

urn:oracle:webcenter:discussions:forum:topic:messages

33.3.8.4.5 urn:oracle:webcenter:discussions:forum:topic:messages

ディスカッション・トピック・メッセージの参照(GET)および書込み(POST)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、このメッセージ・コレクション内の各メッセージが含まれており、各メッセージには、そのメッセージの操作で使用するリンクが含まれています。POST操作からのレスポンスには、このメッセージ・コレクションに作成されたメッセージと、そのメッセージを操作するリンクが含まれています。

messagesへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
forums
topics
messages

resourceindex
spaces
spaces:resourceindex
spaces:forums
topics
messages

messagesでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし、パラメータ: startIndex、itemsPerPage (ページ区切り)

- レスポンス - 本体: メッセージ

- POST

- リクエスト - 本体: メッセージ

- レスポンス - 本体: メッセージ

詳細は、第53.5.2.5項「テンプレート」を参照してください。

messagesからリンクされるリソース・タイプ

表33-11は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表33-11 messagesに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:discussions:forum:topic:messages

urn:oracle:webcenter:discussions:forum:topic:message

33.3.8.4.6 urn:oracle:webcenter:discussions:forum:topic:message

特定のディスカッション・トピック・メッセージの参照(GET)、更新(PUT)および削除(DELETE)で使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、URIで識別される特定のメッセージが含まれています。PUT操作からのレスポンスには、URIで識別されるメッセージの変更されたバージョンが含まれています。DELETE操作からのレスポンスは、204です。

messageへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
forums
topics
messages
message

resourceindex
spaces
spaces:resourceindex
spaces:forums
topics
messages
message

messageでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- レスポンス - 本体: メッセージ

- PUT

- リクエスト - 本体: メッセージ

- レスポンス - 本体: メッセージ

- DELETE

- リクエスト - 本体: なし

- レスポンス - 本体: なし

messageの書込み可能要素

表33-12は、このリソースの書込み可能要素を示しています。

表33-12 messageの書込み可能要素

要素

タイプ

必須

制約

説明

subject

String

はい

1文字以上の文字

このメッセージの件名

body

String

いいえ

0文字以上の文字

このメッセージの内容

messageの読取り専用要素

表33-13は、このリソースの読取り専用要素を示しています。

表33-13 messageの読取り専用要素

要素

タイプ

説明

id

整数

メッセージのID

parentId

整数

親メッセージのID

forumId

整数

メッセージの投稿先フォーラムのID

topicId

整数

メッセージの投稿先トピックのID

createdBy

String

メッセージを作成したユーザーのID

author

personReference

メッセージを作成したユーザーに関するユーザー情報。GUID、ID、表示名およびプロファイル・アイコンへのリンクで構成されます(createdByと同じユーザー)。

createdOn

日付

メッセージが作成された日付

updatedBy

String

最後に変更を行ったユーザー

updatedOn

日付

メッセージが最後に変更された日付

webUrl

String

ディスカッション・サーバーへのダイレクト・アクセスURL

depth

整数

メッセージの階層の深度

messageCount

整数

メッセージ数

numberOfReplies

整数

このメッセージに対する返信数

hidden

Boolean

このメッセージが非表示の場合はTrue

hasAttachment

Boolean

メッセージに添付ファイルがある場合はTrue

messageからリンクされるリソース・タイプ

表33-14は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表33-14 messageに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:discussions:forum:topic:message

urn:oracle:webcenter:discussions:forum:topic:messages

33.3.9 ディスカッションのトラブルシューティング

この項では、ディスカッションで発生する一般的な問題と解決方法について説明します。

問題

再帰的フォーラムからのデータのフェッチに数分かかることがあります。たとえば、categoryIdおよびforumIdパラメータを空白にしてディスカッション・タスク・フローをページ上にドロップし、showrecursiveパラメータを${'true'}に設定すると、すべてのフォーラムのスクロールが終わるまでに数分かかることがあります。

解決方法

再帰的フォーラムを表示するオプションは、パフォーマンス上の理由からお薦めしません。

問題

Frameworkアプリケーションにはログインできますが、ディスカッション・サーバーにログインできません。

解決方法

ディスカッション・サーバーが、Frameworkアプリケーションと同じアイデンティティ・ストアを使用するように構成されていることを確認してください。詳細は管理者に問い合せてください。アイデンティティ・ストアの構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアイデンティティ・ストアの構成に関する項を参照してください。

問題

Frameworkアプリケーションからディスカッション・フォーラムにアクセスすると、次のエラー・メッセージが表示されます。

次のものに使用できるデフォルト接続またはアクティブ接続がありません: ディスカッション・フォーラム

解決方法

次の点を確認してください。

- ディスカッション・フォーラムの接続を作成済である。

- 必要なディスカッション・フォーラムの接続が、デフォルトの接続としてマークされている。

問題

ディスカッション・フォーラム・タスク・フロー上で特定の操作を実行しているときに、「フォーラムが見つかりません。」、「トピックが見つかりません。」などのエラー・メッセージが表示されます。

解決方法

次の点を確認してください。

- ディスカッション・サーバーが稼働している。

- フォーラムまたはトピックが、ディスカッション・サーバー上に存在する。

- 編集中のフォーラムまたはトピックに対して、必要な権限がある。

これらすべての設定が正しくても問題が続く場合は、管理者に詳細を問い合せてください。

問題

別のディスカッション・サーバーを使用するように接続を変更し、アプリケーション・ルート・カテゴリIDをadministrator-services-discussionsから変更した場合、「カテゴリが見つかりません。」などの例外が表示されることがあります。

解決方法

Frameworkアプリケーションのデプロイ先の管理対象サーバーを再起動します。

34 インスタント・メッセージおよびプレゼンスの統合

この章では、設計時にPortal Frameworkアプリケーションにインスタント・メッセージおよびプレゼンス(IMP)を統合する方法について説明します。

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

- 第34.1項「インスタント・メッセージおよびプレゼンスの概要」

- 第34.2項「IMPの基本構成」

- 第34.3項「IMPの詳細情報」

インスタント・メッセージおよびプレゼンスの管理および組込みの詳細は、次を参照してください。

- 『Oracle Fusion Middleware Oracle WebCenter Portalの管理』の「インスタント・メッセージおよびプレゼンスの管理」

- 『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「インスタント・メッセージおよびプレゼンス・ビューアの使用」

34.1 インスタント・メッセージおよびプレゼンスの概要

インスタント・メッセージおよびプレゼンス(IMP)を使用すると、ユーザーは他の認証済アプリケーション・ユーザーのプレゼンス・ステータス(オンライン、オフライン、ビジーまたは退席中)を監視できるようになります。これは、インスタント・メッセージやメールなどの対話オプションへの簡単なアクセスを提供します。さらに、自社のプレゼンスが使用できない場合(出張中など)は、サード・パーティのネットワーク・プレゼンス・サービス(Yahoo!メッセンジャーなど)に接続することもできます。

WebCenter Portalのツールとサービスが、同一IDのユーザー名を保持しているときには、IMP(ディスカッション、ドキュメント、メールなど)と統合できます。

この項では、IMPの機能と要件の概要を説明します。次のサブセクションが含まれます:

- 第34.1.1項「インスタント・メッセージおよびプレゼンスの理解」

- 第34.1.2項「インスタント・メッセージおよびプレゼンスの要件」

34.1.1 インスタント・メッセージおよびプレゼンスの理解

図34-1は、オンラインにいるユーザーを示す「プレゼンス」アイコンを示しています。

図34-1 「プレゼンス」アイコン(オンライン)

たとえばドキュメント・ライブラリのドキュメントの作成者としてユーザーが示されていれば、このアイコンをクリックすることでポップアップ・メニューを起動できます(図34-2)。

図34-2 「プレゼンス」アイコンのポップアップ・メニュー

このポップアップ・メニューには、次のアクションが含まれています。

- プロファイルの表示: 選択したユーザーのプロファイル・ページが表示されます。このページには、メールIDや連絡先電話番号などの情報が含まれています。

- メールの送信: メール・クライアント・セットの作成ウィンドウが開きます。これは、WebCenter Portalのメールまたはローカルのメール・クライアントのどちらかになります。

- 資格証明の変更: これは、外部アプリケーションを使用するかわりの手段になります。現在のユーザーに対してのみ表示されます。

- インスタント・メッセージの送信: コンピュータで実行中のインスタント・メッセージ・クライアント(Microsoft Communicator)を開きます。

連絡先名の横にあるアイコンは、各連絡先のプレゼンス状態を示します。

スクリーン・ショットおよびプレゼンス・ステータス・オプションを含む実行時のIMPの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「インスタント・メッセージおよびプレゼンス・ビューアの使用」の章を参照してください。

34.1.2 インスタント・メッセージおよびプレゼンスの要件

IMPにはバックエンド・プレゼンス・サーバーが必要です。WebCenter Portalでは、Microsoft Office Live Communications Server (LCS) 2005、Microsoft Office Communications Server (OCS) 2007、およびMicrosoft Lync 2010の動作が保証されています。

注意:

Oracle Beehive Serverの接続は、このリリースではサポートされていません。

34.2 IMPの基本構成

この項では、IMPをアプリケーションに追加するために必要な手順について説明します。次のサブセクションが含まれます:

- 第34.2.1項「IMP用の接続の設定」

- 第34.2.2項「IMP機能の設計時の追加」

- 第34.2.3項「IMPのセキュリティの設定」

34.2.1 IMP用の接続の設定

プレゼンス・サーバーを適切にインストールして実行した後で、そのサーバーへの接続を追加する必要があります。この項では方法について説明します。次のサブセクションが含まれます:

- 第34.2.1.1項「インスタント・メッセージおよびプレゼンスの接続」

- 第34.2.1.2項「IMP用のMicrosoft LCS接続を設定する方法」

- 第34.2.1.3項「IMP用のMicrosoft OCS接続およびMicrosoft Lync接続を設定する方法」

34.2.1.1 インスタント・メッセージおよびプレゼンスの接続

インスタント・メッセージおよびプレゼンスには、プレゼンス・サーバー(Microsoft LCS、Microsoft OCSまたはMicrosoft Lync)へのインスタント・メッセージおよびプレゼンス接続が必要になります。

独自の認証を処理するアプリケーションとWebCenter Portalがやり取りするときには、そのアプリケーションと外部アプリケーション定義を関連付けて、資格証明プロビジョニングに備えることができます。外部アプリケーションは必須です。

注意:

Oracle JDeveloperで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でFusion Middleware Controlを使用して、後から接続を追加、削除または変更できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理を参照してください。

34.2.1.1.1 ユーザー名のIMアドレスへのマッピング

im.address.resolver.classは、ユーザー名をIMアドレスにマップし、IMアドレスをユーザー名にマップするために使用するリゾルバの実装を処理します。この実装は、次に示す場所と順序でIMアドレスを検索します。

1. ユーザー・プリファレンス - ユーザーが「プレゼンス・プリファレンス」ページで自分のIMアドレスを入力しておくと、そのユーザーのIMアドレスはユーザーのプリファレンスで見つかります。

2. ユーザー資格証明 - 外部アプリケーションが構成されている場合は、アカウント・フィールドにユーザーのIMアドレスが示されます。

3. ユーザー・プロファイル - ユーザーがプリファレンスを指定していないときに、WebCenter Portalが外部アプリケーションからIMアドレスをフェッチできない場合、WebCenter PortalはLDAP(つまり、ユーザーのプロファイル)からIMアドレスを読み取ります。デフォルトのLDAPプロパティの読取り先は、BUSINESS_EMAIL属性です。ユーザーはこのデフォルトをim.address.profile.attributeで変更できます。

独自のリゾルバ実装を使用するには、IMPAddressResolverクラスを開いて、2つのメソッドresolveAddressとresolveUsernameを実装します。

- resolveAddressメソッドでは、ユーザー名を受け取り、それに対応するIMアドレスを返します。

- resolveUsernameメソッドでは、IMアドレスを受け取り、それに対応するユーザー名を返します。

新しいリゾルバ・クラスにプラグインするには、プロパティのim.address.resolver.classをデフォルトのoracle.webcenter.collab.rtc.IMPAddressResolverImplから使用しているリゾルバ実装に変更します。例34-1は、リゾルバがアドレスを構成するためにユーザー名にドメイン文字列@example.comを追加し、さらにユーザー名を構成するためにアドレスから同じドメイン文字列を削除するIMPAddressResolver実装例を示しています。

例34-1 リゾルバの実装

public class SampleAddressResolver extends IMPAddressResolver
{
private String DOMAIN = "@example.com";

public SampleAddressResolver()
{
super();
}

//Append DOMAIN to the username to construct the IM address
public String resolveAddress(String username)
{
String imAddress = username;
if(!imAddress.endsWith(DOMAIN))
{
imAddress = imAddress + DOMAIN;
}

return imAddress;
}

//Remove DOMAIN from the IM address to construct the username
public String resolveUsername(String imAddress)
{
String username = imAddress;
if(username.endsWith(DOMAIN))
{
int index = username.indexOf(DOMAIN);
username = username.substring(0, index);
}

return username;
}
}

関連項目:

『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』のsetIMPServicePropertyに関する項

34.2.1.2 IMP用のMicrosoft LCS接続を設定する方法

LCSプレゼンス・サーバーへの接続を設定するには:

1. Oracle JDeveloperで、インスタント・メッセージおよびプレゼンスを利用するアプリケーションを開きます。

2. アプリケーション・ナビゲータの「アプリケーション・リソース」で、「接続」を右クリックし、リストから新しい接続「インスタント・メッセージおよびプレゼンス」を選択します。

3. 「インスタント・メッセージおよびプレゼンス接続の作成」ダイアログ・ボックスで、接続の作成先として「アプリケーション・リソース」を選択します。
「アプリケーション・リソース」の接続はそのアプリケーションでのみ使用可能ですが、「IDE接続」の接続は作成したすべてのアプリケーションで使用可能です。他のアプリケーション内の接続を使用する予定の場合は、再作成する必要を回避するためにIDE接続を選択します。

4. 「名前」ページで、「接続名」に接続の一意の名前を入力します。
他の接続が同じ名前を持つことはできません。

5. 「接続タイプ」リストから、Microsoft Live Communication Server 2005を選択します。

6. 図34-3に示すように、これをデフォルト接続として使用するには、「デフォルト接続として設定」チェック・ボックスを選択します。

図34-3 LCSのインスタント・メッセージおよびプレゼンス接続の作成、手順1

7. 「次へ」をクリックします。

8. 「一般」ページ(図34-4)で、Microsoft LSCインスタンスの情報を入力します。

図34-4 LCSのインスタント・メッセージおよびプレゼンス接続の作成、手順2

例:

- Urlはhttp://host:port/RTCです。ここで、RTCはサーバー側モジュールがデプロイされた仮想ディレクトリ名です。(詳細は、Microsoft Live Communications Server 2005のドキュメントを参照してください。)

- Domainプロパティは、後方互換性のために維持されます。これは空白のままにしてください。

- Connection Timeoutプロパティはオプションです。これは、接続の作成時にWebCenter Portalがサーバーからの応答を待機する時間(秒単位)を表します。プレゼンス・サーバーが指定の時間内に応答しない場合、接続は中断され、エラーが報告されます。

- PoolNameには、Microsoft Communications Serverコンポーネントがデプロイされているプールの名前を入力します。(詳細は、Microsoft Live Communications Serverのドキュメントを参照してください。)

9. 同じページで、プレゼンス・サーバーの認証メカニズム(ユーザー名とパスワード)を利用するように、「外部アプリケーション」を選択します。
LCS接続には、外部アプリケーションが必須です。そのアプリケーションでは、プレゼンス・サーバー・ユーザーをアプリケーション・ユーザーにマップして、エンド・ユーザーが情報を要求するたびにユーザー名とパスワードを入力する必要がなくなるようにします。IMP用の外部アプリケーションの構成の詳細は、第34.2.3項「IMPのセキュリティの設定」を参照してください。

10. 「接続のテスト」をクリックして、接続が正常であることを確認します。

11. 「次へ」をクリックして接続を作成します。

12. 「追加プロパティ」ページ(図34-5)で、必要に応じてパラメータを追加できます。

図34-5 LCSのインスタント・メッセージおよびプレゼンス接続の作成、手順3

13. 「終了」をクリックします。

新しいIMおよびプレゼンス接続は、「アプリケーション・リソース」→「接続」の下に表示されます。

34.2.1.3 IMP用のMicrosoft OCS接続およびMicrosoft Lync接続を設定する方法

Microsoft OCSまたはMicrosoft Lyncプレゼンス・サーバーへの接続を設定するには:

1. Oracle JDeveloperで、インスタント・メッセージおよびプレゼンスを利用するFrameworkアプリケーションを開きます。

2. アプリケーション・ナビゲータの「アプリケーション・リソース」で、「接続」を右クリックし、リストから新しい接続「インスタント・メッセージおよびプレゼンス」を選択します。

3. 「インスタント・メッセージおよびプレゼンス接続の作成」ダイアログ・ボックスで、接続の作成先として「アプリケーション・リソース」を選択します。
「アプリケーション・リソース」の接続はそのアプリケーションでのみ使用可能ですが、「IDE接続」の接続は作成したすべてのアプリケーションで使用可能です。他のアプリケーション内の接続を使用する予定の場合は、再作成する必要を回避するためにIDE接続を選択します。

4. 「名前」ページで、「接続名」に接続の一意の名前を入力します。
他の接続が同じ名前を持つことはできません。

5. 「接続タイプ」リストから、Microsoft Office Communications Server 2007を選択します。

注意:

Microsoft Lyncの接続は、Microsoft Office Communications Server 2010の接続タイプを使用します。

6. 「デフォルト接続として設定」チェック・ボックスを選択します。
図34-6に示すように、1つの接続がデフォルト接続としてマークされる必要があります。

図34-6 Microsoft OCSまたはMicrosoft LyncのIMP接続の作成、手順1

7. 「次へ」をクリックします。

8. 「一般」ページ(図34-7)で、Microsoft OCSまたはMicrosoft Lyncインスタンスのパラメータを入力します。

図34-7 Microsoft OCSまたはMicrosoft LyncのIMP接続の作成、手順2

例:

- URLは使用しているMicrosoft OCSまたはLyncインスタンスの場所です。これはhttp://host:port/RTCで、RTCはサーバー側モジュールがデプロイされている仮想ディレクトリ名です。(詳細は、Microsoft社のドキュメントを参照してください。)

- Domainプロパティは、後方互換性のために維持されます。これは空白のままにしてください。

- Connection Timeoutプロパティはオプションです。これは、接続の作成時にWebCenter Portalがサーバーからの応答を待機する時間(秒単位)を表します。プレゼンス・サーバーが指定の時間内に応答しない場合、接続は中断され、エラーが報告されます。

- User Domainは、Microsoft OCSまたはLyncのActive Directoryドメインです。このパラメータは必須です。

- Poolnameには、Microsoft Communications Serverコンポーネントがデプロイされているプールの名前を入力します。このパラメータは必須です。(詳細は、Microsoft社のドキュメントを参照してください。)

9. 同じページで、プレゼンス・サーバーの認証メカニズム(ユーザー名とパスワード)を利用するように、「外部アプリケーション」を選択します。
Microsoft OCS接続およびMicrosoft Lync接続には、外部アプリケーションが必須です。そのアプリケーションでは、プレゼンス・サーバー・ユーザーをアプリケーション・ユーザーにマップして、エンド・ユーザーが情報を要求するたびにユーザー名とパスワードを入力する必要がなくなるようにします。IMP用の外部アプリケーションの構成の詳細は、第34.2.3項「IMPのセキュリティの設定」を参照してください。

10. 「接続のテスト」をクリックして、接続が正常であることを確認します。

11. 「次へ」をクリックします。

12. 「追加プロパティ」ページ(図34-5)で、必要に応じてパラメータを追加できます。

図34-8 Microsoft OCSまたはMicrosoft LyncのIMP接続の作成、手順3

13. 「終了」をクリックします。

新しいIMおよびプレゼンス接続は、「アプリケーション・リソース」→「接続」の下に表示されます。

34.2.2 IMP機能の設計時の追加

この項では、アプリケーションへのIMPの基本的な組込みについて説明します。次のサブセクションが含まれます:

- 第34.2.2.1項「IMPタスク・フロー」

- 第34.2.2.2項「IMP機能をアプリケーションに追加する方法」

34.2.2.1 IMPタスク・フロー

IMPには、タスク・フローはありません。

34.2.2.2 IMP機能をアプリケーションに追加する方法

IMPをFrameworkアプリケーションに追加するには:

1. 第2章「開発環境の設定」の手順に従い、カスタマイズ可能なページをアプリケーションで作成します。

2. IMPを追加するページを開きます。

3. プレゼンス・サーバーに接続するようにアプリケーションが構成されていることを確認します。詳細は、第34.2.1項「IMP用の接続の設定」を参照してください。

4. コンポーネント・パットで、「プレゼンス」コンポーネントをドラッグして、「プレゼンス」アイコンを追加するページにドロップします(図34-9)。

図34-9 コンポーネント・パレット - IMPコンポーネント

「プレゼンス」アイコンは、ディスカッション・トピックの作成者、メールの送信者/受信者、ドキュメントの所有者など、ユーザーを表示するあらゆる場所に使用できます。

5. 結果のダイアログ・ボックスで、インスタント・メッセージおよびプレゼンス接続にリンクされたバックエンド・サーバーに存在する、ユーザーのユーザー名を入力します。
プレゼンス・コンポーネントは、いくつでもアプリケーション・ページに追加できます。

プレゼンス・コンポーネントのオプション・パラメータの詳細は、第34.3.2項「IMPビューのカスタマイズ」を参照してください。

6. 「終了」をクリックします。

7. コンポーネント・パレットから、プレゼンス・データをドラッグして、ページの末尾(つまり、<af:document>タグの前)にドロップします。
このコンポーネントに属性はありません。

プレゼンス・データ・コンポーネントは、ページ上のすべてのプレゼンス・コンポーネントのステータス情報(オンライン、オフライン、ビジーなど)を提供します。これにより、ページ全体のユーザーに対応するすべてのプレゼンス情報が一貫したステータス情報を示していることが検証されます。このコンポーネントを使用しないと、すべてのユーザーがオンラインとして表示されます。

プレゼンス・データ・コンポーネントは、バックエンド・サーバーへのコールを行うため、最高のパフォーマンスを実現するには、このコンポーネントがページの最後のタグになるようにします。このタグがアプリケーション内のすべてのページに追加されないようにするために、プレゼンス・データが最後(つまり、</af:form>タグの直前)のコンポーネントとして含まれるページ・テンプレートの使用を検討してください。

注意:

実行時に、コンポーネント(フォーラム、メール、ドキュメントなど)の追加が可能なページを作成できます。多くのコンポーネントにプレゼンス・タグが含まれていますが、プレゼンス・データ・タグをユーザーがページに追加する手段はありません。カスタム・ページにプレゼンスを表示するには、基になるテンプレートに手動でプレゼンス・データ・タグを追加する必要があります。

8. 接続を作成するときに、IDE接続に「外部アプリケーション」を選択した場合は、リソース・パレットまたはコンポーネント・パレットから「外部アプリケーション - パスワードの変更」タスク・フローをドラッグして、アプリケーションにドロップします。
このタスク・フローにより、エンド・ユーザーは、適切なユーザー名とパスワードを外部アプリケーションに設定できます。

9. プロジェクトを保存し、ページをブラウザで実行して、プレゼンス・コンポーネントを確認します。
図34-10は、実行時のプレゼンス・コンポーネントとユーザーMonty Montasaurus111の表示名を示しています。

図34-10 WebCenter Portalの「プレゼンス」アイコン(オンライン)

34.2.3 IMPのセキュリティの設定

IMPにはユーザー・アイデンティティが必要です。WebCenter Portal - Frameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第74.3項「ADFセキュリティの構成」を参照してください。

資格証明は、外部アプリケーション(パブリック資格証明)から読み取られ、プレゼンス・サーバーへのログオンに使用されます。ADFセキュリティを適用していない場合や、外部アプリケーションが構成されていない場合、ユーザーは実行時に認証できず、コンテンツが表示されません。

注意:

プレゼンス・サーバーとFrameworkアプリケーションは、同じアイデンティティ・ストアを指す必要があります。このアイデンティティ・ストアは、jazn-data.xmlによるファイルベースのものではなく、LDAPベースのものであることが必要です。

プレゼンス・サーバーにアクセスするため、IMPは専用のユーザー・アカウントで外部アプリケーションを使用できます。

Microsoft LCS、OCSおよびLyncは、外部アプリケーション接続をサポートしています。セキュリティ保護されたアプリケーションの場合、ユーザーはプレゼンス・ステータスを取得します。「資格証明の変更」オプションは、外部アプリケーションを使用するかわりの手段として機能します。ログイン済のユーザーは、自分の「プレゼンス」ポップアップ・メニューをクリックして、「資格証明の変更」を選択できます。セキュリティは、信頼できるプライベート・ネットワークに設定する必要があります。

認証に外部アプリケーションを使用するには:

1. インスタント・メッセージおよびプレゼンス接続の作成ウィザードの「一般」ページで、「外部アプリケーション」の横にある「+」アイコンをクリックします。
これにより、外部アプリケーションの登録ウイザードが起動されます。このアプリケーションは、プレゼンス・サーバーのユーザーをアプリケーション・ユーザーにマップするため、エンド・ユーザーはユーザー名とパスワードを毎回入力する必要がなくなります。

注意:

外部アプリケーションの資格証明プロビジョニングは、IMP接続に組み込まれています。外部アプリケーション - パスワードの変更タスク・フローをページにドロップする必要はありません。

2. 「名前」ページで、次の操作を行います。

- 「アプリケーション名」に、アプリケーションを識別する一意の名前を入力します。この名前は、Frameworkアプリケーション内、および他の接続間で一意である必要があります。このフィールドは後から変更できないことに注意してください。

- 「表示名」に、資格証明プロビジョニング画面でエンド・ユーザーに表示されるアプリケーション名を入力します。

3. 「次へ」をクリックします。

4. 「一般」ページでは、次のプロパティをデフォルト値のままにしておきます。

- ログインURL

- ユーザー名/IDフィールド名

- パスワード・フィールド名

5. 「認証メソッド」リストから、「POST」を選択します。これにより、フォーム本体内でログイン資格証明が送信されます。IMP用の外部アプリケーションには、この認証方式が必要になります。

6. 「次へ」をクリックします。

7. 「追加フィールド」ページでは、次の操作を実行します。
「フィールドの追加」をクリックし、「アカウント」という名前のフィールドを追加します。図34-11に示すように、「ユーザーに表示」チェック・ボックスが選択されていることを確認します。

注意:

IMP用の外部アプリケーションには、この追加フィールドが必要になります。これは、ユーザーに表示する必要があります。

図34-11 Account追加フィールド

8. 外部アプリケーションでは、様々な資格証明を接続に関連付けることができます。

- 共有資格証明が指定されていると、認証済の各ユーザーは、外部アプリケーションへのアクセスに同じ資格証明(つまり、ここに定義できるユーザー名とパスワード)を使用するようになります。すべてのログイン済ユーザーに対して、1つのプレゼンス・セッションが作成されます。パブリック・ユーザーは、これにアクセスできません。

- パブリック資格証明の場合、Frameworkアプリケーションを認証することなく、すべての認証されていない(パブリックの)ユーザーに対する特定のプレゼンスIDからのプレゼンスを表示できます。アプリケーションがセキュアでない場合や、ユーザーがログインしていない場合は、パブリック資格証明が使用されます。すべてのパブリック・ユーザーに対して1つのプレゼンス・セッションが作成されます。

- プライベート資格証明の場合、各ユーザーは個人のIDで認証する必要があります(つまり、各アプリケーション・ユーザーは、自分の資格証明を指定する必要があるということです)。ユーザーごとに、1つのプレゼンス・セッションが作成されます。

9. 外部アプリケーションにプライベート資格証明を使用させる場合は「終了」をクリックし、共有またはパブリック資格証明を設定する場合は「次へ」をクリックします。

10. 共有資格証明のみの場合: 「共有資格証明」ページで、「共有資格証明の指定」が選択されていることを確認して、共有ユーザー資格証明とIDを入力します。

11. パブリック資格証明のみの場合: 「パブリック資格証明」ページで、「パブリック資格証明の指定」が選択されていることを確認して、パブリックで使用するためのユーザー資格証明とIDを入力します。

12. 「終了」をクリックして、外部アプリケーションを登録します。

13. IMP接続ウィザードで、IMP用に新しく作成した外部アプリケーション接続が選択されていることを確認します。

外部アプリケーションの使用の詳細は、第74.13項「外部アプリケーションの使用」を参照してください。

34.3 IMPの詳細情報

この項では、IMPで使用可能なオプション機能について説明します。次のサブセクションが含まれます:

- 第34.3.1項「ネットワーク・プレゼンスの有効化」

- 第34.3.2項「IMPビューのカスタマイズ」

- 第34.3.3項「IMPのトラブルシューティング」

34.3.1 ネットワーク・プレゼンスの有効化

WebCenter Portalのプレゼンスが使用できない場合(たとえば、自社でJabber/XMPPプレゼンス・サーバーを使用している場合や、アイデンティティ管理システム全体に各ユーザーが分散されたフェデレーテッド・プレゼンス・サーバーがある場合)は、サード・パーティのネットワーク・プレゼンス・サービスに接続できます。

デフォルトのWebCenter Portalは、ネットワーク・プレゼンスについてYahoo!メッセンジャーをサポートしています。ただし、ネットワーク・プレゼンス・モデルを拡張して、その他のプロバイダ(ICQなど)を含めることもできます。

この項には次のサブセクションが含まれます:

- 第34.3.1.1項「Yahoo!メッセンジャー・プレゼンスの設定」

- 第34.3.1.2項「その他のネットワーク・プレゼンス・プロバイダの設定」

34.3.1.1 Yahoo!メッセンジャー・プレゼンスの設定

WebCenter Portal Frameworkでは、エンド・ユーザーがIMプリファレンスをYahoo!メッセンジャー・プレゼンスに設定できます。ポータルの開発者は、rtcPresenceHandler Beanを利用することで、この機能を有効にします。

Yahoo!メッセンジャー・プレゼンスをFrameworkアプリケーションに組み込むには、次の手順を実行します。

1. JPSXページの「ソース」タブで、ユーザーがYahoo!メッセンジャーの資格証明を入力するためのユーザー・インタフェース(「Display Name」入力ボックスおよび「IM Address」入力ボックスと、「Save IM Preferences」ボタン)を追加します。
例34-2に、ユーザーが表示名(Display Name)とIMアドレス(IM Address)を入力するための2つのaf:inputTextコンポーネントと、ユーザーがプリファレンスを保存するためのaf:commandButtonコンポーネントを示します。

このELを使用してinputText値を設定することで、プリファレンスBeanのdisplayNameとimAddressを設定します。値を保存するためにユーザーがボタンをクリックすると、プリファレンスを保存するBeanのメソッドが呼び出されます。

例34-2 Yahoo!メッセンジャー・プレゼンス用のユーザー・インタフェース

<af:inputText label="Display Name"
value="#{rtcPreferenceHandler.displayName}" id="it1"/>
<af:inputText label="IM Address"
value="#{rtcPreferenceHandler.imAddress}" id="it2"/>
<af:commandButton text="Save IM Preferences" id="cb1"
actionListener="#{rtcPreferenceHandler.savePreferences}"/>

例34-3はユーザー・インタフェースを含むページの全ソース・コードを示しています。

例34-3 Yahooプレゼンスがあるページのソース・コード

<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:rtc="http://xmlns.oracle.com/webcenter/collab/rtc">
<jsp:directive.page contentType="text/html;charset=UTF-8"/>
<f:view>
<af:document id="d1">
<af:form id="f1" usesUpload="true">
<af:panelStretchLayout id="psl1">
<f:facet name="bottom"/>
<f:facet name="center">
<af:panelGroupLayout layout="scroll"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
id="pgl1">
<rtc:presence username="#{rtcPreferenceHandler.imAddress}" displayName="#{rtcPreferenceHandler.displayName}" id="p1"/>
<rtc:presenceData id="pd1"/>
<af:inputText label="Display Name" value="#{rtcPreferenceHandler.displayName}" id="it1"/>
<af:inputText label="IM Address" value="#{rtcPreferenceHandler.imAddress}" id="it2"/>
<af:commandButton text="Save IM Preferences" id="cb1"
actionListener="#{rtcPreferenceHandler.savePreferences}"/>

</af:panelGroupLayout>
</f:facet>
<f:facet name="start">
<af:spacer width="10" height="10" id="s1"/>
</f:facet>
<f:facet name="end">
<af:spacer width="10" height="10" id="s2"/>
</f:facet>
<f:facet name="top"/>
</af:panelStretchLayout>
</af:form>
</af:document>
</f:view>
</jsp:root>

2. JPSXページを実行して、ユーザーがYahoo!メッセンジャーの資格証明を入力できることを確認します(図34-12)。

図34-12 Yahoo!メッセンジャーの資格証明を入力するためのユーザー・インタフェース

そのユーザーのプレゼンス・タグが、オンライン(図34-13)またはオフライン(図34-14)のいずれかのYahooプレゼンスを示します。

図34-13 Yahooの「プレゼンス」アイコン(オンライン)

図34-14 Yahooの「プレゼンス」アイコン(オフライン)

図34-15に、ディスカッション・フォーラム・タスク・フローが組み込まれたサンプル・ページを示します。このページには、Yahoo!メッセンジャーのプレゼンスとWebCenter Portalのプレゼンスが一緒に表示されています。

図34-15 WebCenter PortalのプレゼンスとYahoo!メッセンジャーのプレゼンスを含むサンプル・ページ

34.3.1.2 その他のネットワーク・プレゼンス・プロバイダの設定

別のネットワーク・プレゼンス・プロバイダを使用する場合は、そのサービス用のPresenceNetworkAgent実装クラスと、その実装クラスをjarファイルにリストするimp-pna.configファイルを含むアプリケーションをデプロイする必要があります。

たとえば、SamplePNAという新しいプレゼンス・ネットワーク・エージェントについて考えてみます。Project1.SamplePNAクラス・ファイルとimp-pna.configファイルの2つのファイルを作成する必要があります。

- Project1.SamplePNA.java: このクラスは、oracle.webcenter.collab.rtc.PresenceNetworkAgentを実装します。これは、次の3つのメソッドを実装する必要があります。

- isSupported(PNAContext context): このメソッドでは、プレゼンスがリクエストされたユーザーをPNAがサポートしている場合にtrueを返す必要があります。提供されるPNAContextオブジェクトには、ユーザー情報を格納します。たとえば、ドメインがexample.comのIMアドレスをすべてサポートするPNAは、PNAContextオブジェクトからimAddressを取得して、ドメインexample.comをチェックできます。

- getURL(PNAContext context): このメソッドでは、ユーザーの「プレゼンス」アイコンに到達する完全修飾URLを返す必要があります。これも同様に、PNAContextオブジェクトからユーザー情報を取得します。

- getChatURI(PNAContext context): このメソッドは、チャット・クライアントを起動するブラウザ互換のURIを返します(たとえば、sip:user@example.com)。

例34-3は、このSamplePNAクラス・ファイルを示しています。

例34-4 SamplePNAクラス・ファイル

public class SamplePNA implements PresenceNetworkAgent
{
private String DOMAIN = "@example.com";

public SamplePNA()
{
super();
}

//Returns true if the imAddress ends with DOMAIN
public Boolean isSupported(PNAContext context)
{
String imAddress = context.getIMAddress();
if(imAddress.endsWith(DOMAIN))
{
return true;
}

return false;
}

//Returns the URL to the icon representing the current status of a user
public String getURL(PNAContext context)
{
String imAddress = context.getIMAddress();
Strung url = "http://www.example.com?address=" + imAddress;
return url;
}

//Returns the browser compatible chat uri to invoke the thick client
public String getChatURI(PNAContext context)
{
String imAddress = context.getIMAddress();
String chatURI = "sip:" + imAddress;
return chatURI;
}
}

- META-INF/imp-pna.config: このファイルには、使用可能なPNAAgentクラスをリストします。この場合は、次の行のみが含まれます。

Project1.SamplePNA

user@example.comとしてIMアドレスが指定されたプレゼンス・タグがある場合は常に、構成されたURLは「プレゼンス」アイコンとしてユーザー・インタフェース上に表示されます。

<rtc:presence username="user1@example.com" resolveAddress="false"/>

34.3.2 IMPビューのカスタマイズ

表34-1は、プレゼンス・コンポーネントによってサポートされている属性を示しています。username属性のみが必須であり、その他の属性はすべてオプションです。これらの属性は、プロパティ・インスペクタで更新できます。

表34-1 プレゼンス・コンポーネントの説明

属性

説明

username

アプリケーション・ページに追加するプレゼンス情報を持つユーザー。この属性は必須です。

display

コンポーネントの表示方法。次の値のいずれかを指定します。

- icon: 「プレゼンス」アイコンのみを表示して、名前はレンダリングしません。

- name: ユーザー名を表示しますが、「プレゼンス」アイコンは表示しません。

- both (デフォルト): アイコンとユーザー名の両方を表示します。

displayName

デフォルトでは、プレゼンス・コンポーネントはユーザー名を表示します。

service-config.xml内のフラグget.display.name.from.user.profileがtrueに設定されており、かつ、このdisplayName属性が指定されていない場合、プレゼンス・コンポーネントは、ユーザー・プロファイルからユーザーの表示名の検索を試行します。

iconPosition

アイコンの場所。有効な値はbeginとendです。デフォルト値は、beginです。

controlsEnabled

このコンポーネントがエンド・ユーザーに対して豊富な対話機能を提供するかどうかを定義するブール値。この属性がfalseに設定されている場合は、プレゼンス・コンポーネントをクリックしても何も起きません。

id

ページ上のコンポーネントの一意の識別子。識別子はHTMLで許容されている構文のサブセットに従う必要があります。

- 長さがゼロの文字列にすることはできません。

- 最初の文字はASCII文字(A-Z、a-z)またはアンダースコア(_)である必要があります。

- 後続の文字は、ASCII文字または数字(A-Z、a-z、0-9)、アンダースコア(_)またはダッシュ(-)である必要があります。

smallIcon

小型の12x12アイコン・セット(true)を使用するか、デフォルトの16x16アイコン・セット(false)を使用するかを定義するブール値。デフォルト値はfalseです。

rendered

このコンポーネントをレンダリングするかどうかを定義するブール値。デフォルト値はtrueです。

binding

コンポーネント・インスタンスをBeanに格納するためのEL参照。バッキングBeanからコンポーネントにプログラムでアクセスする場合や、コンポーネントの作成をバッキングBeanに移動する場合は、これを使用します。

inlineStyle

このコンポーネントで使用するCSSスタイル。CSSリリース2.0以上に準拠するスタイルを手動で入力するか、このノードを開いてスタイル要素を指定します。これは、基本的なスタイルの変更用です。

styleClass

このコンポーネントで使用するCSSスタイル・クラス。

resolveToAddress

指定されたusernameをIMアドレスに解決するかどうかを定義するブール値。デフォルト値はtrueです。

ただし、指定されたusernameがIMアドレスの場合は、この値をfalseに設定して、IMPがusernameをIMアドレスとして使用するようにします。

34.3.3 IMPのトラブルシューティング

この項では、IMPで発生する一般的な問題と解決方法について説明します。

問題

「プレゼンス」アイコンが、Frameworkアプリケーションに表示されません。

解決方法

IMP接続がアプリケーション内に存在し、その接続がアクティブとして設定されていることを確認してください。

問題

ユーザーのプレゼンス・ステータスの変更が、Frameworkアプリケーションに表示されません。

解決方法

ログイン済ユーザーのセッションごとに、IMPはプレゼンス・サーバーからプレゼンス情報をフェッチして、その情報をプレゼンス・キャッシュに格納します。プレゼンスのリクエストに対して、IMPはキャッシュの有効期限が切れるまでキャッシュのデータを返します。デフォルトのキャッシュ有効期間は60秒です。

更新されたプレゼンス・ステータスを表示するには、キャッシュの有効期限が切れて、最新のプレゼンス・ステータスが取得されるまで待機してください。

また、rtc.cache.time構成プロパティを必要な値(秒単位)に設定することで、キャッシュ有効期限を変更できます。30秒としてサンプル値を示す強調表示されたエントリを含めるようにadf-config.xmlを更新します。例34-5は例を示しています。

例34-5 adf-config.xml内のrtc.cache.timeの有効期限値の設定

<adf-collaboration-config xmlns="http://xmlns.oracle.com/webcenter/collab/config">
<service-config serviceId="oracle.webcenter.collab.rtc">
<property name="rtc.cache.time" value="30"/></service-config>
</adf-collaboration-config>

問題

いくつかのオプション(「インスタント・メッセージの送信」など)が、FrameworkアプリケーションのIMPのポップアップ・メニューで使用できません。

解決方法

IMPが、Frameworkアプリケーションで構成されていることを確認してください。また、各種ポップアップ・メニュー・オプションについて、次の設定も確認してください。

- 「プロファイルの表示」オプションが使用できない場合: アプリケーションがセキュリティ保護されていることを確認してください。

- 「インスタント・メッセージの送信」オプションが使用できない場合: IMPがアプリケーション内で構成されていることを確認してください。

問題

Frameworkアプリケーションからメッセージを送信できません。「インスタント・メッセージの送信」オプションをクリックすると、エラーが返されます。

解決方法

プレゼンス・サーバーでSIPクライアントがサポートされていることと、認証されたユーザーとしてログオンしていることを確認してください。サポート対象のSIPクライアントは、Microsoft Communicatorです。

35 メールの統合

この章では、設計時に、Portal Frameworkアプリケーションにメール機能を統合する方法について説明します。

この章には次の項が含まれます。

- 第35.1項「メールの概要」

- 第35.2項「メールの基本構成」

- 第35.3項「メールの詳細情報」

注意:

WebCenter Portalメールのサポート対象は受信ボックスのみです。その他のフォルダやメッセージの移動はサポートしていません。

メールの管理および組込みの詳細は、次を参照してください。

- 『Oracle Fusion Middleware Oracle WebCenter Portalの管理』の「メールの管理」

- 『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「メールの使用」

35.1 メールの概要

この項では、WebCenter Portalメールの機能と要件の概要を説明します。次のサブセクションが含まれます:

- 第35.1.1項「メールの理解」

- 第35.1.2項「メールの要件」

35.1.1 メールの理解

メール機能により、ユーザーは、Internet Message Access Protocol4 (IMAP4)およびSimple Mail Transfer Protocol (SMTP)をサポートするメール・サーバーの受信ボックスにアクセスできます。さらに、ユーザーはアプリケーション内から新しいメール・メッセージ(および添付ファイル)を作成したり、メッセージを削除、返信、および転送できます。

このメールがユーザーのメール・クライアントを置き換えることはありません。ユーザーが単一の共同作業環境でメールにアクセスしたり、メールを作成できるようにするだけです。

メールでは次を実行できます。

- リンクされたメールの件名をクリックしてメッセージを閲覧します。

- 「送信者」フィールドを開いて、送信者の詳細(日付を含む)を表示します。

- スクロール・ダウンして、ビュー内に示されていない他のメッセージを表示します。フェッチ済のメッセージ間を、キャッシュされたメッセージとしてナビゲートできます。

- メール・ダイアログ内の添付ファイル・セクションを開き、「添付」をクリックして、ファイルをメッセージに添付します。新しいダイアログ・ポップアップで添付ファイルを指定します。「添付ファイルの削除」アイコンをクリックして、メールから添付ファイルを削除します。

- 「返信」または「全員に返信」アイコンをクリックして、メッセージに返信します。

- 「転送」アイコンをクリックして、メッセージを転送します。

- 「取消」をクリックして、操作(メールの送信など)を取り消します。

図35-1は実行時のメール・タスク・フローを示しています。ビューの上部には、表示するメール・メッセージの数(ここでは「すべて」)を示すドロップダウン・リスト、「作成」アイコンおよび「リフレッシュ」アイコンの3つの要素があります。「リフレッシュ」アイコンを使用すると、受信ボックスの新しいメッセージを手動で確認できます。

図35-1 実行時のメール

ドロップダウン・リストには、ビューを今日受信したメッセージ、昨日以降受信したメッセージ、今週受信したメッセージ、あるいは今月受信したメッセージにビューの対象を絞るフィルタが用意されています(図35-2)。

図35-2 メッセージ・フィルタ

注意:

デフォルトでは、「すべて」で最新50件のメッセージが表示されます。この数を増やす方法の詳細は、第35.3.2項「表示するメール・メッセージ数の構成」を参照してください。

ドロップダウン・リストの横にある「作成」アイコンをクリックすると、すぐにアプリケーションから新しいメッセージを作成できます。図35-3に示されるとおり、このアイコンをクリックすると「作成」ページが表示されます。

図35-3 メールの作成

「検索」アイコンを使用すると、Frameworkアプリケーションが使用するLDAPストア内の、ユーザーのメール・アドレスや連絡先を検索できます。LDAPストア以外のユーザーについては、明示的なメール・アドレスを入力する必要があります。

実行時のメールの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のメールの使用に関する項を参照してください。

35.1.2 メールの要件

メールには、IMAP4およびSMTPをサポートするメール・サーバーが必要です。ポータルの作成時に配信リストを自動作成するには、Microsoft Exchangeメール・サーバーが必要になります。Portal Frameworkアプリケーションでは、この機能が適切でない場合があります。この機能を無効にするために、メール接続にLDAP (Active Directory)サーバーの詳細を提供しないでください。

35.2 メールの基本構成

この項では、アプリケーションにメール機能を追加するために必要な手順について説明します。次のサブセクションが含まれます:

- 第35.2.1項「メールの構成ロードマップ」

- 第35.2.2項「メール用の接続の設定」

- 第35.2.3項「メール機能の設計時の追加」

- 第35.2.4項「メールのセキュリティの設定」

35.2.1 メールの構成ロードマップ

構成プロセス全体のガイドとしてこの項のロードマップを使用してください。

図35-4と表35-1は、Portal Frameworkアプリケーション内でメールを動作させるために必要な前提条件とタスクの概要を示しています。

図35-4 Portal Frameworkアプリケーションに対するメールの構成

表35-1 Portal Frameworkアプリケーションに対するメールの構成

アクター

タスク

サブタスク

管理者

1. WebCenter Portalおよびメール用のバックエンド・コンポーネントをインストールします

1.a Microsoft Exchange 2007の場合のみ、追加の構成手順を実行します

開発者

2. Portal Frameworkアプリケーションにメールを統合します

2.a JDeveloperでメール・サーバーへの接続を構成して、そのメール・サーバーを外部アプリケーションと関連付けます

2.b JDeveloperでページにメール・タスク・フローを追加します

開発者または管理者

3. 次のいずれかのツールを使用して、Portal Frameworkアプリケーションをデプロイします

- JDeveloper (開発者)

- Fusion Middleware Control (管理者)

- WLST (管理者)

- WLS管理コントロール (管理者)

開発者または管理者

4. (オプション)次のいずれかのツールを使用して接続パラメータを追加/変更します:

- JDeveloper、アプリケーションの再デプロイ(開発者)

- Fusion Middleware Control (管理者)

- WLST (管理者)

エンド・ユーザー

5. メール・タスク・フローで「メールにログイン」をクリックし、メール・サーバーのログイン資格証明を入力して、メールにアクセスします

35.2.2 メール用の接続の設定

メールを使用する前に、まず、メール・サーバーへの接続を設定する必要があります。これには、IMAP4およびSMTPプロトコルに基づく任意のメール・サーバーを指定できます。

注意:

Oracle JDeveloperで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でEnterprise Manager Fusion Middleware Controlを使用して、後から接続を追加、削除または変更できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理を参照してください。

アプリケーションからメール・サーバーへの接続を作成するには:

1. Oracle JDeveloperで、メールを利用するアプリケーションを開きます。

2. アプリケーションの「アプリケーション・リソース」で「接続」を右クリックして、リストから「メール」を選択します。

3. 「アプリケーション・リソース」で、メール接続を作成するように選択します。
アプリケーション・リソースの接続はそのアプリケーションでのみ使用可能ですが、IDE接続の接続は作成したすべてのアプリケーションで使用可能です。他のアプリケーション内の接続を使用する予定の場合は、再作成する必要を回避するためにIDE接続を選択します。

4. 「接続名」フィールドに、接続の名前(一意)を入力します。

5. 単一のメール・アカウントを構成する場合は、「デフォルト接続として設定」チェック・ボックスを選択して、この接続をアクティブ接続として使用します(図35-5)。

図35-5 「新規メール接続の構成」、手順1

複数のメール・アカウントを構成する場合、これをデフォルトの接続として選択する必要はありません。ただし、1つの接続をデフォルトの接続としてマークする必要があることに注意してください。

注意:

接続をデフォルトの接続として作成すると、それがデフォルトでないように編集することはできません。別のデフォルト接続を使用するには、新しい接続を作成し、それをデフォルト接続としてマークする必要があります。

6. 「一般」ページでは、パラメータの値を入力します(図35-6)。

図35-6 「新規メール接続の構成」、手順2

- IMAP Host: IMAPサーバーの場所

- IMAP Port: IMAPサーバーのポート番号(デフォルトは-1)

- SMTP Host: SMTPサーバーの場所

- SMTP Port: SMTPサーバーのポート番号(デフォルトは-1)

- IMAP Secured: セキュアなSSL接続を示します(true/false、デフォルトはfalse)

- SMTP Secured: セキュアなSSL接続を示します(true/false、デフォルトはfalse)

- LDAP HostおよびLDAP Port: これらおよび他のすべてのLDAP値は、メール・サーバーがMicrosoft Exchangeの場合にのみ必要です。メールが確実に配信リストを作成するためには、WebCenter PortalアプリケーションでMicrosoft Exchangeと同じActive Directoryサーバーを使用する必要があります。

- Connection Timeout: 接続のタイムアウト(秒単位)。

7. 「接続のテスト」をクリックして、ホストとポートが使用可能なことを確認します。

8. 先に進むには、既存の外部アプリケーションを選択するか、新しい外部アプリケーションを作成する必要があります。

1. 外部アプリケーションの場合は、「+」アイコンをクリックして外部アプリケーションの登録ウィザードを開きます
このアプリケーションは、メール・サーバーのユーザーをアプリケーション・ユーザーにマップするため、エンド・ユーザーはユーザー名とパスワードを毎回入力する必要がなくなります。

外部アプリケーションの詳細は、第74.13項「外部アプリケーションの使用」を参照してください。

注意:

外部アプリケーションの資格証明プロビジョニングは、メール接続に組み込まれています。外部アプリケーション - パスワードの変更タスク・フローをページにドロップする必要はありません。

2. 「名前」ページで、次の操作を行います。
「アプリケーション名」に、アプリケーションを識別する一意の名前を入力します。この名前は、Frameworkアプリケーション内だけでなく、その他の接続間でも一意の名前にする必要があります。このフィールドは後から変更できないことに注意してください。

「表示名」に、資格証明プロビジョニング画面でエンド・ユーザーに表示されるアプリケーション名を入力します。

3. 「次へ」をクリックします。

4. メールの外部アプリケーションがクリックスルー・ログインに参加する場合は、「一般」ページで、任意で値を入力できます。
「ログインURL」に、HTMLログイン・ページの送信先になるURLを入力します。このURLを取得するには、アプリケーションのログイン・フォームのHTMLソースを表示します。

「ユーザー名/IDフィールド名」に、アプリケーションでユーザー名フィールドに使用するラベル(User Nameなど)を入力します。

「パスワード・フィールド名」フィールドに、アプリケーションでパスワード・フィールドに使用するラベル(Passwordなど)を入力します。

「認証メソッド」リストから、「POST」を選択します。これにより、フォーム本体内でログイン資格証明が送信されます。メール用の外部アプリケーションには、この認証方式が必要になります。

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

6. 「追加フィールド」ページで「フィールドの追加」をクリックし、Email Addressという名前で補足フィールドを追加します。このフィールドでは、ユーザーのメール・アドレスを取得するため、ユーザーがメールを送信したときには、送信者のアドレスがこのメール・アドレスになります。「ユーザーに表示」チェック・ボックスを選択します。
さらに、ユーザーのメールへの返信を「電子メール・アドレス」フィールド以外のメール・アドレス宛てに指定する場合は、「フィールドの追加」を再度クリックして、返信先アドレスという名前のフィールドを追加します。図35-7に示すように、「ユーザーに表示」チェック・ボックスが選択されていることを確認します。

図35-7 「Email Address」と「Reply-To Additional」の追加フィールド

注意:

メールの外部アプリケーションには「電子メール・アドレス」フィールドが必要で、それをユーザーに表示する必要があります。「表示名」および返信先アドレスのフィールドはメールの送信時にも利用されます。

7. 外部アプリケーションでは、様々な資格証明を接続に関連付けることができます。
共有資格証明が指定されていると、認証済の各ユーザーは、外部アプリケーションへのアクセスに同じ資格証明(つまり、ここに定義したユーザー名とパスワード)を使用するようになります。

パブリック資格証明の場合、Frameworkアプリケーションを認証することなく、認証されていない(パブリックの)ユーザーすべてに対する特定のメールIDからのメールを表示できます。アプリケーションがセキュアでない場合や、ユーザーがログインしていない場合は、パブリック資格証明が使用されます。

注意:

パブリック資格証明は、自己登録ページからのメール送信に必要です。

プライベート資格証明の場合、各ユーザーは個人のメールIDで認証する必要があります。つまり、各アプリケーション・ユーザーは、自分の資格証明を指定する必要があるということです。

8. 外部アプリケーションにプライベート資格証明を使用させる場合は「終了」をクリックし、共有またはパブリック資格証明を設定する場合は「次へ」をクリックします。

9. 共有資格証明のみの場合: 「共有資格証明」ページで、「共有資格証明の指定」が選択されていることを確認して、共有ユーザー資格証明とメールIDを入力します。

10. パブリック資格証明のみの場合: 「パブリック資格証明」ページで、「パブリック資格証明の指定」が選択されていることを確認して、パブリックで使用するユーザー資格証明とメールIDを入力します。

11. 「終了」をクリックして、外部アプリケーションを登録します。

9. メール接続ウィザードに戻り、メール用に新しく作成した外部アプリケーション接続が選択されていることを確認します。

10. 必要に応じて、Active Directoryサーバー用のLDAPパラメータ値を追加すると、ポータル配信リストを管理できます。
パラメータの詳細は、表35-2を参照してください。

注意:

WebCenter Portalとメールが、アイデンティティ管理システムを共有して、ポータルのメーリング・リストを設定する場合は、Active Directoryを使用する必要があります。WebCenter Portal管理者としてのメール・サーバーのインストールおよび構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理を参照してください。

表35-2 LDAPディレクトリ・サーバーの構成パラメータ

フィールド

説明

LDAPホスト

LDAPディレクトリ・サーバーを実行しているコンピュータのホスト名を入力します。

LDAPポート

LDAPディレクトリ・サーバーがリスニングするポートを入力します。

LDAPベースDN

LDAPスキーマのベース識別名を入力します。例: CN=Users、DC=oracle、DC=com。

LDAPドメイン

配信リスト名に追加するドメインを入力します。

たとえば、ドメイン値にoracle.comが設定されていると、Finance Projectポータルは、FinanceProject@oracle.comという名前の配信リストを維持するようになります。

LDAP管理者ユーザー名

LDAPディレクトリ・サーバー管理者のユーザー名を入力します。

LDAPスキーマにエントリを作成する権限を持つ有効なユーザーです。

LDAP管理者パスワード

LDAPディレクトリ・サーバー管理者のパスワードを入力します。

パスワードは、保護されたストアに格納されます。

LDAPデフォルト・ユーザー

モデレータ機能の権限を付与するユーザー名のカンマ区切りリストを入力します。

これらのユーザーは、作成されたすべてのポータル配信リストのメンバーになります。指定するユーザーは、ベースLDAPスキーマ(LDAP Base DNフィールドで指定)に存在する必要があります。

ldap.secured

FrameworkアプリケーションとLDAPディレクトリ・サーバーとの間に、保護された接続(SSL)が必要かどうかを示します。

LDAPがセキュア・モードで実行するように構成されている場合は、配信リストの作成時にLDAPを使用するように、このプロパティ(trueまたはfalseに設定)を追加します。

11. 「終了」をクリックします。

新しいメール接続は、「アプリケーション・リソース」→「接続」の下に表示されます。

35.2.3 メール機能の設計時の追加

この項では、メール機能の基本的な組込みについて説明します。次のサブセクションが含まれます:

- 第35.2.3.1項「メール・タスク・フロー」

- 第35.2.3.2項「メールをアプリケーションに追加する方法」

35.2.3.1 メール・タスク・フロー

メール・タスク・フローは、メール受信ボックスを表示します。

35.2.3.2 メールをアプリケーションに追加する方法

アプリケーションにメールを追加するには:

1. 第2章「開発環境の設定」の手順に従い、カスタマイズ可能なページをアプリケーションで作成します。

2. メール・サーバーに接続するようにアプリケーションが構成されていることを確認します。

3. プライベート資格証明または共有資格証明用の外部アプリケーションが構成してある場合は、ADFセキュリティを使用して、Frameworkアプリケーションをセキュアにする必要があります。WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第74.3項「ADFセキュリティの構成」を参照してください。

4. メール機能を追加するページを開きます。

5. リソース・パレットで「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。

6. 「メール」タスク・フローをドラッグして、ページにドロップします。

7. 「作成」リストで、このタスク・フローをページに追加する「リージョン」を選択します。

8. これにより、「タスク・フロー・バインディングの編集」ダイアログには、オプションのtabularViewパラメータが表示されます。このパラメータをtrueに設定すると、メール・メッセージは、メール・クライアントの受信ボックスのような表内に表示されます。このパラメータをfalseに設定すると、メール・メッセージはリスト・ビューにレンダリングされます。

注意:

アプリケーションではなくIDEで接続を作成した場合、その接続をアプリケーションに追加する必要があります。たとえば、「リソース・パレット」の「IDE接続」の下にある接続を右クリックし、「アプリケーションに追加」を選択します。

9. ページを保存して、ブラウザで実行します。

10. メール・タスク・フローが含まれるページを初めて実行すると、外部アプリケーションのメール資格証明をメール・タスク・フロー内から入力するように要求されます。
資格証明を入力して、「発行」をクリックします。

注意:

- アプリケーションの内のすべてのメール・タスク・フローのインスタンスは、同一メール・サーバーを対象に実行されるため、複数のメール・タスク・フロー・インスタンスを追加しても意味がありません。これは、ディスカッションやお知らせからのタスク・フローなど、バックエンド・サーバーへの接続が必要なすべてのタスク・フローに当てはまります。

- 保存された資格証明を使用してアプリケーションにアクセスした後、それらの資格証明は再デプロイ後も保持されます。以前のデプロイで保存された資格証明を無視するには、アプリケーションをデプロイする前にadf-config.xmlのappUIDを編集します。次の太字の値を編集して変更された値を指定します。たとえば、最後の値に1を加えてそれをWCApp1-1235に更新します。

<adf:adf-properties-child xmlns="http://xmlns.oracle.com/adf/config/properties">
<adf-property name="adfAppUID" value="WCApp1-1234"/>
</adf:adf-properties-child>

35.2.3.3 メール・タスク・フローのパラメータを変更する方法

メール・タスク・フローには、オプションのタスク・フロー・バインディング・パラメータが1つあります。

パラメータ値は、ページにタスク・フローをドロップするときまたはページにタスク・フローを配置した後に調整できます。

1. ページの下部にある「バインディング」タブ(next to the 「ソース」タブの横)をクリックし、「タスク・フロー・バインディングの編集」ダイアログにナビゲートします。

2. 「実行可能ファイル」の下に、追加したタスク・フローが表示されます。図35-8に、「実行可能ファイル」セクションの検索タスク・フローの例を示します。

図35-8 「ページ・データ・バインディング定義」

3. タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログ(図35-9)で、必要に応じてバインディング・パラメータ値を変更します。

図35-9 メール・タスク・フローの「タスク・フロー・バインディングの編集」ダイアログ

5. 終了したら、「OK」をクリックします。

6. ページを保存して実行し、結果を表示します。

表35-3に、メール・タスク・フローに固有のプロパティを示します。

表35-3 メール・タスク・フローのパラメータ

プロパティ

説明

タスク・フロー

tabularView

EL値タイプを使用して、trueの値を入力すると、件名、送信元、送信日付など、メール・メッセージに関連付けられた情報が表形式で表示されます。このパラメータをfalseに設定すると、メール・メッセージはリスト・ビューでレンダリングされます。

メール

図35-10は、リージョン・パラメータtabularViewがtrueに設定されている、メール・タスク・フローを示しています。

図35-10 リージョン・パラメータの表形式がTrueに設定されているメール・タスク・フロー

35.2.4 メールのセキュリティの設定

メールには、各ログイン済ユーザーのメールをフェッチするためのセキュリティが必要になります。WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第74.3項「ADFセキュリティの構成」を参照してください。

アプリケーションへのログインに使用するユーザー名に対応する外部アプリケーション資格証明がフェッチされ、メール・サーバーへのログインに使用されます。お薦めする方法は、メール・サーバーとアプリケーションが同じアイデンティティ・ストアを指すようにすることです。

注意:

アプリケーションとメール・サーバーが同じアイデンティティ・ストアを共有している場合でも、メールはアイデンティティの伝播をサポートしません。シングル・サインオン機能は、外部アプリケーションのメカニズムを通じて有効になります。

メールは、外部アプリケーション接続がパブリック資格証明で構成されている場合にのみ、保護されていないアプリケーションでも動作します。セキュリティを適用していないときに、コンテンツにアクセスするためにメールのログインが必要になると、ユーザーは認証できず、実行時にコンテンツが表示されなくなります。

外部アプリケーションの使用の詳細は、第74.13項「外部アプリケーションの使用」を参照してください。

35.3 メールの詳細情報

この項では、メールで使用可能なオプション機能について説明します。次のサブセクションが含まれます:

- 第35.3.1項「メールの作成ページの起動」

- 第35.3.2項「表示するメール・メッセージ数の構成」

- 第35.3.3項「メールのトラブルシューティング」

35.3.1 メールの作成ページの起動

メールの作成ページでは、アプリケーション内で個別のメッセージを作成する方法をユーザーが決定できます。

ユーザーをフル・ページへダイレクトするナビゲーション・ルールを使用してメールの作成ページを直接呼び出します(例35-1)。

例35-1 メールの作成ページの起動

/oracle/workplace/collab/mail/view/jsf/pages/ComposeView.jspx

あるポータル内のすべてのユーザーのメール・アカウントをプロビジョニングできないときに、ポータルのメンバーが他のメンバーにメールを送信できるようにするには、useConnectionパラメータで共有(パブリック)のメール接続を指定します。(メール・サービスの作成ビューへのリージョン入力パラメータとして、接続名を指定します。)エンド・ユーザーの「メール・プリファレンス」には、共有資格証明のメール接続は表示されません。

オプションのパラメータを渡すことで、メッセージの作成をシードできます。たとえば、「宛先」、「CC」、「BCC」、「送信者」、「件名」、「コンテンツ」などの事前移入フィールドにパラメータを渡すことができます。パラメータは、事前移入する項目に対してのみ設定してください。空のComposeView.jspxが必要な場合、setActionListenerは必要ありません。pageFlowScopeに対するパラメータは、すべて設定する必要があります。

scopeパラメータを使用すると、作成ビューを起動するスコープを設定できます。

sendMailToGSMembersパラメータを使用すると、ポータルのすべてのメンバーにメールを送信するオプションを選択できます。

例35-2に、「メールの作成」ページ(ComposeView.jspx)のパラメータの一部を示します。

例35-2 「メールの作成」ページのパラメータ

<af:commandLink text="Compose Mail" action="sendMail">

<af:setActionListener from="#{'john.doe@oracle.com'}" to="#{pageFlowScope['collab.mail.compose.toList']}"/>
<af:setActionListener from="#{'Mail......'}" to="#{pageFlowScope['collab.mail.compose.subject']}"/>
<af:setActionListener from="#{'Mail Service'}" to="#{pageFlowScope['collab.mail.compose.content']}"/>
<af:setActionListener from="#{'ruby@oracle.com'}" to="#{pageFlowScope['collab.mail.compose.ccList']}" />
<af:setActionListener from="#{'ruby@oracle.com'}" to="#{pageFlowScope['collab.mail.compose.bccList']}" />
<af:setActionListener from="#{'monty@oracle.com'}" to="#{pageFlowScope['collab.mail.compose.from']}" />
<af:setActionListener from="#{'text/html'}" to="#{pageFlowScope['collab.mail.compose.contentType']}" />
<af:setActionListener from="Shared-mail-connection-name" to="${pageFlowScope['collab.mail.compose.useConnectionName']}" />

</af:commandLink>

例35-3は、ComposeView.jspxに次のアクション・リスナーを設定することで、受信者フィールド(「宛先」、「CC」、「BCC」など)を非表示にする方法を示しています。

例35-3 「メールの作成」ページでの受信者フィールドの非表示化

<af:setActionListener from="#{'false'}" to="#{pageFlowScope['collab.mail.message.showrecipients']}" />

35.3.2 表示するメール・メッセージ数の構成

デフォルトでは、最近の50件のメール・メッセージが受信ボックス・フォルダから表示されます。メール・サーバーが追加のメールをフェッチするために必要になるメモリー内キャッシュの拡大をサポートしている場合、管理者はadf-config.xmlファイルで、この件数を増やせます。

例35-4に示すように、mail.messages.fetch.sizeプロパティを追加します。

例35-4 メール・メッセージの表示数を増やす方法

<adf-collaboration-config xmlns="http://xmlns.oracle.com/webcenter/collab/config">

<service-config
serviceId="oracle.webcenter.collab.mail">
<property name="mail.messages.fetch.size" value="500"/>
</service-config>

</adf-collaboration-config>

別の方法として、Fusion Middleware管理者は、WLSTコマンドsetMailServicePropertyを使用して、この値を増やせます。

この変更はすべてのユーザーに適用されます。つまり、次の例35-4では、すべてのユーザーのFrameworkアプリケーションの受信トレイに500件の最近のメール・メッセージが存在します。それに応じて表示するメッセージ数を増やすと、Frameworkアプリケーションのキャッシュ・サイズが増加します。これは慎重に妥当なサイズに設定してください。

35.3.3 メールのトラブルシューティング

この項では、メールで発生する一般的な問題と解決方法について説明します。

問題

Portal Frameworkアプリケーションからメール・メッセージの取得、またはメール・メッセージの送信ができません。

解決方法

次の点を確認してください。

- アプリケーション内に、メール接続が存在する。

- 必要なメール接続が、デフォルトの接続としてマークされている。

- 接続で構成されているメール・サーバーが実行中である。別のメール・クライアントから接続してみて、接続の詳細に間違いがないことを確認してください。

問題

Portal Frameworkアプリケーションのメールではユーザーがログインする必要がありますが、実行時にユーザーが認証されず、一切のコンテンツが表示されません。ユーザーがメールにアクセスすると、外部アプリケーション認証の例外がスローされます。

解決方法

メールは、メール接続がパブリック資格証明による外部アプリケーション接続を使用するよう構成されている場合にのみ、保護されていないPortal Frameworkアプリケーションでも動作します。アプリケーションを非保護モードで実行する場合は、外部アプリケーション用のパブリック資格証明が構成されていることを確認してください。

Portal Frameworkアプリケーションを保護モードで実行する場合は、アプリケーション用にADFセキュリティを構成する必要があります。

問題

ユーザーがPortal Frameworkアプリケーションでメールを受信すると、メッセージのコンテンツは、メッセージ本文内ではなく、添付ファイル(content.htmlというファイル)として表示されます。これは、メール・サーバーがMicrosoft Exchange Server 2007を実行していて、"Microsoft Exchange Server 2007の更新プログラムのロールアップ3"がインストールされていない場合に発生することがあります。

解決方法

メール・サーバー管理者は、この問題を修正する「Microsoft Exchange Server 2007の更新プログラムのロールアップ3」をダウンロードしてインストールする必要があります。詳細は、http://support.microsoft.com/kb/930468を参照してください。

36 投票の統合

この章では、設計時に、Portal Frameworkアプリケーションに投票機能を統合する方法について説明します。

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

- 第36.1項「投票の概要」

- 第36.2項「投票の基本構成」

- 第36.3項「投票の詳細情報」

投票の使用の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「ポータルへの投票の追加」の章を参照してください。

36.1 投票の概要

WebCenter PortalおよびFrameworkアプリケーションのユーザーは、アプリケーション・ページでオンライン投票を作成、編集および実施できます。投票によって、関係者にアンケート(意見や経験レベルなど)を実施したり、重要な情報を覚えているかどうかを確認したり、プレゼンテーションの効果についてのフィードバックを集めたりできます。

この項には次のサブセクションが含まれます:

- 第36.1.1項「投票の理解」

- 第36.1.2項「投票の要件」

- 第36.1.3項「実行時の処理」

36.1.1 投票の理解

ユーザーは、実行可能な投票の実施に加えて、次のことを実行できます。

- 投票をすばやく作成し、公開します。

- 既存の投票をカスタマイズします。たとえば、質問を追加または変更したり、投票の公開(オープン)および終了を行います。

- 特定の投票または最後に公開した投票を実施します

- 投票結果を表示します

- すべての投票のステータスおよび各投票に対して使用可能なアクション(結果の編集、削除、公開、分析、クリアなど)を表示します。

投票は、投票マネージャでインスタント・メッセージおよびプレゼンスと統合されています。

36.1.2 投票の要件

Frameworkアプリケーションでは、投票にはWebCenter Portalデータベース・スキーマへの接続が必要です。データベース接続の設定の詳細は、第4.2.2項「データベース接続の設定」を参照してください。

36.1.3 実行時の処理

実行時には、ユーザーは名前と質問のみですばやく投票を作成できます。図36-1に、クイック投票の例を示します。

図36-1 クイック投票

WebCenter Portalアプリケーション管理者は、投票マネージャにアクセスし、そこで、複数の質問またはテンプレートを使用して投票を作成できます。「アクション」ドロップダウン・リストで、投票の設計の続行、投票の公開、結果の分析、結果の消去および投票の削除が可能です(図36-2)。

図36-2 投票マネージャ

投票マネージャを使用して作成した投票を実施するには、それを公開して開く必要があります。未公開または閉じている投票の実施はできません。

実行時の投票の使用の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「ポータルへの投票の追加」の章を参照してください。

36.2 投票の基本構成

この項では、アプリケーションに投票を追加するために必要な手順について説明します。次のサブセクションが含まれます:

- 第36.2.1項「投票用の接続の設定」

- 第36.2.2項「投票機能の設計時の追加」

- 第36.2.3項「投票のセキュリティの設定」

36.2.1 投票用の接続の設定

投票には、WebCenter Portalスキーマがインストールされているデータベースへの接続が必要です。データベース接続の設定の詳細は、第4.2.2項「データベース接続の設定」を参照してください。

36.2.2 投票機能の設計時の追加

この項では、投票の基本的な組込みについて説明します。次の項が含まれます:

- 第36.2.2.1項「投票タスク・フロー」

- 第36.2.2.2項「クイック投票タスク・フローをページに追加する方法」

- 第36.2.2.3項「投票タスク・フローのパラメータを変更する方法」

36.2.2.1 投票タスク・フロー

投票タスク・フローについて、表36-1で説明します。

表36-1 投票タスク・フロー

タスク・フロー

説明

投票 - クイック投票

このタスク・フローは、ユーザーが1つの質問からなる投票を作成してただちに公開できるビューを表示します。各クイック投票には、ページ上にそれ独自のクイック投票タスクが必要です。

投票 - 投票マネージャ

このタスク・フローで、ユーザーは投票に対する管理操作を実行できます。このタスク・フローへのアクセス権を持つユーザーは、投票の編集や削除などの管理操作を実行できます。

投票 - 投票の実施

このタスク・フローは、最後に公開された実行可能な投票を表示します。ただし、それがpollIdパラメータで特定の投票に設定されている場合は除きます。

投票 - 投票結果の表示

このタスク・フローは、指定されたpollIdに対してグラフとして投票結果を表示します。このタスク・フローは、pollIdが指定されている場合にのみ機能します。

36.2.2.2 クイック投票タスク・フローをページに追加する方法

クイック投票タスク・フローは、投票を表示し、投票を作成、編集および削除するツールを提供します。また、いつ投票するのか、いつ期限が切れるのかを決定するためのコントロールも提供します。このタスク・フローによって、エンド・ユーザーに投票を提示でき、エンド・ユーザーでは管理コントロールは必要ありません。

クイック投票タスク・フローをWebCenter Portal Frameworkアプリケーションに追加するには:

1. 投票機能を追加するページを開きます。

2. リソース・パレットで「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。

3. 「リソース・パレット」から「投票 - クイック投票」をドラッグし、それをaf:formのbeginタグとendタグの間のページにドロップします。

4. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します(また、「ライブラリの追加」で確認します)。この操作の完了には時間がかかる場合があります。

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

6. ページを保存し、実行します。

36.2.2.3 投票タスク・フローのパラメータを変更する方法

投票タスク・フローには、オプションのタスク・フロー・バインディング・パラメータがあります。

正常なタスク・フローのレンダリングに必要な値の提供に加え、タスク・フロー・パラメータを使用すると、タスク・フロー・インスタンスの外観や動作をカスタマイズできます。たとえば、パラメータ値を使用することで、どの投票を表示するのかを設定できます。

パラメータ値は、ページにタスク・フローをドロップするときまたはページにタスク・フローを配置した後に調整できます。

1. ページの下部にある「バインディング」タブ(next to the 「ソース」タブの横)をクリックし、「タスク・フロー・バインディングの編集」ダイアログにナビゲートします。

2. 「実行可能ファイル」の下に、追加したタスク・フローが表示されます。図36-4に、「実行可能ファイル」の検索タスク・フローの例を示します。

図36-3 ページ・データ・バインディング定義

3. タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログ(図36-4)で、必要に応じてバインディング・パラメータ値を変更します。

図36-4 投票マネージャ・タスク・フロー用の「タスク・フロー・バインディングの編集」ダイアログ

5. 終了したら、「OK」をクリックします。

6. ページを保存して実行し、結果を表示します。

表36-2に、投票タスク・フロー固有のプロパティを示します。

表36-2 投票タスク・フローのパラメータ

プロパティ

説明

scope

投票のフェッチ元となるポータル名。これを指定した場合、その特定のポータルの投票が表示されます。

ホーム・ポータルでは、このパラメータを指定しないと、すべてのポータルから投票がフェッチされます。

このパラメータは、投票マネージャ・タスク・フローのプロパティに表示されます。

showUserDataOnly

このパラメータによって、すべての投票を表示するのか、そのユーザーによって作成された投票のみを表示するのかが決まります。デフォルト(No)では、すべての投票が表示されます。

そのユーザーによって作成された投票のみを表示するには、Yesに設定します。

scopeパラメータが指定されている場合、このパラメータの動作は同じですが、その有効範囲内のみに限定されます。

このパラメータは、投票マネージャ・タスク・フローのプロパティに表示されます。

pollId

表示する投票。

このパラメータは、次のタスク・フローのプロパティに表示されます。

- 投票の実施

- 投票結果の表示

showInEditMode

このパラメータによって、ユーザーがクイック投票を編集できるかどうかが決定されます。クイック投票が編集モードになっている場合は、投票を編集するための「投票のデザイン」ボックスが表示されます。クイック投票が編集モードになっていない場合、編集するための「投票のデザイン」ボックスは表示されません。

このパラメータは、クイック投票タスク・フローのプロパティに表示されます。

36.2.3 投票のセキュリティの設定

投票にセキュリティは必要ありません。管理者は、「リソース・カタログ」を使用して投票タスク・フローへのアクセスを制御し、そこで、投票を表示する権限を付与されるユーザーおよびグループを定義します。セキュリティは、タスク・フローが存在しているページのセキュリティ、またはそのページ上のタスク・フロー権限によって制御されます。タスク・フローを表示できるユーザーはすべて、投票を編集できます。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第74.3項「ADFセキュリティの構成」を参照してください。

36.3 投票の詳細情報

この項では、投票で使用可能なオプション機能について説明します。次のサブセクションが含まれます:

- 第36.3.1項「投票マネージャ・タスク・フローを追加する方法」

- 第36.3.2項「投票の実施タスク・フローを追加する方法」

- 第36.3.3項「投票結果の表示タスク・フローを追加する方法」

- 第36.3.4項「投票データ・コントロールの使用方法」

36.3.1 投票マネージャ・タスク・フローを追加する方法

投票マネージャ・タスク・フローは、投票の完全なビューを提供し、それらに対してアクションを実行します。

これをFrameworkアプリケーションに追加するには、ページに投票マネージャをドラッグ・アンド・ドロップする点を除き、第36.2.2項「投票機能の設計時の追加」でクイック投票タスク・フローに対して実行したものと同じ手順に従います。

36.3.2 投票の実施タスク・フローを追加する方法

このタスク・フローは、ユーザーが行った公開された投票を表示します。pollIdパラメータで特定の投票を表示するように設定されていないかぎり、最近公開された使用可能な投票が表示されます。ユーザーがその投票へのレスポンスを送信した後は、次に最近の公開された投票が表示されます。

これをFrameworkアプリケーションに追加するには、ページに「投票 - 投票の実施」をドラッグ・アンド・ドロップする点を除き、第36.2.2項「投票機能の設計時の追加」でクイック投票タスク・フローに対して実行したものと同じ手順に従います。

36.3.3 投票結果の表示タスク・フローを追加する方法

投票結果の表示タスク・フローは、必須のpollIdパラメータで指定されている投票に対してグラフで投票結果を表示します。

これをFrameworkアプリケーションに追加するには、ページに「 投票 - 投票結果の表示」をドラッグ・アンド・ドロップする点を除き、第36.2.2項「投票機能の設計時の追加」でクイック投票タスク・フローに対して実行したものと同じ手順に従います。

36.3.4 投票データ・コントロールの使用方法

投票データ・コントロールを使用して、Frameworkアプリケーションまたはカスタム・タスク・フローによる投票用のカスタマイズされたユーザー・インタフェースを構築します。

投票には、ユーザー・インタフェースをカスタマイズするための次の2つのデータ・コントロールがあります。

- 投票の実施データ・コントロール

- 投票マネージャ・データ・コントロール

関連項目:

データ・コントロールの使用方法の詳細は、第4.1.3項「WebCenter Portalのデータ・コントロールの使用」を参照してください

36.3.4.1 投票の実施データ・コントロール

投票の実施データ・コントロールには、次のメソッドが含まれています。

- createResponse

- createResponseForLatestAvailablePoll

- getPublishedPolls

- getResults

- saveResponse

36.3.4.1.1 createResponse

このメソッドにより、ユーザーは特定の投票に応答できます。表36-3は、このメソッドの必須パラメータを示しています。

表36-3 createResponse入力パラメータ

パラメータ

タイプ

説明

pollId

String

表示する投票。

36.3.4.1.2 createResponseForLatestAvailablePoll

このメソッドにより、ユーザーは最後に公開された投票に応答できます。パラメータはありません。

36.3.4.1.3 getPublishedPolls

表36-4は、このメソッドの必須パラメータを示しています。

表36-4 getPublishedPolls入力パラメータ

パラメータ

タイプ

説明

startIndex

整数

結果セットに含める、最初に一致する結果のインデックス(0-n ... ゼロ・ベース)。これはページ区切りに使用されます。

numResults

整数

表示する結果の数。

36.3.4.1.4 getResults

このメソッドにより、特定の投票の投票結果を取得します。表36-5は、このメソッドの必須パラメータを示しています。

表36-5 getResults入力パラメータ

パラメータ

タイプ

説明

pollId

String

表示する投票。

36.3.4.1.5 saveResponse

表36-6は、このメソッドの必須パラメータを示しています。

表36-6 saveResponse入力パラメータ

パラメータ

タイプ

説明

response

レスポンス

createResponseまたはcreateResponseForLatestAvailablePollへのデータ・コントロール・コールから取得されるレスポンス・オブジェクト。

36.3.4.2 投票マネージャ・データ・コントロール

投票マネージャ・データ・コントロールには、次のメソッドが含まれています。

- addQuestion

- addQuestion

- closePoll

- closePollAfterDate

- closePollAfterDays

- closePollAfterResponses

- createPoll

- deletePoll

- editPoll

- editPoll

- findPoll

- getPolls

- getPollsByUser

- getPollsByUserCount

- publishPoll

- publishPollOnDate

36.3.4.2.1 addQuestion

このメソッドは、複数選択肢の質問を使用する投票を作成します。表36-7は、このメソッドの必須パラメータを示しています。

表36-7 addQuestion入力パラメータ

パラメータ

タイプ

説明

pollId

String

表示する投票。

question

String

「好きな色は何色ですか」などの質問のテキスト

rowOptions

String

質問に対応するオプションのリスト。これは、行区切りのオプション・リストとする必要があります。

allowMultipleSelection

Boolean

複数のオプションを選択できるようにするにはtrue、1つのオプションのみ選択できるようにするにはfalseにします。

36.3.4.2.2 addQuestion

このメソッドは、マトリックスタイプの質問を使用する複合投票を作成します。表36-8は、このメソッドの必須パラメータを示しています。

表36-8 addQuestion入力パラメータ

パラメータ

タイプ

説明

pollId

String

表示する投票。

questionType

QuestionType

質問タイプ。次のいずれかです。

- マトリックス選択肢(1行当たり1回答のみ)

- マトリックス選択肢(1行当たり複数回答)

question

String

「好きな色は何色ですか」などの質問のテキスト

rowOptions

String

質問に対応するオプションのリスト。これは、行区切りのオプション・リストとする必要があります。

columnOptions

String

列オプション。

isOptional

Boolean

質問がオプションである(ユーザーはそれへの回答を無視できる)場合はtrue、質問が必須である場合はfalseです。

commentLabel

String

ユーザーがフィードバックを入力したり、回答とともに個人的なテキストを入力するためのコメント・フィールドを有効化します。

commentFieldHeight

整数

コメント・フィールドのサイズ。フィードバックを取得するには3に、それ以外の場合は1に設定します。このパラメータ値は、コメント・フィールドで想定されている回答のタイプに応じて異なります。

36.3.4.2.3 closePoll

このメソッドは、特定の投票を閉じます。表36-9は、このメソッドの必須パラメータを示しています。

表36-9 closePoll入力パラメータ

パラメータ

タイプ

説明

pollId

String

表示する投票。

36.3.4.2.4 closePollAfterDate

このメソッドは、特定の日に投票を閉じます。表36-10は、このメソッドの必須パラメータを示しています。

表36-10 closePollAfterDate入力パラメータ

パラメータ

タイプ

説明

pollId

String

表示する投票。

date

日付

投票を閉じる日付。

36.3.4.2.5 closePollAfterDays

この投票は、公開された後、設定された日数が経過すると閉じます。表36-11は、このメソッドの必須パラメータを示しています。

表36-11 closePollAfterDays入力パラメータ

パラメータ

タイプ

説明

pollId

String

表示する投票。

days

整数

公開日から投票を閉じる日までの日数。

36.3.4.2.6 closePollAfterResponses

このメソッドは、設定された数の応答が収集された後に投票を閉じます。表36-12は、このメソッドの必須パラメータを示しています。

表36-12 closePollAfterResponses入力パラメータ

パラメータ

タイプ

説明

pollId

String

表示する投票。

responses

整数

投票を閉じる応答数。

36.3.4.2.7 createPoll

このメソッドは、クイック投票を作成します。表36-13は、このメソッドの必須パラメータを示しています。

表36-13 createPoll入力パラメータ

パラメータ

タイプ

説明

name

String

投票の名前。

description

String

投票の説明。

36.3.4.2.8 deletePoll

このメソッドは、特定の投票を削除します。表36-14は、このメソッドの必須パラメータを示しています。

表36-14 deletePoll入力パラメータ

パラメータ

タイプ

説明

pollId

String

表示する投票。

36.3.4.2.9 editPoll

表36-15は、このメソッドの必須パラメータを示しています。

表36-15 editPoll入力パラメータ

パラメータ

タイプ

説明

pollInstance

投票

投票インスタンスが直接編集されている場合、そのインスタンスを編集のために指定できます。

36.3.4.2.10 editPoll

このメソッドは、特定の投票を編集します。表36-16は、このメソッドの必須パラメータを示しています。

表36-16 editPoll入力パラメータ

パラメータ

タイプ

説明

pollId

String

表示する投票。

name

String

投票の名前。

description

String

投票の説明。

36.3.4.2.11 findPoll

このメソッドは、特定の投票を検索します。表36-17は、このメソッドの必須パラメータを示しています。

表36-17 findPoll入力パラメータ

パラメータ

タイプ

説明

id

String

投票インスタンスID

36.3.4.2.12 getPolls

このメソッドは、そのパラメータでの定義に従って、すべての投票を表示します。表36-18は、このメソッドの必須パラメータを示しています。

表36-18 getPolls入力パラメータ

パラメータ

タイプ

説明

startIndex

整数

結果セットに含める、最初に一致する結果のインデックス(0-n ... ゼロ・ベース)。これはページ区切りに使用されます。

numResults

整数

表示する結果の数。

36.3.4.2.13 getPollsByUser

このメソッドは、特定のユーザーによって作成された投票を表示します。表36-19は、このメソッドの必須パラメータを示しています。

表36-19 getPollsByUser入力パラメータ

パラメータ

タイプ

説明

createdBy

String

投票の作成者の名前。

startIndex

整数

結果セットに含める、最初に一致する結果のインデックス(0-n ... ゼロ・ベース)。これはページ区切りに使用されます。

numResults

整数

表示する結果の数。

36.3.4.2.14 getPollsByUserCount

表36-20は、このメソッドの必須パラメータを示しています。

表36-20 getPollsByUserCount入力パラメータ

パラメータ

タイプ

説明

createdBy

String

投票の作成者の名前。

36.3.4.2.15 publishPoll

このメソッドは、特定の投票を公開します。表36-21は、このメソッドの必須パラメータを示しています。

表36-21 publishPoll入力パラメータ

パラメータ

タイプ

説明

pollId

String

表示する投票。

36.3.4.2.16 publishPollOnDate

このメソッドは、特定の日に投票を公開します。表36-22は、このメソッドの必須パラメータを示しています。

表36-22 publishPollOnDate入力パラメータ

パラメータ

タイプ

説明

pollId

String

表示する投票。

date

日付

投票を公開する日付。

第VI部

ピープル・コネクションの使用

第VI部に含まれる章は、次のとおりです。

- 第37章「ピープル・コネクション・サービスの概要」

- 第38章「ピープル・コネクション・サービスの構成」

- 第39章「ピープル・コネクション・タスク・フロー・バインディング・パラメータの使用」

- 第40章「ピープル・コネクション・データ・コントロールおよびJava APIの使用方法」

- 第41章「ワークリストの統合」

- 第42章「ピープル・コネクションREST APIの使用」

37 ピープル・コネクション・サービスの概要

この章では、プロジェクト・チーム内および企業全体にわたるコネクションおよびコミュニケーションの向上に使用するソーシャル・ネットワーキング・ツールを提供するピープル・コネクション・サービスと関連付けられているタスク・フローについて説明します。これは、アクティビティ・ストリーム、コネクション、フィードバック、メッセージ・ボード、プロファイルおよびパブリッシャを含む機能セットを通して行われます。

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

- 第37.1項「ピープル・コネクション・サービスの概要」

- 第37.2項「ピープル・コネクション・サービスのトラブルシューティング」

37.1 ピープル・コネクション・サービスの概要

ピープル・コネクション・サービスは、ユーザーのコネクションを作成し、そのコネクションと対話し、そのコネクションのアクティビティを追跡するためのソーシャル・ネットワーキング・ツールを提供します。次の機能によって、ユーザーは、自身の個人プロファイルの管理、他のユーザーのプロファイルへのアクセス、非定型のフィードバックの提供、メッセージの投稿、アクティビティの追跡、および他のユーザーとつながりを持つことができます。

- アクティビティ・ストリーム: アプリケーションまたはソーシャル・ネットワーキング・アクションによって生成されるユーザー・アクティビティを表示します。

- コネクション: 情報の共有、パフォーマンスへのコメント、メッセージの交換、およびアクティビティの追跡を行うために他のアプリケーション・ユーザーとのつながりを作ります

- フィードバック: 他のユーザーに非定型なパフォーマンス・フィードバックを送ります

- メッセージ・ボード: 他のユーザーにメッセージを投稿します

- プロファイル: 個人の連絡先情報を入力し、他のユーザーの連絡先情報を表示します

- パブリッシャ: ステータス・メッセージを公開し、ファイルおよびリンクを投稿します

本番環境では、企業は、可能性のあるコネクションの移入をピープル・コネクションに提供する手段としてそのバックエンド・アイデンティティ・ストアを利用できます。開発環境では、開発者はテストユーザーをjazn-data.xmlファイルに追加できます。

関連項目:

本番アプリケーションのバックエンド(LDAP)アイデンティティ・ストアとの接続の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「アイデンティティ・ストアの構成」の章を参照してください。jazn-data.xmlでのテスト・ユーザーの作成の詳細は、第22.2.2章「jazn-data.xmlファイルでのロールおよび付与権限の定義方法」を参照してください。

この項では、ピープル・コネクション・サービスの概要について説明します。次のサブセクションが含まれます:

- 第37.1.1項「ピープル・コネクション・サービス・タスク・フロー」

- 第37.1.2項「ピープル・コネクション・サービスの要件」

37.1.1 ピープル・コネクション・サービス・タスク・フロー

ピープル・コネクション・サービスの機能は、5つのカテゴリに分かれています。各カテゴリには、ピープル・コネクションの機能をエンド・ユーザーに公開する一連のタスク・フローが含まれています。パブリッシャ・タスク・フローはこれらのカテゴリには含まれず、アクティビティ・ストリームと連携して機能します。

この項では、次のカテゴリを紹介します。次のサブセクションが含まれます:

- 第37.1.1.1項「アクティビティ・ストリーム」

- 第37.1.1.3項「フィードバック」

- 第37.1.1.4項「 メッセージ・ボード」

- 第37.1.1.2項「コネクション」

- 第37.1.1.5項「プロファイル」

- 第37.1.1.6項「パブリッシャ・タスク・フロー」

関連項目:

実行時のピープル・コネクション・サービスの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の関連する章を参照してください。

ピープル・コネクション・タスク・フローの詳細は、第37.1.1項「ピープル・コネクション・サービス・タスク・フロー」を参照してください。

37.1.1.1 アクティビティ・ストリーム

アクティビティ・ストリーム機能は、ユーザーのコネクションのアプリケーション・アクティビティを追跡します。表37-1は、アクティビティ・ストリームによって追跡できるアクティビティのタイプを示しています。

表37-1 アクティビティ・ストリームによって追跡されるアクティビティ

サービス

追跡されるアクティビティ

お知らせ

- お知らせの作成

- お知らせの編集

ブログ

- ブログの作成

- ブログの更新

コネクション

- コネクションの招待

- コネクションを持っている人々

ディスカッション

- フォーラムの作成

- トピックの作成

- トピックへの返信

ドキュメント

- ドキュメントの作成

- ドキュメントの編集

- タグの追加

- タグの削除

イベント

- イベントの作成

- イベントの編集

フィードバック

- 残したフィードバック

- 受信したフィードバック

リスト

- リストの作成

- リストへの行の追加

- リスト行の編集

メッセージ・ボード

- 残したメッセージ

- 受信したメッセージ

ページ

次のアクティビティが、サービス・フレームワークの範囲内で実行された場合、それらが追跡されます(たとえば、ユーザーが/myapp/mypages/の下にページを作成した場合、そのページ操作は追跡されません)。

- ページの作成

- ページの編集

- ページの削除

- タグの追加

プロファイル

- 更新された写真

- 更新されたプロファイル

- 更新された個人ステータス・ノート

タグ付け

- タグの追加

- タグの削除

アクティビティ・ストリームは、同様にアプリケーション・アクティビティを追跡およびレポートする最近のアクティビティ・サービスと、いくらか類似しています(詳細は、第51章「最近のアクティビティの統合」を参照してください)。両方により統合サービスのアプリケーション・アクティビティを追跡しますが、アクティビティ・ストリームにより幅の広いサービスが追跡されます。たとえば、最近のアクティビティは、ドキュメント(Wikiやブログなど)、お知らせ、ディスカッションおよびページ・サービスを追跡します。アクティビティ・ストリームは、これらのサービスとピープル・コネクションを追跡します。アクションを実行した人に関係なく、最近のアクティビティによりアクティビティが追跡されます。ユーザーの接続により実行されるアクティビティがアクティビティ・ストリームにより追跡され、アクティビティ実行者に関する情報が含まれます。最近のアクティビティには名前が含まれません。

これらの2つのサービスにおける基本的な相違点は、アプリケーションにおける処理内容の概要を最近のアクティビティにより提供することにまとめることができます。アクティビティ・ストリームにより、ユーザーの接続で実行した処理の概要を提供します。

パブリッシャ・タスク・フローは、アクティビティ・ストリームと連携して機能し、ユーザー・メッセージの形式でコンテンツを提供します。パブリッシャ・タスク・フローを介して投稿されたメッセージは、それを入力したユーザーおよびそのユーザーのコネクションのアクティビティ・ストリームに公開されます。

アクティビティ・ストリーム・メッセージには、ファイルやリンクなどが添付されている場合があります。ファイルのMIMEタイプに応じて、アクティビティ・ストリームで、そのような添付のプレビューを表示できます。アクティビティ・ストリームでは、ネイティブのWeb形式またはUCMのスライド・レンダリングを使用してファイルをプレビューします。使用されるプレビューアは、プレビューするファイルのMIMEタイプに応じて異なります。

ネイティブなWeb形式を使用するMIMEタイプには、次のものがあります。

- image

- htm

- text

UCMのスライド・レンダリングを使用するMIMEタイプには、次のものがあります。

- pdf

- powerpoint

- powerpnt

- pptx

注意:

PDFファイル・プレビューは、MIMEタイプがpdfであり、UCM接続にwebContextRootが指定されており、かつWebCenter PortalアプリケーションにOracle HTTP Serverを介してアクセスしている場合に、アクティビティ・ストリームで使用できます。

プレビューされるMIMEタイプは、これらの箇条書きに示すMIMEタイプのみです。その他のMIMEタイプはリンクとして表示されます。MIMEタイプdocxおよびxlsxは、アクティビティ・ストリームでプレビューされません。アクティビティ・ストリーム・タスク・フロー・インスタンスに関連付けられたパラメータを設定すると、ファイルのプレビューを省略できます(詳細は、第39.3項「ピープル・コネクション・タスク・フロー・バインディング・パラメータの設定」を参照)。

リソース・パレットから、次の2つのアクティビティ・ストリーム・タスク・フローを使用できます。

- アクティビティ・ストリーム - それぞれのコネクションの最近のアクティビティのメイン・ビューをユーザーに提供します(図37-1)。

図37-1 アクティビティ・ストリーム・タスク・フロー

- アクティビティ・ストリーム - クイック・ビュー - ユーザーのコネクションの最近のアクティビティのみが表示される、ストリームされたアクティビティの切捨て済のビューをユーザーに提供します(図37-2)。すべてのアクティビティを表示するには、「詳細」リンクをクリックし、タスク・フローのメイン・ビュー(アクティビティ・ストリーム)にナビゲートします。

図37-2 アクティビティ・ストリーム - クイック・ビュー・タスク・フロー

関連項目:

実行時のアクティビティ・ストリーム・タスク・フローの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「ポータル・アクティビティの追跡」の章を参照してください。

37.1.1.2 コネクション

コネクションは、ユーザーに、自身のコネクションを管理し、他のユーザーのコネクションを表示する手段を提供します。コネクションを使用して、ビジネス上の友人を集め、1つ以上の小さいソーシャル・グループに連絡を取ります。コネクション・リストを使用して、コネクションの表示を管理します。

リソース・パレットから、次の3つのコネクション・タスク・フローを使用できます。

- コネクション - それぞれのコネクションの表示と管理、コネクション・リストの作成、接続するための招待の送信と応答を実行する手段をユーザーに提供します(図37-3)。

図37-3 コネクション・タスク・フロー

- コネクション - カード: 次のビューから選択できます。

- vcard: コネクションの写真、役職およびステータス・メッセージを表示します(図37-4)。

- iconic: コネクションの写真およびユーザー名を表示します。

- list: リストにコネクションを表示します。リストの各行には、プロファイル写真、ユーザー名、役職および「リストに追加」ボタンが表示されます。

- tiled: コネクションの個人プロファイル写真をレンダリングし、その写真に加えてユーザー名および役職を表示します。

ヒント:

すべてのビューにおいて、名前はユーザーのプロファイルのサマリー・ビューにリンクしています。

タスク・フロー・バインディングを使用して、これらのビューのいずれかを選択します(詳細は、第39章「ピープル・コネクション・タスク・フロー・バインディング・パラメータの使用」を参照)。

図37-4 コネクション - カード・タスク・フロー

- コネクション - クイック・ビュー - それぞれのコネクションのアップロードされたプロファイル写真のビューとそれぞれのプロファイルのサマリー・ビューへのリンクをユーザーに提供します(図37-5)。

図37-5 コネクション - クイック・ビュー・タスク・フロー

関連項目:

実行時のコネクション・タスク・フローの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「連絡先の管理」の章を参照してください。

37.1.1.3 フィードバック

フィードバックは、ユーザーに、フィードバックを表示、投稿、および管理する手段を提供します。デフォルトでは、ユーザーは、独自のフィードバック・ビューでフィードバックを表示できます。ユーザーは、適切な権限が付与されれば、他のユーザーのフィードバック・ビューでフィードバックを表示および投稿できます。

リソース・パレットから、次の2つのフィードバック・タスク・フローを使用できます。

- フィードバック - ユーザーに、フィードバック・タスク・フローのメイン・ビューを提供します。メイン・ビューには、送信および受信したフィードバックを表示、投稿、ソート、およびフィルタリングするためのコントロールと、受信したフィードバックを非表示にするためのコントロールが含まれています(図37-6)。

図37-6 フィードバック・タスク・フロー

- フィードバック - クイック・ビュー - 最新の投稿のみが表示されている、フィードバック・タスク・フローの切捨て済ビューを、ユーザーに提供します(図37-7)。初期のビューに表示できる数を超える投稿がある場合、ユーザーは「詳細」リンクをクリックして、フィードバック・タスク・フローのメイン・ビューにナビゲートできます。ユーザーAがユーザーBのフィードバック - クイック・ビューのビューにアクセスすると、ユーザーAには、さらに「フィードバックの追加」オプションが表示されます。

図37-7 フィードバック - クイック・ビュー・タスク・フロー

関連項目:

実行時のフィードバック・タスク・フローの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「フィードバックおよびメッセージ・ボードの使用」の章を参照してください。

37.1.1.4 メッセージ・ボード

メッセージ・ボードは、メッセージ・ボードおよびアクティビティ・ストリームへのメッセージおよび添付を表示および投稿する手段を提供します。

リソース・パレットから、次の2つのメッセージ・ボード・タスク・フローを使用できます。

- メッセージ・ボード - ユーザーに、メッセージ・ボード・メッセージのメイン・ビューを提供し、メッセージの追加、表示、更新、非表示、削除およびそのビューの管理を行う手段と、メッセージをプライベートとしてマークしたり、プライベート・メッセージを共有する手段を提供します(図37-8)。

図37-8 メッセージ・ボード・タスク・フロー

- メッセージ・ボード - クイック・ビュー - ユーザーに、メッセージ・ボード・メッセージの切捨て済ビューを提供し、メッセージの追加、表示、更新、非表示および削除を行う手段と、メッセージをプライベートとしてマークしたり、プライベート・メッセージを共有する手段を提供します(図37-9)。ユーザーは、「詳細」リンクをクリックすることで、詳細ビューにナビゲートできます。

図37-9 メッセージ・ボード - クイック・ビュー・タスク・フロー

関連項目:

実行時のメッセージ・ボード・タスク・フローの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「フィードバックおよびメッセージ・ボードの使用」の章を参照してください。

37.1.1.5 プロファイル

プロファイルは、ユーザーに、自分自身および他のユーザーの個人プロファイル情報の様々なビューを提供します。そのような情報には、ユーザーの電子メール・アドレス、電話番号、勤務先の場所、部門、上司、直属の部下などが含まれます。プロファイルは、WebCenter Portalアプリケーションにそのユーザーを提供しているバックエンド・アイデンティティ・ストアからその情報をまとめて取得します。さらに、プロファイルから、この情報の一部を変更したり、そのアイデンティティ・ストアに含まれていない追加のデータを入力する機会が提供されることもあります。

リソース・パレットから、次の3つのプロファイル・タスク・フローを使用できます。

- プロファイル - ユーザーの電子メール・アドレス、電話番号、勤務先の場所、部門、上司、直属の部下などユーザーのプロファイル詳細を公開します。また、ユーザーが提供した個人イメージおよびユーザーの個人ステータス・メッセージも公開します(図37-10)。

図37-10 プロファイル・タスク・フロー

- プロファイル - スナップショット - ユーザーがアップロードした個人イメージを公開し、選択した対象読者にメッセージ、ファイルおよびリンクを公開する手段を提供します(図37-11)。

図37-11 プロファイル - スナップショット・タスク・フロー

注意:

実行時にADFベースのアプリケーションにユーザーが任意のものをアップロードできるようにするには、そのアップロード・タスク・フローを配置したページでフォーム上にusesUpload属性が設定されている必要があります。さらに、プロファイル・イメージの場合は、タスク・フロー・バインディング・パラメータphotoUploadAllowedをtrueに設定する必要があります。詳細は、第38.2項「ページヘのピープル・コネクション・タスク・フローの追加」の終わりにある注意、および第39章「ピープル・コネクション・タスク・フロー・バインディング・パラメータの使用」を参照してください。

- プロファイル・ギャラリ - 各ピープル・コネクション・タスク・フローのサマリー・ビューを提供します(図37-12)。たとえば、アクティビティ・ストリーム - クイック・ビュー、コネクション - クイック・ビューなどです。

図37-12 プロファイル・ギャラリ・タスク・フロー

関連項目:

実行時のプロファイル・タスク・フローの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「プロファイルの管理」の章を参照してください。

37.1.1.6 パブリッシャ・タスク・フロー

パブリッシャ・タスク・フローは、アクティビティ・ストリームと連携して機能します。ユーザーは、パブリッシャにコンテンツを入力し、そのコンテンツを投稿したユーザーのアクティビティ・ストリームと、そのユーザーのコネクションのアクティビティ・ストリームにコンテンツが公開されます(図37-13)。

図37-13 パブリッシャ・タスク・フロー

関連項目:

実行時のパブリッシャ・タスク・フローの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のメッセージ、ファイルおよびURLの共有に関する項を参照してください。

37.1.2 ピープル・コネクション・サービスの要件

ピープル・コネクションをご使用のWebCenter Portal Frameworkアプリケーションと適切に統合するには、次の手順に従ってください。

1. WebCenter Portal Frameworkアプリケーションを作成します(詳細は、第6.1項「新しいWebCenter Portal Frameworkアプリケーションの作成」を参照してください)。

2. WebCenterスキーマを設定し、それへのデータベース接続を作成します(詳細は、第4章「WebCenter Portalのツールとサービス用アプリケーションの準備」を参照してください)。

3. JSF (.jspx)ページを作成します(詳細は、第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」を参照してください)。

4. アプリケーションを保護し、いくつかのテスト・ユーザーを作成します(詳細は、第74章「WebCenter Portal Frameworkアプリケーションの保護」および第22.2.2項「jazn-data.xmlファイルでのロールおよび付与権限の定義方法」を参照してください)。

5. ピープル・コネクション・タスク・フローをページにドラッグ・アンド・ドロップします(詳細は、第38.2項「ページヘのピープル・コネクション・タスク・フローの追加」を参照)。

6. タスク・フロー・バインディングに必要な値を入力します(詳細は、第39章「ピープル・コネクション・タスク・フロー・バインディング・パラメータの使用」を参照)。

7. ページを実行します。

8. 必要に応じて、手順4で作成したテスト・ユーザーのユーザー名とパスワードを入力します。

37.2 ピープル・コネクション・サービスのトラブルシューティング

この項では、ピープル・コネクション・サービスの使用中に発生する可能性がある問題のトラブルシューティングに役立つ情報を提供します。

ピープル・コネクション・タスク・フローは、空であってもフル・ブラウザに表示されます

これにより、Internet Explorerバージョン8 (IE8)を使用している場合に問題が発生することがあります。IE8で、「ツール」→「互換表示設定」に移動します。「互換表示設定」ダイアログで、次のチェック・ボックスを選択解除します。

- イントラネット サイトを互換表示で表示する

- すべてのWebサイトを互換表示で表示する

新しいプロファイル・イメージが表示されない

プロファイル・イメージに対する変更は、古いWebCenterデータベース・キャッシュが原因で、ただちにレンダリングされないことがあります。古いイメージの下にある「リフレッシュ」アイコンをクリックすると、イメージが更新されます。

38 ピープル・コネクション・サービスの構成

この章では、ページへのピープル・コネクション・タスク・フローの追加、ピープル・コネクション・セキュリティの設定、およびサイトレベルのピープル・コネクション設定の構成を含めた、ピープル・コネクション・サービスの構成方法について説明します。

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

- 第38.1項「ピープル・コネクション・サービス用のデータベース接続の設定」

- 第38.2項「ページヘのピープル・コネクション・タスク・フローの追加」

- 第38.3項「ピープル・コネクション・サービスのセキュリティの設定」

- 第38.4項「ピープル・コネクション機能のサイトレベルの設定の確立」

38.1 ピープル・コネクション・サービス用のデータベース接続の設定

Oracle WebCenter Portalのツールとサービスのサポートによるデータベース接続の設定の詳細は、第4.2.2項「データベース接続の設定」を参照してください。

38.2 ページヘのピープル・コネクション・タスク・フローの追加

この項では、ピープル・コネクション・タスク・フローをアプリケーション・ページに追加する方法について説明します。ここで説明する手順は、すべてのピープル・コネクション・タスク・フローに対してほぼ同じです。異なる点については、明記します。

ピープル・コネクション・タスク・フローをWebCenter Portal Frameworkアプリケーションに追加するには:

1. 第37.1.2項「ピープル・コネクション・サービスの要件」の説明に従って、アプリケーションを準備します。

2. ピープル・コネクション・タスク・フローを追加するページを開きます。

3. リソース・パレットで、「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」フォルダの順に開きます。

4. タスク・フロー(たとえば、「コネクション - クイック・ビュー」)をJSF (.jspx)ページにドラッグ・アンド・ドロップします。

5. 表示されるポップアップ・メニューから、「リージョン」を選択します。
ピープル・コネクション・ライブラリをプロジェクトに追加するかどうかを尋ねられる場合があります。「ライブラリの追加」をクリックして確認します。

6. 「タスク・フロー・バインディングの編集」ダイアログで、タスク・フローのパラメータ値を指定します。
たとえば、「コネクション - クイック・ビュー」の場合、パラメータuseridは、実行時の現在のユーザー名を表します。現在のログイン・ユーザーに評価されるパラメータのEL式を指定できます。たとえば、useridの場合は、#{securityContext.userName}と入力します。詳細は、第39章「ピープル・コネクション・タスク・フロー・バインディング・パラメータの使用」を参照してください。

7. 「OK」をクリックします。
タスク・フローがページに追加され、タスク・フローを実行するようにViewControllerプロジェクトのライブラリが構成されます。

8. ページを保存し、ブラウザで実行します。

注意:

実行時にADFベースのアプリケーションにユーザーが任意のものをアップロードできるようにするには、そのタスク・フローを配置したページでフォームにusesUpload属性が設定されている必要があります。たとえば、ドキュメント・ライブラリにドキュメントを、またはプロファイルに写真をアップロードできるようにするには、関連するページに次のものを追加します。

<af:form usesUpload="true">
…
<af:region value="#{bindings.profile1.regionModel}"/>
…
</af:form>

さらに、プロファイル・スナップショットをアップロードできるようにするには、タスク・フロー・バインディング・パラメータphotoUploadAllowedをtrueに設定する必要があります。詳細は、第39章「ピープル・コネクション・タスク・フロー・バインディング・パラメータの使用」を参照してください。

38.3 ピープル・コネクション・サービスのセキュリティの設定

ピープル・コネクション機能は複数のユーザーの中心に位置するため、そのサービスを正常に使用するにはアプリケーション・セキュリティを設定する必要があります。理想的には、各機能との意味のある対話を可能にするためにテスト・ユーザーも設定します。ピープル・コネクション・サービスの各機能は、セキュリティで個別に保護できます。

- WebCenter Portalアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。WebCenter Portalアプリケーションで基本的なセキュリティ・ソリューションを実装する方法の詳細は、第74.3項「ADFセキュリティの構成」を参照してください。

- テスト・ユーザーを作成するには、第22.2.2項「jazn-data.xmlファイルでのロールおよび付与権限の定義方法」に示す手順に従ってください。
テスト・ユーザーを追加したら、business_email、title、departmentなどのユーザー属性を追加できます。

1. jazn-data.xmlファイルを開きます。

ヒント:

jazn-data.xmlファイルは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下の「META-INF」フォルダにあります。

2. メイン・コンテンツ領域の下部にある「ソース」のタブを選択します。

3. 選択したユーザーの<user>ノード内に、次のものを挿入します。

<property name="[property-name]" value="[property-value]"/>

たとえば、ユーザーmontyに対してmonty@example.comとしてbusiness_emailを追加するには、次のものを追加します。

<user>
<name>monty</name>
<display-name>monty</display-name>
<credentials>{903}EfEepsY6I/TrKthpcmjJIsrlP36Ysr/j</credentials>
<property name="business_email" value="monty@example.com"/>
</user>

38.4 ピープル・コネクション機能のサイトレベルの設定の確立

ピープル・コネクションのサイトレベルの設定を構成および改訂するには、次の2つのスクリプトを使用できます。

- RCUHOME/rcu/integration/webcenter/sql/oracle/settings-insert.sql

- RCUHOME/rcu/integration/webcenter/sql/oracle/settings-update.sql

変数RCUHOMEは、リソース作成ユーティリティ(RCU)のインストール場所を参照します。RCUは、WebCenterスキーマのセットアップに使用でき、Oracle JDeveloper出荷ホームとともにパッケージ化されています。RCUHOMEは、RCUがインストールされるルート・フォルダです。
この項では、それらのスクリプトについて説明し、それらによって制御される設定のタイプに関する情報を提供します。次のサブセクションが含まれます:

- 第38.4.1項「ピープル・コネクションのサイトレベルの設定のスクリプトの理解」

- 第38.4.2項「ピープル・コネクション機能に対してサポートされているサイトレベルの設定」

- 第38.4.3項「例: 招待を自動的に受け入れるためのコネクションの構成」

38.4.1 ピープル・コネクションのサイトレベルの設定のスクリプトの理解

ピープル・コネクション機能のサイトレベルの設定はすべてWebCenterスキーマ表WC_PPL_COMMON_SETTINGに格納されています。初期の設定では、この表に設定値は含まれていません。値がない場合、アプリケーションではデフォルト値が想定されます。設定の値を変更するには、設定をこの表に挿入し、次にそれを目的の値に更新する必要があります。2つのSQLスクリプトによって、これらの手順を適切な順序で実行できます。

この項では、ピープル・コネクションのサイトレベルの設定のスクリプトを準備し、実行する方法について説明します。次のサブセクションが含まれます:

- 第38.4.1.1項「settings-insert.sqlの準備と実行」

- 第38.4.1.2項「settings-update.sqlの準備と実行」

38.4.1.1 settings-insert.sqlの準備と実行

ピープル・コネクションのサイトレベルの設定を変更するには、その前にsettings-insert.sqlスクリプトを一度実行する必要があります。このスクリプトには、サポートされているすべての設定に対してINSERT文があります。すべてのINSERT文は、デフォルトではコメント・アウトされています。スクリプトを実行する前に、変更しようとしている設定をすべて非コメント化して準備します。

関連項目:

settings-insert.sqlスクリプトの実行例は、第38.4.3項「例: 招待を自動的に受け入れるためのコネクションの構成」を参照してください。

settings-insert.sqlスクリプトを準備および実行するには:

1. エディタでスクリプトを開きます。

2. 変更しようとしている設定について、対応するINSERT文を非コメント化します。

ヒント:

INSERT文を非コメント化するには、文のある行の先頭の二重ダッシュ(--)を削除します。

3. 目的の設定のINSERT文をすべて非コメント化したら、スクリプトを保存して実行します。
非コメント化した設定には、デフォルト値が移入されます。

注意:

settings-insert.sqlスクリプトは、特定のスキーマ上の設定の特定のセットに対して一度のみ実行できます。それを複数回実行する必要がある場合(たとえば、異なるセットの設定を更新する必要がある場合)は、スクリプトを再実行する前に、前に非コメント化したINSERT文をコメント化する必要があります。そのようにしない場合、INSERT文の再実行中にSQLエラーがスローされます。

38.4.1.2 settings-update.sqlの準備と実行

ピープル・コネクションのサイトレベルの設定を変更するには、settings-insert.sqlを一度実行した後にsettings-update.sqlスクリプトを実行する必要があります。settings-update.sqlスクリプトには、サポートされているすべての設定に対してUPDATE文があります。すべてのUPDATE文は、デフォルトではコメント・アウトされています。

特定のスキーマの特定のセットの設定に対して、settings-insert.sqlを一度実行してある場合、settings-update.sqlスクリプトは、必要な回数だけ実行できます。

関連項目:

settings-update.sqlスクリプトの実行例は、第38.4.3項「例: 招待を自動的に受け入れるためのコネクションの構成」を参照してください。

settings-update.sqlスクリプトを準備および実行するには:

1. エディタでスクリプトを開きます。

2. 変更しようとしている設定について、対応するUPDATE文を非コメント化します。

ヒント:

INSERT文を非コメント化するには、文のある行の先頭の二重ダッシュ(--)を削除します。

3. 非コメント化した文それぞれに対して、SETTING_KEY列の値を目的の値に変更します。
設定および値の詳細は、第38.4.2項「ピープル・コネクション機能に対してサポートされているサイトレベルの設定」を参照してください。

4. 目的のUPDATE文をすべて改訂したら、スクリプトを保存して実行します。
表WC_PPL_COMMON_SETTINGが、改訂した値に更新されます。

5. WebCenter Portal Frameworkアプリケーションが実行中である場合、変更を有効化するにはそれを再起動します。

38.4.2 ピープル・コネクション機能に対してサポートされているサイトレベルの設定

この項では、ピープル・コネクション・サービスに対してサポートされているサイトレベルのアプリケーション設定をリストし、説明します。次のサブセクションが含まれます:

- 第38.4.2.1項「アクティビティ・ストリームのサイトレベルの設定」

- 第38.4.2.2項「コネクションのサイトレベルの設定」

- 第38.4.2.3項「フィードバックのサイトレベルの設定」

- 第38.4.2.4項「メッセージ・ボードのサイトレベルの設定」

- 第38.4.2.5項「プロファイルのサイトレベルの設定」

38.4.2.1 アクティビティ・ストリームのサイトレベルの設定

表38-1では、ピープル・コネクション・サービスのアクティビティ・ストリーム機能のサイトレベルの設定をリストし説明しています。

アクティビティ・ストリームのサービスIDは、oracle.webcenter.activitystreamingです。サービスIDのリストは、表F-7を参照してください。

表38-1 アクティビティ・ストリームのサイトレベルの設定

設定キー

説明

有効なサイトレベルの値

accesscontrol.value.accessControlLevel

誰がユーザーのアクティビティ・ストリームを表示できるのかを指定します。

SELF、CONNECTIONS、USERS (つまり、認証ユーザー)、PUBLIC

accesscontrol.endUserConfigurable

個々のユーザーが、自身のアプリケーション・ビュー内で、自身のアクティビティ・ストリームを表示できるユーザーのアプリケーションレベルの設定をオーバーライドできるかどうかを指定します。

この設定は、アプリケーションがユーザー・プリファレンス画面にオーバーライド・コントロールを公開している場合にのみ有効です。

+, -

+=TRUE

-=FALSE

connectionsActivities.value

ユーザーのアクティビティ・ストリームに、ユーザーのコネクションのホーム・ポータル・アクティビティが含まれるかどうかを指定します。

ユーザーはタスク・フロー・インスタンスでこの設定をオーバーライドできます。

NONE、ALL

NONE=ユーザーのコネクションのアクティビティは表示されません。

ALL=ユーザーのコネクションのアクティビティはすべて表示されます。

groupSpaceActivities.value

ユーザーのアクティビティ・ストリームに、ユーザーのコネクションのポータル・アクティビティが含まれるかどうかを指定します。

ユーザーはタスク・フロー・インスタンスでこの設定をオーバーライドできます。

GSNONE、GSALL

GSNONE=ポータル・アクティビティは表示されません。

GSALL=ユーザーがメンバーであり、かつ表示アクセス権を持っているすべてのポータルのアクティビティが表示されます。

servicePublishedSettings[serviceId]

WebCenterサービスのserviceIdによって公開されたアクティビティをユーザーのアクティビティ・ストリームに表示するかどうかを指定します。serviceIdはアクティビティを公開する任意のサービスのWebCenterサービスIDです。サービスIDのリストは、表F-7を参照してください。

例:

servicePublishedSettings[oracle.webcenter.community]

ユーザーはタスク・フロー・インスタンスでこの設定をオーバーライドできます。

+, -

+=TRUE

-=FALSE

38.4.2.2 コネクションのサイトレベルの設定

表38-2では、ピープル・コネクション・サービスのコネクション機能のサイトレベルの設定をリストし説明しています。

コネクションのサービスIDは、oracle.webcenter.peopleconnections.connectionsです。サービスIDのリストは、表F-7を参照してください。

表38-2 コネクションのサイトレベルの設定

設定キー

説明

有効なサイトレベルの値

autoAcceptInvitations

コネクションの招待をデフォルトで自動的に受け入れることを指定します。

アプリケーションによってユーザー・プリファレンス画面にオーバーライド・コントロールが公開されている場合は、個々のユーザーが彼ら自身のビューでこのアプリケーションレベルの設定をオーバーライドできます。

+, -

+=TRUE

-=FALSE

connectionsVisibility.accessControlSettings.accessControlLevel

誰がユーザーのコネクションを表示できるのかを指定します。

SELF、CONNECTIONS、USERS (つまり、認証ユーザー)、PUBLIC

connectionsVisibility.personalizable

個々のユーザーが、自身のアプリケーション・ビュー内で、自身のコネクションを表示できるユーザーのアプリケーションレベルの設定をオーバーライドできるかどうかを指定します。

この設定は、アプリケーションがユーザー・プリファレンス画面にオーバーライド・コントロールを公開している場合にのみ有効です。

+, -

+=TRUE

-=FALSE

38.4.2.3 フィードバックのサイトレベルの設定

表38-3では、ピープル・コネクション・サービスのフィードバック機能のサイトレベルの設定をリストし説明しています。

フィードバックのサービスIDは、oracle.webcenter.peopleconnections.kudosです。サービスIDのリストは、表F-7を参照してください。

表38-3 フィードバックのサイトレベルの設定

設定キー

説明

有効なサイトレベルの値

visibility.accessControlSettings.accessControlLevel

誰がユーザーの受信済フィードバックを表示できるのかを指定します。

SELF、CONNECTIONS、USERS (つまり、認証ユーザー)、PUBLIC

visibility.endUserConfigurable

個々のユーザーが、自身のアプリケーション・ビュー内で、自身の受信済フィードバックを表示できるユーザーのアプリケーションレベルの設定をオーバーライドできるかどうかを指定します。

この設定は、アプリケーションがユーザー・プリファレンス画面にオーバーライド・コントロールを公開している場合にのみ有効です。

+, -

+=TRUE

-=FALSE

addControl.accessControlSettings.accessControlLevel

誰がユーザーにフィードバックを与えることができるのかを指定します。

SELF、CONNECTIONS、USERS (つまり、認証ユーザー)、PUBLIC

addControl.endUserConfigurable

個々のユーザーが、自身のアプリケーション・ビュー内で、自身にフィードバックを与えることができるユーザーのアプリケーションレベルの設定をオーバーライドできるかどうかを指定します。

この設定は、アプリケーションがユーザー・プリファレンス画面にオーバーライド・コントロールを公開している場合にのみ有効です。

+, -

+=TRUE

-=FALSE

miniViewRowCount.value

フィードバック - クイック・ビュー・タスク・フローに表示されるフィードバック・エントリの数を指定します。

正の整数

miniViewRowCount.endUserConfigurable

個々のユーザーが、自身のアプリケーション・ビュー内で、フィードバック - クイック・ビュー・タスク・フローに表示されるエントリ数のアプリケーションレベルの設定をオーバーライドできるかどうかを指定します。

この設定は、アプリケーションがユーザー・プリファレンス画面にオーバーライド・コントロールを公開している場合にのみ有効です。

+, -

+=TRUE

-=FALSE

postedUserActions.delete

ユーザーが、他のユーザーに対して自身が書き込んだフィードバックの削除を許可されるかどうかを指定します。

+, -

+=TRUE

-=FALSE

38.4.2.4 メッセージ・ボードのサイトレベルの設定

表38-4は、ピープル・コネクション・サービスのメッセージ・ボード機能のサイトレベルの設定をリストして説明しています。

メッセージ・ボードのサービスIDは、oracle.webcenter.peopleconnections.wallです。サービスIDのリストは、表F-7を参照してください。

表38-4 メッセージ・ボードのサイトレベルの設定

設定キー

説明

有効なサイトレベルの値

visibility.accessControlSettings.accessControlLevel

誰がユーザーのメッセージ・ボードを表示できるのかを指定します。

SELF、CONNECTIONS、USERS (つまり、認証ユーザー)、PUBLIC

visibility.endUserConfigurable

個々のユーザーが、自身のアプリケーション・ビュー内で、自身のメッセージ・ボードを表示できるユーザーのアプリケーションレベルの設定をオーバーライドできるかどうかを指定します。

この設定は、アプリケーションがユーザー・プリファレンス画面にオーバーライド・コントロールを公開している場合にのみ有効です。

+, -

+=TRUE

-=FALSE

addControl.accessControlSettings.accessControlLevel

誰がユーザーのメッセージ・ボードに投稿できるのかを指定します。

SELF、CONNECTIONS、USERS (つまり、認証ユーザー)、PUBLIC

addControl.endUserConfigurable

個々のユーザーが、自身のアプリケーション・ビュー内で、自身のメッセージ・ボードに投稿できるユーザーのアプリケーションレベルの設定をオーバーライドできるかどうかを指定します。

この設定は、アプリケーションがユーザー・プリファレンス画面にオーバーライド・コントロールを公開している場合にのみ有効です。

+, -

+=TRUE

-=FALSE

miniViewRowCount.value

メッセージ・ボード - クイック・ビュー・タスク・フローに表示されるメッセージの数を指定します。

正の整数

miniViewRowCount.endUserConfigurable

個々のユーザーが、自身のアプリケーション・ビュー内で、メッセージ・ボード - クイック・ビュー・タスク・フローに表示されるメッセージ数のアプリケーションレベルの設定をオーバーライドできるかどうかを指定します。

この設定は、アプリケーションがユーザー・プリファレンス画面にオーバーライド・コントロールを公開している場合にのみ有効です。

+, -

+=TRUE

-=FALSE

postedUserActions.edit

ユーザーが、他のユーザーのメッセージ・ボードに自身が投稿したメッセージの編集を許可されるかどうかを指定します。

+, -

+=TRUE

-=FALSE

postedUserActions.delete

ユーザーが、他のユーザーのメッセージ・ボードに自身が投稿したメッセージの削除を許可されるかどうかを指定します。

+, -

+=TRUE

-=FALSE

38.4.2.5 プロファイルのサイトレベルの設定

表38-5は、ピープル・コネクション・サービスのプロファイル機能のサイトレベルの設定をリストして説明しています。

プロファイルのサービスIDは、oracle.webcenter.peopleconnections.profileです。サービスIDのリストは、表F-7を参照してください。

注意:

Oracle WebCenter Portalが組込みLDAP (デフォルト)に接続されている場合、プロファイルの編集を無効にする必要があります。そうでない場合は、ユーザーがプロファイルを編集するときにエラーが表示されます。

表38-5 プロファイルのサイトレベルの設定

設定キー

説明

有効なサイトレベルの値

general-profile-settings.logActivity

写真のアップロード、個人ステータスの更新、プロファイル属性の変更などのプロファイルの更新が、アクティビティ・ストリームに公開されるアクティビティになるかどうかを指定します。

true、false

general-profile-settings.prersonalWebVisibility

誰がユーザーのプロファイル・ギャラリを表示できるのかを指定します。

SELF、CONNECTIONS、USERS (つまり、認証ユーザー)、PUBLIC

general-profile-settings.pwVisibilityPersonalizable

個々のユーザーが、自身のアプリケーション・ビュー内で、自身のプロファイル・ギャラリを表示できるユーザーのアプリケーションレベルの設定をオーバーライドできるかどうかを指定します。

この設定は、アプリケーションがユーザー・プリファレンス画面にオーバーライド・コントロールを公開している場合にのみ有効です。

true、false

general-profile-settings.view.name.profileSectionName.access-control-level

profileSectionNameによって識別されるプロファイル・セクションを誰が表示できるのかを指定します。

例:

general-profile-settings.view.name.personalInfo.access-control-level

詳細は、表38-6「プロファイル・セクション名」を参照してください。

SELF、USERS (つまり、認証ユーザー)、PUBLIC

注意: CONNECTIONSは、この設定の有効な値ではありません。

general-profile-settings.view.name.profileSectionName.allow-personalize-visibility

個々のユーザーが、自身のプロファイルのprofileSectionNameによって識別されるプロファイル・セクションを表示できるユーザーのアプリケーションレベルの設定をオーバーライドできるかどうかを指定します。

この設定は、アプリケーションがユーザー・プリファレンス画面にオーバーライド・コントロールを公開している場合にのみ有効です。

詳細は、表38-6「プロファイル・セクション名」を参照してください。

true、false

general-profile-settings.view.name.profileSectionName.allow-user-edit

ユーザーが、自身のプロファイルのprofileSectionNameによって識別されるプロファイル・セクションの編集を許可されるかどうかを指定します。

例:

general-profile-settings.view.name.personalInfo.allow-user-edit

詳細は、表38-6「プロファイル・セクション名」を参照してください。

true、false

ootb-view-edit-settings.view.name.profileSectionName.profileFieldName.allow-edit

ユーザーが、自身のプロファイルのprofileSectionNameによって識別されるプロファイル・セクションを編集するときにprofileFieldNameによって識別されるフィールドの更新を許可されるかどうかを指定します。

例:

ootb-view-edit-settings.view.name.personalInfo.homePhone.allow-edit

詳細は、表38-6「プロファイル・セクション名」および表38-7「プロファイル・フィールド名」を参照してください。

true、false

表38-6 プロファイル・セクション名

セクション名

説明

basic

プロファイル・サマリー

これらの詳細は、アプリケーションの検索で見つけることができます。

employee

従業員詳細

businessContact

勤務先連絡先情報

personalInfo

個人情報

表38-7 プロファイル・フィールド名

フィールド名

説明

email

勤務先電子メール・アドレス

displayName

ユーザー表示名

Dept

勤務先部署

title

役職

phone

勤務先電話番号

timeZone

タイムゾーン

photo

ユーザーの写真

persStatNote

個人ステータス・メッセージ

description

自己紹介

empType

従業員タイプ

empNo

従業員番号

prefLang

ユーザーの優先言語

organization

従業員の組織

expertise

従業員の専門

fax

FAX番号

mobile

携帯電話番号

pager

ページ番号

street

勤務先住所: 番地

city

勤務先住所: 市区町村

state

勤務先住所: 都道府県

poBox

勤務先住所: 私書箱

poCode

勤務先住所: 郵便番号

country

勤務先住所: 国

homeAdd

自宅の住所

homePhone

自宅の電話番号

dob

生年月日

maidenName

旧姓

doh

入社日

38.4.3 例: 招待を自動的に受け入れるためのコネクションの構成

デフォルトでは、ユーザーがコネクションの招待を送信した場合、受信者はそれらを明示的に受け入れる必要があります。サイトレベルの設定を使用して、アプリケーション管理者は、自動的に招待を受け入れるようにアプリケーションを構成できます。この設定は、キーautoAcceptInvitationsおよびサービスIDoracle.webcenter.peopleconnections.connectionsによって識別されます。この設定を変更するには、管理者が次の手順を実行します。

1. settings-insert.sqlスクリプトを開き、次の行を非コメント化します。

-- INSERT INTO WC_PPL_COMMON_SETTING (ID, APPLICATION_ID, SCOPE_ID, SERVICE_ID, USER_ID, TASKFLOW_INST_ID, SETTING_KEY, SETTING_VALUE)
--   VALUES ('768e5d1f-a73d-41b4-819d-74be081e1de1', 'webcenter', 'defaultScope', 'oracle.webcenter.peopleconnections.connections', 'SYSTEM', 'SITE', 'autoAcceptInvitations', '-')
-- ;

変更後、行は次のように表示されます。

INSERT INTO WC_PPL_COMMON_SETTING (ID, APPLICATION_ID, SCOPE_ID, SERVICE_ID, USER_ID, TASKFLOW_INST_ID, SETTING_KEY, SETTING_VALUE)
VALUES ('768e5d1f-a73d-41b4-819d-74be081e1de1', 'webcenter', 'defaultScope', 'oracle.webcenter.peopleconnections.connections', 'SYSTEM', 'SITE', 'autoAcceptInvitations', '-')
;

2. スクリプトを保存して実行します。

3. settings-update.sqlスクリプトを開き、次の行を非コメント化します。

-- UPDATE WC_PPL_COMMON_SETTING SET SETTING_VALUE='-'
--   WHERE APPLICATION_ID='webcenter' AND SCOPE_ID='defaultScope' AND USER_ID='SYSTEM' AND TASKFLOW_INST_ID='SITE'
--   AND SERVICE_ID='oracle.webcenter.peopleconnections.connections' AND SETTING_KEY='autoAcceptInvitations'
-- ;

変更後の行は、次のようになります。

UPDATE WC_PPL_COMMON_SETTING SET SETTING_VALUE='-'
WHERE APPLICATION_ID='webcenter' AND SCOPE_ID='defaultScope' AND USER_ID='SYSTEM' AND TASKFLOW_INST_ID='SITE'
AND SERVICE_ID='oracle.webcenter.peopleconnections.connections' AND SETTING_KEY='autoAcceptInvitations'
;

4. SETTING_VALUEの値をプラス記号(+)に変更します。
変更後、行は次のように表示されます。

UPDATE WC_PPL_COMMON_SETTING SET SETTING_VALUE='+'
WHERE APPLICATION_ID='webcenter' AND SCOPE_ID='defaultScope' AND USER_ID='SYSTEM' AND TASKFLOW_INST_ID='SITE'
AND SERVICE_ID='oracle.webcenter.peopleconnections.connections' AND SETTING_KEY='autoAcceptInvitations'
;

5. スクリプトを保存して実行します。

6. WebCenter Portal Frameworkアプリケーションが実行中である場合は、そのアプリケーションを再起動します。
再起動後、設定が有効になります。この例では、ユーザーが別のユーザーにコネクションの招待を送信すると、コネクションが自動的に作成されます。

関連項目:

ピープル・コネクションのサイトレベルの設定のリストおよび説明は、第38.4.2項「ピープル・コネクション機能に対してサポートされているサイトレベルの設定」を参照してください。

39 ピープル・コネクション・タスク・フロー・バインディング・パラメータの使用

この章では、設計時にタスク・フロー・パラメータ値を改訂する方法を説明し、ピープル・コネクション・タスク・フローと関連付けられているバインディング・パラメータとその説明を示す表を記載します。

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

- 第39.1項「ピープル・コネクション・タスク・フロー・バインディング・パラメータの概要」

- 第39.2項「ピープル・コネクション・タスク・フロー・バインディング・パラメータの改訂」

- 第39.3項「ピープル・コネクション・タスク・フロー・バインディング・パラメータの設定」

- 第39.4項「アクティビティ・ストリームの詳細な問合せパラメータの設定」

39.1 ピープル・コネクション・タスク・フロー・バインディング・パラメータの概要

各ピープル・コネクション・タスク・フローには、一連の必須およびオプションのタスク・フロー・バインディング・パラメータがあります。これらは、タスク・フローが正常に機能するために役立つ情報を取得する手段を提供します。たとえば、すべてのピープル・コネクション・タスク・フローは、現在のランタイム・ユーザーのIDを取得するためのバインディング・パラメータを提供します。この値(通常は#{securityContext.userName})により、このタスク・フローで、現在のユーザーに関連するピープル・コネクション・データを返すことが可能になります。

タスク・フロー・バインディング・パラメータを使用すると、タスク・フローの正常なレンダリングに必要な値を提供できるのみでなく、タスク・フロー・インスタンスの外観および動作をカスタマイズできます。たとえば、パラメータ値を使用して、ヘッダーとフッターをレンダリングするかどうか、表示する情報の行数や列数、返されたデータにフィルタを適用するかどうかなどを決定できます。

タスク・フロー・バインディング・パラメータの値は、タスク・フローをアプリケーション・ページにドラッグ・アンド・ドロップするときに指定できます。この操作を行うと、「タスク・フロー・バインディング」ダイアログが開きます(詳細は、第38.2項「ページヘのピープル・コネクション・タスク・フローの追加」を参照)。ページにタスク・フローを配置した後、タスク・フロー・バインディング・パラメータの値を調整することもできます。

39.2 ピープル・コネクション・タスク・フロー・バインディング・パラメータの改訂

ページにタスク・フローを追加した後、そのバインディング・パラメータ値を改訂することで、インスタンスをカスタマイズできます。この項では、「タスク・フロー・バインディングの編集」ダイアログにアクセスし、バインディング・パラメータ値を変更する方法について説明します。

「タスク・フロー・バインディングの編集」ダイアログにアクセスするには:

1. アプリケーション・ページを開き、そのページの下部にある「バインディング」タブをクリックすることで、ビューをバインディングに設定します。

2. 「実行可能ファイル」の下で、タスク・フロー・バインディング・パラメータを改訂するタスク・フローをダブルクリックし(図39-1)、「タスク・フロー・バインディングの編集」ダイアログを開きます(図39-2)。

ヒント:

「実行可能ファイル」の下のタスク・フロー名は、デザイン・ビューにおける名前とは異なります。たとえば、メッセージ・ボード・タスク・フローはwallと表示され、フィードバック・タスク・フローはkudosと表示されます。

図39-1 アプリケーション・ページのバインディング・ビュー

図39-2 「タスク・フロー・バインディングの編集」ダイアログ

3. バインディング・パラメータ値を改訂します(詳細は、第39.3項「ピープル・コネクション・タスク・フロー・バインディング・パラメータの設定」を参照)。

4. 「OK」をクリックし、変更を保存してダイアログを終了します。

5. ページを保存して実行し、結果を表示します。

39.3 ピープル・コネクション・タスク・フロー・バインディング・パラメータの設定

表39-1では、ピープル・コネクション・サービスに適用可能なタスク・フロー・バインディング・パラメータをリストし説明しています。

表39-1 ピープル・コネクション・サービス・タスク・フロー・バインディング・パラメータ

パラメータ

説明

__followEnforced

アクティビティ・ストリームを問い合せるときに追跡ロジックを強制する手段

- オブジェクトのアクティビティが詳細な問合せ句で問い合せされている場合でも、ストリーム・アクティビティにアクセスするためにユーザーがビジネス・オブジェクトを追跡する必要があるようにするには#{true}を入力します。デフォルトはtrueです。

- この要件を省略する場合は、#{false}を入力します。Fusionビジネス・オブジェクトに対してストリームされているアクティビティは、ユーザーがそのオブジェクトを追跡するかどうかに関係なく、詳細な問合せによって必要とされる場合は返されます。

このパラメータ(Fusionアプリケーション・ビジネス・オブジェクトの場合)は、advancedQueryパラメータとともに使用されます。

このパラメータは、アクティビティ・ストリーム・タスク・フローに関連付けられています。

__objectExtHandlerEnabled

オブジェクト拡張ハンドラを使用してFusionアプリケーション・ビジネス・オブジェクトを処理する手段

- オブジェクト拡張ハンドラを使用してビジネス・オブジェクトを処理するには、#{true}を入力します。

- オブジェクト拡張ハンドラの使用を省略する場合は、#{false}を入力します。デフォルトはfalseです。

#{true}を入力すると、ビジネス・オブジェクトのアクティビティを問い合せる前に、アクティビティ・ストリームによってオブジェクト拡張ハンドラが使用されて、ビジネス・オブジェクトが処理されます。ハンドラによって、ビジネス・オブジェクトにアクセスする権限をユーザーが持っているかどうかが確認されます。ユーザーが権限を持っていない場合、そのオブジェクトはリストから削除され、このオブジェクトからアクティビティは取得されません。

このパラメータは、次のタスク・フローに関連付けられています。

- アクティビティ・ストリーム

- アクティビティ・ストリーム - クイック・ビュー

__objects

アクティビティを表示するオブジェクトのカンマ区切りリスト

object-id;object-type;service-idの形式でオブジェクトを入力します。通常、追跡されるオブジェクトに対してのみ使用されます。

このパラメータは、アクティビティ・ストリーム・タスク・フローに関連付けられています。

__objectSecured

Fusionアプリケーション・ビジネス・オブジェクトに対してセキュリティ・チェックを強制する手段

- セキュリティ・チェックを強制する場合は、#{true}を入力します。

- セキュリティ・チェックを省略する場合は、#{false}を入力します。デフォルトはfalseです。

セキュリティ・チェックは、Fusionアプリケーションによって実装されるリソース認可プロバイダによって実行されます。ユーザーがビジネス・オブジェクトに対する権限を持っていない場合、そのビジネス・オブジェクトに関連するアクティビティはフィルタで除外されます。

このパラメータは、アクティビティ・ストリーム・タスク・フローに関連付けられています。

このパラメータは、次のタスク・フローに関連付けられています。

- アクティビティ・ストリーム

- アクティビティ・ストリーム - クイック・ビュー

advancedQuery

ストリームされたアイテムをフィルタ処理するためのカスタム問合せを指定するためのフィールド

詳細は、第39.4項「アクティビティ・ストリームの詳細な問合せパラメータの設定」を参照してください。

このパラメータは、アクティビティ・ストリーム・タスク・フローに関連付けられています。

connectionListName

コネクション・リストの名前

このパラメータは、コネクション - カード・タスク・フローに関連付けられています。

currentView

デフォルトで表示するビュー

有効な値には、次のものがあります。

- connections - (デフォルト値)コネクションのリスト

- receivedInvitations - 受信したコネクションの招待のリスト

- sentInvitations - 送信したコネクションの招待のリスト

- people - コネクションの招待を送る人々を見つけるための検索フィールド

ユーザーがタスク・フロー・インスタンスにアクセスするときは、ここで指定されたビューが最初に表示されます。people以外のすべての選択肢で、アプリケーションのデフォルト・ビュー(connections)にナビゲートするためのコントロールが提供されます。peopleを選択すると、他のユーザーにコネクションの招待を送信するための検索および選択のコントロールが提供されます。

このパラメータは、コネクション・タスク・フローに関連付けられています。

displayCount

タスク・フローに表示するアイテム数

たとえば、タスク・フローに最大5つのアイテムを表示できることを指定するには5と入力します。クイック・ビューで、指定された数より多くのアイテムがある場合は、タスク・フローの下部に「詳細」リンクが表示されます。ユーザーが「詳細」をクリックすると、タスク・フローのメイン・ビューが開き、そこですべてのアイテムにアクセスできます。メイン・ビューには、「前へ」および「次へ」リンクが表示されます。ユーザーはこれらをクリックして、エントリのページをめくります。

このパラメータは、次のタスク・フローのコンポーネント・プロパティに表示されます。

- フィードバック

- フィードバック - クイック・ビュー

- メッセージ・ボード

- メッセージ・ボード - クイック・ビュー

displayMessageSize

各フィードバック・メッセージに表示される文字数

指定した値を超えるメッセージは切り捨てられ、省略記号(…)が末尾に追加されます。

このパラメータは、タスク・フロー・フィードバック - クイック・ビューに関連付けられています。

display_maxConnections

タスク・フローに表示する最大コネクション数

たとえば、タスク・フローに最大5つのコネクションを表示できることを指定するには5と入力します。指定された数より多くのコネクションがある場合は、タスク・フローの下部に「詳細」リンクが表示されます。ユーザーが「詳細」をクリックすると、タスク・フローのメイン・ビューが開き、そこにすべてのコネクションが表示されます。

このパラメータに対して入力した値は、display_numberOfRowsおよびdisplay_numberOfColumnsの値が指定されていない場合にのみ有効になります。これらのパラメータの両方の値が指定されている場合、指定された数の行および列より多くのコネクションがある場合は、「前へ」および「次へ」のリンクが表示されます。

このパラメータは、次のタスク・フローに関連付けられています。

- コネクション - カード

- コネクション - クイック・ビュー

display_numberOfColumns

タスク・フローに表示する列数

たとえば、6つのコネクションを表示するコネクション - カード・タスク・フローでは、2の値は、それらのコネクションが3つの行を持つ2つの列で表示されます(「display_numberOfRows」および「display_maxConnections」も参照してください)。

このパラメータは、次のタスク・フローに関連付けられています。

- コネクション - カード

- コネクション - クイック・ビュー

display_numberOfRows

タスク・フローに表示する行数

たとえば、6つのコネクションを表示するコネクション - カード・タスク・フローで、display_numberOfColumnsに2の値が指定されている場合、このパラメータに2の値を指定すると、2つの行を持つ2つの列にコネクションが表示されることを意味します。つまり、4つのコネクションが表示されます。指定された数の列および行より多くのコネクションがある場合は、タスク・フローの下部に「詳細」リンクが表示されます。ユーザーが「詳細」をクリックすると、タスク・フローのメイン・ビューが開き、そこにすべてのコネクションが表示されます。

「display_maxConnections」も参照してください。

このパラメータは、次のタスク・フローに関連付けられています。

- コネクション - カード

- コネクション - クイック・ビュー

display_profileFormat

タスク・フローのデフォルト・レイアウト・スタイル

次のうち1つを入力してください。

- vcard - コネクションの写真およびステータス・メッセージを表示します。

- iconic - コネクションの写真およびユーザー名を表示します。

- list - リストにコネクションを表示します。リストの各行には、プロファイル写真、ユーザー名(プロファイルの概要ビューにリンクされている)、メール・アドレス、役職、ステータス・メッセージおよびアクション・アイコンとリンクが表示されます。

- tiled - コネクションの個人プロファイル写真をレンダリングし、その写真に加えてユーザー名および役職を表示します。

すべてのレイアウトにおいて、名前はユーザーのプロファイルのサマリー・ビューにリンクしています。

このパラメータは、コネクション - カード・タスク・フローに関連付けられています。

display_removalAllowed

タスク・フロー上の「削除」アクションを表示または非表示にする手段

「削除」アクションを表示するには、trueを入力します。「削除」アクションを非表示にするには、falseを入力します。入力が無効である場合は、デフォルト値(true)が適用されます。

このパラメータは、コネクション - カード・タスク・フローに関連付けられています。

display_sortedBy

コネクションのソート順序

日時の降順でコネクションをソートするには、LAST_ACTIVITY_TIMEを入力します。名前のアルファベット順にコネクションをソートするには、このフィールドを空白のままにします。

このパラメータは、コネクション - カード・タスク・フローに関連付けられています。

editMode

プロファイル・タスク・フロー・インスタンスに対して編集モードを有効化する手段

編集モードを有効化する場合は、#{true}を入力します。それを無効化する場合は、#{false}を入力します。

このパラメータは、プロファイル・タスク・フローに関連付けられています。

enableContextInf0

現在のコンテキストにおけるオブジェクトに関する詳細情報を表示または省略する手段(ポップアップまたは他のコンテキストに基づく手段)

- #{true}を入力すると、アクティビティ・ストリームでaf:contextInfoコンポーネント(小さな赤いドット)が表示できるようになります。ユーザーはこのドットをクリックしてオブジェクトの詳細情報を表示できます。

- #{false}を入力すると、オブジェクトの詳細情報は省略されます。

このパラメータがtrueで、サービス定義にcontextInfoTaskflowIdが定義されている場合、サービスのアクティビティによりaf:contextInfoが表示されます。それ以外の場合、コンテキスト情報は表示されません。

このパラメータは、アクティビティ・ストリーム・タスク・フローに関連付けられています。

filterPattern

タスク・フロー・コンテンツに対するフィルタ

たとえば、patと入力すると、patという名前のコネクション(patrickやsripathyなど)のみが表示されます。

このパラメータは、コネクション - カード・タスク・フローに関連付けられています。

fromDate

フィードバック・メッセージを表示する日付範囲の開始日

YYYY-MM-DDの形式で日付を入力します。

「toDate」も参照してください。

このパラメータは、次のタスク・フローに関連付けられています。

- フィードバック

- フィードバック - クイック・ビュー

- メッセージ・ボード

hideActions

編集、プライベート、非表示、削除などフィードバックまたはメッセージ・ボードのエントリと通常、関連付けられているアクションを非表示にする手段

- フィードバックまたはメッセージ・ボードのエントリと関連付けられているアクションを非表示にするには、#{true}を入力します。

- そのようなアクションを表示する場合は、#{false}を入力します。値が入力されていない場合は、falseがデフォルトです。

このパラメータは、次のタスク・フローのコンポーネント・プロパティに表示されます。

- フィードバック – クイック・ビュー

- メッセージ・ボード – クイック・ビュー

hideAttach

「添付: ファイル|リンク」オプションを表示するのか非表示にするのかを指定します

- 「添付: ファイル|リンク」オプションを非表示にするには、#{true}にします。

- 「添付: ファイル|リンク」オプションを表示するには、#{false}にします。

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

hideComments

ストリーム・アクティビティ上のコメント機能を表示または非表示にする手段

trueを入力すると、コメント機能が非表示になります。falseを入力するとこれが表示されます。

このパラメータは、アクティビティ・ストリーム・タスク・フローに関連付けられています

hideConfigure

タスク・フロー・インスタンスのパーソナライズ・オプションを非表示にする手段

このパラメータは、次のタスク・フローに関連付けられています。

- アクティビティ・ストリーム

- アクティビティ・ストリーム - クイック・ビュー

hideDocumentUploader

パブリッシャ・タスク・フローのドキュメント・アップローダを表示または非表示にする手段

パブリッシャ・タスク・フローのドキュメント・アップローダを非表示にするには、#{true}を入力します。それを表示するには、#{false}を入力します。

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

hideFooter

タスク・フロー・フッターを表示または非表示にする手段

タスク・フロー・フッターには、現在のビューに表示できる数より多くのアイテムがある場合、タスク・フローの下部に表示される「詳細」リンクが含まれています。フッターを非表示にすると、「詳細」リンクも非表示になります。フッターを非表示にしても、タスク・フローの下部に表示される「前へ」および「次へ」リンクに影響はありません。

フッターを非表示にするには、trueを入力します。フッターを表示するには、false (デフォルト)を入力します。

このパラメータは、次のタスク・フローに関連付けられています。

- アクティビティ・ストリーム - クイック・ビュー

- コネクション - カード

- コネクション - クイック・ビュー

- フィードバック - クイック・ビュー

- メッセージ・ボード - クイック・ビュー

hideGiven

ユーザーに提供されたフィードバックを表示または非表示にする手段

提供されたフィードバックのレンダリングを許可するには、trueを入力します。それを禁止するには、falseを入力します。

このパラメータは、次のタスク・フローに関連付けられています。

- フィードバック

- フィードバック - クイック・ビュー

hideHeader

タスク・フロー・ヘッダーを表示または非表示にする手段

タスク・フロー・ヘッダーを非表示にするには、trueを入力します。タスク・フロー・ヘッダーを表示するには、false (デフォルト)を入力します。

このパラメータは、次のタスク・フローに関連付けられています。

- アクティビティ・ストリーム - クイック・ビュー

- コネクション - クイック・ビュー

- フィードバック

- フィードバック - クイック・ビュー

- メッセージ・ボード

- メッセージ・ボード - クイック・ビュー

hideInlinePreview

ストリーム・アクティビティに添付されるファイルのインライン・プレビューを許可または省略する手段

trueを入力すると、ファイルのプレビューは省略されます。falseを入力するとこれが表示されます。

このパラメータは、アクティビティ・ストリーム・タスク・フローに関連付けられています。

hideLike

ストリーム・アクティビティ上の「お気に入り登録」リンクを表示または非表示にする手段

trueを入力すると、「お気に入り登録」リンクが非表示になります。falseを入力するとこれが表示されます。

このパラメータは、アクティビティ・ストリーム・タスク・フローに関連付けられています

hideName

接続のユーザー名を表示または非表示にする手段

trueを入力すると、名前が非表示になります。falseを入力するとこれが表示されます。

このパラメータは、コネクション・カード・タスク・フローに関連付けられています。

hidePublisher

メッセージ入力フィールド、アップロード・ファイルおよびURLコントロール(パブリッシャ)を表示または非表示にする手段

- 指定したタスク・フロー・インスタンスのメッセージ入力フィールドの表示を無効化するには、#{true}を入力します。

- 指定したタスク・フロー・インスタンスのメッセージ入力フィールドの表示を許可するには、#{false}を入力します。

このパラメータは、次のタスク・フローに関連付けられています。

- メッセージ・ボード

- メッセージ・ボード - クイック・ビュー

hideScopePicker

「次と共有」オプションを表示するのか非表示にするのかを指定します

- 「次と共有」オプションを非表示にするには、#{true}にします。

- 「次と共有」オプションを表示するには、#{false}にします。

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

hideShare

ストリーム・アクティビティ上の「共有」リンクを表示または非表示にする手段

「共有」リンクを非表示にするには、trueを入力します。falseを入力するとこれが表示されます。

このパラメータは、アクティビティ・ストリーム・タスク・フローに関連付けられています

hideSpacesUI

「アクティビティ・ストリーム」およびアクティビティ・ストリーム - クイック・ビュー構成ダイアログに、ポータルUIを表示するかどうかを指定します。ポータルUIでは、すべてのポータル、自分がメンバーであるポータル、ポータルなし、またはタスク・フローが配置されているポータルのうち、どのアクティビティを表示するかを指定できます。

- ポータルUIを表示するには、#{true}を入力します。これがデフォルトです。

- ポータルUIを非表示にするには、#{false}を入力します。

このパラメータは、次のタスク・フローに関連付けられています。

- アクティビティ・ストリーム

- アクティビティ・ストリーム - クイック・ビュー

hintsTextKey

ヒント・テキストに対してリソース・バンドル・クラスおよびメッセージ・キーを指定します

ヒント・テキストがない場合の事前定義済キーとしてkey[,RBClass]. __EMPTY__の形式を使用します。これがデフォルト値です。

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

imageSize

プロファイル写真の表示サイズ

次の値のうち1つを入力してください。

- ORIGINAL

- LARGE

- MEDIUM

- SMALL

このパラメータは、プロファイル - スナップショット・タスク・フローに関連付けられています。

isUpdateStatus

タスク・フロー・インスタンスを現在のユーザーのプロファイル・ステータス・メッセージの更新専用にする手段

タスク・フロー・インスタンスをユーザーのステータス・メッセージの更新専用にするには、#{true}を入力します。現在のユーザーのプロファイル・ステータス・メッセージへのメッセージの公開を省略するには、#{false}を入力します。

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

keepOpenAfterPublish

ユーザーが「公開」ボタンをクリックした後に、テキスト・ボックスをアクティブなままにするかどうかを指定します

- メッセージを公開した後にテキスト・ボックスを開いたままにするには、#{true}を入力します。

- メッセージを公開した後にテキスト・ボックスを閉じるには、#{false}を入力します。

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

launchStyle

プロファイル起動スタイルを指定します。このパラメータは、選択に基づいて起動されたプロファイルが選択されている場合のみ有効です。

次のうち1つを入力してください。

- snapshot—ユーザー名がクリックされたときにユーザーのプロファイル・スナップショットを表示します。

- profile—ユーザー名がクリックされたときにユーザーの「プロファイル」ページを表示します。

このパラメータは、コネクション - カード・タスク・フローに関連付けられています。

messageType

表示するメッセージのタイプ。自分のメッセージボードを表示する場合のみ使用可能です。

表示するメッセージのタイプを指定します。

次のうち1つを入力してください。

- all—パブリックとプライベートの両方のメッセージを表示します。これがデフォルトです。

- private—プライベート・メッセージを表示します。

- public—パブリック・メッセージを表示します。

このパラメータは、次のタスク・フローに関連付けられています。

- メッセージ・ボード

- メッセージ・ボード - クイック・ビュー

numberOfRows_list

コネクション・タスク・フロー・インスタンスがリスト・ビューに設定されている場合に表示する行数

このパラメータは、コネクション・タスク・フローに関連付けられています。

objectId

公開されるメッセージと関連付けられるオブジェクトのID

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

objectType

公開されるメッセージと関連付けられるオブジェクトのタイプ

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

orgBreadCrumbsShown

チェーン上の各メンバーにリンクしている管理チェーンをレンダリングする、ユーザー・プロファイル上の組織のブレッドクラムを表示または非表示にする手段

組織のブレッドクラムを表示するには、#{true}を入力します。それを省略する場合は、#{false}を入力します。

このパラメータは、プロファイル - スナップショット・タスク・フローに関連付けられています。

pageSize

指定のタスク・フロー・インスタンスにストリームするアイテム数

このパラメータは、次のタスク・フローに関連付けられています。

- アクティビティ・ストリーム

- アクティビティ・ストリーム - クイック・ビュー

pagination

マルチページ・ストリームで使用するページ区切りの形式

- #{true}を入力すると、「前へ」および「次へ」リンクが表示されます。

- #{false}を入力すると、「前へ」および「次へ」リンクが省略されます。かわりに「詳細」リンクがレンダリングされ、ユーザーはすべてのストリーム・アクティビティが表示されたより詳細なタスク・フローのビューにナビゲートできます。

このパラメータは、アクティビティ・ストリーム・タスク・フローに関連付けられています。

photoUploadAllowed

プロファイル画面からの写真のアップロードを可能にする手段

ユーザーがそのプロファイルに写真をアップロードできるようにするには、true (デフォルト)を入力します。ユーザーが写真をアップロードできないようにするには、falseを入力します。

このパラメータは、タスク・フロー・プロファイル - スナップショットに関連付けられています。

profileEditLinkShown

プロファイル - スナップショット・タスク・フロー上の「編集」リンクを表示または省略する手段

「編集」リンクを表示するには、#{true}を入力します。それを非表示にするには、#{false}を入力します。

このパラメータは、プロファイル - スナップショット・タスク・フローに関連付けられています。

profileLaunchedOnSelection

ユーザー名がクリックされたときにユーザー・プロファイルを起動する手段

ユーザー名がクリックされたときにユーザー・プロファイルを起動するには、trueを入力します。ユーザー・プロファイルを起動しないようにするには、falseを入力します

このパラメータは、タスク・フロー・コネクション - カードに関連付けられています

profileOnly

ユーザー・プロファイルからのみアクティビティをストリームする手段

- ユーザー・プロファイルに関連付けられたアクティビティのみをストリームするには、trueを入力します。

- ユーザー・プロファイルに関連付けられたアクティビティとともに、他のタイプのアクティビティもストリームするには、falseを入力します。

このパラメータは、アクティビティ・ストリーム・タスク・フローに関連付けられています。

profileUserId

アクティビティのストリーム元のユーザーのID

このパラメータは、アクティビティ・ストリーム - クイック・ビュー・タスク・フローに関連付けられています。

resourceId

現在のユーザーID

#{securityContext.userName}を入力すると、現在のユーザーが戻されます。

このパラメータは、次のタスク・フローに関連付けられています。

- アクティビティ・ストリーム

- コネクション

- フィードバック

- メッセージ・ボード

- プロファイル

- プロファイル・ギャラリ

scopeId

公開先の範囲のID

このプロパティ値は、公開されているオブジェクトへの移動に使用するリンクの生成に役立ちます。EL式を使用してそれを行う予定である場合以外は、値を指定する必要はありません。EL式の詳細は、付録F「式言語式」を参照してください。

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

sectionWiseEditEnabled

タスク・フロー上のセクションごとの編集機能を有効化または無効化する手段

- セクションごとの編集を有効化する場合は、#{true}を入力します。編集可能な各プロファイル・セクションに、「編集」コントロールが表示されます。

- セクションごとの編集を無効化する場合は、#{false}を入力します。

このパラメータは、プロファイル・タスク・フローに関連付けられています。

serviceCategories

アクティビティのストリーム元となるサービス名のカンマ区切りリストを入力するためのフィールド

このパラメータを使用して、ストリームされたアクティビティの表示を指定したサービスに関連付けられたアクティビティのみに制限できます。たとえば、次のように1つ以上のサービスIDを入力します。

oracle.webcenter.collab.announcement, oracle.webcenter.collab.forum

有効なサービスIDのリストは、表F-7「サービスとツールのID」を参照してください。すべてのサービスがアイテムをアクティビティ・ストリームへストリームするわけではないので、リストされたすべてのサービスIDを使用できるわけではない点に注意してください。たとえば、RSSサービスはアクティビティをストリームしません。

このパラメータは、アクティビティ・ストリーム・タスク・フローに関連付けられています。

serviceId

公開されるメッセージと関連付けられているオブジェクトが属しているサービスのサービスID

サービスIDのリストは、表F-7「サービスとツールのID」を参照してください。

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

showViewListOfAll

フッターに「すべてのコネクションを表示」リンクを含めるかどうかを指定します。このパラメータが有効な場合、タスク・フローにページ区切りはありません。

- 「すべてのコネクションを表示」リンクを表示するには、#{true}を入力します。

- 「すべてのコネクションを表示」リンクを非表示にするには、#{false}を入力します。

このパラメータは、コネクション - カード・タスク・フローに関連付けられています。

spaceName

メッセージを公開するポータル

アプリケーションがポータルをサポートしていない場合、このパラメータに値を指定しないでください。

このパラメータは、次のタスク・フローに関連付けられています。

- メッセージ・ボード

- メッセージ・ボード - クイック・ビュー

- パブリッシャ

spaces

アクティビティをストリームする元のポータルの名前またはGUIDのカンマ区切りリスト

このパラメータを使用して、ストリーム・アクティビティの表示を、指定したポータルに関連付けられたアクティビティのみに制限します。

アプリケーションがポータルをサポートしていない場合、このパラメータに値を指定しないでください。

このパラメータは、アクティビティ・ストリーム・タスク・フローに関連付けられています。

statusUpdateAllowed

プロファイル・ステータス・メッセージを更新するためのコントロールをタスク・フロー上で使用可能にするかどうかを表すブール値

trueまたはfalseのいずれかを入力します。

このパラメータは、プロファイル - スナップショット・タスク・フローのコンポーネント・プロパティに表示されます。

toDate

フィードバック・メッセージを表示する日付範囲の終了日

YYYY-MM-DDの形式で日付を入力します。

「fromDate」も参照してください。

このパラメータは、次のタスク・フローに関連付けられています。

- フィードバック

- フィードバック - クイック・ビュー

- メッセージ・ボード

uploadDocumentOnly

パブリッシャ・タスク・フローを、そのドキュメントのアップロード機能に限定する手段

パブリッシャ・タスク・フローを、ドキュメント・アップローダのみにするように限定するには、#{true}を入力します。すべてのパブリッシャ機能を公開するには、#{false}を入力します。

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

userId

現在のユーザーID

#{securityContext.userName}を入力すると、現在のユーザーが戻されます。

このパラメータは、次のタスク・フローに関連付けられています。

- コネクション - カード

- コネクション - クイック・ビュー

- フィードバック - クイック・ビュー

- メッセージ・ボード - クイック・ビュー

- プロファイル - スナップショット

userName

メッセージの公開先のユーザーの名前

この値は、デフォルトで指定されています。デフォルト値#{o_w_w_i_v_b_resourceViewerBean.username}を変更しないことをお薦めします。

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

viaUser

現在のユーザーが共有しているオブジェクトを提供した人のユーザー名

たとえば、Johnが、元はJaneと共有していたドキュメントをすべての人と共有しているとします。その場合、JaneがviaUserです。

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

39.4 アクティビティ・ストリームの詳細な問合せパラメータの設定

advancedQueryパラメータを使用して、アクティビティ・ストリーム・タスク・フローでストリームされるアクティビティに対するフィルタを作成します。ユーザー名、サービスIDおよびドキュメントの表示名などのオブジェクトの詳細のフィルタを作成します。パラメータ値にはSQL構文を使用できます。また、SQL内にEL式を配置できます。

照会に接頭辞として付加された別名によって表された特定のデータベース・オブジェクトに対する問合せを作成できます。表39-2では、問合せの作成対象として可能なデータベース・オブジェクトのタイプをリストして説明し、さらにそれらの別名接頭辞を示しています。

関連項目:

多くの場合、EL式を使用して、表39-2にリストしたサポートされているフィールドおよび列に必要な値を取得できます。詳細は、付録F「式言語式」を参照してください。

表39-2 SQL WHERE句の作成に対してサポートされているデータベース・オブジェクト

データベース・オブジェクト

別名接頭辞

サポートされるフィールド/列

アクティビティ

AE

- SCOPE_ID - 範囲のGUID (ELを使用してこの値を返すことができます。たとえば、#{serviceCtx.scope.GUID}です)。

- SERVICE_ID - 追跡するサービスのサービスID。サービスIDのリストは、表F-7を参照してください。

- ACTIVITY_TIME - アクティビティが発生した時刻。
SQLまたはターゲット・データベースでサポートされている日付時刻形式を使用します。to_date()などのOracleデータベースSQL構文も使用できます。

- ACTIVITY_TYPE - 追跡するアクティビティのタイプ
有効なアクティビティ・タイプ名のリストは、表39-3を参照してください。

アクティビティ(アクター)

AD

ACTOR_NAME - アクティビティを実行している人のユーザー名。

アクティビティ(オブジェクト)

OD

- SERVICE_ID - 追跡されるオブジェクトの生成元のサービスのサービスID。サービスIDのリストは、表F-7を参照してください。

- OBJECT_ID - オブジェクトのGUID。

- DISPLAY_NAME - オブジェクトの表示名。

- OBJECT_TYPE - オブジェクト・タイプ。
詳細な問合せで使用するオブジェクト・タイプ名には、次のものがあります。

- event

- announcement

- forum

- topic

- bookmark

- list

- page

- blog

- document

- wiki

表39-3 詳細な問合せのアクティビティ・タイプ名

サービス

アクティビティ・タイプ名

イベント

- createEvent

- updateEvent

お知らせ

- createAnnouncement

- updateAnnouncement

ディスカッション

- createForum

- createTopic

- replyTopic

タグ

- updateBookmark

リスト

- createList

- editList

ページ

- createPage

- editPage

ドキュメント

- create-blog

- update-blog

- create-document

- create-wiki

- update-document

- update-wiki

ピープル・コネクション(プロファイル)

- updateStatus

- updateProfile

- updatePhoto

ピープル・コネクション(メッセージ・ボード)

- postScope

- postself

- post

- sharescope

- shareself

- share

- shareobjectscope

- shareobjectself

- shareobject

- updatescope

- updateself

- update

ピープル・コネクション(コネクション)

- connect

- inviteForConnection

ピープル・コネクション(フィードバック)

- post

SQL標準に従った詳細な問合せパラメータとして渡されるSQL文字列。つまり、AND、OR、INなどのSQL構文がサポートされています。ただし、INSERT、UPDATE、DELETE、SELECT、JOIN構文はサポートされていません。詳細な問合せの構文には、SQL問合せのWHERE句の部分のみを含める必要があります。SELECTはサポートされていないため、WHERE句には問合せも副問合せもネストできません。

advancedQueryパラメータはEL式もサポートしていますが、EL式はWHERE句に埋め込むか、またはWHERE句全体を生成するために使用できます。

問合せ内のリテラルはすべて先頭にバック・スラッシュ(\)を付けてエスケープする必要があります。そうでないと、このような文字により構文エラーが生成されます(例は表39-4を参照してください)。

詳細な問合せのWHERE句は、常に、現在のユーザー、ポータル・メンバーシップ、コネクション・リストおよびお気に入りに基づいてアクティビティ・ストリームによって生成された内部問合せと論理積(AND)処理されます。これは、ユーザーがアクセス権を持っていないアクティビティを表示できないようにするためです。

表39-4に、詳細な問合せの例を示します。

表39-4 アクティビティ・ストリームで使用する詳細な問合せの例

ユース・ケース

問合せ構文

ドキュメント作成アクティビティのみをストリームします。

AE.SERVICE_ID = \'oracle.webcenter.doclib\'

オブジェクトまたは現在のポータルからのアクティビティのみをストリームします。

OD.OBJECT_ID = \'objectA\' OR AE.SCOPE_ID = \'#{serviceCtx.scope.GUID}\'

現在のユーザーによって作成されたWikiに関するアクティビティのみをストリームします。

OD.OBJECT_TYPE = \'Wiki\' AND AD.ACTOR_NAME = \'#{securityContext.userName}\'

ドキュメントおよびディスカッションのアクティビティをストリームしますが、現在のユーザーの作成アクティビティまたはすべてのアクティビティのみをストリームします。

(AE.SERVICE_ID IN (\'oracle.webcenter.doclib\', \'oracle.webcenter.collab.forum\') AND AE.ACTIVITY_TYPE IN (\'createDocument\', \'createTopic\')) OR AD.ACTOR_NAME = \'#{securityContext.userName}\'

40 ピープル・コネクション・データ・コントロールおよびJava APIの使用方法

この章では、ピープル・コネクション・サービス・データ・コントロールおよびJava APIの使用方法について説明します。各データ・コントロールの詳細、それをプロジェクトに追加する方法、WebCenter Portal Frameworkアプリケーションにおけるデータ・コントロールの使用方法に関する情報の参照先も示します。

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

- 第40.1項「ピープル・コネクション・データ・コントロールの使用方法」

- 第40.2項「ピープル・コネクション・サービスJava API」

40.1 ピープル・コネクション・データ・コントロールの使用方法

ピープル・コネクション・サービスは、ピープル・コネクション機能の自分独自の表示方法を作成できるデータ・コントロールを提供します。この項では、次のデータ・コントロールの概要を説明し、サポートされているメソッド、属性およびクラスについて説明します。

- ピープル・コネクション管理データ・コントロール

- 賛辞サービス・データ・コントロール

- プロファイル・データ・コントロール

この項には、次のサブセクションも含まれます:

- 第40.1.1項「プロジェクトへのデータ・コントロールの追加」

- 第40.1.2項「ピープル・コネクション管理データ・コントロールの使用」

- 第40.1.3項「プロファイル・データ・コントロールの使用」

40.1.1 プロジェクトへのデータ・コントロールの追加

プロジェクトにデータ・コントロールを追加するには、「リソース・パレット」でデータ・コントロールを右クリックし、ポップアップ・メニューから「プロジェクトに追加」を選択します。追加されると、アプリケーション・ナビゲータの「データ・コントロール」パネルで展開して、データ・コントロールのメソッドと属性を参照できます。

アプリケーション・ページにデータ・コントロールを追加するには、「データ・コントロール」パネルからページにデータ・コントロールをドラッグします。配置すると、ボタンやテキスト・ボックスなど、データにバインドするコンポーネントのタイプを選択するためのオプションが含まれているポップアップ・メニューが開きます。

ピープル・コネクション・データ・コントロールを実装するには:

1. JDeveloperでWebCenter Portal Frameworkアプリケーションを作成します。

2. WebCenter Portalアプリケーションで、「リソース・カタログ」→「サービス・カタログ」→「データ・コントロール」にナビゲートします。

3. ピープル・コネクション・データ・コントロールを選択し、コントロールを右クリックします。

4. ポップアップ・メニューで「プロジェクトに追加」をクリックします。
「アプリケーション・ナビゲータ・プロジェクト・データ・コントロール」フォルダに「データ・コントロール」が表示されます。

5. 「データ・コントロール」フォルダを開きます。
開くと、「データ・コントロール」オブジェクトおよびそれらに対応するJavaメソッドが表示されます。

6. データ・コントロール・オブジェクトを.jspxページにドラッグ・アンド・ドロップし、図40-1に示すドロップダウン「表」.メニュー・リストの「ADF表」オプションを選択します。

図40-1 ADF表が選択された.jspxページにドラッグ・アンド・ドロップされたデータ・コントロール・オブジェクト

7. 使用可能なJavaメソッドを使用するには、図40-2に示すように、そのメソッドを.jspxページにドラッグし、「作成」メニュー・リストの「メソッド」項目を選択して、それをプロジェクトのデータにバインドし、目的の機能を実現します。

図40-2 Javaメソッドを.jspxページにドラッグ・アンド・ドロップして「作成」メニュー・リストの「メソッド」を選択

関連項目:

WebCenter Portal Frameworkアプリケーションでのデータ・コントロールの使用方法の詳細は、第4.1.3項「WebCenter Portalのデータ・コントロールの使用」を参照してください。

40.1.2 ピープル・コネクション管理データ・コントロールの使用

ピープル・コネクション管理データ・コントロールは、コネクションおよびコネクション・リストを追加および管理するためのメソッドを提供します。公開されている主要なメソッドには次のものがあります。

- connectionLists

- groupedPeopleCounts

- receivedInvitations

- sentInvitations

- acceptInvitation(String invitationId)

- addConnectionsToList(List userids, String listName)

- createConnectionList(String listName)

- declineInvitation(String invitationId)

- dropConnectionList(String listName)

- getConnectionList(String connectionListName)

- getConnections(String userid, String connectionListName, String filterPattern, String sortBy, int startIndex, int fetchSize)

- getNumberOfConnections(String userid, String connectionListName, String filterPattern)

- ignoreInvitation(String invitationId)

- inviteUserForConnection(String userid, String invitationMessage, Collection connectionListNames)

- isConnectionListModifiable(String listName)

- isConnectionPartOfUnmodifiableList(String connecteeGuid)

- removeConnection(String userid, boolean fromListOnly, String listName)

- searchUsers(String filterPattern, int startIndex, int fetchSize)

- updateConnectionListsMembership(String member, Collection addListIds, Collection removeListIds)

この項に含まれる各項では、ピープル・コネクション管理データ・コントロールと関連付けられているメソッドをリストし、説明します。

40.1.2.1 connectionLists

リストID、名前、ローカライズされた名前、メンバーの数、リストが変更可能であるかどうか、メンバー・ユーザーIDなどコネクション・リストに関する詳細のコレクション。表40-1では、このメソッドと関連付けられている属性をリストし、説明しています。

表40-1 メソッドconnectionListsの属性

属性

説明

id

コネクション・リストID

listName

コネクション・リストの名前

localizedName

コネクション・リストのローカライズされた名前

memberCount

指定された各コネクション・リストのメンバー数

modifiable

指定されたコネクション・リストを変更できるかどうかに関する情報

memberUserIds

指定された各コネクション・リストのメンバーのユーザーID

40.1.2.2 groupedPeopleCounts

各コネクション・グループに含まれているコネクションの数。

40.1.2.3 receivedInvitations

招待がいつ送信され、いつ受信されたか、招待のGUID、招待メッセージ、招待を送信したユーザーおよび受信したユーザーのユーザーIDなど、受信したコネクションの招待に関する詳細のコレクション。表40-2では、このメソッドと関連付けられている属性をリストし、説明しています。

表40-2 メソッドreceivedInvitationsの属性

属性

説明

dateFormattedAsReceived

受信者のタイムスタンプによる、招待の受信日付

dateFormattedAsSent

送信者のタイム・スタンプに応じて招待が送信された日付。

id

受信した招待のGUID

invitationMessage

招待メッセージ

inviteeUserid

招待を受信したユーザーのユーザーID

invitorUserid

招待を送信したユーザーのユーザーID

sentDate

システムのタイムスタンプによる、招待の送信日付

40.1.2.4 sentInvitations

招待がいつ送信され、いつ受信されたか、招待のGUID、招待メッセージ、招待を送信したユーザーおよび受信したユーザーのユーザーIDなど、送信したコネクションの招待に関する詳細のコレクション。表40-3では、このメソッドと関連付けられている属性をリストし、説明しています。

表40-3 メソッドsentInvitationsの属性

属性

説明

dateFormattedAsReceived

受信者のタイムスタンプによる、招待の受信日付

dateFormattedAsSent

送信者のタイム・スタンプに応じて招待が送信された日付。

id

受信した招待の一意のGUID

invitationMessage

招待メッセージ

inviteeUserid

招待を受信したユーザーのユーザーID

invitorUserid

招待を送信したユーザーのユーザーID

sentDate

システムのタイムスタンプによる、招待の送信日付

40.1.2.5 acceptInvitation(String invitationId)

コネクションの招待を受け入れるためのメソッド。表40-4では、このメソッドと関連付けられているパラメータをリストし、説明しています。

表40-4 メソッドacceptInvitationsのパラメータ

パラメータ

説明

invitationId

受け入れるコネクションの招待のGUID

40.1.2.6 addConnectionsToList(List userids, String listName)

指定されたユーザーを、指定されたコネクション・リストに追加するためのメソッド。表40-5では、このメソッドと関連付けられているパラメータをリストし、説明しています。

表40-5 メソッドaddConnectionsToListのパラメータ

パラメータ

説明

userids

指定されているコネクション・リストに追加するユーザーのユーザー名

listName

指定したユーザーを追加するコネクション・リストの名前

40.1.2.7 createConnectionList(String listName)

コネクション・リストを作成するためのメソッド。表40-6では、このメソッドと関連付けられているパラメータをリストし、説明しています。

表40-6 メソッドcreateConnectionListのパラメータ

パラメータ

説明

listName

新しいコネクション・リストに付ける名前

40.1.2.8 declineInvitation(String invitationId)

コネクションの招待を拒否するためのメソッド。表40-7では、このメソッドと関連付けられているパラメータをリストし、説明しています。

表40-7 メソッドdeclineInvitationのパラメータ

パラメータ

説明

invitationId

拒否する招待の一意のGUID

40.1.2.9 dropConnectionList(String listName)

コネクション・リストを削除するためのメソッド。表40-8では、このメソッドと関連付けられているパラメータをリストし、説明しています。

表40-8 メソッドdropConnectionListのパラメータ

パラメータ

説明

listName

削除するコネクション・リストの名前

40.1.2.10 getConnectionList(String connectionListName)

コネクション・リストを表すオブジェクトを返します。このオブジェクトは、指定したコネクション・リスト名に対して取得されたコネクション・リストに関する詳細を提供します。表40-9では、このメソッドと関連付けられているパラメータをリストし、説明しています。表40-10では、このメソッドと関連付けられている属性をリストし、説明しています。

表40-9 メソッドgetConnectionListのパラメータ

パラメータ

説明

connectionListName

次の属性を返すコネクション・リストの名前(表40-10を参照)

- id

- listName

- localizedName

- memberCount

- modifiable

- memberUserIds

表40-10 メソッドgetConnectionListの属性

属性

説明

id

返すコネクション・リストの一意のGUID

listName

返すコネクション・リストの名前

localizedName

返すコネクション・リストのローカライズされた名前

memberCount

返すコネクション・リストのメンバーの数

modifiable

返されたコネクション・リストを変更できるかどうかのインジケータ

memberUserIds

返されたコネクション・リストのメンバーのユーザーID

40.1.2.11 getConnections(String userid, String connectionListName, String filterPattern, String sortBy, int startIndex, int fetchSize)

コネクションのユーザーID、コネクションがメンバーとなっているコネクション・リスト、コネクションのプロファイルからの詳細を含めコネクションに関する詳細を提供するコネクション・オブジェクトを返します。表40-11では、このメソッドと関連付けられているパラメータをリストし、説明しています。表40-12では、このメソッドと関連付けられている属性をリストし、説明しています。

表40-11 メソッドgetConnectionsのパラメータ

パラメータ

説明

userid

返された各コネクションのユーザーID

connectionListName

コネクションの取得元のコネクション・リストの名前

filterPattern

condoleezzaやnicoleを返すcoなど、返されるコネクションに対して使用するフィルタ

sortBy

コネクションのソートに使用する順序

日時の降順でコネクションをソートするには、LAST_ACTIVITY_TIMEを入力します。名前のアルファベット順にソートするには、空白のままにします。

startIndex

結果のフェッチの開始点

これはページ区切りに使用されます。たとえば、検索では50件の一致レコードを返すことができるが、1から10件までしか必要ない場合があります。その場合は、startIndexを1に、fetchSizeを10に設定します。

fetchSize

返す結果の数(startIndexを参照)

表40-12 メソッドgetConnectionsの属性

属性

説明

connecteeUserId

コネクションのユーザーID

connectionListsMembershipList

コネクションがメンバーになっているコネクション・リストの名前

connecteeUserProfile

コネクションのプロファイル詳細

40.1.2.12 getNumberOfConnections(String userid, String connectionListName, String filterPattern)

指定したユーザーにコネクションを持っているユーザーの数(int)を返します。表40-13では、このメソッドと関連付けられているパラメータをリストし、説明しています。表40-14では、このメソッドと関連付けられている属性をリストし、説明しています。

表40-13 メソッドgetNumberOfConnectionsのパラメータ

パラメータ

説明

userid

コネクションの数を返すユーザーのユーザーID

connectionListName

カウントの取得元のコネクション・リストの名前

filterPattern

condoleezzaやnicoleを返すcoなど、返されるコネクションに対して使用するフィルタ

表40-14 メソッドgetNumberOfConnectionsの属性

属性

説明

Int

返すコネクションの数

40.1.2.13 ignoreInvitation(String invitationId)

指定したIDの招待を無視することを指定します。表40-15では、このメソッドと関連付けられているパラメータをリストし、説明しています。

表40-15 メソッドignoreInvitationのパラメータ

パラメータ

説明

invitationId

無視するコネクションの招待のGUID

40.1.2.14 inviteUserForConnection(String userid, String invitationMessage, Collection connectionListNames)

指定したユーザーIDを持つユーザーにコネクションの招待を送信する手段。「私のコネクションになっていただけますか」などの招待メッセージを含みます。招待が受け入れられたときに、招待を受ける人が追加される1つ以上のコネクション・リスト名も含みます。表40-16では、このメソッドと関連付けられているパラメータをリストし、説明しています。

表40-16 メソッドinviteUserForConnectionのパラメータ

パラメータ

説明

userid

招待を受ける人のユーザーID

invitationMessage

「コネクションを結びましょう」などのコネクション・メッセージ

connectionListNames

招待が受け入れられたときに、招待を受ける人が追加されるコネクション・リストの名前

40.1.2.15 isConnectionListModifiable(String listName)

指定したコネクション・リストを変更できるかどうかに関してtrueまたはfalse (boolean)を返します。表40-17では、このメソッドと関連付けられているパラメータをリストし、説明しています。表40-18では、このメソッドと関連付けられている属性をリストし、説明しています。

表40-17 メソッドisConnectionListModifiableのパラメータ

パラメータ

説明

listName

変更できるかどうかを決定するコネクション・リストの名前

表40-18 メソッドisConnecitonListModifiableの属性

属性

説明

boolean

指定したコネクション・リストを変更できるかどうかに応じて、Trueまたはfalse

40.1.2.16 isConnectionPartOfUnmodifiableList(String connecteeGuid)

指定したユーザーが、変更できないコネクション・リストのメンバーであるかどうかに関してtrueまたはfalse (boolean)を返します。表40-19では、このメソッドと関連付けられているパラメータをリストし、説明しています。表40-20では、このメソッドと関連付けられている属性をリストし、説明しています。

表40-19 メソッドisConnectionPartOfUnmodifiableListのパラメータ

パラメータ

説明

connecteeGuid

このコネクションが、変更できないコネクション・リストのメンバーであるかどうかを決定するコネクションのGUID

表40-20 メソッドisConnecitonPartOfUnmodifiableLIstの属性

属性

説明

boolean

ユーザーが、変更できないコネクション・リストのメンバーであるかどうかに応じてtrueまたはfalseを返します。

40.1.2.17 removeConnection(String userid, boolean fromListOnly, String listName)

コネクションとしてまたはコネクション・リストから指定したコネクションを削除するためのメソッド。表40-21では、このメソッドと関連付けられているパラメータをリストし、説明しています。

表40-21 メソッドremoveConnectionのパラメータ

パラメータ

説明

userid

指定したリストから削除するコネクションのユーザー名

fromListsOnly

ユーザーをコネクションとして削除するか、指定したコネクション・リストからのみ削除するのかを示すフラグ(trueまたはfalse)

listName

指定したユーザーを削除するコネクション・リストの名前

40.1.2.18 searchUsers(String filterPattern, int startIndex, int fetchSize)

ユーザーのリレーショナル属性、GUID、プロファイル詳細など、返されるユーザーに関する詳細のコレクションであるオブジェクトUsersを返します。表40-22では、このメソッドと関連付けられているパラメータをリストし、説明しています。表40-23では、このメソッドと関連付けられている属性をリストし、説明しています。

表40-22 メソッドsearchUsersのパラメータ

パラメータ

説明

filterPattern

condoleezzaやnicoleを返すcoなど、返される検索条件に対して使用するフィルタ

startIndex

結果のフェッチの開始点

これはページ区切りに使用されます。たとえば、検索では50件の一致レコードを返すことができるが、1から10件までしか必要ない場合があります。その場合は、startIndexを1に、fetchSizeを10に設定します。

fetchSize

返す結果の数(startIndexを参照)

表40-23 メソッドsearchUsersの属性

属性

説明

relationalAttributes

-

userGuid

ユーザーの一意のGUID

userProfile

ユーザーのプロファイル詳細

40.1.2.19 updateConnectionListsMembership(String member, Collection addListIds, Collection removeListIds)

指定したコネクション・リストにコネクションを追加したり、指定したコネクション・リストからコネクションを削除することによって、指定したコネクションのリストのメンバーシップを更新する手段を提供します。表40-24では、このメソッドと関連付けられているパラメータをリストし、説明しています。

表40-24 updateConnectionListsMembershipメソッドのパラメータ

パラメータ

説明

member

管理するコネクション・リストのメンバーシップを持つメンバーのユーザー名

addListIds

指定したユーザーを追加するコネクション・リストの名前

removeListIds

指定したユーザーを削除するコネクション・リストの名前

40.1.3 プロファイル・データ・コントロールの使用

プロファイル・データ・コントロールは、プロファイル詳細を返したり、更新したりするためのメソッドを提供します。

この項に含まれる各項では、プロファイル・データ・コントロールと関連付けられているメソッドをリストし、説明します。

40.1.3.1 メソッド: getProfile(String userId)

ユーザー・プロファイル詳細のコレクションであるWCUserProfileオブジェクトを返すためのメソッド。表40-25では、このメソッドと関連付けられているパラメータをリストし、説明しています。

表40-25 getProfileメソッドのパラメータ

パラメータ

説明

userID

プロファイル詳細を返すユーザーのID

ヒント:

WCUserProfileオブジェクトと関連付けられた属性を表示するには、アプリケーション・ナビゲータの「データ・コントロール」パネルで「getProfile」メソッドの下の「WCUserProfile」ノードを開きます。

40.1.3.2 メソッド: getProfileForUpdate(String userId)

ユーザー・プロファイル詳細のコレクションであるWCUserProfileオブジェクトを更新するためのメソッド。表40-26では、このメソッドと関連付けられているパラメータをリストし、説明しています。

表40-26 getProfileForUpdateメソッドのパラメータ

パラメータ

説明

userID

プロファイル詳細を更新するユーザーのID

ヒント:

WCUserProfileオブジェクトと関連付けられた属性を表示するには、アプリケーション・ナビゲータの「データ・コントロール」パネルで「getProfileForUpdate」メソッドの下の「WCUserProfile」ノードを開きます。

40.2 ピープル・コネクション・サービスJava API

ピープル・コネクション・サービスには、関連付けられたJava APIがあり、それを使用してサービス機能を操作できます。次のような内容が含まれます。

- oracle.webcenter.peopleconnections.connections

- oracle.webcenter.peopleconnections.wall

- oracle.webcenter.activitystreaming

詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスlを参照してください。

41 ワークリストの統合

この章では、アプリケーションにワークリストを統合する方法について説明します。ワークリストを使用すると、ユーザーはすべてのタスクと通知の表示およびこれに対する処理をBusiness Process Execution Language (BPEL)サーバーから1箇所で行えます。

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

- 第41.1項「ワークリストの概要」

- 第41.2項「ロードマップ - Portal Frameworkアプリケーションに対するワークリストの構成」

- 第41.3項「ワークリストの基本構成」

- 第41.4項「ワークリストの詳細情報」

ワークリストの管理および使用の詳細は、次を参照してください。

- Oracle Fusion Middleware Oracle WebCenter Portalの管理の「ワークリストの管理」

- Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「ポータルへのワークリストの追加」

- 『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「ワークリストの参照」

41.1 ワークリストの概要

ワークリストでは、現在の認証ユーザーに割り当てられているBusiness Process Execution Language (BPEL)ワークリスト項目を表示できます。BPELワークリスト項目は、アプリケーションが接続されている1つ以上のBPELワークリスト・リポジトリから開かれているBPELタスクです。ワークリストには、BPELワークフロー・プロセスの一部として起動されたタスクの結果、またはOracle User Messaging Serviceでワークリスト・チャネルへ送信されたメッセージの結果であるBPELワークリスト項目が表示されます。

この項には次のサブセクションが含まれます:

- 第41.1.1項「ワークリストの理解」

- 第41.1.2項「ワークリストの要件」

- 第41.1.3項「実行時の処理」

41.1.1 ワークリストの理解

ワークリストは、ユーザーが注目する必要があるビジネス・プロセスを、個人用のビューにまとめて表示します。これには、ドキュメント・レビューのリクエストや、エンタープライズ・アプリケーションから直接発生するその他の種類のビジネス・プロセスが含まれます。

ワークリスト項目は、様々なソースに基づきます。外部で定義されたワークフローに関連付けられたイベントによって発生するワークリスト項目もあります。ワークフローでは、イベントが発生したときに項目が従うルートをマップしています。この種類のワークフローは、Oracle BPMワークリストなど、ワークリストBPELサーバーで定義されます。

メッセージ、アラートおよび通知も、User Messaging Service (UMS)に基づく場合があります。ワークリスト・タスク・フローには、このサーバー上のメッセージング・プリファレンスにアクセスするためのコントロールが含まれます。Oracle User Messaging Serviceメッセージを受信するチャネルの指定およびメッセージ・フィルタの定義では、これらのコントロールを使用します。

41.1.2 ワークリストの要件

ワークリストを使用するには、BPELサーバーがインストールされている必要があります。ワークリスト用のBPELのインストールの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド』のワークリストのバックエンド要件に関する項を参照してください。

ワークリストは現在の認証ユーザーを使用してBPELサーバーにアクセスするため、ワークリストが正しく動作するためには、保護されたページにあることが必要です。ワークリストが含まれるページまたはアプリケーションが保護されていない場合、例外エラーが発生します。

41.1.3 実行時の処理

実行時に、ワークリスト・タスク・フローは、BPELサーバーで構成されているBPELワークフローから、最新のワークリスト・ワークフロー項目をフェッチします。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「ワークリストの参照」を参照してください。

ユーザーに割り当てられている項目のリストを取得するために、ワークリストでは、パブリックBPMクライアントAPIのWebServiceアクセス関数を使用します。ワークリストは、SAML認証を使用してログイン・ユーザーを認可し、BPELリポジトリから最新の項目のリストをフェッチします。ワークリストはワークリスト接続ごとに最新の25項目をフェッチし、TaskQueryService APIの述部を使用して、これらの項目の順序を決定します。詳細は、Oracle Fusion Middleware Oracle SOA Suite開発者ガイドのカスタム・ワークリスト・クライアントの作成に関する項を参照してください。

図41-1は、実行時のワークリストを示しています。

図41-1 実行時のワークリスト

41.2 ロードマップ - Portal Frameworkアプリケーションに対するワークリストの構成

この項の図41-2および表41-1は、Portal Frameworkアプリケーションでワークリストを動作させるための前提条件と必要なタスクの概要を示しています。

図41-2 Portal Frameworkアプリケーションに対するワークリストの構成

表41-1 Portal Frameworkアプリケーションに対するワークリストの構成

アクター

タスク

サブタスク

管理者

1. Oracle WebCenter PortalおよびOracle SOA Suiteをインストールします

開発者

2. Portal Frameworkアプリケーションにワークリストを統合します

2.a ワークリスト接続を作成します

2.b JDeveloperでページにワークリスト・タスク・フローを追加します

開発者/管理者

3. 次のいずれかのツールを使用してアプリケーションをデプロイします:

- JDeveloper (開発者)

- Fusion Middleware Control (管理者)

- WLST (管理者)

- WLS管理コンソール(管理者)

管理者

4. Oracle BPMワークリスト・アプリケーションを使用して追加のBPELワークフローをデプロイします(『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』のSOAコンポジット・アプリケーションのデプロイと管理に関する項を参照してください)

管理者

5. (オプション): アプリケーションと同じアイデンティティ・ストアを使用するようにBPELサーバーを構成します

管理者

6. (オプション): BPELサーバーへの接続を保護します

6.a シングル・サインオンを構成します

6.b WS-Securityを構成します

6.c SSLを構成します

開発者/管理者

7. (オプション): 次のいずれかのツールを使用して接続パラメータを追加/変更します

- JDeveloper、アプリケーションの再デプロイ(開発者)

- Fusion Middleware Control (管理者)

- WLST (管理者)

エンド・ユーザー

8. ワークリスト機能の動作をテストします

8.a Portal Frameworkアプリケーションにログインします

8.b ワークリスト・イベントを生成します

8.c タスク・フローにイベント情報が表示されることを確認します

41.3 ワークリストの基本構成

この項では、ワークリストの接続を設定する方法と、Portal Frameworkアプリケーションにタスク・フローを追加する方法について説明します。

この項には次のサブセクションが含まれます:

- 第41.3.1項「ワークリストの接続の設定」

- 第41.3.2項「ワークリスト機能の設計時の追加」

- 第41.3.3項「ワークリストのセキュリティの設定」

41.3.1 ワークリストの接続の設定

ワークリストを使用するには、1つ以上のBPELサーバーへの接続を確立する必要があります。この項では、これらの接続について説明し、Portal Frameworkアプリケーションでこれらを作成する方法について説明します。

41.3.1.1 ワークリストの接続

ワークリストではBPELサーバーを利用します。「ワークリスト接続の作成」ダイアログを使用して接続を作成すると、その接続はアプリケーションのconnections.xmlに登録され、アプリケーションのadf-config.xmlで参照されます。BPELワークリスト・リポジトリへの接続は、「アプリケーション・リソース」ペインに表示されます。

注意:

Oracle JDeveloperで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でFusion Middleware Controlを使用して、後から接続を追加、削除または変更できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理を参照してください。

41.3.1.2 ワークリストの接続を設定する方法

設計時または実行時に、ワークリスト・タスク・フローをアプリケーションに追加できます。タスク・フローを実行する前に、アプリケーションからBPELサーバーへの接続を作成する必要があります。

関連項目:

第4章「WebCenter Portalのツールとサービス用アプリケーションの準備」

ワークリスト用の接続を設定するには:

1. アプリケーションの「アプリケーション・リソース」パネルで、「接続」を右クリックし、「接続の作成」→「ワークリスト」を選択します。

2. 「ワークリスト接続の作成」ダイアログで、接続の作成をアプリケーション・リソースで行うのか(現在のアプリケーションのみがこの接続を使用できます)、IDE接続で行うのか(作成する他のアプリケーションが同じ接続を使用できます)を選択します。

3. 「接続名」フィールドに、接続の名前を入力します。この名前は、ワークリスト・サーバーの表示名として使用されます。

注意:

実行時にユーザーがワークリスト項目を表示する場合、項目をワークリスト・サーバーでグループ化できます。使用されるワークリスト・サーバーは、「接続名」フィールドに入力する名前です。

4. 「URL」フィールドに、http://bpel.example.comなど、BPEL/SOAサーバーの場所を入力します。これは、SOAプロセスが実行されている管理対象サーバーのURLです。

5. このサーバーで使用する「SAMLトークン・ポリシーURI」を選択します(図41-3)。
SAML (Security Assertion Markup Language)は、認証権限および認可権限を定義するセキュリティ・トークンを渡すためのXMLベース標準です。(レシーバとの信頼関係をすでに持っている)証明エンティティは、送信者保証と呼ばれる方式によってサブジェクトの検証を保証します。次のオプションが使用できます。

- SAMLトークン・クライアント・ポリシー(oracle/wss10_saml_token_client_policy) - 追加のセキュリティなしで基本構成を確認するには、これを選択します。これがデフォルトの設定です。

- メッセージ・クライアント・ポリシー付きSAMLトークン(oracle/wss10_saml_token_with_message_protection_client_policy) - SAMLベースのBPEL Webサービスを使用してセキュリティを向上するには、これを選択します。選択した場合は、Portal FrameworkアプリケーションとBPELアプリケーションの両方でキー・ストアを構成する必要があります。この構成の詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のポリシーの構成に関する項を参照してください。

図41-3 「ワークリスト接続の作成」ダイアログ

6. 詳細設定を有効にするには、「詳細設定」を選択します。

- 「リンクURL」フィールドに、BPELサーバーへのリンクで使用するURLを指定します。たとえば、SSOまたはHTTPSが構成されていて、BPEL SOAP URLと異なる場合のみ必要です。protocol://host:portの形式を使用します。
たとえば、http://mySSO.host.com:7777のようになります。

このURLは、ワークリスト項目へのSSOまたはHTTPS対応URLリンクの作成で使用されます。ワークリストのURLプロパティは、BPELタスク問合せサービスへのアクセスで使用されますが、パフォーマンス上の理由で、HTTPSまたはSSOサーバーを経由する必要はありません。

- 「受信者キーの別名」フィールドに、SAMLポリシー認証で保護されているメッセージで使用する、受信者キーの別名を入力します。BPELサーバー接続でSAMLトークン・ポリシーが認証に使用されている場合およびアプリケーションで複数のBPELサーバー接続が使用されている場合のみ、これが必要です。受信者キーの別名およびWS-Securityの使用の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WS-Securityの構成」を参照してください。

7. 「接続のテスト」をクリックして、URLを検証します。

8. 「OK」をクリックします。
「アプリケーション・リソース」パネルの「接続」に、新しい接続が表示されます。

41.3.2 ワークリスト機能の設計時の追加

この項では、ワークリスト・タスク・フローについて説明し、これをアプリケーションに追加する方法について説明します。

41.3.2.1 ワークリスト・タスク・フロー

このワークリスト・タスク・フローは、「リソース・パレット」の「WebCenter Portal - サービス・カタログ」にあります。

41.3.2.2 ワークリスト機能をアプリケーションに追加する方法

ワークリスト機能のアプリケーションへの追加は、接続を作成する前または接続を作成した後のどちらでも行えます。ただし、アプリケーションを実行する前に接続を設定する必要があります。

ワークリスト・タスク・フローをアプリケーションに追加するには:

1. 第4.2.1項「ツールとサービスを利用するようにアプリケーションを準備する方法」の手順に従い、セキュリティを実装しカスタマイズ可能なページをアプリケーションで作成します。

2. ワークリスト・タスク・フローを追加するページを開きます。

3. リソース・パレットの「カタログ」ペインで、「WebCenter Portal - サービス・カタログ」を開き、「タスク・フロー」フォルダを開きます。

4. ページ上の目的のリージョンにワークリスト・タスク・フローをドラッグし、ポップアップ・リストから「リージョン」を選択します。タスク・フローがページで表示されます。たとえば、「ソース」ビューに、図41-4が表示されます。

図41-4 ページ・ソースでのワークリスト・タスク・フロー

5. プロジェクトを保存し、ページをブラウザで実行します。ブラウザにワークリストが表示されます。

41.3.3 ワークリストのセキュリティの設定

ワークリストは、現在の認証ユーザーのタスクを表示します。そのため、アプリケーションからワークリスト・タスクをBPELサーバーに保存および取得するユーザーに対して、アプリケーションでセキュリティを設定する必要があります(第4.2.1.1項「ツールとサービスのセキュリティの実装」を参照)。ユーザー名は、共有ユーザー・ディレクトリ(LDAP)に存在するか、Portal FrameworkアプリケーションとBPELサーバーの両方で同様(同じユーザー名)に設定する必要があります。たとえば、ユーザーrsmithが、Portal Frameworkアプリケーション内のワークリストを使用して、タスクをBPELサーバーに格納および取得する必要がある場合は、ユーザーrsmithがBPELサーバーとアプリケーションの両方に存在する必要があります。

割り当てられているワークリスト・タスクでユーザーがアクションを実行できるように、SSOを構成できます。SSOを構成しないと、ユーザーはBPELサーバー上で「ワークリスト・タスクの詳細」ページへのログインを要求されます。詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』を参照してください。

認証ユーザーにのみ、表示権限が与えられているBPELサーバー上のワークリスト・タスクが表示されます。アプリケーション・エンド・ユーザーが適切な資格証明を指定しない場合、またはワークリストが含まれるページが保護されていない場合、BPELサーバーに格納されているワークリスト項目は表示されず、例外エラーが発生する可能性があります。

41.4 ワークリストの詳細情報

ワークリストでは、ワークリストで定義されているアプリケーション内のすべての接続から、認証ユーザーのすべてのワークリスト項目を照合します。第41.3.1.2項「ワークリストの接続を設定する方法」に記載されている接続作成方法を使用して追加の接続を作成したり、「アプリケーション・リソース」リスト内の接続名を右クリックし、「削除」を選択して接続を削除したりできます。

42 ピープル・コネクションREST APIの使用

この章では、ピープル・コネクションに関連するREST APIについて説明します。

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

- 第42.1項「アクティビティ・ストリームREST API」

- 第42.2項「コネクションおよびプロファイルREST API」

- 第42.3項「フィードバックREST API」

- 第42.4項「メッセージ・ボードREST API」

- 第42.5項「招待の作成」

関連項目:

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

42.1 アクティビティ・ストリームREST API

アクティビティ・ストリームREST APIを使用して、アクティビティ・ストリームにおけるユーザーのアプリケーション・アクティビティを参照します。この項では、このアクションを実行するために使用できるREST APIメソッドの情報を提供します。

この項には次のサブセクションが含まれます:

- 第42.1.1項「アクティビティ・ストリーム・エントリ・ポイント」

- 第42.1.2項「アクティビティ・ストリーム・リソース・タイプの分類」

- 第42.1.3項「アクティビティ・ストリームのセキュリティに関する考慮事項」

- 第42.1.4項「アクティビティ・ストリーム・リソース・タイプ」

注意:

REST APIは、多様な方法で構成できるので、ユーザーのアクティビティの一部を返さずに、RESTクライアントでFrameworkアプリケーションとは別にアクティビティ・ストリームがどのように動作するのかをカスタマイズできるようにすることが可能です。

42.1.1 アクティビティ・ストリーム・エントリ・ポイント

各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。ピープル・コネクションでは、各機能に独自のリンク要素があります。たとえば、ピープル・コネクションのアクティビティ・ストリーム機能のエントリ・ポイントを見つけるには、次のresourceTypeを持つリンク要素を見つけます。

urn:oracle:webcenter:activities:stream

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供され、それによってアクティビティ・ストリームから現在のユーザーのアプリケーション・アクティビティが取得されます。クライアントは、このエントリ・ポイントにHTTPリクエストを送信し、ピープル・コネクションのアクティビティ・ストリーム機能を使用します。

関連項目:

リソース索引の詳細は、第53.5.1項「リソース索引の使用」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

42.1.2 アクティビティ・ストリーム・リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第42.1.4項「アクティビティ・ストリーム・リソース・タイプ」の該当の項を参照してください。

ピープル・コネクションのアクティビティ・ストリーム機能のリソース・タイプの分類は、次のとおりです。

urn:oracle:webcenter:activities:stream
urn:oracle:webcenter:activities:activity

42.1.3 アクティビティ・ストリームのセキュリティに関する考慮事項

ピープル・コネクションREST APIのいずれかにアクセスするには、RESTサービスにログインする必要があります。その後、基礎となるサービスにより、権限の確認などが処理されます。

関連項目:

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

42.1.4 アクティビティ・ストリーム・リソース・タイプ

この項では、各リソース・タイプについて知っておく必要があるすべての情報を提供します。次のサブセクションが含まれます:

- 「urn:oracle:webcenter:activities:stream」

- 「urn:oracle:webcenter:activities:activity」

urn:oracle:webcenter:activities:stream

streamレスポンスには、アクティビティ・ストリームからのアクティビティの取得に使用するURIが含まれます。

ユーザーのストリームからアクティビティを取得するか、ユーザーのコネクションのストリームからアクティビティを取得できます。どのアクティビティを取得するのかをより細かく制御するには、アクティビティ・ストリーム問合せフィルタを使用します。問合せフィルタを使用すると、次のことを実行できます。

- 問合せ対象のユーザーを指定します

- ユーザーのコネクションのアクティビティを結果に含めます

- 結果に、ホーム・ポータルなどポータルからのアクティビティを含めます

- 結果を、特定のサービスからのアクティビティに限定します

使用できるオプションは、streamリソースにアクセスするためにたどるパスと、使用するリンクのrelに応じて異なります。たとえば、アクティビティ・ストリーム問合せフィルタは、urn:oracle:webcenter:activities:streamのrel属性を持つリンクからのみ使用できます。personリソースからアクティビティ・ストリーム問合せフィルタにアクセスする場合は、personGuidパラメータが事前に設定されます。

表42-1は、リンクのrel要素に応じて返されるアクティビティを示しています。

表42-1 streamによって返されるアクティビティ

rel

戻り値

urn:oracle:webcenter:activities:stream:person

ユーザーのストリームからのアクティビティ(GUID/@self)脚注 1

urn:oracle:webcenter:activities:stream:connections

ユーザーのコネクションのストリームからのアクティビティ(GUID/@connections)脚注 1

urn:oracle:webcenter:activities:stream

アクティビティ・ストリーム問合せフィルタによって決定されるアクティビティ

urn:oracle:webcenter:activities:stream:space

ポータル・アクティビティ・ストリームからのアクティビティ

urn:oracle:webcenter:activities:stream:list

ポータル・アクティビティ・リストからのアクティビティ

脚注 1 GUIDは、任意の有効なユーザーGUIDまたは@meです。

streamへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceIndex
stream (rel="urn:oracle:webcenter:activities:stream:person" or
"urn:oracle:webcenter:activities:stream")

resourceIndex
person
stream (rel="urn:oracle:webcenter:activities:stream:person" or
"urn:oracle:webcenter:activities:stream:connections" or
"urn:oracle:webcenter:activities:stream")

resourceIndex
person
list
stream

resourceIndex
space
stream

stream
activity
param
stream (rel="urn:oracle:webcenter:activities:stream:space")

personReference
stream

streamでサポートされるメソッド

次のメソッドは、streamでサポートされています。

- GET

- リクエスト-パラメータ:

- startIndex、itemsPerPage

関連項目:

startIndexやitemsPerPageなど、REST APIパラメータについては、「共通のリクエスト問合せパラメータ」を参照してください。

問合せフィルタURIに使用できる追加のパラメータは次のとおりです。

- data: 指定したデータのみを返します(詳細は、「共通のリクエスト問合せパラメータ」を参照してください)。streamリソースの場合、定数'data'をdataパラメータとして指定すると、そのリソースに関する基本情報が、コメントおよびお気に入り登録のサマリーを除いてすべて返されます。コメントまたはお気に入り登録を返す場合は、dataパラメータ値'commentsSummary'または'likesSummary'を指定します。

注意:

複数のデータ値を、カンマ区切りリストとして指定できます。たとえば、data=data, commentsSummaryと指定します。

- personGuid: (必須)指定されたユーザーのストリームからアクティビティを取得します。有効な値: 任意の有効なユーザーGUIDまたは@me。

- serviceIds: 指定されたサービスに対するアクティビティのみを返します。有効な値: アスタリスク(*)では、すべてのサービスが返されます。NULLまたは空にすると、(最上部バーの設定リンクから)サービス・フィルタのユーザー・プリファレンス設定が使用されます。

- personal: 指定されたユーザーのアクティビティをホーム・ポータルに含めます。有効な値: trueまたはfalse。デフォルト値: false。

- connections: 指定されたユーザーのコネクションのストリームからのアクティビティを含めます。有効な値: trueまたはfalse。デフォルト値: false。

- groupSpaces: 指定したユーザーがメンバーとなっているすべてのポータルからのアクティビティを含めます。有効な値: trueまたはfalse。デフォルト値: false。

- connectionListIds: アクティビティを表示するために使用されるコネクション・リストを指定するコネクション・リスト名のカンマ区切りリスト。

- groupSpaceGuids: アクティビティを表示するために使用されるポータルGUIDのカンマ区切りリスト。

- userGroupSpaceActivities: ユーザーのアクティビティをそれぞれのポータルに表示するかどうかを指定します。有効な値: trueまたはfalse。デフォルト値: false。

- followedObjects: 現在のユーザーと指定されたユーザーの両方に追跡されるオブジェクトのすべてのアクティビティを表示するかどうかを指定します。有効な値: trueまたはfalse。デフォルト値: false。

- followedObjectsUserActivities: 現在のユーザーと指定されたユーザーの両方が追跡するオブジェクトの指定されたユーザーのアクティビティを表示するかどうか指定します。有効な値: trueまたはfalse。デフォルト値: false。

- advancedQuery: ストリーム・アクティビティに対するフィルタを指定します。ユーザー名、サービスIDおよびドキュメントの表示名などのオブジェクトの詳細のフィルタを作成します。

注意:

advancedQueryパラメータに実際の値をプラグする必要があります。EL式を直接パラメータに渡すことはできません。通常、REST APIクライアントはEL変換を手動で処理し、実際のオブジェクト・データ値をREST URLに挿入します。次に示す例、および第39.4項「アクティビティ・ストリームの詳細な問合せパラメータの設定」も参照してください。

たとえば、次のURIでは、現在のユーザーのアクティビティ・ストリームから、そのユーザーがサービス・フィルタに対する個人プリファレンス設定で構成したサービスすべてに対して、アクティビティが返されます。これによって、ユーザーのホーム・ポータルから、およびユーザーのコネクションのストリームからアクティビティが返されます。

http://host:port/rest/api/activities?personal=true&connections=true&personGuid=@me&token=utoken

次のURIでは、ユーザーの個人プロファイルおよびコネクションのアクティビティのみが返されます。

http://host:port/rest/api/activities?serviceIds=oracle.webcenter.peopleconn
ections.profile,oracle.webcenter.peopleconnections.connections&personal=
true&personGuid=@me&token=utoken

この次の例では、advancedQueryパラメータの使用方法を示します。前述のとおり、EL式をadvancedQueryに渡すことはできません。REST APIクライアントは、最初に実際のデータ・オブジェクト値を取得する必要があり、そして、その値をadvancedQueryに渡すことができます。たとえば、特定のポータルのアクティビティをフィルタ処理するには、そのポータルの範囲のGUIDをadvancedQueryに渡します。

http://host:port/rest/api/activities?personGuid=@me&advancedQuery=AE.SCOPE_ID%20%3D%20\%27s8bba98ff_4cbb_40b8_beee_296c916a23ed\%27&ttoken=token

ここでs8bba98ff_4cbb_40b8_beee_296c916a23edはそのポータルのGUIDです。問合せ文字列は、適切なエスケープ・コードでエンコードする必要があります。advancedQueryの値を取得するために使用できるEL式のリストは、第39.4項「アクティビティ・ストリームの詳細な問合せパラメータの設定」を参照してください。

- レスポンス-本体: 0個以上のアクティビティ

注意:

streamリソースにはアクティビティ・アイテムが含まれているため、そのレスポンスでは、そのアクティビティで参照されているオブジェクトのリソース・リンクも返されることがあります。

streamからリンクされるリソース・タイプ

表42-2は、クライアントがstreamリソースからリンクできるリソース・タイプを示しています。

表42-2 streamに関連するリソース・タイプ

rel

リソース・タイプ

self urn:oracle:webcenter:activities:stream:person

urn:oracle:webcenter:activities:stream

urn:oracle:webcenter:activities:activity

urn:oracle:webcenter:activities:activity

activityレスポンスには、アクティビティに関するデータと、アクティビティ・ストリームに含まれているアクティビティから必要とするデータをすべて取得する際に使用するURIが含まれます。

activityへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してactivityリソースにアクセスする方法を示します。

resourceIndex
stream
activity

resourceIndex
person
stream
activity

resourceIndex
space
stream
activity

activityでサポートされるメソッド

activityでサポートされているメソッドはありません。アクティビティは、現在、streamリソース・タイプからのみ使用できます。

activityからリンクされるリソース・タイプ

表42-3は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表42-3 urn:oracle:webcenter:activities:activityに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:activities:activity

icon

urn:oracle:webcenter:activities:activity:icon

activityの読取り専用要素

表42-4は、activityリソースの読取り専用要素を示しています。

関連項目:

projectionの詳細は、「共通のリクエスト問合せパラメータ」を参照してください。

注意:

アイコンが使用可能である場合は、activityによって、レスポンスのリンク・セクションのアクティビティ・アイコンへのリンクが返されます。「urn:oracle:webcenter:activities:activity:icon」を参照してください。

表42-4 activityの読取り専用要素

要素

タイプ

説明

activityType

String

アクティビティ・タイプ

サービス内で一意です。たとえば、ディスカッションはactivityType createForumを返すことができます。

commentsCount

String

dataパラメータにcommentsSummaryを指定した場合、commentsCountパラメータが返されます。

createdDate

Date (String)脚注 1

アクティビティが作成された日付。

description

String

アクティビティの説明。

detail

String

アクティビティの詳細情報(使用可能な場合)。

たとえば、これによって、メッセージのコンテンツ、ドキュメントのファイル名、お気に入り登録が返されます。

detailURLに類似しています。両方またはいずれかを使用することも、どちらも使用しないことも可能です。detailURLは、ポータルでWikiおよびブログを作成する際に使用可能です。

detailURL

String

detailURLは、ポータルでWikiおよびブログを作成する際に使用可能です。WebベースのWebCenter Portalでは、このURLをクリックし、ポータルでWikiまたはブログのページを開くことができます。

detailに類似しています。両方またはいずれかを使用することも、どちらも使用しないことも可能です。

displayDescription

String

事前に書式設定された国際化された説明。

displayMessage

String

事前に書式設定された国際化されたメッセージ(テンプレート情報は含まれません)。

groupSpace

groupSpaceReference

アクティビティが実行されたポータルに関する情報

注意: この参照は、ポータル内で発生しなかったアクティビティ(たとえば、ホーム・ポータルで発生したアクティビティ)では存在しません。また、ポータルの作成はホーム・ポータルで発生するため、そのアクティビティにもこの要素はありません。

id

String

メッセージの一意のID

isSummary

trueまたはfalse

このアクティビティが他のアクティビティのサマリーであるのかどうかを示します。

likesCount

String

dataパラメータにlikesSummaryを指定した場合、likesCountパラメータが返されます。

message

String

このアクティビティのローカライズ済文字列

これは、中カッコ({})内に置換文字列が含まれている場合があります。

permission

PRIVATE

SHARED

PUBLIC

このアクティビティの権限レベル

scope

String

アクティビティの範囲

これは、ホーム・ポータルなどのポータルを返すことがあります。

たとえば、ポータルの場合は、次のような文字列が返されます。

s8bba98ff_4cbb_40b8_beee_296c916a23ed

serviceId

String

アクティビティを作成したサービスの一意のID

注意: WebCenter PortalのツールとサービスのIDのリストは、表F-7「サービスとツールのID」を参照してください。

sharedLink_url

String

次の例で示すように、RESTクライアントによるナビゲーション・リンクをレンダリングするために使用できます。

<param resourceType="urn:oracle:webcenter:activities:parameter">
<links>
<link href="http://www.google.com" />
</links>
<displayName>http://www.google.com</displayName>
<key>_sharedLink_url</key>
<type>custom</type>
</param> "

このパラメータはメッセージ・テンプレートで使用できないことに注意してください(例: {actor[0]}によってポータル{object[0]}はすでに作成されています)。

templateParams

urn:oracle:webcenter:activities:parameter

アクティビティに関連するデータを取得するparam要素のリスト。各templateParam <param>要素で提供されるキーによって、1つ以上のデータ・アイテムをパラメータ化したアクティビティ・メッセージにプラグインできます。「templateParams要素の理解」を参照してください。

custom

Param

カスタム・パラメータには、displayName、keyおよびtypeがあり、URLを持つ場合と持たない場合があります。

脚注 1 DATEやBOOLEANなどのデータ型は、STRINGとしてAPIに格納されます。DATEデータ型は、Java標準の日付書式、たとえば、2009-08-21T14:43:11.0013-0700を返します。ここで、0700はタイム・ゾーンを表します。

templateParams要素の理解

Carlという名前のユーザーの最新のメッセージを表示するとします。「CarlはポータルCustomer Feedbackを作成した」のような情報を表示したいと考えています。templateParams要素が、この問題の解決に役立ちます。

templateParams要素は、タイプoracle:webcenter:activities:activityのオブジェクトで返されます。この要素は、アクティビティに関連する大量のデータを取得します。たとえば、ユーザーが新しいポータルを作成する場合、そのアクティビティのtemplateParams要素が、ユーザーに関する情報およびポータルに関する情報を取得します。そのアクティビティに関連するパラメータ化されたメッセージ文字列内での文字列の置換の実行を可能にするキーが提供されています。

たとえば、ユーザーがポータルを作成する場合、返されるアクティビティ・オブジェクトには、次のようにパラメータ化されている<message>アイテムが含まれています。

<message>{actor[0]} has created the portal {object[0]}</message>

そのアクティビティのtemplateParams要素を解析することで、文字列の置換の実行を可能にする使用可能なキーおよび、ユーザー名やアクティビティなど、表示に適したデータを見つけることができます。

アクティビティに関する情報を表示するためのtemplateParamsを使用したUIのコーディング方法の詳細な例は、第53.13.2項「アクティビティ・ストリーム・データの表示」を参照してください。

templateParams要素は、comments、likes、commentsSummaryおよびlikesSummaryオブジェクトへのリンクも提供します(それらがdataパラメータを使用してリクエストされている場合)。これらのリンクによって、オブジェクトに関するすべてのコメントまたはお気に入り登録などを問い合せたり、新しいコメントまたはお気に入り登録を投稿できます。サマリー・リンクによって、コメントまたはお気に入り登録カウントおよびいくつかの最近のコメントまたはお気に入り登録が返されます。「コメントとお気に入り登録の理解」も参照してください。

templateParams要素で返されるリンクは、ユーザー、ドキュメント、ポータル、カスタム・オブジェクトなど、どのような種類のオブジェクトが返されるのかによって異なります。詳細は、「urn:oracle:webcenter:activities:parameter」を参照してください。

注意:

templateParams要素には、場合によっては、メッセージ内で直接参照されない要素が含まれることがあります。

relリンクがviaとマークされている場合、それは基盤となるRESTオブジェクト(たとえば、パラメータではなくドキュメント)へのリンクです。relリンクがalternateおよびタイプtext/htmlとマークされている場合、それはそのオブジェクトのHTMLページへのリンクです。ポータル・オブジェクトには、ポータルのためのアクティビティ・ストリーム・リンクが含まれています。ユーザーには、アイコンおよびアクティビティ・ストリーム・リンクがあります。他のオブジェクトには、タグ付けしたアイテムおよび関連するタグ付けしたアイテムのリストへのaltリンクを含めることができます(そのオブジェクトに対してタグ付けが有効化されている場合)。標準オブジェクトで、コメントまたはお気に入り登録がサポートされている場合、前述のとおり、それには、comments/commentsSummaryおよびlikes/likesSummaryを含めることができます。

コメントとお気に入り登録の理解

comments、commentsSummary、likesおよびlikesSummaryへのハイパーリンクがデフォルトで含まれます(data=data,commentsSummary,likesSummaryを指定してcommentsSummaryおよびlikesSummaryを開くことができます)。コメントおよびお気に入り登録は、アクティビティによって参照されるオブジェクトまたはアクティビティ自体と関連付けることができます。たとえば、ドキュメントを編集する場合、そのコメントはそのドキュメントと関連付けられます。アクティビティ・ストリーム・ページのドキュメント編集アクティビティにコメントを追加する場合、そのコメントは、そのドキュメント編集アクティビティと関連付けられます。

コメントおよびお気に入り登録と関連付けられているリンクは、次のとおりです。

- comments: commentsリンクにより、1つのオブジェクトに対するすべてのコメントを問い合せることができます。このリンクで新しいコメントをPOSTすることもできます。comments POSTの場合、textフィールドが必要です。たとえば、本体データには次のように使用します。
JSON:

{
"text" : "REST Comment"
}

XML:

<text>REST Comment</text>

- commentsSummary: commentsSummaryリンクによって、コメント・カウントおよびいくつかの最近のコメントが返されます。

- likes - likesリンクによって、1つのオブジェクトのすべてのお気に入り登録を問い合せることができます。このリンクで新しいお気に入り登録をPOSTすることもできます。likes POSTに必要なフィールドはありません。

- likesSummary: likesSummaryリンクによって、お気に入り登録カウントおよび現在のユーザーのお気に入り(使用可能な場合)が返されます。

注意:

Likeオブジェクト自体では、DELETEのみがサポートされ、GETはサポートされません。likesCountおよびcommentsCountアイテムによって、現在のオブジェクトのお気に入り登録またはコメントの数が返されます。

次のURLは、ドキュメント・オブジェクトのcomments、commentSummary、likesおよびlikesSummaryに対するGETリクエストの例を示しています。

"http://example.com:8892/rest/api/activities/services/oracle.webcenter.doclib/objectTypes/document/objects/(<document_object_id>)/comments?startIndex=0&amp;itemsPerPage=10&amp;utoken=FCvY3qQSBh0eAByLdxugV-lUgFO3_w**"

"http://example.com:8892/rest/api/activities/services/oracle.webcenter.doclib/objectTypes/document/objects/(<document_object_id>)/commentsSummary?utoken=FCvY3qQSBh0eAByLdxugV-lUgFO3_w**"

"http://example.com:8892/rest/api/activities/services/oracle.webcenter.doclib/objectTypes/document/objects/(<document_object_id>)/likes?startIndex=0&amp;itemsPerPage=10&amp;utoken=FCvY3qQSBh0eAByLdxugV-lUgFO3_w**"

"http://example.com:8892/rest/api/activities/services/oracle.webcenter.doclib/objectTypes/document/objects/(<document_object_id>)/likesSummary?utoken=FCvY3qQSBh0eAByLdxugV-lUgFO3_w**"

ここで<document_object_id>はドキュメント・オブジェクトIDです。

次のURLは、ドキュメント作成アクティビティのcomments、commentSummary、likesおよびlikesSummaryに対するGETリクエストの例を示しています。

"http://example.com:8892/rest/api/activities/ffa9a9f0-d02f-4e30-8c58-8a41b7a6e8a3/comments?startIndex=0&amp;itemsPerPage=10&amp;utoken=FCvY3qQSBh0eAByLdxugV-lUgFO3_w**"

"http://example.com:8892/rest/api/activities/ffa9a9f0-d02f-4e30-8c58-8a41b7a6e8a3/commentsSummary?utoken=FCvY3qQSBh0eAByLdxugV-lUgFO3_w**"

"http://example.com:8892/rest/api/activities/ffa9a9f0-d02f-4e30-8c58-8a41b7a6e8a3/likes?startIndex=0&amp;itemsPerPage=10&amp;utoken=FCvY3qQSBh0eAByLdxugV-lUgFO3_w**"
"http://example.com:8892/rest/api/activities/ffa9a9f0-d02f-4e30-8c58-8a41b7a6e8a3/likesSummary?utoken=FCvY3qQSBh0eAByLdxugV-lUgFO3_w**"

urn:oracle:webcenter:activities:parameter

templateParams要素によって、一連のparam要素が返されます。param要素によって、返されるアクティビティ・オブジェクトのタイプに固有のデータが返されます。param要素の使用可能なタイプには、次のものがあります。

- user: displayName、guid、id、key、primaryIdおよびtypeを返します。

- document: displayName、iconUrl、id、key、primaryIdおよびtypeを返します。

- custom: displayName、keyおよびtypeを返し、URLを持つ場合と持たない場合があります。

paramは、変数の参照または一般的な形式{prefix[index].variable}のキーである場合もあります。

urn:oracle:webcenter:activities:activity:icon

このリソース・タイプを使用して、アクティビティのアイコンを取得します(使用可能な場合) (GET)。

activities:activity:iconへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
activities
activity
icon

iconでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET: 指定したアクティビティに使用されるアイコンを返します。

iconからリンクされるリソース・タイプ

表42-5は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表42-5 urn:oracle:webcenter:activities:activity:iconに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:activities:activity:icon

urn:oracle:webcenter:parent

urn:oracle:webcenter:activities:activity

42.2 コネクションおよびプロファイルREST API

コネクションおよびプロファイルREST APIを使用して、プロファイルまたはコネクション・リストの参照、コネクション・リストの管理、コネクションの追加または削除、コネクションの招待の送信およびプロファイル・ステータス・メッセージの更新を行います。この項では、これらのアクションを実行するために使用するREST APIメソッドの情報を提供します。

この項には次のサブセクションが含まれます:

- 第42.2.1項「コネクションおよびプロファイル・エントリ・ポイント」

- 第42.2.2項「コネクションおよびプロファイル・リソース・タイプの分類」

- 第42.2.3項「コネクションおよびプロファイルのセキュリティに関する考慮事項」

- 第42.2.4項「コネクションおよびプロファイル・リソース・タイプ」

42.2.1 コネクションおよびプロファイル・エントリ・ポイント

各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。ピープル・コネクションでは、各機能に独自のリンク要素があります。たとえば、ピープル・コネクションのコネクションとプロファイル機能のエントリ・ポイントを見つけるには、次のresourceTypeを持つリンク要素を見つけます。

urn:oracle:webcenter:people (現在のユーザーのプロファイルを返します)

urn:oracle:webcenter:people:person (ユーザーに対する問合せを可能にします)

urn:oracle:webcenter:people:invitations (現在のユーザーによって送信または受信された招待を返します)

注意:

people:personおよびpeople:invitationsリソース・タイプには、templateはありますが、hrefはありません。

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供され、それによって人々のリスト(people)または個々のユーザー(people:person)が返されます。クライアントは、このエントリ・ポイントにHTTPリクエストを送信し、ピープル・コネクションのコネクションとプロファイル機能を使用します。

関連項目:

リソース索引の詳細は、第53.5.1項「リソース索引の使用」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

42.2.2 コネクションおよびプロファイル・リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第42.2.4項「コネクションおよびプロファイル・リソース・タイプ」の該当の項を参照してください。

ピープル・コネクションのコネクションおよびプロファイル機能のリソース・タイプの分類は、次のとおりです。

urn:oracle:webcenter:people
urn:oracle:webcenter:people:person
urn:oracle:webcenter:people:icon
urn:oracle:webcenter:people:person:list
urn:oracle:webcenter:people:person:listNames
urn:oracle:webcenter:people:person:listName
urn:oracle:webcenter:people:person:list:member
urn:oracle:webcenter:people:person:status
urn:oracle:webcenter:people:invitations
urn:oracle:webcenter:people:invitation

42.2.3 コネクションおよびプロファイルのセキュリティに関する考慮事項

ピープル・コネクションREST APIのいずれかにアクセスするには、RESTサービスにログインする必要があります。その後、基礎となるサービスにより、権限の確認などが処理されます。

関連項目:

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

42.2.4 コネクションおよびプロファイル・リソース・タイプ

この項では、各リソース・タイプについて知っておく必要があるすべての情報を提供します。次のサブセクションが含まれます:

- 「urn:oracle:webcenter:people」

- 「urn:oracle:webcenter:people:person」

- 「urn:oracle:webcenter:people:person:list」

- 「urn:oracle:webcenter:people:person:listNames」

- 「urn:oracle:webcenter:people:person:listName」

- 「urn:oracle:webcenter:people:person:list:member」

- 「urn:oracle:webcenter:people:person:status」

- 「urn:oracle:webcenter:people:invitations」

- 「urn:oracle:webcenter:people:invitation」

urn:oracle:webcenter:people

peopleレスポンスには、1人以上のユーザーのプロファイルの取得に使用するURIが含まれます。

peopleへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してpeopleリソースにアクセスする方法を示します。

resourceIndex
people

peopleでサポートされるメソッド

次のメソッドは、peopleでサポートされています。

- GET

- リクエスト-パラメータ:

- startIndex - 「共通のリクエスト問合せパラメータ」を参照してください。

- itemsPerPage - 「共通のリクエスト問合せパラメータ」を参照してください。

- projection - 「共通のリクエスト問合せパラメータ」を参照してください。

- data: dataパラメータは、レスポンスで返されるデータを制御するカンマ区切りのリストです。事前定義済セットのbasicは、data=guid,id,displayNameと同等です。事前定義済セットのdataは、ユーザーのすべてのデータを返す標準セットですが、status、manager、reporteesまたはphotosは含まれていません。設定可能な値のフル・リストには、事前定義済セットのbasicとdata、さらに個々のデータ値としてguid、id、displayName、birthday、language、timeZone、name、addresses、organizations、workEmail、phoneNumbers、manager、reportees、photosおよびstatusが含まれます。
dataパラメータとして定数'data'を指定すると、リソースに対してすべての基本情報が返されます。projectionとdataの両方の問合せ文字列パラメータが存在する場合は、dataパラメータを使用して返すデータを決定します。

dataパラメータは、次の値のカンマ区切りリスト値を取って、対応するデータを返すこともできます。guid、id、displayName、birthday、language、timeZone、name、addresses、organizations、workEmail、phoneNumbers、manager、reportees、photosまたはstatus、あるいはその任意の組合せ。

注意:

dataパラメータは、事前定義済セット、値のコレクションまたはセットと値の組合せを受け入れることができます。たとえば、基本データおよびユーザーの生年月日を入手するには、data=basic,birthdayと指定します。

- links: linksパラメータは、レスポンスでどのリンクが返されるのかを制御するカンマ区切りリストです。このパラメータは、事前定義済セット、個々のデータ値または事前定義済セットと個々のデータ値の組合せを受け入れることができます。事前定義済セットは、basic、data、activitiesSet、connectionsSetおよびfeedbackSetです。これらの事前定義済セットについては、「linksパラメータの事前定義済セット」を参照してください。
linksパラメータの個々の値は、person、profile、icon、status、messageBoard、activities、personActivities、connectionActivities、connections、listNames、invitation、givenFeedback、receivedFeedback、userGivenFeedback、manager、reportees、memberです。

projectionとlinksの両方の問合せ文字列パラメータが存在する場合は、linksパラメータを使用して返すリンクを決定します。

- レスポンス-本体: 0個以上の個人オブジェクト。

linksパラメータの事前定義済セット

次のアイテムは、linksパラメータで返すことができる事前定義済セットです。たとえば、links=basicを指定する場合、それはdata=person,profile,iconを指定することと同等です。必要に応じて、追加のパラメータを指定することもできます。たとえば、data=basic,birthdayと指定できます。

注意:

現在使用できないリンクは、それらがlinksパラメータで指定されている場合でも返されません。

- basic: プロファイルの基本情報を返し、person、profileおよびiconを含む標準セット。

- data: レスポンスに対してすべての基本リンクと、コネクション・リスト、ステータスおよびアクティビティ・ストリーム・テンプレートを返す標準セット。

- activitiesSet: activities、personActivitiesおよびconnectionActivitiesが含まれます。

- connectionsSet: connections、listNamesおよびinvitationが含まれます。

- feedbackSet: givenFeedback、receivedFeedbackおよびuserGivenFeedbackが含まれます。

peopleからリンクされるリソース・タイプ

表42-6は、クライアントがpeopleリソースからリンクできるリソース・タイプを示しています。

表42-6 peopleに関連するリソース・タイプ

rel

リソース・タイプ

urn:oracle:webcenter:people:icon

urn:oracle:webcenter:people:person

urn:oracle:webcenter:people:person:list:connections

urn:oracle:webcenter:people:person:list

urn:oracle:webcenter:activities:stream:person

urn:oracle:webcenter:activities:stream

urn:oracle:webcenter:activities:stream:connections

urn:oracle:webcenter:activities:stream

urn:oracle:webcenter:activities:stream

urn:oracle:webcenter:activities:stream

urn:oracle:webcenter:feedback:all-received

urn:oracle:webcenter:feedback

urn:oracle:webcenter:feedback:all-given

urn:oracle:webcenter:feedback

self

urn:oracle:webcenter:people:person:status

urn:oracle:webcenter:people:person:list:list

urn:oracle:webcenter:people:person:list

self

urn:oracle:webcenter:people:person:listName

urn:oracle:webcenter:activities:stream:list

urn:oracle:webcenter:activities:stream

urn:oracle:webcenter:people:icon

このリソース・タイプを使用して、指定したプロファイルで使用されるアイコンを取得します(GET)。

people:iconへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
people
icon

iconでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET: 指定したプロファイルに使用されるアイコンを返します。

注意:

このリソースには、使用するプロファイル・アイコンのサイズを選択できるテンプレートが含まれています。sizeテンプレート・パラメータは、small、mediumまたはlargeに設定できます。

iconからリンクされるリソース・タイプ

表42-7は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表42-7 urn:oracle:webcenter:people:iconに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:people:icon

urn:oracle:webcenter:parent

urn:oracle:webcenter:people

urn:oracle:webcenter:people:person

personレスポンスには、プロファイル・データおよびユーザー・プロファイルの取得に使用するURIが含まれます。

personへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してpersonリソースにアクセスする方法を示します。

resourceIndex
people

resourceIndex
people
person

resourceIndex
person

author
person

resourceIndex
activities:stream
person

personでサポートされるメソッド

次のメソッドは、personでサポートされています。

- GET

- リクエスト-パラメータ: q
指定した人を取得するためのqの形式は次のとおりです。

q=[loginid:equals:username]
Or
q=[guid:equals:guid]
Or
q=[email:equals:email]

注意:

パラメータqは、personのresourceIndexテンプレート上のみです。

- レスポンス-本体: message

関連項目:

レスポンスmessageの詳細は、「personの読取り専用要素」を参照してください。

personの読取り専用要素

表42-8は、personリソースの読取り専用要素を示しています。

注意:

personレスポンス内に存在する要素は、ユーザー・リポジトリの構成方法およびそれによってサポートされている要素に応じて異なります。さらに、address、emails、photos、phoneNumbers、organizationなど表42-8に示すデータのいくつかは、複数のインスタンスを持つことができます。

関連項目:

表42-8に示す要素のいくつかは、「linksパラメータの事前定義済セット」で説明している事前定義済セットで返すことができます。

表42-8 personの読取り専用要素

要素

タイプ

説明

guid

String

人の一意のGUID

id

String

人の一意のログインID(つまり、ユーザー名。たとえば、pat_coi)

displayName

String

人の表示名(ユーザーの名前、たとえば、Pat Coi)。これは、リポジトリ構成に応じて、idと同じ値になる場合があります。

birthday

Date (String)脚注 1

人の生年月日

connected

Boolean (String)1

この人が現在のユーザーにコネクションを持っているかどうか

language

String

人の優先言語

timeZone

String

人のタイムゾーン

name

name

人の名前情報

nameは、ポータブル連絡先タイプです。詳細は、第53.10.2.1項「nameポータブル連絡先タイプ」を参照してください。

address

address

人の住所情報

addressは、ポータブル連絡先タイプです。詳細は、第53.10.2.2項「addressポータブル連絡先タイプ」を参照してください。

emails

value

人の電子メール

emailsは、valueポータブル連絡先タイプから導出されます。詳細は、第53.10.2.4項「valueポータブル連絡先タイプ」を参照してください。

photos

value

人のプロファイル写真

photosは、valueポータブル連絡先タイプから導出されます。詳細は、第53.10.2.4項「valueポータブル連絡先タイプ」を参照してください。

phoneNumbers

value

人の電話番号

phoneNumberは、valueポータブル連絡先タイプから導出されます。詳細は、第53.10.2.4項「valueポータブル連絡先タイプ」を参照してください。

organizations

organization

人の組織情報

organizationは、ポータブル連絡先タイプです。詳細は、第53.10.2.3項「organizationポータブル連絡先タイプ」を参照してください。

manager

personReference

この人の上司

reportees

personReference

この人の直属の部下

status

urn:oracle:webcenter:people:person:status

人のプロファイル・ステータス・メッセージ

脚注 1 DATEやBOOLEANなどのデータ型は、STRINGとしてAPIに格納されます。

personからリンクされるリソース・タイプ

表42-9は、クライアントがpersonリソースからリンクできるリソース・タイプを示しています。

表42-9 personに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:people:person

alternate

urn:oracle:webcenter:spaces:profile (HTML)

urn:oracle:webcenter:people:person:list:connections

urn:oracle:webcenter:people:person:list

urn:oracle:webcenter:people:person:listNames

urn:oracle:webcenter:people:person:status

urn:oracle:webcenter:activities:stream:person

urn:oracle:webcenter:activities:stream

urn:oracle:webcenter:activities:stream:connections

urn:oracle:webcenter:activities:stream

urn:oracle:webcenter:activities:stream

urn:oracle:webcenter:activities:stream

urn:oracle:webcenter:messageBoard

urn:oracle:webcenter:feedback:all-given

urn:oracle:webcenter:feedback

urn:oracle:webcenter:feedback:all-received

urn:oracle:webcenter:feedback

urn:oracle:webcenter:people:person:list

listレスポンスには、コネクション・リスト上のすべてのプロファイルの取得(GET)、ユーザーへのコネクションの招待の送信またはコネクション・リストへのコネクションの追加(POST)、およびコネクション・リストの削除(DELETE)に使用するURIが含まれます。

listへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してlistリソースにアクセスする方法を示します。

resourceIndex
person
listNames
list

resourceIndex
person
list (rel="urn:oracle:webcenter:people:person:list:connections")

listでサポートされるメソッド

次のメソッドは、listリソースでサポートされています。

- GET

- リクエスト-パラメータ: startIndex、itemsPerPage、projection

関連項目:

startIndexやitemsPerPageなど、REST APIパラメータについては、「共通のリクエスト問合せパラメータ」を参照してください。

- レスポンス-本体: 0個以上のpersonアイテム

- POST

- リクエスト-本体: member

- レスポンス-本体: member

関連項目:

リクエスト要素およびレスポンス要素におけるmemberの詳細は、「urn:oracle:webcenter:people:person:list:member」を参照してください。

- DELETE

- リクエスト

listからリンクされるリソース・タイプ

表42-10は、クライアントがlistリソースからリンクできるリソース・タイプを示しています。

表42-10 listに関連するリソース・タイプ

rel

リソース・タイプ

self urn:oracle:webcenter:people:person:list脚注 1

urn:oracle:webcenter:people:person:list

urn:oracle:webcenter:activities:stream

urn:oracle:webcenter:activities:stream

脚注 1 self relには、現在、urn:oracle:webcenter:people:person:listのかわりにurn:oracle:webcenter:people:person:list:listが含まれます。@connectionsデフォルト・リストの場合、これには現在、urn:oracle:webcenter:people:person:list:connectionsが含まれます。

urn:oracle:webcenter:people:person:listNames

listNamesレスポンスには、既存のコネクション・リストの名前と、リストの取得(GET)およびコネクション・リストの作成(POST)に使用するURIが含まれます。

listNamesへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してlistNamesリソースにアクセスする方法を示します。

resourceIndex
person
listNames

listNamesでサポートされるメソッド

次のメソッドは、listNamesリソースでサポートされています。

- GET

- リクエスト

- レスポンス: 本体: 0個以上のlistNameアイテム

- POST

- リクエスト-本体: listName

- レスポンス-本体: listName

関連項目:

listNameの詳細は、「urn:oracle:webcenter:people:person:listName」を参照してください。

listNamesからリンクされるリソース・タイプ

表42-11は、クライアントがlistNamesリソースからリンクできるリソース・タイプを示しています。

表42-11 listNamesに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:people:person:listNames

urn:oracle:webcenter:people:person:listName

listNameレスポンスには、コネクション・リストの名前およびコネクション・リストへのアクセスに使用するURIが含まれます。「urn:oracle:webcenter:people:person:listNames」も参照してください。

listNameへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してlistNameリソースにアクセスする方法を示します。

resourceIndex
person
listNames
listName

listNameでサポートされるメソッド

次のメソッドは、listNameリソースでサポートされています。

- DELETE

- リクエスト

listNameの書込み可能要素

表42-12は、listNameリソースの書込み可能要素を示しています。

表42-12 listNameの書込み可能要素

要素

タイプ

必須

制約

説明

name

String

はい

1文字以上の文字

単一のリスト名

listNameからリンクされるリソース・タイプ

表42-13は、クライアントがlistNameリソースからリンクできるリソース・タイプを示しています。

表42-13 listNameに関連するリソース・タイプ

rel

リソース・タイプ

self urn:oracle:webcenter:people:person:list

urn:oracle:webcenter:people:person:list

urn:oracle:webcenter:activities:stream:list

urn:oracle:webcenter:activities:stream

urn:oracle:webcenter:people:person:list:member

memberレスポンスには、コネクション・リストからのコネクションの削除に使用するURIが含まれます。

memberへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してmemberリソースにアクセスする方法を示します。

resourceIndex
person
list
member

memberでサポートされるメソッド

次のメソッドは、memberでサポートされています。

- DELETE

- リクエスト

memberの書込み可能要素

表42-14は、memberリソースの書込み可能要素を示しています。memberの書込み可能要素は、コネクションをリストに追加したり、ユーザーにコネクションの招待を送信する場合に使用されます。memberリソース自体は、コネクションを削除するためのものであり、書込み可能要素を使用しません。

表42-14 memberの書込み可能要素

要素

タイプ

必須

制約

説明

guid

String

はい

1文字以上の文字

ユーザーのGUID

message

String

いいえ

0文字以上の文字

招待メッセージ

これは、ユーザーにコネクションの招待を送信する場合(つまり、ユーザー作成のコネクション・リストではなく、@connectionsリストにPOSTする場合)にのみ使用します。

urn:oracle:webcenter:people:person:status

statusレスポンスには、指定したユーザーのプロファイル・ステータス・メッセージの取得(GET)および更新(PUT)に使用するURIが含まれます。

statusへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してstatusリソースにアクセスする方法を示します。

resourceIndex
people
person
status

statusでサポートされるメソッド

次のメソッドは、statusリソースでサポートされています。

- GET

- リクエスト

- レスポンス-本体: status

- PUT

- リクエスト-本体: status

- レスポンス-本体: status

statusの書込み可能要素

表42-15は、statusリソースの書込み可能要素を示しています。

表42-15 statusの書込み可能要素

要素

タイプ

必須

制約

説明

note

String

はい

1文字以上の文字

ステータス・メッセージの内容

statusからリンクされるリソース・タイプ

表42-16は、クライアントがstatusリソースからリンクできるリソース・タイプを示しています。

表42-16 statusに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:people:person:status

urn:oracle:webcenter:people:invitations

invitationsレスポンスには、招待の取得に使用するURIが含まれます(GET)。別のユーザーに招待を送信(POST)することもできます。

invitationsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してinvitationsリソースにアクセスする方法を示します。

resourceIndex
invitations

ユーザーに対してコネクションをまだ持っていない場合、彼らにコネクションの招待を送信するために、そのユーザーのプロファイルからinvitationsリソースにナビゲートすることもできます。このパスは、POSTに対してのみ使用されます。

resourceIndex
person
invitations

invitationsでサポートされるメソッド

次のメソッドは、invitationsリソースでサポートされています。

- GET

- リクエスト-パラメータ: q
現在のユーザーに送信された招待を取得するためのqの形式は次のとおりです。

q=[invitee:equals:@me]

現在のユーザーから送信された招待を取得するためのqの形式は次のとおりです。

q=[invitor:equals:@me]

- レスポンス-本体: 0個以上の招待

- POST

- リクエスト-本体: invitation

- レスポンス-本体: invitation

invitationsの書込み可能要素

表42-17は、invitationsリソースの書込み可能要素を示しています。

表42-17 invitationsの書込み可能要素

要素

タイプ

必須

制約

説明

message

String

いいえ

1文字以上の文字

招待に添付されるメッセージ

invitationsからリンクされるリソース・タイプ

表42-18は、クライアントがinvitationsリソースからリンクできるリソース・タイプを示しています。

表42-18 invitationsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:people:invitation

urn:oracle:webcenter:people:invitation

invitationレスポンスには、送信した招待の削除(DELETE)、または受信した招待の削除(DELETE)または更新(PUT)に使用するURIが含まれます。

invitationへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してinvitationリソースにアクセスする方法を示します。

resourceIndex
invitations
invitation

invitationでサポートされるメソッド

次のメソッドは、invitationリソースでサポートされています。

- PUT

- リクエスト-本体: invitation

- レスポンス-本体: invitation

- DELETE

- リクエスト

invitationの書込み可能要素

表42-19は、invitationリソースの書込み可能要素を示しています。

表42-19 invitationの書込み可能要素

要素

タイプ

必須

制約

説明

status

String

はい(PUT)

ACCEPTED

IGNORED

招待のステータス。

注意: 招待を受け入れるか無視するときに、それが自身の招待のリストから削除されます。

invitationの読取り専用要素

表42-20は、invitationリソースの読取り専用要素を示しています。

表42-20 invitationの読取り専用要素

要素

タイプ

説明

id

String

招待の一意のID

invitee

personReference

招待の送信先のユーザー

invitor

personReference

招待の送信元のユーザー

sentDate

Date (String)脚注 1

招待が送信された日付

脚注 1 DATEやBOOLEANなどのデータ型は、STRINGとしてAPIに格納されます。

invitationからリンクされるリソース・タイプ

表42-21は、クライアントがinvitationリソースからリンクできるリソース・タイプを示しています。

表42-21 invitationsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:people:invitation

42.3 フィードバックREST API

フィードバックREST APIを使用して、フィードバックを読み取り、削除します。この項では、これらのアクションを実行するために使用するREST APIメソッドの情報を提供します。

この項には次のサブセクションが含まれます:

- 第42.3.1項「フィードバック・エントリ・ポイント」

- 第42.3.2項「フィードバック・リソース・タイプの分類」

- 第42.3.3項「フィードバックのセキュリティに関する考慮事項」

- 第42.3.4項「フィードバック・リソース・タイプ」

42.3.1 フィードバック・エントリ・ポイント

各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。ピープル・コネクションでは、各機能に独自のlink要素があります。ピープル・コネクションのフィードバック機能のエントリ・ポイントを見つけるには、次のresourceTypeを持つlink要素を見つけます。

urn:oracle:webcenter:feedback

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供され、それによって現在のユーザーの受信したフィードバックがすべて返されます。クライアントは、このエントリ・ポイントにHTTPリクエストを送信し、ピープル・コネクションのフィードバック機能を使用します。

関連項目:

リソース索引の詳細は、第53.5.1項「リソース索引の使用」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

42.3.2 フィードバック・リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第42.3.4項「フィードバック・リソース・タイプ」の該当の項を参照してください。

ピープル・コネクションのフィードバック機能のリソース・タイプの分類は、次のとおりです。

urn:oracle:webcenter:feedback
urn:oracle:webcenter:feedback:message

42.3.3 フィードバックのセキュリティに関する考慮事項

ピープル・コネクションREST APIのいずれかにアクセスするには、RESTサービスにログインする必要があります。その後、基礎となるサービスにより、権限の確認などが処理されます。

関連項目:

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

42.3.4 フィードバック・リソース・タイプ

この項では、各リソース・タイプについて知っておく必要があるすべての情報を提供します。次のサブセクションが含まれます:

- 「urn:oracle:webcenter:feedback」

- 「urn:oracle:webcenter:feedback:message」

urn:oracle:webcenter:feedback

feedbackレスポンスには、フィードバック・メッセージの読取りに使用するURIが含まれます。

feedbackへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してfeedbackリソースにアクセスする方法を示します。

resourceIndex
feedback

resourceIndex
person
feedback

feedbackでサポートされるメソッド

次のメソッドは、feedbackリソースでサポートされています。

- GET

- リクエスト-パラメータ: startIndex、itemsPerPage

関連項目:

startIndexやitemsPerPageなど、REST APIパラメータについては、「共通のリクエスト問合せパラメータ」を参照してください。

- レスポンス-本体: message

関連項目:

messageの詳細は、「urn:oracle:webcenter:feedback:message」を参照してください。

- POST: 許可されている場合は、ターゲット・ユーザーに対するフィードバックを追加できます。このメソッドは、現在のユーザーがターゲット・ユーザーへのコネクションを持っており、そのユーザーに対するフィードバックを追加する権限を持っている場合にのみ使用可能です。

- リクエスト - 本体: feedback

<message resourceType="urn:oracle:webcenter:feedback:message">
<body>test from REST API</body>
<receivedUser>
<guid>4F16DD80393611DFBF895F177662C511</guid>
</receivedUser>
</message>

feedbackからリンクされるリソース・タイプ

表42-22は、クライアントがfeedbackリソースからリンクできるリソース・タイプを示しています。

表42-22 feedbackに関連するリソース・タイプ

rel

リソース・タイプ

self urn:oracle:webcenter:feedback:all-received

urn:oracle:webcenter:feedback

self urn:oracle:webcenter:feedback:all-given

urn:oracle:webcenter:feedback

urn:oracle:webcenter:feedback:message

urn:oracle:webcenter:feedback:message

messageレスポンスには、フィードバック・メッセージ・データおよびフィードバック・メッセージの削除に使用するURIが含まれます。

messageへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してmessageリソースにアクセスする方法を示します。

resourceIndex
feedback
message

resourceIndex
person
feedback
message

messageでサポートされるメソッド

次のメソッドは、messageでサポートされています。

- DELETE

- リクエスト

messageの読取り専用要素

表42-23は、messageリソースの読取り専用要素を示しています。

表42-23 messageの読取り専用要素

要素

タイプ

説明

body

String

メッセージ・コンテンツ

id

String

メッセージの一意のID

author

personReference

メッセージを作成したユーザー

created

Date (String)脚注 1

リストが作成された日付

receivedUser

personReference

フィードバックを受信したユーザーへの人の参照

脚注 1 DATEやBOOLEANなどのデータ型は、STRINGとしてAPIに格納されます。

feedbackからリンクされるリソース・タイプ

表42-24は、クライアントがfeedbackリソースからリンクできるリソース・タイプを示しています。

表42-24 messageに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:feedback:message

42.4 メッセージ・ボードREST API

メッセージ・ボードREST APIを使用して、ユーザーのメッセージ・ボードまたはポータル・メッセージ・ボードへのメッセージの投稿、読取りおよび削除を行います。この項では、これらのアクションを実行するために使用するREST APIメソッドの情報を提供します。

この項には次のサブセクションが含まれます:

- 第42.4.1項「メッセージ・ボード・エントリ・ポイント」

- 第42.4.2項「メッセージ・ボード・リソース・タイプの分類」

- 第42.4.3項「メッセージ・ボードのセキュリティに関する考慮事項」

- 第42.4.4項「メッセージ・ボード・リソース・タイプ」

- 第42.4.5項「可視性に基づくメッセージのフィルタリング」

42.4.1 メッセージ・ボード・エントリ・ポイント

各RESTサービスには、そのサービスのエントリ・ポイントを提供するリソース索引内にlink要素があります。ピープル・コネクションでは、各機能に独自のlink要素があります。ピープル・コネクションのメッセージ・ボード機能のエントリ・ポイントを見つけるには、次のresourceTypeを持つlink要素を見つけます。

urn:oracle:webcenter:messageBoard

注意:

リソース索引からのエントリ・ポイントに加えて、個々のユーザーのメッセージ・ボードにナビゲートするために、メッセージ・ボード機能には、ポータル・メッセージ・ボードのポータル・レスポンスからのエントリ・ポイントもあります。

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供され、それによって現在のユーザーのメッセージ・ボードが返されます。クライアントは、このエントリ・ポイントにHTTPリクエストを送信し、ピープル・コネクションのメッセージ・ボード機能を使用します。

関連項目:

リソース索引の詳細は、第53.5.1項「リソース索引の使用」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

42.4.2 メッセージ・ボード・リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第42.4.4項「メッセージ・ボード・リソース・タイプ」の該当の項を参照してください。

ピープル・コネクションのメッセージ・ボード機能のリソース・タイプの分類は、次のとおりです。

urn:oracle:webcenter:messageBoard
urn:oracle:webcenter:messageBoard:message

42.4.3 メッセージ・ボードのセキュリティに関する考慮事項

ピープル・コネクションREST APIのいずれかにアクセスするには、RESTサービスにログインする必要があります。その後、基礎となるサービスにより、権限の確認などが処理されます。

関連項目:

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

42.4.4 メッセージ・ボード・リソース・タイプ

この項では、各リソース・タイプについて知っておく必要があるすべての情報を提供します。次のサブセクションが含まれます:

- 「urn:oracle:webcenter:messageBoard」

- 「urn:oracle:webcenter:messageBoard:message」

urn:oracle:webcenter:messageBoard

messageBoardレスポンスには、ポータルおよび個々のユーザーのメッセージ・ボード・メッセージの読取り(GET)および投稿(POST)に使用するURIが含まれます。

messageBoardへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してmessageBoardリソースにアクセスする方法を示します。

resourceIndex
messageBoard

resourceIndex
person
messageBoard

resourceIndex
spaces
space
messageBoard

messageBoardでサポートされるメソッド

次のメソッドは、messageBoardリソースでサポートされています。

- GET

- リクエスト-パラメータ: startIndex、itemsPerPage

関連項目:

startIndexやitemsPerPageなど、REST APIパラメータについては、「共通のリクエスト問合せパラメータ」を参照してください。

- レスポンス-本体: message

注意:

メッセージを読み取る(取得する)ためのREST GETコマンドは、デフォルトで表示されているメッセージをすべて取得します。第42.4.5項「可視性に基づくメッセージのフィルタリング」で説明されるように、アプリケーション・ユーザー・インタフェースを介してプライベートまたは非表示のメッセージも取得できます。メッセージの非表示および表示の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「ポータルへのメッセージおよびフィードバックの追加」を参照してください。

- POST

- リクエスト-本体: message
メッセージのPOSTでは、メッセージへのリンクURLの組込みがサポートされています。

関連項目:

messageの詳細は、「urn:oracle:webcenter:messageBoard:message」を参照してください。

messageBoardの読取り専用要素

表42-25は、messageBoardリソースの読取り専用要素を示しています。

表42-25 messageの読取り専用要素

要素

タイプ

説明

messageType

String

メッセージにリンクがある場合、linkを返します。それ以外の場合は、nullを返します。

link

String

リンクとともにメッセージの次のリンク・データを含みます。name、url、icon、description、mimeType、objectId、objectType、serviceId。

messageBoardからリンクされるリソース・タイプ

表42-26は、クライアントがmessageBoardリソースからリンクできるリソース・タイプを示しています。

表42-26 messageBoardに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:messageBoard

urn:oracle:webcenter:messageBoard:message

urn:oracle:webcenter:messageBoard:message

messageレスポンスには、メッセージ・ボード・メッセージ・データと、ポータルまたは個々のユーザーのメッセージ・ボード・メッセージの読取り(GET)、改訂(PUT)および削除(DELETE)に使用するURIが含まれます。

messageへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してmessageリソースにアクセスする方法を示します。

resourceIndex
messageBoard
message

resourceIndex
person
messageBoard
message

resourceIndex
spaces
space
messageBoard
message

messageでサポートされるメソッド

次のメソッドは、messageリソースでサポートされています。

- GET

- リクエスト

- レスポンス-本体: message

- PUT

- リクエスト-本体: message

- レスポンス-本体: message

- DELETE

- リクエスト

messageの書込み可能要素

表42-27は、messageリソースの書込み可能要素を示しています。

表42-27 messageの書込み可能要素

要素

タイプ

必須

制約

説明

body

String

はい

1文字以上の文字

メッセージ・コンテンツ

messageの読取り専用要素

表42-28は、messageリソースの読取り専用要素を示しています。

表42-28 messageの読取り専用要素

要素

タイプ

説明

id

String

メッセージの一意のID

author

personReference

メッセージを作成したユーザー

created

Date (String)脚注 1

リストが作成された日付

脚注 1 DATEやBOOLEANなどのデータ型は、STRINGとしてAPIに格納されます。

messageからリンクされるリソース・タイプ

表42-29は、クライアントがmessageリソースからリンクできるリソース・タイプを示しています。

表42-29 messageに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:messageBoard:message

42.4.5 可視性に基づくメッセージのフィルタリング

メッセージを取得するREST GETコマンドでデフォルトにより、表示されるすべてのメッセージを取得しても、一連の可視性フィルタを使用するアプリケーション・ユーザー・インタフェースを介して、プライベートまたは非表示のメッセージも取得できます。

メッセージ・ボードに投稿されたメッセージは次の可視性条件を持つことができます。

- パブリック

- プライベート

- 非表示

- パブリックかつ非表示

- プライベートかつ非表示

デフォルトでは、メッセージはパブリックです。

プライベート・メッセージ:

メッセージ・ボードの所有者は、任意のメッセージをプライベートとしてマークできます。メッセージがプライベートとしてマークされると、そのメッセージは、メッセージの所有者がプライベート・メッセージを選択して他の人に送信しないかぎり、所有者以外には表示されません。そうでない場合、他のユーザーがプライベート・メッセージを含むメッセージ・ボードを表示しても、パブリック・メッセージのみが表示されます。

非表示のメッセージ:

メッセージ・ボードの所有者は、任意のメッセージを非表示としてマークできます。メッセージが非表示としてマークされると、そのメッセージはメッセージ・ボードの所有者には表示されませんが、メッセージ・ボードを表示する他のユーザーには表示されたままになります。

メッセージ・ボードのREST URL:

メッセージ・ボードURLフィルタのコンテキストは次のとおりです。

rest/api/messageBoards/<BOARD-TYPE>/<GUID>/<FILTER-TYPE>

ここで:

- <BOARD-TYPE>はpersonまたはspaceのいずれか

- <GUID >は@me、person <GUID> (<BOARD-TYPE>がpersonの場合)またはspace <GUID> (<BOARD-TYPE>がportalの場合)のいずれか

- <FILTER-TYPE>はperson <BOARD-TYPE>の場合にのみ適用され、次のうちのいずれかです。

- null: (デフォルト)すべてのメッセージを表示

- private: プライベート・メッセージを表示

- public: パブリック・メッセージを表示

- hidden: 非表示かつパブリックのメッセージを表示

- private_hidden: プライベートかつ非表示のメッセージを表示

適用されるHTMLメソッドのコンテキストで、使用可能なフィルタを次に示します。

GET

- @me

- すべて
rest/api/messageBoards/person/@me

- プライベート
rest/api/messageBoards/person/@me/private

- パブリック
rest/api/messageBoards/person/@me/public

- 非表示かつパブリック
rest/api/messageBoards/person/@me/hidden

- プライベートかつ非表示
rest/api/messageBoards/person/@me/private_hidden

- person
rest/api/messageBoards/person/<GUID>

GUIDがログイン・ユーザーのGUIDと一致する場合は、@meと同じフィルタ操作が適用されます。GUIDが異なる場合は、使用可能なフィルタ操作はありません。

- space
rest/api/messageBoards/space/<GUID>

可視性に基づくフィルタ操作は使用できません。

POST

- @me

- すべて
rest/api/messageBoards/person/@me

- プライベート

{"body" : "<BODY_CONTENT>",
"visibilityType" : "private"}

- パブリック

{"body" : "<BODY_CONTENT>",
"visibilityType" : "public"}

- 非表示かつパブリック

{"body" : "<BODY_CONTENT>",
"visibilityType" : "hidden"}

- プライベートかつ非表示

{"body" : "<BODY_CONTENT>",
"visibilityType" : "private_hidden"}

- person
rest/api/messageBoards/person/<GUID>

GUIDがログイン・ユーザーのGUIDと同じ場合は、GETのフィルタが適用されます。ユーザーが異なる場合は、次のフィルタが適用されます。

- パブリック

{"body" : "<BODY_CONTENT>",
"visibilityType" : "public"}

- プライベート

{"body" : "<BODY_CONTENT>",
"visibilityType" : "private"}

- space
rest/api/messageBoards/space/<GUID>

可視性に基づくフィルタ操作は使用できません。

PUT

- @me

- すべて
est/api/messageBoards/person/@me/messages/<msg guid>

- プライベート

{"body" : "<BODY_CONTENT>",
"visibilityType" : "private"}

- パブリック

{"body" : "<BODY_CONTENT>",
"visibilityType" : "public"}

- 非表示かつパブリック

{"body" : "<BODY_CONTENT>",
"visibilityType" : "hidden"}

- プライベートかつ非表示

{"body" : "<BODY_CONTENT>",
"visibilityType" : "private_hidden"}

- person
rest/api/messageBoards/person/<GUID>/messages/<msg guid>

GUIDがログイン・ユーザーのGUIDと同じ場合は、GETのフィルタが適用されます。ユーザーが異なる場合は、次のフィルタが適用されます。

- パブリック

{"body" : "<BODY_CONTENT>",
"visibilityType" : "public"}

- プライベート

{"body" : "<BODY_CONTENT>",
"visibilityType" : "private"}

- space
rest/api/messageBoards/space/<GUID>/messages/<msg guid>

可視性に基づくフィルタ操作は使用できません。

42.5 招待の作成

この項では、ピープル・コネクション・サービスREST APIを使用して別のユーザーを招待してコネクション・リストに追加する方法を示します。招待が作成された後、招待を受けた人は、受け入れるか拒否するかを選択できます。この例では、招待の削除方法も示します。

この項には次のサブセクションが含まれます:

- 第42.5.1項「招待の作成」

- 第42.5.2項「招待の受入れ」

- 第42.5.3項「招待の削除」

42.5.1 招待の作成

1. 最初の手順は、REST APIメソッドでの通常の場合と同様に、リソース索引を取得することです。

GET http://<host:port>/rest/api/resourceIndex

2. 次に、コネクションを持ちたい人を見つけます。これを行うには:

1. リソース索引リストで、次のリソース・タイプを持つリンクについてスキャンします。

urn:oracle:webcenter:people:person

2. 招待したいユーザーの検索を実行します。この例では、ユーザーの名前はMontyです。

GET http://<host:port>/rest/api/people?q=loginid:equals:monty&utoken=ASDF

3. 図42-1に示すようにレスポンスでMontyのGUIDを見つけます。

図42-1 ユーザーのGUIDを含むレスポンス

4. GUIDを保存し、それを使用してそのユーザーとコネクションを持てるようにします。

3. 招待を受ける人のGUIDを把握したら、その人を追加するリソースを見つける必要があります。この場合は、自身のconnectionsにその人を追加します。
自身のconnectionsリストを見つけるには、connectionsについてピープル・コネクションのドキュメント(この章)をスキャンします。表42-9「personに関連するリソース・タイプ」で、personリソースからconnectionsにリンクしていることがわかります。便宜のために、この表を図42-2に示します。

図42-2 connectionsリンクを見つける

connectionsがpersonリソースからリンクしていることがわかったので、personリソースを見つける必要があります。URNが示すように、次の手順に従ってpeopleリソースからpersonリソースにナビゲートします。

4. 次のように、リソース索引に戻ります(または、前回表示したresourceIndexのキャッシュされたバージョンを使用します)。

GET http://<host:port>/rest/api/resourceIndex

5. peopleリソースについてスキャンして、次のものを見つけます。

urn:oracle:webcenter:people

6. peopleリソースのリンクを使用して自身のリストにアクセスします。

GET http://<host:port>/rest/api/people/@me/lists/@self?utoken=ASDF

7. 表42-9に示されているresourceTypeおよびrelについて、返されたリンクをスキャンします。

resourceType="urn:oracle:webcenter:people:person:list
rel="urn:oracle:webcenter:people:person:list:connections

8. 自身のconnectionsリストのURIを使用して招待を作成し、次のようにPOSTを実行します。

POST http://<host:port>/rest/api/people/@me/lists/@connections?utoken=ASDF

Headers --  Accept:application/json, Content-Type:application/json
Body -- {"message":"Monty, do you want to join my connections list?","guid":"1AE5AF102E2611E09F062B573E287934"}

9. これで、Montyのアカウントにログインしたときに、図42-3のように、招待が追加されていることを確認できるようになります。

図42-3 招待が表示されているアクティビティ・ストリーム

42.5.2 招待の受入れ

招待が送信された後、次のステップでは、招待を受けた人(Monty)が招待を受け入れます。

1. 2番目のRESTクライアントを使用して、次のようにリソース索引を取得します。

GET http://<host:port>/rest/api/resourceIndex

2. Montyとしてログインします。

3. 次のリクエストを実行して、Montyに送信されたすべての招待をリストします。

GET http://<host:port>/rest/api/people/invitations?q=invitee:equals:@me&utoken=ASDF

レスポンスにリストされている各招待要素には、UPDATE操作をサポートするリンクが含まれており、それは次のようなものになります。

<links>
<link capabilities="urn:oracle:webcenter:delete urn:oracle:webcenter:update"
href="http://<host:port>/rest/api/people/invitations/<invitationid>?utoken=ASDF"
rel="self" resourceType="urn:oracle:webcenter:people:invitation"/>
</links>
<id><invitationid></id>

4. 招待を受け入れるには、次のリクエストを実行します。

PUT http://<host:port>/rest/api/people/invitations/<invitationid>?utoken=ASDF

Headers
Accept -> application/xml
Content-Type -> application/xml

Body
<invitation>
<id><invitationid></id>
<status>accepted</status>
</invitation>

42.5.3 招待の削除

招待を開始した後、invitor:equals:@meを指定することで、自身のアカウントからその招待を表示できます。例:

GET http://<host:port>/rest/api/people/invitations?q=invitor:equals:@me&utoken=ASDF

レスポンスにリストされている各招待要素には、DELETE操作をサポートするリンクが含まれており、それは次のようなものになります。

<links>
<link resourceType="urn:oracle:webcenter:people:invitation"
rel="self"
href="http://host_name:port_name/rest/api/people/invitations/
e9073cdb-56ab-423d-8b1f-1220c802bdd4?
utoken="FN0SEFwX42OCntwtx9a1dSbhqocO_w**"
capabilities="urn:oracle:webcenter:delete"/>
</links>

招待を受けた人は、自身のアカウントから招待を削除することもできます。招待を受けた人は、次のように指定することで自身の招待のリストを取得できます。

GET http://<host:port>/rest/api/people/invitations?q=invitee:equals:@me&utoken=ASDF

DELETEからのレスポンスは、単に204のステータス・コードです。

第VII部

ユーザーによるコンテンツ検索の支援

第VII部の内容は次のとおりです。

- 第43章「リンクの統合」

- 第44章「タグの統合」

- 第45章「検索の統合」

- 第46章「アクティビティ・グラフの統合」

- 第47章「分析の統合」

43 リンクの統合

この章では、設計時にPortal Frameworkアプリケーションにリンク機能を統合する方法について説明します。

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

- 第43.1項「リンクの概要」

- 第43.2項「リンクの基本構成」

- 第43.3項「リンクの詳細情報」

リンクの管理および組込みの詳細は、次を参照してください。

- Oracle Fusion Middleware Oracle WebCenter Portalの管理の「データベース接続の設定」

- Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「リンク・コンポーネントの使用」

- 『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「WebCenter Portalの情報のリンク」

43.1 リンクの概要

この項では、リンクの機能と要件の概要情報を説明します。次のサブセクションが含まれます:

- 第43.1.1項「リンクの理解」

- 第43.1.2項「リンクの要件」

- 第43.1.3項「実行時の処理」

43.1.1 リンクの理解

リンクでは、関連情報を表示、アクセスおよび関連付ける方法が提供されます。たとえば、プロジェクトの割当てのリストで、割当てごとに対応する仕様にリンクできます。特定のタスクの問題に関するディスカッション・スレッドでは、そのタスクの実行方法を詳細に説明したドキュメントにリンクできます。

リンクは、アプリケーション開発者がソース・オブジェクト(ディスカッション・ツールなど)とターゲット・オブジェクト(ドキュメントなど)を設定し、これによりユーザーが2つのオブジェクト間のリンクを作成する手段を提供します。

リンクに関連するアクションには、作成、削除および管理の3つがあります。管理アクションには、作成と削除のアクションが含まれます。

リンクとともに、次のカスタムJSFコンポーネントが含まれています。

- リンク詳細ボタン: これはアイコンおよびクリックで「リンク」パネルを開くハイパーリンク(オプション)を表示します。リンク詳細ボタンを使用するには、ページのリージョンの1つとして、リンク - ダイアログ・タスク・フローも含める必要があります。

- リンク詳細メニュー項目: これは「リンク」パネルを開くメニュー項目を追加します。この項目はADFメニューに埋め込むことができます。リンク詳細メニュー項目を使用するには、ページのリージョンの1つとして、リンク - ダイアログ・タスク・フローも含める必要があります。

- リンク・ステータス・アイコン: これには次の2つのバージョンがあります。
グレーのリンク・アイコン(図43-1)は、リンク・ダイアログにリンクがないことを示します。

図43-1 リンク・アイコン(リンクが存在しない場合)

ゴールドのリンク・アイコン(図43-2)は、リンク・ダイアログにリンクが存在することを示します。

図43-2 リンク・アイコン(リンクが存在する場合)

次のオブジェクトからリンクできます。

- お知らせ

- ディスカッション

- ドキュメント

- イベント

- リスト

- ページ

- カスタムJSFコンポーネント(リンク詳細ボタンなど)をバインドしたオブジェクト

次の新規オブジェクトへリンクできます。

- ディスカッション

- ドキュメント

- イベント

- ノート

- URL

次の既存のオブジェクトへリンクできます。

- お知らせ

- ディスカッション

- ドキュメント

- イベント

注意:

リストおよびノートは、ポータルでのみ使用できます。Frameworkアプリケーションでは使用できません。

メールやピープル・コネクションなどの他のWebCenter Portalコンポーネントおよびツールでは、リンクは使用できません。

リンクでは、オブジェクト間の双方向のリンクをサポートしています。たとえば、ディスカッションのトピックからドキュメントへのリンクを作成すると、ドキュメントからディスカッション・トピックへ戻るリンクも作成されます。同様に、ディスカッションのトピックからドキュメントへのリンクを削除すると、ドキュメントからディスカッション・トピックに戻るリンクも自動的に削除されます。双方向のリンクは、URL、ノートおよび特定のリストの行では使用できません。

43.1.2 リンクの要件

リンクは、アプリケーション内のWebCenter Portalのツールまたはコンポーネントを自動的に認識します。ツールまたはサービスをアプリケーション内で構成すると、リンクを追加できます。ただし、リンクは保護されたページのみで機能します。リンク・アイコンは、保護されていないページには表示されません。詳細は、第43.2.3項「リンクのセキュリティ設定」を参照してください。

43.1.3 実行時の処理

リンクは、ソーシャル・ネットワークで情報を簡単に共有できる方法を提供します。リンクは、情報の検索に通常かかる無駄な時間と労力を大幅に削減します。

リンクのこの機能は、「リンク」ダイアログ(図43-3)で公開されており、アプリケーションでリンク・アイコン(図43-1)が表示されているすべての場所からアクセスできます。

図43-3 「リンク」ダイアログ

リンクによって、次の操作を実行できます。

- オブジェクト(ページなど)を既存のオブジェクト(ディスカッションのトピックなど)にリンクするには、「リンク」アイコンをクリックし、「既存にリンク」を選択して、「ディスカッション」リソースを選択します。オプションで、特定のフォーラムを選択し、リンクを選択するトピックのリンクをクリックできます。

- オブジェクト(ディスカッションのトピックなど)を新規オブジェクト(新規ノートやURLなど)にリンクするには、ディスカッションのトピックの「リンク」アイコンをクリックし、「新規にリンク」を選択して、「ノート」または「URL」を選択します。

- 1つのオブジェクトから複数のリンクを作成します。

- リンクを削除します。

実行時のリンクの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「WebCenter Portalの情報のリンク」を参照してください。

43.2 リンクの基本構成

この項では、アプリケーションにリンク機能を追加するために必要な手順について説明します。次のサブセクションが含まれます:

- 第43.2.1項「リンクの接続の設定」

- 第43.2.2項「リンク機能の設計時の追加」

- 第43.2.3項「リンクのセキュリティの設定」

- 第43.2.4項「リンクのトラブルシューティング」

43.2.1 リンクの接続の設定

リンクには、WebCenter Portalスキーマがインストールされているデータベースへの接続が必要です。リンク・マップ(どのオブジェクトが、どのオブジェクトにリンクされているかなどの、リレーションシップのマッピング情報)はデータベースに格納されます。

データベース接続の設定の詳細は、第4.2.2項「データベース接続の設定」を参照してください。

43.2.2 リンク機能の設計時の追加

この項では、リンク機能の基本的な組込みについて説明します。次のサブセクションが含まれます:

- 第43.2.2.1項「リンク・タスク・フロー」

- 第43.2.2.2項「リンク機能をアプリケーションに追加する方法」

43.2.2.1 リンク・タスク・フロー

WebCenter Portalには、リンク・ダイアログ・タスク・フローが含まれています。

43.2.2.2 リンク機能をアプリケーションに追加する方法

リンク・ダイアログ・タスク・フローをFrameworkアプリケーションに追加するには:

1. 第2章「開発環境の設定」の手順に従い、カスタマイズ可能なページをアプリケーションで作成します。

2. WebCenter Portalスキーマのインストールにより、データベースへのデータベース接続を設定していることを確認します(第43.2.1項)。

3. リンク機能を追加するページを開きます。

4. 「コンポーネント・パレット」で、「WebCenter Portal - リンク」をクリックします。

5. リンク詳細ボタン・コンポーネントをページのpanelGroupLayout内にドラッグ・アンド・ドロップします。
この例では、ボタンをpanelGroupLayout内に置きます。ボタンを常にpanelGroupLayout内に置く必要はありません。

6. 「リンク詳細ボタンの挿入」ダイアログ(図43-4)で、オブジェクト固有の説明、IDおよび名前を入力します。

図43-4 「リンク詳細ボタンの挿入」ウィザード

このダイアログのプロパティは次のとおりです。

- objectDescription: リンク詳細ボタンをバインドするオブジェクトの説明

- objectId: リンク詳細ボタンをバインドするオブジェクトを識別する一意のID

- objectName: リンク詳細ボタンをバインドするオブジェクトの名前

- serviceId: アプリケーションを識別するアプリケーション全体のID

7. 「serviceId」フィールドに、OnDemandと入力します。

注意:

serviceIdとobjectIdを組み合せて、リンク詳細ボタンをバインドするオブジェクトを一意に識別します。

8. 「OK」をクリックします。
ページ・ソースに新しいボタンが表示されます(図43-5)。

図43-5 ページ・ソースでのリンク詳細ボタン

9. リソース・パレットで、「カタログ」を開き、「タスク・フロー」フォルダを開きます。

10. ページのリンク詳細ボタンの隣にあるリンク・ダイアログ・タスク・フローをドラッグ・アンド・ドロップし、ポップアップ・メニューから「リージョン」を選択します。

11. ページを保存し、ブラウザで実行します。

43.2.3 リンクのセキュリティの設定

リンク機能には保護されたページが必要です。リンク・アイコンは、保護されていないページには表示されません。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第74.3項「ADFセキュリティの構成」を参照してください。

43.2.4 リンクのトラブルシューティング

この項では、リンクで発生する代表的な問題と解決方法について説明します。

問題

「リンク」アイコンが表示されません。

解決方法

リンク機能では、リンク情報が格納されているWebCenter Portalスキーマへのデータベース接続が必要です。データベースへの接続を作成し、アプリケーション・ナビゲータの「アプリケーション・リソース」パネルで使用可能にしていることを確認します。接続が「リソース・パレット」で使用可能な場合は、接続を単純に「リソース・パレット」から、「アプリケーション・リソース」の「接続」フォルダにドラッグします。

問題

既存のリンクは表示されますが、新規のリンクを作成したり既存のリンクを削除できません。

解決方法

RelationshipPermission権限は、リンク・コンポーネントが利用されると自動的に管理者に付与されます。他のユーザーにはADFセキュリティ・ポリシー・エディタを介してこの権限を付与します。詳細は、第74.3.1項「ADFセキュリティ設定の構成」を参照してください。

43.3 リンクの詳細情報

この項では、リンクで使用可能なオプション機能について説明します。次のサブセクションが含まれます:

- 第43.3.1項「リンクREST APIの使用」

43.3.1 リンクREST APIの使用

WebCenter Portalでは、リンクをサポートするREST APIが提供されています。リンクREST APIは、2つのオブジェクト間のリンクを投稿するために使用します。たとえば、スペース内のイベントとドキュメント間にリンクを作成できます。

この項では、リンクに関連したREST APIメソッドについて説明します。次のサブセクションが含まれます:

- 第43.3.1.1項「リンクのエントリ・ポイント」

- 第43.3.1.2項「リンク・リソース・タイプの分類」

- 第43.3.1.3項「セキュリティに関する考慮事項」

- 第43.3.1.4項「リンクのリソース・タイプ」

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

43.3.1.1 リンクのエントリ・ポイント

各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。リンクのエントリ・ポイントを検索するには、次のresourceTypeを使用したリンク要素を検索します。

urn:oracle:webcenter:links

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供されます。クライアントはこのエントリ・ポイントにHTTPリクエストを送信して、リンクを操作します。

リソース索引の詳細は、第53.5.1項「リソース索引の使用」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

43.3.1.2 リンク・リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」の該当の項を参照してください。

リンクの分類は、次のとおりです。

urn:oracle:webcenter:links
urn:oracle:webcenter:links:results

サービス・エントリ・ポイントの他、URLテンプレートにより、クライアントは、問合せパラメータを渡してリクエストをカスタマイズしたり戻されたデータのフォームを制御できます。

43.3.1.3 セキュリティに関する考慮事項

認証は、リンクのREST APIのメソッドを使用する前に必要です。

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

43.3.1.4 リンク・リソース・タイプ

この項では、各リソース・タイプについて説明します。次のサブセクションが含まれます:

- 第43.3.1.4.1項「urn:oracle:webcenter:links:results」

43.3.1.4.1 urn:oracle:webcenter:links:results

このリソース・タイプを使用して、URIを識別し、2つのオブジェクト間のリンク(POST)の作成に使用します

リクエストはURLによって表され、レスポンスはリンクで、それぞれエンド・ユーザーがドリル・ダウンするアイテムを選択し、使用可能な場合は独自のRESTサービスへのリンクをクロスするうえで役立つメタデータを備えています。独自のRESTサービスが使用できない場合は、HREFリンクが提供されます。

resultsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
links
results

resourceindex
spaces
spaces:resourceindex
spaces:links
results

resultsでサポートされるメソッド

このリソースによってサポートされるメソッドは次のとおりです。

- POST

- リクエスト - 本体: ソースおよびターゲット・オブジェクト。それぞれにserviceId、resourceIdおよびresourceNameが含まれます。ターゲットがURLリンクの場合、ターゲット・オブジェクトにはパラメータのserviceId、resourceIdおよびresourceNameに加えてresourceUrlも含まれます。

- response - body: 成功した場合には「204 コンテンツなし」、ユーザーにリンクを作成する権限がない場合には「403 禁止」のステータスになります

ここで:

- serviceId={serviceId}
オプション: services.oracle.webcenter.collab.calendar.communityなどのアイテムのサービスID。

- resourceId={resourceId}
s833cddc4_caa5_416c_87e9_d702ef870b43;;3b0c6edbなどのリソースID

- resourceName={resourceName}
New Eventなどのリソース名。

詳細は、第53.5.2.5項「テンプレート」を参照してください。

resultsからリンクされるリソース・タイプ

表43-1は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表43-1 linksに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:links:results

44 タグの統合

この章では、設計時にWebCenter Portal Frameworkアプリケーションにタグを統合する方法について説明します。

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

- 第44.1項「タグの概要」

- 第44.2項「タグの基本構成」

- 第44.3項「タグの詳細情報」

タグの管理および組込みの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「タグとブックマークの使用」を参照してください。

関連項目:

検索やタグを使用してカスタム・リソースをレンダリングできるようにする場合や、そのリソースを相互にリンクできるようにする場合には、リソース・ビューアを登録する必要があります。詳細は、第4.3項「サービスでリソースをレンダリングする方法のカスタマイズ」を参照してください。

44.1 タグの概要

タグによって、アイテムに独自の有用な条件が適用可能になり、それらのアイテムを検索結果や「タグ・センター」でより簡単に見つけられるようになります。タグ・センターは、アプリケーション内のすべてのタグ、タグ付けされたアイテムおよびそれらのタグ付けプログラム間の相互作用を表示するページです。

複数のユーザーがオブジェクトにタグ付けすることが、集約的な知識を資することになり、検索性が高まります。WebCenter Portalの検索では、適用されたタグの品質と頻度に基づいた関連性を示すことで、タグ付けによって得られた知識を利用します。

(データのパブリッシャではなく)データのユーザーはタグによって情報を分類できます。このようにして、タグが個人の生産性向上ツールとして、あるいは組織全体で検索性を高める方法として機能します。

たとえば、各部署の人事部窓口のビューを提供するコンポーネントが、アプリケーションに含まれているとします。このコンポーネントでのタグが使用可能になると、参照したユーザーがブックマークを付けたり、他のユーザーが参照しやすいようにHR、連絡先または部門などのタグを割り当てることができます。

タグは、ページ、ドキュメントおよびカスタム・オブジェクトで設定できます。タグを作成すると、自動的にアクティビティ・ストリームへのイベントが公開されます。

44.1.1 タグの理解

タグと呼ばれる有効な条件(複数可)を適用することで、自分自信へ注意を促したり、タグ位置で見つけられることを期待するコンテンツに他のユーザーの注意を促すことができます。タグ・アイコン(図44-1)が表示されている場所であれば、どこでもタグを適用できます。

図44-1 タグ・アイコン

タグによって、アイテムに独自の分類を適用できます。たとえば、phoneタグを製品ページに適用して、新しい電話に関する有用な情報を提供できます。自分や他のユーザーが電話を検索するとき、タグ付けされたページが検索結果に表示されます。

タグ・センターにアクセスすると、アプリケーション以外の場所で同じタグが適用されたすべてのユーザーが表示されます。タグ・センター内のタグ・クラウド(図44-2)には、現在適用されているタグがすべて表示されます。

図44-2 タグ・クラウド

「タグ・クラウド」はすべてのタグのビジュアル表現です。タグは使用頻度に応じて表示され、フォントが大きいほどより頻繁にタグがアイテムに適用されています。タグ・クラウド内のタグをクリックすると、そのタグを使用しているすべてのアイテムのリストを返す検索が実行されます。

44.1.2 タグの要件

タグでは、WebCenter Portalスキーマを設定し、スキーマへのデータベース接続を作成する必要があります。タグの情報は、データベース内に保存されます。詳細は、第4.2.2項「データベース接続の設定」を参照してください。

注意:

通常、フレームワーク・アプリケーションでタグ付けを追加する場合、検索ツールバーも追加してタグの付いたオブジェクトを検索できるようにする必要があります。検索ツールバーを追加するには、第45.2.3項「検索の設計時の追加」の手順に従います。

タグにはセキュリティが必要です。認証されていないユーザーは、オブジェクトにタグ付けすることはできません。アプリケーションが保護されていない場合、検索結果では、タグ付けされたアイテムのページは返されません。

ドキュメントへのタグ付け機能を有効にするには、Frameworkアプリケーションでドキュメント・マネージャ・タスク・フローが使用可能である必要があります。詳細は、第28章「ドキュメントの統合」を参照してください。

44.1.3 実行時の処理

実行時に、タグ・ワードを検索すると、検索結果の「タグ付けしたアイテム」セクションに結果が返されます。デフォルトでは、タグを介してアクセスされるタグ付けしたアイテムは、同じウィンドウを置き換える全画面内でレンダリングされます。これをオーバーライドしてポップアップ・ウィンドウで開くことができます。

カスタム・コンポーネントにタグ付けすることで、検索またはタグ・センターでタグを検索し、タグ付けされたアイテムへ関連付けられたタグによってアクセスできます。

タグ付けされるリソース(したがって検索および表示されるリソース)を公開するツールとサービスに対して、WebCenter Portalでは、リソース・アクション処理フレームワークが提供されます。タグは、このフレームワークを使用して、検索結果を処理することが可能になります。詳細は、第4.3項「サービスでリソースをレンダリングする方法のカスタマイズ」を参照してください。

実行時のタグの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「タグとブックマークの使用」を参照してください。

44.2 タグの基本構成

この項では、アプリケーションにタグを追加するために必要な手順について説明します。内容は次のとおりです。

- 第44.2.1項「タグの接続の設定」

- 第44.2.2項「タグ機能の設計時の追加」

- 第44.2.3項「タグのセキュリティの設定」

44.2.1 タグの接続の設定

タグには、WebCenter Portalスキーマがインストールされているデータベースへの接続が必要です。

データベース接続の設定の詳細は、第4.2.2項「データベース接続の設定」を参照してください。

44.2.2 タグ機能の設計時の追加

基本的なタグ付け機能を有効にするには、タグ付けボタン・コンポーネントかタグ付けメニュー項目コンポーネントのいずれかと、タグ付け - ダイアログ・タスク・フローを追加する必要があります。さらに、カスタム・オブジェクトにタグ付けするには、ユーザーがそのオブジェクトを探す場合のために、タグ付けされたコンポーネントを表示するリソース・ビューアを登録する必要があります。

この項では、タグ付けボタンとタグ付け - ダイアログ・タスク・フローの追加によりタグ付けを有効にする方法について説明します。内容は次のとおりです。

- 第44.2.2.1項「タグのコンポーネント」

- 第44.2.2.2項「タグ・タスク・フロー」

- 第44.2.2.3項「タグ機能をページに追加する方法」

- 第44.2.2.4項「タグ・タスク・フロー・パラメータを変更する方法」

44.2.2.1 タグのコンポーネント

次のJSFコンポーネントを使用できます。

- タグ付けボタン: タグ付けボタンを追加する場合には、ページ上のタグ・リンクによって「このアイテムをタグ付け」(または「このページをタグ付け」)ダイアログを実行時に呼び出すことができます。

- タグ付けメニュー項目: タグ付けメニュー項目を追加する場合には、ページ上のメニュー・オプションによって「このアイテムをタグ付け」(または「このページをタグ付け」)ダイアログを実行時に呼び出すことができます。

「コンポーネント・パレット」で、コンポーネントをページへドラッグ・アンド・ドロップします。結果ダイアログ・ボックスで、タグ・コンポーネントの属性を構成できます。たとえば、SharedParam属性を使用して「共有」チェック・ボックスを無効にします。(default値の場合、チェック・ボックスが有効になり、ユーザーは、チェック・ボックスを自由に選択または選択解除できます。always値の場合、チェック・ボックスはtrue状態で無効になり、すべてのタグはパブリックになります。never値の場合、チェック・ボックスはfalse状態で無効になり、すべてのタグはプライベートになります。)別の例として、ResourceScope属性を使用すると、検索をデフォルト・スコープで実行したが結果は他のスコープに示される場合に、各結果の横に「タグ付け」ボタンがある検索結果リストなどの、異なるスコープ内のオブジェクトにタグ付けできます。コンポーネント属性の詳細は、オンライン・ヘルプを参照してください。

44.2.2.2 タグ・タスク・フロー

表44-1に、タグ・タスク・フローをリストします。

表44-1 タグ・タスク・フロー

タスク・フロー

定義

タグ付け - ダイアログ

このタスク・フローは、特定のオブジェクトにタグ付けするためのダイアログを表示します。ページ上にドロップしたときにレンダリングされる可視のユーザー・インタフェースはありません。タグ付けボタンをクリックしたときにのみ表示されます。

タグ付け - 個人ビュー

このタスク・フローは現在のユーザーによって作成されたタグと、それらのタグが付けられたオブジェクトおよびタグのクラウド・ビューを表示します。サービスIDの入力パラメータによって、目的のタグ付けされたアイテムを表示できます。

これは、非パブリック・タスク・フローであるため、認証が必要です。

タグ付け - 関連リンク

一意のIDによって識別されたオブジェクトの場合、このタスク・フローによって、類似するタグが付けられた他のすべてのオブジェクトがリスト表示されます。

リストされた他のオブジェクトには、同様にタグ付けされたオブジェクトが含まれます。つまり、それらのタグ・セットのうち少なくとも1つは共通しています。リストは共有するタグ数順です。

タグ付け - タグ・クラウド

このタスク・フローは、使用されているすべてのタグのビジュアル表現であるタグ・クラウドを表示します。タグは使用頻度に応じて表示されます。より頻繁に使用されているタグは太字で表示されフォント・サイズが異なります。フォントが大きいほど、より頻繁にタグが適用されています。

タグ・クラウドでタグをクリックすると、タグ・センターにリダイレクトされ、そのタグが選択されます。

このタスク・フローは、タグ付けされたアイテムがあるページに表示されます。そこでは、ページ内のすべてのタグにリンクが付けられます。

タグ付け - タグ選択

タグ・クラウド・タスク・フローと同様に、タグ選択タスク・フローでもタグ・クラウドが表示されます。ただし、タグを選択すると、タグが選択済としてマークされ、結果が関連リソース・タスク・フローに表示されます。タグ・センターにリダイレクトされることはありません。

タグ・クラウドでタグをクリックすると、このタスク・フローとタグ付け - タグ付けしたアイテム・タスク・フローによって、そのタグを使用するアイテムが表示されます。(つまり、タグ付け - タグ・クラウド・タスク・フローでタグを選択することにより、タグ付け - タグ付けしたアイテム・タスク・フローなど、関連するすべてのイベント・コンシューマにタグ・ワードがイベントとして送信されます。)

タグ付け - タグ付けしたアイテム

このタスク・フローには、タグ付け済のアイテム・ページまたはドキュメントが表示されます。渡されたタグによってタグ付けされたアイテムのみを表示するようにそれ自身を調整できます。このタスク・フローは、タグ付け - タグ・クラウド・タスク・フローから送信されたイベントをリスニングできます。

関連項目:

第44.2.2.4項「タグ・タスク・フロー・パラメータを変更する方法」

44.2.2.3 タグ機能をページに追加する方法

タグ機能をWebCenter Portal Frameworkアプリケーションに追加するには:

1. 第2章「開発環境の設定」の手順に従い、カスタマイズ可能なページをアプリケーションで作成します。

2. WebCenter Portalスキーマがインストールされたデータベースへのデータベース接続が設定されていることを確認します。

3. 検索ツールバーを含めたページを開きます。

4. コンポーネント・パレットでタグ付けボタンを選択し、ページのPanelGroupLayout内にドロップします。検索ツールバーの左に配置して、PanelGroupLayoutの最初の子にします。タグ・ボタンによって、ユーザーはタグ付けを開始できます。

5. 「タグ付けボタンの挿入」ダイアログに入力します。表44-2に、ダイアログのフィールドの説明とサンプルの値を示します。

表44-2 「タグ付けボタンの挿入」ダイアログのフィールド

フィールド

説明

ResourceId

タグ付けボタンをバインドするオブジェクトを一意に識別するID。このフィールドの値は静的である必要はありません。たとえば、ELを使用して表の各行の一意の値を挿入できます。例:

- ページにタグ付けするには、#{facesContext.viewRoot.viewId}と入力します。

- カスタム・コンポーネントにタグ付けするには、customComponent123と入力します。

ResourceName

タグ付けボタンをバインドするオブジェクトの名前。このフィールドの値は静的である必要はありません。たとえば、ELを使用して表の各行の一意の値を挿入できます。

- ページにタグ付けするには、#{facesContext.viewRoot.viewId}と入力します。

- カスタム・コンポーネントにタグ付けするには、Custom Component 1と入力します。

ServiceId

アプリケーション全体のID。(リソース・ビューアを追加する際、カスタム・コンポーネントによってservice-definition.xmlに追加します。)

- ページにタグ付けするには、oracle.webcenter.pageと入力します。

- カスタム・コンポーネントにタグ付けするには、mycompany.myproduct.myapp.mycomponentと入力します。

図44-3 カスタム・コンポーネントの「タグ付けボタンの挿入」ダイアログ

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

注意:

タグ付けボタンには、設定可能な追加のプロパティが含まれています。たとえば、SharedParamは、「共有」チェック・ボックスを無効にできます。(default値の場合、チェック・ボックスが有効になり、ユーザーは、チェック・ボックスを自由に選択または選択解除できます。always値の場合、チェック・ボックスはtrue状態で無効になり、すべてのタグはパブリックになります。never値の場合、チェック・ボックスはfalse状態で無効になり、すべてのタグはプライベートになります。)

7. リソース・パレットで「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。

8. ページ上のリソース・パレットから「タグ付け - ダイアログ」をドラッグ・アンド・ドロップし、オプションで匿名ページのログイン用にリダイレクションURLを追加します。

9. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

10. カスタム・リソースの場合に、リソース・ビューアを登録するには、第4.3項「サービスでリソースをレンダリングする方法のカスタマイズ」の手順を参照してください。タグ付けされるリソース(したがって検索および表示されるリソース)を公開するツールとサービスに対して、WebCenter Portalでは、リソース・アクション処理フレームワークが提供されます。タグは、このフレームワークを使用して、検索結果を処理することが可能になります。

タグを追加した「ソース」ビューには、例44-1に似たソースが表示されます。

例44-1 タグ付けボタンおよびタグ付け - ダイアログ・タスク・フローのソース

<af:form id="f1">
<af:region value="#{bindings.searchtoolbar1.regionModel}" id="r1"/>
<tag:taggingButton resourceId="#{facesContext.viewRoot.viewId}"
serviceId="oracle.webcenter.page"
resourceName="#{facesContext.viewRoot.viewId}"
id="tb1"/>
<af:region value="#{bindings.tagginglaunchdialog1.regionModel}"
id="r2"/>
</af:form>

注意:

ページに複数のタグ付けボタンがある場合でも、必要なタグ付けダイアログaf:regionは1つのみです。

タグ付けボタンとタグ付け - ダイアログ・タスク・フローがあるページを実行します。このページがブラウザでレンダリングされたら、「タグ」リンクをクリックします。

1. ダイアログが表示されたら、homeと入力し、「保存」をクリックします。システムの各ユーザーがこの同じ操作を実行し、同じタグを割り当てることができます。つまり、タグの重み付けコレクションを得ることができます。

2. 検索ツールバーで、検索条件のhomeを入力して、「検索」アイコンをクリックします。

3. 「タグ」の下に検索結果としてhomeが表示され、「タグ付けしたアイテム」の下に検索結果としてCustom Component 1が表示されます。

4. Custom Component 1をクリックすると、作成したリソース・ビューアを表示するダイアログが開きます(図44-4)。

図44-4 リソース・ビューア

44.2.2.4 タグ・タスク・フロー・パラメータを変更する方法

一部のタグ・タスク・フローには、オプションのタスク・フロー・バインディング・パラメータがあります。

注意:

タグ・タスク・フローのプロパティは、別のリソースや別のサービスのアイテムを表示する必要がないかぎり変更しないでください。

ページにタスク・フローを配置した後、タスク・フロー・バインディング・パラメータの値を確認して調整するには:

1. ページの下部にある「バインディング」タブ(next to the 「ソース」タブの横)をクリックし、「タスク・フロー・バインディングの編集」ダイアログにナビゲートします。

2. 「実行可能ファイル」の下に、追加したタスク・フローが表示されます。図44-5に、「実行可能ファイル」セクションに検索タスク・フローが表示されている例を示します。

図44-5 ページ・データ・バインディング定義

3. タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログ図44-6で、必要に応じてバインディング・パラメータ値を変更します。

図44-6 タグ付け - 関連リンク・タスク・フロー用の「タスク・フロー・バインディングの編集」ダイアログ

5. 終了したら、「OK」をクリックします。

6. ページを保存して実行し、結果を表示します。

表44-3に、タグ・タスク・フロー固有のプロパティを示します。

表44-3 タグ・タスク・フロー・パラメータ

プロパティ

説明

タスク・フロー

resourceId

類似のタグ付きアイテムを検索するために使用される特定のツール/サービス内におけるアイテムまたはリソースの一意のID。この値は自動的に設定されます。

別のリソースと類似するアイテムを表示する必要がないかぎりこの値は変更しないでください。

タグ付け - 関連リンク

serviceId

このパラメータは、関連リンク・タスク・フローと個人ビュー・タスク・フローでは異なった意味を持ちます。

- 関連リンクの場合、関連リンクを持つアイテムを定義するresourceId/serviceIdのペアです。この値は自動的に設定されます。別のツール/サービスに属する別のリソースに類似するアイテムを表示する必要がないかぎりこの値は変更しないでください。

- 個人ビューの場合、このツール/サービスでタグを制限します。たとえば、oracle.webcenter.pageになります。

タグ付け - 関連リンク

タグ付け - 個人ビュー

resourceScope

タグのスコープ。この値は自動的に設定されます(#{spaceContext.currentSpaceGUID}と、s8bba98ff_4cbb_40b8_beee_296c916a23edに類似する値のいずれか)。

この値を変更しないでください。

タグ付け - タグ・クラウド

タグ付け - タグ選択

タグ付け - タグ付けしたアイテム

redirectURL

匿名ページ・ログイン用のオプションのリダイレクションURL。これには、/faces#{facesContext.viewRoot.viewId}のように/faces接頭辞を含める必要があります。nullまたは空の場合、ログインは表示されません。

タグ付け - ダイアログ

44.2.3 タグのセキュリティの設定

タグにはセキュリティが必要です。認証されていないユーザーは、オブジェクトにタグ付けすることはできません。アプリケーションが保護されていない場合、検索結果では、タグ付けされたアイテムのページは返されません。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第74.3項「ADFセキュリティの構成」を参照してください。

注意:

カスタム・オブジェクトを検索またはタグを使用して検出できるように、リソース・ビューアを登録する必要があります。ユーザーがリソースを参照できるかどうかをリソース・ビューアのauthorizerClassが決定する方法は、第4.3項「サービスでリソースをレンダリングする方法のカスタマイズ」を参照してください。

44.3 タグの詳細情報

この項では、タグで使用可能なオプション機能について説明します。内容は次のとおりです。

- 第44.3.1項「タグJava APIの使用」

- 第44.3.2項「タグREST APIの使用」

- 第44.3.3項「ページにタグを表示するオプションの方法」

- 第44.3.4項「カスタム・オブジェクトにタグ付けするリソース・アクション処理フレームワークの使用方法」

- 第44.3.5項「タグのトラブルシューティング」

注意:

タグ付けコンポーネントのロギング・レベルは、(他のコンポーネントと同様に)WLSホームの配下にあるlogging.xmlファイルで高くすることができます。

44.3.1 タグJava APIの使用

カスタム・コンポーネントにタグAPIを実装し、WebCenter Portal REST APIまたはタグ・タスク・フローおよびコンポーネントと互換性のあるタグ付けバックエンドを作成できます。

Java APIの詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

44.3.2 タグREST APIの使用

WebCenter Portalは、タグをサポートするためのREST APIを提供しています。タグREST APIを使用して、次のことを実行できます。

- すべてのタグを検索するか、基準によって一部のタグを検索する

- 特定のタグを取得する

- タグを削除する

- タグをアップデートまたは名前変更する

- タグ付けされたアイテムを取得する

- アイテムからタグを解除する

- 新しいタグ付けしたアイテムを追加する

- タグ付けしたアイテムのタグを変更する

- タグ付けしたすべてのアイテムを検索するか、タグ付けしたアイテムを日付やタグ・ワードなどのフィルタによって検索する

- タグによって関連ユーザーを取得する

この項では、タグに関連したREST APIについて説明します。内容は次のとおりです。

- 第44.3.2.1項「タグ・エントリ・ポイント」

- 第44.3.2.2項「タグ・リソース・タイプの分類」

- 第44.3.2.3項「セキュリティに関する考慮事項」

- 第44.3.2.4項「タグ・リソース・タイプ」

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

44.3.2.1 タグ・エントリ・ポイント

各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。タグのエントリ・ポイントを見つけるには、次のいずれかのresourceTypeを持つリンク要素を見つけます。

- urn:oracle:webcenter:tagging:tags

- urn:oracle:webcenter:tagging:taggeditems

- urn:oracle:webcenter:tagging:users

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供されます。クライアントはこのエントリ・ポイントにHTTPリクエストを送信して、タグを操作します。

リソース索引の詳細は、第53.5.1項「リソース索引の使用」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

44.3.2.2 タグ・リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」の該当の項を参照してください。

タグの分類は、次のとおりです。

urn:oracle:webcenter:tagging:tags
urn:oracle:webcenter:tagging:tag
urn:oracle:webcenter:tagging:taggedItems
urn:oracle:webcenter:tagging:taggedItem
urn:oracle:webcenter:tagging:users

usersの下に、peopleprofileなどのそのオブジェクトのリソース・タイプを追加できます。

サービス・エントリ・ポイントの他、URLテンプレートにより、クライアントは、問合せパラメータを渡してリクエストをカスタマイズしたり戻されたデータのフォームを制御できます。

タグ・リソース内のコレクション・リソースは、ページ区切り(タグとユーザーにはitemsPerPageおよびstartIndex、タグ付けしたアイテムにはitemsPerPage)をサポートします。その他の問合せパラメータ(searchおよびprojection)はサポートされていません。

44.3.2.3 セキュリティに関する考慮事項

認証は、REST APIのメソッドを使用する前に必要です。

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

44.3.2.4 タグ・リソース・タイプ

この項では、各リソース・タイプについて説明します。内容は次のとおりです。

- 第44.3.2.4.1項「urn:oracle:webcenter:tagging:tags」

- 第44.3.2.4.2項「urn:oracle:webcenter:tagging:tag」

- 第44.3.2.4.3項「urn:oracle:webcenter:tagging:taggedItems」

- 第44.3.2.4.4項「urn:oracle:webcenter:tagging:taggedItem」

- 第44.3.2.4.5項「urn:oracle:webcenter:tagging:users」

44.3.2.4.1 urn:oracle:webcenter:tagging:tags

このリソース・タイプを使用して、URIを識別し、タグの参照(GET)に使用します。GET操作からのレスポンスには、すべてのタグ、特定のタグ、タグのサブセット、あるいは特定のタグまたはユーザーのリストに関連するタグが含まれています。

tagsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
tags

resourceindex
spaces
spaces:resourceindex
spaces:tags

tagsでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし、パラメータ: startIndex、itemsPerPage、keyword、serviceId、relatedTag、userId、scopeGuid、shared、tags、users

- レスポンス - 本体: タグ

ここで:

- startIndex - 結果セットに含める、最初に一致する結果のインデックスを指定します(0-n ... 0から始まる)。これはページ区切りに使用されます。

- itemsPerPage - レスポンスで返す結果の最大数を指定します(1-n)。これはページ区切りに使用されます。

- keyword - サブストリング・マッチ用のキーワードを指定します。

- serviceId - タグを検索するためのサービスIDを指定します(すべての場合は、null)。

- relatedTag - タグのリストに関連するタグを指定します。たとえば、アイテム1に「webcenter help」として、アイテム2に「webcenter document」としてタグ付けし、relatedTag=webcenterを設定した場合は、両方(helpとdocument)のタグが返されます。

- userId - タグを検索する単一のユーザーIDを指定します(すべての場合は、null)。nullで共有タグが見つからない場合は、ログイン済ユーザーを使用します。

- scopeGuid - ポータルのGUIDを指定します。ホーム・ポータルに設定すると、すべての(フィルタされていない)タグが表示されます。

- shared - 個人用リソース(同じユーザーによってのみプライベートにタグ付けされたリソース)のみを返すにはtrueを指定し、システム・リソース(1つ以上のパブリック・タブを持つリソース)を返すにはfalseを指定します。

- tags - URLエンコードのスペース(+)で区切られたこのタグ・リストでフィルタするように指定します。たとえば、「webcenter」と「help」がタグ付けされたアイテムは、tags=webcenter+helpで検索できます。

- users - URLエンコードのスペース(+)で区切られたこのユーザー・リストでフィルタするように指定します。たとえば、users=monty+vicki+pat。

注意:

パラメータは一定の組合せのみで使用できます。

表44-4は、各操作で使用可能なパラメータの組合せを示しています。たとえば、tagsパラメータはserviceIdパラメータと一緒には指定できません。

表44-4 タグの取得で使用可能なパラメータの組合せ

APIメソッド

keyword

serviceId

relatedTag

userId

scopeGuid

shared

タグ

ユーザー

findRelatedSystemTags

X

X

X

X

findPopularTagsCommon

X

X

X

X

findPopularTags (GUIDを使用)

X

X

X

X

findPopularTags

X

X

X

tagsからリンクされるリソース・タイプ

resourceTypeリンク属性は、リンクが指すリソースのタイプを示しています。クライアントはresourceTypeを使用して、GETおよびPOSTの予測されるレスポンス本文とPOSTおよびPUTの許容されるリクエスト本文を判断します。

表44-5は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。タグには、それ自身と、結果の次のページまたは前のページへのリファレンス・リンクがあります。

表44-5 tagsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:tagging:tags

前/次

urn:oracle:webcenter:tagging:tags

44.3.2.4.2 urn:oracle:webcenter:tagging:tag

このリソース・タイプを使用して、URIを識別し、タグの参照(GET)、名前変更(PUT)および削除(DELETE)に使用します。GET操作からのレスポンスには、すべてのタグ、特定のタグ、タグのサブセット、あるいは特定のタグまたはユーザーのリストに関連するタグが含まれています。

tagへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
tags
tag

resourceindex
spaces
spaces:resourceindex
spaces:tags
spaces:tag

tagでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし、パラメータ: なし

- レスポンス - 本体: タグ

- PUT

- リクエスト - 本体: タグ

- レスポンス - 本体: タグ

- DELETE

- リクエスト - 本体: なし

- レスポンス - 本体: なし

例44-2 タグ名を変更するためのPUTコマンドの本文

<tag>
<name>newId</name>
</tag>

tagからリンクされるリソース・タイプ

resourceTypeリンク属性は、リンクが指すリソースのタイプを示しています。クライアントはresourceTypeを使用して、GETおよびPOSTの予測されるレスポンス本文とPOSTおよびPUTの許容されるリクエスト本文を判断します。

表44-6は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。タグには、それ自身、関連するtaggedItem、関連するユーザーおよび関連するタグへのリファレンス・リンクがあります。

表44-6 tagに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:tagging:tag

urn:oracle:webcenter:tagging:taggedItems

urn:oracle:webcenter:tagging:users

urn:oracle:webcenter:tagging:tags

44.3.2.4.3 urn:oracle:webcenter:tagging:taggedItems

このリソース・タイプを使用して、タグ付けされたアイテムと関連するリソースを参照するため(GET)またはタグ付けされたアイテムを追加するため(POST)に使用するURIを識別します。

GET操作のレスポンスには、1つのタグ付きアイテムまたは日付、タグ・ワードなどでフィルタできるすべてのタグ付きアイテムが含まれています。各タグには、そのタグでの操作に使用されるリンクがあります。POST操作のレスポンスには、このタグのコレクション内で作成されたタグ付きアイテムとそれらのタグでの操作に使用されるリンクが含まれています。

taggedItemsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
taggedItems

resourceindex
spaces
spaces:resourceindex
spaces:taggedItems

taggedtemsでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- POST

- リクエスト - 本体: taggedItem

- レスポンス - 本体: taggedItem

<taggeditem>
<serviceId>oracle.webcenter.page</serviceId>

<resourceId>/oracle/webcenter/page/somepath/someotherpath/a.jspx</resourceId>
<tagWords>foo bar boo far</tagWords>
<resourceTitle>This is renamed by me to be foofoo</resourceTitle>
<scopeGuid>(optional) scope for the item</scopeGuid>
<shared>(optional) make the item private </shared>
</taggeditem>

- GET

- リクエスト - 本体: なし、パラメータ: serviceId、keyword、relatedRID、tags、users、dt、scopeGuid、shared、itemsPerPage

- レスポンス - 本体: タグ付けしたアイテム

ここで:

- serviceId - アイテムのサービスIDを指定します。

- keyword - リソースのタイトルのキーワードを指定します。

- relatedRID - 関連するタグを指定します。たとえば、アイテム1に「webcenter help」として、アイテム2に「fusionapps documents」として、アイテム3に「webcenter documents」としてタグ付けし、relatedRID=item3を設定すると、アイテム3と共通のタグを共有しているため、アイテム1とアイテム2が返されます。

- tags - URLエンコードのスペース(+)で区切られたこのタグ・リストでフィルタするように指定します。たとえば、「webcenter」と「help」がタグ付けされたアイテムは、tags=webcenter+helpで検索できます。

- users - URLエンコードのスペース(+)で区切られたこれらのユーザーでフィルタするように指定します。たとえば、{USER}+{USER}+...+{USER}。

- dt - この日付、デフォルトではブックマークが保存された最近の日付{DD-MM-CCYY}でブックマークをフィルタするように指定します。

- scopeGuid - ポータルのGUIDを指定します。ホーム・ポータルに設定すると、すべての(フィルタされていない)タグが表示されます。

- shared - 個人用リソース(同じユーザーによってのみプライベートにタグ付けされたリソース)のみを返すにはtrueを指定し、システム・リソース(1つ以上のパブリック・タブを持つリソース)を返すにはfalseを指定します。

- itemsPerPage - レスポンスで返す結果の最大数を指定します(1-n)。これはページ区切りに使用されます。

注意:

パラメータは一定の組合せのみで使用できます。

表44-7は、各操作で使用可能なパラメータの組合せを示しています。たとえば、tagsパラメータはserviceIdパラメータと一緒には指定できません。

表44-7 タグ付きアイテムを取得するために使用可能なパラメータの組合せ

APIメソッド

serviceId

keyword

relatedRID

タグ

ユーザー

dt

scopeGuid

shared

findRelatedSystemResources

X

X

findUpdatedResources

X

X

findSystemResources

X

X

X

X

findFilterPersonalResources

X

X

X

findPersonalResources

X

X

X

X

findFilteredPersonalResources(キーワードなし)

X

X

taggedItemsからリンクされるリソース・タイプ

resourceTypeリンク属性は、リンクが指すリソースのタイプを示しています。クライアントはresourceTypeを使用して、GETおよびPOSTの予測されるレスポンス本文とPOSTおよびPUTの許容されるリクエスト本文を判断します。

表44-8は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。タグ付きアイテムには、それ自身と、結果の次のページまたは前のページへのリファレンス・リンクがあります。

表44-8 taggedItemsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:tagging:taggedItems

前/次

urn:oracle:webcenter:tagging:taggedItems

44.3.2.4.4 urn:oracle:webcenter:tagging:taggedItem

このリソース・タイプを使用して、タグ付けされたアイテムと関連するリソースを参照するため(GET)、タグ付けされたアイテムを追加するため(POST)、タグ付けされたアイテムのタグを更新するため(PUT)およびアイテムからすべてのタグを削除するため(DELETE)に使用するURIを識別します。

GET操作のレスポンスには、1つのタグ付きアイテムまたは日付、タグ・ワードなどでフィルタできるすべてのタグ付きアイテムが含まれています。各タグには、そのタグでの操作に使用されるリンクがあります。POST操作のレスポンスには、このタグのコレクション内で作成されたタグ付きアイテムとそのタグ付きアイテムで操作するためのリンクが含まれています。

taggedItemへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
taggedItems
taggedItem

resourceindex
spaces
spaces:resourceindex
spaces:taggedItems
spaces:taggedItem

taggedItemでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし、パラメータ: serviceId、keyword、tags、users、dt、shared、itemsPerPage

- レスポンス - 本体: タグ付けしたアイテム

ここで:

- serviceId - アイテムのサービスIDを指定します。

- keyword - リソースのタイトルのキーワードを指定します。

- tags - URLエンコードのスペース(+)で区切られたこのタグ・リストでフィルタするように指定します。たとえば、「webcenter」と「help」がタグ付けされたアイテムは、tags=webcenter+helpで検索できます。

- users - URLエンコードのスペース(+)で区切られたこのユーザー・リストでフィルタするように指定します。たとえば、users=monty+vicki+pat。

- dt - この日付、デフォルトではブックマークが保存された最近の日付{DD-MM-CCYY}でブックマークをフィルタするように指定します。

- shared - 個人用リソース(同じユーザーによってのみプライベートにタグ付けされたリソース)のみを返すにはtrueを指定し、システム・リソース(1つ以上のパブリック・タブを持つリソース)を返すにはfalseを指定します。

- itemsPerPage - レスポンスで返す結果の最大数を指定します(1-n)。これはページ区切りに使用されます。

- PUT

- リクエスト - 本体: taggedItem

- レスポンス - 本体: taggedItem

<taggeditem>
<tagWords>foo bar boo far</tagWords>
</taggeditem>

- DELETE

- リクエスト - 本体: なし

- レスポンス - 本体: なし

taggedItemからリンクされるリソース・タイプ

resourceTypeリンク属性は、リンクが指すリソースのタイプを示しています。クライアントはresourceTypeを使用して、GETおよびPOSTの予測されるレスポンス本文とPOSTおよびPUTの許容されるリクエスト本文を判断します。

表44-9は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。タグ付きアイテムには、それ自身および関連するタグ付きアイテムへのリファレンス・リンクと外部リンクがあります。

表44-9 taggedItemに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:tagging:taggedItem

urn:oracle:webcenter:tagging:taggedItems

alternate

リソースのタイプは、タグが付けられたリソースのタイプによって異なります。たとえば、ページはurn:oracle:webcenter:page:pageのようになります

44.3.2.4.5 urn:oracle:webcenter:tagging:users

このリソース・タイプを使用して、特定のタグのリストに関係するピープルのリストを取得します。

usersへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
taggingusers

resourceindex
spaces
spaces:resourceindex
spaces:taggingusers

usersでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし、パラメータ: startIndex、itemsPerPage、tags、users

- レスポンス - 本体: peopleプロファイル

ここで:

- startIndex - 結果セットに含める、最初に一致する結果のインデックスを指定します(0-n ... 0から始まる)。これはページ区切りに使用されます。

- itemsPerPage - レスポンスで返す結果の最大数を指定します(1-n)。これはページ区切りに使用されます。

- tags - URLエンコードのスペース(+)で区切られたこのタグ・リストでフィルタするように指定します。たとえば、「webcenter」と「help」がタグ付けされたアイテムは、tags=webcenter+helpで検索できます。

- users - URLエンコードのスペース(+)で区切られたこのユーザー・リストでフィルタするように指定します。たとえば、users=monty+vicki+pat。

usersからリンクされるリソース・タイプ

resourceTypeリンク属性は、リンクが指すリソースのタイプを示しています。クライアントはresourceTypeを使用して、GETおよびPOSTの予測されるレスポンス本文とPOSTおよびPUTの許容されるリクエスト本文を判断します。

表44-10に、個々のユーザーがこのリソースからリンクできるリソース・タイプを示します。ユーザーには、それ自身と、結果の次のページまたは前のページへのリファレンス・リンクがあります。

表44-10 usersに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:tagging:users

前/次

urn:oracle:webcenter:tagging:users

44.3.3 ページにタグを表示するオプションの方法

タグ付けボタンとタスク・フローを1ページごとに追加することは可能ですが、通常は、ページを構築する際に適用するページ・テンプレートの一部として検索ツールバーとタグを追加します。ページ・テンプレートを使用してタグを追加するには:

1. タグを含むページを作成するプロジェクトを開きます。

2. プロジェクト名を右クリックし、ポップアップ・メニューから「新規」を選択します。

3. 「カテゴリ」で「JSF」を選択し、「項目」で「JSFページ・テンプレート」を選択します。

4. 「ファイル名」にlooksee1templateと入力します。

図44-7 「JSFページ・テンプレートの作成」ダイアログ

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

6. 「ソース」ビューに移り、例44-3のようにコードを変更します。

例44-3 サンプルJSFページ・テンプレート

<af:pageTemplateDef var="attrs">
<af:xmlContent>
<component xmlns="http://xmlns.oracle.com/adf/faces/rich/component">
<display-name>looksee1template1</display-name>
<facet>
<facet-name>content</facet-name>
</facet>
</component>
</af:xmlContent>
<af:panelGroupLayout layout="vertical">
<!-- Our toolbar -->
<af:panelGroupLayout id="toolbar" layout="horizontal" halign="end"
inlineStyle="background-color:cyan;width:100%">
</af:panelGroupLayout>
<af:panelStretchLayout startWidth="300"
inlineStyle="height:600px; width:100%;">
<f:facet name="start">
<af:panelSplitter id="sidebar" orientation="vertical">
<f:facet name="first">
</f:facet>
<f:facet name="second">
</f:facet>
</af:panelSplitter>
</f:facet>
<f:facet name="center">
<af:facetRef facetName="content"/>
</f:facet>
</af:panelStretchLayout>
</af:panelGroupLayout>
</af:pageTemplateDef>

7. コンポーネント・パレットでタグ付けボタンを選択し、ページのPanelGroupLayout内にドロップします。これをPanelGroupLayoutの最初の子にします。

8. 図44-8に示すように「タグ付けボタンの挿入」ダイアログに入力します。
表44-11に、ダイアログのフィールドの説明とサンプルの値を示します。

表44-11 ページの「タグ付けボタンの挿入」ダイアログ・ボックスのフィールド

フィールド

説明

ResourceId

ページの一意の識別子。

このケースでは、リソースIDはページを表すため、#{facesContext.viewRoot.viewId}と入力します。

ResourceName

ページの名前。

このケースでは、#{facesContext.viewRoot.viewId}と入力します。(よりわかりやすい名前の入力も可能です。)

ServiceId

リソース・ビューアを追加する際、service-definition.xmlに追加するサービス識別子。

このケースでは、oracle.webcenter.pageと入力します。

注意: oracle.webcenter.pageは、ページ・サービス・ライブラリで利用可能なため、service-definition.xmlに追加が必要なものはありません。

図44-8 ページの「タグ付けボタンの挿入」ダイアログ

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

10. リソース・パレットで「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。

11. リソース・パレットから「タグ付け - ダイアログ」をドラッグし、ページのpanelGroupLayout内にドロップします。

12. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

13. 「検索ツールバー」をドラッグし、ページ・テンプレートのpanelGroupLayoutに先ほど追加した「タグ付け - ダイアログ」の後にドロップします。

14. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

15. 「ドキュメント・ライブラリ - 最近のドキュメント」をドラッグし、識別子sidebarを持つpanelSplitterの2番目のファセットにドロップします。

16. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

17. 「タスク・フロー・バインディングの編集」ダイアログで、${'MyFileSystem'}などのドキュメント・ライブラリのコンテンツ・リポジトリへの接続の名前をconnectionNameに入力します。コンテンツ・リポジトリへの接続の設定に関する詳細は、第25.2項「コンテンツ・リポジトリ接続の構成」を参照してください。

18. ページ・テンプレートのソースは、例44-4のようになります。

例44-4 タグおよび検索を含むJSFページ・テンプレート

<af:pageTemplateDef var="attrs">
<af:xmlContent>
<component xmlns="http://xmlns.oracle.com/adf/faces/rich/component">
<display-name>looksee1template1</display-name>
<facet>
<facet-name>content</facet-name>
</facet>
</component>
</af:xmlContent>
<af:panelGroupLayout layout="vertical">
<!-- Our toolbar -->
<af:panelGroupLayout id="top" layout="horizontal" halign="end"
inlineStyle="background-color:cyan;width:100%">
<tag:taggingButton resourceId="#{facesContext.viewRoot.viewId}"
resourceName="#{facesContext.viewRoot.viewId}"
serviceId="oracle.webcenter.page"/>
<af:region value="#{bindings.tagginglaunchdialog1.regionModel}"
id="tagginglaunchdialog1"/>
<af:region value="#{bindings.searchtoolbar1.regionModel}"
id="searchtoolbar1"/>
</af:panelGroupLayout>
<af:panelStretchLayout startWidth="300"
inlineStyle="height:600px; width:100%;">
<f:facet name="start">
<af:panelSplitter orientation="vertical">
<f:facet name="first">
<af:region value="#{bindings.taskservicetaskflowdefinition1.regionModel}"
id="taskservicetaskflowdefinition1"
inlineStyle="position:absolute; left:0px; width:100%;
height:100%"/>
</f:facet>
<f:facet name="second">
<af:region value="#{bindings.doclibrecentdocuments1.regionModel}"
id="doclibrecentdocuments1"/>
</f:facet>
</af:panelSplitter>
</f:facet>
<f:facet name="center">
<af:facetRef facetName="content"/>
</f:facet>
</af:panelStretchLayout>
</af:panelGroupLayout>
</af:pageTemplateDef>

19. 先ほど作成したページ・テンプレートを基に、2つの新規ページを作成します。「JSFページの作成」ダイアログ・ボックスで、「ページ・テンプレートの使用」プルダウン・リストから「looksee1template1」を選択します。

- Search.jspxという名前のページを作成し、中央ファセットに検索タスク・フローを追加します。

- Documents.jspxという名前のページを作成し、中央ファセットにドキュメント・ライブラリ - リスト・ビュー・タスク・フローを追加します。「タスク・フロー・バインディングの編集」ダイアログで、${'MyFileSystem'}などのドキュメント・ライブラリのコンテンツ・リポジトリへの接続の名前をconnectionNameに入力します。コンテンツ・リポジトリへの接続の設定に関する詳細は、第25.2項「コンテンツ・リポジトリ接続の構成」を参照してください。

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

ページをタグによって実行するには:

1. アプリケーション・ナビゲータでSearch.jspxページを実行します。

2. ログインしてページが表示されたら、「タグ」リンクをクリックします。

3. 「このページをタグ付け」ダイアログ・ボックスで、「タグ」にsearch page test customappと入力します(図44-9)。

図44-9 検索ページの「このページをタグ付け」ダイアログ・ボックス

4. 「保存」をクリックします。

5. Documents.jspxに移ります(または、これを個別に実行します)。

6. 「タグ」リンクをクリックします。

7. 「このページをタグ付け」ダイアログ・ボックスで、「タグ」にdoclib documents page test customappと入力します(図44-10)。

図44-10 ドキュメント・ページの「このページをタグ付け」ダイアログ・ボックス

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

9. Documents.jspxページの検索ツールバーにsearchと入力し、検索アイコンをクリックします。

10. 「タグ」でsearchをクリックします。

44.3.4 カスタム・オブジェクトにタグ付けするリソース・アクション処理フレームワークの使用方法

タグ付けされるリソース(したがって検索および表示されるリソース)を公開するツールとサービスに対して、WebCenter Portalでは、リソース・アクション処理フレームワークが提供されます。たとえば、表内の行にタグ付けできます。

リソース・ビューアを登録するには、第4.3項「サービスでリソースをレンダリングする方法のカスタマイズ」を参照してください。

44.3.5 タグのトラブルシューティング

この項では、タグの実装に関するトラブルシューティングのヒントについて説明します。内容は次のとおりです。

- 第44.3.5.1項「タグをクリックしたときにタグ・センターの結果が表示されない」

- 第44.3.5.2項「タグ付けしたドキュメントがタグ・センターに表示されない」

- 第44.3.5.3項「ページにタグ付けボタンが表示されない」

- 第44.3.5.4項「タグ付けしたリソースをクリックしても正しいページに移動しない」

44.3.5.1 タグをクリックしたときにタグ・センターの結果が表示されない

問題

ユーザーが表示権限を持つリソースがタグ付け済ですが、ユーザーがタグ・センターでそのリソースを参照できません。

解決方法

1. service-definition.xmlで、リソース・タイプにリソース・オーサライザが適切に構成されていることを確認してください。

2. リソース・オーサライザのロギングを有効化することで、必要なオブジェクトを参照する権限が与えられていることを確認してください。

44.3.5.2 タグ付けしたドキュメントがタグ・センターに表示されない

問題

タグ付けしたWebCenter Portalコンテンツ・サーバーのドキュメントがタグ・センターに表示されません。

解決方法

コンテンツ・サーバーでWebCenter Portalコンポーネントのバーションを確認します。WebCenter Portalリリース11.1.1.6.0では結果セット名が変更されています。

44.3.5.3 ページにタグ付けボタンが表示されない

問題

タグ付けボタン・コンポーネントをページにドロップしても、表示されません。

解決方法

- タグ付けボタンは、ページにタグ付けダイアログ・タスク・フローが存在することを必要とします。このタスク・フローをページまたはページ・テンプレートにドロップしてください。

- タグ付けボタンは、有効なデータベース接続を必要とします。データベース接続が存在することを確認してください。

44.3.5.4 タグ付けしたリソースをクリックしても正しいページに移動しない

問題

タグ付けしたリソースをタグ・センターでクリックしても正しいページにリダイレクトされません。

解決方法

タグ付けリンクはすべて、リソース・アクション処理(RAH)フレームワークによって生成されます。RAHが適切に構成されていることを確認してください。

- リソース・ビューアが適切に構成されているかどうかを確認するために、そのリソース・タイプについてservice-definition.xmlを確認してください。

- このリソースに渡されたresourceIDおよびserviceIDパラメータが正しいことを確認してください。

関連項目:

第4.3項「サービスでリソースをレンダリングする方法のカスタマイズ」

45 検索の統合

この章では、設計時に検索を統合する方法について説明します。

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

- 第45.1項「検索の概要」

- 第45.2項「検索の基本構成」

- 第45.3項「検索の詳細情報」

検索の管理および組込みの詳細は、次を参照してください。

- Oracle Fusion Middleware Oracle WebCenter Portalの管理のWebCenter PortalのOracle Secure Enterprise Searchの管理に関する項

- Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のポータルへの検索の追加に関する項

- 『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の情報の検索に関する項

45.1 検索の概要

WebCenter Portalは、直観的なユーザー・インタフェースを介して情報を検出できる統一された拡張可能なフレームワークを提供しています。このフレームワークでは、ユーザーが表示権限を持つ結果のみを返すことにより、アプリケーションのセキュリティ設定を順守します。

WebCenter Portalには、アプリケーションを検索する次の2つの方法が用意されています。

- Oracle Secure Enterprise Search (SES)アダプタ

- Oracle WebCenter Portalライブ(委任)検索

Oracle SESがデフォルトの推奨検索プラットフォームとして設定されます。WebCenter Portalのライブ検索より高度なスケーラビリティとパフォーマンスを提供する以外にも、Oracle SESは次の理由で有益です。

- Oracle SESでは、統合ランキング結果を提供します。その場合、最も関連性の高い項目が最初に表示されます。

- Oracle SESは、より徹底した検索を提供します。たとえば、リストを検索する場合、WebCenter Portalライブ検索はリスト名と説明のみを検索しますが、Oracle SESはリストの列名と列のコンテンツも検索します。

- Oracle SESでは、WebCenter Portal外のリポジトリの検索が可能です。Oracle SES検索の結果は、WebCenter Portalの検索結果と同じ結果セットに表示されます。

- Oracle SESでは、検索インタフェースをカスタマイズするための検索REST APIとデータ・コントロールがサポートされています。

Oracle SESまたはライブ検索機能に加え、ドキュメント・ツールはファイル検索用の独自の検索エンジンを提供しています。これにより、ファイルの検索範囲を絞り込むことができるため、時間が節約される上、検索結果の妥当性が向上します。

45.1.1 検索の理解

Oracle SESを使用した検索を実行するには、Oracle SES Administration、Oracle WebCenter Content: Content ServerおよびOracle WebCenter Portalのディスカッション・サーバーで追加の構成が必要です。

Oracle SESリリース11.2.2.2 (WebCenter Portalリリース11.1.1.8に含まれている)の使用を強くお薦めします。

注意:

この章では、Oracle SESリリース11.2.2.2とPortal Frameworkアプリケーションの統合方法について説明します。かわりにOracle SESリリース11.1.2または11.1.2.2を選択する場合は、次を参照してください。

http://docs.oracle.com/cd/E28280_01/webcenter.1111/e10148/jpsdg_search.htm#BABBDFDC

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

- 第45.1.1.1項「WebCenter Portalライブ検索を使用した検索の理解」

- 第45.1.1.2項「Oracle SESアダプタを使用した検索の理解」

- 第45.1.1.3項「検索結果に対するクリック・アクション」

45.1.1.1 WebCenter Portalライブ検索を使用した検索の理解

Oracle SESは最高のパフォーマンスを実現するための優先検索プラットフォームですが、Oracle SESを使用した検索を手動でオーバーライドして、アプリケーション検索でWebCenter Portalのライブ(委任)検索を使用することもできます。WebCenter Portalのライブ検索アダプタでは、ドキュメント、タグ、ピープル、ページなど、有効かつ検索可能なすべてのコンポーネントが対象になります。

関連項目:

第45.3.2項「WebCenter Portalのライブ検索を使用する検索の構成」

45.1.1.2 Oracle SESアダプタを使用した検索の理解

Oracle SESは、次のリソースについての統合ランキング結果を提供します。

- ドキュメント(Wikiやブログを含む)

- お知らせおよびディスカッション

注意:

WebCenter Portalアプリケーションには、ポータル、リスト、ページ・メタデータおよびピープルの各リソースを索引付けするOracle SESクローラが組み込まれています。このクローラはPortal Frameworkアプリケーションではサポートされていません。

ユーザーの検索環境は、構成されているOracle SESのバージョンによって異なります。例:

- Oracle SES 11.2.2.2で構成されている場合は、「ツールとサービス - 検索」管理ページで検索をカスタマイズできます。Oracle SES 11.2.2.2はファセット検索、検索ボックスでフィルタされた検索およびドキュメントのサムネイルをサポートしていますが、Oracle SESの以前のリリースおよびライブ(委任)検索による実装はサポートしていません。(Oracle SES 11.2.2.2を使用するカスタマイズはすべて、タスク・フロー・パラメータにより表示される場合も、「ツールとサービス - 検索」管理ページで実行されます。)

- システムがOracle SES 11.1.2.*で構成されている場合、「検索 - 非ファセット検索」タスク・フロー・パラメータを使用して検索をカスタマイズできます。Oracle SES 11.1.2.*は、検索の保存、検索のユーザー・プリファレンスの設定をサポートしていますが、11.2.2.2アダプタおよびライブ(委任)検索による実装はサポートしていません。

注意:

ファセットにより、ユーザーは新規検索を実行せずに索引付きデータにナビゲートできます。検索文字列によっては大量の結果が検出される場合もありますが、検索でファセット・ナビゲーションを使用することで、ユーザーは探しているものを正確に割り出したり、新しい対象を検出することもできます。ファセットにより結果全体が考慮され、以前のリリースで検索の絞込みにかかった応答時間よりも速くなります。

「ツールとサービス - 検索」管理ページでは、どのように検索が構成されているかが表示されます。

関連項目:

第45.3.1項「Oracle SESアダプタを使用する検索の構成」

45.1.1.3 検索結果に対するクリック・アクション

アプリケーションでリソース・アクション処理が指定されていない場合は、検索結果をクリックすると、デフォルトのアクションにより、新しいブラウザ・ウィンドウに検索結果がレンダリングされます。また、ドキュメント、ディスカッションまたはお知らせなどの、リソース・ビューアを提供するコンポーネントからの結果が、リソース・ビューアに表示されます。リソース・ビューアとリソース・アクション処理フレームワークの詳細は、第4.3項「サービスでリソースをレンダリングする方法のカスタマイズ」を参照してください。

45.1.2 実行時の処理

実行時に、ユーザーはグローバルな(アプリケーション全体の)検索を実行できます。

実行時のWebCenter Portalの検索の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「情報の検索」を参照してください。

45.2 検索の基本構成

この項では、アプリケーションに検索を追加するための手順について説明します。内容は次のとおりです。

- 第45.2.1項「構成ロードマップ - Oracle SES」

- 第45.2.2項「Oracle SESの接続の設定」

- 第45.2.3項「検索の設計時の追加」

- 第45.2.4項「検索のセキュリティの設定」

45.2.1 構成ロードマップ - Oracle SES

構成プロセス全体のガイドとしてこの項のロードマップを使用してください。

注意:

Oracle SESを使用した検索をオーバーライドして、オリジナルのWebCenter Portalライブ検索アダプタを使用する場合は、Oracle SESの構成は不要です。スキップして第45.2.3項「検索の設計時の追加」に進みます。

図45-1と表45-1は、Portal Frameworkアプリケーション内でOracle SESを動作させるために必要な前提条件とタスクの概要を示しています。

図45-1 Portal Frameworkアプリケーション用のOracle SESの構成

表45-1 Portal Frameworkアプリケーション用のOracle SESの構成

アクター

タスク

サブタスク

管理者

1. WebCenter PortalおよびOracle SES 11.2.2.2をインストールします

2. アイデンティティ管理システムを使用してOracle SESを構成します

3. Oracle SESでドキュメント・サービス・マネージャを設定します

4. 次のいずれかのツールを使用して、フェデレーション・トラステッド・エンティティを作成します

- Oracle SES管理ツール

- WLST

5. 次のいずれかのツールを使用して、2つのクロール・ソース、ドキュメント・クローラとディスカッション・クローラを作成します

- Oracle SES管理ツール

- WLST

6. 次のいずれかのツールを使用して、クロール・ソースのソース・グループを作成します

- Oracle SES管理ツール

- WLST

7. ファセットおよびソート属性を作成します

開発者

8. アプリケーションに検索を統合します

8.a JDeveloperでOracle SESへの接続を構成します

注意: この手順でsetSESVersion WLSTコマンドを実行し、「ツールとサービス - 検索」管理ページを有効にする必要があります。

8.b JDeveloperでページに検索タスク・フローを追加します

開発者または管理者

9. 次のいずれかのツールを使用してアプリケーションをデプロイします

- JDeveloper (開発者)

- Fusion Middleware Control (管理者)

- WLST (管理者)

- WLS管理コンソール(管理者)

管理者

10. (オプション)SSLを使用してOracle SESへの接続を保護します

管理者

11. 次のいずれかのツールを使用して、追加検索パラメータを構成します

- Fusion Middleware Control

- WLST

- WLS管理コンソール

45.2.2 Oracle SESの接続の設定

Oracle SESを使用して検索を実行するには、アプリケーションにOracle SES接続を追加する必要があります。詳細は、第45.3.1項「Oracle SESアダプタを使用する検索の構成」を参照してください。

1. 第45.2.3項「検索の設計時の追加」に従って、検索ツールバーをページに追加します。

2. Oracle SESへの接続を設定します。アプリケーション・ナビゲータで、「アプリケーション・リソース」を開きます。「接続」ノードを右クリックして「接続の作成」を選択し、「Oracle SES接続」を選択します。
「アプリケーション・リソース」または「IDE接続」のいずれかで接続を作成します。「アプリケーション・リソース」の接続はそのアプリケーションでのみ使用可能ですが、「IDE接続」の接続は作成したすべてのアプリケーションで使用可能です。別のアプリケーションで接続を使用する場合は、「IDE接続」を選択して、接続を再作成する必要がないようにします。

注意:

IDEで接続を作成した場合は、後でこの接続をアプリケーションに追加する必要があります。たとえば、「リソース・パレット」の「IDE接続」の下にある接続を右クリックし、「アプリケーションに追加」を選択します。

ダイアログのフィールドに値を入力します。例:

1. 「接続名」にSESconnectionなどの意味を表す名前を入力します。作成後にこの名前を変更することはできません。(別の接続名を使用するには、新たに接続を作成します。)

2. 「SOAP URL」に、次のようなOracle SES WebサービスのエンドポイントのURLを入力します。

http://host:port/search/query/OracleSearch

3. 「フェデレーション・トラステッド・エンティティ」の「エンティティ名」に、Oracle SESインスタンス上でこのアプリケーション用に定義されているトラステッド・エンティティ(wcsearchなど)を入力します。
トラステッド・エンティティにより、アプリケーションではOracle SESに対してそれ自体を認証し、Oracle SES上で問合せを作成する際にユーザーをアサートできるようになります。このトラステッド・エンティティは、Oracle SES内部のアイデンティティ管理サーバー上に存在する、またはOracle SES内部で作成された任意のユーザーに設定できます。トラステッド・エンティティは、Oracle SESの「グローバル設定」 - 「フェデレーション・トラステッド・エンティティ」ページで検出(または作成)できます。

4. 「エンティティ・パスワード」に、フェデレーション・トラステッド・エンティティ・ユーザーのパスワードを入力します。

5. 「アプリケーション構成」で、「検索サービスのデフォルト接続として設定」チェック・ボックスを選択します。
これにより、アプリケーションでその接続を使用してOracle SESにアクセスできるようになります。検索では、Oracle SES接続を1つのみ使用します。

注意:

接続をデフォルトの接続として作成すると、それがデフォルトでないように編集することはできません。別のデフォルト接続を使用するには、新しい接続を作成し、それをデフォルト接続としてマークする必要があります。

6. 「ソース・グループ」に、検索対象のOracle SESソース・グループを入力します。値を指定しないと、Oracle SESインスタンスのすべてのクロール・ソースが検索されます。

注意:

ソース・グループには、Oracle SES上の検索可能なデータをセグメント化するよい方法があります。すべての企業データの検索インデックスを保持するOracle SESインスタンスの場合は、ソース・グループを使用して、WebCenter Portalの検索に使用可能な企業データの一部のみを作成できます。ソース・グループの作成の詳細は、Oracle SES管理者ガイドを参照してください。

7. 「テスト中」の「ユーザー名」に、使用しているアプリケーション用に構成されたOracle Identity ManagementサーバーとOracle SES用に構成されたOracle Identity Managementサーバーの両方に存在するユーザーの名前を入力します。
図45-2のように表示されます。

8. 図45-2 「Oracle SES接続の作成」ダイアログ

「接続のテスト」をクリックして、ステータスを確認します。
接続が正常な場合は、「OK」をクリックします。

アプリケーションにOracle SES接続を含めると、「アプリケーション・リソース」パネルでの表示は図45-3のようになります。

図45-3 「アプリケーション・リソース」でのOracle SES接続

これで、Oracle SES接続がconnections.xmlファイルに追加され、例45-1に示すように、adf-config.xmlファイルのデフォルト接続になります。

例45-1 adf-config.xmlのOracle SES接続

<ses-properties>
<connection>SESconnection</connection>
<data-group>MySources</data-group>
</ses-properties>

3. setSESVersion WLSTコマンドを実行し、デフォルト接続に関連付けられたOracle SESインスタンスのバージョン情報を取得し、保存する必要があります。これにより、「ツールとサービス - 検索」管理ページが有効化されます。このページは、Oracle SES 11.2.2.2を使用して検索の設定をカスタマイズするために必要です。
使用しているOracle SESのバージョンが正しく設定されていることを確認するには、listSESVersion WLSTコマンドを実行します。

コマンドの構文および例は、『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』のsetSESVersionおよびlistSESVersionに関する項を参照してください。

注意:

アプリケーションをOracle WebLogic管理対象サーバーにデプロイすると、WLSTまたはFusion Middleware Controlを使用してこれを構成できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理を参照してください。

45.2.3 検索の設計時の追加

この項では、検索タスク・フローについて説明するとともに、検索をアプリケーションに統合する方法についても説明します。内容は次のとおりです。

- 第45.2.3.1項「検索タスク・フロー」

- 第45.2.3.2項「検索をページに追加する方法」

- 第45.2.3.3項「検索をカスタマイズする方法」

45.2.3.1 検索タスク・フロー

表45-2に、Oracle SES 11.2.2.2に含まれる検索タスク・フローを示します。

表45-2 検索タスク・フロー

タスク・フロー

定義

検索 - ファセット検索

このタスク・フローでは、ファセット検索、検索ボックスのフィルタ検索およびドキュメント・サムネイルがサポートされており、豊富な検索操作を提供します。

注意: この検索タスク・フローは、Oracle SES 11.2.2.2が構成されている環境で提供されます。

検索 - 管理

このタスク・フローにより、検索の設定をカスタマイズする「ツールとサービス - 検索」管理ページにアクセスできます。

検索 - ツールバー

このタスク・フローを使用すると、ユーザーは簡単な検索条件を入力し、アプリケーションから検索を実行できます。検索結果はリンクとしてレンダリングされます。

注意:

表示されているその他の検索タスク・フローは、「検索 - ファセット検索」タスク・フローではサポートされていません。

45.2.3.2 検索をページに追加する方法

「検索 - ツールバー」タスク・フローでは、検索をアプリケーションに追加するための最も簡単な方法を提供します。「検索 - ツールバー」タスク・フローをアプリケーションに追加するには:

1. 第2章「開発環境の設定」の手順に従い、カスタマイズ可能なページをアプリケーションで作成します。

注意:

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第74.3項「ADFセキュリティの構成」を参照してください。

2. 検索を追加するページを開きます。

3. リソース・パレットで「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。

4. 「検索ツールバー」タスク・フローをページにドラッグ・アンド・ドロップします。

5. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。
ADFライブラリの確認を求めるプロンプトが表示された場合は、「ライブラリの追加」をクリックします。

6. 検索ツールバーが表示されたページを実行します。
アプリケーション・ナビゲータでこのアプリケーションを右クリックし、「実行」を選択します。操作の完了に時間がかかる場合があります。

セキュリティの定義時に作成したユーザー名と資格証明を入力します。

7. 「検索 - ファセット検索」タスク・フローには、(検索の設定をカスタマイズするための)「検索」管理ページにアクセスするために「検索 - 管理」タスク・フローが必要です。「検索 - ツールバー」タスク・フローを追加した方法と同様に、このタスク・フローを追加します。

注意:

「リソース・パレット」には「検索 - 保存済検索」タスク・フローおよび「検索 - プリファレンス」タスク・フローも表示されます。これらのタスク・フローは、「検索 - ファセット検索」タスク・フローではサポートされていません。

検索で結果を返すには、その他のWebCenter Portalのツールとサービスがアプリケーションに組み込まれていることが必要です。

45.2.3.3 検索をカスタマイズする方法

Oracle SESを使用して構成されていた以前のリリースでは、アプリケーション・スペシャリストは、検索(「検索 - 非ファセット検索」)タスク・フロー・パラメータを使用して検索をカスタマイズできました(つまり、検索結果のレイアウトおよび検索動作を変更できました)。これらのパラメータを使用すると、特定のポータル、ツール/サービスおよびドキュメントのタイプに検索のスコープを絞り込むことができました。さらに、検索結果の項目ごとに返される標準属性のリストにカスタム属性を追加したり、ユーザーが検索結果に使用可能な標準の絞込み機能を非表示にすることもできました。

WebCenter Portalリリース11.1.1.8およびOracle SES 11.2.2.2を使用すると、タスク・フロー・パラメータを使用するかわりに、検索はすべて「ツールとサービス - 検索」管理ページでカスタマイズされます。これはより簡単に検索を構成する方法です。この新しい検索操作はファセット検索を利用します。この新しい「検索 - ファセット検索」タスク・フローは、Oracle SES 11.2.2.2が構成されている場合にのみ使用されます。

45.2.4 検索のセキュリティの設定

ユーザーを検証および認証するために、アイデンティティ管理システムを使用してOracle SESアダプタを構成する必要があります。これは、検索で、アクセス権限に基づいてユーザーが表示を許可されている結果のみを返すようにするために必要です。WebCenter Portalでは、Oracle SESとの通信時にアイデンティティ伝播を使用するため、WebCenter Portalのユーザー・ベースはOracle SESのユーザー・ベースに一致している必要があります。一致させるための方法の1つとしては、WebCenter PortalとOracle SESを同一のアイデンティティ管理システムに設定することがあげられます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のOracle SESの構成に関する項を参照してください。

注意:

WebCenter Portalのライブ(委任)検索は、個々のツールとサービスを使用して、検索を実行するユーザーが結果を表示できるようにします。検索結果は、ユーザー権限に基づいて返されます。認証されない場合は、問合せからパブリック・コンテンツのみが返されます。ADFで保護されたアプリケーションの認証済ユーザーのみが検索を保存できます。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第74.3項「ADFセキュリティの構成」を参照してください。

45.3 検索の詳細情報

この項では、検索で使用可能なオプション機能について説明します。内容は次のとおりです。

- 第45.3.1項「Oracle SESアダプタを使用する検索の構成」

- 第45.3.2項「WebCenter Portalのライブ検索を使用する検索の構成」

- 第45.3.3項「検索Java APIの使用」

- 第45.3.4項「検索REST APIの使用」

- 第45.3.5項「検索データ・コントロールの使用」

- 第45.3.6項「検索のアダプタの構築」

- 第45.3.7項「WebCenter Portalの検索APIを使用しない検索UIのカスタマイズ」

- 第45.3.8項「検索のトラブルシューティング」

注意:

検索REST APIおよびデータ・コントロールは、Oracle SESを使用した検索でのみ使用可能です。これらは、WebCenter Portalのライブ(フェデレーテッド)検索を使用した検索ではサポートされていません。

45.3.1 Oracle SESアダプタを使用する検索の構成

WebCenter Portalアプリケーションは、デフォルトの検索アダプタとしてOracle SESを自動的に設定しますが、Oracle SES、Oracle WebCenter Content: Content ServerおよびOracle WebCenter Portalのディスカッション・サーバーでは追加の構成が必要です。Oracle SESアダプタを使用する検索を設定する手順の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のWebCenter PortalのOracle Secure Enterprise Searchの管理に関する項を参照してください。

すべての構成手順を完了したら、WebCenter Portalの検索でOracle SESの結果が含まれていることを検証します。

1. 「アプリケーション・ナビゲータ」で、「検索 - ツールバー」を使用して作成したページを右クリックし、「実行」をクリックします。
アプリケーションがADFセキュリティで保護されていれば、ログイン・ページが表示されます。操作の完了に時間がかかる場合があります。

2. セキュリティの定義時に作成したユーザー名と資格証明を入力します。

3. 「送信」をクリックします。
ページがロードされると、検索ツールバーが表示されます。

図45-4に、Oracle SESがクロールする前の、検索文字列webcenterのサンプルの結果ページを示します。

図45-4 検索結果

図45-5に、Oracle SESが構成されてクロールした後の、サンプルの結果ページを示します。

図45-5 グローバル検索結果

関連項目:

Oracle Fusion Middlewareドキュメント・ライブラリのOracle SESのドキュメント(WebCenter Portalの製品分野に存在)

45.3.2 WebCenter Portalのライブ検索を使用する検索の構成

Oracle SESで手動で検索をオーバーライドしたり、WebCenter Portalのライブ(委任)検索を使用してアプリケーション検索を実行したりできます。

WebCenter Portalのライブ検索を使用する検索を有効化するには、adf-config.xmlファイルを編集してcrawl-propertiesのすべての有効な属性をFALSEに変更する(例45-2)か、crawl-propertiesをすべてコメント・アウトします(例45-3)。

例45-2 adf-config.xmlでFalseに設定されたクロール・プロパティ

<searchC:adf-search-config
xmlns="http://xmlns.oracle.com/webcenter/search/config">
<display-properties>
<common numSavedSearches="5"/>
<region-specific>
<usage id="simpleSearchResultUIMetadata" numServiceRows="5"/>
<usage id="searchResultUIMetadata" numServiceRows="5"/>
<usage id="localToolbarRegion" numServiceRows="5"/>
</region-specific>
</display-properties>
<execution-properties timeoutMs="7000" prepareTimeoutMs="3000"/>
<crawl-properties fullCrawlInterval="P5D" enableWcServicesCrawl="false"
enableWcDiscussionsCrawl="false" enableWcUcmCrawl="false"/>
<ses-properties>
<connection/>
<data-group/>
</ses-properties>
</searchC:adf-search-config>

例45-3 adf-config.xmlでコメント・アウトされたクロール・プロパティ

<searchC:adf-search-config
xmlns="http://xmlns.oracle.com/webcenter/search/config">
<display-properties>
<common numSavedSearches="5"/>
<region-specific>
<usage id="simpleSearchResultUIMetadata" numServiceRows="5"/>
<usage id="searchResultUIMetadata" numServiceRows="5"/>
<usage id="localToolbarRegion" numServiceRows="5"/>
</region-specific>
</display-properties>
<execution-properties timeoutMs="7000" prepareTimeoutMs="3000"/>
<!--
<crawl-properties fullCrawlInterval="P5D" enableWcServicesCrawl="true"
enableWcDiscussionsCrawl="true" enableWcUcmCrawl="true"/>
-->
<ses-properties>
<connection/>
<data-group/>
</ses-properties>
</searchC:adf-search-config>

45.3.3 検索Java APIの使用

カスタム・コンポーネントでは、検索APIを実装し、そのコンテンツをWebCenter Portalの検索に公開できます。

詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

45.3.4 検索REST APIの使用

WebCenter Portalは、カスタマイズされた検索ユーザー・インタフェースを作成できるようにするREST APIを提供しています。Oracle SES 11.2.2.2では、検索REST APIを使用して検索およびファセットを読取り(GET)できます。ファセットは検索結果とともに返され、結果のフィルタ処理に使用できます。検索のキーワードと範囲を指定できます。たとえば、文字列「webcenter」の検索で何千もの結果が生成されたとします。URLでファセット(作成者または最終変更日付など)を使用し、author=Karenおよびlast-modified-date=this weekのように、特定のファセット値に対する結果を取得できます。

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

- 第45.3.4.1項「検索エントリ・ポイント」

- 第45.3.4.2項「検索リソース・タイプの分類」

- 第45.3.4.3項「セキュリティに関する考慮事項」

- 第45.3.4.4項「検索リソース・タイプ」

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

45.3.4.1 検索エントリ・ポイント

各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。検索のエントリ・ポイントを検索するには、次のresourceTypeを持つリンク要素を検索します。

urn:oracle:webcenter:searchcollection

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供されます。クライアントはこのエントリ・ポイントにHTTPリクエストを送信して、検索を操作します。

関連項目:

リソース索引には次の2つの検索のエントリがあります。

- urn:oracle:webcenter:searchcollection (これには、Oracle SES 11.2.2.2で構成されたWebCenter Portalが必要です。)

- urn:oracle:webcenter:searchresults (これには、サポートされている任意のバージョンのOracle SESで構成されたWebCenter Portalが必要です。)

この章では、urn:oracle:webcenter:searchcollectionについてのみ説明します。urn:oracle:webcenter:searchresultsの詳細は、次を参照してください。

http://docs.oracle.com/cd/E28280_01/webcenter.1111/e10148/jpsdg_search.htm。

リソース索引の詳細は、第53.5.1項「リソース索引の使用」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

45.3.4.2 検索リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」の該当の項を参照してください。

検索の分類は次のとおりです。

urn:oracle:webcenter:searchcollection
urn:oracle:webcenter:searchcollection:results

サービス・エントリ・ポイントの他、URLテンプレートにより、クライアントは、問合せパラメータを渡してリクエストをカスタマイズしたり戻されたデータのフォームを制御できます。

検索リソース内のコレクション・リソースは、ページ区切り(startIndexおよびitemsPerPage)をサポートします。エントリ・ポイントはsearchcollection要素にすべての結果を返します。dataType引数の適切な値を指定して、様々なコンポーネントを問い合せます。

searchTerms、dataおよびdataTypeでサポートされ、ここでdataTypeには、次の値のうち1つ以上が設定されます。

- resultCount: 問合せを満たす結果の数

- results: 実際の結果

- facetCount: 問合せ結果に対するファセットの数

- facets: 現在の結果に対するファセット

カンマで値を区切り、複数のdataTypeを指定します。例:

http://host:port//rest/api/searchcollection?&dataType=results,facets
&facetParams=author:weblogic&utoken=FDX7xKPzzrnsbWRHNP-b-iUoWiJ4_w\*\\\\\\\\*

resultsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
searchcollection

resourceindex
spaces
spaces:resourceindex
spaces:searchcollection

resultsでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし、パラメータ: q、dataType、startIndex (ページ区切り)、itemsPerPage (ページ区切り)、data、facetParams

- レスポンス - 本体: 検索結果およびオプションでファセット

ここで:

- q={queryString}
検索は、次の形式を使用して指定できます。

[[field1:[operand]][:]value1[;field2:operand:value2]]

ここでは、複数の句が暗黙のANDによって結合され、セミコロン(;)によって構文的に区切られます。大かっこ[]は、オプションの値を示します。どの句もコロン(:)のセパレータを使用しない単純な文字列のキーワードにできます。

問合せ文字列は問合せキーワード以外はサポートしません。

- dataTypeは結果のタイプです
たとえば、結果のみが必要な場合はdataType=results (または空のまま)とします。結果にファセットを含めるには、dataType=results,facetsとします。

- dataはカスタム属性のパラメータです
例:

data=numberofreplies,wc_tagsWords

- facetParamsはファセット絞込みのパラメータです
デフォルト・セットは、「サービスID」、スコープGUID、「タグ」、「作成者」、「最終更新日」、「MIMEタイプ」です。

たとえば、人で絞り込むには、oracle.webcenter.peopleにのみファセット「サービスID」を次のように設定します。

facetParams=Service%20ID:oracle.webcenter.people

注意:

facetParamsパラメータを使用する場合は、dataTypeパラメータにfacetsを含める必要があります。

例45-4 検索RESTコマンド

http://examplehost:8888/rest/api/searchcollection?q=document&utoken={utoken}

http://examplehost:8888/rest/api/searchcollection?q={keyword}
&data=dDocName,dOriginalName&dataType=results,facets
&facetParams=Service%20ID:oracle.webcenter.people

詳細は、第53.5.2.5項「テンプレート」を参照してください。

関連項目:

Oracle SES問合せ構文の詳細は、次を参照してください。

http://docs.oracle.com/cd/E21698_01/admin.1122/e21605/search001.htm#BABFDAGD。

resultsの書込み可能要素

表45-3に、このリソースの書込み可能な要素を示します。

表45-3 resultsの書込み可能要素

要素

タイプ

説明

author

String

resultに書き込んだ任意のユーザー

resourceId

String

一意識別子

serviceId

String

resultのサービスID、oracle.webcenter.doclibなど

title

String

resultのタイトル

description

String

resultの説明

modified

日付

最終更新日

size

数値

resultのサイズ

docid

String

ドキュメント識別子

created

日付

resultの最初の作成者

icon

String

resultタイプのアイコン

url

String

resultのURL

mimetype

String

resultのMIMEタイプ

guid

String

resultのGUID値

scope

String

ポータルのGUID値

scopename

String

ポータル名

resourceType

String

resultのタイプ

language

String

resultの言語

snippet

String

resultのスニペット

modifier

String

resultの更新者

customattributes

任意

データで指定される任意のカスタム属性のリスト

resultsからリンクされるリソース・タイプ

表45-4に、クライアントがこのリソースにリンクできるリソース・タイプを示します。

表45-4 searchに関連するリソース・タイプ

rel

リソース・タイプ

self

45.3.4.3 セキュリティに関する考慮事項

認証は、検索REST APIのメソッドを使用する前に必要です。

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

45.3.4.4 検索リソース・タイプ

この項では、各リソース・タイプについて説明します。内容は次のとおりです。

- 第45.3.4.4.1項「urn:oracle:webcenter:searchcollection:links」

- 第45.3.4.4.2項「urn:oracle:webcenter:searchcollection:results」

- 第45.3.4.4.3「urn:oracle:webcenter:searchcollection:facets」

45.3.4.4.1 urn:oracle:webcenter:searchcollection:links

テンプレート・リンクおよびページ区切りリンクにはこのリソース・タイプを使用します。

45.3.4.4.2 urn:oracle:webcenter:searchcollection:results

このリソース・タイプを使用して、キーワードとファセットを含む問合せの読取り(GET)に使用するURIを識別します。

リクエストはURLによって表され、レスポンスは検索結果のリストで、それぞれエンド・ユーザーがドリル・ダウンするアイテムを選択し、使用可能な場合は独自のRESTサービスへのリンクをクロスするうえで役立つメタデータを備えています。独自のRESTサービスが使用できない場合は、HREFリンクが提供されます。

レスポンスXMLでは、標準のURLパラメータと、前および次のリンクを使用してページを区切ることができます。(問合せが移入された)一般的なテンプレートに付属しているこれらのリンクにより、使用アプリケーションは固有のカスタム・ページ区切りを実行できます。

45.3.4.4.3 urn:oracle:webcenter:searchcollection:facets

このリソース・タイプを使用して、ファセットを含む問合せの読取り(GET)に使用するURIを識別します。ファセットは問合せ結果とともに返され、結果のフィルタに使用できます。これらのファセットをURLで使用し、author=weblogicおよびlast-modified-date=this weekのように特定のファセット値の結果を取得できます。

リクエストはURLによって表され、レスポンスはファセットのリストで、それぞれエンド・ユーザーがドリル・ダウンするアイテムを選択し、使用可能な場合は独自のRESTサービスへのリンクをクロスするうえで役立つメタデータを備えています。独自のRESTサービスが使用できない場合は、HREFリンクが提供されます。

レスポンスXMLでは、標準のURLパラメータと、前および次のリンクを使用してページを区切ることができます。(問合せが移入された)一般的なテンプレートに付属しているこれらのリンクにより、使用アプリケーションは固有のカスタム・ページ区切りを実行できます。

45.3.5 検索データ・コントロールの使用

検索データ・コントロールを使用して、アプリケーションまたはカスタム・タスク・フローで動作するカスタマイズされた検索ユーザー・インタフェースを作成できます。このタスク・フローをADFライブラリにデプロイすると、タスク・フローをポータブルに利用できるようになります。たとえば、それをWebCenter Portalアプリケーションのリソース・カタログに追加して、サイト・テンプレートを作成できます。

45.3.5.1 検索データ・コントロールのメソッド、属性およびクラス

検索データ・コントロールにはsearchSesメソッドが含まれています。表45-5では、検索絞込み条件を設定し、検索の有効範囲を制限するためのパラメータについて説明します。

表45-5 searchSes入力パラメータ

パラメータ

必須かどうか

タイプ

説明

scopeGuid

いいえ

String

結果をポータルでフィルタするためのGUID値。

serviceId

いいえ

String

アイテムのサービスID。たとえばoracle.webcenter.doclibはドキュメントのみを検索します。省略すると、すべてのツールとサービスを対象に検索します。

keywords

はい

String

検索文字列。

predicates

いいえ

リスト

条件のコレクション。

fetchRefiners

いいえ

Boolean

絞込み条件をフェッチするかどうか。省略した場合、デフォルト値はfalseです。

startIndex

はい

整数

結果セットに含める、最初に一致する結果のインデックスを指定します(0-n ... 0から始まる)。これはページ区切りに使用されます。

itemsPerPage

はい

整数

表示する結果数。

searchSesメソッドは次のコレクションを返します。

- SearchServiceDCRowsオブジェクトのコレクション

- SearchServiceDCRefinerオブジェクトのコレクション

45.3.5.1.1 SearchServiceDCRows

- author

- comments

- createDate

- description

- iconPath

- language

- largeIconPath

- lastModifiedDate

- resourceId

- scopeGuid

- serviceId

- size

- tagWords

- title

- type

- urlSearchServiceDCRefiner

45.3.5.1.2 SearchServiceDCRefiner

element

45.3.5.1.3 SearchServiceDCRefinement

- keywords

- scopeGuid

- serviceId

- 条件のコレクション

45.3.5.2 検索データ・コントロールの統合

検索データ・コントロールを使用するには:

1. JDeveloperで、Oracle SES接続を備えたアプリケーションを作成します。接続が使用可能になると、「データ・コントロール」パレットに検索データ・コントロールが表示されます。

2. SearchServiceDCからsearchSesメソッドをドラッグ・アンド・ドロップします。

3. 「ADFパラメータ・フォーム」を選択し、「フォーム・フィールドの編集」ダイアログを開きます。「OK」をクリックします。

4. SearchServiceDCResult戻りオブジェクト・タイプからフォーム上に行アクセッサをドラッグし、「表」 - 「ADF読取り専用表」を選択します。「OK」をクリックします。

5. ページを実行し、適切な値を入力します。例:

- keywords: 任意の検索文字列

- startIndex: 0

- itemsPerPage: 10

アプリケーションへのデータ・コントロールの追加の詳細は、第4.1.2項「WebCenter PortalのAPIの理解」を参照してください。

45.3.6 検索のアダプタの構築

検索アダプタを使用してその他のソースを検索結果に追加できます。これらの検索アダプタは、WebCenter Portalによって自動的に検出され、アプリケーションで検索結果を生成する際に統合されます。その後、アプリケーションでカスタム・コンポーネントを検索に公開すると、このコンポーネントはフェデレーテッド検索に組み込まれます。

この項では、検索アダプタを使用して、WebCenter Portalの検索を拡張する方法について説明します。内容は次のとおりです。

- 第45.3.6.1項「検索ソースの追加方法」

- 第45.3.6.2項「カスタム・アダプタの登録方法」

- 第45.3.6.3項「検索アダプタの属性」

- 第45.3.6.4項「実行時の処理」

45.3.6.1 検索ソースの追加方法

検索ソースを新たに追加するには、入力される問合せを管理し、検索結果を返す新規ソース用のJavaクラスを作成する必要があります。必要なJavaクラスのアプリケーションへの追加後、これを検索に登録する必要があります。

検索を行うと、問合せオブジェクトと検索対象の列を示すList<QName>とともにQueryManager.createRowQueryHandlerが、検索フレームワークでコールされます。フレームワークで、戻り値としてQueryHandler<Row>を受け取ります。

QueryHandlerは、QueryFederatorまたはQueryExecutorの場合もあります。QueryFederatorは、単に他のQueryHandlersのコレクションです。QueryFederatorでは、フレームワークは子QueryHandlersのリストを取得し、すべてのQueryExecutorsが見つかるまで再帰的に検索できます。

フレームワークでQueryExecutorのexecuteメソッドがコールされ、QueryResult<Row>が取得されます。これは、結果の行を反復して取得するjava.util.Iterator<Row>の拡張です。

想定される実装は、次のクラスの作成です。

- SampleQueryManager ...

- SampleRowQueryExecutor ...

- SampleRowQueryResult ...

- SampleRow ...

注意:

Oracle SESはデフォルトの検索プラットフォームとして設定されています。かわりにこのサンプル・コードをWebCenter Portalのライブ検索アダプタで動作させるには、adf-config.xmlのcrawl-propertiesを編集する必要があります。詳細は、第45.3.2項「WebCenter Portalのライブ検索を使用する検索の構成」を参照してください。

類似の問合せマネージャとともに新しい検索ソースを追加するには:

1. Oracle JDeveloperで、検索ソースを追加するアプリケーションを開きます。

2. WebCenter共通ライブラリがプロジェクトに含まれていることを確認します。

1. アプリケーション・ナビゲータで、プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択し、「ライブラリとクラスパス」を選択します。

2. 図45-6に示すように、「WebCenter共通」ライブラリが含まれていない場合は、「ライブラリの追加」をクリックしてこれを選択します。

図45-6 WebCenter共通ライブラリ

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

3. SampleQueryManager.javaという名前のクラスを作成します(例45-5)。

例45-5 SampleQueryManager.java

package mycompany.myproduct.myapp.mycomponent.query;
import java.util.List;
import oracle.webcenter.search.QName;
import oracle.webcenter.search.Query;
import oracle.webcenter.search.QueryExecutor;
import oracle.webcenter.search.QueryManager;
import oracle.webcenter.search.Row;
public class SampleQueryManager
implements QueryManager
{
public SampleQueryManager()
{
}
public QueryExecutor<Row> createRowQueryHandler(Query query,
List<QName> columns)
{
return new SampleRowQueryExecutor(query, columns);
}
}

4. SampleRowQueryExecutor.javaという名前のクラスを作成します(例45-6)。

例45-6 SampleRowQueryExecutor.java

package mycompany.myproduct.myapp.mycomponent.query;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import static oracle.webcenter.search.AttributeConstants.DCMI_EXTENT;
import static oracle.webcenter.search.AttributeConstants.DCMI_MODIFIED;
import static oracle.webcenter.search.AttributeConstants.DCMI_AUTHOR;
import static oracle.webcenter.search.AttributeConstants.DCMI_TITLE;
import static oracle.webcenter.search.AttributeConstants.DCMI_URI;
import static oracle.webcenter.search.AttributeConstants.DCMI_IDENTIFIER;
import static oracle.webcenter.search.AttributeConstants.WPSAPI_ICON_PATH;
import oracle.webcenter.search.QName;
import oracle.webcenter.search.Query;
import oracle.webcenter.search.QueryExecutor;
import oracle.webcenter.search.QueryHandler;
import oracle.webcenter.search.QueryResult;
import oracle.webcenter.search.Row;
public class SampleRowQueryExecutor
implements QueryExecutor<Row>
{
private static final int PRESET_ESTIMATED_RESULT_COUNT = 10;
private static final int PRESET_VALUES_BATCH_SIZE = 5;
private static final int MAX_RESULT_LIMIT = 100;
private int m_resultStart;
private int m_resultLimit;
private Query m_query;
private List<QName> m_columns;
private Map<String, String> m_properties;
public SampleRowQueryExecutor(Query query, List<QName> columns)
{
m_query = query;
m_columns = columns;
m_properties = new HashMap<String, String>();
// In actuality you may want to make sure this string is translatable
m_properties.put(QueryHandler.TITLE, "Sample");
}
/**
* Create several rows for "batchRepeat" times.
*/
private static void createRows(List<Row> rows, int batchRepeat)
{
while (batchRepeat-- > 0)
{
rows.add(new SampleRow("23847", "Initial Sorting of Tables",
"Bar", "2006-06-08", 5120));
rows.add(new SampleRow("4827445", "Support for facelets?",
"Foo", "2006-04-17", 1400000));
rows.add(new SampleRow("952787", "For Thomas Kincade's validation demo",
"Tiger", "2006-01-09", 1300000));
rows.add(new SampleRow("4394588", "Page not showing in WYSIWYG fashion",
"Ken Swartz", "2006-04-27", 3000));
rows.add(new SampleRow("3920", "Tree table",
"Scott", "2006-03-24", 1200));
}
}
/**
* Instead of doing a query execution here,
* just create a bunch of rows.
*/
public QueryResult<Row> execute()
{
List<Row> rows = new ArrayList<Row>();
// To hit a certain count here but not go over the max
int realLimit = Math.min(MAX_RESULT_LIMIT, m_resultLimit);
createRows(rows, (realLimit / PRESET_VALUES_BATCH_SIZE));
// Create the QueryResult
QueryResult<Row> ret = new SampleRowQueryResult(rows.iterator());
ret.getProperties().put(QueryResult.ESTIMATED_RESULT_COUNT,
Integer.toString(PRESET_ESTIMATED_RESULT_COUNT));
return ret;
}
/**
* Remember the result start.
*/
public void setResultStart(int resultStart)
{
m_resultStart = resultStart;
}
/**
* Store away the result limit to use in the execute
* to only get that number of results back.
*/
public void setResultLimit(int resultLimit)
{
m_resultLimit = resultLimit;
}
/**
* Expose our properties map containing our title.
*/
public Map<String, String> getProperties()
{
return m_properties;
}
}

5. SampleRowQueryResult.javaという名前のクラスを作成します(例45-7)。

例45-7 SampleRowQueryResult.java

package mycompany.myproduct.myapp.mycomponent.query;
import java.util.Iterator;
import oracle.webcenter.search.util.WrapperQueryResult;
import oracle.webcenter.search.Row;
public class SampleRowQueryResult extends WrapperQueryResult<Row>
{
public SampleRowQueryResult(Iterator<Row> rows)
{
super(rows);
}
}

6. SampleRow.javaという名前のクラスを作成します(例45-8)。

例45-8 SampleRow.java

package mycompany.myproduct.myapp.mycomponent.query;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import oracle.webcenter.search.QName;
import oracle.webcenter.search.Row;
import static oracle.webcenter.search.AttributeConstants.DCMI_EXTENT;
import static oracle.webcenter.search.AttributeConstants.DCMI_MODIFIED;
import static oracle.webcenter.search.AttributeConstants.DCMI_AUTHOR;
import static oracle.webcenter.search.AttributeConstants.DCMI_TITLE;
import static oracle.webcenter.search.AttributeConstants.DCMI_URI;
import static oracle.webcenter.search.AttributeConstants.DCMI_IDENTIFIER;
import static oracle.webcenter.search.AttributeConstants.WPSAPI_ICON_PATH;
public class SampleRow implements Row
{
private Map<QName, Object> m_storage = new HashMap<QName, Object>();
private DateFormat m_dateFormat = new SimpleDateFormat("yyyy-MM-dd");
SampleRow(String id, String title,
String author, String lastModified,
int size)
{
m_storage.put(DCMI_IDENTIFIER, id);
// Only if you have an external URL to go to
// m_storage.put(DCMI_URI, "http://my.external.url");
m_storage.put(DCMI_TITLE, title);
m_storage.put(DCMI_AUTHOR, author);
// The below path points to a path accessible in the classpath to an icon
m_storage.put(WPSAPI_ICON_PATH, "/adf/webcenter/search_qualifier.png");
try
{
Date date = m_dateFormat.parse(lastModified);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
m_storage.put(DCMI_MODIFIED, cal);
}
catch (ParseException e)
{
e.printStackTrace();
}
m_storage.put(DCMI_EXTENT, new Long(size));
}
public Object getObject(QName columnName)
{
return m_storage.get(columnName);
}
public Iterator<QName> getColumns()
{
return m_storage.keySet().iterator();
}
}

45.3.6.2 カスタム・アダプタの登録方法

問合せマネージャを検索に登録するには、service-definition.xmlファイルを編集する必要があります。SampleQueryManager行は、カスタム・アダプタの問合せマネージャの実装を検索に対して公開するため、カスタム・アダプタはすべての検索ユーザー・インタフェースに含まれるようになります。

エントリは、例45-9のようになります。

例45-9 service-definition.xmlでの問合せマネージャ用サンプル・エントリ

<service-definition id="mycompany.myproduct.myapp.mycomponent"
version="11.1.1.0.0">
<resource-view taskFlowId="/somepath/somefile.xml#someId"
authorizerClass="some.service.id.Authorizer1"/>
<name>Custom Component 1</name>
<description>Description for Custom Component 1</description>
<search-definition xmlns="http://xmlns.oracle.com/webcenter/search"
id="mycompany.myproduct.myapp.mycomponent.query" version="11.1.1.0.0">
<query-manager-class>
mycompany.myproduct.myapp.mycomponent.query.SampleQueryManager
</query-manager-class>
</search-definition>
</service-definition>

resource-viewタグ(およびWebCenter Portalのリソース・アクション処理フレームワーク)の詳細は、第4.3項「Customizing How Services Render Resources」を参照してください。

45.3.6.3 検索アダプタの属性

この項では検索に使用可能な属性について説明します。内容は次のとおりです。

- 第45.3.6.3.1項「検索可能な属性」

- 第45.3.6.3.2項「キーワード」

- 第45.3.6.3.3項「日付の条件」

- 第45.3.6.3.4項「複雑な日付の条件」

- 第45.3.6.3.5項「ユーザー条件」

- 第45.3.6.3.6項「複雑なユーザー条件」

- 第45.3.6.3.7項「アクセス」

- 第45.3.6.3.8項「選択可能な属性」

45.3.6.3.1 検索可能な属性

WebCenter Portalの検索ユーザー・インタフェースでは、キーワード、日付およびユーザーの3つのフィールドに基づいて検索を公開します。各サービスは、その固有の検索実装において、これらのフィールドがその機能を最大限発揮できるようにします。少なくとも、キーワード・フィールドはサポートしています。独自の検索アダプタを定義する場合は、第45.3.6.3.8項「選択可能属性」で説明しているように、これらのフィールドを使用してアダプタの機能を最大限発揮できるようにする必要があります。

45.3.6.3.2 キーワード

デフォルトでは、キーワード・フィールドはoracle.webcenter.search.TextPredicateに含まれています。このフィールドには、複数の単語を、複数の単語を解釈する方法を決定するサービスとともに指定できます。コールがサービスに届く前に検索でトークン化を実行することはありませんが、次にそのガイドラインをいくつか示します。

- 複数のトークンが引用符で囲まれている場合は、1つの単語として解釈されます。

- OR演算子が明示的に設定されていないかぎり、キーワード・フィールド内の単語間のデフォルトの結合はANDであると見なされます。

45.3.6.3.3 日付の条件

最終変更日による問合せ結果のフィルタをサポートする検索では、WPSAPIのサービス実装で問合せオブジェクトからアクセス可能な(oracle.webcenter.search.AttributeConstants.DCMI_MODIFIEDを使用する) oracle.webcenter.search.AttributePredicateの使用をサポートしている必要があります。サポートされているコンパレータには次が含まれている必要があります。

- oracle.webcenter.search.ComparatorConstants.GREATER_THAN

- oracle.webcenter.search.ComparatorConstants.GREATER_THAN_OR_EQUALS

また、これらのコンパレータには、次が含まれている場合もあります。

- oracle.webcenter.search.ComparatorConstants.EQUALS

- oracle.webcenter.search.ComparatorConstants.NOT_EQUALS

- oracle.webcenter.search.ComparatorConstants.LESS_THAN

- oracle.webcenter.search.ComparatorConstants.LESS_THAN_OR_EQUALS

比較用のリテラルは、java.util.Calendarタイプである必要があります。

45.3.6.3.4 複雑な日付の条件

日付間にはBETWEEN句を使用できます。複雑な日付の条件では、単純なAttributePredicateではなく、1つのGREATER_THAN AttributePredicateと1つのLESS_THAN AttributePredicateに加え、AND論理積演算子を含むComplexPredicateを使用します。ComplexPredicateは、AND演算子を残りのフィールド(キーワードおよびユーザー・フィールド)に適用する必要があります。

このケースとデフォルトのケースを区別するには、サービス作成者は、日付条件の条件のタイプをチェックする必要があります。AttributePredicateの場合は、デフォルトのケースです。ComplexPredicateの場合は、特殊なケースです。

45.3.6.3.5 ユーザー条件

ユーザーによる問合せ結果のフィルタをサポートする検索では、WPSAPIのサービス実装で問合せオブジェクトからアクセス可能な(oracle.webcenter.search.AttributeConstants.WPSAPI_MODIFIERを使用する) oracle.webcenter.search.AttributePredicateをサポートしている必要があります。

サポートされているコンパレータには、次が含まれている必要があります。

- oracle.webcenter.search.ComparatorConstants.EQUALS

- oracle.webcenter.search.ComparatorConstants.CONTAINS

- oracle.webcenter.search.ComparatorConstants.STARTS_WITH

- oracle.webcenter.search.ComparatorConstants.ENDS_WITH

比較用のリテラルは、java.lang.Stringタイプである必要があります。

45.3.6.3.6 複雑なユーザー条件

サービス作成者は、ユーザー条件の条件のタイプをチェックする必要があります。AttributePredicateがデフォルトのケースです。

45.3.6.3.7 アクセス

検索(コーラー)では、問合せのgetPredicate()メソッドが、キーワードを保持するoracle.webcenter.search.TextPredicate、日付条件を保持するoracle.webcenter.search.ComplexPredicateおよびユーザー条件を保持するoracle.webcenter.search.AttributePredicateを連結するoracle.webcenter.search.ComplexPredicateを返す可能性があることを想定しています。

45.3.6.3.8 選択可能な属性

次の選択可能属性/列が、検索実装で検索アダプタによってサポートされる必要があります。

- タイトル(必須)
指定されている場合は、返されるリソースごとに、検索ユーザー・インタフェースにタイトル列を表示できます。タイトル列にQNameAttributeConstants.DCMI_TITLEを指定することを強くお薦めします。

- リソースID(必須)
検索でリンクをレンダリングし、サービスのリソース・ビュー(または任意の宣言済ビュー)に移動できるようにする一意の識別子を通信するリソースについては、oracle.webcenter.search.AttributeConstants.DCMI_IDENTIFIERという名前を持つ列がQueryResult<Row>内の行からアクセス可能な列として返される必要があります。

検索は、DCMI_IDENTIFIER列を抽出し、リンクがクリックされたときにresourceIdパラメータの値としてリソース・ビューアに渡します。

リソース・ビュー(または任意の宣言済ビュー)で主キーに複数の列が必要な場合は、これらの列をすべて、oracle.webcenter.search.AttributeConstants.DCMI_IDENTIFIER列のコンポジット文字列値にバンドルします。検索では、それを不透明に処理してリソース・ビューに渡し、リソース・ビューでその文字列を主キーの各部に分解します。

- リソース・タイプ
指定されている場合は、返されるリソースごとに、検索のユーザー・インタフェースにタイプ列を表示できます。タイプ列にはQNameAttributeConstants.DCMI_TYPEが含まれています。DCMI_TYPE列が見つからない場合は、DCMI_FORMAT列の値がかわりに使用されます。リソース・ビューアでは、リソース・タイプを利用してリソースのレンダリングができます。

- リソースURL(リソースIDのかわり)
oracle.webcenter.search.AttributeConstants.DCMI_IDENTIFIER列が存在しない場合は、WebCenter Portalの検索では、oracle.webcenter.search.AttributeConstants.DCMI_URIによって指定された列の値からリンクを作成します。絶対URLを使用すると、DCMI_URIでは、検索結果からURLへのリンクを起動できます。

これにより、ドキュメントやページなどのコンポーネントでは、リソース・ビューを起動するかわりに、ブラウザ・プラグインを起動して様々な結果リンク・ターゲットをレンダリングできます。

- 最終変更日
指定されている場合は、返されるリソースごとに、検索のユーザー・インタフェースに最終変更日列を表示できます。最終変更日の検索可能属性をミラー化するには、ユーザーが最終変更日を検索結果で返された列として確認できることが重要です。

ほとんどのユーザーにとって、最終変更日は作成日よりもはるかに意味があります。(ユーザーが、列内のいくつかの値を確認した後で検索に使用する日付を適切に判断できるように)検索可能属性と選択可能属性との間の一貫性を向上させるには、サービス作成者がAttributeConstants.DCMI_CREATEDではなく、AttributeConstants.DCMI_MODIFIEDを返すようにすることを強くお薦めします。最終変更日のタイプは、java.util.Calendarです。

- 作成者
指定されている場合は、返されるリソースごとに、検索のユーザー・インタフェースに作成者と最終変更者を列で表示できます。検索ユーザー・インタフェースでは、これらは、検出されたリソースのコントリビュータのリストとして同じ列に結合されます。使用するQNameは、それぞれAttributeConstants.DCMI_AUTHORとAttributeConstants.WPSAPI_MODIFIEDです。作成者のタイプはjava.lang.Stringです。

- アイコン
指定されている場合は、返されるリソースごとに、検索のユーザー・インタフェースにアイコン列を表示できます。アイコン列にはQNameAttributeConstants.WPSAPI_ICON_PATHが指定されており、また、この列はクラス・パスでアクセス可能なアイコン・ファイルへの有効なパスに対応しています。アイコン・パスのタイプは、java.lang.Stringです。

- サイズ
指定されている場合は、返されるリソースごとに、検索のユーザー・インタフェースにサイズ列を表示できます。サイズ列にはQNameAttributeConstants.DCMI_EXTENTが含まれ、また、この列は検出されたリソースのサイズに対応しています。サイズのタイプは、java.lang.Numberです。

45.3.6.4 実行時の処理

メイン・ビューまたはツールバーから検索を行うと、新たな検索ソースがシームレスに統合されます。テスト用に、新たに追加した検索ソースで結果を生成する条件を入力します。

WebCenter Portalの検索は、リソース・アクション処理フレームワークを使用してリソース・ビューアを起動します。リソース・ビューアを登録し、検索によりカスタム・コンポーネントを検出できるようにする方法の詳細は、第4.3項「サービスでリソースをレンダリングする方法のカスタマイズ」を参照してください。

45.3.7 WebCenter Portalの検索APIを使用しない検索UIのカスタマイズ

WebCenter Portalの検索APIを使用せずアプリケーション内でカスタム検索ユーザー・インタフェースを開発できますが、検索機能を実行するためにOracle SES Webサービス問合せAPIを使用することで、引き続きOracle SESをアプリケーションの検索エンジンとして使用できます。また、検索結果のアクション処理はWebCenter Portalのリソース・アクション処理フレームワークを使用して管理できるため、検索結果内でアプリケーション・リソース(たとえば、ドキュメント)をクリックすると、リソースのビューア(たとえば、ドキュメント・リソース・ビューア)にリソースが表示されます。さらに、アプリケーションがWebCenter Portalナビゲーションを使用している場合は、特定のリソース・タイプをリソースのナビゲーション・ノードに表示できます。

この項では、検索結果のアクションを処理するための、リソース・アクション処理の有効化に必要な手順について説明します。

1. WebCenter Portalで提供されているドキュメント・サービス・マネージャを使用して、ドキュメントをクロールします。

関連項目:

Oracle Fusion Middleware Oracle WebCenter Portalの管理のドキュメント検索のためのOracle SESの設定に関する項

ドキュメント・サービス・マネージャでは、wc_urlという属性を各ドキュメントのOracle SES索引に作成します。wc_url属性の値は、アプリケーションのリソース・アクション処理モジュールに進むURLです。このURLでは、ドキュメント・サービス・インスタンスのWebCenter URL Prefixパラメータの値を接頭辞として使用します。

パラメータ値を、たとえばアプリケーションがデプロイされるホストとポートとして、さらにコンテキスト・ルートとして設定します。

http://myhost:8888/DocumentsServer

2. 検索UIでアクション処理にwc_url属性を使用します。
通常、検索UIでは、アクション処理にURL属性を使用します。ドキュメント・リソース・タイプの検索結果のアクション処理にリソース・アクション処理を使用するには、wc_url属性を使用します。wc_url属性を持つのは、ドキュメント・リソース・タイプの検索結果のみです。したがって、これは検索UIコードで条件付で実行する必要があります。

3. WebCenter Portalのリソース・アクション処理クラスを検索結果のクリック・アクション用に指定します。
検索結果をクリックすると、リソースがそのリソースのリソース・ビューアにレンダリングされます(使用可能な場合)。現在の検索結果ページが上書きされます。リソース・アクション・フレームワークを使用してこの動作を変更します。

アプリケーションのadf-config.xmlファイルを更新し、使用するリソース・アクション処理クラスを指定します。

例45-10に、PopUpResourceActionViewHandlerを使用して、検索結果をクリックしたときにポップアップ・ウィンドウにリソースを表示する方法を示します。

例45-10 ポップアップ動作ハンドラの指定

xmlns:wpsC="http://xmlns.oracle.com/webcenter/framework/service"
<wpsC:adf-service-config xmlns="http://xmlns.oracle.com/webcenter/framework/service">
<resource-handler class="oracle.webcenter.framework.resource.view.PopUpResourceActionHandler"/>
</wpsC:adf-service-config>

例45-11に、NavigationResourceActionHandlerを使用して、検索結果をクリックしたときにリソースのナビゲーション・ノードにリソースを表示する方法を示します。

例45-11 ナビゲーション・ハンドラの指定

xmlns:wpsC="http://xmlns.oracle.com/webcenter/framework/service"
<wpsC:adf-service-config xmlns="http://xmlns.oracle.com/webcenter/framework/service">
<resource-handler class="oracle.webcenter.portalframework.sitestructure.handler.NavigationResourceActionHandler"/>
</wpsC:adf-service-config>

45.3.8 検索のトラブルシューティング

この項では、検索で発生する代表的な問題と解決方法について説明します。

問題

各コンポーネントの問合せには設定タイムアウトがあります。特定のコンポーネントから割当て時間内に検索結果が返されない場合は、タイムアウトになります。お知らせやディスカッションはタイムアウトの影響を受けます。ページとポータルに、検索実行時からのタイムアウトを設定できます。

解決方法

設計時にパフォーマンスを改善するために、timeoutMsの値(ミリ秒単位)を増やし、adf-config.xml内でTimeoutMsを準備できます。次は、ADF META-INFフォルダの「アプリケーション・リソース」パネルにあるadf-config.xml関連のフラグメントです。

<execution-properties timeoutMs="3000"prepare TimeoutMs="1000"/>

実行時には、WLSTまたはFusion Middleware Controlを使用してタイムアウトを構成できます。

46 アクティビティ・グラフの統合

この章では、設計時にアクティビティ・グラフを統合する方法について説明します。

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

- 第46.1項「アクティビティ・グラフの概要」

- 第46.2項「アクティビティ・グラフの基本構成」

- 第46.3項「アクティビティ・グラフの詳細情報」

- 第46.4項「アクティビティ・グラフの拡張」

- 第46.5項「アクティビティ・グラフのトラブルシューティング」

アクティビティ・グラフの管理方法および使用方法の詳細は、次のドキュメントを参照してください。

- Oracle Fusion Middleware Oracle WebCenter Portalの管理の「アクティビティ・グラフの管理」

- Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「アクティビティ・グラフの追加とポータルへの推奨事項」

- 『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「推奨事項とコンテンツの参照」

46.1 アクティビティ・グラフの概要

今日のユーザーは前例のない速度でコンテンツを提供しています。アクティビティ・グラフは、シームレスに統合された情報の取得を実現し、検索アプリケーションおよびソーシャル・アプリケーションに役立つ集約されたインテリジェント機能を活用します。

この項では、アクティビティ・グラフの概要、タスク・フローおよび基礎となるアーキテクチャについて説明します。内容は次のとおりです。

- 第46.1.1項「アクティビティ・グラフの理解」

- 第46.1.2項「アクティビティ・グラフの要件」

- 第46.1.3項「実行時の処理」

46.1.1 アクティビティ・グラフの理解

アクティビティ・グラフでは、既存のコネクションやアプリケーション内のオブジェクトへの共通のやり取りに基づいて、ユーザーが関心を寄せている可能性のある人を提案します。また、ランク計算に基づいて、ユーザーが興味を持つ可能性があるポータルやコンテンツも示されます。

アクティビティ・グラフでは、アクティビティ・グラフ・エンジンによって収集および分析されたデータに基づいて、これらの提案が提示されます。アクティビティ・グラフ・エンジンは、エンタープライズ・アプリケーションによって収集されるアクションの中央リポジトリを提供します。数学的なグラフに置き換えてみると、アプリケーション・ユーザーとそれらのユーザーがやり取りするエンタープライズ・コンテンツはノードを表し、ユーザー間およびユーザーとコンテンツとの間のアクションは有向エッジ(図46-1)を表します。

図46-1 アクティビティ・グラフ

エンタープライズでは、人々と他の人々およびコンテンツとの対話を分析し、表示、編集、タグ付けなどの拡張可能なアクション・セットに基づいてコンテキストに沿った推奨を作成するための類似度スコアを生成しています。たとえば、オンライン・ベンダーの場合、このようなコンテキストに沿った推奨は、お薦めの追加購入の選択肢を提供するうえで役立ちます。ソーシャル・ネットワーク環境では、推奨によって、すでに接続している友人の友人に基づいて追加の接続を提案します。

アクティビティ・グラフ・エンジンは、コンテンツのアクティビティ・ランクも計算し、この情報をOracle Secure Enterprise Searchに渡し、検索結果により関連性の高いコンテンツを表示できるようにします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のOracle Secure Enterprise Searchのアクティビティ・ランクの設定に関する項を参照してください。

ノード・クラス

アクティビティ・グループ・ノードは、各クラスにグループ化されます。WebCenter Portalのデフォルトのノード・クラスは、次のとおりです。

- ユーザー(WC.user)

- ポータル(WC.group-space)

- ドキュメント(WC.document)

- Wiki (WC.wiki-page)

- ブログ(WC.blog)

- ディスカッション・トピック(WC.topic)

アクティビティ・グラフ・エンジンを拡張して他のアプリケーションに統合するために、これらのアプリケーションのオブジェクトに対応するカスタム・ノード・クラスを作成できます。詳細は、第46.4.1項「カスタム・ノード・クラスの定義」を参照してください。

アクション

アクションは特定のタイプのイベントです。それには、ソースとターゲットがあります。たとえば、Montyがドキュメントを見ている場合は、Montyによるviewアクションがソースとなり、ドキュメントがターゲットとなります。ユーザーとアイテム間のその他のアクションには、create、likeおよびtagがあります。たとえば、2人のユーザーが互いにconnectされている場合は、アクションを2人のユーザー間で実行できます。

表46-1に、WebCenter Portal用に定義されたデフォルト・アクションを示します。

表46-1 WebCenter Portalのデフォルト・アクション

アクションURN

説明

connect

別のユーザーとのコネクションを持ちます

create

ポータル、ドキュメント、Wiki、ブログ、トピックまたはメッセージを作成します

edit

ポータルを除くすべてのアイテムの場合:

- ドキュメントの新しいバージョンをチェックインします

- Wikiまたはブログを編集します

- トピックに返信します

- メッセージを編集します

ポータルの場合:

- 前述のすべてのアクションに加えて、次のアクションを実行します

- ページを作成、編集または削除します

- リストを作成、編集または削除します

- イベントを作成、編集または削除します

comment

ドキュメント、Wikiまたはブログにコメントします

like

ドキュメント、Wiki、ブログまたはメッセージを気に入ります

tag

ドキュメント、Wikiまたはブログにタグ付けします

view

ポータル・ページ、ドキュメント、Wiki、ブログ・エントリまたはディスカッション・トピックを表示します

download

ドキュメント、Wikiまたはブログをダウンロードします

edit-count

ドキュメントの新しいバージョンのチェックイン、Wikiまたはブログの編集、トピックへの返信、メッセージの編集を行います

view-count

ドキュメント、Wiki、ブログまたはディスカッション・トピックを表示します

これらのWebCenter Portalアクションが1つでも発生すると(たとえば、Montyがドキュメントを表示すると)、そのアクションはWebCenter Portal分析のコンポーネントであるイベント・コレクタによって収集され、アクティビティ・データベース(図46-2)のイベント表に格納されます。

図46-2 WebCenter Portal分析によるデータ収集

アクティビティ・データの収集プロセスが開始されると、分析アクティビティ・プロバイダによって分析イベント表からアクションが読み取られた後、登録済のマッピング・セットが使用されてアクティビティが生成されます(図46-3)。アクティビティとは、1回発生したアクションのことで、集計されたアクションの発生回数であるリレーションの判別に使用されます(リレーション表に格納される)。たとえば、Montyがこの特定のドキュメントを5回表示したという事実はリレーションです。リレーション表の中の情報は、推奨と検索ランクの決定に使用されます。

図46-3 アクティビティ・グラフ・エンジンによって収集されたデータ

アクティビティ・グラフ・エンジンを他のアプリケーションに統合するために、これらのアプリケーションにおけるユーザーの実行アクションに対応するカスタム・アクションを作成できます。詳細は、第46.4.2項「カスタム・アクションの定義」を参照してください。

類似度計算

アクティビティ・グラフ問合せAPIは、アクティビティ・グラフ・タスク・フローによって使用されるJava APIで、レシピを使用して関連表で推奨を問い合せます(図46-4)。レシピとは、ランク計算または類似度計算の重み付けされたリストのことです。類似度計算では、特定の条件下で2つのオブジェクトがどの程度類似しているかを指定する類似度スコア(ゼロから1までの数値)が提供されます。それぞれの計算の重み付けによって、その計算が推奨の総合スコアに与える影響が変化します。推奨は、推奨スコアの合計によって順序付けされます。

図46-4 アクティビティ・グラフによる推奨の計算

表46-2に、アクティビティ・グラフ・タスク・フローによって使用される計算を示します(タスク・フローについては、第46.2.3.1項「アクティビティ・グラフ・タスク・フロー」を参照してください)。

表46-2 アクティビティ・グラフの計算

URN

適用対象

説明

タスク・フローでの使用

item-edit

ドキュメント

Wiki

ブログ

トピック

現在のアイテムを編集したユーザーが推奨アイテムも編集しています

類似アイテム

item-like

ドキュメント

Wiki

ブログ

トピック

現在のアイテムを気に入ったユーザーが推奨アイテムも気に入っています

類似アイテム

item-comment

ドキュメント

Wiki

ブログ

トピック

現在のアイテムについてコメントしたユーザーが推奨アイテムについてもコメントしています

類似アイテム

item-tag

ドキュメント

Wiki

ブログ

トピック

現在のアイテムにタグ付けしたユーザーが推奨アイテムにもタグ付けしています

item-all

ドキュメント

Wiki

ブログ

トピック

現在のアイテムとなんらかの方法で(表示など)やり取りしたユーザーが、推奨アイテムともなんらかの方法でやり取りしています

類似アイテム

gs-edit

ポータル

現在のポータルに参加したユーザーが推奨ポータルにも参加しています

類似ポータル

gs-all

ポータル

現在のポータルとなんらかの方法(ページやポータル内のコンテンツの表示など)でやり取りしたユーザーが、推奨ポータルともなんらかの方法でやり取りしています

類似ポータル

user-connect

ユーザー

現在のユーザーが推奨ユーザーと複数のコネクションを共有しています

推奨コネクション

user-edit

ユーザー

現在のユーザーが編集したアイテムの一部は、推奨ユーザーも編集しています

推奨コネクション

user-like

ユーザー

現在のユーザーが気に入ったアイテムの一部は、推奨ユーザーも気に入っています

推奨コネクション

user-comment

ユーザー

現在のユーザーがコメントしたアイテムの一部は、推奨ユーザーもコメントしています

推奨コネクション

user-tag

ユーザー

現在のユーザーがタグ付けしたアイテムの一部は、推奨ユーザーもタグ付けしています

推奨コネクション

user-all

ユーザー

推奨ユーザーがやり取りしたアイテムの一部と、表示を含めなんらかの方法でやり取りした現在のユーザー

推奨コネクション

like-rank

ドキュメント

Wiki

ブログ

ユーザーは現在の推奨アイテムを気に入っています

トップ・アイテム

activity-rank

ドキュメント

Wiki

ブログ

ユーザーはなんらかの方法で推奨アイテムとやり取りをしています

トップ・アイテム

これらの計算を編集して、重み付けを変更できます。追加の計算を作成し、アクティビティ・グラフ・エンジンを他のアプリケーションに統合できます。詳細は、第46.4.3項「カスタム類似度計算の定義」を参照してください。

問合せ結果ポスト・プロセッサ(QRPP)

特定のオブジェクトの最初の推奨リストが生成された後、結果をフィルタし、ユーザーにとってより適した有用なものにします。これは、問合せ結果ポスト・プロセッサ(QRPP)を使用して実現されます。QRPPは、現在の推奨結果のリストを使用し、出力として変更されたリストを返します。QRPPは、たとえば、現在のユーザーに閲覧が許可されていないオブジェクトの推奨を削除することで推奨をフィルタ除去したり、結果のメタデータを追加または変更したりすることがあります。

WebCenter Portalには、次の3つのQRPPが用意されています(表記されている順序で実行される)。

- WebCenter PortalセキュリティQRPP - 現在のユーザーが表示権限を持っていないオブジェクトに対する推奨をフィルタ処理で除外します。このフィルタでは、認可の検索ツールで使用されるメカニズムと同じものが使用されます。

- 分析メタデータQRPP - 分析表の各推奨オブジェクトについて、追加のメタデータ(説明やアイコンURLなど)を取得します。

- WebCenter Portal URL QRPP - リソース・アクション・ハンドラをコールすることにより、各推奨オブジェクトのURLを取得します。リソース・アクション・ハンドラは、検索ツールで使用されるのと同じWebCenter Portalコンポーネントです。第4.3項「サービスでリソースをレンダリングする方法のカスタマイズ」も参照してください。

この結果にさらにフィルタ処理を加えたり、アクティビティ・グラフ・エンジンを他のアプリケーションに統合したりするために、独自のQRPPを作成できます。詳細は、第46.4.6項「カスタムQRPPの登録」を参照してください。

アクティビティ・グラフ・タスク・フロー

ユーザーに対する推奨の提示は、アクティビティ・グラフ・タスク・フローを介して行われます。アクティビティ・グラフには、次のタスク・フローがあります。

- 推奨コネクション: ユーザーの現在のコネクションやアプリケーション内のオブジェクトへの共通のやり取りに基づいて、現在のユーザーがコネクションを望む可能性のあるユーザーをお薦めします。

- 類似ポータル: 現在のポータルと同様の方法でやり取りしたことのあるポータルを提案します。

- 類似アイテム: 現在のアイテムと同様の方法でやり取りしたことのあるアイテムを提案します。

- トップ・アイテム: 表示を含めもっとも多くのアクティビティを実行した現在のユーザーにより投稿されたアイテム、または複数のユーザーからもっとも多くのお気に入りを示されたアイテムを提案します。Portal Frameworkアプリケーションでは、このタスク・フローは「トップ投稿」モードでのみ動作します。

詳細は、第46.2.3.1項「アクティビティ・グラフ・タスク・フロー」を参照してください。

46.1.2 アクティビティ・グラフの要件

アクティビティ・グラフを使用するには、アクティビティ・グラフ・エンジンがインストールおよび構成されている必要があります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド』を参照してください。

また、アプリケーションでWebCenter Portalスキーマおよびアクティビティ・データベースへの接続を作成する必要があります。詳細は、第4.2.2項「データベース接続の設定」を参照してください。

分析イベント・コレクタに使用イベントを送信するように、アプリケーションが構成されている必要があります。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアプリケーション用の分析コレクタの登録に関する項を参照してください。

アクティビティ・グラフで推奨を行うには、まず、アクティビティ・グラフ・エンジンを最低1回は実行して、データ収集と類似度スコアの計算を行っておく必要があります。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフ用のデータ準備に関する項を参照してください。

類似アイテム・タスク・フロー、トップ・アイテム・タスク・フローと推奨データ・コントロールで提案されるアイテムは、アプリケーションで使用可能なツールによって異なります。たとえば、ドキュメント・ツールが使用可能な場合は、ドキュメントのみがお薦めされます。アプリケーションでツールを使用可能にする方法については、そのツールに関する該当の章を参照してください。また、そのアイテムを所有するツールのリソース認可プロバイダでフィルタ処理が行われることによって、アイテムが推奨から除外されることもあります。

46.1.3 実行時の処理

実行時には、アクティビティ・グラフ・タスク・フローで次のようなコンテキストが提供されます。

- 推奨コネクション・タスク・フローの場合、コンテキストは現在のユーザーになります。

- 類似ポータル・タスク・フローの場合、コンテキストは現在のポータルになります。

- 類似アイテム・タスク・フローの場合、コンテキストは、タスク・フロー入力パラメータまたはADF UIイベントを通して渡されるWebCenter Portalリソースになります。

- トップ・アイテム・タスク・フローの場合、コンテキストはプロファイル所有者になります。

その後、タスク・フローは、アクティビティ・グラフの問合せAPIを介して(タスク・フロー・パラメータで指定されているレシピを使用する)アクティビティ・グラフ・データベースの推奨の問合せを行います。問合せAPIによって返された推奨リストは、QRPPでフィルタ処理してからタスク・フローで表示することもできます。

実行時のツールの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「推奨とコンテンツの参照」を参照してください。

46.2 アクティビティ・グラフの基本構成

この項では、アクティビティ・グラフをアプリケーションに追加するための必要な手順について説明します。内容は次のとおりです。

- 第46.2.1項「アクティビティ・グラフの構成ロードマップ」

- 第46.2.2項「アクティビティ・グラフの接続設定」

- 第46.2.3項「設計時におけるアクティビティ・グラフの追加」

46.2.1 アクティビティ・グラフの構成ロードマップ

この項のフロー・チャート(図46-5)と表(表46-3)は、Frameworkアプリケーション内でアクティビティ・グラフを動作させるために必要な前提条件とタスクの概要を示しています。

図46-5 Portal Frameworkアプリケーションに対するアクティビティ・グラフの構成

表46-3 Portal Frameworkアプリケーションに対するアクティビティ・グラフの構成

アクター

タスク

サブタスク

管理者

1. 分析およびアクティビティ・グラフ用のWebCenter Portalコンポーネントとバックエンド・コンポーネントをインストールします

開発者

2. アプリケーションにアクティビティ・グラフを統合します

2.a JDeveloperでWebCenter Portalスキーマへの接続を構成する

2.b JDeveloperでアクティビティ・データベースへの接続を構成する

2.c JDeveloperで分析コレクタへの接続を構成する

2.d JDeveloperでページにアクティビティ・グラフ・タスク・フローを追加します

管理者

3. (オプション)アクティビティ・グラフ・エンジンのスケジュールを設定します

開発者/

管理者

4. 次のいずれかのツールを使用してアプリケーションをデプロイします:

- JDeveloper (開発者)

- Fusion Middleware Control (管理者)

- WLST (管理者)

- WLS管理コンソール(管理者)

5. (オプション)次のいずれかのツールを使用して接続パラメータを追加/変更します:

- JDeveloper、次にアプリケーションの再デプロイ(開発者)

- Fusion Middleware Control (管理者)

- WLST (管理者)

エンド・ユーザー/

管理者

6. アプリケーションでアクティビティ・グラフ・データを使用できることをテストします

6.a アプリケーションにログインし、コンテンツを追加するなどの操作を行います(エンド・ユーザー)

6.b アクティビティ・グラフ・エンジンを実行する(管理者)

6.c 推奨(たとえば、「プロファイル」ページの「推奨コネクション」)を表示します(エンド・ユーザー)

46.2.2 アクティビティ・グラフの接続設定

アクティビティ・グラフには、次の接続が必要です。

- WebCenter Portalスキーマ - この接続の作成方法の詳細は、第4.2.2項「データベース接続の設定」を参照してください。

- アクティビティ・スキーマ - この接続は、推奨の問合せおよびその結果のメタデータの取得に使用されます。これは、分析イベント・コレクタおよびアクティビティ・グラフ・エンジンが使用する接続と同じものです。既存の接続が存在する場合、その接続が使用されます。既存の接続が存在しない場合は、新しい接続を作成する必要があります。この接続の作成方法については、第4.2.2項「データベース接続の設定」を参照してください。

- 分析イベント・コレクタ - この接続は、分析イベント・コレクタに使用イベントを送信するために使用されます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアプリケーション用の分析コレクタの登録に関する項を参照してください。

さらに、類似アイテム・タスク・フロー、トップ・アイテム・タスク・フローおよび推奨データ・コントロールで提案されるアイテムは、アプリケーションで使用可能なツールとサービスによって異なります。たとえば、ドキュメントは、ドキュメント・ツールが有効な場合のみお薦めされます。

- ドキュメント、Wikiおよびブログを表示するにはコンテンツ・リポジトリへの接続が必要です。

- ディスカッションを表示するには、ディスカッション・サーバーへの接続が必要です。

注意:

JDeveloperで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でEnterprise Manager Fusion Middleware Controlを使用して、後から接続を追加、削除または変更できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理を参照してください。

46.2.3 設計時におけるアクティビティ・グラフの追加

この項では、アクティビティ・グラフ・タスク・フローおよびアプリケーションへのアクティビティ・グラフの追加手順について説明します。内容は次のとおりです。

- 第46.2.3.1項「アクティビティ・グラフ・タスク・フロー」

- 第46.2.3.2項「アクティビティ・グラフ・タスク・フローをページに追加する方法」

- 第46.2.3.3項「アクティビティ・グラフ・タスク・フロー・パラメータを変更する方法」

- 第46.2.3.4項「アクティビティ・グラフ・タスク・フローおよびタスク・フロー・パラメータ」

46.2.3.1 アクティビティ・グラフ・タスク・フロー

この項では、アクティビティ・グラフで使用可能なタスク・フローについて説明します。

表46-4に、アクティビティ・グラフによって提供されるタスク・フローを示します。

表46-4 アクティビティ・グラフ・タスク・フロー

タスク・フロー

説明

推奨コネクション

このタスク・フローでは、現在のユーザーに類似しているとアクティビティ・グラフ・エンジンの計算によって判断されたユーザーを表示して、そのユーザーとのコネクションを持つことができます。

詳細は、第46.2.3.1.1項「推奨コネクション・タスク・フロー」を参照してください。

類似ポータル

このタスク・フローでは、現在のユーザーが興味を持つ可能性があるとアクティビティ・グラフ・エンジンの計算によって判断されたポータルを表示して、そのポータルとやり取りできます。

詳細は、第46.2.3.1.2項「類似ポータル・タスク・フロー」を参照してください。

類似アイテム

このタスク・フローでは、現在のユーザーが興味を持つ可能性があるとアクティビティ・グラフ・エンジンの計算によって判断されたWebCenter Portalアイテムを表示して、そのアイテムとやり取りできます。

詳細は、第46.2.3.1.2項「類似アイテム・タスク・フロー」を参照してください。

トップ・アイテム

このタスク・フローでは、現在のポータルでもっともアクティブであるとアクティビティ・グラフの計算によって判断されたWebCenter Portalアイテム(ドキュメント、Wikiまたはブログ)を表示して、そのアイテムとやり取りできます。

詳細は、第46.2.3.1.4項「トップ・アイテム・タスク・フロー」を参照してください。

46.2.3.1.1 推奨コネクション・タスク・フロー

推奨コネクション・タスク・フローでは、現在のユーザーに類似していると計算によって判断されたユーザーを表示して、そのユーザーとのコネクションを持つことができます。

推奨コネクション・タスク・フローは、各ユーザーの「プロファイル」ページで、デフォルトで提供されています。

表46-5に、類似度計算と推奨コネクション・タスク・フローのデフォルト・レシピで使用されている重み付けを示します。このレシピは、similarityURNListタスク・フロー・バインディング・パラメータを編集することで変更できます。詳細は、第46.2.3.3項「アクティビティ・グラフ・タスク・フロー・パラメータを変更する方法」を参照してください。

表46-5 推奨コネクションのデフォルト・レシピ

類似度計算

重み

user-connect

100

user-edit

50

user-like

50

user-comment

10

user-tag

10

user-all

1

推奨の総合スコアが一番高いユーザーが、タスク・フローで最初に表示されます。各推奨ユーザーの最高スコアに関する類似度計算で、関連付けられた理由文字列が存在する場合は、その文字列がユーザー名の下に表示され、なぜそのユーザーを推奨するのかが詳述されます。

最上位の類似度ファンクションに理由文字列が定義されていない場合は、何も表示されません。類似度計算理由文字列は編集したり、文字列を追加したりできます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の類似度計算の理由文字列のカスタマイズに関する項を参照してください。

46.2.3.1.2 類似ポータル・タスク・フロー

類似ポータル・タスク・フローでは、現在のポータルのユーザーが興味を持つ可能性があると計算によって判断されたポータルを表示して、そのポータルとやり取りできます。推奨されるポータルは、現在のユーザーに固有のものではありませんが、タスク・フローにはそのユーザーが表示権限を持つポータルのみが示されます。

表46-6に、類似度計算と類似ポータル・タスク・フローのデフォルト・レシピで使用されている重み付けを示します。このレシピは、similarityURNListタスク・フロー・バインディング・パラメータを編集することで変更できます。詳細は、第46.2.3.3項「アクティビティ・グラフ・タスク・フロー・パラメータを変更する方法」を参照してください。

表46-6 類似ポータルのデフォルト・レシピ

類似度計算

重み

gs-edit

10

gs-all

1

推奨の総合スコアが一番高いポータルが、タスク・フローで最初に表示されます。各推奨ポータルの最高スコアに関する類似度計算で、関連付けられた理由文字列が存在する場合は、その文字列がポータル名の下に説明とともに表示されます。

最上位の類似度計算に理由文字列が定義されていない場合は、何も表示されません。類似度計算理由文字列は編集したり、文字列を追加したりできます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の類似度計算の理由文字列のカスタマイズに関する項を参照してください。

46.2.3.1.3 類似アイテム・タスク・フロー

類似アイテム・タスク・フローでは、現在選択しているアイテムのユーザーが興味を持つ可能性があるとアクティビティ・グラフ・エンジンの計算によって判断されたWebCenter Portalアイテムを表示して、そのアイテムとやり取りできます。推奨されるアイテムは、現在のユーザーに固有のものではありませんが、タスク・フローにはそのユーザーが表示権限を持つアイテムのみが示されます。

ユーザーが興味を持つ可能性があるアイテムには、Wiki、ブログ・ポスト、ドキュメント、ディスカッション・トピックなどが含まれます。

類似アイテム・タスク・フローでは、ページ上の他のタスク・フローで選択したアイテムに基づいて推奨コンテキストが決定されます。この情報は、タスク・フロー入力パラメータ(通常は、EL式を使用)またはWebCenterResourceSelected ADF UIイベントを通じて提供されます。類似アイテム・タスク・フローのコンテキストを決定するタスク・フローは、次のとおりです。

- 次のドキュメント・ツール・タスク・フローです。

- 最近のドキュメント

- ドキュメント・リスト・ビューア

- ドキュメント・ナビゲータ

- ドキュメント・エクスプローラ

- フォルダ・ビューア

- ドキュメント・マネージャ

- ドキュメント・ブラウザ

類似アイテム・タスク・フローは、ドキュメント・エクスプローラのファイル用の「関連アイテム」ペインにあり、現在表示しているファイルに類似するアイテムが表示されます。このタスク・フローの実行時における使用方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のポータルへのアクティビティ・グラフおよび推奨の追加に関する項を参照してください。

ディスカッション・トピックの推奨を参照するには、類似アイテム・タスク・フローのresourceIDパラメータを編集し、ディスカッション・トピックの「ResourceID」を入力します。

表46-7に、類似度計算と類似アイテム・タスク・フローのデフォルト・レシピで使用されている重み付けを示します。このレシピは、similarityURNListタスク・フロー・バインディング・パラメータを編集することで変更できます。詳細は、第46.2.3.3項「アクティビティ・グラフ・タスク・フロー・パラメータを変更する方法」を参照してください。

表46-7 類似アイテムのデフォルト・レシピ

類似度計算

重み

item-edit

100

item-like

50

item-comment

20

item-tag

10

item-all

1

推奨の総合スコアが一番高いアイテムが、タスク・フローで最初に表示されます。各推奨アイテムの最高スコアに関する類似度計算で、関連付けられた理由文字列が存在する場合は、その文字列がアイテム名の下に表示され、なぜそのアイテムを推奨するのかが詳述されます。

最上位の類似度ファンクションに理由文字列が定義されていない場合は、何も表示されません。類似度計算理由文字列は編集したり、文字列を追加したりできます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の類似度計算の理由文字列のカスタマイズに関する項を参照してください。

46.2.3.1.4 トップ・アイテム・タスク・フロー

トップ・アイテム・タスク・フローでは、現在のポータルでアクティブであるとアクティビティ・グラフの計算によって判断されたアイテムを表示して、そのアイテムとやり取りできます。トップ・アイテムにはドキュメント、Wikiおよびブログが含まれます。アイテムは、現在のユーザーに固有のものではありませんが、タスク・フローにはそのユーザーが表示権限を持つアイテムのみが示されます。

Portal Frameworkアプリケーションでは、このタスク・フローは「トップ投稿」モードでのみ動作し、現在のユーザーによりトップ投稿になったとアクティビティ・グラフの計算によって判断されたWebCenter Portalアイテムを表示して、そのアイテムとやり取りできます。これは、各ユーザーの「プロファイル」ページでデフォルトで使用できます。

表46-8に、ランク計算とトップ・アイテム・タスク・フローのデフォルト・レシピで使用されている重み付けを示します。このレシピは、recipeタスク・フロー・バインディング・パラメータを編集することで変更できます。詳細は、第46.2.3.3項「アクティビティ・グラフ・タスク・フロー・パラメータを変更する方法」を参照してください。

表46-8 トップ・アイテムのデフォルト・レシピ

トップ・アイテム計算

重み

activity-rank

50

like-rank

50

46.2.3.2 アクティビティ・グラフ・タスク・フローをページに追加する方法

この項では、推奨コネクション・タスク・フローをアプリケーション・ページに追加する方法について説明します。この手順は、すべてのアクティビティ・グラフ・タスク・フローで同じです。

推奨コネクション・タスク・フローをPortal Frameworkアプリケーションに追加するには:

1. 第46.1.2項「アクティビティ・グラフの要件」の説明に従って、アプリケーションを準備します。

2. タスク・フローを追加するページを開きます。

3. リソース・パレットで、「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」フォルダの順に開きます。

4. 推奨コネクション・タスク・フロー(または、希望するアクティビティ・グラフ・タスク・フロー)を、JSF (.jspx)ページにドラッグ・アンド・ドロップします。

5. 表示されるポップアップ・メニューから、「リージョン」を選択します。
アクティビティ・グラフのADFライブラリ(activitygraph-service-view.jar)をプロジェクトに追加するよう要求される場合があります。「ライブラリの追加」をクリックして確認します。この操作の完了には時間がかかる場合があります。

6. 「タスク・フロー・バインディングの編集」ダイアログにパラメータの値を入力するか、デフォルトを受け入れます。
詳細は、第46.2.3.4項「アクティビティ・グラフ・タスク・フローおよびタスク・フロー・パラメータ」を参照してください。

7. 「OK」をクリックします。
タスク・フローがページに追加され、プロジェクトのライブラリがタスク・フローを実行するように構成されます。

8. 「設計」ビューでページを右クリックして、「認可の編集」を選択します。「付与先」→「認証済ユーザーの選択」に移動して、「アクション」で、認証済ユーザーにCustomize、Grant、PersonalizeおよびViewという権限を付与します。

9. ページを保存し、実行します。

46.2.3.3 アクティビティ・グラフ・タスク・フロー・パラメータを変更する方法

各アクティビティ・グラフ・タスク・フローには、一連の必須およびオプションのタスク・フロー・バインディング・パラメータがあります。これらは、タスク・フローが正常に機能するために役立つ情報を取得する手段を提供します。

タスク・フロー・バインディング・パラメータを使用すると、タスク・フローの正常なレンダリングに必要な値を提供できるのみでなく、タスク・フロー・インスタンスの外観および動作をカスタマイズできます。たとえば、パラメータ値を使用して、ヘッダーとフッターをレンダリングするかどうか、表示する情報の行数や列数、返されたデータにフィルタを適用するかどうかなどを決定できます。

タスク・フロー・バインディング・パラメータの値は、タスク・フローをアプリケーション・ページにドラッグ・アンド・ドロップするときに指定できます。この操作を行うと、「タスク・フロー・バインディング」ダイアログが開きます(詳細は、第46.2.3.2項「アクティビティ・グラフ・タスク・フローをページに追加する方法」を参照してください)。

ページにタスク・フローを配置した後、タスク・フロー・バインディング・パラメータの値を調整することもできます。

「タスク・フロー・バインディングの編集」ダイアログにアクセスするには:

1. ページの下部にある「バインディング」タブ(「ソース」タブの横)をクリックして、「バインディング」ビューに移動します。

2. 「実行可能ファイル」の下に、追加したタスク・フローが表示されます。
図46-6に、「実行可能ファイル」セクションに推奨コネクション・タスク・フローが表示されている例を示します。

図46-6 ページ・データ・バインディング定義の推奨コネクション

3. タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログ(図46-7)で、必要に応じてバインディング・パラメータの値を変更します(詳細は、第46.2.3.4項「アクティビティ・グラフ・タスク・フローおよびタスク・フロー・パラメータ」を参照してください)。

図46-7 推奨コネクションの「タスク・フロー・バインディングの編集」ダイアログ

5. 終了したら、「OK」をクリックします。

6. ページを保存して実行し、結果を表示します。

46.2.3.4 アクティビティ・グラフ・タスク・フローおよびタスク・フロー・パラメータ

表46-9に、アクティビティ・グラフに適用できるタスク・フロー・バインディング・パラメータのリストと説明を示します。

表46-9 アクティビティ・グラフ・タスク・フロー・バインディング・パラメータ

パラメータ

タスク・フロー

説明

resourceId

推奨コネクション

類似ポータル

類似アイテム

推奨のコンテキストとして使用する個人、ポータルまたはアイテムのID。

コネクションのデフォルト値は、現在ログインしているユーザーの式言語トークンです。

ポータルのデフォルト値は、タスク・フローが含まれているポータルのリソースIDの式言語トークンです。

アイテムの値は、選択イベントから導出されます。

classURN

類似アイテム

コンテキストのノード・クラス。デフォルトでは、情報は選択イベントから導出されます。

objectName

類似ポータル

類似アイテム

推奨のコンテキストとして使用するポータルまたはアイテムの名前。

ポータルのデフォルト値は、タスク・フローが含まれているポータルのリソースIDの式言語トークンです。

アイテムの値は、選択イベントから導出されます。

recipe

推奨コネクション

類似ポータル

類似アイテム

トップ・アイテム

登録済類似度計算のカンマ区切りリスト=重みペア(またはトップ・アイテムの場合、ランク計算=重みペア)。このリストにより、表示される推奨とその順序が決定されます。

各タスク・フローのデフォルト・レシピは、第46.2.3.1項「アクティビティ・グラフ・タスク・フロー」に示されています。

classURNRestrictions

類似アイテム

トップ・アイテム

推奨に含めるノード・クラスのカンマ区切りリスト。非nullの場合、指定したノード・クラスのオブジェクトのみが推奨に含まれます。

デフォルトでは空です。これは、オブジェクトのどのクラスが返されるかについて、制限がないことを意味します。

excludeObjectActions

推奨コネクション

類似ポータル

類似アイテム

登録済アクションのカンマ区切りリスト。ログインしているユーザーがとった一連のアクションの対象である人物、ポータルまたはアイテムがタスク・フローには表示されません。

たとえば、類似アイテム・タスク・フローのデフォルト値は、作成、編集、コメント、タグです。これは、ユーザー自身が作成、編集、コメントまたはタグ付けしたアイテムが推奨されないことを意味します。

デフォルト・アクションは、表46-1にリストされています。

serviceId

類似アイテム

オブジェクトのノード・クラスを識別するために、classURNのかわりにresourceId(およびオプションでresourceType)とともに使用されます。

resourceType

類似アイテム

オブジェクトのノード・クラスを識別するために、classURNのかわりにresourceIdおよびserviceIdとともに使用されます。

たとえば、ドキュメント・ツールではresourceTypeを使用して、オブジェクトがWiki、ブログまたはドキュメントであるかどうかを識別します。

suppressPopup

類似アイテム

トップ・アイテム

タスク・フローの各リンクがインライン・ポップアップ(false)のコンテンツを起動するか、それともブラウザ内のウィンドウ(true)のコンテンツを起動するかを決定します。

デフォルト値はfalseです。

46.3 アクティビティ・グラフの詳細情報

この項では、アクティビティ・グラフで使用できる拡張機能について説明します。内容は次のとおりです。

- 第46.3.1項「推奨データ・コントロールの使用方法」

- 第46.3.2項「アクティビティ・グラフREST APIの使用」

46.3.1 推奨データ・コントロールの使用方法

アクティビティ・グラフには、ツール用の独自のユーザー・インタフェース(タスク・フロー)の作成を可能にするデータ・コントロールが用意されています。

推奨データ・コントロールでは、類似アイテムと類似ユーザーの提案をアクティビティ・グラフ・エンジンに問い合せる2つのメソッドと、ユーザーが興味を示さないアイテムを記録する1つのメソッドが公開されています。

- getSimilarObjects: 指定したソースと類似度計算のSuggestionWrappersリストを、複雑な類似度計算レシピの選択肢、およびノード・クラスとアクションのフィルタリングとともに返します。

- recordNotInterested: 指定したオブジェクトにユーザーが興味を示していないことを記録します。

注意:

便宜上、getSimilarObjectsメソッドは、APIの下位レベルで使用されているリスト引数やマップ引数のかわりに文字列引数を取ります。タスク・フロー入力パラメータは通常、このような引数で構成されるからです。

通常、データ・コントロールとメソッドのバインディングには、MethodAction、MethodIterator(メソッドの結果を反復するため)およびTree(生成されるデータ構造の各属性を取得するため)という3つの構成要素が必要になります。これらは、ページ定義ファイルで手動で作成したり、より簡単な方法としてJDeveloper付属のウィザードを使用して作成できます。

推奨データ・コントロールをプロジェクトに追加するには:

1. 推奨データ・コントロールをプロジェクトに追加します(カタログ内でそれを選択し、右クリックして「プロジェクトに追加」を選択するか、またはプロジェクト内でそれをJSPページ(.jspx)にドラッグ・アンド・ドロップすることで)。

2. ADF表をJSPページにドラッグします。

3. 要求されたら、「データソースにバインド」チェック・ボックスを選択します。

4. 「推奨データ・コントロール」に移動し、必要なAPIメソッドからのSuggestionWrapper結果を選択します。これにより、メソッド・アクション・バインディングおよび結果コレクションのイテレータが自動的に作成されます。

5. 公開するノードを選択します。これにより、提案値にアクセスするためのツリーが自動的に作成されます。

6. メソッド・アクションのパラメータを構成します。これらのパラメータは、通常、pageFlowScope変数としても定義できる式になります。

- classURN: 推奨ソースのノード・クラスのURN。

- objectURN: 推奨ソースのURN。

- userCredentialClass - nullの場合、WebCenter Portalユーザー・タイプが使用されます。

- recipe: 使用される計算とそれらに関連付けられた重みのカンマ区切りリスト。例:

- 類似アイテム・タスク・フローの場合:

item-edit=100,item-like=50,item-comment=20,item-tag=10,item-all=1

- 推奨コネクション・タスク・フローの場合:

user-connect=100,user-edit=50,user-like=50,user-comment=10,user-tag=10,user-all=1

- 類似ポータル・タスク・フローの場合:

gs-edit=10,gs-all=1

- トップ・アイテム・タスク・フローの場合:

activity-rank=50,like-rank=50

- classURNRestrictionList: 推奨に含めるノード・クラスのカンマ区切りリスト。非nullの場合、指定したノード・クラスのオブジェクトのみが推奨に含まれます。

- excludeObjectActionList - 結果のフィルタに使用するアクションURNのカンマ区切りリスト。

- maxResults: 返される推奨の最大数

46.3.2 アクティビティ・グラフREST APIの使用

WebCenter Portalには、アクティビティ・グラフをサポートするREST APIが用意されています。アクティビティ・グラフREST APIを使用すると、コネクション、ポータルおよびアイテムの推奨を提供するための独自のインタフェースを作成できます。

この項では、アクティビティ・グラフに関連付けられているREST APIについて説明します。内容は次のとおりです。

- 第46.3.2.1項「アクティビティ・グラフのエントリ・ポイント」

- 第46.3.2.2項「アクティビティ・グラフのリソース・タイプの分類」

- 第46.3.2.3項「セキュリティに関する考慮事項」

- 第46.3.2.4項「アクティビティ・グラフのリソース・タイプ」

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

46.3.2.1 アクティビティ・グラフのエントリ・ポイント

各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。アクティビティ・グラフには、推奨用とアイテム用の2つのエントリ・ポイントがあります。アクティビティ・グラフ・のエントリ・ポイントを検索するには、次のいずれかのresourceTypeを使用したリンク要素を検索します。

urn:oracle:webcenter:activitygraph:recommendations
urn:oracle:webcenter:activitygraph:items

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供されます。クライアントは、このエントリ・ポイントにHTTPリクエストを送信し、アクティビティ・グラフを使用します。

リソース索引の詳細は、第53.5.1項「リソース索引の使用」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

46.3.2.2 アクティビティ・グラフのリソース・タイプの分類

クライアントでは、使用するエントリ・ポイントが識別されると、リソース・タイプの分類が精査されて必要な操作が実行されます。個々のリソース・タイプの詳細は、第46.3.2.2項「アクティビティ・グラフのリソース・タイプの分類」の該当箇所を参照してください。

アクティビティ・グラフの分類は、次のとおりです。

urn:oracle:webcenter:activitygraph:recommendations
urn:oracle:webcenter:activitygraph:recommendations:recommendation
urn:oracle:webcenter:activitygraph:items
urn:oracle:webcenter:activitygraph:items:item

46.3.2.3 セキュリティに関する考慮事項

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

46.3.2.4 アクティビティ・グラフのリソース・タイプ

この項では、各リソース・タイプについて知っておく必要があるすべての情報を提供します。内容は次のとおりです。

- 第46.3.2.4.1項「urn:oracle:webcenter:activitygraph:recommendations」

- 第46.3.2.4.2「urn:oracle:webcenter:activitygraph:recommendations:recommendation」

- 第46.3.2.4.3「urn:oracle:webcenter:activitygraph:items」

- 第46.3.2.4.4項「urn:oracle:webcenter:activitygraph:items:item」

46.3.2.4.1 urn:oracle:webcenter:activitygraph:recommendations

このリソースを使用して、指定したオブジェクトに対する類似度に基づいて推奨されたコネクション、ポータル、アイテムの取得(GET)に使用するURIを識別します。GET操作のレスポンスには、要求されているリストの各オブジェクトが含まれ、各オブジェクトには、そのオブジェクトの操作に使用した各リンクが含まれます。

アクティビティ・グラフに存在する各ノードは、ノード・クラスURNとオブジェクトURNの組合せによって識別されます。

たとえば、montyというユーザーを識別するには、次のように指定できます。

- classURN=WC.user

- objectURN=monty

デフォルトで提供されるノードは、すべてWebCenter Portalリソース(ユーザー、ドキュメント、ポータルなど)であるため、WebCenter PortalサービスとリソースIDを備えています。アクティビティ・グラフREST APIは、serviceIdとobjectURN(リソースIDを含む)を使用してこれらのデフォルト・ノードを識別するための別の方法を提供します。

たとえば、montyというユーザーを識別するには、次のように指定できます。

- serviceId=oracle.webcenter.people

- objectURN=monty

サービスのオブジェクトが、ドキュメント・ツールなどのリソース・タイプでさらに分類されている場合、そのリソース・タイプも指定する必要があります。

たとえば、特定のドキュメントを識別するには、次のように指定できます。

- serviceId=oracle.webcenter.doclib

- resourceType=document

- objectURN=document1

作成された新しいノード・クラス(つまり、非ネイティブのWebCenter Portalオブジェクト)はすべて、ノード・クラスとオブジェクトURNを使用して識別する必要があります。

recommendationsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceIndex
recommendations

recommendationsでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - パラメータ: startIndex、itemsPerPage、utoken。
これらの共通パラメータの情報は、「共通のリクエスト問合せパラメータ」を参照してください。

次の追加パラメータを使用できます。

- classURN - 推奨を要求するオブジェクトのタイプを識別するノード・クラスURN。たとえば、WC.user、WC.group-documentです。

- objectURN - 推奨を要求するオブジェクトに一意の識別子を提供するオブジェクトURN。たとえば、monty、1000です。

- recipe - 推奨オブジェクトを決定するために使用される類似度URNとオプションで関連付けられた重み(コロンで示される)のセミコロン区切りのリスト。たとえば、gs-edit:10;gs-all:1です。

- classURNRestrictions - 推奨から除外される、ノード・クラスURNによって識別されるオブジェクト・タイプのカンマ区切りリスト

- excludeObjectActions - 現在のユーザーがオブジェクトにアクションを実行した場合に推奨からオブジェクトを除外するために使用され、アクションURNによって識別されるアクションのカンマ区切りリスト。たとえば、クライアントが推奨ポータルを取得する場合は、(ユーザーがそれらのポータルを認識した以降に)クライアント・ユーザーが編集したポータルを除外するためにgs-editアクションを指定できます。

- serviceId - 推奨を要求するオブジェクトのタイプを識別するWebCenter PortalサービスID(デフォルト・オブジェクトのclassURNのかわりにこれを使用できます)。

- resourceType - 推奨をリクエストしているオブジェクトのWebCenter Portalリソース・タイプ。必要に応じて、serviceIdと組み合せて使用します。

- userCredentialClassURN - ユーザー演習用REST APIのノード・クラスURN。デフォルト値はWC.userです。アクティビティ・グラフ・エンジンを別のアプリケーションに統合する場合、別のノード・クラスへの変更が必要な場合があります。

- レスポンス - 本体: 0以上の推奨

詳細は、第53.5.2.5項「テンプレート」を参照してください。

recommendationsからリンクされるリソース・タイプ

表46-10に、クライアントがこのリソースからリンクできるリソース・タイプを示します。

表46-10 recommendationsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:activitygraph:recommendations

46.3.2.4.2 urn:oracle:webcenter:activitygraph:recommendations:recommendation

推奨レスポンスには、推奨オブジェクトと、そのオブジェクトへのアクセスに使用するURIが含まれています。

recommendationへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してrecommendationリソースにアクセスする方法を示します。

resourceIndex
recommendations
recommendation

recommendationの読取り専用要素

表46-11に、recommendationsリソースの読取り専用要素を示します。

表46-11 recommendationの読取り専用要素

要素

タイプ

説明

score

Float

リスト内の他の推奨と比較して計算された、この推奨の総合スコア。レシピを構成する個々の類似URNに関連付けられたコンポーネント・スコアの重み付けされた合計で、0から1の浮動小数点数からなります。

item

urn:oracle:webcenter:activitygraph:items:item

推奨されているユーザー、アイテムまたはポータル。

componentScores

componentScore要素のリスト

推奨用のレシピ内の各類似URNに関連付けられたコンポーネント・スコアのリスト。コンポーネント・スコアは、理由およびユーザーと推奨オブジェクトがやり取りする共通のアイテムを取得するために使用できるリンクを備えている場合があります。

46.3.2.4.3 urn:oracle:webcenter:activitygraph:items

このリソースを使用して、ソース・オブジェクトと推奨オブジェクトの両方に共通するオブジェクトの取得(GET)に使用するURIを識別します。これにより、特定のオブジェクトがなぜ推奨されたのか、その理由を調べることができます。GET操作のレスポンスには、このアイテム・コレクションの各アイテムが含まれ、各アイテムには、そのアイテムの操作に使用した各リンクが含まれます。

itemsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceIndex
items

itemsでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - パラメータ: startIndex、itemsPerPage、utoken。
これらの共通パラメータの情報は、「共通のリクエスト問合せパラメータ」を参照してください。

次の追加パラメータを使用できます。

- similarityURN - オブジェクトが推奨オブジェクトと類似であるか判断するために使用される類似度計算のURN。たとえば、item-tag、gs-edit、user-connectです。

- srcClassURN - 推奨を要求するために使用されたオブジェクトのタイプを識別するノード・クラスURN。たとえば、WC.user、WC.group-documentです。

- srcObjectURN - 推奨を要求するために使用されたオブジェクトのURN。たとえば、monty、1000です。

- trgClassURN - 推奨オブジェクトのタイプを識別するノード・クラスURN。

- trgObjectURN - 推奨オブジェクトの一意の識別子を提供するオブジェクトURN。

- userCredentialClassURN - ユーザー演習用REST APIのノード・クラスURN。デフォルト値はWC.userです。アクティビティ・グラフ・エンジンを別のアプリケーションに統合する場合、別のノード・クラスへの変更が必要な場合があります。

- レスポンス - 本体: 1つ以上のアイテム

詳細は、第53.5.2.5項「テンプレート」を参照してください。

itemsからリンクされるリソース・タイプ

表46-12に、クライアントがこのリソースからリンクできるリソース・タイプを示します。

表46-12 itemsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:activitygraph:items

46.3.2.4.4 urn:oracle:webcenter:activitygraph:items:item

このリソース・タイプを使用して、推奨の更新(PUT)に使用するURIを識別します(推奨オブジェクトにユーザーが興味を持ったことを示すためです)。

itemへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してitemリソースにアクセスする方法を示します。

resourceIndex
recommendations
recommendation
item
resourceIndex
items
item

itemでサポートされるメソッド

このリソース・タイプによってサポートされるメソッドは次のとおりです。

- PUT

- リクエスト - 本体: item

- レスポンス - 本体: item

itemの書込み可能要素

表46-13に、このリソース・タイプの書込み可能要素を示します。

表46-13 itemの書込み可能要素

要素

タイプ

必須

制約

説明

status

String

はい

興味がある

興味がない

ユーザーがオブジェクトに対して興味があるかどうか

itemの読取り専用要素

表46-14に、このリソース・タイプの読取り専用要素を示します。これらの要素の中にはオブジェクトで使用できないものもあります。

表46-14 itemの読取り専用要素

要素

タイプ

説明

classURN

String

オブジェクトのノード・クラス

objectURN

String

オブジェクトの識別子

name

String

オブジェクトの名前

description

String

オブジェクトの説明

modified

日付

オブジェクトの最終更新日

modifiedByUser

PersonReference

オブジェクトを最後に更新したユーザーに関するユーザー情報。GUID、ID、表示名およびプロファイル・アイコンへのリンクが含まれます

author

PersonReference

オブジェクトを作成したユーザーに関するユーザー情報。GUID、ID、表示名およびプロファイル・アイコンへのリンクが含まれます

itemからリンクされるリソース・タイプ

表46-15に、クライアントがこのリソースからリンクできるリソース・タイプを示します。

表46-15 itemに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:activitygraph:items:item

via

基礎となるオブジェクトのresourceType

46.4 アクティビティ・グラフの拡張

出荷時のアクティビティ・グラフには、WebCenter Portalのイベント・データをWebCenter Portal分析にマッピングするためのメタデータ定義が含まれています。このメタデータは、アクティビティ・グラフ・エンジン・アプリケーションの最初の起動時に自動的にロードされます。

XMLファイルを操作することでアクティビティ・グラフのメタデータを拡張して、WebCenter Portal分析によるアクションの収集方法を変更できます。これらのXMLファイルは、エクスポートしてテキスト・エディタで編集した後、インポートできます。

アクティビティ・グラフのメタデータ定義を更新するには、まずローカルXMLファイルにエクスポートする必要があります。

- アクティビティ・グラフのメタデータ定義をエクスポートする方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフ・メタデータのエクスポートに関する項を参照してください。

- 分析マッピングのメタデータ定義をエクスポートする方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のプロバイダ構成のエクスポートに関する項を参照してください。

メタデータ定義を適切なファイルにエクスポートしたら、任意のエディタでファイルを編集して独自の定義を追加できます。変更後は、メタデータ・ファイルを管理対象サーバーにインポートしなおす必要があります。アクティビティ・グラフのメタデータ定義ファイルをインポートする方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフ・メタデータのインポートに関する項を参照してください。

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

- 第46.4.1項「カスタム・ノード・クラスの定義」

- 第46.4.2項「カスタム・アクションの定義」

- 第46.4.3項「カスタム類似度計算の定義」

- 第46.4.4項「カスタム・ランク計算の定義」

- 第46.4.5項「カスタム・アクティビティ・プロバイダの登録」

- 第46.4.6項「カスタムQRPPの登録」

46.4.1 カスタム・ノード・クラスの定義

アクティビティ・グラフのメタデータでは、ユーザー、ポータル、ドキュメントなどのWebCenter Portalオブジェクトを表すノード・クラスが定義されます。WebCenter Portalでサポートされているデフォルトのノード・クラスのリストおよびノード・クラスの定義の詳細は、「ノード・クラス」を参照してください。

アクティビティ・グラフのメタデータ定義をXMLファイルにエクスポートし、そのファイルを編集してから、メタデータをWebCenter Portalにインポートしなおすことで、他のWebCenter Portalオブジェクト用または他のアプリケーションのオブジェクト用に独自のノード・クラスを定義できます。たとえば、CRMアプリケーションをアクティビティ・グラフに統合する場合は、サービス・リクエスト用のノード・クラスを定義できます。

カスタム・ノード・クラスを定義するには:

1. WLSTコマンドexportAGMetadataを使用して、アクティビティ・グラフのメタデータをローカルXMLファイルにエクスポートします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフのメタデータのエクスポートに関する項を参照してください。

2. XMLファイルを編集して新しいノード・クラスを定義します。各カスタム・ノード・クラスでは、次のものを指定する必要があります。

- URN - nodeClass要素の属性。これは、ノード・クラスを一意に識別する文字列です

- nodeType - ノード・クラスによって定義されているオブジェクトがアイテムかユーザーかを示すサブ要素。有効な値はItemまたはUserです。

- numericURNs - このクラスのオブジェクトのURNが数値かどうかを示すサブ要素。これにより、アクティビティ・グラフを、数値IDを使用するアプリケーションとより効率的に統合できます。有効な値はtrueまたはfalseです。

- properties - 名前、値ペアのリスト。ノード・クラスのプロパティは、実行時にクラスに関する追加メタデータを提供するために使用できます。たとえば、アクティビティ・グラフでモデル化されているすべてのデフォルトWebCenter Portalオブジェクトが、それぞれのサービスとリソース・タイプに基づいて推奨の表示をカスタマイズするためにアクティビティ・グラフ・タスク・フローによって使用されるserviceIDとresourceTypeのプロパティを定義します。

<properties>
<property name="oracle.webcenter.resourceType" value="wiki" />
<property name="oracle.webcenter.serviceID" value="oracle.webcenter.doclib" />
</properties>

例46-1 ノード・クラスの定義

<nodeClasses>
<nodeClass URN="WC.wiki-page">
<nodeType>Item<nodeType>
<properties>
<property name="oracle.webcenter.resourceType" value="wiki" />
<property name="oracle.webcenter.serviceID" value="oracle.webcenter.doclib" />
</properties>
</nodeClass>
</nodeClasses>

3. WLSTコマンドimportAGMetadataを使用して、更新済のアクティビティ・グラフ・メタデータ・ファイルをPortal Frameworkアプリケーションのデプロイ先の管理対象サーバーにインポートします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフのメタデータのインポートに関する項を参照してください。

46.4.2 カスタム・アクションの定義

アクティビティ・グラフには、Portal Frameworkアプリケーションで発生するアクション用のメタデータ定義が含まれています。詳細は、「アクション」を参照してください。

アクティビティ・グラフのメタデータ定義をXMLファイルにエクスポートし、そのファイルを編集してから、メタデータをWebCenter Portalにインポートしなおすことで、WebCenter Portal用または他のアプリケーション用に独自のアクションを定義できます。たとえば、CRMアプリケーションをアクティビティ・グラフに統合する場合は、サービス・リクエストのオープン用、技術サポートへのサービス・リクエストの割当て用およびサービス・リクエストのクローズ用に新しいアクションを定義できます。

カスタム・アクションを定義するには:

1. WLSTコマンドexportAGMetadataを使用して、アクティビティ・グラフのメタデータをローカルXMLファイルにエクスポートします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフのメタデータのエクスポートに関する項を参照してください。

2. XMLファイルを編集して新しいアクションを定義します。各カスタム・アクションでは、次のものを指定する必要があります。

- URN - action要素の属性。これは、アクションを一意に識別する文字列です

- actionType - サブ要素。有効な値は、次のとおりです:

- Simple - カウントする際に役立つアクション。ソース、ターゲットおよび発生時刻以外のメタデータは存在しません。たとえば、WebCenter Portalには、ユーザーが同一アイテムをクリックするたびに、関連付けられたリレーション値が増加し、時間の経過とともに値が減衰する、事前登録済のview-count単純アクションが用意されています。

- Boolean - ある事象の発生回数ではなく、発生の有無を確認する際に役立つアクション。Booleanアクションには、それ以外に1つのBooleanがメタデータとして存在します。たとえば、WebCenter Portalには、ユーザーが同一アイテムをクリックしても関連付けられたリレーション値が増加しない、Boolean型のviewアクションが用意されています。このアクションでは、単にユーザーが特定のアイテムをクリックしたかどうかが記録されます。

- Non-negative Integer - 整数を負の数にできないメタデータとして1つの追加整数を持つアクション。評価(複数の星の割当て)は典型的な例です。

- Integer - 1つの追加整数がメタデータとして存在するアクション。負の値の指定が許可されている評価で使用できます。

- symmetric - アクションのソースとターゲットが相互に交換可能かどうかを示すサブ要素。対称アクションの例として、ピープル・コネクションで2人のユーザーがコネクションを持ったときに発生するconnectアクションがあげられます。有効な値はtrueまたはfalseです。

- sourceType - アクションの実行オブジェクトのタイプを識別するサブ要素。有効な値はUserまたはItemです。

- targetType - アクションの実行対象オブジェクトのタイプを識別するサブ要素。有効な値はUserまたはItemです。

- relationType - サブ要素。有効な値はSumまたはLastAssignedです。edit-countアクションなどのSumアクションは、発生するたびに増加します。LastAssignedアクションでは、最近発生したアクションで渡された値が保持されます。createやeditなどの、カウントではない単純アクションはLastAssignedアクションです。LastAssigned Integerアクションの例は評価アクションです。

- relationDecayPeriod - (オプション)アクションの値が失われる(減衰する)までの時間(日数)を示すサブ要素。リレーション値の計算では、アクションの発生後の一定の減衰期間が経過するたびに、各アクションの値が減衰因子で乗算されます。

- relationDecayFactor - (オプション)減衰期間の後アクションの値がどのぐらい減少(または減衰)するかを決定する0と1の間の浮動小数値であるサブ要素。リレーション値の計算では、アクションの発生後の一定の減衰期間が経過するたびに、各アクションの値が減衰因子で乗算されます。

例46-2 アクションの定義

<actions>
...
<action URN="connect">
<actionType>Boolean</actionType>
<symmetric>true</symmetric>
<sourceType>User</sourceType>
<targetType>User</targetType>
<relationType>LastAssigned</relationType>
<relationIsNonNegative>true</relationIsNonNegative>
</action>
...
<action URN="edit-count">
<actionType>Simple</actionType>
<symmetric>false</symmetric>
<sourceType>User</sourceType>
<targetType>Item</targetType>
<relationType>Sum</relationType>
<relationDecayPeriod>1</relationDecayPeriod>
<relationDecayFactor>0.97</relationDecayFactor>
</action>
...
</actions>

3. WLSTコマンドimportAGMetadataを使用して、更新済のアクティビティ・グラフ・メタデータ・ファイルをPortal Frameworkアプリケーションのデプロイ先の管理対象サーバーにインポートします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフのメタデータのインポートに関する項を参照してください。

46.4.3 カスタム類似度計算の定義

アクティビティ・グラフには、WebCenter Portalで使用されている類似度計算のメタデータ定義が含まれます。詳細は、「類似度計算」を参照してください。

アクティビティ・グラフのメタデータ定義をXMLファイルにエクスポートし、そのファイルを編集してから、メタデータをWebCenter Portalにインポートしなおすことで、WebCenter Portal用または他のアプリケーション用に独自の類似度計算を定義できます。たとえば、CRMアプリケーションをアクティビティ・グラフに統合する場合は、item-assign類似度計算を定義して、同じユーザーに割り当てられている他のサービス・リクエストの推奨に役立てられます。

カスタム類似度計算を定義するには:

1. WLSTコマンドexportAGMetadataを使用して、アクティビティ・グラフのメタデータをローカルXMLファイルにエクスポートします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフのメタデータのエクスポートに関する項を参照してください。

2. XMLファイルを編集して新しい類似度計算を定義します。各類似度計算では、次のものを指定する必要があります。

- URN - 類似度計算要素の属性。これは、類似度計算を一意に識別する文字列です。

- similarityFunction - アイテム間の類似度を計算するファンクションを識別するサブ要素。現時点では、Tanimotoという類似度ファンクションのみがサポートされています。このファンクションは、2つのアイテム間の類似度を、共通アクション数とアイテムに対する合計アクション数の比率として計算します。

- domainClasses - 類似度スコアの計算対象であるノード・クラスを識別するサブ要素。類似度計算のリレーションの組合せで表されるアクションのターゲットです。

- backgroundClasses - ノード・クラスを識別するサブ要素。類似度計算のリレーションの組合せで表されるアクションのソースです。

- relationCombination - 1つ以上の登録済リレーションを組み合せることにより新しいリレーションを定義するサブ要素。リレーションの組合せには次の2つのタイプがあります。

- Boolean OR (WebCenter Portalの即時利用可能なすべての類似度計算で使用される)。コンポーネント・リレーションのいずれかが正の値である場合、リレーションの組合せの結果値は1 (true)になり、そうでない場合は、0 (false)になります。

- Weighted Sum (WebCenter Portalの即時利用可能なすべてのランク計算で使用される)。リレーションの組合せの結果値は、各コンポーネント・リレーションの重み付けされた値の合計です。

各コンポーネント・リレーションでは、次のものを指定します。

- actionURN - コンポーネント・リレーションのアクションのURN

- use inverse - コンポーネント・リレーションを使用してターゲット・オブジェクトの類似度を直接計算するにはfalse(デフォルト)に設定し、コンポーネント・リレーションを使用してターゲット・オブジェクトではなくソース・オブジェクトの類似度を計算するにはtrueに設定します。たとえば、viewリレーションのソース・オブジェクト(user)がターゲット・オブジェクト(document)を表示している場合、ドキュメントの類似度を計算するにはuse inverse=falseを設定します。ソース・オブジェクト(users)の類似度を計算するにはuse inverse=trueを設定します。

- weight - (Weighted Sumリレーションの組合せの場合)浮動小数として表され、コンポーネント・リレーションに適用される重み

例46-3 類似度計算の定義

<similarityCalculations>
<similarityCalculation URN="item-edit">
<similarityFunction>Tanamoto</similarityFunction>
<domainClasses>
<URN>document:wcServiceID=oracle.webcenter.doclib</URN>
<URN>wiki-page:wcServiceID=oracle.webcenter.wiki</URN>
<URN>blog:wcServiceID=oracle.webcenter.wiki</URN>
<URN>topic:wcServiceID=oracle.webcenter.collab.forum</URN>
</domainClasses>
<backgroundClasses>
<URN>user:wcServiceID=oracle.webcenter.people</URN>
</backgroundClasses>
<relationCombination type="BOOLEAN_OR">
<component inverse="false" actionURN="create" />
<component inverse="false" actionURN="comment" />
<component inverse="false" actionURN="edit" />
</relationCombination>
</similarityCalculation>
</similarityCalculations>

3. WLSTコマンドimportAGMetadataを使用して、更新済のアクティビティ・グラフ・メタデータ・ファイルをPortal Frameworkアプリケーションのデプロイ先の管理対象サーバーにインポートします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフのメタデータのインポートに関する項を参照してください。

46.4.4 カスタム・ランク計算の定義

アクティビティ・グラフには、アクティビティ・グラフ・ランク・エンジンがアクティビティ・グラフ内のノードの重要度を計算するために使用するランク計算のメタデータ定義が含まれます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のOracle Secure Enterprise Searchのアクティビティ・ランクの設定に関する項を参照してください。

アクティビティ・グラフのメタデータ定義をXMLファイルにエクスポートし、そのファイルを編集してから、メタデータをWebCenter Portalにインポートしなおすことで、WebCenter Portal用または他のアプリケーション用に独自のランク計算を定義できます。

カスタム・ランク計算を定義するには:

1. WLSTコマンドexportAGMetadataを使用して、アクティビティ・グラフのメタデータをローカルXMLファイルにエクスポートします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフのメタデータのエクスポートに関する項を参照してください。

2. XMLファイルを編集して新しいランク計算を定義します。各ランク計算では、次のものを指定する必要があります。

- URN - rankCalculation要素の属性。これは、ランク計算を一意に識別する文字列です。

- domainClasses - ランク計算の適用対象であるノード・クラスのリストを識別するサブ要素。

- relationCombination - 1つ以上の登録済リレーションを組み合せることにより新しいリレーションを定義するサブ要素。リレーションの組合せには次の2つのタイプがあります。

- Boolean OR (WebCenter Portalの即時利用可能なすべての類似度計算で使用される)。コンポーネント・リレーションのいずれかが正の値である場合、リレーションの組合せの結果値は1 (true)になり、そうでない場合は、0 (false)になります。

- Weighted Sum (WebCenter Portalの即時利用可能なすべてのランク計算で使用される)。リレーションの組合せの結果値は、各コンポーネント・リレーションの重み付けされた値の合計です。

各コンポーネント・リレーションでは、次のものを指定します。

- actionURN - コンポーネント・リレーションのアクションのURN

- use inverse - コンポーネント・リレーションを使用してターゲット・オブジェクトの類似度を直接計算するにはfalse(デフォルト)に設定し、コンポーネント・リレーションを使用してターゲット・オブジェクトではなくソース・オブジェクトの類似度を計算するにはtrueに設定します。たとえば、viewリレーションのソース・オブジェクト(user)がターゲット・オブジェクト(document)を表示している場合、ドキュメントの類似度を計算するにはuse inverse=falseを設定します。ソース・オブジェクト(users)の類似度を計算するにはuse inverse=trueを設定します。

- weight - (Weighted Sumリレーションの組合せの場合)浮動小数として表され、コンポーネント・リレーションに適用される重み

- resultAcceptorClass - IRankResultAcceptorインタフェースの実装クラスの完全修飾されたクラス名を識別するサブ要素。このクラスでは、ランク・エンジンから受け取った一連のオブジェクト・ランクが検索エンジンに格納された後、そこで検索問合せの表示ランクを変更するために使用されます。WebCenter Portalには、単一のランク・アクセプタが付属しており、Oracle Secure Enterprise Searchに表示ランクを永続化させます。

例46-4 ランク計算の定義

<rankCalculations>
<rankCalculation URN="activity-rank">
<domainClasses>
<URN>WC.user</URN>
<URN>WC.document</URN>
<URN>WC.wiki-page</URN>
<URN>WC.blog</URN>
</domainClasses>
<relationCombination type="WEIGHTED_SUM">
<component actionURN="connect" weight="10.0" />
<component actionURN="edit" weight="20.0" inverse="true" />
<component actionURN="view-count" weight="1.0" />
<component actionURN="create" weight="100.0" inverse="true" />
<component actionURN="create" weight="100.0" />
<component actionURN="edit-count" weight="20.0" />
<component actionURN="download" weight="5.0" />
<component actionURN="tag" weight="10.0" />
<component actionURN="comment" weight="10.0" />
</relationCombination>
<resultAcceptorClass>
oracle.webcenter.activitygraph.providers.rankAcceptors.ses.SesRankResultAcceptor
</resultAcceptorClass>
</rankCalculation>
</rankCalculations>

3. WLSTコマンドimportAGMetadataを使用して、更新済のアクティビティ・グラフ・メタデータ・ファイルをPortal Frameworkアプリケーションのデプロイ先の管理対象サーバーにインポートします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフのメタデータのインポートに関する項を参照してください。

46.4.5 カスタム・アクティビティ・プロバイダの登録

アクティビティ・プロバイダは、収集プロセス時にアクションの発生記録からアクティビティを生成する際にアクティビティ・グラフ・エンジンによって使用されます。たとえば、分析アクティビティ・プロバイダは、分析イベント表のアクションを読み取った後、登録済のマッピング・セットを使用してアクティビティを生成します。これらのアクティビティからリレーションが特定され、このリレーションを使用して推奨や検索ランクが決定されます。

他のアプリケーションをアクティビティ・グラフ・エンジンに統合する場合は、これらのアプリケーションからアクティビティを生成するために独自のアクティビティ・プロバイダを作成できます。

アクティビティ・グラフ・エンジンでカスタム・アクティビティ・プロバイダを使用可能にするには、アクティビティ・グラフのメタデータ定義にアクティビティ・プロバイダ割当てを追加して登録する必要があります。アクティビティ・プロバイダ割当てでは、action、srcClassおよびtrgClassの3つの方式が、アクティビティ・プロバイダを実装するJavaクラスにマッピングされます。

注意:

これらの3つの方式より多くの方式を同じプロバイダ・クラスにマッピングする場合、3つの方式ごとにプロバイダ割当てを行う必要があります。たとえば、出荷時のメタデータでは、3つの方式をAnalyticsActivityProviderという単一クラスにマッピングする、複数のプロバイダ割当てが宣言されています。

カスタム・アクティビティ・プロバイダを登録するには:

1. WLSTコマンドexportAGMetadataを使用して、アクティビティ・グラフのメタデータをローカルXMLファイルにエクスポートします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフのメタデータのエクスポートに関する項を参照してください。

2. XMLファイルを編集して新しいアクティビティ・プロバイダ割当てを定義します。各アクティビティ・プロバイダ割当てでは、次のものを指定する必要があります。

- action - providerAssignment要素の属性で、providerClassにマップされるアクションを指定します。登録済アクションのいずれかを指定します。

- srcClass - providerAssignment要素の属性で、providerClassにマップされるソース・クラスを指定します。登録済ノード・クラスのいずれかを指定します。

- trgClass - providerAssignment要素の属性で、providerClassにマップされるターゲット・クラスを指定します。登録済ノード・クラスのいずれかを指定します。

- providerClass - 指定したアクション、ソース・クラス、および3つの方式のターゲット・クラスのアクティビティ・プロバイダを実装するJavaクラスの、完全修飾された名前を識別するサブ要素。

例46-5 アクティビティ・プロバイダ割当ての定義

<providerAssignments>
<providerAssignment action="connect" srcClass="WC.user" trgClass="WC.user">
<providerClass>
oracle.webcenter.activitygraph.providers.activityProviders.analytics.AnalyticsActivityProvider
</providerClass>
</providerAssignment>
</providerAssignments>

3. WLSTコマンドimportAGMetadataを使用して、更新済のアクティビティ・グラフ・メタデータ・ファイルをPortal Frameworkアプリケーションのデプロイ先の管理対象サーバーにインポートします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフのメタデータのインポートに関する項を参照してください。

46.4.6 カスタムQRPPの登録

WebCenter Portalには、推奨結果をフィルタ処理するための複数のQRPPが用意されています。詳細は、「問合せ結果ポスト・プロセッサ(QRPP)」を参照してください。

独自のQRPPを作成して推奨結果にさらにフィルタ処理を加えたり、アクティビティ・グラフ・エンジンを他のアプリケーションに統合する際に推奨メタデータを表示する機能を提供できます。アクティビティ・グラフ・エンジンでQRPPを使用可能にするには、アクティビティ・グラフのメタデータ定義にQRPP登録を追加して登録する必要があります。

カスタムQRPPを登録するには:

1. WLSTコマンドexportAGMetadataを使用して、アクティビティ・グラフのメタデータをローカルXMLファイルにエクスポートします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフのメタデータのエクスポートに関する項を参照してください。

2. XMLファイルを編集して新しいQRPPを登録します。各QRPPでは、次のものを指定する必要があります。

- URN - QRPP要素の属性。これは、QRPPを一意に識別する文字列です。

- priority - QRPP要素の属性。これは、他の登録済QRPPに対応して、QRPPがどの順序で実行される必要があるかを示す整数です。

- description - QRPPの実行内容の簡単な説明を提供するサブ要素。

- providerClass - QRPPを実装するJavaクラスの完全修飾された名前を識別するサブ要素。

例46-6 QRPPの定義

<QRPPs>
<QRPP priority="1" URN="WebCenter Portal Security QRPP">
<description>
Uses the WebCenter Portal Resource Authorizer to perform security filtering.
</description>
<providerClass>
oracle.webcenter.activitygraph.providers.qrpps.security.WCSecurityQueryResultPostProcessor
</providerClass>
</QRPP>
</QRPPs>

3. WLSTコマンドimportAGMetadataを使用して、更新済のアクティビティ・グラフ・メタデータ・ファイルをPortal Frameworkアプリケーションのデプロイ先の管理対象サーバーにインポートします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフのメタデータのインポートに関する項を参照してください。

46.5 アクティビティ・グラフのトラブルシューティング

この項では、アクティビティ・グラフの使用中に発生する可能性がある問題のトラブルシューティングに役立つ情報を提供します。

トラブルシューティングのソリューションでは、次が前提となります:

- アクティビティ・グラフ・エンジンが正しくデプロイされている。

- WC_Utilities管理対象サーバーが起動され、稼働中である。

- プロパティopenusage enabledがtrueである。

46.5.1 アクティビティ・グラフ・タスク・フローのトラブルシューティング(すべてのタスク・フロー)

問題

有効なユーザー・アクティビティの実行後でも、タスク・フローに推奨が表示されません。

解決方法

イベントが分析イベント・コレクタによって取得されているかどうかを確認してください。これは、コレクタ・ログを確認することにより検証できます。このログにイベントの取得が記録されていない場合、分析イベント・コレクタに問題があります。

詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の分析イベント・コレクションの検証に関する項を参照してください。

問題

分析イベント・コレクタのログにはイベントが取得されていることが記録されていますが、タスク・フローには推奨が表示されません。

解決方法

「アクティビティ・グラフのスケジュールとステータス」ページで、アクティビティ・グラフ・エンジンの前回の実行時刻を確認してください。最近のイベントを収集および分析するには、スケジュールの調整かアクティビティ・グラフ・エンジンの即時実行が必要になることがあります。

問題

アクティビティ・グラフ・エンジンが正常に実行されましたが、タスク・フローには推奨が表示されません。

解決方法

アクティビティ・データベース(ActivitiesDS)のリレーション表にデータが存在するかどうかを確認してください。アクティビティ・グラフ・エンジンが正しく動作している場合は、これらのリレーション表になんらかのデータが存在するはずです。表にデータが存在するのにタスク・フローに推奨がまだ表示されない場合は、タスク・フローが破損している可能性があります。

46.5.2 推奨コネクション・タスク・フローのトラブルシューティング

問題

有効なユーザー操作であるにもかかわらず、一部のユーザーが推奨コネクションとして表示されません。

解決方法

これは、WebCenter Portalとツール/サービスが同一のOIDに接続されていない場合に発生する可能性があります。この場合、各サービスの接続先OIDに存在しないユーザーには、推奨コネクションが提案されません。2つのOIDのどちらにも同じユーザーを作成するか、WebCenter Portalとサービスを同一のOIDに接続する必要があります。

46.5.3 類似ポータル・タスク・フローのトラブルシューティング

問題

正常なユーザー操作の後でも、類似ポータル・タスク・フローでポータルが提案されません。

解決方法

ポータルの参照タスク・フローでポータルを検索して、ログインしているユーザーに、ポータルにアクセスする権限が付与されているかどうかを確認してください。

46.5.4 類似アイテム・タスク・フローのトラブルシューティング

類似アイテム・タスク・フローに推奨アイテムが表示されるには、推奨アイテムを表示するアイテムがページ上の別のタスク・フロー(ドキュメント・マネージャ・タスク・フローなど)で選択されている必要があります。

問題

有効なユーザー操作の後でも、類似アイテム・タスク・フローでアイテムが提案されません。

解決方法

これは、現在のユーザーにアイテムに対する表示権限がないためです。これが正常な動作です。アイテムに対する十分な権限がない場合、ユーザーにはそのアイテムの推奨が表示されません。アイテムをユーザーに対して表示するには、そのユーザーに十分な権限を付与してください。

問題

特定のアイテム・タイプが表示されません(たとえば、タスク・フローにドキュメント、Wiki、ブログが表示されるが、ディスカッションは表示されません)。

解決方法

特定のツールまたはサービスのステータスを確認してください。ツールが使用できない場合、そのツールのアイテムは類似アイテム・タスク・フローに表示されません。

問題

アイテムの提案が一部のユーザーに対してのみ行われます。それ以外のユーザーには、類似アイテム・タスク・フローのアイテムが提案されません。

解決方法

これは、WebCenter Portalとツール/サービスが同一のOIDに接続されていない場合に発生する可能性があります。この場合、各サービスの接続先OIDに存在しないユーザーには、そのサービスの推奨アイテムが表示されません。2つのOIDのどちらにも同じユーザーを作成するか、WebCenter Portalとサービスを同一のOIDに接続する必要があります。

47 分析の統合

分析を使用すると、Portal Frameworkアプリケーションの使用状況およびパフォーマンスのメトリックを表示できます。この章では、Frameworkアプリケーションに分析を設定して統合する方法について説明します。

注意:

ポータルでは、分析データベース(ACTIVITIES)および分析コレクタへの接続はデフォルトで構成されているため、分析サービスはデフォルトで使用可能です。

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

- 第47.1項「分析の概要」

- 第47.2項「分析の基本構成」

- 第47.3項「分析レポートの作成」

分析タスク・フローの使用の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「ポータルへの分析の追加」を参照してください。データベース表およびパラメータの詳細なリストは、付録G「分析データベース・スキーマ」を参照してください。

47.1 分析の概要

分析は、ポータルまたはFrameworkアプリケーションのリアルタイムの使用状況およびアクティビティのレポートを提供します。この項では、分析、分析に関連するタスク・フローおよび分析の使用方法の概要を説明します。

この項には次のサブセクションが含まれます:

- 第47.1.1項「分析の理解」

- 第47.1.2項「分析サービスの要件」

- 第47.1.3項「実行時の処理」

47.1.1 分析の理解

分析により、管理者とユーザーは、ポータルおよびFrameworkアプリケーション内のトラフィックおよび使用状況を追跡し、分析できます。分析には次の基本的な機能があります。

- 使用状況トラッキングのメトリック: 分析では、コミュニティ、ページ、ポートレットおよびドキュメント・ヒットを含む、一般的なポータル機能のメトリックを収集してレポートします。

- 動作トラッキング: 分析を使用してポータルおよびFrameworkアプリケーションのメトリックを分析し、ページのアクセス時間や使用時間などの使用パターンを判断できます。

- ユーザー・プロファイルとの相関: 分析を使用して、メトリック情報とユーザー・プロファイル情報との相関関係を示すことができます。使用状況トラッキング・レポートを表示し、国、会社、役職などのユーザー・プロファイル・データでフィルタ処理できます。

- カスタム・レポート: 開発者およびビジネス・ユーザーは、分析データを問い合せるカスタム・レポートを作成できます。詳細は、第47.3.1項「SQLデータ・コントロールの使用」を参照してください。

表47-1は、WebCenter Portalでデフォルトで使用可能な分析タスク・フローを示しています。これらのタスク・フローは、ポータルおよびPortal Frameworkアプリケーションで同様に動作します。これらのタスク・フローとその使用方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「ポータルへの分析の追加」を参照してください。

表47-1 JDeveloperで使用可能な分析タスク・フロー

タスク・フロー

説明

WebCenter Portalトラフィック

ポータル内の共通イベントの概要表示です。

ページ・トラフィック

ポータル内でページにアクセスしたユーザーの人数(重複を除く)とページ・ヒット数を表示します。

ログイン・メトリック

ポータル・ログインをレポートします。

ポートレット・トラフィック

ポートレットの使用状況データを表示します。

ポートレット・レスポンス時間

ポートレットのパフォーマンス・データを表示します。

ポートレット・インスタンス・トラフィック

ポートレット・インスタンス*の使用状況データを表示します。

ポートレット・インスタンス・レスポンス時間

ポートレット・インスタンス*のパフォーマンス・データを表示します。

検索メトリック

ポータル検索を追跡します。

ドキュメント・メトリック

ドキュメント・ビューを追跡します。

Wikiメトリック

最も人気のあるWikiや最も人気のないWikiを追跡します。

ブログ・メトリック

最も人気のあるブログや最も人気のないブログを追跡します。

ディスカッション・メトリック

最も人気のあるディスカッションや最も人気のないディスカッションを追跡します。

* 複数の異なるページに同じポートレットが表示される場合、配置されている各ポートレットをポートレット・インスタンスと呼びます。

47.1.2 分析サービスの要件

分析サービスでは、分析スキーマ(ACTIVITIES)が適切なデータベースに設定され実行されている必要があります。また、Oracle WebCenter Portalの分析コレクタがWC_Utilities管理対象サーバーで起動されて実行中である必要もあります。インストール手順の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド』を参照してください。

インストール時に、分析コレクタは、インストール・デフォルトを使用してイベントを受信するようにデフォルトで構成されます。デフォルト値がインストールに適していない場合は、WLSTまたはFusion Middleware Controlを使用して別の値を設定する必要が生じることがあります。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「分析コレクタの設定」を参照してください。

分析タスク・フローを介して使用状況およびパフォーマンスのメトリックを表示するには、Portal Frameworkアプリケーションのイベント生成を有効にし、分析データベース(ACTIVITIES)への接続を構成する必要があります。JDeveloperでこれを行う方法の詳細は、第47.2.2項「分析の接続の設定」を参照してください。

47.1.3 実行時の処理

実行時には、Portal Frameworkアプリケーションでのユーザー・アクティビティによってイベント・データが生成されます。たとえば、ユーザー・ログイン、ディスカッション・トピックの参照、ドキュメントの表示などが行われるたびに、イベントが記録されます。OpenUsage APIは、ユーザー・データグラム・プロトコル(UDP)を使用してイベント・メトリックを分析コレクタに送信し、イベント・データは分析データベース(ACTIVITIES)に格納されます。

クラスタ環境でない場合、Portal Frameworkアプリケーションはコレクタの場所で構成され、すべてのイベントはその場所に送信されます。

注意:

現在のリリースでは、分析コレクタはクラスタ化できません。

Portal Frameworkアプリケーションに含まれる分析タスク・フローおよびカスタム分析レポート(SQLデータ・コントロールに基づく)では、実行時の分析データベースへの問合せによって、標準イベントに関して収集されたメトリックを表示します。実行時のタスク・フローの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「ポータルへの分析の追加」を参照してください。

47.2 分析の基本構成

この項では、Portal Frameworkアプリケーションに分析を統合する方法について説明します。

この項には次のサブセクションが含まれます:

- 第47.2.1項「分析の構成ロードマップ」

- 第47.2.2項「分析の接続の設定」

- 第47.2.3項「アプリケーションへの分析イベント・コードの追加」

- 第47.2.4項「MDSでの分析カスタマイズ用のネームスペースの構成」

- 第47.2.5項「分析タスク・フローの設計時の追加」

- 第47.2.6項「分析タスク・フローおよび使用状況データのセキュリティの設定」

第47.1.2項「分析サービスの要件」も参照してください。

47.2.1 分析の構成ロードマップ

図47-1と図47-2に示されたフロー・チャートは、Portal Frameworkアプリケーション内で分析を動作させるために必要な前提条件とタスクの概要を提供しています。WebCenter Portalの場合、デフォルトのタスク・フローに対して接続がすでに構成されている以外は、手順は基本的に同じです。後続の各項では、Frameworkアプリケーションに対してのみ適用される構成を指定します。

図47-1 Frameworkアプリケーションに対する分析の構成

表47-2 Frameworkアプリケーションに対する分析の構成

アクター

タスク

サブタスク

管理者

1. WebCenter Portal Frameworkおよび分析用のバックエンド・コンポーネントをインストールします

開発者

2. Portal Frameworkアプリケーションに分析サービスを統合します

2.a JDeveloperでActivitiesデータベースへの接続を構成します

2.b JDeveloperで分析コレクタへの接続を構成します

2.c JDeveloperでページに分析タスク・フローを追加します

開発者/

管理者

3. 次のいずれかのツールを使用してPortal Frameworkアプリケーションをデプロイします

- JDeveloper (開発者)

- Fusion Middleware Control (管理者)

- WLST (管理者)

- WLS管理コンソール(管理者)

管理者

4. (オプション)次のいずれかのツールを使用して分析コレクタを構成します

- システムMBeanブラウザ

- WLST

開発者

5. (オプション) JDeveloperを使用してページおよびポートレットのイベントを計測し、アプリケーションを再デプロイします

開発者/

管理者

6. (オプション)次のいずれかのツールを使用して接続パラメータを追加/変更します:

- JDeveloper、アプリケーションの再デプロイ(開発者)

- Fusion Middleware Control(管理者)

- WLST (管理者)

エンド・ユーザー

7. Portal Frameworkアプリケーションで分析データを使用できることをテストします

6.a Portal Frameworkアプリケーションにログインします

6.b 分析タスク・フローを表示します

47.2.2 分析の接続の設定

分析では、アプリケーションが分析データベース(ACTIVITIES)に接続している必要があります。イベント情報を特定の分析コレクタに送信するように、Portal Frameworkアプリケーションを構成する必要もあります。

注意:

JDeveloperで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でFusion Middleware Controlを使用して、後から接続を追加、削除または変更できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の分析サービスの管理に関する項を参照してください。

この項には次のサブセクションが含まれます:

- 第47.2.2.1項「分析データベースへの接続を設定する方法」

- 第47.2.2.2項「分析コレクタのプロパティを設定する方法」

- 第47.2.2.3項「分析コレクタへの接続を設定する方法」

47.2.2.1 分析データベースへの接続を設定する方法

分析では、分析イベント・データが格納される分析データベース(ACTIVITIES)への接続が必要です。

分析データベースへの接続を設定するには:

1. ACTIVITIESデータベースが稼働中であることを確認します。
第47.1.2項「分析サービスの要件」を参照してください。

2. アプリケーション・ナビゲータで、「アプリケーション・リソース」パネルを開きます。

3. 「接続」を右クリックし、「接続の作成」を選択し、「データベース」を選択します。

4. 「データベース接続の作成」ダイアログで、データベース接続について次の情報を入力します。

- 接続名: connectionName (例: myAnalyticsDatabaseConnection)

- 接続タイプ: Oracle (JDBC)

- ユーザー名: username (データベースにアクセスできるユーザー)

- パスワード: password (指定したユーザーのパスワード)

- ホスト名: host (分析データベースがインストールされている場所。例: localhost)

- JDBCポート: port (例: 1521)

- SID: sid (データベースのシステム識別子)

5. 「接続のテスト」をクリックし、成功した場合は、「OK」をクリックします。

6. 「データ・ソースへの関連付け」ダイアログで、「ActivitiesDS」を選択します(図47-2)。

図47-2 分析データベースへの接続

これによってACTIVITIESスキーマへのデータ・ソースが作成され、設計時にPortal Frameworkアプリケーションで分析をテストできます。

7. 「OK」をクリックします。
「アプリケーション・リソース」ペインで、「接続」の下に接続がノードとして表示されます。

47.2.2.2 分析コレクタのプロパティを設定する方法

デフォルトでは、分析コレクタはWC_Utilities管理対象サーバーにインストールされ、次のデフォルト値を使用してイベントを受信するように構成されます。

分析コレクタの構成

デフォルト値

コレクタのホスト名

localhost

デフォルト・ポート

31314

最大ポート番号

31314

ブロードキャスト・タイプ

Multicast

クラスタリング

クラスタ名

クラスタのブロードキャスト頻度

Disabled

- null

- 10 seconds

これらのデフォルト値が自分のインストールに適さない場合は、管理者がWLSTまたはFusion Middleware Controlを使用して適切な値を構成できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「分析コレクタ設定の構成」を参照してください。

47.2.2.3 分析コレクタへの接続を設定する方法

(Frameworkアプリケーションのみ)分析では、WebCenter Portalイベントを収集する分析コレクタへの接続が必要であり、Portal Frameworkアプリケーション内でOpenUsageが有効になっている必要があります。

分析サービスのプロパティを設定するには、次のOpenUsage JVMプロパティを使用します。

- oracle.wc.openusage.enabled - 発生した分析イベントをOpenUsage APIを使用して分析コレクタに送信するかどうかを指定します。有効な値はtrueおよびfalseです。デフォルト値はfalseです。

- oracle.wc.openusage.unicast - クラスタ化された分析コレクタにマルチキャスト・モードでイベントを送信するかどうか、またはユニキャスト通信を使用した単一の分析コレクタが必要かどうかを指定します。有効な値はtrueおよびfalseです。デフォルト値は、true (ユニキャスト)です。現在、クラスタはサポートされていないため、ここではtrueのみを指定します。

- oracle.wc.openusage.clustername - コレクタ・クラスタの名前または分析コレクタのホスト名。現時点ではクラスタはサポートされていないため、ここにはホスト名のみを指定します。デフォルト値はlocalhostです。

- oracle.wc.openusage.collectorport - 分析コレクタがイベントをリスニングするポート。デフォルト値は31314です。

- oracle.wc.openusage.timeout: コレクタ・サービスをマルチキャスト・モードで使用できる時間(秒単位)。デフォルト値は30秒です。

分析コレクタのJVMプロパティを設定するには:

ヒント:

管理対象サーバーでFrameworkアプリケーションを実行する場合は、これらのJVMプロパティをstartManagedWeblogic.shスクリプトに追加することもできます。

1. JDeveloperで、メイン・メニューから「実行」、「アクティブな実行構成」、「実行構成の管理」の順に選択します。

2. 「プロジェクト・プロパティ」ダイアログ・ボックスで、「デフォルト」の実行構成を選択し、「編集」をクリックします。

3. 「起動設定」セクションで、次のOpenUsageオプションを「Javaオプション」フィールドに追加します。

-Doracle.wc.openusage.enabled=true
-Doracle.wc.openusage.clustername=localhost
-Doracle.wc.openusage.collectorport=31314
-Doracle.wc.openusage.unicast=true
-Doracle.wc.openusage.timeout=30

注意:

現在のリリースでは、oracle.wc.openusage.unicast値はtrueに設定する必要があります。このリリースでは分析コレクタをクラスタ化できないため、マルチキャストはサポートされません。

ここでは太字で示されている、指定する値が、自分の分析コレクタ・インストールに適合することを確認します。

4. 「OK」をクリックしてデフォルトの実行構成を保存し、再び「OK」をクリックします。
これらの手順によって、現在のPortal Frameworkアプリケーション用の統合WebLogic ServerでOpenUsageが使用できます。統合WebLogic Serverが稼働中の場合は、再起動して新しい設定を反映する必要があります。詳細は、第7.2項「統合WebLogic ServerへのPortal Frameworkアプリケーションのデプロイ」も参照してください。

47.2.3 アプリケーションへの分析イベント・コードの追加

大部分のイベントはデフォルトで構成されているため、イベントを送信するためにアプリケーション内で追加のコーディングを行う必要はありません。唯一の例外はページ・ビュー・イベントで、このイベントについては、第47.2.3.1項「ページ・ビュー用のイベント・コードの追加」に記載されている追加のコードが必要です。

47.2.3.1 ページ・ビュー用のイベント・コードの追加

ページ・イベントを送信するには、各ページにイベント・コードを追加する必要があります。次は、ページ上でクライアントJavaScriptイベントを使用して、実際のイベントを送信するためのJava分析APIをコールしている例です。この例を実装するには、<af:document>タグのすぐ下に次のコードを追加し、イベントを送信するページの名前でpageName値を置き換えます。

<af:resource type="javascript">
function initPageLoadEvent(event) {
AdfCustomEvent.queue(event.getSource(),
"generatePageEvent",
{pageName:"Page and Login Statistics"},
true);
event.cancel();
}
</af:resource>
<af:clientListener method="initPageLoadEvent" type="load"/>
<af:serverListener type="generatePageEvent"
method="#{AnalyticsInstrumentation.sendPageEvent}"/>

前述の例は、ADFドキュメントがロードされるときにクライアント・イベントを生成し、定義されたサーバー・リスナーが実際にイベントを送信します。イベントを送信するJava Beanは次のとおりです。

public void sendPageEvent (ClientEvent event) {
// Checks whether Analytics events must be sent
if (!AnalyticsUtil.isSendingEvents())
return;

HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
String requestUser = request.getRemoteUser();

//SEND PAGE VIEW EVENT
String pageName = (String)event.getParameters().get("pageName");
if(pageName == null || pageName.isEmpty() || requestUser == null)
return;

AnalyticsUtil.sendPageViewEvent(FacesContext.getCurrentInstance().getViewRoot().getViewId(),
"PortalApp", //spaceDisplayName
requestUser, //username
0, pageName, false, request);
}

47.2.4 MDSでの分析カスタマイズ用のネームスペースの構成

(Frameworkアプリケーションのみ)分析タスク・フローではMDSを使用して、ユーザーが作成したカスタマイズを格納し、これらのカスタマイズは分析固有のMDSネームスペースに格納されます。Portal Frameworkアプリケーションで分析タスク・フローに対するユーザー・カスタマイズを有効にするには、分析メタデータのネームスペースをadf-config.xmlで構成する必要があります。

注意:

さらに、各タスク・フローでは、ユーザー・カスタマイズの詳細が格納される一意のMDSドキュメントを指定する必要があります。第47.2.5.4項「分析タスク・フローの実行時のカスタマイズをエンド・ユーザーに許可する方法」を参照してください。

分析メタデータのネームスペースを構成するには:

1. adf-config.xmlを開きます。
「アプリケーション・リソース」パネルを使用して、このファイルに移動します。ファイルはDescriptors\ADF META-INFフォルダにあります。

2. <metadata-namespaces>要素の下に、次のXMLフラグメントを追加します。
<namespace path="/oracle/webcenter/analytics/scopedMD" metadata-store-usage="WebCenterFileMetadataStore"/>

3. ファイルを保存します。

第21章「コンポーザ固有のMDS構成の実行」も参照してください。

47.2.5 分析タスク・フローの設計時の追加

この項では、分析タスク・フローについて説明し、分析タスク・フローをアプリケーションに追加する方法について説明します。次のサブセクションが含まれます:

- 第47.2.5.1項「分析タスク・フロー」

- 第47.2.5.2項「分析タスク・フローをページに追加する方法」

- 第47.2.5.3項「分析タスク・フローのパラメータを変更する方法」

- 第47.2.5.4項「分析タスク・フローの実行時のカスタマイズをエンド・ユーザーに許可する方法」

- 第47.2.5.5項「分析タスク・フローおよびタスク・フロー・パラメータ」

47.2.5.1 分析タスク・フロー

表47-3は、JDeveloperで使用可能な分析タスク・フローを示しています。これらのタスク・フローと、実行時にユーザーに表示される情報の種類の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のWebCenter Portalの分析タスク・フローの理解に関する項を参照してください。

表47-3 JDeveloperで使用可能な分析タスク・フロー

分析タスク・フロー

説明

WebCenter Portalトラフィック

ポータル内の共通イベントの概要表示です。

ページ・トラフィック

ポータル内でページにアクセスしたユーザーの人数(重複を除く)とページ・ヒット数を表示します。

ログイン・メトリック

ポータル・ログインをレポートします。

ポートレット・トラフィック

ポートレットの使用状況データを表示します。

ポートレット・レスポンス時間

ポートレットのパフォーマンス・データを表示します。

ポートレット・インスタンス・トラフィック

ポートレット・インスタンス*の使用状況データを表示します。

ポートレット・インスタンス・レスポンス時間

ポートレット・インスタンス*のパフォーマンス・データを表示します。

検索メトリック

ポータル検索を追跡します。

ドキュメント・メトリック

ドキュメント・ビューを追跡します。

Wikiメトリック

最も人気のあるWikiや最も人気のないWikiを追跡します。

ブログ・メトリック

最も人気のあるブログや最も人気のないブログを追跡します。

ディスカッション・メトリック

最も人気のあるディスカッションや最も人気のないディスカッションを追跡します。

* 複数の異なるページに同じポートレットが表示される場合、配置されている各ポートレットをポートレット・インスタンスと呼びます。

47.2.5.2 分析タスク・フローをページに追加する方法

分析タスク・フローをアプリケーションに追加するには:

1. 第47.1.2項「分析サービスの要件」の説明に従って、アプリケーションを準備します。

2. ポートレット、ディスカッション、ドキュメント、検索など、分析イベント・データを使用できるサービスがアプリケーションに含まれていることを確認します。

注意:

アプリケーションを実行したときに使用状況データがない場合は、分析タスク・フローから「表示するデータがありません」というメッセージが表示されます。

3. タスク・フローを追加するJSFページ(.jspx)を開きます。

4. 「リソース・パレット」で、「WebCenter Portal - サービス・カタログ」を開き、「タスク・フロー」フォルダを開きます(図47-3)。

図47-3 「リソース・パレット」で使用可能な分析タスク・フロー

5. 「分析」タスク・フローを、ページの<af:form>タグの内側にドラッグ・アンド・ドロップします。

6. 「作成」ポップアップ・メニューから、「リージョン」を選択します。
分析サービスのADFライブラリ(analytics-reporting-service-view.jar)をプロジェクトに追加するよう要求される場合があります。「ライブラリの追加」をクリックして確認します(図47-4)。

図47-4 分析サービスのADFライブラリの追加

7. 「タスク・フロー・バインディングの編集」ダイアログで、分析タスク・フロー・パラメータの値を入力します。

- applicationName - 必須

- analyticsResourceId - 必須

- analyticsReportTitle - オプション

- maxDataPointsPerSeries - オプション

詳細は、第47.2.5.5項「分析タスク・フローおよびタスク・フロー・パラメータ」を参照してください。

8. 「OK」をクリックします。
タスク・フローがページに追加され、タスク・フローを実行するようにViewControllerプロジェクトのライブラリが構成されます。

9. プロジェクトを保存し、ページを実行して、Portal Frameworkアプリケーション内でタスク・フローが動作することを確認します。
アプリケーションを実行したときに使用状況データがない場合は、分析タスク・フローから「表示するデータがありません」というメッセージが表示されます。

テスト中のタスク・フローに関連するアクションを実行することで、表示する分析タスク・フローのデータを作成できます。たとえば、ディスカッション・メトリックをテストするには、ディスカッションを作成および表示したり、ページ・メトリックをテストするには、ページを作成および表示したりするといった具合です。

47.2.5.3 分析タスク・フローのパラメータを変更する方法

各分析タスク・フローには、一連の必須およびオプションのタスク・フロー・バインディング・パラメータがあります。必須パラメータは強制的なものではありませんが、これを使用すると、タスク・フローが正しく動作するために必要な情報を取得できます。たとえば、特定のタスク・フロー・インスタンスに対するユーザー・カスタマイズをMDSに格納する場合は、必要なMDSドキュメントを指定する必要があります。

また、タスク・フロー・バインディング・パラメータを使用すると、タスク・フロー・インスタンスの外観と動作もカスタマイズできます。たとえば、パラメータ値を使用して、分析データの上に表示されるタイトルを指定できます。

タスク・フロー・バインディング・パラメータの値は、タスク・フローをアプリケーション・ページにドラッグ・アンド・ドロップするときに指定できます。この操作を行うと、「タスク・フロー・バインディング」ダイアログが開きます(詳細は、第47.2.5.2項「分析タスク・フローをページに追加する方法」を参照してください)。

ページにタスク・フローを配置した後、タスク・フロー・バインディング・パラメータの値を実行時に調整することもできます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の分析タスク・フロー・プロパティの設定に関する項を参照してください。

「タスク・フロー・バインディングの編集」ダイアログにアクセスするには:

1. ページの下部にある「バインディング」タブ(「ソース」タブの横)をクリックして、「バインディング」ビューに移動します。

2. 「実行可能ファイル」には、ページに追加したタスク・フローのリストが表示されます。分析タスク・フローを選択します(図47-5)。

図47-5 分析タスク・フローの入力パラメータへのアクセス

3. 「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」アイコン(鉛筆)をクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログ(図47-6)で、必要に応じてバインディング・パラメータ値を指定します
詳細は、第47.2.5.5項「分析タスク・フローおよびタスク・フロー・パラメータ」を参照してください。

図47-6 分析タスク・フローのバインディング・パラメータの追加

5. 終了したら、ページを保存し実行して、結果を確認します。

47.2.5.4 分析タスク・フローの実行時のカスタマイズをエンド・ユーザーに許可する方法

特定のタスク・フロー・インスタンスへのユーザー・カスタマイズを可能にするには、カスタマイズが格納されるMDSドキュメントを、Analytics Resource Idパラメータを使用して指定する必要があります。

IDは一意である必要があるため、<app_name>_<page_name>_<task_flow>_<sequence>のような、一貫性のある命名パターンの使用を検討します。たとえば、ページ・トラフィック・タスク・フローの場合は、analyticsResourceIdパラメータをmyapp_analyticspage_pagetraffic_1に設定します。

詳細は、第47.2.5.3項「分析タスク・フローのパラメータを変更する方法」を参照してください。

47.2.5.5 分析タスク・フローおよびタスク・フロー・パラメータ

表47-4は、分析サービスに適用可能なタスク・フロー・バインディング・パラメータをリストし説明しています。

表47-4 分析タスク・フローのバインディング・パラメータ

パラメータ(*は必須)

タスク・フロー

説明

analyticsReportTitle

すべて

分析データの上に表示されるタイトルを指定します。つまり、デフォルトのレポート・タイトルをオーバーライドできます。図47-7「analyticsReportTitle - 例」も参照してください。

analyticsResourceId*

すべて

タスク・フロー・インスタンスに対するユーザー・カスタマイズ/アプリケーション・カスタマイズをMDSに格納するために生成されるMDSドキュメントを指定します。たとえば、mymainloginmetricsと入力します。

applicationName*

すべて

分析データを表示する対象のPortal Frameworkアプリケーションの名前を指定します。たとえば、MyPortalApplicationと入力します。

ポータルの場合、アプリケーションの名前は常にwebcenterです。

分析データベースを使用して複数のアプリケーションのイベント・データを格納できるため、このパラメータは、表示するアプリケーション・データの特定に必要です。

省略した場合、タスク・フローではすべてのアプリケーションの分析データが表示されます。

maxDataPointsPerSeries

すべて

棒グラフまたは折れ線グラフに表示されるデータ・ポイントの最大数を指定します。1から1000の範囲の値を入力します。

デフォルト値は25です。

データ・ポイントの数が多いほど、グラフの表示に時間がかかる場合があります。図47-8「maxDataPointsPerSeries - 例」も参照してください。

図47-7 analyticsReportTitle - 例

図47-8 maxDataPointsPerSeries - 例

47.2.6 分析タスク・フローおよび使用状況データのセキュリティの設定

分析タスク・フローの目的は、キャパシティ・プランニング、サービス品質(QoS)分析、投資収益率(ROI)分析、検索の最良のカスタマイズなど、特定のビジネス機能を実行する限られた一連の管理ユーザーに対して、使用状況メトリックを表示することです。

分析用の使用状況データはポータル分析にとって重要ですが、ポータル・ユーザーにとって個人的または機密的な場合があります。たとえば、検索、ドキュメントおよびポートレットの各レポートは、電子メール・アドレス、名、姓などのユーザー・プロパティに基づく、特定のユーザーのアクティビティ・メトリックを表示するように構成できます。

分析タスク・フローおよびカスタム・レポートに関連するセキュリティとプライバシの問題を保護する方法は、次のとおりです。

- 分析タスク・フロー、カスタム・レポートおよび機密的な使用状況データを表示するページへの管理者アクセスを管理します。
分析タスク・フローのページへの追加、カスタム分析データ・コントロールに基づくレポートの作成、または機密的な使用状況メトリックを表示するように設定されているページの参照を行える管理ユーザーの数を限定するには、新しい管理グループを作成し、それに応じてグループ・メンバーシップを管理します。

- 分析タスク・フローへのユーザー・アクセスを管理します。
特に必要でないかぎり、分析タスク・フローおよびカスタム・レポートには、プライベート・データや機密データを含めないようにします。レポート内のメトリックにプライベート・データや機密データが含まれる場合、該当の指定ユーザーのみがタスク・フローまたはページにアクセスできるようにセキュリティを構成します。

たとえば、設計時に開発者は、管理者でないユーザーにページへの適切な権限を与えることによって、分析タスク・フローを公開できます。また、開発者は、デプロイ前にレポートをカスタマイズして、特定のレポート・オプション(時間枠、グラフのタイプ、ユーザー・プロパティ・フィルタ、グループ化基準オプションなど)を非表示/表示および事前定義できます。管理者は実行時に同じ操作、つまり、ページ・アクセスの付与および表示される情報のカスタマイズを行えます。管理者でないユーザーも、表示が許可されているレポートをパーソナライズできますが、管理者が行ったカスタマイズを変更できません。

- 認証されていないユーザーが分析タスク・フローをページに追加したり、機密データを表示できないようにします。

47.3 分析レポートの作成

デフォルトの分析タスク・フローでは、一般的な分析イベント・メトリックを固有の表示形式で表示します。分析データを異なる方法で表示したり、カスタムのイベント・データを表示する場合は、SQLを使用してカスタム分析レポートを作成できます。

この項には次のサブセクションが含まれます:

- 第47.3.1項「SQLデータ・コントロールの使用」

- 第47.3.2項「すぐに使用できる分析レポートのSQL文」

- 第47.3.3項「ユーザー・メトリックについての問合せのサンプル」

- 第47.3.4項「特定のメトリックについての分析データベース問合せのサンプル」

データベース表およびパラメータの詳細なリストは、付録G「分析データベース・スキーマ」を参照してください。

47.3.1 SQLデータ・コントロールの使用

分析データベースから取得する情報をSQL問合せ文で定義するには、SQLデータ・コントロールを使用します。データ・コントロールをページに公開する場合、分析データをグラフ、表またはフォームで表示するかどうかを選択でき、バインド・パラメータなどの表示オプションも構成できます。

設計時にJDeveloperを使用してSQLデータ・コントロールを作成できます。データ・コントロールの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

実行時のリソース管理機能が有効な場合は、実行中のPortal Frameworkアプリケーションでもデータ・コントロールを作成できます。WebCenter Portalでこの操作を行うには、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のSQLデータ・コントロールの作成に関する項を参照してください。他のPortal Frameworkアプリケーションでデータ・コントロールを作成するには、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「Portal Frameworkアプリケーションのアセットの管理」を参照してください。

Portal Frameworkアプリケーションで分析データベースからデータをフェッチし、分析データを表示するには、SQLデータ・コントロールを使用します。図47-9は、WebCenter PortalにおけるSQLデータ・コントロールの作成/編集ダイアログ内のサンプルSQL文を示しています。分析データベース(ActivitiesDS)へのデータベース接続が必要であり、有効なデータベース・パスワードを指定する必要があります。

サンプルSQL: 日単位のページ・ヒット

SELECT space.name_, page.name_, space.id, page.id, count(1), fact.page_, page.resourceid_
FROM  asfact_wc_pagevie_0 fact, asdim_wc_groupsp_0 space, asdim_wc_pages_0 page, asdim_wc_applica_0 app
WHERE space.id = fact.groupspace_
and page.id = fact.page_
and app.id = fact.application_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
and page.personal_ = :ispersonal
and space.name_ is not null
and page.name_ is not null
and space.id is not null
and page.id is not null
and fact.page_ is not null
and page.resourceid_ is not null
GROUP BY space.name_, page.name_, space.id, page.id, fact.page_, page.resourceid_
ORDER BY count(1) desc

図47-9 WebCenter PortalにおけるSQLデータ・コントロールを作成するためのダイアログ

バインド・パラメータは必要に応じて追加できます。パラメータを追加する場合、指定するパラメータ値に基づいて、データ・ソースから取得されるデータを制限できます。この例はWebCenter Portalアプリケーション用であるため、図47-10に示すように、アプリケーションの名前はwebcenterに設定し、個人用ページ(ホーム・ポータル内のページ)をレポートに含めます。

図47-10 レポート・パラメータの設定

表47-5 レポート・パラメータ

パラメータ

デフォルト値

説明

appname

webcenter

対応するアプリケーション名。ポータルの場合は常にwebcenterです。Frameworkアプリケーションの場合はアプリケーションに一意の値です。

ispersonal

0または1

ポータルの場合、ホーム・ポータルに作成されたページをレポートに含めるかどうかを決定します。

dateformat

mm/dd/yyyy hh24

Oracleデータベース内の有効な日付パターン。取得するデータによって異なるため、パターンのすべてのコンポーネントがオプションです。

startdate

01/01/2010

必要なデータの開始日を決定します。

enddate

01/01/2011

必要なデータの終了日を決定します。

図47-9は、グラフとして表示されるカスタム・レポートを示しています。

図47-11 サンプルの分析レポート - 日単位のページ・ヒット

47.3.2 すぐに使用できる分析レポートのSQL文

この項では、カスタム・レポートの出発点として使用できるSQL文について説明します。これらの文は、フィルタの追加やグループ化など、様々な方法でカスタマイズできます。

- 分析SQL: WebCenterポータル・トラフィック

- 分析SQL: ページ・トラフィック

- 分析SQL: ログイン・メトリック

- 分析SQL: ポータル・トラフィック

- 分析SQL: ポータル・レスポンス時間

- 分析SQL: ポートレット・トラフィック

- 分析SQL: ポートレット・インスタンス・トラフィック

- 分析SQL: ポートレット・レスポンス時間

- 分析SQL: ポートレット・インスタンス・レスポンス時間

- 分析SQL: 検索メトリック

- 分析SQL: ドキュメント・メトリック

- 分析SQL: Wikiメトリック

- 分析SQL: ブログ・メトリック

- 分析SQL: ディスカッション・メトリック

データベース表およびパラメータの詳細なリストは、付録G「分析データベース・スキーマ」を参照してください。

47.3.2.1 分析SQL: WebCenterポータル・トラフィック

SELECT 'Spaces' Name, count(1) Hits
FROM asfact_wc_groupsp_0 fact, asdim_wc_groupsp_0 space, asdim_wc_applica_0 app
WHERE space.id = fact.groupspace_
and app.id = fact.application_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname and space.personal_ = :ispersonal
UNION ALL
SELECT 'Pages' Name, count(1) Hits
FROM asfact_wc_pagevie_0 fact , asdim_wc_pages_0 page , asdim_wc_applica_0 app
WHERE page.id = fact.page_
and app.id = fact.application_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
and page.personal_ = :ispersonal
UNION ALL
SELECT 'Portlets' Name, count(1) Hits
FROM asfact_wc_portlet_0 fact, asdim_wc_applica_0 app
WHERE app.id = fact.application_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
UNION ALL
SELECT 'Logins' Name, count(1) Hits
FROM asfact_wc_logins_0 fact , asdim_wc_applica_0 app
WHERE app.id = fact.application_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
UNION ALL
SELECT 'Searches' Name, count(1) Hits
FROM asfact_wc_searche_0 fact , asdim_wc_applica_0 app
WHERE app.id = fact.application_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
UNION ALL
SELECT 'Wikis' Name, count(1) Hits
FROM asfact_wc_doclib__0 fact, asdim_wc_documen_0 doc, asdim_wc_applica_0 app
WHERE app.id = fact.application_
and fact.document_ = doc.id
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat) and app.name_ = :appname
and doc.objecttype_ like '%WIKI%'
UNION ALL
SELECT 'Blogs' Name, count(1) Hits
FROM asfact_wc_doclib__0 fact, asdim_wc_documen_0 doc, asdim_wc_applica_0 app
WHERE app.id = fact.application_
and fact.document_ = doc.id
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
and doc.objecttype_ like '%BLOG%'
UNION ALL
SELECT 'Documents' Name, count(1) Hits
FROM asfact_wc_doclib__0 fact, asdim_wc_documen_0 doc, asdim_wc_applica_0 app
WHERE app.id = fact.application_
and fact.document_ = doc.id
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
and doc.objecttype_ like '%DOCUMENT%'
UNION ALL
SELECT 'Discussions' Name, count(1) Hits
FROM asfact_wc_discuss_1 fact, asdim_wc_applica_0 app
WHERE app.id = fact.application_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname

47.3.2.2 分析SQL: ページ・トラフィック

SELECT  space.name_, page.name_, space.id, page.id, count(1), fact.page_, page.resourceid_
FROM asfact_wc_pagevie_0 fact, asdim_wc_groupsp_0 space, asdim_wc_pages_0 page, asdim_wc_applica_0 app
WHERE space.id = fact.groupspace_
and page.id = fact.page_
and app.id = fact.application_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
and page.personal_ = :ispersonal
and space.name_ is not null
and page.name_ is not null
and space.id is not null
and page.id is not null
and fact.page_ is not null
and page.resourceid_ is not null
GROUP BY space.name_, page.name_, space.id, page.id, fact.page_, page.resourceid_
ORDER BY count(1) desc

47.3.2.3 分析SQL: ログイン・メトリック

SELECT  count(1)
FROM asfact_wc_logins_0 fact, asdim_wc_applica_0 app
WHERE app.id = fact.application_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname

47.3.2.4 分析SQL: ポータル・トラフィック

SELECT  space.name_, space.id, count(1), fact.groupspace_, space.resourceid_
FROM asfact_wc_groupsp_0 fact, asdim_wc_groupsp_0 space, asdim_wc_applica_0 app
WHERE space.id = fact.groupspace_
and app.id = fact.application_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
and space.personal_ = :ispersonal
and space.name_ is not null
and space.id is not null
and fact.groupspace_ is not null
and space.resourceid_ is not null
GROUP BY space.name_, space.id, fact.groupspace_, space.resourceid_
ORDER BY count(1) desc

47.3.2.5 分析SQL: ポータル・レスポンス時間

SELECT  space.name_, space.id, avg(fact.response_time_), fact.groupspace_, space.resourceid_
FROM asfact_wc_groupsp_0 fact, asdim_wc_groupsp_0 space, asdim_wc_applica_0 app
WHERE space.id = fact.groupspace_
and app.id = fact.application_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
and space.personal_ = :ispersonal
and space.name_ is not null
and space.id is not null
and fact.groupspace_ is not null
and space.resourceid_ is not null
GROUP BY space.name_, space.id, fact.groupspace_, space.resourceid_

47.3.2.6 分析SQL: ポートレット・トラフィック

SELECT  portlet.default_title_, portlet.id, count(1), fact.portlet_, portlet.resourceid_
FROM asfact_wc_portlet_0 fact, asdim_wc_portlet_0 portlet, asdim_wc_applica_0 app
WHERE app.id = fact.application_
and portlet.id = fact.portlet_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
and portlet.default_title_ is not null
and portlet.id is not null
and fact.portlet_ is not null
and portlet.resourceid_ is not null
GROUP BY portlet.default_title_, portlet.id, fact.portlet_, portlet.resourceid_

47.3.2.7 分析SQL: ポートレット・インスタンス・トラフィック

SELECT  space.name_, space.id, page.name_, page.id, portletinst.title_, portletinst.id, count(1), fact.portlet_instance_, portletinst.resourceid_
FROM asfact_wc_portlet_0 fact, asdim_wc_groupsp_0 space, asdim_wc_pages_0 page, asdim_wc_portlet_1 portletinst, asdim_wc_applica_0 app
WHERE space.id = fact.groupspace_
and page.id = fact.page_
and app.id = fact.application_
and portletinst.id = fact.portlet_instance_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
and space.name_ is not null
and space.id is not null
and page.name_ is not null
and page.id is not null
and portletinst.title_ is not null
and portletinst.id is not null
and fact.portlet_instance_ is not null
and portletinst.resourceid_ is not null
GROUP BY space.name_, space.id, page.name_, page.id, portletinst.title_, portletinst.id, fact.portlet_instance_, portletinst.resourceid_

47.3.2.8 分析SQL: ポートレット・レスポンス時間

SELECT  portlet.default_title_, portlet.id, avg(fact.response_time_), fact.portlet_, portlet.resourceid_
FROM asfact_wc_portlet_0 fact, asdim_wc_portlet_0 portlet, asdim_wc_applica_0 app
WHERE app.id = fact.application_
and portlet.id = fact.portlet_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
and portlet.default_title_ is not null
and portlet.id is not null
and fact.portlet_ is not null
and portlet.resourceid_ is not null
GROUP BY portlet.default_title_, portlet.id, fact.portlet_, portlet.resourceid_

47.3.2.9 分析SQL: ポートレット・インスタンス・レスポンス時間

SELECT  space.name_, space.id, page.name_, page.id, portletinst.title_, portletinst.id, avg(fact.response_time_), fact.portlet_instance_, portletinst.resourceid_
FROM asfact_wc_portlet_0 fact, asdim_wc_groupsp_0 space, asdim_wc_pages_0 page, asdim_wc_portlet_1 portletinst, asdim_wc_applica_0 app
WHERE space.id = fact.groupspace_
and page.id = fact.page_
and app.id = fact.application_
and portletinst.id = fact.portlet_instance_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
and space.name_ is not null
and space.id is not null
and page.name_ is not null
and page.id is not null
and portletinst.title_ is not null
and portletinst.id is not null
and fact.portlet_instance_ is not null
and portletinst.resourceid_ is not null
GROUP BY space.name_, space.id, page.name_, page.id, portletinst.title_, portletinst.id, fact.portlet_instance_, portletinst.resourceid_

47.3.2.10 分析SQL: 検索メトリック

SELECT  search.phrase_, search.id, count(1)
FROM asfact_wc_searche_0 fact, asdim_wc_applica_0 app, asdim_wc_searche_0 search
WHERE app.id = fact.application_
and search.id = fact.searched_phrase_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
and search.phrase_ is not null
and search.id is not null
GROUP BY search.phrase_, search.id

47.3.2.11 分析SQL: ドキュメント・メトリック

SELECT  doc.name_, doc.id, count(1), fact.document_, doc.resourceid_
FROM asfact_wc_doclib__0 fact, asdim_wc_documen_0 doc, asdim_wc_applica_0 app
WHERE app.id = fact.application_
and fact.document_ = doc.id
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
and doc.objecttype_ like '%DOCUMENT%'
and doc.name_ is not null
and doc.id is not null
and fact.document_ is not null
and doc.resourceid_ is not null
GROUP BY doc.name_, doc.id, fact.document_, doc.resourceid

47.3.2.12 分析SQL: Wikiメトリック

SELECT  doc.name_, doc.id, count(1), fact.document_, doc.resourceid_
FROM asfact_wc_doclib__0 fact, asdim_wc_documen_0 doc, asdim_wc_applica_0 app
WHERE app.id = fact.application_
and fact.document_ = doc.id
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
and doc.objecttype_ like '%WIKI%'
and doc.name_ is not null
and doc.id is not null
and fact.document_ is not null
and doc.resourceid_ is not null
GROUP BY doc.name_, doc.id, fact.document_, doc.resourceid_

47.3.2.13 分析SQL: ブログ・メトリック

SELECT  doc.name_, doc.id, count(1), fact.document_, doc.resourceid_
FROM asfact_wc_doclib__0 fact, asdim_wc_documen_0 doc, asdim_wc_applica_0 app
WHERE app.id = fact.application_
and fact.document_ = doc.id
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
and doc.objecttype_ like '%BLOG%'
and doc.name_ is not null
and doc.id is not null
and fact.document_ is not null
and doc.resourceid_ is not null
GROUP BY doc.name_, doc.id, fact.document_, doc.resourceid_

47.3.2.14 分析SQL: ディスカッション・メトリック

SELECT  forum.name_, forum.id, count(1), fact.topic_, forum.resourceid_
FROM asfact_wc_discuss_0 fact, asdim_wc_discuss_0 forum, asdim_wc_applica_0 app
WHERE app.id = fact.application_
and forum.id = fact.topic_
and fact.occurred between to_date(:startdate, :dateformat)
and to_date(:enddate, :dateformat)
and app.name_ = :appname
and forum.name_ is not null
and forum.id is not null
and fact.topic_ is not null
and forum.resourceid_ is not null
GROUP BY forum.name_, forum.id, fact.topic_, forum.resourceid_

47.3.3 ユーザー・メトリックについての問合せのサンプル

この項では、ユーザー固有のメトリックについての問合せのサンプルを示します。次のサンプルがあります。

- サンプルSQL: ユーザー・プロパティによるフィルタ処理

- サンプルSQL: ユーザー・プロパティによるグループ化

データベース表とパラメータの詳細なリストおよびユーザー・プロパティの詳細は、付録G「分析データベース・スキーマ」の第G.5項「分析ユーザー・プロパティ」を参照してください。

47.3.3.1 サンプルSQL: ユーザー・プロパティによるフィルタ処理

次の問合せは、Sales部門のユーザーがアクセスしたページの名前と、その各ページのビュー数を返します。

SELECT p.name_ as page, count(*) as views
FROM asfact_wc_pagevie_0 f
JOIN asdim_wc_pages_0 p on f.page_ = p.id
JOIN asdim_userpropertyvalues pv on f.userid = pv.userid
JOIN asdim_userproperties pr on pv.propertyid = pr.id
WHERE pr.name = 'DEPARTMENT'
and pv.value = 'Sales'
GROUP BY p.name_

47.3.3.2 サンプルSQL: ユーザー・プロパティによるグループ化

次の問合せは、ページ・ビューの総数を部門別に返します。

SELECT pv.value as department, count(*) as views
FROM asfact_wc_pagevie_0 f
JOIN asdim_userpropertyvalues pv on f.userid = pv.userid
JOIN asdim_userproperties pr on pv.propertyid = pr.id
WHERE pr.name = 'DEPARTMENT'
GROUP BY pv.value

47.3.4 特定のメトリックについての分析データベース問合せのサンプル

この項では、特定のメトリックについての問合せのサンプルを示します。次のサンプルがあります。

- サンプルSQL: ユーザー・アクティビティ

- サンプルSQL: ポータル・アクティビティ

- サンプルSQL: 特定の期間のポータル・アクティビティ

- サンプルSQL: 特定の期間でのサービスのアクティビティ

- サンプルSQL: 検索フレーズ

- サンプルSQL: ページ・ビュー

データベース表およびパラメータの詳細なリストは、付録G「分析データベース・スキーマ」を参照してください。

47.3.4.1 サンプルSQL: ユーザー・アクティビティ

次の問合せは、特定の期間に特定のユーザーによって実行されたすべてのアクティビティのリストを返します。

SELECT 'Logins' AS Activity, count(*) AS Events
FROM asfact_wc_logins_0 f
JOIN asdim_time t ON f.timeid = t.id
JOIN asdim_users u ON f.userid = u.id
WHERE u.userid = 'user1'
AND f.timeid >= (SELECT id
FROM asdim_time
WHERE year = 2011
AND monthofyear = 0
AND dayofmonth = 1
AND hourofday = 0)
AND f.timeid <  (SELECT id
FROM asdim_time
WHERE year = 2011
AND monthofyear = 1
AND dayofmonth = 1
AND hourofday = 0)
UNION ALL
SELECT 'Searches' AS Activity, count(*) AS Events
FROM asfact_wc_searche_0 f
JOIN asdim_time t ON f.timeid = t.id
JOIN asdim_users u ON f.userid = u.id
WHERE u.userid = 'user1'
AND f.timeid >= (select id
from asdim_time
where year = 2011
and monthofyear = 0
and dayofmonth = 1
and hourofday = 0)
AND f.timeid <  (select id
from asdim_time
where year = 2011
and monthofyear = 1
and dayofmonth = 1
and hourofday = 0)
UNION ALL
...

サンプル・レポート出力

Activity   Events
----------------
Logins        25
Searches      15
...

47.3.4.2 サンプルSQL: ポータル・アクティビティ

次の問合せは、特定のポータルで実行されたすべてのアクティビティのリストを返します。

SELECT g.name_ AS Space, 'Page views' AS Activity,
count(*) AS Events
FROM asfact_wc_pagevie_0 f
JOIN asdim_time t ON f.timeid = t.id
JOIN asdim_wc_groupsp_0 g ON f.groupspace_ = g.id
WHERE g.name_ IN ('Project1', 'Project2')
AND f.timeid >= (select id
from asdim_time
where year = 2011
and monthofyear = 0
and dayofmonth = 1
and hourofday = 0)
AND f.timeid <  (select id
from asdim_time
where year = 2011
and monthofyear = 1
and dayofmonth = 1
and hourofday = 0)
GROUP BY g.name_
UNION ALL
SELECT g.name_ AS Space,
'Portlet views' AS Activity, count(*) AS Events
FROM asfact_wc_portlet_0 f
JOIN asdim_time t ON f.timeid = t.id
JOIN asdim_wc_groupsp_0 g ON f.groupspace_ = g.id
WHERE g.name_ in ('Project1', 'Project2')
AND f.timeid >= (select id
from asdim_time
where year = 2011
and monthofyear = 0
and dayofmonth = 1
and hourofday = 0)
AND f.timeid <  (select id
from asdim_time
where year = 2011
and monthofyear = 1
and dayofmonth = 1
and hourofday = 0)
GROUP BY g.name_

サンプル・レポート出力

Space       Activity      Events
--------------------------------
Project1    PageViews         34
Project2    PageViews         42
Project1    PortletViews      98
Project2    PortletViews      74

47.3.4.3 サンプルSQL: 特定の期間のポータル・アクティビティ

次の問合せは、特定の期間に特定のポータルにおいて実行されたすべてのアクティビティのリストを返します。

SELECT 'Page views' AS Activity, count(*) AS Events
FROM asfact_wc_pagevie_0 f
JOIN asdim_time t ON f.timeid = t.id
JOIN asdim_wc_groupsp_0 g ON f.groupspace_ = g.id
WHERE g.name_ = 'Project1'
AND f.timeid >= (select id
from asdim_time                     where year = 2011
and monthofyear = 0
and dayofmonth = 1
and hourofday = 0)
AND f.timeid <  (select id
from asdim_time
where year = 2011
and monthofyear = 1
and dayofmonth = 1
and hourofday = 0)
UNION ALL
SELECT 'Portlet views' AS Activity, count(*) AS Events
FROM asfact_wc_portlet_0 f
JOIN asdim_time t ON f.timeid = t.id
JOIN asdim_wc_groupsp_0 g ON f.groupspace_ = g.id
WHERE g.name_ = 'Project1'
AND f.timeid >= (select id
from asdim_time
where year = 2011
and monthofyear = 0
and dayofmonth = 1
and hourofday = 0)
AND f.timeid <  (select id
from asdim_time
where year = 2011
and monthofyear = 1
and dayofmonth = 1
and hourofday = 0)
UNION ALL
...

サンプル・レポート出力

Activity       Events
---------------------
Page views         15
Portlet views     200

47.3.4.4 サンプルSQL: 特定の期間でのサービスのアクティビティ

次の問合せは、特定の期間における特定のサービス(この例の場合はログイン・サービス)のアクティビティを返し、結果をユーザー単位にグループ化します。

SELECT u.userid AS "User", count(*) AS "Logins"
FROM asfact_wc_logins_0 f
JOIN asdim_time t ON f.timeid = t.id
JOIN asdim_users u ON f.userid = u.id
WHERE f.timeid >= (select id
from asdim_time
where year = 2011
and monthofyear = 0
and dayofmonth = 1
and hourofday = 0)
AND f.timeid <  (select id
from asdim_time
where year = 2011
and monthofyear = 1
and dayofmonth = 1
and hourofday = 0)
GROUP BY u.userid
ORDER BY "Logins" DESC

サンプル・レポート出力

User      Logins
--------------
user3     245
user1     240
user2     193

47.3.4.5 サンプルSQL: 検索フレーズ

次の問合せは、特定の期間に検索されたフレーズを返し、各検索の実行回数をリストします。

SELECT s.phrase_ AS "Search Phrase", count(*) AS "Times"
FROM asfact_wc_searche_0 f
JOIN asdim_time t ON f.timeid = t.id
JOIN asdim_users u ON f.userid = u.id
JOIN asdim_wc_searche_0 s ON f.searched_phrase_ = s.id
WHERE u.userid = 'user1'
AND f.timeid >= (select id
from asdim_time
where year = 2011
and monthofyear = 0
and dayofmonth = 1
and hourofday = 0)
AND f.timeid <  (select id
from asdim_time
where year = 2011
and monthofyear = 1
and dayofmonth = 1
and hourofday = 0)
GROUP BY u.userid, s.phrase_
ORDER BY count(*) DESC, s.phrase_

サンプル・レポート出力

Search Phrase      Times
------------------------
product prices         4
sales report 2011      1

47.3.4.6 サンプルSQL: ページ・ビュー

次の問合せは、特定の期間に特定のユーザーによって表示されたページを返します。

SELECT u.userid AS "User", count(*) AS "Views"
FROM asfact_wc_pagevie_0 f
JOIN asdim_time t ON f.timeid = t.id
JOIN asdim_users u ON f.userid = u.id
JOIN asdim_wc_pages_0 p ON f.page_ = p.id
JOIN asdim_wc_groupsp_0 g ON f.groupspace_ = g.id
WHERE g.name_ = 'Space 1'
AND p.name_ = 'Page 1'
AND f.timeid >= (select id
from asdim_time
where year = 2011
and monthofyear = 0
and dayofmonth = 1
and hourofday = 0)
AND f.timeid <  (select id
from asdim_time
where year = 2011
and monthofyear = 1
and dayofmonth = 1
and hourofday = 0)
GROUP BY u.userid
ORDER BY count(*) DESC

サンプル・レポート出力

User    Views
--------------
user3     245
user1     190
user2      65

第VIII部

ユーザーによる追跡の支援

第VIII部の内容は次のとおりです。

- 第48章「イベントの統合」

- 第49章「リストの統合」

- 第50章「通知の統合」

- 第51章「最近のアクティビティの統合」

- 第52章「RSSの統合」

48 イベントの統合

この章では、設計時にWebCenter Frameworkアプリケーションにイベント機能を統合する方法について説明します。

この章には次の項が含まれます

- 第48.1項「イベントの概要」

- 第48.2項「イベントの基本構成」

- 第48.3項「イベントREST APIの使用」

- 第48.4項「イベントのトラブルシューティング」

イベントの管理および使用の詳細は、次を参照してください。

- Oracle Fusion Middleware Oracle WebCenter Portalの管理の「カレンダ・イベントの管理」。

- 『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「イベントの使用」。

48.1 イベントの概要

Portal Frameworkアプリケーション内で、イベントは個人用のMicrosoft Exchangeカレンダへのアクセスを提供します。

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

- 第48.1.1項「イベントの理解」

- 第48.1.2項「イベントの要件」

- 第48.1.3項「実行時の処理」

48.1.1 イベントの理解

イベントを使用して、次の操作を実行できます。

- アプリケーションで各自のMicrosoft Exchangeカレンダを表示できます。

- Exchangeカレンダのイベントを作成、編集および削除できます。

- イベント・タスク・フローのビューを変更して、カレンダ・イベントを月/週/日単位またはリストで表示できます。

- イベント・タスク・フローをパーソナライズして、イベントを開始時間、第2タイムゾーン、リスト・タイプおよびリスト数に基づいて表示できます

イベントは、リンク、メール、検索など、多くのWebCenter Portalのツールおよびコンポーネントと統合されます。

図48-1はFrameworkアプリケーション内の個人カレンダの例を示しています。

図48-1 個人カレンダ

48.1.2 イベントの要件

イベントはMicrosoft Exchange Serverと統合して、個人カレンダへのアクセスを提供します。適切なサーバーをインストールし、構成する必要があります。

Exchange Serverのインストールおよび構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の個人イベントのイベント前提条件に関する項を参照してください。

48.1.3 実行時の処理

実行時に、ユーザーはMicrosoft Exchangeカレンダのイベントを表示できます。

実行時のイベントの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「イベントの使用」を参照してください。

注意:

『Oracle Fusion Middleware Oracle WebCenter Portalの使用』には、個人イベントとポータル・イベントの両方が記載されています。Portal Frameworkアプリケーションに適用されるのは、個人イベントに関する情報のみです。

48.2 イベントの基本構成

この項には次のサブセクションが含まれます:

- 第48.2.1項「イベントの構成ロードマップ」

- 第48.2.2項「イベントの接続の設定」

- 第48.2.3項「イベント機能の設計時の追加」

- 第48.2.4項「イベントのセキュリティの設定」

48.2.1 イベントの構成ロードマップ

この項のフロー・チャート(図48-2)と表(表48-1)は、Frameworkアプリケーション内でイベントを動作させるために必要な前提条件とタスクの概要を示しています。

図48-2 Portal Frameworkアプリケーションに対するイベントの構成

表48-1 Portal Frameworkアプリケーションに対するイベントの構成

アクター

タスク

サブタスク

ノート

管理者

1. WebCenter PortalおよびMicrosoft Exchange Serverをインストールします

MS Exchange Serverは個人カレンダのバックエンド・サーバーです

- MS Exchange Server 2007を使用します

1.a MS Exchange Server 2007を構成します

1.b セキュリティ設定を編集します

1.c (オプション) SSLを有効にします

- MS Exchange Server 2003を使用します

1.a WebCenter Portalの個人イベントWebサービス・プラグインをダウンロードおよびインストールします

1.b MS Exchange Server 2003を構成します

1.c (オプション) SSLを有効にします

開発者

2. アプリケーションにイベントを統合します

2.a JDeveloperでイベント・サーバーへの接続を構成します

2.b JDeveloperでページにイベント・タスク・フローを追加します

開発者/

管理者

3. 次のいずれかのツールを使用してアプリケーションをデプロイします:

- JDeveloper (開発者)

- Fusion Middleware Control (管理者)

- WLST (管理者)

- WLS管理コンソール(管理者)

開発者/

管理者

4. 次のいずれかのツールを使用して接続パラメータを追加/変更します:

- JDeveloper、アプリケーションの再デプロイ(開発者)

- Fusion Middleware Control (管理者)

- WLST (管理者)

エンド・ユーザー

5. 個人カレンダにアクセスします

イベント・タスク・フローで「個人カレンダにログイン」をクリックし、MS Exchangeログイン資格証明を入力します

48.2.2 イベントの接続の設定

イベント機能を利用するには、FrameworkアプリケーションからExchange Serverへの接続を作成しておく必要があります。この操作を行うには、サーバーの接続情報が必要です。

イベント用のサーバー接続は複数登録できますが、一度にアクティブな接続は1つのみです。

注意:

JDeveloperで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でEnterprise Manager Fusion Middleware Controlを使用して、後から接続を追加、削除または変更できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のFusion Middleware Controlを使用したイベント・サーバーの登録に関する項を参照してください。

イベント用の接続を設定するには:

1. イベントを利用するアプリケーションをJDeveloperで開きます。

2. すべてのアプリケーションで使用可能な接続を作成するには、「リソース・パレット」で「新規」アイコンをクリックし、「接続の作成」を選択し、「WebCenter個人イベント接続」を選択します。
現在のアプリケーションでのみ使用可能な接続を作成するには、アプリケーション・ナビゲータの「アプリケーション・リソース」パネルで「接続」を右クリックし、「接続の作成」を選択し、「WebCenter個人イベント接続」を選択します。

3. 「イベント接続の作成」ダイアログの「接続名」フィールドに、たとえばExchangeServerForEventsのように意味のある名前を入力します(図48-3)。

図48-3 「イベント接続の作成」ダイアログ

4. 「WebサービスURL」フィールドに、イベント・アプリケーションを公開するWebサービスのURLを入力します。次の形式を使用します。

protocol://host:port/appWebServiceInterface/WSName

例:

http://myexchange.com:80/ExchangeWS/PersonalEventsWebService.asmx
http://myexchange.com:80/EWS/Services.wsdl

5. 「サービス・アダプタ」ドロップダウン・リストから、接続先のMicrosoft Exchangeサーバーのバージョンを選択します。

- MSExchange2003

- MSExchange2007

6. この接続をイベントで使用するには、「デフォルトの接続」を選択します。複数の接続を保持できますが、アクティブな接続は1つのみです(デフォルト)。

注意:

接続をアクティブ接続として作成すると、それがデフォルトでないように編集することはできません。別のアクティブ接続を使用するには、新しい接続を作成し、それをデフォルト接続としてマークする必要があります。

7. 「接続のテスト」をクリックし、成功した場合は、「OK」をクリックします。
テストが成功しなかった場合は、設定を確認し、再び実行します。

8. 接続を「リソース・パレット」で作成した場合は、それをアプリケーションに追加する必要があります。
「リソース・パレット」の「IDE接続」の下にある接続を右クリックし、「アプリケーションに追加」を選択します。

接続は、アプリケーション・ナビゲータの「アプリケーション・リソース」パネルにリストされます(図48-4)。Exchange Serverに接続するユーザーのユーザー名およびパスワードを格納するために、外部アプリケーション接続も作成されます。

図48-4 アプリケーション・リソース - 個人イベント接続

48.2.3 イベント機能の設計時の追加

この項には次のサブセクションが含まれます:

- 第48.2.3.1項「イベント・タスク・フロー」

- 第48.2.3.2項「イベント機能をアプリケーションに追加する方法」

48.2.3.1 イベント・タスク・フロー

イベント・タスク・フローでは、イベントのメイン・ビューまたはクイック・ビューをページに追加できます。

表48-2 イベント・タスク・フロー

タスク・フロー

説明

カレンダ・メイン・ビュー

このタスク・フローでは、イベントのカレンダを表示し、イベントを日/週/月単位またはリストで表示するオプションをユーザーに提供します。

カレンダ・ミニ・ビュー

このタスク・フローもカレンダ・メイン・ビューと同様にカレンダを表示しますが、必要なスペースが少なくて済みます。ページとタスク・フローの編集権限を持つユーザーのみが、イベント・ビューを構成できます(日単位またはリスト・ビューで使用可能)。

48.2.3.2 イベント機能をアプリケーションに追加する方法

イベント・タスク・フローをアプリケーションに追加するには:

1. 第4.2項「ツールとサービスを利用するためのFrameworkアプリケーションの準備」の手順に従い、セキュリティを実装し、カスタマイズ可能なページをアプリケーションで作成します。

2. タスク・フローを追加するページを開きます。

3. リソース・パレットで「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。

4. 「カレンダ・メイン・ビュー」または「カレンダ・ミニ・ビュー」をページにドラッグして、af:formタグ内にドロップします。

5. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

6. イベント・タスク・フローはevent-view.jarライブラリに含まれるため、「ライブラリの追加」をクリックして、ライブラリをプロジェクトに追加します。この操作の完了には時間がかかる場合があります。

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

8. ページを保存し、実行します。
図48-5は実行時のカレンダ・メイン・ビュー・タスク・フローを示しています。

図48-5 カレンダ・メイン・ビュー・タスク・フロー

図48-6は、実行時のカレンダ・ミニ・ビュー・タスク・フローを示しています。

図48-6 カレンダ・ミニ・ビュー・タスク・フロー

48.2.4 イベントのセキュリティの設定

イベント用にMicrosoft Exchange Serverへの接続を作成すると、外部アプリケーション接続も作成されます。この外部アプリケーション接続は、Microsoft Exchange Serverのユーザーのユーザー名およびパスワードを格納するために作成されます。詳細は、第48.2.2項「イベントの接続の設定」を参照してください。

48.3 イベントREST APIの使用

WebCenter Portalには、イベントをサポートするREST APIがあります。REST APIを使用して、ポータル・イベントへのアクセスを提供する独自のインタフェースを作成します。

注意:

イベントREST APIは、ポータル・イベントでのみ使用できます。REST APIを使用して個人イベントを操作できません。

この項では、イベントに関連するREST APIメソッドについて説明します。次のサブセクションが含まれます:

- 第48.3.1項「イベント・エントリ・ポイント」

- 第48.3.2項「イベント・リソース・タイプの分類」

- 第48.3.3項「セキュリティに関する考慮事項」

- 第48.3.4項「イベント・リソース・タイプ」

48.3.1 イベント・エントリ・ポイント

イベントのエントリ・ポイントには、ポータルを介してのみアクセスできます。まず、適切なポータルに移動して、次のresourceTypeのリンク要素を見つける必要があります。

urn:oracle:webcenter:events:gsEvents

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供されます。クライアントはこのエントリ・ポイントにHTTPリクエストを送信して、イベントを操作します。

リソース索引の詳細は、第53.5.1項「リソース索引の使用」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

48.3.2 イベント・リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第48.3.4項「イベント・リソース・タイプ」の該当の項を参照してください。

イベントの分類は、次のとおりです。

urn:oracle:webcenter:events:gsEvents
urn:oracle:webcenter:events:gsEvent
urn:oracle:webcenter:events:gsCategories

48.3.3 セキュリティに関する考慮事項

イベントでは、セキュリティに関する特定の考慮事項はありません。一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

48.3.4 イベント・リソース・タイプ

この項では、各リソース・タイプについて知っておく必要があるすべての情報を提供します。次のサブセクションが含まれます:

- 第48.3.4.1項「urn:oracle:webcenter:events:gsEvents」

- 第48.3.4.2項「urn:oracle:webcenter:events:gsEvent」

- 第48.3.4.3項「urn:oracle:webcenter:events:gsCategories」

48.3.4.1 urn:oracle:webcenter:events:gsEvents

ポータル・イベントの取得(GET)および作成(POST)で使用するURIを識別するには、このリソースを使用します。GET操作からのレスポンスには、このイベント・コレクション内の各ポータル・イベントが含まれており、各イベントには、そのイベントの操作で使用するリンクが含まれています。POST操作からのレスポンスには、このイベント・コレクションに作成されたイベントと、そのイベントを操作するリンクが含まれています。

gsEventsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceIndex
spaces
gsEvents

gsEventsでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: <gsCategory>、パラメータ: startIndex、itemsPerPage、utoken
これらの共通パラメータの情報は、「共通のリクエスト問合せパラメータ」を参照してください。

次の追加パラメータを使用できます。

- startDate: ポータル・イベントのリストを開始する日付

- endDate: ポータル・イベントのリストを終了する日付

開始日と終了日については、YYYY-MM-DD形式(例: 2011-09-01)を使用します。時間(例: 2011-09-01T09:00:00)とタイムゾーン記号(例: UTCの場合は2011-09-01T09:00:00Z)も指定できます。

- レスポンス - 本体: 0個以上のイベント

- POST

- リクエスト - 本体: イベント

- レスポンス - 本体: イベント

gsEventsからリンクされるリソース・タイプ

表48-3は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表48-3 gsEventsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:events:gsEvents

48.3.4.2 urn:oracle:webcenter:events:gsEvent

特定のポータル・イベントの読取り(GET)、更新(PUT)または削除(DELETE)で使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、URIで識別される特定のイベントが含まれています。PUT操作からのレスポンスには、URIで識別されるイベントの変更されたバージョンが含まれています。DELETE操作からのレスポンスは、204です。

gsEventへのナビゲーション・パス

resourceIndex
spaces
gsEvents
gsEvent

gsEventでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- レスポンス - 本体: イベント

- PUT

- リクエスト - 本体: イベント

- レスポンス - 本体: イベント

- DELETE

- リクエスト - 本体: なし

- レスポンス - 本体: なし

gsEventの書込み可能要素

表48-4は、このリソースの書込み可能要素を示しています。

表48-4 gsEventの書込み可能要素

要素

タイプ

必須

制約

説明

category

String

いいえ

ポータルに対して定義されるイベント・カテゴリの名前

イベントが属するカテゴリ。

注意: カテゴリが存在しない場合は、イベントが作成中であればデフォルトのカテゴリが使用されます。ただし、イベントが変更中の場合はエラーが発生します。

details

String

いいえ

1文字以上の文字

イベントに関する詳細

endTime

日付

はい

YYYY-MM-DDTHH:MM:SS

endTimeはstartTime以上である必要があります

イベントが終了する日時

location

String

いいえ

1文字以上の文字

イベントが発生する場所

priority

文字列

いいえ

1 - 最高

2 - 高

3 - 標準

4 - 低

5 - 最低

イベントがクラッシュしたときに表示される場所を決定する、イベントの優先度

startTime

日付

はい

YYYY-MM-DDTHH:MM:SS

イベントが開始する日時

summary

String

はい

1文字以上の文字

イベントのタイトルとしての役割を果たす、イベントの簡単な説明

gsEventの読取り専用要素

表48-5に、このリソースの読取り専用要素を示します。

表48-5 gsEventの読取り専用要素

要素

タイプ

説明

author

personReference

イベントを作成したユーザー

created

日付

イベントが作成された日付

duration

String

イベントの長さ(分単位)

groupSpace

groupSpaceReference

イベントが属するポータル

id

String

イベントの一意のID

isAllDayEvent

Boolean

イベントが一日中行われるかどうか

modified

日付

イベントが最後に更新された日付

modifiedByUser

personReference

イベントを最後に更新したユーザー

gsEventからリンクされるリソース・タイプ

表48-6は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表48-6 gsEventに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:events:gsEvent

48.3.4.3 urn:oracle:webcenter:events:gsCategories

ポータル・イベント・カテゴリの取得(GET)および作成(POST)で使用するURIを識別するには、このリソースを使用します。GET操作からのレスポンスには、このカテゴリ・コレクション内の各カテゴリが含まれており、各カテゴリには、そのカテゴリの操作で使用するリンクが含まれています。POST操作からのレスポンスには、このカテゴリ・コレクションに作成されたカテゴリと、そのカテゴリを操作するリンクが含まれています。

gsCategoriesへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceIndex
spaces
gsCategories

gsCategoriesでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: カテゴリ

- レスポンス - 本体: 0個以上のカテゴリ

- POST

- リクエスト - 本体: カテゴリ

- レスポンス - 本体: カテゴリ

gsCategoriesからリンクされるリソース・タイプ

表48-7は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表48-7 gsCategoriesに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:events:gsCategories

48.4 イベントのトラブルシューティング

この項では、イベントの使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

問題

カレンダ・タスク・フローにエラー・メッセージが表示されます。

Personal Events is not configured properly. Rectify the configuration and then click Try Again.

解決方法

個人イベント接続が作成されていることを確認します。詳細は、第48.2.2項「イベントの接続の設定」を参照してください。

問題

正しい資格証明でカレンダにログインした後も、イベントではなく、「個人カレンダにログイン」リンクが引き続き表示されます。

解決方法

カレンダ・タスク・フローが追加されているページが、保護されたページであることを確認します。匿名ユーザーは、個人イベント・カレンダ・サーバーにログインできません。

49 リストの統合

この章では、リストの概要と、リスト機能をWebCenter Portalアプリケーションに統合する方法を説明します。

- 第49.1項「リストの概要」

- 第49.2項「リストの基本構成」

- 第49.3項「リソース・カタログへのリストの追加」

- 第49.4項「リストREST APIの使用」

- 第49.5項「リストのトラブルシューティング」

49.1 リストの概要

この項では、リストの機能と要件の概要を説明します。次のサブセクションが含まれます:

- 第49.1.1項「リストの理解」

- 第49.1.2項「リストの実行時の処理」

49.1.1 リストの理解

WebCenter Portalでは、実行時にリストを作成し、それらを公開してポータル・ページ上に配置できます。実行時にリソース・カタログで使用可能なリスト・タスク・フローは設計時に作成できます。ポータルの管理者は、タスク・フローをカタログからページに追加し、そのタスク・フローを使用してリストを作成できます。

設計時にコード・スニペットをリソース・カタログに追加することによって、実行時に値が移入されたリストをカタログに追加し、ポータル・ページ上に配置できるようになります。

デフォルトでは、シード・ロールAdministratorが割り当てられたユーザーにのみ、リストの管理権限が付与されます。つまり、これらのユーザーは、実行時にリストを作成、編集および削除したり、リスト・データを編集したりできます。デフォルトの権限は、デプロイ時にjazn-data.xml内で変更するか、Fusion Middleware ControlまたはApplication Policy Managerを使用して変更できます。認可されたユーザーは、この権限を実行時にコンポーネント・レベルで変更できます(詳細は、第22章「コンポーザ・コンポーネントのデフォルトのセキュリティ動作の変更」を参照)。サポートされるのは、ロール・ベースの権限のみです。

49.1.2 リストの実行時の処理

実行時、リスト・タスク・フローによって、リストの作成とリスト・データの追加に使用できるコントロールが提供されます。これらのコントロールの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のリストの作成と管理に関する項およびリスト・データの追加と管理に関する項を参照してください。

ヒント:

ユーザーが実行時にリストを使用できるようにするには、その操作を明示的にユーザーに許可する必要があります。詳細は、第49.2.3項「実行時のユーザーによるリストの使用の有効化」を参照してください。

49.2 リストの基本構成

この項では、ポータルにリスト機能を追加するために必要な手順について説明します。次のサブセクションが含まれます:

- 第49.2.1項「リストの接続の設定」

- 第49.2.2項「リスト機能の設計時の追加」

- 第49.2.3項「実行時のユーザーによるリストの使用の有効化」

49.2.1 リストの接続の設定

リストには、WEBCENTERスキーマがインストールされているデータベースへの接続が必要です。すべてのリスト・データはデータベースに格納されます。WEBCENTERスキーマがインストールされているデータベースへのデータベース接続の設定の詳細は、第4.2.2項「データベース接続の設定」を参照してください。

注意:

データベースとWEBCENTERスキーマのインストールの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド』を参照してください。

49.2.2 リスト機能の設計時の追加

この項では、リスト機能の基本的な統合について説明します。次のサブセクションが含まれます:

- 第49.2.2.1項「リスト・タスク・フロー」

- 第49.2.2.2項「リスト機能をFrameworkアプリケーションに追加する方法」

49.2.2.1 リスト・タスク・フロー

図49-1はリスト・タスク・フローを示しています。

図49-1 リスト・タスク・フローにレンダリングされたリスト

リスト・タスク・フローの詳細は、第49.1.2項「リストの実行時の処理」を参照してください。

49.2.2.2 リスト機能をFrameworkアプリケーションに追加する方法

リスト・タスク・フローをFrameworkアプリケーションに追加するには:

1. 第4.2項「ツールとサービスを利用するためのFrameworkアプリケーションの準備」の手順に従い、ポータルでセキュリティを実装し、カスタマイズ可能な新しいページを作成します。

2. リスト・タスク・フローの追加先となるJSFページを作成します。

3. ページのセキュリティを構成します。

関連項目:

詳細は、第22章「コンポーザ・コンポーネントのデフォルトのセキュリティ動作の変更」を参照してください。

4. リソース・パレットで、「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」フォルダの順に開きます。

5. 「リスト」タスク・フローをドラッグしてページ上にドロップし、コンテキスト・メニューから「リージョン」を選択します。

6. ページを保存し、ブラウザで実行します。

49.2.3 実行時のユーザーによるリストの使用の有効化

デフォルトでは、アプリケーション管理者のみがリストを使用できます。ユーザーが実行時にリストを表示して使用するには、それらのユーザーに最低でも権限ListPermission:viewが明示的に付与されている必要があります。アプリケーション管理者は、実行時にロール・マネージャ・タスク・フローを通じてこの権限を付与できます。

たとえば管理者が、認証されたすべてのユーザーにリストへの表示アクセス権を付与するには、ロール・マネージャ・タスク・フローでロールAllUsersを作成し、authenticated-roleをメンバーとして追加した後、リストへの表示アクセス権を付与します。

リスト機能をアプリケーションに追加する場合は、ロール・マネージャ・タスク・フローも追加する必要があります。アプリケーションが「WebCenter Portal - Frameworkアプリケーション」テンプレートに基づいている場合、ロール・マネージャ・タスク・フローは「管理」ページの「セキュリティ」タブでデフォルトで使用可能です。実行時に次のURLを使用すると、このページに移動できます。

http://host:port/appcontxtroot/faces/admin

注意:

設計時にロール・マネージャを通じて作成および付与するロールと権限は、ポータルにパッケージ化されていないため、デプロイ後には提供されません。デプロイ後に、この項で説明したプロビジョニング手順を実行する必要があります。

関連項目:

ロール・マネージャ・タスク・フローの詳細は、第74.4項「ロール・マネージャ・タスク・フローの使用」を参照してください。

49.3 リソース・カタログへのリストの追加

適切に構成されている場合、リソース・カタログは実行時に移入されたリストを使用可能にするため、権限のあるユーザーは編集モードでそれらをページに追加できます。コンポーネントを既存のリソース・カタログに追加する手順またはカスタム・カタログを作成する手順は、第14章「リソース・カタログの開発」で説明されています。この項では、リソース・カタログにリストを追加するために使用するコード・スニペットの例を示します(例49-1)。

注意:

大文字の値は、翻訳された文字列用のメッセージ・キーです。

例49-1 リソース・カタログにリストを追加するためのコード

<customFolder id="groupLists" visible="#{true}"
factoryClass="oracle.webcenter.list.view.rc.ListServiceContextFactory">
<attributes>
<attribute value="LISTS_CUSTOM_FOLDER.TITLE" attributeId="Title"
isKey="true"/>
<attribute value="LISTS_CUSTOM_FOLDER.DESCRIPTION"
attributeId="Description" isKey="true"/>
<attribute value="LISTS_CUSTOM_FOLDER.KEYWORDS"
attributeId="Subject" isKey="true"/>
<attribute value="oracle.webcenter.list"
attributeId="WEBCENTER_SERVICE_ID" isKey="false"/>
<attribute value="/adf/webcenter/folderlists_qualifier.png"
attributeId="IconURI"/>
</attributes>
</customFolder>

49.4 リストREST APIの使用

Oracle WebCenter Portalで提供されるREST APIを使用すると、提供されたタスク・フローを使用せずに、インタフェースを通じてリスト機能にアクセスできます。リストREST APIを使用すると、次のアクションを実行できます。

- ポータル内でのリストの使用。リスト群からのリストの取得、新しいリストの追加などがあります

- 1つのリストの使用。リスト・メタデータの取得または更新、リストの削除などがあります

- リスト内の行の使用

- リスト行の使用。行の取得、更新、削除などがあります

- 列の使用。列の追加などがあります

- リスト列の使用。列の取得、更新、削除などがあります

この項では、リストに関連付けられたREST APIメソッドについて説明します。次のサブセクションが含まれます:

- 第49.4.1項「リストのエントリ・ポイント」

- 第49.4.2項「リスト・リソース・タイプの分類」

- 第49.4.3項「リストのセキュリティに関する考慮事項」

- 第49.4.4項「リストのリソース・タイプ」

関連項目:

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

49.4.1 リストのエントリ・ポイント

WebCenter PortalのポータルでリストのRESTエントリ・ポイントを取得するには、特定のポータルを検索してリソース索引を取得します。対応するhrefまたはtemplate要素によって、ポータル内のリストを取得するURIエントリ・ポイントが提供されます。

1. リストを取得するポータルまたはサブポータルへ移動します。

2. 次のリソース索引を取得します。

urn:oracle:webcenter:resourceindex

3. 返されたhrefに移動します。

4. リソース・タイプを検索します。たとえば、ポータルのすべてのリストを取得するには、次のように検索します。

urn:oracle:webcenter:space:lists

関連項目:

リソース索引の詳細は、第53.5.1項「リソース索引の使用」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

49.4.2 リスト・リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。リスト・リソース・タイプの分類は、次のとおりです。

urn:oracle:webcenter:space:lists
urn:oracle:webcenter:space:list
urn:oracle:webcenter:space:list:rows
urn:oracle:webcenter:space:list:row
urn:oracle:webcenter:space:list:columns
urn:oracle:webcenter:space:list:column

49.4.3 リストのセキュリティに関する考慮事項

どのリストREST APIメソッドにアクセスする場合でも、RESTサービスにログインする必要があります。その後、基礎となるサービスによって権限が確認されます。

関連項目:

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

49.4.4 リストのリソース・タイプ

この項では、各リソース・タイプについて知っておく必要があるすべての情報を提供します。次のサブセクションが含まれます:

- 第49.4.4.1項「urn:oracle:webcenter:space:lists」

- 第49.4.4.2項「urn:oracle:webcenter:space:list」

- 第49.4.4.3項「urn:oracle:webcenter:space:list:rows」

- 第49.4.4.4項「urn:oracle:webcenter:space:list:row」

- 第49.4.4.5項「urn:oracle:webcenter:space:list:columns」

- 第49.4.4.6項「urn:oracle:webcenter:space:list:column」

49.4.4.1 urn:oracle:webcenter:space:lists

listsレスポンスでは、特定のポータル内のリストを取得する方法(GET)およびリストをポータルに追加する方法(POST)が提供されます。この項には次のサブセクションが含まれます:

- 第49.4.4.1.1項「listsへのナビゲーション・パス」

- 第49.4.4.1.2項「listsでサポートされるメソッド」

- 第49.4.4.1.3項「listsからリンクされるリソース・タイプ」

49.4.4.1.1 listsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してlistsリソースにアクセスする方法を示します。

urn:oracle:webcenter:resourceindex
urn:oracle:webcenter:spaces
urn:oracle:webcenter:space:resourceindex
urn:oracle:webcenter:space:lists

49.4.4.1.2 listsでサポートされるメソッド

listsリソース・タイプでは、次のメソッドがサポートされます。

- メソッド(lists): GET

- メソッド(lists): POST

メソッド(lists): GET

このメソッドは、ポータル内のリストを取得します。

- リソースURI。例:

http://host:port/rest/api/spaces/vs1/lists?q=name:equals:ProjectIssues&utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**

- リクエスト本体: なし

- リクエスト・ヘッダー: [Accept = application/xml | application/json]

- リクエスト・パラメータ - startIndex、itemsPerPage、q、projection

- 問合せ用のqパラメータの形式は'q=attribute:operator:value'です。例:

'q=name:equals:ProjectIssues'

- Stringsでサポートされる演算子: equals、not.equals、contains、starts.with

- Datesでサポートされる演算子: equals、not.equals、greater.than、greater.than.or.equals、less.than、less.than.or.equals

- 複数の条件をセミコロン(;)で区切って指定できます。

- 検索可能な属性(表49-1)

表49-1 listsのGETメソッドで検索可能な属性

要素

タイプ

説明

name

string

リストの名前

description

string

リストの説明

creator

string

リストを作成したユーザー

created

date

リストが作成された日付

modifier

string

リストを変更したユーザー

modified

date

最後にリストが変更された日付

- レスポンス・ステータス: 200 [OK]

- レスポンス本文: <lists>

- 例:

<lists resourceType="urn:oracle:webcenter:space:lists">
<links>
<link resourceType="urn:oracle:webcenter:list:lists"
rel="self" href="opaque"/>
<link template="opaque?startIndex={startIndex}&
itemsPerPage={itemsPerPage}&q={searchTerms}&
projection={projection}
&stoken=FDgsOu7a2NTTM1cLJvnpkDXfihtHx5Q*"          resourceType="urn:oracle:webcenter:list:lists"/>
</links>
<items>
<list resourceType="urn:oracle:webcenter:space:list">
<links>
<link resourceType="urn:oracle:webcenter:list" rel="self"
href="opaque"
capabilities="urn:oracle:webcenter:update
urn:oracle:webcenter:delete"/>
<link resourceType="urn:oracle:webcenter:list:rows"
href="opaque"
capabilities="urn:oracle:webcenter:create"/>
<link template="opaque?
startIndex={startIndex}&
itemsPerPage={itemsPerPage}&q={searchTerms}&
stoken=FDgsOu7a2NTTM1cLJvnpkDXfihtHx5Q*"
resourceType="urn:oracle:webcenter:list:rows"/>
<link resourceType="urn:oracle:webcenter:list:columns"
href="opaque"
capabilities="urn:oracle:webcenter:create"/>
</links>
<id>/oracle/webcenter/list/scopedMD/
se0dea180_e2c1_45ac_b08b_
ba2c0b26aa72/lists/ProjectIssues.xml</id>
<name>Project Issues</name>
<description/>
</list>
</items>
</lists>

メソッド(lists): POST

このメソッドは、ポータル内にリストを作成します。

- リソースURI。例:

http://host:port/rest/api/spaces/vs1/lists?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**

- リクエスト本文: <list>

- 書込み可能要素(表49-2)

表49-2 リスト作成の書込み可能要素

要素

タイプ

制約

説明

name脚注1

string

-

リストの名前

description

string

-

リストの説明

columns脚注1

urn:oracle:webcenter:space:list:columns

1から30

リストの列

脚注1  必須要素を示しています

- 例:

<list>
<name>RestExample</name>
<description>Created using rest api</description>
<columns>
<items>
<metaColumn>
<name>No.</name>
<dataType>number</dataType>
</metaColumn>
<metaColumn>
<name>Description</name>
<dataType>string</dataType>
</metaColumn>
</items>
</columns>
</list>

- リクエスト・ヘッダー: Content-Type = application/xml | application/json, [Accept = application/xml | application/json]

- レスポンス・ステータス: 201 [Created]

- レスポンス本文: <list>

- 取得される要素(表49-3)

表49-3 listsから取得される要素

要素

タイプ

説明

id

string

リストのID

name

string

リストの名前

description

string

リストの説明

scope.guid

string

リストが属するポータルのGUID

scope.name

string

リストが属するポータルの名前

creator

string

リストを作成したユーザーの名前

created

date

リストが作成された日付

modifier

string

最後にリストを変更したユーザーの名前

modified

date

最後にリストが変更された日付

columns

urn:oracle:webcenter:space:list:columns

リストの列

- 例:

<list resourceType="urn:oracle:webcenter:space:list">
<links>
<link resourceType="urn:oracle:webcenter:space:list" rel="self"
href="http://host:port/rest/api/spaces/vs1/
lists/(/oracle/webcenter/list/scopedMD/s355923f0_2f04_4fd0_
83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:update urn:oracle:webcenter:delete"/>
<link template="http://host:port
/rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_
417b_a35f_fb03874979c0.xml)/rows?
utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_
w**&startIndex={startIndex}&itemsPerPage={itemsPerPage}
&q={searchTerms}&utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
resourceType="urn:oracle:webcenter:space:list:rows"
href="http://host:port/rest/api/spaces/
vs1/lists/(/oracle/webcenter/list/scopedMD/s355923f0_2f04_4fd0_
83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/rows?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:create"/>
<link resourceType="urn:oracle:webcenter:space:list:columns"
href="http://host:port/rest/api/spaces/
vs1/lists/(/oracle/webcenter/list/scopedMD/s355923f0_2f04_4fd0_
83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/columns?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_
w**" capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:create"/>
</links>
<id>/oracle/webcenter/list/scopedMD/s355923f0_2f04_4fd0_83ad_
f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_fb03874979c0.xml</id>
<name>RestExample</name>
<description>Created using rest api</description>
<scope>
<guid>s355923f0_2f04_4fd0_83ad_f7dac2a7ceed</guid>
<name>vs1</name>
</scope>
<creator>weblogic</creator>
<author>
<links>
<link resourceType="urn:oracle:webcenter:people:person"
rel="via" href="http://host:port/
rest/api/people/E9A35E80F0BC11DFBFBE0FE339E55B21/lists/
@self?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read"/>
<link type="image/png"
template="http://host:port/
webcenter/profilephoto/45394133354538304630424
33131444642464245304645333339453535423231/{size}?
_xResourceMethod=wsrp"
resourceType="urn:oracle:webcenter:people:person"
rel="urn:oracle:webcenter:people:icon"
href="http://host:port/webcenter/
profilephoto/4539413335453830463042433131444642464245304645
333339453535423231/SMALL?_xResourceMethod=wsrp"
capabilities="urn:oracle:webcenter:read"/>
<link type="text/html"
resourceType="urn:oracle:webcenter:spaces:profile"
rel="alternate" href="http://host:port/
webcenter/faces/oracle/webcenter/webcenterapp/view/pages/
peopleconn/UserProfileGallery.jspx?wc.username=weblogic"
capabilities="urn:oracle:webcenter:read"/>
</links>
<displayName>weblogic</displayName>
<guid>E9A35E80F0BC11DFBFBE0FE339E55B21</guid>
<id>weblogic</id>
</author>
<created>2010-11-18T06:10:32.250-08:00</created>
<modifier>weblogic</modifier>
<modifiedByUser>
<displayName>weblogic</displayName>
<guid>E9A35E80F0BC11DFBFBE0FE339E55B21</guid>
<id>weblogic</id>
</modifiedByUser>
<modified>2010-11-18T06:10:32.250-08:00</modified>
<columns resourceType="urn:oracle:webcenter:space:list:columns">
<links>
<link resourceType="urn:oracle:webcenter:space:list:columns"
rel="self"
href="http://host:port/rest/api/spaces
/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_
f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/columns?utoken=
FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:create"/>
<link resourceType="urn:oracle:webcenter:space:list"
rel="urn:oracle:webcenter:parent"
href="http://host:port/
rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/
ls_c9cecbc7_756b_417b_a35f_fb03874979c0.xml)?
utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"/>
</links>
<items>
<metaColumn resourceType=
"urn:oracle:webcenter:space:list:column">
<links>
<link resourceType="urn:oracle:webcenter:space:
list:column" rel="self
"href="http://host:port/
rest/api/spaces/vs1/lists/
(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/
lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/columns/
(lco_9bdd1418_6004_40ba_a052_04e8335b7ee8)?
utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:update
urn:oracle:webcenter:delete"/>
</links>
<id>lco_9bdd1418_6004_40ba_a052_04e8335b7ee8</id>
<name>No.</name>
<dataType>number</dataType>
<required>false</required>
<displayLength>10</displayLength>
<format>number</format>
<allowLinks>false</allowLinks>
</metaColumn>
<metaColumn resourceType=
"urn:oracle:webcenter:space:list:column">
<links>
<link resourceType=
"urn:oracle:webcenter:space:list:column"
rel="self"
href="http://host:port/
rest/api/spaces/vs1/lists/(/oracle/
webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_
f7dac2a7ceed/lists/ls_c9cecbc7_756b_
417b_a35f_fb03874979c0.xml)/columns/
(lco_3a31fd20_24f1_4422_99fd_c00d7bed4b24)?
utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:update
urn:oracle:webcenter:delete"/>
</links>
<id>lco_3a31fd20_24f1_4422_99fd_c00d7bed4b24</id>
<name>Description</name>
<dataType>string</dataType>
<required>false</required>
<maxLength>500</maxLength>
<displayLength>20</displayLength>
<allowLinks>false</allowLinks>
<editLines>1</editLines>
</metaColumn>
</items>
</columns>
</list>

49.4.4.1.3 listsからリンクされるリソース・タイプ

表49-4は、クライアントがlistsリソースからリンクできるリソース・タイプをリストしています。

表49-4 listsからリンクされるリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:lists

urn:oracle:webcenter:space:list

49.4.4.2 urn:oracle:webcenter:space:list

listレスポンスでは、個々のリストを取得、更新および削除する方法が提供されます。この項には次のサブセクションが含まれます:

- 第49.4.4.2.1項「listへのナビゲーション・パス」

- 第49.4.4.2.2項「listでサポートされるメソッド」

- 第49.4.4.2.3項「listからリンクされるリソース・タイプ」

49.4.4.2.1 listへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してlistリソースにアクセスする方法を示します。

urn:oracle:webcenter:resourceindex
urn:oracle:webcenter:spaces
urn:oracle:webcenter:space:resourceindex
urn:oracle:webcenter:space:lists
urn:oracle:webcenter:space:list

49.4.4.2.2 listでサポートされるメソッド

listリソース・タイプでは、次のメソッドがサポートされます。

- メソッド(list): GET

- メソッド(list): PUT

- メソッド(list): DELETE

メソッド(list): GET

リストを取得するには、このメソッドを使用します。

- リソースURI。例:

http://host:port/rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_bb806754_0652_4d49_9354_
5fb62dc3514d.xml)?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**

- リクエスト本体: なし

- リクエスト・ヘッダー: [Accept = application/xml | application/json]

- レスポンス・ステータス: 200 [OK]

- レスポンス本文: <list>

- 取得される要素(表49-5)

表49-5 listで取得される要素

要素

タイプ

説明

id

string

リストのID

name

string

リストの名前

description

string

リストの説明

scope.guid

string

リストが属するポータルのGUID

scope.name

string

リストが属するポータルの名前

creator

string

リストを作成したユーザー

created

日付

リストが作成された日付

modifier

string

最後にリストを変更したユーザー

modified

日付

リストが最後に変更された日付

columns

urn:oracle:webcenter:space:list:columns

リストを構成する列

- 例:

<list resourceType="urn:oracle:webcenter:space:list">
<links>
<link resourceType="urn:oracle:webcenter:space:list" rel="self"
href="http://host:port/rest/api/spaces/vs1/
lists/(/oracle/webcenter/list/scopedMD/s355923f0_2f04_4fd0_83ad_
f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:update
urn:oracle:webcenter:delete"/>
<link template="http://host:port
/rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_
417b_a35f_fb03874979c0.xml)/rows?
utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**&
startIndex={startIndex}&itemsPerPage={itemsPerPage}&q=
{searchTerms}&utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
resourceType="urn:oracle:webcenter:space:list:rows"
href="http://host:port/rest/api/
spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/s355923f0_
2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/rows?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:create"/>
<link resourceType="urn:oracle:webcenter:space:list:columns"
href="http://host:port/rest/api/spaces/
vs1/lists/(/oracle/webcenter/list/scopedMD/s355923f0_2f04_4fd0_
83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/columns?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_
w**" capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:create"/>
</links>
<id>/oracle/webcenter/list/scopedMD/s355923f0_2f04_4fd0_83ad_
f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_fb03874979c0.xml</id>
<name>RestExample</name>
<description>Created using rest api</description>
<scope>
<guid>s355923f0_2f04_4fd0_83ad_f7dac2a7ceed</guid>
<name>vs1</name>
</scope>
<creator>weblogic</creator>
<author>
<links>
<link resourceType="urn:oracle:webcenter:people:person"
rel="via" href="http://host:port/
rest/api/people/E9A35E80F0BC11DFBFBE0FE339E55B21/lists/
@self?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read"/>
<link type="image/png"
template="http://host:port/
webcenter/profilephoto/4539413335453830463042433131444
642464245304645333339453535423231/{size}?
_xResourceMethod=wsrp"
resourceType="urn:oracle:webcenter:people:person"
rel="urn:oracle:webcenter:people:icon"
href="http://host:port/
webcenter/profilephoto/4539413335453830463042433131444
642464245304645333339453535423231/SMALL?
_xResourceMethod=wsrp"
capabilities="urn:oracle:webcenter:read"/>
<link type="text/html"
resourceType="urn:oracle:webcenter:spaces:profile"
rel="alternate" href="http://host:port/
webcenter/faces/oracle/webcenter/webcenterapp/view/pages/
peopleconn/UserProfileGallery.jspx?wc.username=weblogic"
capabilities="urn:oracle:webcenter:read"/>
</links>
<displayName>weblogic</displayName>
<guid>E9A35E80F0BC11DFBFBE0FE339E55B21</guid>
<id>weblogic</id>
</author>
<created>2010-11-18T06:10:32.250-08:00</created>
<modifier>weblogic</modifier>
<modifiedByUser>
<displayName>weblogic</displayName>
<guid>E9A35E80F0BC11DFBFBE0FE339E55B21</guid>
<id>weblogic</id>
</modifiedByUser>
<modified>2010-11-18T06:10:32.250-08:00</modified>
<columns resourceType="urn:oracle:webcenter:space:list:columns">
<links>
<link resourceType="urn:oracle:webcenter:space:list:columns"
rel="self" href="http://host:port/
rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_c9cecbc7_
756b_417b_a35f_fb03874979c0.xml)/
columns?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:create"/>
<link resourceType="urn:oracle:webcenter:space:list"
rel="urn:oracle:webcenter:parent"
href="http://host:port/rest/api/spaces/
vs1/lists/(/oracle/webcenter/list/scopedMD/s355923f0_2f04_
4fd0_83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)?utoken=
FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"/>
</links>
<items>
<metaColumn resourceType=
"urn:oracle:webcenter:space:list:column">
<links>
<link resourceType=
"urn:oracle:webcenter:space:list:column"
rel="self"
href="http://host:port/
rest/api/spaces/vs1/lists/(/oracle/webcenter/
list/scopedMD/s355923f0_2f04_4fd0_83ad_
f7dac2a7ceed/lists/ls_c9cecbc7_
756b_417b_a35f_fb03874979c0.xml)/columns/(lco_
9bdd1418_6004_40ba_a052_04e8335b7ee8)?
utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:update
urn:oracle:webcenter:delete"/>
</links>
<id>lco_9bdd1418_6004_40ba_a052_04e8335b7ee8</id>
<name>No.</name>
<dataType>number</dataType>
<required>false</required>
<displayLength>10</displayLength>
<format>number</format>
<allowLinks>false</allowLinks>
</metaColumn>
<metaColumn resourceType=
"urn:oracle:webcenter:space:list:column">
<links>
<link resourceType=
"urn:oracle:webcenter:space:list:column"
rel="self"
href="http://host:port
/rest/api/spaces/vs1/lists/(/oracle/webcenter/
list/scopedMD/s355923f0_2f04_4fd0_83ad_
f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/columns/(lco_3a31fd20_24f1_
4422_99fd_c00d7bed4b24)?
utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:update                   urn:oracle:webcenter:delete"/>
</links>
<id>lco_3a31fd20_24f1_4422_99fd_c00d7bed4b24</id>
<name>Description</name>
<dataType>string</dataType>
<required>false</required>
<maxLength>500</maxLength>
<displayLength>20</displayLength>
<allowLinks>false</allowLinks>
<editLines>1</editLines>
</metaColumn>
</items>
</columns>
</list>

メソッド(list): PUT

リストの名前または説明を更新するには、このメソッドを使用します。

- リソースURI。例:

http://host:port/rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_bb806754_0652_4d49_9354_
5fb62dc3514d.xml)?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**

- リクエスト本文: <list>

- listの書込み可能要素(表49-6)

表49-6 listの書込み可能要素

要素

タイプ

必須

制約

説明

name脚注1

string

はい

1文字以上の文字

このリストの名前

description

string

いいえ

なし

このリストの説明

脚注1  必須要素を示しています

- 例:

<list>
<name>RestExampleUpdate</name>
<description>Updated using rest api</description>
</list>

- リクエスト・ヘッダー: Content-Type = application/xml | application/json, [Accept = application/xml | application/json]

- レスポンス・ステータス: 200 [OK]

- レスポンス本文: <list>

メソッド(list): DELETE

リストを削除するには、このメソッドを使用します。

- リソースURI。例:

http://host:port/rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_bb806754_0652_4d49_9354_
5fb62dc3514d.xml)?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**

- リクエスト本体: なし

- レスポンス・ステータス: 204 [No Content]

- レスポンス本体: なし

49.4.4.2.3 listからリンクされるリソース・タイプ

表49-7は、クライアントがlistリソースからリンクできるリソース・タイプを示しています。

表49-7 listからリンクされるリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:list

urn:oracle:webcenter:space:list:rows

urn:oracle:webcenter:space:list:columns

49.4.4.3 urn:oracle:webcenter:space:list:rows

rowsレスポンスでは、列をリストから取得またはリストに追加する方法が提供されます。この項には次のサブセクションが含まれます:

- 第49.4.4.3.1項「rowsへのナビゲーション・パス」

- 第49.4.4.3.2項「rowsでサポートされるメソッド」

- 第49.4.4.3.3項「rowsからリンクされるリソース・タイプ」

49.4.4.3.1 rowsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してrowsリソースにアクセスする方法を示します。

urn:oracle:webcenter:resourceindex
urn:oracle:webcenter:spaces
urn:oracle:webcenter:space:resourceindex
urn:oracle:webcenter:space:lists
urn:oracle:webcenter:space:list
urn:oracle:webcenter:space:list:rows

49.4.4.3.2 rowsでサポートされるメソッド

rowsリソース・タイプでは、次のメソッドがサポートされます。

- メソッド(rows): GET

- メソッド(rows): POST

メソッド(rows): GET

リスト行を取得するには、このメソッドを使用します。

- リソースURI。例:

http://host:port/rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_bb806754_0652_4d49_9354_
5fb62dc3514d.xml)/rows?q=lco_9bdd1418_6004_40ba_a052_
04e8335b7ee8:equals:2&utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**

- リクエスト本体: なし

- リクエスト・ヘッダー: [Accept = application/xml | application/json]

- リクエスト・パラメータ - startIndex、itemsPerPage、q、projection

- 問合せ用のqパラメータの形式は'q=columnId:operator:value'です。例:

'q=lco_9bdd1418_6004_40ba_a052_04e8335b7ee8:equals:2'

- Stringsでサポートされる演算子: equals、not.equals、contains、starts.with

- NumbersとDatesでサポートされる演算子: equals、not.equals、greater.than、greater.than.or.equals、less.than、less.than.or.equals

- 複数の条件をセミコロン(;)で区切って指定できます。

- rowsで検索可能な属性: 行は列の値で検索可能です。

- レスポンス・ステータス: 200 [OK]

- レスポンス本文: <rows>

- 例:

<rows resourceType="urn:oracle:webcenter:space:list:rows">
<links>
<link template="http://host:port/
rest/api/spaces/vs1/lists/(/oracle/webcenter/list/
scopedMD/s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_
c9cecbc7_756b_417b_a35f_fb03874979c0.xml)/rows?
utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**&
startIndex={startIndex}&itemsPerPage={itemsPerPage}&
q={searchTerms}&utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
resourceType="urn:oracle:webcenter:space:list:rows" rel="self"
href="http://host:port/rest/api/spaces/
vs1/lists/(/oracle/webcenter/list/scopedMD/s355923f0_2f04_4fd0_
83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/rows?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:create"/>
<link resourceType="urn:oracle:webcenter:space:list"
rel="urn:oracle:webcenter:parent"
href="http://host:port/rest/api/spaces/
vs1/lists/(/oracle/webcenter/list/scopedMD/s355923f0_2f04_4fd0_
83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"/>
</links>
<itemsPerPage>1</itemsPerPage>
<startIndex>0</startIndex>
<items>
<row resourceType="urn:oracle:webcenter:space:list:row">
<links>
<link resourceType="urn:oracle:webcenter:space:list:row"
rel="self" href="http://host:port/
rest/api/spaces/vs1/lists/(/oracle/webcenter/list/
scopedMD/s355923f0_2f04_4fd0_83ad_
f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/rows/(lr_a14d427f_8515_4c82_956f_
a60e6e08668c)?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:update
urn:oracle:webcenter:delete"/>
</links>
<id>lr_a14d427f_8515_4c82_956f_a60e6e08668c</id>
<listId>/oracle/webcenter/list/scopedMD/s355923f0_2f04_4fd0_
83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml</listId>
<scope>s355923f0_2f04_4fd0_83ad_f7dac2a7ceed</scope>
<creator>weblogic</creator>
<author>
<links>
<link resourceType=
"urn:oracle:webcenter:people:person"
rel="via"
href="http://host:port/
rest/api/people/E9A35E80F0BC11DFBFBE0FE339E55B21/
lists/@self?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_
w**" capabilities="urn:oracle:webcenter:read"/>
<link type="image/png"
template="http://host:port/
webcenter/profilephoto/45394133354538304630424
33131444642464245304645333339453535423231/
{size}?_xResourceMethod=wsrp"
resourceType="urn:oracle:webcenter:people:person"
rel="urn:oracle:webcenter:people:icon"
href="http://host:port/
webcenter/profilephoto/45394133354538304630424
33131444642464245304645333339453535423231/SMALL?
_xResourceMethod=wsrp"
capabilities="urn:oracle:webcenter:read"/>
<link type="text/html"
resourceType="urn:oracle:webcenter:spaces:
profile" rel="alternate"
href="http://host:port/
webcenter/faces/oracle/webcenter/webcenterapp/
view/pages/peopleconn/UserProfileGallery.jspx?
wc.username=weblogic"
capabilities="urn:oracle:webcenter:read"/>
</links>
<displayName>weblogic</displayName>
<guid>E9A35E80F0BC11DFBFBE0FE339E55B21</guid>
<id>weblogic</id>
</author>
<created>2010-11-18T07:12:06.599-08:00</created>
<modifier>weblogic</modifier>
<modifiedByUser>
<links>
<link resourceType=
"urn:oracle:webcenter:people:person" rel="via"
href="http://host:port/rest/
api/people/E9A35E80F0BC11DFBFBE0FE339E55B21/lists
/@self?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read"/>
<link type="image/png"
template="http://host:port/
webcenter/profilephoto/45394133354538304630424
33131444642464245304645333339453535423231/
{size}?_xResourceMethod=wsrp"
resourceType="urn:oracle:webcenter:people:person"
rel="urn:oracle:webcenter:people:icon"
href="http://host:port/
webcenter/profilephoto/45394133354538304630424
33131444642464245304645333339453535423231/SMALL?
_xResourceMethod=wsrp"
capabilities="urn:oracle:webcenter:read"/>
<link type="text/html"
resourceType="urn:oracle:webcenter:spaces:
profile" rel="alternate"
href="http://host:port/
webcenter/faces/oracle/webcenter/webcenterapp/
view/pages/peopleconn/UserProfileGallery.jspx?
wc.username=weblogic"
capabilities="urn:oracle:webcenter:read"/>
</links>
<displayName>weblogic</displayName>
<guid>E9A35E80F0BC11DFBFBE0FE339E55B21</guid>
<id>weblogic</id>
</modifiedByUser>
<modified>2010-11-18T07:12:06.599-08:00</modified>
<columns>
<column>
<id>lco_9bdd1418_6004_40ba_a052_04e8335b7ee8</id>
<name>No.</name>
<value>1.0</value>
</column>
<column>
<id>lco_3a31fd20_24f1_4422_99fd_c00d7bed4b24</id>
<name>Description</name>
<value>test</value>
</column>
</columns>
</row>
</items>
</rows>

メソッド(rows): POST

リスト内に行を作成するには、このメソッドを使用します。

- リソースURI。例:

http://host:port/rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_bb806754_0652_4d49_9354_
5fb62dc3514d.xml)/rows?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**

- リクエスト本文: <row>

- 書込み可能要素(表49-8)

表49-8 rowの書込み可能要素

要素

タイプ

制約

説明

columns.column.id脚注1

string

-

列のID

columns.column.value脚注1

string

列のデータ型として有効な値

列の値

脚注1  必須要素を示しています

- 例:

<row>
<columns>
<column>
<id>lco_9bdd1418_6004_40ba_a052_04e8335b7ee8</id>
<value>1</value>
</column>
<column>
<id>lco_3a31fd20_24f1_4422_99fd_c00d7bed4b24</id>
<value>test</value>
</column>
</columns>
</row>

- リクエスト・ヘッダー: Content-Type = application/xml | application/json, [Accept = application/xml | application/json]

- レスポンス・ステータス: 201 [Created]

- レスポンス本文: <row>

- 取得される要素(表49-9)

表49-9 rowsで取得される要素

要素

タイプ

説明

id

string

行のID

list id

string

リストのID

scope

string

リストが属するポータルのGUID

creator

string

リストを作成したユーザー

created

date

リストが作成された日付

modifier

string

最後にリストを変更したユーザー

modified

date

最後にリストが変更された日付

columns

-

列の値

- 例:

<row resourceType="urn:oracle:webcenter:space:list:row">
<links>
<link resourceType="urn:oracle:webcenter:space:list:row" rel="self"
href="http://host:port/rest/api/spaces/vs1/
lists/(/oracle/webcenter/list/scopedMD/s355923f0_2f04_4fd0_83ad_
f7dac2a7ceed/lists/ls_bb806754_0652_4d49_9354_
5fb62dc3514d.xml)/rows/(lr_4cc07327_49cb_4cd5_a270_
182ddcc8db4a)?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:update urn:oracle:webcenter:delete"/>
</links>
<id>lr_4cc07327_49cb_4cd5_a270_182ddcc8db4a</id>
<listId>/oracle/webcenter/list/scopedMD/s355923f0_2f04_4fd0_83ad_
f7dac2a7ceed/lists/ls_bb806754_0652_4d49_9354_
5fb62dc3514d.xml</listId>
<scope>s355923f0_2f04_4fd0_83ad_f7dac2a7ceed</scope>
<creator>weblogic</creator>
<author>
<links>
<link resourceType="urn:oracle:webcenter:people:person"
rel="via" href="http://host:port
/rest/api/people/E9A35E80F0BC11DFBFBE0FE339E55B21/lists/
@self?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read"/>
<link type="image/png"
template="http://host:port/
webcenter/profilephoto/4539413335453830463042433131
444642464245304645333339453535423231/{size}?
_xResourceMethod=wsrp"
resourceType="urn:oracle:webcenter:people:person"
rel="urn:oracle:webcenter:people:icon"
href="http://host:port/webcenter/
profilephoto/453941333545383046304243313144464246424530
4645333339453535423231/SMALL?_xResourceMethod=wsrp"
capabilities="urn:oracle:webcenter:read"/>
<link type="text/html"
resourceType="urn:oracle:webcenter:spaces:profile"
rel="alternate" href="http://host:port/
webcenter/faces/oracle/webcenter/webcenterapp/view/pages/
peopleconn/UserProfileGallery.jspx?wc.username=weblogic"
capabilities="urn:oracle:webcenter:read"/>
</links>
<displayName>weblogic</displayName>
<guid>E9A35E80F0BC11DFBFBE0FE339E55B21</guid>
<id>weblogic</id>
</author>
<created>2010-11-17T06:34:25.042-08:00</created>
<modifier>weblogic</modifier>
<modifiedByUser>
<links>
<link resourceType="urn:oracle:webcenter:people:person"
rel="via" href="http://host:port/
rest/api/people/E9A35E80F0BC11DFBFBE0FE339E55B21/lists/
@self?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read"/>
<link type="image/png"
template="http://host:port/
webcenter/profilephoto/4539413335453830463042433131
444642464245304645333339453535423231/{size}?
_xResourceMethod=wsrp"
resourceType="urn:oracle:webcenter:people:person"
rel="urn:oracle:webcenter:people:icon"
href="http://host:port/webcenter/
profilephoto/453941333545383046304243313144464246424530
4645333339453535423231/SMALL?_xResourceMethod=wsrp"
capabilities="urn:oracle:webcenter:read"/>
<link type="text/html"
resourceType="urn:oracle:webcenter:spaces:profile"
rel="alternate" href="http://host:port/
webcenter/faces/oracle/webcenter/webcenterapp/view/pages/
peopleconn/UserProfileGallery.jspx?wc.username=weblogic"
capabilities="urn:oracle:webcenter:read"/>
</links>
<displayName>weblogic</displayName>
<guid>E9A35E80F0BC11DFBFBE0FE339E55B21</guid>
<id>weblogic</id>
</modifiedByUser>
<modified>2010-11-17T06:34:25.042-08:00</modified>
<columns>
<column>
<id>lco_9bdd1418_6004_40ba_a052_04e8335b7ee8</id>
<name>No.</name>
<value>1.0</value>
</column>
<column>
<id>lco_3a31fd20_24f1_4422_99fd_c00d7bed4b24</id>
<name>Description</name>
<value>test</value>
</column>
</columns>
</row>

49.4.4.3.3 rowsからリンクされるリソース・タイプ

表49-10は、クライアントがrowsリソースからリンクできるリソース・タイプを示しています。

表49-10 rowsからリンクされるリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:list.rows

parent

urn:oracle:webcenter:space:list

urn:oracle:webcenter:space:list:row

49.4.4.4 urn:oracle:webcenter:space:list:row

rowレスポンスでは、個々のリスト行を取得、追加および削除する方法が提供されます。この項には次のサブセクションが含まれます:

- 第49.4.4.4.1項「rowへのナビゲーション・パス」

- 第49.4.4.4.2項「rowでサポートされるメソッド」

- 第49.4.4.4.3項「rowからリンクされるリソース・タイプ」

49.4.4.4.1 rowへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してrowリソースにアクセスする方法を示します。

urn:oracle:webcenter:resourceindex
urn:oracle:webcenter:spaces
urn:oracle:webcenter:space:resourceindex
urn:oracle:webcenter:space:lists
urn:oracle:webcenter:space:list
urn:oracle:webcenter:space:list:rows
urn:oracle:webcenter:space:list:row

49.4.4.4.2 rowでサポートされるメソッド

rowリソース・タイプでは、次のメソッドがサポートされます。

- メソッド(row): GET

- メソッド(row): PUT

- メソッド(row): DELETE

メソッド(row): GET

リスト行からデータを取得するには、このメソッドを使用します。

- リソースURI。例:

http://host:port/rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/rows/(lr_a14d427f_8515_4c82_956f_
a60e6e08668c)?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**

- リクエスト本体: なし

- リクエスト・ヘッダー: [Accept = application/xml | application/json]

- レスポンス・ステータス: 200 [OK]

- レスポンス本文: <row>

- 取得される要素(表49-11)

表49-11 rowで取得される要素

要素

タイプ

説明

id

string

行のID

listId

string

親リストのID

scope

string

リストが属するポータルのGUID

creator

string

行を作成したユーザー

created

日付

行が作成された日付

modifier

string

最後に行を変更したユーザー

modified

日付

最後に行が変更された日付

columns

urn:oracle:webcenter:space:list:columns

列の値

- 例:

<row resourceType="urn:oracle:webcenter:space:list:row">
<links>
<link resourceType="urn:oracle:webcenter:space:list:row"
rel="self" href="http://host:port/
rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD
/s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_bb806754_0652_
4d49_9354_5fb62dc3514d.xml)/rows/(lr_4cc07327_49cb_4cd5_a270_
182ddcc8db4a)?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:update urn:oracle:webcenter:delete"/>
</links>
<id>lr_4cc07327_49cb_4cd5_a270_182ddcc8db4a</id>
<listId>/oracle/webcenter/list/scopedMD/s355923f0_2f04_4fd0_83ad_
f7dac2a7ceed/lists/ls_bb806754_0652_4d49_9354_
5fb62dc3514d.xml</listId>
<scope>s355923f0_2f04_4fd0_83ad_f7dac2a7ceed</scope>
<creator>weblogic</creator>
<author>
<links>
<link resourceType="urn:oracle:webcenter:people:person"
rel="via" href="http://host:port/
rest/api/people/E9A35E80F0BC11DFBFBE0FE339E55B21/lists/
@self?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read"/>
<link type="image/png"
template="http://host:port/webcenter/
profilephoto/453941333545383046304243313144464246424530
4645333339453535423231/{size}?_xResourceMethod=wsrp"
resourceType="urn:oracle:webcenter:people:person"
rel="urn:oracle:webcenter:people:icon"
href="http://host:port/webcenter/
profilephoto/453941333545383046304243313144464246424530
4645333339453535423231/SMALL?_xResourceMethod=wsrp"
capabilities="urn:oracle:webcenter:read"/>
<link type="text/html"
resourceType="urn:oracle:webcenter:spaces:profile"
rel="alternate" href="http://host:port/
webcenter/faces/oracle/webcenter/webcenterapp/view/pages/
peopleconn/UserProfileGallery.jspx?wc.username=weblogic"
capabilities="urn:oracle:webcenter:read"/>
</links>
<displayName>weblogic</displayName>
<guid>E9A35E80F0BC11DFBFBE0FE339E55B21</guid>
<id>weblogic</id>
</author>
<created>2010-11-17T06:34:25.042-08:00</created>
<modifier>weblogic</modifier>
<modifiedByUser>
<links>
<link resourceType="urn:oracle:webcenter:people:person"
rel="via" href="http://host:port/
rest/api/people/E9A35E80F0BC11DFBFBE0FE339E55B21/lists/
@self?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read"/>
<link type="image/png"
template="http://host:port/webcenter/
profilephoto/453941333545383046304243313144464246424530
4645333339453535423231/{size}?_xResourceMethod=wsrp"
resourceType="urn:oracle:webcenter:people:person"
rel="urn:oracle:webcenter:people:icon"
href="http://host:port/webcenter/
profilephoto/453941333545383046304243313144464246424530
4645333339453535423231/SMALL?_xResourceMethod=wsrp"
capabilities="urn:oracle:webcenter:read"/>
<link type="text/html"
resourceType="urn:oracle:webcenter:spaces:profile"
rel="alternate" href="http://host:port/
webcenter/faces/oracle/webcenter/webcenterapp/view/pages/
peopleconn/UserProfileGallery.jspx?wc.username=weblogic"
capabilities="urn:oracle:webcenter:read"/>
</links>
<displayName>weblogic</displayName>
<guid>E9A35E80F0BC11DFBFBE0FE339E55B21</guid>
<id>weblogic</id>
</modifiedByUser>
<modified>2010-11-17T06:34:25.042-08:00</modified>
<columns>
<column>
<id>lco_9bdd1418_6004_40ba_a052_04e8335b7ee8</id>
<name>No.</name>
<value>1.0</value>
</column>
<column>
<id>lco_3a31fd20_24f1_4422_99fd_c00d7bed4b24</id>
<name>Description</name>
<value>test</value>
</column>
</columns>
</row>

メソッド(row): PUT

行のデータを更新するには、このメソッドを使用します。

- リソースURI。例:

http://host:port/rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/rows/(lr_a14d427f_8515_4c82_956f_
a60e6e08668c)?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**

- リクエスト本文: <row>

- 書込み可能要素(表49-12)

表49-12 rowの書込み可能要素

要素

タイプ

制約

説明

columns.column.id脚注1

string

-

列のID

columns.column.value脚注1

string

列のデータ型として有効な値

列の値

脚注1  必須要素を示しています

- 例:

<row>
<columns>
<column>
<id>lco_9bdd1418_6004_40ba_a052_04e8335b7ee8</id>
<value>1</value>
</column>
<column>
<id>lco_3a31fd20_24f1_4422_99fd_c00d7bed4b24</id>
<value>test</value>
</column>
</columns>
</row>

- リクエスト・ヘッダー: Content-Type = application/xml | application/json, [Accept = application/xml | application/json]

- レスポンス・ステータス: 200 [OK]

- レスポンス本文: <row>

メソッド(row): DELETE

リスト行を削除するには、このメソッドを使用します。

- リソースURI。例:

http://host:port/rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/rows/(lr_a14d427f_8515_4c82_956f_
a60e6e08668c)?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**

- リクエスト本体: なし

- レスポンス・ステータス: 204 [No Content]

- レスポンス本体: なし

49.4.4.4.3 rowからリンクされるリソース・タイプ

表49-13は、クライアントがrowリソースからリンクできるリソース・タイプを示しています。

表49-13 rowからリンクされるリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:list:row

49.4.4.5 urn:oracle:webcenter:space:list:columns

columnsレスポンスでは、リスト列を取得または追加する方法が提供されます。この項には次のサブセクションが含まれます:

- 第49.4.4.5.1項「columnsへのナビゲーション・パス」

- 第49.4.4.5.2項「columnsでサポートされるメソッド」

- 第49.4.4.5.3項「columnsからリンクされるリソース・タイプ」

49.4.4.5.1 columnsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してcolumnsリソースにアクセスする方法を示します。

urn:oracle:webcenter:resourceindex
urn:oracle:webcenter:spaces
urn:oracle:webcenter:space:resourceindex
urn:oracle:webcenter:space:lists
urn:oracle:webcenter:space:list
urn:oracle:webcenter:space:list:columns

49.4.4.5.2 columnsでサポートされるメソッド

columnsリソース・タイプでは、次のメソッドがサポートされます。

- メソッド(columns): GET

- メソッド(columns): POST

メソッド(columns): GET

リスト内の列を取得するには、このメソッドを使用します。

- リソースURI。例:

http://host:port/rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/columns?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**

- リクエスト本体: なし

- リクエスト・ヘッダー: [Accept = application/xml | application/json]

- リクエスト・パラメータ: なし

- レスポンス・ステータス: 200 [OK]

- レスポンス本文: <metaColumns>

- 例:

<metaColumns resourceType="urn:oracle:webcenter:space:list:columns">
<links>
<link resourceType="urn:oracle:webcenter:space:list:columns"
rel="self" href="http://host:port/
rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_
417b_a35f_fb03874979c0.xml)/columns?
utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:create"/>
<link resourceType="urn:oracle:webcenter:space:list"
rel="urn:oracle:webcenter:parent"
href="http://host:port/rest/api/spaces/vs1/
lists/(/oracle/webcenter/list/scopedMD/s355923f0_2f04_4fd0_83ad_
f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"/>
</links>
<items>
<metaColumn resourceType="urn:oracle:webcenter:space:list:column">
<links>
<link resourceType="urn:oracle:webcenter:space:list:column"
rel="self" href="http://host:port/
rest/api/spaces/vs1/lists/(/oracle/webcenter/list/
scopedMD/s355923f0_2f04_4fd0_83ad_
f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/columns/(lco_9bdd1418_6004_40ba_
a052_04e8335b7ee8)?
utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:update
urn:oracle:webcenter:delete"/>
</links>
<id>lco_9bdd1418_6004_40ba_a052_04e8335b7ee8</id>
<name>No.</name>
<dataType>number</dataType>
<required>false</required>
<displayLength>10</displayLength>
<format>number</format>
<allowLinks>false</allowLinks>
</metaColumn>
<metaColumn resourceType="urn:oracle:webcenter:space:list:column">
<links>
<link resourceType="urn:oracle:webcenter:space:list:column"
rel="self" href="http://host:port/
rest/api/spaces/vs1/lists/(/oracle/webcenter/list/
scopedMD/s355923f0_2f04_4fd0_83ad_
f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/columns/(lco_3a31fd20_24f1_4422_
99fd_c00d7bed4b24)?
utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:update
urn:oracle:webcenter:delete"/>
</links>
<id>lco_3a31fd20_24f1_4422_99fd_c00d7bed4b24</id>
<name>Description</name>
<dataType>string</dataType>
<required>false</required>
<maxLength>500</maxLength>
<displayLength>20</displayLength>
<allowLinks>false</allowLinks>
<editLines>1</editLines>
</metaColumn>
</items>
</metaColumns>

メソッド(columns): POST

リスト内に列を作成するには、このメソッドを使用します。

- リソースURI。例:

http://host:port/rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/columns?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**

- リクエスト本文: <metaColumn>

- 書込み可能要素(表49-14)

表49-14 columnsの書込み可能要素

要素

タイプ

制約

説明

name脚注1

string

-

列の名前

dataType脚注1

string

- string

- number

- datetime

- boolean

- person

- image

- richtext

列のデータ型

required

boolean

- true

- false

列の値が必須かどうか

defaultValue

列のデータ型

オブジェクトがデータ型と一致する必要がある

列のデフォルト値

maxLength

int

stringデータ型でのみ有効

文字列値の最大長

rangeLow

int

numberデータ型でのみ有効

numberデータ型の範囲の最小値

rangeHigh

int

numberデータ型でのみ有効

numberデータ型の範囲の最大値

format

string

次のnumberデータ型:

- 数値

- 通貨

- パーセント

次のdatetimeデータ型:

- date

- 時間

- 両方

列の形式

allowLinks

boolean

- true

- false

stringデータ型でのみ有効

ハイパーリンクを列の値に指定できるかどうか

linkTarget

string

- _blank

- _self

allowLinks=trueの場合のみ有効

_blankはリンクを新しいウィンドウに開き、_selfはリンクを同じウィンドウ内に開きます

editLines

int

stringデータ型でのみ有効

列値を編集する際の行数(デフォルトは1)

peopleScope

string

- GLOBAL

- SUB_SCOPE

personデータ型でのみ有効

ディレクトリ内のすべてのユーザーを有効とするか、あるいはリストを含むポータルのメンバーを有効とするかどうか

displayWidth

int

-

列のピクセル単位での表示幅

hint

string

-

列値を入力する際にユーザーに表示されるヒント

脚注1  必須要素を示しています

- 例:

<metaColumn>
<name>Notes</name>
<dataType>richtext</dataType>
</metaColumn

- リクエスト・ヘッダー: Content-Type = application/xml | application/json, [Accept = application/xml | application/json]

- レスポンス・ステータス: 201 [Created]

- レスポンス本文: <metaColumn>

- 取得される要素(表49-15)

表49-15 columnsから取得される要素

要素

タイプ

説明

id

string

列のID

name

string

列の名前

dataType

string

列のデータ型

required

boolean

列の値が必須かどうか

defaultValue

列のデータ型

列のデフォルト値

maxLength

int

文字列値の最大長

rangeLow

int

numberデータ型の範囲の最小値

rangeHigh

int

numberデータ型の範囲の最大値

format

string

列の形式

allowLinks

boolean

ハイパーリンクを列の値に指定できるかどうか

linkTarget

string

_blankはリンクを新しいウィンドウに開き、_selfはリンクを同じウィンドウ内に開きます

editLines

int

列値を編集する際の行数(デフォルトは1)

peopleScope

string

ディレクトリ内のすべてのユーザーを有効とするか、あるいはリストを含むポータルのメンバーを有効とするかどうか

displayWidth

int

列のピクセル単位での表示幅

hint

string

列値を入力する際にユーザーに表示されるヒント

- 例:

<metaColumn resourceType="urn:oracle:webcenter:space:list:column">
<links>
<link resourceType="urn:oracle:webcenter:space:list:column"
rel="self" href="http://host:port/
rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/
ls_c9cecbc7_756b_417b_a35f_fb03874979c0.xml)/columns/
(lco_fe2b9856_32f3_449a_a277_18dc7f6a779e)?
utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:update urn:oracle:webcenter:delete"/>
</links>
<id>lco_fe2b9856_32f3_449a_a277_18dc7f6a779e</id>
<name>Notes</name>
<dataType>richtext</dataType>
<required>false</required>
<displayLength>20</displayLength>
<allowLinks>false</allowLinks>
</metaColumn>

49.4.4.5.3 columnsからリンクされるリソース・タイプ

表49-16は、クライアントがcolumnsリソースからリンクできるリソース・タイプを示しています。

表49-16 columnsからリンクされるリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:list.columns

parent

urn:oracle:webcenter:space:list

urn:oracle:webcenter:space:list:column

49.4.4.6 urn:oracle:webcenter:space:list:column

columnレスポンスでは、個々のリスト列を取得、追加および削除する方法が提供されます。この項には次のサブセクションが含まれます:

- 第49.4.4.6.1項「columnへのナビゲーション・パス」

- 第49.4.4.6.2項「columnでサポートされるメソッド」

- 第49.4.4.6.3項「columnからリンクされるリソース・タイプ」

49.4.4.6.1 columnへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してcolumnリソースにアクセスする方法を示します。

urn:oracle:webcenter:resourceindex
urn:oracle:webcenter:spaces
urn:oracle:webcenter:space:resourceindex
urn:oracle:webcenter:space:lists
urn:oracle:webcenter:space:list
urn:oracle:webcenter:space:list:columns
urn:oracle:webcenter:space:list:column

49.4.4.6.2 columnでサポートされるメソッド

columnリソース・タイプでは、次のメソッドがサポートされます。

- メソッド(column): GET

- メソッド(column): PUT

- メソッド(column): DELETE

メソッド(column): GET

リスト列を取得するには、このメソッドを使用します。

- リソースURI。例:

http://host:port/rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/columns/(lco_fe2b9856_32f3_449a_a277_
18dc7f6a779e)?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**

- リクエスト本体: なし

- リクエスト・ヘッダー: [Accept = application/xml | application/json]

- レスポンス・ステータス: 200 [OK]

- レスポンス本文: <metaColumn>

- 取得される要素(表49-17)

表49-17 columnで取得される要素

要素

タイプ

説明

id

string

列のID

name

string

列の名前

dataType

string

列のデータ型

required

boolean

列の値が必須かどうか

defaultValue

列のデータ型

列のデフォルト値

maxLength

int

文字列値の最大長

rangeLow

int

numberデータ型の範囲の最小値

rangeHigh

int

numberデータ型の範囲の最大値

format

string

列の形式

allowLinks

boolean

ハイパーリンクを列の値に指定できるかどうか

linkTarget

string

_blankはリンクを新しいウィンドウに開き、_selfはリンクを同じウィンドウ内に開きます

editLines

int

列値を編集する際の行数(デフォルトは1)

peopleScope

string

ディレクトリ内のすべてのユーザーを有効とするか、あるいはリストを含むポータルのメンバーを有効とするかどうか

displayWidth

int

列のピクセル単位での表示幅

hint

string

列値を入力する際にユーザーに表示されるヒント

- 例:

<metaColumn resourceType="urn:oracle:webcenter:space:list:column">
<links>
<link resourceType="urn:oracle:webcenter:space:list:column"
rel="self" href="http://host:port/
rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/
ls_c9cecbc7_756b_417b_a35f_fb03874979c0.xml)/
columns/(lco_fe2b9856_32f3_449a_a277_18dc7f6a779e)?
utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**"
capabilities="urn:oracle:webcenter:read
urn:oracle:webcenter:update urn:oracle:webcenter:delete"/>
</links>
<id>lco_fe2b9856_32f3_449a_a277_18dc7f6a779e</id>
<name>Notes</name>
<dataType>richtext</dataType>
<required>false</required>
<displayLength>20</displayLength>
<allowLinks>false</allowLinks>
</metaColumn>

メソッド(column): PUT

列のデータを更新するには、このメソッドを使用します。

- リソースURI。例:

http://host:port/rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/columns/(lco_fe2b9856_32f3_449a_a277_
18dc7f6a779e)?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**

- リクエスト本文: <metacolumn>

- 書込み可能要素(表49-18)

表49-18 columnの書込み可能要素

要素

タイプ

制約

説明

name脚注1

string

-

列の名前

dataType脚注1

string

- string

- number

- datetime

- boolean

- person

- image

- richtext

列のデータ型

required

boolean

- true

- false

列の値が必須かどうか

defaultValue

列のデータ型

オブジェクトがデータ型と一致する必要がある

列のデフォルト値

maxLength

int

stringデータ型でのみ有効

文字列値の最大長

rangeLow

int

numberデータ型でのみ有効

numberデータ型の範囲の最小値

rangeHigh

int

numberデータ型でのみ有効

numberデータ型の範囲の最大値

format

string

次のnumberデータ型:

- 数値

- 通貨

- パーセント

次のdatetimeデータ型:

- date

- 時間

- 両方

列の形式

allowLinks

boolean

- true

- false

stringデータ型でのみ有効

ハイパーリンクを列の値に指定できるかどうか

linkTarget

string

- _blank

- _self

allowLinks=trueの場合のみ有効

_blankはリンクを新しいウィンドウに開き、_selfはリンクを同じウィンドウ内に開きます

editLines

int

stringデータ型でのみ有効

列値を編集する際の行数(デフォルトは1)

peopleScope

string

- GLOBAL

- SUB_SCOPE

personデータ型でのみ有効

ディレクトリ内のすべてのユーザーを有効とするか、あるいはリストを含むポータルのメンバーを有効とするかどうか

displayWidth

int

-

列のピクセル単位での表示幅

hint

string

-

列値を入力する際にユーザーに表示されるヒント

脚注1  必須要素を示しています

- 例:

<metaColumn>
<name>Comments</name>
<dataType>richtext</dataType>
</metaColumn>

- リクエスト・ヘッダー: Content-Type = application/xml | application/json, [Accept = application/xml | application/json]

- レスポンス・ステータス: 200 [OK]

- レスポンス本文: <metaColumn>

メソッド(column): DELETE

リスト列を削除するには、このメソッドを使用します。

- リソースURI。例:

http://host:port/rest/api/spaces/vs1/lists/(/oracle/webcenter/list/scopedMD/
s355923f0_2f04_4fd0_83ad_f7dac2a7ceed/lists/ls_c9cecbc7_756b_417b_a35f_
fb03874979c0.xml)/columns/(lco_fe2b9856_32f3_449a_a277_
18dc7f6a779e)?utoken=FKld8lalI3QRdi8TgQkOCGEzxL5x_w**

- リクエスト本体: なし

- レスポンス・ステータス: 204 [No Content]

- レスポンス本体: なし

49.4.4.6.3 columnからリンクされるリソース・タイプ

表49-19は、クライアントがcolumnリソースからリンクできるリソース・タイプを示しています。

表49-19 columnからリンクされるリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:list:column

49.5 リストのトラブルシューティング

問題

リスト・タスク・フローで、WebCenter Portalのリポジトリが使用できないことを示すエラーが発生します。

解決方法

データベース接続が構成されていない可能性があります。詳細は、第4.2.2項「データベース接続の設定」を参照してください。

問題

401 Unauthorizedエラーが発生します。

解決方法

ポータルのセキュリティが設定されていない可能性があります。また、試行されたタスクの実行に必要な権限が付与されていなかったことも考えられます。

50 通知の統合

この章では、Portal Frameworkアプリケーションに通知を統合する方法について説明します。通知は、サービス・オブジェクトおよびアプリケーション・オブジェクトへのサブスクライブの手段を提供するものであり、これらのオブジェクトが変更されると、選択されている1つ以上のメッセージ・チャネルを通じて通知を受信します。

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

- 第50.1項「通知の概要」

- 第50.2項「通知の基本構成」

- 第50.3項「通知の詳細情報」

50.1 通知の概要

この項では、通知の概要を説明します。次のサブセクションが含まれます:

- 第50.1.1項「通知の理解」

- 第50.1.2項「通知の要件」

- 第50.1.3項「実行時の通知の処理」

50.1.1 通知の理解

通知は、サブスクライブされているサービスおよびオブジェクトに関する通知を異なるメッセージ・チャネルを通じてトリガーする、自動的な手段を提供します。ユーザーがサブスクライブしているアプリケーション・サービスおよびオブジェクトが変更されると、メッセージがトリガーされます。たとえば、ユーザーがドキュメントにサブスクライブすると、別のユーザーがこのドキュメントを変更したときに通知を受信します。

メッセージ・チャネルには、使用できるメッセージ・サーバーやアプリケーション管理者による通知の構成方法に応じて、電話テキスト(SMS)、メールまたはワークリストが含まれます。たとえば、特定のドキュメントが変更されたときにメール・メッセージ、他のユーザーが特定のディスカッション・トピックに応答したときにテキスト・メッセージ、コネクションの招待を受けたときはワークリスト・アラートを受信できます。すべてのメッセージにはリンクが含まれており、ユーザーは該当の変更に移動できます。

参加しているサービスとオブジェクトには、ピープル・コネクション(コネクション、メッセージ・ボードおよびフィードバック)、ディスカッションおよびドキュメント(Wikiとブログを含む)があります。

表50-1に、通知をトリガーするアクティビティのタイプと、サブスクリプションが作成されるレベルを示します。

表50-1 通知をトリガーできるアクティビティ

アクティビティ

レベル

ユーザーがコネクションの招待を送信する

アプリケーション

ユーザーがメッセージをメッセージ・ボードに投稿する

アプリケーション

ユーザーがメッセージ・ボードの投稿(メッセージ・ボード上に明示的に設定されているメッセージで、パブリッシャからアクティビティ・ストリームに追加されたものではない)をお気に入り登録する

アプリケーション

ユーザーがメッセージ・ボードの投稿(メッセージ・ボード上に明示的に設定されているメッセージで、パブリッシャからアクティビティ・ストリームに追加されたものではない)にコメントする

アプリケーション

ユーザーがフィードバックを投稿する

アプリケーション

ユーザーがディスカッション・トピックに応答する

オブジェクト

ユーザーがディスカッション・トピックにコメントする

オブジェクト

ユーザーがディスカッション・トピックを削除する

オブジェクト

ユーザーがドキュメントについてコメントする

オブジェクト

ユーザーがドキュメントをお気に入り登録する

オブジェクト

ユーザーがドキュメントを更新する

オブジェクト

ユーザーがドキュメントを削除する

オブジェクト

ユーザーがWikiドキュメントについてコメントする

オブジェクト

ユーザーがWikiドキュメントをお気に入り登録する

オブジェクト

ユーザーがWikiドキュメントを更新する

オブジェクト

ユーザーがWikiドキュメントを削除する

オブジェクト

ユーザーがブログ・エントリでコメントする

オブジェクト

ユーザーがブログ・エントリをお気に入り登録する

オブジェクト

ユーザーがブログ・エントリを更新する

オブジェクト

ユーザーがブログ・エントリを削除する

オブジェクト

通知は、User Messaging Service (UMS)やメール・サービスなど、WebCenterで使用可能なメッセージ配信プラットフォームを利用して、生成するメッセージを配信します。メール・サービスはデフォルトのメッセージ配信メカニズムを備えていますが、ワークリスト・サービスを通じて提供されるBPEL接続を使用すると、ユーザーにとってチャネルの選択肢が電話テキスト、メールおよびワークリストと広がります。

すべてのユーザーを対象とするアプリケーションレベルのサブスクリプションのデフォルトは、XML構成ファイル(notification-service-settings.xml)によって設定できます。このデフォルト・ファイルの独自バージョンを作成して使用すると、この目的でデフォルトで提供されている同じ名前のファイルが置き換えられます。

50.1.2 通知の要件

アプリケーションが通知サービスと連携できるためには、アプリケーションのadf-config.xmlファイル内で通知ネームスペースを指定する必要があります。詳細は、第50.2.1項「通知ネームスペースの追加」を参照してください。

サブスクリプション機能はこれをサポートするサービスに組み込まれており、追加の構成は必要はありません。

通知メッセージ機能は、構成されているメールまたはワークリスト接続の存在を利用して、通知メッセージの配信を可能にします。通知メッセージでは、ワークリスト・サービス用に構成されているBPELサーバーまたはメール・サービス用に構成されているメール・サーバーを使用するように、アプリケーションを明示的に構成する必要があります。詳細は、第50.2.2項「メール・サーバーへの通知接続の作成」および第50.2.3項「BPELサーバーへの通知接続の作成」を参照してください。

アプリケーションレベルのサブスクリプション・プリファレンスとして、すべてのユーザーを対象とするアプリケーション・デフォルトを設定するには、デフォルトのnotification-service-settings.xmlファイルの独自バージョンを作成する必要があります。詳細は、第50.2.4項「通知のアプリケーション・デフォルトの設定」を参照してください。

通知が正しく動作するためには、保護されたページにそのタスク・フローがあることが必要です。これは、サブスクライブしているアクションを追跡およびレポートするには、現在のユーザーが認証を通じて認識される必要があるためです。通知が含まれるページまたはアプリケーションが保護されていない場合、例外エラーが発生します。詳細は、第50.2.6項「通知のセキュリティの設定」を参照してください。

50.1.3 実行時の通知の処理

実行時に、ユーザーはUMSプリファレンスを通じて優先するメッセージ・チャネルを設定します。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のメッセージ・チャネルとフィルタの確立および管理に関する項を参照してください。

注意:

アプリケーションを設計する際、ユーザーがUMSプリファレンスにアクセスできるようにする必要があります。たとえば、リンクをUIに追加したり、リンクを含むワークリスト・タスク・フローをユーザーに示すことができます。

ユーザーは、通知タスク・フローのサブスクリプション・プリファレンスを通じてアプリケーションレベルのサブスクリプションを確立します。このタスク・フローで表示されるオプションは、タスク・フローがホーム・ポータル(図50-1)またはポータル(図50-2)のいずれに存在するかによって、若干異なります。

図50-1 サブスクリプション・プリファレンス・タスク・フロー - ホーム・ポータル

図50-2 サブスクリプション・プリファレンス・タスク・フロー - ポータル

オブジェクトレベルのサブスクリプションは、オブジェクトに直接サブスクライブすることによって設定します。

ユーザーは、サブスクリプション・プリファレンス・タスク・フローを通じてアプリケーションレベルのサブスクリプションを管理し、通知タスク・フローのサブスクリプション・ビューアを通じてオブジェクトレベルのサブスクリプションを管理します(図50-3)。

図50-3 サブスクリプション・ビューア・タスク・フロー

関連項目:

通知タスク・フローの詳細は、第50.2.5.1項「通知タスク・フロー」を参照してください。

50.2 通知の基本構成

通知は、メールまたはワークリスト・サービス接続を利用して、ユーザー通知のメッセージ・チャネルを提供します。メール・サーバーを使用する予定の場合、メール・サービス用のメール・サーバーへの接続が必要ですが、通知用の追加の構成は必要ありません。ワークリスト・サービスが使用するのと同じBPEL接続を通知で使用する予定の場合は、この構成をadf-config.xmlファイルに追加する必要があります。

この項では、これらの接続と構成の概要およびアプリケーション・ページに通知タスク・フローを追加するプロセスについて説明します。次のサブセクションが含まれます:

- 第50.2.1項「通知ネームスペースの追加」

- 第50.2.2項「メール・サーバーへの通知接続の作成」

- 第50.2.3項「BPELサーバーへの通知接続の作成」

- 第50.2.4項「通知のアプリケーション・デフォルトの設定」

- 第50.2.5項「通知タスク・フローのアプリケーションへの追加」

- 第50.2.6項「通知のセキュリティの設定」

50.2.1 通知ネームスペースの追加

アプリケーションで通知ネームスペースを確立するには、次のコードをファイル先頭のadf-config要素に追加します(例50-1)。

ヒント:

adf-config.xmlファイルは、「アプリケーション・リソース」パネルで、「ディスクリプタ」の下のADF META-INFフォルダにあります。

例50-1 通知構成を認識するためのアプリケーションの構成

xmlns:notificationC="http://xmlns.oracle.com/webcenter/notification/config"

例(太字) (図50-3):

例50-2 adf-config要素内の通知構成

<?xml version="1.0" encoding="US-ASCII" ?>
<adf-config xmlns="http://xmlns.oracle.com/adf/config"
xmlns:adf="http://xmlns.oracle.com/adf/config/properties"
xmlns:sec="http://xmlns.oracle.com/adf/security/config"
xmlns:wpsC="http://xmlns.oracle.com/webcenter/framework/service"
xmlns:jndiC="http://xmlns.oracle.com/adf/jndi/config"
xmlns:worklistC="http://xmlns.oracle.com/webcenter/worklist/config"
xmlns:notificationC="http://xmlns.oracle.com/webcenter/notification/config"
xmlns:mdsC="http://xmlns.oracle.com/adf/mds/config"
xmlns:searchC="http://xmlns.oracle.com/webcenter/search/config"
xmlns:relC="http://xmlns.oracle.com/webcenter/relationship/config"
…

50.2.2 メール・サーバーへの通知接続の作成

ユーザーがメール・メッセージ・チャネルを選択できるようにするには、メール・サーバーへの接続を構成する必要があります(詳細は、第35.2.2項「メール用接続の設定」を参照)。接続が確立されたら、adf-config.xmlファイルに次のエントリを追加して、メール・サーバーと通知を関連付けます(例50-3)。

例50-3 adf-config.xml内でのメール・サーバーと通知の関連付け

<notificationC:adf-notification-config
xmlns="http://xmlns.oracle.com/webcenter/notification/config">
<ConnectionType>MAIL</ConnectionType>
<ConnectionName>someMailConnection</ConnectionName>
</notificationC:adf-notification-config>

ここで、ConnectionNameは構成されたメール・サーバーの名前です。

例50-4はコード・サンプルで、前述のコード・サンプルが所定の位置にあります(太字)。

例50-4 adf-config.xml内の通知のメール接続

<?xml version="1.0" encoding="US-ASCII" ?>
<adf-config xmlns="http://xmlns.oracle.com/adf/config"
xmlns:adf="http://xmlns.oracle.com/adf/config/properties"
xmlns:sec="http://xmlns.oracle.com/adf/security/config"
xmlns:wpsC="http://xmlns.oracle.com/webcenter/framework/service"
xmlns:jndiC="http://xmlns.oracle.com/adf/jndi/config"
xmlns:worklistC="http://xmlns.oracle.com/webcenter/worklist/config"
xmlns:notificationC="http://xmlns.oracle.com/webcenter/notification/config"
xmlns:mdsC="http://xmlns.oracle.com/adf/mds/config"
xmlns:searchC="http://xmlns.oracle.com/webcenter/search/config"
xmlns:relC="http://xmlns.oracle.com/webcenter/relationship/config"
xmlns:collabC="http://xmlns.oracle.com/webcenter/collab/config"
xmlns:listC="http://xmlns.oracle.com/webcenter/list/config"
xmlns:rcs="http://xmlns.oracle.com/adf/rcs/adf-config"
xmlns:rcv="http://xmlns.oracle.com/adf/rcs/viewer/adf-config"xmlns:tagC=
"http://xmlns.oracle.com/webcenter/tagging/config"
xmlns:doclibC="http://xmlns.oracle.com/webcenter/doclib/config">
<adf:adf-properties-child xmlns="http://xmlns.oracle.com/adf/config/properties">
<adf-property name="adfAppUID" value="ps3stage2app-7762"/>
</adf:adf-properties-child>
<sec:adf-security-child xmlns="http://xmlns.oracle.com/adf/security/config">
<CredentialStoreContext
credentialStoreClass="oracle.adf.share.security.providers.jps.
CSFCredentialStore"
credentialStoreLocation="../../src/META-INF/jps-config.xml"/>
<sec:JaasSecurityContext
initialContextFactoryClass="oracle.adf.share.security.
JAASInitialContextFactory"
jaasProviderClass="oracle.adf.share.security.providers.jps.
JpsSecurityContext" authorizationEnforce="true"
authenticationRequire="true"/></sec:adf-security-child>
<wpsC:adf-service-config>
<wpsC:data-source jndi-name="java:/comp/env/jdbc/WebCenterDSDS"/>
</wpsC:adf-service-config>
<notificationC:adf-notification-config
xmlns="http://xmlns.oracle.com/webcenter/notification/config">
<ConnectionType>MAIL</ConnectionType>
<ConnectionName>someMailConnection</ConnectionName>
</notificationC:adf-notification-config>
<searchC:adf-search-config
xmlns="http://xmlns.oracle.com/webcenter/search/config">
…

50.2.3 BPELサーバーへの通知接続の作成

ユーザーにメール、電話テキストまたはワークリストのメッセージ・チャネルを選択できるオプションを提供するには、BPELサーバーへの接続を構成する必要があります(詳細は、第41.3.1項「ワークリストの接続の設定」を参照)。通知は、ワークリスト・サービス用に指定されているBPELサーバーを利用して、生成する通知のメッセージ・チャネルを複数提供します。BPELサーバーへの接続が確立された後、BPELサーバーと通知を関連付けるため、次のエントリをadf-config.xmlファイルに追加します(例50-5)。

例50-5 メッセージングでBPELサーバーを使用するための通知の構成

<notificationC:adf-notification-config
xmlns="http://xmlns.oracle.com/webcenter/notification/config">
<ConnectionType>BPEL</ConnectionType>
<ConnectionName>worklistConnection</ConnectionName>
<SenderEmailAddress>example@company.com<SenderEmailAddress>
<SenderSMSAddress>12345</SenderSMSAddress>
</notificationC:adf-notification-config>

ここで:

- ConnectionNameは、ワークリスト・サービス用の接続を設定したときにBPELサーバーに対して指定した名前です。

- SenderEMailAddressは、すべての通知メッセージの送信元メール・アドレスです。送信元メール・アドレスは、対応するドメインからメッセージを送信するように構成されている、少なくとも1つのドライバに一致する必要があります。

- SenderSMSAddressは、すべての通知メッセージの送信元ドライバとしてユーザー・メッセージング・サーバー(UMS)が使用する、4-6桁の数字です。送信元SMSアドレスは、対応するドメインからメッセージを送信するように構成されている、少なくとも1つのドライバに一致する必要があります。

例50-6はコード・サンプルで、前述のコード・サンプルが所定の位置にあります(太字)。

例50-6 adf-config.xmlファイル内の通知エントリ

<?xml version="1.0" encoding="US-ASCII" ?>
<adf-config xmlns="http://xmlns.oracle.com/adf/config"
xmlns:adf="http://xmlns.oracle.com/adf/config/properties"
xmlns:sec="http://xmlns.oracle.com/adf/security/config"
xmlns:wpsC="http://xmlns.oracle.com/webcenter/framework/service"
xmlns:jndiC="http://xmlns.oracle.com/adf/jndi/config"
xmlns:worklistC="http://xmlns.oracle.com/webcenter/worklist/config"
xmlns:notificationC="http://xmlns.oracle.com/webcenter/notification/config"
xmlns:mdsC="http://xmlns.oracle.com/adf/mds/config"
xmlns:searchC="http://xmlns.oracle.com/webcenter/search/config"
xmlns:relC="http://xmlns.oracle.com/webcenter/relationship/config"
xmlns:collabC="http://xmlns.oracle.com/webcenter/collab/config"
xmlns:listC="http://xmlns.oracle.com/webcenter/list/config"
xmlns:rcs="http://xmlns.oracle.com/adf/rcs/adf-config"
xmlns:rcv="http://xmlns.oracle.com/adf/rcs/viewer/adf-config"xmlns:tagC=
"http://xmlns.oracle.com/webcenter/tagging/config"
xmlns:doclibC="http://xmlns.oracle.com/webcenter/doclib/config">
<adf:adf-properties-child xmlns="http://xmlns.oracle.com/adf/config/properties">
<adf-property name="adfAppUID" value="ps3stage2app-7762"/>
</adf:adf-properties-child>
<sec:adf-security-child xmlns="http://xmlns.oracle.com/adf/security/config">
<CredentialStoreContext
credentialStoreClass="oracle.adf.share.security.providers.jps.
CSFCredentialStore"
credentialStoreLocation="../../src/META-INF/jps-config.xml"/>
<sec:JaasSecurityContext
initialContextFactoryClass="oracle.adf.share.security.
JAASInitialContextFactory"
jaasProviderClass="oracle.adf.share.security.providers.jps.
JpsSecurityContext" authorizationEnforce="true"
authenticationRequire="true"/></sec:adf-security-child>
<wpsC:adf-service-config>
<wpsC:data-source jndi-name="java:/comp/env/jdbc/WebCenterDSDS"/>
</wpsC:adf-service-config>
<notificationC:adf-notification-config
xmlns="http://xmlns.oracle.com/webcenter/notification/config">
<ConnectionType>BPEL</ConnectionType>
<ConnectionName>worklistConnection</ConnectionName>
<SenderEmailAddress>example@company.com<SenderEmailAddress>
<SenderSMSAddress>12345</SenderSMSAddress>
</notificationC:adf-notification-config>
<searchC:adf-search-config
xmlns="http://xmlns.oracle.com/webcenter/search/config">
…

50.2.4 通知のアプリケーション・デフォルトの設定

この項では、通知のすべてのユーザーが対象となる、アプリケーションレベルのデフォルトを設定するために使用するXMLファイルについて説明します。次のサブセクションが含まれます:

- 第50.2.4.1項「サブスクリプション・デフォルトについて」

- 第50.2.4.2項「通知のサブスクリプション・デフォルトの設定」

50.2.4.1 サブスクリプション・デフォルトについて

管理者レベルのサブスクリプション・プリファレンスは、作成するカスタムXMLファイルに設定し、これを使用することで、この目的のためにnotification-repository.jarでデフォルトで提供されるファイルを置き換えます(notification-service-settings.xml)。カスタムXMLファイル内の設定は、サブスクリプション・プリファレンス・タスク・フローを通じてユーザーが使用できる、アプリケーションレベルのサブスクリプション設定に似ています。

各設定により、次の属性が提供されます。

- id - サービスIDを指定します。

- oracle.webcenter.peopleconnections.connections、ピープル・コネクション・サービスのコネクション機能

- oracle.webcenter.peopleconnections.wall、ピープル・コネクション・サービスのメッセージ・ボード機能

- oracle.webcenter.peopleconnections.kudos、ピープル・コネクション・サービスのフィードバック機能

- subscription-enabled - プリファレンス・オプションのデフォルト値を指定します(trueまたはfalse)。

ヒント:

subscription-enabled属性は、サブスクリプション機能全体を有効または無効にするのではなく、プリファレンス・オプションの初期状態のみを設定します。たとえば、subscription-enabled="true"の場合、サブスクリプション・プリファレンス・タスク・フローで、関連するサブスクリプション・オプションがデフォルトで選択されます。subscription-enabled="false"の場合は、タスク・フローで、関連するサブスクリプション・オプションの選択はデフォルトで解除されます。

- end-user-configurable - ユーザーが設定済のデフォルトを変更することを許可または禁止します(trueまたはfalse)。

これらの属性が連携して、サブスクリプション・プリファレンス・タスク・フローの初期状態が決まります。

表50-2は、カスタムの管理者レベルのサブスクリプション設定が、サブスクリプション・プリファレンス・タスク・フローの外観に及ぼす影響を示しています。

表50-2 管理者デフォルトがサブスクリプション・プリファレンスに及ぼす影響

subscription-enabled脚注 1

end-user-configurable

プリファレンスのオプション

True

True

通常のレンダリング、チェック・ボックスの選択

True

False

グレー表示、チェック・ボックスの選択

False

True

通常のレンダリング、チェック・ボックスの選択解除

False

False

非表示、チェック・ボックスの非表示

脚注 1 subscription-enabled属性は、サブスクリプション機能全体を有効または無効にするのではなく、サブスクリプションの初期状態のみを設定します。

ヒント:

大部分の通知において最も一般的なシナリオは、False、True、つまり通常のレンダリング、チェック・ボックスの選択解除です。

表50-3は、アプリケーションレベルの通知をトリガーできるアクションの種類と、関連するサービスIDを示しています。

表50-3 通知をトリガーできるアプリケーションレベルのアクティビティ

アクティビティ

関連するサービスID

ユーザーがコネクションの招待を送信する

oracle.webcenter.peopleconnections.connections

ユーザーがメッセージをメッセージ・ボードに投稿する

oracle.webcenter.peopleconnections.wall

別のユーザーのメッセージ・ボードに行った投稿をユーザーがお気に入り登録する

oracle.webcenter.peopleconnections.wall

別のユーザーのメッセージ・ボードに行った投稿にユーザーがコメントする

oracle.webcenter.peopleconnections.wall

ユーザーがフィードバックを投稿する

oracle.webcenter.peopleconnections.kudos

50.2.4.2 通知のサブスクリプション・デフォルトの設定

アプリケーションレベルのサブスクリプション・プリファレンスのデフォルト値を設定するには:

1. パスに/oracle/webcenter/notificationが含まれるディレクトリに移動し、フォルダcustomを作成します。

ヒント:

パスに/oracle/webcenter/notification/customが含まれているかぎり、ディレクトリ構造は任意のディレクトリで開始または終了できます。

2. customフォルダまたは/oracle/webcenter/notification/custom/の下の任意のサブフォルダで、ファイルnotification-service-settings.xmlを作成します。

3. XMLファイルに、アプリケーションレベルのすべてのサブスクリプション・オプションの値を入力します。
例50-7は、アプリケーション全体のサブスクリプション・プリファレンス設定ファイルのサンプル・コンテンツと、必要な各オプションの例を示しています。

例50-7 サブスクリプション設定のサンプルXMLファイル

<notification-service_settings xmlns="http://xmlns.oracle.com/webcenter/notification">
<subscription-settings>
<service id="oracle.webcenter.peopleconnections.connections" subscription-enabled="true"
end-user-configurable="false"/>
<service id="oracle.webcenter.peopleconnections.wall" subscription-enabled="false"
end-user-configurable="true"/>
<service id="oracle.webcenter.peopleconnections.kudos" subscription-enabled="false"
end-user-configurable="true"/>
</subscription-settings>
</notification-service_settings>

注意:

オプションが指定されない場合は、デフォルト値false/falseがサービスに割り当てられます。

4. WLSTコマンドimportMetadataを実行し、ディレクトリのコンテンツをメタデータ・ストアにインポートします。

関連項目:

importMetadataコマンド(および他のWLSTコマンド)の詳細は、『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』のimportMetadataに関する項を参照してください。

例:

wls: /wc_domain/serverConfig> importMetadata(application='webcenter',
server='serverName', fromLocation='directoryPath', docs='/**')

ここで:

- applicationは、アプリケーションを識別する名前です

- serverNameは、アプリケーションが実行されているサーバーの名前です

- directoryPathは、oracle/webcenter/notification/custom/<any_sub_dir_after_this>/notification-service-settings.xmlが置かれているディレクトリ・パスです。
たとえば、notification-service-settings.xmlのディレクトリ・パスが/scratch/mydir/oracle/webcenter/notification/customの場合は、directoryPathとして/scratch/mydirを入力します。

- docsは、インポートされるコンテンツを識別します。この例の場合は、directoryPathで指定される場所の下にあるパスとファイルです。

表50-4は、サービスID oracle.webcenter.peopleconnections.connectionsにおける、設定の様々な組合せの影響を示しています。

表50-4 接続におけるサブスクリプション構成の影響

subscription-enabled

end-user-configurable

影響

true

true

- 別のユーザーがサブスクライブ・ユーザーにコネクションの招待を送信すると、そのサブスクライブ・ユーザーは通知メッセージを受信します。

- ユーザーはこのデフォルトを変更できます。

true

false

- 別のユーザーがサブスクライブ・ユーザーにコネクションの招待を送信すると、そのサブスクライブ・ユーザーは通知メッセージを受信します。

- ユーザーはこのデフォルトを変更できません。脚注 1

false

true

- 別のユーザーがサブスクライブ・ユーザーにコネクションの招待を送信する際、そのサブスクライブ・ユーザーは通知メッセージを受信しません。

- ユーザーはこのデフォルトを変更できます。

false

false

- 別のユーザーがサブスクライブ・ユーザーにコネクションの招待を送信する際、そのサブスクライブ・ユーザーは通知メッセージを受信しません。

- このデフォルト値を変更するためのオプションは非表示にされます。

脚注 1 これは初期設定のデフォルトです

表50-5は、サービスID oracle.webcenter.peopleconnections.wallにおける、設定の様々な組合せの影響を示しています。

表50-5 メッセージ・ボードにおけるサブスクリプション構成の影響

subscription-enabled

end-user-configurable

影響

true

true

- 別のユーザーがメッセージをメッセージ・ボードで投稿する際、メッセージ・ボードの投稿をお気に入り登録する際、またはメッセージ・ボードの投稿に対してコメントする際、そのサブスクライブ・ユーザーは通知メッセージを受信します。

- ユーザーはこのデフォルトを変更できます。

true

false

- 別のユーザーがメッセージをメッセージ・ボードで投稿する際、メッセージ・ボードの投稿をお気に入り登録する際、またはメッセージ・ボードの投稿に対してコメントする際、そのサブスクライブ・ユーザーは通知メッセージを受信します。

- ユーザーはこのデフォルトを変更できません。

false

true

- 別のユーザーがメッセージをメッセージ・ボードで投稿する際、メッセージ・ボードの投稿をお気に入り登録する際、またはメッセージ・ボードの投稿に対してコメントする際、そのサブスクライブ・ユーザーは通知メッセージを受信しません。

- ユーザーはこのデフォルトを変更できます。

false

false

- 別のユーザーがメッセージをメッセージ・ボードで投稿する際、メッセージ・ボードの投稿をお気に入り登録する際、またはメッセージ・ボードの投稿に対してコメントする際、そのサブスクライブ・ユーザーは通知メッセージを受信しません。

- このデフォルト値を変更するためのオプションは非表示にされます。

表50-6は、サービスID oracle.webcenter.peopleconnections.kudosにおける、設定の様々な組合せの影響を示しています。

表50-6 フィードバックにおけるサブスクリプション構成の影響

subscription-enabled

end-user-configurable

影響

true

true

- 別のユーザーがサブスクライブ・ユーザーのフィードバックを投稿すると、そのサブスクライブ・ユーザーは通知メッセージを受信します。

- ユーザーはこのデフォルトを変更できます。

true

false

- 別のユーザーがサブスクライブ・ユーザーのフィードバックを投稿すると、そのサブスクライブ・ユーザーは通知メッセージを受信します。

- ユーザーはこのデフォルトを変更できません。

false

true

- 別のユーザーがサブスクライブ・ユーザーのフィードバックを投稿する際、そのサブスクライブ・ユーザーは通知メッセージを受信しません。

- ユーザーはこのデフォルトを変更できます。

false

false

- 別のユーザーがサブスクライブ・ユーザーのフィードバックを投稿する際、そのサブスクライブ・ユーザーは通知メッセージを受信しません。

- このデフォルト値を変更するためのオプションは非表示にされます。

50.2.5 アプリケーションへの通知タスク・フローの追加

この項では、通知タスク・フローの概要を説明し、これをアプリケーション・ページに追加する方法について説明します。次のサブセクションが含まれます:

- 第50.2.5.1項「通知タスク・フロー」

- 第50.2.5.2項「通知タスク・フローをページに追加する方法」

50.2.5.1 通知タスク・フロー

通知サービスは、ユーザー・サブスクリプションを管理する2つのタスク・フローを公開しています。

- サブスクリプション・プリファレンスには、アプリケーションレベルのサブスクリプションの適用、表示およびサブスクライブ解除を行うためのコントロールがあります。このタスク・フローで表示されるオプションは、タスク・フローがホーム・ポータル(図50-1)またはポータル(図50-2)のいずれに存在するかによって、若干異なります

図50-4 サブスクリプション・プリファレンス・タスク・フロー - ホーム・ポータル

図50-5 サブスクリプション・プリファレンス・タスク・フロー - ポータル

- サブスクリプション・ビューアは、オブジェクトレベルのサブスクリプションの表示とサブスクライブ解除を制御します(図50-6)。

図50-6 サブスクリプション・ビューア・タスク・フロー

50.2.5.2 通知タスク・フローをページに追加する方法

通知タスク・フローをページに追加するには:

1. 第4.2.1項「ツールとサービスを利用するようにアプリケーションを準備する方法」の手順に従い、セキュリティを実装しカスタマイズ可能なページをアプリケーションで作成します。

2. タスク・フローを追加するページを開きます。

3. リソース・パレットの「カタログ」ペインで、「WebCenter Portal - サービス・カタログ」を開き、「タスク・フロー」フォルダを開きます。

4. ページ・リージョンにタスク・フローをドラッグし、ポップアップ・リストから「リージョン」を選択します。

5. 「ADFライブラリ追加の確認」ダイアログで、「ライブラリの追加」をクリックして、コンポーネントに必要なすべてのライブラリを追加します。

6. サブスクリプション・プリファレンスの場合のみ、必要に応じて、「タスク・フロー・バインディングの編集」ダイアログで、入力パラメータ・マップへのパスおよびタスク・フローの入力パラメータの値を指定し、「OK」をクリックします。

関連項目:

サブスクリプション・プリファレンス・タスク・フローの入力パラメータの詳細は、第50.2.5.3項「サブスクリプション・プリファレンス・タスク・フローの入力パラメータ」を参照してください。

タスク・フローがページで表示されます。たとえば、「ソース」ビューに、例50-8に示されているコンテンツが表示されます。

例50-8 サブスクリプション・プリファレンス・タスク・フローのソース・ビュー・コンテンツ

<af:region value="#{bindings.SubscriptionPreferences1.regionModel}" id="r1"/>

7. 「フォーム要素追加の確認」ダイアログで、「いいえ」をクリックして、タスク・フローのフォーム要素が折り返さないようにします。

8. プロジェクトを保存し、ページをブラウザで実行します。
ブラウザにタスク・フローが表示されます。このタスク・フローで表示されるオプションは、ホーム・ポータル(図50-7)またはポータル(図50-7)のいずれにタスク・フローを追加したかによって、若干異なります。

図50-7 サブスクリプション・プリファレンス・タスク・フロー - ホーム・ポータル

図50-8 サブスクリプション・プリファレンス・タスク・フロー - ポータル

50.2.5.3 サブスクリプション・プリファレンス・タスク・フローの入力パラメータ

サブスクリプション・プリファレンス・タスク・フローの入力パラメータを使用すると、指定のタスク・フロー・インスタンスの動作を制御できます。表50-7は、このタスク・フローに関連する入力パラメータとその説明を示しています。

図50-7 サブスクリプション・プリファレンス・タスク・フローの入力パラメータ

入力パラメータ

説明

hideActions

タスク・フローへの「保存」ボタンおよび「リフレッシュ」アイコンの表示または非表示を切り替えます

- ${true}: これらのコントロールを表示しない

- ${false}: 表示する(デフォルト)

scopeName

サブスクリプション・プリファレンスが設定されるスコープの名前。

50.2.6 通知のセキュリティの設定

通知では、ユーザーの通知設定を保持し、サブスクライブされているサービスおよびオブジェクトでのユーザーのアクティビティを追跡するために、ユーザーのアイデンティティを理解している必要があります。そのためには、少なくともユーザーを認証するようにアプリケーションを構成して、パーソナライズとユーザー・プリファレンスを目的とする個別のアイデンティティを持たせる必要があります。

Portal Frameworkアプリケーションで基本的なセキュリティ・ソリューションを実装する方法の詳細は、第74.3項「ADFセキュリティの構成」を参照してください。Portal Frameworkアプリケーションに完全なセキュリティ・ソリューションを実装する方法の詳細は、第74章「WebCenter Portal Frameworkアプリケーションの保護」を参照してください。

ADFセキュリティをアプリケーション用に構成すると、jazn-data.xmlファイルを開いて、サンプル・ユーザーの権限を各タスク・フロー用に変更できます。ADFセキュリティ・ポリシー・エディタを開くには、「アプリケーション・リソース」パネルでファイルを見つけて、その名前をダブルクリックします。このビューで権限を構成することもできます。

注意:

通知のユーザー権限を正しく付与するには、デプロイメント後にユーザー権限を構成する必要があります。

50.3 通知の詳細情報

この項では、通知で使用できるAPIについて説明します。次のサブセクションが含まれます:

- 第50.3.1項「通知Java APIの使用」

- 第50.3.2項「通知データ・コントロールの使用」

50.3.1 通知Java APIの使用

この項では、通知Java APIの概要を説明します。次のサブセクションが含まれます:

- 第50.3.1.1項「通知Java APIを使用するために必要な構成設定」

- 第50.3.1.2項「通知Java APIの概要」

- 第50.3.1.3項「通知Java APIを使用するようにアプリケーションを設定する方法」

関連項目:

通知Java APIの詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

50.3.1.1 通知Java APIを使用するために必要な構成設定

通知Java APIを使用するには、adf-config.xmlファイルに次のエントリがある必要があります。

<namespace path="/oracle/webcenter/page/scopedMD"
metadata-store-usage="WebCenterFileMetadataStore"/>
<namespace path="/pageDefs" metadata-store-usage="WebCenterFileMetadataStore"/>

adf-config.xmlにこれらのエントリがない場合は、任意のテキスト・エディタを使用してこれらを追加できます。

50.3.1.2 通知Java APIの概要

通知Java APIは、クラスoracle.webcenter.notificationにあります。クラス内では、SubscriptionManagerが、次のJava APIを使用してユーザー・サブスクリプションの作成および管理のインタフェースを提供します。

- FilterOption - フィルタ基準を提供します。ユーザーのサブスクリプションを問い合せる際は、このクラスのインスタンスを使用します。

- NotificationServiceFactory - 通知インタフェースに対応するインスタンスを作成および取得するファクトリ。通知APIへのエントリ・ポイントです。

- SortOption - サブスクリプションをフェッチするソート属性を定義します。ユーザーのサブスクリプションを問い合せるには、SubscriptionManagerメソッドでこのクラスのインスタンスを使用します。

- Subscription - ユーザーのサブスクリプションに関する情報を含みます。ユーザーのサブスクリプションは、SubscriptionManagerで公開されるメソッドを通じて作成されます。このクラスのインスタンスは、SubscriptionManagerで公開されるメソッドで返されます。

- SubscriptionPreference - アプリケーションまたはスコープレベルのサブスクリプションをプリファレンスとして表し、対応するサービスのサブスクリプションの設定および削除を可能にします。

関連項目:

通知Java APIの詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

50.3.1.3 通知Java APIを使用するようにアプリケーションを設定する方法

通知Java APIを使用するには、JDeveloperアプリケーションにWebCenter Portal拡張機能が存在している必要があります。JDeveloperで、「ヘルプ」→「バージョン情報」メニューに進み、「拡張機能」タブをクリックします。図50-9に示されている「WebCenter Portal - 通知サービス」を探します。WebCenter Portal拡張機能の追加の詳細は、第2章「開発環境の設定」を参照してください。

図50-9 JDeveloper拡張機能

WebCenter Portal拡張機能に通知が含まれていることを確認した後、通知ライブラリがない場合は、これをプロジェクトに追加する必要があります。

プロジェクトに通知ライブラリを追加するには:

1. プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択し、「ライブラリとクラスパス」を選択します。

2. 「ライブラリの追加」をクリックし、「WebCenter通知サービス」ライブラリおよび「WebCenter通知サービス・ビュー」ライブラリを選択します(図50-10)。

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

図50-10 「プロジェクト・プロパティ」内の「ライブラリとクラスパス」

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

50.3.2 通知データ・コントロールの使用

通知にはデータ・コントロールがあり、これを使用すると、サブスクリプション管理機能を独自に視覚化できます。この項では、通知サブスクリプション・データ・コントロールの概要を説明し、サポートされているメソッド、属性およびクラスについて説明します。

関連項目:

Portal Frameworkアプリケーションにおけるデータ・コントロールの使用の詳細は、第4.1.3項「WebCenter Portalのデータ・コントロールの使用」を参照してください。

この項には次のサブセクションが含まれます:

- 第50.3.2.1項「プロジェクトへのデータ・コントロールの追加」

- 第50.3.2.2項「通知サブスクリプション・データ・コントロールの理解」

- 第50.3.2.3項「通知サブスクリプション・データ・コントロールのメソッドと属性」

- 第50.3.2.4項「通知サブスクリプション・データ・コントロールのクラス」

50.3.2.1 プロジェクトへのデータ・コントロールの追加

プロジェクトにデータ・コントロールを追加するには、「リソース・パレット」で右クリックし、ポップアップ・メニューから「プロジェクトに追加」を選択します。追加されると、アプリケーション・ナビゲータの「データ・コントロール」パネルで展開して、データ・コントロールのメソッドと属性を参照できます。

アプリケーション・ページにデータ・コントロールを追加するには、「データ・コントロール」パネルからページにデータ・コントロールをドラッグします。

関連項目:

Portal Frameworkアプリケーションにおけるデータ・コントロールの使用の詳細は、第4.1.3項「WebCenter Portalのデータ・コントロールの使用」を参照してください。

50.3.2.2 通知サブスクリプション・データ・コントロールの理解

通知サブスクリプション・データ・コントロールを使用すると、要件に不十分な場合にサブスクリプション・プリファレンスおよびサブスクリプション・ビューア・タスク・フローに相当するカスタムUIを作成できます。

データ・コントロールは、アプリケーションレベルのサブスクリプション・プリファレンスを追加する手段として使用できます。たとえば、アプリケーション内で独自のプリファレンス・メカニズムが開発されている場合、サブスクリプション・プリファレンス・タスク・フローを直接使用するのではなく、データ・コントロールを使用することで、既存のメカニズムにサブスクリプション・プリファレンスを追加できます。現在のユーザーのオブジェクトレベルのサブスクリプションがすべてリストされる、カスタムのサブスクリプション・ビューアUIも作成できます。

50.3.2.3 通知サブスクリプション・データ・コントロールのメソッドと属性

この項では、通知サブスクリプション・データ・コントロールで公開されるメソッドについて説明します。次のサブセクションが含まれます:

- 第50.3.2.3.1項「メソッド: getUserSubscriptionPreferences」

- 第50.3.2.3.2項「メソッド: getScopeSubscriptionPreferences」

- 第50.3.2.3.3項「メソッド: saveUserSubscriptionPreferences」

- 第50.3.2.3.4項「メソッド: saveScopeSubscriptionPreferences」

- 第50.3.2.3.5項「メソッド: getSubscriptions」

- 第50.3.2.3.6項「メソッド: unsubscribe」

50.3.2.3.1 メソッド: getUserSubscriptionPreferences

このメソッドは、現在のユーザーのアプリケーションレベルのサブスクリプション・プリファレンスを返します。

入力パラメータ

なし

戻り値

SubscriptionPreferenceオブジェクトのコレクションを返します。SubscriptionPreferenceオブジェクトは、各サービスのユーザーのプリファレンスを表します。

50.3.2.3.2 メソッド: getScopeSubscriptionPreferences

このメソッドは、現在のユーザーのスコープレベルのサブスクリプション・プリファレンスを返します。

このメソッドは、主に、WebCenter Portalで役立ちます。Portal Frameworkアプリケーションの場合は、スコープは常にデフォルト・スコープ、つまり、アプリケーションであることが期待されます。デフォルト・スコープの場合、このメソッドはアプリケーションレベルのプリファレンスを返します。

入力パラメータ

入力パラメータscopeGuidには、Stringタイプの値を指定します。ユーザーのスコープレベルのプリファレンスが返されるスコープのGUIDを値により指定します。WebCenter Portalの場合、ここで参照されるスコープはポータルと同等です。

戻り値

SubscriptionPreferenceオブジェクトのコレクションを返します。各オブジェクトは、指定されたスコープ内での、各サービスに対する現在のユーザーのサブスクリプション・プリファレンスを表します。

50.3.2.3.3 メソッド: saveUserSubscriptionPreferences

アプリケーションでこのメソッドを使用すると、ユーザーのアプリケーションレベルのプリファレンスへの変更をコミットし、保存できます。たとえば、ユーザーが使用可能なすべてのサービスにサブスクライブしている場合、このメソッドをUI上の適切なコンポーネント(「適用」ボタンなど)にバインドすることによって、これらの変更をコミットできます。

入力パラメータ

なし

戻り値

なし

50.3.2.3.4 メソッド: saveScopeSubscriptionPreferences

アプリケーションでこのメソッドを使用すると、ユーザーのスコープレベルのプリファレンスへの変更をコミットし、保存できます。たとえば、ユーザーが指定のスコープ内で使用可能なすべてのサービスにサブスクライブしている場合、このメソッドをUI上の適切なコンポーネント(「適用」ボタンなど)にバインドすることによって、これらの変更をコミットできます。

入力パラメータ

入力パラメータscopeGUIDには、Stringタイプの値を指定します。値は、変更後のプリファレンスが保存されるスコープのGUIDを指定します。

戻り値

なし

50.3.2.3.5 メソッド: getSubscriptions

現在のユーザーのオブジェクトレベルのサブスクリプションのリストを返す、主要なメソッドです。このメソッドを使用して、ユーザーのオブジェクトレベルのサブスクリプションがすべて表示される、カスタムのサブスクリプション・ビューアUIを作成できます。

入力パラメータ

表50-8は、このメソッドでサポートされる入力パラメータとその説明を示しています。

表50-8 メソッドgetSubscriptionsでサポートされる入力パラメータ

入力パラメータ

説明

FilterOption

ユーザーのサブスクリプションの問合せ用のフィルタ基準が含まれるオブジェクト。FilterOptionでは、ポータル名(WebCenter Portalのみ)およびオブジェクト名に基づくフィルタ処理がサポートされます。

SortOption

サブスクリプションの問合せ用のソートまたは順序付けの条件が含まれるオブジェクト。オブジェクト名、スコープ名(WebCenter Portalのみ)またはサブスクリプションの作成日でのソートがサポートされます。

offset

この入力パラメータは整数を値として取ります。サブスクリプションの問合せ用のオフセット。これは、通常、ページ区切りが含まれる結果セットをフェッチするときに使用されます。

fetchSize

この入力パラメータは整数を値として取ります。1回のコールで返される最大行数。

戻り値

フィルタ基準およびソート・オプションで指定された順序の他の入力パラメータに一致する、Subscriptionオブジェクトのコレクションを返します。

50.3.2.3.6 メソッド: unsubscribe

特定のサブスクリプションのサブスクライブ解除または削除で使用されます。このメソッドは、通常、オブジェクトレベルのサブスクリプションが公開されるサブスクリプション・ビューアUIに、サブスクライブ解除のアクションを追加するときに使用されます。

アプリケーションレベルとポータルレベルまたはいずれかのレベルでの特定のサービスからのサブスクライブ解除は、SubscriptionPreference内に適切なフラグを設定し、それを前述の適切なsave*()メソッドで保存することによって実現できます。Unsubscribeメソッドは、サブスクリプション・ビューア機能で役立ちます。

入力パラメータ

表50-9は、このメソッドでサポートされる入力パラメータとその説明を示しています。

表50-9 メソッドUnsubscribeでサポートされる入力パラメータ

入力パラメータ

説明

scopeGuid

Stringタイプの値を指定します。ユーザーのスコープレベルのプリファレンスが返されるスコープのGUIDを値により指定します。WebCenter Portalの場合、ここで参照されるスコープはポータルと同等です。

serviceId

サブスクライブ解除されるサービスのID

有効なサービスIDには、次のものが含まれます。

- oracle.webcenter.collab.forum

- oracle.webcenter.doclib

objectId

サブスクライブ解除されるオブジェクトのGUID。

戻り値

なし

50.3.2.4 通知サブスクリプション・データ・コントロールのクラス

通知サブスクリプション・データ・コントロールは、戻り値として2つのクラスを公開しています。

- SubscriptionPreference

- Subscription

50.3.2.4.1 SubscriptionPreference

クラスSubscriptionPreferenceは、アプリケーションまたはスコープレベルのサブスクリプションをプリファレンスとして表し、対応するサービス(データ・コントロール上でsaveコールが続く)のサブスクリプションの設定および削除を可能にします。

表50-10は、SubscriptionPreferenceクラスに関連するプロパティとその説明を示しています。

表50-10 SubscriptionPreferenceクラスに関連するプロパティ

プロパティ

説明

hintsText

通知を生成するサービス内ですべての適用可能アクティビティ(説明)を連結したものが含まれる文字列

UIに表示してユーザーのサブスクライブ先を示す場合に役立ちます。

serviceIcon

サービスのアイコン

serviceId

対応するサービスのID

serviceName

サービスの表示名

subscriptionEnabled

サブスクリプションが有効かどうかを指定するフラグ

この属性には、UI上での選択/選択解除の操作をサポートするセッターもあります。

userOverrideAllowed

ユーザーがデフォルト値をオーバーライドできるかどうかを指定するフラグ

50.3.2.4.2 Subscription

クラスSubscriptionは純粋に読取り専用であり、ポータルレベル(WebCenter Portalのみ)およびオブジェクトレベルのサブスクリプションを表します。

表50-11は、Subscriptionクラスに関連するプロパティとその説明を示しています。

表50-11 Subscriptionクラスに関連するプロパティ

プロパティ

説明

creationDate

このサブスクリプションが作成された日時

objectId

オブジェクトレベルのサブスクリプションを表す場合はオブジェクトのID、それ以外の場合はnull。

objectName

オブジェクトレベルのサブスクリプションを表す場合はオブジェクトの名前、それ以外の場合はnull。

objectType

このサブスクリプションがオブジェクトレベルのサブスクリプションを表す場合はオブジェクト・タイプ(対応するサービスで定義される)、それ以外の場合はnull。

scopeGuid

スコープまたはポータルのGUID

scopeName

スコープまたはポータルの表示名

serviceId

このサブスクリプション・オブジェクトに対応するサービスのID

serviceName

サービスの名前

userId

このサブスクリプションを作成したユーザーのID

51 最近のアクティビティの統合

この章では、WebCenter Portal Frameworkアプリケーションに最近のアクティビティ機能を統合する方法について説明します。この機能を使用すると、最新の更新をアプリケーションで表示できます。

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

- 第51.1項「最近のアクティビティの概要」

- 第51.2項「最近のアクティビティの基本構成」

- 第51.3項「最近のアクティビティの詳細情報」

注意:

最近のアクティビティの使用の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「最近のアクティビティの使用」を参照してください。

51.1 最近のアクティビティの概要

最近のアクティビティを使用すると、ユーザーは、最新の変更をアプリケーションで表示できます。たとえば、ドキュメント・ツールにより、最近のアクティビティでドキュメント・ライブラリへの最新の変更の表示に使用される情報が自動的に生成されます。これは、アプリケーションの特定の箇所に行われた追加または変更を素早く、簡単に表示する方法が必要なユーザーにとって有用です。

最近のアクティビティでは、次のポータル・オブジェクトの作成、変更および削除が追跡されます。

- ドキュメント

- お知らせ

- ディスカッション・フォーラム

- ページ

- リスト定義

詳細は、第32章「お知らせの統合」、第33章「ディスカッションの統合」、第28章「ドキュメントの統合」および第17章「ページの実行時作成および管理の有効化」を参照してください。

APIを介して、ビジネス・アクティビティの表示を制御できます。

関連項目:

APIを使用したビジネス・アクティビティの追跡の詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

この項には次のサブセクションが含まれます:

- 第51.1.1項「最近のアクティビティの理解」

- 第51.1.2項「実行時の処理」

51.1.1 最近のアクティビティの理解

最近のアクティビティは、様々なツールとサービスに対する最近の変更のサマリー情報を提供するものです。タスク・フローの上部にあるリストから時間の範囲を選択することによって、最近と見なされる時間の範囲を指定できます。記録されるアクティビティには、ページ、ドキュメント、ディスカッション・フォーラムなどの追加や変更が含まれます。

デフォルトでは、最近のアクティビティは、ドキュメント、お知らせ、ディスカッションおよびページと連携して機能します。最近のアクティビティが追跡する対象を絞り込むことができます。この設定の詳細は、第51.3項「最近のアクティビティの詳細情報」を参照してください。また、第4章「WebCenter Portalのツールとサービス用アプリケーションの準備」では、Oracle WebCenter Portalのツールとサービスの使用方法を学習できます。

最近のアクティビティ機能とアクティビティ・ストリーム機能(詳細は、第37.1.1.1項「アクティビティ・ストリーム」を参照)は似ています。両方により統合されたツールとサービスのアプリケーション・アクティビティが追跡されますが、アクティビティ・ストリームでは、より幅広いツールとサービスが追跡されます。たとえば、最近のアクティビティは、ドキュメント、お知らせ、ディスカッションおよびページを追跡します。アクティビティ・ストリームは、これらに加えて、ピープル、Wikiおよびブログも追跡します。アクションを実行した人に関係なく、最近のアクティビティによりアクティビティが追跡されます。ユーザーの接続により実行されるアクティビティがアクティビティ・ストリームにより追跡され、アクティビティ実行者に関する情報が含まれます。最近のアクティビティには名前が含まれません。

最近のアクティビティとアクティビティ・ストリームとの間の基本的な相違点は、次のようにまとめられます。最近のアクティビティはアプリケーションにおける処理内容の概要を提供し、アクティビティ・ストリームはユーザーの接続における処理内容の概要を提供します。

51.1.2 実行時の処理

実行時に、最近のアクティビティ・タスク・フローは、アプリケーションで構成され実行されているツールとサービスに関する最新情報をフェッチします。図51-1は、実行時の最近のアクティビティ・タスク・フローの例を示し、アプリケーションで昨日から発生している次のアクティビティを表示しています。

- ドキュメント・ツールを使用して1つのドキュメントがアップロードまたは追加されています

- ディスカッション・ツールを使用して5つのディスカッション・スレッドが変更または追加されています

- お知らせツールを使用して1つのお知らせが変更または追加されています

時間範囲の選択肢(「今日」、「昨日から」など)は、設計時に最近のアクティビティの時間範囲パラメータ値に設定されたデフォルト値に基づいて表示されます(表51-1を参照)。

最近のアクティビティは、WebCenterの検索機能を使用して、指定された期間のアクティビティを問い合せます。検索機能は、WebCenter Portalのドキュメント、お知らせ、ディスカッションおよびページの各ツールとサービスで実装されています。これらのサービスは、アプリケーションで構成されている場合、最近のアクティビティの問合せに応答し、検索基準に関するアイテムを返します。問合せへのレスポンス(検索結果)は、検索条件のDCMI_MODIFIED > [start time]に常に基づきます。ここで、start timeは、設計時に「タスク・フロー・バインディングの編集」ダイアログで構成した期間の1つです。実行時には「表示」リストで期間を選択できます。

図51-1 実行時の最近のアクティビティ

51.2 最近のアクティビティの基本構成

この項では、最近のアクティビティ機能をPortal Frameworkアプリケーションに追加する方法について説明します。

この項には次のサブセクションが含まれます:

- 第51.2.1項「最近のアクティビティの接続の設定」

- 第51.2.2項「最近のアクティビティの設計時の追加」

- 第51.2.3項「最近のアクティビティ・タスク・フローのパラメータの変更」

- 第51.2.4項「最近のアクティビティのセキュリティの設定」

51.2.1 最近のアクティビティの接続の設定

最近のアクティビティ用に固有の接続を設定する必要はありません。追跡するWebCenter Portalコンポーネントが構成されていることのみ確認する必要があります。

51.2.2 最近のアクティビティの設計時の追加

最近のアクティビティを使用するには、そのタスク・フローをアプリケーションに追加する必要があります。追跡するコンポーネントがアプリケーションに1つ以上あることを確認します。「WebCenter Portal - サービス・カタログ」には使用可能な最近のアクティビティ・タスク・フローが1つあり、これをアプリケーションに追加できます。

最近のアクティビティでは、アプリケーション内の他のコンポーネントを自動的に認識し、これらのコンポーネント内での最近のアクティビティが検索されます。ただし、最近のアクティビティが含まれるアプリケーションを実行する前に、監視するコンポーネントがアプリケーションに1つ以上含まれていることを確認しておく必要があります。

最近のアクティビティ・タスク・フローをアプリケーションに追加するには:

1. 第4.2.1項「ツールとサービスを利用するようにアプリケーションを準備する方法」の手順に従い、セキュリティを実装しカスタマイズ可能なページをPortal Frameworkアプリケーションで作成します。

2. カスタマイズ可能なページのソースを開きます。

3. 最近のアクティビティが追跡するコンポーネントが1つ以上アプリケーションに含まれていることを確認します。

注意:

これらのコンポーネントを1つも含まないアプリケーションを実行すると、最近のアクティビティから次のエラーが表示されます

Warning: Unable to obtain recent activity data。

4. 「リソース・パレット」で「WebCenter Portal - サービス・カタログ」を開き、「タスク・フロー」フォルダを開きます。

5. 「最近のアクティビティ」をクリックしてページの<af:form>タグの後にドラッグし、「リージョン」を選択します。

図51-2 「タスク・フロー・バインディングの編集」ダイアログ

図51-3の「タスク・フロー・バインディングの編集」ダイアログでは、実行時に表示する時間の範囲の値を設定できます。この時間の範囲によって、次の項で示すように、表示するアクティビティが制御されます。これらのパラメータを空のままにすると、最近のアクティビティでは、デフォルト値が使用されます。

表51-1は、これらのパラメータで使用可能な値について説明しています。第51.3.1項「最近のアクティビティの動作の調整」に記載されているように、この表に示されているデフォルト値はadf-config.xmlファイルに基づきます。

表51-1 最近のアクティビティの時間範囲パラメータ値

パラメータ

値

groupSpace

このパラメータはnullのままにします。

注意: このパラメータはWebCenter Portalでのみ使用され、スコープが設定されていないアプリケーションには関係しません。

timePeriodShort

デフォルト値: Today

指定できる値: Today、Yesterdayまたは分単位の時間

timePeriodMedium

デフォルト値: Since Yesterday

指定できる値: Today、Yesterdayまたは分単位の時間

timePeriodLong

デフォルト値: 10080

(10080分は7日に等しいです。)

指定できる値: Today、Yesterdayまたは分単位の時間

timePeriodLongest

デフォルト値: 43200

(43200分は30日に等しいです。)

指定できる値: Today、Yesterdayまたは分単位の時間

図51-3 最近のアクティビティの「タスク・フロー・バインディングの編集」ダイアログの例

6. 「OK」をクリックします。図51-4に示すとおり、バインディングはページ上に表示されます。

図51-4 「デザイン・ビュー」内のページ上の最近のアクティビティ・タスク・フロー

7. プロジェクトを保存し、ページをブラウザで実行します。

注意:

最近のアクティビティ・タスク・フローをページに追加すると、groupSpaceというタスク・フロー・パラメータが表示されます。このパラメータのデフォルト値はnullで、アプリケーション全体で最近のアクティビティを検索するようタスク・フローに指示します。

51.2.3 最近のアクティビティ・タスク・フローのパラメータの変更

最近のアクティビティ・タスク・フローには、必須のタスク・フロー・バインディング・パラメータとオプションのタスク・フロー・バインディング・パラメータがあります。タスク・フローをページ上にドロップした時点またはページ上にタスク・フローを配置した後にパラメータを調整できます。パラメータの変更の詳細は、第32.2.2.3項「お知らせタスク・フローのパラメータを変更する方法」を参照してください。パラメータの変更手順は、すべてのタスク・フローで同一です。

51.2.4 最近のアクティビティのセキュリティの設定

最近のアクティビティでは、分析の対象となる基礎のコンポーネントに適用されるセキュリティを使用します。そのため、コンポーネントから返される情報には、現在のユーザーが少なくとも表示権限を持つコンテンツのみが含まれます。たとえば、ドキュメント・ライブラリ内のコンテンツを表示できる権限を持たないユーザーの場合、最近のアクティビティ・ビューに、最近追加されたドキュメントは表示されません。同様に、パブリック・ユーザーには、パブリックに公開されているコンポーネントについて返されるアクティビティのみが表示され、表示に認証を必要としません。

51.3 最近のアクティビティの詳細情報

タスク・フロー・パラメータに加えて、最近のアクティビティの動作も調整できます。この項ではその調整の実行方法について説明します。また、最近のアクティビティのRSSニュース・フィードを取得する方法についても説明します。

この項には次のサブセクションが含まれます:

- 第51.3.1項「最近のアクティビティの動作の調整」

- 第51.3.2項「最近のアクティビティのRSSニュース・フィードURLの取得」

51.3.1 最近のアクティビティの動作の調整

タスク・フローをアプリケーションに追加した後で、様々な最近のアクティビティのパラメータを変更できます。タスク・フローをページに追加すると、 ADF META-INFフォルダ内の「記述子」の下にある「アプリケーション・リソース」パネルにあるadf-config.xmlファイルに次のエントリも自動的に追加されます。

<recentactivityC:adf-recent-activity-config
xmlns="http://xmlns.oracle.com/webcenter/recentactivity/config">
<display-properties numServiceRows="25" shortPeriod="TODAY"
mediumPeriod="YESTERDAY" longPeriod="10080"
longestPeriod="43200"/>
<services-filter>
<exclude/>
</services-filter>
</recentactivityC:adf-recent-activity-config>

このエントリ内で、表51-2に示されている設定を変更できます。

表51-2 adf-config.xmlファイル内の最近のアクティビティ設定

設定

説明

numServiceRows

デフォルト値: 25

1つのコンポーネントに対して表示される最大行数。

最近のアクティビティの結果がこの値を超える場合は、この値を上限として、最新の結果が返されます。たとえば、最近変更されたドキュメントの数が32で、この設定が25の場合、最新の25個のみが結果に表示されます。

shortPeriod

デフォルト値: Today

表51-1を参照してください。この設定はtimePeriodShortタスク・フロー・パラメータと同じであり、タスク・フロー・パラメータが指定されない場合に使用されます。

mediumPeriod

デフォルト値: Yesterday

表51-1を参照してください。この設定はtimePeriodMediumタスク・フロー・パラメータと同じであり、タスク・フロー・パラメータが指定されない場合に使用されます。

longPeriod

デフォルト値: 10080(過去7日間)

表51-1を参照してください。この設定はtimePeriodLongタスク・フロー・パラメータと同じであり、タスク・フロー・パラメータが指定されない場合に使用されます。

longestPeriod

デフォルト値: 43200(過去30日間)

表51-1を参照してください。この設定はtimePeriodLongestタスク・フロー・パラメータと同じであり、タスク・フロー・パラメータが指定されない場合に使用されます。

services-filter

デフォルト値: null

追跡しないコンポーネントをフィルタ処理で除外するには、このタグを使用します。次の例では、ページ・サービスへの変更を、最近のアクティビティの表示から除外します。

<services-filter>
<exclude>oracle.webcenter.page</exclude>
</services-filter>

デフォルトでは、除外されるコンポーネントはありません。

他のコンポーネントをフィルタ処理で除外するには、表F-7でリストされているサービスID値を使用します。

51.3.2 最近のアクティビティのRSSニュース・フィードURLの取得

WebCenter Portal機能をPortal Frameworkアプリケーションで公開できます。Portal Frameworkアプリケーション・ユーザーは、RSSニュース・フィードを通じて、特定のポータルで行われていることを知ることができます。

ユーザーがポータル内から最近のアクティビティを表示できるようにするには、最近のアクティビティのRSSニュース・フィードを構成します。最近のアクティビティのポータルRSSニュース・フィードURLを取得するには、次のいずれかのWebCenter Portal APIを使用します。

- getServiceRssFeedURL

- GetServiceRssFeedURLbyGUID

RSSフィードのURLを取得するには、ポータルを(名前またはGUIDで)特定し、必要なコンポーネントを(サービスIDで)指定する必要があります。最近のアクティビティのサービスIDは、GroupSpaceWSClient.RECENT_ACTIVITY_SERVICE_IDです。これらのAPIを使用する方法の詳細は、第56.1.5.3.9項「WebCenter PortalのツールとサービスのためのRSSフィードURLの取得」を参照してください。

52 RSSの統合

Portal Frameworkアプリケーション内でRSS 2.0形式のフィードを追加および表示できます。この章では、設計時にRSSビューアを統合する方法について説明します。

この章には次の項が含まれます。

- 第52.1項「RSSの概要」

- 第52.2項「RSSの基本構成」

RSSフィードの管理および使用の詳細は、次を参照してください。

- Oracle Fusion Middleware Oracle WebCenter Portalの管理の「RSSの管理」

- Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「ポータルへのRSSフィードの追加」

- 『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「RSSフィードの監視」

52.1 RSSの概要

Really Simple Syndication (RSS)は、1つの場所、つまりニュース・リーダーから、多くの異なるWebサイトのコンテンツにアクセスする手段を提供するものです。WebCenter Portalは、様々なWebCenter PortalコンポーネントからのRSSフィードを表示するRSSビューアおよび機能が含まれる、機能を備えています。RSSビューアを使用すると、Portal Frameworkアプリケーション内で、異なるWebサイトからの外部ニュース・フィードを表示できます。

注意:

RSSは、ポータルではディスカッション・フォーラム内でサポートされますが、Portal Frameworkアプリケーションではディスカッション・フォーラム内ではサポートされません。

この項では、RSSの機能と要件の概要を説明します。次のサブセクションが含まれます:

- 第52.1.1項「RSSの理解」

- 第52.1.2項「RSSの要件」

- 第52.1.3項「実行時の処理」

52.1.1 RSSの理解

アプリケーション・ページで外部ソースからの新しいフィードを表示するには、図52-1に示すように、RSSビューア・タスク・フローを追加し、必要なRSSフィードのURLを指定します。アプリケーション・ユーザーは実行時にRSSフィードを表示できるようになります。

セキュアなアプリケーション・コンテンツへのアクセスを実現するために、RSSビューア・タスク・フローでは、外部アプリケーションとの統合をサポートして、リモート・フィードで認証する資格証明マッピング・サービスを提供します。外部アプリケーションの使用の詳細は、第74.13項「外部アプリケーションの使用」を参照してください。

図52-1 設計時に指定するRSSの詳細

52.1.2 RSSの要件

RSS機能には、バックエンド・サーバーは必要ありません。これを使用するために、接続を設定する必要はありません。ただし、必要に応じて、RSSのプロキシ・サーバーを設定できます。

52.1.3 実行時の処理

設計時に指定したRSSフィード・ロケーションのRSSニュース・フィードが、実行時に表示されます。ユーザーは、アプリケーション・ページの右上隅にあるRSSアイコンをクリックして、RSSフィード・ロケーションとして指定されているURLを開くことができます。

アプリケーション・ページの変更権限を持つユーザーであれば、RSSビューア・パラメータにアクセスして、レンダリングされるRSSフィードのURLを変更できます。

実行時のRSSの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「RSSフィードの監視」を参照してください。

図52-2 実行時のRSSフィード

52.2 RSSの基本構成

この項では、RSSのプロキシ・サーバーを設定する方法と、アプリケーションにRSSビューア・タスク・フローを追加する方法について説明します。

この項には次のサブセクションが含まれます:

- 第52.2.1項「RSSのプロキシ・サーバーの設定」

- 第52.2.2項「RSS機能の設計時の追加」

- 第52.2.3項「RSSビューアのセキュリティの設定」

52.2.1 RSSのプロキシ・サーバーの設定

RSS機能には、接続は必要ありません。RSSフィードのURLをそのまま指すことができます。しかし、イントラネットおよびアプリケーションにとって外部のRSSフィードを指す場合は、アプリケーションのプロキシ・サーバーを設定する必要がある可能性があります。

RSSのプロキシ・サーバーを設定するには:

1. Oracle JDeveloperで、「ツール」メニューから「プリファレンス」を選択します。

2. 「プリファレンス」ダイアログで、左側のリストを下方向にスクロールし、「Webブラウザとプロキシ」を選択します。

3. 右ペインの「Webブラウザとプロキシ」で、「HTTPプロキシ・サーバーを使用」を選択し、プロキシ・サーバーのホスト名とポート番号を入力し、例外を入力します(図52-3)。

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

図52-3 プロキシ・サーバーの設定

52.2.2 RSS機能の設計時の追加

この項では、RSSビューア・タスク・フローについて説明し、これをアプリケーションに追加する方法について説明します。

この項には次のサブセクションが含まれます:

- 第52.2.2.1項「RSSビューア・タスク・フローについて」

- 第52.2.2.2項「RSSビューア・タスク・フローをアプリケーションに追加する方法」

- 第52.2.2.3項「RSSビューア・タスク・フローのパラメータを変更する方法」

52.2.2.1 RSSビューア・タスク・フローについて

WebCenter PortalにはRSSビューア・タスク・フローが含まれており、これをアプリケーションに追加すると、ユーザーはRSSフィードにアクセスできるようになります。複数のインスタンスのタスク・フローをアプリケーションに追加し、「タスク・フロー・バインディングの編集」ダイアログを使用して、複数のRSSフィード・ロケーションを指すことができます。

52.2.2.2 RSSビューア・タスク・フローをアプリケーションに追加する方法

RSSビューア・タスク・フローをアプリケーションに追加するには:

1. 第4.2.1項「ツールとサービスを利用するようにアプリケーションを準備する方法」の手順に従い、必要に応じてセキュリティを実装し、カスタマイズ可能なページをアプリケーションで作成します。

2. RSSビューア・タスク・フローを追加するカスタマイズ可能なページを開きます。

3. 使用するRSSフィードが認証を要求する場合は、外部アプリケーションを作成します。認証が要求されない場合は、手順4に進みます。

注意:

外部アプリケーションの詳細は、第74.13項「外部アプリケーションの使用」を参照してください。

4. 「リソース・パレット」で「WebCenter Portal - サービス・カタログ」を開き、「タスク・フロー」フォルダを開きます。

5. 「RSSビューア」をクリックし、「デザイン・ビュー」内のページにこれをドラッグし、「リージョン」を選択します。

6. 「タスク・フロー・バインディングの編集」ダイアログで、RSSフィードのURLを指定します。RSSフィードの認証で外部アプリケーションを使用する場合は、図52-4に示すように、その名前(アプリケーション表示名ではなく、アプリケーション名)を指定します。

図52-4 RSSの「タスク・フロー・バインディングの編集」ダイアログの例

表52-1では、RSSビューア・タスク・フロー・バインディング・パラメータの設定可能な値について説明しています。

表52-1 RSSビューア・タスク・フローのバインディング・パラメータ

パラメータ

値

rssFeedLocation

RSSフィードのロケーションを入力します。たとえば、Oracleプレス・リリースのRSSフィードを使用するには、次のように入力します。

${'http://www.oracle.com/rss/rss_ocom_pr.xml'}

extAppId

RSSフィードでPortal Frameworkアプリケーションを認証する場合に使用する外部アプリケーションの名前を入力します。RSSフィードが認証を要求しない場合は、RSSフィード用の外部アプリケーションを設定し識別する必要はありません。

7. 「OK」をクリックしてページを保存します。ページにバインディングが表示されます。
例52-1に示すように、ページの「ソース」タブを見ている場合、ページ・ソースでRSSビューア・タスク・フローを確認できます。

例52-1 ページ・ソースのRSSビューア・タスク・フロー

<af:form id="f1">
<af:region value="#{bindings.RSSViewerTaskFlow1.regionModel}" id="r1"/>
<af:region value="#{bindings.RSSViewerTaskFlow2.regionModel}" id="r2"/>
</af:form>

52.2.2.3 RSSビューア・タスク・フローのパラメータを変更する方法

RSSビューア・タスク・フローには、必須およびオプションのタスク・フロー・バインディング・パラメータがあります。

パラメータ値は、ページにタスク・フローをドロップするときまたはページにタスク・フローを配置した後に調整できます。

1. ページの下部にある「バインディング」タブ(「ソース」タブの横)をクリックします。

2. 、「実行可能ファイル」の下に追加したRSSビューア・タスク・フローがリストされます(図52-5)。

図52-5 ページ・データ・バインディング定義

3. タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログで、必要に応じてバインディング・パラメータ値を変更します。

5. 終了したら、「OK」をクリックします。

6. ページを保存して実行し、結果を表示します。

52.2.3 RSSビューアのセキュリティの設定

パブリックRSSフィードでRSSを使用する場合、セキュリティを設定する必要はありません。認証を要求するRSSフィードでRSSを使用する場合は、RSSフィードへのアクセス用のユーザー資格証明またはパブリック資格証明を設定するアプリケーション用の外部アプリケーションを設定できます。

注意:

アプリケーション・コンテンツの保護のために、ニュース・リーダーはBasic認証をサポートする必要があります。

外部アプリケーションの使用の詳細は、第74.13項「外部アプリケーションの使用」を参照してください。

認証ユーザーにのみ、セキュアなRSSフィードが表示されます。ユーザーが認証されず、RSSフィードが保護されていない場合、外部アプリケーションでパブリック資格証明を指定しないかぎり、RSSビューアにコンテンツは表示されません。

注意:

RSSビューア・タスク・フローをPortal Frameworkアプリケーションに追加すると、authenticated-roleに表示権限が自動的に追加されます。

第IX部

WebCenter PortalおよびPortal Frameworkアプリケーションの拡張

第IX部の内容は次のとおりです。

- 第53章「Oracle WebCenter Portal REST APIの使用」

- 第54章「他のOracleアプリケーションの統合」

- 第55章「JDeveloperを使用したWebCenter Portalのコンポーネントの開発」

- 第56章「WebCenter Portalとの統合」

53 Oracle WebCenter Portal REST APIの使用

この章では、サーバー・データを取得、追加、変更および削除できるようにするWebCenter PortalのREST APIについて説明します。

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

- 第53.1項「RESTの概要」

- 第53.2項「ユーザー名ベースのセキュリティ・トークンの暗号化の理解」

- 第53.3項「RESTを使用するメリット」

- 第53.4項「WebCenter PortalのREST APIの概要」

- 第53.5項「リンク・モデルの理解」

- 第53.6項「itemsハイパーメディアの理解」

- 第53.7項「HTTPを使用したハイパーメディアのナビゲーション」

- 第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」

- 第53.9項「CMIS REST APIのセキュリティに関する考慮事項」

- 第53.10項「共通タイプの理解」

- 第53.11項「キャッシュの管理」

- 第53.12項「プロキシ・サーバーの構成」

- 第53.13項「WebCenter PortalのREST APIの例」

この章には、WebCenter Portal REST APIの使用方法を示すいくつかのサンプルが含まれています。他のサンプルについては、次の場所にある、Oracle Technology Network (OTN)のOracle WebCenter Portalのデモとサンプルのページを参照してください:

http://www.oracle.com/technetwork/middleware/webcenter/ps3-samples-176806.html

53.1 RESTの概要

REpresentational State Transfer (REST)とは、分散型のリソースを均一なインタフェースで使用可能にするためのアーキテクチャ・スタイルであり、この均一なインタフェースには、Uniform Resource Identifier (URI)、明確に定義された操作、ハイパーメディア・リンクおよび制限された一連のメディア・タイプが含まれます。通常、これらの操作には読取り、書込み、編集および削除が含まれ、メディア・タイプにはJSONおよびXML/ATOMが含まれます。

RESTコマンドでは、リクエストとして標準HTTPメソッドを使用して、使用するリソースを指定します。すべてのリクエストは、操作のステータスを含むレスポンスを返します。リクエストによりオブジェクトが取得、作成または更新されると、レスポンスにはそのオブジェクトの標準表現が格納されます。

RESTは、クライアント・マシンからもその他のサーバーからも複数のクライアントをサポートし、どのクライアントまたは開発テクノロジ(Java、JavaScript、Ruby on Rails、PHP、.Netなど)からも使用できます。

ヒント:

RESTの概要を理解するには、WikipediaのRepresentational State Transferに関する記事(http://en.wikipedia.org/wiki/Representational_State_Transfer)を参照してください。

RESTは、通常、クライアント側でスクリプトされ、サーバー側アプリケーションからのデータをやり取りする機能が必要なリッチ・インターネット・アプリケーション(RIA)で使用されます。たとえば、WebCenter iPhone AppはWebCenter Portal REST APIを使用して、WebCenter Portalアプリケーションとやり取りします。ネイティブのiPhoneクライアントはObjective-Cで作成されており、REST APIにより、クライアントはアプリケーション・データを送信および取得できます。

53.2 ユーザー名ベースのセキュリティ・トークンの暗号化の理解

セキュリティを向上するために、すべてのURIには、hrefとtemplateのどちらの属性でも、認証ユーザー名に基づくセキュリティ・トークン・パラメータ(utoken)が含まれています。

セキュリティ生成アルゴリズムは、ユーザー名とともにランダムに生成されたsaltを使用します。saltにより、暗号化で使用したパラメータのセキュリティが侵害されても、既存のトークンを無効化し、新しいトークンを生成できます。最も重要なことは、ユーザー・トークンの生成アルゴリズムの一部としてユーザー名が使用されているため、セキュリティ侵害の発生時に、saltにより、すべてのユーザー名を変更しなくて済むことです。

saltは、マップo.webcenter.jf.csf.map内の資格証明ストア・フレームワーク(CSF)にキーuser.token.saltに対して格納されます。このキー(およびトークンの暗号化で使用した他のキー)の値は、Oracle Enterprise ManagerでCSFにアクセスすることによって変更できます。

注意:

暗号化キーの値を変更すると、ユーザー名ベースの既存のすべてのセキュリティ・トークンがただちに無効になります。アルゴリズムのパラメータがセキュリティ侵害された場合など、特別な事情がある場合のみ、これらの値を変更します。

53.3 RESTを使用するメリット

RESTおよびRESTfulスタイルのソフトウェア・アーキテクチャのメリットについて、多くの優れた記事が公開されています。このようなメリットの一部を、次に示します。

- Hypermedia As The Engine Of Application State (HATEOAS)リンクを使用したREST APIへのアクセスは、APIの堅牢性の向上に役立ちます。クライアントはサーバーから返されるURIのみを使用するため、サーバーがURIの形式を変更しても、クライアントは引き続き正しく動作します。第53.5項「リンク・モデルの理解」も参照してください。

- 標準のHTTPプロトコルの使用により、ネットワーク・インフラストラクチャは必要に応じてRESTリクエストをキャッシュでき、クライアントとサーバーの両方の負荷が低減されます。第53.11項「キャッシュの管理」も参照してください。

- ステートレスなRESTリクエストにより、各リクエストは任意の数の異なるサーバーによって処理され、スケーラビリティに役立ちます。

- 標準のHTTPプロトコルの使用により、多様なクライアントが、特殊なライブラリを必要とすることなく、REST APIを操作できます。

53.4 WebCenter PortalのREST APIの概要

モバイル・アクセスの有効化に加え、WebCenter Portal REST APIを使用すると、Ajax、JavaScript、JSONなどのWeb 2.0テクノロジを使用して、豊富でインタラクティブなブラウザベースのユーザー・インタフェースを作成したり、Oracle WebCenter Portal FrameworkおよびWebCenter Portalのデータにアクセスし変更したりできます。一般に、WebCenter RESTコマンドは、より自然で使いやすい、SOAPスタイルWebサービス・アプローチの代替を提供します。

表53-1では、WebCenter Portalのツールとサービス機能用に提供されているOracle WebCenter Portal REST APIについて説明しています。

表53-1 REST APIでサポートされるWebCenterツールとサービス機能の一覧

REST API

説明

章

ディスカッション

クライアントが、ディスカッション・フォーラム、トピックおよびメッセージを投稿、読取り、更新および削除できます。

第33.3.8項「ディスカッションREST APIの使用」

リスト

クライアントが、指定されたポータルに関連付けられたすべてのリストの参照、検索条件によるリスト列の検索、新規リストの作成、リスト行の追加、更新および削除、および同様のリスト関連タスクを実行できます

第49.4項「リストREST APIの使用」

ピープル・コネクション

クライアントが、プロファイル・データの表示、コネクション・リスト、フィードバックおよびメッセージの管理、ユーザー、リストおよびポータルでの新規アクティビティの作成とアクティビティの表示を実行できます。

第42章「ピープル・コネクションREST APIの使用」

WebCenter Portal

クライアントが、ポータル・メタデータの取得、およびポータル・リストとリスト・アイテムの表示、作成、更新および削除を実行できます。開発者はポータル・メンバーシップ情報も取得できます。

第56.2項「WebCenter Portal REST APIの使用」

コンテンツ管理

Content Management Interoperability Services (CMIS) RESTfulサーバー・バインディングを使用して、Content Management Virtual Content Repository (CM VCR)へのアクセスを提供します。

第31章「Content Management REST API」

アクティビティ・グラフ

基になるアクティビティ・グラフ・エンジンを使用して、接続、ポータルおよびアイテムに関する推奨事項を取得できます。

第46.3.2項「アクティビティ・グラフREST APIの使用」

イベント

指定されたポータルに関連付けられたカレンダ・イベントにアクセスできます。

第48.3項「イベントREST APIの使用」

フィードバック

クライアントが、ソーシャル・ネットワーク・アプリケーションでフィードバックを作成、読取りおよび削除できます。

第42章「フィードバックREST API」

検索

検索を投稿、確認、更新および削除します。検索のキーワードと範囲を指定できます。たとえば、iPhoneではすべてのポータル、ドキュメントおよびWikiページ内の「smith」を検索できます。

第45.3.4項「検索REST APIの使用」

タグ

クライアントが、タグおよびタグ付けしたアイテムをポスト、読取り、更新および削除できます。

第44.3.2項「タグREST APIの使用」

ナビゲーション

ナビゲーションREST APIを使用して、ナビゲーションを表示する独自のインタフェースを作成します。

注意: ナビゲーションREST APIは、この章に記載されているリソース索引を共有しません。

第10.12.2項「ナビゲーションREST APIの使用」

パーソナライズ

パーソナライズ・コンダクタにアクセスできます。

第72章「コンダクタAPIリファレンス」

ページレット

リモートWebサービスは、リソースとページレットに関する情報を取得できます。ページレットをプロキシ設定されていないページに注入して、「ページレット・プロデューサ」がOracle WebCenter Interaction、Oracle WebLogic Portal、またはその他のサードパーティ・ポータルのポートレット・プロバイダとして動作できるようにします。

第62.7.2.2項「RESTを使用したページレットへのアクセス」

注意:

次のURNに対するXSDファイルを示します。

urn:oracle:webcenter:activities:stream -> activitystream.xsd
urn:oracle:webcenter:messageBoard -> wall.xsd
urn:oracle:webcenter:people -> people.xsd
urn:oracle:webcenter:people:invitations -> people.xsd
urn:oracle:webcenter:people:person -> people.xsd
urn:oracle:webcenter:search:results -> search.xsd
urn:oracle:webcenter:spaces -> spaces.xsd

<WCP_ORACLE_HOME>/webcenter/schemas/ディレクトリにあります。

53.5 リンク・モデルの理解

ハイパーメディアは、2つの最も成功したWebベースの形式、HTMLとATOMのコアです。HTMLとATOMを使用して、消費者は、たとえば、ニュース記事へのリンクをクリックするなどして、リンクを介して他のハイパーメディア・ドキュメントへ移動できます。

ハイパーメディアは、RESTfulアプリケーションの状態を扱います(HATEOAS: Hypermedia As The Engine Of Application Stateと呼ばれています)。

注意:

アプリケーションの状態を定義するHATEOASの例え:

お気に入りのブラウザで確定申告しているものとします。ブラウザが機能停止したときには、W-2データの入力を終え、控除へ移動したところでした。失われた状態(控除の画面にいたがまだデータを入力する必要があったという事実)は、入力したw-2データではなく、アプリケーションの状態です(つまり、現在の状態から変更された状態)。

HATEOASによって、この状態(アプリケーションの状態)が完全にハイパーメディアに取得されます。アプリケーションの状態とはアプリケーション内での場所であり、アプリケーションに入力したデータではありません。この方法のメリットの1つは、クライアントとサーバーが自分の状態を意識する必要がないため、単純化されることです。リクエストを処理するために必要なすべての状態情報がリンクに含まれるため、ブラウザが再起動してリンクに戻ったときに、ユーザーは税金プロセスの同じ場所にいます。

RESTfulサービスへの一連の最上位レベルURIエントリ・ポイントがある場合、これらのエントリ・ポイントを超えたすべてのやり取りは、レスポンス形式で返されるハイパーメディア・リンクで行われます。このリンク中心の方法により、クライアントとサーバーURLとの結付きがあまり密接にならずにすみます。クライアントはサーバーから与えられたURLを使用しているため、サーバーURLが形式を変更しても、クライアント・コードが中断することはありません。

このリンク・モデルを理解することで、サービスから返されるデータを使用したREST APIのナビゲーション方法を理解できます。

この項では、WebCenterのRESTfulサービスが使用するハイパーメディア・リンク・モデルについて説明します。次のサブセクションが含まれます:

- 第53.5.1項「リソース索引の使用」

- 第53.5.2項「リンクの構造」

53.5.1 リソース索引の使用

WebCenterでは、リソース索引が、すべての認証アクセスの出発点です。リソース索引によって、一連の最上位レベルURIエントリ・ポイントへのアクセスが提供されます。これによって、使用可能なすべてのWebCenter RESTfulサービスへとつながります。リソース索引URIは、理解する必要がある唯一のURIです。

ヒント:

RESTクライアントは、カスタムRESTリクエストの生成に役立ちます。たとえば、Firefox RESTClientアドオンは次の場所で入手できます。

http://restclient.net/

他の類似のRESTクライアントも容易に取得できます。

WebCenterリソース索引URIは、次のとおりです。

http://host:port/rest/api/resourceIndex

注意:

リソース索引へのアクセスには、常に認証が必要です。ただし、次のURIを使用して、(必要に応じて)CMISリソース・エントリ・ポイントに匿名でアクセスできます。

http://host:port/rest/api/cmis/repository

第53.9項「CMIS REST APIのセキュリティに関する考慮事項」および第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」も参照してください。

WebCenter Portal REST APIを使用する場合は、まず最初に、GETリクエストをリソース索引に送信します。レスポンスは、使用可能なサービスとリクエストのメディア・タイプによってそれぞれ異なります。例53-1は、JavaScript(および場合によりクライアント側のDojoなどのスクリプト・ライブラリ)を使用してリソース索引用のJSONデータを取得するAjaxリクエストを作成した場合に、レスポンスがどのように見えるかを示しています。これは簡略化したサンプル・レスポンスであり、実際のレスポンスに実在するすべてのリンクが含まれているわけではありません。

例53-1 リソース索引のGETへのレスポンス

{
"resourceType": "urn:oracle:webcenter:resourceindex",
"links": [
{
"template": "opaque-template-uri",
"resourceType": "urn:oracle:webcenter:messageBoard",
"href": "opaque-uri",
"capabilities": "urn:oracle:webcenter:read"
},
{
"resourceType": "urn:oracle:webCenter:cmis",
"href": "opaque-uri",
"capabilities": "urn:oracle:webcenter:read"
},
{
"template": "opaque-template-uri",
"resourceType": "urn:oracle:webcenter:discussions:forums",
"href": "opaque-uri",
"capabilities": "urn:oracle:webcenter:read"
},
{
"resourceType": "urn:oracle:webcenter:resourceindex",
"rel": "self",
"href": "http://host:port/rest/api/resourceIndex",
"capabilities": "urn:oracle:webcenter:read"
},
{
"template": "opaque-template-uri",
"resourceType": "urn:oracle:webcenter:activities:stream",
"href": "opaque-uri",
"capabilities": "urn:oracle:webcenter:read"
},
{
"template": "opaque-template-uri",
"resourceType": "urn:oracle:webcenter:people:person",
"capabilities": "urn:oracle:webcenter:read"
},
{
"template": "opaque-template-uri",
"resourceType": "urn:oracle:webcenter:feedback",
"href": "opaque-uri",
"capabilities": "urn:oracle:webcenter:read"
},
{
"template": "opaque-template-uri",
"resourceType": "urn:oracle:webcenter:spaces",
"href": "opaque-uri",
"capabilities": "urn:oracle:webcenter:read"
},
{
"template": "opaque-template-uri",
"resourceType": "urn:oracle:webcenter:people",
"href": "opaque-uri",
"capabilities": "urn:oracle:webcenter:read"
}
]
}

リソース索引データで返されるリンクを調べることによって、使用するリソース・タイプのURIを見つけて、個々のサービスのURIエントリ・ポイントを取得できます。目的の操作を実行できるようになるまで、ハイパーメディア内を移動し続けることが可能です。例53-2は、リソース索引のJSONデータを指定して得られるURIを見つけるメソッドを示しています。

例53-2 リソース索引内の特定のサービスのURIの検出

/* Parse the resourceIndex to find the specified URL and
* return it.
*
* @Param jsonData the JSON data retrieved from calling
*        the /rest/api/resourceIndex URL.
* @Param strResourceType the resource type of the URL
*        you want to retrieve from the resourceIndex data.
*        E.g., 'urn:oracle:webcenter:activities:stream'
*/
function getResourceURL(jsonData, strResourceType)
{
// Using the HATEOAS model, we browse the returned links
// looking for the one with the correct resource type.
for (var i = 0; i < data.links.length; i++) {
if (data.links[i].resourceType == strResourceType) {
return data.links[i].href;
}
}
}

53.5.2 リンクの構造

ハイパーメディア・リンクのresourceType、relおよびcapabilities属性は、クライアントがURIを直接解析する必要なく、使用するURI (hrefまたはtemplate)を決定できるようにするメタデータを提供します。URIは不透明で、メタデータによって特定の環境でどのリンクが役立つかが決まります。

例53-3および例53-4は、それぞれXMLとしてハイパーメディア・リンクの構造とJSONドキュメント・フラグメント内のハイパーメディア・リンクの構造を示しています。

例53-3 XMLドキュメント・フラグメント内のリンク

<links>
<link href="opaque-URI"
template="opaque-template-URI (optional)"
rel="rel-name"
title="human-readable-title (optional)"
type="media-type (optional)"
resourceType="resource-type"
capabilities="operation"/>
...repeat as needed...
</links>

例53-4 JSONドキュメント・フラグメント内のリンク

"links": [
{
"href":"opaque-URI",
"template":"opaque-template-URI (optional)",
"rel":"rel-name",
"title":"human-readable-title (optional)",
"type":"media-type (optional)",
"resourceType":"resource-type",
"capabilities":"operation"
},
...repeat as needed...
]

複合語のフィールド名、要素名および属性名は、サービス作成者の直接管理下にない仕様に準拠する場合を除いて、キャメル・ケースで書式設定されます。頭字語は、大文字と小文字が必要に応じて調整されて、通常の単語として扱われます(たとえば、fooXmlまたはxmlFoo)。例53-5および例53-6を参照してください。

例53-5 XMLネーミング規則

<myElement>text</myElement>

例53-6 JSONのネーミング規則

{"myElement": "text"}

この項では、ハイパーメディア・リンクの様々な属性について説明します。この項の内容は、次のとおりです。

- 第53.5.2.1項「リソース・タイプ」

- 第53.5.2.2項「リレーションシップ」

- 第53.5.2.3項「機能」

- 第53.5.2.4項「メディア・タイプ」

- 第53.5.2.5項「テンプレート」

53.5.2.1 リソース・タイプ

resourceTypeリンク属性は、リンクが指すリソースのタイプを指定します。クライアントは、resourceTypeを使用して、GETとPOSTの予期されるレスポンス本文およびPOSTとPUTの受入可能なリクエスト本文を決定する必要があります。

詳細は、第53.7項「HTTPを使用したハイパーメディアのナビゲーション」を参照してください。

53.5.2.2 リレーションシップ

relリンク属性は、リンク・オブジェクトと現在のオブジェクト(リンクのリストが含まれるオブジェクト)の関係を指定します。この属性の値は、現在サポートされている次の値が空白で区切られたリストです。

- self: リンク・オブジェクトは現在のオブジェクトです

- related: リンク・オブジェクトは現在のオブジェクトに関係します

- via: リンク・オブジェクトは現在のオブジェクトの情報ソースです

- alternate: リンク・オブジェクトは現在のオブジェクトの代替です(通常、現在のオブジェクトを表示するHTMLページなど、別の形式の同じオブジェクト)

- urn:oracle:webcenter:parent: リンク・オブジェクトは現在のオブジェクトの親です。つまり、リンク・オブジェクトが現在のオブジェクトを所有します

注意:

一部のWebCenter機能のREST APIによっては、relリンク属性が追加で含まれる場合があります。詳細は、特定の各機能のREST APIに関する説明を参照してください。

53.5.2.3 機能

capabilitiesリンク属性は、リンク・リソースでサポートされるメソッドを指定します。

クライアントがそのリソースにアクセスできる場合のみ、リンクが返されます。レスポンス形式で返されるリンクでクライアントが実行できる機能は、ユーザー認証の影響を受ける可能性があります。通常、現在の認証ユーザーが実行権限を持ち、リソースがサポートしている機能のみが返されます。

リンクがない場合、クライアントはリソースにアクセスできません。リンクに機能がない場合は、クライアントに返らないため、クライアントにはそのリンクで何かを(読取りさえ)実行する権限がありません。

ハイパーメディア・リンクの機能ベース表現は、クライアントが実行できると予想される操作の範囲を明確に示します。これによって、クライアントは、関連するUIを動的に構成して、最適な全体のユーザーの操作性を提供できます。

この属性の値は、次の値が空白で区切られたリストです。

- urn:oracle:webcenter:create: HTTP動詞のPOSTにマップします

- urn:oracle:webcenter:read: HTTP動詞のGETにマップします

- urn:oracle:webcenter:update: HTTP動詞のPUTにマップします

- urn:oracle:webcenter:delete: HTTP動詞のDELETEにマップします

注意:

最上位レベルのresourceIndexリンクは、ユーザーが別の機能で認証されている場合でも、read機能のみを返します。

注意:

OPTIONSを使用して許可されたHTTP動詞のリソースを問合せると、一般にリソースがサポート可能な動詞が返され、ユーザーのアクセス権は考慮されません。リンクの機能属性は、現在のユーザーが現在のリソースに対して実行できることを正確に示します。OPTIONSは、現在のユーザーに許可されているより多くのHTTP動詞を返すことがあります。

53.5.2.4 メディア・タイプ

typeリンク属性は、リンク・オブジェクトがサポートするメディア・タイプを指定します。

CMISを除くすべてのRESTサービスは、XML (application/xml)とJSON (application/json)の両メディア・タイプをサポートします。CMISが現在サポートしているのは、ATOMのみです。CMIS REST APIの詳細は、『Oracle Fusion Middleware Content Management REST Service開発者ガイド』を参照してください。

53.5.2.5 テンプレート

templateリンク属性は、クライアントがhref URIではなくURIテンプレートを使用して、リンク・オブジェクトのパラメータ化した値を提供できることを指定します。リンクは、少なくともhrefまたはtemplate URIを含む必要がありますが、両方を含むこともできます。

一部のハイパーメディア・リンクではリクエスト問合せパラメータがサポートされており、これを使用して、クライアントは異なる方法でリンクを構成できます。クライアントがURI形式を理解し、手動でURIを作成する必要はなく、URIテンプレートが使用されます。これらのテンプレートにより、クライアント・コードでは、URIの動作を正確に理解しなくても、URIにデータを簡単に挿入できます。これによってハイパーメディアURIの不透明性が維持され、URI形式の変更からクライアントが保護されます。

例53-7は、様々なリクエスト問合せパラメータを含むURIテンプレートを示しています。

例53-7 URIテンプレート

http://host:port/.../lists?startIndex={startIndex}&itemsPerPage={itemsPerPage}&q={searchTerms}&projection={projection]

WebCenter Portal REST APIでは、多くの業界URIテンプレート・スキームに従う、単純なスロット置換構文を使用します。

たとえば、例53-7のテンプレートを使用して1ページ目に10リスト・アイテム(デフォルト)を表示するには、例53-8に示すように、クライアントはstartIndexパラメータに値1を、itemsPerPageパラメータに値10を入力します。

例53-8 パラメータ値を含むURIテンプレート

http://host:port.../lists?startIndex=1&itemsPerPage=10

注意:

テンプレートを使用可能にするには、事前に未使用のパラメータをすべて削除する必要があります。クライアントは未処理のテンプレートを、それを生成したサービスへ送信できない場合があります。送信すると、未定義の動作が生じ、一般にステータス・コード500が返されます。

クライアントは、サーバーに送信する前に、テンプレートを処理して有効なURI形式にする必要があります。クライアントは、スロット・トークンに置き換わる値を正しくURIエンコードして、スロットを適切な値に置換する必要があります。クライアントが、テンプレート内の1つ以上のスロットに対して適切な値を持たない場合は、スロット・トークンを空の文字列で置換する必要があります。

パラメータ値内の特殊文字または予約文字は、URLエンコードする必要があります。たとえば、Günterという名前のユーザーをリストで検索するには、例53-9に示すように、üをURLエンコードする必要があります。

例53-9 URIテンプレート内の特殊文字のエンコード

http://host:port.../lists?q=G%FCnter

共通のリクエスト問合せパラメータ

多くのリソースは、共通のリクエスト問合せパラメータ・セットをサポートしています。たとえば、エンティティのコレクションを取得する場合は、結果の数量または詳細を制限することによって、結果セットの内容を変更することが一般的です。RESTフレームワークでは、次のリクエスト・パラメータを使用して結果の範囲を指定し、セキュリティを提供します。

- startIndex: 結果セットに含める、最初に一致する結果のインデックスを指定します(0-n ... 0から始まる)。これはページ区切りに使用されます。

- itemsPerPage: レスポンスで返す結果の最大数を指定します(1-n)。これはページ区切りに使用されます。

- q: 実装固有の検索を指定します。検索は次の形式で指定できます(角カッコ[]はオプション値を表します)。

[[field1:[operand]][:]value1[;field2:operand:value2]]

例:

&q=login:equals:monty
&q=title:contains:issues
&q=creator:equals:monty;description:contains:Urgent

各リソースが使用するqパラメータの形式は同じですが、検索の実装方法は、検索対象のリソースによってそれぞれ異なります。各リソースにおける検索の実装方法の詳細は、それぞれのサービスの章を参照してください。

- projection: 変数の再帰深度、フィールドまたは属性のフィルタリングなど、モデル表示の実装固有のプロジェクション用に予約されています。有効な値はsummaryまたはdetailsです。
たとえば、リストのコレクションに対してsummaryのプロジェクションをリクエストすると、タイトル、説明およびハイパーメディアのリンクのみが返されます。detailsのプロジェクションをリクエストすると、サーバーは、各リストの列メタデータがすべて含まれるリストのコレクションを返します。この場合、処理時間が余分にかかったり、サーバー上でデータベース問合せが必要になることがあります。

次のリクエストの例では、深いオブジェクト・グラフが含まれるレスポンス・エンティティが返されます。

http://host:port/...lists&projection=details

- data: このパラメータでは、カンマ区切りのデータ・セットおよびアイテムのリストを使用できます。このパラメータを使用して、クライアントは受け取るデータを指定できます。たとえば、モバイル・デバイス・アプリケーションは、このパラメータを使用して、返されるXMLデータの量を制限できます。projectionとdataの両方の問合せ文字列パラメータが存在する場合は、dataパラメータを使用して返すデータを決定します。データ・パラメータとして定数dataを指定すると、リソースに対してすべての標準情報が返されます。

特定のリソースでのこれらのパラメータのサポートの詳細は、該当のサービスの章を参照してください。

53.6 itemsハイパーメディアの理解

レスポンスの実際のコンテンツは、itemsのコレクションで構成されています。これは、前述のlinksセクションと同じレベルです。(各レスポンス内の最上位レベル・タグを含めて)各アイテムには、リソース固有のコンテンツと形式に加えて、1つの共通属性(resourceType)があります。resourceTypeの詳細は、特定のサービスに関する章を参照してください。

エンティティ/アイテムのコレクションを示す例は、例53-13を参照してください。例53-15は、単一のエンティティ/アイテムを示しています。

53.7 HTTPを使用したハイパーメディアのナビゲーション

HTMLまたはATOMフィードで参照およびやり取りする場合と同様の方法で、RESTサービス・ハイパーメディアを移動できます。やり取りは、HTTPメソッドを使用して、リンクで識別されるリソースで行われます。RESTサービスは、レスポンス・コードおよびレスポンス本文をクライアントに返し、クライアントはレスポンス内のハイパーメディアを使用してその後のやり取りを行います。

表53-2は、不透明なリソースURIの作成時に従う一般的なパターンを示しています。resourceTypeは、HTTPメソッドがリソースのコレクションで動作するのか個々のリソースで動作するのかによって異なります。

表53-2 HTTPメソッド

HTTPメソッド

リソースのコレクションの場合のレスポンス

個々のリソースの場合のレスポンス

GET

リソース・コレクションのコンテナを返します(200 HTTPレスポンス・コード)

リソースを返します(200 HTTPレスポンス・コード)

PUT

リソースのコレクションを更新できません(405 HTTPレスポンス・コード)

リソースを更新して返します(200 HTTPレスポンス・コード)

POST

コレクション内に新規リソースを作成して返します

注意: 201または204 HTTPレスポンス・コードを返します。返されるコードは、新規作成されたオブジェクトが、直接アドレス可能であるかどうかによって異なります。たとえば、アクティビティは個別にアドレスを指定できないため、204のコンテンツなしというレスポンス・コードが返されます。

個々のリソース内にリソースを作成できません(405 HTTPレスポンス・コード)

DELETE

リソースのコレクションを削除できません(405 HTTPレスポンス・コード)

リソースを削除します(204 HTTPレスポンス・コード)

コレクション・リソースでは、通常、コレクションの読取り(GET)およびそのコレクションの従属要素の作成(POST)がサポートされます。個々のリソースでは、通常、リソースの読取り(GET)、更新(PUT)および削除(DELETE)がサポートされます。

HTTPレスポンス・ステータス・コード

表53-3は、返される可能性があるレスポンス・ステータス・コードを示しています。

表53-3 HTTPレスポンス・ステータス・コード

HTTPレスポンス・ステータス・コード

説明

200

OK。GETまたはPUTが正常終了しました。リソース表現がレスポンス本文として伴います。

201

作成済。POSTが正常終了しました。新しく作成されたリソースのロケーション・ヘッダーを伴います。

204

コンテンツなしまたはコンテンツを返さないリクエスト。たとえば、リンクできないオブジェクトを作成する場合です。DELETEが正常終了しました。

400

不正なリクエスト。URIが不正な形式だったか、処理できませんでした。たとえば、IDが正しく形式化されていなかったか、IDがPOSTのURIに提供されていませんでした。

401

未許可。クライアントは、資格証明を送信して再試行できます。問題の診断に役立つフォルト・レスポンス本文を伴う場合があります。

403

禁止。クライアントには、リソースの作成や削除など、特定のアクションを実行できる権限がありません。同じユーザーとしての再認証は役立ちません。問題の診断に役立つフォルト・レスポンス本文を伴う場合があります。

404

見つかりません。IDで特定のリソースを参照しましたが、リソースはありません。

405

メソッドは許可されていません。リクエストされたリソースで有効なメソッドのリストが含まれます。

406

受入れ不可。クライアントが送信した受入れヘッダー・メディア・タイプは要求された操作でサポートされていません。問題の診断に役立つフォルト・レスポンス本文を伴う場合があります。

409

競合。おそらくリソースIDが使用中であるか、またはエンティティが更新時に別のプロセスによって変更されました。問題の診断に役立つフォルト・レスポンス本文を伴う場合があります。

422

不正なエンティティ本体。本体内のデータが構文的に正しい場合でも、有効でなかったり、処理できませんでした。たとえば、行を更新する際にデータが無効な場合です。

500

内部サーバーのエラー。サーバーに予期せぬ状態が発生し、リクエストを処理できませんでした。

501

実装されていません。サーバーでは、リクエストを実行するために必要な機能がサポートされていません。これは、サーバーがリクエスト・メソッドを認識せず、リソースに対してこれをサポートできない場合のレスポンスです。

53.8 WebCenter Portal REST APIのセキュリティに関する考慮事項

すべてのWebCenter REST URIは、(保護されているWebページと同様に)保護されているリソースを参照し、アクセスするには認証が必要です。

注意:

認証アクセス・ルールの1つの例外は、CMISリソースへのアクセスです。CMISリソースは、次のCMIS URIエントリ・ポイントを介して匿名でアクセスできます。

http://host/port/rest/api/cmis/repository

第53.9項「CMIS REST APIのセキュリティに関する考慮事項」も参照してください。

Basic認証を使用したリクエストによりこの認証に合格するか、またはクライアントとWebCenter RESTサービスがシングル・サインオンを使用するように構成できます。シングル・サインオンの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「SSLの構成」を参照してください。

Basic認証では、ユーザーのパスワードはプレーン・テキストで送信されます。このタイプの認証を使用する場合は、SSLを使用した接続の保護を考慮する必要があります。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「SSLの構成」を参照してください。

セキュリティを向上するために、すべてのURIには、hrefとtemplateのどちらの属性でも、セキュリティ・トークン・パラメータが含まれています。セキュリティ・トークンはユーザー・スコープです。つまり、認証ユーザーに基づいており、有効範囲は認証ユーザーで、そのユーザーのセッションでブックマークに指定したり、キャッシュしたりできます。このようなセキュリティ・トークンは、クロスサイト・リクエスト・フォージェリ(CSRF)攻撃の回避に役立ちます。

例:

<link
template="opaque-template-uri/@me?startIndex={startIndex}&itemsPerPage={itemsPerPage}
&token=generated-token" resourceType="urn:oracle:webcenter:messageBoard"
href="opaque-uri/@me?token=generated-token" capabilities="urn:oracle:webcenter:read"
/>

注意:

セキュリティ・トークンは、認証やアイデンティティ伝搬では使用されません。

WebCenter Portal REST APIは、認証ユーザーのアイデンティティに基づいて動作します。たとえば、ポータルのREST APIは、ポータルに関する情報のみを返し、ユーザーがアクセスできるポータルのみを変更できます。

53.9 CMIS REST APIのセキュリティに関する考慮事項

CMIS REST APIが使用する認証スキームは、他のWebCenter Portal REST APIが使用するものとは異なります。他のWebCenter Portal REST APIでは、認証されていないアクセスは許可されず、アクセスを許可する前にユーザーに認証を要求しますが、CMIS REST APIでは、認証されていないアクセスでも許可されます。

ドキュメントが認証情報を要求して、その情報を受信しなかった場合(認証されていないユーザーがアクセスしていたため)、404エラーが返されます。これは必ずしもドキュメントが見つからないことを意味するのではなく、(認証されていない)ユーザーがそのドキュメントにアクセスするための適切な権限を持たないことを意味します。リクエストが成功するためには、現在のユーザーを識別するBasic認証ヘッダーが含まれている必要があります。

CMISはContent Management Interoperability Serviceの略であり、エンタープライズ・コンテンツ管理システムの標準のRESTインタフェースです。詳細は『Oracle Fusion Middleware Content Management REST Service開発者ガイド』を参照してください。

53.10 共通タイプの理解

この項では、複数のWebCenter Portal REST APIで共有される共通タイプについて説明します。

- 第53.10.1項「共通タイプ」

- 第53.10.2項「ポータブル連絡先タイプ」

53.10.1 共通タイプ

共通タイプは、WebCenter Portal REST APIで使用されるオブジェクトを、一貫性のある方法で参照します。

この項には次のサブセクションが含まれます:

- 第53.10.1.1項「personReference」

- 第53.10.1.2項「groupSpaceReference」

53.10.1.1 personReference

これは、システム内のユーザーを表す汎用データ・タイプです。様々なAPIで使用されて、たとえば、メッセージ・ボードやフィードバック・メッセージの作成者またはユーザーの上司や直属の部下を識別します。これは、次の要素で構成されています。

- guid: ユーザーのGUID

- id: ユーザーのログインID

- displayName: ユーザーの表示名

personReferenceには、ユーザーのプロファイル・アイコンへのリンクも含まれています。値(small、mediumまたはlarge)を指定することによって、アイコンのサイズを制御できます。

personReferenceタイプが含まれる場所によっては、生成するレスポンスの関連するREST APIへのリンクを返すこともできます。たとえば、personReferenceタイプが、メッセージ・ボード・レスポンス内の作成者として含まれている場合は、メッセージ・ボード・サービスへのリンクを含みます。

53.10.1.2 groupSpaceReference

これは、ポータルを表す汎用データ・タイプです。様々なAPIで使用されて、たとえばアクティビティ・ストリーム内では、特定のアクティビティが発生したポータルを識別します。次の要素で構成されています。

- guid: ポータルのGUID

- name: ポータルの名前

- displayName: ポータルの表示名

groupSpaceReferenceには、htmlリンク、restリンクおよびアイコン・リンクも含まれています。

53.10.2 ポータブル連絡先タイプ

ポータブル連絡先タイプによって、Web上でアドレス帳および友人リストにアクセスする標準の手段が提供されます。ポータブル連絡先タイプは、ピープル・コネクション・サービスのプロファイル・コンポーネントが使用します。

注意:

これらのタイプは、WebCenterのポータル連絡先タイプに基づいています。追加データを含む可能性があります。

この項には次のサブセクションが含まれます:

- 第53.10.2.1項「nameポータブル連絡先タイプ」

- 第53.10.2.2項「addressポータブル連絡先タイプ」

- 第53.10.2.3項「organizationポータブル連絡先タイプ」

- 第53.10.2.4項「valueポータブル連絡先タイプ」

53.10.2.1 nameポータブル連絡先タイプ

これは、ユーザーの名前に関する情報を提供するポータブル連絡先タイプです。これは、次の要素で構成されています。

- formatted: ユーザーの書式設定されたフル・ネーム、たとえばMichael David Jones Ph.D.

- familyName: ユーザーの姓、たとえばJones

- givenName: ユーザーの名、たとえばMichael

- honorificSuffix: ユーザーの敬称、たとえばEsq.やPh.D.

- initials: ユーザーの先頭の頭文字、たとえばM. D.

- maidenName: ユーザーの旧姓

ユーザー・リポジトリ構成およびデータによっては、要素の一部が表示されないことがあります。

53.10.2.2 addressポータブル連絡先タイプ

これは、ユーザーの住所に関する情報を提供するポータブル連絡先タイプです。これは、次の要素で構成されています。

- formatted: 書式設定された完全な住所

- type: 住所のタイプ(例: 自宅、会社)

- streetAddress: 番地

- poBox: 私書箱番号

- locality: 市町村

- region: 都道府県

- postalCode: 郵便番号

- country: 国

ユーザー・リポジトリ構成およびデータによっては、要素の一部が表示されないことがあります。

53.10.2.3 organizationポータブル連絡先タイプ

これは、ユーザーの組織的な所属に関する情報を提供するポータブル連絡先タイプです。次の要素で構成されています。

- name: 組織の名前

- employeeNumber: ユーザーの従業員番号

- employeeType: ユーザーの従業員タイプ。

- department: ユーザーが所属する組織内の部門

- defaultGroup: ユーザーが所属するデフォルト・グループ

- title: 組織内でのユーザーの役職

- description: 組織内でのユーザーの役割の説明

- expertise: 組織内でのユーザーの専門

- startDate: ユーザーが組織に加わった日付

ユーザー・リポジトリ構成およびデータによっては、要素の一部が表示されないことがあります。

53.10.2.4 valueポータブル連絡先タイプ

これは、多様な連絡先情報のデータが格納される汎用オブジェクトです。これは、次の要素で構成されています。

- primary: これが、この人に関するこのタイプの情報の主要部分であるかどうかを識別するブール値。主要要素は存在しない場合があり、同じタイプのデータに対して複数の値がある場合のみ関係します。

- value: このタイプの値

- type: 情報のタイプ。有効なタイプは次のとおりです。

- standard: 有効な値はwork、home、other

- phoneNumber: 有効な値はwork、home、fax、pager、mobile

- photos: 有効な値はthumbnail

53.11 キャッシュの管理

クライアント側の開発者は、リクエストとレスポンスでHTTPキャッシュ・ヘッダーを処理する方法を理解している必要があります。最終変更日を持つ個々のリソースは、エンティティ・タグも返します。エンティティ・タグを使用すると、特定のエンティティを効率的に取得できます。キャッシュにおけるエンティティ・タグの使用の詳細は、Hypertext Transfer Protocol仕様を参照してください。

http://www.w3.org/Protocols/

53.12 プロキシ・サーバーの構成

この項では、Apacheサーバー上に単純な応答再書込みを行うリバースHTTPプロキシを設定する方法を説明します。プロキシ・サーバーは、通常、ブラウザ・クライアントからのXMLHttpRequest (XHR)コールに関連する、クロスドメイン・リクエストの問題を回避するために使用されます。これらのコールは、通常、多機能な対話型のクライアント側インタフェースを作成する、Ajax開発技術に関係します。REST APIは、通常、このようなクライアント側開発のシナリオで使用されます。

注意:

この項では、Apacheにプロキシ・サーバーを設定する単純な例を説明します。詳細は、http://httpd.apache.org/docsで入手できるApache Serverドキュメントを参照してください。プロキシ・サーバーに、Oracle HTTP Server (OHS)も使用できます。詳細は、『Oracle Fusion Middleware Oracle HTTP Server管理者ガイド』を参照してください。

Apacheでプロキシ・サーバーを設定する基本的な手順は次のとおりです。

1. Apacheサーバーへのアクセスを取得します。Apache 2.2.7以降のバージョンをお薦めします。

2. そのサーバーに、mod_substituteモジュールおよびmod_proxyモジュールがインストールされていることを確認します。Apacheのバージョン2.2.7以降にはmod_substituteがデフォルトで組み込まれていることに注意してください。mod_sedまたはmod_line_editも使用できますが、これらの構成はOracleではサポートされていません。

3. httpd.confまたは仮想ホスト構成ファイルを開き、次の行を追加し、適切な箇所を使用しているサーバー名またはサーバー情報で置き換えます。

ProxyRequests           Off
LoadModule              substitute_module       modules/mod_substitute.so
SetOutputFilter         SUBSTITUTE

ProxyPass               /rest/api/              http://myhost:8888/rest/api/
ProxyPassReverse        /rest/api/              http://myhost:8888/rest/api/
Substitute              s|myhost|yourhost|n

ProxyPass               /pathname/rest/api/        http://myhost:8888/rest/api/
ProxyPassReverse        /pathname/rest/api/        http://myhost:8888/rest/api/
Substitute              s|myhost:8888/rest/api|yourhost/pathname/rest/api|n

注意:

このシナリオ例では、2つのサーバーがプロキシ設定されます。次の2つのコールは、実際にはこれら2つの異なるサーバーと通信していますが、クライアントからは同じサーバー・ホストと通信しているように見えます。

http://myhost/rest/api/resourceIndex

http://myhost/pathname/rest/api/resourceIndex

4. Apacheサーバーを再起動します。たとえば、Linuxでは次の操作を実行します。

sudo /etc/init.d/httpd restart

一部のLinuxの構成では、この方式によるApacheとのプロキシ設定には、httpdからのアウトバウンド接続を許可するためにSELinuxが必要であることに注意してください。SELinuxのGUI内またはコマンド・ラインを介してhttpd_can_network_connect flagを有効化すると設定できます。

開発者のヒント:

httpd.confでUserDir権限を設定して、ユーザーが各自のpublic_htmlディレクトリにこれらのファイルをドロップできるようにします。たとえば、http://host/~yourname/sample.htmlをヒットしてサンプル・アプリケーションにアクセスし、サンプル・アプリケーションでhttp://host/rest/api/resourceIndexをXHRコールします。

53.13 WebCenter PortalのREST APIの例

この項では、WebCenter Portal REST APIの使用方法のサンプルを示します。次のサブセクションが含まれます:

- 第53.13.1項「メッセージ・ボード・ハイパーメディアのナビゲーション」

- 第53.13.2項「アクティビティ・ストリーム・データの表示」

- 第53.13.3項「ユーザー・ステータスの更新」

53.13.1 メッセージ・ボード・ハイパーメディアのナビゲーション

この項では、RESTサービス・ハイパーメディアのナビゲーション方法のサンプルを示します。サンプルは、メッセージ・ボード上のメッセージの読取り、別のユーザーのメッセージ・ボードへのメッセージの投稿、不要なメッセージの削除およびメッセージ・ボードのメッセージをフィルタ処理する方法を示しています。

この項には次のサブセクションが含まれます:

- 第53.13.1.1項「リソース索引へのアクセス」

- 第53.13.1.2項「メッセージの読取り」

- 第53.13.1.3項「新しいメッセージの作成」

- 第53.13.1.4項「メッセージの更新」

- 第53.13.1.5項「メッセージの削除」

- 第53.13.1.6項「メッセージのフィルタ処理」

53.13.1.1 リソース索引へのアクセス

最初は必ずリソース索引にアクセスします(例53-10)。

例53-10 リソース索引へのアクセス

GET /resourceIndex

このリクエストは、メッセージ・ボードのエントリ・ポイントを含めて、RESTfulサービスへの最上位レベルURIエントリ・ポイントのリストを返します(例53-11)。

例53-11 リソース索引へのアクセスに対するレスポンス

200 OK
Accept: application/json;charset=UTF-8

{
"resourceType": "urn:oracle:webcenter:resourceindex",
"links": [
{
"resourceType": "urn:oracle:webcenter:resourceindex",
"capabilities": "urn:oracle:webcenter:read",
"rel": "self",
"href": "http://host:port/rest/api/resourceIndex"
},
{
"resourceType": "urn:oracle:webcenter:messageBoard",
"capabilities": "urn:oracle:webcenter:read",
"href": "opaque-messageBoard-URI"
},
...repeating for other services...
}

このリストを調べて、メッセージ・ボードへのアクセスに必要なURIを見つけることができます。resourceTypeがurn:oracle:webcenter:messageBoardであるリンクを探します。このリンクのhrefが、メッセージ・ボードへのアクセスに必要なものです。

他のリソースのrel、typeおよびtemplateも、正しいリンクを見つける上で役立ちます。

53.13.1.2 メッセージの読取り

メッセージ・ボードの正しいURIがわかると、そのURIにGETリクエストを送信してメッセージを読み取ることができます(例53-12)。

メッセージ・ボード上のメッセージを読み取るには、ログインする必要があります。

例53-12 メッセージ・ボードのメッセージの取得(GET)

GET /opaque-messageBoard-URI

レスポンスは、メッセージ・ボード上のすべてのメッセージに関する情報を提供します(例53-13)。

例53-13 メッセージ・ボードのメッセージの取得に対するレスポンス

200 OK
Accept: application/json;charset=UTF-8

{
"resourceType": "urn:oracle:webcenter:messageBoard",
"links": [
{
"resourceType": "urn:oracle:webcenter:messageBoard",
"capabilities": "urn:oracle:webcenter:read urn:oracle:webcenter:create",
"rel": "self",
"href": "opaque-messageBoard-URI"
}
]
"items": [
{
"resourceType": "urn:oracle:webcenter:messageBoard:message",
"links": [
{
"resourceType": "urn:oracle:webcenter:messageBoard:message",
"capabilities": "urn:oracle:webcenter:read urn:oracle:webcenter:delete",
"rel": "self",
"href": "opaque-message-URI"
}
]
"id": "89add57c-7a35-4d35-b24f-ea9259612eb8",
"body": "What's up?  It's been a while.  Some of us are going to Conner O'Neal's after work.  Want to go?",
"created": "2009-09-10T11:18:46.696-0700",
"author": {
"id": "carl",
"displayName": "carl",
"guid": "649A27F09D5C11DEBFAA799CBD41D9B8",
"links": [
{
"resourceType": "urn:oracle:webcenter:people:person",
"capabilities": "urn:oracle:webcenter:read",
"rel": "via",
"href": "opaque-person-URI"
},
{
"resourceType": "urn:oracle:webcenter:messageBoard",
"capabilities": "urn:oracle:webcenter:read urn:oracle:webcenter:create",
"href": "opaque-messageBoard-URI-for-Carl"
},
{
"type": "text/html",
"resourceType": "urn:oracle:webcenter:spaces:profile",
"capabilities": "urn:oracle:webcenter:read",
"rel": "alternate",
"href": "opaque-profile-URI"
}
]
},
}
],
"startIndex": 0,
"itemsPerPage": 1,
}

レスポンスから、メッセージ・ボードに対してreadおよびcreateの機能を持つことがわかります。したがって、コンテンツの読取りおよび新しいメッセージの投稿が行えます。

さらに、レスポンスにはアイテムのコレクションも含まれます(この例では、コレクションは1つのアイテムのみで構成されています)。これらのアイテムは、resourceTypeがurn:oracle:webcenter:messageBoard:messageである、メッセージ・ボード上のメッセージです。メッセージのcapabilities属性は、この特定のメッセージについて、メッセージ・ボードからの読取りおよび削除が行えることを示しています。

各メッセージについて、レスポンスは次の情報を提供します。

- id: メッセージの識別子

- body: メッセージのテキスト

- author: メッセージの作成者。author要素も、別の複数の要素で構成されます。

- id: メッセージの作成者の識別子またはユーザー名

- displayName: 表示用に書式設定された作成者の名前

- guid: 作成者のグローバル一意識別子

author要素の中には、3つのリンクのコレクションもあります。これらのリンクのresourceTypeは、次のとおりです。

- urn:oracle:webcenter:people:person: メッセージの作成者に関する情報を表示できます

- urn:oracle:webcenter:messageBoard: 作成者のメッセージ・ボードでメッセージの読取りまたは作成を行えます

- urn:oracle:webcenter:spaces:profile: 作成者のプロファイルのtext/htmlドキュメントを読み取れます

53.13.1.3 新しいメッセージの作成

自分のメッセージ・ボード上のメッセージを読み、Carlのメッセージ・ボードに返信するとします。このためには、Carlのメッセージ・ボードのURIにPOSTリクエストを送信する必要があります。

正しいURIを見つけるには、resourceTypeがurn:oracle:webcenter:messageBoardである、authorリンクのhrefを使用します。

POSTリクエストにより、投稿先のリソースの従属リソースが作成されます。この例ではmessageBoardに投稿しているため、その従属リソースであるmessageを投稿する必要があります(例53-14)。

例53-14 別のユーザーのメッセージ・ボードへのメッセージの作成(POST)

POST opaque-messageBoard-URI-for-Carl
Accept: application/json;charset=UTF-8
Content-Type: application/json;charset=UTF-8

{
"body": "sure; see you guys at 6."
}

レスポンスは、Carlのメッセージ・ボードにメッセージが作成されたことを示しています(例53-15)。

例53-15 別のユーザーのメッセージ・ボードへのメッセージの作成に対するレスポンス

201 Created
Content-Type: application/json;charset=UTF-8

{
"id": "36b8464f-afda-44b5-90ad-8ecedcb040a3",
"body": "sure; see you guys at 6.",
"created": "2009-09-10T12:21:09.785-0700",
"resourceType": "urn:oracle:webcenter:messageBoard:message",
"links": [
{
"resourceType": "urn:oracle:webcenter:messageBoard:message",
"capabilities": "urn:oracle:webcenter:read urn:oracle:webcenter:update urn:oracle:webcenter:delete",
"rel": "self",
"href": "opaque-message-URI"
},
"author": {
"id": "mike",
"displayName": "mike",
"guid": "649657609D5C11DEBFAA799CBD41D9B8",
"links": [
{
"resourceType": "urn:oracle:webcenter:people:person",
"capabilities": "urn:oracle:webcenter:read",
"rel": "self",
"href": "opaque-person-URI"
},
{
"resourceType": "urn:oracle:webcenter:messageBoard",
"capabilities": "urn:oracle:webcenter:read urn:oracle:webcenter:create",
"href": "opaque-messageBoard-URI"
},
{
"type": "text/html",
"resourceType": "urn:oracle:webcenter:spaces:profile",
"capabilities": "urn:oracle:webcenter:read",
"rel": "alternate",
"href": "opaque:profile:URI"
}
]
}
]
}

53.13.1.4 メッセージの更新

PUTリクエストはPOSTリクエストによく似ていますが、親リソースではなく、編集されているリソースで実行される点が異なります。

Carlのメッセージ・ボードにメッセージを作成した場合、先のPOSTリクエストに対するレスポンスから、メッセージに関してread、updateおよびdeleteの機能を持つことがわかります。また、hrefでメッセージのURIもわかります。たとえば、急な仕事が入り、もう少し残ることが必要になったとします。メッセージのURIを使用して、PUTリクエストを送信してメッセージを更新することで、遅れることをCarlに伝えることができます(例53-16)。

例53-16 メッセージの更新(PUT)

PUT opaque:message:URI
Accept: application/json;charset=UTF-8
Content-Type: application/json;charset=UTF-8

{
"body": "working late; see you guys at 7."
}

レスポンスはPOSTのレスポンスとほぼ同じですが、bodyに更新されたメッセージがある点が異なります(例53-17)。

例53-17 メッセージの更新

200 OK
Content-Type: application/json;charset=UTF-8

{
"id": "36b8464f-afda-44b5-90ad-8ecedcb040a3",
"body": "working late; see you guys at 7.",

...deleted for brevity...

}

53.13.1.5 メッセージの削除

リソースのdelete機能を持っている場合、リソースに対してDELETEリクエストを実行すると、そのリソースは削除されます。Carlのメッセージ・ボード上のメッセージへのリンクは、deleteをサポートしています。

Carlのメッセージ・ボードに残したメッセージを削除することにします(例53-18)。

例53-18 メッセージの削除(DELETE)

DELETE opaque:message:URI

レスポンスは、ステータス・コード204のみです(例53-19)。

例53-19 メッセージの削除に対するレスポンス

204 NO CONTENT

注意:

DELETEはべき等です。つまり、複数回送信しても同じ結果が得られます。そのため、同じオブジェクトを2回削除しようとすると、以前に削除していても引き続き同じ204レスポンスを受信します。

53.13.1.6 メッセージのフィルタ処理

メッセージは、可視性条件に基づき、(GET、POSTおよびPUTのHTTP動詞を使用して)フィルタ処理できます。メッセージ・ボードに投稿されたメッセージは次の可視性カテゴリに分けられます。

- パブリック

- プライベート

- 非表示

- パブリックかつ非表示

- プライベートかつ非表示

パブリック・メッセージとプライベート・メッセージの場合

メッセージ・ボードの所有者は、任意のメッセージをプライベートとしてマークできます。メッセージがプライベートとしてマークされると、そのメッセージは、メッセージの所有者以外には表示されません。デフォルトで、すべてのメッセージはパブリックです。

メッセージをプライベート・メッセージとして送信することもできます。たとえば、MikeがCarlのメッセージ・ボードを表示している場合、ユーザーであるMikeにはパブリック・メッセージのみ(プライベートとして送受信されたパブリック・メッセージも含む)が表示されます。

非表示メッセージと表示メッセージの場合

メッセージ・ボードの所有者は、任意のメッセージを非表示としてマークできます。メッセージが非表示としてマークされると、そのメッセージはメッセージ・ボードの所有者には表示されませんが、メッセージ・ボードを表示する他のユーザーには表示されたままになります。

次に、取得方法の例を示します。

例53-20 フィルタ処理されたメッセージの取得(GET)

- me

all
rest/api/messageBoards/person/@me
private
rest/api/messageBoards/person/@me/private
public
rest/api/messageBoards/person/@me/public
hidden and public
rest/api/messageBoards/person/@me/hidden
private and hidden
rest/api/messageBoards/person/@me/private_hidden

- person

rest/api/messageBoards/person/<GUID>

メッセージを取得するログイン・ユーザーのGUIDが必要であることに注意してください。

- space-guid

rest/api/messageBoards/space/<GUID>

space-guidでは可視性に基づくフィルタ処理が使用できないことに注意してください。

例53-21 新しいメッセージに対するフィルタ処理の使用(POST)

- me

all
rest/api/messageBoards/person/@me
private
{"body" : "<BODY_CONTENT>","visibilityType" : "private"}
public
{"body" : "<BODY_CONTENT>","visibilityType" : "public"}
hidden and public
{"body" : "<BODY_CONTENT>","visibilityType" : "hidden"}
private and hidden
{"body" : "<BODY_CONTENT>","visibilityType" : "private_hidden"}

- person

rest/api/messageBoards/person/<GUID>

「me」以外のGUIDの場合:

public
{"body" : "<BODY_CONTENT>","visibilityType" : "public"}
private
{"body" : "<BODY_CONTENT>","visibilityType" : "private"}

- space-guid

rest/api/messageBoards/space/<GUID>

space-guidでは可視性に基づくフィルタ処理が使用できないことに注意してください。

例53-22 変更されたメッセージに対するフィルタ処理の使用(PUT)

- me

all
rest/api/messageBoards/person/@me/messages/<msg guid>
private
{"body" : "<BODY_CONTENT>","visibilityType" : "private"}
public
{"body" : "<BODY_CONTENT>","visibilityType" : "public"}
hidden and public
{"body" : "<BODY_CONTENT>","visibilityType" : "hidden"}
private and hidden
{"body" : "<BODY_CONTENT>","visibilityType" : "private_hidden"}

- person

rest/api/messageBoards/person/<GUID>/messages/<msg guid>

「me」以外のGUIDの場合:

public
{"body" : "<BODY_CONTENT>","visibilityType" : "public"}
private
{"body" : "<BODY_CONTENT>","visibilityType" : "private"}

- space-guid

rest/api/messageBoards/space/<GUID>/messages/<msg guid>

space-guidでは可視性に基づくフィルタ処理が使用できないことに注意してください。

53.13.2 アクティビティ・ストリーム・データの表示

アクティビティ・ストリーム・データを正しく表示するには、次の操作を行う必要があります。

- アクティビティ・ストリームURIエントリ・ポイントの取得

- アクティビティ・ストリーム・データの取得

- アクティビティ・ストリーム・データを表示するための処理

このサンプルは、Oracle Technology Network (OTN)のOracle WebCenter Portalのデモとサンプルのページでご利用いただけます。

http://www.oracle.com/technetwork/middleware/webcenter/ps3-samples-176806.html

次に、例53-23について説明します。

- getResourceURLメソッドは、メイン・リソース索引(/rest/api/resourceIndex)のJSONデータを取得し、そのデータ内でアクティビティ・ストリーム・リソースのURIを見つけることによって、アクティビティ・ストリーム・サービスのURIエントリ・ポイントを取得する方法を示しています。

- formatMessageメソッドは、アクティビティ・ストリーム・データを処理して表示可能な形式にします。これには、個々のメッセージの検索と、メッセージ内のテンプレート・パラメータをそのパラメータに対応するオブジェクトまたはユーザーの名前に置換する処理が含まれます。パラメータには、オブジェクトまたはユーザーを表示するためのリンクも含まれます。そのオブジェクトまたはユーザー用のRESTサービスへのリンクがある場合は、それが含まれることもあります。

注意:

リソース索引およびアクティビティ・ストリームJSONデータを取得するには、Javascript(および場合によってはDojoなどのクライアント側スクリプト・ライブラリ)を使用してAjaxリクエストを作成し、結果のデータを適切なメソッドに渡します。

例53-23 アクティビティ・ストリーム・データの表示

/* Parse the resourceIndex to find the specified URL and
* return it.
*
* @Param jsonData the JSON data retrieved from calling
*        the /rest/api/resourceIndex URL.
* @Param strResourceType the resource type of the URL
*        you want to retrieve from the resourceIndex data.
*        E.g., 'urn:oracle:webcenter:activities:stream'
*/
function getResourceURL(jsonData, strResourceType)
{
// Using the HATEOAS model, we browse the returned links
// looking for the one with the correct resource type.

for (var i = 0; i < data.links.length; i++) {
if (data.links[i].resourceType == strResourceType) {
return data.links[i].href;
}
}
}

/* Parse the resourceIndex to find the activity stream URL and
* then load it.
*
* @Param jsonData the JSON data retrieved from calling
*        the /rest/api/resourceIndex URL.
*/
function getActivitiesURL(jsonData)
{
// Parse the JSON data to get the activities URI entry point.

var strHref = getResourceURL(jsonData,
'urn:oracle:webcenter:activities:stream');

// INSERT CODE HERE: Implement getting the JSON data from the
// strHref URL with the Accept header set to "application/json",
// and use the formatMessage(index, jsonData) function to get
// the displayable activity message for each activity.

}

/* Replace activity message parameters.
*
* @Param index the index of the activity to process
* @Param jsonData the JSON data retrieved from calling
*        the /rest/api/resourceIndex URL.
*/
function formatMessage(index, jsonData)
{
var activity = jsonData.items[index];
var strMessage = activity.message;

// Look for activity parameters and replace them in the message.

if (activity.templateParams && activity.templateParams.items) {
for (var i = 0; i < activity.templateParams.items.length; i++) {
var param = activity.templateParams.items[i];

// Each parameter also has a set of links which at least
// includes an HTML link and possibly a REST API link.

strMessage = strMessage.replace(param.key, param.displayName);
}
}
if (activity.detail) {
strMessage = strMessage + "<br><font size='1'>" +
activity.detail + "</font>";
}
return strMessage;
}

53.13.3 ユーザー・ステータスの更新

次の例は、REST APIを使用してユーザーのWebCenter Portalプロファイル・ステータスを更新する方法を示しています。

注意:

サンプルは、Webサーバー(Apache、Oracle HTTP Serverなど)またはアプリケーション・サーバーでホストする必要があります。クロスサイト・スクリプティング・エラーを防ぐには、プロキシURLを使用してRESTサービスにアクセスする必要があります。ApacheまたはOHSでは、confコマンドは次のようになります(必要に応じてmyspaceshostおよびportを変更します)。

ProxyPass /webcenter/ http://myspaceshost:port/webcenter/
ProxyPassReverse /webcenter/ http://myspaceshost:port/webcenter/
ProxyPass /rest/ http://myspaceshost:port/rest/
ProxyPassReverse /rest/ http://myspaceshost:port/rest/
ProxyPreserveHost on

このサンプルは、Oracle Technology Network (OTN)のOracle WebCenter Portalのデモとサンプルのページでご利用いただけます。

http://www.oracle.com/technetwork/middleware/webcenter/ps3-samples-176806.html

ユーザー・ステータスの更新では、ステータス・オブジェクトのURLを取得するための、一連の非同期AJAXコールが行われます。

urn:oracle:webcenter:resourceindex
urn:oracle:webcenter:people
urn:oracle:webcenter:people:person:status

ユーザー・ステータスを更新するHTMLページ(例53-24)には、ユーザーが新しいステータス・メッセージ(statusMessage)を入力できる入力フィールドがあります。「Update Status」ボタンをクリックすると(または[Enter]キーを押すと)updateStatusメソッドがコールされて、リソース索引への初期コールが行われます。

例53-24 HTML本体

<body>
<div>New status message:&nbsp;<input id="statusMessage" type="text"
onkeyup="{if (event.keyCode==13) updateStatus();}" maxlength="250"
size="60" /></div>
<div>
<button id="button1" onclick="updateStatus();">Update Status</button>
</div>
<div id="statusResults"></div>
</body>

図53-1は、HTMLページを示しています。

図53-1 新しいステータス・メッセージのHTMLページ

例53-25のコードは、リソース索引(/rest/api/resourceIndexに設定されているresourceIndexURL変数)を取得します。リソース索引は、AJAXリクエスト・オブジェクト(resourceIndexRequest)として返されます。

例53-25 リソース索引の取得

function updateStatus() {
// Set the UI to busy state. This is cleared in the success and error callbacks
setUIBusy("Updating status...");
//get the Resource Index
resourceIndexRequest.get(
resourceIndexURL,
resourceIndexCallback,
clearUIBusy);
}

例53-26に示すgetResourceURLメソッドは、RESTコールによって返されるデータ内のリンクを調べて、要求されたリソース・タイプを識別する指定の文字列(URN)を見つけます。

例53-26 リンクのトラバース

function getResourceURL(data, strResourceType) {
for (var i = 0; i < data.links.length; i++) {
if (data.links[i].resourceType == strResourceType) {
return data.links[i].href;
}
}
return null;
}

例53-27では、getResourceURLを使用してリソース索引を解析して、ユーザー・プロファイルURLを見つけます。データは、AJAXリクエスト・オブジェクト(profileRequest)として返されます。

例53-27 ユーザー・プロファイルの取得

function resourceIndexCallback(data) {
//get my user profile
profileRequest.get(
getResourceURL(data, 'urn:oracle:webcenter:people'),
profileCallback,
clearUIBusy);
}

例53-28は、HTMLページでユーザーが指定した新しいステータス・メッセージを受け取り(statusMessage)、request.putを使用して、(getResourceURLを再びコールして取得した)ステータス・オブジェクトを更新します。

例53-28 ステータス・オブジェクトの取得

function profileCallback(data) {
profile = data;
// get the URL for the status object
var url = getResourceURL(data, 'urn:oracle:webcenter:people:person:status');
// get the new status and escape double quotes
var newStatus = document.getElementById
('statusMessage').value.replace(/\"/g. "\\\"");
//send a JSON string representing the new status object
var statusMessage = '{"note": "' + newStatus + '"}';
statusRequest.put(
getResourceURL(data, 'urn:oracle:webcenter:people:person:status'),
statusMessage, renderStatusPutResults, clearUIBusy);
}

例53-29のrenderStatusPutResultsメソッドは、新しいステータス・オブジェクトをレンダリングします。

例53-29 新しいステータス・オブジェクトのレンダリング

function renderStatusPutResults(data) {
var name = profile.displayName;
// get the URL for my profile HTML page in WebCenter Portal
var profileURL = getResourceURL(profile,
'urn:oracle:webcenter:spaces:profile');
var html = 'Status for <a href="' + profileURL + '" target="_blank">'
+ name + '</a> is: ' + data.note;
// clear the UI busy state and print the new status message
clearUIBusy(html);
}

例53-30は、UIを無効化および再有効化するコードを示しています。

例53-30 UIの無効化

function setUIBusy(message) {
document.getElementById('statusResults').innerHTML = message;
document.getElementById('button1').disabled = true;
document.getElementById('statusMessage').disabled = true;
}

function clearUIBusy(message) {
document.getElementById('statusResults').innerHTML = message;
document.getElementById('button1').disabled = false;
document.getElementById('statusMessage').disabled = false;
}

例53-31は、AJAXコールに役立つライブラリを示しています。その大部分はWebCenter固有のものではなく、JSONを返すサービスに対する任意のXHRリクエストで使用できます。

ライブラリには再利用可能なXHRオブジェクトが含まれています。このオブジェクトは、HTTP GET、POST、PUTおよびDELETEをサポートします。すべての関数は非同期であり、URLと2つのコールバック関数(成功した場合と失敗した場合)を使用します。成功コールは、戻りデータが含まれるJavaScriptオブジェクトを使用して行われます。失敗コールは、エラー文字列を使用して行われます。POSTおよびPUTも、JSON文字列のデータ引数を使用します。

例53-31 AJAXライブラリ

function AjaxRequest() {
// constructor to create an object oriented AJAX request
var xhr = null;

// get XHR object. Should work for IE 6+, Safari, and Mozilla based browsers
if (window.XMLHttpRequest) {
xhr = new window.XMLHTTPRequest;
} else {
try {
xhr = new ActiveXObject('MSXML2.XMLHTTP.3.0');
} catch (ex) {
xhr = null;
}
}
if (xhr == null) {
alert("Your browser does not support AJAX");
}

this.get = function(url, callback, errorCallback) {
xhr.open('GET', url, true);
// the REST APIs return XML by default. Please return JSON
xhr.setRequestHeader('Accept', 'application/json; charset=utf-8');
sendRequest(null, callback, errorCallback);
};

this.post = function(url, data, callback, errorCallback) {
xhr.open('POST', url, true);
// set headers to send and receive JSON
xhr.setRequestHeader('Accept', 'application/json; charset=utf-8');
xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
sendRequest(data, callback, errorCallback);
};

this.put = function(url, data, callback, errorCallback) {
xhr.open('PUT', url, true);
// set headesr to send and receive JSON
xhr.setRequestHeader('Accept', 'application/json; charset=utf-8');
xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
sendRequest(data, callback, errorCallback);
};

this.deleteResource = function(url, callback, errorCallback) {
xhr.open('DELETE', url, true);
sendRequest(null, callback, errorCallback);
};

// set the callbacks and send the request with data, if any
function sendRequest(data, callback, errorCallback) {
xhr.onreadystatechange = function () {
processResponse(xhr, callback, errorCallback);
};
xhr.send(data);
}

function processResponse(xhr, callback, errorCallback) {
var data = null;
// can get called here many times. 4 means really done
if (xhr.readyState == 4) {
// let's call any HTTP codes in the 200s success
if (xhr.status >= 200 && xhr.status <300) {
// convert response text into a JSON object. This is insecure.
// data should not be blindly evaluated from the server return.
// consider using json2.js http://www.JSON.org/js.html
data = eval('(' + xhr.responseText + ')');
callback(data);
} else {
// we got an error. Format an error string
data = 'Error: ' + xhr.status + ' ' + xhr.statusText + '<br />'
+ xhr.responseText;
errorCallback(data);
}
}
}
}

54 他のOracleアプリケーションの統合

この章では、お使いのポータルまたはFrameworkアプリケーションに他のOracleアプリケーションを統合する方法を説明します。

この章では、次の項目について説明します。

- 第54.1項「他のOracleアプリケーションのWebCenter Portalへの統合」

- 第54.2項「Siebelアプリケーションの統合」

- 第54.3項「E-Business Suiteアプリケーションの統合」

- 第54.4項「JD Edwardsアプリケーションの統合」

- 第54.5項「PeopleSoftアプリケーションの統合」

- 第54.6項「Oracle Business Intelligenceプレゼンテーション・サービスの統合」

54.1 他のOracleアプリケーションのWebCenter Portalへの統合

Oracle WebCenter Portalは、コンテキストに応じた統一されたユーザー・エクスペリエンスを提供できるように設計された統合テクノロジ・スイートです。WebCenter Portalは、構造化コンテンツと非構造化コンテンツ、ビジネス・インテリジェンス、ビジネス・プロセス、通信およびコラボレーション・サービスを統合して、エンタープライズ・アプリケーション間の境界を取り除きます。自社で使用できる他のアプリケーションをWebCenter Portalと統合することで、これらのアプリケーションの機能を活用するコンテキスト中心型のコンポジット・アプリケーションを作成して、WebCenter Portalを拡張して、従業員の労働形態を変革できます。

WebCenter Portalは、業界標準のテクノロジを使用して他のアプリケーション・コンポーネントを統合します(主にWSRPおよびJPDKのポートレットとして)。図54-1は、他のアプリケーションとWebCenter Portalとの統合に関連するテクノロジを示しています。

図54-1 WebCenter Portalの統合

すべてのアプリケーションが同じ統合メカニズムをサポートしているわけではありませんが、統合プロセスは一般に非常にシンプルであり、その内容は、統合するアプリケーション・オブジェクトをポートレットとして公開して、そのポートレットをWebCenter Portalに登録して、そのポートレットをページに追加してから、結果を実行およびテストするというものです。

図54-1は、Siebel、E-Business Suite、JD Edwards、PeopleSoftおよびOracle Business Intelligenceとして統合できるアプリケーションを示しています。これらのOracleアプリケーションは、十分にサポートされ、この章で説明されています。ただし、実際には、WSRPまたはJPDKポートレットとしてオブジェクトを公開できる任意のアプリケーションを統合できます。それらを統合するプロセスは、ここで取り上げられているOracleアプリケーションの場合と同じです。つまり、オブジェクトをポートレットとして公開し、ポートレットをWebCenter Portalに登録し、ポートレットをページに追加します。公開されたポートレットをWebCenter Portal内で利用する方法の詳細は、サポートされているOracleアプリケーションのいずれかのドキュメントを参照してください。

54.2 Siebelアプリケーションの統合

この項では、Siebel WebサービスをPortal Frameworkアプリケーションに統合する方法を説明します。また、Siebel Webエンジン(SWE)を使用してSiebelオブジェクトを統合する方法も説明します。SiebelとWebCenterは連係して、SiebelのCRM機能をポートレットとしてPortal Frameworkアプリケーションに組み込むことができます。Siebelアプリケーションは、Webサービスとして統合することも、次の項で説明しているSiebel Webエンジン(SWE)を使用して統合することもできます。

- 第54.2.1項「WebサービスとしてのSiebelアプリケーションの統合」

- 第54.2.2項「Siebel Webエンジンを使用したSiebelアプリケーションの統合」

54.2.1 WebサービスとしてのSiebelアプリケーションの統合

この項では、SiebelアプリケーションをWebサービスとしてポータルまたはPortal Frameworkアプリケーションに統合する方法を説明します。

この項には次のサブセクションが含まれます:

- 第54.2.1.1項「Siebelアプリケーションの準備」

- 第54.2.1.2項「Frameworkアプリケーション内でのSiebel Webサービスの使用」

- 第54.2.1.3項「ポータルでのSiebel Webサービス・データ・コントロールの使用」

54.2.1.1 Siebelアプリケーションの準備

この項では、インバウンドWebサービスを作成して、このインバウンド・サービス向けの操作を設定し、WSDLを生成する方法を説明します。このWSDLは、後でポータルまたはFrameworkアプリケーションに対するデータ・コントロールを作成するために使用します。

この項には次のサブセクションが含まれます:

- 第54.2.1.1.1項「着信Webサービスの作成」

- 第54.2.1.1.2項「着信Webサービス向けの操作の作成」

54.2.1.1.1 着信Webサービスの作成

インバウンドWebサービスを作成するには:

1. 管理者としてSiebelアプリケーションにログインします。

2. 「管理」の「Webサービス」ページに移動します。

3. インバウンドWebサービスをクリックします。
「インバウンドWebサービス」ページでは、標準で用意されているWebサービスと、現在公開されている他のWebサービスが表示されます。

4. 「メニュー」をクリックして、ドロップダウン・リストからNew Recordを選択します。

5. 設定するWebサービスに応じて、「ネームスペース」、「名前」、「ステータス」および「コメント」の値を入力します。例:

フィールド名

値

ネームスペース

http://xmlns.oracle.com

名前

Siebelカスタマ・アカウント

ステータス

有効

コメント

Fusion Middlewareの場合

6. 「サービス・ポート」ペインまでスクロールして、「メニュー」ドロップダウン・リストから「新規レコード」を選択します。

7. 「名前」にCustAccountと入力して、「タイプ」をクリックします。

8. 「インバウンドWebサービス・ポート・タイプ」ピック・アプレットで、「新規」タブを開きます。

9. 「実装タイプ」としてBusiness Serviceを選択します。

10. 「サービス名」リストから、Siebel Accountを選択します。

11. 「インバウンドWebサービス・ポート・タイプ」ピック・アプレットで、「OK」をクリックして、インバウンドWebサービスを作成します。

12. 「サービス・ポート」ダイアログの「トランスポート」ドロップダウン・リストから、HTTPを選択します。

13. 「アドレス」フィールドで、お使いのSiebelインスタンスのURLを設定します。例:

http://xmlns.oracle.com/eai_enu/start.swe?SWEExtSource=WebService&SWEExtCmd=Execute&UserName=SADMIN&Password=SADMIN

14. 「メニュー」ドロップダウン・リストから、Save Recordを選択します。

54.2.1.1.2 着信Webサービス向けの操作の作成

インバウンドWebサービスを作成したら(第54.2.1.1.1項「インバウンドWebサービスの作成」を参照)、引き続いて、インバウンドWebサービスに操作を追加してからWSDLファイルを作成するには、次の手順を実行します。

1. 「操作」セクションまでスクロールして、「メニュー」ドロップダウン・リストからNewを選択します。

2. 「操作名」フィールドにAccountInsertと入力します。

3. メソッド表示名をクリックして、「ビジネス・サービス・メソッド」ダイアログを開きます。

4. 「メソッド」としてInsertを選択し、「OK」をクリックします。

5. 「認証タイプ」ドロップダウン・リストから、適切な認証タイプを選択します。

認証タイプ

セッション
・タイプ

説明

なし

なし

匿名ユーザー・ログイン情報とともに単一のリクエストが送信されて、レスポンスが送出された後にセッションはクローズされます。

匿名セッションがSWSEプラグインによって識別されるためには、UsernameTokenとPasswordTextがSOAPヘッダーに含まれていない必要があります。

ユーザー名とパスワード

なし

ログインに使用されたユーザー名とパスワードとともに単一のリクエストが送信されて、レスポンスが送出された後にセッションはクローズされます。

ユーザー名とパスワード

ステートレス

ログインのための初期リクエストによって確立されたセッションはオープン状態のままになり、後続のリクエストで使用できます。ユーザー名とパスワードを使用してログインが行われ、セッション・トークンはアウトバウンド・レスポンスに含まれたSOAPヘッダーに格納されて返されます。セッションは開いたままになります。

セッション・トークン(ステートレス)

ステートレス

セッション・トークンに格納された情報を使用して、確立済のセッションに再接続するためのリクエストです。セッションがクローズされている場合は、自動再ログインが実行されます。Siebelサーバーは、レスポンスのSOAPヘッダーにセッション・トークンを組み込みます。セッションは開いたままになります。

セッション・トークン(ステートレス)

なし

SOAPヘッダーによってセッション・トークンが伝送されており、セッション・タイプが「なし」に設定されている場合は、SWSE上のセッション・マネージャはこのセッションをクローズして(このセッションからログアウトして)、そのセッション・トークンを無効化します。そのセッション・トークンは当該セッションが無効化された後は使用されません。

6. 「新規」をクリックして、新規操作を作成します。

7. 「操作名」フィールドに、新規操作の名前を入力します(AccountQueryByExampleなど)。

8. 新規操作のメソッド表示名をクリックします。

9. 「ビジネス・サービス・メソッド」ダイアログで、問合せメソッドを選択して(「例による問合せ」など)、「OK」をクリックします。

10. 前述のステップ6から9に従って、必要に応じてさらに操作を追加します。

11. 「サービス・ポート」ペインで、「メニュー」ドロップダウン・リストからSave Recordを選択します。

12. 「インバウンドWebサービス」ペインで、「メニュー」ドロップダウン・リストからSave Recordを選択します。

13. 「メニュー」ドロップダウン・リストからClear Cacheを選択します。

14. 「WSDLの生成」をクリックします。

15. 「ファイルのダウンロード」ダイアログで、「開く」をクリックします。

16. 「ファイル」→「別名保存」を選択します。

17. WSDLファイルを保存するディレクトリに移動して、このファイルの名前を入力して、「保存」をクリックします。

54.2.1.2 Frameworkアプリケーション内でのSiebel Webサービスの使用

この項では、Portal Frameworkアプリケーション内でWebサービスとして設定されたSiebelアプリケーションを使用する方法を説明します。この説明には、WSDLベースのデータ・コントロールを設定する方法や、JDeveloperのJSF Navigation Modelerを使用してアプリケーションのページとこれらのページ間のナビゲーションを図式的に作成する方法も含まれます。

この項には次のサブセクションが含まれます:

- 第54.2.1.2.1項「Siebel Webサービスに基づいたデータ・コントロールの作成」

- 第54.2.1.2.2項「ページ・フロー・ダイアグラムの作成」

- 第54.2.1.2.3項「ページ・フロー・ダイアグラムへのページとナビゲーションの追加」

- 第54.2.1.2.4項「問合せページの作成」

- 第54.2.1.2.5項「結果ページの作成」

- 第54.2.1.2.6項「アプリケーションのテスト」

54.2.1.2.1 Siebel Webサービスに基づいたデータ・コントロールの作成

この項では、Siebelアプリケーションから作成したWebサービスに基づいてWSDLベースのデータ・コントロールを作成する方法を説明します。

WSDLベースのデータ・コントロールを作成するには:

1. お使いのPortal Frameworkアプリケーションを開くか、新しいPortal FrameworkアプリケーションをJDeveloperで作成します。

2. アプリケーション・ナビゲータで、Modelノードを右クリックして、コンテキスト・メニューから「新規」を選択します。

3. 「新規ギャラリ」で、「フィルタ条件」ドロップダウン・リストからAll Technologiesを選択します。

4. カテゴリとしてBusiness Tier | Web Servicesを選択して、Web Service Data Controlアイテムを選択して、「OK」をクリックします。

5. Webサービス・データ・コントロールの作成ウィザードの「ようこそ」ページで、「次へ」をクリックして次のページに進みます。

6. ステップ1で、Webサービス名を「名前」フィールドに入力します。

7. 「URL」フィールドの「参照」をクリックして、WSDLファイルをダウンロードしたディレクトリに移動して、このファイルを選択して、「開く」をクリックします。
ウィザードで、「サービス」フィールドに生成されたURLを確認します。

8. 「次へ」をクリックします。
ステップ2では、選択したWebサービスから使用可能なすべての操作が表示されます。

9. 「追加」ボタンを使用して、希望の操作を「選択済」ペインに移してから、「次へ」をクリックします。
アプリケーション・ナビゲータでModelノードを開くと、作成したエントリのノードが表示されます。

10. 「すべて保存」をクリックして変更を保存します。

54.2.1.2.2 ページ・フロー・ダイアグラムの作成

この項では、ソース・ページと問合せページを追加できるページ・フロー・ダイアグラムを作成する方法を説明します。

ページ・フロー・ダイアグラムを作成するには:

1. アプリケーション・ナビゲータで、ViewControllerノードを右クリックして、コンテキスト・メニューから「新規」を選択します。

2. 「新規ギャラリ」で、Web Tierノードを開き、「JSF」を選択します。

3. 「項目」ペインで、「JSFページ・フローと構成(faces-config.xml)」を選択して、「OK」をクリックします。

4. 「JSF構成ファイルの作成」ダイアログで、「OK」をクリックしてデフォルト値を適用します。
空のページ・フロー・ダイアグラムが開いて、ダイアグラム・エディタの右側にコンポーネント・パレットとデータ・コントロール・パレットが表示されます。これを使用して、JSFナビゲーション・モデルのコンポーネントを作成します。

5. 「すべて保存」をクリックして変更を保存します。

54.2.1.2.3 ページ・フロー・ダイアグラムへのページとナビゲーションの追加

この項では、ページ・フロー・ダイアグラムにページとナビゲーションを追加する方法を説明します。

ページ・フロー・ダイアグラムにページを追加するには:

1. JSFナビゲーション・ダイアグラム・コンポーネント・パレットで、「JSFページ」を選択して、ダイアグラムをクリックして、ページに適切な名前を付けることで(QueryByIDなど)、ソース・ページを作成します。通常は、少なくとも1つのソース・ページと問合せページを確保します。

2. 問合せページを作成するには、コンポーネント・パレットから別のJSFページをクリックしてドラッグして、直前のページの横にドロップして、そのページを適切な名前に変更します(ShowResultなど)。

3. JSFナビゲーション・ダイアグラム・コンポーネント・パレットで、「JSFナビゲーション・ケース」を選択します。ソースJSFページのアイコンをクリックし、ナビゲーション・ケースの宛先JSFページのアイコンをクリックします。

4. デフォルトのラベル(success)をクリックして、適切な名前を入力することで(toResultなど)、デフォルトのラベルを変更します。

5. 「概要」タブを開いて、「ナビゲーション・ルール」をクリックします。
ダイアグラム内で先ほど作成したルールが表に表示されていることを確認します。

JDeveloperは、faces-config.xmlファイルの3つのビューを提供します。図で表示された情報と同じ情報に宣言型ダイアログを介して、またはソースから直接アクセスできます。ソース・ビューを開いた場合(「ソース」タブをクリックして)は、<from-view-id>タグによってソース・ページが識別され、さらに<to-view-id>タグによって宛先ページが識別されます。

6. ダイアグラム・ビューから、コンポーネント・パレットで「JSFナビゲーション・ケース」を選択します。ソースJSFページのアイコンをクリックし、ナビゲーション・ケースの宛先JSFページのアイコンをクリックします。

7. デフォルトのラベルをクリックして、適切な名前を入力することで(toQueryなど)、デフォルトのラベルを変更します。

8. 「すべて保存」アイコンをクリックしてダイアグラムを保存します。

54.2.1.2.4 問合せページの作成

この項では、問合せページのナビゲーションを作成して設定する方法を説明します。

問合せページを作成するには:

1. ページ・フロー・ダイアグラムで、ソース・ページ・アイコン(QueryById)をダブルクリックして、JSF JSPの作成ウィザードを起動します。

2. 「ようこそ」ページで「次へ」をクリックして、次のページに進みます。

3. ウィザードのステップ1で、「JSPドキュメント(*.jspx)」を選択して、「次へ」をクリックします。

4. ステップ2で、「マネージドBeanでUIコンポーネントを自動公開しない」が選択されていることを確認し、「次へ」をクリックします。

5. ステップ3で、次のライブラリが選択されていることを確認します。

ADF Faces Components 10_1_3_2_0
ADF Faces HTML 10_1_3_2_0
JSF Core 1.0
Cusomizable Components Core 10_1_3_2_0

6. 「終了」をクリックして、ページを作成します。
エディタの「設計」タブに空のJSFページが開きます。

7. 「カスタマイズ可能コンポーネント・コア」コンポーネント・パレットで、「ShowDetailFrame」をクリックします。
ShowDetailFrameがページに表示されます。

注意:

WebCenter Portalは、PanelCustomizableとShowDetailFrameの2つのカスタマイズ可能なコンポーネントを提供しています。これらの2つのコンポーネントによりWebアプリケーションのコンテンツの編成が非常に簡単になるため、最小化や再配置が可能で専用のドロップダウン・メニューを保持できるなどのほとんどスタンドアロンのポートレット同様のオブジェクトであるかのように異なるパネルを扱えます。

8. ShowDetailFrameを選択した状態で、プロパティ・インスペクタで、「テキスト」プロパティを「IDによる問合せ」に変更します。[Enter]を押して、ビジュアル・エディタでページを更新します。

9. データ・コントロール・パレットを開いて、「Siebel Webサービス」ノードを開きます。AccountQueryById(String)ノードをページ上のShowDetailFrameにドラッグ・アンド・ドロップします。

10. ポップアップ・メニューで、「作成」→「パラメータ」→「ADFパラメータ・フォーム」の順に選択します。

11. 「フォーム・フィールドの編集」で、「OK」をクリックします。

12. ページ内で生成された「AccountQueryById」ボタンを選択して、「プロパティ・インスペクタ」ペインで、次のプロパティを変更します。

Text     Submit
Action        toResult

13. 入力値に対応する入力フィールドを選択して、プロパティ・インスペクタで、「ラベル」プロパティをAccount ID:に変更します。

14. 「すべて保存」アイコンをクリックして作業を保存します。

54.2.1.2.5 結果ページの作成

この項では、結果ページのナビゲーションを作成して追加する方法を説明します。

結果ページを作成するには:

1. faces-config.xmlタブをクリックしてページ・フロー・ダイアグラムに戻り、「ShowResult」アイコンをクリックしてページ・ウィザードを起動します。

2. 「次へ」をクリックして、「ようこそ」ページをスキップします。

3. ウィザードのステップ1で、「JSPドキュメント(*.jspx)」を選択して、「次へ」をクリックします。

4. ステップ2で、「マネージドBeanでUIコンポーネントを自動公開しない」が選択されていることを確認し、「次へ」をクリックします。

5. ステップ3で、次のライブラリが選択されていることを確認します。

ADF Faces Components 10_1_3_2_0
ADF Faces HTML 10_1_3_2_0
JSF Core 1.0

6. 「終了」をクリックして、ページを作成します。
エディタの「設計」タブに空のJSFページが開きます。

7. 「カスタマイズ可能コンポーネント・コア」コンポーネント・パレットで、「ShowDetailFrame」をクリックします。
ShowDetailFrameがページに表示されます。

8. ShowDetailFrameを選択した状態で、プロパティ・インスペクタで、「テキスト」プロパティを「問合せ結果」に変更します。[Enter]を押して、ビジュアル・エディタでページを更新します。

9. データ・コントロール・パレットで、「AccountQueryById」→「Return」→「SiebelMessage」→「ListofAccountInterface」の順に開き、「アカウント」ノードを選択して、ページ上のShowDetailFrameにドロップします。

10. ポップアップ・メニューで、「作成」→「フォーム」→「ADF読取り専用フォーム」の順に選択します。

11. 「フォーム・フィールドの編集」で、次のフィールドを除くすべてのフィールドを削除します。

AccountID
AccountStatus
NumberOfEmployees
CurrencyCode
Location
MainPhoneNumber
Name
Type

12. 「送信ボタンを含める」チェック・ボックスを選択して、「OK」をクリックします。

13. アクション・バインディング・エディタで、「OK」をクリックします。

14. 「発行」をクリックして、プロパティ・インスペクタで、タイトルをBack to Queryに変更して、「アクション」フィールドで、リストからtoQueryを選択します。

15. 「すべて保存」アイコンをクリックして作業を保存します。

54.2.1.2.6 アプリケーションのテスト

この項では、アプリケーションのJSFページをJDeveloperでテストする方法を説明します。IDを使用してSiebelアカウントに対する問合せを実行する前に、お使いのSiebelインスタンスで使用できるIDを特定する必要があります。次の手順を実行するには、Siebel Call Centerにアクセスできる必要があります。

IDを特定してJSFページをテストするには:

1. Siebel Call Centerにログインして、適切なユーザーIDとパスワードを入力します。

2. サイト・マップを使用してアカウント・リストに移動します。

3. 「アカウント」→アカウント・リストの順に選択します。

4. 返されたリスト内で、問合せ対象にするアカウントを強調表示します。

5. 「ヘルプ」メニューから、レコードについてを選択します。

6. 「行番号」フィールドでID値を参照して、その値をメモします。

7. ページ・フロー・ダイアグラムに戻り、「QueryById」ページ・アイコンを右クリックして、コンテキスト・メニューから「実行」をクリックします。
ページがデフォルトのブラウザに読み込まれます。

8. 「ID」フィールドに、「行番号」フィールドで先ほどメモした値を入力して、「発行」をクリックします。
「詳細」ページに、対応するアカウントの詳細情報が表示されます。

54.2.1.3 ポータルでのSiebel Webサービス・データ・コントロールの使用

この項では、Webサービス・データ・コントロールを作成し、ポータル・ページに追加する方法を説明します。この項の手順では、第54.2.1.1項「Siebelアプリケーションの準備」の説明に従って、アプリケーションが準備され、WSDLが生成済であるとします。

注意:

データ・コントロールまたはデータ・コントロールを含むタスク・フローをポータル・ページに追加する前に、WebCenter PortalのWS-Securityを構成する必要があります。WS-Securityの構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WS-Securityの構成」を参照してください。

Webサービス・データ・コントロールの作成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築でWebサービス・データ・コントロールの作成に関する項を参照してください。Webサービス・データ・コントロールの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のWebサービス・データ・コントロールに関する項も参照してください。

Webサービス・データ・コントロールを作成するには:

1. データ・コントロールを作成するWebCenter Portalまたはポータルで、「共有アセット」ページまたは「アセット」ページのいずれかに移動します。

2. 「データ・コントロール」を選択し、「作成」をクリックします。
「新規データ・コントロールを作成します。」ダイアログが表示されます(図54-33を参照)。

図54-2 「新規データ・コントロールを作成します。」ダイアログ

3. 「新規データ・コントロールを作成します。」ダイアログで、データ・コントロールの「名前」と「説明」を入力して、「データ・コントロール・タイプ」として「Web Service」を選択し、「続行」をクリックします。

4. 第54.3.4.1項「WSDLの生成」で生成したWSDL URLおよびデータ・コントロールのその他の詳細を入力し、「続行」をクリックします。

5. 「メソッドの表示」をクリックします。

6. 使用可能にするメソッドを選択し、「次へ」をクリックします。

7. パラメータのデフォルト値があれば入力し、「作成」をクリックします。

8. データ・コントロールを使用可能にするには、「共有アセット」ページまたは「アセット」ページから、「タスク・フロー」を選択します。「新規タスクフローを作成します。」ダイアログが表示されます(図54-35を参照)。

図54-3 「新規タスクフローを作成します。」ダイアログ

9. タスク・フローの「名前」と「説明」を入力し、「マッシュアップ・スタイル」を選択して「作成」をクリックし、タスク・フローを作成します。

10. タスク・フローを選択し、「編集」アイコンをクリックします。

11. データ・コントロールを(param形式で)タスク・フローに表として追加し、データを検証します。

12. タスク・フローを使用可能にするには、「管理」→「ビジネス・ロール・ページ」に移動します。

13. 「ビジネス・ロール・ページ」を選択し、「作成」アイコンをクリックします。

14. ページを編集して変更を保存します。

15. タスク・フローをページにドロップし、データを検証します。

54.2.2 Siebel Webエンジンを使用したSiebelアプリケーションの統合

Webサービスを使用してSiebelアプリケーションを統合できます。さらに、Siebel Webエンジン(SWE)を使用してSiebelアプリケーションをPortal Frameworkアプリケーションに統合することもできます。

Siebel Webエンジン(SWE)は、Siebelユーザー・インタフェースをレンダリングする役割を果たします。Siebel Webテンプレートは、アプリケーションのリポジトリ定義内のSiebelオブジェクトをレンダリングする際に、このHTMLレイアウト情報(マークアップ情報)をSiebel Webエンジンに提供します。SWEから返されるマークアップは、XML対応アプリケーション内でレンダリングするためのXMLにすることも、ワイヤレス・デバイス上でレンダリングするためのWML (Wireless Markup Language)にすることもできます。これにより、SiebelビューをXMLとして返すようにSWEに要求して、データ要素を解析し、結果をPortal Frameworkアプリケーション内に表示することが可能になります。

Portal Frameworkアプリケーション内でSWEを使用する方法については、Siebel Webエンジン(SWE)を使用したWebCenterアプリケーションでのデータ表示というチュートリアルに従ってください。

このチュートリアルを完了するには、次のことが必要です。

- Oracle JDeveloper Studio Editionにアクセスできるか、このアプリケーションがインストールされている

- OracleのSiebel eBusinessアプリケーションにアクセスできるか、これらのアプリケーションがインストールされている。

- サポートされているバージョンのWindows Internet Explorer (IE)にアクセスできること(OTNで使用可能なSiebelについては、システム要件とサポート対象プラットフォームのガイドを参照してください)

また、SWEとWebテンプレートの詳細は、Siebelポータル・フレームワーク・ガイド(特に、外部Webアプリケーションへのコンテンツ配信に関する項)およびSiebelビジネス・アプリケーション構成ガイドというSiebel Bookshelfガイドを参照してください。

54.3 E-Business Suiteアプリケーションの統合

この項では、E-Business SuiteアプリケーションをWebCenter Portalアプリケーションに統合する方法を説明します。

この項には次のサブセクションが含まれます:

- 第54.3.1項「EBSアプリケーションの統合の概要」

- 第54.3.2項「EBSの統合に必要な構成」

- 第54.3.3項「WSRPポートレットとしてのEBSアプリケーションの統合」

- 第54.3.4項「WebCenter Portalへのデータ・コントロールとしてのEBSアプリケーションの統合」

54.3.1 EBSアプリケーションの統合の概要

この項では、Oracle E-Business SuiteポートレットをポータルおよびFrameworkアプリケーションに統合するにあたっての統合のポイントと要件を説明します。

この項には次のサブセクションが含まれます:

- 第54.3.1.1項「EBSの統合の理解」

- 第54.3.1.2項「EBSアプリケーションを統合するための要件」

54.3.1.1 EBS統合の理解

標準で用意されているOracle E-Business Suite OA Frameworkベースのポートレット(アプリケーション・ナビゲータ、お気に入り、ワークリストなど)は、WSRPとJSR 168に準拠しています。したがって、これらのOracle E-Business Suiteポートレットをアプリケーション・ページに追加すれば、ポータルやFrameworkアプリケーションなどのWSRP準拠ポータル・サーバーからそれらのポートレットにアクセスできるようになります。これらのポートレットをFrameworkアプリケーション・ページに追加するには、第54.3.3.2.3項「リモート・プロデューサを使用するためのJSFページの作成」の手順に従い、ポータル・ページに追加するには、第54.3.3.3.3項「ポータル・ページへのEBSポートレットの追加」の手順に従ってください。

同様にPortal Frameworkアプリケーションに追加可能なWSRPとJSR 168に準拠した新しいE-Business Suiteポートレットを作成することもできます。WebCenter PortalでのWSRPとJSR 168に準拠したポータルの作成と使用については、第54.3.3.2項「FrameworkアプリケーションへのEBSアプリケーションの統合」および第54.3.3.3項「ポータルへのEBSアプリケーションの統合」を参照してください。

54.3.1.2 EBSアプリケーションを統合するための要件

Oracle E-Business SuiteポータルをOracle WebCenter Portalアプリケーションに統合するための要件は次のとおりです。

- ポートレットとして公開するリージョンは、Oracle E-Business Suite OA Framework リリース12を使用して作成する必要があります。これより前のバージョンは、WSRPとJSR 168に準拠していないからです。

- Oracle E-Business Suiteは、Oracle Internet Directory (OID)と次のいずれかのシングル・サインオン・ソリューションを使用するように構成できます。

注意:

WebCenterとOracle E-Business Suiteの両方で同じOIDインスタンスおよびユーザーIDを共有する必要があります。

- Oracleシングル・サインオン(OSSO)

- Oracle Access Manager (OAM)

OSSOを使用している場合は、My Oracle Supportドキュメント376811.1の手順に従って、E-Business Suite リリース12をOIDおよびOSSOと統合してください。

OAMを使用している場合は、My Oracle Supportドキュメント975182.1の手順に従って、E-Business Suite リリース12をOAMと統合してください。

E-Business Suiteは、OAMまたはOSSOなしでOIDを構成することもできます。詳細は、第54.3.2.1項「シングル・サインオンなしで使用するOIDの準備」を参照してください。

注意:

Oracle E-Business Suiteはシングル・サインオンなしでOracle Internet Directory (OID)を使用するように構成できますが、ユーザーが統合されたポータルまたはデータ・コントロールの間を移動するたびに資格証明の入力を求められるため、この方法はお薦めしません。

- ポータルまたはFrameworkアプリケーションに対してE-Business Suite Portlet Producerへのアクセス権を付与して、適切なユーザーを追加および構成しておく必要があります。

注意:

一部の手順の実行には、システム管理者の権限が必要になることがあります。

54.3.2 EBSの統合に必要な構成

この項では、ポータルまたはFrameworkアプリケーションへのポータルまたはデータ・コントロールの統合を試行する前に、必要な構成について説明します。

この項には次のサブセクションが含まれます:

- 第54.3.2.1項「シングル・サインオンなしで使用するOIDの準備」

- 第54.3.2.3項「EBSアプリケーション・プロファイル・オプションの構成」

- 第54.3.2.4項「AutoConfigを使用した信頼できるポータルとしてのWebCenterホストの追加」

- 第54.3.2.4項「AutoConfigを使用した信頼できるポータルとしてのWebCenterホストの追加」

54.3.2.1 シングル・サインオンなしで使用するOIDの準備

この項では、OAMまたはOSSOのいずれも使用せず、オプションのスタンドアロン環境としてOIDを構成する手順について説明します。ユーザーが統合されたポータルまたはデータ・コントロールの間を移動するたびに資格証明の入力を求められるため、この方法はお薦めしていないことに注意してください。SSOソリューションをインストール済の場合は、第54.3.2.2項「EBSでのユーザーの作成と職責の割当て」に進みます。

注意:

WebCenterとOracle E-Business Suiteの両方で同じOIDインスタンスおよびユーザーIDを共有する必要があります。

1. 次の手順で、OIDインスタンスをホスト・サーバーに登録します。

1. 次のコマンドを実行します。
$FND_TOP/bin/txkrun.pl -script=SetSSOReg -registerinstance=yes

2. 次のプロンプトで、必要な情報を指定します。

Enter the host name where the Oracle iAS Infrastructure database is installed ?   <Enter the OID Host>
Enter the LDAP Port of the Oracle Internet Directory server ? <Enter the LDAP Port>
Enter SSL LDAP Port of the Oracle Internet Directory server ? <Enter the LDAP SSL Port>
Enter the Oracle Internet Directory Administrator (orcladmin) Bind password ? <Password>
Enter Oracle E-Business apps database user password ? <Password>

3. $ADMIN_SCRIPTS_HOMEに移動して次のコマンドを実行し、すべてのサービスを再起動します。
./adstpall.sh apps/<apps to stop>

続いて次を実行します。

./adstrtal.sh apps/<apps to start>

2. 次の手順に従って、OIDを登録します。

1. 次のコマンドを実行します。
$FND_TOP/bin/txkrun.pl -script=SetSSOReg -registeroid=yes

2. 次のプロンプトで、必要な情報を指定します。

Enter LDAP Host name ? <Enter the OID Host>
Enter the LDAP Port on Oracle Internet Directory server ? <Enter the LDAP Port>
Enter the Oracle Internet Directory Administrator (orcladmin) Bind password ? <Password>
Enter the instance password that you would like to register this application instance with ? <Password>
Enter Oracle E-Business apps database user password ? <Password>

3. $ADMIN_SCRIPTS_HOMEに移動して次のコマンドを実行し、すべてのサービスを再起動します。
./adstpall.sh apps/<apps to stop>

続いて次を実行します。

./adstrtal.sh apps/<apps to start>

3. 引き続いて、第54.3.2.3項「EBSアプリケーション・プロファイル・オプションの構成」の説明に従って、EBSプロファイル・オプションを構成します。

54.3.2.2 EBSでのユーザーの作成と職責の割当て

EBSとの統合を有効にするには、WebCenterとEBSは共通のOIDアイデンティティ・ストアを保有する必要があります。共通OIDを使用して、EBSで新規ユーザーを作成するかOIDの既存のユーザーを使用し、そのユーザーに職責を割り当てます。これにより、そのユーザーはWebCenterのポートレットに確実にアクセスできます。職責を割り当てない場合は、登録プロデューサはポートレットを保有しません。

新規ユーザーを作成して職責を割り当てるには:

1. EBSにログインしていない場合は、システム管理者としてログインします。

2. 「ナビゲーション」ペインで、システム管理者ノード、「セキュリティ」、「ユーザー」と開き、「定義」をクリックします。
「ユーザー」ウィンドウが表示されます(図54-4)。

図54-4 「ユーザー」ウィンドウ

3. 「ユーザー名」と「パスワード」を入力します。パスワード期限オプションは「なし」に設定する必要があります。

4. 職責の割当てタブを開き、追加する「職責」を検索してそれに関連付ける「アプリケーション」を割り当て(たとえば、Preferences SSWAを検索してOracle iProcurementを割り当てます)、「保存」をクリックします(図54-5を参照)。

図54-5 職責の割当てタブを表示するユーザー・ウィンドウ

5. 確認するには、新しく作成されたユーザーでログインし、職責に関連付けられたアプリケーションがリストされていることを確認します。

6. 引き続いて、第54.3.2.3項「EBSアプリケーション・プロファイル・オプションの構成」の説明に従って、EBSアプリケーション・プロファイル・オプションを構成します。

54.3.2.3 EBSアプリケーション・プロファイル・オプションの構成

この項では、EBSアプリケーション・プロファイル・オプションを構成する方法について説明します。この手順は、SSOおよび非SSO構成の両方に必要です。

EBSプロファイル・オプションを構成するには:

1. EBSにシステム管理者としてログインします。

2. 「ナビゲーション」ペインで、システム管理者ノードを開き、プロファイル・オプションの定義をクリックします。

3. 「プロファイル」ウィンドウを閉じます。

4. 「ナビゲータ」で、プロファイル・システム値を選択し、「オープン」をクリックします。
システム・プロファイル値の検索ウィンドウが表示されます(図54-6を参照)

図54-6 システム・プロファイル値の検索ウィンドウ

5. 「プロファイル」名を入力して更新し、「検索」をクリックします。
システム・プロファイル値ウィンドウが表示されます(図54-7を参照)。

図54-7 システム・プロファイル値ウィンドウ

次のプロファイルの値を更新し、それぞれの更新後にエントリを保存します。

アプリケーションSSO有効OIDアイデンティティ追加イベント = Enabled

アプリケーションSSOログイン・タイプ = Both

アプリケーションSSO LDAP同期 = Enabled

アプリケーションSSOタイプ = SSWA w/ SSO

同じユーザー名のOIDユーザーを使用するリンク・アプリケーション・ユーザー = Enabled

6. $ADMIN_SCRIPTS_HOMEに移動して次のコマンドを実行し、すべてのサービスを再起動します。
./adstpall.sh apps/<apps to stop>

続いて次を実行します。

./adstrtal.sh apps/<apps to start>

7. 引き続いて、第54.3.2.4項「AutoConfigを使用した信頼できるポータルとしてのWebCenterホストの追加」の説明に従って、信頼できるホストとしてWebCenterホストを追加します。

54.3.2.4 AutoConfigを使用した信頼できるポータルとしてのWebCenterホストの追加

EBS WSDLは保護されているため、EBS AutoConfigツールを使用してWebCenterインスタンスのホストを使用するためのエントリを追加してから、EBS WSDLにアクセスします。この構成手順を実行せずWSDLへのアクセスを試みると、「403 禁止」エラーが発生します。

WebCenterホストを信頼できるポータルとして追加するには:

1. EBSにログインしていない場合は、システム管理者としてログインします。

2. 「ナビゲーション」ペインで、システム管理者ノード、Oracle Applicationsマネージャと開き、「ワークフロー」をクリックします。

3. 「サイトマップ」タブを開き、「AutoConfig」をクリックします。

4. 「パラメータの編集」列で、アプリケーション層行の「編集」アイコンをクリックします。

5. 「システム」タブを開き、oa_web_serverノードを開きます。

6. ノードのリストでポートレット・プロデューサURLへのアクセスを持つノードを検索し、WebCenterホストへ追加して「保存」をクリックします。複数のホスト名を追加する必要がある場合は、ホスト名をスペースで区切ります。

7. 次のようにプロンプトが表示されたら、パスワードとしてappsを入力して自動構成スクリプトを実行します。
cd $ADMIN_SCRIPTS_HOME

./adautocfg.sh

8. $ADMIN_SCRIPTS_HOMEから次のコマンドを実行し、すべてのサービスを再起動します。
./adstpall.sh apps/<apps to stop>

続いて次を実行します。

./adstrtal.sh apps/<apps to start>

54.3.3 WSRPポートレットとしてのEBSアプリケーションの統合

この項では、EBSリージョンをWSRPポートレットとしてポータルまたはFrameworkアプリケーションに統合する方法を説明します。開始するには、ポートレット・ジェネレータを使用してそのリージョンのポートレットを生成し、続いてプロデューサの登録およびアプリケーションへの統合を実行する必要があります。

この項には次のサブセクションが含まれます:

- 第54.3.3.1項「EBSポートレットのリモート・アクセスの準備」

- 第54.3.3.2項「FrameworkアプリケーションへのEBSアプリケーションの統合」

- 第54.3.3.3項「ポータルへのEBSアプリケーションの統合」

54.3.3.1 EBSポートレットのリモート・アクセスの準備

Oracle E-Business Suiteは、既存のスタンドアロンのOracle Application Frameworkリージョンをポートレットに変換するポートレット・ジェネレータと呼ばれるツールを提供します。ポートレット化できるようにするには、リージョンには次のプロパティが必要です。

- リージョンには、定義済のアプリケーション・モジュール(AM)が必要です。そのAMのスタンドアロン・プロパティはtrueに設定されている必要があります。

- インライン・リージョンには、定義済のAMが必要です。そのAMのスタンドアロン・プロパティはtrueに設定されている必要があります。

- コンテンツ・リージョンには定義済のAMが必要です(コンテンツ・リージョンにはスタンドアロン・プロパティはありません)。

ポートレット・ジェネレータを使用したポートレットとしてEBS機能を公開するには:

1. EBSにシステム管理者としてログインします。

2. 「ナビゲーション」ペインで、機能管理者ノードを開き、「ホーム」をクリックします。
アプリケーション管理ページが表示されます(図54-8を参照)。

図54-8 アプリケーション管理ページ

3. ポートレット化タブを開き、「アプリケーションの短縮名」フィールドの「検索」アイコンをクリックします(または、わかっている場合は「アプリケーションの短縮名」を入力)。

図54-9 「アプリケーションの短縮名」の「検索」ダイアログ

4. 「検索基準」条件を選択し(たとえば、Application Nameを選択してOracle iProcurementを入力)、ポートレット化する機能を検索します。

5. 検索結果で返された行を選択し、「選択」をクリックします。

6. 「進む」をクリックしてポートレット化できるEBS機能をリストします。

7. 公開する機能のポートレット化アイコンをクリックします(たとえば、AdvisoryWarningRN)。
ポートレットの作成ダイアログが表示されます(図54-10を参照)。

図54-10 ポートレットの作成ダイアログ

8. リージョン(たとえば、Preferences SSWA)に関連付ける「職責」を入力するか、「検索」機能を使用します。

9. 「適用」クリックします。

10. 引き続いて、EBSプロデューサの登録とポータルへの統合(第54.3.3.2項「FrameworkアプリケーションへのEBSアプリケーションの統合」を参照)またはFrameworkアプリケーションへの統合(第54.3.3.3項「ポータルへのEBSアプリケーションの統合」を参照)に進みます。

54.3.3.2 FrameworkアプリケーションへのEBSアプリケーションの統合

この項では、EBSポートレットをFrameworkアプリケーションに統合する方法について説明します。

この項には次のサブセクションが含まれます:

- 第54.3.3.2.1項「EBSポートレットのリモート・アクセスの準備」

- 第54.3.3.2.2項「FrameworkアプリケーションへのEBS WSRPプロデューサの登録」

- 第54.3.3.2.3項「リモート・プロデューサを使用するためのJSFページの作成」

- 第54.3.3.2.4項「Frameworkアプリケーションのテスト」

54.3.3.2.1 EBSポートレットのリモート・アクセスの準備

第54.3.3.1項「EBSポートレットのリモート・アクセスの準備」の説明に従って、ポートレット化するスタンドアロン・リージョンを準備します。

ポートレットをFrameworkアプリケーションに追加する前に、メニューと関数の定義がキャッシュされるため、必ずApacheリスナーをバウンスしてください。

54.3.3.2.2 FrameworkアプリケーションへのEBS WSRPプロデューサの登録

次の手順に従って、Portal Frameworkアプリケーションを作成するか既存のPortal Frameworkアプリケーションを開き、EBS WSRPプロデューサを登録します。

1. リモート(WSRP) EBSポートレットの使用場所として、新しいPortal Frameworkアプリケーションを作成するか、既存のPortal Frameworkアプリケーションを開きます。

2. 「アプリケーション・リソース」で、「接続」を右クリックして、「WSRPプロデューサ」を選択します。
WSRPポートレット・プロデューサの登録ウィザードの1ページ目(「プロデューサ名の指定」)が表示されます。

3. WSRPプロデューサの名前を入力し、「次へ」をクリックします。
「接続詳細の指定」ページが表示されます。

4. EBSプロデューサのWSDLを「WSDL URL」フィールドに入力します(下図参照)。

WSDL URL: http://[Release_12_host]:[port]/OA_HTML/portlets/WSRPBaseService?WSDL

例:

http://myEBSServer.example.com:8001/OA_HTML/portlets/WSRPBaseService?WSDL

5. 「次へ」→「終了」をクリックします。
これで、WSRPプロデューサが「接続」の下に表示されます。

6. 引き続いて、第54.3.3.2.3項「リモート・プロデューサを使用するためのJSFページの作成」の説明に従って、WSRPプロデューサを使用するためのJSFページを作成します。

54.3.3.2.3 リモート・プロデューサを使用するためのJSFページの作成

次の手順に従って、Portal Frameworkアプリケーション内でEBSリモート・プロデューサを使用するためのJSFページを追加するか、既存のJSFページを使用します。

JSFページを作成するには:

1. アプリケーションのナビゲーション・パネルで、アプリケーション名を右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます。

2. 「カテゴリ」フィールドのツリー構造で、「Web層」を見つけて開きます。
使用可能なオプションの説明が記載されたリストが「項目」フィールドが表示されます。

3. このリストで、「JSFページ」を選択し、「OK」をクリックします。
「JSFページの作成」ダイアログが表示されます。

4. 「JSFページの作成」で、Create an XML Document (*.jspx)フィールドが選択されていることを確認します。JSFページの設定の詳細は、「ヘルプ」ボタンをクリックしてオンライン・ヘルプにアクセスしてください。

5. 「OK」をクリックします。
新しく作成されたJSFページが表示されます。

6. 「接続」で、新規作成したWSRPプロデューサを開き、EBSページ用のポートレットをJSFページにドラッグします。

7. ポートレット・プロパティ・インスペクタで、RenderPortletInIFrameプロパティをTrueに設定します。

8. 必要なコンポーネントをページに追加し、アプリケーションを保存します。

9. 引き続いて、第54.3.3.2.4項「Frameworkアプリケーションのテスト」の説明に従って、該当ページを実行して、Portal Frameworkアプリケーションで加えた変更内容がEBSアプリケーションで表示されることをテストします。

54.3.3.2.4 Frameworkアプリケーションのテスト

次の手順に従って、Portal Frameworkアプリケーション内のJSFページのコンテンツを変更して、その変更内容がEBSアプリケーションで表示されることを確認することで、Portal Frameworkアプリケーションをテストします。

1. 作成した.jspxページを実行します。

2. 実行中のページで、なんらかの情報を変更します。この情報は、その変更内容をEBSアプリケーションで確認できるものである必要があります。

3. 変更を保存し、変更内容がEBSアプリケーションでも表示されることを確認します。

54.3.3.3 ポータルへのEBSアプリケーションの統合

この項には次のサブセクションが含まれます:

- 第54.3.3.3.1項「EBSポートレットのリモート・アクセスの準備」

- 第54.3.3.3.2項「WebCenter PortalへのEBS WSRPプロデューサの登録」

- 第54.3.3.3.3項「ポータル・ページへのEBSポートレットの追加」

- 第54.3.3.3.4項「ポータル・ポートレット接続のテスト」

54.3.3.3.1 EBSポートレットのリモート・アクセスの準備

第54.3.3.1項「EBSポートレットのリモート・アクセスの準備」の説明に従って、ポートレット化するスタンドアロン・リージョンを準備します。

ポートレットをWebCenter Portalに追加する前に、メニューと関数の定義がキャッシュされるため、必ずApacheリスナーをバウンスしてください。

54.3.3.3.2 WebCenter PortalへのEBS WSRPプロデューサの登録

Oracle Fusion Middleware Oracle WebCenter Portalの管理の管理コンソールへのポートレット・プロデューサの登録に関する項の説明に従って、EBS WSRPプロデューサを直接WebCenter Portalに登録できます。また、次の手順で説明するとおり、Fusion Middleware Controlを使用してEBS WSRPを登録できます。

Fusion Middleware Controlを使用してEBS WSRPプロデューサを登録するには:

1. 第54.3.3.3.1項「EBSポートレットのリモート・アクセスの準備」の説明に従って、WebCenter Portalで使用するEBSページのリモート・アクセスの準備を行います。

2. WebCenter PortalドメインのFusion Middleware Control(デフォルトではwc_domain)にログインします。

3. 「ナビゲーション・バー」でWebCenter Portalを開き、「WebCenterポータル」メニューで「プロデューサの登録」を選択します。
「ポートレット・プロデューサの追加」ページが表示されます。

4. 接続名を入力し、「プロデューサ・タイプ」をWSRP Producerに設定して、ステップ1でコピーしたWSDLエンドポイントURLを「URLエンドポイント」フィールドに貼り付けます。

5. 「OK」をクリックし、プロデューサ接続が正常に作成されたことを確認します。

6. 引き続いて、第54.3.3.3.3項「ポータル・ページへのEBSポートレットの追加」の説明に従って、該当ポートレットをポータル・ページに追加します。

54.3.3.3.3 ポータル・ページへのEBSポートレットの追加

次の手順に従って、EBSリモート・プロデューサをポータル・ページで使用します。

1. WebCenter Portalにログインします。

2. EBSポータルの追加先となるページに移動するか、新規ページを作成します。

3. 「コンテンツの追加」をクリックして、コンポーザを開きます。

4. リソース・カタログから、「ポートレット」を選択します。
カスタム・カタログを作成済である場合、「ポートレット」が表示されないことがあり、その場合はリソース・カタログに追加する必要はありません。リソース・カタログの管理の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「リソース・カタログの使用」を参照してください。

5. Fusion Middleware Controlに追加したポートレットをクリックします。

6. ポータル・ページを追加するEBSポートレットの「追加」をクリックします。

7. 「閉じる」をクリックして、コンポーザを閉じます。

8. ポータル・ページで、「編集」(鉛筆)アイコンをクリックします。

9. 「表示オプション」タブを開き、「Iframeにポートレットをレンダリングする」オプションをTrueに設定して、「OK」をクリックします。

10. 引き続いて、第54.3.3.3.4項「ポータル・ポートレット接続のテスト」の説明に従って、ポートレット接続をチェックします。

54.3.3.3.4 ポータル・ポートレット接続のテスト

次の手順に従って、コンテンツを変更し、その変更内容がEBSアプリケーションに表示されることを確認することで、ポータル・ポートレット接続をテストします。

1. EBSポートレットを追加したポータル・ページで、なんらかの情報を変更します。この情報は、その変更内容をEBSアプリケーションで確認できるものである必要があります。

2. 変更を保存し、変更内容がEBSアプリケーションでも表示されることを確認します。

54.3.4 WebCenter Portalへのデータ・コントロールとしてのEBSアプリケーションの統合

この項では、EBSアプリケーションをWebサービス・データ・コントロールとしてポータル・ページに追加する方法について説明します。

この項には次のサブセクションが含まれます:

- 第54.3.4.1項「WSDLの生成」

- 第54.3.4.2項「Webサービス・データ・コントロールのポータル・ページへの追加」

54.3.4.1 WSDLの生成

この項では、WSDLの作成方法について説明します。

1. E-Business SuiteにSYSADMINユーザーとしてログオンします。

2. 「ナビゲーション」ペインで、「統合されたSOAゲートウェイ」ノードを開き、「統合されたSOAゲートウェイ」サブノードで統合リポジトリをクリックします。

3. 「統合リポジトリ」タブから、公開するEBSアプリケーションの部分へ移動します。たとえば、価格リクエスト・インタフェースの場合、「Order Managementパッケージ」→「Advanced Pricing (qp)」→「価格表」と移動し、統合点のリストから価格リクエストを選択します。

4. WSDLの生成をクリックし、Webサービスとして統合点(この例では、PL/SQL API統合点)を公開します。

5. 「WSDLの表示」リンクを右クリックして新しいタブまたは新しいウィンドウでリンクを開きます(後で必要となるため、タブまたはウィンドウは開いたままにします)。

6. 「統合リポジトリ」ページの「プロシージャとファンクション」(図54-11を参照)で、アクセス権が付与されるようにオブジェクトのボックスを選択し「アクセス権の付与」をクリックします。

図54-11 統合リポジトリ - 価格リクエストの例

7. 「被付与者タイプ」および「被付与者名」(公開されたオブジェクトへのアクセス権を付与するユーザー)を選択するか、「検索」ツールを使用します。この例では、ASADMINにアクセス権を付与します。

図54-12 統合リポジトリ - 「付与の作成」ページ

54.3.4.2 Webサービス・データ・コントロールのポータル・ページへの追加

WSDLを作成したら、引き続いて、WSDLを使用してWebサービス・データ・コントロールを作成できます。

注意:

データ・コントロールまたはデータ・コントロールを含むタスク・フローをポータル・ページに追加する前に、WebCenter PortalのWS-Securityを構成する必要があります。WS-Securityの構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WS-Securityの構成」を参照してください。

Webサービス・データ・コントロールの作成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築でWebサービス・データ・コントロールの作成に関する項を参照してください。Webサービス・データ・コントロールの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のWebサービス・データ・コントロールに関する項も参照してください。

Webサービス・データ・コントロールを作成するには:

1. データ・コントロールを作成するWebCenter Portalまたはポータルで、「共有アセット」ページまたは「アセット」ページのいずれかに移動します。

2. 「データ・コントロール」を選択し、「作成」をクリックします。
「新規データ・コントロールを作成します。」ダイアログが表示されます(図54-33を参照)。

図54-13 「新規データ・コントロールを作成します。」ダイアログ

3. 「新規データ・コントロールを作成します。」ダイアログで、データ・コントロールの「名前」と「説明」を入力して、「データ・コントロール・タイプ」として「Web Service」を選択し、「続行」をクリックします。

4. 第54.3.4.1項「WSDLの生成」で生成したWSDL URLおよびデータ・コントロールのその他の詳細を入力し、「続行」をクリックします。

5. 「メソッドの表示」をクリックします。

6. 使用可能にするメソッドを選択し、「次へ」をクリックします。

7. パラメータのデフォルト値があれば入力し、「作成」をクリックします。

8. データ・コントロールを使用可能にするには、「共有アセット」ページまたは「アセット」ページから、「タスク・フロー」を選択します。「新規タスクフローを作成します。」ダイアログが表示されます(図54-35を参照)。

図54-14 「新規タスクフローを作成します。」ダイアログ

9. タスク・フローの「名前」と「説明」を入力し、「マッシュアップ・スタイル」を選択して「作成」をクリックし、タスク・フローを作成します。

10. タスク・フローを選択し、「編集」アイコンをクリックします。

11. データ・コントロールを(param形式で)タスク・フローに表として追加し、データを検証します。

12. タスク・フローを使用可能にするには、「管理」→「ビジネス・ロール・ページ」に移動します。

13. 「ビジネス・ロール・ページ」を選択し、「作成」アイコンをクリックします。

14. ページを編集して変更を保存します。

15. タスク・フローをページにドロップし、データを検証します。

54.4 JD Edwardsアプリケーションの統合

この項では、JD EdwardsアプリケーションをWebCenter PortalまたはFrameworkアプリケーションに統合する方法を説明します。

この項には次のサブセクションが含まれます:

- 第54.4.1項「FrameworkアプリケーションへのJD Edwardsアプリケーションの統合」

- 第54.4.2項「ポータルへのJD Edwardsアプリケーションの統合」

54.4.1 FrameworkアプリケーションへのJD Edwardsアプリケーションの統合

この項には次のサブセクションが含まれます:

- 第54.4.1.1項「JD Edwardsアプリケーションのリモート・アクセスの準備」

- 第54.4.1.2項「FrameworkアプリケーションへのJD Edwards WSRPプロデューサの登録」

- 第54.4.1.3項「リモート・プロデューサを使用するためのJSFページの作成」

- 第54.4.1.4項「Frameworkアプリケーションのテスト」

54.4.1.1 JD Edwardsアプリケーションのリモート・アクセスの準備

JD Edwardsスタンドアロン・リージョンをPortal Frameworkアプリケーションに追加する前に、JD Edwards内でそれらをポートレットとして外部で使用できるようにし、事前構成されたWSDLをwebclient.war/wsdlディレクトリに配置することで、リージョンをポートレット化する準備を整える必要があります。WSDL URLは、JD Edwards WSRPプロデューサを登録し、Portal Frameworkアプリケーション・ページからそれを利用できるようにするために必要です。ブラウザでJDE WSDLのXMLコンテンツを表示するには、ブラウザでページのページ・ソースを開きます。

54.4.1.2 FrameworkアプリケーションへのJD Edwards WSRPプロデューサの登録

次の手順に従って、新しいPortal Frameworkアプリケーションを作成するか既存のPortal Frameworkアプリケーションを開いて、JD Edwards WSRPプロデューサを登録してください。

1. リモート(WSRP) JD Edwardsポートレットの使用場所として、新しいPortal Frameworkアプリケーションを作成するか、既存のPortal Frameworkアプリケーションを開きます。

2. アプリケーション・リソースで、「接続」を右クリックし、「WSRPプロデューサ」を選択します。
WSRPポートレット・プロデューサの登録ウィザードの1ページ目(「プロデューサ名の指定」)が表示されます。

3. WSRPプロデューサの名前としてJDEを入力し、「次へ」をクリックします。
「接続詳細の指定」ページが表示されます。

4. JD EdwardsプロデューサのWSDL URLを「WSDL URL」フィールドに貼り付けます。

5. 「次へ」→「終了」をクリックします。
これで、WSRPプロデューサが「接続」の下に表示されます。

6. 引き続いて、第54.4.1.3項「リモート・プロデューサを使用するためのJSFページの作成」の説明に従って、WSRPプロデューサを使用するためのJSFページを作成します。

54.4.1.3 リモート・プロデューサを使用するためのJSFページの作成

次の手順に従って、Portal Frameworkアプリケーション内でJD Edwardsリモート・プロデューサを使用するための新しいJSFページを追加するか、既存のJSFページを使用します。

JSFページを作成するには:

1. アプリケーションのナビゲーション・パネルで、アプリケーション名を右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます。

2. 「カテゴリ」フィールドのツリー構造で、「Web層」を見つけて開きます。
使用可能なオプションの説明が記載されたリストが「項目」フィールドが表示されます。

3. このリストで、「JSFページ」を選択し、「OK」をクリックします。
「JSFページの作成」ダイアログが表示されます。

4. 「JSFページの作成」で、Create an XML Document (*.jspx)フィールドが選択されていることを確認します。JSFページの設定の詳細は、「ヘルプ」ボタンをクリックしてオンライン・ヘルプにアクセスしてください。

5. 「OK」をクリックします。
新しく作成されたJSFページが表示されます。

6. 「接続」で、新規作成したWSRPプロデューサを開き、JD Edwardsページ用のポートレットをJSFページにドラッグします。

7. ポートレット・プロパティ・インスペクタで、RenderPortletInIFrameプロパティをTrueに設定します。

8. 必要なコンポーネントをページに追加し、アプリケーションを保存します。

9. 引き続いて、第54.4.1.4項「Frameworkアプリケーションのテスト」の説明に従って、該当ページを実行して、Portal Frameworkアプリケーションで加えた変更内容がJD Edwardsアプリケーションで表示されることをテストします。

54.4.1.4 Frameworkアプリケーションのテスト

次の手順に従って、Portal Frameworkアプリケーション内のJSFページのコンテンツを変更して、その変更内容がJD Edwardsアプリケーションで表示されることを確認することで、Portal Frameworkアプリケーションをテストします。

1. 作成した.jspxページを実行します。

2. 実行中のページで、なんらかの情報を変更します。この情報は、その変更内容をJD Edwardsアプリケーションで確認できるものである必要があります。

3. 変更を保存し、変更内容がJD Edwardsアプリケーションでも表示されることを確認します。

54.4.2 ポータルへのJD Edwardsアプリケーションの統合

この項には次のサブセクションが含まれます:

- 第54.4.2.1項「プロデューサの登録」

- 第54.4.2.2項「ポータル・ページへのJD Edwardsポートレットの追加」

- 第54.4.2.3項「ポータル・ポートレット接続のテスト」

54.4.2.1 プロデューサの登録

Oracle Fusion Middleware Oracle WebCenter Portalの管理の管理コンソールへのポートレット・プロデューサの登録に関する項の説明に従って、JD Edwards WSRPプロデューサを直接WebCenter Portalに登録できます。また、次の手順で説明するとおり、Fusion Middleware Controlを使用してJD Edwards WSRPを登録できます。

Fusion Middleware Controlを使用してJD Edwards WSRPプロデューサを登録するには:

1. 第54.4.1.1項「JD Edwardsアプリケーションのリモート・アクセスの準備」の説明に従って、WebCenter Portalで使用するJD Edwardsページのリモート・アクセスの準備を行います。

2. WebCenter PortalドメインのFusion Middleware Control(デフォルトではwc_domain)にログインします。

3. 「ナビゲーション・バー」でWebCenter Portalを開き、「WebCenterポータル」メニューで「プロデューサの登録」を選択します。
「ポートレット・プロデューサの追加」ページが表示されます。

4. 「接続名」としてJDEを入力し、「プロデューサ・タイプ」を「WSRPプロデューサ」に設定して、ステップ1でコピーしたWSDLエンドポイントURLを「URLエンドポイント」フィールドに貼り付けます。

5. 「OK」をクリックし、プロデューサ接続が正常に作成されたことを確認します。

6. 引き続いて、第54.4.2.2項「ポータル・ページへのJD Edwardsポートレットの追加」の説明に従って、該当ポートレットをポータル・ページに追加します。

54.4.2.2 ポータル・ページへのJD Edwardsポートレットの追加

次の手順に従って、JD Edwardsリモート・プロデューサをWebCenter Portalで使用します。

1. WebCenter Portalにログインします。

2. JD Edwardsポータルの追加先となるページに移動するか、新規ページを作成します。

3. 「コンテンツの追加」をクリックして、コンポーザを開きます。

4. 「リソース・カタログ」から、「UIコンポーネント」、「ポートレット」の順に選択します。
カスタム・カタログを作成済である場合、「ポートレット」が表示されないことがあり、その場合はリソース・カタログに追加する必要はありません。リソース・カタログの管理の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「リソース・カタログの使用」を参照してください。

5. Fusion Middleware Controlに追加したポートレットをクリックします。

6. ポータル・ページに追加するJD Edwardsポートレットの「追加」をクリックします。

7. 「閉じる」をクリックして、コンポーザを閉じます。

8. ポータル・ページで、「編集」(鉛筆)アイコンをクリックします。

9. 「表示オプション」タブを開き、「Iframeにポートレットをレンダリングする」オプションをTrueに設定して、「OK」をクリックします。

10. 引き続いて、第54.4.2.3項「ポータル・ポートレット接続のテスト」の説明に従って、ポートレット接続をチェックします。

54.4.2.3 ポータル・ポートレット接続のテスト

次の手順に従って、コンテンツを変更して、その変更内容がJD Edwardsアプリケーションに表示されることを確認することで、ポータル・ポートレット接続をテストします。

1. JD Edwardsポートレットを追加したポータル・ページで、なんらかの情報を変更します。この情報は、その変更内容をJD Edwardsアプリケーションで確認できるものである必要があります。

2. 変更を保存し、変更内容がJD Edwardsアプリケーションでも表示されることを確認します。

54.5 PeopleSoftアプリケーションの統合

この項では、PeopleSoftアプリケーションをWebCenter PortalまたはFrameworkアプリケーションに統合する方法を説明します。

この項には次のサブセクションが含まれます:

- 第54.5.1項「PeopleSoftアプリケーションの統合の概要」

- 第54.5.2項「WSRPポートレットとしてのPeopleSoftアプリケーションの統合」

- 第54.5.3項「WebCenter Portalへのデータ・コントロールとしてのPeopleSoftアプリケーションの統合」

54.5.1 PeopleSoftアプリケーションの統合の概要

この項では、PeopleSoftアプリケーションをWebCenter PortalおよびFrameworkアプリケーションに統合する利点と方法を説明します。

この項には次のサブセクションが含まれます:

- 第54.5.1.1項「PeopleSoftの統合の理解」

- 第54.5.1.2項「PeopleSoftアプリケーションを統合するための要件」

54.5.1.1 PeopleSoft統合の理解

PeopleTools 8.51以降を使用すると、PeopleSoftアプリケーションをWSRPポートレットとしてWebCenter PortalまたはFrameworkアプリケーションなどのリモート・アプリケーション内で公開できます。これにより、PeopleSoftのごく一部の機能のみにアクセスする必要のあるユーザーは、PeopleSoftアプリケーション全体を開いたり習得したりすることなく、WebCenter PortalまたはFrameworkアプリケーションを通じてその機能にアクセスできるようになります。

54.5.1.2 PeopleSoftアプリケーションを統合するための要件

この項では、PeopleSoftオブジェクトをWebCenter PortalまたはPortal Frameworkアプリケーションに統合するための前提条件を説明します。

- PeopleSoft 9.0以降。

- PeopleTools 8.51以降。

- PeopleSoftへの自動サインオンのためにWS-Securityを使用している場合は、SAMLアサーションが有効になるためには、PeopleSoftとOracle WebCenter Portalのサーバー上の日付/時刻が同期化されている必要があります。これについて問題がある場合は、PeopleSoftのWebサーバーの時刻をOracle WebCenter Portalサーバーより少し進めてもかまいません。

- PeopleTools 8.51の場合は、WS-Securityを完全にサポートするためには、必要に応じてカスタムOWSMポリシーを作成して構成してください。詳細は、第54.5.2.6項「PeopleTools 8.51向けのWS-Securityの構成」を参照してください。

- PeopleTools 8.51の場合、大文字のサブジェクト名のみがサポートされています。統合を機能させるには、WebCenterで完全に大文字のユーザーIDのみを使用できるようにすることが必要です。

54.5.2 WSRPポートレットとしてのPeopleSoftアプリケーションの統合

この項では、PeopleSoftアプリケーションをWSRPポートレットとしてポータルまたはFrameworkアプリケーションに公開する方法を説明します。

この項には次のサブセクションが含まれます:

- 第54.5.2.1項「PeopleSoftアプリケーションのリモート・アクセスの準備」

- 第54.5.2.2項「PeopleTools 8.52以降向けのWS-Securityの構成」

- 第54.5.2.3項「WebCenter PortalへのWS-Securityポリシーの添付」

- 第54.5.2.4項「ポータルへのPeopleSoftアプリケーションの統合」

- 第54.5.2.5項「FrameworkアプリケーションへのPeopleSoftアプリケーションの統合」

- 第54.5.2.6項「PeopleTools 8.51向けのWS-Securityの構成」

54.5.2.1 PeopleSoftアプリケーションのリモート・アクセスの準備

この項では、PeopleSoftアプリケーションをWebCenter PortalやFrameworkアプリケーションで使用できるように準備する方法を説明します。

PeopleSoftアプリケーションを準備するには:

1. 管理者としてPeopleSoftにログインします。

2. メイン・メニューからPeopleToolsを選択します。

3. 「PeopleTools」メイン・メニューから、「ポータル」を開きます。

4. 「構造とコンテンツ」を選択します。
「構造とコンテンツ」ページには、WSRPポートレットとして公開できるPeopleSoftオブジェクトを含むフォルダのリストが表示されます(図54-15参照)。

図54-15 「構造とコンテンツ」ページ

5. WebCenter PortalまたはFrameworkアプリケーションでポートレットとして公開するサービスを含むフォルダおよび(必要に応じて)サブフォルダに移動し、「編集」をクリックしてフォルダを開きます。たとえば、「セルフサービス」、「個人情報」、「個人情報サマリー」を選択できます。
「コンテンツ参照管理」ページが表示されます(図54-16を参照)。

図54-16 「コンテンツ参照管理」ページ

6. 「一般」タブで、「WSRP作成可能」チェック・ボックスを選択します。

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

8. メイン・メニューから、「PeopleTools」、「ポータル」を開き、「WSRP のプロデュース」を選択します。
「プロデューサ提供ポートレット」ページが表示されます(図54-17を参照)。

図54-17 「プロデューサ提供ポータル」ページ

9. 当該サービスが公開されていることを確認してから、「Web サービス エンドポイントURL」を開き、URL (WSDL)をコピーします。

10. ブラウザで新しいタブを開いて、コピーしたURLをナビゲーション・バーに貼り付けて、WSDLページにアクセスします。

11. そのURLをクリップボードにコピーします。

12. 引き続いて、第54.5.2.5項「FrameworkアプリケーションへのPeopleSoftアプリケーションの統合」および第54.5.2.4項「ポータルへのPeopleSoftアプリケーションの統合」の説明に従い、PeopleSoft WSRPプロデューサをWebCenter PortalまたはFrameworkアプリケーションに統合します。

54.5.2.2 PeopleTools 8.52以降向けのWS-Securityの構成

この項では、Oracle WebCenter PortalおよびPeopleSoftの両方に対してキーストアを作成し、双方の間で秘密鍵を交換する方法について説明します。この手順は、ポータルおよびFrameWorkアプリケーションの両方にWS-Securityポリシーを追加する前に実行する必要があります。

1. 最初に、秘密鍵orakeyを持つWebCenterキーストアwebcenter.jks、PeopleSoftの公開鍵rootCA、およびPeopleSoftがWS-Security受信者として使用する証明書を、次のkeytoolコマンドを使用して作成します。

./keytool -genkeypair -keyalg RSA -dname "cn=orakey,dc=us,dc=oracle,dc=com" -alias orakey -keypass password -keystore webcenter.jks -storepass password -validity 720

./keytool -exportcert -v -alias orakey -keystore webcenter.jks -storepass password -rfc -file orakey.cer

./keytool -importcert -trustcacerts -alias orakey -file orakey.cer -keystore peoplesoft.jks -storepass password

2. 次に、秘密鍵rootCAを持つPeopleSoftキーストアpeoplesoft.jks、WebCenterの公開鍵orakey、およびWebCenterがWS-Security受信者として使用する証明書を作成します。

./keytool -genkeypair -keyalg RSA -dname "cn=rootCA,dc=us,dc=oracle,dc=com" -alias rootCA -keypass password -keystore peoplesoft.jks -storepass password -validity 720

./keytool -exportcert -v -alias rootCA -keystore peoplesoft.jks -storepass password -rfc -file rootca.cer

./keytool -importcert -trustcacerts -alias rootCA -file rootca.cer -keystore webcenter.jks -storepass password

3. Oracle WebCenter PortalおよびPeopleSoftのキーストアを作成したら、peoplesoft.jksをPeopleSoftホストに、webcenter.jksをWebCenterホストに次のようにコピーします。

- peoplesoft.jksを<Domain_Home>/config/fmwconfig/にコピー

- webcenter.jksを/home/psadm2/psft/pt/8.52/webserv/<Domain_Name>/applications/peoplesoft/pspc.war/WEB-INF/classesにコピー

4. 次に示すように、PeopleSoftに証明書をインストールします。

1. PeopleSoftに管理者としてログインし、「PeopleTools」→「セキュリティ」→「セキュリティ オブジェクト」→「電子証明書」に移動します。
「電子証明書」ページが表示されます(図54-18を参照)。

図54-18 「電子証明書」ページ

2. 「+」をクリックして新規エントリを追加します。
図54-19に示すように、RemoteおよびRootCAの電子証明書を追加する必要があります。

図54-19 「電子証明書」ページ

3. 「タイプ」にRootCA、「別名」にorakey、発行機関別名にorakeyを入力し、「検索」アイコン(虫メガネ)をクリックします。

4. 「インポート」をクリックし、ポップアップで先に作成したorakey.cerのテキスト全体を入力し、「OK」をクリックします。

5. 「+」をクリックして別の新規エントリを追加し、「タイプ」にRemote、「別名」にorakey、発行機関別名にorakeyを入力し、「検索」アイコンをクリックします。

6. 「インポート」をクリックし、ポップアップで先に作成したorakey.cerのテキスト全体を入力し、「OK」をクリックします。

5. /home/psadm2/psft/pt/8.52/webserv/<Domain_Name>/applications/peoplesoft/pspc.war/WEB-INF/classesにあるWSS.propertiesファイルを更新し、peoplesoft.jksファイルを参照します。

6. 図54-20に示すように、PSCipher.shを使用して暗号化されたパスワードを作成し、キーストア・パスワードを更新します。

図54-20 PSCipher.sh

7. PeopleSoftで次のローカル・ノード定義を確認します。

1. 「Peopletools」→「ポータル」→「ノード定義」へ移動します。
「ノード」ページが表示されます。

2. 「検索」をクリックしてPSFT-HRをクリックします。

図54-21 「ノード定義」ページ

3. 「認証オプション」ドロップダウン・リストからPasswordを選択し、「保存」をクリックします。

8. 引き続いて、第54.5.2.3項「WebCenter PortalへのWS-Securityポリシーの添付」の説明に従って、WebCenter PortalまたはFrameworkアプリケーションにWS-Securityポリシーを追加します。

54.5.2.3 WebCenter PortalへのWS-Securityポリシーの添付

この項では、WebCenter PortalにWS-Securityポリシーを添付する方法について説明します。

注意:

次の手順を続行する前に、第54.5.2.2項「PeopleTools 8.52以降向けのWS-Securityの構成」の説明に従って、WebCenterおよびPeopleSoftのキーストアを構成しておく必要があります。

- 第54.5.2.3.1項「メッセージ整合性付きのWSS 1.0 SAMLトークンの構成」

- 第54.5.2.3.2項「パスワードなしのWSS 1.0ユーザー名トークンの構成」

- 第54.5.2.3.3項「メッセージ保護付きのWSS 1.0 SAMLトークンの構成」

- 第54.5.2.3.4項「パスワード付きのWSS 1.0ユーザー名トークンの構成」

54.5.2.3.1 メッセージ整合性付きのWSS 1.0 SAMLトークンの構成

次の手順に従って、WebCenter Portal用にメッセージ整合性ポリシー付きのWSS1.0 SAMLトークンを構成します。

1. PeopleSoftサーバーの次のディレクトリに移動します。
/home/psadm2/psft/pt/8.53/webserv/peoplesoft/piabin

次のコマンドを実行します。

./redeployWSRP.sh 6

これにより、PeopleSoft WSRPセキュリティ・オプションを更新し、WSRPBaseService with SAMLToken Full Securityを使用できます。

2. PeopleSoftで、「PeopleTools」→「セキュリティ」→「SAML 管理設定」→「SAML インバウンド設定」に移動します。
「SAML インバウンド設定」ページが表示されます(図54-22を参照)。

図54-22 「SAML インバウンド設定」ページ

3. WebCenterユーザーとPeopleSoftユーザーが異なるOIDを使用している場合(設定の例を次に示します)は、「新規値の追加」タブを開いてWebCenterユーザーをPeopleSoftユーザーにマッピングし、「保存」をクリックします。
例:

- 証明書の別名: orakey

- 発行機関: WWW.ORACLE.COM

- サブジェクト名: pat

- 識別子名: WWW.ORACLE.COM

- Peoplesoft ユーザー ID のマッピング: PS

4. 引き続いて、第54.5.2.4項「ポータルへのPeopleSoftアプリケーションの統合」の説明に従って、ポータル・ページにWSRPプロデューサを登録し、該当ポートレットを追加します。

54.5.2.3.2 パスワードなしのWSS 1.0ユーザー名トークンの構成

次の手順に従って、WebCenter Portalにパスワード・ポリシーなしのWSS 1.0ユーザー名トークンを添付します。

1. 次のように、PeopleSoftでWebCenterユーザーを作成します。

1. PeopleSoftで、「PeopleTools」→「セキュリティ」→「ユーザー プロファイル」→「ユーザー プロファイルのコピー」に移動します。
「ユーザー プロファイルのコピー」ページが表示されます(図54-23を参照)。

図54-23 「ユーザー プロファイルのコピー」ページ - 「検索条件」

2. 追加するユーザーを検索します(PSなど)。
検索結果が表示されます(図54-24を参照)。

図54-24 「ユーザー プロファイルのコピー」ページ - 「検索結果」

3. 「新規ユーザー ID」(Patなど)、「説明」、「新規パスワード」を入力し、「ID タイプ情報をコピー」オプションを選択して「保存」をクリックします。

2. Fusion Middleware Controlにログインして、ドメインを選択し、「セキュリティ」→「セキュリティ・プロバイダ構成」に移動します。
「セキュリティ・プロバイダ構成」ページが表示されます。

3. 「キーストア」セクションを開いて「構成」をクリックします。
「キーストアの構成」ページが表示されます。

4. 「キーストア・パス」に./webcenter.jks、「キーの別名」にorakey、「暗号化の別名」にorakeyを入力します。関連付けられたパスワードを入力し、「OK」をクリックします。
変更した構成を有効にするには、ドメイン全体を再起動する必要があります。

5. /home/psadm2/psft/pt/8.53/webserv/peoplesoft/piabinに移動して次のコマンドを実行します。
./redeployWSRP.sh 8

これにより、PeopleSoft WSRPセキュリティ・オプションが更新され、WSRPBaseService with UsernameToken、No Password Full Security Option With WSS Responseが使用できます。

6. 引き続いて、第54.5.2.4項「ポータルへのPeopleSoftアプリケーションの統合」の説明に従って、ポータル・ページにWSRPプロデューサを登録し、該当ポートレットを追加します。

54.5.2.3.3 メッセージ保護付きのWSS 1.0 SAMLトークンの構成

次の手順に従って、WebCenter Portalにメッセージ保護ポリシー付きのWSS1.0 SAMLトークンを添付します。

1. /home/psadm2/psft/pt/8.53/webserv/peoplesoft/piabinに移動して次のコマンドを実行します。
./redeployWSRP.sh 10

これにより、PeopleSoft WSRPセキュリティ・オプションが更新され、WSRPBaseService with SAMLToken Full Security Option With WSS Responseが使用できます。

2. 引き続いて、第54.5.2.4項「ポータルへのPeopleSoftアプリケーションの統合」の説明に従って、ポータル・ページにWSRPプロデューサを登録し、該当ポートレットを追加します。

54.5.2.3.4 パスワード付きのWSS 1.0ユーザー名トークンの構成

次の手順に従って、WebCenter Portalにメッセージ保護ポリシー付きのWSS1.0 SAMLトークンを添付します。

1. /home/psadm2/psft/pt/8.53/webserv/peoplesoft/piabinに移動して次のコマンドを実行します。
./redeployWSRP.sh 7

これにより、PeopleSoft WSRPセキュリティ・オプションが更新され、WSRPBaseService with UsernameToken Full Security Option With WSS Responseが使用できます。

2. 引き続いて、第54.5.2.4項「ポータルへのPeopleSoftアプリケーションの統合」の説明に従って、ポータル・ページにWSRPプロデューサを登録し、該当ポートレットを追加します。

54.5.2.4 ポータルへのPeopleSoftアプリケーションの統合

この項では、PeopleSoftアプリケーションをポータルに統合する方法を説明します。

この項には次のサブセクションが含まれます:

- 第54.5.2.4.1項「ポータルへのPeopleSoft WSRPプロデューサの登録」

- 第54.5.2.4.2項「ポータル・ページへのPeopleSoftポートレットの追加」

- 第54.5.2.4.3項「ポータル・ポートレット接続のテスト」

54.5.2.4.1 ポータルへのPeopleSoft WSRPプロデューサの登録

Oracle Fusion Middleware Oracle WebCenter Portalの管理の管理コンソールへのポートレット・プロデューサの登録に関する項の説明に従って、PeopleSoft WSRPプロデューサを直接WebCenter Portalに登録できます。また、次の手順で説明するとおり、Fusion Middleware Controlを使用してPeopleSoft WSRPを登録できます。

Fusion Middleware Controlを使用してPeopleSoft WSRPプロデューサを登録するには:

1. 第54.5.2.1項「PeopleSoftアプリケーションのリモート・アクセスの準備」の説明に従って、WebCenter Portalで使用するPeopleSoftページのリモート・アクセスの準備を行います。

2. WebCenter PortalドメインのFusion Middleware Control(デフォルトではwc_domain)にログインします。

3. 「ナビゲーション・バー」でWebCenter Portalを開き、「WebCenterポータル」メニューで「プロデューサの登録」を選択します。
「ポートレット・プロデューサの追加」ページが表示されます。

4. 「プロデューサ・タイプ」を「WSRPプロデューサ」に設定し、「接続名」を入力して、ステップ1でコピーしたWSDLエンドポイントURLを「URLエンドポイント」フィールドに貼り付けます。

5. 必要に応じて、第54.5.2.6項「PeopleTools8.51向けのWS-Securityの構成」の説明に従い、WebCenter Portal内でWS-Securityを構成します。

6. 「OK」をクリックし、プロデューサ接続が正常に作成されたことを確認します。

7. 引き続いて、第54.5.2.4.2項「ポータル・ページへのPeopleSoftポートレットの追加」の説明に従って、該当ポートレットをポータル・ページに追加します。

54.5.2.4.2 ポータル・ページへのPeopleSoftポートレットの追加

次の手順に従って、PeopleSoftポートレットをポータル・ページに追加します。

1. WebCenter Portalにログインします。
WS-Securityを構成したら、PeopleSoftの「SAML インバウンド設定」ページで使用されているユーザー・アカウントを使用していることを確認します(第54.5.2.3項「WebCenter PortalへのWS-Securityポリシーの添付」を参照)。

2. PeopleSoftポータルの追加先となるページに移動するか、新規ページを作成します。

3. 「コンテンツの追加」をクリックして、コンポーザを開きます。

4. リソース・カタログから、「ポートレット」を選択します。
カスタム・カタログを作成済である場合、「ポートレット」が表示されないことがあり、その場合はリソース・カタログに追加する必要はありません。リソース・カタログの管理の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「リソース・カタログの使用」を参照してください。

5. Fusion Middleware Controlに追加したポートレットをクリックします。

6. ポータル・ページに追加するPeopleSoftページの「追加」をクリックします。

7. 「閉じる」をクリックして、コンポーザを閉じます。

8. ポータル・ページで、「編集」(鉛筆)アイコンをクリックします。

9. 「表示オプション」タブを開き、「Iframeにポートレットをレンダリングする」オプションをTrueに設定して、「OK」をクリックします。

10. 引き続いて、第54.5.2.4.3項「ポータル・ポートレット接続のテスト」の説明に従って、ポートレット接続をチェックします。

54.5.2.4.3 ポータル・ポートレット接続のテスト

次の手順に従って、コンテンツを変更して、その変更内容がPeopleSoftアプリケーションに表示されることを確認することで、ポータル・ポートレット接続をテストします。

1. PeopleSoftポートレットを追加したポータル・ページで、なんらかの情報を変更します。この情報は、その変更内容をPeopleSoftアプリケーションで確認できるものである必要があります。

2. 変更を保存し、変更内容がPeopleSoftアプリケーションでも表示されることを確認します。

54.5.2.5 FrameworkアプリケーションへのPeopleSoftアプリケーションの統合

この項では、PeopleSoftアプリケーションと統合するPortal Frameworkアプリケーションを作成または変更する方法を説明します。

この項には次のサブセクションが含まれます:

- 第54.5.2.5.1項「FrameworkアプリケーションへのPeopleSoft WSRPプロデューサの登録」

- 第54.5.2.5.2項「リモート(WSRP)・プロデューサを使用するためのJSFページの作成」

- 第54.5.2.5.3項「Frameworkアプリケーションのテスト」

54.5.2.5.1 FrameworkアプリケーションへのPeopleSoft WSRPプロデューサの登録

次の手順に従って、新しいPortal Frameworkアプリケーションを作成するか既存のPortal Frameworkアプリケーションを開いて、PeopleSoft WSRPプロデューサを登録してください。

1. リモート(WSRP) PeopleSoftポートレットの使用場所として、JDeveloperを使用して新しいFrameworkアプリケーションを作成するか(WebCenter Portal Frameworkアプリケーション・テンプレートを使用)、既存のFrameworkアプリケーションを開きます。

2. 「アプリケーション・リソース」で、「接続」を右クリックして、「WSRPプロデューサ」を選択します。
WSRPポートレット・プロデューサの登録ウィザードの1ページ目(「プロデューサ名の指定」)が表示されます(図54-25を参照)。

図54-25 「プロデューサ名の指定」ページ

3. WSRPプロデューサの名前を入力し、「次へ」をクリックします。
「接続詳細の指定」ページが表示されます(図54-26を参照)。

図54-26「接続詳細の指定」

4. WSDL(以前にコピーしたURL)を「WSDL URL」フィールドに貼り付けて、「次へ」をクリックします。
「セキュリティ属性の構成」ページが表示されます。

5. WS-Securityを構成している場合は、引き続いて次の手順を実行します。それ以外の場合は、手順6に進みます。
WS-Securityを構成するには、第54.5.2.2項「PeopleTools 8.52以降向けのWS-Securityの構成」の説明に従って、キーストアを設定しポリシーを添付しておく必要があります。

1. 「トークン・プロファイル」ドロップダウン・リストから、使用するWS-Securityポリシーを選択します。

2. 「構成」オプションをCustomに、「デフォルト・ユーザー」をweblogicに、「発行者名」をwww.oracle.comに設定し、「次へ」をクリックします。
キーストアを指定ページが表示されます。

3. 第54.5.2.2項「PeopleTools 8.52以降向けのWS-Securityの構成」で定義した構成設定に基づいて、キーストアの設定内容を入力します。

6. 「終了」をクリックします。
これで、WSRPプロデューサが「接続」の下に表示されます。

7. 引き続いて、第54.5.2.5.2項「リモート(WSRP)・プロデューサを使用するためのJSFページの作成」の説明に従って、WSRPプロデューサを使用するためのJSFページを作成します。

注意:

WSRPポートレットを公開するためには、WLSで圧縮が無効になっている必要があります。圧縮は、Weblogic 10.3.2と組み合せて実行しているProducer Web Serverではデフォルトで有効になっているため、各インスタンスで使用できる圧縮のServer Manager設定で無効にする必要があります。

54.5.2.5.2 リモート(WSRP)・プロデューサを使用するためのJSFページの作成

次の手順に従って、PeopleSoftリモート・プロデューサを使用するためのJSFページを追加します。

JSFページを作成するには:

1. アプリケーションのナビゲーション・パネルで、アプリケーション名を右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます。

2. 「カテゴリ」フィールドのツリー構造で、「Web層」を見つけて開きます。
使用可能なオプションの説明が記載されたリストが「項目」フィールドが表示されます。

3. このリストで、「JSFページ」を選択し、「OK」をクリックします。
「JSFページの作成」ダイアログが表示されます。

4. 「JSFページの作成」で、Create an XML Document (*.jspx)フィールドが選択されていることを確認します。JSFページの設定の詳細は、「ヘルプ」ボタンをクリックしてオンライン・ヘルプにアクセスしてください。

5. 「OK」をクリックします。
新しく作成されたJSFページが表示されます。

6. 「ナビゲーション」パネルの「接続」で、新規作成したWSRPプロデューサを開き、PeopleSoftページ用に作成されたポートレットをJSFページにドラッグします。

7. ポートレット・プロパティ・インスペクタで、RenderPortletInIFrameプロパティをTrueに設定します。

8. 必要なコンポーネントをページに追加し、アプリケーションを保存します。

9. 引き続いて、第54.5.2.5.3項「Frameworkアプリケーションのテスト」の説明に従って、該当ページを実行して、Portal Frameworkアプリケーションで加えた変更内容がPeopleSoftアプリケーションで表示されることをテストします。

54.5.2.5.3 Frameworkアプリケーションのテスト

次の手順に従って、Portal Frameworkアプリケーション内のJSFページのコンテンツを変更して、その変更内容がPeopleSoftアプリケーションで表示されることを確認することで、Portal Frameworkアプリケーションをテストします。

1. 作成した.jspxページを実行します。

2. 実行中のページで、なんらかの情報を変更します。この情報は、その変更内容をPeopleSoftアプリケーションで確認できるものである必要があります。

3. 変更を保存し、変更内容がPeopleSoftアプリケーションでも表示されることを確認します。

54.5.2.6 PeopleTools 8.51向けのWS-Securityの構成

この項では、PeopleTools 8.51でサポートされているOWSMポリシーについて説明します。PeopleToolsリリース8.51は、メッセージ内の送信WS-Securityヘッダーをサポートしていない点に注意する必要があります。ただし、一部のデフォルトのOracle WebCenter Portal/OWSMポリシーでは、送信メッセージと受信メッセージの両方がセキュリティ保護されている必要があります。このギャップを埋めるために、必要に応じてカスタムOWSMポリシーを作成してください。この項では、カスタムWS-Securityポリシーを作成する必要があり、それらを構成するためにOracle WebCenter Portal側での手順が必要な異なる統合シナリオについても説明します。

PeopleTools 8.51との統合シナリオの場合は、OWSMポリシーとして、メッセージ整合性付きWSS10 SAMLトークン、メッセージ保護付きWSS10 SAMLトークンまたはパスワード付きWSS10ユーザー名トークンを使用できます。

この項には次のサブセクションが含まれます:

- 第54.5.2.6.1項「メッセージ整合性付きのWSS10 SAMLトークン向けのWS-Securityの構成」

- 第54.5.2.6.2項「メッセージ保護付きのWSS10 SAMLトークン向けのWS-Securityの構成」

- 第54.5.2.6.3項「パスワード付きのWSS10ユーザー名トークン向けのWS-Securityの構成」

54.5.2.6.1 メッセージ整合性付きのWSS10 SAMLトークン向けのWS-Securityの構成

(PeopleSoftポリシー: WSRPBaseService with SAMLToken Full Security Option (timestamp))

この項では、メッセージ整合性付きのWSS10 SAMLトークン(oracle/wss10_saml_token_with_message_integrity_client_policy)ポリシー向けにWS-Securityを構成する方法を説明します。

WS-Securityを構成するには:

1. Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WS-Securityの構成」に従って、Oracle WebCenter Portal/OWSMキーストアを構成します。

2. Oracle WebCenter Portalドメインの公開鍵が含まれた証明書を生成して、PeopleToolsの管理者に送信します。これにより、その証明書をPeopleToolsの構成にインポートできるようになります。

3. プロデューサの登録時に、wss10_saml_token_with_message_integrity_client_policyを選択します。

4. 引き続いて、WSRPポートレットをWebCenter PortalページまたはFrameworkアプリケーション・ページに追加します。

54.5.2.6.2 メッセージ保護付きのWSS10 SAMLトークン向けのWS-Securityの構成

(PeopleSoftポリシー: WSRPBaseService with SAMLToken Full Security Option (timestamp) With WSS Response)

OWSMに付属しているデフォルトのメッセージ保護付きWSS10 SAMLトークン(oracle/wss10_saml_token_with_message_protection_client_policy)ポリシーでは、レスポンスも署名および暗号化されることが要求されます。しかし、PeopleToolsリリース8.51以前はWS-Securityヘッダーをレスポンスに格納して送信できないため(最初のcookie/get portlet handleコールのみにセキュリティ・ヘッダーが含まれており、後続のコールには含まれていません)、oracle/wss10_saml_token_with_message_protection_client_policyポリシーに基づいたカスタム・ポリシーを作成して添付する必要があります。

カスタム・ポリシーを作成するには:

1. Fusion Middleware Controlにログインし、Oracle WebCenter Portalドメイン(デフォルトではwc_domain)に移動します。

2. 「WebLogicドメイン」メニューから、「Webサービス」→「ポリシー」を選択します。

3. wss10_saml_token_with_message_protection_client_policyを選択して、「類似作成」をクリックします。

4. このポリシーに新しい名前を付けます(例: oracle/wss10_saml_token_with_message_protection_plaintext_response_client_policy)。

5. 「レスポンス」タブを開き、「メッセージの署名設定」および「メッセージの暗号化設定」の「本体全体を含める」チェック・ボックスを選択解除して、ポリシーを保存します。

6. PeopleSoftキーストアの公開証明書がOracle WebCenter Portalドメイン内で使用されているキーストアにインポートされていることを確認します。

7. 次の例に示すように、WLSTを使用して、新しく作成されたポリシーを使ってプロデューサを登録します。

registerWSRPProducer('webcenter', 'wc-pt851-saml_msg-protection', 'http://xmlns.oracle.com/pspc/pswsdl/ps/EMPLOYEE', timeout=100, tokenType='oracle/wss10_saml_token_with_message_protection_plaintext_response_client_policy',
enforcePolicyURI='false', issuer='www.oracle.com', sigKeyAlias='webcenter',sigKeyPswd='welcome1', encKeyAlias='webcenter', encKeyPswd='welcome1', recptAlias='peopleTools_public')

recptAliasパラメータの値として、インポートされたpeoplesft公開鍵の別名を使用します。

注意:

プロデューサを登録するにはWLSTを使用する必要があります。Fusion Middleware Controlは固定ポリシー名のみ受け入れ可能なため、enforcePolicyURI='false'を渡すことで、WLSTを使用してプロデューサにこのポリシーを登録する必要があります。

54.5.2.6.3 パスワード付きのWSS10ユーザー名トークン向けのWS-Securityの構成

(PeopleSoftポリシー: WSRPBaseService with UsernameToken Full Security Option With WSS Response)

OWSMに付属しているデフォルトのパスワード付きWSS10ユーザー名トークン(oracle/wss10_username_token_with_message_protection_client_policy)ポリシーでは、レスポンスも署名および暗号化されることが要求されます。しかし、PeopleToolsリリース8.51以前はWS-Securityヘッダーをレスポンスに格納して送信できないため(最初のcookie/get portlet handleコールのみにセキュリティ・ヘッダーが含まれており、後続のコールには含まれていません)、oracle/wss10_username_token_with_message_protection_client_policyポリシーに基づいたカスタム・ポリシーを作成して添付する必要があります。

カスタム・ポリシーを作成するには:

1. Fusion Middleware Controlにログインし、Oracle WebCenter Portalドメイン(デフォルトではwc_domain)に移動します。

2. 「WebLogicドメイン」メニューから、「Webサービス」→「ポリシー」を選択します。

3. wss10_username_token_with_message_protection_client_policyを選択して、「類似作成」をクリックします。

4. このポリシーに新しい名前を付けます(例: oracle/wss10_username_token_with_message_protection_plaintext_response_client_policy)。

5. 「レスポンス」タブを開き、「メッセージの署名設定」および「メッセージの暗号化設定」の「本体全体を含める」チェック・ボックスを選択解除して、ポリシーを保存します。

6. PeopleSoftキーストアの公開証明書がOracle WebCenter Portalドメイン内で使用されているキーストアにインポートされていることを確認します。

7. 次の例に示すように、WLSTを使用して、新しく作成されたポリシーを使ってプロデューサを登録します。

registerWSRPProducer('webcenter', '<Producer_Name>', '<URL>', timeout=100,
tokenType='oracle/wss10_username_token_with_message_protection_plaintext_response_client_policy', extApp='<Ext_App_Name>',
enforcePolicyURI='false', issuer='www.oracle.com',
sigKeyAlias='webcenter',sigKeyPswd='welcome1', encKeyAlias='webcenter',
encKeyPswd='welcome1', recptAlias='peopleTools_public')

recptAliasパラメータの値として、インポートされたpeoplesft公開鍵の別名を使用します。

注意:

プロデューサを登録するにはWLSTを使用する必要があります。Fusion Middleware Controlは固定ポリシー名のみ受け入れ可能なため、enforcePolicyURI='false'を渡すことで、WLSTを使用してプロデューサにこのポリシーを登録する必要があります。

54.5.3 WebCenter Portalへのデータ・コントロールとしてのPeopleSoftアプリケーションの統合

この項では、PeopleSoftアプリケーションをWebサービス・データ・コントロールとしてポータル・ページに追加する方法を説明します。

この項には次のサブセクションが含まれます:

- 第54.5.3.1項「WSDLの準備」

- 第54.5.3.2項「Webサービス・データ・コントロールの作成」

54.5.3.1 WSDLの準備

次の手順に従って、WSDLを準備します。

1. 管理者としてPeopleSoftコンソールにログインします。

2. 「PeopleTools」→「Web プロファイル」→「Web プロファイル設定」に移動します。

3. 「検索」をクリックし、結果リストからDEVを選択します。

図54-27 「Web プロファイル設定」ページ

4. 「一般」タブを開き、ホストの「認証ドメイン」を入力します。
たとえば、ホスト名がps.example.comの場合は、「認証ドメイン」フィールドに.example.comを入力します。

5. 変更を保存し、アプリケーションを閉じます。

6. C:\Windows\System32\drivers\etc\hostsファイルを開いて編集します。

7. 新しい行で、IPアドレスと認証ドメインを含む完全ホスト名を入力します。
例:

193.128.1.113 ps.example.com

8. ファイルを保存してサーバーを再起動します。

9. 次のURLを使用してPeopleSoftアプリケーションにログインします。
http://<host_name>:8000/ps/signon.html

例:

http://ps.example.com:8000/ps/signon.html

10. 「メイン メニュー」から、「PeopleTools」→「インテグレーション ブローカー」→「設定」→「ゲートウェイ」に移動します。

11. ゲートウェイIDのLOCALを検索します。ゲートウェイのローカルURLを次のように設定します。
http://<host_name>:8000/PSIGW/PeopleSoftListeningConnector

12. ゲートウェイのローカルURLを使用して、ゲートウェイがアクティブであるかどうかping確認をします。

13. 「ゲートウェイ設定プロパティ」を開いて管理者としてログインします。

14. 「PeopleSoft ノード設定」ページで、使用されているノードがPSFT_HRであることを確認します。

15. ノードをpingします

16. 「メイン メニュー」から、「PeopleTools」→「インテグレーション ブローカー」→「設定」→「サービス設定」に移動します。

17. 「ターゲット ロケーションの設定」を開き、「ターゲット ロケーション」が<Local Gateway URL>/PSFT_HRに設定されていることを確認します。

18. 「メイン メニュー」から、「PeopleTools」→「インテグレーション ブローカー」→「インテグレーション設定」→「ノード」に移動します。

19. 「検索」をクリックします。

20. 「デフォルト ローカル ノード」のPSFT_HRをクリックします。

21. 「ノード」タブで、図54-28の例のように、デフォルト・ユーザーIDを正しく設定します。

図54-28 「ノード」ページ - 「ノード定義」

22. 「検索に戻る」をクリックします。

23. ANONYMOUSノードをクリックします。

24. 図54-29の例のように、デフォルトの「ユーザー ID」をPeopleSoftのログインID(PSなど)に変更します。

図54-29 「ノード」ページ - 「ノード定義」

25. 変更を保存し、「メイン メニュー」→「PeopleTools」→「インテグレーション ブローカー」→「Web サービス」→「CI ベース サービス」に移動します。

26. 図54-30の例のように、「コンポーネント インターフェイス名」(たとえばCURRENCY)を検索して選択します。

図54-30 「CI ベース サービス」ページ - 「コンポーネント インターフェイスの選択」

27. 「CI ステータス確認」をクリックします。
「CI ベース サービス」 - 「ステータス確認」ページが表示されます(図54-31を参照)。

図54-31 CIベース・ステータスの確認 - 「ステータス確認」ページ

28. 使用可能なメソッド(この場合GetおよびFind)を選択し、「選択アクションの表示」をクリックします。

29. 「アクション確認」ダイアログで、「選択アクションの実行」をクリックします。

30. 「サービス定義の表示」をクリックします。

31. 「Web サービスの提供」をクリックします。
「サービス オペレーションの選択」ページが表示されます(図54-32を参照)。

図54-32 「サービス オペレーションの選択」ページ

32. 「全て選択」チェック・ボックスを選択し、最後のページになるまで「次へ」をクリックします。

33. 「終了」をクリックしてWSDLを生成します。
これで、WSDL URLにアクセスできます。この例では、URLは次のようになります。

http://ps.example.com:8000/PSIGW/PeopleSoftServiceListeningConnector/PSFT_HR/CI_CURRENCY.1.wsdl\\\\

34. 引き続いて、第54.5.3.2項「Webサービス・データ・コントロールの作成」で示されるように、Webサービス・データ・コントロールを作成します。

54.5.3.2 Webサービス・データ・コントロールの作成

WSDLを作成したら、引き続いて、WSDLを使用してWebサービス・データ・コントロールを作成できます。この項では、第54.5.3.1項「WSDLの準備」で始められた例を続けます。

注意:

データ・コントロールまたはデータ・コントロールを含むタスク・フローをポータル・ページに追加する前に、WebCenter PortalのWS-Securityを構成する必要があります。WS-Securityの構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WS-Securityの構成」を参照してください。

Webサービス・データ・コントロールの作成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築でWebサービス・データ・コントロールの作成に関する項を参照してください。Webサービス・データ・コントロールの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のWebサービス・データ・コントロールに関する項も参照してください。

Webサービス・データ・コントロールを作成するには:

1. データ・コントロールを作成するWebCenter Portalまたはポータルで、「共有アセット」ページまたは「アセット」ページのいずれかに移動します。

2. 「データ・コントロール」を選択し、「作成」をクリックします。
「新規データ・コントロールを作成します。」ダイアログが表示されます(図54-33を参照)。

図54-33 「新規データ・コントロールを作成します。」ダイアログ

3. 「新規データ・コントロールを作成します。」ダイアログで、データ・コントロールの「名前」と「説明」を入力して、「データ・コントロール・タイプ」として「Web Service」を選択し、「続行」をクリックします。

4. WSDL URLおよびデータ・コントロールのその他の詳細を入力し、「続行」をクリックします。この例では、URLは次のようになります。
http://ps.example.com:8000/PSIGW/PeopleSoftServiceListeningConnector/PSFT_HR/CI_CURRENCY.1.wsdl

5. この例では、CURRENCY_CDの「デフォルト値」にUSDを入力し、「作成」をクリックします(図54-34を参照)。

図54-34 「新規データ・コントロールを作成します。」ダイアログ - CI_Currency_Gメソッド・パラメータ

6. データ・コントロールを使用可能にするには、「共有アセット」ページまたは「アセット」ページから、「タスク・フロー」を選択します。「新規タスクフローを作成します。」ダイアログが表示されます(図54-35を参照)。

図54-35 「新規タスクフローを作成します。」ダイアログ

7. 「作成」をクリックしてタスク・フローを作成します。

8. タスク・フローを選択し、「編集」アイコンをクリックします。

9. データ・コントロールを(param形式で)タスク・フローに表として追加し、データを検証します。

10. タスク・フローを使用可能にするには、「管理」→「ビジネス・ロール・ページ」に移動します。

11. 「ビジネス・ロール・ページ」を選択し、「作成」アイコンをクリックします。

12. ページを編集して変更を保存します。

13. タスク・フローをページにドロップし、データを検証します。

54.6 Oracle Business Intelligenceプレゼンテーション・サービスの統合

この項では、Oracle Business Intelligenceプレゼンテーション・サービス・カタログと統合するPortal Frameworkアプリケーションを、JDeveloperを使用して作成および構成する方法を説明します。実行時に、ユーザーはビジネス・インテリジェンス・オブジェクトをポータルやFrameworkアプリケーション・ページに追加できます。

この項には次のサブセクションが含まれます:

- 第54.6.1項「Oracle Business Intelligenceプレゼンテーション・サービスの統合の概要」

- 第54.6.2項「Oracle BIプレゼンテーション・カタログに接続するための資格証明の構成」

- 第54.6.3項「FrameworkアプリケーションへのOracle Business Intelligenceプレゼンテーション・サービスの統合」

- 第54.6.4項「WebCenter PortalへのOracle Business Intelligenceオブジェクトの統合」

54.6.1 Oracle Business Intelligenceプレゼンテーション・サービスの統合の概要

この項では、Oracle Business Intelligenceプレゼンテーション・サービス・カタログと統合するために、JDeveloperを使用してPortal Frameworkアプリケーションを作成する方法とWebCenter Portalを構成する方法を説明します。Portal FrameworkアプリケーションへのOracle Business Intelligenceオブジェクトの追加の詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Edition開発者ガイド』のADFアプリケーションへのビジネス・インテリジェンス・オブジェクトの埋込みに関する項を参照してください。

この項には次のサブセクションが含まれます:

- 第54.6.1.1項「Oracle Business Intelligenceプレゼンテーション・サービスの統合の理解」

- 第54.6.1.2項「Oracle Business Intelligenceプレゼンテーション・サービスを統合するための要件」

54.6.1.1 Oracle Business Intelligenceプレゼンテーション・サービスの統合の理解

JDeveloperを使用して、Oracle Business Intelligenceプレゼンテーション・サービスと統合するPortal Frameworkアプリケーションを作成できます。実行時に、これらのアプリケーションはプレゼンテーション・サービス・カタログを「WebCenter Portal - リソース・カタログ」に組み込みます。その後ユーザーは、ビジネス・インテリジェンス分析、ダッシュボード・ページ、ダッシュボードまたはスコアカード・コンポーネント(戦略マップ、戦略ツリー、KPIウォッチリスト、原因結果マップおよびカスタム・ビュー)を検索して、これらを自身のPortal Frameworkアプリケーション・ページに追加できます。ビジネス・インテリジェンス・オブジェクトに含まれているフィルタ、プロンプトおよびアクションのリンクはすべて、Portal Frameworkアプリケーション・ページまたはポータル・ページ内で機能します。

実行時に、Oracle WebCenter Portalユーザーは、プレゼンテーション・サービス・カタログのフォルダを開いて参照し、分析のビューを表示できます。プレゼンテーション・サービス・カタログに表示されるビュー・タイプは、表、ピボット・テーブル、チャート、ファンネル・チャート、ゲージ、ナラティブ、ティッカおよびタイトルです。プレゼンテーション・サービス・カタログに表示されないビュー・タイプは、ビュー・セレクタ、列セレクタ、論理SQLおよび結果なしのビューです。

ユーザーは、ダッシュボード・フォルダを参照してダッシュボードと関連付けられたページを探すこともできますが、ダッシュボード・ページ内を参照して自身のコンポーネント(ダッシュボードに埋め込まれた分析など)を表示することはできません。ユーザーは、スコアカード全体を自身のPortal Frameworkアプリケーション・ページに組み込むことはできません(スコアカードのコンポーネントのみを組み込むことができます)。

54.6.1.2 Oracle Business Intelligenceプレゼンテーション・サービスを統合するための要件

Oracle Business Intelligenceプレゼンテーション・サービスと統合するPortal Frameworkアプリケーションを作成するには、Oracle JDeveloper 11g リリース1 (11.1.1.6)以降と、必要なOracle BI EE拡張機能およびWebCenter Portal拡張機能をインストール済である必要があります。

Portal Frameworkアプリケーションを適切に作成するには、ライブラリ設定を構成して、weblogic.xmlファイルとweblogic-application.xmlファイルを更新して、セキュリティを適切に構成しておく必要があります。

Portal Frameworkアプリケーションとポータルの両方について、『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Edition開発者ガイド』のOracle BI EEプレゼンテーション・サービス接続の作成に関する項に従って、BIアプリケーションへの接続を設定してセキュリティを構成する必要もあります。第54.6.2項「Oracle BIプレゼンテーション・カタログに接続するための資格証明の構成」の説明に従って、この接続用の資格証明を指定する必要もあります。

次の前提条件が適用されます。

Oracle WebCenter Portal

- データベース接続、コンテンツ・サーバー接続およびFusion Middleware Controlも含めて、WC_Spacesサーバーがインストール済および構成済

OBIEE

- Oracle Business Intelligenceアプリケーション

- OBI Enterprise Editionリリース11.1.1.7.0

- OBIアプリケーション リリース7.9.6.3 (オプション)

- OBIEEはインストール済、構成済で実行中(データベース: OBI Enterprise Edition)

- OBIアプリケーションはインストール済、設定済で、すべてのコンテンツがOBIEE環境から使用可能(オプション)

セキュリティ

OBIEE統合では、WebCenterおよびOBIEE間で同じアイデンティティ・ストア・ユーザー名が移入される必要があります。これは次のいずれかの方法で実行できます。

- WebCenterとOBIEEが同じアイデンティティ・ストアを共有(推奨)

- WCとOBIEEの異なるアイデンティティ・ストア間で、同じユーザー名を維持

54.6.1.3 拡張統合オプション

この項では、ページ上に簡単にドロップできるビジネス・インテリジェンス分析、ダッシュボードおよびスコアカードのコンポーネントなど、リソースの追加について説明します。これらの方法に加えて、WebサービスおよびBI EE論理SQLビュー・オブジェクトを使用して、ビジネス・インテリジェンス・データをFrameworkアプリケーションに埋め込むオプションもあります。Webサービスの使用の詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Editionインテグレーターズ・ガイド』のOracle Business Intelligence Webサービスの概要に関する項を参照してください。BI EE論理SQLビュー・オブジェクトの使用の詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Edition開発者ガイド』のOracle BI EE論理SQLビュー・オブジェクトの使用に関する項を参照してください。

54.6.2 Oracle BIプレゼンテーション・カタログに接続するための資格証明の構成

設計時に、Oracle BIプレゼンテーション・カタログに接続するための資格証明を指定する必要があります。これらの資格証明を使用して、Oracle BIプレゼンテーション・カタログからビジネス・インテリジェンス・オブジェクト(分析、ダッシュボード、スコアカード・コンポーネントなど)のリストが取得されます。

このプロセスによって、プレゼンテーション・サーバーへのログインがアプリケーションの現在のユーザーと同じであること、すべてのアクセス・チェックが現在のユーザーとして実行されること、およびデータが現在のユーザーとしてフェッチされることが保証されます。ADFページに、ユーザーがアクセスできないビジネス・インテリジェンス・オブジェクトが含まれている場合は、ADFページは、ユーザーがこれらのオブジェクトにアクセスするための適切な権限を持っていないことを示すメッセージを返します。

セキュリティが有効になっている場合は、「偽装の実行」パラメータをtrueに設定する必要があります。

この項には次のサブセクションが含まれます:

- 第54.6.2.1項「BIImpersonatorUserの確認」

- 第54.6.2.2項「BIImpersonatorUserの作成」

- 第54.6.2.3項「BIImpersonatorUserへの権限の付与」

54.6.2.1 BIImpersonatorUserの確認

BIImpersonatorUserユーザーが存在するかどうか、そのユーザーに割り当てられたロールが正しいかどうかを確認するには、次の手順を使用します。

1. 管理者アカウントを使用して、Oracle BI EEインスタンス用のWLS管理コンソールを開きます。

2. 「ドメイン構造」ペインに移動して、「セキュリティ・レルム」を選択します。
「レルム」ペインが表示されます。

3. 「レルム」ペインで、<myrealm>を選択します。
「設定」ダイアログが表示されます。

4. 「設定」ダイアログで、「ユーザーとグループ」タブを開きます。

5. BIImpersonatorUserがユーザーのリストに表示されていることを確認します。
BIImpersonatorUserがリストに表示されていない場合は、引き続いて、第54.6.2.2項「BIImpersonatorUserの作成」の説明に従って、BIImpersonatorUserを作成します。

6. 管理者アカウントでFusion Middleware Controlにログインします。

7. 「ナビゲーション」パネルからWeblogic Domainノードを開き、bifoundation_domainを選択します。

8. 「WebLogicドメイン」メニューから、「セキュリティ」→「アプリケーション・ポリシー」を選択します。

9. 「アプリケーション・ポリシー」ページの「検索」で、「アプリケーション・ストライプ」ドロップダウン・リストからobiを選択します。

10. 「プリンシパル・タイプ」ドロップダウン・リストから、Userを選択します。

11. 「名前」フィールドにBIImpersonatorUserを入力し、検索を開始します(図54-36)。

図54-36 「アプリケーション・ポリシー」ペイン - bifoundation_domain

12. 見つかったら、次の内容を確認します。

- リソース名: oracle.bi.server.impersonatorUser

- リソース・タイプ: oracle.bi.server.permission

- 権限アクション: _all_

- 権限クラス: oracle.security.jps.ResourcePermission

13. BIImpersonatorUserが見つからない場合は、引き続いて、第54.6.2.3項「BIImpersonatorUserへの権限の付与」の説明に従って、BIImpersonatorUserに権限を追加します。

54.6.2.2 BIImpersonatorUserの作成

BIImpersonatorUserユーザーを作成して、Oracle BI EEプレゼンテーション・サービス接続を利用し、Oracle BI EEオブジェクトを含むアプリケーションを保護するには、次の手順を実行します。偽装者ユーザーの資格証明をOracle BI EEプレゼンテーション・サービス接続に適用するには、事前にアプリケーションでADFセキュリティが有効になっている必要があります。

偽装ユーザー機能は、Oracle BI EEとADFがOracle Internet Directory (OID)を共有していない場合に、Oracle BIオブジェクトが含まれたアプリケーションを保護します。偽装ユーザーの作成と使用のプロセスを開始する前に、この機能が現在の環境内で構成されていることを確認する必要があります。

この手順を実行する前に、自身または管理者がWebLogic ServerのOracle BI EEレルム内にユーザーを作成して、このレルム内の各ユーザーにBIConsumerグループを割当て済であることを確認してください。詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Edition開発者ガイド』の偽装ユーザーの作成と使用方法に関する項を参照してください。

次の手順に従って、BIImpersonatorUserユーザーを作成します。

1. 管理者アカウントを使用して、Oracle BI EEインスタンス用のWLS管理コンソールを開きます。

2. 「ドメイン構造」ペインに移動して、「セキュリティ・レルム」を選択します。
「レルム」ペインが表示されます。

3. 「レルム」ペインで、<myrealm>を選択します。
「設定」ダイアログが表示されます。

4. 「設定」ダイアログで、「ユーザーとグループ」タブを開きます。

5. 「ユーザー」タブが表示されていることを確認して、「新規」をクリックします。

6. ユーザー名としてBIImpersonatorUserと入力して、パスワードを入力します。

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

54.6.2.3 BIImpersonatorUserへの権限の付与

次の手順に従って、Fusion Middleware Controlを使用してBIImpersonatorUserに権限を付与します。

1. お使いのOracle BI EEインスタンス用のFusion Middleware Controlを開きます。

2. 「ナビゲーション」パネルからWeblogic Domainノードを開き、bifoundation_domainを選択します。
bifoundation_domainペインが表示されます。

3. bifoundation_domainペインで「WebLogicドメイン」メニューを開き、「セキュリティ」→「アプリケーション・ポリシー」を選択します。
「検索」ペインが表示されます。

4. 「アプリケーション・ポリシー」ページの「検索」で、「アプリケーション・ストライプ」ドロップダウン・リストからobiを選択します。

5. 「作成」をクリックします。
「アプリケーション権限の作成」ペインが表示されます(図54-37)。

図54-37 「アプリケーション権限の作成」ペイン

6. 「権限受領者」で、「追加」をクリックします。
「ユーザーの追加」ダイアログが表示されます。

7. 「タイプ」ドロップダウン・リストから、Userを選択します。

8. 「プリンシパル名」フィールドにoracle.bi.server.impersonatorUserを入力し、「OK」をクリックします。

9. 「権限」で、「追加」をクリックします。
「権限の追加」ダイアログが表示されます(図54-38)。

図54-38 「権限の追加」ダイアログ

10. 「権限」を選択し、「権限クラス」フィールドにoracle.security.jps.ResourcePermissionを入力します。

11. 「リソース名」フィールドにoracle.bi.server.impersonatorUserを入力し、検索を開始して「続行」をクリックします。

12. 検索で何も返されなかった場合は、「権限クラス」フィールドにoracle.security.jps.ResourcePermissionを入力し、「リソース名」フィールドにoracle.bi.server.impersonatorUserを入力します。

13. 「選択」をクリックします。

14. 「アプリケーション権限」ページで、「OK」をクリックします。

15. 加えた変更内容が表示されない場合は、次のサーバーを停止して再起動します。

- Oracle BI EEサーバー

- Oracle BI EEプレゼンテーション・サーバー

- WebLogic Server

54.6.3 FrameworkアプリケーションへのOracle Business Intelligenceプレゼンテーション・サービスの統合

この項では、必要なBI拡張機能をインストールして、Oracle Business Intelligenceプレゼンテーション・サービスと統合するPortal Frameworkアプリケーションを作成または変更する方法を説明します。

この項には次のサブセクションが含まれます:

- 第54.6.3.1項「必要なBusiness Intelligence拡張機能のインストール」

- 第54.6.3.2項「Oracle BIプレゼンテーション・サービスと統合するFrameworkアプリケーションの作成」

- 第54.6.3.3項「Frameworkアプリケーションのテスト」

- 第54.6.3.4項「デプロイ後の接続の構成」

- 第54.6.3.5項「Frameworkアプリケーションに含まれているOracle BI EEオブジェクトの保護」

54.6.3.1 必要なBusiness Intelligence拡張機能のインストール

次の手順に従って、必要なBusiness Intelligence拡張機能をインストールします。

1. JDeveloperの「ヘルプ」メニューから、「更新のチェック」を選択します。

2. ウィザードのステップに従って、Oracle BI EE拡張機能を検索、ダウンロードおよびインストールします。必ず次の順序でバンドルをインストールしてください。

- bi-soap-cn_bundle

- bi-vo_bundle

- bi-adf_bundle

- bi-adf-taskflow-extension_bundle

3. ウィザードを使用して、Oracle WebCenter Framework Extensionバンドル(oracle.webcenter.framework_bundle.zip)もダウンロードおよびインストールします。

54.6.3.2 Oracle BIプレゼンテーション・サービスと統合するFrameworkアプリケーションの作成

次の手順に従って、実行時にOracle Business Intelligenceプレゼンテーション・サービス・カタログにアクセスできるPortal Frameworkアプリケーションを作成または変更します。この手順を実行する前に、第54.6.2項「Oracle BIプレゼンテーション・カタログに接続するための資格証明の構成」の説明に従って、BIImpersonatorUserを事前に作成している必要があります。

この項には次のサブセクションが含まれます:

- 第54.6.3.2.1項「FrameworkアプリケーションとJSFページの作成」

- 第54.6.3.2.2項「Oracle BI EEプレゼンテーション・カタログを表示するためのアプリケーションの構成」

- 第54.6.3.2.3項「BI ADFタスク・フロー権限の有効化」

54.6.3.2.1 FrameworkアプリケーションとJSFページの作成

次の手順に従って、Portal Frameworkアプリケーションを作成して、JSFページを追加します。

Portal FrameworkアプリケーションとJSFページを作成するには:

1. Oracle JDeveloperで、新しいWebCenter Portal - Framework applicationを作成します(「標準ポータル機能のアプリケーションの構成」チェック・ボックスを必ず選択してください)。
この場合のユーザー名/パスワードはBIImpersonatorUser/<password>である必要があり、<password>はこのユーザーを作成したときに設定したパスワードです。

2. 『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Edition開発者ガイド』のSSLを構成してOracle BI EEプレゼンテーション・サービス接続を作成する方法に関する項に従って、BIアプリケーションへの接続を作成します。
この接続を作成する際には、必ず「セキュリティが有効な場合に偽装を実行」をtrueに設定して、ユーザー名とパスワードを前述の偽装ユーザーの資格証明(BIImpersonatorUser/<password>)の値に変更してください。

3. ナビゲーション・パネルで、ポータル・プロジェクトを右クリックして、「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます。

4. 「カテゴリ」フィールドのツリー構造で、「Web層」を見つけて開きます。
使用可能なオプションの説明が含まれたリストが「アイテム」フィールドに表示されます。

5. このリストで、「JSFページ」を選択し、「OK」をクリックします。
「JSFページの作成」ダイアログが表示されます。

6. 「JSFページの作成」で、Create an XML Document (*.jspx)フィールドが選択されていることを確認します。JSFページの設定の詳細は、「ヘルプ」ボタンをクリックしてオンライン・ヘルプにアクセスしてください。

7. 「OK」をクリックします。
新たに作成したJSPXページが表示されます。

8. 「コンポーネント・パレット」ペインで、コンポーザを選択します。
フィールドが更新されて、対応するコンポーネント、レイアウトおよび操作が表示されます。

9. 「共通コンポーネント」カテゴリから、モード変更リンクを選択して、ページにドラッグ・アンド・ドロップします。

10. 「共通コンポーネント」カテゴリから、ページ・カスタマイズ可能を選択します。

11. アプリケーションを保存します。

12. 「設計」ビューでページを右クリックして、「認可の編集」を選択します。

13. 「付与先」→「認証済ユーザーの選択」に移動して、「アクション」で、認証済ユーザーにCustomize、Grant、PersonalizeおよびViewという権限を付与します。

54.6.3.2.2 Oracle BI EEプレゼンテーション・カタログを表示するためのアプリケーションの構成

プレゼンテーション・カタログをPortal Frameworkアプリケーションのフォルダ・リストに追加するには、次の手順を実行します。実行時に、カタログが「WebCenter Portal - リソース・カタログ」に表示され、そこでユーザーはビジネス・インテリジェンス・オブジェクトを参照し、それらをPortal Frameworkアプリケーション・ページに追加できます。

プレゼンテーション・カタログをPortal Frameworkアプリケーションのフォルダ・リストに表示するには:

1. Oracle JDeveloperを使用して作成したPortal Frameworkアプリケーションで、「アプリケーション」メニューからポータル・プロジェクトを右クリックして、「プロジェクト・プロパティ」を選択します。
「プロジェクト・プロパティ」ダイアログが表示されます。

2. 「使用可能なプロパティ」ペインで、「テクノロジ・スコープ」を選択して、「使用可能」フィールドから「ビジネス・インテリジェンスADFビュー・コンポーネント」を選択して、「追加」(>)アイコンをクリックしてこの項目をプロジェクトのテクノロジ・スコープに追加します。新規アプリケーションの作成時に、BIテクノロジ・ライブラリを追加することもできます。

3. 「使用可能なプロパティ」ペインで、「ライブラリとクラスパス」を選択して、「ライブラリの追加」をクリックします。
「ライブラリの追加」ダイアログが表示されます。

4. 次のライブラリをプロジェクトに追加して、「OK」をクリックします。

- BI ADFランタイム

- BI ADFタスクフロー

- BI SOAP接続ランタイム

- BIビュー・オブジェクト・ランタイム

5. アプリケーションを保存します。

6. JDeveloperで、デフォルトのリソース・カタログ・ファイル(default-catalog.xml)を開きます。このファイルは、「ポータル」→「Webコンテンツ」→「Oracle」→「webcenter」→portalapp→「カタログ」に配置されています。

7. 次の<customFolder>エントリを<catalogDefinition>→<contents>フォルダの下に追加します。

<customFolder id="oracleBIContent"
name="Oracle BI"
description="Oracle BI Presentation Services Content"
factoryClass="oracle.bi.presentation.rescat.
BICatalogInitialContextFactory"/>

8. Weblogic.xmlを編集して、次のようにoracle.bi.adf.view.slibとoracle.bi.adf.webcenter.slibへの参照を追加します。

<library-ref>
<library-name>oracle.bi.adf.view.slib</library-name>
</library-ref>
<library-ref>
<library-name>oracle.bi.adf.webcenter.slib</library-name>
</library-ref>
</weblogic-web-app>

9. weblogic-application.xmlを編集して、次のようにoracle.bi.adf.model.slibへの参照を追加します。

<library-ref>
<library-name>oracle.bi.adf.model.slib</library-name>
</library-ref>
</weblogic-application>

54.6.3.2.3 BI ADFタスク・フロー権限の有効化

次の手順に従って、お使いのアプリケーションのセキュリティ設定でBI ADFタスク・フロー権限を有効にします。

BI ADFタスク・フロー権限を有効にするには:

1. 「アプリケーション・リソース」ペイン→「META-INF」→「jazn-data.xml」の順にたどって、jazn-data.xmlファイルを開きます。

2. このファイル内で次のコードを探します。

<grantee>
<principals>
<principal>
<class>
oracle.security.jps.internal.core.principals.JpsAnonymousRoleImpl
</class>
<name>anonymous-role</name>
</principal>
</principals>
</grantee>

3. 次の要素を追加します。

<permission>
<class>oracle.adf.controller.security.TaskFlowPermission</class>
<name>/WEB-INF/oracle/bi/presentation/taskflow/
task-flow-definition.xml#task-flow-definition</name>
<actions>customize,personalize,view</actions>
</permission>

例:

<grant>
<grantee>
<principals>
<principal>
<class>oracle.security.jps.internal.core.principals
.JpsAnonymousRoleImpl</class>
<name>anonymous-role</name>
</principal>
</principals>
</grantee>
<permissions>
<permission>
<class>oracle.adf.controller.security.TaskFlowPermission</class>
<name>/WEB-INF/oracle/bi/presentation/taskflow/
task-flow-definition.xml#task-flow-definition</name>
<actions>customize,personalize,view</actions>
</permission>

54.6.3.3 Frameworkアプリケーションのテスト

この項では、次の手順を実行してPortal Frameworkアプリケーションをテストする方法を説明します。

- Oracle BIプレゼンテーション・サービス・カタログのコンテンツを追加して、レポートまたはダッシュボードのプロンプト値を変更します

- ビジネス・インテリジェンス・オブジェクトの初期化パラメータを確認および変更します。

この項には次のサブセクションが含まれます:

- 第54.6.3.3.1項「リソース・カタログへのOracle BIオブジェクトの追加」

- 第54.6.3.3.2項「実行時のビジネス・インテリジェンス・コンテンツの追加」

- 第54.6.3.3.3項「ビジネス・インテリジェンス・オブジェクトのプロンプト値の変更」

- 第54.6.3.3.4項「ビジネス・インテリジェンス・タスク・フローの初期化パラメータの変更」

54.6.3.3.1 リソース・カタログへのOracle BIオブジェクトの追加

Oracle BIコンテンツをPortal Frameworkアプリケーション・ページに追加する前に、Oracle BIプレゼンテーション・カタログに格納されているオブジェクトを「WebCenter Portal - リソース・カタログ」に追加する必要があります。

1. アプリケーションをブラウザで実行します。

2. 管理者としてPortal Frameworkアプリケーションにログインします。

3. 「管理」をクリックします。
WebCenter Portal管理コンソールが表示されます。

4. 「リソース」タブを開きます。

5. 「リソース・カタログ」をクリックします。

6. 「リソース・カタログの作成」をクリックします。

7. 「名前」フィールドに、作成するカタログの名前を入力します。必要に応じて、このダイアログの他のフィールドに情報を入力します。

8. リソース・カタログの「編集」→「表示」をクリックします。

9. 「編集」メニューをクリックしてから、「編集」を選択します。

10. 「追加」メニューから、「ライブラリから追加」を選択します。

11. 「接続」をダブルクリックします。
「BIプレゼンテーション・サービス」フォルダが右側のフレームに表示されます。このフォルダを開いて、Oracle BIオブジェクトを表示します。

12. 追加するオブジェクトを探して選択します。

13. 「追加」をクリックして、選択したオブジェクトをカタログに追加します。

14. 「構成」タブを開いて、先ほど作成したリソース・カタログを「デフォルト・リソース・カタログ」として選択します。

54.6.3.3.2 実行時のビジネス・インテリジェンス・コンテンツの追加

次の手順に従って、ビジネス・インテリジェンスのコンテンツをPortal Frameworkアプリケーションに追加することで、Portal Frameworkアプリケーションをテストします。

1. 作成した.jspxページを実行します。

2. 実行中のページで、「編集」リンクをクリックして編集モードに入ります。

3. 「コンテンツの追加」をクリックします。
「WebCenter Portal - リソース・カタログ」が表示されます。

4. 「Oracle BI」フォルダに移動して開きます。

5. BI接続または接続先のホスト・マシンをクリックします。
カタログのコンテンツが表示されます。

6. .jspxページに追加するオブジェクトの「追加」リンクを探してクリックします。

7. アプリケーションによってこのオブジェクトが正しく追加されたことを確認します。

54.6.3.3.3 ビジネス・インテリジェンス・オブジェクトのプロンプト値の変更

次の手順に従って、分析またはダッシュボードのフィルタやプロンプトの値を変更することで、Portal Frameworkアプリケーションをテストします。

1. 作成した.jspxページを実行します。

2. 実行中のページで、「編集」リンクをクリックして編集モードに入ります。

3. フィルタまたはプロンプトを含む分析またはダッシュボードを追加します。
.jspxページへのビジネス・インテリジェンス・コンテンツの追加の詳細は、第54.6.3.3.2項「実行時のビジネス・インテリジェンス・コンテンツの追加」を参照してください。

4. 「パラメータ」をクリックします。
「編集中のページ」ダイアログが表示されます。

5. 値を変更して、「保存」をクリックします。

6. 変更されたプロンプト値が正しく適用されたことを確認します。

54.6.3.3.4 ビジネス・インテリジェンス・タスク・フローの初期化パラメータの変更

次の手順を使用して、ビジネス・インテリジェンス・タスク・フローの初期化パラメータをテストします。

1. 作成した.jspxページを実行します。

2. 実行中のページで、「編集」リンクをクリックして編集モードに入ります。

3. ビジネス・インテリジェンス・オブジェクトを追加します。
.jspxページへのビジネス・インテリジェンス・コンテンツの追加の詳細は、第54.6.3.3.2項「実行時のビジネス・インテリジェンス・コンテンツの追加」を参照してください。

4. ビジネス・インテリジェンス・オブジェクトを見つけ、「編集」(スパナ)アイコンをクリックします。
「コンポーネント・プロパティ」ダイアログが表示されます。

5. 「パラメータ」タブを開き、オブジェクトのパラメータを変更して、「OK」をクリックします。

6. 変更されたプロンプト値が正しく適用されたことを確認します。

54.6.3.4 デプロイ後の接続の構成

アプリケーションをデプロイした後に、Fusion Middleware Controlを使用して、そのアプリケーションに対する新しいOracle BI EEプレゼンテーション・サービス接続を追加するか、BIImpersonatorUserのユーザー名とパスワードを使用して、そのアプリケーションの既存のOracle BI EEプレゼンテーション・サービス接続を変更します。

これらの接続の変更の詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Edition開発者ガイド』のデプロイ後のプレゼンテーション・サービス接続の追加または変更に関する項を参照してください。

注意:

FrameworkアプリケーションとOracle Business Intelligenceアプリケーションの間で同じアイデンティティ・ストアが共有されていない場合は、該当するユーザーを両方のシステムで作成する必要があります。

54.6.3.5 Frameworkアプリケーションに含まれているOracle BI EEオブジェクトの保護

偽装ユーザーを使用して、Oracle BI EEプレゼンテーション・サービスと統合するPortal Frameworkアプリケーションを保護できます。偽装ユーザーの詳細、および偽装ユーザーを実装してアプリケーションを保護する方法の詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Edition開発者ガイド』の偽装ユーザーを作成して使用する方法に関する項を参照してください。

54.6.4 WebCenter PortalへのOracle Business Intelligenceオブジェクトの統合

次の手順に従って、ポータルとBIオブジェクトの統合を構成します。

- 第54.6.4.1項「デプロイ後のプレゼンテーション・サービス接続の追加または変更」

- 第54.6.4.2項「WebCenter Portalリソース・カタログへのOracle BIオブジェクトの追加」

- 第54.6.4.3項「実行時のOracle BIコンテンツの追加」

- 第54.6.4.4項「ビジネス・インテリジェンス・オブジェクトのプロンプト値の変更」

- 第54.6.4.5項「ビジネス・インテリジェンス・タスク・フローの初期化パラメータの変更」

54.6.4.1 デプロイ後のプレゼンテーション・サービス接続の追加または変更

BIオブジェクトをWebCenter Portalに統合することを開始する前に、まずWebCenter PortalからBIサーバーへの接続を構成する必要があります。Oracle BI EEで提供されているADF MBeanを使用すると、デプロイ済のポータルやBI ADFアプリケーションへの新しい接続を追加できます。デプロイ済アプリケーションの既存の接続を変更することもできます。MBeanは、アプリケーションとともにデプロイされて、デプロイ後にFusion Middleware Controlを使用してアクセスできます。

次の手順を実行する前に、第54.6.2項「Oracle BIプレゼンテーション・カタログに接続するための資格証明の構成」の手順に従って、Oracle BIプレゼンテーション・カタログに接続するための資格証明をあらかじめ指定しておく必要があります。

注意:

ポータルとOracle Business Intelligenceアプリケーションの間で同じアイデンティティ・ストアが共有されていない場合は、該当するユーザーを両方のシステムで作成する必要があります。

次の手順に従って、アプリケーションのデプロイ後に接続を構成します。

1. Fusion Middleware Controlを開いて、次のいずれかの操作を実行して自身のWebLogicドメインを選択します。

- お使いのアプリケーションがBI ADFドメインにデプロイされている場合は、「アプリケーション・デプロイメント <お使いのドメイン>」ツリー・ノードを選択します。

- お使いのアプリケーションがWebCenter Portalドメインにデプロイされている場合は、「WebCenter」ツリー・ノード、「WebCenterポータル」ツリー・ノードおよびwebcenter(11.1.1.4.0) (WC_Spaces)ツリー・ノードの順に選択します。この手順を実行するには、WC_Spacesサーバーが実行サれている必要がある点に注意してください。

2. リストから、「システムMBeanブラウザ」を選択します。
「システムMBeanブラウザ」ペインが表示されます。

3. 「システムMBeanブラウザ」ペインで、次のパスをたどって「ADF接続」ツリー・ノードに移動します。

1. 「アプリケーション定義のMBean」ツリー・ノードを選択します。

2. 「oracle.adf.share.connections」ツリー・ノードを選択します。

3. 「サーバー: <サーバー名>」ツリー・ノードを選択します。
たとえば、Server:DefaultServerやServer:WC_Spacesなどです。

4. 「アプリケーション:<アプリケーション名>」ツリー・ノードを選択します。
たとえば、Application:Application2やApplication:webcenterなどです。

5. ADF接続ツリー・ノードを開きます。

6. 子ADF接続ツリー・ノードを開きます。
対応するMBean情報が「アプリケーション定義のMBean」ペインに表示されます。

4. 「アプリケーション定義のMBean」ペインで、「操作」タブを開いてから、「createConnection」をクリックしてプレゼンテーション・サービス接続を作成します。
「操作:createConnection」ダイアログが表示されます。

5. この接続の必要な値を指定します。
接続タイプの「値」フィールドにBISoapConnectionと入力して、接続名の「値」フィールドに任意の名前を入力して、「起動」をクリックして接続を作成します。

6. 「システムMBeanブラウザ」ペインで、「リフレッシュ」をクリックしてツリーをリフレッシュして、新しい接続を表示します。

7. この接続を変更するには、「システムMBeanブラウザ」ペインでこの接続を探してクリックします。
この接続の情報が「アプリケーション定義のMBean」ペインに表示されます。

8. 「システムMBeanブラウザ」ペインから「ADF接続」に移動して、「属性」タブを開きます。

9. 次に示すようにBISoap接続情報を入力し、「適用」をクリックして変更を適用します。

- OBIEE URLからログイン・ページへの接続には、次の情報が必要です。

context = analytics
host = <host name>
port = 7001 or the local value
protocol = HTTP

- BIImpersonatorUserからの接続には、次の情報が必要です。

username = BIImpersonatorUser
password = <password>

10. 「ナビゲーション」ペインのADFConnectionsフォルダで、「操作」タブを開き、「保存」をクリックして接続を保存します。

11. 「起動」をクリックすると、次のメッセージが表示されます。
"Confirmation Operation executed successfully."

54.6.4.2 WebCenter Portalリソース・カタログへのOracle BIオブジェクトの追加

Oracle BIコンテンツをポータル・ページに追加する前に、Oracle BIプレゼンテーション・カタログに格納されているオブジェクトをWebCenter Portalリソース・カタログに追加する必要があります。

1. 管理者としてWebCenter Portalにログインします。

2. WebCenter Portalで「管理」をクリックします。
「管理」ページが表示されます。

3. 「共有アセット」タブを開いて「リソース・カタログ」をクリックします。

4. 「作成」をクリックします。

5. 「名前」フィールドに、作成するカタログの名前を入力します。必要に応じて、このダイアログの他のフィールドに情報を入力します。

6. 「使用可能」チェック・ボックスを選択して「リソース・カタログ」を使用可能にします。

7. 新しいリソース・カタログを選択して「編集」をクリックします。

8. 「追加」メニューを選択して、「ライブラリから追加」を選択します。

9. 「接続」をダブルクリックします。
「BIプレゼンテーション・サービス」フォルダが表示されます。

10. このフォルダを開いてOracle BIオブジェクトを表示して、追加するオブジェクトを探して選択します。

11. 「追加」をクリックして、選択したオブジェクトをカタログに追加します。
Frameworkアプリケーションへのオブジェクトの追加を続行します。実行時のリソース・カタログの管理の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のリソース・カタログの使用に関する項を参照してください。JDeveloperにおけるリソース・カタログの管理の詳細は、第14章「リソース・カタログの開発」を参照してください。

54.6.4.3 実行時のOracle BIコンテンツの追加

次の手順に従って、ポータル・ページを作成して、このページにOracle BIオブジェクトを追加します。この手順を実行する前に、Oracle BIオブジェクトをWebCenter Portalリソース・カタログに追加しておく必要があります。

1. WebCenter Portalにログインし、新しいポータルを作成するか、既存のポータルにアクセスします。

2. リソース・カタログをそのポータルのデフォルト・カタログとして設定します。

1. 「ページおよびポータル」ドロップダウン・リストから、「管理」を選択してから、「設定」を選択します。「アセット」で、第54.6.4.2項「WebCenter Portalリソース・カタログへのOracle BIオブジェクトの追加」で作成したカタログを「ページ」のデフォルト・リソース・カタログとして選択します。

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

3. 「ページおよびポータル」ドロップダウン・リストから、「作成」→「ページ」を選択します。

4. Oracle BIオブジェクトが格納されているフォルダに移動します。

5. 分析またはダッシュボードを選択して、「追加」をクリックします。
選択したオブジェクトが当該ページに追加されます。

54.6.4.4 ビジネス・インテリジェンス・オブジェクトのプロンプト値の変更

次の手順に従って、分析またはダッシュボードのフィルタやプロンプトの値を変更することで、ポータル・ページをテストします。

1. 作成したページを開きます。

2. 実行中のページで、「ページ・アクション」をクリックしてから、「編集」リンクをクリックして編集モードを開始します。

3. フィルタまたはプロンプトを含む分析またはダッシュボードを追加します。ページへのOracle BIオブジェクトの追加の詳細は、第54.6.4.3項「実行時のOracle BIコンテンツの追加」を参照してください。

4. ページの編集モードを終了せずに、ポータル・ページを保存します。

5. ポータル・ページで、プロンプト値を変更して、「OK」をクリックします。

6. 編集モードを終了して、ページを保存して、アプリケーションによってプロンプト値が正しく適用されたことを確認します。

54.6.4.5 ビジネス・インテリジェンス・タスク・フローの初期化パラメータの変更

次の手順を使用して、ビジネス・インテリジェンス・タスク・フローの初期化パラメータをテストします。

1. 作成したページを開きます。

2. 実行中のページで、「ページ・アクション」をクリックしてから、「編集」リンクをクリックして編集モードを開始します。

3. タスク・フローの一部である分析またはダッシュボードを追加します。.jspxページへのビジネス・インテリジェンス・コンテンツの追加の詳細は、第54.6.4.3項「実行時のOracle BIコンテンツの追加」を参照してください。

4. ページの編集モードを終了せずに、ポータル・ページを保存します。

5. ビジネス・インテリジェンス・オブジェクトを見つけ、「編集」(スパナ)アイコンをクリックします。
「コンポーネント・プロパティ」ダイアログが表示されます。

6. ポータル・ページで、「パラメータ」タブを開き、オブジェクトのパラメータを変更して、「OK」をクリックします。

7. 「パラメータ」タブを開き、オブジェクトのパラメータを変更して、「OK」をクリックします。

8. 編集モードを終了して、ページを保存して、アプリケーションによって変更後のパラメータ値が正しく適用されたことを確認します。

55 JDeveloperを使用したWebCenter Portalのコンポーネントの開発

WebCenter Portalには標準で、情報、ビジネス・アプリケーションおよびビジネス・プロセスにアクセスし、やり取りするための、より効果的で効率的な方法をユーザーに提供する、ポータル、イントラネット、エクストラネットおよびセルフサービス・アプリケーションを迅速かつ容易に作成するための上級者および開発者用のツールが用意されています。WebCenter Portalは、ブラウザベースのツールおよびJDeveloperを使用してカスタマイズできます。

この章では、開発者がJDeveloperを利用して、WebCenter Portalにデプロイして使用できるコンポーネントを開発する方法について説明します。コンポーネントには、ADFタスク・フロー、データ・コントロール、マネージドBean、およびスキン、ページ・スタイル、タスク・フロー・スタイル、ページ・テンプレート、コンテンツ・プレゼンタ表示テンプレート、ナビゲーション、リソース・カタログなどその他のアセットが含まれます。

この章には次の項が含まれます。

- 第55.1項「WebCenter Portalのアセットの開発」

- 第55.2項「WebCenter Portalのタスク・フロー、データ・コントロールおよびマネージドBeanの開発」

対象読者

この項は、JDeveloperとWebCenter Portal拡張機能に関して基本的な知識があり、WebCenter Portalデプロイメントで高度なカスタマイズを実行する必要がある開発者が対象です。

55.1 WebCenter Portalのアセットの開発

この項には次のサブセクションが含まれます:

- 第55.1.1項「WebCenterSpacesResourcesプロジェクトの概要」

- 第55.1.2項「アセット開発のためのJDeveloper環境の設定」

- 第55.1.3項「WebCenter Portalへの直接ダウンロードと直接アップロードの有効化」

- 第55.1.4項「WebCenterSpacesResourcesプロジェクトを開いて参照」

- 第55.1.5項「JDeveloperでのWebCenter Portalアセットの編集」

- 第55.1.6項「WebCenter Portalへのアセットの直接アップロード」

- 第55.1.7項「WebCenter Portalアセットのアーカイブへのエクスポート」

- 第55.1.8項「アセットのラウンドトリップ開発のトラブルシューティング」

55.1.1 WebCenterSpacesResourcesプロジェクトの概要

WebCenter Portalのラウンドトリップ開発機能は、アプリケーション全体を再デプロイせずにWebCenter Portalアセットを作成し変更する、簡単で便利な手段を提供します。ラウンドトリップ開発とは、WebCenter Portalからアセットをダウンロードし、それをJDeveloperにアップロードしてメンテナンスや拡張を行う機能および手法です。変更したアセットはWebCenter Portalにアップロードしてすぐに使用したり、テストしたりできます(図55-1を参照)。

図55-1 WebCenterSpacesResourcesプロジェクトを使用したアセットのラウンドトリップ開発

WebCenter Portalには標準で、スキン、ページ・テンプレートなど、すぐに使用または変更できるいくつかのデフォルトのアセットが用意されています。アセット要件がポータル・ビルダーのブラウザベース編集機能を超える場合は、WebCenterSpacesResourcesというJDeveloperプロジェクト(OTNからダウンロード可能)を使用して、アセットを開発できます。このプロジェクトには、次のWebCenter Portalアセットの作成、変更およびアップロードに必要なすべてが用意されています。

- ページ・テンプレート

- ナビゲーション

- ページ・スタイル

- スキン

- コンテンツ・プレゼンタ表示テンプレート

- リソース・カタログ

- タスク・フロー・スタイル

注意:

この章では、WebCenterSpacesResourcesプロジェクトを使用してアセットのカスタマイズを管理する方法について説明します。アセットの作成/開発の詳細は、第55.1.5.4項「WebCenter Portalのアセットを作成する方法」を参照してください。

アセットのカスタマイズをデプロイする準備が整ったら、WebCenter Portalが実行されているホストの名前とポートをJDeveloperに指定することによって、JDeveloperから直接、ライブWebCenter Portalアプリケーションにアセットをアップロードできます。

または、WebCenter Portalにログインして、関連するアセット管理ページを使用してアセットをアップロードすることもできます。この方法を使用する場合は、図55-2に示すように、アセットをエクスポート・アーカイブ(.earファイル)に保存する必要があります。

図55-2 WebCenterSpacesResourcesプロジェクトを使用したアセットの開発

55.1.2 アセット開発のためのJDeveloper環境の設定

始める前に、次の手順を実行してください。

1. Oracle JDeveloper 11g (11.1.1.7.0)をダウンロードおよびインストールします。
詳細は、第2.2.1項「Oracle JDeveloperのインストール」を参照してください。

2. WebCenter PortalのJDeveloper (11.1.1.8.0)用拡張機能をインストールします。
詳細は、第2.2.2項「JDeveloper用のWebCenter Portal拡張機能のインストール」を参照してください。

3. WebCenter Portalアセット開発のZIPファイル(DesignWebCenterSpaces_11.1.1.8.0.zip)をOracle Technology Networkからダウンロードします。
http://download.oracle.com/otndocs/tech/webcenter/files/DesignWebCenterSpaces_11.1.1.8.0.zip

4. ローカルでコンテンツを解凍します(表55-1)。

表55-1 DesignWebCenterSpaces_11.1.1.8.0.zip - 解凍先フォルダ

解凍先フォルダ

説明

\DesignWebCenterSpaces

DesignWebCenterSpaces.jwsを含みます。

このワークスペースは、WebCenterSpacesResourcesプロジェクト、WebCenter Portalのアセットを編集し再デプロイする設計環境を提供します。

注意: 以前のリリースでは、このワークスペースはWebCenter Portalの共有ライブラリ・リストの構成にも使用されていました。このリリースでは、共有ライブラリ開発用に「WebCenter Portalサーバー拡張機能」ワークスペースを使用する必要があります。詳細は、第55.2項「WebCenter Portalのタスク・フロー、データ・コントロールおよびマネージドBeanの開発」を参照してください。

\copy_to_common

WebCenter Portal WLSTコマンドが含まれるcommonディレクトリを含みます。

WebCenter PortalのWLSTコマンドは、DesignWebCenterSpaces.jwsからポータル・サーバーへ、カスタマイズされたアセットを直接アップロードする際に必要です。

\copy_to_jdev_ext

oracle.webcenter.portal.jarを含みます。

Oracle JDeveloper WebCenter Portal拡張機能にとって必要な更新です。

5. WebCenter PortalのWebLogic Scripting Tool (WLST)コマンドを、JDeveloperがインストールされているOracleホーム・ディレクトリにコピーします。

1. <DesignWebCenterSpaces_Unzip_Location>\copy_to_commonに移動します。

2. commonディレクトリのコピーを作成します。
commonディレクトリは、<DesignWebCenterSpaces_Unzip_Location>\copy_to_commonにあります。

3. <JDeveloper_install_directory>\oracle_commonに移動します。

ヒント:

JDeveloper_install_directoryは、JDeveloperのインストール先でもあるベース・ディレクトリです。つまり、config.properties内でjdeveloper.install.home.directoryとして構成するのと同じディレクトリです(表55-2も参照してください)。

4. commonディレクトリの内容をここにコピーします。

ヒント:

Linuxでは、コマンドcp -r <DesignWebCenterSpaces_Unzip_location>/copy_to_common/common/を使用します。

6. 新バージョンのoracle.webcenter.portal.jarをOracle JDeveloper拡張機能ディレクトリにコピーします。

1. <DesignWebCenterSpaces_Unzip_Location>\copy_to_jdev_extに移動します。

2. oracle.webcenter.portal.jarのコピーを作成します。
oracle.webcenter.portal.jarファイルは<DesignWebCenterSpaces_Unzip_Location>\copy_to_jdev_extにあります。

3. <JDeveloper_install_directory>\jdeveloper\jdev\extensions\に移動します。

ヒント:

JDeveloper_install_directoryは、JDeveloperのインストール先でもあるベース・ディレクトリです。つまり、config.properties内でjdeveloper.install.home.directoryとして構成するのと同じディレクトリです(表55-2も参照してください)。

4. oracle.webcenter.portal.jarファイルをここにコピーします。

7. JDeveloperが開いている場合は、これを再起動します。

55.1.3 WebCenter Portalへの直接ダウンロードと直接アップロードの有効化

ライブのWebCenter Portalアプリケーションまたはテスト環境で実行されているWebCenter Portalアプリケーション用のスキンやページ・テンプレートなどを作成または変更した場合、JDeveloperからWebCenter Portalへ、更新を直接アップロードできます。JDeveloper WebCenterSpacesResourcesプロジェクトからの直接更新を有効にするには、次の操作を行う必要があります。

- WebCenter Portalアプリケーションが実行されているホストの名前とポートをconfig.propertiesに指定します。

- WebCenter Portalにアセットをアップロードできる適切なロールおよび権限を持つことを確認します。次のものが必要です。

- WebLogic Serverロール - monitorおよび

- WebCenter Portalアセット権限 - たとえば、新しいスキンをアップロードするには、Create, Edit, Delete Skins権限を持っている必要があります。

注意:

初期設定では、デフォルトのFusion Middleware管理者(weblogic)のみが、必要なすべての権限を持ちます。

WebCenter Portalのホスト名とポートを構成すると、プロジェクト内で「ポータル・リソースのアップロード」オプションが使用できるようになります。JDeveloperセッションでこのオプションを初めて使用する場合は、WebCenter Portalのログイン名とパスワードを入力する必要があります。セキュリティ上の理由で、資格証明はこれ以降のセッションで保存されませんが、現在のJDeveloperセッションのメモリー内には保存されます。

config.propertiesで接続プロパティを設定し、権限を付与するには:

1. 次の場所にあるconfig.propertiesを開きます。
<解凍先ディレクトリ>\DesignWebCenterSpaces\config.properties

2. 表55-2に示されている、JDeveloperおよびWebCenter Portalインストールに関する詳細を入力します。
config.propertiesファイルには、各プロパティに関する記述と例があります。提供されているデフォルト値は単なるサンプルで、インストール固有の値で置き換える必要があります。

表55-2 直接アップロードを有効にするconfig.properties設定

構成プロパティ

説明

jdeveloper.install.home.directory

JDeveloperのインストール先のベース・ディレクトリ。\jdeveloperに加えて、指定するディレクトリには\wlserver_10.3、\modulesなどが含まれている必要があります。

wlst.executable

WebLogic Scripting Tool (WLST)実行可能ファイルの名前。

wlst.cmd (Windows)またはwlst.sh (Linux)です。

wls.port

WebLogic Server管理コンソールが実行されているポート番号

wls.host

WebCenter Portalアプリケーションが実行され、カスタム共有ライブラリがデプロイされるホスト・マシン

wc.host

WebCenter Portalアプリケーションが実行されているホスト・マシンの名前。

wc.port

WebCenter Portalアプリケーションが実行されているポート番号。

wc.protocol

WebCenter Portal URLプロトコルがhttpか、またはhttpsかを指定します。

wls.webcenter.app.target

WebCenter Portalアプリケーション(webcenter.ear)がデプロイされた管理対象サーバー。たとえば、WC_Spacesです。

クラスタ環境では、WC_Spaces1,WC_Spaces2のように、サーバーのカンマ区切りリストを入力します。

webcenter.app.name

WebCenter Portalアプリケーションの名前。常にwebcenterです。

3. 更新内容をconfig.propertiesに保存します。

4. 表55-3に示すとおり権限を確認し、必要に応じて要求します。

表55-3 JDeveloperでアセットをアップロードおよび管理する権限

アセット・タイプ

必須のロールまたは権限

権限付与元

説明

共有アセット

- monitor

WebLogic Server

- このロールでは、JDeveloperからWebCenter PortalへアセットをアップロードするWLSTスクリプトを実行できます。
Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド.の管理ユーザーおよびロールに関する項も参照してください。

- Create, Edit, Delete AssetType

WebCenter Portal

- この権限により、WebCenter Portalの様々な共有アセットを作成および管理できます。

- Manage Configuration

WebCenter Portal

- このアプリケーションレベルの権限では、ポータル・ビルダー管理へのアクセス権が付与されます。
注意: WebCenter PortalのAdministratorロールには、Create, Edit, Delete AssetsとManage Configurationの両方の権限が含まれます。Oracle Fusion Middleware Oracle WebCenter Portalの管理のアプリケーション・ロールおよび権限の管理に関する項も参照してください。

ポータル・アセット

- monitor

WebLogic Server

- このロールにより、JDeveloperからWebCenter PortalにリソースをアップロードするWLSTスクリプトの実行が可能になります。

- Create, Edit, Delete Assets
(標準の権限モデル)
または

Create, Edit, Delete AssetType
(拡張権限モデル)

WebCenter Portal

- これらの権限により、特定のポータルのアセットを作成および管理できます。
ポータルに応じて標準または拡張のいずれかの権限が適用されます。

- Manage Configuration

WebCenter Portal

- このポータルレベルの権限では、特定のポータルの「アセット」ページへのアクセス権が付与されます。
注意: WebCenter PortalのModeratorロールには、Create, Edit, Delete Assets/AssetTypeとManage Configurationの両方の権限が含まれます。Oracle Fusion Middleware Oracle WebCenter Portalの管理のアプリケーション・ロールおよび権限の管理に関する項も参照してください。

5. 接続をテストするには、サンプル・アセットをアップロードして、WebCenter Portalでそのアセットを使用できることを確認します。
詳細は、第55.1.4項「WebCenterSpacesResourcesプロジェクトを開いて参照」および第55.1.6項「WebCenter Portalへのアセットの直接アップロード」を参照してください。

また、第55.1.8項「アセットのラウンドトリップ開発のトラブルシューティング」も参照してください。

55.1.4 WebCenterSpacesResourcesプロジェクトを開いて参照

1. DesignWebCenterSpaces.jwsワークスペースをダウンロードして解凍します。
第55.1.2項「アセット開発のためのJDeveloper環境の設定」を参照してください。

2. JDeveloperで、DesignWebCenterSpaces\DesignWebCenterSpaces.jwsを開きます(図55-3)。
このワークスペースには、WebCenterSpacesResourcesという名前の、アセット開発専用のプロジェクトがあります。

注意:

WebCenterSpacesExtensionLibraryプロジェクトは無視できます。このプロジェクトはアセット開発には使用されません。

図55-3 DesignWebCenterSpacesワークスペース内のプロジェクト

3. WebCenterSpacesResourcesプロジェクトを開きます。
WebCenterSpacesResourcesプロジェクトには、複数のファイルとフォルダが含まれています(図55-4)。

図55-4 JDeveloperでのWebCenterSpacesResourcesプロジェクトの参照

表55-4では、WebCenterSpacesResourcesプロジェクト内のファイルとフォルダについて説明しています。

表55-4 WebCenterSpacesResourcesプロジェクト内のファイルとフォルダ

構成プロパティ

説明

アプリケーション・ソース

サポート・ファイルおよびフォルダ。

\Web Content

WebCenter Portalのアセットが含まれます。

\oracle\webcenter\siteresources

アセットが含まれているディレクトリ。このフォルダですべてのWebCenter Portalのアセットを開発および管理できます。

\scopedMD

次の共有アセットとポータル・アセットが含まれます。

- 共有アセットはs8bba98ff_4cbb_40b8_beee_296c916a23edという名前のデフォルト・スコープ・ディレクトリに格納されます。
サンプル共有アセットの一部はこのディレクトリで使用可能です。

- ポータル・アセットはポータルの内部IDと同じ名前のポータル固有のディレクトリに格納されます。
ポータル・アセットのサンプルは提供されていません。

詳細は、「共有アセットとポータル・アセット」を参照してください。

\<デフォルト・スコープID>

サンプルの共有アセットが含まれます。

\contenttemplates

サンプルのコンテンツ・プレゼンタ表示テンプレート(content-default-list-item-view.jsff) - サンプル・コンテンツ・リスト・アイテム・ビューが含まれます。

\navigation

サンプルのナビゲーション(Navigation.xml) - SampleNavigationが含まれます。

\pageStyle

空白のページ・スタイル(TemplateHome.jspx) - サンプル・ホーム・ページ・スタイルが含まれます。

\resourceCatalog

サンプルのカタログ(ResourceCatalog.xml) - サンプル・ホーム・ポータル・カタログが含まれます

\siteTemplate

サンプルのページ・テンプレート(Template.jspx) - サンプル・サイド・ナビゲーションが含まれます

注意: このディレクトリは、(ディレクトリ名はsiteTemplateですが)ページ・テンプレートを開発するためのディレクトリです。

\skin

サンプルのスキン(Skin.css) - サンプル・ポータルFXスキンが含まれます。

\taskFlowStyle

サンプルのタスク・フロー・スタイル用のファイル(pform.jsffおよびpform-definition.xml) - サンプル・パラメータ・フォームが含まれます。

\shared

アイコンやイメージなど、アセットが使用するイメージおよびコンテンツ用のMDSのレガシー・ディレクトリです。

これらすべてのアーティファクトをコンテンツ・サーバーに再配置し、コンテンツ・サーバーでアセット・アーティファクト専用のフォルダ構造を使用して、必要に応じてコンテンツを簡単に識別したり移動したりできるようにすることをお薦めします。

MDSに格納されたアーティファクトを移動させない場合は、管理者は、MDS WLSTコマンドexportMetadata/importMetadataを使用して、MDSとの間でコンテンツを移行できます。

\Page Flows

サポート・ファイルおよびフォルダ。

共有アセットとポータル・アセット

WebCenter Portalの場合:

- 共有アセットは、すべてのポータルで使用できます
すべての共有アセットは、WebCenterSpacesResourcesプロジェクト・ディレクトリoracle/webcenter/siteresources/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23edで開発する必要があります。

共有アセットをWebCenter Portalアプリケーションにアップロードするには、Application-Manage ConfigurationおよびCreate, Edit, Delete <AssetType>のWebCenter Portal権限が必要です。

- ポータル・アセットは、特定のポータルでのみ使用できます
ポータルにアップロードできるように、適切なネームスペースの下で特定のポータルのリソースを開発する必要があります。

oracle/webcenter/siteresources/scopedMD/<スペースの内部ID>

同様に、既存のポータルからダウンロードされJDeveloperにインポートされたアセットのみを同じポータルにアップロードして戻すことができます。このようなアセットは異なるポータルにアップロードできません。

アセットを特定のポータルにアップロードするには、Portal-Manage Configuration権限と次のいずれかが必要です。

Create, Edit, Delete Assets (標準権限モデル)
Create, Edit, Delete <AssetType> (拡張権限モデル)

アセットをJDeveloperから直接アップロードする場合は、WebLogic Serverのmonitorロールも必要です。第55.1.3項「WebCenter Portalへの直接ダウンロードと直接アップロードの有効化」を参照してください。

55.1.5 JDeveloperでのWebCenter Portalアセットの編集

WebCenter Portalアセットをゼロから開発する必要はありません。多くの開発者は、WebCenter Portalアプリケーションから既存のアセットをダウンロードしてJDeveloperで編集します。

アセットをJDeveloperに取り込むには、2種類の方法があります。WebCenter PortalからJDeveloperにアセットを直接ダウンロードするか、またはアーカイブ(.earファイル)へアセットをエクスポートし、アセット・アーカイブをJDeveloperにインポートするか、どちらでも可能です。

詳細は、次の項を参照してください。

- 第55.1.5.1項「WebCenter PortalからJDeveloperへのアセットの直接ダウンロード」

- 第55.1.5.2項「WebCenter Portalからアーカイブへのアセットのダウンロード」

- 第55.1.5.3項「JDeveloperへのWebCenter Portalアセットのインポート」

- 第55.1.5.4項「WebCenter Portalのアセットを作成する方法」

55.1.5.1 WebCenter PortalからJDeveloperへのアセットの直接ダウンロード

アセットは、WebCenter PortalのWebCenterSpacesResourcesプロジェクト内からJDeveloperへ直接ダウンロードできます。

1. WebCenter Portal接続の詳細をconfig.propertiesにまだ構成していない場合はその構成を行い、適切なアセット管理権限を要求します。
第55.1.3項「WebCenter Portalへの直接ダウンロードと直接アップロードの有効化」も参照してください。

2. 図55-5に示すように、「ナビゲータ」でWebCenterSpacesResourcesプロジェクトを右クリックし、「サーバーからのポータル・リソースのダウンロード」を選択します。

図55-5 「サーバーからのポータル・リソースのダウンロード」メニュー

3. 図55-6に示すように、「ポータル・リソースのダウンロード」ダイアログで、共有アセット(「アプリケーションレベル・リソース」)またはポータル・アセット(「ポータルレベル・リソース」)のダウンロードを選択します。
これらの選択の詳細は、「共有アセットとポータル・アセット」を参照してください。

図55-6 「ポータル・リソースのダウンロード」ダイアログ

4. 使用可能なアセット名のリストをフィルタリングするには、図55-7に示すように、ダウンロードするアセットのタイプを「リソース・タイプ」メニューから選択します。

図55-7 ダウンロードするアセットのタイプの選択

5. 最後に、ダウンロードするアセットの名前を「リソース名」メニューから選択します。

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

55.1.5.2 WebCenter Portalからアーカイブへのアセットのダウンロード

詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のアセットのダウンロードに関する項を参照してください。

55.1.5.3 JDeveloperへのWebCenter Portalアセットのインポート

WebCenter Portalアセット・アーカイブ(.earファイル)のアセットをWebCenterSpacesResourcesプロジェクトにインポートすると、該当のプロジェクト・ディレクトリにアセットがアップロードされます。

- 共有アセットのインポート先は次のとおりです。
WebCenterSpacesResources\oracle\webcenter\siteresources\scopedMD\
application_ID\resource_type\resource_ID

たとえば、アセットIDがgsr5a8c2fcc_bc7f_4cba_9254_36df58d66e60である共有スキンは、アプリケーション・ディレクトリs8bba98ff_4cbb_40b8_beee_296c916a23edの下に作成されます。

WebCenterSpacesResources\oracle\webcenter\siteresources\scopedMD\
s8bba98ff_4cbb_40b8_beee_296c916a23ed\skin\gsr5a8c2fcc_bc7f_4cba_9254_36df58d66e60

- ポータル・アセットのインポート先は次のとおりです。
WebCenterSpacesResources\oracle\webcenter\siteresources\scopedMD\
Space_ID\resource_type\resource_ID

たとえば、アセットIDがgsre9cbef77_28b2_4f46_a69a_25beac543382であるポータル・スキンは、ポータル・ディレクトリsc48d77f4_ca06_4fa9_8d51_0e23bed74eacの下に作成されます。

WebCenterSpacesResources\oracle\webcenter\siteresources\scopedMD\
sc48d77f4_ca06_4fa9_8d51_0e23bed74eac\skin\gsre9cbef77_28b2_4f46_a69a_25beac543382

JDeveloperで適切なアセット・フォルダを検索できるように、アセットと親ポータル(ポータル・アセットのみ)の内部IDを把握している必要があります。WebCenter Portalでは、内部IDはアセットの「バージョン情報」ダイアログ(図55-8)に公開されます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のアセットについて情報の表示に関する項を参照してください。

図55-8 WebCenter PortalでのアセットIDの確認

内部IDは、表示名のように覚えやすいものではありません。インポートされたアセットを識別するには、「リソースの更新」オプションを使用してその表示名を確認できます。リソース・ディレクトリに移動し、リソース・ファイル(たとえば、mynavigation.xml、myskin.css、mypagetemplate.jpsx、mycatalog.xml)にドリルダウンし、右マウス・メニューから「リソースの更新」をクリックします(図55-9)。

図55-9 JDeveloperでのアセット表示名の確認

アーカイブからWebCenter Portalアセットをインポートするには:

1. 「アプリケーション・ナビゲータ」で、WebCenterSpacesResourcesプロジェクトを右クリックし、「ポータル・リソースのインポート」を選択します。

2. 「ポータル・リソースのインポート」ダイアログで、インポートするアセットを含むアーカイブ・ファイル(.earファイル)の名前を入力するか参照します。
アーカイブがまだ存在しない場合は、WebCenter Portalにログインしてアセットを.earファイルにダウンロードします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のアセットのダウンロードに関する項を参照してください。

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

4. 次のように、アセットに移動します。

- 共有アセットは、次の場所の下にあります。
WebCenterSpacesResources\oracle\webcenter\siteresources\scopedMD\
s8bba98ff_4cbb_40b8_beee_296c916a23ed

- ポータル・アセットは、次の場所の下にあります。
WebCenterSpacesResources\oracle\webcenter\siteresources\scopedMD\<portal_GUID>

注意:

元々、WebCenter Portalで作成されていないアセット、またはWebCenterSpacesResourcesプロジェクトを使用して開発されていないアセットをインポートする場合は、次の場所にインポートされます。

WebCenterSpacesResources\oracle\webcenter\portalapp

このインスタンスで将来の開発も統合するには、WebCenterSpacesResources\oracle\webcenter\siteresources\scopedMDの下の適切な共有アセットまたはポータル・アセットのディレクトリに、アセットを手動で移動させることをお薦めします。

55.1.5.4 WebCenter Portalのアセットを作成する方法

この章では、WebCenter Portalのアセットの開発とデプロイに使用する必要がある環境について説明します。この章では、個々のアセット・タイプおよびその構築方法や変更方法について説明しません。アセットの開発やベスト・プラクティスに関するガイドラインの詳細は、次の該当する章を参照してください。

アセット

章

ページ・テンプレート

ページ・テンプレートの開発

ページ・スタイル

ページ・スタイルの開発

スキン

スキンの開発

ナビゲーション

ナビゲーション・モデルの開発

コンテンツ・プレゼンタ表示テンプレート

コンテンツ・プレゼンタ表示テンプレートの作成

リソース・カタログ

リソース・カタログの開発

タスク・フロー・スタイル

タスク・フロー・スタイルの開発

55.1.6 WebCenter Portalへのアセットの直接アップロード

WebCenter Portalが稼働している場合、JDeveloper環境からWebCenter Portalへ、新しいアセットまたは更新されたアセットを直接デプロイできます。

この方法でアセットをアップロードするには、WebCenter Portal内の適切なアセット管理権限を持っている必要があります。適切な権限がない場合は、アセットをアップロードできません。第55.1.3項「WebCenter Portalへの直接ダウンロードと直接アップロードの有効化」も参照してください。

1. WebCenter Portal接続の詳細をconfig.propertiesにまだ構成していない場合はその構成を行い、適切なアセット管理権限を要求します。
第55.1.3項「WebCenter Portalへの直接ダウンロードと直接アップロードの有効化」も参照してください。

2. JDeveloperでWebCenterSpacesResourcesプロジェクトを開き、アップロードするアセットに移動します。
たとえば、サンプルの共有ナビゲーションSampleNavigationをアップロードするには、次の場所に移動します(図55-10)。

WebCenterSpacesResources\Web Content\oracle\ webcenter\siteresources\scopedMD\s8bba98ff_4cbb_40b8_beee_296c916a23ed\navigation\gsrcc8dab1c_6161_4bb8_8764_127b4ecee01b

図55-10 WebCenter Portalリソース・フォルダへの移動

3. アセットが完全であることを確認します。

4. イメージやアイコンなど、アセットが参照するすべてのアーティファクトが使用可能であり、ターゲット・コンテンツ・サーバー上でアクセス可能であることを確認します。

5. WebCenter Portalにアップロードするアセットに関連付けられているファイルを右クリックし、「サーバーへのポータル・リソースのアップロード」を選択します。
大部分のアセット・タイプでは、1つのファイルが関連付けられています。タスク・フロー・スタイルは例外で、2つのファイル(definition.xmlおよび.jsff)を持ちます。タスク・フロー・スタイルをアップロードするには、definition.xmlファイルを右クリックする必要があります。

6. 要求される場合は、WebCenter Portalユーザー名およびパスワードを入力し、「OK」をクリックします。
アップロード・プロセスが完了したことを伝えるメッセージが表示され、アップロード・ログ・ファイルupload_<asset_type_id>.logの名前と場所も表示されます。

図55-11 アセットのアップロード完了メッセージ

7. アップロード・ログ・ファイルを確認します。
次のメッセージは、アップロードが成功したことを示します。

Imported <temp_log_directory>\<asset_type_id>.ear

このメッセージが表示されない場合は、第55.1.8項「アセットのラウンドトリップ開発のトラブルシューティング」を参照してください。

8. WebCenter Portalにログインし、期待どおりにアセットを使用できることを確認します。

1. WebCenter Portalにログインします。

2. 該当する「アセット」ページに移動します。
共有アセットを確認するには、次のURLに移動します。

http://host:port/webcenter/portal/builder/assets

ポータル・アセットを確認するには、次のURLに移動します。

http://host:port/webcenter/portal/portalName/admin/assets

3. 左側のパネルから該当のアセット・タイプを選択し、アップロードしたアセットが使用可能で、期待どおりに動作することを確認します。
依存イメージなどは、コンテンツ・サーバーで使用可能であり、アクセス可能である必要があります。イメージまたはファイルがない場合は、該当のディレクトリにコピーしたことを確認します。

55.1.7 WebCenter Portalアセットのアーカイブへのエクスポート

なんらかの理由でJDeveloperからWebCenter Portalにアセットを直接アップロードしない、またはできない場合は、アーカイブ(.earファイル)へアセットをエクスポートし、アセットを別の機会にインポートします。

アーカイブへWebCenter Portalアセットをエクスポートするには:

1. 「アプリケーション・ナビゲータ」で、アセット・ディレクトリに移動し、アセット・ファイル(たとえば、myskin.css、mypagetemplate.jpsx、mycatalog.xml)にドリルダウンします。

2. 右マウス・メニューから「ポータル・リソースのエクスポート」をクリックします。

3. 「ポータル・リソースのエクスポート」ダイアログで、エクスポート・アーカイブ・ファイルのパスとファイル名を入力または参照します。たとえば、C:\myskin.earです。

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

アセットをアーカイブからWebCenter Portalにアップロードする手順は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のアセットのアップロードに関する項を参照してください。

注意:

イメージやアイコンなど、アセットが参照するアーティファクトは、アセット・アーカイブには含まれていません。まだの場合は、これらすべてのアーティファクトが、ターゲット・コンテンツ・サーバーで使用可能でありアクセス可能であることを確認してください。

55.1.8 アセットのラウンドトリップ開発のトラブルシューティング

トラブルシューティングに関するこの項には、次のサブセクションが含まれます:

- アセット・アップロード・ログ・ファイルの確認

- アセットをWebCenter Portalにアップロードできない: アクセスが拒否された

- アセットをWebCenter Portalにアップロードできない: java.lang.Exception

アセット・アップロード・ログ・ファイルの確認

アセットをWebCenter Portalにアップロードすると、進行状況の詳細がログ・ファイルに記録されます。ログ・ファイルの名前には、アップロードしているアセットのタイプと一意のIDが、upload_asset_type_id.logの形式で含まれます。たとえば、upload_siteTemplate_17283.logとなります。

ログ・ファイルの場所は、ローカルのtempディレクトリの設定によってそれぞれ異なります。ログ・ファイルの正確な場所は、次のような情報メッセージに表示されます。

図55-12 アセット・アップロード・ログ・ファイルの場所

次のログ・エントリは、アップロード・プロセスが成功したことを示します。

Imported <temp_log_directory>\<asset_type_id>.ear

権限が不足している場合は、次に説明する、「アクセスが拒否されました」エラーまたは「java.lang.Exception」エラーが表示されます。

アセットをWebCenter Portalにアップロードできない: アクセスが拒否された

monitorロールがない場合は、アセット・アップロード・ログ・ファイルに次のエラーが表示されます。

Operation: getScopeName(java.lang.String)  Detail: Access denied. Required roles: Admin, Operator, Monitor, executing subject: principals=[yourusername]

monitorロールはWeblogic Serverロールです。このロールでは、JDeveloperからWebCenter PortalへアセットをアップロードするWLSTスクリプトを実行できます。WebLogic Server管理コンソールを使用してこのロールを付与するようシステム管理者に依頼します。『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』の管理ユーザーおよびロールに関する項も参照してください。

アセットをWebCenter Portalにアップロードできない: java.lang.Exception

WebCenter Portalの任意のアセット、またはアップロードを試みている特定のタイプのアセットを管理する権限がない場合は、アセット・アップロード・ログ・ファイルに次のエラーが表示されます。

javax.management.MBeanException at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:234)
Root Cause: Caused by: java.lang.Exception at
oracle.webcenter.portalframework.genericsiteresources.model.lifecycle.SiteResourcesHelper.updateResource(SiteResourcesHelper.java)

ポータル・ビルダー管理を使用して適切な権限を付与するようWebCenter Portal管理者に依頼します。または、アップロードしようとしているアセットが特定のポータル用の場合は、ポータル・モデレータに連絡して必要な権限を要求してください。表55-3「JDeveloperでアセットをアップロードおよび管理する権限」も参照してください。

55.2 WebCenter Portalのタスク・フロー、データ・コントロールおよびマネージドBeanの開発

この項では、ADFタスク・フロー、データ・コントロールおよびマネージドBeanを、WebCenter Portalで使用するために、独自のカスタム共有ライブラリ(WAR files)でパッケージ化し、デプロイする方法について説明します。

この項では、WebCenterPortalのPortalSharedLibraryプロジェクト(JDeveloper 「WebCenter Portalサーバー拡張機能」テンプレートにより使用可能)についても説明します。このプロジェクトを使用すると、WebCenter Portalで使用するすべてのカスタム共有ライブラリの名前を構成できます。

注意:

「WebCenter Portalサーバー拡張機能」テンプレートを使用して、WebCenter Portal (11.1.1.8.0)の共有ライブラリを構成することをお薦めします。

後方互換性のため、SampleWebCenterSpacesExtension.jwsおよびDesignWebCenterSpaces.jwsを使用してカスタム共有ライブラリを開発しデプロイすると、前述のとおり、引き続きこの方法が機能します。1つの方法しか使用できないため、「WebCenter Portalサーバー拡張機能」テンプレートとDesignWebCenterSpaces.jwsの使用はできません。

WebCenter Portalで独自のADFタスク・フロー、データ・コントロールおよびマネージドBeanを開発、テスト、デプロイおよび使用する方法を理解できるよう、図55-13に単一のタスク・フロー(mytaskflow)の開発ライフサイクルを示します。開発ステップ1から5はこの章に記載されています。

図55-13 ADFタスク・フローの開発ライフサイクル

次の各項では、開発およびデプロイメントのプロセスをさらに詳しく説明します。

- 第55.2.1項「WebCenter Portalサーバー拡張機能テンプレートの理解」

- 第55.2.2項「WebCenter Portalの共有ライブラリ開発の理解」

- 第55.2.3項「WebCenter Portalサーバー拡張機能ワークスペースの作成」

- 第55.2.4項「WebCenter Portalへの追加の共有ライブラリの登録」

- 第55.2.5項「WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)への拡張機能のデプロイ」

- 第55.2.6項「PortalExtensionプロジェクトを使用したWebCenter PortalのADFライブラリ・コンポーネントの開発」

- 第55.2.7項「WebCenter Portal共有ライブラリ開発者用チュートリアル」

- 第55.2.8項「WebCenter Portal共有ライブラリのデプロイメントのトラブルシューティング」

55.2.1 WebCenter Portalサーバー拡張機能テンプレートの理解

「WebCenter Portalサーバー拡張機能」テンプレートを使用して、次の2つのプロジェクトを持つワークスペースを作成します。

- PortalSharedLibrary: デプロイ時に、次のような共有ライブラリextend.spaces.webapp.warを作成するプロジェクト。

- WebCenter Portal用の1つ以上のカスタム共有ライブラリを参照します。

- PortalExtensionプロジェクトから作成されたADFライブラリJARをラップします(使用された場合のみ)。

注意:

このプロジェクトにコードを追加しないでください。このプロジェクトは、他の共有ライブラリを参照し、またはADFライブラリJARを含む、ディスクリプタ・ファイルのみを含みます。

- PortalExtension: タスク・フロー、データ・コントロールおよびマネージドBeanなどのカスタムADFコンポーネントを作成する初期プロジェクト。このプロジェクトをADFライブラリにデプロイできます。ADFライブラリは、extend.spaces.webapp.war共有ライブラリに追加されます。
PortalExtensionプロジェクトで作成したコンポーネントは通常、Java、ADFおよびその他関連するソフトウェア開発技術を必要とします。

この項では、次の操作について説明します。

- 第55.2.1.1項「WebCenter Portalサーバー拡張機能ワークスペースを編成する方法」

- 第55.2.1.3項「PortalExtensionプロジェクト」

- 第55.2.1.2項「PortalSharedLibraryプロジェクト」

55.2.1.1 WebCenter Portalサーバー拡張機能ワークスペースを編成する方法

「WebCenter Portalサーバー拡張機能」ワークスペースには2つのデフォルト・プロジェクトPortalExtensionおよびPortalSharedLibraryが含まれ、それぞれ固有のライブラリとデフォルト・ファイルを含んでいます(図55-14)。

図55-14 「アプリケーション・ナビゲータ」内の「WebCenter Portalサーバー拡張機能」ワークスペース

55.2.1.2 PortalSharedLibraryプロジェクト

PortalSharedLibraryプロジェクトは、図55-15で示すように、WebCenter Portalで使用する1つ以上のカスタム共有ライブラリの登録を可能にし、(PortalExtensionプロジェクトで開発された)タスク・フロー、データ・コントロールおよびマネージドBeanをWebCenter Portalを実行する管理対象サーバーにデプロイするための便利なメカニズムも提供します。

PortalSharedLibraryプロジェクトには、extend.spaces.webappというWARデプロイメント・プロファイルも含まれます。extend.spaces.webapp.warにデプロイする際、(weblogic.xmlに)登録するすべてのカスタム共有ライブラリおよびPortalExtensionプロジェクトを使用して作成する任意のADFライブラリは、extend.spaces.webapp.warに依存するものとして自動的に組み込まれます。

第55.2.4項「WebCenter Portalへの追加の共有ライブラリの登録」および第55.2.5項「WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)への拡張機能のデプロイ」を参照してください。

注意:

PortalSharedLibraryプロジェクトにコードを追加しないでください。このプロジェクトは、他の共有ライブラリを参照し、またはADFライブラリJARを含む、ディスクリプタ・ファイルのみを含みます。

共有ライブラリに関する一般的な情報は、第55.2.2.2項「共有ライブラリ・デプロイメントの一般ドキュメント」を参照してください。

図55-15 PortalSharedLibraryプロジェクト

55.2.1.2.1 extend.spaces.webapp.warのバージョニング

PortalSharedLibraryプロジェクトには、MANIFEST.MFファイルが含まれます。extend.spaces.webapp.warを更新しデプロイするたびに、このMANIFEST.MFファイルを編集して共有ライブラリの実装バージョンを増分します。繰り返すたびに、例55-1に示すように、MANIFEST.MFファイルのImplementation-Version数を増分する必要があります。デフォルトの実装バージョンは11.1.2です。

例55-1 extend.spaces.webappのマニフェスト・ファイル

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: builder
Build-Jdk: 1.6.0_20
Extension-Name: extend.spaces.webapp
Implementation-Label: 11.1.1.8.0
Implementation-Title: extend.spaces.webapp
Implementation-Vendor: Oracle
Implementation-Version: 11.1.2
Specification-Title: extend.spaces.webapp
Specification-Vendor: Oracle
Specification-Version: 11.1.1

実装バージョンを変更する方法の詳細な手順は、第55.2.5項「WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)への拡張機能のデプロイ」を参照してください。

55.2.1.3 PortalExtensionプロジェクト

PortalExtensionプロジェクトは、タスク・フロー、データ・コントロールおよびマネージドBeanなどのカスタム・コンポーネントを作成できる標準ADFプロジェクトです。

PortalExtensionプロジェクトは、ADFライブラリにデプロイされます。このライブラリは、PortalSharedLibraryプロジェクトから生成されたextend.spaces.webapp.war共有ライブラリ・ファイルに依存するものとして自動的に追加されます。第55.2.6項「PortalExtensionプロジェクトを使用したWebCenter PortalのADFライブラリ・コンポーネントの開発」を参照してください。

ADFライブラリの詳細は、第55.2.2.1項「ADFライブラリ開発の一般ドキュメント」を参照してください。

図55-16 PortalExtensionプロジェクト

55.2.2 WebCenter Portalの共有ライブラリ開発の理解

WebCenter Portalには、標準の共有ライブラリextend.spaces.webapp.warが含まれます。このWARファイルには、カスタムADFライブラリ・コンポーネントが格納されている他の共有ライブラリを参照するデプロイメント・ディスクリプタ(weblogic.xml)を含めることができます。

WebCenter Portalで使用する複数のソースから様々な共有ライブラリにデプロイされるカスタム・コードまたはタスク・フローがある場合は、図55-17に示すように、それらをextend.spaces.webappにリストできます。

図55-17 extend.spaces.webapp.warでの複数のカスタム共有ライブラリの参照

この開発モデルは、開発者、顧客、パートナなど、複数のコントリビュータからの追加の共有ライブラリをWebCenter Portalで簡単に利用できる手段を提供するものです。

WebCenter Portalの拡張機能を含む新しい共有ライブラリをデプロイする場合は必ず、WebCenter Portalに共有ライブラリの名前を登録し、extend.spaces.webapp.warを再デプロイする必要があります。詳細は、第55.2.4項「WebCenter Portalへの追加の共有ライブラリの登録」を参照してください。

このガイドでは、ADFタスク・フロー、データ・コントロールおよびマネージドBeanを開発し、カスタム共有ライブラリにパッケージ化する方法については説明しません。したがって、手法と手順は、WebCenter Portalデプロイメントに固有のものではありません。共有ライブラリを初めて開発する場合は、次にリストするドキュメントを参照することをお薦めします。

- 第55.2.2.1項「ADFライブラリ開発の一般ドキュメント」

- 第55.2.2.2項「共有ライブラリ・デプロイメントの一般ドキュメント」

このガイドでは、「WebCenter Portalサーバー拡張機能」テンプレートを使用してWebCenter Portalで使用する共有ライブラリを参照する方法について説明します。表55-5では、ADFライブラリおよび共有ライブラリの開発プロセスの概要について説明しており、WebCenter Portalに固有な情報を強調表示し、適用可能な他のドキュメントを示しています。

表55-5 WebCenter PortalのADFライブラリおよび共有ライブラリの開発とデプロイ

Subject

WebCenter Portalドキュメント

一般ドキュメント

ADFライブラリ・コンポーネントの作成

WebCenter Portalは、タスク・フロー、データ・コントロールおよびマネージドBeanなど、ADFライブラリJARにデプロイされるいくつかのコンポーネント・タイプをサポートします。

WebCenter Portalのタスク・フロー、データ・コントロールまたはマネージドBeanを標準ADFライブラリ・コンポーネントと同じ方法で作成します。

または、WebCenter Portalが提供する初期プロジェクトを使用します。第55.2.6項「PortalExtensionプロジェクトを使用したWebCenter PortalのADFライブラリ・コンポーネントの開発」を参照してください。

第55.2.7項「WebCenter Portal共有ライブラリ開発者用チュートリアル」も参照してください。

『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の再利用可能なコンポーネントの概要に関する項では、ADFライブラリJARにデプロイできる、タスク・フローなどの様々なタイプの再利用可能なADFコンポーネントについて説明しています。

サブセクション拡張機能ライブラリに関する項はWebCenter Portalに適用されないことに注意してください。

『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の再利用可能なコンポーネントの作成に関する項も参照してください。

- 命名規則

WebCenter Portalで使用する各ADFライブラリJARファイルのファイル名は一意である必要があります。内容が完全に異なっていても、同じ名前を持つ2つのADFライブラリJARファイルの追加はできません。

『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の命名規則に関する項も参照してください。

- 接続の管理

ADFライブラリJARが接続を利用する場合は、同じ接続名と詳細情報を使用してWebCenter Portalに接続を手動で登録する必要があります(ADFライブラリJAR内の接続はWebCenter Portalの接続を公開しないことも含めて)。

WebCenter Portalの接続を作成するには、Fusion Middleware ControlまたはWLSTコマンドを使用する必要があります。

WebCenter Portal固有の接続を追加するには、Oracle Fusion Middleware Oracle WebCenter Portalの管理のツールとサービスの管理に関する項を参照してください。

データベース接続を追加するには、『Oracle Fusion Middleware管理者ガイド』のJDBCデータ・ソースの作成と管理に関する項を参照してください。

Webサービス接続を追加するには、システムMBeanブラウザを使用してADFConnections MBeanを構成してください。Oracle Fusion Middleware Oracle WebCenter Portalの管理のシステムMBeanブラウザに関する項と『Oracle Fusion Middleware Oracle Application Development Framework管理者ガイド』のWebサービス接続に関する項を参照してください。

『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の接続のネーミングの考慮事項に関する項も参照してください。

- ディスクリプタの組込み

web.xmlおよびapplication.xmlなど、カスタム共有ライブラリのディスクリプタは、WebCenter Portalアプリケーションでデプロイされた対応するディスクリプタとマージします。WebCenter Portalインストールの破損を避けるには、カスタム共有ライブラリにディスクリプタ・ファイルを組み込まないことをお薦めします。

- バージョニング

ADFライブラリJARを追加またはカスタム共有ライブラリを参照するために、WebCenter Portal共有ライブラリWARファイル(extend.spaces.wepapp.war)を再デプロイするたびに、共有ライブラリ実装バージョン番号を増分する必要があります。

詳細は、第55.2.1.2.1項「extend.spaces.webapp.warのバージョニング」および第55.2.5項「WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)への拡張機能のデプロイ」を参照してください。

ADFライブラリJARへのコンポーネントのパッケージ化

タスク・フロー、データ・コントロールまたはマネージドBeanを標準ADFライブラリJARにパッケージ化します。

または、PortalExtension初期プロジェクトを使用します。詳細は、第55.2.6項「PortalExtensionプロジェクトを使用したWebCenter PortalのADFライブラリ・コンポーネントの開発」を参照してください。

『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の再使用可能なADFコンポーネントのADFライブラリへのパッケージ化に関する項で、タスク・フローなど再使用可能なコンポーネントをADFライブラリJARファイルにパッケージ化する方法について説明しています。

サブセクションJDeveloper JARファイルを配置してアクセスする方法に関する項はWebCenter Portalに適用されないことに注意してください。

ADFライブラリ・コンポーネントの共有ライブラリへの追加

WebCenter PortalでADFライブラリ・コンポーネントを使用するには、次の操作が必要です。

1. ADFライブラリ・コンポーネントを共有ライブラリWARファイルへデプロイします。
『Oracle Fusion Middleware Oracle WebLogic Serverアプリケーションの開発』の共有Java EEライブラリとオプション・パッケージの作成に関する項を参照してください。

2. WebCenter Portalがデプロイされている管理対象サーバーに共有ライブラリをデプロイします。

3. WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)へ共有ライブラリを登録します。

4. WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)の新しいバージョンをデプロイします。

5. Fusion Middleware ControlまたはWLSTを使用して、カスタムADFライブラリ・コンポーネントに必要な任意の接続を作成します。

6. WebCenter Portalのデプロイ先の管理対象サーバーを再起動します。

注意: ADFライブラリ・コンポーネントをWebCenter Portal共有ライブラリWAR (extend.spaces.webapp.war)に直接追加できます。詳細は、第55.2.5項「WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)への拡張機能のデプロイ」を参照してください。

『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のプロジェクトへのADFライブラリ・コンポーネントの追加に関する項で、タスク・フローなどADFライブラリ・コンポーネントをプロジェクトにデプロイする方法について説明しています。

この項の情報は、WebCenter Portalに適用されません。

ADFライブラリ・コンポーネントの使用

WebCenter Portalのリソース・カタログのADFライブラリ・アダプタは、extend.spaces.webapp.warを介してデプロイおよび参照される任意のタスク・フロー、データ・コントロールおよびマネージドBeanを自動的に認識し、それらをWebCenter Portalのリソース・レジストリに追加します。リソース・レジストリのカスタム・コンポーネントは、リソース・カタログを介して、ページ・ポータルにドロップできるコンポーネントとしてWebCenter Portalユーザーに公開されます。

1. WebCenter Portalにログインします。

2. カスタム・コンポーネントをリソース・カタログに追加します。
Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のリソース・カタログへのリソースの追加に関する項を参照してください。

3. リソース・カタログにアクセスできるページを開きます。

4. ページにカスタム・コンポーネントを追加します。
Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のページへのコンポーネントの追加に関する項を参照してください。

『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFライブラリ・コンポーネントの使用に関する必知事項に関する項で、様々な種類のADFライブラリ・コンポーネントがJDeveloperでどのように表示されるかについて説明しています。WebCenter Portalの場合、タスク・フロー、データ・コントロールおよびマネージドBeanに関する情報のみ適用されます。

共有ライブラリWARの作成

「WebCenter Portalサーバー拡張機能」テンプレートは、WebCenter Portal共有ライブラリWAR extend.spaces.webapp.warのデプロイメント・プロファイルを提供します。

詳細は、第55.2.3項「WebCenter Portalサーバー拡張機能ワークスペースの作成」を参照してください。

『Oracle Fusion Middleware Oracle WebLogic Serverアプリケーションの開発』の共有Java EEライブラリの作成に関する項で、共有ライブラリWARファイルを作成する方法について説明しています。

共有ライブラリWARのデプロイ

「WebCenter Portalサーバー拡張機能」テンプレートは、WebCenter Portal共有ライブラリWAR extend.spaces.webapp.warの再デプロイを可能にします。

詳細は、第55.2.5項「WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)への拡張機能のデプロイ」を参照してください。

『Oracle Fusion Middleware Oracle WebLogic Serverアプリケーションの開発』の共有Java EEライブラリと依存アプリケーションのデプロイに関する項で、共有ライブラリWARファイルをデプロイする方法について説明しています。

以前の共有ライブラリ・バージョンの回復

WebLogic Server管理コンソールを使用して、以前の共有ライブラリWARバージョンを回復させるか、不要なバージョンを削除します。

詳細は、第55.2.5.3項「以前のWebCenter Portal共有ライブラリ・バージョンへの回復」を参照してください。

『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFライブラリJARのプロジェクトからの削除に関する項で、JDeveloperでADFライブラリ・コンポーネントを削除する方法について説明しています。

この項の情報は、WebCenter Portalに適用されません。

55.2.2.1 ADFライブラリ開発の一般ドキュメント

- ADFタスク・フロー、データ・コントロールおよびマネージドBeanの作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

- 『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のアプリケーション・コンポーネントの再使用に関する項も参照してください。

55.2.2.2 共有ライブラリ・デプロイメントの一般ドキュメント

- 共有ライブラリのバージョニングの詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverアプリケーションの開発』の共有Java EEライブラリと依存アプリケーションのデプロイに関する項を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverアプリケーションの開発』の共有Java EEライブラリとオプション・パッケージの作成に関する項も参照してください。

55.2.3 WebCenter Portalサーバー拡張機能ワークスペースの作成

この項では、「WebCenter Portalサーバー拡張機能」ワークスペースをJDeveloperで作成する方法について説明します。このワークスペースを使用して次のことができます。

- 使用する1つ以上のカスタム共有ライブラリをWebCenter Portalに登録します。

- タスク・フロー、データ・コントロールまたはマネージドBeanなどWebCenter PortalのカスタムADFコンポーネントを作成し、デプロイします。

「WebCenter Portalサーバー拡張機能」ワークスペースを作成するには:

1. Oracle JDeveloper 11g (11.1.1.7.0)をダウンロードおよびインストールします。
詳細は、第2.2.1項「Oracle JDeveloperのインストール」を参照してください。

2. WebCenter PortalのJDeveloper (11.1.1.8.0)用拡張機能をインストールします。
詳細は、第2.2.2項「JDeveloper用のWebCenter Portal拡張機能のインストール」を参照してください。

3. JDeveloperを開き、「ファイル」→「新規」を選択します。

4. 「新規ギャラリ」ダイアログで「一般」ノードを開き、「アプリケーション」を選択します。

5. 「項目」リストで、「WebCenter Portalサーバー拡張機能」を選択し、「OK」をクリックします。
図55-18を参照してください。

図55-18 「新規ギャラリ」ダイアログ

注意:

この時点では、WebCenter Portalサーバー拡張機能ウィザードの最初のページが表示されています。このウィザードには、次の各手順で説明する4つのページがあります。

6. 図55-19に示すように、「WebCenter Portalサーバー拡張機能の作成」ダイアログで、「アプリケーション名」フィールドにワークスペースの名前を入力します。

図55-19 WebCenter Portal拡張機能の作成ウィザード(ステップ1/4)

7. 「ディレクトリ」フィールドにワークスペースを格納するベース・ディレクトリへのパスを入力するか、デフォルト・パスを受入れます。
例:

/scratch/jdeveloper/mywork/MyPortalExtension

オプションで、「参照」ボタンをクリックして、目的のディレクトリに移動します。

8. オプションで、「アプリケーション・パッケージの接頭辞」を入力します。
この接頭辞は、ワークスペース内で作成されるJavaクラス、インタフェースおよびパッケージに使用されます。たとえば、共通の接頭辞パターンは、com.oracleのようにcom.companyDomainNameです。

ヒント:

この時点で「終了」をクリックすると、デフォルトのポータル・プロジェクト名とディレクトリを使用したプロジェクトを作成できます。次の手順では、ウィザードの残りのページについて説明を続けます。

9. 「次へ」をクリックします。

10. 図55-20に示すように、ウィザードのプロジェクト1名前の部分に「プロジェクト名」を入力するか、またはデフォルト名のPortalExtensionのままにします。
このプロジェクトには、WebCenter PortalのカスタムADFコンポーネント(タスク・フロー、データ・コントロールおよびマネージドBean)を構築し、テストするために必要なプロジェクト・テクノロジ・コンポーネントがすべて用意されています。

図55-20 WebCenter Portalサーバー拡張機能の作成ウィザード(ステップ2/4)

11. プロジェクトのデフォルト・ディレクトリを変更する場合は、ディレクトリを入力するか、「参照」ボタンを使用してディレクトリを選択します。

12. 必要に応じて、「プロジェクト・テクノロジ」を追加します。
プロジェクト・テクノロジはテクノロジ・スコープとも呼ばれ、プロジェクト内の特定の機能を提供するために設計されたライブラリとファイルのコレクションです。

注意:

テクノロジ・スコープは、特定のプロジェクトで使用される様々なテクノロジの識別に使用できる、プロジェクト上の属性です。これらの属性は、作業時にユーザーを支援するためにJDeveloper内でのみ使用されます。テクノロジ・スコープでは、新規ギャラリおよびメニューとパレットに表示される選択がフィルタ処理されるため、作業時に最も適切な項目のみ表示されます。テクノロジ・スコープは、プロジェクト自体のデータには影響しません。詳細は、JDeveloperオンライン・ヘルプを参照してください。

13. 必要に応じて、「生成済コンポーネント」タブおよび「関連ライブラリ」タブを選択して、プロジェクトに追加される別の構成ファイルおよびライブラリを確認します。

14. 「次へ」をクリックします。

15. 図55-22に示すように、必要に応じて、Javaソース・ファイルのデフォルトのパッケージ名とディレクトリを編集し、プロジェクトのクラス・ファイルを出力します。

図55-21 WebCenter Portalサーバー拡張機能の作成ウィザード(ステップ3/4)

16. 図55-22に示すように、ウィザードのプロジェクト2名前の部分にプロジェクト名を入力するか、またはデフォルト名のPortalSharedLibraryのままにします。
このプロジェクトを使用して、WebCenter Portalで使用する1つ以上の共有ライブラリを登録し、PortalExtensionプロジェクトを使用して構築したカスタムADFコンポーネントをデプロイできます。第55.2.5項「WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)への拡張機能のデプロイ」を参照してください。

図55-22 WebCenter Portalサーバー拡張機能の作成ウィザード(ステップ4/4)

17. プロジェクトのデフォルト・ディレクトリを変更する場合は、ディレクトリを入力するか、「参照」ボタンを使用してディレクトリを選択します。

18. 必要に応じて、テクノロジ・スコープとも呼ばれる「プロジェクト・テクノロジ」を追加します。

注意:

テクノロジ・スコープは、特定のプロジェクトで使用される様々なテクノロジの識別に使用できる、プロジェクト上の属性です。これらの属性は、作業時にユーザーを支援するためにJDeveloper内でのみ使用されます。テクノロジ・スコープでは、新規ギャラリおよびメニューとパレットに表示される選択がフィルタ処理されるため、作業時に最も適切な項目のみ表示されます。テクノロジ・スコープは、プロジェクト自体のデータには影響しません。詳細は、JDeveloperオンライン・ヘルプを参照してください。

19. 必要に応じて、「生成済コンポーネント」タブおよび「関連ライブラリ」タブを選択して、プロジェクトに追加される別の構成ファイルおよびライブラリを確認します。

20. 「終了」をクリックします。

55.2.4 WebCenter Portalへの追加の共有ライブラリの登録

WebCenter Portalで使用するカスタム・タスク・フロー、データ・コントロールまたはマネージドBeanを含む共有ライブラリが1つ以上ある場合は、WebCenter Portalの共有ライブラリextend.spaces.webapp.warに関連付けられたweblogic.xmlファイルに登録する必要があります。

1. PortalSharedLibraryプロジェクトを選択します(図55-23)。
WebCenter Portal拡張機能ワークスペースをまだ作成していない場合は、第55.2.3項「WebCenter Portalサーバー拡張機能ワークスペースの作成」を参照してください。

図55-23 PortalSharedLibraryプロジェクト

2. デプロイメント・ディスクリプタweblogic.xmlがPortalSharedLibrary\Web Content\WEB-INFの下にない場合は、次の手順でデプロイメント・ディスクリプタを作成します。

1. 「新規」→「デプロイメント・ディスクリプタ」→「WebLogicデプロイメント・ディスクリプタ」を選択します。

2. 「OK」を選択します。

3. リストからweblogic.xmlを選択します(図55-24)。

図55-24 WebLogicデプロイメント・ディスクリプタweblogic.xmlの作成

4. 「終了」を選択します。

3. weblogic.xml (PortalSharedLibrary\Web Content\WEB-INFの下)を開きます。
最初は、追加の共有ライブラリはファイルにリストされていません。

4. 「概要」ページで、「ライブラリ」を選択します。

5. WebCenter Portalで使用する各共有ライブラリの「ライブラリ名」を指定します。
図55-25に示すように、単一の共有ライブラリまたは複数の共有ライブラリを登録できます。

必要に応じて、「ヘルプ」アイコンをクリックして詳細を表示します。

図55-25 weblogic.xml - 複数の共有ライブラリ参照

6. 参照する各共有ライブラリがWebCenter Portal管理対象サーバー(デフォルト名WC_Spaces)にデプロイされていることを確認します。

7. 共有ライブラリ参照に含まれるWebCenter Portal共有ライブラリWAR (extend.spaces.webapp.war)の新しいバージョンを再デプロイします。
MANIFEST.MFのバージョン番号を増分してください。詳細は、第55.2.5項「WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)への拡張機能のデプロイ」を参照してください。

55.2.5 WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)への拡張機能のデプロイ

この項では、WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)に拡張機能をデプロイする方法について説明します。拡張機能は次の場所のいずれかにあります。

- weblogic.xmlに登録されているタスク・フロー、データ・コントロールまたはマネージドBeanを含む既存の共有ライブラリ。
第55.2.4項「WebCenter Portalへの追加の共有ライブラリの登録」を参照してください。

- PortalExtensionプロジェクトから作成され、WebCenter Portal共有ライブラリに組み込まれたADFライブラリJAR。
第55.2.6項「PortalExtensionプロジェクトを使用したWebCenter PortalのADFライブラリ・コンポーネントの開発」を参照してください。

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

- 第55.2.5.1項「ポータル・サーバーへの拡張機能の直接デプロイ」

- 第55.2.5.2項「アーカイブへの拡張機能のデプロイ」

- 第55.2.5.3項「以前のWebCenter Portal共有ライブラリ・バージョンへの回復」

55.2.5.1 ポータル・サーバーへの拡張機能の直接デプロイ

JDeveloperからWebCenter Portalへ拡張機能をデプロイする前に、次の手順を実行します。

- 少なくともWebLogic Monitorロールがあることを確認します。
ロールの詳細は、Oracle Fusion Middleware Oracle WebLogic Serverのロールとポリシーを使用したリソースの保護のユーザー、グループおよびセキュリティ・ロールに関する項を参照してください。

- WebCenter Portalが稼働している管理対象サーバーへの接続が存在することを確認します。
接続の作成の詳細は、第7章「WebLogic管理対象サーバー接続の作成」を参照してください。

- 共有ライブラリのバックグラウンド情報は、『Oracle Fusion Middleware Oracle WebLogic Serverアプリケーションの開発』の共有Java EEライブラリとオプション・パッケージの作成に関する項を参照してください。

JDeveloperからWebCenter Portalへ拡張機能をデプロイするには:

1. デプロイする拡張機能を含むワークスペースをJDeveloperで開きます。
第55.2.4項「WebCenter Portalへの追加の共有ライブラリの登録」および第55.2.6項「PortalExtensionプロジェクトを使用したWebCenter PortalのADFライブラリ・コンポーネントの開発」も参照してください。

2. 「アプリケーション・ナビゲータ」で、「PortalSharedLibrary」→「アプリケーション・ソース」→「META-INF」フォルダへ移動します。

3. テキスト・エディタでMANIFEST.MFファイルを開きます。

4. Implementation-Version番号を増分します。デフォルト・バージョンはImplementation-Version: 11.1.2です。

注意:

WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)を更新および再デプロイするたびに、共有ライブラリImplementation-Version番号を増分する必要があります。それ以外の場合は、WebLogic Serverの「デプロイメント - ログ」タブからエラーが報告されます。詳細は、第55.2.1.2項「PortalSharedLibraryプロジェクト」を参照してください。

5. 「アプリケーション・ナビゲータ」で、「PortalSharedLibrary」プロジェクトを右クリックし、「デプロイ」、「extend.spaces.webapp」の順に選択します(図55-26)。

注意:

extend.spaces.webappは、サーバーにデプロイしようとしている共有ライブラリに対する、デプロイメント・プロファイルの名前であることに注意してください。後続のデプロイメント・アクションにより作成された共有ライブラリは、extend.spaces.webapp.warと呼ばれます。

図55-26 共有ライブラリextend.spaces.webappの選択

6. 「デプロイ」ダイアログで、「アプリケーション・サーバーへのデプロイ」を選択して「次へ」をクリックします(図55-27)。

図55-27 ポータル拡張機能デプロイメント・アクション

7. 共有ライブラリをデプロイするWebLogic Serverを指す接続(たとえばWC_Spaces)を選択し、「次へ」を選択します。

8. 図55-28に示すように、「extend.spaces.webappのデプロイ」ダイアログで、「ドメイン内の選択したインスタンスへのデプロイ」を選択します。

図55-28 デプロイメント・オプションの選択

9. 図55-29に示すように、サーバーのリストからWebCenter Portalがデプロイされている管理対象サーバーを選択します。

注意:

管理対象サーバーの名前は、システム管理者がサーバーをどのように設定したかによって異なります。デフォルトでは、名前はWC_Spacesですが、この名前はシステムによって異なる場合があります。

図55-29 管理対象サーバーの選択

10. 図55-30に示すように、「共有ライブラリとしてデプロイ」を選択します。

注意:

この手順は重要です。「共有ライブラリとしてデプロイ」を選択する必要があります。それ以外の場合は、デプロイメントは成功しません。

図55-30 「共有ライブラリとしてデプロイ」を選択

11. 「次へ」をクリックします。

12. 「デプロイメント・サマリー」画面でデプロイメント・オプションを確認して「終了」をクリックし、ポータル拡張機能をサーバーへデプロイします。

13. 「デプロイメント - ログ」タブを開き、デプロイメントの問題を調べます。デプロイメントが成功すると、次のログ・エントリが表示されます: 「Application Deployed Successfully」(第55章「「デプロイメント - ログ」タブ」を参照)。

図55-31 「デプロイメント - ログ」タブ

14. 新しいデプロイメントを確認するには、WebLogic Server管理コンソールにログインし、デプロイメントの概要ページへ移動して表示される実装バージョンを確認します。

1. WebLogicサーバーの管理コンソールにログインします。

2. 「デプロイメント」をクリックし、extend.spaces.webappを見つけます。

3. extend.spaces.webapp共有ライブラリのエントリを書き留め、MANIFEST.MFファイルで以前に更新した実行バージョンのものであることを確認します。第55.2.1.2.1項「extend.spaces.webapp.warのバージョニング」も参照してください。

注意:

WebLogic Serverは、アプリケーションが起動された時点の最新の共有ライブラリ・バージョンのみを使用します。変更、ビルド、デプロイ、テストを何度も繰り返した場合、デフォルトでは、増分バージョンが保持されます。管理コンソールを使用して不要な共有ライブラリ・バージョンを削除できますが、最初のバージョン(extend.spaces.webapp(11.1.1,11.1.1))をバックアップとして保持して、必要に応じてデフォルト動作を回復できるようにすることをお薦めします。

15. (オプション)カスタムADFライブラリ・コンポーネントに必要な場合のある接続を次の手順で作成します。

- データベース接続を追加するには、『Oracle Fusion Middleware管理者ガイド』のJDBCデータ・ソースの作成と管理に関する項を参照してください。

- Webサービス接続を追加するには、Fusion Middleware ControlのシステムMBeanブラウザを使用してADFConnections MBeanを構成してください。Oracle Fusion Middleware Oracle WebCenter Portalの管理のシステムMBeanブラウザに関する項と『Oracle Fusion Middleware Oracle Application Development Framework管理者ガイド』のWebサービス接続に関する項を参照してください。

- ポートレット・プロデューサまたはコンテンツ・リポジトリ接続など、WebCenter Portal固有の接続タイプを追加するには、Oracle Fusion Middleware Oracle WebCenter Portalの管理のツールとサービスの管理に関する項を参照してください。

16. WebCenter Portalが稼働している管理対象サーバーを再起動します。
この手順は、共有ライブラリのタスク・フロー、データ・コントロールおよびマネージドBeanをWebCenter Portalリソース・レジストリで表示するために必要です。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のWebCenter Portalアプリケーション・デプロイメントのための管理対象サーバーの起動と停止に関する項を参照してください。

注意:

管理対象サーバーの名前は、システム管理者がサーバーをどのように設定したかによって異なります。デフォルトでは、名前はWC_Spacesですが、この名前はシステムによって異なる場合があります。

17. WebCenter Portalにログインし、すべての新しくデプロイされたタスク・フロー、データ・コントロールまたはマネージドBeanがリソース・レジストリで使用可能であることを確認します。

デプロイに成功したコンポーネントがリソース・レジストリに追加されると、それらをポータル・ページへのドラッグ・アンド・ドロップで使用できるようにするリソース・カタログへ追加できます。Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のリソース・レジストリに関する項も参照してください。

55.2.5.2 アーカイブへの拡張機能のデプロイ

ポータル・サーバーへの接続、またはポータル・サーバー上でextend.spaces.webapp共有ライブラリをデプロイする権限を持っていない場合は、extend.spaces.webapp共有ライブラリの拡張機能をアーカイブ(.warファイル)にデプロイして、その.warファイルをWebCenter Portalを実行している管理対象サーバーにデプロイをする管理者に渡します。

extend.spaces.webapp共有ライブラリの拡張機能をアーカイブにデプロイするには:

1. デプロイする拡張機能を含むワークスペースをJDeveloperで開きます。
第55.2.4項「WebCenter Portalへの追加の共有ライブラリの登録」および第55.2.6項「PortalExtensionプロジェクトを使用したWebCenter PortalのADFライブラリ・コンポーネントの開発」も参照してください。

2. 「アプリケーション・ナビゲータ」で、「PortalSharedLibrary」→「アプリケーション・ソース」→「META-INF」フォルダへ移動します。

3. テキスト・エディタでMANIFEST.MFファイルを開きます。

4. 必要に応じて、Implementation-Version番号を増分します。デフォルト・バージョンはImplementation-Version: 11.1.2です。

注意:

新規アーカイブ(.warファイル)を生成するたびにバージョン番号を増分する必要はありません。ただし、新規の拡張機能バージョンをサーバーへデプロイする場合、または「デプロイメント」 - 「ログ」タブでWebLogic Serverからエラーが報告される場合は毎回、共有ライブラリImplementation-Version番号を増分する必要があります。詳細は、第55.2.1.2項「PortalSharedLibraryプロジェクト」を参照してください。

5. 「アプリケーション・ナビゲータ」で、「PortalSharedLibrary」プロジェクトを右クリックし、「デプロイ」、デプロイメント・プロファイル「extend.spaces.webapp」の順に選択します。

注意:

extend.spaces.webappは、ファイルにデプロイしようとしている共有ライブラリに対する、デプロイメント・プロファイルの名前であることに注意してください。後続のデプロイメント・アクションにより作成された共有ライブラリは、extend.spaces.webapp.warと呼ばれます。

6. 「デプロイ」ダイアログで、「WARにデプロイ」を選択して「次へ」をクリックします(図55-32)。

図55-32 デプロイメント・アクション

7. 「サマリー」ページを確認し、「終了」をクリックします。
「デプロイメント - ログ」タブに.warファイルの場所が表示されます。ここで、この新規共有ライブラリ.warファイル・バージョンを、WebCenter Portalがデプロイされている任意のサーバー・インスタンスにデプロイできます。

詳細について

JDeveloperオンライン・ヘルプのアプリケーションのデプロイに関する項を参照してください。『Oracle Fusion Middleware Oracle WebLogic Serverアプリケーションの開発』の共有Java EEライブラリとオプション・パッケージの作成に関する項も参照してください。

55.2.5.3 以前のWebCenter Portal共有ライブラリ・バージョンへの回復

最新のWebCenter Portal共有ライブラリに問題がある場合、またはなんらかの理由で以前のバージョンに戻す必要がある場合は、WebLogic Server管理コンソールを使用して、現在のバージョンをアンデプロイ(削除)し、以前のバージョンに戻すことができます。

不要な共有ライブラリ・バージョンを削除することもできます。変更、ビルド、デプロイ、テストを何度も繰り返した場合、デフォルトでは、各増分バージョンが保持されます。WebCenter Portalでは共有ライブラリの最新バージョンのみを使用するため、必要に応じて旧バージョンをクリーンアップまたは削除できます。

最新バージョンをアンデプロイする前に、WebCenter Portalが実行されている管理対象サーバーを停止する必要があります。最新バージョンを削除したら、管理対象サーバーを再起動します。

注意: 元のextend.spaces.webapp共有ライブラリ(バージョン11.1.1)があれば必要に応じてデフォルト・バージョンに戻ることができるため、これは削除しないことをお薦めします。

1. WebCenter Portalがデプロイされている管理対象サーバーを停止します。
詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のWebCenter Portalアプリケーション・デプロイメントのための管理対象サーバーの起動と停止に関する項を参照してください。

2. WebLogic Server管理コンソールにログインします。

3. 「デプロイメント」をクリックし、削除するextend.spaces.webappの最新バージョンを見つけて選択します。

4. 「削除」をクリックして共有ライブラリの最新バージョンをアンデプロイします。
元のextend.spaces.webapp.war共有ライブラリに戻すには、extend.spaces.webapp.warバージョン11.1.1以外のすべてバージョンの共有ライブラリを削除します。

5. WebCenter Portalがデプロイされている管理対象サーバーを起動します。
詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のWebCenter Portalアプリケーション・デプロイメントのための管理対象サーバーの起動と停止に関する項を参照してください。

55.2.6 PortalExtensionプロジェクトを使用したWebCenter PortalのADFライブラリ・コンポーネントの開発

WebCenter PortalのADFライブラリの開発は、他のADFライブラリの開発とまったく同じです。ADFライブラリ開発に習熟していない場合は、第55.2.2.1項「ADFライブラリ開発の一般ドキュメント」のドキュメント・リンクを参照してください。

通常、開発チームは、WebCenter Portalなど、複数のアプリケーションで再使用できるように、明確に定義された共有ライブラリのセットに対してADFライブラリを構築し、デプロイします。

開始に役立つように、タスク・フロー、データ・コントロールおよびマネージドBeanを含むADFライブラリを構築し、それらをWebCenter Portalの独自の共有ライブラリextend.spaces.webapp.warにデプロイできるPortalExtensionプロジェクトが用意されています。

PortalExtensionプロジェクトを使用する場合は、次の手順に従います。

1. WebCenter Portalサーバー拡張機能ワークスペースを作成します。
詳細は、第55.2.3項「WebCenter Portalサーバー拡張機能ワークスペースの作成」を参照してください。

2. PortalExtensionプロジェクトを開き、ADFライブラリにカスタム・コードを追加します。
第55.2.1.3項「PortalExtensionプロジェクト」も参照してください。

3. WebCenter Portal共有ライブラリextend.spaces.webapp.warにADFライブラリをデプロイします。
第55.2.5項「WebCenter Portal共有ライブラリ(extend.spaces.webapp.war)への拡張機能のデプロイ」も参照してください。

55.2.7 WebCenter Portal共有ライブラリ開発者用チュートリアル

WebCenter Portalおよび共有ライブラリの開発に初めて取り組む場合には、ホワイトペーパー「Development Lifecycle for Task Flows in Oracle WebCenter Portal (11.1.1.8.0)」を参照してください。このチュートリアルでは、JDeveloperで開発したカスタムADFタスク・フローをWebCenter Portalのページに追加する方法を段階的に説明してあります。このホワイトペーパーは、次の場所にあるOracle Technology Networkで入手できます。

http://www.oracle.com/technetwork/middleware/webcenter/portal/learnmore/wcp-createcustomtaskflow-2135965.pdf

55.2.8 WebCenter Portal共有ライブラリのデプロイメントのトラブルシューティング

- デプロイメントが正常に行われたにもかかわらず、デプロイメント後に変更が反映されない。
WebCenter Portalは、常に最新バージョンの共有ライブラリを使用します。MANIFEST.MF内の実装バージョンが、WebLogic Server管理コンソールに表示される実装バージョンに一致することを確認します。

たとえば、PortalSharedLibrary/Application Sources/META-INF/MANIFEST.MFの値が、管理コンソールの「デプロイメント」→「extend.spaces.webapp」→「概要」に表示される値と同じであることを確認します。

- 「DeployerException: Task 9 failed」が表示されます。

weblogic.Deployer$DeployerException: weblogic.deploy.api.tools.deployer.DeployerException: Task 9 failed:
[Deployer:149117]deploy library com.mycompanyname.shared.lib [LibSpecVersion=11.1.1.2,LibImplVersion=11.1.1.2.5] on AdminServer,WC_Spaces.

このエラーは、新しいデプロイメントと既存のデプロイメントの実装バージョンが同一の場合に発生します。管理コンソールを使用して現在の実装バージョンを確認し、必要に応じてバージョンを変更して共有ライブラリを再デプロイします。

- 「java.lang.IllegalArgumentException」が表示される。
WebCenter Portalのデプロイ先の管理対象サーバーを再起動します。

56 WebCenter Portalとの統合

この章では、WebCenter Portal APIを使用して、Portal Frameworkアプリケーションにポータル機能を公開する方法について説明します。このAPIを使用すると、新しいポータルの作成、ポータル・メンバーシップの管理、ポータル情報の取得などをご使用のPortal Frameworkアプリケーションから実行できます。この章では、ポータル内のPortal Frameworkアプリケーションなど、他のアプリケーションからの情報を公開する方法も説明します。

この章には次の項が含まれます。

- 第56.1項「WebCenter Portal APIを使用したアプリケーションにおけるポータルの公開」

- 第56.2項「WebCenter Portal REST APIの使用」

- 第56.3項「ポータルにおけるエンタープライズ・アプリケーションの公開」

注意:

WebCenter Portal API(この章で説明)を実装するカスタム構築されたタスク・フローは、Portal Frameworkアプリケーションにデプロイできますが、ポータルにはデプロイできません。

56.1 WebCenter Portal APIを使用したアプリケーションにおけるポータルの公開

この項には次のサブセクションが含まれます:

- 第56.1.1項「WebCenter Portal APIの概要」

- 第56.1.2項「事例1: 購買アプリケーションでポータルを使用してサプライヤを評価する」

- 第56.1.3項「事例2: カスタマ・サポート・センター・アプリケーションでポータルを使用してカスタマ・エスカレーションを話し合う」

- 第56.1.4項「WebCenter Portal APIを使用するようにFrameworkアプリケーションを設定する方法」

- 第56.1.5項「Portal FrameworkアプリケーションでのWebCenter Portal機能の提供」

- 第56.1.6項「WebCenter Portal APIから発生した例外を処理する方法」

- 第56.1.7項「WebCenter Portal APIの詳細情報の検索」

- 第56.1.8項「WebCenter Portal APIでのトラブルシューティングの問題」

56.1.1 WebCenter Portal APIの概要

ユーザーは、Portal Frameworkアプリケーションを使用中に、特定のタスクを完了するためにポータル機能が役立つと思われる状況に直面することがあります。そのようなケースでは、WebCenter Portalに切り替えるよりも、現在のアプリケーションのコンテキスト内に留まるほうがはるかに混乱が少ない場合があります。そのために、WebCenter Portalは、APIを介した該当の機能のサブセットへのアクセスを提供しています。APIのクラスとメソッドを使用すると、強力なポータルの機能をFrameworkアプリケーションに統合できます。

WebCenter Portal APIを使用すると、次のことを実行できます。

- ポータルおよびポータル・テンプレートの作成および管理。ポータルを作成および削除でき、カスタム属性を追加できます。詳細は、第56.1.5.1項「ポータルおよびポータル・テンプレートの管理」を参照してください。

- ポータル・メンバーシップの管理。ポータル・メンバーを追加および削除できます。詳細は、第56.1.5.2項「ポータル・メンバーシップの管理」を参照してください。

- ポータルおよびポータル・テンプレートに関する情報の取得。たとえば、ポータルのURLや特定のポータルのURLを取得できます。また、ポータルおよびポータル・テンプレート・メタデータも取得できます。詳細は、第56.1.5.3項「ポータルおよびポータル・テンプレートの情報の取得」を参照してください。

ポータルのメソッドは、いくつかのクラス内に含まれています。表56-1では、様々なクラスをリストし、各クラスのメソッドの目的を説明しています。

表56-1 WebCenter Portal APIのクラス

クラス

含まれているメソッドの用途

詳細

GroupSpaceWSClient

ポータルおよびポータル・テンプレートの作成および管理

ポータル・メンバーシップの管理

ポータル情報の取得

第56.1.5項「Portal FrameworkアプリケーションでのWebCenter Portal機能の提供」

GroupSpaceWSContext

他のAPIメソッドをコールする前のコンテキストの確立

第56.1.4.4項「WebCenter Portalクライアント・コンテキストの設定」

GroupSpaceWSException

APIから発生した例外の管理

第56.1.6項「WebCenter Portal APIから発生した例外を処理する方法」

GroupSpaceWSMembers

ポータル・メンバーに関する情報の取得

第56.1.5.3項「ポータルおよびポータル・テンプレートの情報の取得」

GroupSpaceWSMetadata

ポータル情報の取得

第56.1.5.3項「ポータルおよびポータル・テンプレートの情報の取得」

Portal Framework開発者の視点から、APIを介してWebCenter Portalを構築し、使用するシナリオを示す事例を2つ紹介します。

- 購買アプリケーションでは、購買マネージャは、新しいサプライヤの適性を話し合うポータルを作成できます。詳細は、第56.1.2項「事例1: 購買アプリケーションでポータルを使用してサプライヤを評価する」を参照してください。

- カスタマ・サポート・センター・アプリケーションでは、サポート・アナリストが、カスタマ・エスカレーションに関して他のユーザーと共同作業をするためのポータルを作成できます。詳細は、第56.1.3項「事例2: カスタマ・サポート・センター・アプリケーションでポータルを使用してカスタマ・エスカレーションを話し合う」を参照してください。

56.1.2 事例1: 購買アプリケーションでポータルを使用してサプライヤを評価する

WebCenter Portal Frameworkを使用して構築された購買アプリケーションについて考えてみます。このアプリケーションでは、サプライヤ、価格設定、リードタイムの要件、概算出荷時間、および実績を追跡します。

購買アプリケーションのユーザーは、サプライヤの候補を選択し評価できなければなりません。サプライヤの評価は共同プロセスで、会社の様々な領域からの人々が必要です。たとえば、設計エンジニアと製造担当者は購入するアイテムが必要な技術仕様を満たしていることを確認する必要があります。購買エージェントは価格、物流および契約について交渉できます。さらにマネージャまたはエグゼクティブは取引を承認する必要があります。購買アプリケーションはサプライヤ評価をどのように開始するでしょうか。

通常、購買マネージャが、製造部門から購買請求書を受け取ります。場合によっては、製造部門が必要とする期限内に、その必要分を従来のサプライヤが納品できないため、発注を完了できないことがあります。したがって、納期および価格設定要件を満たす新しいサプライヤを判別する必要があります。購買マネージャは、候補となるサプライヤをシステムに追加できますが、購買マネージャは、サプライヤを評価できるように、情報を整理して共有し、彼のチームの内外の人々と共同する方法を必要としています。

ポータルは、この共同作業環境を提供できます。そのために、購買アプリケーションにはcreateGroupSpaceメソッドへのコールが含まれており、それにより、図56-1に示すように、購買マネージャが、「ポータルの作成」ダイアログを表示するリンク(「新規ポータルの作成」)を、購買アプリケーションから直接クリックできます。

図56-1 ポータル作成のリンクが含まれている購買アプリケーション

購買マネージャがそのリンクをクリックすると、カスタム・ダイアログからいくつかの情報を要求されます。購買マネージャは、ポータルの名前および説明を入力し、図56-2に示すようにテンプレート(Purchasing Projects)も選択します。Purchasing Projectsテンプレートによって、ポータルは迅速に設定され、すぐに使用できます。たとえば、このテンプレートによって、どのサービスが必要であるか(イベント、ドキュメント・ライブラリなど)、および必要なカスタム・ページが定義されます。このAPIで、独自の「ポータルの作成」ダイアログを作成できるため、独自のルック・アンド・フィールおよび用語を適用できます。

図56-2 カスタムの「ポータルの作成」ダイアログ

このシナリオでは、購買マネージャは、テンプレート・リストからPurchasing Projectsテンプレートを選択します。別の方法は、購買アプリケーションがデフォルト・テンプレート値を渡すようにすることです。この追加のデフォルトにより、購買マネージャが検討すること(どのテンプレートを使用するか)が1つ減ります。サプライヤIDからポータルの名前を生成し、購買マネージャが詳細を何も入力しなくてもよいようにすることもできます。そうすれば、リンクのクリックのみでポータルを作成できます。

購買マネージャが「OK」をクリックすると、図56-3に示すような新しいサプライヤ評価ポータルが表示されます。

図56-3 サプライヤ評価ポータル

図56-3は、イベント・カレンダ、グループに役立つことのあるドキュメント、お知らせの領域などを含むサプライヤ評価ポータルのホーム・ページを示しています。これらの各領域はPurchasing Projectsテンプレートによって決定されます。さらに、ポータルの作成元の購買アプリケーション・トランザクション・インスタンスへのリンクも提供されます。このリンク(ベンダーの追加/更新)をクリックすると、サプライヤShaker Distributionのベンダーの追加/更新トランザクション画面が表示されます。

ポータルでは、購買マネージャが自動的にそのポータルのモデレータになります。モデレータは、ポータルへのコンテンツの追加、ディスカッションの開始、メンバーの招待、関連するパーティとのコラボレーションを実行できます。サプライヤに関してコンセンサスを得られたら、購買マネージャは、当該サプライヤを承認または却下できます。

56.1.3 事例2: カスタマ・サポート・センター・アプリケーションでポータルを使用してカスタマ・エスカレーションを話し合う

Oracle WebCenter Portal Frameworkを使用して構築された、お客様からの電話および問題を追跡するカスタマ・サポート・センター・アプリケーションを考えてみます。

サポート・アナリストは、そのアナリストが対応しているサービス・リクエストがお客様によってエスカレートされたことを通知されます。アナリストは、社内の様々な部署に所属する他の人々が関与できれば、その問題の解決策を迅速に見つけられることを認識しています。例:

- プロジェクトを実行したチームのプロジェクト・マネージャは、そのプロジェクトに関する詳しい知識を提供できます。

- お客様と定期的に連絡を取っているアカウント・マネージャは、お客様のサイトでのプロジェクトの実行に関する具体的な情報を提供できます。

- 以前、似たようなエスカレーションに対応したことがある別のアナリストは、そのエスカレーションを解決した方法に関する情報を提供できます。

この問題は、ポータルを使用して共同で解決できます。サポート・アナリストは、カスタマ・サポート・センター・アプリケーション内からポータルを作成し、必要なメンバーを追加します。それらのメンバーは通知を受け取り、ポータルを使用してお客様の状況についてディスカッションを開始します。サポート・アナリストは、彼らのポータルへの更新内容をサポート・アプリケーション内で表示し、より具体的な詳細を知る必要がある場合はポータルに移動します。彼女はポータルの他のメンバーから入手する情報に基づいて、問題を診断し、お客様に非常に迅速に解決策を提示できます。

56.1.4 WebCenter Portal APIを使用するようにFrameworkアプリケーションを設定する方法

WebCenter Portal APIを使用するには、その前に、WebCenter Portalが起動されていて実行中であることと、プロジェクトがJDeveloperで適切に設定されていることを確認する必要があります。

この項には次のサブセクションが含まれます:

- 第56.1.4.1項「WebCenter Portalが起動されて実行中であることの確認」

- 第56.1.4.2項「WebCenter Portal APIを使用するためのWebCenter Portalの設定」

- 第56.1.4.3項「Portal FrameworkアプリケーションとWebCenter Portal間の接続のセキュリティ保護」

- 第56.1.4.4項「WebCenter Portalクライアント・コンテキストの設定」

56.1.4.1 WebCenter Portalが起動されて実行中であることの確認

WebCenter Portal APIを使用する場合、WebCenter Portalが起動されていて実行中であることが必要です。

WebCenter Portalが起動されていて実行中であることを確認するには:

1. WebCenter Portalを起動します。URLは次のとおりです。

http://host:port/webcenter

ログインする必要はありません。

2. WebCenter Portal Webサービスが起動されていて実行中であることを確認します。URLは次のとおりです。

http://host:port/webcenter/SpacesWebService?WSDL

図56-4に示すようなページが表示されます。このページが表示されない場合は、Fusion Middleware管理者にお問い合せください。

図56-4 SpacesWebService WSDL

WebCenter Portalの設定の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WebCenter Portalの起動と実行」を参照してください。

56.1.4.2 WebCenter Portal APIを使用するためのWebCenter Portalの設定

Portal FrameworkアプリケーションでWebCenter Portal APIをコールするには、その前にアプリケーションに適切なライブラリが含まれていることと、WebCenter Portal Webサービスへの接続が存在することを確認する必要があります。

WebCenter Portal APIを使用するようにアプリケーションを設定するには:

1. JDeveloperを起動します。

2. 「アプリケーション・ナビゲータ」で、WebCenter Portalの機能を提供する対象となるアプリケーションを開きます。
アプリケーションは、「WebCenterポータル・アプリケーション」テンプレートに基づいている必要があります。

3. ビュー・コントローラ・プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。

4. 「ライブラリとクラスパス」を選択します。

5. プロジェクト内で次のライブラリが使用可能であることを確認し、必要に応じて任意のものを追加します。

- ADF DVT Facesランタイム

- ADFモデル汎用ランタイム

- ADFモデル・ランタイム

- JAX-RPCクライアント

- JAX-WSクライアント

- JAXB

- Oracle JEWT

- ポータル・クライアント

- JDEV_HOME/jdeveloper/oracle_common/modules/oracle.adf.model_11.1.1/adfm.jar

- JDEV_HOME/jdeveloper/oracle_common/modules/oracle.xdk_11.1.1/xml.jar

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

7. アプリケーション・ナビゲータの「アプリケーション・リソース」パネルで、「接続」を右クリックし、「接続の作成」→「URL」を選択します。

8. 「名前」フィールドにSpacesWebServiceEndpointと入力します。

9. 「URLエンドポイント」フィールドに、次のWebCenter Portal WebサービスのURLを入力します。

http://host:port/webcenter/SpacesWebService

10. 「OK」をクリックします。
接続情報が、アプリケーションのMETA-INFディレクトリのconnections.xmlファイルに追加されます。たとえば、次のとおりです。

C:\JDeveloper\mywork\mySpacesApplication\.adf\META-INF

connections.xmlファイルが存在しない場合、それが作成されます。

11. connections.xmlファイルを開き、例56-1に示されているコードが表示されることを確認します。

例56-1 ポータルWebサービス・エンドポイントURL接続

<Reference name="SpacesWebServiceEndpoint"
className="oracle.adf.model.connection.url.HttpURLConnection">
<Factory className="oracle.adf.model.connection.url.URLConnectionFactory"/>
<RefAddresses>
<XmlRefAddr addrType="SpacesWebServiceEndpoint">
<Contents>
<urlconnection name="SpacesWebServiceEndpoint"
url="http://host:port/webcenter/SpacesWebService"/>
</Contents>
</XmlRefAddr>
</RefAddresses>
</Reference>

実行時にWebCenter Portal Webサービス・エンドポイントを設定する必要がある場合は、setGroupSpaceWebServiceEndpointメソッドを使用できます(例56-2)。パラメータとしてエンドポイントを取るラッパー・メソッドを作成し、setGroupSpaceWebServiceEndpointをコールして、そのパラメータを渡すことができます。エンドポイントがconnections.xmlで設定されていない場合は、例外がINFOとしてログ・ファイルでレポートされます。

例56-2 実行時のWebCenter Portal Webサービス・エンドポイントの設定

client.setGroupSpacesWebServiceEndpoint("http://xmlns.oracle.com/webcenter/SpacesWebService");

56.1.4.3 Portal FrameworkアプリケーションとWebCenter Portal間の接続のセキュリティ保護

Portal FrameworkアプリケーションでWebCenter Portal APIを使用する前に、アプリケーション(コンシューマ)とWebCenter Portal(プロデューサ)との間の通信がセキュリティで保護されていることを確認する必要があります。これは、APIを呼び出したユーザーのアイデンティティがセキュアな方法でWebCenter Portalに伝播され、通信の整合性と機密性が保たれるようにするためです。

これを実行するため、WebCenter Portal APIはメッセージ保護とともにSAMLベースのトークンのポリシーを使用します。管理者は、WebCenter Portalがアプリケーションから受信したセキュリティ・トークンの真正性を確認できるように、Javaキーストアを作成し資格証明ストアを更新する必要があります。その後、JDeveloperを使用して、このキーストアを登録し資格証明ストアを更新する必要があります。

管理者が実行する必要のある手順の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のWS-Securityによる、WebCenter PortalクライアントAPIを使用するアプリケーションのためのWebCenter Portalの保護に関する項を参照してください。

56.1.4.4 WebCenter Portalクライアント・コンテキストの設定

アプリケーション・コード内でWebCenter Portal APIメソッドをコールする前に、いくつかのセットアップ手順が必要です。

WebCenter Portalクライアント・コンテキストを設定するには:

1. WebLogic Server (WLS)にデプロイされたアプリケーションからWebCenter Portal APIをコールすると、特にオーバーライドするように選択していないかぎり、ドメイン全体の構成設定が使用されます。セキュリティ構成パラメータをオーバーライドまたは設定するには、GroupSpaceWSContextクラスによって提供されているメソッドを使用します。
特に、データの暗号化に必要なSAMLの発行者名およびWebCenter Portalの公開鍵の別名を設定する必要があります。WebCenter Portal Webサービス・エンドポイントがconnections.xmlファイルに設定されていない場合、これも設定できます。

例:

GroupSpaceWSContext context = new GroupSpaceWSContext();

context.setEndPoint("endPointUrl");
context.setSamlIssuerName("samlIssuer");
context.setRecipientKeyAlias("producer");

groupSpaceWSClient = new GroupSpaceWSClient(context);

ここで:

- endPointUrlはWebCenter Portal Webサービス・エンドポイントです(たとえば、http://xmlns.oracle.com:8912/webcenter/SpacesWebService)。

- samlIssuerは、このSAMLアサーティング・パーティのアサーションを発行するSAML認証局の発行者URIです(たとえば、www.oracle.com)。デフォルトのwww.oracle.comが唯一信頼できるSAML発行者です。

- producerは、WebCenter Portalの公開鍵の別名です。たとえば、単純なトポロジを使用している場合はorakeyとなります。
管理者が実行する必要のある手順の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のWS-Securityによる、WebCenter PortalクライアントAPIを使用するアプリケーションのためのWebCenter Portalの保護に関する項を参照してください。

GroupSpaceWSContextクラスによって提供されるメソッドの完全なリストは、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

2. コンテキストを渡すことでWebCenter Portalクライアントを初期化します。例:

GroupSpaceWSClient client = new GroupSpaceWSClient(context);

3. クライアントを初期化したら、次のものをコールすることによってすべてが適切に設定されていることを確認します。

getWebCenterSpacesURL();

適切なURLが返された場合、すべてが適切に設定されており、WebCenter Portal APIの使用を開始できます。

56.1.5 Portal FrameworkアプリケーションでのWebCenter Portal機能の提供

WebCenter Portal APIによって、Frameworkアプリケーション内で一般的なポータル関連の操作を実行できます。APIのメソッドの大部分は、GroupSpaceWSClientクラスによって提供されます。WebCenter Portal APIメソッドは、次の3つのメイン・カテゴリに分類できます。

- 第56.1.5.1項「ポータルおよびポータル・テンプレートの管理」

- 第56.1.5.2項「ポータル・メンバーシップの管理」

- 第56.1.5.3項「ポータルおよびポータル・テンプレートの情報の取得」

表56-2は、GroupSpaceWSClientクラスのメソッドを示してします。

表56-2 一般的なポータルの操作を実行するためのメソッド

ポータル・メソッド

カテゴリ

説明

createGroupSpace

ポータルおよびポータル・テンプレートの管理

テンプレートに基づいて新しいポータルを作成します。第56.1.5.1.1項「ポータルの作成」を参照してください。

setCustomAttribute

ポータルおよびポータル・テンプレートの管理

ポータルのカスタム属性を1つ以上作成します。第56.1.5.1.2項「カスタム属性の作成」を参照してください。

deleteGroupSpace

ポータルおよびポータル・テンプレートの管理

Portalからポータルを完全に削除します。第56.1.5.1.4項「ポータルの削除」を参照してください。

createGroupSpaceTemplate

ポータルおよびポータル・テンプレートの管理

既存のポータルに基づいて新しいポータル・テンプレートを作成します。第56.1.5.1.3項「ポータル・テンプレートの作成」を参照してください。

addMember

ポータル・メンバーシップの管理

ユーザー(またはグループ)を特定のロールを持つポータル・メンバーにします。第56.1.5.2.1項「ポータルへのメンバーの追加」を参照してください。

inviteMember

ポータル・メンバーシップの管理

リストのユーザーを、ポータルのメンバーになるように招待します。第56.1.5.2.2項「ユーザーをポータルに参加するように招待」を参照してください。

removeMember

ポータル・メンバーシップの管理

ポータル・メンバーシップを取り消します。第56.1.5.2.3項「ポータルからのメンバーの削除」を参照してください。

getRoles

ポータル・メンバーシップの管理

特定のポータルのすべてのロールを取得します。第56.1.5.2.4項「ロール情報の取得」を参照してください。

getGroupSpaces

ポータルおよびポータル・テンプレートの情報の取得

指定した問合せ文字列に対してポータルのリストを取得します。第56.1.5.3.1項「ポータルのリストの取得」を参照してください。

getPublicGroupSpaces

ポータルおよびポータル・テンプレートの情報の取得

指定した問合せ文字列に対してパブリック・ポータルのリストを取得します。第56.1.5.3.2項「パブリック・ポータルのリストの取得」を参照してください。

getDiscoverableGroupSpaces

ポータルおよびポータル・テンプレートの情報の取得

指定した問合せ文字列に対して検出可能ポータルのリストを取得します。第56.1.5.3.3項「検出可能ポータルのリストの取得」を参照してください。

getGroupSpaceMetadata

ポータルおよびポータル・テンプレートの情報の取得

ポータルに関する情報(メタデータ)を取得します。第56.1.5.3.4項「ポータル・メタデータの取得」を参照してください。

getGroupSpaceMetadataByGuid

ポータルおよびポータル・テンプレートの情報の取得

ポータルのGUIDを指定してポータルに関する情報(メタデータ)を取得します。第56.1.5.3.4項「ポータル・メタデータの取得」を参照してください。

getGroupSpaceTemplates

ポータルおよびポータル・テンプレートの情報の取得

指定した問合せ文字列に対してポータル・テンプレートのリストを取得します。第56.1.5.3.5項「ポータル・テンプレートのリストの取得」を参照してください。

getGroupSpaceTemplateMetadata

ポータルおよびポータル・テンプレートの情報の取得

ポータル・テンプレートに関する情報(メタデータ)を取得します。第56.1.5.3.6項「ポータル・テンプレート・メタデータの取得」を参照してください。

getGroupSpaceTemplateMetadataByGuid

ポータルおよびポータル・テンプレートの情報の取得

テンプレートのGUIDを指定してポータル・テンプレートに関する情報(メタデータ)を取得します。第56.1.5.3.6項「ポータル・テンプレート・メタデータの取得」を参照してください。

getWebCenterSpacesURL

ポータルおよびポータル・テンプレートの情報の取得

PortalアプリケーションのURLを取得します。第56.1.5.3.7項「PortalのURLの取得」を参照してください。

getGroupSpaceURL

ポータルおよびポータル・テンプレートの情報の取得

ポータルのURLを取得します。第56.1.5.3.8項「ポータルのURLの取得」を参照してください。

getServiceRSSFeedURL

ポータルおよびポータル・テンプレートの情報の取得

指定したポータル・サービスのRSSフィードURLを取得します。

getServiceRSSFeedURLbyGuid

ポータルおよびポータル・テンプレートの情報の取得

GUIDによって指定したポータルおよび指定したサービスのRSSフィードURLを取得します。

56.1.5.1 ポータルおよびポータル・テンプレートの管理

次のWebCenter Portal APIメソッドを使用して、ポータルおよびポータル・テンプレートを管理します。

- createGroupSpace

- setCustomAttribute

- createGroupSpaceTemplate

- deleteGroupSpace

始める前に

これらのメソッドを使用するには、その前に第56.1.4項「WebCenter Portal APIを使用するようにFrameworkアプリケーションを設定する方法」に記載されているすべての手順を完了する必要があります。

この項には次のサブセクションが含まれます:

- 第56.1.5.1.1項「ポータルの作成」

- 第56.1.5.1.2項「カスタム属性の作成」

- 第56.1.5.1.3項「ポータル・テンプレートの作成」

- 第56.1.5.1.4項「ポータルの削除」

56.1.5.1.1 ポータルの作成

createGroupSpaceメソッドを使用して、既存のポータル・テンプレートに基づいたポータルを作成します。

このメソッドを使用するには、次を指定します:

- 新しいポータルの内部名。この名前には、空白を含めることができます。

- 新しいポータルの表示名。

- ポータルの説明。これは必須ではありませんが、ユーザーがこのポータルの目的を識別できるように説明を入力することをお薦めします。

- 使用するポータル・テンプレートの名前。これは、テンプレートの表示名ではなく内部名にする必要があります。

オプションで、ユーザーが検索でポータルを見つけられるようにキーワードのカンマ区切りリストを入力できます。

例56-3では、CommunityofInterestテンプレートに基づいたDatabasesという名前のポータルを作成します。この例では、2つの検索キーワード(databasesおよびOracle)も指定します

例56-3 ポータルの作成

//create the portal
GroupSpaceWSMetadata gsMetadata =
client.createGroupSpace("Databases", "Databases" "A community for people interested in databases", "databases, oracle", "CommunityofInterest");
//print the portal GUID to provide confirmation of creation
System.out.println("GUID: " + gsMetadata.getGuid());

新しいポータルに対してカスタム属性を指定する方法の例は、第56.1.5.1.2項「カスタム属性の作成」を参照してください。

56.1.5.1.2 カスタム属性の作成

すべてのポータルには、名前、説明、作成日、アイコンなどの組込み属性が備わっています。さらに、ポータルに固有の追加情報(メタデータ)およびその特性を格納するカスタム属性を定義できます。

setCustomAttributeメソッドを使用して、ポータルのカスタム属性を指定します。このメソッドを使用するには、ポータルの名前と、カスタム属性の名前、説明、タイプおよび値を指定します。

例56-4では、Databasesポータルを作成し、そのポータルのカスタム属性を作成します。属性はVendorsという名前で、List of vendorsという説明が付いています。その属性は、OracleやIBMという文字列値を取ります。

例56-4 カスタム属性の作成

//create the portal
client.createGroupSpace("Databases", "Databases", "A community for people interested in databases", null, "CommunityofInterest");
//create the custom attribute
client.setCustomAttribute("Databases", "Vendors", "List of vendors", "java.lang.String", "Oracle, IBM");

56.1.5.1.3 ポータル・テンプレートの作成

createGroupSpaceTemplateメソッドを使用して、既存のポータルに基づいたポータル・テンプレートを作成します。このメソッドを使用するには、テンプレートの名前、表示名および説明と、テンプレートを作成するために使用するポータルの名前を指定します。

例56-5では、Databasesポータルに基づいたポータル・テンプレートを作成します。

例56-5 ポータル・テンプレートの作成

GroupSpaceWSMetadata templMetadata =
client.createGroupSpaceTemplate("DatabasesTemplate", "Databases Template",
"A template based on the Databases portal", "Databases");
//print the template GUID to provide confirmation of creation
System.out.println("GUID: " + templMetadata.getGuid());

56.1.5.1.4 ポータルの削除

deleteGroupSpaceメソッドを使用して、WebCenter Portalからポータルを完全に削除します。このメソッドを使用するには、削除するポータルの名前を指定します。このメソッドは、削除が正常に実行されたかどうかを示すブール値を返します。

例56-6では、Databasesという名前のポータルを削除します。この例では、メソッドによって返されるブール値を使用して、操作の成功または失敗に関するメッセージを出力します。

例56-6 ポータルの削除

//delete the portal
Boolean success = client.deleteGroupSpace("Databases");
//print a message depending on the result of the deletion
if(success)
{
System.out.println("Operation Succeeded");
}
else
{
System.out.println(Operation Failed");
}

56.1.5.2 ポータル・メンバーシップの管理

次のWebCenter Portal APIメソッドを使用して、ポータル・メンバーシップを管理します。

- addMember

- inviteMember

- removeMember

- getRoles

始める前に

これらのメソッドを使用するには、その前に第56.1.4項「WebCenter Portal APIを使用するようにFrameworkアプリケーションを設定する方法」に記載されているすべての手順を完了する必要があります。

この項には次のサブセクションが含まれます:

- 第56.1.5.2.1項「ポータルへのメンバーの追加」

- 第56.1.5.2.2項「ユーザーをポータルに参加するように招待」

- 第56.1.5.2.3項「ポータルからのメンバーの削除」

- 第56.1.5.2.4項「ロール情報の取得」

56.1.5.2.1 ポータルへのメンバーの追加

addMemberメソッドを使用して、ユーザー(およびグループ)にポータル・メンバーシップを与え、新しいメンバーを特定のロールに割り当てます。このメソッドを使用するには、ポータルの名前およびユーザーまたはグループのリストを指定します。リストには、ユーザーまたはグループの名前およびポータル内でそのユーザーまたはグループに付与するロールを指定するタイプGroupSpaceWSMembersのオブジェクトが含まれている必要があります。

WebCenter Portalアイデンティティ・ストアに存在する有効なユーザーまたはユーザー・グループの名前を指定する必要があります。ロールの場合は、デフォルト・ロール(モデレータ、参加者、ビューア)のいずれか、またはカスタム・ロール(ある場合)を選択します。ポータルで使用可能なロールのリストを取得するには、getRolesメソッドを使用します。詳細は、第56.1.5.2.4項「ロール情報の取得」を参照してください。ロールの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のポータルのロールと権限の管理に関する項を参照してください。

例56-7では、PatおよびVickiという名前のユーザーとSalesおよびMarketingユーザー・グループの各人のユーザー(タイプGroupSpaceWSMembers)をDatabasesポータルのメンバーとして作成しています。PatとSalesおよびMarketingの全員には、Viewerロールを付与します。Vickiには、Participantロールを割り当てます。

注意:

ユーザーのグループを追加しようとしている場合は、setGroup(true)を使用します。

例56-7 ポータルへのメンバーの追加

//create the list of users
List addMem = new ArrayList();
//create the GroupSpaceWSMembers objects
GroupSpaceWSMembers mem1 = new GroupSpaceWSMembers("pat", "Viewer");
GroupSpaceWSMembers mem2 = new GroupSpaceWSMembers("vicki", "Participant");
GroupSpaceWSMembers grp1 = new GroupSpaceWSMembers("Sales", "Viewer");
grp1.setGroup(true);
GroupSpaceWSMembers grp2 = new GroupSpaceWSMembers("Marketing", Viewer");
grp2.setGroup(true);
//add the GroupSpaceWSMembers objects to the list of users
addMem.add(mem1);
addMem.add(mem2);
addMem.add(grp1);
addMem.add(grp2);
//add the users to the Portal
client.addMember("Databases", addMem);
//print a list of members to confirm the new members were added
GroupSpaceWSMetadata memMetData = client.getGroupSpaceMetadata("Databases");
for (GroupSpaceWSMembers mems: memMetData.getMembers())
{
System.out.println(mems.getMember());
System.out.println(mems.getRole());
}

56.1.5.2.2 ユーザーをポータルに参加するように招待

inviteMemberメソッドを使用して、ポータルのメンバーになるようにユーザーを招待します。このメソッドを使用するには、ポータルの名前および招待するユーザーのリストを指定します。リストには、ユーザーの名前およびポータル内でそのユーザーに付与するロールを指定するタイプGroupSpaceWSMembersのオブジェクトが含まれている必要があります。ポータルへの参加の招待は、各ユーザーに送信され、各ユーザーはその招待を受け入れるか拒否できます。

WebCenter Portalアイデンティティ・ストアに存在する有効なユーザーの名前を指定する必要があります。ロールの場合は、デフォルト・ロール(モデレータ、参加者、ビューア)のいずれか、またはカスタム・ロール(ある場合)を選択します。ポータルで使用可能なロールのリストを取得するには、getRolesメソッドを使用します。詳細は、第56.1.5.2.4項「ロール情報の取得」を参照してください。ロールの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のポータルのロールと権限の管理に関する項を参照してください。

例56-8では、PatおよびVickiという名前のユーザー(タイプGroupSpaceWSMembers)を、それぞれViewerとParticipantのロールを持つ、Databasesポータルのメンバーになるように招待します。

例56-8 ポータルに参加するようにユーザーを招待

//create the list of users
List inviteMem = new ArrayList();
//create the GroupSpaceWSMembers objects
GroupSpaceWSMembers mem1 = new GroupSpaceWSMembers("pat", "Viewer");
GroupSpaceWSMembers mem2 = new GroupSpaceWSMembers("vicki", "Participant");
//add the GroupSpaceWSMembers objects to the list of users
inviteMem.add(mem1);
inviteMem.add(mem2);
//invite the list of users to join the portal
client.inviteMember("Databases", inviteMem);

56.1.5.2.3 ポータルからのメンバーの削除

removeMemberメソッドを使用して、ポータル・メンバーシップを取り消します。このメソッドを使用するには、ポータルの名前およびユーザーのリストを指定します。リストには、ユーザー名を指定するタイプGroupSpaceWSMembersのオブジェクトが含まれている必要があります。現在のポータル・メンバーのリストを取得するには、getGroupSpaceMetadataメソッドを使用します。詳細は、第56.1.5.3.4項「ポータル・メタデータの取得」を参照してください。

例56-9では、ユーザー(タイプGroupSpaceWSMembersの)PatおよびVickiをDatabasesポータルのメンバーシップから削除します。

例56-9 ポータルからのメンバーの削除

//create the list of users
List remMem = new ArrayList();
//create the GroupSpaceWSMembers objects
GroupSpaceWSMembers mem1 = new GroupSpaceWSMembers("pat");
GroupSpaceWSMembers mem2 = new GroupSpaceWSMembers("vicki");
2 lines
//add the GroupSpaceWSMembers objects to the list of users
remMem.add(mem1);
remMem.add(mem2);

//remove the users from the portal
client.removeMember("Databases", remMem);
//print a list of members to confirm the members were removed
GroupSpaceWSMetadata memMetData = client.getGroupSpaceMetadata("Databases");
for (GroupSpaceWSMembers mems: memMetData.getMembers())
{
System.out.println(mems.getMember());
System.out.println(mems.getRole());
}

56.1.5.2.4 ロール情報の取得

getRolesメソッドを使用して、指定されたポータルのすべてのロールを取得します。これは、メンバーをポータルに追加または招待するときにどのロールを使用可能であるかの判断に役立ちます。ロールには、そのままで使用できるロール(モデレータ、参加者、ビューア)およびカスタム・ロール(必要な場合)があります。このメソッドを使用するには、ポータルの名前を指定します。

例56-10では、Databasesポータルのロール情報を取得および表示します。

例56-10 ロール情報の取得

//retrieve the list of roles
List<String> roles = client.getRoles("Databases");
//print the list of roles
for (String role: roles)
{
System.out.println(role);
}

56.1.5.3 ポータルおよびポータル・テンプレートの情報の取得

次のPortalメソッドを使用して、ポータル情報を取得します。

- getGroupSpaces

- getPublicGroupSpaces

- getDiscoverableGroupSpaces

- getGroupSpaceMetadata

- getGroupSpaceMetadataByGuid

- getGroupSpaceTemplates

- getGroupSpaceTemplateMetadata

- getGroupSpaceTemplateMetadataByGuid

- getWebCenterSpacesURL

- getGroupSpaceURL

始める前に

WebCenter Portal APIメソッドを使用するには、その前に第56.1.4項「WebCenter Portal APIを使用するようにFrameworkアプリケーションを設定する方法」に記載されているすべての手順を完了する必要があります。

この項の内容は、次のとおりです

- ポータルのリストの取得

- パブリック・ポータルのリストの取得

- 検出可能ポータルのリストの取得

- ポータル・メタデータの取得

- ポータル・テンプレートのリストの取得

- ポータル・テンプレート・メタデータの取得

- PortalのURLの取得

- ポータルのURLの取得

- WebCenter PortalのツールとサービスのためのRSSフィードURLの取得

56.1.5.3.1 ポータルのリストの取得

getGroupSpacesメソッドを使用して、指定した問合せ文字列に一致するポータルのリストを取得します。このメソッドを使用するには、問合せ文字列を指定します。NULL値の問合せ文字列では、現在のユーザーがアクセス可能なすべてのポータルのリストが返されます。

このメソッドでは、現在のユーザーがアクセス可能なポータルが最大500個返されます。

例56-11では、文字列Databaseを含むポータルのリストが返されます。

例56-11 特定のポータルのリストの取得

List<String> allGroupSpaces = client.getGroupSpaces("Database");

例56-12では、現在のユーザーがアクセス権を持つすべてのポータルのリストが返されます。それには、nullの問合せ文字列を指定します。

例56-12 すべてのポータルのリストの取得

List<String> allGroupSpaces = client.getGroupSpaces(null)

56.1.5.3.2 パブリック・ポータルのリストの取得

getPublicGroupSpacesメソッドを使用して、指定した問合せ文字列に一致するパブリック・ポータルのリストを取得します。このメソッドを使用するには、問合せ文字列を指定します。NULL値の問合せ文字列では、すべてのパブリック・ポータルのリストが返されます。

このメソッドでは、WebCenter Portalアプリケーションにログインしていないユーザーも含めてすべてのユーザーがアクセス可能なポータルを、最大500個返します。

例56-13では、文字列Databaseを含むパブリック・ポータルのリストが返されます。

例56-13 特定のパブリック・ポータルのリストの取得

List<String> allPublicGroupSpaces = client.getPublicGroupSpaces("Database");

例56-14では、すべてのパブリック・ポータルのリストが返されます。それには、nullの問合せ文字列を指定します。

例56-14 すべてのパブリック・ポータルのリストの取得

List<String> allPublicGroupSpaces = client.getPublicGroupSpaces(null)

56.1.5.3.3 検出可能ポータルのリストの取得

getDiscoverableGroupSpacesメソッドを使用して、指定した問合せ文字列に一致する検出可能ポータルのリストを取得します。このメソッドを使用するには、問合せ文字列を指定します。NULL値の問合せ文字列では、すべての検出可能ポータルのリストが返されます。

このメソッドでは、WebCenter Portalにログインしているすべてのユーザーがアクセス可能なポータルを、最大500個返します。

例56-13では、文字列Databaseを含む検出可能ポータルのリストが返されます。

例56-15 検出可能ポータルのリストの取得

List<String> allDiscoverableGroupspaces = client.getDiscoverableGroupspaces("Database");

例56-14では、すべての検出可能ポータルのリストが返されます。それには、nullの問合せ文字列を指定します。

例56-16 すべての検出可能ポータルのリストの取得

List<String> allDiscoverableGroupSpaces = client.getDiscoverableGroupSpaces(null)

56.1.5.3.4 ポータル・メタデータの取得

getGroupSpaceMetadataまたはgetGroupSpaceMetadataByGuidメソッドを使用して、特定のポータルに関する情報(メタデータ)を取得します。これには、ポータルの説明、それを作成したユーザーの名前、それが最後に更新された日付などの情報が含まれます。

getGroupSpaceMetadataメソッドを使用するには、ポータルの名前を指定します。getGroupSpaceMetadataByGuidメソッドを使用するには、ポータルのGUIDを指定します。ポータル名はそのポータルが存在している間に変更できますが、GUIDは常に同じです。ポータルのGUIDは、次のようにして取得できます。

getGroupSpaceMetadata("spaceName").getGuid();

どちらのメソッドでも、ポータル・メタデータの取得に使用できる、より多くのメソッドが含まれたBeanオブジェクトが返されます。これらのメソッドは、GroupSpaceWSMetadataクラスによって提供されます。表56-3は、このBeanオブジェクトによって返されるメソッドを示しています。

表56-3 ポータル・メタデータを取得するためのメソッド

ポータル・メソッド

説明

getCreatedBy

ポータルの作成者の名前を返します。

getSpaceAttributes

ポータルのカスタム属性を返します。

getDescription

ポータルの説明を返します。

getDisplayName

ポータルの表示名を返します。

getGroupSpaceState

ポータルの状態(active、offline、deleted)を返します。

getGuid

ポータルのGUIDを返します。

getIconURL

ポータル・アイコンの場所を返します。

getKeywords

ポータルの説明に使用されるキーワードのカンマ区切りリストを返します。

getLastUpdated

ポータルが最後に更新された日付を返します。

getLogoURL

ポータル・ロゴの場所を返します。

getMailingList

ポータルのメーリング・リストを返します。

getMembers

ポータル・メンバーの現在のリストを返します。

getName

ポータルの内部名を返します。

isDiscoverable

ポータルのメンバーではないユーザーによって行われた検索でそのポータルが返されるかどうかを返します。

isPublic

ログインしていないユーザーに対してそのポータルが使用可能かどうかを返します。

例56-17では、ポータルの名前を指定してDatabasesポータルの説明、キーワードおよび最後に更新された日付の情報を取得します。

例56-17 ポータル名を使用したポータル・メタデータの取得

//get the exact name of the portal
List<String> myGroupSpace = client.getGroupSpaces("Databases");
//check that the API returns a single result
if(myGroupSpace.size() == 1)
{
//retrieve the metadata
GroupSpaceWSMetadata metadata = client.getGroupSpaceMetadata(myGroupSpace);
//get portal description
System.out.println("Description: " + metadata.getDescription());
//get portal keywords
System.out.println("Keywords: " + metadata.getKeywords());
//get the date the portal was last updated
System.out.println("Last Updated Date: "+ metadata.getLastUpdated().toString());
}

例56-18では、ポータルのGUIDを指定してDatabasesポータルの表示名、作成者および最後に更新された日付の情報を取得します。

例56-18 ポータルのGUIDを使用したポータル・メタデータの取得

GroupSpaceWSMetadata metadata = client.getGroupSpaceMetadataByGuid("Guid");
//get portal display name
System.out.println("Display Name: " + metadata.getDisplayName());
//get the name of the user who created the portal
System.out.println("Created By: " + metadata.getCreatedBy());
//get the date the portal was last updated
System.out.println("Last Updated Date: " + metadata.getLastUpdated().toString());

例56-19では、Databasesポータルと関連付けられたすべてのカスタム属性の名前、説明、タイプおよび値を取得します。

例56-19 カスタム属性メタデータの取得

//get the exact name of the portal
List<String> myGroupSpace = client.getGroupSpaces("Databases");
//check that the API returns a single result
if(myGroupSpace.size() == 1)
{
//retrieve the metadata
GroupSpaceWSMetadata metadata = client.getGroupSpaceMetadata(myGroupSpace);
//get list of custom attributes
List<GSCustomAttribute> attributes = metadata.getCustomAttributes();
//get name, description, type, and value for each custom attribute
for(GSCustomAttribute attribute: attributes)
{
System.out.println("Name :" + attribute.getName());
System.out.println("Description :" + attribute.getDescription());
System.out.println("Type :" + attribute.getType());
System.out.println("value.toString() :" + attribute.getValue().toString());
}
}

例56-20では、Databasesポータルのメンバーのリストを取得します。

例56-20 メンバーシップ情報の取得

//get the exact name of the portal
List<String> myGroupSpace = client.getGroupSpaces("Databases");
//check that the API returns a single result
if(myGroupSpace.size() == 1)
{
//retrieve the metadata
GroupSpaceWSMetadata metadata = client.getGroupSpaceMetadata(myGroupSpace);
//get the list of members
for(String member: metadata.getMembers())
{
System.out.println("Member UID: " + member);
}
}

56.1.5.3.5 ポータル・テンプレートのリストの取得

getGroupSpaceTemplatesメソッドを使用して、指定した問合せ文字列に一致するポータル・テンプレートのリストを取得します。このメソッドを使用するには、問合せ文字列を指定します。NULL値の問合せ文字列では、現在のユーザーがアクセス可能なすべてのテンプレートのリストが返されます。

このメソッドでは、現在のユーザーがアクセス可能なテンプレートが最大500個返されます。

例56-21では、文字列Interestを含むポータル・テンプレートのリストが返されます。

例56-21 特定のポータル・テンプレートのリストの取得

List<String> allGroupSpaceTemplates = client.getGroupSpaceTemplates("Interest");

例56-22では、現在のユーザーがアクセス権を持つすべてのポータル・テンプレートのリストが返されます。それには、nullの問合せ文字列を指定します。

例56-22 すべてのポータル・テンプレートのリストの取得

List<String> allGroupSpaceTemplates = client.getGroupSpaceTemplates(null);

56.1.5.3.6 ポータル・テンプレート・メタデータの取得

getGroupSpaceTemplateMetadataおよびgetGroupSpaceTemplateMetadataByGuidメソッドを使用して、特定のポータル・テンプレートに関する情報(メタデータ)を取得します。これには、テンプレートの説明、それを作成したユーザーの名前などの情報が含まれます。

getGroupSpaceTemplateMetadataメソッドを使用するには、テンプレートの名前を指定します。getGroupSpaceTemplateMetadataByGuidメソッドを使用するには、テンプレートのGUIDを指定します。ポータル・テンプレート名はそのテンプレートが存在している間に変更できますが、GUIDは常に同じです。

どちらのメソッドでも、ポータル・テンプレート・メタデータの取得に使用できる、より多くのメソッドが含まれたBeanオブジェクトが返されます。これらのメソッドは、GroupSpaceWSMetadataクラスによって提供されます。表56-4は、このBeanオブジェクトによって返されるメソッドを示しています。

表56-4 ポータル・テンプレート・メタデータを取得するためのメソッド

ポータル・メソッド

説明

getCreatedBy

テンプレートの作成者の名前を返します。

getDescription

テンプレートの説明を返します。

getDisplayName

テンプレートの表示名を返します。

getGuid

テンプレートのGUIDを返します。

getIconURL

テンプレート・アイコンの場所を返します。

getKeywords

テンプレートの説明に使用されるキーワードのカンマ区切りリストを返します。

getLogoURL

テンプレート・ロゴの場所を返します。

getName

テンプレートの内部名を返します。

例56-23では、テンプレート名を指定してCommunityofInterestポータル・テンプレートのGUID、説明および作成者の情報を取得します。

例56-23 テンプレート名を使用したテンプレート・メタデータの取得

GroupSpaceWSMetadata metadata = client.getGroupSpaceTemplateMetadata(myGroupSpaceTemplate);
//get the exact name of the portal template
List<String> myGroupSpaceTemplate = client.getGroupSpaceTemplates("CommunityofInterest");
//check that the API returns a single result
if(myGroupSpaceTemplate.size() == 1)
{
//retrieve the metadata -- get GUID
System.out.println("GUID: " + metadata.getGuid());
//get template description
System.out.println("Description: " + metadata.getDescription());
//get name of user who created the template
System.out.println("Keywords: " + metadata.getCreatedBy());
}

例56-24では、テンプレートGUIDを指定してポータル・テンプレートの名前を取得します。

例56-24 テンプレートGUIDを指定したテンプレート・メタデータの取得

GroupSpaceWSMetadata templGuidMetadata = client.getGroupSpaceTemplateMetadataByGuid("Guid");
System.out.println("Template Name: " + templGuidMetadata.getName());

56.1.5.3.7 PortalのURLの取得

getWebCenterSpacesURLメソッドを使用して、WebCenter PortalインスタンスのURLを取得します。

例56-25では、WebCenter Portalの現在実行中のインスタンスのURLを取得します。

例56-25 WebCenter Portal URLの取得

String myWebCenterSpacesURL = client.getWebCenterSpacesURL();

56.1.5.3.8 ポータルのURLの取得

getGroupSpaceURLメソッドを使用して、特定のポータルのURLを取得します。これは、ポータルのハイパーリンクを作成する場合、または絶対URLにすることが必要な相対URLがある場合に便利です。このメソッドを使用するには、ポータルの名前を指定します。

例56-26では、DatabasesポータルのURLを取得します。

例56-26 ポータルのURLの取得

String myGroupSpaceURL = client.getGroupSpaceURL("Databases");

例56-27では、ポータルのリストをハイパーリンクとして出力します。

例56-27 ハイパーリンクとしてのポータルのリストの出力

//get the list of portals
List<String> spaces = client.getGroupSpaces("");
//print the list of portals as hyperlinks
for (String spaceName : spaces)
{
print("<a href =""" + client.getGroupSpaceURL(spaceName) + "">" + spaceName + "</a><br>");
}

ポータル内に特定のページのURLを作成するには、ポータルURLを取得し、ページ情報を追加します。ポータル・ページのプリティURLを作成する方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築』のWebCenter PortalのプリティURLに関する項を参照してください。

56.1.5.3.9 WebCenter PortalのツールとサービスのためのRSSフィードURLの取得

WebCenter Portalメンバーは、様々なRSSニュース・フィードを介してポータル内で起きていることを把握できます。次のポータルRSSフィードを使用できます。

- お知らせのRSS - ポータルのお知らせの表示

- ディスカッションのRSS - ディスカッション・フォーラムへの投稿の追跡

- リストのRSS - リストに対する改訂の監視

- 最近のアクティビティのRSS - 最近のアクティビティの監視

WebCenter PortalからのRSSフィードURLは、次のWebCenter Portal APIメソッドを使用して取得できます。

- getServiceRSSFeedURL

- getServiceRSSFeedURLbyGuid

RSSフィードのURLを取得するには、ポータルを(名前またはGUIDで)特定し、必要なサービスを(サービスIDで)指定する必要があります。サービスIDは、次のようにGroupSpaceWSClientの定数として使用できます。

- お知らせ - GroupSpaceWSClient.ANNOUNCEMENT_SERVICE_ID

- ディスカッション - GroupSpaceWSClient.DISCUSSION_FORUM_SERVICE_ID

- リスト - GroupSpaceWSClient.LIST_SERVICE_ID

- 最近のアクティビティ - GroupSpaceWSClient.RECENT_ACTIVITY_SERVICE_ID

getServiceRSSFeedURLを使用したポータルRSSニュース・フィードURLの取得

getServiceRSSFeedURLメソッドを使用し、ポータル名を指定することによって特定のポータルのサービス関連のRSSニュース・フィードURLを取得します。

getServiceRSSFeedURLを使用してサービスのRSSニュース・フィードURLを取得するには、次を使用します:

String service_URL = client.getServiceRSSFeedURL("groupspace_name",service_ID);

ここで:

service_URLは、取得されるサービス・パラメータです

groupspace_nameは、ポータルの名前です

service_IDは、RSSニュース・フィードURLを取得するサービスのIDです。ANNOUNCEMENT_SERVICE_ID、DISCUSSION_FORUM_SERVICE_ID、RECENT_ACTIVITY_SERVICE_ID、LIST_SERVICE_IDのいずれかを使用します。

したがって、必要なサービスに応じて、次のものを使用できます。

- String service_URL = client.getServiceRSSFeedURL("groupspace_name", GroupSpaceWSClient.ANNOUNCEMENT_SERVICE_ID)

- String service_URL = client.getServiceRSSFeedURL("groupspace_name", GroupSpaceWSClient.DISCUSSION_FORUM_SERVICE_ID)

- String service_URL = client.getServiceRSSFeedURL("groupspace_name", GroupSpaceWSClient.LIST_SERVICE_ID)

- String service_URL = client.getServiceRSSFeedURL("groupspace_name", GroupSpaceWSClient.RECENT_ACTIVITY_SERVICE_ID)

例56-28では、Finance_Projectという名前のポータルの最近のアクティビティのRSSフィードURLを取得します。

例56-28 最近のアクティビティのRSSフィードURLの取得

String recentActivityURL = client.getServiceRSSFeedURL("Finance_Project", GroupSpaceWSClient.RECENT_ACTIVITY_SERVICE_ID);

GetServiceRSSFeedURLbyGuidを使用したRSSニュース・フィードURLの取得

getServiceRSSFeedURLbyGuidメソッドを使用し、ポータルのGUIDを指定することによって特定のポータルのサービス関連のRSSニュース・フィードURLを取得します。

getServiceRSSFeedURLbyGuidを使用してサービスのRSSニュース・フィードURLを取得するには、次を使用します:

String service_URL = client.getServiceRSSFeedURLbyGuid("groupspace_GUID",service_ID);

ここで:

service_URLは、取得されるサービス・パラメータです

groupspace_GUIDはポータルGUIDです。ポータルのGUIDの取得の詳細は、第56.1.5.3.4項「ポータル・メタデータの取得」を参照してください。

service_IDは、RSSニュース・フィードURLを取得するサービスのIDです。ANNOUNCEMENT_SERVICE_ID、DISCUSSION_FORUM_SERVICE_ID、RECENT_ACTIVITY_SERVICE_ID、LIST_SERVICE_IDのいずれかを使用します。

例56-29では、GUID: s2201fa44_b441_4bdd_950e_47307f6f9800のポータルの最近のアクティビティRSSフィードURLを取得します。

例56-29 最近のアクティビティのRSSフィードURLの取得

String recentActivityURL = client.getServiceRSSFeedURLbyGuid("s2201fa44_b441_4bdd_950e_47307f6f9800", GroupSpaceWSClient.RECENT_ACTIVITY_SERVICE_ID);

56.1.6 WebCenter Portal APIから発生した例外を処理する方法

GroupSpaceWSExceptionクラスは、WebCenter Portal APIメソッドから発生した例外を処理するためのメソッドを提供します。

表56-5 GroupSpaceWSExceptionクラスのPortalメソッド

メソッド

クラス

説明

getLocalizedMessage

GroupSpaceWSException

ローカライズされたエラー・メッセージを作成します。

printStackTrace

GroupSpaceWSException

標準エラー・ストリームに例外およびそのバックトレースを出力します。

この項には次のサブセクションが含まれます:

- 第56.1.6.1項「ローカライズされたエラー・メッセージの提供」

- 第56.1.6.2項「エラー・スタックのリスト」

56.1.6.1 ローカライズされたエラー・メッセージの提供

場合によっては、WebCenter Portal APIによって提供されるデフォルトのエラー・メッセージが、自身の特定のアプリケーションに対しては具体性に欠けると思われることがあります。このような場合、独自のエラー・メッセージを提供できます。

getLocalizedMessageメソッドを使用して、アプリケーション固有のエラー・メッセージを作成できます。

例56-30は、ポータルを作成するためのコードを組み込んだサーブレットを示しています。作成プロセス中に例外が発生した場合、ローカライズされたメッセージが出力されます。

例56-30 ローカライズされたエラー・メッセージの出力

servlet1.java

doGet()
{
...
print("<b>Output</b>");
try
{
GroupSpaceWSClient client = new GroupSpaceWSClient(context);
client.createGroupSpace("Databases", "Databases, "A community for people interested in databases", "databases, oracle", "CommunityofInterest");
print("Successfully created portal");
}
catch(GroupSpaceWSException ex)
//For example:
{
if(ex instanceof GroupSpaceNameNullException)
print(ex.getLocalizedMessage());
else if (ex instanceof GroupSpaceDescNullException)
print(ex.getLocalizedMessage());
}
...
}

56.1.6.2 エラー・スタックのリスト

これは、デバッグ目的で、最終的にどのエラーが特定の操作の失敗につながるのかを調べて問題の根底にある原因を発見するために役立ちます。printStackTraceメソッドを使用して、特定の例外を発生させたエラーをすべてリストします。

例56-31では、例外およびその原因になったエラーすべてを出力します。

例56-31 エラー・スタックのリスト

servlet1.java

doGet()
{
...
print("<b>Output</b>");
try
{
GroupSpaceWSClient client = new GroupSpaceWSClient(context);
client.createGroupSpace("Databases", "Databases", "A community for people interested in databases", "databases, oracle", "CommunityofInterest");
print("Successfully created portal");
}
catch(GroupSpaceWSException ex)
{
ex.printStackTrace();
}
...
}

56.1.7 WebCenter Portal APIの詳細情報の検索

APIリファレンス・ドキュメント

WebCenter Portal APIの詳細な構文情報は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

56.1.8 WebCenter Portal APIでのトラブルシューティングの問題

WebCenter Portal APIで問題が発生した場合は、次のことを確認してください。

1. WebCenter PortalとクライアントFrameworkアプリケーションの両方の資格証明ストアが適切に構成されていることを確認してください。
Oracle Fusion Middleware Oracle WebCenter Portalの管理のポリシーと資格証明ストアの構成に関する項も参照してください。

2. context.setRecipientKeyAliasに渡される別名をチェックして、WebCenter Portalクライアント・コンテキストがPortal Frameworkアプリケーションで正しく設定されていることを確認します。この別名は、次のようにプロデューサ(Portal)の公開鍵の別名である必要があります。

GroupspaceWSContext context = new GroupspaceWSContext();
context.setEndPoint(endPointUrl);
context.setRecipientKeyAlias("orakey");
groupspaceInternalWSClient = new GroupspaceWSInternalClient(context);

この例では、プロデューサの公開鍵の別名はorakeyです。第56.1.4.4項「WebCenter Portalクライアント・コンテキストの設定」も参照してください。

3. 接続の両端にキーストアが存在していることを確認してください。例:
- webcenter.jks (Portalの側にコピーされている)

- clientapi.jks (Portal Frameworkアプリケーションの側にコピーされている)

たとえば、単純なトポロジの場合、次のコマンドではclientapi.jksおよびwebcenter.jksが生成されます。

keytool -genkeypair -keyalg RSA -dname "cn=spaces,dc=example,dc=com"
-alias orakey -keypass mypassword -keystore webcenter.jks -storepass mypassword
-validity 360keytool -exportcert -v -alias orakey -keystore webcenter.jks
-storepass mypassword -rfc -file webcenter.cerkeytool -importcert -alias webservice_client_api
-file webcenter.cer -keystore clientapi.jks -storepass mypasswordkeytool -genkeypair -keyalg RSA -dname "cn=clientapi,dc=example,dc=com"
-alias clientapi -keypass mypassword -keystore clientapi.jks -storepass mypassword -validity 360
keytool -exportcert -v -alias clientapi -keystore clientapi.jks -storepass mypassword -rfc -file clientapi.cer
keytool -importcert -alias clientapi -file clientapi.cer -keystore webcenter.jks -storepass mypassword

第56.1.4.3項「Portal FrameworkアプリケーションとWebCenter Portal間の接続のセキュリティ保護」も参照してください。

56.2 WebCenter Portal REST APIの使用

WebCenter Portalは、様々なポータル関連操作をサポートするREST APIを提供します。REST APIメソッドを使用して、ポータル内で次のアクションを実行できます。

- アプリケーション内のすべてのポータルをリスト、パブリック・ポータルのみをリスト、参加しているポータルをリスト、検出可能ポータルをリストします。

- 1つのポータルの詳細を表示します。

- ポータルのメンバーをリストします。

- ポータル・メンバーに対するロールの割当てをリストします。

- 1つのポータルに対して定義されているカスタム属性をリストします。

- 特定のカスタム属性の詳細を表示します。

- 1つのポータルのリストを表示および追加します。

- 1つのリストのリスト・アイテム(行)を表示および更新します。

- リスト・アイテム詳細(列)を表示、更新および削除します。

この項では、Portal REST APIについて説明します。次のサブセクションが含まれます:

- 第56.2.1項「Portalのエントリ・ポイント」

- 第56.2.2項「Portalのリソース・タイプの分類」

- 第56.2.3項「Portalのセキュリティに関する考慮事項」

- 第56.2.4項「Portalのリソース・タイプ」

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

56.2.1 Portalのエントリ・ポイント

各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。WebCenter Portal REST APIのエントリ・ポイントを見つけるには、次のresourceTypeを持つリンク要素を見つけます。

urn:oracle:webcenter:spaces

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供され、それによって現在のユーザーがアクセスできるポータルのリストが返されます。クライアントはこのエントリ・ポイントにHTTPリクエストを送信して、WebCenter Portalを操作します。

リソース索引の詳細は、第53.5.1項「リソース索引の使用」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

56.2.2 Portalのリソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第56.2.4項「Portalのリソース・タイプ」の該当の項を参照してください。

Portalの分類は、次のとおりです。

urn:oracle:webcenter:spaces
urn:oracle:webcenter:spaces:siteresources
urn:oracle:webcenter:spaces:resource:templates
urn:oracle:webcenter:spaces:resource:template
urn:oracle:webcenter:space:attributes
urn:oracle:webcenter:space:roles
urn:oracle:webcenter:space
urn:oracle:webcenter:space:icon
urn:oracle:webcenter:space:members
urn:oracle:webcenter:space:member
urn:oracle:webcenter:space:attributes
urn:oracle:webcenter:space:attribute
urn:oracle:webcenter:space:roles
urn:oracle:webcenter:space:role
urn:oracle:webcenter:space:resourceindex
urn:oracle:webcenter:space:lists
urn:oracle:webcenter:space:list
urn:oracle:webcenter:space:rows
urn:oracle:webcenter:space:row
urn:oracle:webcenter:space:columns
urn:oracle:webcenter:space:column

56.2.3 Portalのセキュリティに関する考慮事項

このサービスでは、セキュリティに関する特定の考慮事項はありません。一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

56.2.4 Portalのリソース・タイプ

次の項では、各リソース・タイプについて知っておく必要がある情報をすべて提供します。

- 第56.2.4.1項「urn:oracle:webcenter:spaces」

- 第56.2.4.2項「urn:oracle:webcenter:siteresources」

- 第56.2.4.3項「urn:oracle:webcenter:spaces:resource:templates」

- 第56.2.4.4項「urn:oracle:webcenter:space」

- 第56.2.4.5項「urn:oracle:webcenter:space:resourceindex」

- 第56.2.4.6項「urn:oracle:webcenter:space:roles」

- 第56.2.4.9項「urn:oracle:webcenter:space:attributes」

- 第56.2.4.10項「urn:oracle:webcenter:space:attribute」

- 第56.2.4.11項「urn:oracle:webcenter:space:members」

- 第56.2.4.12項「urn:oracle:webcenter:space:member」

- 第56.2.4.13項「urn:oracle:webcenter:space:lists」

- 第56.2.4.14項「urn:oracle:webcenter:space:list」

- 第56.2.4.15項「urn:oracle:webcenter:space:list:rows」

- 第56.2.4.16項「urn:oracle:webcenter:space:list:row」

- 第56.2.4.17項「urn:oracle:webcenter:space:list:columns」

- 第56.2.4.18項「urn:oracle:webcenter:space:list:column」

56.2.4.1 urn:oracle:webcenter:spaces

ポータルのリストの表示(GET)および新しいポータルの作成(POST)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、各ポータルが含まれており、各ポータルには、そのポータルに対して操作するためのリンクが含まれています。

portalsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces

spacesでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET: すべてのポータルに関する情報を返します。

- リクエスト - 本体: なし

- 問合せパラメータ:

- startIndex

- itemsPerPage

- projection - 許可されている値はsummaryおよびdetailsです。デフォルトはsummaryです。

- visibility - すべてのポータル、パブリック・ポータルのみ、参加しているポータルまたは検出可能ポータルのうちどのポータルがリストに含まれるのかを決定します。
使用可能な値は、all、public、joinedおよびdiscoverableです。デフォルトはjoinedです。

- レスポンス - 本体: ポータルのコレクション

- POST: 新しいポータルを作成します。

- リクエスト - 本体: スペース

<space>
<name>aName</name>
<description>aDescription</description>
<templateName>aTemplate</templateName>
</space>

注意:

templateNameパラメータは、urn:oracle:webcenter:spaces:resource:templatesから返される有効なテンプレート名である必要があります。たとえば、デフォルトのテンプレート名は次のとおりです。

Basic
CommunityOfInterest
ProjectSpace

spacesからリンクされるリソース・タイプ

表56-6は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-6 urn:oracle:webcenter:spacesに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:spaces

urn:oracle:webcenter:space

56.2.4.2 urn:oracle:webcenter:siteresources

サイト・リソースのリストの取得(GET)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、すべてのサイト・リソース名のリストが含まれています。サイト・リソース名を取得する主な目的は、そのポータル内で使用可能なすべてのリソースを把握するためです。

返されるリストには、WebCenter Portalの管理コンソールの「リソース」タブの下にあるリソースが含まれ、ページ・テンプレート、ナビゲーション、スキン、ページ・スタイルなどのリソースが含まれます。

siteresourcesへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
siteresources

siteresourcesでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- 問合せパラメータ:

- projection - 許可されている値はsummaryおよびdetailsです。デフォルトはsummaryです。

- q - siteResourceTypeまたはseeded、あるいはその両方で検索できます。
siteResourceTypeが指定されている場合、問合せによって、そのサイト・リソース・タイプのすべてのサイト・リソース名が返されます。

形式: q = siteResourceType:equals:<value>

使用可能な値は、siteTemplate、contentPresenter、pageStyle、navigation、resourceCatalogまたはskinです。

例:

q=siteResourceType:equals:siteTemplate

seededがtrueに指定されている場合、この問合せによってシードされているすべてのサイト・リソース名が返されます。

形式: q=seeded:equals:<value>

使用可能な値は、trueまたはfalseです。

例:

q=seeded:equals:false (シードされていないリソースをすべて返します)

シードされていないサイト・テンプレートが必要な場合、問合せは次のようになります。

siteResourceType:equals:siteTemplate;seeded:equals:false

- レスポンス - 本体: 指定された範囲のすべてのサイト・リソース・タイプのすべてのサイト・リソース名のリスト。siteResourceTypeが指定されている場合、そのサイト・リソース・タイプのすべてのサイト・リソース名が返されます。

siteresourcesの読取り専用要素

表56-7に、siteresourcesの読取り専用要素をリストします。

表56-7 urn:oracle:webcenter:siteresourcesの読取り専用要素

要素

タイプ

説明

guid

String

サイト・リソースのグローバルID。

displayName

String

エンド・ユーザーに表示されるサイト・リソースの名前。

name

String

サイト・リソースの名前。名前によるすべてのサイト・リソースの完全なリストは、表56-8に示します。

description

String

サイト・リソースの説明。

siteResourceType

String

サイト・リソースのタイプ。

scopeName

String

スペースの名前またはアプリケーション・レベルのデフォルト範囲のいずれか。

seeded

Boolean

サイト・リソースが事前に移入されている場合はtrueに設定します。

visible

Boolean

このサイト・リソースがユーザー・インタフェースに表示される場合はtrueに設定します。

createdBy

String

サイト・リソースを作成したユーザーのユーザー名。

createdDate

日付

サイト・リソースが作成された日付。

modifiedBy

String

サイト・リソースを更新したユーザーのユーザー名。

modifiedDate

日付

サイト・リソースが変更された日付。

version

String

サイト・リソースのバージョン。

名前によるサイト・リソースのリスト

表56-8は、名前によるサイト・リソースのリストであり、各リソースのタイプおよび説明を示します。

表56-8 WebCenter Portalによって提供される名前によるサイト・リソースのリスト

名前

タイプ

説明

アコーディオン・ビュー

contentPresenter

複数のコンテンツ・アイテムをアコーディオン(積み重ねた)形式で表示できます。アイテムをクリックすると、その他のアイテムが閉じて、選択されたアイテムの詳細が表示されます。

空白

pageStyle

「空白」ページ・スタイル

空白

taskFlowStyle

空白

ブログ

pageStyle

「ブログ」ページ・スタイル

箇条書きビュー

contentPresenter

複数のコンテンツ・アイテムを箇条書きリストで表示します。コンテンツ・アイテムのみが表示され、サブフォルダは省略されます。

フォルダ・ラベルを使用した箇条書きビュー

contentPresenter

複数のコンテンツ・アイテムを箇条書きリストで表示します。親フォルダの名前を、リストの上にラベルとして表示します。コンテンツ・アイテムのみが表示され、サブフォルダは省略されます。

カルーセル・ビュー

contentPresenter

カルーセル形式で複数のコンテンツ・アイテムを表示します。ユーザーは、スライダ・バーを使用してアイテムを左から右に参照します。

デフォルトのドキュメント詳細ビュー

contentPresenter

作成日、変更日、作成者、アイテムを最後に変更したユーザー、パス、コメントなど1つのコンテンツ・アイテムに関する詳細情報を表示します。

デフォルトのホーム・ポータル・カタログ

resourceCatalog

ホーム・ポータルでアプリケーションレベルのページおよびタスク・フローを編集するときに使用します。

デフォルトのリスト・アイテム・ビュー

contentPresenter

単一のコンテンツ・アイテム・ビューで使用されます。このビューでは、1行に対するアイコンとアイテム名が表示され、アイテム名をクリックすると、アイテムが表示またはダウンロードされます。

フォルダのデフォルトのリスト・アイテム・ビュー

contentPresenter

単一のコンテンツ・アイテム・ビューで使用されます。このビューでは、1行に対するアイコンとアイテム名が表示され、アイテム名をクリックすると、アイテムが表示またはダウンロードされます。

デフォルトのページ・テンプレート・カタログ

resourceCatalog

ページ・テンプレートを編集するときに使用します

デフォルト・ポータル・カタログ

resourceCatalog

ポータルレベルのページおよびタスク・フローを編集するときに使用します

デフォルトのビュー

contentPresenter

1つのコンテンツ・アイテムを表示します。イメージおよびHTMLコンテンツ・アイテムは、ブラウザに直接表示されます。その他のアイテム・タイプの場合は、詳細は関連するファイルをダウンロードするためのリンクとともに表示されます。

フュージョンFX

スキン

Fusionサイド・ナビゲーション

siteTemplate

サイド・ナビゲーション付きストレッチ・ページ・レイアウト。Fusion FXスキンを使用します。

Fusionトップ・ナビゲーション

siteTemplate

トップ・ナビゲーション付きストレッチ・ページ・レイアウト。Fusion FXスキンを使用します。

ホームページ

pageStyle

ホーム・ページのスタイル

アイコン表示

contentPresenter

サブフォルダおよびコンテンツ・アイテムを表すアイコンを使用して、タイル・レイアウトに複数のコンテンツ・アイテムを表示します。

左を狭く

pageStyle

「左を狭く」ページ・スタイル

リスト・ビュー

contentPresenter

複数のコンテンツ・アイテムを簡易リストに表示します。

詳細パネルを使用したリスト・ビュー

contentPresenter

左側のリストに複数のコンテンツ・アイテムを表示します。右側のパネルには、選択したアイテムの詳細が表示されます。

パラメータ・フォーム

taskFlowStyle

右を狭く

pageStyle

ソート可能な表ビュー

contentPresenter

複数のコンテンツ・アイテムを、ドキュメント名、作成日および変更日を含むソート可能な表に表示します。

HTMLページ

pageStyle

HTMLページ・スタイル

スペース・デフォルト・ナビゲーション・モデル

ナビゲーション

ポータル内の現在のページを表示するナビゲーション・モデル

ブログ/Wiki/リストのサブメニューがあるポータル・ナビゲーション

ナビゲーション

ブログ、Wiki、リストの現在のページおよびサブメニューを表示するナビゲーション・モデル

ストレッチ

taskFlowStyle

タブ・ビュー

contentPresenter

複数のコンテンツ・アイテムをタブとして表示します。タブをクリックすると、関連するアイテムの詳細が表示されます。

3列

pageStyle

「3列」ページ・スタイル

Webページ

pageStyle

「Webページ」ページ・スタイル

パブリック・ページ・テンプレート

siteTemplate

パブリック・ページのデフォルト・ページ・テンプレート

トップ・ナビゲーション付きの共同

siteTemplate

フロー・レイアウトおよびトップ・ナビゲーション付きの、共同ポータル用ページ・テンプレート。WebCenter Portals FXスキンを使用します。

Portal FX

スキン

Portal FXスキン

トップ・ナビゲーション付きのポータル中心

siteTemplate

フロー・レイアウトおよびトップ・ナビゲーション付きの、ポータル中心サイト用ページ・テンプレート。Portal FXスキンを使用します。

サイド・ナビゲーション

siteTemplate

サイド・ナビゲーション付きフロー・ページ・レイアウト。Portal FXスキンを使用します。

サイド・ナビゲーション(ストレッチ)

siteTemplate

サイド・ナビゲーション付きストレッチ・ページ・レイアウト。Portal FXスキンを使用します。

トップ・ナビゲーション

siteTemplate

フロー・レイアウトとトップ・ナビゲーション付きデフォルト・ページ・テンプレート。Portal FXスキンを使用します。

トップ・ナビゲーション(ストレッチ)

siteTemplate

トップ・ナビゲーション付きストレッチ・ページ・レイアウト。Portal FXスキンを使用します。

Wiki

pageStyle

Wikiページ・スタイル

siteresourcesの書込み可能要素

このリソースに書込み可能要素はありません。

56.2.4.3 urn:oracle:webcenter:spaces:resource:templates

ポータル・テンプレートのリストの取得(GET)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、テンプレート名のリストが含まれています。テンプレート名を取得する主な目的は、ポータルの作成コマンドのtemplateNameパラメータの値を指定することです。

templatesへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
resource
templates

templatesでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- 問合せパラメータ:

- startIndex

- projection - 許可されている値はsummaryおよびdetailsです。デフォルトはsummaryです。

- q - 検索を実行します。

- itemsPerPage

- レスポンス - 本体: テンプレート名のリスト

問合せパラメータの詳細は、第53.5.2.5項「テンプレート」を参照してください。

templatesからリンクされるリソース・タイプ

表56-9は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-9 urn:oracle:webcenter:spacesに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:spaces:resource:templates

56.2.4.4 urn:oracle:webcenter:space

1つのポータルの詳細の表示(GET)、ネストされたポータルの作成(POST)またはポータルの削除(DELETE)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、その作成者、説明、メンバー、カスタム属性などURIによって識別される特定のポータルが含まれています。

注意:

このリソースからのレスポンスには、そのポータルのメッセージ・ボードへのリンクも含まれています。

spaceへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
space

spaceでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- 問合せパラメータ:

- projection - 使用可能な値はsummaryおよびdetailsです。デフォルトはdetailsです。メンバーおよびカスタム属性詳細を除外するには、summaryを選択します。

- レスポンス - 本体: スペース

- POST: 指定したポータルの子(サブポータル)である新しいポータルを作成します。この機能では、階層化されたポータルまたはネストされたポータルの作成がサポートされています。

- リクエスト - 本体: スペース

<space>
<name>FooSpace</name>
<description>foobar</description>
<templateName>CommunityOfInterest</templateName>
</space>

注意:

templateNameパラメータは、urn:oracle:webcenter:spaces:resource:templatesから返される有効なテンプレート名である必要があります。たとえば、デフォルトのテンプレート名は次のとおりです。

Basic
CommunityOfInterest
ProjectSpace

- DELETE: 指定されたポータルを削除します。

- リクエスト - 本体: なし
削除の際に、204ステータス・コードが返されます。ポータルが存在していないか、ユーザーにポータルを削除する権限がない場合に、「403 禁止」ステータスが返されます。

問合せパラメータの詳細は、第53.5.2.5項「テンプレート」を参照してください。

spaceの書込み可能要素

表56-10に、このリソースの書込み可能な要素を示します。

表56-10 urn:oracle:webcenter:spaceの書込み可能要素

要素

タイプ

説明

description

String

ポータルの説明。

name

String

ポータルの内部名。

templateName

String

urn:oracle:webcenter:spaces:resource:templatesから返される有効なテンプレート名にする必要があります。たとえば、デフォルトのテンプレート名は次のとおりです。

Basic
CommunityOfInterest
ProjectSpace

spaceの読取り専用要素

表56-11に、このリソースの読取り専用要素を示します。

表56-11 urn:oracle:webcenter:spaceの読取り専用要素

要素

タイプ

説明

guid

String

ポータルのグローバルID。

creator

String

ポータルを作成したユーザーのID。

author

personReference

ポータルを作成したユーザーに関するユーザー情報。GUID、ID、表示名およびプロファイル・アイコンへのリンクで構成されます(creatorと同じユーザー)。

displayName

String

メンバーに表示される、ポータルの名前。

iconUrl

String

ポータルのアイコン・イメージの完全修飾URL。

logoUrl

String

ポータルのロゴ・イメージの相対URL。

isOffline

Boolean

ポータルがオフラインであるかオンラインであるかを示します。

isDiscoverable

Boolean

ポータルが検出可能かどうかを指定します。

isPublic

Boolean

ポータルがパブリックかどうかを指定します。

keywords

String

ポータルのキーワードをリストします。

mailingList

String

ポータルにメーリング・リスト電子メールがある場合は、それをリストします。

parentDisplayName

String

ポータルが子ポータルであり、親がある場合は、その親の表示名を表示します。この場合、親ポータルの権限が子ポータルによって継承されているかどうかを示すisInheritFromParentブール要素も存在します。特に、親ポータルのメンバーは継承されます。

serviceDataCopied

String

このポータルに基づいて作成されるときに、新しいポータルまたはテンプレートにコピーされるデータのサービスIDのリスト。

defaultLanguage

String

デフォルト言語。

landingPage

String

指定されている場合は、ポータルのランディング・ページのURI。

isTemplate

Boolean

これがテンプレートであるかどうかを指定します。

isUnsubscriptionApprovalRequired

Boolean

サブスクライブ解除のために承認が必要かどうかを指定します。

isPublishRss

Boolean

ポータルに関連付けられたRSSフィードがあるかどうかを指定します。

isClosed

Boolean

ポータルが閉じられているかどうかを指定します。

isBlockAllAccess

Boolean

ポータルへのすべてのアクセスがブロックされるかどうかを指定します(これがどのように起きるかは不明)。

members

String

ポータルのmembers要素を返します。

attributes

String

ポータルのattributes要素を返します。

spaceからリンクされるリソース・タイプ

表56-12は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-12 urn:oracle:webcenter:spaceに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space

urn:oracle:webcenter:space:attributes

urn:oracle:webcenter:space:members

urn:oracle:webcenter:space:roles

urn:oracle:webcenter:space:icon

urn:oracle:webcenter:activities:stream

urn:oracle:webcenter:messageBoard

56.2.4.5 urn:oracle:webcenter:space:resourceindex

Portalリソース索引の表示に使用するURIを識別するには、このリソース・タイプを使用します。

resourceindexへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
space

resourceindexでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- 問合せパラメータ: なし

- レスポンス - 本体: リソース索引

resourceindexからリンクされるリソース・タイプ

表56-13は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-13 urn:oracle:webcenter:space:resourceindexに関連するリソース・タイプ

rel

リソース・タイプ

urn:oracle:webcenter:space:lists

urn:oracle:webcenter:discussions:forum

56.2.4.6 urn:oracle:webcenter:space:roles

指定されたポータルのロールのリストを取得(GET)するには、このリソース・タイプを使用します。このコールから返された結果を使用して、urn:oracle:webcenter:space:membersのポータルに新しいメンバーを追加できます。

space:rolesへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
space
roles

rolesでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET: 指定したポータルに割り当てられているロールのリストを返します。

rolesからリンクされるリソース・タイプ

表56-14は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-14 urn:oracle:webcenter:spaces:rolesに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:roles

urn:oracle:webcenter:space:role

urn:oracle:webcenter:parent

urn:oracle:webcenter:space

56.2.4.7 urn:oracle:webcenter:space:role

指定されたロールを取得(GET)するには、このリソース・タイプを使用します。

指定されたポータルのロールのリストを取得(GET)するには、このリソース・タイプを使用します。このコールから返された結果を使用して、urn:oracle:webcenter:space:membersのポータルに新しいメンバーを追加できます。

space:roleへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
space
role

roleでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET: 指定したロールを返します。

roleからリンクされるリソース・タイプ

表56-14は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-15 urn:oracle:webcenter:spaces:rolesに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:role

urn:oracle:webcenter:space:role

urn:oracle:webcenter:parent

urn:oracle:webcenter:space

56.2.4.8 urn:oracle:webcenter:space:icon

指定したポータルで使用されるアイコンを取得(GET)するには、このリソース・タイプを使用します。

注意:

このリソース・タイプは、ポータルのレスポンスではなく、ポータルの参照に使用されます。このリソースは、ポータルが参照される任意の場所(アクティビティ・ストリームやポータル・イベント内など)で使用できます。

space:iconへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
space
icon

iconでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET: 指定したポータルに使用されるアイコンを返します。

iconからリンクされるリソース・タイプ

表56-14は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-16 urn:oracle:webcenter:spaces:rolesに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:icon

urn:oracle:webcenter:parent

urn:oracle:webcenter:space

56.2.4.9 urn:oracle:webcenter:space:attributes

あるポータルに対して定義されているカスタム属性のリストの表示(GET)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、そのポータルの各カスタム属性が含まれており、各属性には、その属性に対して操作するためのリンクが含まれています。また、このリソース・タイプは、ポータルにカスタム属性を追加(POST)するためにも使用します。

attributesへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
space
attributes

attributesでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- 問合せパラメータ: なし

- レスポンス - 本体: 属性のコレクション

- POST: 指定したポータルにカスタム属性を追加します。

- リクエスト - 本体:

<attribute>
<name>anAttribute</name>
<value>aValue</value>
</attribute>

attributesの書込み可能要素

表56-17に、このリソースの書込み可能な要素を示します。

表56-17 space:attributesの書込み可能リソース

要素

タイプ

説明

name

String

属性名。

value

String

属性値。

attributesからリンクされるリソース・タイプ

表56-18は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-18 urn:oracle:webcenter:space:attributesに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:attributes

urn:oracle:webcenter:space:attribute

urn:oracle:webcenter:parent

urn:oracle:webcenter:space

56.2.4.10 urn:oracle:webcenter:space:attribute

1つのポータル属性の名前と値の表示(GET)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、URIで識別される特定の属性が含まれています。

attributeへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
space
attributes

attributeでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- 問合せパラメータ: なし

- レスポンス - 本体: 属性

attributeの読取り専用要素

表56-19に、このリソースの読取り専用要素を示します。

表56-19 urn:oracle:webcenter:space:attributeの読取り専用要素

要素

タイプ

説明

name

String

カスタム属性の名前。

description

String

カスタム属性の説明。

type

String

カスタム属性のデータ型。

value

String

カスタム属性の値。

attributeからリンクされるリソース・タイプ

表56-20は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-20 urn:oracle:webcenter:space:attributeに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:attribute

urn:oracle:webcenter:parent

urn:oracle:webcenter:space

56.2.4.11 urn:oracle:webcenter:space:members

ポータルのメンバーのリストの表示(GET)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、ポータルの各メンバーが含まれており、各メンバーには、そのメンバーに対して操作するためのリンクが含まれています。

注意:

REST APIを使用するポータル・メンバーのユーザーを一覧に記載するか追加することのみが可能です。ポータル・メンバーのエンタープライズ・グループの追加や一覧への記載は、このリリースではサポートされていません。

membersへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
space

membersでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- 問合せパラメータ: なし

- レスポンス - 本体: メンバーのコレクション

- POST: ポータルにメンバーを追加します。

- リクエスト - 本体: メンバー

<member>
<name>vicki</name>
<role>Participant</role>
</member>

- DELETE: 指定したメンバーをポータルから削除します。urn:oracle:webcenter:space:memberでメンバーのGUIDを取得できます。

- リクエスト - 本体: なし

DELETE
http://hostname:portnum/rest/api/spaces/spacename/members/member_guid

spaces:space:membersの書込み可能要素

表56-21 spaces:space:membersの書込み可能要素

要素

タイプ

説明

name

String

メンバーの名前。

role

String

メンバーのロール。この値はurn:oracle:webcenter:space:rolesから取得します。

membersからリンクされるリソース・タイプ

表56-22は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-22 urn:oracle:webcenter:space:membersに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:members

urn:oracle:webcenter:space:member

urn:oracle:webcenter:parent

urn:oracle:webcenter:space

56.2.4.12 urn:oracle:webcenter:space:member

ポータルのメンバーおよびその現在のロール割当ての詳細の表示(GET)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、そのURIによって識別された特定のメンバーが、そのメンバーのプロファイルへのハイパーリンクとともに含まれています。

memberへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
space
members

memberでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- 問合せパラメータ: なし

- レスポンス - 本体: メンバー

memberの読取り専用要素

表56-23に、このリソースの読取り専用要素を示します。

表56-23 urn:oracle:webcenter:space:memberの読取り専用要素

要素

タイプ

説明

guid

String

ポータル・メンバーのグローバルID。

name

String

ポータル・メンバーのユーザーID。

role

String

メンバーに割り当てられているロール。

displayName

String

メンバーの表示名。

memberからリンクされるリソース・タイプ

表56-24は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-24 urn:oracle:webcenter:space:memberに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:member

urn:oracle:webcenter:people:person

urn:oracle:webcenter:people:icon

urn:oracle:webcenter:people:person

56.2.4.13 urn:oracle:webcenter:space:lists

ポータルのリストの表示(GET)および追加(POST)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、ポータル内の各リストが含まれており、各リストには、そのリストに対して操作するために使用されるリンクが含まれています。POST操作からのレスポンスには、リストのこのコレクション内に作成されたリストおよびそのリストに対して操作するためのリンクが含まれています。

listsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
resourceindex
space
lists

listsでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- 問合せパラメータ:

- startIndex

- itemsPerPage

- q
name、title、description、creator、created、modifierおよびmodifiedで検索できます。

文字列タイプの要素(name、title、description、creatorおよびmodifier)で使用できる、サポートされているオペランドは、equals、not.equalsおよびcontainsです。例:

q=name:contains:issues
q=creator:equals:monty

日付タイプの要素(createdおよびmodified)で使用できる、サポートされているオペランドは、equals、not.equals、greater.than、greater.than.or.equals、less.than、less.than.or.equalsです。例:

q=created:greater.than:10-SEP-2009

- projection - 許可されている値はsummaryおよびdetailsです。デフォルトはsummaryです。

- レスポンス - 本体: リストのコレクション

- POST

- リクエスト - 本体: リスト

- レスポンス - 本体: リスト

問合せパラメータの詳細は、第53.5.2.5項「テンプレート」を参照してください。

listsからリンクされるリソース・タイプ

表56-25は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-25 urn:oracle:webcenter:space:listsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:lists

urn:oracle:webcenter:space:list

56.2.4.14 urn:oracle:webcenter:space:list

ポータルに属するリストの表示(GET)、更新(PUT)および削除(DELETE)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、そのURIによって識別される特定のリストが含まれています。PUT操作からのレスポンスには、そのURIによって識別されるリストの変更されたバージョンが含まれています。DELETE操作へのレスポンスは、204ステータス・コードです。

listへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
resourceindex
lists
list

listでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- 問合せパラメータ: なし

- レスポンス - 本体: リスト

- PUT

- リクエスト - 本体: リスト

- レスポンス - 本体: リスト

- DELETE

- リクエスト - 本体: なし

- レスポンス - 本体: なし

listの書込み可能要素

表56-26に、このリソースの書込み可能な要素を示します。

表56-26 urn:oracle:webcenter:space:listの書込み可能要素

要素

タイプ

必須

制約

説明

name

String

はい

1文字以上の文字

ポータル・リストの名前。

description

String

いいえ

0文字以上の文字

リストの説明。

columns

urn:oracle:webcenter:space:list:columns

はい

1文字以上の文字

リストを構成する列。

listの読取り専用要素

表56-27に、このリソースの読取り専用要素を示します。

表56-27 urn:oracle:webcenter:listの読取り専用要素

要素

タイプ

説明

id

String

リストのID。

name

String

リストの名前。

description

String

リストの説明。

scopeguid

String

親ポータルのグローバルID。

scopename

String

親ポータルの名前。

creator

String

リストを作成したユーザーのID。

author

personReference

リストを作成したユーザーに関するユーザー情報。GUID、ID、表示名およびプロファイル・アイコンへのリンクで構成されます(creatorと同じユーザー)。

created

日付

リストが作成された日付。

modifier

String

リストを最後に変更したユーザーのID。

modifiedByUser

personReference

リストを最後に変更したユーザーに関するユーザー情報。GUID、ID、表示名およびプロファイル・アイコンへのリンクで構成されます(modifierと同じユーザー)。

modified

日付

リストが最後に変更された日付。

columns

String

リストを構成する列。

listからリンクされるリソース・タイプ

表56-28は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-28 urn:oracle:webcenter:space:listに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:list

urn:oracle:webcenter:space:list:rows

urn:oracle:webcenter:space:list:columns

56.2.4.15 urn:oracle:webcenter:space:list:rows

リストの行(リスト・アイテム)の表示(GET)および作成(POST)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、このリストの各行が含まれており、各行には、その行に対して操作するためのリンクが含まれています。POST操作からのレスポンスには、このリストに作成された行と、その行に対して操作するためのリンクが含まれています。

rowsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
resourceindex
lists
list
rows

rowsでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- 問合せパラメータ:

- startIndex

- itemsPerPage

- q
name、title、description、creator、created、modifierおよびmodifiedで検索できます。

文字列タイプの要素(name、title、description、creatorおよびmodifier)で使用できる、サポートされているオペランドは、equals、not.equals、containsおよびstarts.withです。例:

q=name:contains:issues
q=creator:equals:monty

日付タイプの要素(createdおよびmodified)で使用できる、サポートされているオペランドは、equals、not.equals、greater.than、greater.than.or.equals、less.than、less.than.or.equalsです。例:

q=created:greater.than:10-SEP-2009

- レスポンス - 本体: 行のコレクション

- POST

- リクエスト - 本体: 行

- レスポンス - 本体: 行

問合せパラメータの詳細は、第53.5.2.5項「テンプレート」を参照してください。

rowsからリンクされるリソース・タイプ

表56-29は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-29 urn:oracle:webcenter:space:list:rowsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:list:rows

parent

urn:oracle:webcenter:space:list

urn:oracle:webcenter:space:list:row

56.2.4.16 urn:oracle:webcenter:space:list:row

リスト行(リスト・アイテム)の表示(GET)、更新(PUT)および削除(DELETE)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、そのURIで識別される特定の行が含まれています。PUT操作からのレスポンスには、そのURIで識別される行の変更されたバージョンが含まれています。DELETE操作へのレスポンスは、204ステータス・コードです。

rowへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
resourceindex
lists
list
rows
row

rowでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- 問合せパラメータ: なし

- レスポンス - 本体: 行

- PUT

- リクエスト - 本体: 行

- レスポンス - 本体: 行

- DELETE

- リクエスト - 本体: なし

- レスポンス - 本体: なし

問合せパラメータの詳細は、第53.5.2.5項「テンプレート」を参照してください。

rowの書込み可能要素

表56-30に、このリソースの書込み可能な要素を示します。

表56-30 urn:oracle:webcenter:space:list:rowの書込み可能要素

要素

タイプ

必須

制約

説明

columns.column.id

String

はい

1文字以上の文字

列のID(リスト・アイテムの詳細を含む)。

columns.column.name

String

いいえ

1文字以上の文字

列の名前。

columns.column.value

String

はい

1文字以上の文字

列の値。

rowの読取り専用要素

表56-31に、このリソースの読取り専用要素を示します。

表56-31 urn:oracle:webcenter:space:list:rowの読取り専用要素

要素

タイプ

説明

id

String

行(リスト・アイテム)のID。

listId

String

リストのID。

scope

String

親ポータルのグローバルID。

creator

String

リスト・アイテムを作成したユーザーのID。

author

personReference

リスト・アイテムを作成したユーザーに関するユーザー情報。GUID、ID、表示名およびプロファイル・アイコンへのリンクで構成されます(creatorと同じユーザー)。

created

日付

リスト・アイテムが作成された日付。

modifier

String

リスト・アイテムを最後に変更したユーザーのID。

modifiedByUser

personReference

リスト・アイテムを最後に変更したユーザーに関するユーザー情報。GUID、ID、表示名およびプロファイル・アイコンへのリンクで構成されます(modifierと同じユーザー)。

modified

日付

リスト・アイテムが最後に変更された日付。

rowからリンクされるリソース・タイプ

表56-32は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-32 urn:oracle:webcenter:space:list:rowに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:list:row

56.2.4.17 urn:oracle:webcenter:space:list:columns

リストの列(リスト・アイテム詳細)の表示(GET)および作成(POST)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、このリストの各列が含まれており、各列には、その列に対して操作するためのリンクが含まれています。POST操作からのレスポンスには、このリストに作成された列と、その列に対して操作するためのリンクが含まれています。

columnsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
resourceindex
lists
list
columns

columnsでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- 問合せパラメータ:

- startIndex

- itemsPerPage

- q - 検索パラメータSTARTS.WITHおよびEND.WITHはサポートされていません。

- レスポンス - 本体: 列のコレクション

- POST

- リクエスト - 本体: 列

- レスポンス - 本体: 列

問合せパラメータの詳細は、第53.5.2.5項「テンプレート」を参照してください。

columnsからリンクされるリソース・タイプ

表56-33は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-33 urn:oracle:webcenter:space:list:columnsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:list:columns

parent

urn:oracle:webcenter:space:list

urn:oracle:webcenter:space:list:column

56.2.4.18 urn:oracle:webcenter:space:list:column

リストの列(リスト・アイテム詳細)の表示(GET)、更新(PUT)および削除(DELETE)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、そのURIで識別される特定の列が含まれています。PUT操作からのレスポンスには、そのURIによって識別される列の変更されたバージョンが含まれています。DELETE操作からのレスポンスは、204ステータス・コードです。

columnへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
resourceindex
lists
list
columns
column

columnでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- 問合せパラメータ: なし

- レスポンス - 本体: 列

- PUT

- リクエスト - 本体: 列

- レスポンス - 本体: 列

- DELETE

- リクエスト - 本体: なし

- レスポンス - 本体: なし

columnで書込み可能な要素

表56-34に、このリソースの書込み可能な要素を示します。

表56-34 urn:oracle:webcenter:space:list:columnの書込み可能要素

要素

タイプ

必須

制約

説明

columns.column.id

String

はい

1文字以上の文字

列のID(リスト・アイテムの詳細を含む)。

columns.column.name

String

いいえ

1文字以上の文字

列の名前。

columns.column.value

String

はい

1文字以上の文字

列の値。

columnの読取り専用要素

表56-35に、このリソースの読取り専用要素を示します。

表56-35 urn:oracle:webcenter:space:list:columnの読取り専用要素

要素

タイプ

説明

id

String

列(リスト・アイテム詳細)のID。

columnからリンクされるリソース・タイプ

表56-28は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表56-36 urn:oracle:webcenter:space:list:columnに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:list:column

56.3 ポータルにおけるエンタープライズ・アプリケーションの公開

ポータル内で、次のものなど様々なエンタープライズ・アプリケーションを公開できます。

- Portal Frameworkアプリケーション - WebCenter Portal Frameworkを使用して開発されたアプリケーション。

- WebCenter Suite内の他のポータル - たとえば、Oracle Portal。

- Oracle Applications Unlimited製品 - たとえば、E-Business Suite、Siebel、PeopleSoftおよびJDEdwardsです。

- 他のカスタム・アプリケーション - Oracle以外のプラットフォームを使用して開発されたアプリケーション。

WSRP、Oracle JSF Portlet Bridge、ADFタスク・フロー、外部アプリケーション向けのWebCenter Portalサポートなどのテクノロジによって、WebCenter Portalは、統合された方式でアプリケーション・データを使用および定義できます。次の項で、その方法を説明します。

この項には次のサブセクションが含まれます:

- 第56.3.1項「ポータルでのPortal Frameworkアプリケーションの公開」

- 第56.3.2項「ポータルでの非Oracleアプリケーションの公開」

56.3.1 ポータルでのPortal Frameworkアプリケーションの公開

WebCenter Portal Frameworkを使用して構築したPortal Frameworkアプリケーションを、ポータルでポートレットおよびタスク・フローとして公開できます。

- ポートレット: コンテナ内にデプロイされ動的コンテンツを生成するWebコンポーネント。詳細は、第57章「ポートレットの概要」を参照してください。

- Oracle JSF Portlet Bridge: 既存のADFアプリケーションおよびタスク・フローをJSR 168ポートレットとして簡単に公開することを可能にするテクノロジ。詳細は、第58章「Oracle JSF Portlet Bridgeを使用したJSFアプリケーションからのポートレットの作成」を参照してください。

- タスク・フロー: マネージドBeanのコール・メソッドの使用、EL式の評価などで状態およびアクティビティ間の移行を定義するADFナビゲーション・コンポーネント。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFタスク・フローのスタート・ガイドを参照してください。

56.3.2 ポータルでの非Oracleアプリケーションの公開

次のようにして、Oracle以外のプラットフォームを使用して開発されたWebアプリケーションをWebCenter Portalで公開できます。

- 外部アプリケーションのサポート: 外部アプリケーションによって、資格証明ストアから、マップされたユーザー・アイデンティティを独自の認証が必要なWebアプリケーションに渡すことができます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の外部アプリケーションの登録に関する項および『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「外部アプリケーションの使用」を参照してください。

- コンポーザのiframeレベルの統合: コンポーザのWebページ・ページ・スタイルおよびコンポーネントでは、異なるWebテクノロジを使用して構築されたアプリケーションのページなど任意のWebページ・コンテンツを表示できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のWebページ・コンポーネントの使用に関する項を参照してください。

- コンポーザでのRaw HTMLマークアップの注入: コンポーザのHTMLマークアップ・レイアウト・コンポーネントによって、HTMLまたはJavaScriptスニペットがPortalのページに注入されます。このコンポーネントを使用して、外部ソースからのコンテンツを表示できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のHTMLマークアップ・コンポーネントの使用に関する項を参照してください。

- OmniPortlet: 様々なレイアウトを使用して様々なデータ・ソースからのデータを公開するポートレット。詳細は、第64章「OmniPortletを使用したポートレットの作成」を参照してください。

第X部

ポートレットとページレットの作業

第X部の内容は次のとおりです。

- 第57章「ポートレットの概要」

- 第58章「Oracle JSF Portlet Bridgeを使用したJSFアプリケーションからのポートレットの作成」

- 第59章「JSR 286を使用した標準ベースのJavaポートレットの作成」

- 第60章「Oracle PDK-Javaを使用したJavaポートレットの構築」

- 第61章「ポートレット・プロデューサのデプロイ」

- 第62章「ページレット・プロデューサを使用したページレットの作成」

- 第63章「ポートレットの消費」

- 第64章「OmniPortletを使用したポートレットの作成」

- 第65章「Webクリッピングを使用したコンテンツ・ベースのポートレットの作成」

57 ポートレットの概要

この章では、ポートレットの概要を示しポートレットの使用方法を説明します。また、ポートレットの構造およびポートレットを作成するために使用できるリソースについて説明します。また、この章では、どのポートレット構築テクノロジが最もニーズを満たすかを簡単に判断できるように、機能、テクノロジおよびツールについても説明します。

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

- 第57.1項「ポートレットの概要」

- 第57.2項「ポートレットの構造」

- 第57.3項「ポートレット・リソース」

- 第57.4項「ポートレット開発」

57.1 ポートレットの概要

ポートレットは再利用可能なWebコンポーネントで、多数の異なるソースからコンテンツを描画できます。ポートレットには静的HTMLコンテンツから、複雑なWebサービスや処理負荷の高いアプリケーションのためのJavaのコントロールまで、あらゆるものを含めることができます。

図57-1 サンプルの宝くじポートレット

ポートレットは、複数のソースからのデータを意味のある関連した方法で提示する手段を提供します。ポートレットでは、他のWebサイトからの抜粋の表示、主要情報のサマリーの生成、検索の実行および多様なデータ・ソースの情報を収集したコレクションへのアクセスなどを実行できます。様々なポートレットを単一のページに配置できるため、ユーザーはコンテンツが実際には複数のソースからのものであっても単一のソースとして利用できます。

ポートレットはイベントやその他の手法を使用して相互に通信することもできます。また、単一のポートレットが複数のインスタンスを持つこともできます。つまり、単一のポータル内の、さらには複数のポータルにまたがる様々なページ上に表示できます。ページ設計者はそれぞれの関係者のニーズに合せてポートレットをカスタマイズできます。正しい権限を持つエンド・ユーザーはさらに独自の要件に合せてポートレットをパーソナライズできます。

Oracle WebCenter Portalは、業界標準であるJSR 286を使用してポートレットの開発をサポートします。また、Oracle JSF Portlet Bridgeを使用して既存のJSFアプリケーションからポートレットを作成することもできます。詳細は、第57.3項「ポートレット・リソース」を参照してください。

57.2 ポートレットの構造

ポートレットの構造とは、ページ上でのポートレットの視覚的な表現です。図57-2は、WebCenter Portal Frameworkアプリケーションの標準的なポートレットに表示されるポートレットの構造の側面を示しています。同じポートレットでも別のアプリケーションに表示された場合は違って見えることがあるので注意してください。

図57-2 代表的なポートレットの構造を示すサンプル・ポートレット

代表的なポートレットの構造の主な側面(図57-2に示されているのはその一部です)は次のとおりです。

- ポートレット・クロム - ヘッダー、シャドウ、サイズ変更、「アクション」メニュー、アイコンを含む、ポートレットを囲む様々な種類の飾りの総称。

- ポートレット・ヘッダー - ポートレット・アイコン、タイトル、「アクション」メニュー、「カスタマイズ」アイコン、および「パーソナライズ」アイコンを表示するポートレットの領域。

- ポートレット・アイコン - ポートレットを視覚的に特定するためのポートレット・ヘッダー内の小さいイメージ。

- ポートレット・タイトル - ポートレットの目的を示すポートレット・ヘッダー内のテキスト。エンド・ユーザーは実行時にこのタイトルをパーソナライズして特定の用途に合った、わかりやすいタイトルにすることができます。

- パーソナライズ・アイコン - エンド・ユーザーがポートレットを変更して自分だけに見えるようにできるポートレット・ヘッダー内のアイコン。
「パーソナライズ」アイコンは、認証を受けたユーザー(つまりログインしているユーザー)にのみ表示されます。パブリック・ユーザーまたは認証を持たないユーザーには表示されません。ユーザーがポートレットの表示をパーソナライズできるようにするには、なんらかのアプリケーション・セキュリティを実装する必要があります。

- カスタマイズ・アイコン - アプリケーション管理者が実行時にポートレットのデフォルト設定を変更できるようにするポートレット・ヘッダー内のアイコン。これらの内容はすべてのユーザーに表示されます。
典型的なカスタマイズ設定はポートレット・タイトルです。アプリケーション管理者は実行時にポートレット・ヘッダーに表示されるタイトルを決定できます。

- 処理アイコン - クリックすると「アクション」メニューを表示する、ポートレット・ヘッダー内のアイコン。

- 処理メニュー - ユーザーがポートレット上で実行できる様々な処理を一覧するメニュー。ポートレットがユーザー・レベルでキャッシュされると、ポートレットへのアクセス権限が実行され、ユーザーはポートレットをパーソナライズできます。アクションには、「移動」、「削除」、「リフレッシュ」、「上へ移動」、「下へ移動」などがあります。「処理」メニューからは、「バージョン情報」、「ヘルプ」、「構成」、「印刷」などのポートレットで使用できるその他のポートレット・モードへもアクセスできます。
ページにポートレットを追加したユーザーがポートレット・ヘッダーを表示しないことを選択した場合、「処理」メニューは、マウス・ロールオーバー上に表示されるフェードインおよびフェードアウトのツールバーに表示されます。

- サイズ変更ハンドル - ユーザーがポートレットのサイズを変更できるようにするポートレット右下の領域。

- スクロール・バー - ポートレットに指定された幅と高さにポートレット・コンテンツがおさまらない場合に、表示され、最初に表示されていないコンテンツへのアクセスを可能にします。

- ポートレット・コンテンツ - ポートレット・ロジックによって決定されているポートレットの実際のコンテンツ。

ページでレンダリングされるポートレット構造は、次の2つのファクタで制御されます。

- ポートレット開発者によって決定されるポートレットそのもののロジック。これには、ポートレットがどのポートレット・モードをサポートしているかも含まれます。

- 設計時にページにポートレットを追加したアプリケーション開発者によって決定される、ポートレットをページにバインドするポートレット・タグの属性。

たとえば、ポートレットを設計する場合、ポートレット開発者はポートレットにヘルプ・モードを実装できます。アプリケーション開発者がページにポートレットを追加する際に、ポートレット・タグ属性isHelpModeAvailableを使用して、ポートレットの「アクション」メニューに「ヘルプ」コマンドを含めるかどうかを決定できます。アプリケーション開発者がisHelpModeAvailableをfalseに設定した場合、「ヘルプ」コマンドは、ポートレット・ロジックで提供されていても「アクション」メニューには含まれません。逆に、ポートレット開発者がポートレットにヘルプ・モードを実装していない場合、isHelpModeAvailableがtrueに設定されていても、「ヘルプ」コマンドは、「アクション」メニューに表示されません。

ポートレット・タグに使用できる各種属性の詳細は、第63.6項「ポートレット・タグの属性値の設定」を参照してください。

57.3 ポートレット・リソース

アプリケーション内のポートレットは、Oracle製品やサード・パーティ・ベンダーなどの様々なソースに基づく可能性があります。また、ポートレット・リソースには、JSR 286のWebCenter PortalのJavaポートレット・ウィザードを使用して構築されたカスタム構築ポートレットも含まれます。これらのリソースはそれぞれ異なる製品機能を提供し、対象とするユーザーの経験レベルも様々です。

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

- 第57.3.1項「構築済ポートレット」

- 第57.3.2項「Java Server Faces (JSF)ポートレット」

- 第57.3.3項「カスタムJavaポートレット」

- 第57.3.4項「OmniPortlet」

- 第57.3.5項「Webクリッピング・ポートレット」

- 第57.3.6項「ポートレット・テクノロジ」

- 第57.3.7項「ポートレットとタスク・フローを使用する状況」

57.3.1 構築済ポートレット

概要

Oracleでは、ユーザーが機能をポートレットとして公開できるようにすることで、他のOracleアプリケーションとの統合を提供しています。

- Peoplesoft - PeoplesoftアプリケーションはWSRPポートレットとして公開できます。詳細は、第54.5項「PeopleSoftアプリケーションの統合」を参照してください。

- JD Edwards - JD Edwardsスタンドアロン・リージョンはポートレットとして公開できます。詳細は、第54.4項「JD Edwardsアプリケーションの統合」を参照してください。

- Oracle E-Business Suite - Oracle E-Business Suiteは、Portal Frameworkアプリケーションに追加できる、アプリケーション・ナビゲータ、お気に入り、ワークリストといった複数の構築済ポートレットを提供します。詳細は、第54.3項「E-Business Suiteアプリケーションの統合」を参照してください。

他の構築済ポートレットは、オラクル社と、主要なシステム・インテグレータ、ソフトウェア・ベンダーおよびコンテンツ・プロバイダとの提携によって提供されます。

対象ユーザー

開発済の、ダウンロード可能なポートレットは、WebCenter Portalにプロデューサをダウンロード、インストールおよび登録する方法を理解しているアプリケーション開発者に最適です。これらのポートレットは、すべての経験レベルで使用可能です。

使用する場合

構築済ポートレットは、そのポートレットが提供する機能でニーズが満たされる場合や、すぐに利用できるパーソナライズのレベルで目的のタスクを十分に完了できる場合に使用します。

異なるユーザー・インタフェースが必要な場合や希望する機能のために複雑な設定が必要な場合など、ポートレットの拡張やパーソナライズが必要なときには、別の方法を検討してください。

57.3.2 Java Server Faces (JSF)ポートレット

概要

JSFポートレットは、Oracle JSF Portlet Bridgeを使用してJSFアプリケーションから作成されます。Oracle JSF Portlet Bridgeを使用すると、アプリケーション開発者は、既存のJSFアプリケーションおよびタスク・フローをJSR 286 Javaポートレットとして公開できます。Oracle JSF Portlet Bridgeは、JSFアプリケーションとWebCenter PortalなどのWSRPポートレット・コンシューマとの統合を容易にします。

JSFポートレットでは、JSFアプリケーションとは別のソース・コードは必要ありません。これらのポートレットはOracle JSF Portlet Bridgeを使用して作成されるので、アプリケーションとポートレットの両方で1つのソースを維持するだけで済みます。同様に、ポートレット化されたJSFアプリケーションをデプロイすると、JSFポートレットも一緒にデプロイされます。したがって、Oracle JSF Portlet Bridgeを使用すると、アプリケーションとは別にポートレットを保存、管理、デプロイする必要がなくなります。

JSFポートレットの作成の詳細は、第58章「Oracle JSF Portlet Bridgeを使用したJSFアプリケーションからのポートレットの作成」を参照してください。

対象ユーザー

Facesの知識があるアプリケーション開発者。

使用する場合

JSFポートレットは、アプリケーション開発者が、アプリケーション全体をホストしないで、または別にポートレットを作成しないで、JSFアプリケーションからのコンテンツをポートレットとして、またはアプリケーション内の個々のタスク・フローからポートレットとして表示する場合に最適です。ポートレット化すると、ポートレットの使用は、WSRPプロデューサを登録するのと同じです。

57.3.3 カスタムJavaポートレット

カスタムJavaポートレットとは、Java Portlet Specification 2.0 (JSR 286)を使用して、自分自身で作成するJavaのポートレットです。WebCenter Portalには、規格に基づいたJSR 286 Javaポートレットの作成を簡単にするために、JDeveloperに宣言ウィザードが用意されています。このウィザードは、ポートレットを作成するフレームワークの構成を支援します。

注意:

アプリケーションではOracle WebLogic PortalなどからのレガシーJSR 168ポートレットやWSRP 1.0ポートレットを使用できます。これらのポートレットは最初にJSR 286に変換する必要はありません。ただし、新しいJavaポートレットを作成する場合は、JSR 286を使用してパブリック・レンダラ・パラメータやポートレット・イベントなどの機能を利用することをお薦めします。

対象ユーザー

ウィザードの使用は簡単ですが、ポートレット・ロジックを最も上手に作成するのは、JSR 286の使用に慣れていて、プロデューサの構成を理解している経験と知識が豊富なJava開発者です。

使用する場合

要件を満たす構築済ポートレットや既存のJSFアプリケーションが見つからない場合は、カスタムJavaポートレットの使用を検討してください。

カスタムJavaポートレットは、非常に特化したビジネス・ルールやロジックがある、およびパーソナライズした認証、動的結果の精度の高い処理およびユーザー・インタフェースの完全な制御が必要な場合に使用します。

カスタムJavaポートレットの作成の詳細は、第59章「JSR 286を使用した標準ベースのJavaポートレットの作成」を参照してください。

57.3.4 OmniPortlet

OmniPortletは、宣言型のポートレット構築ツールです。これを使用すると、XMLファイル、値間を特定文字で区切ったファイル(CSV、スプレッドシートなど)、Webサービス、データベース、Webページといった多様なデータ・ソースに対してポートレットを構築できます。OmniPortletユーザーは、データに対して事前に作成されたレイアウトを選択することもできます。事前に作成されたレイアウトには、表、ニュース、箇条書き、フォーム、チャートまたはHTMLが含まれます。HTMLレイアウトにより、OmniPortletのユーザーは独自のHTMLを作成し、データをHTMLに挿入できます。

対象ユーザー

ターゲット・データへのURLについて最小限の知識しかなく、プログラミング・スキルに限界のあるビジネス・ユーザーにとって、OmniPortletは役に立つツールです。

使用時期

OmniPortletは、多様なレイアウトを使用した多様なデータ・ソースに対してポートレットを迅速に構築する場合に使用します。ポートレットの設計や機能を完全に制御する場合は、別の方法を検討してください。

OmniPortletの詳細は、第64章「OmniPortletを使用したポートレットの作成」を参照してください。

OmniPortletのかわりとして、SQLデータベースまたはWebサービスからデータを公開する場合、データ・プレゼンタの使用を検討する必要があります。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「データ・プレゼンタの使用」の章を参照してください。

57.3.5 Webクリッピング・ポートレット

注意:

Webクリッピング・ポートレットは、リリース11g (11.1.1.7.0)では非推奨になっています。Oracle WebCenter Portalのページレット・プロデューサを使用してクリップ・ページレットを使用することを検討してください。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「ページレット・プロデューサの管理」の章を参照してください。

概要

Webクリッピング・ポートレットは、ブラウザベースの宣言型ツールで、これを使用すると、WebアプリケーションとFrameworkアプリケーションを統合できます。Webクリッピング・ポートレットは、Webアプリケーションの既存のユーザー・インタフェースを利用して迅速に統合できるように設計されています。Webクリッピング・ポートレットは、Oracle PDK-Javaポートレットとして実装されています。

Frameworkアプリケーション開発者は、Webクリッピング・ポートレットを作成するために、Webブラウザを使用して目的のコンテンツを含むWebページに移動します。アプリケーション開発者は、Webクリッピング・スタジオを使用して、ターゲット・ページのビジュアル・レンダリングをドリルダウンし、必要なコンテンツを選択できます。

対象ユーザー

Webクリッピング・ポートレットは、既存のWebページを利用してポートレットを迅速に開発するアプリケーション開発者およびコンテンツ開発者に最適です。適切な権限を持つユーザーであれば誰でも、このポートレットをページに追加できます。

使用時期

Webクリッピングは、既存のWebページのライブ・コンテンツおよび機能に再度目的を持たせ、Frameworkアプリケーションでポートレットとして公開する場合に使用します。クリップしたポートレット内で情報の表示方法を変更する場合は、別の方法を検討してください。つまり、ユーザー・インタフェース(UI)やアプリケーション・フローを制御する必要なしに、Webベースのアプリケーションにアクセスします。制御レベルを上げるには、Webクリッピング・ポートレットではなく、OmniPortletのWebページ・データ・ソースを使用してください。(詳細は、第57.3.4項「OmniPortlet」を参照してください)。

Webクリッピング・ポートレットの詳細は、第65章「Webクリッピングを使用したコンテンツ・ベースのポートレットの作成」を参照してください。

57.3.6 ポートレット・テクノロジ

新しいポートレットを作成する場合、使用できるテクノロジは何種類かあります。使用するテクノロジはいくつかの要因によって決まります。

図57-3は、環境と要件に最も適したポートレット実装テクノロジを特定できるディシジョン・ツリーを示しています。図57-3の下にあるリストは、同じ情報をグラフィカルではない形式で示しており、その他の注意事項も含まれています。

図57-3 ポートレット・テクノロジのディシジョン・ツリー

1. コンポーネントを分散させる必要はありますか。

- はい: 質問2に進みます。

- いいえ: ポートレットは必要ありません。使用側のアプリケーションにローカルなOracle ADFタスク・フロー(または他のテクノロジ)を使用します。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFタスク・フローの作成に関する項を参照してください。

分散環境では、デプロイメントがより複雑になるため、問題の追跡がより困難になる可能性があります。ただし、処理の負荷を複数のサーバーに分散したり、複数の異なるコンシューマがコンポーネントを使用できるようになります。

2. .NETコンポーネントを使用側のアプリケーションに公開する必要はありますか。

- はい: Oracle WebCenter WSRP Producer for .NETを使用します。詳細は、Oracle Fusion Middleware Oracle WebCenter WSRP Producer for .NET開発者ガイドを参照してください。

- いいえ: 質問3に進みます。

Oracle WebCenter WSRP Producer for .NETを使用すると、任意の.NETアプリケーションをWSRPプロデューサとして動作させることができます。

3. リモートで公開する必要がある既存のOracle ADFまたはJSFページまたはタスク・フローはありますか。

- はい: Oracle JSF Portlet Bridgeを使用して既存のコンポーネントを公開します。詳細は、第58章「Oracle JSF Portlet Bridgeを使用したJSFアプリケーションからのポートレットの作成」を参照してください。

- いいえ: 質問4に進みます。

このように既存のOracle ADFコンポーネントを使用すると、コンポーネントの開発は非常に簡単になりますが、Oracle ADFを使用してポートレットを実装した場合、表57-1に示すような影響があることに注意してください。

4. 既存のJSR 168またはJSR 286ポートレットはありますか。

- はい: 既存のJSR 168またはJSR 286ポートレットを使用します。詳細は、第63章「ポートレットの消費」を参照してください。

- いいえ: 質問5に進みます。

WebCenter Portalでは、WebCenterコンシューマと完全な互換性があるJSR 168およびJSR 286ポートレットをWSRP経由で公開し、そのようなポートレットで、特定のコンシューマに固有の条件を想定しないことを前提としています。

5. WebCenter Portalコンシューマと正しく連携して動作する既存のOracle PDK-Javaポートレットはありますか。

- はい: 既存のPDK-Javaポートレットを使用します。詳細は、第63章「ポートレットの消費」を参照してください。

- いいえ: 質問6に進みます。

6. コンポーネントを(インライン・フレーム内ではなく)直接コンシューマ・ページ内にレンダリングする必要はありますか。

- はい: インライン・フレーム内へのレンダリングを要求するマークアップを使用しないJSR 286ポートレットを記述します。詳細は、第59章「JSR 286を使用した標準ベースのJavaポートレットの作成」を参照してください。

- いいえ: 質問7に進みます。

インライン・フレームを使用したポートレットのレンダリングに関する考慮事項は、第63.5.4項「インライン・フレームに関する必知事項」を参照してください。

7. Oracle ADFを使用してコンポーネントを実装する必要はありますか。

- はい: Oracle JSF Portlet Bridgeを使用し、Oracle ADFページまたはタスク・フローをポートレットとして公開します。詳細は、第58章「Oracle JSF Portlet Bridgeを使用したJSFアプリケーションからのポートレットの作成」を参照してください。

- いいえ: JSR 286ポートレットを記述します。詳細は、第59章「JSR 286を使用した標準ベースのJavaポートレットの作成」を参照してください。

Oracle ADFを使用してポートレットを実装するかどうかは、大まかに言えば、それを使用して通常のWebアプリケーションを実装するかどうかによって決まります。ただし、Oracle ADFを使用すると、リモート・ポートレットの使用時に特有のネットワーク・ホップ(マークアップ、リソースおよびPPRに対する)とコンシューマに関する処理が追加で発生するため、ポートレットを使用しない場合に比べて、有効な選択肢にならない可能性があります。

また、OTNで提供されている、Oracle ADFの概要に関するホワイト・ペーパーには、Oracle ADFを使用してJava EEアプリケーションを開発することの具体的な利点が記載されています。Oracle ADFタスク・フローを使用することのもう1つの利点は、インライン・フレームでの実行時に問題が発生した場合、後からローカルで同じタスク・フローを実行できることです。

表57-1は、WebCenter Portalで使用するコンポーネントを実装する場合に、様々な基準に合せて特定のポートレット・テクノロジを選択することでどのような影響があるかをまとめたものです。

表57-1 ポートレット構築テクノロジの比較マトリックス

ローカルのOracle ADFページとタスク・フロー

WebCenter WSRP Producer for .NET

JSR 286ポートレット

JSFポートレット

分散アーキテクチャ

不可。

可。WSRP SOAP/HTTPを使用します。

可。WSRP SOAP/HTTPを使用します。

可。WSRP SOAP/HTTPを使用します。

データ・アクセスのサポート

データベース、Webサービスおよびレガシー・システムとの連動の完全サポート。

制限はありません。これは基礎となる.NETフレームワークを利用し、これが各種様々なデータ・リポジトリへのデータ・アクセスを提供します。

制限はありませんが、ポートレット開発者がおそらくサード・パーティ製のフレームワークを使用して実装する必要があります。

データベース、Webサービスおよびレガシー・システムとの連動の完全サポート。

ナビゲーション/フロー制御のサポート

宣言型ナビゲーションに対する包括的なサポートを提供します。

宣言型ナビゲーションに対する包括的なサポートを提供します。

制限はありませんが、ポートレット開発者がおそらくサード・パーティ製のフレームワークを使用して実装する必要があります。

宣言型ナビゲーションに対する包括的なサポートを提供します。

UIの豊富さ

多くのAJAX対応のコンポーネントで豊富なWebベースのUIを提供します。

制限はありません。標準的なAJAXとASP.NET AJAXツールキットの両方をサポートします。

制限はありませんが、ポートレット開発者がおそらくサード・パーティ製のフレームワークを使用して実装する必要があります。

多くのAJAX対応のコンポーネントで豊富なWebベースのUIを提供します。

セキュリティ

アプリケーションとの完全統合

WS-Securityを使用して伝播される、またはWSRPを使用してコンシューマによってアサートされるユーザー・アイデンティティ

認証チェックは開発者が実装する必要があります。

ユーザー・プロファイル情報はWSRPユーザー・プロファイル項目を使用して渡すことができます。

WS-Securityを使用して伝播される、またはWSRPを使用してコンシューマによってアサートされるユーザー・アイデンティティ

認証チェックは開発者が実装する必要があります。

ユーザー・プロファイル情報はWSRPユーザー・プロファイル項目を使用して渡すことができます。

WS-Securityを使用して伝播されるユーザー・アイデンティティ。

認証はOracle ADFによって実装されます。

コンポーネント間通信(イベント)

ADFコンテキスト・イベントにより、タスク・フローは通信できます。

クライアント側で達成できる方法を示したサンプルをご用意しています。現行バージョンはWSRPサーバー側のイベント・モデルをサポートしていません。

JSR 286イベントを完全サポート。コンシューマのポートレット・イベントとADFコンテキスト・イベントとの間のポートレットとイベントのマッピング間での自動イベント配信を含みます。

ADFコンテキスト・イベントに加えてJSR 286ポートレットにより、ローカルな場合と同じようにタスク・フローの通信を可能にします。

コンシューマとコンポーネントとの間の対話処理(パラメータ)

タスク・フロー入力パラメータは、各種ソースから値をとることができます。

WSRPポートレット・パラメータの完全サポート。パラメータはすべてコンシューマ・アプリケーションから渡すことができます。

JSR 286パラメータを完全サポート。コンシューマとの間でのパブリック・パラメータ値の受け渡し、およびポートレット間でのパラメータ値の自動共有を含みます。

タスク・フロー入力パラメータに加えてJSR 286ポートレットにより、ローカルな場合と同じにようにコンシューマ・アプリケーションの各種ソースから値を取得します。

パフォーマンスとキャッシュ

コンポーネントはローカル・サーバー上で実行するため追加のネットワーク・ホップはありません。

リモート・コンポーネントは追加のネットワーク・ホップを必要とします。

構成パラメータにより、リソース(CSS、JavaScriptおよび.axdリソース・ファイル)をコンシューマを介してプロキシできます。または、直接アクセスして負荷を減らし、ブラウザのキャッシュを利用することもできます。

リモート・コンポーネントは追加のネットワーク・ホップを必要とします。

リソースはコンシューマによってプロキシされます。

コンポーネントのパフォーマンスは実装によって異なります。

有効期限ベースおよび有効化ベースのキャッシュがサポートされています。その制御はポートレット開発者が行います。

リモート・コンポーネントは追加のネットワーク・ホップを必要とします。

多くのリソースがコンシューマを介してプロキシされます。

フレームワークは重い性質を持つため、単純なアプリケーションはパフォーマンスを重視するか、手作りのJSR 286相当とで比較されることになります。ただし、より複雑な機能を提供するアプリケーションについては、フレームワークを使用するパフォーマンス上のメリット(たとえば部分的なページ・レンダリング)がより明白になります。

JavaScript、CSSおよびその他のリソースは、ブラウザにキャッシュされます。キャッシュはフレームワークによって制御されます。

並行性

複数のタスク・フローが順次呼び出されます。

ポートレットはパラレルに呼び出されます。

ポートレットはパラレルに呼び出されます。

ポートレットはパラレルに呼び出されます。

ジオメトリ管理

コンポーネントは、格納元のページで直接レンダリングされます。

ポートレットはプロキシされたインライン・フレームで自動的にレンダリングされ、それに応じてサイズ変更されます。スライダ・バーは非表示になります。

ポートレットのジオメトリとインライン・レンダリングは(フレーム化されたレンダリングに対して)ポートレット開発者が制御します。

複雑なUIは、インライン・フレームでのレンダリングをより必要とする傾向があります。

ポートレットはインライン・フレームでレンダリングする必要があります。

JavaScriptの使用

JavaScriptは、豊富なユーザー経験を提供するフレームワークの基本部分として頻繁に使用されます。

通常、開発者はJavaScriptを記述する必要はありません。

JavaScriptは、豊富なユーザー経験を提供するフレームワークの基本部分として頻繁に使用されます。

通常、開発者はJavaScriptを記述する必要はありませんが、JavaScriptをどのように使用できるかを示すためにサンプルが用意されています。

スクリプトはすべてコンシューマを介してプロキシできます。

JavaScriptの使用とパッケージ化のレベルはポートレット開発者によって制御されます。

開発者は、ポートレットがインラインでレンダリングされる場合にはJavaScriptの使用に関して特別に配慮する必要があります。

JavaScriptは、豊富なユーザー経験を提供するフレームワークの基本部分として頻繁に使用されます。

通常、開発者はJavaScriptを記述する必要はありません。

スクリプトはすべてコンシューマを介してプロキシする必要があります。

スキル要件/開発の容易さ

ADF、およびおそらくJavaの知識が必要です。

ADFは、すべてのレイヤー間に統合フレームワークを提供します。

JDeveloperは、ADFアプリケーションの完全統合環境を提供します。これには、フレームワークのすべてのレイヤーの宣言オプションも含まれます。

.NET Webパーツの開発またはASP.NET Webアプリケーションの開発の知識が必要です。

Java、Javaポートレット、およびコンポーネントの実装に使用されるその他のフレームワークの知識が必要です。

開発時間は、サーブレット・ベースのコンポーネントの開発に必要な時間と同程度です。

ADF、およびおそらくJavaの知識が必要です。ADFが提供する豊富なUIと制御フレームワークにより、最も単純なアプリケーションを除くすべてのアプリケーションに関し、(手作りのポートレットに比べて)開発時間が短縮される可能性があります。

ADFは、すべてのレイヤー間に統合フレームワークを提供します。

JDeveloperは、ADFアプリケーションの完全統合環境を提供します。これには、フレームワークのすべてのレイヤーの宣言オプションも含まれます。

デバッグ

JDeveloperはアプリケーション・コードをデバッグするための包括的なソリューションを提供します。

.NETフレームワークはアプリケーション・コードをデバッグするための包括的なソリューション、およびSOAPとHTTPトラフィックのネットワーク・トレースを提供します。

WSRPコンシューマ生成デバッグ・メッセージのLog4netプラグイン。

デプロイメントのリモートという性質によって、より困難です。

プロデューサは、コンシューマとプロデューサとの通信をモニターするためのツールを提供します。

JDeveloperはアプリケーション・コードをデバッグするための包括的なソリューションを提供します。

デプロイメントのリモートという性質によって、より困難です。

プロデューサは、コンシューマとプロデューサとの通信をモニターするためのツールを提供します。

JDeveloperはアプリケーション・コードをデバッグするための包括的なソリューションを提供します。

デプロイメント

コンポーネントはクライアント・アプリケーションの一部としてデプロイされます。

アプリケーション全体を1つのEARファイルにパッケージ化してデプロイできます。

デプロイメントでは、特定のフォルダ階層下での.NETアプリケーションのコピー、および構成XMLファイルの入力が必要です。

コンポーネントは、必要に応じてこのフォルダ階層の下でスタンドアロンで簡単に実行できます。

デプロイメントの分散された性質と、複数のアプリケーションによって複雑さが増します。

デプロイメントの分散された性質と、複数のアプリケーションによって複雑さが増します。

コンポーネントは必要に応じてスタンドアロンで簡単に実行できます。

サポート・レベル

ADFフレームワークはOracle製品です。したがってサポートされています。

WebCenter WSRP Producer for .NETはOracle製品です。したがってサポートされています。

JSR 286プロデューサはOracle製品です。したがってサポートされています。

ADFフレームワーク、Oracle JSF Portlet Bridge、およびJSR 286プロデューサはOracle製品です。したがってサポートされています。

57.3.7 ポートレットとタスク・フローを使用する状況

ポートレットは再利用可能なWebコンポーネントで、多数の異なるソースからコンテンツを描画できます。ポートレットでは、静的HTMLから、複雑なWebサービスや処理負荷の高いアプリケーションのためのJavaのコントロールまで、どのようなものでも管理と表示が可能です。

1つのポートレットで複数のインスタンスを保持することもできます。つまり、1つのポータル内の各種ページにポートレットが表示され、ポートレットがWeb Services for Remote Portlets (WSRP)に対して有効な場合は複数のポータル間でも表示できます。特定のユーザーやグループのニーズに応えるようにポートレットをカスタマイズできます。

タスク・フローを使用すると、カスタマイズ可能なアプリケーションを、再使用可能なビジネス・ロジックのユニットで作成できます。これは、アプリケーションの制御フローをモジュール単位で定義するアプローチを意味します。それぞれのタスク・フローは、再利用可能な1つのビジネス・ロジックを表します。メモリーとトランザクションのスコープが分離されているため、タスク・フローとそれを囲むアプリケーションは分離されています。この分離より、Oracle WebCenter Portalのコンポーザなどにタスク・フローを含めることができます。

タスク・フローは、制御フローのルール、アクティビティおよびマネージドBeanをカプセル化して、ビジネス・モジュールを実装します。WebCenter Portalを使用して構築されたポータルでは、簡単にタスク・フローを再利用できます。タスク・フローは、カスタマイズ可能な任意のWebCenter Portalポータル・ページにドラッグ・アンド・ドロップできます。このような意味で、タスク・フローは、任意のADFアプリケーションでの再利用や削除が可能な論理ポートレットとみなすことができます。

タスク・フローはビジネス・プロセスの高水準の実装ですが、データアクセスやビジネス・ロジックをホストすることはありません。そのためには、タスク・フローがデータ・コントロールや宣言バインディングと相互作用する必要があります。さらに、これらのデータ・コントロールやバインディングは、ADFビジネス・コンポーネント・フレームワークと相互作用します。

Oracle発行の標準JSR 329に従い、タスク・フローを標準ベースのポートレットとして公開できます。アプリケーションを改訂すると、ポートレットは、アプリケーションとともに必然的かつ自動的に更新されます。個別の開発プロジェクトは必要ありません。JSR 329をサポートするために、Oracle WebCenter Portal Frameworkでは、Oracle JSF Portlet Bridgeが用意されています。Oracle JSF Portlet Bridgeの詳細は、第58章「Oracle JSF Portlet Bridgeを使用したJSFアプリケーションからのポートレットの作成」を参照してください。

タスク・フローをポートレットとして消費する他に、タスク・フローをJSFアプリケーションで共有ライブラリとして消費してこれらのJSFフラグメントを直接埋め込むことができます。タスク・フローの周囲のトランザクションを、アプリケーションのそれ以外の機能と一緒にラップできます。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「ADFタスク・フローのスタート・ガイド」の章を参照してください。

ポートレットとタスク・フローを使用する状況の詳細は、Oracle WebCenter & ADF Architecture Teamのブログを参照してください。

57.4ポートレット開発

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

- 第57.4.1項「ポートレット・プロデューサ・アプリケーション」

- 第57.4.2項「ポートレット・モード」

- 第57.4.3項「ポートレット間通信」

- 第57.4.4項「ポートレットのパーソナライズとカスタマイズ」

- 第57.4.5項「ポートレット・パフォーマンス」

- 第57.4.6項「複数言語に対応したポートレット」

- 第57.4.7項「ポートレット・デプロイメント」

57.4.1 ポートレット・プロデューサ・アプリケーション

ポートレット・プロデューサ・アプリケーションは、Javaポートレットを作成およびデプロイすることに特化して構成されたアプリケーションです。

ポートレット・プロデューサ・アプリケーションに適したコンポーネントを簡単に見つけて使用できるようにするには、適切なテクノロジ・スコープを設定し、タグ・ライブラリを追加して、必要になるJavaクラスをクラス・パスに追加しておく必要があります。このようにしておくと、関連するコンポーネントがコンポーネント・パレットに取り込まれ、関連するポップアップ・メニューがJDeveloperで使用できるようになります。

JDeveloperで提供されるアプリケーション・テンプレートを使用すると、ポートレット・プロデューサ・アプリケーションの作成に適したスコープが設定され、適切なタグとJavaライブラリが追加されます。「WebCenterポートレット・プロデューサ・アプリケーション」テンプレートを使用すると、Javaポートレットの作成用にスコープ設定された単一のプロジェクトを使用して、簡単にアプリケーションを作成できます。

「WebCenterポートレット・プロデューサ・アプリケーション」テンプレートを使用してアプリケーションを作成するには:

1. 次のいずれかの方法を使用して、WebCenterポートレット・プロデューサ・アプリケーションの作成ウィザードにアクセスします。

- 「ファイル」メニューから「新規」を選択します。「新規ギャラリ」ダイアログで、「一般」を開き、「アプリケーション」→「WebCenterポートレット・プロデューサ・アプリケーション」を選択して、「OK」をクリックします。

- 「アプリケーション」メニューから「新規」を選択します。汎用アプリケーションの作成ウィザードの「アプリケーション・テンプレート」リストで、「WebCenterポートレット・プロデューサ・アプリケーション」を選択します。

- 既存のアプリケーションが開いている場合は、アプリケーション・ナビゲータで、アプリケーション名をクリックして、「新規アプリケーション」を選択します。汎用アプリケーションの作成ウィザードの「アプリケーション・テンプレート」リストで、「WebCenterポートレット・プロデューサ・アプリケーション」を選択します。

- 既存のアプリケーションが開いている場合は、アプリケーション・ナビゲータで、アプリケーション名を右クリックして、「新規」を選択します。「新規ギャラリ」ダイアログで、「一般」を開き、「アプリケーション」→「WebCenterポートレット・プロデューサ・アプリケーション」を選択して、「OK」をクリックします。

2. 作成ウィザードの「アプリケーションの名前付け」ページで、「アプリケーション名」フィールドにアプリケーションの名前を入力します。

3. 「ディレクトリ」フィールドでは、デフォルト・パスを受け入れるか、アプリケーションを格納するディレクトリのパスを入力します。
例:

C:\JDeveloper\mywork\myApplication

オプションで、「参照」ボタンをクリックして、目的のディレクトリに移動します。

4. 必要に応じて、「アプリケーション・パッケージの接頭辞」フィールドに、このアプリケーション内に作成されるパッケージに使用する接頭辞を入力します。

5. 「終了」をクリックして、デフォルトのプロジェクト構成のポートレット・プロデューサ・アプリケーションを作成します。

図57-4は、アプリケーション・ナビゲータ内に表示されている、単一のポートレット・プロジェクトを使用して新しく作成したポートレット・プロデューサ・アプリケーションを示しています。

図57-4 アプリケーション・ナビゲータ内の新しいポートレット・プロデューサ・アプリケーション

JDeveloperのユーザー・インタフェース内で公開されるオプションは、ポートレットの開発に適したものに制限されます。

「ポートレット」プロジェクトを右クリックし、「新規」を選択すると、Javaポートレットを作成するためのオプションが「新規ギャラリ」内に表示されます(図57-5)。

図57-5 「新規ギャラリ」内のポートレット作成オプション

このアプリケーション内にポートレットを作成する方法の詳細は、第59章「JSR 286を使用した標準ベースのJavaポートレットの作成」を参照してください。

57.4.2 ポートレット・モード

ポートレット・モードは、実行時機能をユーザーが確認できるようにするものです。WebCenter Portalは、次の標準ポートレット・モードをサポートします。

- 表示モード

- 編集モード

- デフォルト編集モード

- ヘルプ・モード

- 情報モード

WebCenter Portalは、サポートする一連の拡張モードを定義します。各種モードは、JSR 286ポートレットに使用できます。たとえば、JSR 286 Javaポートレットの作成ウィザードには、「印刷」モードがあり、これを使用してポートレットの印刷用のバージョンを使用できます。

コーディング・ポートレットをJSR 286にコーディングする場合は、portlet.xmlファイルに独自のカスタム・ポートレット・モードも宣言できます。これらを使用してポートレットで提供するその他の機能に対応できます。

カスタム・ポートレット・モードの定義は、特に、ポートレットを他のベンダーのポータル実装と相互運用する場合に役立ちます。これらのモードはすべてユーザーに提供できます。実際に、デフォルト編集モードのようなモードの提供をお薦めします。

注意:

サード・パーティのポータル製品には、プロデューサが提供できる各自の拡張モード・セット(JSR 286カスタム・モード)があります。Portal Frameworkアプリケーションでは、ポートレットのクロムUIは、WebCenter Portalで定義されるカスタム・モードのみを表示します。サード・パーティまたはカスタム・ポートレット・プロデューサが提供する任意のカスタム・モードは無視されるため、サポートされません。

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

- 第57.4.2.1項「表示モード」

- 第57.4.2.2項「編集モード」

- 第57.4.2.3項「デフォルト編集モード」

- 第57.4.2.4項「ヘルプ・モード」

- 第57.4.2.5項「情報モード」

57.4.2.1 表示モード

ポートレットは表示モードを使用して他のポートレットとともにページ上に現れます。ポートレットといえば、ほとんどの人がこのモードを思い浮かべます。JSR 286ポートレットは表示モードを持つ必要がありますが、他のモードはオプションです。

ポートレットの開発時には、ページ上でポートレットの外観に影響を与える可能性のあるすべての要素(ポートレットのコンテナ・オブジェクトや、開発したポートレットがページを共有する他のポートレットなど)について検討する必要があります。たとえば、ポートレットをHTML表のセル内に配置するとします。ポートレットは、表のセル内でレンダリングできるコンテンツしか表示しないはずです。さらに、表のセルの実際のサイズは、エンド・ユーザー設定、ブラウザの幅、およびポートレットに表示されるコンテンツの量とスタイルによって変わる場合があります。

57.4.2.1.1 ポートレットのレンダリングに関するHTMLガイドライン

プレーンHTMLは最も基本的なポートレットのレンダリング方法であり、ポートレットの開発者に大きな柔軟性を提供します。リンク、フォーム、イメージ、表など、HTMLの表のセル内に表示できるほとんどの標準的なHTMLパラダイムを使用できます。HTMLが適切に作成されていない場合は、異なる複数のブラウザで表示したときに表示の一貫性がなくなり、ページの一部が表示されないこともあります。次のルールに従ってください。

- 標準HTMLを使用する - HTMLの公式な仕様はW3Cから入手できます。詳細は、http://www.w3c.org/を参照してください。

- 長い複雑なHTMLは避ける - 使用するHTMLはサイトのパフォーマンスの印象に影響します。ユーザーは、リクエストしたページの表示にかかる時間に基づいてパフォーマンスを判断します。ブラウザには、HTMLを解釈して表示するための時間が必要です。ポートレットが複雑なHTMLをレンダリングしたり、サード・パーティのアプリケーションなど外部リソースを待機する場合は、ページのレンダリングが大幅に遅くなることがあります。

- 閉じていないタグや外部タグを避ける - ページはブラウザの動作の影響を受けるため、タグが正しく閉じていないとページの動作は予測不可能になります。

- コンテナ・オブジェクトによって課される制限を考慮する - ポートレットが表のセルなどのHTML要素に含まれない場合、ポートレットがコンテナ内でレンダリングできることを確認する必要があります。たとえば、表のセルにポートレットを置く場合、これらは表への挿入時には表示されないためポートレット内でフレームを使用することはできません。

- ポートレット・コンテンツを簡潔に保つ - 全画面のコンテンツを取得して、小さなポートレットから公開しないでください。ポートレットのコンテンツが小さくなりすぎて、小さなモニターではポートレットが使用不能になる場合があります。

- ポートレットに固定幅のHTML表示を作成しない - ユーザーのページ上にポートレットが持つ列の幅を伝える方法はありません。与えられた空間よりも広い空間がポートレットに必要な場合、一部のブラウザでは、他のポートレットとオーバーラップする可能性があります。

- 長い、途切れのないテキスト行を避ける - 固定幅の表を使用した場合と同様の結果になります。一部のブラウザでは、他のポートレットとオーバーラップする可能性があります。

- ページのサイズ変更時の動作を確認する - ブラウザ・ウィンドウをサイズ変更した際のポートレットの動作をテストし、ポートレットがブラウザ・ウィンドウの様々なサイズで動作することを確認してください。

- デフォルト・ブラウザのフォント変更時の動作を確認する - エンド・ユーザーはどんなフォント・サイズでも好きなものを選択する可能性があり、彼らはいつでも変更する可能性があります。ポートレットは、その変更に対応する必要があります。

57.4.2.1.2 ポートレットのレンダリングに関するCSSガイドライン

ページ上のそれぞれのポートレットのフォントと色は、ユーザーが選択したスタイル設定に一致する必要があります。このために、これらのスタイル選択は、Cascading Style Sheet (CSS)を使用して自動的に埋め込まれます。その後、ポートレットは直接またはApplication Programming Interfac (API)を使用して、フォントと色の設定にアクセスします。

ブラウザによってCSS仕様の実装レベルが異なりますが、WebCenter Portalは、この仕様の非常に基本的なサブセットを使用して、整合性のあるフォントと色を実現します。CSSの実装レベルによってブラウザ間でのページの一貫性が影響されることはありません。CSSの使用に関する次のガイドラインを考慮してください。

- ハードコーディングのかわりにCSSを使用する - ハードコーディングのフォントとカラーはお薦めしません。フォントと色をハードコーディングすると、エンド・ユーザーがページ・スタイルの設定を変更した場合に、ポートレットが不釣合いに見えることがあります。開発者はエンド・ユーザーが設定するフォントや色を予測できないため、ユーザーが選択した背景色と同じフォント色でハードコーディングする可能性があり、この場合、ユーザーにはポートレット・コンテンツが表示されなくなります。

- 絶対配置にCSSの使用は避ける - ユーザーは各自のポータル・ページをパーソナライズできるため、ポートレットがページ上の特定の位置に表示される保証はありません。

- アクセシビリティの標準に従う - 必ず既存のアクセシビリティの標準に従って、スタイルシートを記述してください。詳細は、http://www.w3c.org/TR/WCAG10-CSS-TECHSを参照してください。

57.4.2.2 編集モード

ポートレットは編集モードを備えており、これによってユーザーはポートレットの動作をパーソナライズできます。パーソナライズはこれらを実行するユーザーのみに表示され、他のユーザーには表示されません。編集モードには設定のリストがあり、ユーザーはその設定を変更できます。設定には、タイトル、コンテンツの種類、書式、情報量、フォーム要素のデフォルト、およびポートレットの外観や内容に影響する他のあらゆる要素が含まれます。

通常、ユーザーは、ポートレット・ヘッダーの「パーソナライズ」アイコンをクリックしてポートレットの編集モードにアクセスします(図57-6)。

図57-6 ポートレットの編集モードにアクセスするための「パーソナライズ」アイコン

ユーザーが「パーソナライズ」をクリックすると、同じブラウザ・ウィンドウに新しいページが表示されます。このポートレットは、通常、ポートレットの設定を選択するダイアログを表すWebページを作成します。設定を適用すると、自動的に元のページに戻ります。

57.4.2.2.1 編集モード操作に関するガイドライン

次のガイドラインに従って、編集モードでユーザーに公開する内容を管理してください。

- ポートレットのタイトルをユーザーがパーソナライズできるようにする - 同じポートレットが同じポータル・ページに複数回追加されることがあります。ユーザーがタイトルをパーソナライズできると混乱を避けることができます。

- キャッシュを使用する場合はコンテンツを無効化する - パーソナライズによってポートレットの表示やコンテンツに変更が生じた場合は、ポートレットのコンテンツがキャッシュから再生成されることを確認する必要があります。確認しないと、誤ったコンテンツが表示されることがあります。

- 編集モードを管理ツールとして使用しない - 編集モードは、エンド・ユーザーがポートレットの動作を変更するために使用します。プロデューサ設定の変更などの管理タスクが必要な場合は、そのタスク専用の安全なポートレットを作成してください。

57.4.2.2.2 編集モードのボタンに関するガイドライン

整合性を維持し、ユーザーにとっても便利なように、次のボタンを次の順序で編集モードに実装してください。

- OK - エンド・ユーザーのパーソナライズを保存し、ポートレットを表示モードに戻します。

- 適用 - エンド・ユーザーのパーソナライズを保存し、現在のページをリロードします。

- 取消 - 変更を保存せずに、ポートレットを表示モードに戻します。

57.4.2.3 デフォルト編集モード

ポートレットはデフォルト編集モードを備えており、アプリケーション管理者はこのモードを使用して、特定のポートレット・インスタンスのデフォルト動作を実行時にカスタマイズできます。デフォルト編集モードには設定のリストがあり、アプリケーション管理者はその設定を変更できます。設定には、タイトル、コンテンツの種類、書式、情報量、フォーム要素のデフォルト、またはポートレットの外観や内容に影響するあらゆる要素が含まれます。

パーソナライズは個々のユーザーのポータル・インスタンスに影響しますが、デフォルト編集モードで行われたカスタマイズはすべてのユーザーのポートレット・インスタンスに影響します。デフォルト編集モードは、ポートレットの表示内容と表示形式に対してシステム・レベルのデフォルトを定義するためのモードであるため、このモードを管理ツールとして使用したり、他のポートレットの管理に使用したりすることは避けてください。

アプリケーション管理者はページの編集時にポートレット・ヘッダーの「カスタマイズ」アイコンをクリックすることでデフォルトの編集モードにアクセスします(図57-7)。

図57-7 ポートレットのデフォルトの編集モードにアクセスするための「カスタマイズ」アイコン

ユーザーが「カスタマイズ」をクリックすると、同じブラウザ・ウィンドウに新しいページが表示されます。このポートレットは、通常、ポートレット・インスタンスの設定をカスタマイズするダイアログを表すWebページを作成します。設定を適用すると、ユーザーは自動的に元のページに戻されます。

57.4.2.3.1 デフォルト編集モード操作に関するガイドライン

デフォルト編集モードでアプリケーション管理者に公開する内容は、次のガイドラインに従う必要があります。

- デフォルト編集モードを管理ツールとして使用しない - デフォルト編集モードは、アプリケーション管理者がポートレットの動作を変更するために使用します。プロデューサ設定の変更などの管理タスクが必要な場合は、そのタスク専用の安全なポートレットを作成してください。

57.4.2.3.2 デフォルト編集モードのボタンに関するガイドライン

整合性を維持し、ユーザーにとっても便利なように、次のボタンを次の順序でデフォルト編集モードに実装してください。

- OK - アプリケーション管理者のカスタマイズを保存し、ポートレットを表示モードに戻します。

- 適用 - アプリケーション管理者のカスタマイズを保存し、現在のページをリロードします。

- 取消 - 変更を保存せずに、ポートレットを表示モードに戻します。

57.4.2.3.3 カスタマイズ値のレンダリングに関するガイドライン

カスタマイズ設定の変更に使用されるフォームを表示する場合、アプリケーション管理者が何度も設定を再入力せずにすむように値のデフォルト値を設定する必要があります。動作の整合性を維持するために、カスタマイズ値のレンダリングは次の順序で行います。

- インスタンス設定 - ポートレット・インスタンスのシステム・デフォルトを問い合せて表示します。

- ポートレット・デフォルト - システム・デフォルトのカスタマイズがない場合は、一般的なポートレットのデフォルトを表示しますが、空白の場合があります。一般的なポートレットのデフォルトはポートレットにハードコーディングされている場合がありますが、システム・デフォルトで上書きしてください。

57.4.2.4 ヘルプ・モード

ポートレットは、ヘルプ・モードを使用して、そのポートレットの機能と使用方法に関する情報を表示します。ユーザーはこのモードで、ポートレットおよびそのコンテンツと機能に関する有用な情報を検索できます。

ユーザーは、「アクション」メニューの「ヘルプ」オプションを選択することでポートレットのヘルプ・モードにアクセスします(図57-8)。

図57-8 ポートレットの「アクション」メニューの「ヘルプ」オプション

57.4.2.4.1 ヘルプ・モードに関するガイドライン

ヘルプ・モードで公開する内容は次のガイドラインに従ってください。

- ポートレットの使用方法を説明する - ユーザーは、ポートレットが提供するすべての機能をそのインタフェースからだけでは確認できない場合があります。ポートレットの機能とその活用方法を説明してください。

57.4.2.5 情報モード

ポートレットは情報モードを使用してユーザーに現在実行中のポートレットのバージョン、発行と著作権の情報、ポートレット開発者への連絡方法などの情報を提供します。登録が必要なポートレットは、情報モードからもWebベースの登録アプリケーションまたは連絡先情報にリンクできます。

ユーザーは、「アクション」メニューの「バージョン情報」オプションを選択することでポートレットの情報モードにアクセスします(図57-9)。

図57-9 ポートレットの「アクション」メニューの「バージョン情報」オプション

同じブラウザ・ウィンドウに新しいページが表示されます。このページにコンテンツを生成するか、またはユーザーを既存のページやアプリケーションに移動させることができます。

57.4.2.5.1 情報モードに関するガイドライン

次のガイドラインに従って、情報モードでユーザーに公開する内容を管理してください。

- 関連する著作権、バージョン、開発者情報を表示する - ユーザーは使用しているポートレットは何か、どこで詳細を得ることができるかを知る必要があります。この情報ページは、ポートレットのサポート時に重要になることがあります。

57.4.3 ポートレット間通信

ポートレット間通信により、ポートレットはデータを共有してイベントに対応できます。WebCenter Portalは、パラメータとイベントを通じたポートレット間通信をサポートします。

- パラメータ - パブリック・レンダラ・パラメータにより、ポートレット間のパラメータ値を共有することでポートレット間通信が可能になります。たとえば、マップ・ポートレットと天気ポートレットが両方ともZipcodeパラメータを使用するように構成されている場合、マップ・ポートレットに郵便番号を入力すると、天気ポートレットの同じパラメータ値が更新されます。
パブリック・レンダラ・パラメータの詳細は、第59.3.5項「JSR 286ポートレットでのパブリック・レンダラ・パラメータの使用方法」を参照してください。

- イベント - ポートレットを含むページ上で、または同じページ上の別のポートレットで実行されるアクションなど、ポートレットそのものの外側で発生するアクションに対応する機能をポートレットに提供することでポートレット間通信を可能にします。ポートレット・イベントは、ポートレットがそれ自体のイベントをトリガーすることでイベントに応答し、それがそのページ上の他のポートレットに影響を与えるようにカスケードできます。
ポートレット・イベントの詳細は、第59.3.6項「JSR 286ポートレットでのポートレット・イベントの使用方法」を参照してください。

WebCenter Portalでは、パラメータとイベントが同じ名前を共有している、または適切な別名を定義していれば、ポートレット間通信がデフォルトで自動的に発生します。この通信を可能にするために追加コードを提供する必要はありません。詳細は、第63.5.3項「ポートレット間通信に関する必知事項」を参照してください。

Oracle JSF Portlet Bridgeを使用して作成されるポートレットに固有のポートレット間通信ガイドラインは、第58.7項「イベントを使用したその他のポートレットとのJSFポートレットのリンク」を参照してください。

57.4.4 ポートレットのパーソナライズとカスタマイズ

ポートレット・プリファレンスによってエンド・ユーザーはポートレットを実行時にパーソナライズまたはカスタマイズできます。パーソナライズはこれらを実行するユーザーのみに表示され、他のユーザーには表示されません。カスタマイズは、ポートレットをパーソナライズしていないすべてのユーザーに表示されます。

ポートレット・プリファレンスによって、ポートレットの再利用性が大幅に向上します。同じポートレットを複数のページ上で、または同じページ上で複数回インスタンス化できます。ポートレット・プレファレンスを使用することで、ポートレットの各インスタンスは様々な方法で動作できますが、使用するコードとユーザー・インタフェースは同じままです。

たとえば、JDeveloperウィザードを使用してJSR 286ポートレットをデフォルトで作成すると、ユーザーが実行時にポートレットのタイトルを変更できるようにするポートレット・プリファレンスが作成されます。ポートレットの作成中に、またはポートレットの作成後にportlet.xmlファイルを編集することで、追加のポートレット・プリファレンスを作成して、実行時のユーザーによるその他のポートレット変更を可能にすることができます。

ポートレット・プリファレンスは、登録やポートレット・ハンドルなどの、登録およびポートレット・インスタンスに関する情報とともに永続ストアに格納されます。ポートレット・プロデューサは、3種類の永続ストアのうちの1つを使用できます。

- コンシューマ - コンシューマ永続ストアは、プロデューサ・メタデータをコンシューマ・アプリケーションに関連付けます。本番環境ではコンシューマの永続性を使用することをお薦めします。

- データベース - データベース永続ストアは、リレーショナル・データベースを使用してデータを永続化します。

- ファイル - ファイルベースの永続ストアは、ファイル・システムを使用してデータを永続化します。

データベースの依存性が削除されるため、テストにはファイルベースまたはコンシューマ永続ストアを使用することができます。ただし、本番の構成ではコンシューマの永続ストアを使用することをお薦めします。

デフォルトでは、JSR 286およびJSFポートレットではコンシューマ永続ストアが使用されます。このデフォルト設定の変更方法の詳細は、第59.3.13.1項「WSRPプロデューサ用の永続ストアのセットアップ」を参照してください。

テスト環境から本番環境への移行の詳細は、第59.3.13.2項「WSRPプロデューサの永続ストアの移行」を参照してください。

57.4.5 ポートレット・パフォーマンス

キャッシュは、高度な動的コンテンツを含むWebサイトのパフォーマンスの向上に使用される一般的な手法です。この手法では、キャッシュと呼ばれる待機時間の短い大きなデータ・ストアを備えたローカル・エージェントを使用してリクエストをプロキシ化することで、動的コンテンツのデータの取得と出力の生成に伴うオーバーヘッドを大幅に削減できます。キャッシュ・エージェントは、リクエストに対して次のいずれかの方法で応答します。

- リクエストされたコンテンツの有効なバージョンがキャッシュ内に存在する場合、エージェントは既存のキャッシュ・コピーをそのまま戻します。これによって、コンテンツの取得と生成というコストがかかるプロセスを省くことができます。この状態は、キャッシュ・ヒットと呼ばれます。

- リクエストされたコンテンツの有効なバージョンがキャッシュ内に存在しない場合、エージェントはリクエストをその宛先に転送し、コンテンツが戻されるのを待機します。エージェントはコンテンツをリクエスト元に戻し、そのキャッシュ内にローカル・コピーを格納して、同じコンテンツに対するリクエストが後で発生した場合に再利用します。この状態は、キャッシュ・ミスと呼ばれます。

ポートレット・プロデューサは、動的コンテンツ(つまり、ポートレット)の生成元であり、多くの場合、デプロイされているPortal Frameworkアプリケーション・インスタンスから離れた場所にあります。このため、キャッシュによるパフォーマンス向上が可能となります。アーキテクチャは、キャッシュに適切です。プロデューサでレンダリングされたポートレットをキャッシュし、キャッシュされたコピーを再利用して後続のリクエストを処理することによって、プロデューサがページ作成にもたらすオーバーヘッドを最小限にできます。ポートレット・キャッシュは、ユーザー・リクエストに対して迅速にレスポンスするための鍵です。

JSR286ポートレットについては、2とおりのキャッシュ方法があります。これらのキャッシュ方法の主な違いは、コンテンツが有効かどうかを判断する方法にあります。

- 有効期限ベースのキャッシュ - プロデューサはレンダリング・リクエストを受信すると、そのレスポンスに有効期限のスタンプを付けます。レンダリングされたレスポンスはキャッシュに格納され、同じコンテンツに対する後続のすべてのリクエストは、有効期限が経過するまで、このキャッシュを使用して処理されます。このキャッシュ・スキームは最も簡単でパフォーマンスが優れていると考えられます。それは、キャッシュの有効性をテストするためのオーバーヘッドがほとんどなく、ネットワークのラウンドトリップを伴わないためです。有効期限ベースのキャッシュは、コンテンツの使用期間が効率よく定義されているアプリケーションに適しています。コンテンツの使用期間が確実ではない場合、有効期限ベースのキャッシュは効果的ではありません。
ポートレット・コンテンツが静的である場合、またはコンテンツの表示が最新であることが重要でない場合は、有効期限ベースのキャッシュの使用を検討します。

ポートレットに対する有効期限ベースのキャッシュの実装方法の詳細は、第59.3.9.1項「JSR 286ポートレットの有効期限ベースのキャッシュの実装」を参照してください。

- 有効化ベースのキャッシュ - レンダリング・リクエストを受信したプロデューサは、そのレスポンスにバージョン識別子(またはETag)のスタンプを付けます。この方法でもレスポンスはキャッシュされますが、キャッシュされたコンテンツをコンシューマが再利用する前に、キャッシュされたコンテンツがまだ有効かどうかを判断する必要があります。そのために、キャッシュされたコンテンツのバージョン識別子を含めたレンダリング・リクエストをプロデューサに送信します。プロデューサは、このバージョン識別子が有効であるかどうかを判断します。バージョン識別子が有効である場合、プロデューサはコンテンツを含まない軽量のレスポンスをコンシューマに即座に送信し、キャッシュされたバージョンを再利用できることを通知します。バージョン識別子が無効な場合、プロデューサは新しいバージョン識別子を含む新しいコンテンツを生成し、以前にキャッシュされたバージョンを置き換えます。このキャッシュ形式では、コンシューマは常にコンテンツが最新であるかどうかをプロデューサと確認する必要があります。キャッシュされたコピーの有効性は、プロデューサのロジックによって判断されます。この方法では、固定期間に依存するのではなく、キャッシュされたコンテンツの使用をプロデューサが管理できるという利点があります。
頻繁な変更または予測不可能な変更がある動的コンテンツを含むポートレットの場合、有効化ベースのキャッシュの使用を検討します。

ポートレットに対する有効化ベースのキャッシュの実装方法の詳細は、第59.3.9.2項「JSR 286ポートレットの検証ベースのキャッシュの実装」を参照してください。

キャッシュ・ルールは、ポートレットのコンテナ・レベルで指定でき、ポートレット独自のロジックでエンコードするか、ポートレット・ウィザードを介して設定することができます。ルールが指定されているとすると、キャッシュがポートレット・コードに含まれていない場合は、コンテナ・レベルのキャッシュが引き継ぎます。

アプリケーション・レベルでは、WebCenter Portal Frameworkにより、アプリケーション・レベルのキャッシュ・ルールの設定に対するJavaキャッシュの使用がサポートされます。

アプリケーション・レベルでキャッシュを有効にする場合、Javaキャッシュにポートレット・コンテンツのコピーを保持するように指示します。以前にキャッシュされたデータがリクエストされると、データ・ソースとの通信やそのコンテンツの再生に時間がかかりません。かわりに、以前にキャッシュされたポートレット・コンテンツが戻されます。

JSFポートレットおよびカスタムJavaポートレットでは、有効期間および有効化ベースのキャッシュがサポートされています。

57.4.6 複数言語に対応したポートレット

ポートレットは次の3つのステップで多言語対応にすることができます。

- portlet.xmlファイルの<supported-locale>要素を使用することでポートレットでサポートされているロケールを宣言する。例:

<portlet id="1328624289503">
...
<supported-locale>en</supported-locale>
<supported-locale>fr</supported-locale>
<supported-locale>es</supported-locale>
...
</portlet>

- ポートレットに表示されるポートレット・メタデータ(ポートレット・タイトル、説明、キーワードなど)を作成する。
変換はたとえば次のようにportlet.xmlファイルに直接含めることができます。

<portlet id="1328624289503">
<portlet-name>LotteryPortlet</portlet-name>
<display-name xml:lang="en">Lottery Numbers</display-name>
<display-name xml:lang="fr">Numéros de Loterie</display-name>
<display-name xml:lang="es">Números de la Lotería</display-name>
...
<supported-locale>en</supported-locale>
<supported-locale>fr</supported-locale>
<supported-locale>es</supported-locale>
...
</portlet>

または、別のリソース・バンドルで変換を提供することもできます。リソース・バンドルはたとえば次のようにportlet.xmlファイルに宣言する必要があります。

<portlet id="1328624289503">
<portlet-name>LotteryPortlet</portlet-name>
<display-name>Lottery Numbers</display-name>
...
<supported-locale>en</supported-locale>
<supported-locale>fr</supported-locale>
<supported-locale>es</supported-locale>
<resource-bundle>portlet.resource.LotteryPortletBundle</resource-bundle>
...

その後、次のようなリソース・バンドルに変換を提供します。

# English Resource Bundle
#
# filename: LotteryPortletBundle_en.properties
javax.portlet.display-title=Lottery Numbers

# French Resource Bundle
#
# filename: LotteryPortletBundle_fr.properties
javax.portlet.display-title=Numéros de Loterie

# Spanish Resource Bundle
#
# filename: LotteryPortletBundle_es.properties
javax.portlet-title=Números de la Lotería

- ポートレットのコンテンツを他のWebアプリケーションと同じように変換できるようにします。

57.4.7 ポートレット・デプロイメント

アプリケーションでポートレットを登録および使用できるようにするには、まずポートレットをデプロイする必要があります。JSR 286ポートレットはWSRPプロデューサにデプロイされます。このプロデューサはリモートであり、Web Services for Remote Portlets (WSRP)を介してコンシューマ・アプリケーションと通信します。JSFポートレットはJSR 286ポートレットとしてデプロイされます。つまり、JDeveloperから、または手動でWSRPプロデューサにデプロイされます。

WebCenter Portalは、WSRPバージョン1.0および2.0をサポートします。この標準によって、ポートレット間通信と、ポートレット・カスタマイズのエクスポートまたはインポートがサポートされます。

WSRPは、ポートレット・コンシューマ・アプリケーションとポートレット・コンテナ間の通信プロトコルです。ユーザーを対象とした視覚的なWebサービスを、中間Webアプリケーションにプラグ・アンド・プレイできるようにするWebサービスの標準です。

その標準性により、特定の言語(JSR 286、.NET、Perlなど)をベースとする標準対応のコンテナと任意のWSRPポータル間の相互運用が可能です。このため、WSRP対応のコンテナにデプロイされたポートレットは、その言語に関係なく、この標準をサポートするあらゆるアプリケーション上にレンダリングできます。

図57-10は、WSRPプロデューサの基本的なアーキテクチャを示しています。

図57-10 WSRPプロデューサのアーキテクチャ

エンド・ユーザーがWebブラウザでページを表示するとき、リクエストの流れは次のようになります。

1. エンド・ユーザーは、Webブラウザの場所フィールドにURLを入力することで、Webブラウザからページをリクエストします。

2. ブラウザは、HTTPを介してリクエストをコンシューマ・アプリケーションに送信します。

3. アプリケーションは、リクエストされたページで表示されているポートレットを提供するポートレット・プロデューサと通信します。

4. プロデューサは、ポートレットがHTMLコードまたはXMLコード形式のポートレット・コンテンツを生成するように、それぞれのポートレットに対して必要なコールを実行します。

5. プロデューサはWSRP 1.0または2.0プロトコルを使用してコンシューマ・アプリケーションにポートレット・コンテンツを戻します。

6. コンシューマ・アプリケーションは、HTTPを介してポートレット・コンテンツをブラウザに送信します。

標準のポートレットをWebCenter Portalのコンシューマ・アプリケーションで使用できるようにするには、それらを1つのポートレット・コンシューマ・アプリケーションにパッケージ化し、WSRPコンテナにデプロイする必要があります。詳細は、第61章「ポートレット・プロデューサのデプロイ」を参照してください。

58 Oracle JSF Portlet Bridgeを使用したJSFアプリケーションからのポートレットの作成

この章では、Oracle JSF Portlet Bridgeを使用してJSFアプリケーションをポートレットとして公開する方法について説明します。

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

- 第58.1項「Oracle JSF Portlet Bridgeの概要」

- 第58.2項「JSFアプリケーションからのポートレットの作成」

- 第58.3項「ポートレット化されたページまたはタスク・フローのポートレット・エントリの更新」

- 第58.4項「JDeveloperでのポートレット化されたページまたはタスク・フローのテスト」

- 第58.5項「統合WebLogic Serverを使用してのJSFポートレットのテスト」

- 第58.6項「WebLogic Managed ServerへのJSFポートレットのデプロイ」

- 第58.7項「イベントを使用したその他のポートレットとのJSFポートレットのリンク」

- 第58.8項「JSFポートレットの作成時の必知事項」

- 第58.9項「実行時作成スキンのJSFポートレット・プロデューサ・アプリケーションへのコピー」

注意:

Oracle JSF Portlet Bridgeは、JSR 329のApache Reference実装を拡張します。JSR 329は、Portlet 2.0 Bridge for JavaServer Face対応Portlet 2.0 Bridgeの機能を定義するための標準化への取組みです。オラクル社はこの標準化の仕様において指導的地位にあります。詳細は次でご覧いただけます。

http://www.jcp.org/en/jsr/detail?id=329

58.1 Oracle JSF Portlet Bridgeの概要

Oracle JSF Portlet Bridgeによって、アプリケーション開発者は、迅速かつ簡単に既存のJSFアプリケーション、Oracle ADFアプリケーションおよびタスク・フローをJSR 286ポートレットとして公開できます。

注意:

特に断りのないかぎり、JSFアプリケーションという用語はOracle ADFアプリケーションを含みます。

Oracle JSF Portlet Bridge:

- JSR 286ポートレットAPIに依存せずにJSFを使用してポートレット機能を提供できるようにすることでポートレット開発を簡略化します。

- JSR 286ポートレット・コンシューマへのOracle WebCenter PortalなどのJSFアプリケーションの公開を簡略化します。

- アプリケーションが通常のWebアプリケーションとして、および同じインストールからのポートレットとして同時に実行できるようにすることで、アプリケーションから別々にポートレットを格納、維持およびデプロイするという要件を排除します。

- ポートレットをタスク・フローとして公開することで、より精度の高いレベルでポートレットを作成できます。ポートレット化されたタスク・フローはJSR 286ポートレットであるため、これによってタスク・フローを分散環境で使用することもできます。

注意:

Oracle JSF Portlet Bridgeによって使用されるWSRP拡張機能が原因で、JSFポートレットが想定どおりにサード・パーティのWSRPコンシューマと連携して動作しない場合があります。

58.2 JSFアプリケーションからのポートレットの作成

Oracle JSFポートレット・ブリッジを使用すると、JSFアプリケーションまたはタスク・フローをポートレットとして公開できます。これは、「ポートレット・エントリの作成」ダイアログを使用して宣言的に実行できます。コーディングは不要です。「ポートレット・エントリの作成」ダイアログを使用すると、JSFアプリケーション上にOracle JSF Portlet Bridgeを構成してJSFアプリケーションをJSR 286ポートレットとして公開できます。この構成の一部として、ポートレットがレンダリングされるときに呼び出す最初のJSFビュー(またはタスク・ビュー)を示します。その時点から、Oracle JSF Portlet BridgeはJSFアプリケーションと連動して、この初期ビューから到達できる追加ビューを介して移動します。そのため、JSFアプリケーション全体をポートレットとして公開する通常の状況では、ポートレットでのアプリケーションの初期のビューをレンダリングしてナビゲーションの残りは同じポートレット内で自然に動作するようにOracle JSF Portlet Bridgeを構成する必要があります。

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

- 第58.2.1項「ページに基づいたJSFポートレットの作成方法」

- 第58.2.2項「ページに基づいてJSFポートレットを作成するときに行われる処理」

- 第58.2.3項「タスク・フローに基づいたJSFポートレットの作成方法」

- 第58.2.4項「タスク・フローに基づいてポートレットを作成するときに行われる処理」

58.2.1ページに基づいたJSFポートレットの作成方法

JSFアプリケーションからポートレットを作成する最も簡単な方法とは、ページに基づいてポートレットを生成するというものです。

既存のアプリケーション・ページからJSFポートレットを作成するには:

1. JDeveloperで、ポートレット化するJSPXページを含むアプリケーションを開きます。

2. アプリケーション・ナビゲータで、JSPXページを右クリックして、「ポートレット・エントリの作成」を選択します。

注意:

ポートレットを含むページに基づいてポートレットを生成することはできません。

3. 「ポートレット・エントリの作成」ダイアログで、「ポートレット名」フィールドにポートレットの名前を入力します。

4. 「表示名」フィールドに、ポートレットの記述名を入力します。

5. 「ポートレット・タイトル」フィールドに、ポートレットを説明するタイトルを入力します。
ポートレット・タイトルは、「リソース・パレット」または「アプリケーション・リソース」パネルに表示されるため、ポートレットが便利かどうかどうかをユーザーが決定するのに役立つタイトルにしてください。ポートレットのタイトルは、ポートレットがページに表示されるとポートレットのヘッダーにも表示されます。

6. 「短いタイトル」フィールドに、ポートレットの短いタイトルを入力します。この短いタイトルは、モバイル・デバイスでポートレットがページに表示されるとポートレットのヘッダーに表示されます。

7. 「説明」フィールドに、ポートレットの説明を入力します。

8. 「コンテキスト・イベント用ポートレット・イベントの作成」を選択して、ページによって公開されるコンテキスト・イベント用のportlet.xmlファイル内にポートレット・イベントを作成します。このオプションはデフォルトで選択されます。
ポートレット・イベントによってポートレットは自らが存在するページと、およびそのページ上のその他のポートレットと通信できます。

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

58.2.2ページに基づいてJSFポートレットを作成するときに行われる処理

ページに基づいたJSFポートレットを作成すると、portlet.xmlファイルがページのポートレット・エントリ(例58-1)を含めるように作成(またはこのファイルがすでに存在する場合は更新)されます。ファイルが開き、表示と編集ができます。デフォルトでは、ファイルは設計ビューで開きます。ソース・コードを表示または編集するには、「ソース」タブをクリックします。

例58-1 ページに応じて生成されたポートレット・エントリ

<portlet id="adf_jsf__testPage_jspx">
<description>PortletBridgeApplication_testPage_jspx</description>
<portlet-name>PortletBridgeApplication_testPage_jspx</portlet-name>
<display-name>PortletBridgeApplication_testPage_jspx</display-name>
<portlet-class>
oracle.portlet.bridge.adf.application.ADFBridgePortlet
</portlet-class>
<init-param>
<name>javax.portlet.faces.defaultViewId.view</name>
<value>/myPage.jspx</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<supported-locale>en</supported-locale>
<portlet-info>
<title>PortletBridgeApplication_testPage_jspx</title>
<short-title>PortletBridgeApplication_testPage_jspx</short-title>
</portlet-info>
<supported-processing-event id="DepartmentSelectedEvent">
<qname xmlns:x="http://xmlns.oracle.com/adfm/contextualEvent">
x:DepartmentSelectedEvent
</qname>
<supported-publishing-event id="DepartmentSelectedEvent">
<qname xmlns:x="http://xmlns.oracle.com/adfm/contextualEvent">
x:DepartmentSelectedEvent
</qname>
</supported-publishing-event>
<supported-public-render-parameter>
_adf_event_DepartmentSelectedEvent
</supported-public-render-parameter>
<container-runtime-option>
<name>com.oracle.portlet.requireIFrame</name>
<value>true</value>
</container-runtime-option>
<container-runtime-option>
<name>com.oracle.portlet.minimumWsrpVersion</name>
<value>2</value>
</container-runtime-option>
</portlet>

選択したページは、ポートレットの編集モードのエントリ・ポイントとして使用されます。これは、javax.portlet.faces.defaultViewId.view初期化パラメータによってportlet.xmlファイルに示されます。portlet.xmlファイルを手動で編集して、WebCenter Portalがサポートするその他のデフォルトの拡張ポートレット・モードに対応したページを定義できます。

- 編集モード: javax.portlet.faces.defaultViewId.edit

- ヘルプ・モード: javax.portlet.faces.defaultViewId.help

- 情報モード: javax.portlet.faces.defaultViewId.about

- 構成モード: javax.portlet.faces.defaultViewId.config

- デフォルト編集モード: javax.portlet.faces.defaultViewId.edit_defaults

- プレビュー・モード: javax.portlet.faces.defaultViewId.preview

- 印刷モード: javax.portlet.faces.defaultViewId.print

注意:

defaultViewIdの値は、アプリケーション・コンテキスト・ルートに対して相対的であり、常に/で始まる必要があります。例58-1では、defaultViewId.viewの値は、/myPage.jspxです。

その他のポートレット・モードにdefaultViewIdを追加する場合は、<supports>タグにもモードを追加するようにしてください。たとえば、<portlet-mode>HELP</portlet-mode>のようになります。

ポートレット・モードの詳細は、第57.4.2項「ポートレット・モード」を参照してください。

58.2.3タスク・フローに基づいたJSFポートレットの作成方法

Oracle ADFを使用することの利点とは、タスク・フローの存在です。これはアプリケーションでコントロール・フローを定義するためのモジュール式アプローチを提供します。アプリケーションを1つの大きなJSFページフローとして表すかわりに、再利用可能なタスクフローの集合として分類することができます。各タスク・フローで、アプリケーション・アクティビティ、つまり、アプリケーションが完了するために実行される必要のある作業単位を特定してください。アクティビティとは、タスク・フローの実行時に行うことができる作業を意味しています。

タスク・フローはバインドなしでもバインドありでも可能です。

- バインドなしタスク・フローは、ユーザーがタスクを完了できるように相互作用する一連のアクティビティ、制御フロー・ルールおよびマネージドBeanです。バインドなしタスク・フローは、アプリケーションのどのバインド・タスク・フローにも含まれていないすべてのアクティビティと制御フローで構成されます。

- バインド・タスク・フローはタスク・フローの特殊な形式であり、単一エントリ・ポイントと1つ以上の終了ポイントがあります。プライベート制御フロー・ルール、アクティビティおよびマネージドBeanの独自のセットが含まれています。Oracle ADFバインド・タスク・フローでは、再利用、パラメータ、トランザクション管理および再開が可能です。また、多くの終了ポイントでゼロとなることも可能です。バインド・タスク・フローは、ページまたはページ・フラグメントを使用できますが、ページ・フラグメントを使用するものだけポートレット化できます。

一般的なアプリケーションは、1つのバインドなしタスク・フローと1つ以上のバインド・タスク・フローを組み合せたものです。このため、アプリケーションでは、バインドなしタスク・フロー内のアクティビティからバインド・タスク・フローをコールできます。バインド・タスク・フローおよびバインドされないタスク・フローの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

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

- 第58.2.3.1項「「ポートレット・エントリの作成」ダイアログを使用したタスク・フローからのポートレット作成」

- 第58.2.3.2項「「タスク・フローのポートレット・エントリの管理」ダイアログを使用したタスク・フローからのポートレット作成」

58.2.3.1 「ポートレット・エントリの作成」ダイアログを使用したタスク・フローからのポートレット作成

「ポートレット・エントリの作成」ダイアログを使用して単一のタスク・フローからポートレットを作成します。

「ポートレット・エントリの作成」ダイアログを使用してタスク・フローからのポートレットを作成するには:

1. JDeveloperで、ポートレットを作成するタスク・フローを含むJSFアプリケーションを開きます。

2. アプリケーション・ナビゲータで、ポートレット化するタスク・フローを右クリックして、「ポートレット・エントリの作成」を選択します。

3. 「ポートレット・エントリの作成」ダイアログで、「ポートレット名」フィールドにポートレットの名前を入力します。

4. タスク・フローがバインドされていない場合、「エントリ・ポイント・ビュー」ドロップダウン・リストには、そのタスク・フローのすべてのビュー・アクティビティが表示されます。このドロップダウン・リストから、ポートレットのエントリ・ポイントとして使用するビュー・アクティビティを選択します。デフォルトでは、タスク・フローの最初のビュー・アクティビティが選択されます。
タスク・フローがバインドされている場合、可能なエントリ・ポイントは1つしかないため「エントリ・ポイント・ビュー」ドロップダウン・リストは表示されません。

5. 「表示名」フィールドに、ポートレットの記述名を入力します。

6. 「ポートレット・タイトル」フィールドに、ポートレットを説明するタイトルを入力します。
ポートレット・タイトルは、「リソース・パレット」または「アプリケーション・リソース」パネルに表示されるため、ポートレットが便利かどうかどうかをユーザーが決定するのに役立つタイトルにしてください。ポートレットのタイトルは、ポートレットがページに表示されるとポートレットのヘッダーにも表示されます。

7. 「短いタイトル」フィールドに、ポートレットの短いタイトルを入力します。この短いタイトルは、モバイル・デバイスでポートレットがページに表示されるとポートレットのヘッダーに表示されます。

8. 「説明」フィールドに、ポートレットの説明を入力します。

9. 「コンテキスト・イベント用ポートレット・イベントの作成」を選択して、タスク・フローにより公開されるすべてのコンテキスト・イベント用のportlet.xmlファイル内にポートレット・イベントを作成します。このオプションはデフォルトで選択されます。
ポートレット・イベントによってポートレットは自らが存在するページと、およびそのページ上のその他のポートレットと通信できます。

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

58.2.3.2 「タスク・フローのポートレット・エントリの管理」ダイアログを使用したタスク・フローからのポートレット作成

プロジェクトがタスク・フローを含んでいる場合は、タスク・フローを選択してリストからポートレットとして作成する方が簡単な場合もあります。これは「タスク・フローのポートレット・エントリの管理」ダイアログを使用して実行できます。また、このダイアログでは、ポートレットを個々に作成するのではなく複数のタスク・フローから一度にポートレットを作成することもできます。

「タスク・フローのポートレット・エントリの管理」ダイアログを使用してたタスク・フローからのポートレットを作成するには:

1. メイン・メニューから「ファイル」を選択して「新規」を選択します。

2. 「新規ギャラリ」で「Web層」を展開し、「ポートレット」→「タスク・フローのポートレット・エントリの管理」→「OK」の順に選択します。

3. 「タスク・フローのポートレット・エントリの管理」ダイアログで、シャトル・ボタンを使用してポートレットとして作成するタスク・フローを選択します。

4. 「コンテキスト・イベント用ポートレット・イベントの作成」を選択して、タスク・フローにより公開されるすべてのコンテキスト・イベント用のportlet.xmlファイル内にポートレット・イベントを作成します。このオプションはデフォルトで選択されます。
ポートレット・イベントによってポートレットは自らが存在するページと、およびそのページ上のその他のポートレットと通信できます。

5. 「OK」をクリックして選択されているタスク・フローのポートレットを作成します。

58.2.4 タスク・フローに基づいてポートレットを作成するときに行われる処理

1つ(または複数)のポートレットが作成されると、次のように示すメッセージを受け取ることになります。

New portlet has been successfully created

また、portlet.xmlファイルが作成されます。ポートレット・エントリ(例58-2)を含むportlet.xmlファイルが開き、表示や編集が行えます。

例58-2 タスク・フローに応じて生成されたポートレット・エントリ

<portlet id="adf_taskflow_WEB_INF_department_xml">
<description>PortletBridgeApplication department</description>
<portlet-name>PortletBridgeApplication_department</portlet-name>
<display-name>PortletBridgeApplication department</display-name>
<portlet-class>oracle.portlet.bridge.adf.application.ADFBridgePortlet</portlet-class>
<init-param>
<name>javax.portlet.faces.defaultViewId.view</name>
<value>
/adf.task-flow?adf.tfDoc=/WEB-INF/adfp-portlet-bridge-container.xml
&amp;adf.tfId=adfp-portlet-bridge-container&amp;_fragmentTaskFlowDoc=/WEB-INF/
department.xml&amp;_fragmentTaskFlowId=department
</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<supported-locale>en</supported-locale>
<portlet-info>
<title>PortletBridgeApplication department</title>
<short-title>PortletBridgeApplication department</short-title>
</portlet-info>
<supported-publishing-event id="DepartmentSelectedEvent">
<qname xmlns:x="http://xmlns.oracle.com/adfm/contextualEvent">
x:DepartmentSelectedEvent
</qname>
</supported-publishing-event>
<supported-public-render-parameter>
_adf_event_DepartmentSelectedEvent
</supported-public-render-parameter>
<container-runtime-option>
<name>com.oracle.portlet.requireIFrame</name>
<value>true</value>
</container-runtime-option>
<container-runtime-option>
<name>com.oracle.portlet.minimumWsrpVersion</name>
<value>2</value>
</container-runtime-option>
</portlet>

注意:

portlet.xmlファイルは複数のポートレットを含む場合もあり、ポートレットとして公開されページとタスク・フローの組合せを持つ場合もあります。また、標準JSR 286(非ブリッジ)ポートレットが含まれる場合もあります。

58.3 ポートレット化されたページまたはタスク・フローのポートレット・エントリの更新

編集するページまたはタスク・フローが以前にポートレット化されており、それらにタスク・フローまたはページのパラメータまたはイベントに対する更新が含まれている場合、そのページまたはタスク・フローのポートレット・エントリを更新して、ポートレットとその基になるページまたはタスク・フローの同期を取る必要があります。

注意:

ポートレット化されたページを削除する場合、そのページのポートレット・エントリを手動でportlet.xmlファイルから削除する必要があります。

ポートレット化されたページまたはタスク・フローのポートレット・エントリを更新するには:

1. アプリケーション・ナビゲータで、更新するポートレット化されたページまたはタスク・フローを含むJSFアプリケーションを開きます。

2. ページまたはタスク・フローを右クリックし、「ポートレット・エントリの更新」を選択します。

3. ポートレット・エントリがバインドなしタスク・フロー用である場合、ダイアログでそのポートレットの作成に使用したビュー・アクティビティを選択するよう求められます。

4. ポートレット・エントリは、次のように更新されます。

- 「コンテキスト・イベント用ポートレット・イベントの作成」オプションがtrueに設定されます。

- ポートレット名、表示名、タイトル、短いタイトルまたは説明は更新されません。

- 必要に応じて、event-definition要素が(ポートレット・アプリケーション・レベルで)作成されます。

- 既存のevent-definition要素は削除または更新されません。

- 必要に応じて、public-render-parameter要素が(ポートレット・アプリケーション・レベルで)作成されます。

- 既存のpublic-render-parameter要素は削除または更新されません。

- ポートレット・エントリ内のsupported-processing-event、supported-publishing-eventおよびsupported-public-render-parameter要素は、ページまたはタスク・フローの現在のイベントと入力パラメータを反映するために再作成されます。つまり、いくつかの既存のポートレット・イベントとパブリック・パラメータが削除され、新しく追加される場合があります。

58.4 JDeveloperでのポートレット化されたページまたはタスク・フローのテスト

ページまたはタスク・フローをポートレット化したら、テストを行って、それが正しく動作することを確認する必要があります。ポートレット化されたページまたはタスク・フローのテストでは、次の手順を実行する必要があります。

1. ページまたはタスク・フローをポートレット化して、portlet.xmlファイル内にポートレット・エントリを作成します。

2. ポートレット化されたアプリケーションをポートレット・サーバーにデプロイします。

3. ポートレット化されたページまたはタスク・フローを使用するためのアプリケーションを作成します。

4. ポートレット化されたアプリケーションをコンシューマ・アプリケーションに登録します。

5. コンシューマ・アプリケーション内にページを作成し、そこにポートレット化されたページまたはタスク・フローを追加します。

6. コンシューマ・アプリケーションをデプロイし、ポートレット化されたページまたはタスク・フローを含むページを表示します。

WebCenter PortalによってJDeveloper内で提供されるメニュー・オプション「ポートレットとして実行」を使用すると、前述の手順を自動的に実行し、このプロセスを簡略化できます。

ヒント:

「ポートレットとして実行」メニュー・オプションを使用すると、ポートレット・エントリを明示的に作成する前に、ページまたはタスク・フローがポートレットとしてどのように動作するかをテストすることもできます。

始める前に

「ポートレットとして実行」オプションを正しく機能させるには、次の条件を満たす必要があります。

- ポートレット・ブリッジ・テスター・アプリケーションを統合WebLogic Serverにデプロイする必要があります。
アプリケーションがまだデプロイされていない場合は、「実行」メニューから「WebCenter Portalデプロイメント」を選択した後、ポートレット・ブリッジ・テスター・コンシューマを選択し、「OK」をクリックします。

- 統合WLSでは、デフォルト・ポート7101が使用されている必要があります。

- 統合WLSでは、その起動時にローカルIPアドレス127.0.0.1をリスニングする必要があります(WebLogicドメインの構成ダイアログで明示的にIPアドレスを「リスニング・アドレス」フィールドに入力するか、このフィールドを空白のままにすることによって指定する)。

- コンテキスト・ルートportletBridgeTester-Portlets-context-rootを使用する他のアプリケーションを統合WLSにデプロイしないようにする必要があります。

- ページまたはタスク・フローを含むアプリケーションを、統合WLSに正常にデプロイできるようにする必要があります。

これらのうちいずれかの条件を満たしていない場合は、第58.5項「統合WebLogic Serverを使用してのJSFポートレットのテスト」の手順を使用して、ポートレット化されたページまたはタスク・フローを手動でテストする必要があります。

ポートレット化されたページまたはタスク・フローをテストするには:

1. アプリケーション・ナビゲータで、テストするポートレット化されたページまたはタスク・フローを含むJSFアプリケーションを開きます。

2. ページまたはタスク・フローを右クリックし、「ポートレットとして実行」を選択します。

3. バインドなしタスク・フローをポートレットとして実行することを選択した場合、ダイアログでそのポートレットのエントリ・ポイントとしてビュー・アクティビティを使用することを選択するよう求められます。

4. 次のことが発生します。

1. ページまたはタスク・フローのポートレット・エントリがすでに存在する場合、そのポートレット・エントリが、ページまたはタスク・フローの現在の機能を反映するために更新されます。詳細は、第58.3項「ポートレット化されたページまたはタスク・フローのポートレット・エントリの更新」を参照してください。
ページまたはタスク・フローのポートレット・エントリが存在しない場合、デフォルト値を使用してポートレット・エントリが作成されます。

2. 選択したタスク・フローがバインドなしタスク・フローである場合、ダイアログでそのポートレットのエントリ・ポイントとしてビュー・アクティビティを使用することを選択するよう求められます。

3. 選択したタスク・フローが入力パラメータを含むバインド・タスク・フローである場合、ダイアログでそれらのパラメータのデフォルト値を入力できます。

4. アプリケーションが統合WebLogic Serverにデプロイされ、コンテキスト・ルートportletBridgeTester-Portlets-context-rootが使用されます。

注意:

このアプリケーションに対して統合WLSを初めて起動した場合、ダイアログでデフォルト・ドメインを構成するよう求められます。「リスニング・アドレス」を127.0.0.1(またはフィールドを空白のままにする)、「リスニング・ポート」を7101に設定します。

5. デプロイメントが完了すると、ポートレット化されたページまたはタスク・フローがブラウザ・ウィンドウに表示されます。

5. ポートレット化されたページまたはタスク・フローの機能をテスト・コンシューマ・アプリケーション内でテストします。

58.5 統合WebLogic Serverを使用してのJSFポートレットのテスト

JSFポートレットを作成している場合は、これをJDeveloperに同梱されている統合WebLogic Serverを使用してテストできます。

始める前に

ポートレット化されているページまたはタスク・フローをテストする前に、実行中のADFアプリケーションでそのページまたはタスク・フローが正しく動作することをまずはテストすることをお薦めします。これは、統合WebLogic Serverを使用してページを実行することで、またはタスク・フローについてはタスク・フローをページに追加してページを実行することで行えます。

詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の統合WebLogic ServerでのADFアプリケーションの実行に関する項を参照してください。

JSFポートレットをテストするには:

1. メイン・メニューから「実行」を選択し、「サーバー・インスタンスの起動」を選択します。
統合WLSの起動には数分かかる場合があります。インスタンスが起動すると、「ログ」パネルに次のようなメッセージが表示されます。

IntegratedWebLogicServer started.

詳細は、第2.2.4項「統合WebLogic Serverの管理」を参照してください。

2. これでポートレット・プロデューサ・アプリケーションを統合WLS上で実行する準備ができました。Webアプリケーションとポートレット・プロデューサ・アプリケーションは、1つで同じもの(ポートレット・プロデューサ・アプリケーションは、ポートレット・アーティファクトが追加されている既存のWebアプリケーションです)であるため、通常どおりWebアプリケーションを実行することも(『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の統合WebLogic ServerでのADFアプリケーションの実行に関する項を参照)、第59.4.1項「統合WebLogic ServerでWSRPポートレット・プロデューサを実行する方法」の指示に従ってポートレットを実行することもできます。

3. アプリケーションがデプロイされると、次に進むことでWSRPプロデューサ・テスト・ページを表示できます。

http://host:port/context-root/info

ここで:

- hostは、アプリケーションがデプロイされているサーバーの名前です。

- portはHTTPリスナー・ポートです。通常、これは7101です。サーバーが起動すると、ポートがコンソールに表示されます。

- context-rootは、Webアプリケーションのコンテキスト・ルートです。

4. ポートレットを含むアプリケーションのデプロイに成功すると、それを他の任意のアプリケーションにポートレット・プロデューサとして登録できます。詳細は、第63.2.1.1項「WSRPポートレット・プロデューサの登録方法」を参照してください。

注意:

Oracle JSF Portlet BridgeがWSRP 2.0機能を使用している場合、WSRPプロデューサ・テスト・ページに一覧されているWSRP v2 WSDL URLを使用してプロデューサを登録する必要があります。

アプリケーションは、通常のWebアプリケーションとして引き続きアクセスすることも、ポートレット・プロデューサとして使用することもできます。

5. ポートレット・プロデューサをデプロイし、登録すると、自分のJSFアプリケーションのポートレットを他のポートレットと同じように使用できます。詳細は、第63.5項「ページへのポートレットの追加」を参照してください。

58.6 WebLogic Managed ServerへのJSFポートレットのデプロイ

アプリケーションの動作がWebアプリケーションとポートレット・アプリケーションの両方として正しく動作していることが確認できたら、これを本番のOracle WebLogic管理対象サーバーにデプロイできます。

Webアプリケーションとポートレット・アプリケーションは、1つで同じものであるため(ポートレット・アプリケーションはポートレット・アーティファクトが追加されている既存のWebアプリケーション)、Webアプリケーションをデプロイすると、ポートレット・プロデューサ・アプリケーションもデプロイされます。

WebLogic管理対象サーバーへのアプリケーションのデプロイ方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のFusion Webアプリケーションのデプロイに関する項を参照してください。

注意:

Oracle PortletコンテナがインストールされているJava EEコンテナにアプリケーションをデプロイするようにしてください。統合WLSにはコンテナがインストールされています。そのためテストには統合WLSをお薦めします。

デプロイメントに成功した後、アプリケーションとポートレット・プロデューサ・テスト・ページの両方にアクセスできます。たとえば、アプリケーションのURLは次のようになります。

http://host:port/appcontextroot/faces/pagename.jspx

また、ポートレット・プロデューサ・テストURLは次のようになります。

http://host:port/appcontextroot/info

58.7 イベントを使用したその他のポートレットとのJSFポートレットのリンク

コンテキスト・イベントをトリガーするOracle ADFタスク・フローをポートレット化する場合、Oracle JSF Portlet BridgeはJSR 286ポートレット・イベントを作成してコンテキスト・イベントをラップします。このため、ポートレット化されたタスク・フローがページ上で使用される場合、このタスク・フローは他のJSFポートレットまたはJSR 286ポートレットにリンクできることになります。

この項の例では、次のポートレットを使用します。

- 部門ポートレット: 部門リストを表示するポートレット化されたADFタスク・フロー。部門リストは場所IDで制限できます。このポートレットは、部門行がポートレットで選択されている場合に、コンテキスト・イベントdepartmentSelectedを呼び出します。departmentSelectedイベントは、hr.Department (Departments表の1行を表すJavaオブジェクト)タイプのオブジェクトです。

- 従業員ポートレット: 従業員リストを表示するポートレット化されたADFタスク・フロー。従業員リストは部門IDで制限できます。

- 部門アドレス・ポートレット: 特定部門のアドレスを表示するJSR286ポートレット。

- 部門場所ポートレット: 場所のリストを表示するJSR286ポートレット。このポートレットは、リストされている場所の1つが選択されるときに、ネームスペースhttp://xmlns.oracle.com/adfm/contextualeventとともにlocationIdというポートレット・イベントを呼び出します。

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

- 第58.7.1項「別のJSFポートレットへのJSFポートレットのリンク方法」

- 第58.7.2項「JSR 286ポートレットへのJSFポートレットのリンク方法」

- 第58.7.3項「JSFポートレットへのJSR 286ポートレットのリンク方法」

- 第58.7.4項「Oracle JSF Portlet Bridgeのポートレット・イベントに関する必知事項」

58.7.1 別のJSFポートレットへのJSFポートレットのリンク方法

部門タスク・フローは、タスク・フロー内で部門行が選択されている場合に、コンテキスト・イベントdepartmentSelectedを呼び出します。このイベントは最終的に、行選択リスナーからトリガーされるeventBindingによって発生します(例58-3)。

イベントのペイロード(hr.Departmentタイプのオブジェクトで、部門表の1行を表すJavaオブジェクト)は、現在の行をdepartments表イテレータからポイントするcustomPayload属性を使用して生成されます。

この例で使用されている手法のような標準的なADFコンテキスト・イベント手法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のコンテキスト・イベントの作成に関する項を参照してください。

例58-3 部門タスク・フローのコンテキスト・イベント

<eventBinding Listener="org.apache.myfaces.trinidad.event.SelectionListener"
id="DepartmentSelectedEvent">
<events xmlns="http://xmlns.oracle.com/adfm/contextualEvent">
<event name="departmentSelected"
customPayLoad="#{bindings.departments.currentRow.dataProvider}"/>
</events>
</eventBinding>

第58.2.3項「タスク・フローに基づいたJSFポートレットの作成方法」で説明されている手順を使用して部門タスク・フローをポートレット化すると、WSRPを介したポートレットとのポートレット通信中に対応するコンテキスト・イベントを転送するために使用されるポートレット・イベントの定義を含むportlet.xmlファイルが作成されます(例58-4)。

例58-4 ポートレット化された部門タスク・フローのポートレット・エントリ

<portlet id="adf_taskflow_WEB_INF_departments_xml">
...
<supported-publishing-event id="departmentSelected">
<qname xmlns:x="http://xmlns.oracle.com/adfm/contextualEvent">
x:departmentSelected
</qname>
</supported-publishing-event>
...
</portlet>

部門ポートレットのdepartmentSelectedイベントについては、portlet.xmlには対応するイベント定義もあります(例58-5)。

例58-5 departmentSelectedイベントのイベント定義

<event-definition id="departmentSelected">
<qname xmlns:x="http://xmlns.oracle.com/adfm/contextualEvent">
x:departmentSelected
</qname>
<value-type>
oracle.portlet.bridge.adf.lifecycle.ADFmPayloadWrapper
</value-type>
</event-definition>

注意:

ポートレット・イベントでカバーされているコンテキスト・イベントのネームスペースは常に次のようになります。

http://xmlns.oracle.com/adfm/contextualEvent

ペイロード・タイプは常に次のようになります。

oracle.portlet.bridge.adf.lifecycle.ADFmPayloadWrapper

ADFmPayloadWrapperは、あらゆるシリアライズ可能なコンテキスト・イベント・ペイロードがJAXBマーシャリング化可能なラッパーにラップされるようにするために使用されます。また、これによってイベントが呼び出されるまでペイロードのタイプがわからない場合であっても、固定タイプをポートレット・イベントに宣言することができます。ペイロードは、ポートレット・イベントからコンテキスト・イベントを抽出する際にアンラップされます。

従業員タスク・フローでは、標準的なADF手法を使用してdepartmentSelectedイベントを処理します。これは、データ・コントロールでメソッドを呼び出して、departmentSelectedイベントからそのメソッドへのパラメータとしてイベント・ペイロードを提供する methodActionバインドの形となります。例58-6は、methodActionバインディングの定義を示しています。

例58-6 従業員タスク・フローのmethodActionの定義

<methodAction id="updateTableForDepartmentId" RequiresUpdateModel="true"
Action="invokeMethod" MethodName="updateTableForDepartmentId"
IsViewObjectMethod="false" DataControl="EmployeesDataControl"
InstanceName="EmployeesDataControl.dataProvider">
<NamedData NDName="departmentIdPayLoad" NDType="hr.Department"/>
</methodAction>

updateTableForDepartmentIdメソッドは、departmentSelectedイベントのペイロードとして渡されるhr.Departmentオブジェクトをとり、EmployeesDataControlから問い合されるデータを、選択された部門に所属する従業員のみを示すようにフィルタ処理します。また、イテレータが再実行され、表ビュー・コンポーネントがこのリクエストで再レンダリングされる必要があるとしてマークされるようにする手順も実行されます。

従業員タスク・フローは、タスク・フローがポートレット化されるときに受信イベントを適切なmethodActionに明確にマップするイベント・マップを含みます(例58-7)。

例58-7 ポートレット化された従業員タスク・フローのイベント・マップ

<eventMap xmlns="http://xmlns.oracle.com/adfm/contextualEvent">
<event name="departmentSelected">
<producer region="*">
<consumer region="" handler="updateTableForDepartmentId"
handleCondition="${ADFPortletBridge.bridgeRequest}">
<parameters>
<parameter name="p1" value="#{payLoad}"/>
</parameters>
</consumer>
</producer>
</event>
</eventMap>

注意:

<producer region="*">属性はあらゆるリージョンからイベントを受け入れます。これは、リモート・アプリケーションからポートレットに着信するイベントとともに、タスク・フローがポートレットとして実行している場合、リモート・アプリケーションにはプロデューサ・リージョンに関する知識がまったくないためです。

現在のリクエストがOracle JSF Portlet Bridgeの下で実行している場合、handleCondition="${ADFPortletBridge.bridgeRequest}"内のEL式はtrueに評価されます。これによって、このイベント・マップはタスク・フローがポートレットとして実行している場合のみ使用されることが保証されます。このhandleConditionはなくてもかまいません。ただし、タスク・フローがポートレットとして実行している場合のみ使用される別のeventMapを定義できると便利な場合もあります。

2つのポートレット化されたタスク・フローがページに追加されると、部門ポートレットによってトリガーされるイベントの名前が従業員ポートレットによって期待されているものと同じであるかぎり、それ以上のコーディングは不要です。ポートレットは自動的にリンクされ、部門ポートレットで部門が選択されると従業員ポートレットが更新され、選択されている部門に属する従業員が表示されます。

図58-1 JSFポートレットのリンク

自動的なイベント・リストを使用しないことを選択することもできます。たとえば、同じイベントを使用する同じページ上に複数のポートレットを持ち、それらの間のイベントのフローを制御する場合などに選択できます。または、リンクするJSFポートレットで使用されているコンテキスト・イベントの名前が一致しない場合にも選択します。この場合、ポートレット化されたタスク・フローを含むページのページ定義にイベント・マップを明示的に作成する必要があります。このイベント・マップは、まとめて連結するポートレットのポートレット・イベントをリンクします。例58-8は、従業員タスク・フローがdepartmentSelectedのかわりにdepartmentIdというイベントを予測している場合に、この例でこれがどのような働きをするかを示しています。

例58-8 手動でJSFポートレットをリンクするためのイベント・マップ

<eventMap xmlns="http://xmlns.oracle.com/adfm/contextualEvent">
<event name="departmentSelected">
<producer region="EventSampleProducerdepartments1_1">
<consumer handler="EventSampleProduceremployees1_1.
{http://xmlns.oracle.com/adfm/contextualEvent}departmentId"/>
</producer>
</event>
</eventMap>

注意:

ポートレット化されたタスク・フローの場合、handler属性はイベントを処理する特定のバインド・オブジェクトだけではなく、<portletBindingId>.<eventQName>形式を使用してポートレット・イベントの完全なQNameも指定する必要もあります。ネームスペースはADFmネームスペースでなくてもかまいません。ペイロードに互換性があればどのポートレット・イベントでも可能です。

58.7.2 JSR 286ポートレットへのJSFポートレットのリンク方法

他のJSFポートレットをJSFポートレットにリンクするのと同様に、JSFポートレットは通常のJSR 286ポートレットにリンクすることもできます。これを実行するには、JSR 286ポートレットがコンテキスト・イベントを受け入れることができると明示的に宣言していることを確認する必要があります。

たとえば、前述の例から部門タスク・フローを部門アドレス・ポートレットJSR 286ポートレットにリンクして、選択されている部門のアドレスを表示できます。

自動的なイベントの関連付けが有効となるために、部門アドレス・ポートレットは、部門ポートレットからコンテキスト・イベントを受け入れ可能であることを宣言する必要があります。これは、次の2つの方法で実行できます。

- 部門アドレス・ポートレットでは、直接departmentSelectedコンテキスト・イベントがサポートされます。

<supported-processing-event id="departmentSelected">
<qname xmlns:x="http://xmlns.oracle.com/adfm/contextualEvent">
x:departmentSelected
</qname>
</supported-processing-event>

- 部門アドレス・ポートレットのイベントdepartmentのイベント定義では、これをdepartmentSelectedコンテキスト・イベントと関連付けるための別名が提供されます。

<event-definition id="department">
<qname xmlns:x="http://xmlns.oracle.com/portlet/EventSample">
x:department
</qname>
<alias xmlns:x="http://xmlns.oracle.com/adfm/contextualEvent">
x:departmentSelected
</alias>
<value-type>hr.Department</value-type>
</event-definition>

注意:

コンテキスト・イベントを実行するために使用されるポートレット・イベントのネームスペースは、常に次のようになります。

http://xmlns.oracle.com/adfm/contextualEvent

ネームスペースは、前述のイベント宣言または別名で使用されます。このネームスペースは、コンシューマに対して、ポートレットがポートレット・イベントとして指定された名前でコンテキスト・イベントを受け入れる必要があることを示します。これは自動的なイベントの関連付けが有効となるために不可欠です。

部門アドレス・ポートレットは、イベントを処理するためにprocessEvent実装にそのコードを含みます(例58-9)。このメソッドでは、前述の定義どおり別名とともにdepartmentSelectedとdepartmentイベントのいずれかを検索します。これらのイベントの両方に対するペイロード・タイプはhr.Departmentです。ただし、例58-9に示すメソッドでは、ADFmPayloadWrapperを使用してペイロードをアンラップする方法を示しています。ADFmPayloadWrapperは、Oracle JSF Portlet Bridgeがイベント呼出し時にデフォルトで使用するイベント・タイプです。

例58-9 departmentSelectedイベントを処理するコード

public void processEvent(EventRequest request, EventResponse response)
throws PortletException, IOException
{
response.setRenderParameters(request);

Event event = request.getEvent();
String eventName = event.getName();
if ("departmentSelected".equals(eventName) ||
"department".equals(eventName))
{
Object payload = event.getValue();
if (payload instanceof ADFmPayloadWrapper)
{
payload = ((ADFmPayloadWrapper)payload).getPayload();
}
if (payload instanceof Department)
{
Department department = (Department)payload;
int locationId = department.getLocation();
response.setRenderParameter("locationId", Integer.toString(locationId));
}
}
}

これらの2つのポートレットが1ページにまとめて表示される場合、部門ポートレットで部門を選択すると、部門アドレス・ポートレットが自動的に更新され、選択されている部門のアドレスが表示されます。

図58-2 JSR 286ポートレットへのJSFポートレットのリンク

部門アドレス・ポートレットがdepartmentSelectedイベントを明示的にサポートしていない、または適切な別名を定義していない場合でも、ページ定義内にイベント・マップを作成することで2つのポートレットをリンクできます(例58-10)。

例58-10 部門ポートレットと部門アドレス・ポートを明示的にリンクするイベント・マップ

<eventMap xmlns="http://xmlns.oracle.com/adfm/contextualEvent">
<event name="departmentSelected">
<producer region="EventSampleProducerdepartments1_1">
<consumer handler="DepartmentAddress1_1.
{http://xmlns.oracle.com/portlet/EventSample}department"/>
</producer>
</event>
</eventMap>

このイベント・マッピングでは、departmentSelectedコンテキスト・イベントがEventSampleProducerdepartments1_1ポートレット・バインドによって呼び出されると、そのイベントがDepartmentAddress1_1ポートレット・バインドに配信され、次にこれがポートレット・イベントdepartmentを使用してポートレットにイベントを送信することになります。

注意:

departmentSelectedコンテキスト・イベントのペイロードは、hr.Departmentsオブジェクトです。これは、ポートレットのdepartmentポートレット・イベントが期待する同じペイロード・タイプであるため、適合し、すべてが正しく動作します。また、ポートレットは、ADFmPayloadWrapperタイプのペイロードを期待していることを宣言することができます。この場合、ポートレット・コンシューマがこれを検出し、ADFmPayloadWrapperオブジェクトにコンテキスト・イベント・ペイロードを自動的にラップします。

58.7.3 JSFポートレットへのJSR 286ポートレットのリンク方法

ポートレット・イベントをJSR 286ポートレットからJSFポートレットに送信することもできます。ポートレット・イベントは、Oracle JSF Portlet Bridgeによってコンテキスト・イベントに変換され、使用されるプロデューサADFアプリケーションに標準的なコンテキスト・イベント手法を使用して配信されます。

部門タスク・フローは、DepartmentsDataControl上のメソッドにバインドされるmethodActionバインディングを含みます(例58-11)。

例58-11 部門タスク・フローのmethodActionの定義

<methodAction id="updateTableForLocationId" RequiresUpdateModel="true"
Action="invokeMethod" MethodName="updateTableForLocationId"
IsViewObjectMethod="false"
DataControl="DepartmentsDataControl"
InstanceName="DepartmentsDataControl.dataProvider">
<NamedData NDName="locationId" NDType="int"/>
</methodAction>

updateTableForLocationIdメソッドは、場所IDをパラメータとして受け入れます。このIDによってデータ・コントロールによって返される部門のリストがその場所IDでフィルタ処理されます。

タスク・フローは、コンテキスト・イベントを適切なmethodActionにマップするイベント・マップを含みます(例58-12)。

例58-12 ポートレット化された部門タスク・フローのイベント・マップ

<eventMap xmlns="http://xmlns.oracle.com/adfm/contextualEvent">
<event name="locationId">
<producer region="*">
<consumer region="" handler="updateTableForLocationId"
handleCondition="${ADFPortletBridge.bridgeRequest}">
<parameters>
<parameter name="p1" value="#{payLoad}"/>
</parameters>
</consumer>
</producer>
</event>
</eventMap>

注意:

イベント・マップは、イベントの発信元であるリージョンは参照できません。これはタスク・フローがポートレットとして実行しているときに存在しないためです。そのためイベント・マップではイベント・ソースとしてワイルドカードを使用します。

部門場所ポートレットでは、場所が選択されている場合、processActionメソッドによってポートレット・イベントlocationIdが呼び出され、選択されている場所の場所IDが付与されます(例58-13)。

例58-13

public void processAction(ActionRequest request, ActionResponse response)
throws PortletException
{
String locationId = request.getParameter("locationId");
Location location = getLocation(Integer.parseInt(locationId));

if (location != null)
{
// QName matches the event declared as a supported-publishing-event in
// portlet.xml for this portlet.

// LocationId event. Raised in the ContextualEvent namespace makes it readily
// consumable by ADF Bridge portlets. Likewise we wrap with the
// ADFmPayloadWrapper payload object that the ADF Bridge expects.
response.setEvent(new QName("http://xmlns.oracle.com/adfm/contextualEvent",
"locationId"),
new ADFmPayloadWrapper(Integer.valueOf(location.getLocationId())));
}
}

注意:

processActionメソッドで呼び出されたlocationIdイベントには、Integerタイプのペイロードがあります。ただし、JSFポートレットは常にADFmPayloadWrapperでラップされたコンテキスト・ペイロードでポートレット・イベントを予測するため、イベントの自動配信を機能させたい場合には受信ポートレットの要件に適するようにペイロードをラップする必要があります。

同様に、呼び出すイベントのQNameは次のようになります。

{http://xmlns.oracle.com/adfm/contextualEvent}locationId

ポートレットをページ上にドロップし、部門場所ポートレット内で場所を選択すると、選択した場所に部門を表示する部門ポートレットが自動的に更新されます。

図58-3 JSFポートレットへのJSR 286ポートレットのリンク

2つのポートレットが一致する名前でイベントを宣言していない(たとえば、部門ポートレットからのコンテキスト・イベントがlocIdとコールされる)場合や、自動イベント・リスニングが無効化されている場合であっても、ページ定義において、部門ポートレットのコンテキスト・イベントを、部門場所ポートレットのポートレット・イベントにマップするイベント・マップを作成することで、2つのポートレットをリンクできます(例58-14)。

例58-14

<eventMap xmlns="http://xmlns.oracle.com/adfm/contextualEvent">
<event name="locationId">
<producer region="DepartmentLocations1_1">
<consumer handler="DepartmentsADFBridgePortlet1_1.
{http://xmlns.oracle.com/adfm/contextualEvent}locId">
</consumer>
</producer>
</event>
</eventMap>

58.7.4 Oracle JSF Portlet Bridgeのポートレット・イベントに関する必知事項

コンテキスト・イベント・ペイロードでのシリアライズされたタイプの使用

JSR 286イベントのペイロードの一部は、シリアライズされるラップされたコンテキスト・イベント・ペイロードです。そのため、コンテキスト・イベント・ペイロードがいずれのオブジェクト・タイプでも可能である間は、WSRP経由でコンテキスト・イベントを送信するときにはシリアライズされたタイプのみがサポートされます。

このラップされたコンテキスト・イベントが配信されると、コンテキスト・イベント・ペイロードはコンシューマで非シリアライズされなければ、コンシューマ・アプリケーションに転送できません。イベントを非シリアライズするには、ペイロード・クラスがコンシューマとプロデューサで使用可能でなければなりません。この条件は、元のペイロードがjava.lang.StringのようなJava Runtime Environmentクラスであれば自動的に満たされます。

宣言されていないイベントの呼び出し

Oracle ADFタスク・フローがportlet.xmlファイルに宣言されている対応するポートレット・イベントを持たないADFmイベントを含む場合、Oracle JSF Portlet Bridgeを有効にしてこれらの宣言されていないイベントを呼び出すことができます。

宣言されていないイベントを呼び出すには、ポートレット化されたタスク・フローに対して次のコンテナ・ランタイムを設定してください。

<portlet id="Application5untitled1jspx1_1">
...
<container-runtime-option>
<name>oracle.portlet.bridge.adf.raiseUndeclaredContextualEvents</name>
<value>true</value>
</container-runtime-option>
...
</portlet>

このオプションをtrueに設定することで、呼び出されたあらゆるADFmイベントがポートレット・イベントとして転送されることになります。このオプションが提供されていない、またはfalseに設定されている場合、対応するポートレット・イベント宣言を持つイベントのみが転送されます。コンテナ・ランタイム・オプションの詳細は、第59.3.4.3項「個々のポートレットに対するコンテナ・ランタイム・オプションの設定」を参照してください。

また、宣言されていないポートレット・イベントを有効にして、コンシューマ・アプリケーションのポートレット・バインドからADFmイベントとして自動的に転送することもできます。

ポートレット・バインドで、raiseUndeclaredContextualEvent属性をたとえば次のようにtrueに設定します。

<portlet id="Application5untitled1jspx1_1"
portletInstance="/oracle/adf/portlet/WsrpPortletProducer4/ap/
Application5untitled1jspx_2943bd23_012e_1000_8004_0aa7c0849010"
class="oracle.adf.model.portlet.binding.PortletBinding"
retainPortletHeader="false"
listenForAutoDeliveredPortletEvents="true"
listenForAutoDeliveredParameterChanges="true"
raiseUndeclaredContextualEvents="true"
xmlns="http://xmlns.oracle.com/portlet/bindings"/>

このオプションをtrueに設定することで、ポートレット・イベントが受信された場合に、ポートレット・イベントにイベント宣言がなくても対応するADFmイベントが呼び出されることになります。ADFmイベントの名前は、ポートレット・イベントのQNameから直接取得されます。Oracle JSF Portlet Bridgeから呼び出されたADFmイベントが、リモート・アプリケーションでイベントが呼び出されたときと同じ名前を持つのはこのためです。

部分ページ・レンダリングの使用

Oracle JSF Portlet Bridgeは、ポートレット・イベントを使用してコンシューマ・アプリケーションとの間でコンテキスト・イベントをトランスポートします。ただし、部分ページ・レンダリング(PPR)リクエストは、Portlet 2.0リソース・リクエストを使用して実装されます。リソース・リクエストのポートレット・イベントを送受信することはできません。そのため、PPRリクエストの場合、JSFポートレットからコンシューマ・アプリケーションにコンテキスト・イベントをトランスポートするには専用のメカニズムが使用されます。

58.8 JSFポートレットの作成時の必知事項

JSR 286ポートレット・マークアップ・フラグメント・ルールに準拠したマークアップを生成するようにJSFページをコーディングする必要があります。Oracle ADFを使用することを選択している場合、ページのマークアップの大部分は、Oracle ADF Facesのコンポーネントからのもので、マークアップは当然ポートレットと互換性のあるスタイルでレンダリングされるか、または互換性のあるスタイルにOracle JSF Portlet Bridgeが自動解釈できます(たとえば、ポートレットをインライン・フレームにレンダリングすることで)。

次の項では、ポートレットとして後で公開することにしたOracle ADFページをコーディングする際に生じる一般的な問題を回避する方法についてのガイダンスを示します。

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

- 第58.8.1項「一般的なガイドライン」

- 第58.8.2項「ポートレットのガイドライン」

- 第58.8.3項「セキュリティのガイドライン」

- 第58.8.4項「JSFのガイドライン」

- 第58.8.5項「Oracle ADFのガイドライン」

58.8.1 一般的なガイドライン

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

- 第58.8.1.1項「アプリケーションはWebアプリケーションとして実行する必要がある」

- 第58.8.1.2項「ポートレットは様々なページに含まれる」

- 第58.8.1.3項「サーブレットの依存性」

- 第58.8.1.4項「保護されているアプリケーション」

- 第58.8.1.5項「ディープ・リンク」

- 第58.8.1.6項「Java EE認証」

- 第58.8.1.7項「タイムアウト期間」

58.8.1.1 アプリケーションはWebアプリケーションとして実行する必要がある

JSFアプリケーションからポートレットを作成する前に、そのページとタスク・フローをすべて含むアプリケーションが、統合WLSにデプロイされた後で適切に動作している必要があります。通常のWebアプリケーションとして実行できない場合、これはポートレット・プロデューサとしても実行できません。

58.8.1.2 ポートレットは様々なページに含まれる

ポートレットとして公開されるタスク・フローの作成時に考慮するべき領域とは、タスク・フローをポートレットとしてレンダリングするページが元のプロデューサ・アプリケーションのページと異なるということです。

発生する主な共通エラーは次のとおりです。

- 使用ページでJavaScriptへのアクセスを期待します。

- 使用ページの一部としてスコープに追加されたマネージドBeanまたはオブジェクトの検索を期待します。

- コンシューマからのJSFコンポーネント・ツリーにコンポーネントの存在を期待します。

58.8.1.3 サーブレットの依存性

サーブレット環境とポートレット環境の両方での実行がサポートされているアプリケーションを記述する場合には、HttpServletオブジェクトへのキャストを回避します(またはポートレットとして実行時にClassCastExceptionを取得してください)。かわりに、Faces ExternalContextオブジェクトが提供する抽象化を使用します。たとえば、次のかわりに:

HttpServletRequest request = getRequestFromFacesContext();
String localContextPath = request.getContextPath();

次の要素を使用します。

String localContextPath=
FacesContext().getCurrentInstance().getExternalContext().getRequestContextPath();

ExternalContextが抽象化を提供しないかぎり、サーブレットまたはポートレット固有のコードを記述できます。アプリケーションがポートレットとして実行しているかどうかは次のメソッドを使用して確認できます。

public static boolean isPortletRequest()
{
Map<String, Object> m =
FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
Object phase = m.get("javax.portlet.faces.phase");
if (phase != null)
{
return true;
}
else
{
return false;
}
}

58.8.1.4 保護されているアプリケーション

アプリケーションが保護されている場合は、第74.17項「WS-Securityを使用したWSRPプロデューサを介するアイデンティティ伝播の保護」に説明されているとおりに保護されたアイデンティティ伝播を実施していることを確認してください。

58.8.1.5 ディープ・リンク

ポートレットとの通常の対話処理については、コンシューマとプロデューサとの間で保持されるセッションがあります。これは、コンシューマにセッションCookieを保存し、それをリクエストの度にプロデューサに送信することで実行されます。元のリクエストでは、このセッションが確立され、以降のリクエストでは、ポートレットがセッションCookieをプロデューサに送信し、セッションが再利用されます。

ディープ・リンク、つまりポートレットからプロデューサ・アプリケーションへのリンクについては、リクエストはブラウザからプロデューサ・アプリケーションに直接送られます。この場合、セッションCookieは送信できないため新しいセッションが確立されます。ディープ・リンクに共有セッションが必要な場合、これは開発者が実装する必要があります。共通実装とは、この状態を、プロデューサおよびアプリケーションからアクセスできる共通の場所に書き込み、この状態に対する参照をディープ・リンクで渡すことです。

58.8.1.6 Java EE認証

Java EEログインはサポートされていません。Java EEアプリケーションは、BasicやDigestなどの様々な認証テクニックを使用して構成できます。ポートレットはコンシューマのページに組み込まれたフラグメントであるため、Direct認証はクライアントとポートレット・プロデューサとの間ではなく、クライアントとコンシューマとの間で発生することが一般に予想されます。結果として、これらの認証テクニックはJSR 286ではサポートされていません。JSR 286の場合、Java EE認証がWS-Securityメカニズムを通じて発生し、これによってWebサービス・コンシューマはプロデューサに認証および検証され、ユーザー認証および認可に向けてユーザー・アイデンティティが伝播できます。公開されているOracle ADFアーティファクトはJava EE認証をトリガーするログイン・リンクを含んでいる必要があります。

58.8.1.7 タイムアウト期間

レンダリングに時間のかかるアプリケーションについては、Oracle JSF Portlet Bridgeで作成されたプロデューサを登録するときに、タイムアウト期間を増やすことを検討してください。ただし、プロデューサ登録中に指定されたタイムアウト期間がadf-config-xmlで指定された最大タイムアウト期間(maximumTimeout要素)で制限されていることに注意してください。

58.8.2 ポートレットのガイドライン

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

- 第58.8.2.1項「ポートレットのサイズ変更」

- 第58.8.2.2項「リソースとリンク」

- 第58.8.2.3項「リクエストのリダイレクト」

- 第58.8.2.4項「メモリー使用量」

- 第58.8.2.5項「WSRPバージョン」

58.8.2.1 ポートレットのサイズ変更

JSFポートレットを使用している場合、コンシューマ・アプリケーションはインライン・フレーム内でポートレット・コンテンツを自動的にレンダリングします。これは、いずれのインライン・ポップアップもインライン・フレーム内に限定されることを意味します。これは、ポートレットのサイズを指定する際に考慮する必要があります。

JSFポートレットがポートレット化されたページである場合、コンテンツの完全なコントロールが可能で、コンテンツ・ファイルがインライン・フレーム・ウィンドウを埋める方法を決定でき、コンテンツがブラウザのウィンドウを埋める方法を決定するときとまったく同じテクニックを活用できます。

ポートレットがコンシューマ・アプリケーション内のその先祖までストレッチされている場合、Oracle JSF Portlet Bridgeによって生成されたドキュメントのaf:documentコンポーネントのmaximized属性がtrueに設定されます。つまり、これをサポートするpanelStretchLayoutなどのコンポーネントはインライン・フレーム全体を埋めます。

ポートレットのサイズ変更の詳細は、第63.5.5項「ポートレットのサイズ変更に関する必知事項」を参照してください。

58.8.2.2 リソースとリンク

リソースおよびリンクについては、web-app-context-rootを基準として場所を指定する必要があります。そうしないと、ポートレットがイメージやその他のリソースを見つけられません。相対パスの表記(../)を使用しないでください。Oracle WebCenter Portal Frameworkのポートレットは、リモートで実行され、SOAPプロトコル(WSRP)を使用してアクセスされます。後者は、通常のWebアプリケーションのリクエスト・パスの概念が、JSR 286コンテナでは意味がないということです。JSR 286仕様では、すべてのリソースURLが絶対パスまたはコンテキスト相対パスのいずれかであることが規定されていることにこれが反映されています。

58.8.2.3 リクエストのリダイレクト

リクエストをJSP内でリダイレクトまたは転送しないでください。JSR 286では、requestDispatcher.include()のみがサポートされます。httpServletResponse.sendRedirect()またはrequestDispatcher.forward()を使用すると、例外やエラーが発生します。ポートレット環境で正常に作業を行うには、faces-config.xmlでのJSFナビゲーション・ルールまたはOracle ADFタスク・フローの制御フロー・ルールを実装する必要があります。

58.8.2.4 メモリー使用量

Oracle JSF Portlet Bridgeは、リクエスト間のリクエスト・スコープのコンテンツを保存し、リクエスト・スコープがActionポートレットとRenderポートレット(これらは2つの別個のリクエスト)との間で予約されるようにします。このため、メモリー使用量全体を最小限に抑えるには、アプリケーションがJSFポートレットを含む場合にリクエスト・スコープ内にあまりデータを保存しすぎないようにする必要があります。

58.8.2.5 WSRPバージョン

Oracle JSF Portlet Bridgeは、Portlet 2.0機能を利用します。そのため、これはWSRP V2以外では使用しないようにしてください。ポートレットのminimumWsrpVersionコンテナ・ラインタイム・オプションは2に設定する必要があります。詳細は、第59.3.4項「JSR 286ポートレットのランタイム環境をカスタマイズする方法」を参照してください。

58.8.3 セキュリティのガイドライン

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

- 第58.8.3.1項「Oracle ADF保護されたアプリケーション」

- 第58.8.3.2項「ロール・ベースの認証」

58.8.3.1 Oracle ADF保護されたアプリケーション

「ポートレット・エントリの作成」または「タスク・フローのポートレット・エントリの管理」ダイアログを使用してOracle ADF保護アプリケーションにタスク・フローをポータル化する場合 (セキュリティ・スキームは認証と認可)、プロデューサ・アプリケーションのjazn-data.xmlファイルの以下のラッパー・タスク・フローに手動で権限を付与する必要があります。

/WEB-INF/adfp-portlet-bridge-container.xml#adfp-portlet-bridge-container

権限を付与しないと、ポートレットはレンダリングしません。

たとえば、表示権限のあるauthenticated-roleと、カスタマイズ、編集、付与、パーソナライズ、表示権限のあるtestroleの2つのロールをアプリケーションが持つ場合、各ロールの<permissions>タグ内に次のエントリを追加する必要があります。

- authenticated-role:

<permission>
<class>oracle.adf.controller.security.TaskFlowPermission</class>
<name>
/WEB-INF/adfp-portlet-bridge-container.xml#adfp-portlet-bridge-container
</name>
<actions>view</actions>
</permission>

- testrole:

<permission>
<class>oracle.adf.controller.security.TaskFlowPermission</class>
<name>
/WEB-INF/adfp-portlet-bridge-container.xml#adfp-portlet-bridge-container
</name>
<actions>customize,edit,grant,personalize,view</actions>
</permission>

58.8.3.2 ロール・ベースの認証

ロール・ベースの認証を持つタスク・フローまたはページをポートレット化する(つまりタスク・フローまたはページに特定のロールが付与される)場合、ユーザーに正しく伝播するためにWS-Securityが必要です。WS-Securityを設定する場合、伝播されたユーザーがタスク・フローを表示する権限を持たないと、JSFポートレットはコンテンツをレンダリングしません。

プロデューサへのWS-Securityの設定の詳細は、第74.17項「WS-Securityを使用したWSRPプロデューサを介するアイデンティティ伝播の保護」を参照してください。

使用するアプリケーションでプロデューサを登録する場合、必ず適切なセキュリティ・プロパティを設定する必要があります。詳細は、第63.2.1.1項「WSRPポートレット・プロデューサの登録方法」を参照してください。

58.8.4 JSFのガイドライン

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

- 第58.8.4.1項「h:commandLinkの使用」

58.8.4.1 h:commandLinkの使用

h:commandLink JSF標準HTMLコンポーネントを使用する場合、JSFリファレンス実装が外部JavaScriptリソースを生成しないようにweb.xmlに次のcontext-paramを設定していることを確認する必要があります。これは、JavaScriptリソースへの参照が適切にエンコードされないというJSFリファレンス実装での問題を回避することが目的です。

<context-param>
<param-name>com.sun.faces.externalizeJavaScript</param-name>
<param-value>false</param-value>
</context-param>

58.8.5 Oracle ADFのガイドライン

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

- 第58.8.5.1項「タスク・フロー・リターン」

- 第58.8.5.2項「不一致のスタイル・シート」

- 第58.8.5.3項「ADF Facesのダイアログ・フレームワーク」

- 第58.8.5.4項「コンポーザ・コンポーネント」

- 第58.8.5.5項「fileDownloadActionListenerコンポーネント」

- 第58.8.5.6項「prepareModelフェーズ」

- 第58.8.5.7項「リクエスト・パラメータへのアクセス」

- 第58.8.5.8項「ページ・パラメータの参照」

- 第58.8.5.9項「Trinidadコンポーネント」

- 第58.8.5.10項「コンポーネントを見つけるためのADF Facesクライアント側APIの使用」

- 第58.8.5.11項「URLのエンコーディング」

- 第58.8.5.12項「goLinkの問題」

- 第58.8.5.13項「プロトコル内リソース・リクエスト」

58.8.5.1 タスク・フロー・リターン

ADFバインド・タスク・フローが完了すると、これはタスク・フロー・リターンを使用してコール元のタスク・フローに制御を戻すことができます。ポートレット化されたタスク・フローには、コール元のタスク・フローはないため、この状況ではタスク・フロー・リターンは意味がありません。これによって、タスク・フローはビューが選択されていない状況に移動するために、空のポートレットのようなものが表示される場合があります。タスク・フローは、入力パラメータの変更時に、またはプロデューサのセッションのリセット時にリフレッシュされるまで、この状態のままとなります。

タスク・フローのポートレット化を計画している場合は、タスク・フロー・リターンの使用を避ける必要があります。タスク・フロー・リターンを使用する必要がある場合、ポートレット化するタスク・フローのデフォルトのアクティビティを持つダミーのタスク・フローを提供する必要があります。タスク・フロー・リターンが実行されると、これはダミーのタスク・フローに戻ります。ダミー・タスク・フローは、そのデフォルトのアクティビティを実行します。これは元のタスク・フローにコール・バックすることであり、したがってそのタスク・フローはポートレットが次にコールされるときに再起動されます。

58.8.5.2 不一致のスタイル・シート

一般に、Oracle JSF Portlet Bridgeを使用してタスク・フローを使用すると、ポートレット・プロデューサがコンシューマ・ページのスキンを使用しようとします。プロデューサがコンシューマ・スキンと一致できない場合、ポートレットはその独自のスタイル・シートを生成して参照します。これは不一致と呼ばれます。スキンの不一致は次のような場合に発生することがあります。

- コンシューマとプロデューサが異なるバージョンのADF Facesを使用している。この場合、プロデューサはまだコンシューマ・スキンを使用します。

- コンシューマがプロデューサが持たない追加のskin-additionsを持つ(またはその逆)。この場合、プロデューサはまだコンシューマ・スキンを使用します。

- プロデューサがコンシューマ・スキンを持たない。この場合、プロデューサはポートレット・スキンを使用します。

スキンの不一致によって、パフォーマンスの問題が生じる可能性があります。これは、ブラウザが余分なスタイル・シートをフェッチしなければならず、生成されたポートレット・マークアップが圧縮されていないスタイルを使用することで、マークアップがより大きくなってしまうためです。

スキンの不一致が発生すると、プロデューサ・ログには次が含まれます。

The skin skinName specified on the requestMap will not be used because the
styleSheetDocument id on the requestMap does not match the local skin's
styleSheetDocument's id. It could mean the jars are not identical. For example,
one might have trinidad-skins.xml skin-additions in a jar file on the class path
that the other does not have.

インライン・フレーム内のポートレット・マークアップには、たとえば次のようなポートレット・スタイル・シート・リソースへのリンク・タグも含まれます。

<link rel=\"stylesheet\" charset=\"UTF-8\" type=\"text/css\" href=\"http:.../resourceproxy/portletId...252525252Fadf%252525252Fstyles%252525252Fcache%252525252Fblafplus-rich-portlet-d1062g-en-ltr-gecko.css...

HTTP監視ツールを使用すると、リクエストがポートレット・スタイル・シート・リソースに対して実行されることを確認できます。

スキンの不一致の理由は様々です。スキンが一致するには、プロデューサとコンシューマが次のすべての状態が同じである必要があります。

- ADF Facesバージョン: ADF Facesのバージョンが異なると、そのスタイル・セレクタが異なる可能性があります。

- web.xmlに定義された、たとえば次のようなスタイル圧縮:

<context-param>
<param-name>
org.apache.myfaces.trinidad.DISABLE_CONTENT_COMPRESSION
</param-name>
<param-value>false</param-name>
</context=param>

- web.xmlに定義された、たとえば次のようなTonalスタイル圧縮:

<context-param>
<param-name>xyz</param-name>
<param-value>xyz</param-value>
</context-param>

- スキン追加の可用性。スキン追加はJARファイルのMETA-INF/trinidad-skins.xmlで定義されます。これらはクラス・パスのすべてのJARファイルから集約されます。JARファイルがプロデューサには存在してもコンシューマには存在しない、またはその逆の場合、不一致が生じます。

<skin-addition>
<skin-id>blafplus-rich.desktop</skin-id>
<style-sheet-name>
adf/styles/flexComponents-blafplus-rich-desktop.css
</style-sheet-name>
</skin-addition>

JARファイルが一致するかどうかを決定するには、どのskin-additionを処理しているかを示すTrinidadロギングをオンにします。これを行うには、次のようにプロデューサとコンシューマの両方のWebLogic Serverのlogging.xmlログ・レベルをFINESTに更新し、サーバーを再起動します。

<logger name="org.apache.myfaces.trinidad.skin.SkinUtils" level=FINEST"/>

コンシューマ・ページを実行すると、コンシューマとプロデューサのログ・ファイルと一致しないスキン・エントリはスキン不一致の原因となります。

58.8.5.3 ADF Facesダイアログ・フレームワーク

ADF Facesダイアログ・フレームワークはサポートされていません。アプリケーションがセカンダリ・ブラウザ・ウィンドウを起動するボタンまたはアイコンを含む場合、アプリケーションがポートレットとして実行される場合に新しいウィンドウの内容は正しく表示されません。そのため、アプリケーションのポートレット化を計画している場合は、これらのコンポーネントの使用は避ける必要があります。セカンダリ・ウィンドウを起動するコンポーネントの例は次のとおりです。

- <tr:inputDate>

- <tr:inputColor>

- <tr:popup>

- <af:commandButton>のuseWindow属性

58.8.5.4 コンポーザ・コンポーネント

コンポーザ・コンポーネントを含むページのポートレット化はサポートされていません。

58.8.5.5 fileDownloadActionListenerコンポーネント

<af.fileDownloadActionListener>コンポーネントはサポートされていません。

58.8.5.6 prepareModelフェーズ

prepareModelを処理するOracle ADFコンポーネント/コードは多重呼出し不変でなければなりません。prepareModelフェーズ中に実行されるコードは、基礎となるデータ/ビジネス・ロジックに影響することなく再実行可能でなければなりません。ポートレット環境で実行する場合、prepareModelは、一度コールされる通常のWebアプリケーション内での実行時とは異なり、完全なJSFライフ・サイクル中には二度コールされます。

この違いの理由は、Oracle JSF Portlet BridgeがJSFを1つのリクエストではなく2つのリクエストで実行することにあります。これは、すべてのJSFリクエストがレンダリング・フェーズ前にリダイレクトされるかのように実装されます。このアプローチでは、リクエストが最初に送信されるとき、およびレンダリングへのリクエストの受信時に再び送信されるときの両方で両方でJSF restoreViewフェーズがコールされることになります。

58.8.5.7 リクエスト・パラメータへのアクセス

ページ・パラメータ内を除き、モデル・コードからリクエスト・パラメータをアクセスまたは参照しないでください。よりきれいなMVC2実装であることに加えて、このガイドラインに従うことで、そのようなアーティファクトがポートレットとして公開された場合に問題を回避します。通常のJSFアーティファクトが1つのリクエストで全ライフサイクルを実行するのに対して、Oracle JSF Portlet Bridgeは、すべてのJSFリクエストがレンダリング・フェーズの前にリダイレクトされるかのように、これらのアーティファクトを2つのリクエストで実行します。

この2フェーズ・モデルでは、レンダリング前に送信済パラメータのクリーニングを、そのクリーニングをクライアントまで遡って通知可能な方法でできるようにします。これによって、このリクエストのブックマークが可能になります。結果として、リクエスト・パラメータはレンダリング・フェーズ中には存在しません。前述のとおり、prepareModelはこのレンダリング・フェーズで再度呼び出されます。そのため、このフェーズ・ハンドラでのリクエスト・パラメータへの参照はいずれも失敗します。次のようなフラグメントのコードはいずれも避ける必要があります。

<invokeAction id="doExecuteWithParams"
Binds="ExecuteWithParams"
Refresh="prepareModel"
RefreshCondition="${param.id != null}"
/>

<invokeAction id="doExecuteWithParams"
Binds="ExecuteWithParams"
Refresh="renderModel"
RefreshCondition="${param.id != null}"
/>

58.8.5.8 ページ・パラメータの参照

prepareModelフェーズで、ページ・パラメータを参照しないでください。この問題は、第58.8.5.7項「リクエスト・パラメータへのアクセス」でリクエスト・パラメータについて説明されている問題に関連します。一般的に、ページ・パラメータはリクエスト・パラメータに依存し、restoreViewフェーズ中に評価されます。このフェーズが、ポートレットのレンダリング中にもう一度コールされ、リクエスト・パラメータがないと、失敗に終わります。かわりに、JSFの実行フェーズからレンダリング・フェーズへの遷移の前に、ページ・パラメータ値に対する依存性をモデルに移動します。

58.8.5.9 Trinidadコンポーネント

Trinidadコンポーネントのみ(<tr:>タグのみ)を含むアプリケーションをポートレット化する場合は、プロジェクトに次のライブラリを手動で含める必要があります。

- jdeveloper\modules\oracle.adf.view_11.1.1\adf-richclient-api-11.jar

- jdeveloper\modules\oracle.adf.view_11.1.1\adf-richclient-impl-11.jar

これは、プロデューサに対して生成されたスタイル・シート内のアイコンに対するURLが正しくエンコードされるようにするためです。

58.8.5.10 コンポーネントを見つけるためのADF Facesクライアント側APIの使用

ポートレットはネーミング・コンテナであるため、ADF Facesクライアント側のAPIを使用してコンポーネントを見つける場合には特別な配慮が必要とされます。コンポーネントIDの例:

- 通常のWebアプリケーションとして実行する場合: id="demoTemplate:popup"

- ポートレット・プロデューサ・アプリケーションとして実行する場合: id="__ns12345678:demoTemplate:popup"

特別に配慮すること:

- AdfPage.PAGE.findComponentByAbsoluteId() APIを使用しないようにします。かわりにgetSource()メソッドとfindComponent()メソッドを使用してください。例:

<trh:script text="
function showPopup(event) {
event.cancel();
// var popup =
//  AdfPage.PAGE.findComponentByAbsoluteId("demoTemplate:popup");
var source = event.getSource();
var popup = source.findComponent("popup");
popup.show({align:"after_end", alignId:"button"});
}
"/>

- clientIdには絶対パス(「:」で始まる)ではなく相対パスを使用します。たとえば、次のように使用します。

<af:showPopupBehavior popupId="demoTemplate:iteratorpop"
triggerType="mouseHover"/>

次は使用しません。

<af:showPopupBehavior popupId=":demoTemplate:iteratorpop"
triggerType="mouseHover"/>

- 詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のネーミング・コンテナの使用に関する必知事項を参照してください。

58.8.5.11 URLのエンコーディング

デフォルトでは、ポートレット化されたページまたはタスク・フローのURLはコンシューマ・アプリケーションによってプロキシされるようにエンコードされます。状況次第では、これらのURLをエンコードしたくない場合もあります。たとえば、コンテンツ配信ネットワークからJavaScriptライブラリをリクエストする場合や、ユーザーのブラウザから直接リソースにアクセスしてローカルに構成されたHTTPプロキシを利用する場合などです。

他にも、タスク・フローがインライン・フレーム(たとえばaf:inlineFrameタグを使用)を含む場合などがあります。このような場合は、インライン・フレームURLがコンシューマのポートレット・リソース・プロキシを介して進むためにエンコードされないようにする必要があります。そうしないと、インライン・フレーム内のコンテンツの相対URLは有効となりません。これらのURLがインライン・フレームの元のURLと相対的な正しい場所ではなくリソース・プロキシへのURLと相対的となるためです。

URLエンコーディングをバイパスするには、エンコーディングに向けてOracle JSF Portlet Bridgeに渡されるURLの_xEncodeUrlパラメータをfalseに設定してください。このパラメータはOracle JSF Portlet Bridgeによって収集され、URLがリソース・プロキシを介してエンコードされることはありません。パラメータは、タスク・フローがポートレットとして実行していない場合は無視されます。

たとえば、次のように置換します。

<af:inlineFrame source="http://myiframe.example.com">

置換後:

<af:inlineFrame source="http://myiframe.example.com?_xEncodeUrl=false">

注意:

このパラメータは、プロデューサ・サーバーにあるリソースへのアクセスには使用しないでください。これらのリソースにはポートレット・クライアントのプロキシを使用してアクセスする必要があります。

58.8.5.12 goLinkの問題

adf:goLinkコンポーネントは、リンクURLを現在のJSFアプリケーションのアクションとしてエンコードします。つまり、これはExternalContext.encodeActionURL(...)を使用してリンクをエンコードします。これは、ExternalContext.encodeResourceURL(...)を使用してリソースとしてURLをエンコードするJSF h:outputLinkコンポーネントとは異なります。goLinkを使用してFaces Viewではないリソースにリンクする場合、URLはリソースURLとしてエンコードする必要があります。これを行うには、次のパラメータをURLに追加することで、Oracle JSF Portlet Bridgeに対してリンクがFaces Viewではないことを伝える必要があります。

javax.portlet.faces.ViewLink=false

例:

<af:goLink text="goLink 1" id="gl1" destination="/mynonfaceslink?javax.portlet.faces.ViewLink=false"/>

58.8.5.13 プロトコル内リソース・リクエスト

Oracle JSF Portlet Bridgeの下で実行しているJSFアプリケーション内では、リソースURLがExternalContext.encodeResourceURL(...)を使用して作成される場合、そのリソースURLはプロトコル外のリソース・リクエストとして実行されるようにエンコードされます。つまり、ポートレット・コンシューマがそのリソースにアクセスする場合、これはターゲットURLに直接コールすることでそれを実行します。リソースURLがプロトコル内となることも可能です。つまり、ポートレット・コンシューマはプロデューサ・アプリケーションに対してWSRP Webサービス・コールを行うことでリソースにアクセスし、これが最終的にポートレットでコールされるserverResourceメソッドになります。その後、WSRPレスポンスで戻されるリソースの提供はポートレットが実行します。そのポートレットがOracle JSF Portlet Bridgeであれば、これはリクエスト・ディスパッチャを使用してリソースを提供し、ターゲットURLに転送します。

一般的にプロトコル外のリソース・リクエストは、Webサービス・コールの余分なオーバーヘッドを招かないため好まれます。また、プロトコル内リクエストでは、処理されるリソースが大きな場合に、WSRP SOAPレスポンスが構成されるため、大量のメモリー割当てが生じる可能性もあります。Oracle JSF Portlet Bridgeの場合、プロトコル内リソースを使用するのは、リソース・リクエストとその他のポートレット・リクエスト(ポートレット・アクションやレンダリング・リクエストなど)との間のポートレット・スコープのHTTPセッションを共有する必要があるときだけです。

プロトコル内リソース・リクエストとしてOracle JSF Portlet BridgeにリソースURLをエンコードさせるには、ExternalContext.encodeResourceURL(...)をコールする前に、次のパラメータをURLに追加します。

javax.portlet.faces.InProtocolResourceLink=true

例:

<af:goLink text="goLink 1" id="gl1" destination="/mynonfaceslink?javax.portlet.faces.ViewLink=false&javax.portlet.faces.InProtocolResourceLink=true"/>

58.9 実行時作成スキンのJSFポートレット・プロデューサ・アプリケーションへのコピー

WebCenter Portalアプリケーションでは、リソース・マネージャを使用して実行時にスキンを作成できます。これを実行すると、JSFポートレットを含むページ上にレンダリングの問題が発生する場合があります。これは、WebCenter Portalアプリケーションが使用するスキンが、タスク・フローをレンダリングするリモート・アプリケーションで使用できないためです。

この問題を是正するには、実行時に作成されたスキンを、タスク・フローがポートレット化されたときに作成されたポートレット・プロデューサ・アプリケーションにコピーする必要があります。

実行時作成スキンをポートレット・プロデューサ・アプリケーションにコピーするには:

1. スキンをPortal FrameworkアプリケーションからEARファイルにエクスポートします。
この方法の詳細は、第9.6.1項「「アセット」ページを使用してポータル・リソースをダウンロードする方法」を参照してください。

2. エクスポートしたスキンを共有ライブラリ(JARファイル)として再パッケージ化します。

1. transport.marファイルを抽出します。

$ jar xvf myskin.ear
inflated: transport.mar

2. メタデータ・ファイルを抽出します。

$ jar xvf transport.mar
inflated: oracle/webcenter/siteresources/.../Skin.css
inflated: oracle/webcenter/siteresources/.../generic-site-resources.xml
...

3. メタデータ・ファイルの中からgeneric-site-resources.xmlファイルを見つけて表示します。通常、このファイルは次のようなディレクトリにあります。

oracle/webcenter/siteresources/scopedMD/scopeGUID/generic-site-resources.xml

ファイルには、次の例のような、エクスポートされたスキンを説明するセクションがあります。

<resourceType name="skin" ...>
<resource displayName="MySkin"
metadataFile="/oracle/webcenter/siteresources/.../Skin.css" ...>
<customAttributes>
<customAttribute name="skinId"
value="gsr616d879d_99e0_4bd9_8c10_98e7ea272a6a.desktop" .../>
<customAttribute name="skinFamily"
value="gsr616d879d_99e0_4bd9_8c10_98e7ea272a6a" ...>
<customAttribute name="skinExtends"
Value="webcenter-fusion-internal.desktop" .../>
</customAttributes>
</resource>
</resourceType>

4. generic-site-resources.xmlからの次の情報に注意してください。

- skinId (たとえばgsr616d879d_99e0_4bd9_8c10_98e7ea272a6a.desktop)

- skinFamily (たとえばgsr616d879d_99e0_4bd9_8c10_98e7ea272a6a)

- skinExtends (たとえばwebcenter-fusion-internal.desktop)

5. JARファイルのディレクトリ構造を次のように構築します。

$ mkdir META-INF

6. 次のようにSkin.cssファイルをMETA-INFディレクトリにコピーします。

$ cp oracle/webcenter/siteresources/.../Skin.css META-INF

7. META-INFディレクトリの下にtrinidad-skins.xmlという新しいファイルを作成します。

$ edit META-INF/trinidad-skins.xml

8. 次のXMLを新しいtrinidad-skins.xmlファイルに追加します。

<?xml version="1.0" encoding="ISO-8859-1"?>
<skins xmlns="http://myfaces.apache.org/trinidad/skin">
<skin>
<style-sheet-name>Skin.css</style-sheet-name>
<id>skinId</id>
<family>skinFamily</family>
<extends>skinExtends</extends>
<render-kit-id>org.apache.myfaces.trinidad.desktop</render-kit-id>
</skin>
</skins>

ここで、skinId、skinFamily、およびskinExtendsは、前述の値です。

9. JARファイルを次のようにパッケージ化します。

$ jar cvf myskin.jar META-INF
adding: META-INF/trinidad-skins.xml(in = 359) (out= 171)(deflated 52%)
adding: META-INF/Skin.css(in = 5560) (out= 1413)(deflated 74%)

JARファイルはSkin.cssとtrinidad-skins.xmlという2つのファイルを含む必要があります。

3. 新しいmyskin.jarファイルをポートレット・プロデューサ・アプリケーションにコピーします。
これを行う最も簡単な方法とは、ファイルをポートレット・プロデューサのWebアプリケーションのWEB-INF/libディレクトリにコピーするというものです。

59 JSR 286を使用した標準ベースのJavaポートレットの作成

この章では、Javaポートレット仕様JSR 286を使用して、標準ベースのJavaポートレットを作成する方法について説明します。

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

- 第59.1項「標準ベースのJavaポートレットの概要」

- 第59.2項「JSR 286 Javaポートレットの作成」

- 第59.3項「JSR 286 Javaポートレットの開発」

- 第59.4項「JSR 286ポートレットのテスト」

- 第59.5項「WebLogic管理対象サーバーへのJSR 286ポートレットのデプロイ」

- 第59.6項「WebLogic PortalポートレットのWebCenter Portalへの移行」

- 第59.7項「JSR 286 Javaポートレットのトラブルシューティング」

59.1 標準ベースのJavaポートレットの概要

WebCenter Portalでは、JSR 286標準を使用した標準ベースのJavaポートレットの作成をサポートしています。

JSR 286は、ポートレットとポータル間の相互運用を可能にし、集約、パーソナライズ、表示形式およびセキュリティの各領域に対処する一連のAPIを定義する仕様です。JSR 286では、次の機能を提供するコンテナ・サービスを定義しています。

- ポートレット機能をコーディングするためのポートレットAPI

- ポートレット・コンテナ内でユーザー相互作用を作成するためのURLリライティング・メカニズム

- ポートレットのセキュリティとパーソナライズ

- ポートレット・イベントおよびパブリック・レンダラ・パラメータを使用したポートレット間通信

詳細は、次の場所にあるJSR 286の仕様を参照してください。

http://jcp.org/en/jsr/detail?id=286

WSRPは、Webサービスの標準です。この標準によって、ポータルまたは他の中間Webアプリケーションを使用するユーザー対象のWebサービスで視覚的なプラグ・アンド・プレイが可能になります。WSRPは標準であるため、標準コンテナとあらゆるWSRPポータル間の相互運用が実現されます。WSRPでは、次の項目を定義しています。

- WSRPサービスを起動するためのWeb Services Definition Language (WSDL)インタフェース

- WSRPサービスで発生するマークアップのためのマークアップ・フラグメント・ルール

- WSRPサービスとメタデータを公開、検索およびバインドするメソッド

WSRPは、ポートレット・クライアント(たとえば、WebCenter Portal Frameworkアプリケーション)と、リモート・サーバーで実行するポートレット・コンテナとの間の通信を可能にします。JSR 286には、ポートレット・プロデューサ・アプリケーションを実行するためのJavaポートレットAPIについての記述があります。これらの標準を組み合せることで、開発者は、内部または外部のソースからのアプリケーションをポートレットとしてWSRPポータルに統合できます。ページの作成は、JDeveloperの「リソース・パレット」またはアプリケーション・ナビゲータの「アプリケーション・リソース」ペインからのポートレットの選択と同じように簡単になります。

図59-1に、JSR 286ポートレットを使用するWSRP仕様のアーキテクチャを示します。

図59-1 WSRP仕様のアーキテクチャ

JSR 286セキュリティの概念をWSRPで公開する方法は、第74.17項「WS-Securityを使用したWSRPプロデューサを介するアイデンティティ伝播の保護」を参照してください。

59.2 JSR 286 Javaポートレットの作成

WebCenter Portalには、JDeveloperで使用できるウィザードが用意されています。このウィザードを使用すると、JSR 286標準ベースのJavaポートレットの初期フレームワークを短時間で簡単に作成できます。

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

- 第59.2.1項「JSR 286 Javaポートレットの作成方法」

- 第59.2.2項「JDeveloperのウィザードを使用したJSR 286ポートレット作成時の処理」

59.2.1 JSR 286 Javaポートレットの作成方法

JSR 286 Javaポートレットの作成ウィザードでは、実装するポートレット・モードと、各モードに使用する実装メソッド(JSP、HTTPサーブレット、JavaクラスまたはHTML)を選択できます。さらに、ウィザードによって、選択したモードごとに簡単な実装を作成します。

JDeveloperのウィザードを使用して、JSR 286 Javaポートレットを作成するには:

1. JDeveloperで、ポートレットの作成先であるポートレット・プロデューサ・アプリケーションを開くか、新規ポートレット・プロデューサ・アプリケーションを作成します。
ポートレット・プロデューサ・アプリケーションの作成方法の詳細は、第57.4.1項「ポートレット・プロデューサ・アプリケーション」を参照してください。

注意:

WebCenter Portal - ポートレット・プロデューサ・アプリケーション・テンプレートを使用せずに、ポートレット・プロデューサ・アプリケーションを作成する場合は、テクノロジ・スコープを構築する適切なポートレットをアプリケーションに手動で追加する必要があります。

WebCenter Portal - Frameworkアプリケーション・テンプレートを使用して構築されたアプリケーションは、ポートレット作成用にスコープ設定されていません。

2. ポートレットを作成するプロジェクト(たとえば、「ポートレット」)を右クリックして、「新規」を選択します。

3. 「新規ギャラリ」(図59-2)で「Web層」を開き、「ポートレット」、「規格に基づいたJavaポートレット(JSR 286)」の順に選択して、「OK」をクリックします。

図59-2 「規格に基づいたJavaポートレット(JSR 286)」が選択された「新規ギャラリ」

ヒント:

プロジェクトにJSR 286ポートレットが含まれている場合は、次の方法でも新しいポートレットを作成できます。

- portlet.xmlを右クリックして、「ポートレットの追加」を選択します。

- portlet.xmlを開き、「設計」タブをクリックして、「ポートレット」タブの「追加」アイコンをクリックします。

4. JSR 286 Javaポートレットの作成ウィザードの「一般ポートレット情報」ページで、「名前」フィールドに入力されているデフォルト名を変更して、ポートレットの用途を適切に表すようにします。

5. 「クラス」フィールドに、ポートレットのクラスの名前を入力します。表示されているデフォルト名を受け入れることも、独自の名前を指定することもできます。新しい名前を入力する場合は、有効なJava名を使用する必要があります。

6. 「パッケージ」ドロップダウン・リストから、クラスを作成するパッケージを選択するか、パッケージの名前を入力します。
必要に応じて、「参照」ボタンをクリックして、プロジェクト内のパッケージを検索します。特定のパッケージを選択しないと、ウィザードではプロジェクトのデフォルト・パッケージが使用されます。

7. 「デフォルト言語」ドロップダウン・リストから、ポートレットでサポートするデフォルト言語を選択します。ウィザードでは、デフォルトで英語が使用されます。

8. ポートレットで「編集」モードをサポートするには、「ユーザーがポートレット・コンテンツを編集できるようにします」を選択します。ウィザードでは、このオプションがデフォルトで選択されています。
編集モードを使用すると、ユーザーは実行時にポートレットをパーソナライズできるようになります。詳細は、第57.4.2.2項「編集モード」を参照してください。

このオプションを選択すると、ポートレットの編集モードについて実装の詳細を後からウイザードで指定できるようになります。

9. 「次へ」をクリックします。

10. 「追加ポートレット情報」ページの「ポートレット・タイトル」フィールドに、ポートレットの説明的なタイトルを入力します。
ポートレット・タイトルは、「リソース・パレット」または「アプリケーション・リソース」パネルに表示されるため、ポートレットが便利かどうかどうかをユーザーが決定するのに役立つタイトルにしてください。ポートレットのタイトルは、ポートレットがページに表示されるとポートレットのヘッダーにも表示されます。

ヒント:

「表示名」、「短いタイトル」、「説明」、および「キーワード」の各属性は、WebCenter Portalには実装されていません。これらのフィールドに、値を入力する必要はありません。ただし、そのポートレットが別のアプリケーションで利用される可能性がある場合を除きます。

たとえば、Oracle Portalでは、ポートレット・リポジトリでポートレットの表示名を使用します。

11. ウィザードのこの時点で、「終了」をクリックし、残りのすべての設定にデフォルト値を使用することで、ポートレットをすぐに作成できます。
ポートレットにその他の詳細を指定するには、「次へ」をクリックし、残りの手順を実行します。

12. 「コンテンツ・タイプとポートレット・モード」ページの「コンテンツ・タイプとポートレット・モード」リストで、「表示」を選択します。

13. 「実装メソッド」セクションで、ポートレットに実装する表示モードを選択します(表示モードの詳細は、第57.4.2.1項「表示モード」を参照)。

- JSPの生成: そのポートレット・モードに応じたスケルトンJSPファイルを生成する場合に選択します。対応するフィールドにJSPの名前を入力するか、デフォルトを受け入れます。
ウィザードを完了すると、生成されたJSPがアプリケーション・ナビゲータに表示されます。このJSPは、今後の開発の際にアプリケーション・ナビゲータから選択できます。これは、すべてのポートレット表示モードでのデフォルトの選択です。

- ADF-Faces JSPXの生成: ADF-Facesコンポーネントの追加が可能なページを生成する場合に選択します。対応するフィールドにJSPXの名前を入力するか、デフォルトを受け入れます。
このオプションを選択すると、ポートレットの実装クラスは、oracle.portlet.bridge.adf.application.ADFBridgePortletのサブクラスとして作成されます。javax.portlet.GenericPortletのサブクラスとしては作成されません。つまり、このウィザードで、Oracle JSF Portlet Bridgeを使用するポートレット・プロデューサ・アプリケーションを生成することになります。Oracle JSF Portlet Bridgeの詳細は、第58章「Oracle JSF Portlet Bridgeを使用したJSFアプリケーションからのポートレットの作成」を参照してください。

- パスへのマップ: ポートレット・モードを、ポートレット・プロデューサ・アプリケーションのWebリソース(ページなど)にマップする場合に選択します。このリソースは、このウィザードでは生成されません。対応するフィールドに名前とパスを入力します。このリソースは、ウィザードの完了後に必要に応じて作成できます。
これを選択すると、ターゲットのリソースまたはファイルを自身で書き込む必要があります。ターゲットとしては、たとえば、JSP、サーブレットあるいはHTMLファイルを指定できます。これを選択すると、生成されるポートレットJavaクラスには、特定のモードに対するリクエストを指定したターゲットにルーティングするコードが入力されます。

- カスタム・コード: カスタム・コード・オブジェクトでポートレット・モードを実装する場合に選択します。このオブジェクトは、後で作成する必要があります。これを選択すること、生成されるポートレットJavaクラスに、コンテンツをレンダリングするためのスケルトン・メソッド(private void doMODE_NAMECONTENT_TYPE)を生成します。役に立つコンテンツをレンダリングするには、このコードを更新する必要があります。

ヒント:

このポートレット・モードで別のコンテンツ・タイプ(text/xmlなど)もサポートする場合は、手順16を参照してください。

14. ウィザードの最初のページで「ユーザーがポートレット・コンテンツを編集できるようにします」を選択した場合は、「編集」を選択して、手順13で説明したように、編集モードに応じた実装メソッドを選択します(編集モードの詳細は、第57.4.2.2項「編集モード」を参照)。

15. ポートレットに別のポートレット・モードを実装するには:

1. 「コンテンツ・タイプとポートレット・モード」リストの該当するコンテンツ・タイプ(たとえば、text/html)で、既存のモード(たとえば、「表示」)を選択します。

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

3. 「ポートレット・モード」ダイアログで、「選択済」リストに必要なモードを1つ以上移動して、「OK」をクリックします。
「ポートレット・モード」ダイアログには、JSR 286でサポートされる標準のモードと、WebCenter Portalでサポートされる拡張モードが一覧表示されます。

詳細は、第57.4.2項「ポートレット・モード」を参照してください。

4. ポータル・モードをそれぞれ選択して、コンテンツのレンダリングに使用する実装メソッドを指定します。手順13を参照してください。

図59-3 JSR 286 Javaポートレットへのポートレット・モードの追加

16. コンテンツ・タイプによって、ポートレットでサポートされるコンテンツのタイプが識別されます。ポートレットでは、複数のコンテンツ・タイプをサポートできます。JSR 286 Javaポートレットの作成ウィザードを使用して作成されたポートレットでは、text/htmlコンテンツ・タイプがデフォルトでサポートされます。

異なるコンテンツ・タイプを追加するには:

1. 「コンテンツ・タイプとポートレット・モード」リストで、既存のコンテンツ・タイプ(たとえば、text/html)を選択します。

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

3. 「コンテンツ・タイプ」ダイアログで、「選択済」リストに必要なコンテンツ・タイプを移動して、「OK」をクリックします。

- text/html: テキストのHTMLエンコードをサポートします。これはデフォルト選択です。

- text/xml: テキストのXMLエンコードをサポートします。

- text/plain: エンコードされていないプレーン・テキストをサポートします。

- text/vnd.oracle.mobilexml: テキストのOracle Mobile XMLエンコードをサポートします。ただし、WebCenter PortalではOracle Mobile XMLはサポートされません。

- application/xhtml+xml: テキストのXHTMLエンコードをサポートします。

- application/xml: XHTMLを含むXMLコンテンツをサポートします。

図59-4 JSR 286 Javaポートレットへのコンテンツ・タイプの追加

17. 「次へ」をクリックします。
ウィザードの前のほうの「一般ポートレット情報」ページで、「ユーザーがポートレット・コンテンツを編集できるようにします」を選択した場合は、ポートレット・プリファレンスを作成できます。これにより、ポートレットのユーザーは、実行時にポートレットの値を指定できるようになります。手順18に進みます。

このオプションを選択していない場合は、手順24に進みます。

18. 「カスタマイズ・プリファレンス」ページで、「追加」をクリックして、新しいポートレット・プリファレンスをポートレットに追加します。

このウィザードは、デフォルトで、ユーザーがポートレット・タイトルをカスタマイズできるようにするポートレット・プリファレンスを組み込みます。

19. 「新規プリファレンスの追加」ダイアログの「名前」フィールドに、新しいプリファレンスの名前を入力します。
この名前はポートレット内で一意である必要があり、空白を含めることはできません。

20. 「デフォルト値」フィールドに、新しいプリファレンスの1つ以上のデフォルト値を入力します。複数の値はカンマで区切ります。

21. 様々な言語でプリファレンスを使用できるようにする場合は、「プリファレンスの翻訳」チェック・ボックスを選択します。
たとえば、ポートレットが多言語ポータルで利用される可能性がある場合は、適切な言語でプリファレンスを表示する必要があります。

このオプションを有効にすると、プリファレンスのエントリは、そのポートレット用にJDeveloperが生成するリソース・バンドル・クラスに追加されます。

ヒント:

このリソース・バンドルを編集して、プリファレンスの名前とデフォルト値の翻訳を指定します。ほとんどの場合、名前の翻訳は必要になりますが、デフォルト値の翻訳が必要になることはありません(その値が整数の場合など)。

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

23. さらに別のプリファレンスを追加する場合は、前の手順を繰り返します。完了したら、「次へ」をクリックします。

24. 「セキュリティ・ロール」ページで、既存のセキュリティ・ロールをポートレットに追加するには、セキュリティ・ロールを選択して、「選択済」リストに移動します。

セキュリティ・ロールを使用すると、ポートレットに階層レベルのアクセスを設定できます。たとえば、「表示」ユーザーはポートレットを表示できますが編集はできません。「カスタマイズ」ユーザーは、ポートレットをカスタマイズできます。「管理」ユーザーは、ポートレット関連の使用可能なすべての機能を実行できます。

「使用可能」リストには、ポートレットを作成するアプリケーションに定義されたセキュリティ・ロールが表示されます。セキュリティ・ロールを「選択済」リストに移動することで、アプリケーションのポートレット・デプロイメント・ファイル(portlet.xml)にセキュリティ・ロールの参照を作成します。この参照は、アプリケーションのWebデプロイメント・ファイル(web.xml)のセキュリティ・ロールを参照します。

アプリケーションの新しいセキュリティ・ロールは、web.xmlを編集することで作成できます。詳細は、JDeveloperオンライン・ヘルプを参照してください。

25. 「次へ」をクリックします。

26. 「キャッシュ・オプション」ページで、「キャッシュ・ポートレット」を選択して、ポータルの有効期限ベースのキャッシュを有効にします。
有効期限ベースのキャッシュの詳細は、第57.4.5項「ポートレット・パフォーマンス」および第59.3.9.1項「JSR 286ポートレットの有効期限ベースのキャッシュの実装」を参照してください。

このオプションを選択することにより、ポートレット・キャッシュがポートレット・コンテナによって管理されることを指定します。ポートレット自体で、指定のレスポンスのコンテンツをキャッシュすることもできます。このページで指定する設定は、レスポンスに対するキャッシュ条件がポートレットで指定されていない場合にのみ適用されます。

このポートレットにデフォルト・キャッシュが必要ない場合は、「デフォルトでキャッシュしない」を選択します。この場合、ウィザードではキャッシュ有効期限が0秒に設定されます。前述したとおり、このキャッシュ設定が有効となるのは、レスポンスに対するキャッシュ条件がポートレットで指定されていない場合のみです。

ここでキャッシュしない設定を選択していても、ポートレットのデフォルト・キャッシュは後から実装できます。デフォルト・キャッシュを実装する場合は、このウィザードで生成したportlet.xmlファイルで、キャッシュ有効期限の値を0より大きい数値に変更します。

検証ベースのキャッシュを実装する方法の詳細は、第59.3.9.2項「JSR 286ポートレットでの検証ベースのキャッシュの実装」を参照してください。

27. ポートレットをキャッシュすることにした場合、「デフォルト失効条件」セクションで、次のオプションを選択します。

- 「キャッシュ・コンテンツ有効期限 [] 秒」: キャッシュされているポートレット・コンテンツを一定時間の経過後に有効期限切れにします。対応するフィールドに、制限時間を指定します。

- 「キャッシュ・コンテンツ無期限」: キャッシュされたポートレット・コンテンツに有効期限を設定しません。ポートレットに変更する見込みのない静的コンテンツが含まれている場合、このオプションを選択できます。

28. 「次へ」をクリックします。

29. 「初期化パラメータ」ページでは、ポートレットの初期化パラメータを追加できます。
WARファイルの内容を決定するアプリケーション開発者は、アプリケーションの各種コンポーネント(サーブレットやポートレットなど)のすべての動作を構成するためのJNDI変数のかわりに、互換性のある方法で初期化パラメータを使用できます。これらの初期化パラメータは、portlet.xmlファイルに追加されます。

たとえば、ポートレットに対してなんらかのデバッグ・モードをオンにしたり、環境に応じて異なるメニュー・オプションを表示することが必要になる場合があります。

1. 「新規」をクリックして、新しい初期化パラメータをポートレットに追加します。

2. 新しく追加された行で、各フィールドをダブルクリックして、そのパラメータの「名前」、デフォルトの「値」、および「説明」を指定します。

3. ここに示した手順を繰り返して、さらに初期化パラメータを追加します。

4. 完了したら、「終了」をクリックしてポートレットを作成します。

59.2.2 JDeveloperのウィザードを使用したJSR 286ポートレット作成時の処理

JSR 286 Javaポートレットの作成ウィザードを使用すると、次に示すポートレットのデフォルトの実装がJDeveloperで生成されます。具体的には、次のファイルが作成されます。

- Javaクラス

- portletName.javaは、ポートレット・コンテナから呼び出されます。このクラスには、ポートレット標準に必要なすべてのメソッドが含まれています。

- portletNameBundle.javaには、ポートレットのすべての翻訳文字列が含まれています。

- portletNameBacking.javaには、ポートレット・モードを実装するJSPXページのJSFバッキングBeanが含まれています。このクラスは、ポートレット・モードをADF-Faces JSPXページとして実装した場合に作成されます。

- portlet.xmlは、アプリケーション用のポートレット・デプロイメント・ディスクリプタ・ファイルです。

- web.xml: アプリケーションのWebデプロイメント・ディスクリプタ・ファイルです。

- ポートレットに選択した各ポートレット・モード用のファイル:

- ポートレット・モードに「JSPの生成」を選択した場合は、そのモードに応じたJSPページ(たとえば、view.jsp.)が作成されます。

- 「ADF-Faces JSPXの生成」を選択した場合は、そのモードに応じたJSPXページ(たとえば、view.jspx)が作成されます。このページには、Facesコンポーネントを追加できます。

- 「パスへのマップ」を選択した場合は、追加のファイルは作成されません。ポートレット・モードに応じたコードは、既存のリソース内にあります。ポートレットのJavaクラスにコードが追加され、指定したターゲットにリクエストがルーティングされるようになります。

- 「カスタム・コード」選択した場合は、追加のファイルは作成されません。ただし、ポートレット・モードに応じたコードは、ポートレットのJavaクラス内にあります。

- faces-config.xmlは、カスタム・バリデータやマネージドBeanといったアプリケーションのリソースを登録したり、アプリケーションのページ・フローを示す構成ファイルです。このファイルは、ポートレット・モードをADF-Faces JSPXページとして実装した場合に作成されます。

- trinidad-config.xmlは、アプリケーション・スキン・ファミリに関する情報を含む構成ファイルです。このファイルは、ポートレット・モードをADF-Faces JSPXページとして実装した場合に作成されます。

これらすべてのファイルは、アプリケーション・ナビゲータで確認できます。図59-5を参照してください。

図59-5 JSR 286 Javaポートレット用に生成されたファイル

59.3 JSR 286 Javaポートレットの開発

JSR 286 Javaポートレットの作成ウィザードを使用してポートレットの初期実装を作成したときには、その次の段階でポートレット・コンテンツと動作を制御するコードを作成します。JSR 286ポートレットはJava標準に準拠しているため、このポートレットの拡張に関する十分な情報が、サード・パーティの書籍やWebページなどの各種情報源から入手できます。

http://jcp.org/en/jsr/detail?id=286

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

- 第59.3.1項「ポートレット・デプロイメント・ディスクリプタ・ファイルの編集方法」

- 第59.3.2項「JSR 286ポートレットへのカスタム・ポートレット・モードの追加方法」

- 第59.3.3項「JSR 286ポートレットでのユーザー情報へのアクセス方法」

- 第59.3.4項「JSR 286ポートレット用のランタイム環境のカスタマイズ方法」

- 第59.3.5項「JSR 286ポートレットでのパブリック・レンダラ・パラメータの使用方法」

- 第59.3.6項「JSR 286ポートレットでのポートレット・イベントの使用方法」

- 第59.3.7項「JSR 286ポートレットへのポートレット・プリファレンスの追加方法」

- 第59.3.8項「JSR 286ポートレットでのポートレット・フィルタの使用方法」

- 第59.3.9項「キャッシュを使用してJSR 286ポートレットのパフォーマンスを向上する方法」

- 第59.3.10項「リソース・プロキシに対して書きなおされたURLの実装方法」

- 第59.3.11項「ステートレス・リソース・プロキシの実装方法」

- 第59.3.12項「JSR 286ポートレット用のセキュリティの実装方法」

- 第59.3.13項「JSR 286ポートレット用の永続ストアの管理方法」

- 第59.3.14項「設計時にポートレット・プロデューサをエクスポートおよびインポートする方法」

59.3.1 ポートレット・デプロイメント・ディスクリプタ・ファイルの編集方法

アプリケーション用のポートレット・デプロイメント・ディスクリプタ・ファイルportlet.xmlでは、アプリケーション内でのポートレット・リソースを指定します。例59-1に、ポートレット・デプロイメント・ディスクリプタ・ファイルの例を示します。

例59-1 ポートレット・デプロイメント・ディスクリプタ・ファイルの例

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<portlet-app version="2.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd
http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<portlet id="1328624289503">
<portlet-name>myPortlet</portlet-name>
<display-name xml:lang="en-US">Portlet1</display-name>
<display-name xml:lang="en">English Display Name</display-name>
<portlet-class>portlet.Portlet1</portlet-class>
<expiration-cache>300</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>edit</portlet-mode>
</supports>
<supported-locale>en-US</supported-locale>
<resource-bundle>portlet.resource.Portlet1Bundle</resource-bundle>
<portlet-info>
<title>This Is My Portlet</title>
<short-title>My Portlet</short-title>
<keywords/>
</portlet-info>
<portlet-preferences>
<preference>
<name>portletTitle</name>
</preference>
</portlet-preferences>
</portlet>
<custom-portlet-mode>
<portlet-mode>about</portlet-mode>
</custom-portlet-mode>
<custom-portlet-mode>
<portlet-mode>config</portlet-mode>
</custom-portlet-mode>
<custom-portlet-mode>
<portlet-mode>edit_defaults</portlet-mode>
</custom-portlet-mode>
<custom-portlet-mode>
<portlet-mode>preview</portlet-mode>
</custom-portlet-mode>
<custom-portlet-mode>
<portlet-mode>print</portlet-mode>
</custom-portlet-mode>
</portlet-app>

ウィザードを使用してJSR 286ポートレットの作成を完了したら、portlet.xmlファイルを編集することでポートレット・リソースを編集します。

JDeveloperでportlet.xmlファイルを開くと、ソース・コードを編集できます。また、概要エディタをポータル・リソースの編集に使用すると、このファイルを「ソース」ビューで手動で変更する必要がなくなります。

ポートレット・デプロイメント・ディスクリプタ・ファイルを編集するには:

1. アプリケーション・ナビゲータで、ポートレット・プロデューサ・アプリケーションを開きます。

2. ポートレット・プロジェクト(「ポートレット」など)を開きます。

3. 「Webコンテンツ」ノード、「WEB-INF」ノードの順に開きます。

4. 「portlet.xml」を右クリックして、「開く」を選択します。

5. 「設計」タブをクリックして、portlet.xmlの概要エディタを開きます。

ヒント:

ソース・コードを直接編集する場合は、「ソース」タブをクリックします。

6. portlet.xmlの概要エディタには、次のタブがあります。

- アプリケーション - ポートレット・プロデューサ・アプリケーションの一般情報を指定する場合に使用します。これらのプロパティは、このアプリケーション内のすべてのポートレットに適用されます。

- ポートレット - このアプリケーション内の個別のポートレットに情報を指定する場合に使用します。たとえば、ポートレットごとにサポートされる、ポートレット・イベントとパブリック・レンダラ・パラメータを指定できます。

- イベント - このアプリケーション内のすべてのポートレットで使用するポートレット・イベントの作成と管理に使用します。詳細は、第59.3.6項「JSR 286ポートレットでのポートレット・イベントの使用方法」を参照してください。

- パラメータ - このアプリケーション内のすべてのポートレットで使用するパブリック・レンダラ・パラメータの作成と管理に使用します。詳細は、第59.3.5項「JSR 286ポートレットでのパブリック・レンダラ・パラメータの使用方法」を参照してください。

- フィルタ - このアプリケーション内のポートレットにフィルタ情報を指定する場合に使用します。詳細は、第59.3.8項「JSR 286ポートレットでのポートレット・フィルタの使用方法」を参照してください。

- フィルタ・マッピング - 個別のポートレットにポートレット・フィルタを割り当てる場合に使用します。詳細は、第59.3.8項「JSR 286ポートレットでのポートレット・フィルタの使用方法」を参照してください。

59.3.2 JSR 286ポートレットへのカスタム・ポートレット・モードの追加方法

JSR 286 Javaポートレットの作成ウィザードでポートレット・モードを追加するには、「コンテンツ・タイプとポートレット・モード」ページのリストにポートレット・モードを追加します。ウィザードの使用方法の詳細は、第59.2項「JSR 286 Javaポートレットの作成」を参照してください。このウィザードを使用すると、JSR 286でサポートされている標準モードと、WebCenter Portalでサポートされている拡張モードを実装できます。

JSR 286でサポートされている標準モードは、次のとおりです。

- 表示

- 編集

- ヘルプ

WebCenter Portalは、JSR 286ポートレットで次の追加カスタム・モードをサポートしています。

- バージョン情報

- 構成

- デフォルトの編集

- プレビュー

- 印刷

ポートレットの初期作成後に、独自のカスタム・ポートレット・モードを定義することもできます。

ポートレット・モードの基本的な実装方法は、すべてのモードに共通しています。

カスタム・ポートレット・モードを追加するには:

1. portlet.xmlファイルの概要エディタを開きます。
詳細は、第59.3.1項「ポートレット・デプロイメント・ディスクリプタ・ファイルの編集方法」を参照してください。

2. 「アプリケーション」タブをクリックします(必要な場合)。

3. 「カスタム・モード」セクションを開きます(必要な場合)。
このセクションには、アプリケーション内のポートレットに使用できるすべてのカスタム・モードが一覧表示されます。WebCenter Portalの拡張ポートレット・モードも含まれています。

4. 「カスタム・モードの追加」アイコンをクリックして、ポートレット・モードの新しい行を作成します。

5. 「ポートレット・モード」フィールドに、ポートレット・モードの名前を入力します。
名前はアプリケーション内で一意である必要があります。

6. 「説明」フィールドに、このモードの用途を示す簡単な説明を入力します。

7. このポートレットを利用するアプリケーションでポートレット・モードを認識する必要がない場合は、「ポータル管理」チェック・ボックスを選択解除します。つまり、このモードがポートレットで内部的に使用される場合には、このチェック・ボックスを選択解除します。

8. portlet.xmlファイルを保存します。

9. カスタム・ポートレット・モードをアプリケーションに追加した後で、そのモードのコードをポートレット実装ファイルで作成する必要があります。

59.3.3 JSR 286ポートレットでのユーザー情報へのアクセス方法

ポートレット・プロデューサ・アプリケーションにユーザー属性を作成することで、一般的なユーザー情報(user.login.idやuser.name.familyなど)にアクセスできるようになります。これらのユーザー属性は、実行時に、現在のユーザーの実際の属性にマップされます。ポートレットでは、この情報を使用して、現在のユーザーについての情報を取得します。

ユーザー情報にアクセスするには:

1. portlet.xmlファイルの概要エディタを開きます。
詳細は、第59.3.1項「ポートレット・デプロイメント・ディスクリプタ・ファイルの編集方法」を参照してください。

2. 「アプリケーション」タブをクリックします(必要な場合)。

3. 「ユーザー属性」セクションを開きます(必要な場合)。

4. 「ユーザー属性の追加」アイコンをクリックして、属性の新しい行を作成します。

5. 「名前」フィールドに、ユーザー属性の名前を入力します(例: user.login.id)。
属性名の一覧は、Javaポートレット仕様の付録「User Information Attribute Names」を参照してください。

ヒント:

WebCenter Portalでサポートされているユーザー情報属性の一覧は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』のユーザー属性をLDAPディレクトリにマップする方法に関する項を参照してください。

6. 「説明」フィールドに、ユーザー属性の説明を入力します。

7. portlet.xmlファイルを保存します。
定義したユーザー属性は、実行時に、ポートレット・コンテナで適切な値にマップされます。たとえば、現在のユーザーがJohn Doeだとすると、user.name.familyユーザー属性にDoeがマップされます。ポートレットでは、ユーザー属性を格納するMapオブジェクトを、PortletRequestインタフェースから取得します。

59.3.4 JSR 286ポートレット用のランタイム環境のカスタマイズ方法

ポートレットの実行時には、ポートレット・コンテナがランタイム環境を提供します。さらに、ポートレット・プロデューサ・アプリケーションとポートレットとの間のインタフェースも提供します。

コンテナ・ランタイム・オプションを使用すると、ポートレット・コンテナの動作をカスタマイズできます。このオプションで、ランタイム環境をカスタマイズします。

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

- 第59.3.4.1項「サポートされるコンテナ・ランタイム・オプション」

- 第59.3.4.2項「アプリケーション内のすべてのポートレットに対するコンテナ・ランタイム・オプションの設定」

- 第59.3.4.3項「個々のポートレットに対するコンテナ・ランタイム・オプションの設定」

59.3.4.1 サポートされるコンテナ・ランタイム・オプション

表59-1に、WebCenter Portalのポートレット・コンテナでサポートされるコンテナ・ランタイム・オプションの一覧を示します。

JSR 286のコンテナ・ランタイム・オプションの詳細は、次の場所にあるJSR 286の仕様を参照してください。

http://jcp.org/en/jsr/detail?id=286

表59-1 サポートされるコンテナ・ランタイム・オプション

コンテナ・ランタイム・オプション

サポート元

JSR 286標準

javax.portlet.actionScopedRequestAttributes

アプリケーション

ポートレット

はい

javax.portlet.escapeXml

アプリケーション

ポートレット

はい

java.portlet.renderHeaders

サポートされません

はい

javax.portlet.servletDefaultSessionScope

アプリケーション

ポートレット

はい

com.oracle.portlet.allowEventPayloadsWithoutJAXBBinding

アプリケーション

いいえ

com.oracle.portlet.allowWsrpExport

アプリケーション

いいえ

com.oracle.portlet.compatibilityMode

アプリケーション

ポートレット

いいえ

com.oracle.portlet.defaultProxiedResourceRequiresWsrpRewrite

アプリケーション

ポートレット

いいえ

com.oracle.portlet.defaultServedResourceRequiesWsrpRewrite

アプリケーション

ポートレット

いいえ

com.oracle.portlet.disallowResourceServing

アプリケーション

ポートレット

いいえ

com.oracle.portlet.escapeXmlEncodeUrls

アプリケーション

ポートレット

いいえ

com.oracle.portlet.eventPayloadsXmlType

アプリケーション

いいえ

com.oracle.portlet.excludedActionScopeRequestAttributes

アプリケーション

ポートレット

いいえ

com.oracle.portlet.externalScopeRequestAttributes

アプリケーション

ポートレット

いいえ

com.oracle.portlet.importCssToIFrame

アプリケーション

ポートレット

いいえ

com.oracle.portlet.minimumWsrpVersion

アプリケーション

ポートレット

いいえ

com.oracle.portlet.offerPortletOverWsrp

アプリケーション

ポートレット

いいえ

com.oracle.portlet.portalInfoProvider

アプリケーション

ポートレット

いいえ

com.oracle.portlet.redirectAfterAction

アプリケーション

ポートレット

いいえ

com.oracle.portlet.renderHeaders

アプリケーション

ポートレット

いいえ

com.oracle.portlet.requireIFrame

アプリケーション

ポートレット

いいえ

com.oracle.portlet.streamingOptimized

アプリケーション

ポートレット

いいえ

com.oracle.portlet.suppressWsrpOptimisticRender

アプリケーション

ポートレット

いいえ

com.oracle.portlet.trapWsrpRenderExceptions

アプリケーション

ポートレット

いいえ

com.oracle.portlet.trimEncodeUrls

アプリケーション

ポートレット

いいえ

com.oracle.portlet.useWsrpUserContextForUserAuthentication

アプリケーション

いいえ

com.oracle.portlet.wsrpHeaderMode

アプリケーション

ポートレット

いいえ

com.oracle.portlet.wsrpLegacyPortletHandle

ポートレット

いいえ

com.oracle.portlet.wsrpPortletHandle

ポートレット

いいえ

oracle.portlet.bridge.adf.raiseUndeclaredContextualEvents

ポートレット

いいえ

javax.portlet.actionScopedRequestAttributes

アクション・スコープ指定型リクエスト属性を保存して、新しいアクションが発生するまで、その属性を使用できるようにするかどうかを指定します。

WebCenter Portal固有のexcludedActionScopeRequestAttributesコンテナ・ランタイム・オプションを使用すると、スコープで保存するリクエスト属性を制限できます。

有効な値は、次のとおりです。

- true - リクエスト属性をprocessActionから、その次のprocessActionまで保存します。numberOfCachedScopesの2番目の値と、ポートレット・コンテナによりキャッシュされるスコープの数を示す3番目の値を指定できます。

- false - リクエスト属性を保存しません。

javax.portlet.escapeXml

JSR 286タグ・ライブラリのタグactionUrl、renderUrl、およびresourceUrlから返されたURLをXMLエンコードするかどうかを指定します。

このオプションは、encodeXml属性を使用することで、タグごとにオーバーライドできます。

有効な値は、次のとおりです。

- true - (デフォルト) actionUrlタグ、renderUrlタグ、およびresourceUrlタグで返されたURLがXMLエンコードされます(パラメータの区切りには、アンパサンドのエンティティが使用されます)。

- false - actionUrlタグ、renderUrlタグ、およびresourceUrlタグから返されたURLは、XMLエンコードされません(また、アンパサンド文字は、そのまま使用されます)。

注意:

このオプションは、PortletURL.toString()またはResourceURL.toString()の戻り値には一切影響しません。どちらの場合も、JSR 286では、出力にアンパサンド文字のみを使用します。生成するURLがタグ・ライブラリを使用しないときに、アンパサンド・エンティティを使用する場合や、使用するXMLエンコーディングを指定する場合は、BaseURL.write()メソッドを参照してください。

javax.portlet.servletDefaultSessionScope

Javaポートレットに含まれている、またはJavaポートレットから転送されるサーブレットまたはJSPに提供するセッション・オブジェクトのスコープを指定します。

有効な値は、次のとおりです。

- APPLICATION_SCOPE - (デフォルト)ポートレット・セッションをアプリケーション・スコープにマップします。

- PORTLET_SCOPE - ポートレット・セッションをポートレット・スコープにマップします。

com.oracle.portlet.allowEventPayloadsWithoutJAXBBinding

portlet.xmlで宣言されたイベント・ペイロードのタイプと、JSR 286ポートレットから送信されるイベント・ペイロードが、JSR 286の仕様(これらのタイプには、有効なJAXBバインディングが必要という要件)をバイパスできるようにします。

有効な値は、次のとおりです。

- true - 有効なJAXBバインディングがないイベント・ペイロードが許可されます。

- false - 有効なJAXBバインディングがないイベント・ペイロードは許可されず、JSR 286仕様に従います。

com.oracle.portlet.allowWsrpExport

Webアプリケーションに対してWSRPのexport-portlets操作をサポートするべきかどうかを指定します。

このオプションは主に後方互換性のために使用されます。export-portlets操作はwsrp-producer-config.xml設定を使用して制御することをお薦めします。

有効な値は、次のとおりです。

- true - (デフォルト)ポートレットのエクスポートが許可されます。

- false - ポートレットのエクスポートは許可されません。これにより、WEB-INF/wsrp-producer-config.xmlの設定がオーバーライドされます。

com.oracle.portlet.compatibilityMode

owc168に設定すると、WebCenter PortalのJSR 286コンテナをJSR 168互換モードで呼び出します。

さらに、disallowResourceServingランタイム・オプションが、自動的にtrueに設定されます(別の値が指定されていない場合)。

com.oracle.portlet.defaultProxiedResourceRequiresWsrpRewrite

ポートレットが提供しないリソースのURLエンコードするときに使用する、デフォルトのWSRP requiresRewriteフラグを指定します。PortletResponse.encodeURL()メソッドの呼出し時にoracle.portlet.server.resourceRequiresRewritingリクエスト属性でオーバーライドしないかぎり、この設定はPortletResponse.encodeURL()メソッドで戻されたすべてのURLに使用されます。

有効な値は、次のとおりです。

- true - (デフォルト) requiresRewriteフラグにtrueが設定されます。これは、コンシューマがリソースを書き換える必要があることを示します。

- false - requiresRewriteフラグがfalseに設定されます。これは、コンシューマがリソースを必ずしも書き換える必要がないことを示します。

com.oracle.portlet.defaultServedResourceRequiesWsrpRewrite

ポートレットが提供するリソースのリソースURLを生成するときに使用する、デフォルトのWSRP requiresRewriteフラグを指定します。

この設定はポートレットで作成されたすべてのリソースURLに使用されます。ただし、リソースURLのメソッドwrite()またはtoString()の呼出し時にresourceRequiresRewritingリクエスト属性の有無でオーバーライドされます。この設定は、提供されたリソースのレスポンスにWSRP requiresRewritingフラグを指定するためにも使用されます。ただし、ポートレットのserveResource()メソッドの復帰時にresourceRequiresRewritingリクエスト属性の有無でオーバーライドされることがあります。

有効な値は、次のとおりです。

- true - requiresRewrite URLフラグおよびrequiresRewritingレスポンス・フラグがtrueに設定されます。これは、コンシューマがリソースを書き換える必要があることを示します。

- false - requiresRewrite URLフラグおよびrequiresRewritingレスポンス・フラグがfalseに設定されます。これは、コンシューマがリソースを必ずしも書き込む必要がないことを示します。ただし、コンシューマがURLを書き換える可能性はあります。

これを指定していない場合、requiresRewrite URLフラグに値が指定されなくなり、serveResource操作のrequiresRewritingレスポンス・フラグはレスポンスのMIMEタイプに基づいて設定されます。

com.oracle.portlet.disallowResourceServing

ポートレットによるリソースの提供を許可するかどうかを指定します。これは、JSR 168ポートレットを286コンテナで実行する場合に役立ちます。javax.portlet.GenericPortletを拡張しているJSR 168ポートレットは、自動的にJSR 286の機能を継承するため、リソースIDに関連する名前の付いたWebアプリケーション内のファイルにリソース・リクエストを自動的に転送します。このことが、潜在的なセキュリティ問題になります。同様のセキュリティ上の理由から、リソースを提供しないJSR 286ポートレットは、リソースの提供を禁止することで最も安全になります。

有効な値は、次のとおりです。

- true - ポートレットにリソースの提供を許可しません。

- false - ポートレットにリソースの提供を許可します。

com.oracle.portlet.escapeXmlEncodeUrls

JSR 286コンテナのPortletResponse.encodeURL()メソッドで生成されるURLを、XMLエンコードするかどうかを指定します。

有効な値は、次のとおりです。

- true - PortletResponse.encodeURL()メソッドで生成されるURLは、XMLエンコードされます。

- false - (デフォルト) PortletResponse.encodeURL()メソッドで生成されるURLは、XMLエンコードされません。

com.oracle.portlet.eventPayloadsXmlType

イベントがWSRPを通じて送信されたされたときに、JAXBバインディング可能なJavaオブジェクトのイベント・ペイロードに対して、オプションのXMLスキーマ・タイプを指定します。これは、複数値のランタイム・オプションです。各値は、Javaクラス名とQNameのペアで構成し、コロン(:)で区切ります。QNameには、QNameの標準Java文字列表現({namespace}localpart)を使用する必要があります。指定した各値に対して、XMLスキーマ・タイプとしてQNameが使用され、オブジェクトがXMLにマーシャリングされた後で、指定したJavaオブジェクト・タイプのWSRPイベント・ペイロードに注釈を付けます。これは、複数のプロデューサにあるポートレット間で通信するイベントを使用するときに役立ちます。

com.oracle.portlet.excludedActionScopeRequestAttributes

これは、各値が正規表現の複数値プロパティです。com.oracle.portlet.externalScopeRequestAttributesコンテナ・ランタイム・オプションに定義された正規表現と一致する値を含むリクエスト・パラメータに加えて、正規表現と一致するリクエスト属性は、javax.portlet.actionScopedRequestAttributesコンテナ・ランタイム・オプションが使用されている場合、アクション・スコープ指定リクエスト属性としては保存されません。

com.oracle.portlet.externalScopeRequestAttributes

これは、各値が正規表現の複数値プロパティです。正規表現のいずれかと一致するリクエスト属性は、ポートレット・スコープの外側にあるとみなされ、その基になるポータル・リクエストで共有されます。

javax.portlet.actionScopedRequestAttributesオプションを使用すると、externalScopeRequestAttributesで宣言された正規表現と一致するリクエスト属性は、アクション・スコープのリクエスト属性に保存されなくなります。

com.oracle.portlet.importCssToIFrame

ポータル・コンシューマに対して、IFRAMEポートレットにCSSファイルをインポートする必要があるかどうかを指定します。

有効な値は、次のとおりです。

- false: (デフォルト)何も実行されません。

- true: コンシューマからのCSSファイルがIFRAMEポートレットに適用されます。

com.oracle.portlet.minimumWsrpVersion

ポートレットの動作に必要なWSRPの最小バージョンを指定します。指定した値よりも小さいWSRPバージョンが使用されている場合、WSRP GetServiceDescription、GetPortletDescription、GetMarkupなどのWSRPレスポンスにポートレットが含まれなくなります。

有効な値は、次のとおりです。

- 1

- 2

com.oracle.portlet.offerPortletOverWsrp

WSRPプロデューサのサービスの説明にポートレットを提示するかどうかを指定します。

JSR 168/286ポートレットを参照する.portletファイルのofferRemote設定は、このコンテナ・ランタイム・オプションをオーバライドします。

有効な値は、次のとおりです。

- true - (デフォルト)ポートレットは、WSRPプロデューサのサービスの説明に提示されます。

- false - ポートレットは、サービスの説明に含まれません。

すべての指定を省略すると、WEB-INF/producer-config.xmlで指定されたデフォルト値が使用されます。

com.oracle.portlet.portalInfoProvider

com.bea.portlet.container.IPortalInfoインタフェースのオプション実装のクラス名を指定します。この実装では、JSR 286コンテナのrequest.getPortalContext().getPortalInfo()から返される値を定義します。デフォルトの実装は、プロデューサ/ローカル・サーバーの名前とバージョンを返しますが、カスタムの実装はWSRPシナリオでコンシューマ・サーバー情報とプロデューサ・サーバー情報の両方を渡すことがあります

com.oracle.portlet.redirectAfterAction

JSR 286コンテナは、processActionが実行された後で(また、イベントが処理された後で)、ブラウザにポータルのレンダラURLへのリダイレクトを送信して、結果のページをリロードしても別のprocessActionにならないようにします。

有効な値は、次のとおりです。

- true - ポートレット・アクションの終了ごとに、リダイレクトが発行されます。

- false - ポートレット・アクションの後に、リダイレクトが自動的には発行されません。

com.oracle.portlet.requireIFrame

IFRAME内でポートレットをレンダリングする必要があるかどうかを指定します。

有効な値は、次のとおりです。

- true - ポートレットをIFRAME内でレンダリングします。

- false - ポートレットをIFRAME内でレンダリングすることを強制しません。

com.oracle.portlet.streamingOptimized

ポートレットがストリーミング・モードでの実行に最適化されていることを示します。これにより、パフォーマンスが向上することがあります。

有効な値は、次のとおりです。

- true - ストリーミング・モードでの実行に向けてポートレットが最適化されています。

- false - ストリーミング・モードでの実行に向けてポートレットは最適化されていません。

com.oracle.portlet.suppressWsrpOptimisticRender

ポートレットがWSRPで実行されている場合、アクションとイベント(または、そのどちらか)のライフサイクル終了後に、ポートレットのオプティミスティック・レンダリングを抑制します。

有効な値は、次のとおりです。

- true - オプティミスティック・レンダリングが常に抑制されます。

- false - オプティミスティック・レンダリングが実行される場合があります。

com.oracle.portlet.trapWsrpRenderExceptions

レンダリング時にJSR 286コンテナがWSRP SOAP障害として例外を送信する必要があるのか、そのかわりにポートレット・マークアップの例外メッセージをレンダリングする必要があるのかを指定します。

有効な値は、次のとおりです。

- true - (デフォルト)例外はSOAP障害として送信されません。そのかわりにレンダリングされた例外スタック・トレースとして送信されます。

- false - レンダリング時にポートレットが生成した例外は、SOAP障害として扱われます。

com.oracle.portlet.trimEncodeUrls

JSR 286コンテナでPortletResponse.encodeURL()メソッドに渡すURLから空白をトリミングする必要があるかどうかを指定します。

有効な値は、次のとおりです。

- true - (デフォルト) PortletResponse.encodeURL()に渡されるURLから先頭と末尾の空白がトリミングされます。

- false - PortletResponse.encodeURL()に渡されるURLから空白はトリミングされません。

com.oracle.portlet.useWsrpUserContextForUserAuthentication

PortletRequestのメソッドgetRemoteUser()、getUserPrincipal()およびisUserInRole()がWSRPユーザー・コンテキスト情報と標準J2EEセキュリティのどちらに基づくかを指定します。

有効な値は、次のとおりです。

- true - ポートレットがWSRPで実行される場合、ユーザー情報はWSRPユーザー・コンテキストに基づきます。これはセキュリティ上の問題になることがあるため、このオプションの使用には十分な注意が必要です。

- false - (または、ポートレットがWSRPで実行されていない場合)ユーザー情報は、J2EE認証済ユーザーに基づきます。

com.oracle.portlet.wsrpHeaderMode

ポートレットがWSRPリモート・ポートレットとしてレンダリングされている場合にのみ使用します。ヘッダーまたはCookieの目的の最終宛先についてのWSRPコンシューマへのヒントとして、CookieとヘッダーがWSRP SOAPレスポンスのどこに含まれているかを示します。

ポートレットがローカルに(WSRPを経由しないで)実行されている場合、ポートレットで設定するヘッダーとCookieは、常にクライアントに向けられていると仮定されます。このコンテナ・ランタイム・オプションを設定することで、PortletRequest属性のcom.oracle.portlet.wsrpHeaderModeにデフォルト値を設定することになります。この値は、実行時にヘッダーごとにポートレットによりオーバーライドされる可能性があります。

有効な値は、次のとおりです。

- client - ポートレットで設定されたヘッダーとCookieは、クライアント(たとえば、ブラウザ)に向けてリダイレクトされます。

- consumer - ポートレットで設定されるヘッダーとCookieは、コンシューマに向けてリダイレクトされ、クライアントには渡されません。

- both - ポートレットで設定されるヘッダーとCookieは、クライアントとコンシューマに向けてリダイレクトされます。

設定されていない場合、ポートレット・コンテナは、WEB-INF/wsrp-producer-config.xmlファイルで指定されている、プロデューサのデフォルト値を仮定します。

com.oracle.portlet.wsrpLegacyPortletHandle

レガシーWSRPポートレット・ハンドルの仕様をポートレットで使用できるようにします。このハンドルは、Webアプリケーション内で一意にする必要があります。これは、従来のポートレットの位置ベースのWSRPポートレット・ハンドルを使用するWebCenter Portalコンシューマとの後方互換性を維持するために役立ちます。

指定されていると、レガシー・ポートレット・ハンドルがポートレットのレガシー・ハンドル拡張としてWSRP serviceDescriptionで公開され、コンシューマはレガシー・ポートレット・ハンドルを使用してポートレットにアクセスできるようになります。ただし、そのポートレットが、レガシー・ポートレット・ハンドルでWSRP serviceDescriptionに公開されることはありません。

com.oracle.portlet.wsrpPortletHandle

WSRPポートレット・ハンドルの仕様をポートレットで使用できるようにします。このハンドルは、Webアプリケーション内で一意にする必要があります。

oracle.portlet.bridge.adf.raiseUndeclaredContextualEvents

Oracle JSF Portlet Bridgeで、portlet.xmlファイル内で対応するポートレット・イベントが宣言されていないADFmイベントを発生できるようにします。

有効な値は、次のとおりです。

- true - 発生したADFmイベントは、ポートレット・イベントとして転送されます。

- false - ポートレット・イベントの宣言に対応するイベントのみが転送されます。

59.3.4.2 アプリケーション内のすべてのポートレットに対するコンテナ・ランタイム・オプションの設定

コンテナ・ランタイム・オプションをアプリケーション・レベルで設定すると、その設定はアプリケーション内のすべてのポートレットに作用します。

アプリケーションレベルのコンテナ・ランタイム・オプションを設定するには:

1. portlet.xmlファイルの概要エディタを開きます。
詳細は、第59.3.1項「ポートレット・デプロイメント・ディスクリプタ・ファイルの編集方法」を参照してください。

2. 「アプリケーション」タブをクリックします(必要な場合)。

3. 「コンテナ・ランタイム・オプション」セクションを開きます(必要な場合)。

4. 「コンテナ・ランタイム・オプションの追加」アイコンをクリックして、選択可能なオプションのリストを表示します。
このリストには、WebCenter Portalのポートレット・コンテナ(表59-1を参照)でサポートされているすべてのコンテナ・ランタイム・オプションが含まれています。

リストにない追加のコンテナ・ランタイム・オプションをサポートする別のポートレット・コンテナを使用する場合は、「<カスタマイズ>」を選択して、「名前」フィールドにオプションの名前を入力します。

ポートレット・コンテナでサポートされていないコンテナ・ランタイム・オプションを指定すると、そのオプションは無視されます。

5. 「値」フィールドに、コンテナ・ランタイム・オプションの値を入力します。
コンテナ・ランタイム・オプションは、portlet.xmlコードに追加されます。次に例を示します。

<container-runtime-option>
<name>com.oracle.portlet.requireIFrame</name>
<value>true</value>
</containter-runtime-option>

6. portlet.xmlファイルを保存します。

59.3.4.3 個々のポートレットに対するコンテナ・ランタイム・オプションの設定

個別のポートレット・レベルでコンテナ・ランタイム・オプションを設定すると、アプリケーション全体の設定をオーバーライドできます。

ポートレットレベルのコンテナ・ランタイム・オプションを設定するには:

1. portlet.xmlファイルの概要エディタを開きます。
詳細は、第59.3.1項「ポートレット・デプロイメント・ディスクリプタ・ファイルの編集方法」を参照してください。

2. 「ポートレット」タブをクリックします(必要な場合)。

3. 「詳細」タブをクリックします。

4. 「コンテナ・ランタイム・オプションの追加」アイコンをクリックして、選択可能なオプションのリストを表示します。
このリストには、WebCenter Portalのポートレット・コンテナ(表59-1を参照)でサポートされているすべてのコンテナ・ランタイム・オプションが含まれています。

リストにない追加のコンテナ・ランタイム・オプションをサポートする別のポートレット・コンテナを使用する場合は、「<カスタマイズ>」を選択して、「名前」フィールドにオプションの名前を入力します。

ポートレット・コンテナでサポートされていないコンテナ・ランタイム・オプションを指定すると、そのオプションは無視されます。

5. 「値」フィールドに、コンテナ・ランタイム・オプションの値を入力します。
コンテナ・ランタイム・オプションは、portlet.xmlコードに追加されます。次に例を示します。

<container-runtime-option>
<name>com.oracle.portlet.requireIFrame</name>
<value>false</value>
</containter-runtime-option>

6. portlet.xmlファイルを保存します。

59.3.5 JSR 286ポートレットでのパブリック・レンダラ・パラメータの使用方法

パブリック・レンダラ・パラメータを使用すると、複数のポートレットでパラメータ値を共有できるようになり、ポートレット間通信が可能になります。

たとえば、地図ポートレットと天気概況ポートレットが、どちらもZipcodeパブリック・レンダラ・パラメータを使用するように構成されていると、地図ポートレットに郵便番号を入力することで、天気概況ポートレットの同じパラメータの値も更新されます。

ポートレットでサポートされるパブリック・レンダラ・パラメータは、ポートレット・デプロイメント・ディスクリプタ・ファイル(portlet.xml)のアプリケーション・セクションで宣言する必要があります。このように、アプリケーション・レベルで定義したパブリック・レンダラ・パラメータは、アプリケーション内のすべてのポートレットで使用できるようになります。

その後で、アプリケーション内の個別のポートレットでは、それらのパブリック・レンダラ・パラメータから使用する必要のあるものを指定できます。

パブリック・レンダラ・パラメータを後述するように宣言して定義すると、自動的にポートレット間通信が始まります。そのためのコーディングは必要ありません。詳細は、第63.5.3項「ポートレット間通信に関する必知事項」を参照してください。

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

- 第59.3.5.1項「アプリケーション・レベルでのパブリック・レンダラ・パラメータの宣言」

- 第59.3.5.2項「ポートレットごとのパブリック・レンダラ・パラメータの定義」

- 第59.3.5.3項「例: パブリック・レンダラ・パラメータ」

パブリック・レンダラ・パラメータの詳細と実装方法は、次の場所にあるJSR 286の仕様を参照してください。

http://jcp.org/en/jsr/detail?id=286

59.3.5.1 アプリケーション・レベルでのパブリック・レンダラ・パラメータの宣言

パブリック・レンダラ・パラメータをポートレットで使用できるようにするには、最初に、ポートレット・デプロイメント・ディスクリプタ・ファイル(portlet.xml)のアプリケーション・セクションで、このパラメータを宣言する必要があります。

アプリケーション・レベルでパブリック・レンダラ・パラメータを定義するには:

1. portlet.xmlファイルの概要エディタを開きます。
詳細は、第59.3.1項「ポートレット・デプロイメント・ディスクリプタ・ファイルの編集方法」を参照してください。

2. 「パラメータ」タブをクリックします。

3. 「追加」アイコンをクリックして、新しいパブリック・レンダラ・パラメータを作成します。

4. ドロップダウン・リストから、パラメータに完全修飾名(QName)を指定するか、名前のローカル・パートのみを指定するかを選択します。

- 修飾名 - パラメータのネームスペースとローカル名を指定することで、QNameは、パブリック・レンダラ・パラメータをアプリケーション間で一意に特定します。ポートレット・コード内では、識別子でパブリック・レンダラ・パラメータにアクセスします。この識別子により、アプリケーション内でパラメータを一意に識別します。ただし、一般に、ページには複数のポートレットが収容されていて、それらが異なるアプリケーションから取得されている可能性があります。QNamesを使用することで、あるポートレットのパブリック・レンダラ・パラメータが、ページ上の別のポートレットに意図せず干渉することがなくなります。これらのポートレットの取得先は問題になりません。

- 未修飾名 - パラメータのネームスペースが、アプリケーションのデフォルト・ネームスペースと同じ場合は、パラメータの定義時に未修飾名を指定することで、ネームスペースを省略できます。アプリケーションのデフォルト・ネームスペースが定義されていない場合、未修飾名のパラメータにはXMLのデフォルト・ネームスペースが使用されます。

ヒント:

アプリケーションのデフォルト・ネームスペースが定義されているかどうかを確認するには、「アプリケーション」タブをクリックして、「デフォルト・ネームスペース」フィールドに値が入力されているかどうかを調べます。

5. パラメータの名前を入力します。

- 「修飾名」を選択した場合 - 「ネームスペース」フィールドにパラメータのネームスペースを入力し、「名前」フィールドにパラメータ名のローカル・パートを入力します。

- 「未修飾名」を選択した場合 - 「名前」フィールドに、パラメータ名のローカル・パートを入力します。このパラメータには、パラメータのネームスペースとしてアプリケーションのデフォルト・ネームスペースが使用されます(アプリケーションにデフォルト・ネームスペースが定義されていない場合は、XMLのデフォルト・ネームスペースが使用されます)。

6. 「識別子」フィールドに、パブリック・レンダラ・パラメータをアプリケーション内で識別するための名前を入力します。
この識別子は、アプリケーション内で一意にする必要があります。また、この識別子は、ポートレットとポートレットのコード内でパラメータにアクセスする際に、パラメータを識別するために使用されます。識別子を使用することで、ポートレット開発者は、パラメータの完全修飾名を認識する必要がなくなります。完全修飾名よりも単純なアプリケーション固有の識別子を知っていればよいことになります。

7. 「説明」フィールドに、パブリック・レンダラ・パラメータの説明を入力します。説明には、このパラメータをポートレットに使用する開発者が、その使用方法を判断できる情報を指定する必要があります。

8. (オプション)「別名」パネルでは、別名のリストを指定できます。これらの別名により、異なるQNameが付いていても別のパブリック・レンダラ・パラメータの値を受け取れるようになります。

1. 「作成」アイコンをクリックして、パラメータの新しい別名を作成します。

2. 「ネームスペース」フィールドに、この別名に使用するパラメータのネームスペースを入力します。

3. 「名前」フィールドに、この別名に使用するパラメータのローカル・パートを入力します。

ヒント:

パブリック・レンダラ・パラメータの別名を作成するときには、相互互換の別名を設定するようにしてください。つまり、ポートレットAのパラメータがポートレットBのパラメータに対応する別名を持つ場合は、可能であれば、ポートレットBのパラメータにもポートレットAのパラメータに対応する別名を作成するようにします。

9. パブリック・レンダラ・パラメータは、次に示すように、portlet.xmlファイルのアプリケーション定義セクションに追加されます。

<portlet-app ...>
<portlet>...</portlet>
<portlet>...</portlet>
...
<public-render-parameter>
<description>Parameter for zip code</description>
<identifier>Zip</identifier>
<qname xmlns:x="http://example.com/params">x:Zip</qname>
<alias xmlns:x="http://example.com/params">x:ZipCode</alias>
</public-render-parameter>
...
</portlet-app>

10. portlet.xmlファイルを保存します。

59.3.5.2 ポートレットごとのパブリック・レンダラ・パラメータの定義

あるポートレットでパブリック・レンダラ・パラメータをサポートする必要がある場合は、そのポートレットにパラメータを追加します。

ポートレットにパブリック・レンダラ・パラメータを追加するには:

1. portlet.xmlファイルの概要エディタを開きます。
詳細は、第59.3.1項「ポートレット・デプロイメント・ディスクリプタ・ファイルの編集方法」を参照してください。

2. ポートレット・プロデューサ・アプリケーション内でパブリック・レンダラ・パラメータを定義していない場合は、この定義を先に実行しておく必要があります。
詳細は、第59.3.5.1項「アプリケーション・レベルでのパブリック・レンダラ・パラメータの宣言」を参照してください。

3. 「ポートレット」タブをクリックして、パブリック・レンダラ・パラメータを使用するポートレットを選択します。

4. 「パラメータ」タブをクリックします。
「イベントの公開中」パネルの「使用可能」リストに、アプリケーションに定義されているすべてのポートレット・イベントが示されます。

5. 「パラメータ」タブをクリックします。
「パブリック・レンダラ・パラメータ」パネルの「使用可能」リストには、アプリケーションに定義されているすべてのパブリック・レンダラ・パラメータが示されます。

6. ポートレットで使用するパブリック・レンダラ・パラメータを選択し、「追加」アイコンをクリックして、そのパラメータを「選択済」リストに移動します。
これにより、次に示すように、パブリック・レンダラ・パラメータがportlet.xmlのポートレット定義に追加されます。

<portlet-app ...>
<portlet id="1234567890">
...
<supported-public-render-parameter>Zip</supported-public-render-parameter>
...
</portlet>
...
<public-render-parameter>
<identifier>Zip</identifier>
<name>Zip</name>
</public-render-parameter>
...
</portlet-app>

7. portlet.xmlファイルを保存します。

8. この時点で、このパブリック・レンダラ・パラメータはポートレットのコード内で使用できるようになります。

59.3.5.3 例: パブリック・レンダラ・パラメータ

次の例では、パブリック・レンダラ・パラメータを使用して、異なる名前のパラメータを使用している2つのポートレットの動作をリンクする方法を示しています。この例では、パブリック・レンダラ・パラメータの更新を可能にする汎用パラメータ・フォーム・ポートレットを取り上げて、どのようにして株価をレンダリングする株価ポートレットにそれをリンクして、パブリック・レンダラ・パラメータから株式記号を取得できるかを示します。パラメータ・フォーム・ポートレットのパラメータの一般名(parameter1)は、株価ポートレットのパラメータ名(stocksymbol)と一致しないため、株価ポートレットの開発者は、この2つのパラメータ間をリンクする別名を使用することになります。

例59-2は、パラメータ・フォーム・ポートレットを含むポートレット・プロデューサ・アプリケーションのportlet.xmlファイルの抜粋部分を示しています。ポートレット・プロデューサ・アプリケーションでは、パラメータ・フォーム・ポートレットでサポートするパブリック・レンダラ・パラメータ(parameter1)を定義します。

例59-2 パラメータ・フォーム・ポートレットのパラメータ定義

<portlet-app ...>
<portlet id="1234567890">
...
<supported-public-render-parameter>
parameter1
</supported-public-render-parameter>
...
</portlet>
...
<public-render-parameter>
<description xml:lang="en">First parameter set by portlet</description>
<identifier>parameter1</identifier>
<qname xmlns:op="http://xmlns.oracle.com/portlet/oracle-portlet-app">
op:parameter1
</qname>
</public-render-parameter>
...
</portlet-app>

パラメータ・フォーム・ポートレットのコードでは、このポートレットに値が入力されたときに、parameter1ポートレットの値を設定します(例59-3)。

例59-3 パラメータ・フォーム・ポートレットのパラメータ処理

public void processAction(ActionRequest request,
ActionResponse actionResponse)
throws PortletException, IOException
{
//
//  Read the new parameter value posted in the portlet form
//
String param1 = actionResponse.getParameter("form_param1");

//
// Set the new parameter values. These will be intepreted by the
// container as public render parameters as the names match the names
// of the declared parameters.
//
actionResponse.setRenderParameter("parameter1", param1);
}

例59-4は、株価ポートレットを含むポートレット・プロデューサ・アプリケーションのportlet.xmlファイルの抜粋部分を示しています。このポートレット・プロデューサ・アプリケーションでは、株価ポートレットでサポートされているパブリック・レンダラ・パラメータ(stocksymbol)も定義しています。パラメータ・フォーム・ポートレットのパラメータとリンクするように、stocksymbolパラメータに、parameter1という別名を追加します。

例59-4 株価ポートレットのパラメータ定義

<portlet-app ...>
<portlet>
...
<supported-public-render-parameter>
stocksymbol
</supported-public-render-parameter>
...
</portlet>
...
<public-render-parameter>
<description xml:lang="en">The stock symbol</description>
<identifier>stocksymbol</identifier>
<qname xmlns:s="http://www.oracle.com/stocks">s:stocksymbol</qname>
<!-- Alias matches the Parameter Form portlet's first parameter name -->
<alias xmlns:op="http://xmlns.oracle.com/portlet/oracle-portlet-app">
op:parameter1
</alias>
</public-render-parameter>
...
</portlet-app>

株価ポートレットのコードでは、パラメータ・フォーム・ポートレットでポストされたパブリック・レンダラ・パラメータの値を読み取ります(例59-5)。

例59-5 株価ポートレットのパラメータ処理

public void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException
{
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();

// Retrieve any values for the public render parameter.
// The parameter is looked up in the request using its identifier in portlet.xml
// (not it's name or alias).
String symbol = request.getParameter("stocksymbol");
...
}

これらの2つのポートレットが同じページにドロップされると、相互に自動的にリンクされます。パラメータ・フォーム・ポートレットの最初のパラメータ・フィールドに値を入力すると、その新しい値で株価ポートレットが更新されるようになります。

59.3.6 JSR 286ポートレットでのポートレット・イベントの使用方法

ポートレット・イベントとは、ポートレットの外部で行われたアクション(たとえば、そのポートレットを含むページで実行されたアクションや同じページ上の別のポートレットで実行されたアクション)に反応できるようにすることで、ポートレットのポートレット間通信を可能にするJSR 286の機能です。ポートレット・イベントは、ポートレットがそれ自体のイベントをトリガーすることでイベントに応答し、それがそのページ上の他のポートレットに影響を与えるようにカスケードできます。

ポートレットでサポートするポートレット・イベントは、ポートレット・デプロイメント・ディスクリプタ・ファイル(portlet.xml)のアプリケーション・セクションで宣言する必要があります。このように、アプリケーション・レベルで定義したポートレット・イベントは、アプリケーション内のすべてのポートレットで使用できるようになります。

その後で、アプリケーション内の個別のポートレットで、それらのポートレット・イベントから使用する必要のあるものを指定できます。ポートレットでは、受信を目的とする処理イベントというイベントと、ポートレットがトリガーする公開イベントというイベントを宣言できます。

ポートレット・イベントを後述するように宣言して定義すると、自動的にポートレット間通信が始まります。そのためのコーディングは必要ありません。詳細は、第63.5.3項「ポートレット間通信に関する必知事項」を参照してください。

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

- 第59.3.6.1項「アプリケーション・レベルでのポートレット・イベントの宣言」

- 第59.3.6.2項「ポートレットごとの処理イベントの定義」

- 第59.3.6.3項「ポートレットごとの公開イベントの定義」

- 第59.3.6.4項「例: ポートレット・イベント」

ポートレット・イベントの詳細と実装方法は、次の場所にあるJSR 286の仕様を参照してください。

http://jcp.org/en/jsr/detail?id=286

59.3.6.1 アプリケーション・レベルでのポートレット・イベントの宣言

ポートレット・イベントをポートレットで使用できるようにするには、最初に、ポートレット・デプロイメント・ディスクリプタ・ファイル(portlet.xml)のアプリケーション・セクションで、ポートレット・イベントを宣言する必要があります。

アプリケーション・レベルでポートレット・イベントを定義するには:

1. portlet.xmlファイルの概要エディタを開きます。
詳細は、第59.3.1項「ポートレット・デプロイメント・ディスクリプタ・ファイルの編集方法」を参照してください。

2. 「イベント」タブをクリックします。

3. 「追加」アイコンをクリックして、新しいポートレット・イベントを作成します。

4. ドロップダウン・リストから、ポートレット・イベントに完全修飾名(QName)を指定するか、名前のローカル・パートのみを指定するかを選択します。

- 修飾名 - イベントのネームスペースとローカル名を指定することで、QNameは、ポートレット・イベントをアプリケーション間で一意に特定します。一般に、ページには複数のポートレットが収容されていて、それらが異なるアプリケーションに属していることがあります。QNamesを使用することで、あるポートレットのポートレット・イベントが、ページ上の別のポートレットに意図せず干渉することがなくなります。これらのポートレットの取得先は問題になりません。

- 未修飾名 - ポートレット・イベントのネームスペースが、アプリケーションのデフォルト・ネームスペースと同じ場合は、このイベントの定義時に未修飾名を指定することで、ネームスペースを省略できます。アプリケーションのデフォルト・ネームスペースが定義されていない場合、未修飾名のポートレット・イベントにはXMLのデフォルト・ネームスペースが使用されます。

ヒント:

アプリケーションのデフォルト・ネームスペースが定義されているかどうかを確認するには、「アプリケーション」タブをクリックして、「デフォルト・ネームスペース」フィールドに値が入力されているかどうかを調べます。

5. ポートレット・イベントの名前を入力します。

- 「修飾名」を選択した場合 - 「ネームスペース」フィールドにポータル・イベントのネームスペースを入力し、「名前」フィールドにイベント名のローカル・パートを入力します。

- 「未修飾名」を選択した場合 - 「名前」フィールドに、ポータル・イベント名のローカル・パートを入力します。このイベントには、イベントのネームスペースとしてアプリケーションのデフォルト・ネームスペースが使用されます(アプリケーションにデフォルト・ネームスペースが定義されていない場合は、XMLのデフォルト・ネームスペースが使用されます)。

6. 「ペイロード・タイプ」フィールドに、ポートレット・イベントでサポートするペイロードのデータ・タイプを入力します。または、そのデータ・タイプを参照します。

7. 「説明」フィールドに、ポートレット・イベントの説明を入力します。

8. (オプション)「別名」パネルでは、別名のリストを指定できます。これらの別名により、ポートレットで定義されたものと異なるQNameが付いていてもポートレット・イベントを認識できるようになります。

1. 「作成」アイコンをクリックして、ポートレット・イベントの新しい別名を作成します。

2. 「ネームスペース」フィールドに、この別名に使用するポートレット・イベントのネームスペースを入力します。

3. 「名前」フィールドに、この別名に使用するポートレット・イベントのローカル・パートを入力します。

9. ポートレット・イベントは、次に示すように、portlet.xmlファイルのアプリケーション定義セクションに追加されます。

<portlet-app ...>
<portlet>...</portlet>
<portlet>...</portlet>
...
<event-definition id="latLong">
<qname xmlns:x="http://xmlns.oracle.com/portlet/EventSample">
x:latLong
</qname>
<value-type>portlet.LatLong</value-type>
</event-definition>
...
</portlet-app>

10. portlet.xmlファイルを保存します。

59.3.6.2 ポートレットごとの処理イベントの定義

あるポートレットで特定のポートレット・イベントをリスニングする必要がある場合、そのイベントは処理イベントとして定義します。

ポートレットに処理イベントを追加するには:

1. portlet.xmlファイルの概要エディタを開きます。
詳細は、第59.3.1項「ポートレット・デプロイメント・ディスクリプタ・ファイルの編集方法」を参照してください。

2. ポートレット・プロデューサ・アプリケーション内でポートレット・イベントを定義していない場合は、この定義を先に実行しておく必要があります。
詳細は、第59.3.6.1項「アプリケーション・レベルでのポートレット・イベントの宣言」を参照してください。

3. 「ポートレット」タブをクリックして、ポートレット・イベントを使用するポートレットを選択します。

4. 「イベント」タブをクリックします。
「イベントの処理中」パネルの「使用可能」リストには、アプリケーションに定義されているすべてのポートレット・イベントが示されます。

5. ポートレットで使用するポートレット・イベントを選択し、「追加」アイコンをクリックして、そのイベントを「選択済」リストに移動します。
これにより、次に示すように、ポータル・イベントが処理イベントとしてportlet.xmlのポートレット定義に追加されます。

<portlet-app ...>
<portlet id="map">
...
<supported-processing-event id="latLong">
<qname xmlns:x="http://xmlns.oracle.com/portlet/EventSample">
x:latLong
</qname>
</supported-processing-event>
...
</portlet>
...
<event-definition id="latLong">
<qname xmlns:x="http://xmlns.oracle.com/portlet/EventSample">
x:latLong
</qname>
<value-type>portlet.LatLong</value-type>
</event-definition>
...
</portlet-app>

6. portlet.xmlファイルを保存します。
この時点で、このポートレット・イベントは、ポートレットのコード内で使用できるようになります。

59.3.6.3 ポートレットごとの公開イベントの定義

あるポートレットで特定のポートレット・イベントをトリガーする必要がある場合、そのイベントは公開イベントとして定義します。

ポートレットに公開イベントを追加するには:

1. portlet.xmlファイルの概要エディタを開きます。
詳細は、第59.3.1項「ポートレット・デプロイメント・ディスクリプタ・ファイルの編集方法」を参照してください。

2. ポートレット・プロデューサ・アプリケーション内でポートレット・イベントを定義していない場合は、この定義を先に実行しておく必要があります。
詳細は、第59.3.6.3項「ポートレットごとの公開イベントの定義」を参照してください。

3. 「ポートレット」タブをクリックして、ポートレット・イベントを使用するポートレットを選択します。

4. 「イベント」タブをクリックします。
「イベントの公開中」パネルの「使用可能」リストに、アプリケーションに定義されているすべてのポートレット・イベントが示されます。

5. ポートレットで使用するポートレット・イベントを選択し、「追加」アイコンをクリックして、そのイベントを「選択済」リストに移動します。
これにより、次に示すように、ポータル・イベントが公開イベントとしてportlet.xmlのポートレット定義に追加されます。

<portlet-app ...>
<portlet id="locations">
...
<supported-publishing-event>
<qname xmlns:x="http://xmlns.oracle.com/portlet/EventSample">
x:latLong
<qname>
</supported-publishing-event>
...
</portlet>
...
<event-definition id="latLong">
<qname xmlns:x="http://xmlns.oracle.com/portlet/EventSample">
x:latLong
</qname>
<value-type>portlet.LatLong</value-type>
</event-definition>
...
</portlet-app>

6. portlet.xmlファイルを保存します。
この時点で、このポートレット・イベントは、ポートレットのコード内で使用できるようになります。

59.3.6.4 例: ポートレット・イベント

次の例では、あるポートレットのアクションが同じページ上の別のポートレットに作用するために使用するポートレット・イベントの使用方法について説明しています。この例では、ある企業の様々なオフィスの地理的な場所を一覧表示する、部署の所在地ポートレットというポートレットを使用します。この例では、そのポートレットを別のポートレット(地図ポートレット)とリンクする方法を示します。地図ポートレットは、部署の所在地ポートレットで選択した場所のGoogleマップを表示します。

例59-6は、これら2つのポートレットを含むポートレット・プロデューサ・アプリケーションのportlet.xmlファイルの抜粋部分を示しています。ポートレット・プロデューサ・アプリケーションでは、これら2つのポートレットでサポートするポートレット・イベント(latLong)を定義します。イベントのペイロードは、1つの場所の緯度と経度をカプセル化するオブジェクトです。

例59-6 ポートレット・イベント定義

<event-definition id="latLong">
<qname xmlns:x="http://xmlns.oracle.com/portlet/EventSample">x:latLong</qname>
<value-type>portlet.LatLong</value-type>
</event-definition>

例59-7に、latLongイベントを公開イベントとして使用する部署の所在地ポートレットを示します。これは、特定の状況下でイベントを発生します。

例59-7 所在地ポートレットの公開イベント定義

<portlet id="locations">
...
<supported-publishing-event>
<qname xmlns:x="http://xmlns.oracle.com/portlet/EventSample">x:latLong<qname>
</supported-publishing-event>
...
</portlet>

部署の所在地ポートレットでは、このポートレット内で場所が選択されたときに、processActionメソッドでlatLongイベントを発生します(例59-8)。さらに、そのイベントのペイロードに、選択された場所の緯度と経度を設定します。

例59-8 部署の所在地ポートレットのイベント処理

public void processAction(ActionRequest request, ActionResponse response)
throws PortletException
{
String locationId = request.getParameter("locationId");
Location location = getLocation(Integer.parseInt(locationId));

if (location != null)
{
// QName matches the event declared as a supported-publishing-event in
// portlet.xml for this portlet.

// LatLong event used by the Map portlet.
response.setEvent(new QName("http://xmlns.oracle.com/portlet/EventSample", "latLong"),
new LatLong(location.getLatitude(), location.getLongitude()));

}
}

例59-9に、もう一方のポートレット(地図ポートレット)を示します。このポートレットもlatLongイベントを使用しますが、こちらは処理イベントとして使用します。そのため、イベントをリスニングして、ページ上の別の場所でイベントが発生したときには特定のアクションを実行することになります。

図59-9 地図ポートレットの処理イベント定義

<portlet id="map">
...
<supported-processing-event id="latLong">
<qname xmlns:x="http://xmlns.oracle.com/portlet/EventSample">x:latLong</qname>
</supported-processing-event>
...
</portlet>

地図ポートレットのprocessEventメソッドは、latLongイベントを受信し、このイベントのペイロードを使用してLAT_LONG_PARAMETERレンダリング・パラメータを設定します。このパラメータは、レンダリング時にGoogleマップに表示する場所を決定するために、ポートレットで使用されます(例59-10)。

例59-10 地図ポートレットのイベント処理

@Override
public void processEvent(EventRequest request,
EventResponse response)
throws PortletException, IOException
{
response.setRenderParameters(request);

Event event = request.getEvent();
if (event.getName().equals("latLong"))
{
response.setRenderParameter(LAT_LONG_PARAMETER, event.getValue().toString());
}
}

ヒント:

ここでは、部署の所在地ポートレットと地図ポートレットで使用されるイベントには同じ名前(latLong)が付けられています。地図ポートレットが別の名前(たとえば、geolocation)を使用してイベントをリスニングしている場合でも、次に示すように、portlet.xmlファイルでgeolocationイベントに別名を定義することで、これら2つのポートレットは自動的にリンクされるようになります。

<event-definition id="geolocation">  <qname xmlns:x="http://xmlns.oracle.com/portlet/Map">
x:geolocation
</qname>  <alias xmlns:x="http://xmlns.oracle.com/portlet/EventSample">
x:latLong
</alias>
<value-type>portlet.LatLong</value-type>
</event-definition>

ただし、自動的なリンクが機能するには、この2つのイベントのペイロード・タイプを同じにする必要があることに注意してください。

注意:

ポートレット間でイベント・ペイロードを受け渡しするには、そのイベント・ペイロードからXMLペイロードに形式変換できる必要があります。これを可能にするには、次のいずれかの条件を満たしている必要があります。

- ペイロードには、JAXBバインディングが必要です。たとえば、次に示すように、ポートレット・クラスにXmlRootElementアノテーションを追加します。

package portlet;

import java.io.Serializable;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(namespace="http://xmlns.oracle.com/portlet/EventSample")
public class LatLong implements Serializable
{
private final double _latitude;
private final double _longitude;
...

- allowEventPayloadsWithoutJAXBBindingsコンテナ・ランタイム・オプションは、portlet.xmlでtrueに設定する必要があります。
詳細は、第59.3.4項「JSR 286ポートレットのランタイム環境をカスタマイズする方法」を参照してください。

59.3.7 JSR 286ポートレットへのポートレット・プリファレンスの追加方法

ポートレット・プリファレンスを使用すると、エンド・ユーザーは、実行時にポートレットをパーソナライズまたはカスタマイズできるようになります。パーソナライズはこれらを実行するユーザーのみに表示され、他のユーザーには表示されません。カスタマイズは、ポートレットをパーソナライズしていないすべてのユーザーに表示されます。

デフォルトでは、JDeveloperのウィザードを使用してJSR 286ポートレットを作成すると、実行時にユーザーがポートレットのタイトルを変更できるポートレット・プリファレンスが作成されます。実行時にエンド・ユーザーがこれとは別の変更をポートレットに加えられるようにすために、追加のポートレット・プリファレンスを作成できます。追加のポートレット・リファレンスは、ポートレットの作成時に作成することも、ポートレットの作成後にportlet.xmlファイルを編集して作成することもできます。

次の手順では、ポートレットの作成後に、portlet.xmlファイルにポートレット・プリファレンスを追加する方法を説明します。ポートレットの作成時にポートレット・プリファレンスを追加する方法の詳細は、第59.2.1項「JSR 286 Javaポートレットの作成方法」を参照してください。

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

- 第59.3.7.1項「JSR 286ポートレットへのポートレット・プリファレンスの追加」

- 第59.3.7.2項「例: ポートレットの単純なパーソナライズ」

59.3.7.1 JSR 286ポートレットへのポートレット・プリファレンスの追加

ポートレットの動作またはコンテンツを、実行時にユーザーが変更できるようにするには、ユーザーが変更できるようにするポートレットの属性に応じたポートレット・プリファレンスを作成する必要があります。

ポートレット・プリファレンスをポートレットに追加するには:

1. portlet.xmlファイルの概要エディタを開きます。
詳細は、第59.3.1項「ポートレット・デプロイメント・ディスクリプタ・ファイルの編集方法」を参照してください。

2. 「ポートレット」タブをクリックして、ポートレット・プリファレンスを追加するポートレットを選択します。

3. 「詳細」タブをクリックします。
「プリファレンス」パネルには、そのポートレットに存在する既存のポートレット・プリファレンス(たとえば、portletTitleプリファレンス)がリストされます。

4. 「追加」アイコンをクリックして、新しいポートレット・プリファレンスを作成します。

5. 「名前」フィールドに、プリファレンスの名前を入力します。
この名前は、ポートレット内で一意である必要があります。

6. 「値」フィールドに、プリファレンスの1つ以上のデフォルト値を入力します。
複数入力するときはカンマで区切ります。

7. 「読取り専用」を選択すると、そのプリファレンス値はユーザーが変更できなくなります。
ポートレット・プリファレンスは、次に示すように、portlet.xmlファイルのアプリケーション定義セクションに追加されます。

<portlet-app ...>
<portlet>...</portlet>
<portlet>...</portlet>
...
<portlet-preference>
<name>portletTitle</name>
</portlet-preference>
<portlet-preference>
<name>myPreference</name>
<value>7</value>
</portlet-preference>
...
</portlet-app>

8. portlet.xmlファイルを保存します。
この時点で、このプリファレンスは、getPreferenceメソッドを使用することで、ポートレットのコード内で使用できるようになります。

ヒント:

プリファレンスを翻訳可能にするには、リソース・バンドル・クラスに適切なキーと値のペアを追加する必要があります。

59.3.7.2 例: ポートレットの単純なパーソナライズ

次の例では、ポートレットでの単純なパーソナライズを有効にする方法の手順を示します。

単純なパーソナライズをポートレットに追加するには:

1. JDeveloperで、ポートレット・プロデューサ・アプリケーションを作成します。このとき、デフォルト値をそのまま使用します。

2. JSR 286ポートレットを作成します。このとき、デフォルト値をそのまま使用します。

3. アプリケーション・ナビゲータで、「ポートレット」プロジェクトを開きます。

4. portlet.xmlを右クリックして、「開く」を選択します。

5. 「ポートレット」タブをクリックして、portlet1を選択します。

6. 「詳細」タブをクリックします。

7. 「追加」アイコンをクリックして、新しいポートレット・プリファレンスを作成します。

8. 「名前」フィールドに、portletContentと入力します。

9. アプリケーション・ナビゲータで、view.jspを右クリックして、「開く」を選択します。

10. ビジュアル・エディタで、「ソース」タブをクリックして、例59-11の太字で示したコードを追加して、portletContentポートレット・プリファレンスが表示されるようにします。

例59-11 view.jspのサンプル・コード

<%@ page contentType="text/html"
import="javax.portlet.*,java.util.*,Portlets.Portlet1,
Portlets.resource.Portlet1Bundle"%>
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%>

<portlet:defineObjects/>
<%
String[] str = {"Portlet Content"};
PortletPreferences prefs = renderRequest.getPreferences();
str = prefs.getValues("portletContent",str);
for (int i=0; i<str.length; i++)
{
%><%=(i<str.length-1)?str[i]+", ":str[i]%><%}%>

11. アプリケーション・ナビゲータで、edit.jspを右クリックして、「開く」を選択します。
このJSPは、フォーム・フィールド、フォーム入力フィールドおよび2つのフォーム・ボタン・フィールドで構成されています。

12. ビジュアル・エディタで、「ソース」タブをクリックして、例59-12の太字で示したコードを追加して、ユーザーがportletContentカスタマイズ・プリファレンスの値を入力するフォーム・フィールドを実装します。

例59-12 edit.jspのサンプル・コード

<%@ page contentType = "text/html; charset=windows-1252"
pageEncoding = "windows-1252"
import = "javax.portlet.*, java.util.*,
Portletenhance.Portletenhance,
Portletenhance.resource.PortletenhanceBundle"%>
@ <%@ taglib uri = "http://java.sun.com/portlet" prefix="portlet"%>
<portlet:defineObjects/>
<%
PortletPreferences prefs = renderRequest.getPreferences();
ResourceBundle res =
portletConfig.getResourceBundle(renderRequest.getLocale());
%>
<form action="<portlet:actionURL/>" method="POST">
<table border="0">
<tr>
<td width="20%">
<p class="portlet-form-field" align="right">
<%=  res.getString(PortletenhanceBundle.PORTLETCONTENT) %>
</p>
</td>
<td width="80%">
<input class="portlet-form-input-field"
type="TEXT"
name="<%= Portletenhance.PORTLETCONTENT_KEY %>"
value="<%= Portletenhance.buildValue(prefs,
Portletenhance.PORTLETCONTENT_KEY) %>"
size="20">
</td>
</tr>    <tr>
<td width="20%">
<p class="portlet-form-field" align="right">
<%=  res.getString(PortletenhanceBundle.PORTLETTITLE) %>
</p>
</td>
<td width="80%">
<input class="portlet-form-input-field"
type="TEXT"
name="<%= Portletenhance.PORTLETTITLE_KEY %>"
value="<%= prefs.getValue(Portletenhance.PORTLETTITLE_KEY,
res.getString("javax.portlet.title")) %>"
size="20">
</td>
</tr>
<%
String[] str = {"Portlet Content"};
str = prefs.getValues("portletContent",str);
%>
<tr><td width="20%">
<p class="portlet-form-field" align="right">
Content
</p>
</td><td width="80%">
<textarea rows="10" cols="60" class="portlet-form-input-field"
name="portletContent"><%
for (int i=0; i<str.length; i++)
{%><%= (i<str.length-1) ? str[i]+", " : str[i] %><%}%>
</textarea>
</td></tr>
<tr>
<td colspan="2" align="center">
<input class="portlet-form-button" type="submit"

name="<%=Portletenhance.OK_ACTION%>"

value="<%=res.getString(PortletenhanceBundle.OK_LABEL)%>">
<input class="portlet-form-button" type="submit"

name="<%=Portletenhance.APPLY_ACTION%>"

value="<%=res.getString(PortletenhanceBundle.APPLY_LABEL)%>">
</td>
</tr>
</table>
</form>

13. アプリケーション・ナビゲータで、Portlet1.javaを右クリックして、「開く」を選択します。

14. ビジュアル・エディタで、「ソース」タブをクリックして、次に示す2行のコード(太字で示しています)をprocessActionメソッドに追加します。

// Save the preferences.
PortletPreferences prefs = request.getPreferences();
String param = request.getParameter(PORTLETTITLE_KEY);
prefs.setValues(PORTLETTITLE_KEY, buildValueArray(param));
String contentParam = request.getParameter("portletContent");
if (contentParam != null)
{
prefs.setValues("portletContent", buildValueArray(contentParam));
}
prefs.store();

このポートレットをページで使用できるようにすると、ユーザーがパーソナライズできるようなります。編集モードのポートレットには、「Portlet Content」フィールドが表示されます。ユーザーは、このフィールドにテキストを入力できます。入力されたテキストは、ポートレットのコンテンツとして表示されます。

59.3.8 JSR 286ポートレットでのポートレット・フィルタの使用方法

ポートレット・フィルタは、実行時にポートレットのコンテンツを変更できるようにするJSR 286の機能です。ポートレット・フィルタは、ポートレット・リクエストおよびポートレット・レスポンスのコンテンツを変換できる、再利用可能なJavaコンポーネントです。一般に、フィルタはポートレットのように応答を作成したり、リクエストに反応したりすることはありません。そのかわりに、リクエストおよびレスポンスを変更または変換します。

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

- 第59.3.8.1項「アプリケーションへのポートレット・フィルタの追加」

- 第59.3.8.2項「ポートレットへのポートレット・フィルタの適用」

ポートレット・フィルタの詳細と実装方法は、次の場所にあるJSR 286の仕様を参照してください。

http://jcp.org/en/jsr/detail?id=286

59.3.8.1 アプリケーションへのポートレット・フィルタの追加

ポートレットでポートレット・フィルタを使用できるようにするには、最初に、そのフィルタをアプリケーション内で定義しておく必要があります。

ポートレット・フィルタをアプリケーションに追加するには:

1. portlet.xmlファイルの概要エディタを開きます。
詳細は、第59.3.1項「ポートレット・デプロイメント・ディスクリプタ・ファイルの編集方法」を参照してください。

2. 「Filters」タブをクリックします。

3. 「追加」アイコンをクリックして、新しいポートレット・フィルタを作成します。

4. 「ポートレット・フィルタの作成」ダイアログでは、新しいポートレット・フィルタを作成することも、以前に作成したポートレット・フィルタを選択することもできます。

- 新しいポートレット・フィルタを作成するには:

1. 「新規ポートレット・フィルタ」を選択します。

2. 「名前」フィールドに、ポートレット・フィルタの名前を入力します。
この名前はアプリケーション内で一意にする必要があります。また、文字、数字およびアンダースコアのみを使用する必要があります。

3. 「パッケージ」フィールドに、新しいフィルタ・クラスを格納するパッケージを入力します。または、そのパッケージを参照します。

4. 1つ以上の「ライフサイクル・フェーズ」チェック・ボックスを選択して、このフィルタ・クラスが実装するjavax.portlet.filterインタフェースを指定します。
アクション - このフィルタ・クラスはActionFilterインタフェースを実装します

イベント - このフィルタ・クラスは、EventFilterインタフェースを実装します。

レンダリング - このフィルタ・クラスは、RenderFilterインタフェースを実装します。

リソース - このフィルタ・クラスは、ResourceFilterインタフェースを実装します。

ヒント:

「ポートレット・フィルタの作成」ダイアログを使用して新しいフィルタ・クラスを作成するときには、そのフィルタ・クラスに実装するフィルタ・インタフェースを指定できます。フィルタ・クラス作成した後では、概要エディタ使用してフィルタ・インタフェースを追加または削除できなくなります。そのかわりに、フィルタ・クラスのソースを直接編集して、インタフェースと、そのインタフェースに定義されたdoFilterメソッドを手動で追加または削除することが必要になります。

- 既存のポートレット・フィルタを選択するには:

1. 「既存のクラスから選択」を選択します。

2. フィルタ・クラスを入力または参照します。

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

6. 「表示名」フィールドに、ポートレット・フィルタのわかりやすい名前を入力します。

7. 「説明」フィールドに、ポートレット・フィルタの説明を入力します。

8. 「初期化パラメータ」パネルでは、フィルタ・クラスのinit()メソッドに値を渡すための初期化パラメータを指定できます。

1. 「追加」アイコンをクリックして、ポートレット・フィルタの初期化パラメータを指定します。

2. 「名前」フィールドに、初期化パラメータの名前を入力します。

3. 「値」フィールドに、初期化パラメータに渡す値を入力します。

4. 「説明」フィールドに、初期化パラメータの説明を入力します。

ポートレット・フィルタは、次に示すように、portlet.xmlファイルのアプリケーション定義セクションに追加されます。

<portlet-app ...>
<portlet>...</portlet>
<portlet>...</portlet>
...
<filter>
<display-name>Test Filter</display-name>
<filter-name>filter_1</filter-name>
<filter-class>javaportlets.MyFilter</filter-class>
<lifecycle>ACTION_PHASE</lifecycle>
<lifecycle>RENDER_PHASE</lifecycle>
</filter>
...
</portlet-app>

9. portlet.xmlファイルを保存します。

59.3.8.2 ポートレットへのポートレット・フィルタの適用

アプリケーションでポートレット・フィルタを定義しておくと、そのフィルタをアプリケーション内の1つ以上のポートレットに適用できるようになります。また、ポートレット・フィルタがポートレットに適用される順序を指定することもできます。

ポートレットにポートレット・フィルタを適用するには:

1. portlet.xmlファイルの概要エディタを開きます。
詳細は、第59.3.1項「ポートレット・デプロイメント・ディスクリプタ・ファイルの編集方法」を参照してください。

2. 「フィルタ・マッピング」タブをクリックします。

3. 「追加」アイコンをクリックして、フィルタ・マッピング表に新しい行を追加します。

4. 「フィルタ名」ドロップダウン・リストから、ポートレットに適用するポートレット・フィルタを選択します。
このドロップダウン・リストには、portlet.xmlファイルで定義したすべてのポートレット・フィルタが移入されています。

5. 「ポートレット名」ドロップダウン・リストから、ポートレット・フィルタを適用するポートレットを選択します。
このドロップダウン・リストには、portlet.xmlファイルで定義したすべてのポートレットが移入されています。

別の方法として、ワイルドカードを使用することで、複数のポートレットにポートレット・フィルタを適用できます。たとえば、*を入力すると、アプリケーション内のすべてのポートレットにポートレット・フィルタを適用できます。

フィルタ・マッピングは、次に示すように、portlet.xmlファイルのアプリケーション定義セクションに追加されます。

<portlet-app ...>
<portlet>...</portlet>
<portlet>...</portlet>
...
<filter>
<display-name>My Filter</display-name>
<filter-name>myFilter</filter-name>
<filter-class>javaportlets.MyFilter</filter-class>
<lifecycle>ACTION_PHASE</lifecycle>
<lifecycle>RENDER_PHASE</lifecycle>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<portlet-name>myPortlet</portlet-name>
</filter-mapping>
...
</portlet-app>

6. 「一番上」、「上へ」、「下へ」、および「一番下」の各アイコンを使用して、portlet.xmlファイル内のポートレット・フィルタを並べ替えます。ポートレット・フィルタの順序により、ポートレットにフィルタが適用される順序が決定されます。

注意:

ポートレット・フィルタは、複数のポートレットにマッピングされている可能性があります。複数のポートレットが1つの(共有)フィルタにマップされているときに、フィルタの順序を不用意に変更すると、不必要な副作用が発生することがあります。たとえば、あるポートレットに適用されているフィルタの順序を変更すると、並べ替えた順序が、そのフィルタを共有する他のすべてのポートレットに適用されるようになります。

7. portlet.xmlファイルを保存します。

59.3.9 キャッシュを使用してJSR 286ポートレットのパフォーマンスを向上する方法

ポートレットの基本機能の設定が完了した後は、ポートレットのパフォーマンスに注目する必要があります。

キャッシュは、高度な動的コンテンツを含むWebサイトのパフォーマンスの向上に使用される一般的な手法です。JSR 286ポートレットでは、有効期限ベースおよび有効化ベースのキャッシュがサポートされています。

キャッシュの詳細は、第57.4.5項「ポートレット・パフォーマンス」を参照してください。

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

- 第59.3.9.1項「JSR 286ポートレットの有効期限ベースのキャッシュの実装」

- 第59.3.9.2項「JSR 286ポートレットの検証ベースのキャッシュの実装」

59.3.9.1 JSR 286ポートレットの有効期限ベースのキャッシュの実装

JSR 286ポートレットの作成ウィザードを使用して、最初にポートレットを作成するときには、有効期限ベースのキャッシュの実装を選択できます。ただし、ポートレットの初期デプロイメント時には、ポートレットのキャッシュをオフにして、デプロイメント・サイクルの後半でポートレット・コンテンツが安定してきたときに、このキャッシュを実装することが望まれることがあります。さらに、有効期間の編集や、キャッシュ・スコープの変更が必要になることもあります。

有効期限ベースのキャッシュを実装するには:

1. portlet.xmlファイルの概要エディタを開きます。
詳細は、第59.3.1項「ポートレット・デプロイメント・ディスクリプタ・ファイルの編集方法」を参照してください。

2. 「ポートレット」タブをクリックして、有効期限ベースのキャッシュを実装するポートレットを選択します。

3. 「詳細」タブをクリックします。

4. 「キャッシュ管理」パネルで、「キャッシュ・ポートレット」を選択します。

注意:

ポートレットのキャッシュを無効にするには、「キャッシュ・ポートレット」を選択解除します。これにより、キャッシュの有効期間が0に設定されます。これは、キャッシュされたコンテンツが常に有効期限切れになることを意味します。

5. 「キャッシュ・スコープ」を選択します。

- 「パブリック」を選択すると、キャッシュされたコンテンツがユーザー全体で共有されます

- 「プライベート」を選択すると、キャッシュされたコンテンツはユーザー全体では共有されなくなります。

6. キャッシュの有効期間を指定します。

- 「キャッシュ・コンテンツ失効なし」を選択すると、キャッシュの有効期間が-1に設定されます。これは、キャッシュされたコンテンツが有効期限切れになることはなく、コンテンツが常にキャッシュから取得されることを意味します。このオプションは、ポートレット・コンテンツが変更される可能性のほとんどない静的コンテンツであると確信できるときに使用してください。このオプションを設定すると、次に示すコードがportlet.xmlファイルに追加されます。

<portlet>
...
<expiration-cache>-1</expiration-cache>
...
</portlet>

- 「キャッシュ・コンテンツ有効期限」を選択すると、指定した秒数の経過後にキャッシュされたポートレット・コンテンツが有効期限切れになります。その横にあるフィールドに、有効期間(n)を秒単位で入力します。このオプションを設定すると、次に示すコードがportlet.xmlファイルに追加されます。

<portlet>
...
<expiration-cache>n</expiration-cache>
...
</portlet>

7. portlet.xmlファイルを保存します。

59.3.9.2 JSR 286ポートレットの検証ベースのキャッシュの実装

検証ベースのキャッシュの実装は、初期ポートレットの作成後に、手動でコーディングする必要があります。

例59-13に、コンシューマが検証ベースのキャッシュを使用してマークアップをキャッシュするdoView()メソッドをGenericPortletに実装する一般的な方法を示します。この例では、有効期限ベースのキャッシュをプログラム的に(CacheControl.setExpirationTime()メソッドを使用して)定義する方法と、検証ベースのキャッシュとの併用でプロデューサの負荷をさらに削減する方法についても示しています。これは、serveResource()の場合にも同様に機能します。

例59-13 検証ベースのキャッシュを実装するJSR 286ポートレット

protected void doView (RenderRequest request, RenderResponse response)
throws PortletException, IOException
{
CacheControl cacheControl = response.getCacheControl();
String eTag = request.getETag();
if (isMarkupStillValid(eTag))
{
// Wait 30 seconds before checking ETag again
cacheControl.setExpirationTime(30);

// Tell consumer to use its cached content
cacheControl.setUseCachedContent(true);
return;
}

// ETag not valid so set a new one ...

// Define a new ETag
cacheControl.setETag(generateETag(...));

// Wait 60 seconds before checking ETag again
cacheControl.setExpirationTime(60);

// ... and generate fresh portlet markup
createMarkup(request, response);
}

private boolean isMarkupStillValid(String eTag)
{
if (eTag == null)
{
return false; // No ETag was supplied
}

// Perform portlet specific checks for the consumer's cached
// copy of the markup still being valid based on the given ETag
...
}

private String generateETag(...)
{
// Portlet specific code to generate an ETag, for example, a hash
// of the data on which the portlet's markup is based
...

return eTag;
}

JSR 286ポートレットの検証ベースのキャッシュの詳細は、次の場所にあるJSR 286の仕様を参照してください。

http://jcp.org/en/jsr/detail?id=286

59.3.10 リソース・プロキシに対して書きなおされたURLの実装

リソース・プロキシは、WSRPでリソースを取得する標準的な方法です。ポートレット内でのURLの問題を回避するには、指定したリソース内のURLをすべて書きなおすためのフラグを設定できます。たとえば、URLを含むHTMLのフラグメントがある場合、WSRPリソース・プロキシを考慮に入れてURLをリライトするために、このフラグを設定できます。

URLのリライトが必要なことを示すには、PortletRequest属性のoracle.portlet.server.resourceRequiresRewritingをtrueに設定します。たとえば、例59-14に示すようなコードを含めると、エンコードするURLにリソース・プロキシが使用されるようになります。このコードはメソッド内にカプセル化して、このコードがURLごとに繰り返されないようにします。

例59-14 WSRP用のリソース・プロキシ

request.setAttribute("oracle.portlet.server.resourceRequiresRewriting",
Boolean.TRUE);
String url = response.encodeURL(pathToResourceForRewriting);
request.removeAttribute("oracle.portlet.server.resourceRequiresRewriting");

oracle.portlet.server.resourceRequiresRewritingを具体的に設定していないと、falseにデフォルト設定され、URLはリライトされなくなります。この属性をtrueに設定することで、この機能を明示的にアクティブにする必要があります。

defaultProxiedResourceRequiresWsrpRewriteコンテナ・ランタイム・オプションを使用すると、デフォルトのWSRP requiresRewriteフラグを使用するように指定できます。このコンテナ・ランタイム・オプションで指定したオプション(デフォルトの設定はtrue)は、リクエスト属性でオーバーライドされていない場合に使用されます。詳細は、「com.oracle.portlet.defaultProxiedResourceRequiresWsrpRewrite」を参照してください。

59.3.11 ステートレス・リソース・プロキシの実装方法

リライトの必要がないプロトコル・リソースがある場合は、ステートレス・リソース・プロキシを使用できます。ステートレス・リソース・プロキシでは、ブラウザに返されるURLに、ポートレットIDなどのコンテキスト情報が必要なくなります。これにより、該当するリソースに対するキャッシュ・ヒット率が向上します。ステートレス・リソース・プロキシは、静的なJavaScriptファイルや静的なイメージなどの機能に有用なことがわかります。

ステートレス・プロキシが必要なことを示すには、PortletRequest属性のoracle.portlet.server.useStatelessProxyingをtrueに設定します。たとえば、例59-15に示すようなコードを含めると、エンコードするURLにステートレス・プロキシが使用されるようになります。このコードはメソッド内にカプセル化して、このコードがURLごとに繰り返されないようにします。

例59-15 ステートレス・リソース・プロキシ

request.setAttribute("oracle.portlet.server.useStatelessProxying", Boolean.TRUE);
String url = response.encodeURL(pathToResource);
request.removeAttribute("oracle.portlet.server.useStatelessProxying");

oracle.portlet.server.useStatelessProxyingを具体的に設定していないと、falseにデフォルト設定されます。この属性をtrueに設定することで、この機能を明示的にアクティブにする必要があります。

59.3.12 JSR 286ポートレット用のセキュリティの実装方法

WSRPプロデューサ側とクライアント側でセキュリティを構成することで、WSRPプロデューサにデプロイされたJSR 286ポートレットを保護できます。WSRPプロデューサを使用したJSR 286ポートレットのセキュリティ保護方法の詳細は、第74.17項「WS-Securityを使用したWSRPプロデューサを介するアイデンティティ伝播の保護」を参照してください。

59.3.13 JSR 286ポートレット用の永続ストアの管理方法

ポートレット永続ストアは、コンシューマ登録ハンドルおよびポートレット・プリファレンス・データを永続的に保持するために使用されます。ポートレット・プロデューサは、3種類の永続ストアのうちの1つを使用できます。

- Consumer - プロデューサのメタデータをコンシューマ・アプリケーションに関連付けます。このオプションをお薦めします。

- Database - リレーショナル・データベースを使用してデータを永続化します。これは、主に後方互換性を維持することを目的としていますが、大量のカスタマイズが見込まれる場合には有効です。

- File - ファイル・システムを使用してデータを永続化します。これは後方互換性の目的で提供されています。本番環境ではファイル・ベースの永続ストアは使用しないでください。この永続ストアでは、多層化環境や高可用性環境がサポートされません。ただし、ファイル・ベースの永続ストアを使用しながら、統合WLSを使用してアプリケーションをテストすることが必要になる場合があります。

詳細は、第57.4.4項「ポートレットのパーソナライズとカスタマイズ」を参照してください。

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

- 第59.3.13.1項「WSRPプロデューサ用の永続ストアのセットアップ」

- 第59.3.13.2項「WSRPプロデューサの永続ストアの移行」

- 第59.3.13.3項「データベース永続化ストアに対するJavaオブジェクト・キャッシュのアクセスの有効化」

59.3.13.1 WSRPプロデューサ用の永続ストアのセットアップ

WSRPポートレット・プロデューサでは、JNDI変数(persistentStore)を使用して、どのタイプの永続ストアを使用するかを判断します。アプリケーション内で最初のポートレットを作成するときには、この変数はデフォルトでConsumerに設定されています。この変数の値は、ポートレット・プロデューサ・アプリケーションのweb.xmlファイルで変更できます。

注意:

すでに別のポートレットが含まれているアプリケーションにポートレットを作成すると、既存の永続ストアの設定が維持されます。

ファイル永続ストアを使用する場合は、その永続ストアに使用するルート・ディレクトリへのパスを指定するために、JNDI変数のfileStoreRootも使用します。

表59-2に、WSRPプロデューサの永続ストアを指定するために使用するJNDI変数の一覧と説明を示します。

表59-2 WSRPプロデューサ・データベース・プリファレンス・ストア関連のJNDI変数

変数名

変数値

説明

oracle/portal/wsrp/server/persistentStore

Database

File

Consumer

ポートレット・プロデューサ・アプリケーションのコンシューマ登録ハンドルとポートレット・プリファレンスを永続化するために使用する、データ・ストア(ファイル、データベース、またはコンシューマ)を指定します。

oracle/portal/wsrp/server/fileStoreRoot

portletdata

ファイル・プリファレンス・ストアで使用されるルート・ディレクトリのパスを定義します。

絶対パスは、ファイル・システム・ルートを基準として解釈されます。相対パスは、WC_ORACLE_HOME/portalディレクトリを基準として解釈されます。

同じWebLogic Server内で実行されているすべてのプロデューサは、この変数に同じパスを使用する必要があります。このようにしていないと、一部のポートレットでPortlet unavailableエラーが発生します。

WSRPポートレット・プロデューサの永続ストアをセットアップするには:

1. JDeveloperで、永続ストアをセットアップするポートレット・プロデューサ・アプリケーションを開きます。

2. ポートレット・プロジェクト(「ポートレット」など)を開きます。

3. 「Webコンテンツ」ノード、「WEB-INF」ノードの順に開きます。

4. web.xmlを右クリックして、「開く」を開きます。

5. 「ソース」タブをクリックします。

6. データベース永続ストアを指定する場合は、次のコードを追加します。

<env-entry>
<env-entry-name>oracle/portal/wsrp/server/persistentStore</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>Database</env-entry-value>
</env-entry>

ファイルベース永続ストアを指定する場合は、次のコードを追加します。

<env-entry>
<env-entry-name>oracle/portal/wsrp/server/persistentStore</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>File</env-entry-value>
</env-entry>
<env-entry>
<env-entry-name>oracle/portal/wsrp/server/fileStoreRoot</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>myPrefStore</env-entry-value>
</env-entry>

コンシューマ永続ストアを指定する場合は、次のコードを追加します。

<env-entry>
<env-entry-name>oracle/portal/wsrp/server/persistentStore</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>Consumer</env-entry-value>
</env-entry>

7. web.xmlファイルを保存します。

8. WebLogic Serverを再起動します。

59.3.13.2 WSRPプロデューサの永続ストアの移行

たとえば、テスト環境から本番環境に移動するときに、ポートレット・プロデューサで使用する永続ストアのタイプを変更する必要がある場合は、既存のデータを元の永続ストアから新しい永続ストアに移行できます。

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

- 第59.3.13.2.1項「データベースまたはファイルベースの永続ストアの移行」

- 第59.3.13.2.2項「コンシューマ永続ストアの移行」

- 第59.3.13.2.3項「WSRPポートレット・プロデューサの移動」

59.3.13.2.1 データベースまたはファイルベースの永続ストアの移行

WSRPポートレット・プロデューサの永続ストア移行ユーティリティ(PersistenceMigrationTool)を使用すると、データベース永続ストアとファイルベース永続ストアとの間で既存のデータを移行できます(たとえば、テストで使用していたファイルベース永続ストアから、本番環境のデータベース永続ストアへの移行)。また、このユーティリティを使用して、アップグレード中のユーザーは、既存のロケール固有のポートレット・プリファレンス・データが最新のJSPリリースと互換性のある名前形式を使用していることを確認できます。さらに、このユーティリティは、移行元と移行先のストアが同じタイプになる移行にも使用できるため、データベース間でのデータの移行も可能です。

注意:

PersistenceMigrationToolユーティリティを実行するときには、クラスパスで次のライブラリを参照する必要があります。

- wcs-producer-spi.jar

- portlet-utils.jar

- portlet-producer-container-common.jar

- portlet-producer-container-persistence.jar

- oracle-portlet-api.jar

- wsrp-container.jar

- oracle-portlet-tags.jar

- ojdbc6.jar

クラスパスで参照されるojdbc6.jarライブラリは、データベースで使用されるライブラリと同じにする必要があります。

データベースまたはファイルベースの永続ストアを移行するには:

1. 次に示すように、適切なライブラリがクラスパスで参照されていることを確認します。

./java  -classpath
ORACLE_COMMON_HOME/webcenter/modules/com.bea.wsrp_10.3.2.0/system/wcs-producer-spi.jar:
ORACLE_COMMON_HOME/webcenter/modules/oracle.portlet.server_11.1.1/portlet-utils.jar:
ORACLE_COMMON_HOME/webcenter/modules/oracle.webcenter.framework_11.1.1/portlet-producer-container-common.jar:
ORACLE_COMMON_HOME/webcenter/modules/oracle.webcenter.framework_11.1.1/portlet-producer-container-persistence.jar:
WC_ORACLE_HOME/webcenter/modules/oracle.portlet.server_11.1.1/oracle-portlet-api.jar:
WC_ORACLE_HOME/webcenter/modules/oracle.portlet.server_11.1.1/wsrp-container.jar:
WC_ORACLE_HOME/webcenter/modules/oracle.portlet.server_11.1.1/oracle-portlet-tags.jar:
DB_ORACLE_HOME/jdbc/lib/ojdbc6.jar

2. 次の構文を使用して、PersistenceMigrationToolを実行します。

java oracle.portlet.server.containerimpl.PersistenceMigrationTool
-sourceType [file | db]
-destType [file | db]
{-sourcePath [dir |
-sourceUsername username -sourcePassword password -sourceDatabase db
-sourceDriver srcDriver]}
{-destPath [dir | destUsername username -destPassword password -destDatabase db
-destDriver dstDriver]}
[-debug]

ここで:

- sourceTypeは、移行元ストアがファイル(file)またはデータベース(db)のどちらにあるかを指定します。ソース・ストアと宛先ストアを同じタイプにすることができます。したがって、1つのデータベースからもう1つのデータベース、あるいは1つのファイル・システムからもう1つのファイル・システムへの移行が可能です。

- destTypeは、移行先ストアがファイル(file)またはデータベース(db)のどちらにあるかを指定します。ソース・ストアと宛先ストアを同じタイプにすることができます。したがって、1つのデータベースからもう1つのデータベース、あるいは1つのファイル・システムからもう1つのファイル・システムへの移行が可能です。

- sourcePathは、ファイルベース永続ストアの場所です。この引数は、sourceTypeがfileの場合に必要です。

- sourceUsernameは、永続ストア・データベースのデータベース・ユーザー名です。この引数は、sourceTypeがdbの場合に必要です。

- sourcePasswordは、永続ストア・データベースのデータベース・パスワードです。この引数は、sourceTypeがdbの場合に必要です。

- sourceDatabaseは、永続ストア・データベースの名前です。この引数は、sourceTypeがdbの場合に必要です。

- sourceDriverは、使用するデータベース・ドライバの名前です。たとえば、SQL Serverデータベースの場合、データベース・ドライバはcom.microsoft.sqlserver.jdbc.SQLServerDriverになります。この引数の値を省略すると、移行ツールは、sourceDatabase引数から使用する適切なドライバの判断を試みます。

- destPathは、ファイルベース永続ストアの場所です。この引数は、destTypeがfileの場合に必要です。

- destUsernameは、永続ストア・データベースのデータベース・ユーザー名です。この引数は、destTypeがdbの場合に必要です。

- destPasswordは、永続ストア・データベースのデータベース・パスワードです。この引数は、destTypeがdbの場合に必要です。

- destDatabaseは、永続ストア・データベースの名前です。この引数は、destTypeがdbの場合に必要です。

- destDriverは、使用するデータベース・ドライバの名前です。たとえば、SQL Serverデータベースの場合、データベース・ドライバはcom.microsoft.sqlserver.jdbc.SQLServerDriverになります。この引数の値を省略すると、移行ツールは、destDatabase引数から使用する適切なドライバの判断を試みます。

- debugは、標準出力による完全ロギングをオンにします。これによりユーザーは、ツール実行時に発生する問題を診断できます。

例59-16に、PersistenceMigrationToolユーティリティの実行例を示します。この例では、ファイル・ストアのプリファレンスがデータベース・ストアにコピーされます。

例59-16 PersistenceMigrationToolユーティリティの実行

./java  -classpath
ORACLE_COMMON_HOME/webcenter/modules/com.bea.wsrp_10.3.2.0/system/wcs-producer-spi.jar:
ORACLE_COMMON_HOME/webcenter/modules/oracle.portlet.server_11.1.1/portlet-utils.jar:
ORACLE_COMMON_HOME/webcenter/modules/oracle.webcenter.framework_11.1.1/portlet-producer-container-common.jar:
ORACLE_COMMON_HOME/webcenter/modules/oracle.webcenter.framework_11.1.1/portlet-producer-container-persistence.jar:
WC_ORACLE_HOME/webcenter/modules/oracle.portlet.server_11.1.1/oracle-portlet-api.jar:
WC_ORACLE_HOME/webcenter/modules/oracle.portlet.server_11.1.1/wsrp-container.jar:
WC_ORACLE_HOME/webcenter/modules/oracle.portlet.server_11.1.1/oracle-portlet-tags.jar:
DB_ORACLE_HOME/jdbc/lib/ojdbc6.jar
oracle.portlet.server.containerimpl.PersistenceMigrationTool
-sourceType file \
-sourcePath /data/prefs
-destType db \
-destUsername scott \
-destPassword tiger \
-destDatabase abc.mycompany.com:1521:yourdatabase \

ここで:

- ORACLE_COMMON_HOMEは、Oracle共通ホームです

- WC_ORACLE_HOMEは、WebCenter Portal Oracleホームです

- DB_ORACLE_HOMEは、データベースのOracleホームです(WebCenter Portal Oracleホームと同じマシン上にある場合)。データベースのOracleホームが別のマシンにある場合は、DB_ORACLE_HOME/jdbc/libディレクトリを、WebCenter Portal Oracleホームの一時ディレクトリにコピーします。クラスパスでは、この一時ディレクトリのojdbc6.jarライブラリを参照する必要があります。

59.3.13.2.2 コンシューマ永続ストアの移行

コンシューマ永続ストア間の移行には、永続ストア移行ユーティリティを使用できません。コンシューマ永続ストア間の移行には、データをコンシューマのあるプロデューサからエクスポートして別のプロデューサにインポートする必要があります。

コンシューマ永続ストアを移行するには:

1. プロデューサ・メタデータをコンシューマ・アプリケーションからEARファイルにエクスポートします。
これは、カスタマイズ・データなどを取得するために、リモート・プロデューサに接続します。これに使用できるツールは次のとおりです。

- JDeveloper: 第59.3.14.1項「設計時のポートレット・プロデューサのエクスポート」を参照してください。

- WLST: Oracle Fusion Middleware Oracle WebCenter Portalの管理のデータを移行するためのPortal Frameworkアプリケーションのエクスポートとインポートに関する項を参照してください。

2. プロデューサの接続を別のプロデューサに再マップするか(すべての永続ストア・タイプの使用が可能)、現在のプロデューサのプリファレンス・ストア構成を変更します。
プロデューサ接続の再マップについては、第63.3.1項「ポートレット・プロデューサ登録設定の編集方法」を参照してください。

3. エクスポート済のEARファイルから再度コンシューマ・アプリケーションにインポートします。これにより、関連するメタデータがプロデューサに再度送信され、構成済の永続ストアに格納されます。

59.3.13.2.3 WSRPポートレット・プロデューサの移動

ポートレット・プロデューサを別のサーバーに移動したときには、そのプロデューサの永続ストアも移動する必要があります。

新しいプロデューサをインストールした後で、次に示すように永続ストアを移動します。

- コンシューマ永続ストア - データはコンシューマに保存されるため、永続ストアを移動するための要件はありません。

- データベース永続ストア: 次のいずれかを実行します。

- WebLogic Serverのデータ・ソースが元のプロデューサと同じデータベースを参照するように、新しいプロデューサを構成します。

- 永続ストア移行ユーティリティを使用して、永続ストアを移行します(詳細は、第59.3.13.2項「WSRPプロデューサの永続ストアの移行」を参照)。

- ファイル永続ストア: 次のいずれかを実行します。

- 元のプロデューサと同じファイル・システムの場所を参照するように、新しいプロデューサを構成します。

- 永続ストア移行ユーティリティを使用して、永続ストアを移行します(詳細は、第59.3.13.2項「WSRPプロデューサの永続ストアの移行」を参照)。

最後に、Enterprise Manager Fusion Middleware ControlまたはWLSTのコマンド(setWSRPProducerRegistrationまたはsetPDKJavaProducerRegistration)を使用して、プロデューサ登録のURLを更新します。

59.3.13.3 データベース永続化ストアに対するJavaオブジェクト・キャッシュのアクセスの有効化

永続ストアのパフォーマンスを向上させるために、永続ストアへのアクセスにJavaオブジェクト・キャッシュを使用できます。これにより、リクエストのたびに永続ストアにアクセスする必要がなくなります。永続ストアに対するJavaオブジェクト・キャッシュを有効にするには、JNDI変数のenableJavaObjectCacheを使用します。

永続ストアのアクセスにJavaオブジェクト・キャッシュを有効化するには:

1. JDeveloperで、永続ストアをセットアップするポートレット・プロデューサ・アプリケーションを開きます。

2. ポートレット・プロジェクト(「ポートレット」など)を開きます。

3. 「Webコンテンツ」ノード、「WEB-INF」ノードの順に開きます。

4. web.xmlを右クリックして、「開く」を開きます。

5. 「ソース」タブをクリックします。

6. 次のコードを追加します。

<env-entry>
<env-entry-name>
oracle/portal/wsrp/server/enableJavaObjectCache
</env-entry-name>
<env-entry-type>java.lang.Boolean</env-entry-type>
<env-entry-value>true</env-entry-value>
</env-entry>

7. web.xmlファイルを保存します。

59.3.14 設計時にポートレット・プロデューサをエクスポートおよびインポートする方法

設計時にポートレット・プロデューサをエクスポートおよびインポートできます。

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

- 第59.3.14.1項「設計時のポートレット・プロデューサのエクスポート」

- 第59.3.14.2項「設計時のポートレット・プロデューサのインポート」

59.3.14.1 設計時のポートレット・プロデューサのエクスポート

デプロイメント用にアプリケーションをパッケージ化するときには、プロデューサのデータをMARファイルに含めるために、そのアプリケーションが参照するポートレット・プロデューサに接続します。実行されていないプロデューサがあると、それらのプロデューサに接続できなくなり、そのデータは含まれなくなります。

そのかわりに、設計時にプロデューサ・データのエクスポート・アーカイブを作成すると、プロデューサが実行されていることを確認できるため、すべてのプロデューサ・データ(リモートのカスタマイズやクライアント側のメタデータを含む)を取得できるようになります。このエクスポート・アーカイブは、デプロイメント時にWebCenter Portal Frameworkで使用できるため、リモートのプロデューサに接続する必要がなくなります。

設計時にポートレット・プロデューサをエクスポートするには:

1. WC_ORACLE_HOME/jdeveloper/jdev/bin/jdev.confファイルを編集して、次のJVMフラグを設定します。

AddVMOption  -Doracle.webcenter.portlet.dt.disableRemoteExport=true

このフラグを設定することで、デプロイメント用にアプリケーションをパッケージ化するときに、次に示す手順で作成したエクスポート・アーカイブがMARファイルに確実に含まれるようになります。これにより、プロデューサ・データを取得するためにリモートのプロデューサに接続することはなくなります。

2. JDeveloperを再起動して、新しい設定を適用します。

3. エクスポートするプロデューサを利用しているアプリケーションを開きます。

4. メニューから、「アプリケーション」、「ポートレット・プロデューサのエクスポート」の順に選択します。
このメニュー・オプションは、現在のアプリケーションにプロデューサが含まれている場合にのみ表示されます。

5. 「ポートレット・プロデューサのエクスポート」ダイアログの「エクスポート・アーカイブ・ファイル名(.ear)」フィールドに、エクスポート・セットに使用する絶対パスとファイル名を入力します。

6. 「OK」をクリックします。
disableRemoteExportフラグをtrueに設定しているため、デプロイメント用にアプリケーションをパッケージ化するときに、WebCenter Portal Frameworkは、このダイアログで指定した場所にエクスポート・アーカイブが存在しているかどうかを確認します。エクスポート・アーカイブが存在している場合は、プロデューサ・データを取得するためにリモートのプロデューサに接続するかわりに、そのアーカイブのコンテンツをMARファイルに取り込みます。

注意:

disableRemoteExportフラグが設定されていているときに、エクスポート・アーカイブが存在しない場合は、リモートのプロデューサ・データを含まないデフォルトのエクスポート・アーカイブが作成され、MARファイルに取り込まれます。

59.3.14.2 設計時のポートレット・プロデューサのインポート

実行時に行ったカスタマイズを含むプロデューサ・データは、デプロイ済のアプリケーションから、設計時のアプリケーションにインポートできます。

注意:

エクスポート・アーカイブ(EARファイル)に含まれるプロデューサは、インポート先のアプリケーションに含まれるプロデューサと同じにする必要があります。

デプロイ済のアプリケーションからプロデューサ・メタデータのエクスポート・アーカイブを作成する方法については、Oracle Fusion Middleware Oracle WebCenter Portalの管理のポートレット・クライアント・メタデータのエクスポート(Frameworkアプリケーション)に関する項を参照してください。

設計時にポートレット・プロデューサをインポートするには:

1. WC_ORACLE_HOME/jdeveloper/jdev/bin/jdev.confファイルを編集して、次のJVMフラグを設定します。

AddVMOption  -Doracle.webcenter.portlet.dt.enableImport=true

2. JDeveloperを再起動して、新しい設定を適用します。これにより、「ポートレット・プロデューサのインポート」メニュー・オプションが確実に選択できるようになります。

3. プロデューサをインポートするアプリケーションを開きます。

4. メニューから、「アプリケーション」、「ポートレット・プロデューサのインポート」の順に選択します。

5. 「ポートレット・プロデューサのインポート」ダイアログの「インポート・アーカイブ・ファイル名(.ear)」フィールドに、インポートするエクスポート・アーカイブの絶対パスとファイル名を入力します。

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

注意:

プロデューサをインポートしたアプリケーションがその時点で統合WLSで実行されている場合、更新されたプロデューサを確認するには、アプリケーションを再実行する必要があります。単にページを更新すると、設計時と実行時で異なるMDSインスタンスが使用されるためにエラーが発生することがあります。

59.4 JSR 286ポートレットのテスト

ポートレットを本番環境にデプロイする前に、まず、期待通りに動作することを確認するためにテストすることを強くお薦めします。

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

- 第59.4.1項「統合WebLogic ServerでのWSRPポートレット・プロデューサの実行方法」

- 第59.4.2項「統合WebLogic ServerでのWSRPポートレット・プロデューサの実行時の処理」

- 第59.4.3項「統合WebLogic ServerへのWSRPポートレット・プロデューサのデプロイ方法」

- 59.4.4項「ポートレットのパーソナライズのテスト」

- 第59.4.5項「WSRPテスト・ページの非表示または削除」

59.4.1 統合WebLogic ServerでのWSRPポートレット・プロデューサの実行方法

統合WebLogic Server (統合WLS)には、ポートレットを短時間で簡単にテストする方法が用意されています。このテスト方法では、JDeveloper内でアプリケーションを実行できるように事前に構成されているため、デプロイメント・プロファイルを作成する必要はありません。

統合WLSでJSR 286ポートレットをテストするには:

1. JDeveloperで、テストするポートレットが属するポートレット・プロデューサ・アプリケーションを開きます。

2. ポートレット・プロジェクト(「ポートレット」など)を開きます。

3. 「Webコンテンツ」ノード、「WEB-INF」ノードの順に開きます。

4. portlet.xmlを右クリックして、「実行」を選択します。
portlet.xmlを実行すると、ポートレット・プロデューサ・アプリケーションのパッケージ化とデプロイメントが、そのアプリケーションの名前に関連する名前の統合WLSインスタンスで開始されます。

5. 「IntegratedWebLogicServer - ログ」ウィンドウを確認し、デプロイの進行状況を監視します。ログには、アプリケーション・ページのURLが示されます。WSRPプロデューサのURLには、次の構文が使用されます。

http://host:port/applicationname-Portlets-context-root/info

ここで:

- hostは、プロデューザがデプロイされているサーバーです。

- portはHTTPリスナー・ポートです。通常、7101です。サーバーが起動すると、ポートがコンソールに表示されます。

- context-rootは、Webアプリケーションのコンテキスト・ルートです。

ブラウザのウィンドウに、図59-6のようなテスト・ページが表示されます。

図59-6 WSRPプロデューサ・テスト・ページ

6. アプリケーションの実行中に、JDeveloperとブラウザを切り替え、アプリケーションを設計時に変更してその変更を保存し、ブラウザでテスト・ページをリフレッシュできます。

7. プロデューサが正常に実行している場合、プロデューサをアプリケーションに登録し、1つ以上のポートレットをページに追加して、それが正常に動作していることを確認する必要があります。プロデューサを登録することにより、そのプロデューサを探し、通信するために必要な情報をアプリケーションに提供します。プロデューサを登録すると、接続として表示され、プロデューサとそのポートレットは「アプリケーション・リソース」パネルの「接続」ノードまたは「リソース」パレットで使用できるようになります。
JSR 286ポートレットのプロデューサを登録する場合は、第63.2.1.1項「WSRPポートレット・プロデューサの登録方法」で説明する手順を実行してください。

ポートレットをページに追加するには、第63.5項「ページへのポートレットの追加」の手順に従います。

8. 統合WLSインスタンスを停止するには、「Run Manager」タブで、DefaultServerを選択し、赤い「停止」アイコンをクリックします。インスタンスが停止すると、アプリケーションはアンデプロイされるため、使用できなくなります。

ヒント:

「IntegratedWebLogicServer - ログ」ウィンドウで、赤い「停止」アイコンをクリックするか、DefaultServerを選択しても、統合WLSインスタンスを停止できます。

59.4.2 統合WebLogic ServerでのWSRPポートレット・プロデューサの実行時の処理

WSRPポートレット・プロデューサを統合WLSで実行すると、次の処理が行われます。

- ポートレットをWebサービスとして構成するために、WSDLとその他の構成ファイルがWEB-INFディレクトリに追加されます。

- web.xmlファイルは、JSR 286ポートレット・プロデューサ・アプリケーションを正常に実行するために必要な、リスナー・クラスとサーバー・クラス、フィルタ、パラメータ、およびその他の構成で更新されます。
例: oracle.portlet.server.adapter.web.ServerContextListenerクラス、WSRP_v2_PortletManagement_Serviceフィルタ、WSRPBaseServiceフィルタなど。

- JSR 286ポートレットに必要なライブラリ(oracle.portlet-producer.wsrpなど)が、weblogic.xmlファイルに追加されます。

これらの構成は、ポートレットの要件によって異なります。

59.4.3 統合WebLogic ServerへのWSRPポートレット・プロデューサのデプロイ方法

WSRPポートレット・プロデューサ・アプリケーションを統合WLSインスタンスで実行すると、そのインスタンスが停止したときに、アプリケーションはアンデプロイされるため使用できなくなります。より安定したテスト・シナリオの場合、デフォルト・サーバーの実行中に常に使用できるように、ポートレット・プロデューサ・アプリケーションを統合WLSにデプロイできます。

このメソッドを選択する場合、最初にデプロイメント・プロファイルを作成する必要があります(第61.4項「WARデプロイメント・プロファイルの作成」を参照してください)。アプリケーションを統合WLSにデプロイすると、「デプロイメント構成」ダイアログが表示され、デプロイメント設定の構成およびカスタマイズができます。JDeveloperで事前作成されたファイル・システムMDSリポジトリが、「リポジトリ名」フィールドに表示されます。

統合WLSでのアプリケーションのデプロイおよび実行の詳細は、第7.2項「統合WebLogic ServerへのPortal Frameworkアプリケーションのデプロイ」を参照してください。

59.4.4 ポートレットのパーソナライズのテスト

ポートレットにパーソナライズを実装していると、認証されたユーザーのポートレットにのみ「パーソナライズ」アイコンが表示されます。そのため、ポートレットのパーソナライズをテストするには、ポートレットを利用するアプリケーションに、なんらかの形のセキュリティを実装することが必要になります。テストのためには、最も基本的な認証を構成すれば済みます。詳細は、第74.12項「ポートレット・パーソナライズをテストするための基本認証の構成」を参照してください。

59.4.5 WSRPテスト・ページの非表示または削除

セキュリティ上の理由から、WSRPテスト・ページを非表示にして管理者のみが確認できるようにすることも、そのページを完全に削除することもできます。

この項には次のサブセクションが含まれます:

- 第59.4.5.1項「WSRPテスト・ページの非表示」

- 第59.4.5.2項「WSRPテスト・ページの削除」

注意:

WebブラウザでプロデューサへのSOAPリクエストを作成できる、Webserviceテスト・ページもあります。WSRPポートレット・プロデューサについては、このページがデフォルトで無効にされています。このページには、ポートレット・プロデューサのテストについての有用な情報は示されませんが、このページを有効にすることもできます。このページを有効にするには、デプロイ済プロデューサのWARファイルからoracle-webservices.xmlファイルを抽出して、WSRP v1とWSRP v2の両方のプロデューサのexpose-testpageフラグをtrueに設定してから、WARファイルとEARファイルを再パッケージ化してプロデューサを再デプロイします。

59.4.5.1 WSRPテスト・ページの非表示

WSRPテスト・ページをすべてのユーザーが確認する必要がない場合は、このページを管理者のみが確認できるようにして保護できます。

WSRPテストページを非表示にするには:

1. JDeveloperで、テスト・ページを非表示にするポートレット・プロデューサ・アプリケーションを開きます。

2. ポートレット・プロジェクト(「ポートレット」など)を開きます。

3. 「Webコンテンツ」ノード、「WEB-INF」ノードの順に開きます。

4. web.xmlを右クリックして、「開く」を開きます。

5. 「ソース」タブをクリックします。

6. 次のコードを追加します。

<security-role>
<description>AdministratorRole</description>
<role-name>Admin</role-name>
</security-role>
<security-constraint>
<display-name>TestPageInfo</display-name>
<web-resource-collection>
<web-resource-name>TestPageInfo</web-resource-name>
<description>Protect the test page servlet.</description>
<url-pattern>/info/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description>Administrators</description>
<role-name>Admin</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>

7. web.xmlファイルを保存します。

59.4.5.2WSRPテスト・ページの削除

WSRPテスト・ページは完全に削除できます。

WSRPテスト・ページを削除するには、パッケージ化するときにweb.xmlファイルに挿入された要素を編集する必要があります。つまり、パッケージした結果のEARファイル内のweb.xmlファイルを編集することが必要になります。

WSRPテスト・ページを削除するには:

1. パッケージ化したときに作成されたEARファイルからweb.xmlファイルを抽出して、このファイルを任意のエディタで開きます。

2. 次のコードのコメントを解除します。

<servlet-mapping>
<servlet-name>WSRPTestPage</servlet-name>
<url-pattern>/info</url-pattern>
</servlet-mapping>

3. web.xmlファイルを保存して、編集したファイルをEARファイルに追加します。

59.5 WebLogic管理対象サーバーへのJSR 286ポートレットのデプロイ

WebLogic管理対象サーバーにJSR 286ポートレットをデプロイする方法の詳細は、第61章「ポートレット・プロデューサのデプロイ」を参照してください。

JSR 286ポートレットを含むポートレット・プロデューサをWebLogic管理対象サーバーにデプロイすると、第59.4.2項「統合WebLogic ServerでのWSRPポートレット・プロデューサの実行時の処理」で説明した構成設定がEARファイルに追加されます。

59.6 WebLogic PortalポートレットのWebCenter Portalへの移行

この項では、WebLogic PortalのEclipse IDEで開発したWebLogic Portalポートレットを、WebCenter PortalのJDeveloper環境に移行する方法について説明します。

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

- 第59.6.1項「WebLogic PortalからWebCenter PortalへのJavaポートレットの移行」

- 第59.6.2項「WebCenter PortalアプリケーションへのWLPポートレットの移行に関する問題」

- 第59.6.3項「WebCenter Portalポートレット・プロデューサ・アプリケーションへのWLPポートレットの移行に関する一般的なヒント」

注意:

WLPのポートレットをWebCenter Portalプロジェクトに移行するために利用できる直接的なサポートやツールは存在しません。多くの場合、大幅なリファクタリングと再コーディングが必要になります。この項では、移行に関するいくつかの問題に注目して、必要に応じて推奨事項を示します。

59.6.1 WebLogic PortalからWebCenter PortalへのJavaポートレットの移行

一般に、WebLogic Portalで開発したJSR 286標準ポートレット(Javaポートレット)は、WebCenter Portal/JDeveloper環境に直接移動できます。ポートレットのすべてのアーティファクト(portlet.xml、.javaファイル、.jspファイルなど)を、単に、JDeveloperのポートレット・プロデューサ・アプリケーション・プロジェクトにコピーします。

注意:

ポートレットで使用しているWebLogic Portal固有のAPIは、WebCenter PortalのAPIに書き直す必要があります。WebLogic Portal固有のAPIは、WebCenter環境では動作しなくなります。

ヒント:

WebLogic Portalのエクスポート機能を使用すると、Javaポートレットをアーカイブ・ファイルにエクスポートできます。このアーカイブ・ファイルは、JDeveloperのプロジェクトにインポートできます。この方法は、ポートレットのすべてのアーティファクトを環境間で手動コピーするよりも簡単です。Oracle Fusion Middleware Oracle WebLogic Portalポートレット開発ガイドの別のシステムで使用するためのJavaポートレットのエクスポートに関する項を参照してください。

59.6.2 WebCenter PortalアプリケーションへのWLPポートレットの移行に関する問題

WLP開発環境からWebCenter Portal開発環境へのポートレットの移行は、直接的にはサポートされていません。一般に、このプロセスには、移行したポートレットのコードと関連ファイルに対する、大幅な書き直しとリファクタリングを伴います。

注意:

WebLogic PortalのWSRPで実行可能であったポートレットは(どのタイプでも)、WebCenter Portalコンシューマに含まれるWebLogic Portalポートレット・プロデューサから直接利用できます。Oracle Fusion Middleware Oracle WebLogic Portalフェデレーテッド・ポータル・ガイドのWSRPのOracle WebCenter PortalおよびOracle Portalとの相互運用に関する項を参照してください。

WebLogic Portalポートレットを、JDeveloperのWebCenter Portalプロジェクトに直接移動すると、次の特有の問題が発生することがあります。

- URL生成: WebLogic PortalでサポートされるURLタイプの一部(DesktopURL、CustomEventURL、PageURL、WindowURL、StandalonePortletURLなど)は、WebCenter Portalでは動作しません。

- イベント: WebCenter Portalコンシューマは、WebLogic Portalフレームワークが生成するすべてのイベントを生成するわけではありません。これに該当するサポートされないイベントには、Init、LookAndFeelReinit、Notification、Refresh、WindowActivation、WindowDeactivationなどがあります。

- レンダリングの依存性: WLPのレンダリングの依存性は、WebCenterでは機能しません。

- WLPフレームワークのAPI: WLPの多くのAPIは、WebCenter Portalではサポートされていません。

59.6.3 WebCenter Portalポートレット・プロデューサ・アプリケーションへのWLPポートレットの移行に関する一般的なヒント

この項では、WLPポートレットをWebCenter Portalのポートレット・プロデューサ環境に移動する際の一般的なガイダンスについて説明します。ポートレットの直接的な移行はサポートされていませんが、この項に示したヒントは、様々なタイプのWLPポートレットを手動で移行するプロセスに役立つことがあります。

注意:

この項では、一般的なガイダンスのみを説明しています。第59.6項「WebLogic PortalポートレットのWebCenter Portalへの移行」で説明したように、WLPポートレット・タイプのWebCenter Portalアプリケーションまたはポートレット・プロデューサ・アプリケーションへの直接移行は、直接的にはサポートされていません。ほとんどの場合、ポートレットをWLPからWebCenter Portalに移動するときには、既存のポートレットのコードの書き直しやリファクタリングが必要になります。

前述したように、ポートレットで使用されているWebLogic Portal固有のAPIは、WebCenter PortalのAPIを使用するように書き直す必要があります。WebLogic Portal固有のAPIは、WebCenter環境では動作しなくなります。

- JSPポートレット: JSPポートレットをWebCenter Portalプロジェクトに直接移動することはサポートされていません。JSPポートレットをJSR286ポートレットにリファクタリングしてから移行することを検討してください。詳細は、第59.6.1項「WebLogic PortalからWebCenter PortalへのJavaポートレットの移行」を参照してください。

- JSR 168/286ポートレット: ほとんどのJava (JSR 168 / 286)ポートレットは、WebCenter Portalポートレット・プロデューサに直接インポートして、JSR286ポートレットとして実行できます。JSR168仕様で保証されている特定のエラー条件を利用する一部のJSR168ポートレットは、JSR168互換モードでの実行が必要になることがあります。Oracle Fusion Middleware Oracle WebLogic Portalポートレット開発ガイドのJSR-286/JSR-168ポートレットの互換性に関する項を参照してください。WLPに独自のイベント機能(.portletファイルで宣言されるイベントのサブスクリプション)を使用するJSR168ポートレットは、JSR286のイベントを使用するように書き直す必要があります。

- Java Page Flowポートレット: JPFポートレットは、WebCenter Portalのポートレット・プロデューサではサポートされていないため、WebLogic Portal WSRPプロデューサから使用するか、JSR286ポートレットまたはJSFポートレットにリファクタリングする必要があります。

- JSFポートレット: ポートレットがWLPのJSR329 JSFポートレット・ブリッジ向けに作成されている場合は、WebCenterプロデューサで変更することなく実行できます。WLPの"ネイティブ" JSFポートレット・ブリッジを使用するポートレットについては、そのポートレットをWebLogic Portalプロデューサから利用するか、JSR329ブリッジを使用するJSF 1.2ポートレットにアップグレードする必要があります。Oracle Fusion Middleware Oracle WebLogic Portalポートレット開発ガイドのJSF-Javaポートレットの使用に関する章も参照してください。

- Clipperポートレット: ClipperポートレットはWebCenter Portalではサポートされていませんが、WebCenter Portalのページレット・プロデューサのWebクリッピング機能により、同等の機能が提供されます。

- Strutsポートレット: StrutsポートレットのWebCenter Portalプロジェクトへの直接移動は、サポートされていません。JSPポートレットをJSR286ポートレットにリファクタリングしてから移行することを検討してください。詳細は、第59.6.1項「WebLogic PortalからWebCenter PortalへのJavaポートレットの移行」を参照してください。

- Content Presenterポートレット: WLP Content PresenterポートレットはWSRPでは動作しません。また、WebCenterとは連動しません。ただし、同等のポータル機能がWebCenter Portalのコンテンツ・プレゼンタで使用できます。Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「コンテンツ・プレゼンタを使用したコンテンツの公開」の章を参照してください。

- リモート(WSRP)ポートレット: WLPで利用されるリモート(WSRP)ポートレットは、かわりにWebCenter Portalのコンシューマで利用されます。WLP固有のWSRP機能を利用するリモート・ポートレットには、変更が必要になることがあります。たとえば、カスタムのデータ・転送機能は、データを伝達するためのイベントまたは共有パラメータを使用して置き換える必要があります。Oracle Fusion Middleware Oracle WebLogic Portalフェデレーテッド・ポータル・ガイドの「WSRPのOracle WebCenter PortalおよびOracle Portalとの相互運用」と、「WLPとWebCenter Portal: Frameworkアプリケーション間のWSRPセキュリティの構成」の章を参照してください。

59.7 JSR 286 Javaポートレットのトラブルシューティング

この項では、JSR 286ポートレットの作成時およびテスト時に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

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

- 第59.7.1項「JSR 286ポートレットの作成に関する問題」

- 第59.7.2項「JSR 286ポートレットのテストに関する問題」

59.7.1 JSR 286ポートレットの作成に関する問題

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

- 第59.7.1.1項「ポートレットの作成ウィザードにアクセスできない」

- 第59.7.1.2項「ポートレットに必要なポートレット機能が追加できない」

59.7.1.1 ポートレットの作成ウィザードにアクセスできない

問題

「新規ギャラリ」に、「規格に基づいたJavaポートレット(JSR 286)」オプションがありません。

原因

JSR 286ポートレットを作成しようとしているアプリケーションが、WebCenter PortalのPortal Frameworkアプリケーション・テンプレートを使用して作成されているため、そのアプリケーションはポートレットの作成用にスコープ設定されていません。

解決方法

1. ポートレット・プロデューサ・アプリケーションまたはポートレット作成用にスコープ設定されているアプリケーション(WebCenter PortalのPortal Frameworkアプリケーション・テンプレートを使用して構築されているアプリケーション以外のアプリケーション)でポートレットを作成します。

2. 「新規ギャラリ」で、「すべてのテクノロジ」タブをクリックすると、アプリケーションのテクノロジ・スコープに関係なく、使用できるすべてのオプションがリストされます。

59.7.1.2 ポートレットに必要なポートレット機能が追加できない

問題

JSR 286 Javaポートレットの作成ウィザードで、特定の機能(たとえば、ポートレット・イベントやパブリック・レンダラ・パラメータなど)をポータルに追加するオプションがありません。

原因

JSR 286 Javaポートレットの作成ウィザードには、特定の機能をポートレットに追加するオプションはありません。

解決方法

JSR 286 Javaポートレットの作成ウィザードを使用してポートレットを作成した後で、概要エディタを使用してportlet.xmlファイルを編集することで、高度な機能を追加してください。詳細は、第59.3項「JSR 286 Javaポートレットの開発」を参照してください。

59.7.2 JSR 286ポートレットのテストに関する問題

ポートレット開発のテスト段階でポートレットを利用するときに発生する可能性のある問題の一覧は、第63.11項「ポートレットのトラブルシューティング」を参照してください。

60 Oracle PDK-Javaを使用したJavaポートレットの構築

この章では、Oracle PDK-Javaを使用したJavaポートレットの構築方法について説明します。Oracle PDK-Javaは、Javaポートレットを構築するためのOracle独自のテクノロジです。

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

- 第60.1項「PDK-Javaポートレットの概要」

- 第60.2項「PDK-Javaポートレットの作成」

- 第60.3項「PDK-Javaポートレットの開発」

- 第60.4項「PDK-Javaポートレットのテスト」

- 第60.5項「PDK-Javaポートレットのデプロイ」

- 60.6項「Strutsポートレットの作成」

- 第60.7項「PDK-Javaポートレットのトラブルシューティング」

ヒント:

新規Javaポートレットを構築するには、JSR 286規格の使用を検討する必要があります。詳細は、第59章「JSR 286を使用した標準ベースのJavaポートレットの作成」を参照してください。

60.1 PDK-Javaポートレットの概要

PDK-Javaは、一般的に必要なユーティリティを提供することでJavaポートレットを簡単に開発できるフレームワークを提供し、これまでの開発スキルや、JSP、サーブレット、静的HTMLページなどの既存アプリケーション・コンポーネントを活用できるようにします。また、WebCenter Portal Frameworkとプロデューサ間の通信の複雑さに直接対処する必要なしにポートレットを作成できます。

PDK-Javaのフレームワークは次の領域に分けられます。

- プロデューサ・アダプタ: 開発者は、これにより、Webプロデューサとの通信用にWebCenter Portal Frameworkによって定義されたHTTP構文を使用しないで済むようになります。また、WebCenter Portal FrameworkとJava Webプロデューサ間で渡された情報を変換します。アダプタがない場合、プロデューサは、ポートレットの管理に加え、この情報を所定の言語でWebCenter Portal Frameworkに直接通信する必要があります。アダプタによって、Webプロデューサはポータル言語を理解する必要がなくなり、逆に、アダプタがない場合は、理解する必要が出てきます。

- プロバイダ・インタフェースは、プロバイダ・アダプタとの統合にJava実装で必要となるAPI(関数)を定義します。プロデューサ・アダプタは、Portal Frameworkアプリケーションからのメッセージを受信して、プロデューサ・インタフェースへのコールに変換し、プロデューサのレスポンスをアプリケーションが理解できる書式に翻訳します。プロデューサ・インタフェースには、プロデューサが実装するメソッドを定義するためのJavaクラスのセットが含まれ、多くの場合、標準実装が用意されています。主なクラスには次のものがあります。

- ProviderDefinition (oracle.portal.provider.v2.ProviderDefinition)

- ProviderInstance (oracle.portal.provider.v2.ProviderInstance)

- PortletDefinition (oracle.portal.provider.v2.PortletDefinition)

- PortletInstance (oracle.portal.provider.v2.PortletInstance)

- ParameterDefinition (oracle.portal.provider.v2.ParameterDefinition)

- EventDefinition (oracle.portal.provider.v2.EventDefinition)

- プロデューサ・ランタイムは、プロデューサ・インタフェースの仕様に準拠する基本実装です。プロデューサ・ランタイムには、個々のプロデューサ・インタフェースを実装するためのデフォルト・クラスのセットが含まれ、PDK-Javaに付属のレンダリング、パーソナライズおよびセキュリティのフレームワークを活用できるようにします。このようなクラスと関連フレームワークは、WebCenter Portal Frameworkリクエストの共通関数を実装し、プロデューサを構成するための宣言メカニズムを提供することで、プロデューサの開発を簡略化します。プロデューサ・ランタイムを使用すると、Portal Frameworkアプリケーションとの通信に必要なインフラストラクチャではなく、ポートレット自体に開発労力を集中できます。プロデューサ・ランタイムの標準動作が要件を満たさない場合に、特定の動作の拡張または変更を容易に行うことができます。主なクラスには次のものがあります。

- DefaultProviderDefinition (oracle.portal.provider.v2.DefaultProviderDefinition)

- DefaultProviderInstance (oracle.portal.provider.v2.DefaultProviderInstance)

- DefaultPortletDefinition (oracle.portal.provider.v2.DefaultPortletDefinition)

- DefaultPortletInstance (oracle.portal.provider.v2.DefaultPortletInstance)

- PortletRenderer (oracle.portal.provider.v2.render.PortletRenderer)

- PortletPersonalizationManager (oracle.portal.provider.v2.personalize.PortletPersonalizationManager)

- PortletSecurityManager (oracle.portal.provider.v1.http.DefaultSecurityManager)

- プロデューサ・ユーティリティは、ポートレットのレンダリングを簡略化するメソッドを提供します。このユーティリティには、有効なリンク(hrefs)を構築するメソッド、ポートレットのコンテナ(ヘッダーを含む)をレンダリングするメソッド、ページ内で動作するHTMLフォームをレンダリングするメソッドおよびポートレット・キャッシュをサポートするメソッドが含まれています。

Oracle JPDKプロデューサは、デプロイ、定義およびアプリケーションとの通信に関し、XML、SOAP、HTTPまたはJava EEなどのオープン標準を使用します。WebCenter Portalは、Oracle JPDKプロデューサからポートレットを組み込み、HTTPを介してSOAPを使用し、コンシューマ・アプリケーションと通信します。

ポートレットを開発し、Oracle JPDKプロデューサを介して公開することには、次のような様々な利点があります。

- ポートレットをリモートでデプロイできます

- 既存のWebアプリケーション・コードを利用してポートレットを作成できます

- 宣言によってプロデューサを指定できます

- 標準のJavaテクノロジ(サーブレットやJSPなど)を使用してポートレットを開発できます。

ポートレットをOracle JPDKプロデューサを使用して公開するには、ポートレットを管理し、SOAPを使用してWebCenter Portalと通信するプロデューサを最初に作成する必要があります。詳細は、第60.5項「PDK-Javaポートレットのデプロイ」を参照してください。

PDK-Javaの詳細は、次のOracle Fusion Middleware Oracle PDK-Java Java APIリファレンスを参照してください。

http://docs.oracle.com/cd/E23943_01/apirefs.1111/e10691/index.html?overview-summary.html

60.2 PDK-Javaポートレットの作成

WebCenter Portalには、JDeveloperで使用できるウィザードが用意されており、PDK-Javaポートレットの初期フレームワークを短時間で簡単に作成できます。

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

- 第60.2.1項「PDK-Javaポートレットの作成方法」

- 第60.2.2項「PDK-Javaポートレットの作成時の処理」

60.2.1 PDK-Javaポートレットの作成方法

JDeveloperで「Oracle PDK-Javaポートレットの作成」ウィザードを使用すると、短時間で簡単にPDK-Javaポートレットを作成できます。実装するポートレットのモード、および各モードで使用する実装メソッド(JSP、HTTPサーブレット、JavaクラスまたはHTML)を選択できます。さらに、ウィザードによって、選択したモードごとに簡単な実装を作成します。

JDeveloperウィザードを使用して、PDK-Javaポートレットを作成するには:

1. JDeveloperで、ポートレットの作成先であるポートレット・プロデューサ・アプリケーションを開くか、新規ポートレット・プロデューサ・アプリケーションを作成します。
ポートレット・プロデューサ・アプリケーションの作成方法の詳細は、第57.4.1項「ポートレット・プロデューサ・アプリケーション」を参照してください。

注意:

WebCenter Portal - ポートレット・プロデューサ・アプリケーション・テンプレートを使用せずに、ポートレット・プロデューサ・アプリケーションを作成する場合は、テクノロジ・スコープを構築する適切なポートレットをアプリケーションに手動で追加する必要があります。

WebCenter Portal - Frameworkアプリケーション・テンプレートを使用して構築されたアプリケーションは、ポートレット作成用にスコープ設定されていません。

2. ポートレットの作成先であるプロジェクト(「ポートレット」など)を右クリックし、「新規」を選択します。

注意:

既存のプロデューサでポートレットを作成するには、プロデューサのprovider.xmlファイルを右クリックし、「ポートレットの追加」を選択します。これにより、「Oracle PDK-Javaポートレットの作成」ウィザードの「一般ポートレット情報」ページに直接移動できます(手順8)。

3. 「新規ギャラリ」で「Web層」を開き、「ポートレット」、「Oracle PDK-Javaポートレット」の順に選択し、「OK」をクリックします。

4. 「Oracle PDK-Javaポートレットの作成」ウィザードの「プロバイダの詳細」ページで、ポートレットを含める新規プロデューサの名前を入力します。この名前は、プロジェクト内で一意である必要があります。

ヒント:

PDK-Javaでは、プロデューサではなく「プロバイダ」という用語を使用します。プロバイダは、プロデューサと同じです。

5. 「デプロイメント・プロパティ・ファイルの生成」を選択します。
これによって、以下の2つの.propertiesファイルが自動的に生成されます。

- serviceID.propertiesは、そのサービスIDを持つプロデューサのプロパティを定義します。サービスIDは、プロデューサ名と同じ値です。

- _default.propertiesは、デフォルトのプロパティ・ファイルです。プロデューサ・アプリケーションには複数のプロデューサがある場合があり、プロデューサごとに固有のサービスIDを持ちます。登録時に、サービスIDが定義されていない場合は、デフォルトのプロパティ・ファイルが使用されます。

6. 「XMLエントリの生成」を選択します。
これによって、ウィザードによって生成されるものも含めて、プロデューサに属するポートレットの詳細を含むプロデューサ定義ファイル(provider.xml)が自動的に生成されます。

7. 「索引JSPの生成」を選択し、「次へ」をクリックします。
これによって、アプリケーション内に存在するプロデューサと、プロデューサのテスト・ページへのアクセスを簡単にするハイパーリンクをすべてリストしたindex.jspファイルが自動的に生成されます。

8. 「一般ポートレット情報」ページで、ポートレットの名前および表示名を入力します。

この名前は内部的に使用され、ユーザーには公開されません。表示名は、コンポーネント・パレットなどのポートレット選択リストでユーザーに対して表示されます。

この説明は、Portal Frameworkアプリケーションには実装されないため、ポートレットをOracle Portalなどの他のアプリケーションで使用する可能性がない場合は、このフィールドに値を入力する必要はありません。

9. タイムアウト間隔(秒)フィールドに、ポートレットのレンダリングに与える秒数を入力します。

10. 「タイムアウト・メッセージ」フィールドに、ポートレットのレンダリングが指定したタイムアウト間隔を超えた場合に表示するメッセージを入力し、「次へ」をクリックします。

11. 「ビュー・モード」ページの「ページの表示」で、「実装スタイル」ドロップダウン・リストからポートレットの共有画面モードで使用する実装スタイルを選択します。

- ポートレットの共有画面モードをJavaServer Pageとして実装するには、「JSP」を選択します。「ファイル名」フィールドに、ウィザードで生成するファイルの名前を入力します。

- ポートレットの共有画面モードをHTTPサーブレットとして実装するには、「HTTPサーブレット」を選択します。「パッケージ名」フィールドに、HTTPサーブレットを格納するパッケージの名前を入力します。「クラス名」フィールドに、ポートレットの共有画面モードとともに参照するJavaクラスを入力します。

- ポートレットの共有画面モードをHTMLファイルとして実装するには、「HTMLファイル」を選択します。「ファイル名」フィールドに、ウィザードで生成するファイルの名前を入力します。「HTMLファイル」を選択すると、provider.xmlファイルの<renderer>要素内に、次のコードが追加されます。

<showPage class="oracle.portal.provider.v2.render.http.ResourceRenderer">
<resourcePath>provider_id/portlet_name/file.html</resourcePath>
<contentType>content_type</contentType>
<charSet>char_set</charSet>
</showPage>

charSetは、プロデューサがHTMLページのエンコードに使用する必要があるキャラクタ・セットを示します。デフォルトのキャラクタ・セットは、JDeveloperのプリファレンスによって決まります。別のキャラクタ・セットが必要な場合は、それに応じて、provider.xmlのこの要素を更新する必要があります。

- ポートレットの共有画面モードをJavaクラスとして実装するには、「Javaクラス」を選択します。「パッケージ名」フィールドに、Javaクラスを含むパッケージの名前を入力します。「クラス名」フィールドに、Javaクラスの名前を入力します。

共有画面モードの詳細は、第57.4.2.1項「表示モード」を参照してください。

12. ポートレットに全画面モードを実装するには、「詳細ページの表示」を選択し、手順11の共有画面モードの説明に従って、実装スタイルを選択します。

13. ウィザードのこの時点で、「終了」をクリックし、残りのすべての設定にデフォルト値を使用することで、ポートレットをすぐに作成できます。
ポートレットにその他の詳細を指定するには、「次へ」をクリックし、残りの手順を実行します。

14. 「カスタマイズ・モード」ページの「ページの編集」は、デフォルトで選択されています。ポートレットに編集モードを実装するには、手順11の共有画面モードの説明に従って、実装スタイルを選択します。編集モードを実装しない場合は、「ページの編集」を選択解除します。
編集モードの詳細は、第57.4.2.2項「編集モード」を参照してください。

15. ポートレットにデフォルト編集モードを実装するには、「デフォルト・ページの編集」を選択し、手順11の共有画面モードの説明に従って、実装スタイルを選択します。
デフォルト編集モードの詳細は、第57.4.2.3項「デフォルト編集モード」を参照してください。

16. 「次へ」をクリックします。

17. 「追加モード」ページで、ポートレットにヘルプ・モードを実装するには、「ヘルプ・ページ」を選択し、手順11の共有画面モードの説明に従って、実装スタイルを選択します。
ヘルプ・モードの詳細は、第57.4.2.4項「ヘルプ・モード」を参照してください。

18. ポートレットに情報モードを実装するには、「ページ情報」を選択し、手順11の共有画面モードの説明に従って、実装スタイルを選択します。
情報モードの詳細は、第57.4.2.5項「情報モード」を参照してください。

19. 「次へ」をクリックします。

20. 「パブリック・ポートレット・パラメータ」ページで、「追加」をクリックし、パブリック・パラメータをポートレットに追加します。
パラメータの表に新しい行が追加されます。行の各フィールドをダブルクリックして、パラメータの名前、表示名および説明を入力します。

さらにパブリック・パラメータを追加するには、この手順を繰り返します。完了したら、「次へ」をクリックします。

パブリック・ポートレット・パラメータにより、ポートレットは、格納されているページやそのページの他のポートレットと通信できるようになります。詳細は、第60.3.3項「パブリック・パラメータの実装方法」を参照してください。

21. Portal Frameworkアプリケーションでは、Oracle PDK-Javaイベントはサポートされていないため、「パブリック・ポートレット・イベント」ページで、「終了」をクリックします。
イベントの詳細は、Oracle Fusion Middleware Oracle Portal開発者ガイドを参照してください。

60.2.2 PDK-Javaポートレットの作成時の処理

「Oracle PDK-Javaポートレットの作成」ウィザードを使用すると、JDeveloperでは、ポートレットのデフォルト実装を生成します。具体的には、次のファイルが作成されます。

- 選択した各ポートレット・モードのファイル(例、portletnameEditPage.jsp.)。

- provider.xml: プロデューサ定義ファイルで、そのプロデューサに属するポートレットの詳細が含まれます。

- web.xml: アプリケーションのWebデプロイメント・ディスクリプタ・ファイルです。

- weblogic.xml: PDK-Java共有ライブラリを指定する共有ライブラリ定義が含まれます。

- index.jsp: JDeveloperで、テスト用に使用されます。

- _default.properties: デフォルトのプロパティ・ファイルです。

- serviceID.properties: serviceIDで識別されるプロデューサのプロパティ・ファイルです。

ポートレットの正常なデプロイおよび実行には、これらのすべてのファイルが必要です(index.jsp.は除きます)。

これらのすべてのファイルは、アプリケーション・ナビゲータで表示できます(図60-1)。

図60-1 PDK-Javaポートレットに対して生成されたファイル

60.3 PDK-Javaポートレットの開発

「Oracle PDK-Javaポートレットの作成」ウィザードを使用して初期ポートレット実装を構築すると、次の手順では、ポートレットのコンテンツおよび動作を制御するコードを作成します。

次のOracle Fusion Middleware Oracle PDK-Java Java APIリファレンスで、PDK-JavaのJavaDocリファレンスを参照してください。

http://docs.oracle.com/cd/E23943_01/apirefs.1111/e10691/index.html?overview-summary.html

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

- 第60.3.1項「PDK-Javaポートレットの一般的なガイドライン」

- 第60.3.2項「ポートレット・モードの追加方法」

- 第60.3.3項「パブリック・パラメータの実装方法」

- 第60.3.4項「プライベート・パラメータの実装方法」

- 第60.3.5項「JNDI変数の使用方法」

- 第60.3.6項「セッション情報へのアクセス方法」

- 第60.3.7項「キャッシュを使用してPDK-Javaポートレットのパフォーマンスを向上させる方法」

- 第60.3.8項「PDK-Javaポートレットの永続ストアの管理方法」

- 第60.3.9項「PDK-Javaポートレット・プロデューサの移動方法」

- 第60.3.10項「設計時にPDK-Javaポートレット・プロデューサをエクスポートおよびインポートする方法」

この項で参照される多数の例のソース・コードは、Portlet Developer's Kit (PDK)の一部として使用できます。

PDK-Javaを解凍すると、次の場所に例があります。

../pdk/jpdk/v2/src/oracle/portal/sample/v2/devguide

60.3.1 PDK-Javaポートレットの一般的なガイドライン

WebCenter Portalで使用するPDK-Javaポートレットを構築する場合、次の事項を考慮する必要があります。

- ポートレットには、リクエストでポートレットによって明示的に追加されなかったURLの書式またはパラメータに依存するコードを含めないでください。

- ポートレットのモードに関係なく、作成したポートレットがページ上で唯一のポートレットであると想定しないでください。たとえば、ポートレットが編集モードであっても、自分のポートレットがページ上の唯一のポートレットであるとは考えないでください。

- 簡単にリダイレクトするポートレット・モードを記述しないでください。リダイレクトは、ポートレットに対するポストの処理中、またはポートレットによって生成されたリンクをたどる間にのみ発行できます。

60.3.2 ポートレット・モードの追加方法

ポートレット・モードを追加するには、「Oracle PDK-Javaポートレットの作成」ウィザードの各ページで該当するボックスを選択します。ウィザードの使用の詳細は、第60.2.1項「PDK-Javaポートレットの作成方法」を参照してください。ウィザードで選択する各ポートレット・モードに対しては、基本スケルトンが作成されます。ポートレットの作成後にポートレット・モードを追加する場合は、provider.xmlの更新およびHTMLまたはJSPをJDeveloperで作成することにより実行できます。

RenderManagerを使用してポートレット・モードを実装する際の原則は、すべてのモードに対して同じです。

この項で使用されるPDK実行時クラスの詳細は、次のOracle Fusion Middleware Oracle PDK-Java Java APIリファレンスのJavaDocを参照してください。

http://docs.oracle.com/cd/E23943_01/apirefs.1111/e10691/index.html?overview-summary.html

ポートレット・モードを追加するには:

1. JDeveloperで、ポートレットを含むアプリケーションを開きます。

2. ポートレットを含むプロジェクトを開きます。

3. 「Webコンテンツ」ノード、htdocsノード、プロデューサのノードの順に開きます。

4. ポートレットのノードを右クリックし、「新規」を選択します。

ヒント:

ポートレットのノードは、Webコンテンツ > htdocs > プロバイダにあります。

5. 「新規ギャラリ」で「Web層」を開き、「HTML」または「JSP」を選択し、「OK」をクリックします。
ポートレットに追加する各モードに対して、HTMLファイルまたはJSPを作成する必要があります。たとえば、ヘルプ・モードを実装するには、HTMLファイルを作成して、ヘルプ・コンテンツを提供する必要があります。

6. 表示されたダイアログに、HTMLファイルのファイル名またはJSPを入力し、「OK」をクリックします。

7. ビジュアル・エディタで、ページのコンテンツを編集し、必要な機能を実装します。
たとえば、ヘルプ・モードの場合、次のHTMLを追加できます。

<p>This is the <i>Help</i> mode of your portlet!</p>

8. アプリケーション・ナビゲータで、ポートレットを所有するプロバイダのprovider.xmlファイルを右クリックし、「開く」を選択します。

ヒント:

provider.xmlファイルは、Webコンテンツ > WEB-INF > プロバイダ > プロバイダにあります。

9. 追加中のモードの該当するタグの値をtrueに変更します。
たとえば、ヘルプ・モードを追加している場合、hasHelpタグを次のように変更します。

<hasHelp>true</hasHelp>

これにより、そのモードへのリンクまたはアイコンをレンダリングする必要があることをPDKフレームワークに示します。

10. HTMLページ、またはそのモードに対して以前作成したJSPを指定するようにコードを追加します。
たとえば、ヘルプ・ページの場合、次のコードを追加します。

<helpPage>/htdocs/myprovider/myportlet/myHelpPage.html</helpPage>

11. 変更内容を保存します。

60.3.3 パブリック・パラメータの実装方法

PDK-JavaおよびWebCenter Portal Frameworkは、再利用可能で複雑なポートレットを簡単に作成できるように、パブリック・ポートレット・パラメータおよびプライベート・ポートレット・パラメータを提供しています。「Oracle PDK-Javaポートレットの作成」ウィザードでは、パラメータを使用するように設定されているポートレットを作成します。この機能によって、開発者はビジネス・ロジックをポートレットに追加するのみで、provider.xmlを変更する必要はありません。

「Oracle PDK-Javaポートレットの作成」ウィザードを使用すると、パブリック・パラメータによりポートレットを簡単に作成できます。プロデューサを登録し、ページ上にポートレットをドロップすると、ポートレットのパラメータがページの変数に自動的にリンクされます。

注意:

各ポートレットのデータは4Kに制限されています。パラメータ、イベント名、表示名および説明の各長さもすべてこの4Kの制限に対するカウント対象に含まれます。そのため、各ポートレットに対して必要以上の数のパラメータやイベントを使用しないこと、またはこれらの名前や説明を長くしないことが必要です。

パブリック・パラメータを使用してポートレットを作成するには:

1. JDeveloperで、ポートレットを含むアプリケーションを開きます。

2. ポートレットの作成先であるプロジェクトを右クリックし、「新規」を選択します。

注意:

既存のプロデューサでポートレットを作成するには、プロデューサのprovider.xmlファイルを右クリックし、「ポートレットの追加」を選択します。これにより、「Oracle PDK-Javaポートレットの作成」ウィザードの「一般ポートレット情報」ページに直接移動できます。

3. 「新規ギャラリ」で「Web層」を開き、「ポートレット」、「Oracle PDK-Javaポートレット」の順に選択し、「OK」をクリックします。

4. 「パブリック・ポートレット・パラメータ」ページが表示されるまで、「Oracle PDK-Javaポートレットの作成」ウィザードの手順を進めます。
ウィザードの使用に関する基本情報は、第60.2.1項「PDK-Javaポートレットの作成方法」を参照してください。

5. 「パブリック・ポートレット・パラメータ」ページで、「追加」をクリックします。
パラメータの表に新しい行が追加されます。

6. パラメータの「名前」、「表示名」および「説明」フィールドのデフォルト値を、よりわかりやすい値に置換します。

7. 必要に応じてパラメータを追加し、「終了」をクリックします。

8. アプリケーション・ナビゲータで、ポートレットを所有するプロバイダのprovider.xmlファイルを右クリックし、「開く」を選択します。
provider.xmlファイルは、「Webコンテンツ」→WEB-INF→「プロバイダ」→「プロバイダ」にあります。

ウィザードの「パブリック・ポートレット・パラメータ」ページで追加したパラメータのエントリが表示されます(例60-1)。

例60-1 provider.xmlのサンプル、パブリック・パラメータ

<?xml version = '1.0' encoding = 'UTF-8'?><?providerDefinition version="3.1"?>
<provider class="oracle.portal.provider.v2.DefaultProviderDefinition">
<session>false</session>
<passAllUrlParams>false</passAllUrlParams>
<preferenceStore class=
"oracle.portal.provider.v2.preference.FilePreferenceStore">
<name>prefStore1</name>
<useHashing>true</useHashing>
</preferenceStore>
<portlet class="oracle.portal.provider.v2.DefaultPortletDefinition">
<id>1</id>
<name>MyPortlet</name>
<title>My Portlet</title>
<description>My Portlet Description</description>
<timeout>40</timeout>
<showEditToPublic>false</showEditToPublic>
<hasAbout>false</hasAbout>
<showEdit>true</showEdit>
<hasHelp>false</hasHelp>
<showEditDefault>false</showEditDefault>
<showDetails>false</showDetails>
<inputParameter class=
"oracle.portal.provider.v2.DefaultParameterDefinition">
<name>Parameter_01</name>
<displayName>Parameter_01</displayName>
<description>My first parameter</description>
</inputParameter>
<inputParameter class=
"oracle.portal.provider.v2.DefaultParameterDefinition">
<name>Parameter_02</name>
<displayName>Parameter_02</displayName>
<description>My second parameter</description>
</inputParameter>
<inputParameter class=
"oracle.portal.provider.v2.DefaultParameterDefinition">
<name>Parameter_03</name>
<displayName>Parameter_03</displayName>
</inputParameter>
<renderer class="oracle.portal.provider.v2.render.RenderManager">
<renderContainer>true</renderContainer>
<renderCustomize>true</renderCustomize>
<autoRedirect>true</autoRedirect>
<contentType>text/html</contentType>
<showPage>/htdocs/myportlet/MyPortletShowPage.jsp</showPage>
<editPage>/htdocs/myportlet/MyPortletEditPage.jsp</editPage>
</renderer>
<personalizationManager class=
"oracle.portal.provider.v2.personalize.PrefStorePersonalizationManager">
<dataClass>
oracle.portal.provider.v2.personalize.NameValuePersonalizationObject
</dataClass>
</personalizationManager>
</portlet>
</provider>

9. アプリケーション・ナビゲータで、ポートレットのportletnameShowPage.jspを右クリックし、「開く」を選択します。
ファイルは、「Webコンテンツ」→htdocs→「プロバイダ」→「ポートレット」にあります。

ポートレットには、パラメータを取得するためのロジックが含まれます(図60-1)。

例60-2 ShowPage.jspのサンプル

<%@page contentType="text/html; charset=windows-1252"
import="oracle.portal.provider.v2.render.PortletRenderRequest"
import="oracle.portal.provider.v2.http.HttpCommonConstants"
import="oracle.portal.provider.v2.ParameterDefinition"
%>
<%
PortletRenderRequest pReq = (PortletRenderRequest)
request.getAttribute(HttpCommonConstants.PORTLET_RENDER_REQUEST);
%>
<P>Hello <%= pReq.getUser().getName() %>.</P>
<P>This is the <b><i>Show</i></b> render mode!</P>
<%
ParameterDefinition[] params =
pReq.getPortletDefinition().getInputParameters();
%>
<p>This portlet's input parameters are...</p>
<table align="left" width="50%" ><tr><td><span
class="PortletHeading1">Name</span></td><td><span
class="PortletHeading1">Value</span></td></tr>
<%
String name = null;
String value = null;
String[] values = null;
for (int i = 0; i < params.length; i++)
{
name = params[i].getName();
values = pReq.getParameterValues(name);
if (values != null)
{
StringBuffer temp = new StringBuffer();
for (int j = 0; j < values.length; j++)
{
temp.append(values[j]);
if (j + 1 != values.length)
{
temp.append(", ");
}
}
value = temp.toString();
}
else
{
value = "No values have been submitted yet.";
}
%>
<tr>
<td><span class="PortletText2"><%= name %></span></td>
<td><span class="PortletText2"><%= value %></span></td>
</tr>
<%
}
%>
</table>

10. ポートレットに、ユーザーが入力したパラメータ値を送信できるようにするロジックを追加します。

11. 同じ手順を使用して、取得するパラメータ値を表示するだけの2番目のポートレットを作成します。

12. Portal Frameworkアプリケーションに、プロデューサを登録します。詳細は、第63.2.2項「WebCenter Portal FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。

13. 2つのポートレットをアプリケーションのページに追加します。詳細は、第63.5項「ページへのポートレットの追加」を参照してください。

14. アプリケーション・ナビゲータの「構造」ウィンドウで、ページの要素を右クリックし、「ページ定義に移動」を選択します。
例60-3のようなページ定義が表示されます。ページ・レベルの変数とポートレット・レベルのパラメータに注意してください(太字で表示)。

例60-3 ページ定義ファイルのサンプル

<?xml version="1.0" encoding="UTF-8"?>
<pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel"
version="10.1.3.38.90" id="untitled1PageDef"
Package="view.pageDefs">
<executables>
<variableIterator id="variables">
<variable Name="portlet1_Parameter_01" Type="java.lang.Object"/>
<variable Name="portlet1_Parameter_02" Type="java.lang.Object"/>
<variable Name="portlet1_Parameter_03" Type="java.lang.Object"/>
</variableIterator>
<portlet id="portlet1"       portletInstance="/oracle/adf/portlet/PdkPortletProducer1_1153936627784
/applicationPortlets/Portlet1_abfc5a10_010c_1000_8003_82235f50d831"
class="oracle.adf.model.portlet.binding.PortletBinding"
xmlns="http://xmlns.oracle.com/portlet/bindings">
<parameters>
<parameter name="Parameter_01" pageVariable="portlet1_Parameter_01"/>
<parameter name="Parameter_02" pageVariable="portlet1_Parameter_02"/>
<parameter name="Parameter_03" pageVariable="portlet1_Parameter_03"/>
</parameters>
</portlet>
</executables>
</pageDefinition>

15. アプリケーションを実行します。

16. 最初のポートレットに値を入力すると、同じ値が2番目のポートレットに表示されます。

60.3.4 プライベート・パラメータの実装方法

場合によっては、ポートレット・インスタンスのみが認識できるパラメータが必要なことがあります。これらのパラメータは、ページには関係がなく、ポートレットに対してのみ認識されるため、プライベート・パラメータとして知られています。プライベート・パラメータは、ポートレットのナビゲーション作成中に思いがけずに役に立つことがよくあります。たとえば、複数のページで構成されているポートレットがある場合、プライベート・パラメータを使用して、ポートレットの別のリソースにジャンプできます。

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

- 第60.3.4.1項「プライベート・パラメータについて」

- 第60.3.4.2項「ポートレットのURLタイプについて」

- 60.3.4.3項「ポートレットのURLタイプを使用したリンクの構築」

- 60.3.4.4項「ポートレットのURLタイプを使用したフォームの構築」

- 60.3.4.5項「ポートレット内でのナビゲーションの実装」

- 60.3.4.6項「リソースへのナビゲーションの制限」

60.3.4.1 プライベート・パラメータについて

プライベート・パラメータは、標準的なWebアプリケーションで情報をブラウザのリンクまたはフォームからサーバーに渡すために使用されます。サーバーはこれに対して処理を行い、適切なコンテンツを戻します。たとえば、ディクショナリWebサイトのユーザーがハリネズミに関する情報を求めると、サーバーに送信されるURLには、プライベート・パラメータが次のように追加されます。

http://dictionary.reference.com/search?q=Hedgehog

サーバーがページ全体のレンダリングを担当し、クライアントがサーバーと直接通信する場合、このURLのフォームは非常に役に立ちます。Portal Frameworkアプリケーションの場合、クライアントはポートレットと直接通信しません。かわりに、WebCenter Portal Frameworkが、クライアントとポートレットの間を仲介します。また、ほとんどのページには複数のポートレットがあるため、WebCenter Portal Frameworkは複数のポートレットと通信します。

たとえば、ページにシソーラス・ポートレットとディクショナリ・ポートレットという2つのポートレットがあるとします。これら2つのポートレットはqをパラメータとして使用して、ユーザーによって実行された検索問合せを記録します。ユーザーがシソーラス・ポートレットを問い合せる場合、更新されたシソーラス・ポートレットがあるページを再リクエストするためのURLには、シソーラス・ポートレットのパラメータqを含める必要があります。また、このシソーラス・パラメータは、このポートレットに対して同じ機能を実行するディクショナリ・ポートレット・パラメータ1とは区別する必要があります。

ポートレットが、次の基準を満たしていることを確認する必要があります。

- ポートレット独自のパラメータがリンクおよびフォームに組み込まれるときにポートレットがこれらのパラメータを正しく修飾していること。

- ポートレットに属さないパラメータをポートレットで変更しないこと。

次のAPIコールは、非修飾パラメータ名を修飾パラメータ名に変換します。

HttpPortletRendererUtil.portletParameter(HttpServletRequest request, String param);

HttpPortletRendererUtilは、パッケージoracle.portal.provider.v2.render.httpに含まれています。

例:

qualParamQ = HttpPortletRendererUtil.portletParameter(r, "q");

受信リクエストからポートレット・パラメータの値をフェッチするには、次のAPIを使用します。

注意:

このAPIは、受信リクエストから値をフェッチする前にパラメータ名を修飾パラメータ名に変換します。このため、この手順を実行する必要はありません。

PortletRenderRequest.getQualifiedParameter(String name)

PortletRenderRequestは、パッケージoracle.portal.provider.v2.renderに含まれています。

例:

valueQ = r.getQualifiedParameter("q");

プライベート・パラメータに関するポートレットの役割には、ポートレットに属さないURLパラメータを妨害しないという側面もあります。このルールに準拠するために使用するユーティリティの詳細は、第60.3.4.3項「ポートレットのURLタイプを使用したリンクの構築」および第60.3.4.4項「ポートレットのURLタイプを使用したフォームの構築」を参照してください。

60.3.4.2 ポートレットのURLタイプについて

ポートレットが自身をレンダリングする場合、WebCenter Portal Frameworkではポートレットに様々なURLを渡し、ポートレットはそれらを使用してリンクをレンダリングします。これらのURLをフェッチし、操作して、リンク作成のタスクを簡略化できます。ポートレットに提供されるURLのリストは、次のとおりです。

- PAGE_LINKは、ポートレット・インスタンスがあるページのURLです。このURLは、すべてのポートレット内リンクのベースとして使用します。ユーザーを同じポートレットの別のセクションにナビゲートするリンクをポートレットでレンダリングする場合、このナビゲーションは、PAGE_LINKを使用してパラメータ・セットとしてエンコードする必要があります。

- DESIGN_LINK: ポートレットのパーソナライズ(編集モード)ページのURLです。ポートレットの編集モードおよびデフォルト編集モードは、ポートレットと同じページにはレンダリングされません。編集モードおよびデフォルト編集モードは、ブラウザ・ウィンドウ全体を占有します。ポートレットの編集モードおよびデフォルト編集モードは、必ずしもすべてのユーザーがアクセスできるわけではありません。これは、ポートレットがそのパーソナライズ・オプションを自由にレンダリングできる最小限の静的フレームワークです。このURLを使用するのは、「パーソナライズ」リンクをレンダリングする場合のみです。

- BACK_LINKは、ポータルが自身をレンダリングする現行ページから戻る便利なポイントのURLです。たとえば、ポートレットがそのパーソナライズ・ページ(編集モード)をレンダリングする場合、このリンクは、ポートレットがあり、ユーザーがパーソナライズ・ページへナビゲートした元のページを参照します。そのため、このリンクは、保留中のアクションを受け入れる、または取り消すボタンにエンコードします。このURLは、ポートレットのデスクトップ・レンダリングでのみ役に立ちます(通常は編集またはデフォルト編集モード)。

60.3.4.3 ポートレットのURLタイプを使用したリンクの構築

ポートレットのURLタイプを使用してリンクを構築するには、ポートレットのレンダリング・コードの作成時にアクセスして使用する必要があります。リンクのURLをフェッチするには、PDK-Javaで次のAPIをコールします。

portletRenderRequest.getRenderContext().getPageURL()
portletRenderRequest.getRenderContext().getEventURL()
portletRenderRequest.getRenderContext().getDesignURL()
portletRenderRequest.getRenderContext().getLoginServerURL()
portletRenderRequest.getRenderContext().getBackURL()

ポートレットのナビゲーションでは、ページURLにポートレットのパラメータを追加(または更新)する必要があります。このタスクを実行するには、次のAPIを使用して適切なURLを構築します。

UrlUtils.constructLink(
PortletRenderRequest pr,
int linkType, -- UrlUtils.PAGE_LINK in this case
NameValue[] params,
boolean encodeParams,
boolean replaceParams)

UrlUtilsは、oracle.portal.provider.v2.urlと呼ばれるパッケージに含まれています。実際には自分自身でページURLをフェッチすることはありません。かわりに、提供されているポートレットのURLタイプUrlUtils.PAGE_LINKを使用します。

params引数のパラメータ名は完全に修飾されている必要があります。また、パラメータが正しく修飾されている場合、適切なlinkTypeを持つUrlUtils.constructLinkは、ポートレットに属さない他のURLパラメータを妨害しません。

UrlUtils.contructLinkの代替バージョンは、URLを受け入れて、それを、戻されるURLのベースとします。HTMLリンクが必要な場合、UrlUtils.constructHTMLLinkを使用して完全なアンカー要素を作成できます。

次のポートレット例であるThesaurusLink.jspでは、パラメータqを使用して、シソーラスで検索する単語を識別します。次に、見つかった関連単語についてのリンクが作成され、ユーザーはこのリンクをたどり、その新しい単語に影響するシソーラスを取得します。値qを設定する初期の送信フォームの詳細は、第60.3.4.4項「ポートレットのURLタイプを使用したフォームの構築」の例を参照してください。

<%
String paramNameQ = "q";
String qualParamNameQ =
HttpPortletRendererUtil.portletParameter(paramNameQ);
PortletRenderRequest pRequest = (PortletRenderRequest)
request.getAttribute(HttpCommonConstants.PORTLET_RENDER_REQUEST);
String paramValueQ = pRequest.getQualifiedParameter(paramNameQ);
%>
<!-- Output the HTML content -->
<center>
Words similar to <%= paramValueQ %>
<br>
Click the link to search for words related to that word.
<br>
<ul>
<%
String[] relatedWords = Thesaurus.getRelatedWords(paramValueQ);
NameValue[] linkParams = new NameValue[1];
for (int i=0; i<=relatedWords.length; i++)
{
linkParams[0] = new NameValue(
qualParamNameQ, relatedWords[i]);
%>
<li>
<b> <%= relatedWords[i] %> </b>
<%= UrlUtils.constructHTMLLink(
pRequest,
UrlUtils.PAGE_LINK,
"(words related to " + relatedWords[i] + ")",
"",
linkParams,
true,
true)%>
</li>
<%
}
%>
</ul>
</center>

60.3.4.4 ポートレットのURLタイプを使用したフォームの構築

フォームでポートレット・パラメータを使用する方法は、リンクで使用する方法とほぼ同じです。次の2つの基本的ルールが同様に適用されます。

- ポートレットのパラメータ名を修飾します。

- 受信URLのその他のパラメータは操作や削除はしません。

マークアップおよび動作の点では、フォームとリンクはかなり異なります。ただし、リンクの場合と同様、PDK-Javaにはこれら2つの基本ルールに準拠するためのユーティリティが含まれています。

ページ上のリンクにしてもフォーム要素の名前にしても、パラメータ名は単なる文字列です。そのため、ポートレットのパラメータ名を正しく修飾するためのコードは、第60.3.4.3項「ポートレットのURLタイプを使用したリンクの構築」に記載されているコードと同じです。

フォームは、URLのその他のパラメータは変更しないままにする必要があるという点でリンクとは異なります。マークアップでフォームを開くと、次のAPIを使用できます。

UrlUtils.htmlFormHiddenFields(pRequest,UrlUtils.PAGE_LINK, formName);
UrlUtils.htmlFormHiddenFields(someURL);

この場合、formName = UrlUtils.htmlFormName(pRequest,null)です。

注意:

ページに複数のフォームがある可能性があるため、フォーム名は完全に修飾する必要があります。これは、ページ上のその他のポートレットと競合するのを避けるために、URLのパラメータとフォームの要素名に修飾が必要であるのと同様です。

htmlFormHiddenFieldsユーティリティは、HTMLの非表示フォーム要素をフォームに書き込みます。この場合、指定したURLの、ポートレットに属さないパラメータごとに1つのフォーム要素を書き込みます。

<INPUT TYPE="hidden" name="paramName" value="paramValue">

このため、ポートレットのパラメータをフォームに追加するのみでよいのです。

他に注意する必要があるのは、フォームの送信ターゲットを導出する方法です。多くの場合、送信ターゲットは現行のページです。

formTarget = UrlUtils.htmlFormActionLink(pRequest,UrlUtils.PAGE_LINK)

formTargetの値には、HTMLフォームのアクション属性やSimpleFormのターゲット属性を使用できます。メソッド名にHTMLが含まれている場合でも、実際にはURLを戻すのみであるため、これはモバイル・ポートレットでも使用できます。

次の例のフォームは、シソーラス・ポートレットの送信フォームをレンダリングします。このフォームの送信結果であるポートレットに関しては、第60.3.4.3項「ポートレットのURLタイプを使用したリンクの構築」の例を参照してください。

<%
String paramNameSubmit = "submit";
String paramNameQ = "q";
String qualParamNameQ =
HttpPortletRendererUtil.portletParameter(paramNameQ);
String qualParamNameSubmit =
HttpPortletRendererUtil.portletParameter(paramNameSubmit);
PortletRenderRequest pRequest = (PortletRenderRequest)
request.getAttribute(HttpCommonConstants.PORTLET_RENDER_REQUEST);
String formName = UrlUtils.htmlFormName(pRequest,"query_form");
%>
<!-- Output the HTML content -->
<center>
<b>Thesaurus</b>
Enter the word you want to search for
<form name="<%= formName %>" method="POST"
action="<%= UrlUtils.htmlFormActionLink(pRequest,UrlUtils.PAGE_LINK) %>">
<%= UrlUtils.htmlFormHiddenFields(pRequest,UrlUtils.PAGE_LINK, formName)%>
<table><tr><td>
Word of interest:
</td><td>
<input
type="text"
size="20"
name="<%= qualParamNameQ %>"
value="">
</td></tr></table>
<input type=submit name="<%= qualParamNameSubmit %>" Value="Search">
</form>
</center>

60.3.4.5 ポートレット内でのナビゲーションの実装

ポートレット内でナビゲーションを実装する方法には、次の3つがあります。

- プライベート・ポートレット・パラメータを使用して、レンダリングされるURLにナビゲーション情報を渡します。このURLに基づいて、ポートレット・コード内のブランチ・ロジックは、どのポートレットのセクションをレンダリングするのかを確認できます。このオプションは、第60.3.4.3項「ポートレットのURLタイプを使用したリンクの構築」および第60.3.4.4項「ポートレットのURLタイプを使用したフォームの構築」に示すシソーラス例を少し拡張したものです。基本的には、パラメータ値qを使用してシソーラス検索操作を実行するのではなく、ポートレットがパラメータ値に基づいて分岐し、それに応じて別のコンテンツをレンダリングします。

- 前の項目と同じようにナビゲーション情報を渡します。ただし、PDK-Javaを使用してパラメータを解釈し、その値に基づいて分岐してください。このオプションでは、シソーラスの例を一部変更する必要があるため、この項の後半でその詳細を説明します。

- セッション記憶域を使用してポートレットの状態およびプライベート・パラメータを記録し、明示的なナビゲーションではなくアクションを示します。ポートレットが含まれるページからユーザーが移動した際にポートレットを前の状態にリストアできるのは、この方法のみです。ユーザーがこのページから移動すると、すべてのプライベート・ポートレット・パラメータは失われ、セッション記憶域にある状態のみをリストアできます。ただし、その状態がセッション記憶域に格納されていることが前提です。このオプションを使用するには、セッション記憶域について理解し、これを実装する必要があります。セッション記憶域の実装の詳細は、第60.3.6項「セッション情報へのアクセス方法」を参照してください。

次のポートレット・コードは、PDK-Javaのサンプル・プロデューサのマルチページ例の一部です。

<portlet>
<id>11</id>
<name>Multipage</name>
<title>MultiPage Sample</title>
<shortTitle>MultiPage</shortTitle>
<description>
This portlet depicts switching between two screens all
in an application page.
</description>
<timeout>40</timeout>
<timeoutMessage>MultiPage Sample timed out</timeoutMessage>
<renderer class="oracle.portal.provider.v2.render.RenderManager">
<contentType>text/html</contentType>
<showPage>/htdocs/multipage/first.jsp</showPage>
<pageParameterName>next_page</pageParameterName>
</renderer>
</portlet>

注意:

pageParameterNameの値はポートレット・パラメータnext_pageの名前です。この値は、PDK-Javaフレームワークが、showPageパラメータ値のオーバーライドとして取得および解釈するポートレット・パラメータの名前です。PDK-Javaフレームワークは、マルチページ・ポートレットのリクエスト時にパラメータの修飾バージョンを検出すると、first.jspではなくnext_pageによって識別されたリソースをレンダリングします。ポートレット内のパラメータは、ポートレットによってレンダリングされるため、PDK-Javaではレンダリングされません。

シソーラスの例をこのパラメータで動作するように変更できます。特に、フォーム送信ポートレットをシソーラスの入力用(ポートレットの先頭ページ)として使用し、シソーラス内をさらにドリルダウンしていくためのリンクが含まれる結果ページにユーザーをナビゲートできます。次の例は、これらの変更内容を示します。

注意:

次の例は、このシソーラスの例のように、比較的簡単なケースの場合に最も役に立ちます。ウィザードの使用経験を積む必要があるなど、より込み入った必要性がある場合は、StrutsなどのMVCフレームワークを使用することを検討してください。Strutsアプリケーションからポートレットを構築する方法の詳細は、第60.6項「Strutsポートレットの作成」を参照してください。

ThesaurusForm.jsp:

<%
PortletRenderRequest pRequest = (PortletRenderRequest)
request.getAttribute(HttpCommonConstants.PORTLET_RENDER_REQUEST);
String paramNameSubmit = "submit";
String paramNameQ = "q";
String qualParamNameQ =
HttpPortletRendererUtil.portletParameter(pRequest, paramNameQ);
String qualParamNameSubmit =
HttpPortletRendererUtil.portletParameter(pRequest, paramNameSubmit);
String formName = UrlUtils.htmlFormName(pRequest,"query_form");
%>
<!-- Output the HTML content -->
<center>
<b>Thesaurus</b>
Enter the word you want to search for
<form name="<%= formName %>" method="POST"
action="<%= UrlUtils.htmlFormActionLink(pRequest,UrlUtils.PAGE_LINK) %>">
<%= UrlUtils.htmlFormHiddenFields(pRequest,UrlUtils.PAGE_LINK, formName)
%>
<%= UrlUtils.emitHiddenField(
HttpPortletRendererUtil.portletParameter(request, "next_page"),
"htdocs/path/ThesaurusLink.jsp" ) %>
<table><tr><td>
Word of interest:
</td><td>
<input
type="text"
size="20"
name="<%= qualParamNameQ %>"
value="">
</td></tr></table>
<input type=submit name="<%= qualParamNameSubmit %>" Value="Search">
</form>
</center>

ThesaurusLink.jspを指し示すためにnext_pageを明示的に設定する必要がありますので、その方法に留意してください。この方法でnext_pageを明示的に設定しない場合、このパラメータは、provider.xmlに登録されているリソース(ThesaurusForm.jsp)にデフォルト設定されます。

ThesaurusLink.jsp:

<%
PortletRenderRequest pRequest = (PortletRenderRequest)
request.getAttribute(HttpCommonConstants.PORTLET_RENDER_REQUEST);
String paramNameQ = "q";
String paramNameNextPage = "next_page";
String qualParamNameQ =
HttpPortletRendererUtil.portletParameter(pRequest, paramNameQ);
String qualParamNameNextPage =
HttpPortletRendererUtil.portletParameter(pRequest, paramNameNextPage);
String paramValueQ = pRequest.getQualifiedParameter(paramNameQ);
%>
<!-- Output the HTML content -->
<center>
Words similar to <%= paramValueQ %>
<br>
Click the link to search for words related to that word.
<br>
<ul>
<%
Thesaurus t = new Thesaurus();
String[] relatedWords = t.getRelatedWords(paramValueQ);
NameValue[] linkParams = new NameValue[2];
linkParams[0] = new NameValue(
qualParamNameNextPage, "htdocs/path/ThesaurusLink.jsp");
for (int i=0; i<relatedWords.length; i++)
{
linkParams[1] = new NameValue(
qualParamNameQ, relatedWords[i]);
%>
<li>
<b> <%= relatedWords[i] %> </b>
<%= UrlUtils.constructHTMLLink(
pRequest,
UrlUtils.PAGE_LINK,
"(words related to " + relatedWords[i] + ")",
"",
linkParams,
true,
true)%>
</li>
<%
}
%>
</ul>
<a href="<%=XMLUtil.escapeXMLAttribute
(pRequest.getRenderContext().getPageURL())%>">
Reset Portlet
</a>
</center>

60.3.4.6 リソースへのナビゲーションの制限

プライベート・パラメータによるナビゲーションの実装では、制限を必要とするポートレット・リソースにユーザーが移動することを制限します。制限されたリソースへのナビゲーションを制御するには、ユーザーが移動できる受入れ可能リソースのwhitelistを作成します。ナビゲーションを制限するためのホワイトリストを作成しないと、ポートレットのリソースは、次のデフォルト・ルールに従ってアクセス可能になります。

- サーブレット・ルート直下のパスはナビゲート可能です。たとえば、/index.jspはアクセス可能ですが、/WEB-INF/web.xmlにはアクセスできません。

- htdocsディレクトリの下のパスはナビゲート可能です。たとえば、/htdocs/multipage/first.jspと/htdocs/lottery/lotto.jspはどちらもアクセス可能です。

このデフォルトの動作を変更するには、許容できるパス値をプロバイダ定義ファイルprovider.xmlに追加します。たとえば、pageParameterNameプライベート・パラメータに応じて、リクエストを他のページに転送するコントローラとして、JSPが使用されるポートレットがあるとします。例60-4のXMLの抜粋では、/htdocs/multiportletの下のリソースが表示されます。その他のリソースは、すべて制限されます。

例60-4 provider.xmlファイルからのホワイトリストの抜粋

<portlet class="oracle.portal.provider.v2.DefaultPortletDefinition">
<id>1</id>
<name>Multipage</name>
<title>A MultiPage Portlet</title>
...
<renderer class="oracle.portal.provider.v2.render.RenderManager">
<contentType>text/html</contentType>
<showPage>/htdocs/multiportlet/controller.jsp</showPage>
<pageParameterName>show_page</pageParameterName>
<allowedPath>/htdocs/multiportlet/*</allowedPath>
</renderer>
</portlet>

この機能のパターン一致ルールは、web.xmlファイルのURLパターン一致と類似しています。この規則は次のとおりです。

- 定義されたパターンに一致する場合、リソース・パスは、ワイルドカードが使用されないかぎり、正解に一致する必要があります。

- 最初のワイルドカードはパス一致のためのもので、/で始まり/*で終わる文字列で構成されています。パスがこの文字列で始まるリソースは一致します。/htdocs/sub1/*の<allowedPath>値の場合、プライベート・パラメータの有効値には、/htdocs/sub1/file.jspと/htdocs/sub1/sub2/file2.jspが含まれます。

- 2番目のワイルドカードはタイプ一致のためのもので、*.で始まりファイル拡張子で終わる文字列で構成されています。ページ・パラメータの有効値は、そのファイル拡張子で終わります。*.jspの<allowedPathvalue>の場合、プライベート・パラメータの有効値には、/htdocs/sub1/file.jspと/htdocs/sub1/file2.jspが含まれます。

60.3.5 JNDI変数の使用方法

Javaポートレットを作成する場合、JNDIサービスを介してデプロイ固有のプロパティを設定し、これらの値をプロデューサ・コードから取得できるようにします。この方法により、プロデューサ・デプロイに任意のプロパティを指定し、プロデューサ・コード内の任意の場所からこのプロパティに簡単にアクセスできます。

JNDI変数を使用して、プロデューサのデプロイ後にプロデューサ・プロパティ値を変更できます。環境エントリはweb.xml.で宣言する必要があります。また、デプロイメント・プランを使用してデプロイで更新できます。

PDK-Javaには、Java EEコンテナ内のプロデューサJNDI変数と非プロデューサJNDI変数の両方を取得できるユーティリティが用意されています。

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

- 60.3.5.1項「JNDI変数の宣言」

- 60.3.5.2項「JNDI変数値の設定」

- 60.3.5.3項「JNDI変数の取得」

60.3.5.1 JNDI変数の宣言

JNDI変数は、プロデューサのweb.xmlファイルで宣言します。JNDI変数を宣言するための書式は、次のとおりです。

<env-entry>
<env-entry-name>variableName</env-entry-name>
<env-entry-type>variableType</env-entry-type>
<env-entry-value>variableValue</env-entry-value>
</env-entry>

env-entry-name要素にはこの変数を識別する名前が含まれます。env-entry-typeにはこの変数の完全修飾されたJava型が含まれます。env-entry-valueにはこの変数のデフォルト値が含まれます。

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

- 第60.3.5.1.1項「変数型」

- 第60.3.5.1.2項「変数の命名規則」

- 第60.3.5.1.3項「例」

60.3.5.1.1 変数型

env-entry-type要素では、Javaコードによって予期される、完全修飾Java型変数を指定する必要があります。JNDI変数で使用可能なJava型は、次のとおりです。

- java.lang.Boolean

- java.lang.String

- java.lang.Integer

- java.lang.Double

- java.lang.Float

Java EEコンテナは、これらの型宣言を使用して指定された型のオブジェクトを自動的に構成し、コードで変数を取得する際に指定された値をオブジェクトに設定します。

60.3.5.1.2 変数の命名規則

PDK-Javaは、個々のプロデューサ・サービス・レベルまたはWebアプリケーション・レベルで設定可能な環境変数を定義します。同じWebアプリケーションにパッケージ化されている様々なプロデューサ・サービスやアプリケーション・コンポーネントの間で命名が競合しないようにするには、特定の命名規則を策定することをお薦めします。

注意:

EnvLookupメソッドを使用する場合、oracle/portal/provider/service/propertyを使用する必要があります。この場合、独自の会社名またはコンポーネントで代用することはできません。

例:

- プロデューサ・サービス固有名の書式は、次のようにする必要があります。

company/component name/producer name/variable name

- 共有名の書式は、次のようにする必要があります。

company/component name/producer name/global

ここで:

- company: アプリケーションを所有する会社名です。

- component name: プロデューサが関連付けられているアプリケーションまたはコンポーネントの名前です。

- producer name: プロデューサのサービス名です。

- variable name: 変数自体の名前です。

これらの命名規則は、Javaパッケージに使用されている命名規則と似ています。この方法により、アプリケーションまたはアプリケーション・コンポーネントの間で名前が衝突する可能性を最小限に抑えることができます。PDK-Javaには、プロデューサのサービス名をサーブレットまたはJSPにハードコーディングせずにこの書式の変数を取得するためのユーティリティが用意されています。このサービス名は、プロデューサのWARファイルに定義しておくのみでよいのです。JNDI変数の取得の詳細は、第60.3.5.3項「JNDI変数の取得」を参照してください。

60.3.5.1.3 例

次の例は、プロデューサの変数名を示します。

oracle/portal/myProvider/myDeploymentProperty
oracle/portal/myprovider/myProperties/myProperty

次の例は、プロデューサ以外の変数名を示します。

oracle/portal/myOtherProperty

60.3.5.2 JNDI変数値の設定

プロデューサ・デプロイでは、JNDI変数の一部またはすべてに対して新しい値を設定できます。このタスクは、WLSのデプロイメント・プラン内で値を手動で設定することで実行できます。WLSコンソールを使用して、プロデューサ・デプロイメントに対するデプロイメント・プランを作成できます。

デプロイメント・プラン内で変数値を手動で設定するには:

1. WLSコンソールを使用してプロデューサ・デプロイメントに移動し、新規デプロイメント・プランを作成します(存在しない場合)。

2. デプロイメント・プランのXMLファイルを編集します。設定するデプロイのプロパティごとに、次の変数定義を<deployment-plan>タグの直下に追加します。

<variable-definition>
<variable>
<name>jndi_var_def</name>
<value>false</value>
</variable>
</variable-definition>

3. この変数定義を実際のJNDI変数に結び付けるには、WEB-INF/web.xmlモジュール・ディスクリプタ(oracle/portal/sample/rootDirectoryを例として使用します)の下の各プロパティに次の変数定義を追加します。

<module-descriptor external="false">
<root-element>web-app</root-element>
<uri>WEB-INF/web.xml</uri>
<variable-assignment>
<name>jndi_var_def</name>
<xpath>/web-app/env-entry/[env-entry-name="oracle/portal/sample/rootDirectory"]/env-entry-value</xpath>
</variable-assignment>
</module-descriptor>

4. ファイルを保存して閉じます。

5. プロデューサ・デプロイメントで「更新」を選択し、新規設定のデプロイメント・プランを有効にします。

60.3.5.3 JNDI変数の取得

JNDIは、標準Java EEテクノロジです。そのため、Java EE APIを使用してJNDI変数にアクセスできます。例:

String myVarName = "oracle/portal/myProvider/myVar"
String myVar = null;
try
{
InitialContext ic = new InitialContext();
myVar = (String)ic.lookup("java:env/" + myVarName);
}
catch(NamingException ne)
{
exception handling logic
}

基本的なJava EE API以外にも、PDK-Javaには、PDK自体によって定義および使用される変数値を取得するための単純なユーティリティ・クラスが用意されています。これらの変数は、第60.3.5.1.2項「変数の命名規則」で説明されている命名規則に準拠しており、その書式は次のとおりです。

oracle/portal/provider_service_name/variable_name
oracle/portal/variable_name

これらのAPIを使用するには、provider_service_nameおよびvariable_nameを指定するのみでよいのです。このユーティリティは、指定された情報に基づいて完全なJNDI変数名を構成し、前に示したものと類似のコードを使用して変数を参照し、変数値を戻します。

EnvLookupクラス(oracle.portal.utils.EnvLookup)には、2つのlookup()メソッドがあります。一方はプロデューサ変数を取得し、他方は非プロデューサ変数を取得します。どちらのメソッドもjava.lang.Objectを戻します。これは、目的のJava型にキャストできます。

次のコード例では、プロデューサ変数を取得しています。

EnvLookup el = new EnvLookup();
String s = (String)el.lookup(myProviderName, myVariableName);

変数名の中のmyProviderNameは、プロデューサのサービス名です。myVariableNameは、プロデューサのサービス名の後ろに続く部分の変数名です。この例では、取得される変数の型がjava.lang.Stringであると想定しています。

非プロデューサ変数を取得するには、同じコードを使用し、1つのパラメータ、変数名のみをlookup()に渡します。また、この場合、接頭辞oracle/portalは除きます。

EnvLookup el = new EnvLookup();Object o = el.lookup(myVariableName);

表60-1は、デフォルトでPDK-Javaに用意されているJNDI変数を示します。これらの変数を宣言しない場合、PDK-Javaは、元の場所(web.xmlおよびデプロイ・プロパティ・ファイル)でこれらの値を検索します。

表60-1 PDK-JavaのJNDI変数

変数

説明

oracle/portal/provider/provider_name/autoReload

ブール型の自動リロード・フラグ。デフォルト値はtrueです。

oracle/portal/provider/provider_name/definition

プロデューサの定義ファイルの場所。

oracle/portal/provider/global/log/logLevel

ログ設定(0から8)。0はロギングなし、8は最大限のロギング。

oracle/portal/provider/provider_name/maxTimeDifference

プロデューサのHMAC時間差。

oracle/portal/provider/<service_name>/resourceUrlKey

Parallel Page Engineによるリソースのプロキシ化の認証キー。詳細は、Oracle Fusion Middleware Oracle Portal管理者ガイドを参照してください。

oracle/portal/provider/provider_name/rootDirectory

プロデューサのパーソナライズの場所。デフォルト値はありません。

oracle/portal/provider/provider_name/sharedKey

HMAC共有キー。デフォルト値はありません。

oracle/portal/provider/provider_name/showTestPage

(非プロデューサ)プロデューサのテスト・ページにアクセス可能どうかを決定するブール型フラグ。デフォルト値はtrueです。

oracle/portal/provider/global/transportEnabled

「デフォルトの編集」のパーソナライズをエクスポートおよびインポート可能かを決定するブール型フラグ。

60.3.6 セッション情報へのアクセス方法

ユーザーがページにアクセスすると、ページではパブリックの認証されていないセッションを開始し、リクエスト全体のセッションに関する情報を追跡します。ユーザーがログインすると、このセッションはログイン・ユーザーの認証済セッションとなります。このセッションは、次の場合に終了します。

- ブラウザ・セッションが終了したとき(つまり、ユーザーがすべてのブラウザ・ウィンドウを閉じたとき)

- ユーザーが明示的にログアウトしたとき

- ユーザーのアイドル時間が設定時間を超えたためにセッションがタイムアウトしたとき

ポートレットをページに提供するプロデューサが、なんらかの特別な処理のためにコールされるように登録時に指定している場合、メタデータ生成の一環として、プロデューサすべてに連絡します。このコールにより、プロデューサは、ユーザー・セッションに基づいて処理を行い、必要に応じてプロデューサのアプリケーションのユーザーをログに記録し、プロデューサ・セッションを確立できるようになります。プロデューサの場合、このコールはinitSessionと呼ばれます。Web対応型アプリケーションのほとんどはCookieを使用してセッションを追跡するため、アプリケーションのプロデューサはCookieを戻すのにこのAPIコールを利用できます。

セッション・ストアを使用すると、ポータル・セッションの間存続する情報を保存および取得できます。この情報が有効で使用可能なのは、そのセッションの存続期間中のみです。セッション・ストアに格納するのは、一時情報のみです。アプリケーション開発者はこのセッション・ストアを使用して、現行のユーザー・セッションに関する情報を格納できます。セッション・ストアのデータは複数のポートレット間で共有できます。

格納する情報を複数のセッションにわたって存続させる必要がある場合は、セッション・ストアのかわりにプリファレンス・ストアに格納できます。一般的なセッション・ストアの適用例を次に示します。

- ロードや演算にコストがかかるデータ(たとえば、検索結果)をキャッシュする場合。

- ポートレットの現在の状態(たとえば、ポートレットに表示された検索結果の現在の範囲(ページ)やユーザーが実行したイベントの順序)をキャッシュする場合。

セッション記憶域を実装する前には、パフォーマンス・コストを慎重に検討する必要があります。ポートレットとプロデューサはリモートであるため、セッション・ストアに情報を作成して保持する操作は、少ない情報量であっても比較的コストがかかる可能性があります。このため、多数のユーザーが頻繁にアクセスするパブリック・ページについては、セッション記憶域の実装を避けた方がよい場合があります。

また、プロデューサでセッション・ストアを使用する場合は、メモリー内の状態情報を追跡するステートフル・アプリケーションを作成します。同様に、プリファレンス・ストアのファイル・システム実装を使用する場合も、ステートフルなアプリケーションを作成します。

スケーラビリティに重要な関心がある場合、ステートフルなアプリケーションは問題発生の原因となる可能性があります。ステートフルなアプリケーションは、使用している構成のロード・バランシングとフェイルオーバー・メカニズムに影響を与えることがあります。これは、複数の中間層をデプロイしても、状態を追跡するためには面倒なルーティング(同じノードが後続のリクエストを同じセッションで処理する)を実装する必要があるためです。このルーティングによって、ノードがクラッシュした場合に不均衡なロード・バランスやセッション・データの消失が発生し、フェイルオーバーに影響を与えることがあります。多くの開発者がステートレスなアプリケーションの構築を選ぶ理由の1つはここにあります。ただし、スケーラビリティが問題でない場合、ステートフルなアプリケーションによる問題は発生しません。

PDKフレームワークでは、セッションをProviderSessionオブジェクトを使用して表します。このオブジェクトはプロバイダ・インスタンスのinitSessionメソッドへのコールの際に確立されます。このオブジェクトは、ProviderUserと関連付けられています。リクエスト間でデータを永続的に保持するには、ProviderSessionオブジェクトのsetAttributeメソッドを使用してセッション・オブジェクトにデータを書き込む必要があります。このメソッドはjava.lang.Objectをjava.lang.Stringにマップし、そのマッピングをセッション・オブジェクト内に格納します。Stringは、その後、セッションがまだ有効である場合、後続のリクエスト中にObjectを取得するために使用できます。

次のような場合は、プロデューサ・セッションが無効になることがあります。

- セッションがタイムアウトした場合

- ProviderSession上のinvalidateメソッドがコールされた場合

- サーブレット・コンテナを実行中のJVMプロセスが終了した場合

同じProviderInstanceに含まれるすべてのポートレットは、特定のProviderUserに対して同じセッションを共有します。したがって、特定のポートレット・インスタンスに対して一意のデータは、セッション内の一意のStringにマップする必要があります。これは、PortletRendererUtilクラス内のportletParameterメソッドを使用して行います。このメソッドは、そのインスタンス用に生成された識別子を先頭に付けることで、提供されたStringパラメータまたは属性名をPortletInstanceに対して一意にします。戻されたインスタンス固有の名前を使用すると、セッションにポートレット・インスタンス・データを書き込むことができます。

PDKフレームワーク・クラスの詳細は、次のOracle Fusion Middleware Oracle PDK-Java Java APIリファレンスのJavaDocを参照してください。

http://docs.oracle.com/cd/E23943_01/apirefs.1111/e10691/index.html?overview-summary.html

この項の例では、共有画面モードでポートレットをレンダリングした回数をカウントするために、セッション記憶域を使用します。

セッション記憶域を実装するには:

- ProviderSession、PortletRendererUtilおよびHttpPortletRendererUtilをインポートします。

- プロデューサ・セッションを取得します。

- Javaポートレット内からセッションにアクセスして、セッションの読取りと書込みを行います。

- provider.xmlでsessionをtrueに設定します。

- セッション記憶域のプロデューサを登録し、「ログイン頻度」を設定します。

次に、現行セッションでポートレットがレンダリングされた回数を表示するセッション・カウントをポートレットに追加する手順を説明します。

1. ウィザードを使用してポートレットを作成した後は、Oracle JDeveloperの「表示」ページのJSPを編集できます。次のクラスをインポートする必要があります。

<%@page contentType="text/html; charset=windows-1252"
import="oracle.portal.provider.v2.render.PortletRenderRequest"
import="oracle.portal.provider.v2.http.HttpCommonConstants"
import="oracle.portal.provider.v2.ProviderSession"
import="oracle.portal.provider.v2.render.PortletRendererUtil"
import="oracle.portal.provider.v2.render.http.HttpPortletRendererUtil"
%>

2. 最初に有効なセッションをチェックし、次にカウントを増分して表示するコードを挿入します。セッションが有効で、以前に格納した値が存在する場合は、その値を表示し、カウントを増分して新しい値を格納します。セッションは有効だが以前に格納した値がない場合は、カウントを1に初期化し、その値を表示して格納します。また、このポートレットの一意の文字列キーを取得し、その文字列キーを配列で使用してセッションをカウントできます。セッション情報を受信しなかった場合は、ユーザーに対して、再度ログインが必要であることを示す情報を提供できます。

<%
PortletRenderRequest pReq = (PortletRenderRequest)
request.getAttribute(HttpCommonConstants.PORTLET_RENDER_REQUEST);
ProviderSession pSession = pReq.getSession();
if (pSession != null)
{
String key = PortletRendererUtil.portletParameter(pReq, "count");
Integer i = (Integer)pSession.getAttribute(key);
if (i == null)
{
i = new Integer(0);
}
i = new Integer(i.intValue()+1);
pSession.setAttribute(key, i);
%>

<p>Render count in this session: <%=i%> </p>

<%
}
else
{
%>

<p>The session has become invalid</p>
<br>
Please log out and log in again.
<%
}
%>

3. デフォルトでは、ウィザードでprovider.xmlのsessionをtrueに設定することはありません。プロデューサがポータルからセッション情報を受信するためには、このフラグを更新する必要があります。このタグをtrueに設定する必要があるのは、プロデューサまたはポートレットでセッション情報を使用する場合のみです。このフラグをtrueに設定すると、プロデューサ・コールに余分なロードが追加されます。

<provider class="oracle.portal.provider.v2.DefaultProviderDefinition">
<session>true</session>

4. プロデューサをセッション・サポートに登録します。ポートレットの登録方法の詳細は、第63.2.2項「WebCenter Portal FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。

5. Javaポートレットをページに追加していない場合は、ここで追加します。次のタスクを実行します。

- プロデューサをリフレッシュして新しい変更内容を反映させます。

- セッションがすでに無効の場合は、再度ログインします。

60.3.7 キャッシュを使用してPDK-Javaポートレットのパフォーマンスを向上させる方法

ポートレットの基本機能の設定が完了した後は、ポートレットのパフォーマンスに注目する必要があります。

キャッシュは、高度な動的コンテンツを含むWebサイトのパフォーマンスの向上に使用される一般的な手法です。JSR 286ポートレットでは、有効期限ベースおよび有効化ベースのキャッシュがサポートされています。

キャッシュの詳細は、第57.4.5項「ポートレット・パフォーマンス」を参照してください。

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

- 第60.3.7.1項「PDK-Javaポートレットに対するキャッシュのアクティブ化」

- 第60.3.7.2項「PDK-Javaポートレットでの有効期限ベースのキャッシュの実装」

- 第60.3.7.3項「PDK-Javaポートレットでの有効化ベースのキャッシュの実装」

60.3.7.1 PDK-Javaポートレットに対するキャッシュのアクティブ化

でキャッシュ機能をプロデューサで使用するには、最初に、中間層キャッシュをアクティブにする必要があります。このキャッシュは、mod_plsql(データベース・プロシージャおよびデータベース・プロデューサをHTTPでコールするOracle HTTP Serverプラグイン)で使用されるキャッシュと同じであるため、PL/SQLキャッシュと呼ばれます。

通常、キャッシュに関する構成詳細の責任は、管理者にあります。

60.3.7.2 PDK-Javaポートレットでの有効期限ベースのキャッシュの実装

有効期限ベースのキャッシュは、実装が簡単なキャッシュ・スキームであり、XMLプロデューサ定義内で宣言によってアクティブにできます。使用するManagedRendererの出力には、出力のキャッシュ時間(分)をそのpageExpiresプロパティに設定することによって、有効期限を設定できます。

有効期限ベースのキャッシュを追加するには:

1. 「Oracle PDK-Javaポートレットの作成」ウィザードを使用してポートレットを構築(第60.2.1項「PDK-Javaポートレットの作成方法」を参照してください)した後で、provider.xmlファイルを編集し、showPageのpageExpiresプロパティ・タグを必要な値に設定します。たとえば、ポートレット出力を1分間キャッシュするには、pageExpiresを1に設定します。
デフォルトでは、ウィザードによって、showPageの圧縮された標準的なタグが生成されます。pageExpiresのサブタグを含めるには、タグを次のように拡張します。

<showPage class="oracle.portal.provider.v2.render.http.ResourceRenderer">
<resourcePath>/htdocs/mycacheportlet/MyCachePortletShowPage.jsp
</resourcePath>
<pageExpires>1</pageExpires>
</showPage>

2. JSPコードを表示ページに追加して、ポートレットが1分間キャッシュされることをテストします。ここでは、現在の時刻をJSPに追加します。

<%@page contentType="text/html; charset=windows-1252"
import="oracle.portal.provider.v2.render.PortletRenderRequest"
import="oracle.portal.provider.v2.http.HttpCommonConstants"
import="java.util.Date"
import="java.text.DateFormat"
%>

<%
PortletRenderRequest pReq = (PortletRenderRequest)
request.getAttribute(HttpCommonConstants.PORTLET_RENDER_REQUEST);
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.LONG,
DateFormat.LONG,pReq.getLocale());
String time = df.format(new Date());
%>

<P>Hello <%=pReq.getUser().getName() %>.</P>
<P>This is the <b><i>Edit</i></b> render mode!</P>
<P>This information is correct as of <%=time%>.</P>

ポートレットを表示して、時間(秒を含む)が1分間で一定していることを確認します。時間が経過すると、ポートレットは最新の時刻を表示し、新しいキャッシュが設定されます。

60.3.7.3 PDK-Javaポートレットでの有効化ベースのキャッシュの実装

有効化ベースのキャッシュの追加は多少複雑ですが、プロデューサに対するどのリクエストがキャッシュ・ヒットであるかを厳密に制御できます。ここでは、ポートレット内のデータが変更された場合のみキャッシュを更新する例を説明します。このアルゴリズムを実装するには、prepareResponseメソッドをオーバーライドする必要があります。BaseManagedRenderer.prepareResponseメソッドの署名は次のとおりです。

public boolean prepareResponse(PortletRenderRequest pr)
throws PortletException,
PortletNotFoundException

prepareResponse()のバージョンで次の手順を実行します。

- キャッシュされたバージョン識別子を取得します。この識別子は、HttpPortletRendererUtil.getCachedVersion()メソッドをコールすることで、コンシューマによってレンダリング・リクエストに設定されます。

public static java.lang.String getCachedVersion
(PortletRenderRequest request)

- 以前にキャッシュされたバージョンが有効であることをポートレットが検出した場合は、HttpPortletRendererUtil.useCachedVersion()メソッドをコールして適切なヘッダーを設定する必要があります。また、RenderManagerに対しては、ポートレット本体をレンダリングするためにrenderBody()をコールする必要がないことが指示されます。

public static void useCachedVersion(PortletRenderRequest request)

これ以外の場合は、HttpPortletRendererUtil.setCachedVersion()を使用して、新規バージョンのポートレットを生成し、このポートレットがキャッシュされます。また、コンシューマに対しては、renderBody()メソッドをコールして、ポートレットのコンテンツを再生成する必要があることが指示されます。

public static void setCachedVersion(PortletRenderRequest request,
java.lang.String version,
int level)
throws java.lang.IllegalArgumentException

有効化ベースのキャッシュの場合、provider.xmlを更新する必要はありません。ポートレットを表示するには、ページをリフレッシュするか、ポートレットをページに追加してコンテンツを更新します。コンテンツが変更されている場合、ポートレットは新しいコンテンツを表示します。コンテンツが変更されていない場合は、キャッシュされたバージョンのポートレットが表示されます。

60.3.8 PDK-Javaポートレットの永続ストアの管理方法

ポートレット永続ストアは、コンシューマ登録ハンドルおよびポートレット・プリファレンス・データを永続的に保持するために使用されます。PDK-Javaポートレット・プロデューサは、永続ストアの2つのタイプ(ファイルまたはデータベース)のいずれかを使用できます。永続ストアで使用されるデータベースは、JDBC対応である必要があります。

詳細は、第57.4.4項「ポートレットのパーソナライズとカスタマイズ」を参照してください。

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

- 第60.3.8.1項「PDK-Javaプロデューサの永続ストアの設定」

- 第60.3.8.2項「PDK-Javaプロデューサの永続ストアの移行」

60.3.8.1 PDK-Javaプロデューサの永続ストアの設定

PDK-Javaプロデューサで使用される永続ストアのタイプは、provider.xmlファイルのpreferenceStoreタグによって決まります。

表60-2に、preferenceStoreタグで使用される属性およびパラメータとその説明を示します。

表60-2 preferenceStoreタグの属性およびパラメータ

属性/パラメータ

説明

class

この必須属性は、ポートレット・プリファレンスの場所およびその他の詳細を定義するJavaクラスを指定します。たとえば、ファイルベースの永続ストアでは、次のクラスが使用されます。

<preferenceStore class="oracle.portal.provider.v2.preference.FilePreferenceStore">

データベースの永続ストアでは、次のクラスが使用されます。

<preferenceStore class="oracle.portal.provider.v2.preference.DBPreferenceStore">

OmniPortletでは、たとえば、次の独自のクラスが使用されます。

<preferenceStore class="oracle.webdb.reformlet.ReformletFilePreferenceStore">

name

この必須パラメータは、永続ストアの名前を指定します。選択する任意の値を使用します。例:

<preferenceStore class="oracle.portal.provider.v2.preference.DBPreferenceStore">
<name>MyPDKProducerPreferenceStore</name>
</preferenceStore>

connection

データベースの永続ストアのこの必須パラメータは、ポートレット永続ストアを含むスキーマと接続するJNDI接続を指定します。例:

<preferenceStore class="oracle.portal.provider.v2.preference.FCFDBPreferenceStore">
<name>MyPDKProducerPreferenceStore</name>
<connection>java:comp/env/jdbc/portletPrefs</connection>
</preferenceStore>

rootDirectory

このオプション・パラメータは、ファイルベースの永続ストア・プリファレンスが格納されている場所を指定します。このパラメータがpreferenceStoreタグに含まれていない場合は、デフォルトのファイルベース・プリファレンス・ストアの場所が使用されます。これは、プロデューサのプロバイダ定義ファイルが格納されているのと同じフォルダです。

useHashing

このオプション・パラメータは、ファイルベースの永続ストアを指定する際に使用され、trueまたはfalseの値を入力します。trueに設定されている場合、各プリファレンス・データ・ファイルは、データ・ファイル名をハッシュすることで指定した名前を持つ別のサブディレクトリに格納されます。このパラメータを使用すると、単一のディレクトリに格納されるプリファレンス・データ・ファイルの数を制限することにより、ファイル・システムのパフォーマンスを高められます。

例:

<preferenceStore class="oracle.portal.provider.v2.preference.FilePreferenceStore">
<name>PDKProducerPreferenceStore</name>
<useHashing>true</useHashing>
</preferenceStore>

60.3.8.2 PDK-Javaプロデューサの永続ストアの移行

PDK-Javaには、DBPreferenceStoreおよびFilePreferenceStoreの2つのPreferenceStore実装があります。DBPreferenceStoreにはJDBC対応のリレーショナル・データベースを使用するデータが保存され、FilePreferenceStoreにはファイル・システムを使用するデータが保存されます。

Oracle PDK-Javaをインストールしている場合は、プリファレンス・ストア移行およびアップグレード・ユーティリティを使用して永続ストアに格納されている情報を管理できます。このユーティリティはpdkjava.jarファイルにあります。このツールは、WC_ORACLE_HOMEから実行する必要があります。

注意:

このツールを実行して、pdkjava.jar、ptlshare.jarおよびojdbc6.jarを組み込む場合は、クラスパスを設定する必要があります。例:

java -classpath WC_ORACLE_HOME\wlserver_10.3\server\lib\ojdbc6.jar;

WC_ORACLE_HOME\jdeveloper\webcenter\modules\oracle.portlet.server_11.1.1\pdkjava.jar;
WC_ORACLE_HOME\jdeveloper\webcenter\modules\oracle.portlet.server_11.1.1\ptlshare.jar
oracle.portal.provider.v2.preference.MigrationTool

移行ユーティリティの構文は次のとおりです。

java oracle.portal.provider.v2.preference.MigrationTool
-mode [file | db | filetodb | filetofile | dbtofile | dbtodb]
[-remap language | locale]
[-countries iso_country_code]
[-pref1UseHashing true | false]
[-pref1Driver driver]
{-pref1RootDirectory directory |
-pref1User username -pref1Password password -pref1URL url}
[-pref2UseHashing true | false]
[-pref2Driver driver]
{-pref2RootDirectory directory |
-pref2User username -pref2Password password -pref2URL url}
[-upfixwpi filename]

ここで

- -modeは、プリファレンス・ストア移行およびアップグレード・ユーティリティを実行するモードです。
filetodb、filetofile、dbtofileまたはdbtodbは、移行モードで実行することを指定します。このモードの詳細は、第60.3.8.2.1項「移行モード」を参照してください。

fileまたはdbは、アップグレード・モードで実行することを指定します。このモードの詳細は、第60.3.8.2.2項「アップグレード・モード」を参照してください。

- -remapは、localePersonalizationLevel (言語またはロケール)です。アップグレードまたは移行の一部としてlocalePersonalizationLevelを変更する場合にのみ、このオプションを使用する必要があります。

- -countriesは、ISO国コードの優先リストを指定します。優先リストは、様々な国に再マップされたプリファレンス間で衝突が生じた場合の優先順位を示します。-countriesは、-remapオプションも指定した場合にのみ意味があります。

- -pref1UseHashingは、この操作のためにソースに対してハッシングを使用するかどうかを指定します。

- -pref1Driverは、ソース・データベースのドライバです。このパラメータを指定しない場合は、最も近似のドライバが使用されます。

- -pref1RootDirectoryは、ソース・ファイル・システムのパスです(j2ee/home/applications/jpdk/jpdk/WEB-INF/providers/sampleなど)。

- -pref1Userは、ソース・データベースのユーザー名です。

- -pref1Passwordは、ソース・データベースのパスワードです。

- -pref1URLは、ソース・データベースへのURLです(jdbc:oracle:thin:@myserver.mydomain.com:1521:mysidなど)。

- -pref2UseHashingは、この操作のために宛先に対してハッシングを使用するかどうかを指定します。

- -pref2Driverは、宛先データベースのドライバです。このパラメータを指定しない場合は、最も近似のドライバが使用されます。

- -pref2RootDirectoryは、宛先ファイル・システムのパスです(j2ee/home/applications/jpdk/jpdk/WEB-INF/providers/sampleなど)。

- -pref2Userは、宛先データベースのユーザー名です。

- -pref2Passwordは、宛先データベースのパスワードです。

- -pref2URLは、宛先データベースへのURLです(jdbc:oracle:thin:@myserver.mydomain.com:1521:mysidなど)。

- -upfixwpiは、操作のログ・ファイルを指定します。

この項には次のサブセクションが含まれます:

- 第60.3.8.2.1項「移行モード」

- 第60.3.8.2.2項「アップグレード・モード」

60.3.8.2.1 移行モード

データをソース永続ストアからターゲット永続ストアにコピーするには、移行モードを使用します。このモードでユーティリティを実行すると、すべてのポートレット定義の永続ストアが更新されます。

表60-3では、ユーティリティを実行できる移行モードについて説明します。

表60-3 ユーティリティを実行するための移行モード

モード

説明

filetodb

FilePreferenceStoreからDBPreferenceStoreにデータをコピーする必要がある場合に使用します。

filetofile

1つのFilePreferenceStoreから別の場所にあるもう1つのFilePreferenceStoreにデータをコピーする必要がある場合に使用します。

dbtofile

DBPreferenceStoreからFilePreferenceStoreにデータをコピーする必要がある場合に使用します。

dbtodb

1つのDBPreferenceStoreから別のデータベース表に基づくもう1つのDBPreferenceStoreにデータをコピーする必要がある場合に使用します。

操作先がデータベースの場合、宛先のWebLogic ServerがWebCenter Portalポートレット・テンプレートを使用して作成されていること、および適切なスキーマがRCUを使用して作成されていることを確認する必要があります。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイドを参照してください。

移行モードを使用中の場合、-remapオプションおよび-countriesオプションを使用して、データが移行中にアップグレードされるように指定することもできます。特に、これらのオプションを使用して、ロケール固有のプリファレンスが適切に再マップされていることを確認します。

ユーティリティで使用できるその他のオプションを使用して、アップグレードまたは移行プロセスに必要な永続ストアのプロパティを指定します。これらのオプションは、provider.xmlに指定した、永続ストア用に記述したタグに対応している必要があります。

接頭辞が-pref1のプロパティは、ソース永続ストア(アップグレード・モードの場合は、唯一の永続ストア)のプロパティです。たとえば、-pref1UseHashing true -pref1RootDirectory j2ee/home/applications/jpdk/jpdk/WEB-INF/providers/sampleを指定すると、ソースのFilePreferenceStoreのuseHashingプロパティとrootDirectoryプロパティが設定されます。

移行基本モードを選択した場合、接頭辞が-pref2のプロパティは、ターゲット永続ストアのプロパティに対応します。たとえば、-pref2User portlet_prefs -pref2Password portlet_prefs -pref2URL jdbc:oracle:thin:@myserver.mydomain.com:1521:mysidを指定すると、ターゲットのDBPreferenceStoreにデータベース接続の詳細が設定されます。

例60-5 PDK-Java移行ユーティリティ・コマンドライン、移行

java -classpath WC_ORACLE_HOME/webcenter/modules/oracle.portlet.server_11.1.1/pdkjava.jar;
WC_ORACLE_HOME/webcenter/modules/oracle.portlet.server_11.1.1/ptlshare.jar;
WC_ORACLE_HOME/ucm/shared/classes/ojdbc14.jar \
oracle.portal.provider.v2.preference.MigrationTool \
-mode dbtofile \
-pref1User portlet_prefs \
-pref1Password portlet_prefs \
-pref1URL jdbc:oracle:thin:@myserver.mydomain.com:1521:mysid \
-pref2RootDirectory /mydirectory/preferences

60.3.8.2.2 アップグレード・モード

データを適切にアップグレードし、永続ストアで既存のロケール固有のプリファレンスを変更して、使用されているネーミングの書式がWebCenter Portalの現行バージョンおよび所定のlocalePersonalizationLevelの設定に適合するようにするには、アップグレード・モードを使用します。

表60-4では、ユーティリティを実行できるアップグレード・モードについて説明します。

表60-4 ユーティリティを実行するためのアップグレード・モード

モード

説明

file

FilePreferenceStore内のデータをアップグレードする必要がある場合に使用します。

db

DBPreferenceStore内のデータをアップグレードする必要がある場合に使用します。

アップグレード・モードは、次のような場合に使用できます。

- Oracle PDK 9.0.4.0.0以前からアップグレードして、既存のポートレットをデフォルトの言語設定localePersonalizationLevelで使用する場合(旧リリースでは、デフォルトの設定はlocaleでした)。

- Oracle Portal 9.0.2.0.0以前のリリースからアップグレードする場合で、localePersonalizationLevelの設定がlocaleである既存のポートレットを使用する場合(Oracle Portalでは現在、一部のロケール名が変更されているため、既存のデータには再マッピングが必要なものもあります)。

- 既存のポートレットのlocalePersonalizationLevelの設定をlocaleからlanguageに変更する場合。またはその反対に変更する場合。

アップグレード・モードを使用する際、-remapオプションを使用して、アップルグレードする目的のlocalePersonalizationLevel (languageまたはlocale)を指定する必要があります。-countriesオプションを使用して、ISO国コードの優先リストを指定し、様々な国に対して再マップされたプリファレンス間で衝突が生じた場合の優先順位を指定することもできます。たとえば、コマンドで-remap language -countries GB,USと指定すると、プリファレンス・ストアでアメリカ英語のプリファレンスとイギリス英語のプリファレンス(en_USとen_GB)が検出された場合、イギリス英語のプリファレンスが英語全体のプリファレンス(en)として再マップされます。

例60-6 PDK-Java移行ユーティリティ・コマンドライン、アップグレード

java -classpath WC_ORACLE_HOME/webcenter/modules/oracle.portlet.server_11.1.1/pdkjava.jar:
WC_ORACLE_HOME/webcenter/modules/oracle.portlet.server_11.1.1/ptlshare.jar:WC_ORACLE_HOME/ucm/shared/classes/ojdbc14.jar \
oracle.portal.provider.v2.preference.MigrationTool \
-mode file -remap language
-countries GB,US -pref1UseHashing true
-pref1RootDirectory j2ee/home/applications/jpdk/jpdk/WEB-INF/providers/sample

60.3.9 PDK-Javaポートレット・プロデューサの移動方法

場合によっては、ポートレット・プロデューサを移動することがあります。たとえば、新規サーバーに移動する必要がある場合があります。

PDK-Javaポートレット・プロデューサを移動するには:

1. 新規プロデューサをインストールします。

2. 次のタスクのいずれかを実行して、元のプロデューサの永続ストアを新規プロデューサで使用できるようにします。

- プリファレンス・ストア移行およびアップグレード・ユーティリティを使用して、永続ストアを移行します(詳細は、第60.3.8.2項「PDK-Javaプロデューサの永続ストアの移行」を参照してください)。または

- 新規プロデューサを構成して、元のプロデューサと同じ永続ストアを使用します。データベースの永続ストアを使用中の場合、WebLogic Serverデータ・ソースを元のプロデューサと同じデータベースに指定する必要があります。

3. Enterprise Manager Fusion Middleware ControlまたはWLSTコマンド(setWSRPProducerRegistrationまたはsetPDKJavaProducerRegistration)を使用して、プロデューサ登録のURLを更新します。

60.3.10 設計時にPDK-Javaポートレット・プロデューサをエクスポートおよびインポートする方法

設計時にポートレット・プロデューサをエクスポートおよびインポートできます。詳細は、第59.3.14項「設計時にポートレット・プロデューサをエクスポートおよびインポートする方法」を参照してください。

60.4 PDK-Javaポートレットのテスト

ポートレットを本番環境にデプロイする前に、まず、期待通りに動作することを確認するためにテストすることを強くお薦めします。

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

- 第60.4.1項「統合WebLogic ServerでのPDK-Javaポートレット・プロデューサ・アプリケーションのテスト方法」

- 第60.4.2項「統合WebLogic ServerでPDK-Javaポートレット・プロデューサ・アプリケーションをテストする場合の処理」

- 第60.4.3項「統合WebLogic ServerへのPDK-Javaポートレット・プロデューサのデプロイ方法」

- 第60.4.4項「ポートレット・パーソナライズのテスト方法」

60.4.1 統合WebLogic ServerでのPDK-Javaポートレット・プロデューサ・アプリケーションのテスト方法

統合WebLogic Server (統合WLS)には、ポートレットを短時間で簡単にテストする方法が用意されています。このテスト方法では、JDeveloper内でアプリケーションを実行できるように事前に構成されているため、デプロイメント・プロファイルを作成する必要はありません。

PDK-Javaポートレットを統合WLSでテストするには:

1. JDeveloperで、テストするポートレットが属するポートレット・プロデューサ・アプリケーションを開きます。

2. ポートレット・プロジェクト(「ポートレット」など)を開きます。

3. 「JSP」ページ(プロジェクト・フォルダのindex.jspなど)を右クリックし、「実行」を選択します。index.jspを実行すると、アプリケーションを基準に名付けられた統合WLSのインスタンスで、ポートレット・プロデューサ・アプリケーションのパッケージ化およびデプロイがトリガーされます。

4. 「IntegratedWebLogicServer - ログ」ウィンドウを確認し、デプロイの進行状況を監視します。ログには、アプリケーション・テスト・ページのURLが表示されます(図60-2)。URLの書式は、http://host:port/application_name-Portlets-context-root/index.jspです。

図60-2 DefaultServer - ログ

5. PDK-Javaアプリケーション・テスト・ページは、ブラウザ・ウィンドウで表示されます(図60-3)。

図60-3 ポートレット・プロデューサ・アプリケーション・テスト・ページ

6. 「サービス名」の下にあるリンクをクリックします。ブラウザが開き、図60-4に示すようなページが表示されます。このページのURLは、プロデューサを別のアプリケーションに登録する際に必要です。

図60-4 プロデューサ・テスト・ページ

7. または、次のようにURLを自分で構成できます。

http://host:port/context-root/providers/producer_name

ここで:

- hostは、プロデューザがデプロイされているサーバーです。

- portはHTTPリスナー・ポートです。通常、7101です。サーバーが起動すると、ポートがコンソールに表示されます。

- context-rootは、先に指定したWebアプリケーションのコンテキスト・ルートで、「WARデプロイメント・プロファイルのプロパティ」の「一般」にあります。

- producer_nameは、ポートレット・プロデューサの名前です。WARファイルには、複数のプロデューサが含まれていることがあるため、常にわかりやすいプロデューサ名にする必要があります。そうしないと、作成した最初のプロデューサをデフォルト・プロデューサとして取得することになります。デフォルト・プロデューサは、_default.propertiesファイルで定義されます。これは、プロジェクトの最初のプロデューサで作成されます。

このURLをブラウザに入力すると、図60-4に示すようなページが表示されます。

8. アプリケーションの実行中に、JDeveloperとブラウザを切り替え、アプリケーションを設計時に変更してその変更を保存し、ブラウザでテスト・ページをリフレッシュできます。

9. プロデューサが正常に実行している場合、プロデューサをアプリケーションに登録し、1つ以上のポートレットをページに追加して、それが正常に動作していることを確認する必要があります。プロデューサを登録することにより、そのプロデューサを探し、通信するために必要な情報をアプリケーションに提供します。プロデューサを登録すると、接続として表示され、プロデューサとそのポートレットは「アプリケーション・リソース」パネルの「接続」ノードまたは「リソース」パレットで使用できるようになります。
PDK-Javaポートレットのプロデューサを登録するには、第63.2.2項「WebCenter Portal FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」の手順に従います。

ポートレットをページに追加するには、第63.5項「ページへのポートレットの追加」の手順に従います。

10. 統合WLSインスタンスを停止するには、「Run Manager」タブで、DefaultServerを選択し、赤い「停止」アイコンをクリックします。インスタンスが停止すると、アプリケーションはアンデプロイされ、使用できなくなります。

ヒント:

「IntegratedWebLogicServer - ログ」ウィンドウで、赤い「停止」アイコンをクリックするか、DefaultServerを選択しても、統合WLSインスタンスを停止できます。

60.4.2 統合WebLogic ServerでPDK-Javaポートレット・プロデューサ・アプリケーションをテストする場合の処理

PDK-Javaポートレットを統合WLSで実行すると、次のことが起こります。

- PDK-Javaポートレットの構成ファイルが、WEB-INFディレクトリに追加されます。

- web.xmlファイルが、リスナーおよびサーバー・クラス、フィルタ、パラメータ、およびポートレット・プロデューサ・アプリケーションの正常な実行に必要なその他の構成で更新されます。
たとえば、ResourceServlet pdkresource、oracle.portlet.server.service.ContextFilterフィルタなどです。これらの構成は、ポートレットの要件によって異なります。

- PDK-Javaポートレットに必要なライブラリが、weblogic.xmlファイルに追加されます(oracle.portlet-producer.jpdkなど)。

60.4.3 統合WebLogic ServerへのPDK-Javaポートレット・プロデューサのデプロイ方法

PDK-Javaポートレット・プロデューサ・アプリケーションを統合WLSインスタンスで実行する場合、インスタンスが停止すると、アプリケーションはアンデプロイされるため使用できなくなります。より安定したテスト・シナリオの場合、デフォルト・サーバーの実行中に常に使用できるように、ポートレット・プロデューサ・アプリケーションを統合WLSにデプロイできます。

このメソッドを選択する場合、最初にデプロイメント・プロファイルを作成する必要があります(第61.4項「WARデプロイメント・プロファイルの作成」を参照してください)。アプリケーションを統合WLSにデプロイすると、「デプロイメント構成」ダイアログが表示され、デプロイメント設定の構成およびカスタマイズができます。JDeveloperで事前作成されたファイル・システムMDSリポジトリが、「リポジトリ名」フィールドに表示されます。

統合WLSでのアプリケーションのデプロイおよび実行の詳細は、第7.2項「統合WebLogic ServerへのPortal Frameworkアプリケーションのデプロイ」を参照してください。

60.4.4 ポートレット・パーソナライズのテスト方法

ポートレットのパーソナライズを実装した場合、「パーソナライズ」リンクは、認証されたユーザーのポートレットにのみ表示されます。そのため、ポートレットのパーソナライズ(「パーソナライズ」リンク)をテストするには、ポートレットを使用するアプリケーションに対して、なんらかのセキュリティを実装しておく必要があります。テストのためには、最も基本的な認証を構成すれば済みます。詳細は、第74.12項「ポートレット・パーソナライズをテストするための基本認証の構成」を参照してください。

60.5 PDK-Javaポートレットのデプロイ

ポートレット・プロデューサは、WebCenter Portalポートレット・プロデューサをサポートするために構成されているWebLogic管理対象サーバーにデプロイできます。デプロイの前に完了する必要がある前提条件のリストは、第61.1項「ポートレット・プロデューサのデプロイの概要」を参照してください。

PDK-Javaポートレット・プロデューサをデプロイするための最初の手順は、プロデューサとその関連付けられたファイルをパッケージ化する方法を示すWARデプロイメント・プロファイルを作成することです。詳細は、第61.4項「WARデプロイメント・プロファイルの作成」を参照してください。

PDK-JavaポートレットのみをEARファイルとしてデプロイするには、WARデプロイメント・プロファイルの作成後、アプリケーション全体をパッケージ化するEARデプロイメント・プロファイルも作成する必要があります。詳細は、第7.3.2.2項「デプロイメント・プロファイルの作成」を参照してください。

注意:

EARデプロイメント・プロファイルを作成する際には、WARファイルがアプリケーションのEARファイルに含まれていることを確認します。

EARデプロイメント・プロファイルを作成すると、ポートレット・プロデューサを管理対象サーバーにデプロイできます。詳細は、第61.5項「WebLogic管理対象サーバーへのポートレット・プロデューサのデプロイ」を参照してください。

注意:

PDK-Javaポートレット・プロデューサをデプロイする場合、プロデューサにはJSR 286ポートレットが含まれていないため、「デプロイメント・タイプの選択」ダイアログが表示されなくなります。

PDK-Javaポートレット・プロデューサをWebLogic管理対象サーバーにデプロイすると、構成設定(第60.4.2項「統合WebLogic ServerでPDK-Javaポートレット・プロデューサ・アプリケーションをテストする場合の処理」を参照してください)が設計時にアプリケーションのEARファイルに追加されます。

60.6 Strutsポートレットの作成

Oracle PDKには、Apache Strutsアプリケーションを統合するための拡張機能が含まれています。この項では、既存のStrutsアプリケーションからポートレットを作成する方法を説明します。また、その作成手順に従うと、Model-View-Controllerパラダイムを使用するポートレットも作成できます。この項で説明するPDK-Javaの拡張機能は、Apache Struts 1.1に準拠しています。

Strutsフレームワークを使用して、ポートレットの動作を拡張できます。たとえば、Strutsコントローラはポートレット内のページ・フローで使用できます。ポートレット・レンダラは、ポートレット・レンダリング・リクエストとStrutsサーブレット・リクエストとのブリッジとして使用されます。

次に示すコードは、プロデューサ定義ファイル(provider.xml)の一部です。

...
<renderContainer>true</renderContainer>
<renderCustomize>true</renderCustomize>
<autoRedirect>true</autoRedirect>
<contentType>text/html</contentType>
<showPage class="oracle.portal.provider.v2.render.http.StrutsRenderer">
<defaultAction>showCustomer.do</defaultAction>
</showPage>
</renderer>
...

StrutsポートレットのshowPageには、次の2つの重要なコンポーネントが含まれています。

- レンダー・クラス(oracle.portal.provider.v2.render.http.StrutsRenderer)は、レンダリング・リクエストを受信し、Strutsアクション・サーブレットに転送します。

- defaultActionタグは、ポートレットが初めてコールされたときにデフォルトで使用するStrutsアクションを定義します。

PDK-Javaを使用すると、Strutsアプリケーションのビュー(ポートレット・ビュー)を簡単に開発できます。このビューによって、ポータル・スタイルを使用するStrutsポートレットでは整合性のとれたルック・アンド・フィールが維持され、エンド・ユーザーはポータル内でアプリケーションを使用できます。

Strutsポートレットを作成するには、デフォルトのStruts JSPタグの拡張であるPDK-Java Strutsタグを使用する必要があります。この開発プロセスは、スタンドアロンのStrutsアプリケーションを作成するプロセスに似ています。Strutsフレームワークを使用するプロデューサ・アプリケーションのポートレットの場合、Strutsコンポーネントは同じWebアプリケーションの一部である必要があります。

既存のStrutsアプリケーションの一部をポートレットとして公開するには、最初に、アプリケーションのポートレット・ビューとして機能する新規ビューを作成することをお薦めします。このビューでは、既存のオブジェクト(Actions、ActionFormなど)とともに新しいマッピングとJSPを使用します。

注意:

アプリケーションのポートレット・ビューを作成することをお薦めしますが、アプリケーションのStrutsタグをPDK-JavaのStrutsタグに置き換えることもできます。この方法を使用すると、アプリケーションをスタンドアロンStrutsとポートレットの両方として実行できます。

この例では、新規エントリをブログに追加できるポートレットを作成します。図60-5および図60-6は、ブログを送信してブログ・エントリを保存する方法を示しています。

図60-5 Blogの送信

図60-6 Blogエントリの保存

prepareNewBlogは、リクエストをenterNewBlog.jspページにリダイレクトする単純な空のアクションです。このページには、新しいBlogを送信するためのフォームが表示されます。

struts-config.xmlで対応するエントリは次のとおりです。

<action path="/prepareNewBlog" scope="request"
type="view.PrepareNewBlogAction" >
<forward name="success" path="/view/enterNewBlog.jsp"/>
</action>
<action path="/saveNewBlog" name="blogForm" scope="request"
type="view.SaveNewBlogAction" input"/view/enterNewBlog.jsp"  >
<forward name="success" path="/view/newBlogConfirmation.jsp"/>
</action>

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

- 第60.6.1項「ポートレット・アクションをホスティングするための新しいフローとビューの作成方法」

- 第60.6.2項「新しいJSPの作成方法」

- 第60.6.3項「ポートレットの作成方法」

- 第60.6.4項「ビジネス・ロジックを追加するためのポートレットの拡張方法」

- 第60.6.5項「プロデューサの登録方法」

60.6.1 ポートレット・アクションをホスティングするための新しいフローとビューの作成方法

新しいビューを作成するには、最初に、様々なアクションとリクエストをPortal固有のJSPにリダイレクトするActionMappings (ページ・フロー)の新しいセットを作成します。

<action path="/portal/prepareNewBlog" scope="request"
type="view.PrepareNewBlogAction" >
<forward name="success" path="/view/portal/enterNewBlog.jsp"/>
</action>
<action path="/portal/saveNewBlog" name="blogForm" scope="request"
type="view.SaveNewBlogAction" input="/view/enterNewBlog.jsp"  >
<forward name="success" path="/view/portal/newBlogConfirmation.jsp"/>
</action>

変更するのはパス属性のみです。FormBeanアクションは、アプリケーションのビジネス・ロジックが変更されないようにします。

60.6.2 新しいJSPの作成方法

前述の手順で指定したように、アクションによってリクエストが新しいJSPに転送され、JSPでポートレットのコンテンツがレンダリングされます。新しいポートレット・ビューのJSPは、HTMLをスタンドアロン・ビューと共有できますが、ポートレットが次の条件を満たしていることを確認してください。

- 他のページと整合性のとれたルック・アンド・フィールを実現するスタイルが使用されていること。

- HTMLの表のセルに格納できるHTMLコードが含まれていること(つまり、<html>、<body>および<frame>タグ以外)。

- Struts HTMLタグ・ライブラリのPDK-Javaバージョンを使用していること。これは、ポートレット・コンテキストで機能する適切な書式にURLをレンダリングします。

PDK Struts HTMLタグ・ライブラリには、ポートレット・マークアップで使用可能なStruts HTMLタグのバージョンがあります。

注意:

Oracle PDKはOracle JDeveloperに登録できるため、Oracle JDeveloperのコンポーネント・パレットからタグを削除できます。詳細は、Oracle JDeveloperのオンライン・ヘルプで、JDeveloperでのカスタム・タグ・ライブラリの登録に関する項を参照してください。

60.6.3 ポートレットの作成方法

Strutsポートレットは、手動または「Oracle PDK-Javaポートレットの作成」ウィザードを使用して作成できます。ウィザードでは明示的にStrutsサポートを提供していませんが、ウィザードを使用してStrutsポートレットを作成できます。

ポートレットを作成するには:

1. JDeveloperで、「Oracle PDK-Javaポートレット」ウィザードを開きます。
詳細は、第60.2.1項「PDK-Javaポートレットの作成方法」を参照してください。

2. 「ページを表示」モードの場合、ウィザードの「ビュー・モード」ページで、「Javaクラス」の「実装スタイル」を選択します。

3. 「パッケージ名」には、oracle.portal.provider.v2.render.httpと入力します。

4. 「クラス名」には、StrutsRendererと入力します。これにより、ポートレットのレンダラ・クラスのスケルトンとしてStrutsRendererが生成されます。

5. StrutsRendererはPDKに含まれているため、この生成されたファイルは必要ありません。したがって、ウィザードが完了した後は、ウィザードで生成されたファイルを削除する必要があります。これを行うには、「システム・ナビゲータ」ウィンドウでファイルをクリックし、JDeveloperの「ファイル」メニューから「ディスクから削除」を選択します。

6. provider.xmlを編集して、次のプロパティを変更します。
プロデューサ・レベルで、次のタスクを実行します。

- Strutsアプリケーションがセッションを使用する場合(たとえば、フォーム・シンクロナイザのトークン・メカニズムが使用されているか、または<actionInSession>がtrueに設定されている場合)、セッション処理を有効にします。

<session>true</session>

ポートレット・レベルで、次のタスクを実行します。

- ユーザーがコンテナ・ページを終了するたびに元のポートレット状態に戻るようにするには、StrutsアクションをStrutsコンテキストに保存するようにStrutsレンダラを構成します。

<actionInSession>true</actionInSession>

ユーザーがコンテナ・ページの外部から戻ると常にポートレットの先頭から開始するようにするには、Strutsアクションを保存しないでください。

<actionInSession>false</actionInSession>

この設定はデフォルトの動作です。

- ポートレットがコールされたときに起動する最初のアクションを指定します。次のコードを使用します。

<showPage class="oracle.portal.provider.v2.render.http.StrutsRenderer">
<defaultAction>/portal/prepareNewBlog.do</defaultAction>
</showPage>

60.6.4 ビジネス・ロジックを追加するためのポートレットの拡張方法

アプリケーションで、ユーザーの情報、パーソナライズ、ローカライゼーションなど、環境固有のコードを追加する必要があります。これを行うために、コンテキストでのみコールでき、すべてのビジネス・ロジックを処理する新しいActionクラスを作成できます。

60.6.5 プロデューサの登録方法

ポートレットをコンシューマが使用する準備が完了すると、そのポートレットを登録してアクセス可能にする必要があります。PDK-Javaポートレットの登録方法の詳細は、第63.2.2項「WebCenter Portal FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。

60.7 PDK-Javaポートレットのトラブルシューティング

この項では、PDK-Javaポートレットの作成およびテストの際に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

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

- 第60.7.1項「ポートレットの作成ウィザードにアクセスできない」

- 第60.7.2項「ポートレットに必要なポートレット機能が追加できない」

60.7.1 ポートレットの作成ウィザードにアクセスできない

問題

「新規ギャラリ」で、「Oracle PDK-Javaポートレット」オプションが表示されません。

原因

PDK-Javaポートレットを作成するアプリケーションは、WebCenter PortalのPortal Frameworkアプリケーション・テンプレートを使用して構築されているため、ポートレット作成用にスコープ設定されていません。

解決方法

1. ポートレット・プロデューサ・アプリケーションまたはポートレット作成用にスコープ設定されているアプリケーション(WebCenter PortalのPortal Frameworkアプリケーション・テンプレートを使用して構築されているアプリケーション以外のアプリケーション)でポートレットを作成します。

2. 「新規ギャラリ」で、「すべてのテクノロジ」タブをクリックすると、アプリケーションのテクノロジ・スコープに関係なく、使用できるすべてのオプションがリストされます。

60.7.2 ポートレットに必要なポートレット機能が追加できない

問題

「Oracle PDK-Javaポートレットの作成」ウィザードで、一部の機能(ポートレット・イベントまたはパブリック・レンダラ・パラメータなど)をポートレットに追加するためのオプションが表示されません。

原因

「Oracle PDK-Javaポートレットの作成」ウィザードでは、一部の機能をポートレットに追加するためのオプションが使用できません。

解決方法

「Oracle PDK-Javaポートレットの作成」ウィザードを使用してポートレットを作成後、ポートレットを編集して拡張機能を追加します。詳細は、第60.3項「PDK-Javaポートレットの開発」を参照してください。

61 ポートレット・プロデューサのデプロイ

この章では、アプリケーション・デプロイメントをテストする、または本番環境のアプリケーションをホストするように構成されているOracle WebLogic管理対象サーバーに、Oracle JDeveloperを使用してポートレット・プロデューサをデプロイする方法を説明します。

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

- 第61.1項「ポートレット・プロデューサのデプロイの概要」

- 第61.2項「ポートレット・プロデューサをデプロイするためのWebLogic管理対象サーバーの作成とプロビジョニング」

- 第61.3項「ポートレット・プロデューサWebLogic管理対象サーバーへの接続の作成」

- 第61.4項「WARデプロイメント・プロファイルの作成」

- 第61.5項「WebLogic管理対象サーバーへのポートレット・プロデューサのデプロイ」

Fusion Middleware Control、Oracle WebLogic Server管理コンソールまたはWLSTを使用してプロデューサをデプロイする方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のポートレット・プロデューサ・アプリケーションのデプロイに関する項を参照してください。

アプリケーションのデプロイに関する一般的な情報は、第7章「Portal Frameworkアプリケーションのデプロイおよびテスト」を参照してください。

61.1 ポートレット・プロデューサのデプロイの概要

ポートレット・プロデューサは、JDeveloperから直接、WebCenter Portalポートレット・プロデューサをサポートするために構成されているOracle WebLogic管理対象サーバーにデプロイできます。

WebLogic管理対象サーバーは、ドメインの一部としてJDeveloperの外部に存在し、そのドメイン内の管理サーバーの管理下にあります。WebLogic管理対象サーバーでは、アプリケーションが、アプリケーションに必要なライブラリや他のリソースとともに、ホストされます。ドメインは、Oracle WebLogic Serverリソースの論理的に関連付けられたグループであり、任意の個数の管理対象サーバーが属することができます。管理対象サーバーは、テスト環境または本番環境、あるいはその両方の環境でアプリケーションを実行するように構成できます。

ポートレット・プロデューサをWebLogic管理対象サーバーにデプロイする手順は次のとおりです。

1. 必要な共有ライブラリがすべて含まれているWebLogic管理対象サーバー・インスタンスを作成し、プロビジョニングします。詳細は、第61.2項「ポートレット・プロデューサをデプロイするためのWebLogic管理対象サーバーの作成とプロビジョニング」を参照してください。

2. WebLogic管理対象サーバーはJDeveloperの外部にあるため、そのサーバーへの接続を作成する必要があります。詳細は、第61.3項「ポートレット・プロデューサWebLogic管理対象サーバーへの接続の作成」を参照してください。

3. アプリケーションのWARデプロイメント・プロファイルを作成します。詳細は、第61.4項「WARデプロイメント・プロファイルの作成」を参照してください。

4. ポートレット・プロデューサをWebLogic管理対象サーバーにデプロイします。詳細は、第61.5項「WebLogic管理対象サーバーへのポートレット・プロデューサのデプロイ」を参照してください。

注意:

ADFセキュリティの構成ウィザードで自動付与機能を有効にした場合(第74.3.1項「ADFセキュリティ設定の構成」を参照)は、ポートレット・プロデューサをデプロイする前にtest-allアプリケーション・ロールを削除する必要があります。test-allロールによってすべてのADFリソースが公開されるため、このロールが存在していると、アプリケーションのリソースが保護されない状態になるリスクが高まります。したがって、アプリケーションレベルのポリシー・ストアを移行する前にこのロールを削除する必要があります。

詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のtest-allロールをアプリケーション・ポリシー・ストアから削除する方法に関する項を参照してください。

61.2 ポートレット・プロデューサをデプロイするためのWebLogic管理対象サーバーの作成とプロビジョニング

ポートレット・プロデューサをWebLogic管理対象サーバーにデプロイする前に、必要なすべての共有ライブラリを含むカスタム・プロデューサ・サービス・テンプレートoracle.wc_custom_services_producer_template_11.1.1.jarに基づいて、WebLogic管理対象サーバーを作成する必要があります。

このテンプレートを使用すると、WC_CustomServicesProducerという名前のカスタム・サービス・プロデューサ管理対象サーバーが作成され、すべての必要なリソースのターゲットとなります。また、次のJDBCデータ・ソースも追加されます。

- mds-CustomServicesProducerDS (MDSスキーマへのアクセス用)

- WebCenter-CustomServicesProducerDS (WebCenterスキーマへのアクセス用)

- Activities-CustomServicesProducerDS (Activitiesスキーマへのアクセス用)

- Portlet-CustomServicesProducerDS (Portletスキーマへのアクセス用)

カスタム・サービス・プロデューサ管理対象サーバーを作成するには:

1. 構成ウィザードをグラフィカル・モードで起動します。
詳細は、『Oracle Fusion Middleware構成ウィザードによるドメインの作成』のグラフィカル・モードでの構成ウィザードの起動に関する項を参照してください。

2. 「ようこそ」ページで、「既存のWebLogicドメインの拡張」を選択し、「次へ」をクリックします。

注意:

必要に応じて、管理対象サーバー用の新しいドメインを作成できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイドの新しいドメインの作成に関する項を参照してください。

3. 「WebLogicドメイン・ディレクトリの選択」ページで、有効なドメイン・ディレクトリを選択し、「次へ」をクリックします。
ドメイン・ディレクトリには、config.xmlファイルを含むconfigディレクトリが含まれます。ナビゲーション・ツリー内で、これらのディレクトリは青いフォルダ・アイコンによって示されます。

4. 「拡張ソースの選択」ページで、「既存の拡張テンプレートを使用してドメインを拡張する」を選択し、次のようにテンプレートのパスを指定します。

- UNIXオペレーティング・システムの場合:

WebCenter_ORACLE_HOME/common/templates/applications/oracle.wc_custom_services_producer_template_11.1.1.jar

- Windowsオペレーティング・システムの場合:

WebCenter_ORACLE_HOME\common\templates\applications\oracle.wc_custom_services_producer_template_11.1.1.jar

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

6. このウィザードの残りの手順の詳細は、『Oracle Fusion Middleware構成ウィザードによるドメインの作成』のグラフィカル・モードでのWebLogicドメインの拡張に関する項を参照してください。

注意:

ポートレット・プロデューサに必要なのはMDSスキーマへのアクセスのみですが、後から警告が表示されないように、管理対象サーバー用に作成したすべてのJDBCデータ・ソースを構成することをお薦めします。

61.3 ポートレット・プロデューサWebLogic管理対象サーバーへの接続の作成

JDeveloperを使用して、ポートレット・プロデューサをJDeveloperの外部にあるWebLogic管理対象サーバー・インスタンスにデプロイする前に、そのポートレット・プロデューサのデプロイ先となる管理対象サーバー・インスタンスを含むドメインへの接続を作成する必要があります。WebLogic管理対象サーバー・インスタンスへの接続を作成する前に、ターゲットの管理対象サーバーが稼働し、必要なライブラリが存在していることを確認します。

ポートレット・プロデューサ用のWebLogic管理対象サーバー接続を作成するには:

1. JDeveloperで、「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」で、「一般」を開き、「接続」、「アプリケーション・サーバー接続」の順に選択します。

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

4. アプリケーション・サーバー接続の作成ウィザードのステップ1で、新しい接続の名前(WC_MyPortletProdなど)を入力し、「次へ」をクリックします。

5. ステップ2で、認証のためのユーザー名とパスワードを指定して、「次へ」をクリックします。

6. ステップ3で、WebLogic管理対象サーバーのホスト名(webcenter.myserver.example.comなど)およびポート番号(7888など)を入力します。

7. 「WLSドメイン」フィールドで、WebLogic管理対象サーバー・インスタンスが作成されるドメインの名前(wc_serverなど)を指定し、「次へ」をクリックします。

8. ステップ4で、「接続のテスト」をクリックします。
テストが正常終了した場合、ターゲットのWebLogic管理対象サーバーへの接続は作成されています。

9. 「終了」をクリックします。

61.4 WARデプロイメント・プロファイルの作成

ポートレット・プロデューサをJDeveloperの外部にある管理対象サーバーにデプロイするには、プロデューサとその関連付けられたファイルのパッケージ化の方法を示すデプロイメント・プロファイルを作成する必要があります。そのためには、Webアプリケーション・アーカイブ(WAR)ファイルを作成する必要があります。

WARデプロイメント・プロファイルを作成するには:

1. アプリケーション・ナビゲータで、ポートレット・プロデューサを含むプロジェクト・フォルダ(「ポートレット」など)を右クリックし、「新規」を選択します。

2. 「新規ギャラリ」で、「一般」を開き、「デプロイメント・プロファイル」、「WARファイル」の順に選択して、「OK」をクリックします。

3. 「デプロイメント・プロファイルの作成 -- WARファイル」ダイアログで、デプロイメント・プロファイルの名前を入力し、「OK」をクリックします。

4. 「WARデプロイメント・プロファイルのプロパティの編集」ダイアログで、「Java EE Webコンテキスト・ルートを指定」を選択してコンテキスト・ルートを入力し、「OK」をクリックします。

5. 「プロジェクト・プロパティ」ダイアログの「デプロイメント・プロファイル」で、作成したWARファイルを選択し、「OK」をクリックします。

61.5 WebLogic管理対象サーバーへのポートレット・プロデューサのデプロイ

デプロイメント・プロファイルを作成すると、ポートレット・プロデューサを管理対象サーバーにデプロイできます。

ポートレット・プロデューサをWebLogic管理対象サーバーにデプロイするには:

1. 「アプリケーション・ナビゲータ」で、プロジェクト・フォルダ(「ポートレット」など)を右クリックして「デプロイ」を選択し、第61.4項「WARデプロイメント・プロファイルの作成」で作成したデプロイメント・プロファイル(WARファイル)を選択します。

2. 「デプロイ」ダイアログの「デプロイメント・アクション」ページで、「アプリケーション・サーバーへのデプロイ」を選択し、「次へ」をクリックします。

3. 「サーバーの選択」ページで、管理対象サーバーへの接続を選択し、「次へ」をクリックします。

4. 「WebLogicオプション」ページで、「ドメイン内の選択したインスタンスへのデプロイ」を選択し、ポートレット・プロデューサのデプロイ先となる管理対象サーバーを選択した後、「終了」をクリックします。

5. アプリケーションにJSR 286ポートレットが含まれている場合は、「デプロイメント・タイプの選択」ダイアログが表示されます(図61-1)。「はい」を選択し、「OK」をクリックして、このアプリケーションをWSRPサービスとして公開するために必要な構成を追加します。

図61-1 「デプロイメント・タイプの選択」ダイアログ

ヒント:

前回のデプロイ時に「このダイアログ・ボックスを今後表示しない」を選択した場合、このダイアログは表示されません。

6. 「デプロイメント - ログ」ウィンドウに、Deployment startedというメッセージが表示されます。アプリケーションがターゲット・サーバー・インスタンスに正常にデプロイされると、ログにDeployment finishedというメッセージが表示されます。

注意:

ポートレット・プロデューサをクラスタ環境にデプロイしている場合は、次の警告が表示されます。

WARNING:  oracle.webcenter.lifecycle.exception.LifecycleLockedException: A lock exists that prevents export set import.

これは想定されている動作です。アプリケーションをデプロイする場合、EARファイルにエクスポートされたプロデューサ・メタデータ(MARファイルと同様)を、本番環境で使用するMDSスキーマにインポートする必要があります。デプロイメント中に、メタデータは自動的にインポートされます。このインポートは、クラスタの1つのノードでのみ実行する必要があります。そのため、クラスタの他のノードが同じ操作を実行するのを防ぐためにロックが発生します。

7. デプロイメントが完了したら、デプロイ中に発生したエラーをログで確認します。

8. アプリケーションが正常にデプロイされたことを確認するために、プロデューサのテスト・ページをブラウザ内に表示します。テスト・ページのURLは次のとおりです。

http://host:port/context-root/info

ここで:

- hostは、アプリケーションがデプロイされているサーバーです。

- portはHTTPリスナー・ポートです。通常は7101です。

- context-rootは、「WARデプロイメント・プロファイルのプロパティの編集」で定義された、アプリケーションのコンテキスト・ルートです(第61.4項「WARデプロイメント・プロファイルの作成」を参照)。

図61-2 WSRPプロデューサ・テスト・ページ

62 ページレット・プロデューサによるページレットの作成

ページレットは、再使用可能なユーザー・インタフェース・コンポーネントです。任意のHTMLフラグメントをページレットにできますが、ページレット開発者は、パラメータ化された構成可能なページレットを記述し、その他のページレットと動的にやりとりし、ユーザー入力に応答するようにすることもできます。ページレットは、ポータルや他のWebアプリケーション内など、どのWebページでも実行できます。ページレットを使用すれば、他のWeb環境でプラットフォーム固有のポートレットを公開できます。Oracle WebCenter Portalのページレット・プロデューサ(旧Oracle WebCenter Ensemble)は、動的なページレット開発を容易にする有用なツールと機能のコレクションを提供します。

この章には次の項が含まれます。

- 第62.1項「ページレット・プロデューサの概要」

- 第62.2項「ページレット・プロデューサ設定の構成」

- 第62.3項「ページレット・プロデューサ・オブジェクトの作成」

- 第62.4項「WSRPおよびOracle JPDKポートレットに対するページレット・クロムの使用」

- 第62.5項「OpenSocialガジェットの使用」

- 第62.6項「ページレット・プロデューサを使用したカスタム・ページレットの構築」

- 第62.7項「Webアプリケーションでのページレットの使用」

- 第62.8項「例と高度なトピック」

- 第62.9項「ページレットのトラブルシューティング」

62.1 ページレット・プロデューサの概要

この項では、ページレット・プロデューサの使用方法と、その基になるアーキテクチャおよびコンポーネントについて説明し、重要な概念を紹介します。

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

- 第62.1.1項「ページレット・プロデューサの概要」

- 第62.1.2項「ページレット・プロデューサのアーキテクチャ」

- 第62.1.3項「ページレット・プロデューサの要件」

62.1.1 ページレット・プロデューサの概要

ページレット・プロデューサにより、既存のWebインフラストラクチャを新しい方法で使用できるようにし、このインフラストラクチャへの投資を活用できます。ページレット・プロデューサによって、次のものを利用できます。

- デフォルトで統合APIやポートレットを公開しないアプリケーションのWeb UI

- WSRP (JSR-168またはJSR-286)、JPDK、CSP、WebPartsなどの標準ポートレット

また、Web UIをWebCenter Portal、WebCenter SitesまたはほとんどのHTMLページで使用できるようになり、さらに、ページレット・プロデューサ・リソースに対するロールベースのアクセス制御や、HTMLマークアップの解析、クリッピング、挿入およびイベント処理(ページレット間の通信)によるWebリソースのリバース・プロキシも可能になります。

ページレット・プロデューサでは、次のものが提供されます。

- 既存のWeb UIを利用し、それをページレットというポータブル・コンポーネントとして再利用するためのツール

- ポートレットの標準をサポートしない非標準または非コンプライアンス・コンテナおよびコンポーネントを統合するための代替手段。たとえば、次の操作が可能です。

- ポートレットを公開しないWebアプリケーションから機能を取得します。

- 既存のWSRP、JPDKまたはContent Syndication Protocol (CSP)ポートレットを非ポータル設定で使用できるようにします。

- HTMLマークアップを変更するためのインジェクタとパーサー

- ページレット間の通信およびイベント処理用のJavaScriptフレームワーク

62.1.2 ページレット・プロデューサのアーキテクチャ

この項では、ページレット・プロデューサのアーキテクチャと主要コンポーネントについて説明します。この項には次のサブセクションが含まれます:

- 第62.1.2.1項「ページレット・プロデューサのアーキテクチャとコンポーネント」

- 第62.1.2.2項「ページレット・プロデューサの主要概念」

- 第62.1.2.3項「ページレット・プロデューサ・コンソール」

- 第62.1.2.4項「HTTPとContent Syndication Protocolの使用」

- 第62.1.2.5項「ページレット・プロデューサのプロキシ」

62.1.2.1 ページレット・プロデューサのアーキテクチャとコンポーネント

図62-1は、ページレット・プロデューサのコンポーネントとそれらの相互作用の概念図を示しています。また、図62-1には、ページレット・リクエストがページレット・プロデューサ内でどのように処理されるかも反映されています。リクエストは、受信リクエストをリソースにマップするプロキシ・サーブレットによって受信されます。次に、リクエストは認証されます。リクエストされたリソースにユーザーがアクセスできる場合、ページレットの処理は、バックエンド・システムからHTMLマークアップをリクエストすることによって開始されます。受信したマークアップは、定義済のクリッパやパーサーなどを使用して変更されます。

図62-1 ページレット・プロデューサ - 大まかなアーキテクチャ

図62-2は、コンポーネントの相互作用を異なる見方で示しています。

図62-2 ページレット・プロデューサ - 相互作用フロー

A: ページレット・プロデューサ・アプリケーションがJ2EEアプリケーション・サーバー上で実行されます。ページレット・プロデューサにはWebCenterスキーマは必要ありませんが、MDSインスタンス(通常はWebCenterと共有されている)は必要です。

B: ユーザーがページレットを含むWebCenter Portalページをコールします。

C: WebCenter Portalによってページが返され、さらにページレットをレンダリングするためのページレット・プロデューサをコールするJavaScriptが返されます。

D: JavaScriptによってページレット・プロデューサへのレンダリング・コールが行われます。

E: ページレット・プロデューサでは、外部(E1)または内部(E2) WebアプリケーションをHTMLコンテンツのソースとしてコールできます。ページレット・プロデューサによってコンテンツが変換され(つまりURLがリライトされ)、ページに挿入できるようブラウザに返されます。ページレット・プロデューサ自体には、外部から(つまり、DMZ内で)アクセスできます。

62.1.2.2 ページレット・プロデューサの主要概念

ページレット・プロデューサの使用時に役立つ主要概念は、次のとおりです。

- リソースは、スタンドアロンのWebアプリケーション、ページレット・プロデューサ、OpenSocialコンテナなど、ページレット・プロデューサ内のアプリケーションを登録するために使用する主要オブジェクトです。リソースを作成すると、プロキシによる外部URLへの内部アプリケーションのマップ、認証の管理およびアプリケーションの変換が可能になります。Webアプリケーションをページレット・プロデューサ・リソースとして登録すると、次のことが可能になります。

- 内部Webアプリケーションの外部アドレスへのプロキシ

- プロキシ・レベルとリソース・レベルの両方における認証の管理

- URLのリライトなど、プロキシされたWebアプリケーションの変換

リソースの作成の詳細は、第62.3.1項「リソースの作成」を参照してください。

- ページレットは、ページレット・プロデューサを通じてアクセスするWebページのサブコンポーネントであり、プロキシされた任意のアプリケーションに挿入できます。マークアップを返すページレット・プロデューサ・リソース上のアプリケーションは、ページレットとして登録でき、その後、ポータルやFrameworkアプリケーション、あるいはその他のWebアプリケーションに表示することが可能です。
任意のHTMLフラグメントをページレットにできます。ページレット開発者は、パラメータ化された構成可能なページレットを作成し、非同期JavascriptおよびXML (AJAX)パターンを使用して、その他のページレットと動的にやり取りしたり、ユーザー入力に応答できます。

ページレットの作成の詳細は、第62.3.2項「ページレットの作成」を参照してください。

ページレット・プロデューサの登録は動的です。既存のプロデューサに対する追加および更新は、すぐに実行できます。ほとんどの場合、ポータルやFrameworkアプリケーションまたは管理対象サーバーを再起動する必要はありません。

62.1.2.3 ページレット・プロデューサ・コンソール

ページレット・プロデューサ・コンソールは、ページレット・プロデューサ・デプロイメント内の様々なオブジェクトを作成および管理するために使用する、ブラウザベースの管理ツールです。このコンソールから、リソースとしてのWebアプリケーションの登録、ページレットの作成、プロキシおよび変換設定の管理などを行うことができます。

ページレット・プロデューサ・コンソールには、任意のWebブラウザからアクセスできます。URLは次のとおりです。

http://<host>:<port>/pagelets/admin

ページレット・プロデューサ・コンソールは、次の場所からアクセシビリティ・モードで起動することもできます。

http://<host>:<port>/pagelets/admin/accessible

実行中、ページレット・プロデューサ・コンソールには、WebCenter Portalの「共有アセット」タブからアクセスすることもできます。

注意:

ページレット・プロデューサ・コンソールでは、標準管理言語とオランダ語のみがサポートされます。ブラウザの言語をこれ以外の言語に構成した場合は、現在のサーバー用に定義された言語に戻ります。

ページレット・プロデューサ・コンソールを使用したページレット・プロデューサの構成とオブジェクトの作成の詳細は、第62.2項「ページレット・プロデューサ設定の構成」および第62.3項「ページレット・プロデューサ・オブジェクトの作成」を参照してください。ページレット・プロデューサ・コンソールを使用したプロデューサの登録とページレット・データの移行の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「ページレット・プロデューサの管理」の章を参照してください。

62.1.2.4 HTTPとContent Syndication Protocolの使用

HTTPは通常WebページのコンテンツとXMLをサーバーとクライアント間で送信するために使用されるプロトコルです。Content Syndication Protocol (CSP)は、HTTPを拡張したオープン標準であるHTTP 1.1に基づく、プラットフォームに依存しないプロトコルで、ページレット・プロデューサと外部CSPリソース間の通信構文を定義します。

外部リソースのサービスは、CSPを使用してページレット・プロデューサと通信します。たとえば、ブラウザがページをリクエストすると、ページレット・プロデューサが各外部リソースに対する同時リクエストを作成し、ページからページレット・コンテンツを取得します。外部リソースは、現在のユーザーのプリファレンスをページレット・プロデューサから送信されたCSPヘッダーから読み取り、適切なHTMLを戻します。ページレット・プロデューサはHTMLをページ・マークアップに挿入します。イメージ・サービスに格納されたイメージは、ブラウザによって取得、表示されます。

この項には次のサブセクションが含まれます:

- 第62.1.2.4.1項「HTTP」

- 第62.1.2.4.2項「Content Syndication Protocol」

62.1.2.4.1 HTTP

HTTP通信は、リクエストとレスポンスで構成されます。リクエストとレスポンスは、基本的にはヘッダー内のメタデータの名前/値ペアのリストで、オプションでボディが付いています。ボディは、送信されているデータ(HTMLページまたはXMLファイル)です。ヘッダー内のメタデータは、リクエストまたはレスポンス自体の情報(コンテンツを表示する言語、ブラウザがコンテンツをキャッシュする期間など)です。リクエストとレスポンスには、それぞれ、次に説明する固有の情報が含まれています。HTTPの詳細は、RFC 2616を参照してください(http://www.faqs.org/rfcs/rfc2616.html)。

クライアントはサーバーにHTTPリクエストを送信し、コンテンツを要求します。リクエスト・ボディは、POSTやPUTなど、サーバーにデータを送信するリクエストにのみ使用されます。

HTTPリクエストの形式:

[METHOD] [REQUEST-URI] HTTP/[VERSION]
[fieldname1]: [field-value1]
[fieldname2]: [field-value2]
[request body, if any]

HTTPリクエストの例:

GET /index.html HTTP/1.1
Host: www.xmlns.oracle.com
User-Agent: Mozilla/3.0 (compatible; Opera/3.0; Windows 95/NT4)
Accept: */*
Cookie: username=JoeSmith

サーバーは、ページ・コンテンツ、およびコンテンツのタイプ、ドキュメントの最終変更時期、サーバー・タイプなどの重要な詳細を含むHTTPレスポンスを返します。リクエストされたコンテンツが見つからない場合は、レスポンスにエラー・メッセージが含まれます。

HTTPレスポンスの形式:

HTTP/[VERSION] [CODE] [TEXT]
[fieldname1]: [field-value1]
[fieldname2]: [field-value2]
[response body, if any (document content here)]

HTTPレスポンスの例:

HTTP/1.0 200 Found
Last-modified: Thursday, 20-Nov-97 10:44:53
Content-length: 6372
Content-type: text/html
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 3.2 Final// EN'><HTML>
...followed by document content...

カスタムHTTPヘッダーを、特殊な情報を格納するように構成できます。

注意:

ヘッダー・サイズ制限は、コードをホストしているサーバーによって制御されます。IIS/ASPの標準制限は60Kです。Javaアプリケーション・サーバーの場合は2Kから10Kまでです。これらの制限は通常、構成可能です。詳細は、使用しているサーバーのドキュメントを参照してください。

サービスからも、Set-CookieヘッダーやHTTP 1.1 Basic認証ヘッダーなどの標準のHTTPヘッダーにアクセスできます。HTTPをさらに調べる場合は、ロギングを使用して、ブラウザとWebサーバー間でやりとりされるすべてのヘッダーを表示できます(第62.6.3項「ページレットのデバッグ」を参照)。HTTPは、SSLとともに使用され、セキュアなコンテンツを提供します。また、シングル・サインオン(SSO)でもBasic認証用のHTTPヘッダーが使用されます。

62.1.2.4.2 Content Syndication Protocol

Content Syndication Protocol (CSP)は、HTTPを拡張し、ページレット・プロデューサと外部CSPリソース(具体的にはOracle WebCenter Interactionポートレット)間で設定を渡すための専用ヘッダーを定義します。CSPでは、これらのサービスがHTTPを使用して設定を通信および変更する方法の概略を記述します。CSPプロトコルの最新バージョンは1.4で、次の場所から入手できます。

http://docs.oracle.com/cd/E13158_01/alui/wci/docs103/devguide/references/CSP1.4.pdf

システムとユーザー構成変数(表62-1を参照)の通信に使用されるカスタムCSPヘッダーは、ページレットでも使用できます。

表62-1 ページレット・プロデューサのヘッダー

ヘッダー名

説明

ユーザーID

現在ログインしているユーザーのユーザーID。この値は、セッションの有効期限を判別するときに使用できます。UserID=2の場合、デフォルトの'Guest'ユーザーがログインして、その他のユーザーのセッションはすべて終了します。

ユーザー名

ログインしているユーザーの名前。ユーザー名は、表示のパーソナライズやフォーム・フィールドの事前指定に使用できます。

イメージ・サービスのURL

ページレット・プロデューサのユーザー実装での、イメージ・サービスの仮想ルート・ディレクトリのURL。この場所は、サービスで使用されるすべての静的イメージに使用する必要があります。

スタイルシートのURL

現在のユーザーのスタイルシートのURL。ページレット・プロデューサの実装ごとに、UIがカスタマイズされます。一部のポータルでは、ユーザーはスタイルシートの中から選択できます。これらのスタイルを使用すると、ページレットが、現在のユーザーによるページレット・プロデューサの実装スタイルで表示されます。

ページレットID

現在のリソース(ページレット)のID、および現在のページレットのインスタンスID。この値は、HTMLフォームおよびクライアント側JavaScript機能の名前に追加し、ページ上のフォームや機能の一意の名前を確保して名前の競合を回避するために役立ちます。

ホスト・ページのURL

ページレットをホストするページのURL。設定の構成後にユーザーを正しいページに戻すために、プリファレンス・ページにはこのURLが必要です。この値を使用して、単一のページレットで様々なページに各種コンテンツを表示できるようにすることもできます。

62.1.2.5 ページレット・プロデューサのプロキシ

ページレット・プロデューサはプロキシ・サーバーとして動作し、クライアント・コンピュータと外部リソース間のトランザクションを仲介します。この構成は通常、それ以外の方法では外部リソースにアクセスできない可能性のあるクライアントに対するコンテンツとして使用されますが、これは、ポリシーの使用も含めて、クライアントに対して追加のセキュリティ制約を課するために使用することもできます。プロキシでは外部リソースは表示されず、コンテンツはプロキシ・サーバーから直接送られてくるように見えます。

このアーキテクチャにより、ページレット・プロデューサはコンテンツの単一アクセス・ポイントとなり、外部リソースがプライベート・ネットワークやファイアウォールの内側に存在できるようになります。ページレット・プロデューサが外部リソースに接続できるかぎり、ユーザーはコンテンツに直接アクセスできない場合でも、そのコンテンツを表示できます。ブラウザにとっては、ページレット・プロデューサは外部リソースのコンテンツのソースであるように見えます。

ユーザーがサービスとやり取りする際、プロキシで行われたURLへのリクエストはすべて、ページレット・プロデューサを通して自動的に再ルーティングされます。ユーザーにとって、コンテンツはページレット・プロデューサから送信されてくるように見えます。外部リソースは不明のバックエンド・システムです。

この構成には多くのメリットがあります。サービスに最も役に立つメリットは次のとおりです。

- 動的な機能とパーソナライズ: ページレット・プロデューサは、ページレットからのリクエストをインターセプトするため、MDS、リクエストまたはレスポンスからの情報を使用して、レスポンスを動的に変更することが可能になります。

- セキュリティ: サービスを使用すると、ユーザーはパブリックに使用できないコンテンツにアクセスできます。特定のURLをプロキシの構成に含めることにより、保護されたサーバーに格納されているファイルが使用可能になります。

警告

プロキシは強力な機能であるため、不適切に構成された場合はセキュリティを著しく低下させます。保護されていないプライベート・コンテンツをホストしている外部リソースに直接アクセスできるようにすると、危険なセキュリティ・ギャップが生じる可能性があります。

- パフォーマンス: ページレット・プロデューサはプロキシ・コンテンツをキャッシュし、エンド・ユーザーに対するレスポンス時間を短縮し、外部リソースのパフォーマンスを向上させます。プロキシはHTMLなどのコンテンツに対しては効率的に機能しますが、静的イメージなどのバイナリ・データには通常は適していません。イメージは変換する必要がないため、大きなイメージをプロキシすると、パフォーマンスに悪影響を与える可能性があります。これが、イメージ・サービスを使用してプロキシ経由での静的イメージのルーティングを避ける必要がある1つの理由です。

プロキシされる他のCSPまたはWebリソースのURLはすべて、「プロキシしないホスト」フィールドに指定されていないかぎり、デフォルトでプロキシされます。プロキシの構成の詳細は、第62.2.3項「プロキシ設定の構成」を参照してください。

プロキシを使用するサービスを実装する場合は、次の警告とベスト・プラクティスに留意してください。

- URL変換: ページレット・プロデューサは、プロキシされるURLを正確に開くため、コードを変換する必要があります。ページレット・プロデューサは、レスポンスを送信する前に、HTMLを解析し、「HTTPプロキシ・サーバーURL」フィールドの接頭辞を含むURLを探します(第62.2.3項「プロキシ設定の構成」を参照)。ページレット・プロデューサは、レスポンスをクライアントに返す前に、プロキシするURLを変換します。関連するURLは、正しい場所を指すように変換されます。

- スクリプト制限: URLを動的に作成するJavaScript構成は、コンテンツがすでに変換された後に実行されるため、問題を起こすことがあります。VBScriptはプロキシによって変換されません。使用しているコードがプロキシを認識するかぎり、動的スクリプトとVBScriptを引き続き使用できます。パーサーとWebインジェクタを使用して、URLのリライトに対するターゲット・コントロールを実装できます。パーサーとWebインジェクタの詳細は、第62.6.2項「実行時のページレット機能の変更」を参照してください。

- URLエンコーディング: 予期しない変換を防ぐために、URLであるヘッダーをすべてエンコードすることはベスト・プラクティスです。JSPでは、書き込まれたURLをすべてエンコードします。コードによってページ本体にURLが書き込まれる場合は(たとえば、プリファレンス・ページへのリンクなど)、そのコードをエンコードする必要があります。標準のJavaサーブレット・コマンド、response.encodeURL()は優先される方法ですが、URLEncoder.encode(url)も使用できます。.NETフレームワークでは、HttpUtility.URLEncodeクラスによって必要な機能が提供されます。.NETでは、リダイレクトURLをエンコードする必要はありません。これは、バックエンドで自動的に処理されます。

62.1.3 ページレット・プロデューサの要件

『Oracle Fusion Middleware Oracle WebCenterインストレーション・ガイド』の手順に従って、WebCenter Portalをインストールします。WebCenter Contentサーバー、ディスカッション・サーバー、ページレット・プロデューサを含むすべての依存コンポーネントもインストールされていて、構成済であることを確認します。

デフォルトでは、サービス・プロデューサは、WebCenter Portalドメイン内のWC_Portlet管理対象サーバーに自動的にデプロイされます。WC_Portlet管理対象サーバーがインストール時に作成されなかったか、サービス・プロデューサを別途実行する要件がある場合、カスタムのサービス・プロデューサ・テンプレートを使用してWC_CustomServicesProducer管理対象サーバーを作成できます。この管理対象サーバーには、WebCenter Portal、アクティビティおよびMDSスキーマにアクセスするために、Oracle WebCenterサービス・プロデューサ・コンポーネントと事前構成済のJDBCデータ・ソースが含まれています。詳細は、『Oracle Fusion Middlewareドメイン・テンプレート・リファレンス』のOracle WebCenter Portalのカスタム・サービス・プロデューサ・テンプレートに関する項を参照してください。

62.2 ページレット・プロデューサ設定の構成

この項では、すべてのページレット・プロデューサ・リソースに影響を与える重要な構成設定、およびページレット・プロデューサ・コンソールの「設定」ページを使用してそれらを設定する方法について説明します。ページレット・プロデューサ・コンソールの概要は、第62.1.2.3項「ページレット・プロデューサ・コンソール」を参照してください。

「設定」セクションには次のページが含まれています。

- 第62.2.1項「WCIデータ・ソースの構成」

- 第62.2.2項「ロギング設定の構成」

- 第62.2.3項「プロキシ設定の構成」

- 第62.2.4項「変換設定の構成」

- 第62.2.5項「CSP設定の構成」

- 第62.2.6項「Kerberos設定の構成」

- 第62.2.7項「OpenSocial設定の構成」

62.2.1 WCIデータ・ソースの構成

WCIリソースを消費するには、CSPログイン・トークンが必要であり、そのログイン・トークンをページレット・プロデューサからCSPポートレットに伝播するには、データ・ソースが必要です。ページレット・プロデューサによって生成されたログイン・トークンは、ユーザー・アイデンティティを伝播し、受信リクエストを検証するために、すべてのリモート・ポートレットに送信されます。データ・ソースを構成するには、『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』のJDBCデータ・ソースの構成に関する項の手順に従います。データ・ソースにはwcidbという名前を付ける必要があります。

62.2.2 ロギング設定の構成

「ロギング」ページでは、ページレット・プロデューサ・コンポーネントのロギング・レベルを設定できます。

図62-3 ページレット・プロデューサ・コンソール: 設定 - ロギング

任意のコンポーネントのロギングを有効にするには、次のいずれかのロギング・レベルを選択します。

- 重度

- 警告

- 情報

- 構成

- 普通

- 詳細

- 最も詳細

ロギング・メッセージは、管理対象サーバーのログ・ファイル内で確認できます。Oracle WebLogic Serverの場合、この場所はdomain_home/servers/managed server name/managed server name.logおよびmanaged server name-diagnostic.logです。

62.2.3 プロキシ設定の構成

「プロキシ」ページでは、プロキシしないURLのリストを定義し、必要に応じてHTTPプロキシのURL、ユーザー名およびパスワードを設定できます。

プロキシ設定を変更したら、ページレット・プロデューサを再起動する必要があります。

注意:

デプロイメント環境内の外部接続にHTTPプロキシが必要な場合、サーバーの初回起動時に接続エラーが報告されます。これらのエラーは環境の問題を示しているのではなく、一部の外部OpenSocialライブラリをリモートでロードできないことを示しています。エラーを解決するには、前述の説明に従ってプロキシ設定を構成し、サーバーを再起動します。

Oracle WebLogic Serverデプロイメントに関する注意

「プロキシ」ページで入力したHTTPプロキシ・サーバーURLは、ページレット・プロデューサをホストするサーバーで実行されているすべてのアプリケーションに適用されます(Oracle WebLogic Serverでは、この設定はWC_Portlet管理対象サーバーで実行されているすべてのアプリケーションに適用されます)。Oracle WebLogic Serverユーザーは、特にこの設定に注意し、WLS管理サーバー・ホストとすべてのクラスタ化された管理対象サーバーが「プロキシしないホスト」リストに含まれていることを確認する必要があります。

図62-4 ページレット・プロデューサ・コンソール: 「設定」 - 「プロキシ」

「プロキシ」ページには、次の設定が含まれます。

- 「プロキシしないホスト」フィールドでは、プロキシしないURLのリストをセミコロンで区切って定義できます(ワイルドカードを使用できます)。Oracle WebLogic Serverデプロイメントの場合は、WLS管理サーバー・ホストとすべてのクラスタ化された管理対象サーバーをこのリストに含めてください。

- 「HTTPプロキシ・サーバーのパスワード」フィールドでは、プロキシ・サーバーのパスワードを設定できます。

- 「HTTPプロキシ・サーバーURL」フィールドでは、プロキシ・サーバーのURLを定義できます。

- 「HTTPプロキシ・サーバーのユーザー名」フィールドでは、プロキシ・サーバーへのアクセスに使用するユーザー名を定義できます。

62.2.4 変換設定の構成

「変換」ページでは、資格証明ボールト・プロバイダへのパスを入力したり、ページレット・プロデューサのセキュア・ポートとセキュアでないポートを構成できます。このページでは、変換前および変換後のコンテンツをログに記録するかどうかを選択することもできます。

図62-5 ページレット・プロデューサ・コンソール: 「設定」 - 「変換」

「変換」ページには、次のフィールドが含まれます。

- 「資格証明ボールト・プラグインのパス」フィールドでは、プラグインが格納されている資格証明ボールトへのパスを定義できます。

- 「セキュアでないポート」フィールドでは、ページレット・プロデューサのセキュアでないポートを定義できます。

注意:

「セキュアでないポート」のデフォルトは8889です。ページレット・プロデューサを異なるポートにデプロイした場合、このエントリを変更し、サーバーを再起動します。

- 「セキュア・ポート」では、ページレット・プロデューサのセキュアでないポートを定義できます。

- 「変換のトレース」オプションを選択すると、変換前および変換後のコンテンツに対するロギングがオンになります。このオプションはデバッグに役立ちますが、本番環境ではオンにしないことをお薦めします。

62.2.5 CSP設定の構成

CSPは、HTTP 1.1のオープン標準に基づく、プラットフォームに依存しないプロトコルです。CSPは、ページレット・プロデューサと外部リソース間の通信構文を定義します。また、カスタム・ヘッダーを定義し、サービスがHTTPを使用して設定を通信および変更する方法の概略を記述します。

「CSP」ページでは、Oracle WebCenter Interaction資格証明マッパー、SOAP APIサービスおよびイメージ・サービスを構成できます。

注意:

Oracle WebCenter Interactionがデプロイメント内に存在しない場合、このページは無視される可能性があります。これらの設定は、Oracle WebCenter Interaction用に記述されたCSPポートレットとの後方互換性を維持するために使用されます。

62.2.6 Kerberos設定の構成

「Kerberos」ページは、Kerberos構成ファイル(java.security.krb5.confおよびjava.security.auth.login.conf)へのパスを定義するために使用します。これら2つの構成ファイルは、Kerberosサービス・チケットの取得場所をHTTPClientに指示するようKerberosレルムとKDCを構成するために必要です。

62.2.7 OpenSocial設定の構成

「OpenSocial」ページでは、OpenSocialガジェットを使用するようページレット・プロデューサを構成できます。

図62-6 ページレット・プロデューサ・コンソール: 「設定」 - 「OpenSocial」

「OpenSocial」ページには、次の設定が含まれます。

- 「キャッシュ」オプションでは、OpenSocialガジェットに対してページレット・プロデューサの内部キャッシュを有効にできます。

- 「コンテキスト」フィールドでは、ページレット・プロデューサのデプロイ先となるコンテキストを定義します。この値は、OpenSocialコンテナによって変更を要求されないかぎり、デフォルト設定(pagelets)のまま残してください。コンテキストの変更の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の異なるコンテキストへのページレット・プロデューサの再デプロイに関する項を参照してください。

- 「デバッグ」オプションでは、OpenSocialガジェットに対してデバッグを有効に(JavaScriptの不明瞭化を無効に)できます。

- 「ホスト」フィールドには、ページレット・プロデューサ・ホストの完全修飾ドメイン名を含める必要があります。この値は、環境から自動的に取得されます。取得されない場合は、サーバーを再起動して正しい構成設定を取得します。「コンテキスト」の設定と同様、この値は、OpenSocialコンテナによって変更を要求されないかぎり、デフォルトのまま残してください。

- 「SSL」オプションでは、OpenSocialガジェットに対してSSLを有効にできます。

注意:

OpenSocialガジェットをインポートする前に、セキュア(HTTPS)およびセキュアでない(HTTP)ポートも構成する必要があります。これらの設定の詳細は、第62.2.4項「変換設定の構成」を参照してください。

62.3 ページレット・プロデューサ・オブジェクトの作成

この項では、リソース、ページレット、Webインジェクタ、パーサー、ホストされたファイルなど、ページレット・プロデューサ・デプロイメント内の様々なオブジェクトを作成および構成する方法について説明します。

第62.1.2.3項「ページレット・プロデューサ・コンソール」で説明したように、ページレット・プロデューサ・コンソールは、ページレット・プロデューサ・デプロイメント内の様々なオブジェクトを作成および管理するために使用する、ブラウザベースの管理ツールです。この項では、オブジェクトの各タイプに必要な設定について説明します。

- 第62.3.1項「リソースの作成」

- 第62.3.2項「ページレットの作成」

- 第62.3.3項「Webインジェクタの作成」

- 第62.3.4項「カスタム・パーサーの作成」

- 第62.3.5項「ホストされたファイルの作成」

62.3.1 リソースの作成

リソースは、ページレット・プロデューサに登録されたアプリケーションです。アプリケーションをリソースとして登録すると、プロキシによる外部URLへの内部アプリケーションのマップ、認証の管理およびアプリケーション機能の変換が可能になります。

新しいリソースを作成するには、次の手順を使用します。

1. ページレット・プロデューサ・コンソールのナビゲータで、ドロップダウン・リストから「リソース」オプションを選択します。

2. いずれかの既存のリソースをクリックし、ナビゲーション・ツールバーの「作成」アイコンをクリックします。(このボタンは、作成可能なオブジェクト・タイプを選択した場合のみ有効になります。)

図62-7 ページレット・プロデューサ・コンソール - リソースの作成

3. 「プロデューサ・タイプの選択」ダイアログ・ボックスで、リソースをプロキシするよう構成するプロデューサのタイプをドロップダウン・リストから選択します。

- Web: すべての標準Webアプリケーション

- CSP: CSPポートレット・プロバイダ・アプリケーション(Oracle WebCenter Interactionとともに使用)

- WSRP/JPDK: WSRPまたはOracle JPDKポートレット・プロデューサ(このタイプのリソースを作成する前に、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「ページレット・プロデューサの管理」の章の説明に従って、関連するプロデューサを登録してください)。

- OpenSocial: OpenSocialコンテナ

図62-8 「プロデューサ・タイプの選択」ダイアログ

4. 「OK」をクリックします。<new>というエントリがリソースのリストに追加されます。この新しいリソースには、選択したプロデューサのタイプに必要な構成ページが含まれます。

5. ページレット・プロデューサ・コンソールでリソースを構成します。必要な構成ページは、プロデューサのタイプによって異なります。任意の時点で変更を保存するには、ナビゲーション・ツールバーの「保存」アイコンをクリックします。

- 第62.3.1.1項「構成ページ: WebおよびCSPリソース」

- 第62.3.1.2項「WSRPおよびJPDKリソースの構成」

- 第62.3.1.3項「OpenSocialリソース(OpenSocialガジェット・プロデューサ)の構成」

リソースを定義したら、そのリソース内のページレットやその他のオブジェクトを作成します。詳細は、次の項を参照してください。

- 第62.3.2項「ページレットの作成」

- 第62.3.3項「Webインジェクタの作成」

- 第62.3.4項「カスタム・パーサーの作成」

- 第62.3.5項「ホストされたファイルの作成」

62.3.1.1 構成ページ: WebおよびCSPリソース

この項では、WebおよびCSPリソースの構成方法について説明します。

この項には次のサブセクションが含まれます:

- 第62.3.1.1.1項「全般設定の構成」

- 第62.3.1.1.2項「CSP設定の構成」

- 第62.3.1.1.3項「ポリシー設定の構成」

- 第62.3.1.1.4項「自動ログインの構成」

- 第62.3.1.1.5項「自動ログインの構成: フォーム・ログイン」

- 第62.3.1.1.6項「自動ログインの構成: 基本ログインとNTLMログイン」

- 第62.3.1.1.7項「自動ログインの構成: Kerberosログイン」

- 第62.3.1.1.8項「自動ログインの構成: 認証のソース」

- 第62.3.1.1.9項「ヘッダーの構成」

この項では、ページレット・プロデューサのインストール時に作成されるwelcome_resourceを例として使用します。

62.3.1.1.1 全般設定の構成

「全般」ページ(図62-9を参照)では、リソースの基本情報を入力できます。

図62-9 ページレット・プロデューサ・コンソール: 「リソース」 - 「全般」ページ

- リソースの名前を入力します。

- リソースの説明を入力します(オプション)。

- 「ソースURL」フィールドに、プロキシするWebアプリケーション・リソースの場所を示すURLを入力します。たとえば、http://internalServer/foo/です。

注意:

ADF Webアプリケーションをリソースとして構成する場合、ソースURLをhttp://hostname:portnumber/context-root/よりも詳細に指定することはできません。

- デフォルトでは、ページレット・プロデューサは、エラー・メッセージを返すまで30秒間リソースへの接続を試行します。この値を変更するには、新しいソースのタイムアウトを秒単位で入力します。

- 「宛先URL」フィールドに、リソースへのアクセスに使用する相対パスを入力します。このパスは、ページレット・プロデューサをホストするサーバー上にあるリソースのURLを作成するために使用します。

- 動的HTMLを有効にするには、「DHTMLリライト」を選択します。このオプションでは、サーバーから返される元のHTMLに含まれず、DHTMLによって追加されるURLがサポートされます。ほとんどの場合、このオプションを有効にする必要があります。

- 非同期Ajaxコールを通じたDHTMLのリライトを有効にするには、「非同期リライト」を選択します。

62.3.1.1.2 CSP設定の構成

デフォルトでは、CSPログイン・トークンは、プロキシされるリソースに渡されません。この機能を有効にするには、「CSPログイン・トークンの送信」を選択します。「CSP」ページはCSPリソースにのみ使用できます。

62.3.1.1.3 ポリシー設定の構成

「ポリシー」ページ(図62-10を参照)では、リソースへのアクセスをWebCenter Portal内の特定のロールに制限できます。

図62-10 ページレット・プロデューサ・コンソール: 「リソース」 - 「ポリシー」ページ

ページレット・プロデューサをホストするJ2EEコンテナ(Oracle WebLogic Serverなど)では、現在のユーザーに関連付けられたロールのメンバーシップを確立する必要があります。「ポリシー」ページでは、1つのリソースに複数のロールを指定でき、ユーザーは指定されたいずれかのロールのメンバーである場合、アクセスを許可されます。そうでない場合、ユーザーはJ2EEコンテナによって委任された適切な認証ページに移動し、必要な資格証明を確立します。リストにロールが入力されていない場合、匿名アクセスが許可され、そのリソースは匿名リソースと呼ばれます。

注意:

このページで入力するロール名は、J2EEコンテナ(Oracle WebLogic Serverなど)内に作成されているロール名と一致する必要があります。

62.3.1.1.4 自動ログインの構成

自動ログイン機能を使用すると、ページレット・プロデューサから自動的に資格証明をアプリケーションに提供できるようになります。「自動ログイン」ページ(図62-11)では、リソースにアクセスするすべてのユーザーの認証情報を構成できます。

図62-11 ページレット・プロデューサ・コンソール: 「リソース」 - 「自動ログイン」ページ

次の項では、認証の資格証明マッピングを構成する方法について説明します。

- 第62.3.1.1.5項「自動ログインの構成: フォーム・ログイン」では、HTMLフォームによる認証が必要なリソースの自動ログインを構成する方法について説明します。

- 第62.3.1.1.6項「自動ログインの構成: 基本ログインとNTLMログイン」では、基本認証とNTLMによる認証が必要なリソースの自動ログインを構成する方法について説明します。

- 第62.3.1.1.7項「自動ログインの構成: Kerberosログイン」では、Kerberosによる認証が必要なリソースの自動ログインを構成する方法について説明します。

- 第62.3.1.1.8項「自動ログインの構成: 認証のソース」では、静的、ユーザー・プロファイルおよび資格証明ボールトの認証フィールドに使用するソースについて説明します。

62.3.1.1.5 自動ログインの構成: フォーム・ログイン

この項では、HTMLフォームによる認証が必要なリソースの自動ログインを構成する方法について説明します。

1. リソースの「自動ログイン」ページで、「フォーム・ログイン」セクションを開きます(図62-12)。

図62-12 「自動ログイン」ページ - 「フォーム・ログイン」

2. ログイン・ページは、URLや正規表現によって識別できます。「ログイン・フォームの識別」セクションで、次のいずれかのオプションを選択します。

- ログイン・フォームの場所が静的URLである場合、「URL」を選択し、「値」フィールドにURLを入力します。ページ上の「フォーム・フィールドの自動検出」を選択するか、次の手順4の説明に従って、それらのフィールドを手動で入力できます。

- ログイン・フォームが動的である場合、「RegEx」を選択し、ボックスに正規表現パターンを入力します。

3. ログイン・フォームのアクションを設定します。「フォームの送信場所」セクションで、次のいずれかのオプションを選択します。

- ログイン・フォームのアクションが静的URLである場合、「URL」を選択し、ボックスにURLを入力します。フォーム送信のアクションをPOSTまたはGETから選択します。

- ログイン・フォームが動的である場合、「RegEx」を選択し、ボックスに正規表現パターンを入力します。

4. フィールドをフォームから認証フィールドのソースにマップするには、前述の説明に従って「ログイン・フォームの識別」セクションの「フォーム・フィールドの自動検出」をクリックするか、次のプロセスを使用して、それらのフィールドを手動で入力します。

1. 「作成」をクリックして、新しい行を「フォーム・フィールド」リストに追加します。

2. HTMLフォーム入力の名前を「フィールド名」ボックスに入力します。

3. 「ソース」および「値」プロパティを構成する方法の詳細は、第62.3.1.1.8項「自動ログインの構成: 認証のソース」を参照してください。

注意:

重要なフィールドは、資格証明ボールト(「ユーザー・ボールト」または「保護」)を使用して安全に格納する必要があります。

4. フィールドのマッピングを削除するには、「削除」をクリックします。

5. ログアウト・ページとログイン・エラー・ページは、URLや正規表現によっても識別できます。「ログアウト・ページID」および「ログイン・エラー・ページの識別」セクションで、次のいずれかのオプションを選択します。

- ページの場所が静的URLである場合、「URL」を選択し、表示されたフィールドにURLを入力します。

- ページが動的である場合、「RegEx」を選択し、表示されたフィールドに正規表現パターンを入力します。

62.3.1.1.6 自動ログインの構成: 基本ログインとNTLMログイン

この項では、基本認証またはNTLMによる認証が必要なリソースの自動ログインを構成する方法について説明します。

1. リソースの「自動ログイン」ページで、「基本ログイン」または「NTLMログイン」セクションを開きます。

注意:

基本認証では、パスワードがプレーン・テキストとして送信されるため、本番システムでは使用しないでください。また、基になるトランスポートとしてHTTPSを使用することを強くお薦めします。

2. 「ユーザー名」および「パスワード」セクションで、適切な認証のソースを選択し、必要に応じて値を入力します。これらのプロパティを構成する方法の詳細は、第62.3.1.1.8項「自動ログインの構成: 認証のソース」を参照してください。

62.3.1.1.7 自動ログインの構成: Kerberosログイン

この項では、Kerberosを使用した認証が必要なリソースの自動ログインを構成する方法について説明します。基本的なKerberos設定の定義の詳細は、第62.2項「ページレット・プロデューサ設定の構成」を参照してください。

1. リソースの「自動ログイン」ページで、「Kerberosログイン」セクションを開きます。

2. 「ユーザー名」および「パスワード」セクションで、適切な認証のソースを選択し、必要に応じて値を入力します。これらのプロパティを構成する方法の詳細は、次の第62.3.1.1.8項「自動ログインの構成: 認証のソース」を参照してください。

3. 「SPN」フィールドに、Kerberosアカウントのサービス・プリンシパル名(SPN)を、http://hostname_with_kerberosの形式で入力します。(Kerberos認証サービスでSPNを使用してサービスを認証するには、そのサービス・インスタンスがログオンに使用するアカウント・オブジェクトに、SPNを登録する必要があります。)

62.3.1.1.8 自動ログインの構成: 認証のソース

認証のソースによって、ログイン・フィールドのソースが定義されます。表62-2は、各認証フィールドのソースの値について説明しています。

表62-2 ページレット・プロデューサの認証のソース

フィールド

説明

非保護

指定した認証情報を、リソースにアクセスするすべてのユーザーに使用します。表示されたフィールドに静的な値を入力します。

保護

ページレット・プロデューサ管理コンソールで管理者によって入力されたフィールド値を使用します。値は資格証明ボールトに格納され、認証されていない(匿名)ユーザーを含むすべてのユーザー間で共有されます。フィールド・キーは自動生成され、読取り専用フィールドとして管理コンソールに表示されます。

ユーザー・ボールト

リソースへの初回アクセス時に、ユーザーに資格証明を要求します。提供された資格証明は暗号化され、資格証明ボールトに格納されます。その後、リソースへのアクセスは、格納された資格証明を使用して認証されます。フィールド・キーは自動生成され、読取り専用フィールドとして管理コンソールに表示されます。2番目のフィールドには、使用する資格証明ボールトの名前を入力するか、サーバー・ボールトを使用する場合はエントリを「default」のまま残します。

注意: 「ユーザー・ボールト」を選択すると、ユーザーには、「ページレットに直接アクセスするにはここをクリックします。」というリンクを含むエラー・ページが表示されます。このリンクによって認証ダイアログが開きます。これは既知の問題であり、ユーザーが初めてリソースにアクセスした場合のみ発生します。

生成済

(フォーム・ログインのみ)バックエンド・サーバーのレスポンスに含まれるマークアップからフィールド値を取得します。

62.3.1.1.9 ヘッダーの構成

「ヘッダー」ページ(図62-13を参照)では、ページレット・プロデューサによって提供されるHTTPから削除するリクエストおよびレスポンス・ヘッダーを選択できます。

図62-13 ページレット・プロデューサ・コンソール: 「リソース」 - 「ヘッダー」ページ

一部のヘッダー要素は、バックエンド・アプリケーションに渡さないようにしてください。たとえば、委任された(サード・パーティSSO)認証を使用したときに、SSOシステムによって挿入されるいくつかのヘッダーは、バックエンド・アプリケーションに渡さないようにする必要があります。そのようなヘッダーが渡されると、バックエンド・アプリケーションの機能が妨げられる場合があります。

次のヘッダーはデフォルトで削除されます。

リクエスト・ヘッダー

レスポンス・ヘッダー

- Cache-Control

- Connection

- Cookie

- Host

- Max-Forwards

- Pragma

- Proxy-Connection

- Proxy-Authorization

- TE

- Trailer

- Transfer-Encoding

- Upgrade

- Max-Forwards

- Proxy-Authenticate

- Proxy-Connection

- Set-Cookie

- Trailer

- Transfer-Encoding

- Upgrade

Content-Lengthヘッダーは、常に暗黙的に削除されます。これは、プロキシ操作中にコンテンツを操作すると、ほとんどの場合、無効な長さのコンテンツがレンダリングされるためです。

ヘッダーをリストに追加するには、「作成」をクリックし、表示されたフィールドにヘッダー名を入力します。

WebまたはCSPリソースを定義したら、ページレットやその他のオブジェクトを作成できます。詳細は、次の項を参照してください。

- 第62.3.2項「ページレットの作成」

- 第62.3.3項「Webインジェクタの作成」

- 第62.3.4項「カスタム・パーサーの作成」

- 第62.3.5項「ホストされたファイルの作成」

62.3.1.2 WSRPおよびJPDKリソースの構成

この項では、WSRPまたはOracle JPDKポートレット・プロデューサに基づいてWSRP/JPDKリソースを構成する方法について説明します。

注意:

WSRPまたはOracle JPDKポートレット・プロデューサに基づいてリソースを作成するには、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「ページレット・プロデューサの管理」の章の説明に従って、そのプロデューサを登録する必要があります。

この項には次のサブセクションが含まれます:

- 第62.3.1.2.1項「全般設定の構成」

- 第62.3.1.2.2項「ポリシー設定の構成」

62.3.1.2.1 全般設定の構成

「全般」ページでは、WSRPまたはJPDKリソースの基本情報を入力できます。

- 「ポートレット・プロデューサ」ドロップダウン・リストから、ポートレット・プロデューサのタイプを選択します。このリストには、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「ページレット・プロデューサの管理」の章の説明に従って登録したプロデューサが移入されます。

- リソースの名前を入力します。

- リソースの説明を入力します(オプション)。

62.3.1.2.2 ポリシー設定の構成

「ポリシー」ページでは、リソースへのアクセスをOracle WebCenter Portal内の特定のロールに制限できます。

ページレット・プロデューサをホストするJ2EEコンテナ(Oracle WebLogic Serverなど)では、現在のユーザーに関連付けられたロールのメンバーシップを確立する必要があります。「ポリシー」ページでは、1つのリソースに複数のロールを指定でき、ユーザーは指定されたいずれかのロールのメンバーである場合、アクセスを許可されます。そうでない場合、ユーザーはJ2EEコンテナによって委任された適切な認証ページに移動し、必要な資格証明を確立します。リストにロールが入力されていない場合、匿名アクセスが許可され、そのリソースは匿名リソースと呼ばれます。

注意:

このページで入力するロール名は、J2EEコンテナ(Oracle WebLogic Serverなど)内に作成されているロール名と一致する必要があります。

WSRPまたはJPDKリソースを定義したら、ページレットやWebインジェクタを作成できます。詳細は、次の各項を参照してください。

- 第62.3.2項「ページレットの作成」

- 第62.3.3項「Webインジェクタの作成」

62.3.1.3 OpenSocialリソースの構成(OpenSocialガジェット・プロデューサ)

この項では、OpenSocialガジェット・プロデューサに基づいてOpenSocialリソースを構成する方法について説明します。

- 第62.3.1.3.1項「全般設定の構成」

- 第62.3.1.3.2項「ポリシー設定の構成」

注意:

OpenSocialリソースを作成する前に、ページレット・プロデューサをOpenSocialとともに使用するよう構成します。詳細は、第62.2.7項「OpenSocial設定の構成」を参照してください。

62.3.1.3.1 全般設定の構成

「全般」ページでは、リソースの基本情報を入力できます。

- リソースの名前を入力します。

- リソースの説明を入力します(オプション)。

62.3.1.3.2 ポリシー設定の構成

「ポリシー」ページでは、リソースへのアクセスをOracle WebCenter Portal内の特定のロールに制限できます。

ページレット・プロデューサをホストするJ2EEコンテナ(Oracle WebLogic Serverなど)では、現在のユーザーに関連付けられたロールのメンバーシップを確立する必要があります。「ポリシー」ページでは、1つのリソースに複数のロールを指定でき、ユーザーは指定されたいずれかのロールのメンバーである場合、アクセスを許可されます。そうでない場合、ユーザーはJ2EEコンテナによって委任された適切な認証ページに移動し、必要な資格証明を確立します。リストにロールが入力されていない場合、匿名アクセスが許可され、そのリソースは匿名リソースと呼ばれます。

注意:

このページで入力するロール名は、J2EEコンテナ(Oracle WebLogic Serverなど)内に作成されているロール名と一致する必要があります。

OpenSocialリソースを定義したら、ページレットやファイルを作成できます。詳細は、次の項を参照してください。

- 第62.3.2項「ページレットの作成」

- 第62.3.5項「ホストされたファイルの作成」

62.3.2 ページレットの作成

ページレット・コレクションには、リソースに関連付けられたページレットがリストされます。新しいページレットを作成するには、ページレット・プロデューサ・コンソール内で使用するリソースの下にある「ページレット」セクションを選択し、ツールバーの「作成」アイコンをクリックします。<new>というページレットがリストに追加されます。既存のページレットを変更するには、そのページレット名をクリックします。

この項には次のサブセクションが含まれます:

- 第62.3.2.1項「全般設定の構成」

- 第62.3.2.2項「プリファレンスの構成」

- 第62.3.2.3項「パラメータの構成」

- 第62.3.2.4項「クリッパの構成」

- 第62.3.2.5項「ページレットとプリファレンス・エディタへのアクセス」

62.3.2.1 全般設定の構成

ページレットの名前と、そのページレットを関連付けるライブラリの名前を入力します。(ページレット・ライブラリは、関連するページレットをユーザー定義によってグループ化する方法の1つです。)ページレットの説明を入力します(オプション)。

- WebおよびCSPページレットの場合、ページレットへのパスを「URL接尾辞」フィールドに入力します(リソースに対して入力したソースURLの接頭辞は含めない)。「URL接尾辞」を空白のまま残した場合、リソース全体がページレットと見なされます。

- WSRPまたはOracle JPDKポートレットに基づくページレットの場合、ページレットの基になるポートレットを「ポートレット」ドロップダウン・リストから選択します。このリストには、親リソースに関連付けられたWSRPまたはOracle JPDKポートレット・プロデューサ上のポートレットが移入されます。ポートレットに関連付けられたすべてのパブリック・パラメータは、自動的にページレット・パラメータとしてインポートされます。WSRPおよびOracle JPDKポートレットのサポートの詳細は、第62.4項「WSRPおよびOracle JPDKポートレットに対するページレット・クロムの使用」を参照してください。

- OpenSocialガジェットに基づくページレットの場合、ガジェットXMLスキーマの場所を「ガジェットURL」フィールドに入力します。「ガジェット・メタデータのインポート」ボタンをクリックして、次の情報をXMLスキーマからインポートします。

- ガジェット名: この値は、「全般」ページの「説明」フィールドにインポートされます。

- ガジェットのユーザー・プリファレンス: 「パラメータの構成」ページのページレット・パラメータに、ガジェットのユーザー・プリファレンスが移入されます。

OpenSocialガジェットのサポートの詳細は、第62.5項「OpenSocialガジェットの使用」を参照してください。

ページレットへのアクセスをブロックするには、「無効」を選択します。ページレットがいずれかのページに含まれている場合、単純なエラー・メッセージが表示されます。

62.3.2.2 プリファレンスの構成

「プリファレンス」ページ(図62-14を参照)では、ページレットに必要なすべてのプリファレンス・ページ(「グローバル」、「カスタマイズ」または「パーソナライズ」)の相対URLを入力します。リソースに対して入力したソースURLの接頭辞は含めないでください。(前述のように、ユーザー・プリファレンスを含むOpenSocialガジェットに対しては、デフォルト・エントリが作成されます。このエントリは変更しないでください。)

「プリファレンス」ページは、WSRPまたはOracle JPDKベースのページレットでは使用されません。

図62-14 ページレット・プロデューサ・コンソール: 「ページレット」 - 「プリファレンス」ページ

62.3.2.3 パラメータの構成

ページレット・パラメータを使用すると、データをページレットに渡すことができます。パラメータによって、次のように、名前/値ペアがページレット・アプリケーションに渡されます。

「パラメータ」ページ(図62-15を参照)で、ページレットに渡すパラメータを入力します。

パラメータを追加するには、「作成」をクリックします。

- パラメータの名前を入力します。

- パラメータがページレットに必要な場合、「必須」チェック・ボックスを選択します。

- 適切なデータ型を文字列または数値から選択します。

- 説明を入力します(オプション)。

図62-15 ページレット・プロデューサ・コンソール: 「ページレット」 - 「パラメータ」ページ

62.3.2.4 クリッパの構成

クリッピングを使用すると、プロキシされたアプリケーションに含まれる大きいWebページの一部をクリップして、ページレットを作成できます。たとえば、ニュースのWebページには、最新の主な項目をリストするボックスが含まれている場合があります。そのボックスに含まれるHTMLを識別することによって、主な項目のみをクリップし、ニュースWebページのサブセットをページレットとして提供できます。

クリッパを作成するには、ページレットの下にある「クリップ」セクションを選択し、ツールバーの「作成」アイコンをクリックします。2つの構成ページを含む新しいクリッパが作成されます。

- 「全般」ページでは、クリッパの名前を入力できます。

- 「コンテンツ」ページ(図62-16を参照)では、クリッパのコンテンツを定義できます。

図62-16 ページレット・プロデューサ・コンソール: 「クリップ」 - 「コンテンツ」ページ

- グラフィカル・ツールを使用してページ・コンテンツを選択するには、「クリッパの起動」をクリックします。

- クリップするセクションが記述されたHTMLタグ属性を指定するには、「クリッパの詳細設定」セクションを開き、タグ名と関連属性を入力します。

クリッパを使用する際には、次の点に注意してください。

- バックエンド・リソースにHTTPS経由でアクセスする場合は、ページレット・プロデューサ・コンソールにもセキュア・ポート経由でアクセスしてください。

- クリップのソースをログイン・フォームまたはその他の認証フォームによって保護する場合は、第62.3.1.1.4項「自動ログインの構成」の説明に従って、親リソースの自動ログインを構成してください。また、ボールトを使用して資格証明の値を格納する場合は、クリッパを使用する前に、それらの資格証明を取得してください。

- クリッパで問題が発生した場合は、ブラウザが構成済のページレットURLをリダイレクトなしでロードできることを確認してください。必要に応じて、ブラウザがすべてのリダイレクトに従った後で最終的にロードするURLを反映するよう、ページレットの接尾辞を変更します。

- ホストされたファイルを使用して上書きされたイメージとコードはクリップできません。(ホストされたファイルの詳細は、第62.3.5項「ホストされたファイルの作成」を参照してください。)

62.3.2.5 ページレットとプリファレンス・エディタへのアクセス

「ドキュメント」ページ(図62-17を参照)では、JavaScriptまたはREST APIを使用してページレットおよびプリファレンス・エディタにアクセスするためのサンプル・コードを表示できます。

図62-17 ページレット・プロデューサ・コンソール: 「ページレット」 - 「ドキュメント」ページ

62.3.3 Webインジェクタの作成

Webインジェクタは、プロキシされているリソース・ページの指定の場所にコンテンツを挿入します。コンテンツには、HTML、CSS、JavaScriptおよびページレット宣言などのテキストを指定できます。ページから不要なコンテンツを削除するために空のインジェクタを使用することもできます。インジェクタをOpenSocialリソース用に作成することはできません。

Webインジェクタを作成するには、使用するリソースの下にある「インジェクタ」セクションを選択し、ツールバーの「作成」アイコンをクリックします。<new>という新しいインジェクタがリストに追加されます。その後、次の項の説明に従い、「全般」および「コンテンツ」構成ページを使用して、インジェクタを構成できます。

- 第62.3.3.1項「全般設定の構成」

- 第62.3.3.2項「コンテンツの挿入」

62.3.3.1 全般設定の構成

「全般」ページ(図62-18を参照)では、インジェクタの基本設定を構成できます。

Webインジェクタの名前を入力します。

「URLフィルタ」ボックスにURLパターンを入力することにより、インジェクタをリソースのサブセットに適用できます。インジェクタは、「URLフィルタ」ボックスに指定されたテキストで始まるリソース内のURLにのみ適用されます。このボックスが空または/のみ指定されている場合は、インジェクタはリソース全体に適用されます。

インジェクタで特定の種類のコンテンツに制限するには、「MIMEフィルタ」ボックスにMIMEタイプのカンマ区切りリストを入力します。たとえば、text/htmlではインジェクタはHTMLコンテンツに制限され、一方、text/cssではCSSコンテンツにのみ制限されます。

「挿入位置」セクションでは、リソース出力内のどの部分に対して、一意の文字列に関連した挿入を行うかを定義します。表示されたフィールドに一意の文字列を入力し、「次より前」、「次より後」または「置換」を選択して、その文字列に関連するコンテンツの配置先を定義します。文字列の置換を選択した場合、「囲みタグ」を使用すると、文字列と囲みタグの両方を置換できます。「大文字/小文字を区別しない」を選択することにより、文字列の大/小文字を区別しないようにできます。

図62-18 ページレット・プロデューサ・コンソール: 「インジェクタ - 全般」ページ

62.3.3.2 コンテンツの挿入

「コンテンツ」ページでは、インジェクタを使用して挿入するコンテンツを定義できます。HTML、CSS、JavaScript、ページレット宣言など、任意のテキストを挿入できます。

たとえば、次のコードはページ上部に挿入できます。この例では、ハンドラ関数をページ・ロード・イベントに登録し、(ヘッダーやフッターを検索および非表示にすることにより)ハンドラを使用してページ・マークアップを変更します。

<script type="text/javascript">
if (window.addEventListener) {
window.addEventListener('load', hideHeaderFooter, false);
} else if (document.attachEvent) {
window.attachEvent('onload', hideHeaderFooter);
}
function hideHeaderFooter() {
var header = null;
// find the header table by class
if (document.getElementsByClassName) {
header = document.getElementsByClassName('page_header')[0];
} else {
// for older versions of IE
var tables = document.getElementsByTagName('table');
for (var table in tables) {
if (table.class == 'page_header') {
header = table;
break;
}
}
}
if (header != null) {
header.style.display = 'none';
}
// now find and hide the footer (easier to find, since it has an id)
var footer = document.getElementById('t23PageFooter');
if (footer != null) {
footer.style.display = 'none';
}
}
</script>

62.3.4 カスタム・パーサーの作成

カスタム・パーサーを使用すると、コンテンツを解析し、URLを検索するための組込みのロジックを補足したり変更できます。組込みのパーサーがURLの識別やURLとしてリライトしてはいけないセクションの識別に失敗した場合は、カスタム・パーサーを使用してデフォルトの動作を変更できます。パーサーは、WSRPやOracle JPDKポートレット・プロデューサまたはOpenSocialガジェット・プロデューサ用に作成することはできません。

カスタム・パーサーを作成するには、使用するリソースの下にある「パーサー」セクションを選択し、ツールバーの「作成」アイコンをクリックして、パーサーの「全般」ページ(図62-19を参照)を表示します。

- パーサーの名前を入力します。

- 「URLフィルタ」ボックスにURLパターンを入力することにより、パーサーをリソースのサブセットに適用できます。パーサーは、「URLフィルタ」ボックスに指定されたテキストで始まるリソース内のURLにのみ適用されます。ボックスが空または/のみ指定されている場合は、パーサーはリソース全体に適用されます。

- 新しい解析ルールを追加するには、「作成」をクリックして新しい行を「フラグメントの場所」セクションに追加します。

- 「正規表現」欄に、変換するURLフラグメントを識別するための正規表現を入力します。最初のグループ化表現(かっこ内)はフラグメントを識別し、残りの表現はそれを検索するためのコンテキストを提供します。

- 「フラグメント・タイプ」から選択し、選択した場所を解析する方法を定義します。

- 「静的URL」はサーバー上で変換されます。

- 「動的URL」は、クライアント上でJavaScriptを使用して変換されます。

- 「HTMLフラグメント」および「JavaScriptフラグメント」タイプは、XMLなどの別のコンテンツ・タイプに埋め込まれるコンテンツに使用します。

- 「リライトなし」では、URLを検索しない場所を指定します。このオプションは、URLとして間違って識別されたマークアップのリライトを避けるために使用します。

- ナビゲータ・ツールバーの保存アイコンをクリックします。

図62-19 ページレット・プロデューサ・コンソール: 「パーサー」 - 「一般」ページ

たとえば、正規表現XMLFile=(.*?)"は、タグ内に次のように定義されたXMLファイルへのURLを識別します。<embed src="/i/flashchart/anychart_5/swf/OracleAnyChart.swf?>XMLFile=http://apex.oracle.com/pls/apex/apex_util.flash?p=53557:1:74175370346201:FLOW_FLASH_CHART5_R45192463162785599619_en"。

62.3.5 ホストされたファイルの作成

ページレット・プロデューサでは、あらゆるタイプのコンテンツ(HTML、JavaScript、CSSなど)をホストし、仮想URLの場所でそのファイルを提供できます。ホストされたファイルは、様々な目的で使用できます。

- ファイルをアップロードし、元のファイルと同じURLを使用するようそれらを構成することによって、プロキシされたアプリケーション内のコンテンツと機能を上書きします。

- インジェクタ内のホストされたファイルを使用して、プロキシされたアプリケーションにイメージやコンテンツを挿入します。

- ページレット・ファイルをページレット・プロデューサ・サーバー上でホストします。

ファイルをアップロードするには、使用するリソースの下にある「ファイル」セクションを選択し、ツールバーの「作成」アイコンをクリックします。

- 「全般」ページ(図62-20を参照)で、「名前」フィールドにファイルへの相対パスを入力します。先行スラッシュ("/")を使用しないでください。ナビゲータのファイル・コレクションのディレクトリ構造は、ファイルのパスに一致するように更新されます。
ファイルのMIMEタイプを入力します。

図62-20 ページレット・プロデューサ・コンソール: 「ファイル」 - 「全般」ページ

- 「コンテンツ」ページで、ファイルへのパスを入力するか、「参照」をクリックしてそのファイルに移動します。
「アップロード」をクリックして、ファイルをページレット・プロデューサ・サーバーにアップロードします。テキストまたはHTMLをMIMEタイプとして入力した場合、「コンテンツ」ページ上のエディタを使用して、ファイル・コンテンツを入力または編集することもできます。(このエディタはテキストまたはHTMLファイルの場合のみ使用できます。)イメージ・タイプをMIMEタイプとして入力した場合、アップロードしたイメージが「コンテンツ」ページに表示されます。

注意:

ページレット・プロデューサにアップロードするテキスト・ファイル(テキスト/プレーン)は、UTF-8として保存する必要があります。

- ナビゲータ・ツールバーの保存アイコンをクリックします。

アップロードしたファイルはインジェクタおよびページレット内で使用でき、次のURLに配置されます。http://<host_name>:<port_number>/pagelets/<resourcename>/<filepath>

たとえば、ファイルをwelcome_resourceの下にアップロードし、入力したファイル名がimages/myimage.jpgである場合、ページレット・プロデューサ・サーバー上のホストされたファイルへのパスは、次のようになります。http://<host_name>:<port_number>/pagelets/welcome_resource/images/myimage.jpg

ホストされたファイルを使用する際には、次の点に注意してください。

- ホストされたファイル機能は、大きいファイルには使用しないでください。

- OpenSocialガジェットXMLファイルをホストする場合は、このファイルを匿名リソース(セキュリティ・ポリシーなし)の下に配置する必要があります。そこに配置しないと、ガジェットが正常に機能しません。

- ホストされたファイルは、WSRPまたはOracle JPDKポートレット・プロデューサに対して作成できません。

62.4 WSRPおよびOracle JPDKポートレットに対するページレット・クロムの使用

ページレット・プロデューサを使用すると、WSRPおよびOracle JPDKポートレットを表示して任意のWebアプリケーションで使用できるようになります。この項では、ページレット・クロムを使用して、実行時にWSRPやOracle JPDKポートレットでマークアップを変更する方法について説明します。WSRPまたはOracle JPDKポートレット・プロデューサに接続するためのページレット・プロデューサの構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「ページレット・プロデューサの管理」の章を参照してください。

ページレット・クロム・テンプレートは次の各方法を指定するHTMLファイルです。

- ポートレット・マークアップのスタイル・レンダリング方法

- ポートレット・タイトルの表示方法

- モード切替えオプションのレンダリング方法

デフォルトのクロム・テンプレートには、ポートレット名と、異なるモードへの切替えが可能なドロップダウン・メニューが表示されます。ドロップダウン・メニューは、基礎となるポートレットによりサポートされるすべての標準モードが動的に移入されます。テンプレートは、次の予約済トークン(表62-3を参照)を使用して主要なポートレット要素を特定していますが、これらは実行時にページレット・プロデューサによって置き換えられます。

表62-3 ページレット・クロム・テンプレートのトークン

トークン

説明

$$PORTLET TITLE$$

ポートレット・タイトル

$$REPEAT MENU ITEM$$

ナビゲーショナル・アイテムの繰返しセクションの始まりを示すために使用

$$END REPEAT MENU ITEM$$

ナビゲーショナル・アイテムの繰返しセクションの終わりを示すために使用

$$MENU ITEM URL$$

ナビゲーションURL(ポートレット・モードまたはウィンドウ状態の切替え用)

$$MENU ITEM$$

ナビゲーショナル・アイテムの名前(Customizeなど)の表示

$$TOKEN$$

ページ上のページレット・インスタンスの一意の識別子

$$PORTLET CONTENT$$

ポートレット・コンテンツ

pt://images

imageserverのURLを示すために使用されるタグ

次に、非常に単純なページレット・クロム・テンプレートの例を示します。

<script type="text/javascript">
function goto(url)
{
document.location = url;
return false;
}
</script>
<div style="border: 1px solid">
<span><b><!-- $$PORTLET TITLE$$ --></b></span>
<span style="align: right">
Switch Mode:
<select size="1" name="mode">
<!-- $$REPEAT MENU ITEM$$ -->
<option onclick="goto('$$MENU ITEM URL$$')"><!-- $$MENU ITEM$$ --></option>
<!-- $$END REPEAT MENU ITEM$$ -->
</select>

</span>
</div>
<!-- $$PORTLET CONTENT$$ -->

注意:

ページレット・クロム・テンプレート・ファイルは、ページレット・プロデューサWebアプリケーションのクラスパスでホストする必要があります。

外部イメージ・サーバーを使用するようにページレット・プロデューサを構成した場合は、ensemblestatic.war/imageserver/yahooからイメージ・サーバーにファイルをコピーしてデフォルトのクロム・テンプレートが正しくレンダリングされるようにします。

クロム・テンプレートを実装するには、それをパラメータとしてページレット注入URL (RESTまたはJavaScript)に追加します。ページレット注入URLの詳細は、第62.7.2項「Webページへのページレットの追加」を参照してください。次に例を示します。

- REST: /inject/v2/pagelet/pagelet_lib/pagelet_name?chrome=mychrome.html

- JavaScript: injectpagelet(library, name, iframe_options, payload, params, context_id, element_id, is_in_community, chrome)

クロム・パラメータの値として、クロム・テンプレートが含まれているファイルの名前、またはすべてのクロムを抑止してポートレット・マークアップのみを返す特別な予約値「none」を指定できます。クロム・パラメータが省略された場合は、デフォルトのクロムがポートレット・マークアップとともに返されます。デフォルトのクロム・テンプレートでは、YUIメニュー・コントロールを使用してグラデーション・タイトル・バーとモード切替え用のDHTMLドロップダウン・メニューが表示されます。(ADFコンテンツが検出された場合は、デフォルトにより別のクロム・テンプレートが使用されます。このテンプレートはカスタム・テンプレートによってオーバーライドするか、chrome=chrometemplate.htmlを設定することによって標準のデフォルト・テンプレートでオーバーライドできます。)

62.5 OpenSocialガジェットの使用

ページレット・プロデューサ・サーバーからアクセス可能なOpenSocialガジェットは、ページレットとして登録して、ポータルなどのWebアプリケーションで使用できます。OpenSocialガジェットをサポートするには、まず第62.2.7項「OpenSocial設定の構成」の説明に従って、OpenSocialコンテナを定義する必要があります。

ページレット・プロデューサでは、OAuthを除く、標準のOpenSocial APIのほとんどをサポートしています。完全なOpenSocial APIリファレンス・ドキュメントは、次の場所から入手できます。

http://docs.opensocial.org/display/OSD/Specs

ページレット・プロデューサでは、OpenSocial APIを使用した、ガジェットによるプリファレンスの保存、WebCenter Portalプロファイルと接続情報の取得およびユーザーのアクティビティ・ストリームへのアクセスが可能です。

この項には次のサブセクションが含まれます:

- 第62.5.1項「認証の構成」

- 第62.5.2項「ユーザー・プリファレンスの格納」

- 第62.5.3項「WebCenter Portalのプロファイル情報へのアクセス」

- 第62.5.4項「ユーザーのアクティビティ・ストリームへのアクセス」

- 第62.5.5項「ガジェット・イベンティングの使用」

- 第62.5.6項「例: 外部OpenSocialガジェットの消費」

- 第62.5.7項「例: ローカルOpenSocialガジェットの消費」

62.5.1 認証の構成

ガジェットからユーザーレベルのデータ(プリファレンスやピープル・コネクション)をリクエストするには、エンド・ユーザーのIDを確立する必要があります。いずれかのOpenSocialガジェットから、サーバーにあるユーザーレベルのデータにアクセスする必要がある場合、ページレット・プロデューサ・コンソールで、親OpenSocialリソースのセキュリティ・ポリシーを構成する必要があります(第62.3.1.3.2項「ポリシー設定の構成」を参照)。ユーザーがOpenSocialガゼットに初めてアクセスすると、ログイン・ページが表示されます。初回ログイン後は、OpenSocialガゼットに対する後続のリクエストで確立されたユーザーIDが使用されます。

62.5.2 ユーザー・プリファレンスの格納

OpenSocialガゼットでは、ユーザー・プリファレンスを使用してコンテナでデータを格納できます。ユーザー・プリファレンスは、特定のユーザーにスコープ設定されますが、オプションで、appIdにスコープ設定することもできます(ガゼットappIdはページレットのコンテキストIDです)。OpenSocial gadget.Prefs APIを使用する場合は、ユーザー・プリファレンスはユーザーとページレット・インスタンスにスコープ設定されます。または、opensocial.DataRequest APIを使用して、他のページレットと共有可能なプリファレンスをユーザー・レベルで管理することもできます。

ページレットとして登録した場合は、ガゼットのユーザー・プリファレンスはページレット・プリファレンスとして処理されます。WebCenter Portalでは、たとえば、隠されていないユーザー・プリファレンスを、「パーソナライズ」ボタンを使用してエンド・ユーザーが編集できます。さらに、ユーザー間で共有されたプリファレンスをシミュレートするために、ページレット・パラメータを介してユーザー・プリファレンスを渡すことができます。ページレット・プリファレンスが設定されている場合は、対応するページレット・パラメータが常にオーバーライドされます(つまり、パーソナライズはカスタマイズに優先します)。

WebCenter Portalの外では、ガジェットがサポートするページレットに、プリファレンス・エディタにアクセスし、ガジェットを最大/最小化するためのガジェット・タイトルとボタンを表示する簡単なクロムが提供されます。値noneをページレット注入APIのクロム・パラメータに渡すことにより、クロムを抑止できます。プリファレンス・エディタのUIでは、次の4種類のユーザー・プリファレンスをすべてサポートしています。

- string: テキスト・フィールドとしてレンダリング

- bool: チェック・ボックスとしてレンダリング

- enum: ドロップダウン・リストとしてレンダリング

- list: テキスト・フィールドとしてレンダリング(値はパイプ「|」文字で区切る必要があります)

62.5.3 WebCenter Portalプロファイル情報へのアクセス

OpenSocialガジェットでは、標準のOpenSocial APIを介して現在のユーザーのプロファイル・データとピープル・コネクションを問合せできます。この機能を使用するには、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「ページレット・プロデューサの管理」の章の説明に従い、WebCenterDSデータ・ソースのターゲットとしてWC_Portletサーバーを手動で指定する必要があります。

注意:

OpenSocial APIをプロファイルや接続情報の更新に使用することはできません。

サポートされているユーザー・プロファイルのフィールドを表62-4に示します。

表62-4 ユーザー・プロファイルのフィールド

OpenSocialフィールド

タイプ

説明

aboutme

string

個人に関する一般的な説明。

addresses

Plural-Field <Address>

個人の物理メーリング・アドレス。

appData

Plural-Field <AppData>

AppDataのキーと値のコレクションで、プリファレンスに使用。

birthday

日付

個人の生年月日。値は有効な日付である必要があります。この個人の年齢がプライベートであるか、入力した年が使用不可能である場合は、年が0000に設定される場合があります。

emails

Plural-Field <string>

個人の電子メール・アドレス。

location

string

個人の物理的な住所。

name

名前

個人の実名のコンポーネントを分解して書式設定したバージョン。

organizations

Plural-Field <Organization>

個人の現在や過去の組織的な所属。

phoneNumbers

Plural-Field <string>

個人の電話番号。このタイプに正当な標準値に加え、このフィールドでは、モバイル、ファックスおよびページャなどの追加の値を定義します。

photos

Plural-Field <string>

個人の写真のURL。値MUSTは、イメージが含まれているWebページではなく、実際のイメージ・ファイル(例: GIF、JPEGまたはPNGイメージ・ファイル)を指し示します。このフィールドは、このユーザーが撮影した任意の写真を送信するのではなく、連絡先を記述する際の表示に適した特別な連絡先プロファイルの写真を送信するために使用してください。

preferredUsername

string

ユーザー名を要求するサイトでの、この個人の優先ユーザー名(jsmarrまたはdaveman692など)。

status

string

個人のステータス、ヘッドラインまたは挨拶。

thumbnailUrl

string

文字列として指定された、個人の写真のサムネイルのURL。これは完全修飾URLである必要があります。

62.5.4 ユーザーのアクティビティ・ストリームへのアクセス

OpenSocialガジェットは、OpenSocial APIを使用してユーザーのアクティビティ・ストリームを操作できます。次の操作がサポートされています。

- アクティビティの取得

- アクティビティの作成

次の操作はサポートされていません。

- アクティビティの更新

- アクティビティの削除

サポートされているアクティビティ・ストリームのフィールドを表62-5に示します。

表62-5 アクティビティ・ストリームのフィールド

OpenSocialフィールド

タイプ

説明

appId

Object-Id

アクティビティが関連付けられているアプリケーション。

body

string

アクティビティのオプションの拡張バージョン。本体には次のHTMLタグ、 <b> <i>、<a>、<span>のみを含めることもできますが、このフォーマットは無視できます。

externalId

Object-Id

投稿アプリケーションで生成されるオプションのID。

id

Object-Id

アクティビティに永続的に関連付けられているID。

postedTime

string

エポック以降にアクティビティが実行された時間(ミリ秒)。

priority

数値

同じソースの別のアクティビティとの関連で、該当のアクティビティの相対的な優先度を表す0から1までの数値。

title

string

アクティビティのプライマリ・テキスト。タイトルには次のHTMLタグ、 <b> <i>、<a>、<span>のみを含めることもできますが、このフォーマットは無視できます。

userId

Object-Id

アクティビティの定義対象であるユーザーのID。

62.5.5 ガジェット・イベント処理の使用

ページレット・プロデューサでは、OpenSocial PubSubガジェット間イベント・モデルをサポートしています。ガジェットでは、JavaScriptで任意の数のチャネル(単純な文字列名で定義)を通じてイベントを公開できます。受信が終了すると、ガジェットは、再びJavaScriptで任意の数のチャネルを通じてイベントの受信をサブスクライブし、イベントに応じて適切な処理を実行できます。

function connSelected(element) {
var connId = element.id;
var connName = element.lastChild.textContent;
gadgets.pubsub.publish(channel, {id: connId, name: connName});

サポートされているイベント処理APIに対する完全なJavaScriptリファレンスについては、次を参照してください。

http://docs.opensocial.org/display/OSD/Specs

62.5.6 例: 外部OpenSocialガジェットの消費

次の例は説明のために簡略化されています。OpenSocialガジェットをサポートするには、まず第62.2.7項「OpenSocial設定の構成」の説明に従って、OpenSocialコンテナを定義する必要があります。

1. ページレット・プロデューサ・コンソールを使用して新しいリソースを作成し、タイプに「OpenSocial」を選択します。必要に応じてURLおよびポリシーを定義します。新しいリソースを保存します。

2. ページレット・プロデューサ・コンソールを使用して、新しいページレットを作成し、「ガジェットURL」フィールドにガジェットXMLスキーマの場所を入力します。

- ガジェット名およびガジェットに定義されたすべてのプリファレンスをインポートするには、「ガジェット・メタデータのインポート」ボタンをクリックします。いずれかのプリファレンスが編集可能な場合、ページレット・プロデューサは、インポートされたプリファレンスを使用してプリファレンス・エディタを作成します。

- 生成されたプリファレンス・エディタを構成またはカスタマイズするには、「ページレット・パラメータ」ページに移動します。

3. 「ドキュメント」ページに移動し、JavaScriptまたはREST APIを使用してページレットおよびプリファレンス・エディタにアクセスするためのサンプル・コードを確認します。

4. 新しいページレットを保存します。

62.5.7 例: ローカルOpenSocialガジェットの消費

次の例は説明のために簡略化されています。OpenSocialガジェットをサポートするには、まず第62.2.7項「OpenSocial設定の構成」の説明に従って、OpenSocialコンテナを定義する必要があります。

1. ページレット・プロデューサ・コンソールを使用して新しいリソースを作成し、タイプに「OpenSocial」を選択します。必要に応じてURLおよびポリシーを定義します。新しいリソースを保存します。

2. ガジェット・ファイルを作成またはアップロードします。

注意:

OpenSocialガジェットXMLファイルをホストする場合は、このファイルを匿名リソース(セキュリティ・ポリシーなし)の下に配置する必要があります。そこに配置しないと、ガジェットが正常に機能しません。

1. 匿名リソースの下の「ファイル」セクションを選択し、ツールバーの「作成」アイコンをクリックします。

2. 「一般」ページで、「名前」フィールドにファイルへの相対パスを入力します。先行スラッシュ("/")を使用しないでください。たとえば、「gadgets/activities.xml」です。任意のパスと名前を使用できます。パスは、ページレット・プロデューサがファイルの処理に使用する仮想URLです。ナビゲータのファイル・コレクションの仮想ディレクトリ構造は、ファイルのパスに一致するように更新されます。

3. ガジェット・ファイルをアップロードまたは作成するには、「コンテンツ」ページに進みます。
ガジェット・ファイルをアップロードするには、ファイルへのパスを入力するか「参照」ボタンをクリックしてファイルに移動し、「アップロード」ボタンをクリックし、ページレット・プロデューサ・サーバーにファイルをアップロードします。

ガジェット・ファイルを作成するには、「コンテンツ」ページでエディタを使用してコンテンツを入力したり編集します。

4. ナビゲータ・ツールバーの保存アイコンをクリックします。

3. ガジェットで必要なその他のファイル(JavaScript、イメージなど)を、リソースの「ファイル」セクションで作成またはアップロードします。ガジェット・コードのパスに一致するファイルのパスを定義します。たとえば、ガジェットがjsというサブフォルダのJavaScriptファイルを使用する場合は、ファイル(gadgets/js/activities.jsなど)をアップロードする際に「名前」フィールドにディレクトリを指定します。

4. ページレット・プロデューサ・コンソールを使用して、新しいページレットを作成し、「ガジェットURL」フィールドに(ステップ2で作成またはアップロードした)ガジェットのXMLスキーマの相対パスを入力します。ローカル・ファイルの場合は、これはファイル・オブジェクトの「名前」フィールドに定義されているパスと同じになります(gadgets/activities.xmlなど)。

- ガジェット名およびガジェットに定義されたすべてのプリファレンスをインポートするには、「ガジェット・メタデータのインポート」ボタンをクリックします。いずれかのプリファレンスが編集可能な場合、ページレット・プロデューサは、インポートされたプリファレンスを使用してプリファレンス・エディタを作成します。

5. 「ドキュメント」ページに移動し、JavaScriptまたはREST APIを使用してページレットおよびプリファレンス・エディタにアクセスするためのサンプル・コードを確認します。

6. 新しいページレットを保存します。

62.6 ページレット・プロデューサを使用したカスタム・ページレットの構築

この項では、ページレット・プロデューサを使用したページレットの構築について詳しく説明します。アダプティブ・ページレットのスクリプティング・フレームワークを使用する方法、ページレットとリソースのセキュリティ設定を構成してユーザーの認証を管理する方法、カスタムWebインジェクタおよびパーサーを使用して実行時にページレット機能を変更する方法、デバッグ用の拡張ロギング・トレースにアクセスする方法などを紹介します。

この項には次のサブセクションが含まれます:

- 第62.6.1項「アダプティブ・ページレットのスクリプティング・フレームワークの使用」

- 第62.6.2項「実行時のページレット機能の変更」

- 第62.6.3項「ページレットのデバッグ」

62.6.1 アダプティブ・ページレットのスクリプティング・フレームワークの使用

アダプティブ・ページレットのスクリプティング・フレームワークは、サービスをCSPページレットとプロキシされたページに提供するクライアント側JavaScriptライブラリです。この項では、スクリプティング・フレームワークを使用して動的機能をページレットに実装する方法について説明します。

注意:

CSP (およびアダプティブ・ページレットのスクリプティング・フレームワーク)は、WCIとその前のPlumtree Portalにのみ適用されます。WebCenter PortalではWebCenter Portalはサポートされません。

この項には次のサブセクションが含まれます:

- 第62.6.1.1項「構造化されたHTTPレスポンスの処理」

- 第62.6.1.2項「イベント通知の使用」

- 第62.6.1.3項「インプレース・リフレッシュの使用」

- 第62.6.1.4項「セッション・プリファレンスの使用」

クラスとメソッドの完全リストについては、JSPortlet APIのドキュメントを参照してください。アダプティブ・ページレットの追加情報は、第62.6.1.5項「アダプティブ・ページレットの開発のヒント」を参照してください。

62.6.1.1 構造化されたHTTPレスポンスの処理

この項では、アダプティブ・ページレットのスクリプティング・フレームワークを、通常XMLとしてエンコードされる、構造化されたHTTPのクライアント側レスポンス・ハンドラとして使用する方法について説明します。

ごく一部のユーザー・インタフェースのみを変更する必要がある場合、一部のHTTPリクエストに応じて大量のHTMLを返すのは多くの場合費用がかかり非効率的な可能性があります。これは、より複雑なユーザー・インタフェースに特に当てはまります。このような場合は、レスポンスをXMLでエンコードできます。クライアント側レスポンス・ハンドラはXMLを解析し、そのレスポンスに基づいてユーザー・インタフェースを更新(またはその他の処理を実行)できます。構造化されたレスポンス設計パターンを使用して、HTTPリクエストの作成後にユーザー・インタフェースの小領域を再描画するか、単純なHTTP/URIタイプのWebサービスにページレットからアクセスします。次のコード例 (structuredresponse_portlet.html) では、新しいサイトの選択からRSSフィードにアクセスします。

<!-- jsxml includes -->
<a id="imgServerHref" href="/images/plumtree" style="display:none"></a>
<script type="text/javascript"
src="/images/plumtree/common/private/js/PTLoader.js"></script>
<script type="text/javascript">
var oImgServer = new Object();
oImgServer.location = document.getElementById('imgServerHref').href;
var imageServerURL = document.getElementById('imgServerHref').href;
var imageServerConnectionURL = oImgServer.location;
new PTLoader(imageServerURL, imageServerConnectionURL).include('jsxml','en');
</script>

<!-- jscontrols includes -->
<link rel="stylesheet" type="text/css" href="/portal-remote-server/js/jscontrols/styles/css/PTMenu.css"/>
<link rel="stylesheet" type="text/css" href="/portal-remote-server/js/jscontrols/styles/css/PTRichTextEditor.css"/>
<script type="text/javascript" src="/portal-remote-server/js/jscontrols/strings/PTControls-en.js"></script>
<script type="text/javascript" src="/portal-remote-server/js/jscontrols/PTControls.js"></script>

<!-- Inline JS helper functions -->
-->

<script defer type="text/javascript" id="structured-response-portlet-A-script">
// Function that gets the RSS XML feed found at the specified url
getRSSFeed = function(url)
{
// First clear out any existing rows in the table
channelTable.clearRows();

// Force the transformer to fix up the url
var oURL = new Object();
oURL.location = url;

// Do the http get
var get = new PTHTTPGETRequest(oURL.location, handleRSSResponse);
get.invoke();
}

// Function that handles the RSS XML response and updates the table based on the RSS items
handleRSSResponse = function(response)
{
// Get the rss xml
var xml = response.responseText;
if (!xml || xml.indexOf('<?xml') == -1) { return; }

// Parse into a dom, and get the channel node
var xmlDOM = new PTXMLParser(xml);
var rssNode = xmlDOM.selectSingleNode('rss');
var channelNode = rssNode.selectSingleNode('channel');

// Get the channel title and set the status bar text in the table
var channelTitle = channelNode.selectSingleNode('title').getNodeValue();
channelTable.statusBarText = '<b>Loaded Channel</b>: ' + channelTitle;

// Get channel item nodes
var itemNodes = channelNode.selectNodes('item');

// Build table rows
channelTable.rows = new Array();
for (var i=0; i<itemNodes.length; i++)
{
var itemNode = itemNodes[i];

// Get channel item properties
var itemTitle = itemNode.selectSingleNode('title').getNodeValue();
var itemLink = itemNode.selectSingleNode('link').getNodeValue();
var itemDescription = itemNode.selectSingleNode('description').getNodeValue();
if (itemNode.selectSingleNode('author'))
var itemAuthor = itemNode.selectSingleNode('author').getNodeValue();
if (itemNode.selectSingleNode('category'))
var itemCategory = itemNode.selectSingleNode('category').getNodeValue();
if (itemNode.selectSingleNode('pubDate'))
var itemPubDate = itemNode.selectSingleNode('pubDate').getNodeValue();

// Create a row and add it to the table
var row = new PTRow();
row.parent = channelTable;
row.id = i;
row.uid = i;
row.previewText = itemDescription;
row.link = itemLink;
row.columnValues[0] = new PTTextColumnValue(itemTitle);
row.columnValues[1] = new PTTextColumnValue(itemCategory);
row.columnValues[2] = new PTTextColumnValue(itemAuthor);
row.columnValues[3] = new PTTextColumnValue(itemPubDate);
channelTable.rows[channelTable.rows.length] = row;
}

// Redraw the table
channelTable.draw();
}
</script>

<b>Select RSS Feed:</b>
<a href="#" onclick="getRSSFeed('http://www.wired.com/news/feeds/rss2/0,2610,,00.xml'); return false;">Wired News</a>
<a href="#" onclick="getRSSFeed('http://news.com.com/2547-1_3-0-5.xml'); return false;">CNET News.com</a>
<a href="#" onclick="getRSSFeed('http://partners.userland.com/nytRss/nytHomepage.xml'); return false;">NY Times</a>
<br><br>

<!-- Set up a table control to display channel items -->
<div id="channelTableContainer"></div>
<script defer type="text/javascript">
var channelTable = new PTTableControl();
channelTable.locale = 'en_US';
channelTable.objName = 'channelTable';
channelTable.container = 'channelTableContainer';
channelTable.baseURL = '/imageserver/plumtree/common/private/portal-remote-server/js/jscontrols/1/';
channelTable.statusBarText = 'No RSS Feed Selected';
channelTable.rowDetailAction = new PTJavaScriptAction('window.open(\'${ROW.link}\');');
channelTable.columns[0] = new PTColumn();
channelTable.columns[0].name = 'Title';
channelTable.columns[0].width = '40%';
channelTable.columns[1] = new PTColumn();
channelTable.columns[1].name = 'Category';
channelTable.columns[1].width = '20%';
channelTable.columns[2] = new PTColumn();
channelTable.columns[2].name = 'Author';
channelTable.columns[2].width = '20%';
channelTable.columns[3] = new PTColumn();
channelTable.columns[3].name = 'Publication Date';
channelTable.columns[3].width = '20%';
channelTable.areColumnsResizable = true;
channelTable.clientSortEnabled = true;
channelTable.scrollHeight = 250;
channelTable.init();
channelTable.draw();
</script>
</div>

62.6.1.2 イベント通知の使用

この項では、アダプティブ・ページレットのスクリプティング・フレームワークにより、ページレットがどのように、その他のページレットによって生成されたページレベルのイベントとカスタム・イベントの両方に応答できるようになるかを説明します。

スクリプティング・フレームワーク内のメソッドregisterForWindowEventおよびregisterOnceForWindowEventは、ページレベルのイベントにアクセスできるページレットを指定します。完全なリストについては、第62.6.1.2.1項「スクリプティング・フレームワークで使用するためのページレベルのイベント」を参照してください。これらのイベントの通知に登録するには、イベントの名前と、そのイベントが発生したときにコールするメソッドの名前を渡します。ページレベルのイベントが発生すると、JavaScriptイベント・オブジェクトが引数としてイベント・ハンドラに渡されます。スクリプティング・フレームワークでは、ページレットはraiseEventおよびregisterForEventを使用してカスタム・イベントを発生させ、応答することができます。ブロードキャスト/リスナー・デザイン・パターンは、セッション・プリファレンスを指定して通知サービスを使用する重要な例です。ユーザーはアイテムを選択するか、「ブロードキャスト」ページレットで別のアクションを実行できます。これによって、その他の「リスナー」ページレットのコンテンツが再作成されます。次の例では、ブロードキャスト・ページレットによって、テキスト・ボックスに数字を入力できるフォームが表示されます。

図62-21 ブロードキャスト・ポートレット

ユーザーがテキスト・ボックスに数値を入力すると、リスナー・ページレットの値が変更されます。最初のリスナー・ページレットには、ブロードキャスト・ページレットに入力した数値の平方根が表示されます。

図62-22 リスナー1のポートレット

Listener

2番目のリスナー・ページレットには、ブロードキャスト・ページレットに入力した数値の立方根が表示されます。

図62-23 リスナー2のポートレット

Listener

次の手順では、ページレットがどのように機能するのかについてまとめています。

- ロード時に、各リスナー・ページレットは固有のインスタンス・メソッド(registerForEvent)をコールし、onBroadcastUpdateタイプのイベントを登録します。

- Enter numberテキスト・ボックスに発生するonkeyupイベントごとに、ブロードキャスト・ページレットはセッション・プリファレンスをこのテキスト・ボックスに入力された値に設定し、その固有のインスタンス・メソッド(raiseEvent)をコールしてonBroadcastUpdateタイプのイベントを生成します。

- onBroadcastUpdateイベントが発生したり、ページが再ロードされた場合は、各リスナー・ページレットがブロードキャスト・ページレットによって設定されたセッション・プリファレンスを取得し、プリファレンスの値に基づいて表示する新しい値を計算します。

ブロードキャスト・ページレット

<div style="padding:10px;" align="center">
<p><b>Enter number:</b>
&nbsp;<input type="text" style="font-size:22px;font-weight:bold;text-align:center;"
id="broadcast_prefName" value="4" size="7" onkeyup="broadcast_setPrefs(this.value)"></p>
<br>
</div>

<script type="text/javascript">
function broadcast_setPrefs(val)
{
var prefName = 'broadcastNumber';
var prefValue = val;
PTPortlet.setSessionPref(prefName,prefValue);
var broadcastPortlet = PTPortlet.getPortletByGUID('{D9DFF3F4-EAE7-5478-0F4C-2DBD94444000}');

if (!broadcastPortlet)
{
broadcast_debug('Could not locate PTPortlet object which corresponds to <b>Broadcast Portlet</b> on page.');
return;
}
broadcast_debug('<b>Broadcast Portlet</b> raising onBroadcastUpdate event.');
broadcastPortlet.raiseEvent('onBroadcastUpdate',false);
}
function broadcast_debug(str)
{
if (window.PTDebugUtil)
{
PTDebugUtil.debug(str);
}
}
</script>

リスナー・ページレット#1

<div style="padding:10px;" align="center">
<p><b>Square root:</b>
<div style="height:21px;border:2px solid black;padding:2px;overflow:visible;font-size:14px;"id="listener1-swatch">
</div>
</div>

<script>
function listener1_update()
{
var broadcastNumber = parseFloat(PTPortlet.getSessionPref('broadcastNumber'));
if (isNaN(broadcastNumber))
{
listener1_error('<b>Listener-1 Portlet</b> cannot parse number from session pref broadcastNumber');
return;
}

listener1_debug('<b>Listener-1 Portlet</b> computing square root of ' + broadcastNumber);
var swatch = document.getElementById('listener1-swatch');
swatch.innerHTML = Math.sqrt(broadcastNumber);
}

function listener1_debug(str)
{
if (window.PTDebugUtil)
{
PTDebugUtil.debug(str);
}
}

function listener1_error(str)
{
if (window.PTDebugUtil)
{
PTDebugUtil.error(str);
}
}

function listener1_getPortlet()
{
var portletGUID = '{D9DFF3F4-EAE7-5478-0F4C-2DBDB4F4A000}';
var listener1Portlet = PTPortlet.getPortletByGUID(portletGUID);
return listener1Portlet;
}

var listener1Portlet = listener1_getPortlet();
if (listener1Portlet)
{
listener1Portlet.registerForEvent('onBroadcastUpdate','listener1_update');
listener1_debug('<b>Listener-1 Portlet</b> registered refreshOnEvent for event onBroadcastUpdate');
listener1Portlet.registerForEvent('onload','listener1_update');
}

</script>

リスナー・ページレット#2

<div style="padding:10px;" align="center">
<p><b>Cube root:</b>
<div style="height:21px;border:2px solid black;padding:2px;overflow:visible;font-size:14px;"id="listener2-swatch">
</div>
</div>

<script>
var listener2_oneThird = (1/3);
function listener2_update()
{
var broadcastNumber = parseFloat(PTPortlet.getSessionPref('broadcastNumber'));
if (isNaN(broadcastNumber))
{
listener2_error('<b>Listener-2 Portlet</b> cannot parse number from session pref broadcastNumber');
return;
}

listener2_debug('<b>Listener-2 Portlet</b> computing square root of ' + broadcastNumber);
var swatch = document.getElementById('listener2-swatch');
swatch.innerHTML = Math.pow(broadcastNumber,listener2_oneThird);
}

function listener2_debug(str)
{
if (window.PTDebugUtil)
{
PTDebugUtil.debug(str);
}
}

function listener2_error(str)
{
if (window.PTDebugUtil)
{
PTDebugUtil.error(str);
}
}

function listener2_getPortlet()
{
var portletGUID = '{D9DFF3F4-EAE7-5478-0F4C-2DBDCA1C7000}';
var listener2Portlet = PTPortlet.getPortletByGUID(portletGUID);
return listener2Portlet;
}

var listener2Portlet = listener2_getPortlet();
if (listener2Portlet)
{
listener2Portlet.registerForEvent('onBroadcastUpdate','listener2_update');
listener2_debug('<b>Listener-2 Portlet</b> registered refreshOnEvent for event onBroadcastUpdate');
listener2Portlet.registerForEvent('onload','listener2_update');
}

</script>

62.6.1.2.1 スクリプティング・フレームワークで使用するためのページレベルのイベント

スクリプティング・フレームワークでは、次のページレベルのイベントに自動的にアクセスできます。

表62-6 ページレベルのイベント

イベント

トリガー時期:

onload

ブラウザがページをロードした直後

onbeforeunload

ページがアンロードされる(ブラウザ・ウィンドウが閉じるか別の場所に移動する)前

onunload

ページがアンロードされる(ブラウザ・ウィンドウが閉じるか別の場所に移動する)直前

onactivate

ページがアクティブ要素として設定された(フォーカスを取得した)とき

onbeforeactivate

ページがアクティブ要素として設定される(フォーカスを取得する)直前

ondeactivate

アクティブ要素が現在のページから親ドキュメントの別のページに変更されたとき

onfocus

ページがフォーカスを取得したとき

onblur

ページがフォーカスを喪失したとき

oncontrolselect

ユーザーがページのコントロールをまさに選択するとき

onresize

ページのサイズをまさに変更するとき

onresizestart

ユーザーがコントロールの選択でページのディメンションの変更を開始したとき

onresizeend

ユーザーがコントロールの選択でページのディメンションの変更を終了したとき

onhelp

ブラウザがアクティブ・ウィンドウになっている状態でユーザーが[F1]キーを押したとき

onerror

ページのロード中にエラーが発生したとき

onafterprint

関連するドキュメントが印刷されたまたは印刷プレビューされた直後

62.6.1.3 インプレース・リフレッシュの使用

この項では、ページレットで、スクリプティング・フレームワークを使用してインプレース・リフレッシュを実装することによって、ページをリフレッシュすることなく内部コンテンツを再ロードする方法について説明します。

ページレットの多くは時間に影響を受けるデータを表示します。場合によっては、ユーザーはページの残りの部分を変更またはリフレッシュすることなく、ページレット内のリンク間を移動できる必要があります。ページレット・コンテンツは、コマンドを使用する、リフレッシュ・アクションをイベントに関連付ける (refreshOnEvent)、または設定した間隔でリフレッシュするようにページレットをプログラムする(setRefreshInterval)ことでリフレッシュできます。スクリプティング・フレームワークにはまた、ページレットを開閉するためのメソッドも用意されています。次の単純な例では、リフレッシュ・ページレットに「ポートレットのリフレッシュ」ボタンが表示されます。このボタンをクリックすると、ページレットに表示される日時が更新されます。

図62-24 ポートレットのリフレッシュ

インプレース更新は、ページレット・オブジェクト・インスタンスに対してrefresh()メソッドをコールすることにより、実行されます。リフレッシュ時には、新しいURLがページレット内に表示されるように設定することもできます。(タイトル・バーはリフレッシュ時に変更できません。)

<div style="padding:10px;" align="center">
<p><button onclick="refresh_portlet()">Refresh Portlet</button></p>
<p><b>Current time is:</b><br> <span id="refreshTimeSpan"></span></p>
</div>

<script type="text/javascript">
function refresh_portlet()
{
var refreshPortlet = PTPortlet.getPortletByID($PORTLET_ID$);
if (!refreshPortlet)
{
refresh_debug('Could not locate PTPortlet object which corresponds to <b>Refresh Portlet</b> on page.');
return;
}
refresh_debug('<b>Refresh Portlet</b> calling refresh() method.');
refreshPortlet.refresh();
}

function refresh_debug(str)
{
if (window.PTDebugUtil)
{
PTDebugUtil.debug(str);
}
}

var t = new Date();
document.getElementById('refreshTimeSpan').innerHTML = t;
</script>

62.6.1.4 セッション・プリファレンスの使用

この項では、ブラウザレベルの変数が同一ページ上にない場合でも、その変数を格納してページレット間で共有する方法について説明します。たとえば、1つのページレットにユーザーが入力した値は、別のユーザーが取得できます。スクリプティング・フレームワークは仲介として機能するため、セッション・プリファレンスを使用すると、すべてのページレットで共通セッションに格納されているすべての値にアクセスできます。

ページレットはプリファレンスを使用して相互に通信できますが、プリファレンスにアクセスするには通常、データベースへのラウンドトリップが必要です。セッション・プリファレンスは、クライアント・ブラウザ内でユーザーのセッションの設定を保存および共有する手段を提供します。「マスター/ディテール」デザイン・パターンは、セッション・プリファレンスの最も基本的な使用方法です。このデザイン・パターンでは、2つのページレットの間で制御と表示が分割されます。たとえば、「マスター」ページレットではデータをリスト形式で要約し、「ディテール」ページレットではユーザーの選択に応じてデータ・アイテムごとにディテールを表示することができます。次の例では、マスター・ページレットによって、テキスト・ボックスに色コードを入力できるフォームが表示されます。

図62-25 色コード

ユーザーが色コードをテキスト・ボックスに入力すると、ディテール・ページレットに表示されている色が変更されます。

図62-26 色見本

マスター・ページレットの「色の入力」テキスト・ボックスでonkeyupが発生するたびに、次の手順が実行されます。

1. マスター・ページレットのテキスト・ボックスの現在値を使用してセッション・プリファレンスが設定されます。

2. マスター・ページレットからディテール・ページレットの更新メソッドがコールされます。

3. ディテール・ページレットにより、セッション・プリファレンスから色の値が取得されます。

4. ディテール・ページレットの色見本領域が再描画され、新しい色の値が反映されます。

注意:

共有のセッション・プリファレンスは、ページレット・プロデューサ・コンソール内のページレットの「プリファレンス」ページから名前で指定する必要があります。指定しないと、プリファレンスはページレットに送信されません。

アダプティブ・ページレットのスクリプティング・フレームワークには、ページレット間の関係を解除し、共通のイベント・インタフェースを使用して通信するための簡単な方法が用意されています。

注意:

次の例は極度に簡略化されたもので、マスター・ページレットからディテール・ページレットのJavaScriptメソッドが直接コールされます。マスター・ページレットで、ディテール・ページレットが同一ページ上に実際に存在することを確認するためのなんらかの処置を講じないかぎり、マスターからディテールに対してコールすると、エラーが発生する可能性があります。

マスター・ページレット

<div style="padding:10px;" align="center">
<p><b>Enter color:</b> &nbsp;
<input type="text" style="font-size:22px;font-weight:bold;text-align:center;" id="master_prefName"
value="#FFFFFF" size="8" onkeyup="master_setPrefs(this.value)"></p><br>
</div>

<script type="text/javascript">
function master_setPrefs(val)
{
var prefName = 'masterColor';
var prefValue = val;
PTPortlet.setSessionPref(prefName,prefValue);

master_debug('<b>Master Portlet</b> called PTPortlet.setSessionPref(\'masterColor\',\'' + prefValue + '\').');

if (window.detail_update)
{
master_debug('<b>Master Portlet</b> calling detail_update().');
detail_update();
}
else
{
master_debug('Could not locate portlet <b>Detail Portlet</b> on page.');
}
}
function master_debug(str)
{
if (window.PTDebugUtil)
{
PTDebugUtil.debug(str);
}
}
</script>

ディテール・ページレット

<div style="padding:10px;" align="center">
<p><b>Color swatch</b> &nbsp;
<div style="width:100px;height:100px;border:2px solid black;padding:2px;"id="detail-swatch"></div>
<script>
function detail_update()
{
var color = PTPortlet.getSessionPref('masterColor');
detail_debug('<b>Detail Portlet</b> received value="' + color + '" for PTPortlet.getSessionPref(\'masterColor\')');

var swatch = document.getElementById('detail-swatch');
if (swatch)
{
swatch.innerHTML = '<div style="background-color:' + color + ';width:100%;height:100%;"></div>';
}
else
{
detail_debug('<b>Detail Portlet</b> cannot find \'detail-swatch\' DIV element.');
}
}

function detail_debug(str)
{
if (window.PTDebugUtil)
{
PTDebugUtil.debug(str);
}
}
</script>

62.6.1.5 アダプティブ・ページレットの開発のヒント

次のヒントは、アダプティブ・ページレットのスクリプティング・フレームワークを使用するほとんどのページレットに当てはまります。

- すべてのフォームと関数に一意の名前を使用します。一意の名前と値の形成にページレットのGUIDを使用し、ページ上の他のコードと名前の衝突が発生しないようにします。

- すべてのURLをプロキシします。コール元のページと異なるホスト/ポートを持つURLに対するリクエストを作成することはできません。JavaScriptを通じてリクエストされるURLはすべてプロキシする必要があります。

- アダプティブ・ページレットのスクリプティング・フレームワークを使用している場合は、サポートをチェックします。コンポーネントが存在するかどうかを判断するコードを組み込むことをお薦めします。理想的には、ページレットでいずれの状況も処理できる必要があります。最も簡単な解決方法は、スクリプティング・フレームワークがサポートされていない場合にユーザーに警告を行うIf文を備えたコードを優先することです。

<script>
if (PTPortlet == null)
{
if (document.PCC == null)
{
alert("This pagelet only works in portals that support the JSPortlet API .
The pagelet will be displayed with severely reduced
functionality. Contact your Administrator.");
}
}
else
{
[scripting code here]
}
</script>

- ウィンドウが閉じるときに、ページレットによって開かれたポップアップ・ウィンドウをすべて閉じます。onunloadイベントを使用してポップアップ・ウィンドウを閉じる場合に、スクリプティング・フレームワークを使用できます。

- 必要なすべてのJavaScriptを前もってページに追加しておきます。innerHTMLプロパティを使用してページに追加されたスクリプト・ブロック/インクルードは、ブラウザで処理されない場合があります。

- Microsoft Internet Explorer: スクリプト・タグにdefer(遅延)属性を追加します。

- Netscape: RegExpを使用してレスポンスを解析し、スクリプトを見つけて評価します。

- JavaScript HTTPとプロキシされたHTTPで同じ認証資格証明を使用する必要があります。JavaScriptで仲介されたHTTPリクエストからは、ゲートウェイ処理された正常なHTTPリクエストの作成時と同じ認証トークン(cookie)が送信されます。

62.6.2 実行時のページレット機能の変更

この項では、カスタム・インジェクタおよびパーサーを使用して、実行時にページレット機能を変更する方法について説明します。

この項には次のサブセクションが含まれます:

- 第62.6.2.1項「Webインジェクタの使用」

- 第62.6.2.2項「カスタム・パーサーの使用」

62.6.2.1 Webインジェクタの使用

Webインジェクタは、プロキシされているリソース・ページの指定の場所にコンテンツを挿入します。コンテンツには、HTML、CSS、JavaScriptおよびページレット宣言などのテキストを指定できます。ページから不要なコンテンツを削除するために空のインジェクタを使用することもできます。インジェクタをOpenSocialリソース用に作成することはできません。単純なHTMLコンテンツの注入についてはユース・ケースが限られていますが、ページレットのHTMLマークアップを直接変更するJavaScriptを注入することもできます。Webインジェクタの作成の詳細は、第62.3.3項「Webインジェクタの作成」を参照してください。

62.6.2.2 カスタム・パーサーの使用

カスタム・パーサーを使用すると、コンテンツを解析し、URLを検索するための組込みのロジックを補足したり変更できます。組込みのパーサーがURLの識別やURLとしてリライトしてはいけないセクションの識別に失敗した場合は、カスタム・パーサーを使用してデフォルトの動作を変更できます。パーサーは、WSRPやOracle JPDKポートレット・プロデューサまたはOpenSocialガジェット・プロデューサ用に作成することはできません。カスタム・パーサーの作成の詳細は、第62.3.4項「カスタム・パーサーの作成」を参照してください。

62.6.3 ページレットのデバッグ

この項では、ページレットのデバッグに拡張ロギング・トレースを使用する方法について説明します。ロギングは、ページレット・プロデューサ・コンソールの「設定」セクションで構成され、ここで、ページレット・プロデューサの各コンポーネントについて様々なレベルのロギングを定義できます。詳細は、第62.2項「ページレット・プロデューサ設定の構成」を参照してください。

この項には次のサブセクションが含まれます:

- 第62.6.3.1項「HTTPリクエストおよびレスポンスの表示」

- 第62.6.3.2項「変換コンテンツの表示」

62.6.3.1 HTTPリクエストおよびレスポンスの表示

ページレット・プロデューサによって送受信されたHTTPリクエストとレスポンスを表示するには、「ログ設定」ページで「HTTP」コンポーネントを「最も詳細」に設定します。例62-1、例62-2、例62-3および例62-4のトレースは、テスト環境から取得したものです。

例62-1 ページレット・プロデューサによって受信されたHTTPリクエスト

URL: http://example.com:7001/pagelets/bidwiki/includes/js/ajax.js
METHOD: GET
SESSION ID: GdYGNJzMhxy1CJBMVTX8xTNq32GmLXYNY9VqFBcdprFnhcyQtzdp!1377086614!1305769149498
HEADERS:
Host: example.com
Connection: keep-alive
Referer: http://example.com:7001/pagelets/bidwiki/dashboard.action
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,ru;q=0.6,it;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
If-None-Match: W/"736-1124953206000"
If-Modified-Since: Thu, 25 Aug 2012 07:00:06 GMT
COOKIES:
JSESSIONID: GdYGNJzMhxy1CJBMVTX8xTNq32GmLXYNY9VqFBcdprFnhcyQtzdp!1377086614

例62-2 ページレット・プロデューサにより送信されたHTTPレスポンス

URL: http://example.com:7001/pagelets/bidwiki/styles/main-action.css
Response Code: 200
Reason:
HEADERS:
Date: Thu, 19 May 2011 01:39:14 GMT
Content-Type: text/css;charset=UTF-8
Server: Apache-Coyote/1.1
BODY:
.sidebar {
/*background-image: url(http://example.com:7001/pagelets/bidwiki/download/ resources/leftnav_bg.jpg);*/
/*background-repeat: repeat-y;*/
background-color: #F0F0F0;
/*border-bottom:1px solid #F0F0F0;*/
} ...

例62-3 ページレット・プロデューサから送信されたHTTPリクエスト

URL: http://xmlns.oracle.com/includes/js/ajax.js
METHOD: GET
HEADERS:
CSP-Ensemble-REST-API: http://example.com:7001/pagelets
X-Client-IP: example.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16
CSP-Session-Username: weblogic
Accept-Language: en-US,en;q=0.8,ru;q=0.6,it;q=0.4
CSP-Gateway-Type: Proxy
PT-Proxy-Passes: 1
If-Modified-Since: Thu, 25 Aug 2012 07:00:06 GMT
CSP-Protocol-Version: 1.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding: gzip,deflate,sdch
Referer: http://example.com:7001/pagelets/bidwiki/dashboard.action
If-None-Match: W/"736-1124953206000"
Accept: */*
CSP-Aggregation-Mode: Single
PT-Proxy-instance0: {DECBB085-D891-72CF-2B75-005E7FE20000}
CSP-Gateway-Specific-Config: PT-User-Name=weblogic,PT-Guest-User=0,...

例62-4 ページレット・プロデューサによって受信されたHTTPレスポンス

Original URI: http://xmlns.oracle.com/styles/main-action.css
Effective URI: http://xmlns.oracle.com/styles/main-action.css
Status Code: 200
Reason: OK
Version: HTTP/1.1
HEADERS:
Content-Type: text/css;charset=UTF-8
Content-Length: 29178
Server: Apache-Coyote/1.1
Date: Thu, 19 May 2011 01:39:14 GMT
TRAILERS:
BODY:
body, p, td, table, tr, .bodytext, .stepfield {
font-family: Verdana, arial, sans-serif;
font-size: 11px;
line-height: 16px;
color: #000000;
font-weight: normal;
}

62.6.3.2 変換コンテンツの表示

変換の前後にページレット・プロデューサによってプロキシされたコンテンツを表示するには、「ロギング設定」ページでTransformコンポーネントを「最も詳細」に設定します。これらのトレースの目的は、変換の様々な段階でレスポンス・コンテンツをログに記録して、それらを比較したり、異なる変換の結果を表示できるようにすることです。例62-5および例62-6のトレース例は、テスト環境から取得したものです。

例62-5 未変換のマークアップ

Original request: URL: http://example.com:7001/pagelets/bidwiki/styles/main-action.css
METHOD: GET
SESSION ID: GdYGNJzMhxy1CJBMVTX8xTNq32GmLXYNY9VqFBcdprFnhcyQtzdp!1377086614!1305769149498
HEADERS:
Host: example.com:7001
Connection: keep-alive
Referer: http://example.com:7001/pagelets/bidwiki/dashboard.action
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16
Accept: text/css,*/*;q=0.1
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,ru;q=0.6,it;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
COOKIES:
JSESSIONID: GdYGNJzMhxy1CJBMVTX8xTNq32GmLXYNY9VqFBcdprFnhcyQtzdp!1377086614

Untransformed content:
body, p, td, table, tr, .bodytext, .stepfield {
font-family: Verdana, arial, sans-serif;
font-size: 11px;
line-height: 16px;
color: #000000;
font-weight: normal;
}

例62-6 変換済のマークアップ(トランスフォーマ・クラスによって変換)

Transformed by: class com.plumtree.server.impl.portlet.transformers.CSSTurboParser
Original request: URL: http://example.com:7001/pagelets/bidwiki/styles/main-action.css
METHOD: GET
SESSION ID: GdYGNJzMhxy1CJBMVTX8xTNq32GmLXYNY9VqFBcdprFnhcyQtzdp!1377086614!1305769149498
HEADERS:
Host: 10.148.118.211:7001
Connection: keep-alive
Referer: http://example.com:7001/pagelets/bidwiki/dashboard.action
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16
Accept: text/css,*/*;q=0.1
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,ru;q=0.6,it;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
COOKIES:
JSESSIONID: GdYGNJzMhxy1CJBMVTX8xTNq32GmLXYNY9VqFBcdprFnhcyQtzdp!1377086614

Transformed content:
body, p, td, table, tr, .bodytext, .stepfield {
font-family: Verdana, arial, sans-serif;
font-size: 11px;
line-height: 16px;
color: #000000;
font-weight: normal;
}

62.7 Webアプリケーションでのページレットの使用

この項では、ページレットをJDeveloperのJSFページ、Webページおよびポータル・ページに追加する方法について説明します。ページレットを任意のWebアプリケーションに追加する前に、Oracle Fusion Middleware Oracle WebCenter Portalの管理のポータル、テンプレート、アセットおよび拡張機能のデプロイに関する項の説明に従って、ページレット・プロデューサでリソースとページレットをデプロイして構成する必要があります。

この項には次のサブセクションが含まれます:

- 第62.7.1項「Oracle JDeveloperでのJSFページへのページレットの追加」

- 第62.7.2項「Webページへのページレットの追加」

- 第62.7.3項「ポータル・ページへのページレットの追加」

62.7.1 Oracle JDeveloperでのJSFページへのページレットの追加

Oracle JDeveloperを使用すると、JSFページにページレットをドラッグ・アンド・ドロップできます。この項では、ページレット・プロデューサをFrameworkアプリケーションに登録し、ページレットをJSFページに追加し、ブラウザでページを表示してページレットをテストします。

この項には次のサブセクションが含まれます:

- 第62.7.1.1項「Frameworkアプリケーションへのページレット・プロデューサの登録」

- 第62.7.1.2項「JSFページへのページレットの追加」

- 第62.7.1.3項「ページレットの保護」

62.7.1.1 Frameworkアプリケーションへのページレット・プロデューサの登録

ページレットをJSFページに追加する前に、ページレット・プロデューサをアプリケーションに登録する必要があります。ページレット・プロデューサは次の2つの方法で登録できます。

- 特定のアプリケーションにプロデューサを登録。デフォルトでは、「アプリケーション・リソース」パネル下に接続を作成する「新規ページレット・プロデューサ」ダイアログで、「IDE接続」オプションが選択されています。

- 「リソース・パレット」を使用してプロデューサを登録。このオプションを使用すると、プロデューサのページレットを複数のアプリケーションで使用できます。「リソース・パレット」で使用可能なページレットは、ページ上にドロップすることにより、任意のPortal Frameworkアプリケーションに追加できます。「リソース・パレット」からページレットを追加する際、まだ登録されていない場合には、そのプロデューサはアプリケーションに登録されます。アプリケーション・ナビゲータの「アプリケーション・リソース」パネルに、「リソース・パレット」からプロデューサ接続全体をドラッグ・アンド・ドロップすることもできます。これにより、プロデューサがアプリケーションに登録されます。または、「リソース・パレット」でプロデューサを右クリックし、コンテキスト・メニューから「アプリケーションに追加」を選択してプロデューサを現在開いているアプリケーションに登録します

Oracle JDeveloperを使用してページレット・プロデューサを登録するには:

1. アプリケーション・ナビゲータの「アプリケーション・リソース」パネルで、「接続」を右クリックして「接続の作成」を選択し、「ページレット・プロデューサ」を選択します。

2. 「ページレット・プロデューサ」ダイアログの「名前」フィールドに、意味のわかりやすいプロデューサ名を入力します。たとえば、myPageletProducerと入力します。

3. 「URL」フィールドに、ページレット・プロデューサのURLをhttp://hostname:portnumber/pageletsの形式で入力します。

4. 「OK」をクリックします。図62-27に示すように、ページレット・プロデューサは、「アプリケーション・リソース」パネルの「接続」ディレクトリの「ページレット・プロデューサ」ディレクトリの下に作成されます。

図62-27 「アプリケーション・リソース」パネルのページレット・プロデューサ

62.7.1.2 JSFページへのページレットの追加

ページレットをページに追加するには:

1. JDeveloperで、JSFページがまだ開いていない場合は、そのページを「デザイン・ビュー」で開きます。

2. 「アプリケーション・リソース」パネルまたは「リソース・パレット」の「IDEリソース」パネルに進みます。「ページレット・プロデューサ」で、プロデューサを開いてそのコンテンツを表示します。

3. プロデューサのコンテンツから、JSFページにページレットをドロップします。

4. このページレットでIFRAMEを有効化する場合は、「ページレットのページへの追加」ダイアログの「IFrameの使用」セクションで「はい」を選択します。

5. IFrame高さフィールドでは、必要な高さをピクセルで指定するか、空白のままにします。高さを「auto」と指定して、自動サイズ変更を使用することもできます。(このオプションを使用するには、プロジェクトにIFrameサイズ変更ページを追加する必要があります。詳細は、第62.7.2.3項「IFrameへの自動サイズ変更の使用」を参照してください。)「OK」をクリックします。

6. 「タスク・フロー・バインディングの編集」ダイアログでは、入力パラメータがデフォルトで指定されています。必要に応じて任意のパラメータを変更し、「OK」をクリックします。

7. ページを保存します。「構造」ウィンドウでは、ページは図62-28のように表示されます。

図62-28 「構造」ウィンドウのページレット

8. アプリケーション・ナビゲータの「プロジェクト」で該当のJSFページを右クリックし、「実行」を選択します。

9. ログイン・ページが表示される場合は、ユーザー名とパスワードを入力しページレットを表示できるようにします。図62-29に、ブラウザ・ウィンドウでのページレットのサンプルを示します。

図62-29 ページレットのサンプル

62.7.1.3 ページレットの保護

ページレットの保護の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のOracleシングル・サインオン(OSSO)の構成に関する項を参照してください。

62.7.2 Webページへのページレットの追加

ページレットをデプロイすると、JavaScriptまたはRESTを使用してページレットをプロキシされたページやプロキシされていないページのどちらにも挿入できます。

この項には次のサブセクションが含まれます:

- 第62.7.2.1項「JavaScriptを使用したページレットの挿入」: ページレット・プロデューサを使用すると、簡単なJavaScript機能を使用してページレットをプロキシされていないページに挿入できます。

- 第62.7.2.2項「RESTを使用したページレットへのアクセス」: ページレット・プロデューサREST APIを使用すると、リモートWebサービスでリソースやページレットの情報をページレット・プロデューサから取得し、ページレットをプロキシされたページやプロキシされていないページのどちらにも挿入できます。

- 第62.7.2.3項「IFrameへの自動サイズ変更の使用」: ページレット注入機能を使用すると、ページレットのコンテンツをカプセル化するIFrameのサイズを自動的に変更できます。

62.7.2.1 JavaScriptを使用したページレットの挿入

簡単なJavaScript機能を使用して、ページレットをプロキシされていないページに挿入できます。

この機能をアクティブにするには、次のHTMLスニペットをページの<HEAD>セクションに追加します。

<script type="text/javascript" src="http://proxy:port/pagelets/inject/v2/csapi">
</script>

このスクリプトを実行すると、すべてのCSAPIおよびページレット注入関数がページレットを表示するページに注入されます。注入されたセクションの1つには、次の関数があります。

function injectpagelet(library, name, iframe_options, params, context_id, element_id,  is_in_community, chrome, forward_params)
{
...
}

この関数は、ページレットをウィジェットとして親ページに注入します。メソッド・インタフェースでは、次のパラメータが使用されます。

- library: 必須。注入するページレットのライブラリ名を表す文字列です。Unicode文字と数字のみ使用でき、スペースを含めることはできません。

- name: 必須。注入するページレットの名前を表す文字列です。Unicode文字と数字のみ使用でき、スペースを含めることはできません。

- iframe_options: ページレット・コンテンツの周囲にIFRAMEを使用するかどうかを指定します。IFRAMEオプションのサンプルは、iframe width=100% height=auto frameborder=0のようになります。省略または空白のままにすると、ページレット・コンテンツがインラインにレンダリングされます。

- params: 問合せ文字列形式のページレット・パラメータ。たとえば、'param1=value1&param2=value2&param3=value3'のようになります。

- context_id: ページレット・インスタンスの外部識別子で、プリファレンスのスコープをページレット・プロデューサ・サーバーに設定するために使用されます。整数を指定する必要があります。

- element_id: ページレット・コンテンツの注入先のHTML要素IDです。省略されたまたは空白のままの場合は、injectpageletコールが評価された場合に、document.write()を使用してページレット・コンテンツが注入されます。

- is_in_community: このページレットがコミュニティまたはグループ・ページのいずれにあるのかを指定します。値がtrueに設定されている場合は、コミュニティIDヘッダーのcontext_idがページレットに送信されます。デフォルトはfalseです。

- chrome: WSRP/JPDKページレット用に使用するChromeテンプレートの名前を指定します。Chromeが表示されないようにするには、値にnoneを指定します。

- forward_params: 問合せ文字列引数を消費ページからバックエンド・サーバーに転送するかどうかを指定します。この機能を抑制するには、値falseを使用します。

注意:

これらの引数は前後関係に依存しているため、所定の順番で指定する必要があります。特定の引数を指定せずに後続の引数を指定するには、指定しない引数を空の値('')で渡す必要があります。libraryおよびnameを除くすべての引数はオプションです。

このスクリプトによって、injectpagelet関数への参照を含む、一意の名前を持つ新しい<div>も作成されます。次に例をいくつか示します。

<div>
<script type="text/javascript">
injectpagelet('library', 'name');
</script>
</div>

<div>
<script type="text/javascript">
injectpagelet('library', 'name', 'iframe', 'payload', 'param1=value1&param2=value2&param3=value3');
</script>
</div>

<div>
<script type="text/javascript">
injectpagelet('library', 'name', 'iframe width=100% height=200', 'payload');
</script>
</div>

62.7.2.1.1 JavaScriptを使用したプリファレンス・エディタの追加

injecteditor関数を使用すると、ユーザーがこの機能をサポートするページレットに個人プリファレンスと共有プリファレンスを設定できるようにするプリファレンス・エディタを追加できます。この機能は、WebCenter Portalのパーソナライズ機能とカスタマイズ機能に似ています。

injecteditor(library, name, type, iframe_options, context_id, element_id, is_in_community, chrome)

ここで:

- library: 必須。注入するページレットのライブラリ名です。Unicode文字と数字のみ使用でき、スペースを含めることはできません。

- name: 必須。注入するページレットの名前です。Unicode文字と数字のみ使用でき、スペースを含めることはできません。

- type: エディタのタイプ。この引数では、値admin、pagelet、communityをサポートします。community引数の場合は、context_idがコミュニティID CSPヘッダーのページレットに送信されます。

- iframe_options: ページレット・エディタのコンテンツの周りにIFRAMEを使用するかどうかを指定します。IFRAMEオプションのサンプルは、iframe width=100% height=auto frameborder=0のようになります。省略または空白のままにすると、エディタ・コンテンツがインラインにレンダリングされます。

- context_id: ページレット・インスタンスの外部識別子で、プリファレンスのスコープをページレット・プロデューサ・サーバーに設定するために使用されます。整数を指定する必要があります。

- element_id: ページレット・コンテンツの注入先のHTML要素IDです。省略または空白のままにすると、 injecteditorコールが評価された場合に、document.write()を使用してページレット・コンテンツが注入されます。

- is_in_community: このページレットがコミュニティまたはグループ・ページのいずれにあるのかを指定します。値がtrueに設定されている場合は、コミュニティIDヘッダーのcontext_idがページレットに送信されます。デフォルトはfalseです。

- chrome: WSRP/JPDKページレット用に使用するChromeテンプレートの名前を指定します。Chromeが表示されないようにするには、値にnoneを指定します。

注意:

これらの引数は前後関係に依存しているため、所定の順番で指定する必要があります。特定の引数を指定せずに後続の引数を指定するには、指定しない引数を空の値('')で渡す必要があります。libraryおよびnameを除くすべての引数はオプションです。

62.7.2.2 RESTを使用したページレットへのアクセス

Representational State Transferを表すRESTは、HTTPを介してAPIを提供する簡単な手法です。RESTの基本原則は次のとおりです。

- API URLは汎用的なメソッド・エンドポイントではなくリソースを指します。

- リクエストでは、簡素化されたCRUDメソッドに標準のHTTP動詞を使用します。これは読取り専用APIで、GETリクエストのみを許可します。

- すべてのリクエストは、取得したオブジェクト(ページレットまたはリソース)の完全表現を返します。

ページレット・プロデューサREST APIには、次の機能があります。

- ページレットをプロキシ設定されていないページに挿入して、ページレット・プロデューサがOracle WebCenter Interaction、Oracle WebLogic Portalまたはその他のサード・パーティ・ポータルのポートレット・プロバイダとして動作できるようにします。詳細は、第62.7.2.2.1項「ページレット挿入API」を参照してください。

- リモートWebサービスで、リソースとページレットに関する情報をページレット・プロデューサから取得できます。詳細は、第62.7.2.2.2項「データ取得API」を参照してください。

62.7.2.2.1 ページレット挿入API

ページレット注入URLは、リモート・ポートレットの場所を指定するためにポータルで使用できます(この方法でページレットをポートレットとして使用できます)。また、挿入URLを、HTMLページでIFrameタグのソース属性として使用することもできます。

URLは次の形式を使用する必要があります。

http://host:port/pagelets/inject/v2/pagelet/libraryname/pageletname?content-type=html

ここで、librarynameおよびpageletnameは、ページレット・プロデューサで構成されたライブラリとページレットを参照します。

注意:

ページレット注入APIをOracle WebCenter InteractionでポートレットWebサービスのURLとして使用する場合は、URLのpageletをportletに切り替える必要があります。たとえば、前述のURLは次のようになります。

http://host:port/pagelets/inject/v2/portlet/libraryname/pageletname?content-type=html

前述のコールに対する問合せ文字列引数は、ページレットが返される方法を定義します。次のパラメータが定義されます。

- instanceid: オプション。ページレットのインスタンスIDで、ページ上のページレットを一意に識別し、ページレット間通信を容易にするために使用されます。ページに対して一意である必要があります。

- context: オプション。ページレットのインスタンスの外部識別子で、ページレット・プロデューサ・サーバー上でのプリファレンスのスコーピングに使用されます。整数を指定する必要があります。

- content-type: 戻り型。次の3つの型がサポートされています。

- javascript: 注入可能なコードが返されます。

- html: ページレット・マークアップがそれに関連付けられたPTPortletオブジェクトとともに返されます。

- iframe: ページとの直接インラインを実行するかわりにIFrameにページレットのコンテンツを入力して、注入APIを再び指し示すIFrameを返します。IFrameは、一連の問合せ文字列パラメータを指定することによってスタイルを設定できます。

パラメータ

説明

デフォルト

ifwidth

IFrameの幅を設定します。パーセント'%'またはピクセル'px'で指定できます。例: ifwidth=500px。'auto'に設定すると、コンテンツの幅に収まるようにIFrameを自動的にサイズ変更できます。詳細は、第62.7.2.3項「IFrameへの自動サイズ変更の使用」を参照してください。

100%

ifheight

IFrameの高さを設定します。パーセント'%'またはピクセル'px'で指定できます。例: ifheight=500px。'auto'に設定すると、コンテンツの幅に収まるようにIFrameを自動的にサイズ変更できます。詳細は、第62.7.2.3項「IFrameへの自動サイズ変更の使用」を参照してください。

デフォルトなし

ifborder

IFrameの境界を設定します。

none

ifalign

IFrame内の位置あわせ規則を設定します(ifalign=centerなど)。

デフォルトなし

ifdesc

IFrameの説明を設定します。

デフォルトなし

ifmarginheight

マージンの高さを設定します。パーセント(%)またはピクセル(px)単位で指定できます(ifmarginheight=500pxなど)。

デフォルトなし

ifmarginwidth

マージンの幅を設定します。 パーセント(%)またはピクセル(px)単位で指定できます(ifmarginwidth=500pxなど)。

デフォルトなし

ifscrolling

IFrameのスクロールバーを設定します。許容される値は、yes、no、autoです。

auto

ifstyle

IFrameのCSSスタイルを設定します

デフォルトなし

ifclass

IFrameのCSSクラスを設定します。

デフォルトなし

- csapi: オプション。CSAPIをページレット・レスポンスに含めるかどうかを設定します(trueまたはfalse)。CSAPIの組込みはオプションですが、レスポンスに含まれるページレットは、ページレットがレンダリングされるページ上に存在するCSAPIライブラリに依存します。csapi=falseの場合は、CSAPIライブラリは親ページ(通常はHEADセクション)に含まれる必要があります。

- onhtttperror: オプション。ページレット・リクエストの結果として403、404またはその他のエラー・コードが発生する場合は、ページレット・プロデューサは、ユーザーに表示するためにエラー・コードとエラー・ページ自体をブラウザに転送できます。onhttperrorパラメータは次の値を受け入れます。

- comment (デフォルト): ページレット・プロデューサは失敗したページレットのかわりにHTMLコメントを生成します(失敗したページレットは単に表示されないだけです)。

- inline: ページレット・エラーはサーバー・エラー・ページとともにインラインに表示されます。この場合、ページレットは通常、ページに表示されます。

- fullpage: httpエラーはページ全体を消費します。このモードは、ページレット・プロデューサが親ページを制御する場合にのみ使用可能です。

- inline-refresh: オプション。有効な値はtrueまたはfalse (デフォルト)です。inline-refreshオプションをtrueに設定した場合、ページレット・プロデューサは、ページレット・マークアップをページに埋め込むためにiFrameを使用しません。ユーザーがページレットと相互作用するときに、マークアップがインラインで更新されるため、inline-refreshという名前が付いています。これを行うために、ページレット・プロデューサは、かわりにJavaScriptメソッド・コールを使用するようページレット・マークアップ内のURLをリライトします。つまり、ユーザーがリンクをクリックするか、フォーム・リクエストをバックエンドに送信すると、この処理がブラウザ上でJavaScriptによって実行され、その後レスポンスが動的に挿入されます。
inline-refreshオプションは、HTMLマークアップが比較的単純な場合、適切に機能します。ページレットで、ADFタスク・フローなどの機能豊富なUIが公開される場合、inline-refreshは適切に機能しないか、単純に中断が発生する可能性があります。このため、inline-refreshオプションはデフォルトでfalseに設定されています(つまり、ページレット・マークアップがiFrame内に挿入されます)。

次のURLの例は、samplesライブラリのlinkspageletを指します。

http://host:port/pagelets/inject/v2/pagelet/samples/linkspagelet?content-type=iframe&csapi=true&ifheight=123px&ifclass=myclass

このURLは、次のコードに似たマークアップになります。

注意:

IFrameソースは元の注入APIを指しますが、今回、content-typeパラメータはhtmlに設定されます。この機能により、ページレットの取得で手順が追加されます。csapiパラメータは、後続のコールでtrueに設定され、IFrameコンテンツを取得して必須のCSAPIコンテンツがIFrameに格納されるようにします(これが当てはまらない場合は、ページレット・コードはIFrameの外に格納されているCSAPIスクリプトにアクセスできないため、JavaScript解決エラーが返されます)。

<html>
<head>
</head>
<body>
<iframe frameborder="none" class="myclass" width="100%" height="123px" scrolling="auto" src="http://proxy:port/inject/v2/pagelet/samples/linkspagelet?asdg=asdfgas&param=true&content-type=html&jswrap=false&csapi=true">
<html>
<head>
<script src="http://proxy:loginserverport/loginserver/ensemblestatic/imageserver/plumtree/common/private/js/jsutil/LATEST/PTUtil.js" type="text/javascript"> </script>
<script src="http://proxy:loginserverport/loginserver/ensemblestatic/imageserver/plumtree/common/private/js/jsutil/LATEST/PTDateFormats.js" type="text/javascript"></script>
<script src="http://proxy:loginserverport/loginserver/ensemblestatic/imageserver/plumtree/common/private/js/jsxml/LATEST/PTXML.js" type="text/javascript"></script>
<script src="http://proxy:loginserverport/loginserver/ensemblestatic/imageserver/plumtree/common/private/js/jsportlet/LATEST/PTPortletServices.js" type="text/javascript"></script>
</head>

<body>
<div id="pt-pagelet-content-1" class="pagelet-container" style="display: inline;">
<span xmlns:pt="http://www.xmlns.oracle.com/xmlschemas/ptui/">
Pagelet links:
<br/>
<a href="http://proxy:port/inject/RP_PID393219_I1/headpagelet1.html">The first pagelet</a>
<br/>
<a href="http://proxy:port/inject/RP_PID393219_I1/headpagelet2.html">The second pagelet</a>
<br/>
<a href="http://proxy:port/inject/RP_PID393219_I1/csapipagelet.html">The csapi pagelet</a>
<br/>
<a href="http://proxy:port/inject/RP_PID393219_I1/linkspagelet.html">This pagelet</a>
<br/>
</span>
</div>
</body>
</html>
</iframe>
</body>
</html>

62.7.2.2.2 データ取得API

ページレット・プロデューサからデータを取得するには、次の2つのREST APIが使用できます。

- ページレットAPI: リモート・アプリケーションを使用してページレット・プロデューサからページレット・データを取得できます。(例62-7「すべてのページレット」および例62-8「ライブラリおよび名前別ページレット」を参照してください。)

- リソースAPI: リモート・アプリケーションを使用してページレット・プロデューサからリソース・データを取得できます。(例62-9「すべてのリソース」および例62-10「名前別リソース」を参照してください。)

すべてのリクエストの基本のURLは、 http://host:port/pagelets/restservice/pageletproducer/です。

例62-7 すべてのページレット

http://host:port/pagelets/restservice/pageletproducer/pagelets/
http://host:port/pagelets/restservice/pageletproducer/pagelets/?format=xml

例62-8 ライブラリおよび名前別ページレット

http://host:port/pagelets/restservice/pageletproducer/pagelet/libraryname/pageletname/
http://host:port/pagelets/restservice/pageletproducer/pagelet/libraryname/pageletname/?format=xml

例62-9 すべてのリソース

http://host:port/pagelets/restservice/pageletproducer/resources/
http://host:port/pagelets/restservice/pageletproducer/resources/

例62-10 名前別リソース

http://host:port/pagelets/restservice/pageletproducer/resource/name
http://host:port/pagelets/restservice/pageletproducer/resource/name/?format=xml

62.7.2.3 IFrameへの自動サイズ変更の使用

ページレット・プロデューサ・ページレット注入APIは、ページレット・コンテンツをカプセル化するIFrameのサイズを自動的に変更できます。IFrameがストレッチして中のコンテンツに合うようにサイズ変更が行われます。この機能を使用するには、次の例に示すように、ifwidthおよびifheightパラメータをautoに設定する必要があります。

http://proxy:port/inject/v2/pagelet/samples/linkspagelet?content-type=iframe&csapi=true&ifheight=auto&ifwidth=auto&ifclass=myclass

さらに、この機能はコンシューマ・ページと同じドメイン上にある外部ページに依存します。このページは、内部非表示IFrameとしてページレットIFrameに格納されます。このページでは、サイズ設定情報を収集して親コンシューマ・ページに渡します。このページは、コンシューマ・ページと同じディレクトリにデプロイする必要があります。

次の例では、ロードの終了後に、ページレットIFrameのサイズが変更されます。初回ロード後に動的自動サイズ変更機能をユーザー対話型アクティビティに追加するには、マウスやキーボードのイベントについてイベント・リスナーをさらに追加するだけで済みます。

<html>
<head>
<title>Resizing Page</title>
<script type="text/javascript">
function onLoad() {
var params = window.location.search.substring( 1 ).split( '&' );
var height;
var width;
var iframe;

for( var i = 0, l = params.length; i < l; ++i ) {
var parts = params[i].split( '=' );
switch( parts[0] ) {
case 'height':
height = parseInt( parts[1] );
break;
case 'width':
width = parseInt( parts[1] );
break;
case 'iframe':
iframe = parts[1];
break;
}
}
window.top.updateIFrame( iframe, height, width );
}

if (window.addEventListener) {
window.addEventListener("load", onLoad, false)
} else if (window.attachEvent) {
window.detachEvent("onload", onLoad)
window.attachEvent("onload", onLoad)
} else {
window.onload=onLoad
}
</script>
</head>
<body>
</body>
</html>

62.7.3 ポータル・ページへのページレットの追加

コンポーザを使用すると、ページレットをポータル・ページに追加できます。デフォルトでは、ページレットは「リソース・カタログ」の「マッシュアップ」フォルダに表示されます。ページレットをページに追加するには、「リソース・カタログ」のページレットに移動して選択します。

リソースをポータル内のページに追加する方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』のページ上のリソース・カタログ・コンポーネントの追加と編集に関する項を参照してください。

ページレットをページ内で構成するには、該当のページを編集モードで表示し、ページレットの「編集」アイコン(スパナ)をクリックします。「コンポーネント・プロパティ」ダイアログの「ページレット・プロパティ」タブでは、ページレット・パラメータとIFrameオプションを定義できます。

図62-30 「コンポーネント・プロパティ」ダイアログ: 「ページレット・プロパティ」

62.8 例と高度なトピック

この項では、例と高度なトピックをいくつか示します。

- 第62.8.1項「単純なページレットの作成(例)」

- 第62.8.2項「WebCenterポータルでのページレットの消費(例)」

- 第62.8.3項「WebCenter Interactionでのページレットの消費(例)」

- 第62.8.4項「Oracle WebCenter Sitesでのページレットの消費(例)」

- 第62.8.5項「WSRPポートレットのページレットとしての消費」

- 第62.8.6項「サイトにおけるWebCenter Portalサービスのページレットとしての消費」

- 第62.8.7項「EBS11iを使用したページレットとしてのアプリケーションの消費」

- 第62.8.8項「ページレット・プロデューサを使用したOpenSocialガジェットの消費」

- 第62.8.9項「HTMLマークアップの操作」

- 第62.8.10項「高度なURLリライト」

62.8.1 単純なページレットの作成(例)

この項では、ページレット・プロデューサを使用してWebページをプロキシする方法について簡単に説明します。ここでは、単純な静的Webページ「Hello World」をプロキシし、そのページから1つのセクションを切り取ってページレットとして提供することにより、後からそのページレットをWebCenter PortalやWebCenter Interactionで独自のアプリケーション・ページに挿入できるようにします。

この項には次のサブセクションが含まれます:

- 第62.8.1.1項「ページレット・プロデューサの初期設定の構成」

- 第62.8.1.2項「リソースの作成」

- 第62.8.1.3項「ページレットの作成」

- 第62.8.1.4項「ページレットのクリップ」

62.8.1.1 ページレット・プロデューサの初期設定の構成

この例では、ページレット・プロデューサ・サーバーがhttp://pageletserver.company.com:8889/pagelets/で実行されているものとします。

1. まず、そのページレット・プロデューサが稼働しているかどうかを確認します。
これを行うには、単純にそのURL (http://pageletserver.company.com:8889/pagelets/)にアクセスします。図62-31は、返される結果を示しています。

図62-31 ページレット・プロデューサのようこそページ

2. 次のURLを使用して、ページレット・プロデューサの管理画面にアクセスします。
http://pageletserver.company.com:8889/pagelets/admin

図62-32 ページレット・プロデューサの管理画面

3. プロキシ・サーバーを経由してインターネットに接続する場合は、ページレット・プロデューサ設定でプロキシを構成する必要があります。

1. ナビゲータ・ペインの「移動先」ドロップダウン・リストで、「設定」を選択します。

2. 「プロキシ」をクリックします。

3. 図62-33に示すように、プロキシ・サーバーの構成を入力します。

図62-33 ページレット・プロデューサのプロキシ設定

62.8.1.2 リソースの作成

まず、Webページのリソースを作成する必要があります。これにより、ページレット・プロデューサに、Webページのすべてのサブパスをプロキシする必要があることが通知されます。また、Webページのプロキシ方法に関する共通ルールの設定が可能になり、ページレットのコンテナが提供されます。

1. ナビゲータ・ペインの「移動先」ドロップダウン・リストから、「リソース」を選択します。

2. いずれかの既存のリソースをクリックします(welcome_resourceなど)。

3. 「選択したタイプの作成」をクリックします。

4. 「プロデューサ・タイプの選択」ダイアログから「Web」を選択し、「OK」をクリックします。

5. リソースを作成したら、ナビゲーション・ペインの「全般」ノードをクリックし、次の値を指定します(図62-34を参照)。

- 名前: AppServer

- ソースURL: http://appserver.company.com:1234/

- 宛先URL: /appserver/

図62-34 ページレット・プロデューサの「全般」設定ページ

6. 「保存」をクリックします。
リソースを作成すると、WebページにURL http://pageletserver.company.com:8889/pagelets/appserver/helloworld/からアクセスできるようになります。

図62-35 Hello Worldページレット

元のWebページ・アドレスのソースURLは、ページレット・プロデューサのURL (http://pageletserver.company.com:8889/pagelets)と宛先URLを組み合せたものに置き換えられます。

62.8.1.3 ページレットの作成

次はHello Worldページレットを作成します。

1. 「リソース」ノードの下にある「ページレット」ノードを開きます。

2. 「選択したタイプの作成」をクリックします。

3. 新しく作成したページレットの「全般」ノードをクリックし、次の値を指定します(図62-36を参照)。
名前: Hello_World

ライブラリ: MyLib

ライブラリは、論理グループ化に使用します。ポータルでは、ライブラリの値を使用して、ページレットをそれぞれのUIにグループ化します。たとえば、ページレットをWebCenter Portalポータルに追加すると、「ライブラリ」の下に個々のページレットがリストされます。

URL接尾辞: helloworld/index.html

URL接尾辞は、Hello WorldページのHTMLの提供元です。

図62-36 Hello Worldページレットのページレット・プロデューサ設定

4. 「保存」をクリックします。

ライブラリ名には任意の名前を指定でき、リソース名と一致している必要はありません。これはページレットの論理グループ化に使用されます。また、ページレットを複数のリソースから同じライブラリに含めたり、ページレットごとに新しいライブラリを作成できます。

ページレットを保存したら、次の場所からそのページレットにアクセスできます。

http://pageletserver.company.com:8889/pagelets/inject/v2/pagelet/MyLib/Hello_World

つまり、次のようになります。

http://pageletserver.company.com:8889/pagelets/inject/v2/pagelet/ + [Library] + [Name]

また、iFrameへのページレットの挿入をテストするために、ページレットの「ドキュメント」ノードをクリックし、「RESTを使用してページレットにアクセス」のURLを使用することもできます。

図62-37 ページレットの「ドキュメント」ページ

「ドキュメント」ページのURLをクリックすると、次のような画面が表示されます。

図62-38 Hello Worldページレット

62.8.1.4 ページレットのクリップ

作成したページレットは、Webページ全体に表示されます。必要なのはHello Worldのセグメントのみであるため、次の手順に従って、そのセグメントをクリップする必要があります。

1. 「Hello_World」ページレット・ノードの下にある「クリップ」をクリックします。

2. 「選択したタイプの作成」をクリックします。

3. 新しく作成するクリッパの名前を指定します(c1など)。

4. クリッパの「コンテンツ」ノードをクリックし、「クリッパの起動」をクリックします。

図62-39 ページレット・プロデューサのクリッパ

5. ブラウザ・ウィンドウで、クリップする領域をマウスで選択します。
マウス・ボタンをクリックすると、ブラウザ・ウィンドウが非表示になり、クリッピング・パスが自動的に生成されます。

6. クリップされたページレットを保存し、もう一度「ドキュメント」ページからそのリンクにアクセスします。

7. これでページレットが適切にクリップされ、WebCenter Portalポータル内で使用できるようになりました(図62-40を参照)。

図62-40 クリップされたHello Worldページレット

62.8.2 WebCenterポータルでのページレットの消費(例)

この項では、単純なHello WorldページレットをWebCenter Portal内で消費する方法の例を示します。先に進む前に、まず第62.8.1項「単純なページレットの作成(例)」の手順に従って、この例で使用するHello Worldページレットを作成します。

この項には次のサブセクションが含まれます:

- 第62.8.2.1項「WebCenter Portalへのページレット・プロデューサの登録」

- 第62.8.2.2項「ポータルへのページレットの挿入」

62.8.2.1 WebCenter Portalへのページレット・プロデューサの登録

新しく作成したページレットをWebCenter Portalから使用するには、まずページレット・プロデューサを登録する必要があります。

1. 管理者としてWebCenter Portalにログインします。

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

3. 「構成」タブを開きます。

4. 「サービス」をクリックします。

5. 「ポートレット・プロデューサ」をクリックします。

6. 「登録」をクリックします。

7. 「ページレット・プロデューサ」を選択し、フィールドの値を次のように入力します。
プロデューサ名: MyPageletProducer

サーバーURL: http://pageletserver.company.com:8889/pagelets/

8. 「テスト」をクリックし、接続が正しく構成されたことを確認します。
すべて成功した場合、「テストのステータス」ダイアログに、テスト接続が成功したことを示すメッセージが表示されます。

9. 「OK」をクリックします。
これでページレット・プロデューサが登録されました。

62.8.2.2 ポータルへのページレットの挿入

この演習用に、ポータルを作成する必要があります。まず、WebCenter Portalにログインし、「ポータル・サイト」テンプレートを使用して、myportalというポータルを作成します。

1. 管理者としてWebCenter Portalにログインします。

2. 「ポータル・サイト」テンプレートを使用して、myportalというポータルを作成します。

3. myportalポータルで、「アクション」アイコンをクリックし、「ページの編集」を選択します。

4. いずれかのポータル・フレーム内にある「コンテンツの追加」をクリックし、「マッシュアップ」を選択します。

5. 「ページレット・プロデューサ」を選択します。

6. 登録したページレット・プロデューサをクリックします。
Hello_Worldページレットを含むライブラリMyLibが表示されます。

7. 「MyLib」をクリックし、「Hello_World」ページレットを選択して、「追加」をクリックします。

8. 「閉じる」をクリックします。

9. 「保存」をクリックし、「閉じる」をクリックします。
これで、Hello Worldページレットがmyportalページに挿入されます。

62.8.3 WebCenter Interactionでのページレットの消費(例)

この項では、単純なHello WorldページレットをWebCenter Interaction (WCI) 10.3.0以降で消費する方法の例を示します。先に進む前に、まず第62.8.1項「単純なページレットの作成(例)」の手順に従って、この例で使用するHello Worldページレットを作成します。

この項には次のサブセクションが含まれます:

- 第62.8.3.1項「ページレット・プロデューサ・リモート・サーバーの登録」

- 第62.8.3.2項「Hello World Webサービスの作成」

- 第62.8.3.3項「Hello Worldポートレットの作成」

- 第62.8.3.4項「WCIホーム・ページでのHello Worldポートレットの使用」

62.8.3.1 ページレット・プロデューサ・リモート・サーバーの登録

新しく作成したページレットをWCIから使用するには、まずページレット・プロデューサを登録する必要があります。

1. 管理者としてWCIにログインします。

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

3. 次の手順に従って、すべてのページレット・プロデューサ関連のオブジェクトを格納するフォルダを作成します。

1. 「オブジェクトの作成」ドロップダウン・リストを開き、「管理フォルダ」を選択します。

2. 「名前」に「PageletProducer」と入力し、「OK」をクリックします。

図62-41 WCI - 「管理フォルダの作成」

4. 新しく作成したPageletProducerフォルダをクリックします。

図62-42 WCI - 新しく作成したフォルダ

5. 「オブジェクトの作成」ドロップダウンを開き、「リモート・サーバー」を選択します。

図62-43 WCI - 「リモート・サーバーの作成」

6. 「ベースURL」フィールドに、http://pageletserver.company.com:8889/pageletsと入力します(この例では、これがページレット・プロデューサのアドレスになります)。

7. 「終了」をクリックします。

8. PageletProducerフォルダを選択し、「名前を付けて保存」フィールドにPagelet Producer Remote Serverと入力します。

図62-44 WCI - ページレット・プロデューサ・リモート・サーバー・オブジェクトの保存

9. 「保存」をクリックします。
これで、PageletProducerフォルダ内にページレット・プロデューサ・リモート・サーバー接続が作成されました。

図62-45 WCI - ページレット・プロデューサ・リモート・サーバー・オブジェクト

62.8.3.2 Hello World Webサービスの作成

この項では、Hello World Webサービスを作成します。

1. 「オブジェクトの作成」ドロップダウンを開き、「Webサービス - リモート・ポートレット」を選択します。

2. 「参照」をクリックし、ページレット・プロデューサ・リモート・サーバーを選択します。

図62-46 WCI - 「リモート・サーバーの選択」ダイアログ

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

4. 「ポートレットURL」フィールドの値を、次のように入力します。
inject/v2/portlet/MyLib/Hello_World?content-type=iframe&csapi=true&ifheight=300px

MyLibはHello Worldページレットを含むライブラリで、Hello_Worldはページレットの名前です。

図62-47 WCI - Webサービス - リモート・ポートレットの作成ダイアログ

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

6. PageletProducerフォルダを選択し、「名前を付けて保存」フィールドにHello World Web Serviceと入力します。

7. 「保存」をクリックします。
これで、Hello World Webサービスが作成されました。

62.8.3.3 Hello Worldポートレットの作成

この項では、Hello Worldポートレットを作成します。

1. 「オブジェクトの作成」ドロップダウン・リストを開き、「ポートレット」を選択します。
「テンプレートまたはWebサービスの選択」ダイアログが表示されます(図62-48)。

図62-48 WCI - 「テンプレートまたはWebサービスの選択」

2. テンプレートまたはWebサービスのリストから、「Hello World Web Service」を選択し、「OK」をクリックします。

3. 「ポートレット・タイプ/サイズ」で、使用するポートレット・タイプおよびサイズを選択し、「終了」をクリックします。

4. 「PageletProducer」フォルダを選択します。

5. 「名前を付けて保存」フィールドにHello World Portletと入力し、「保存」をクリックします。
これで、Hello Worldポートレットが作成されました。

62.8.3.4 WCIホーム・ページでのHello Worldポートレットの使用

ページレット・プロデューサの登録、ページレット・プロデューサWebサービスの設定およびHello Worldポートレットの作成が完了したので、次はそのポートレットをWCIのページ上で使用します。ここでは、説明を簡潔にするためにWCIホーム・ページを使用しますが、他のWCIページを使用することもできます。

1. WCIで、「マイ・ページ」→「ホーム・ページ」に移動します。

2. 「ページの編集」をクリックし、「PageletProducer」フォルダを開きます。

3. Hello Worldポートレットをクリックします。

4. 「エディタを閉じる」をクリックします。
WCIのホーム・ページに挿入されたHello Worldページレットを次に示します。

図62-49 WCI - ホーム・ページ上のHello Worldページレット

62.8.4 Oracle WebCenter Sitesでのページレットの消費(例)

この項は、既存のWSRPポートレットまたは、Oracle EBSなどのバックエンド・アプリケーションにより公開されるWeb UIの要素も含めて、Oracle WebCenter Sites 11gの各ページにコンテンツを統合する必要のある開発者を対象としています。開発者はOracle WebCenter SitesおよびOracle WebCenterページレット・プロデューサに精通しており、Webテクノロジを十分に理解している必要があります。

この項には次のサブセクションが含まれます:

- 第62.8.4.1項「Oracle WebCenter Sitesへのページレットの追加」

- 第62.8.4.2項「アイデンティティ伝播の使用」

- 第62.8.4.3項「ページレット・プロデューサからバックエンド・アプリケーションへのアイデンティティの伝播」

- 第62.8.5項「WSRPポートレットのページレットとしての消費」

- 第62.8.6項「サイトにおけるWebCenter Portalサービスのページレットとしての消費」

- 第62.8.7項「EBS11iを使用したページレットとしてのアプリケーションの消費」

62.8.4.1 Oracle WebCenter Sitesへのページレットの追加

ページレットとその関連リソースが構成されたら、JavaScriptまたはRESTを使用してそれをWebページに挿入できます。詳細は、第62.7.2項「Webページへのページレットの追加」を参照してください。

ここでは、コンテンツ・ソースとしてページレットにアクセスするためのREST URLを指定したIFrameを使用して、ページレットがOracle WebCenter Sites内のページ・テンプレートに直接追加されるアプローチを採用します。このためには、CSAPI JavaScriptライブラリ(必要な機能を親ページに追加します)と、ページレット・コンテンツをロードする実際のiFrameをロードするために、ページ・テンプレート・スクリプト・タグに次のように追加する必要があります。

<script type="text/javascript" src="http://%PAGELET_PRD_HOST%/pagelets/inject/v2/csapi"/>
<iframe id="pt-pagelet-iframe-1" width="100%" frameborder="0" src="http://%PAGELET_PRD_HOST%/pagelets/inject/v2/pagelet/lib_name/pagelet_name?content-type=html&consumepage=true&ifheight=auto"></iframe>

ここで、lib_nameおよびpagelet_nameはページレット・プロデューサに構成されたライブラリとページレットを示しています。パラメータの詳細は、第62.7.2.2項「RESTを使用したページレットへのアクセス」を参照してください。

62.8.4.1.1 IFrameの自動サイズ変更の有効化

ページレットをよりシームレスに消費側ページに統合するには、コンテンツを収められるように動的にサイズ変更することによって、ページレットiFrameがよりインライン・マークアップらしく動作するように設定できます。この機能を有効にするには、サイトとページレット・プロデューサの両方でさらに構成を加える必要があります。

この項では、WebCenter Sitesに同梱されているAviSportsサンプル・サイトを使用します。このサイトに新しいアセットを追加するには、サイト管理ページにログインして、図62-50に示すように左側のナビゲーションで開発セクションを開きます。

図62-50 サイト管理ページ

まず、次の設定を使用して新しいテンプレートを作成します。

- 名前

- 名前: iFrameResizeRelay (または任意の名前)

- アセット・タイプの場合: 様々なアセット・タイプに適用可能(タイプなし)

- 要素

- 使用方法: 要素はHTMLページ全体を定義し、外部からコール可能です。

- 要素記憶域パス/ファイル名: iframe-resize.html(または任意の名前)

- 要素ロジック:

<html>
<head>
<title>Resizing Page</title>
<script type="text/javascript">
function onLoad() {
var params = window.location.search.substring( 1 ).split( '&' );
var height;
var width;
var iframe;
for( var i = 0, l = params.length; i < l; ++i ) {
var parts = params[i].split( '=' );
switch( parts[0] ) {
case 'height':
height = parseInt( parts[1] );
break;
case 'width':
width = parseInt( parts[1] );
break;
case 'iframe':
iframe = parts[1];
break;
}
}
window.top.updateIFrame( iframe, height, width );
}
if (window.addEventListener) {
window.addEventListener("load", onLoad, false);
} else if (window.attachEvent) {
window.detachEvent("onload", onLoad);
window.attachEvent("onload", onLoad);
} else {
window.onload=onLoad;
}
</script>
</head>
<body>
</body>
</html>

- サイト・エントリ

- キャッシュ・ルール: キャッシュ済(デフォルト)

- 保存

- SiteCatalogパラメータを%PAGENAME%として記録(デフォルト名を使用した場合、これは<site_name>/iFrameResizeRelayになります)

新しいテンプレートには、次のようにアドレス可能です。

http://%SITES_HOST%/cs/Satellite?pagename=%PAGENAME%

このURLをメモしておきます。これは、ページレット用にインジェクタを構成するために使用します。

次に、ページレット・プロデューサ管理コンソールを使用して新しいインジェクタをページレットに追加することによって、iFrameサイズ変更機能を適用します。ページレットを開き、「インジェクタ」を選択して、次の設定で新しいインジェクタを作成します。

- 一般

- 名前: auto_resizer (または任意の名前)

- URLフィルタ: <none>

- MIMEフィルタ: text/html

- 挿入位置: </head>の前

- コンテンツ: 「テキスト」(デフォルト)を選択し、次のJavaScriptをテキスト・エリアにコピーします。
次のJavaScript内のSITES_RESIZE_RELAY_PAGEを、前の手順で作成したテンプレートのURLに置き換えます。

<script type="text/javascript">
var SITES_RESIZE_RELAY_PAGE = "http://%SITES_HOST%/cs/Satellite?pagename=%PAGENAME%"; // CHANGE ME!

if (window.addEventListener) {
window.addEventListener("load", calculateSizeFixed, false);
} else if (window.attachEvent) {
window.attachEvent("onload", calculateSizeFixed);
} else {
window.onload=calculateSizeFixed;
}
function calculateSizeFixed() {
var PTResizeIFrame = PTResizeIFrame || {};
if (PTPortalPage && PTPortalPage.portlets) {
for (var i in PTPortalPage.portlets) {
if ( PTPortalPage.portlets[i].id != "page") {
PTResizeIFrame.pageletInstanceID = PTPortalPage.portlets[i].id;
break;
}
}
}
else if (!PTResizeIFrame.pageletInstanceID) {
PTResizeIFrame.pageletInstanceID = 1;
}

if (!PTResizeIFrame.pageletResizePage) {
var match = window.location.search.match(/resizepage=[î&]*/);
if (match != null && match.length > 0) PTResizeIFrame.pageletResizePage = unescape(match[0].substr("resizepage=".length));
else PTResizeIFrame.pageletResizePage = SITES_RESIZE_RELAY_PAGE;
}
var agent = navigator.userAgent;
var ffversion = agent.indexOf("Firefox") >= 0 ? agent.substring(agent.indexOf("Firefox")).split("/")[1] : -1;
var FFextraHeight = parseFloat(ffversion)>=0.1? 25 : 0;
var scrollHeightExtra = 15;
if (agent.indexOf('MSIE') > 0) {
scrollHeightExtra = 35;
}
if (FFextraHeight > 0) scrollHeightExtra = FFextraHeight;
var wrapper = document.getElementById( 'pt-inner-iframe-wrapper-' + PTResizeIFrame.pageletInstanceID);
if (wrapper == null) wrapper = createRelayIFrame(PTResizeIFrame.pageletInstanceID);
var iframe = document.getElementById( 'pt-inner-iframe-' + PTResizeIFrame.pageletInstanceID);
var height = 0;
var width = 0;
var iframename = '';

if( (document.contentDocument) && (document.contentDocument.documentElement.offsetHeight) ) {
height = document.contentDocument.documentElement.offsetHeight + FFextraHeight;
} else if( (document.contentDocument) && (document.contentDocument.body.offsetHeight) ) {
height = document.contentDocument.body.offsetHeight+FFextraHeight;
} else if (document && document.documentElement.scrollHeight ) {
height = document.documentElement.scrollHeight + scrollHeightExtra;
} else if( document && document.body.scrollHeight ) {
height = document.body.scrollHeight + scrollHeightExtra;
} else {
height = wrapper.offsetHeight;
}
width = wrapper.offsetWidth;
iframename = 'pt-pagelet-iframe-' + PTResizeIFrame.pageletInstanceID;
var qsSeparator = PTResizeIFrame.pageletResizePage.indexOf("?") >= 0 ? "&" : "?";

iframe.setAttribute("src", PTResizeIFrame.pageletResizePage + qsSeparator + 'height=' + height + '&' + 'width=' + width + '&' + 'iframe=' + iframename);
}

function createRelayIFrame(pageletInstanceId) {
var wrapper = document.createElement("div");
wrapper.id = "pt-inner-iframe-wrapper-" + pageletInstanceId;
var iframe = document.createElement("iframe");
iframe.id =  "pt-inner-iframe-" + pageletInstanceId;
iframe.setAttribute("height", 0);
iframe.setAttribute("frameborder", 0);
iframe.setAttribute("width", 0);
wrapper.appendChild(iframe);
document.body.appendChild(wrapper);
return wrapper;
}
</script>

IFrame内でREST URLを使用して、サイトにあるページ・テンプレートにページレットを追加します。IFrameでは、IDパラメータにはページレットIFrameを識別する一意の番号を使用する必要があります(たとえば、「pt-pagelet-iframe-1」)。IFrame自動サイズ変更をサポートするために、次の問合せ文字列パラメータをページレットURLに追加する必要があります。

- resizepage=http://%SITES_HOST%/cs/Satellite?pagename=%PAGENAME%

- ifheight=auto

例:

<script type="text/javascript" src="http://%PAGELET_PRD_HOST%/pagelets/inject/v2/csapi"/>
<iframe id="pt-pagelet-iframe-1" width="100%" frameborder="0" src="http://%PAGELET_PRD_HOST%/pagelets/inject/v2/pagelet/lib_name/pagelet_name?content-type=html& consumepage=true&resizepage=http://%SITES_HOST%/cs/Satellite?pagename=%PAGENAME%&ifheight=auto">
</iframe>

注意:

1ページに複数のページレットが存在する場合は、自動サイズ変更が適切に機能しないことがあります。これは、外部認証サーバーに対してフォーム自動ログインを必要とするページレットで発生することが知られています。この場合は自動サイズ変更用に構成できるページレットは1つだけであり、その他のページレットには静的なIFrameサイズ設定を使用する必要があります。

62.8.4.1.2 ページレット・スタイルの変更

消費側WebCenter Sitesのページでページレットが見栄えよく収まるようにするには、インジェクタを使用して元のCSSをオーバーライドするスタイルを追加することもできます。オーバーライドが適切に機能するためには、インジェクタによるスタイル定義がバックエンド・アプリケーションによって定義されたスタイルの後に置かれることが重要です。次の例では、置換CSSを<HEAD>セクションの末尾に注入することで、これを処理しています。

ページレットのスタイルを変更するには、ページレット・プロデューサ管理コンソールを使用して新しいインジェクタをページレットに追加します。ページレットを開き、「インジェクタ」を選択して、次の設定で新しいインジェクタを作成します。

- 一般

- 名前: new_styles (または任意の名前)

- URLフィルタ: <none>

- MIMEフィルタ: text/html

- インジェクタの場所: </head>の前

- コンテンツ

Injector Location: Before </head>

第62.8.7項「EBS11iを使用したページレットとしてのアプリケーションの消費」には、WebCenter SitesにサンプルのAviSportsサイトを一致させるためにEBS UIのスタイル変更に使用されるインジェクタの作業例が含まれています。

62.8.4.2 アイデンティティ伝播の使用

ページレット・プロデューサの中心的な目的は、バックエンド・アプリケーションをプロキシ設定することです。ページレット・プロデューサはブラウザとバックエンド・アプリケーションの仲介役として動作するため、アイデンティティ伝播を次の2つの部分に分ける必要があります。

- 第62.8.4.2.1項「ページレット・プロデューサでのアイデンティティの確立」

- 第62.8.4.2.2項「ページレット・プロデューサにより指定されたログイン・ページの使用」

62.8.4.2.1 ページレット・プロデューサでのアイデンティティの確立

ページレット・プロデューサは通常、図62-51に示すようなIFrameを使用して、WebコンテンツをWebCenter Sitesに挿入します。

図62-51 サイトにおけるIFrameとしてのページレット・プロデューサのコンテンツ

コンテンツはIFrameとして注入されるため、ユーザーIDは、図62-52に示すようにサイト・コンテナとページレット・プロデューサ・コンテナの両方に設定されている必要があります。図62-52では、2つの認証スキーム間での共有が前提となっているユーザー・ディレクトリが省略されていることに注意してください。

図62-52 サイトおよびページレット・プロデューサで異なる認証スキーム

ブラウザと2つのコンテナ間でアイデンティティを管理する理想的な方法は、図62-53に示すようにOracle Access Manager (OAM)を使用することです。図62-53では、2つの認証スキーム間での共有が前提となっているユーザー・ディレクトリが省略されていて、OAMアクセス・サーバーが除外されていることに注意してください。また、この構成は11g以前のバージョンではサポートされていないことにも注意してください。

図62-53 OAMを使用した理想的なフロントエンド認証構成

WebCenter Sites11g用にOAMを設定する場合は、Oracle WebCenter Sitesでサポートするソフトウェアの構成の「Oracle Access Manager統合の設定」の章を参照してください。

62.8.4.2.2 ページレット・プロデューサにより指定されたログイン・ページの使用

OAMを設定する前に、サイトでページレット・プロデューサの統合をテストしておくと役立つ場合があります。OAMを使用しないと、ユーザーはページレット・プロデューサとサイトでそれぞれ別々に認証する必要があります(図62-52を参照)。この項では、ページレット・プロデューサでの個別認証の構成方法について説明します。

OAM SSOがページレット・プロデューサまたはサイトのどちらかに存在していない場合は、ページレット・プロデューサからログイン・フォームが表示されていることを確認して、図62-54に示す認証スキームをサポートする必要があります。

ページレット・プロデューサでログイン・フォームが表示されるようにするには:

1. ページレットへのアクセスを制限するJ2EEロールを特定するか、ページレット・プロデューサをホストしているJ2EEアプリケーション・サーバーに新しいロールを作成します。
この例では、デフォルトのWLSインストールに存在しているグローバルなWebLogic Server (WLS)の「匿名」J2EEロールを使用しています。

2. ページレット・プロデューサ管理コンソールにログインし、サイト内で表面化する必要のあるページレットが含まれているリソースに移動して、ステップ1で選択したロールを追加します。
ロールは、リソースの「ポリシー」ページで定義されます。

図62-54 ページレット・プロデューサ管理コンソール - 「ポリシー」ページ

62.8.4.3 ページレット・プロデューサからバックエンド・アプリケーションへのアイデンティティの伝播

アイデンティティの確立方法は、次の各項で説明するようにアプリケーションのタイプによって異なります。

- 第62.8.4.3.1項「WSRP/JPDKポートレット」

- 第62.8.4.3.2項「ネイティブ認証(非SSO)により保護されたスタンドアロン・バックエンド・アプリケーション」

- 第62.8.4.3.3項「自動ログインによるアイデンティティ伝播」

- 第62.8.4.3.4項「SSOにより保護されたスタンドアロン・バックエンド・アプリケーション」

- 第62.8.4.3.7項「参照: 共通自動ログイン構成」

62.8.4.3.1 WSRP/JPDKポートレット

WSRPポートレットは、アイデンティティ伝播のためにWSSトークンを使用する必要があります。セキュリティ・トークンの構成方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のページレット・プロデューサでのWSRPおよびOracle JPDKポートレット・プロデューサの登録に関する項と、第62.8.5項「WSRPポートレットのページレットとしての消費」を参照してください。

アイデンティティを必要とするOracle JPDKポートレットごとに、外部アプリケーションのログイン・フォームによって提供される情報に基づいて資格証明が渡されます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の外部アプリケーションの管理に関する項とOracle JPDKポートレット・プロデューサの登録に関する項を参照してください。

62.8.4.3.2 ネイティブ認証(非SSO)により保護されたスタンドアロン・バックエンド・アプリケーション

ページレット・プロデューサには「自動ログイン」という機能があり、この機能によってページレット・プロデューサはバックエンド・アプリケーションにより確立されたネイティブ認証メカニズムと相互作用できます。

62.8.4.3.3 自動ログインによるアイデンティティ伝播

バックエンド・アプリケーションにはそれぞれ独自の認証手段があるため、必要な資格証明を収集するには、ページレット・プロデューサで独自のログイン・プロンプトを開始する必要があります。ページレット・プロデューサのリソースは、資格証明を基本的な認証ヘッダー、NTLMトークンまたはKerberosトークンとしてバックエンド・アプリケーションに送信し、さらにフォーム・ベースの認証を(通常はセッションCookieを介して)管理するように構成できます。自動ログインの構成の詳細は、第62.3.1.1.4項「自動ログインの構成」を参照してください。

注意:

「ユーザー・ボールト」を使用するように「ユーザー名」フィールドと「パスワード」フィールドを設定して、バックエンド・アプリケーションへのアクセスに必要なユーザー自身の一意の資格証明を入力するプロンプトが各ユーザーに表示されるようにします。

62.8.4.3.4 SSOにより保護されたスタンドアロン・バックエンド・アプリケーション

バックエンド・アプリケーションに適切な自動ログイン設定を決定することは、かなり大変な場合があります。この作業では、リクエスト・ヘッダーの参照、リダイレクトの確認、マークアップ(ときには動的に生成されたもの)の調査が必要になります。この調査および構成プロセスは、自動ログインが必要なアプリケーションが複数存在する場合は、気の滅入るような作業になりかねません。したがって、Oracle Access Manager (OAM) SSOまたはOracle SSO (OSSO)が使用可能な場合は、バックエンド・アプリケーションを保護するためにこれらのシングル・サインオン・ソリューションの1つを使用することを強くお薦めします。

バックエンド・アプリケーションがOAMで保護されると、次のサブセクションで説明するように、次の2つの方法でページレット・プロデューサが資格証明を提供できるようになります。

- 第62.8.4.3.5項「OAMで保護されたバックエンド・アプリケーションへのアイデンティティ直接伝播の使用」

- 第62.8.4.3.6項「自動ログインとSSOによるアイデンティティ伝播」

62.8.4.3.5 OAMで保護されたバックエンド・アプリケーションへのアイデンティティ直接伝播の使用

OAM 11g WebGateは、OAMサーバーでユーザー資格証明のすべての検証を管理するOracle HTTP Server (OHS)で実行するApacheモジュールです。ユーザーの妥当性が確立されると、OHSがプロキシ設定しているアプリケーション・サーバー上のWebアプリケーションにOAM_REMOTE_USERヘッダーが送信されます。アプリケーション・サーバー上ではOAMアイデンティティ・アサーション・プロバイダが実行して、JAASユーザー・プリンシパル名をOAM_REMOTE_USERヘッダー値に設定します。

ページレット・プロデューサがOAM 11g WebGateで保護されると、OAM_REMOTE_USERヘッダーを受信します。これによってプロキシ設定されたWebアプリケーションもすべて、このヘッダーを受信します。プロキシ設定されているWebアプリケーションがOAMアイデンティティ・アサーション・プロバイダを持つアプリケーション・サーバーにインストールされている場合、OAMアイデンティティ・アサータはページレット・プロデューサから渡されたOAM_REMOTE_USERヘッダー値を使用してユーザー・プリンシパルを設定します。この操作は、ページレット・プロデューサが、保護されたWebアプリケーションに対してWebGateのURLをプロキシ設定しようとしないかぎり、すべて実行されます。この項の以降の部分では、サイト統合のコンテキストでこれが実行できる方法を詳しく説明します。

設定例

この例では、前述の図62-53に示すように、WebCenter Sitesとページレット・プロデューサの両方がOAM WebGateによって保護されていて、次のホストとポートがアプリケーションによって使用されることを前提としています。

- OAM SSO WebGate: www.example.com:80

- WebCenter Sites: sites_host:8080

- WebCenterページレット・プロデューサ: pp_host:8889

- バックエンド・アプリケーション: backendhost:8001

- ブラウザから(WebGate経由で)表示されるバックエンド・アプリケーションの完全URL
http://www.example.com/backend/console

- アプリケーション・サーバーから直接アクセスする場合のバックエンド・アプリケーションの完全URL(内部ネットワークのみで使用可能) http://backendhost:8001/console

バックエンド・アプリケーションへの直接URLを使用するようにページレット・プロデューサ・リソースを設定して、WebGateをバイパスします(つまり、http://backendhost:8001/console)。

図62-55 ページレット・プロデューサ管理コンソール - 「一般プロパティ」ページ

バックエンド・アプリケーションを直接コールするようにページレット・プロデューサを設定(WebGateをバイパス)することにより、ページレット・プロデューサで受信されるすべてのOAMセキュア・ヘッダーは、バックエンド・アプリケーションをホストしているアプリケーション・サーバー上のOAMアイデンティティ・アサーション・プロバイダに渡されます。バックエンド・アプリケーションをホストしているアプリケーション・サーバー上のOAMアイデンティティ・アサーション・プロバイダは、OAMヘッダーを受信すると、適切なユーザー・プリンシパルを設定します(図62-56を参照)。図62-56では、2つの認証スキーム間での共有が前提となっているユーザー・ディレクトリが省略されていることに注意してください。また、OAMアクセス・サーバーも除外されています。

図62-56 バックエンド・アプリケーションを直接コールするページレット・プロデューサ

注意:

WebGateをバイパスするようにページレット・プロデューサを設定するとシングル・サインオンが実行できますが、このソリューションはいつでも適用できるわけではありません。WebGateをホストしているOHSサーバーがバックエンド・アプリケーションのロード・バランシングも管理している場合は、WebGateをバイパスすることによってロード・バランシングもバイパスされます。アプリケーションへのトラフィックはすべて1つのサーバーにルーティングされます。この場合は、第62.8.4.3.6項「自動ログインとSSOによるアイデンティティ伝播の使用」で説明するように、自動ログイン用にページレット・プロデューサを構成することをお薦めします。

62.8.4.3.6 自動ログインとSSOによるアイデンティティ伝播

OAM WebGateのバイパス(第62.8.4.3.5項「OAMで保護されたバックエンド・アプリケーションへのアイデンティティの直接伝播の使用」で説明するとおり)が実行可能なオプションでない場合は、ページレット・プロデューサの自動ログイン機能を使用して資格証明を提供できます。バックエンド・アプリケーションごとに個別のログイン・フォームを使用する場合と異なり(第62.8.4.3.3項「自動ログインによるアイデンティティ伝播」を参照)、Oracle SSOソリューション(OAMまたはOSSO)のログイン・ページによる自動ログインを使用すると、自動ログインを1回だけ設定すればよく、構成手順はすべての実装で同じであるという利点があります。

OSSOによる自動ログインの設定手順については、第62.8.7.2項「自動ログイン」を参照してください。本番環境では、これらの手順はこのまま実行できますが、例外として「ssousername」フィールドと「password form」フィールドを「ユーザー・ボールト」にリンクする必要があります。

OAMで保護されたバックエンド・アプリケーションも、このドキュメントの自動ログインの構成に関する項でOSSOに関して説明した手順に従って設定できますが、次の例外があります。

- login form URLは設定済の場所(例: http://oam11g.mycompany.com:14100/oam/server/obrareq.cgi)です。
自動ログインのフォーム識別URLを設定するときに、固定位置引数の後の問合せ文字列を必ず削除してください。

- form action URLは異なる値になりますが、静的な値である必要があります。OAM formを調べて、form action URLを決定します。

- 「username」フィールドと「password」フィールドの値が異なる場合があります。「OAM form」フィールドを調べて、これらの値を決定します。

- 次の生成された2つの値、「request_id」および「OAM_REQ」を含めます。

62.8.4.3.7 参照: 共通自動ログイン構成

この項では、一般的なバックエンドSSOシナリオに対するページレット・プロデューサでの自動ログイン設定のクイック参照を示します。

この項には次のサブセクションが含まれます:

- 第62.8.4.3.8項「Oracle Access Manager (OAM)の自動ログイン設定」

- 第62.8.4.3.9項「Oracle SSO (OSSO)の自動ログイン設定」

62.8.4.3.8 Oracle Access Manager (OAM)の自動ログイン設定

ログイン・フォームの識別:

- URL: http://%OAM_ROOT%/server/obrareq.cgi

フォーム送信場所:

- URL: /oam/server/auth_cred_submit

フォーム・フィールド:

- actionURL: 静的: /oam/server/auth_cred_submit

- requested: 生成済

- username: 非保護または資格証明ボールト

- OAM_REQ: 生成済

- password : 非保護または資格証明ボールト

62.8.4.3.9 Oracle SSO (OSSO)の自動ログイン設定

ログイン・フォームの識別:

- URL: %OSSO_HOST%/sso/jsp/login.jsp

フォーム送信場所:

- URL: %OSSO_HOST/sso/auth - POST

フォーム・フィールド:

- appctx: 生成済

- locale: 生成済

- password : 非保護または資格証明ボールト

- site2pstoretoken: 生成済

- ssousername: 非保護または資格証明ボールト

- v: 生成済

62.8.5 WSRPポートレットのページレットとしての消費

ページレット・プロデューサではWebCenter共通コンシューマを統合しているため、WSRPポートレットやOracle JPDKポートレットをページレットとして公開して、WebCenter SitesやWSRPコンシューマを含まないその他のすべてのWebコンテナで使用できます。

WSRPポートレット・プロデューサは、Fusion Middleware Control、WLSTまたはページレット・プロデューサ管理コンソールを使用してページレット・プロデューサに登録できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のページレット・プロデューサでのWSRPおよびOracle JPDKポートレット・プロデューサの登録に関する項を参照してください。登録が完了すると、WSRPプロデューサはページレット・プロデューサ管理コンソールにリソースとして表示され、WSRPエンドポイントに関連付けられたポートレットがリソースのページレット・コレクションにリストされます。

注意:

自動生成されたWSRPリソースとページレットは変更できません。変更可能なバージョンを作成するには、ページレット・プロデューサ管理コンソールで該当するリソースを選択して、「コピー」をクリックします。リソースのクローン・バージョンは編集可能であり、インジェクタなどの各種要素を追加してページレットの機能をカスタマイズできます。たとえば、カスタム・インジェクタを使用してCSSクラスを注入し、ポートレット・マークアップがページレットをホストするサイトのルック・アンド・フィールのように表示されるように変更することもできます。

ページレット・プロデューサに登録しているWSRPプロデューサで認証が必要な場合は、次の手順を実行する必要があります。

- 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWSセキュリティの構成に関する項の説明に従って、ページレット・プロデューサとWSRPプロデューサ間にWSセキュリティを構成します。Javaキーストア(JKS)がWSRPプロデューサとページレット・プロデューサ間で適切に構成されていることを確認する必要があります。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のWebCenterポータル・ドメイン・キーストアの設定に関する項を参照してください。

- WSRPプロデューサの登録時に、「セキュリティ」セクションで適切な「トークン・プロファイル」を選択して、必要な構成情報を入力します。キーストアへのパスは絶対パスである必要があります。

62.8.5.1 カスタムADFタスクフローをWSRPポートレットとして公開

ADFタスク・フローがホストされているページからそれを「クリッピング」することで、そのADFタスク・フローをページレット・プロデューサで消費できますが、この方法はお薦めできません。ADFページによって生成されたマークアップの複雑さや、他のタスク・フローまたはADFページ・パラメータへの潜在的な依存性を考慮すると、お薦めできる方法は、タスク・フローに基づいてWSRPポートレットを作成してから、そのポートレットをページレット・プロデューサで消費することです。この方法の利点の1つは、ADFタスク・フローのパラメータがポートレットのパラメータになってページレット・パラメータにマップ可能になり、情報をサイト・ページからタスク・フローに渡せるようになることです。ADFタスク・フローからポートレットを作成するステップ別の手順は、第58.2.3項「タスク・フローに基づくJSFポートレットの作成方法」を参照してください。

ADFタスク・フローがポートレットとして公開された後で、WLSドメインにある管理対象サーバー(たとえば、WebCenterドメイン上のWC_Portletサーバー)に新しいWSRPプロデューサをデプロイします。WSDL URLを情報ページ(http://%PRODUCER_HOST%/%APP_CONTEXT%/info)から取得して、それをメモしておきます。新しいWSRPプロデューサをページレット・プロデューサに登録するには、Oracle Fusion Middleware Oracle WebCenter Portalの管理のページレット・プロデューサでのWSRPおよびOracle JPDKポートレット・プロデューサの登録に関する項を参照してください。

62.8.5.1.1 Oracle WebLogic Portal用に開発されたWSRPポートレットの公開

Oracle WebLogic Portal (WLP)では、Javaポートレット、Java Server Facesポートレット、Java Server PageおよびHTMLポートレットなど、様々なポートレット・タイプをサポートしています(完全なリストは、『Oracle Fusion Middleware Portlet Oracle WebLogic Portal開発ガイド』のポートレット・タイプに関する項を参照してください)。リモート(プロキシ)ポートレットはWSRPポートレットであり、ページレット・プロデューサにWSRPプロデューサを登録することによって、そのままページレットとして公開できます。この項では、JSF、JSP、またはJavaポートレットなどのローカルWLPポートレットをサイトで使用するためにページレットとして公開する方法について説明します。

62.8.5.1.2 WLPをWSRPプロデューサとして使用したWLPポートレットの公開

WLPは、Java、ページ・フロー、JSP、JSF、およびStrutsのポートレットを、必須WSRPインタフェース、オプションのインタフェース、およびいくつかの拡張インタフェースを含んだ「複合プロデューサ」として公開できます(詳細は、『Oracle Fusion Middleware Oracle WebLogic Portalフェデレーテッド・ポータル・ガイド』のWebLogic Portalプロデューサに関する項を参照してください)。その結果、ページレット・プロデューサはネイティブWLPポートレットをその他のすべてのWSRPポートレットとして消費できます。WLPとWebCenter共通コンシューマ間のWSRPの相互運用の構成とベスト・プラクティスについては、『Oracle Fusion Middleware Oracle WebLogic Portalフェデレーテッド・ポータル・ガイド』のOracle WebCenter PortalおよびOracle PortalとのWSRPの相互運用に関する項で説明しています。

注意:

WLPポータルは、デフォルトではバージョン9.2以降、WSRPに対応しています。それ以前のバージョンでは、ポートレットのプロパティを編集し、「Offer as Remote」プロパティをtrueに設定する必要があります。

62.8.5.1.3 WLP WSRPプロデューサとWebCenterコンシューマ間のWSセキュリティの構成

WebCenter共通コンシューマ(ページレット・プロデューサ)でWLPにより公開されたWSRPポートレットを消費するには、プロデューサとコンシューマの両方で構成する必要があります。

通常、WebLogic Portalによって公開されたWSRPポートレットを匿名ユーザーとして消費することはできないため、プロデューサとWebCenter共通コンシューマに対してWLP上でSAMLセキュリティを構成する必要がありますステップごとの手順は、『Oracle Fusion Middleware Oracle WebLogic Portalフェデレーテッド・ポータル・ガイド』のWebCenter Portal: フレームワーク・アプリケーション・コンシューマとWebLogic Portalプロデューサ間のSAMLセキュリティに関する項に記載しています。これらの手順は包括的であり、次の調整が加えられています。

- プロデューサの構成の第5項で、WSRPコンシューマでのキーストア情報の構成の手順はJDeveloperで実行されます。この手順は、WebCenter共通コンシューマ(ページレット・プロデューサ)で完了する必要があります。WLSTまたはFusion Middleware Controlを使用すると、署名の別名やキーストア・パスワードを指定できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWLSTを使用したキーストアの構成に関する項、またはFusion Middleware Controlを使用したキーストアの構成に関する項を参照してください。

注意:

キーストア値を構成したら、JPS構成変更が選択されるようにするために、ページレット・プロデューサをホストしている管理対象サーバー(デフォルトではWC_Portlet)とWLS管理サーバーの両方を再起動する必要があります。

- プロデューサの構成の第4項の手順では、発行者名の重要性は強調されていません。ここに入力される名前は、コンシューマにより送信された名前と一致する必要があります。Oracle JPSの場合、送信されたデフォルトの発行者IDはwww.oracle.comです。

62.8.5.1.4 ページレット・プロデューサでのWLP WSRPプロデューサの登録

WLP WSRPプロデューサをページレット・プロデューサに登録するには、Oracle Fusion Middleware Oracle WebCenter Portalの管理のページレット・プロデューサでのWSRPおよびOracle JPDKポートレット・プロデューサの登録に関する項に説明する新しいWSRPプロデューサの作成と構成の標準的な手順に従ってください。次の設定が含まれていることを確認します。

- WSDL URL:
http://%WLP_HOST%/%PORTAL_APP_NAME%/producer/wsrp-1.0/markup?WSDL

- セキュリティ:
トークン・プロファイル: 「WSS 1.0 Token with Message Integrity」を選択

登録後、新しいページレット・プロデューサ・リソースが自動的に作成され、ページレットに移入されて、このWSRPエンドポイントに関連付けられたWLPポートレットを表現します。

注意:

ポートレットへのユーザー・アイデンティティ伝播を可能にするには、第62.8.4.3項「ページレット・プロデューサからバックエンド・アプリケーションへのアイデンティティの伝播」の説明に従って、WLPとページレット・プロデューサの両方を構成する必要があります。(テスト目的の場合、または認証なしでアクセス可能なポートレット・コンテンツの場合は、「セキュリティ」の下にある「デフォルト・ユーザー」に有効なユーザー名を指定できます。)

62.8.5.1.5 サイトへのWLP WSRPポートレットの追加

WLP WSRPポートレットをサイト内のページに追加するには、第62.8.4.1項「Oracle WebCenter Sitesへのページレットの追加」の手順に従います。ページレット・コンテンツをロードするIFrameのsrc属性に使用するURLは、第62.7.2.2項「RESTを使用したページレットへのアクセス」の「ドキュメント」の項に記載されています。

自動生成されたWSRPリソースとページレットは変更できません。WLPポートレットのマークアップの変更、たとえば、カスタムCSSスタイルの注入によりポートレットUIのルック・アンド・フィールを変更するためにページレット・プロデューサの機能を使用するには、新しいバージョンのリソースを作成する必要があります。ページレット・プロデューサ管理コンソールでWLP WSRPプロデューサ用に作成されたリソースを選択し、「コピー」をクリックします。リソースのクローン・バージョンは変更可能であり、インジェクタなどの要素を追加してページレットの機能をカスタマイズできます。

62.8.6 サイトにおけるWebCenter Portalサービスのページレットとしての消費

WebCenter Portalには、WebCenter Sitesでユーザーのコラボレーションが容易に実行できるように、お知らせやドキュメントなどのサービスやツールが組み込まれています。これらのツールの概要については、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の情報の取得に関する項と整理に関する項を参照してください。

これらのサービスおよびツールをサイトで公開する場合のお薦めできる方法は、Oracle WebCenter Portal (11.1.1.6およびそれ以降)に組み込まれているサービス・プロデューサ・コンポーネントを利用して、関連するWSRPポートレットをページレット・プロデューサ内で消費することです。

次のポータル・ツールは、デフォルトではWSRPポートレットとして公開されています。

- アクティビティ・ストリーム

- ディスカッション・フォーラム

- メール

- 投票マネージャ

- ドキュメント・マネージャ

- リスト

- タグ・クラウド

- ブログ

- ワークリスト

- 投票

- お知らせ

注意:

追加のツールを公開するには、サービス・プロデューサを新しいJSPXページに拡張し、そのページにタスクフローを追加します。

62.8.6.1 要件

『Oracle Fusion Middleware Oracle WebCenterインストレーション・ガイド』の手順に従って、WebCenter Portalをインストールします。WebCenter Contentサーバー、ディスカッション・サーバー、ページレット・プロデューサを含むすべての依存コンポーネントもインストールされていて、構成済であることを確認します。詳細は、第62.1.3項「ページレット・プロデューサの要件」を参照してください。

62.8.6.2 セキュリティおよびシングル・サインオンの構成

サイト駆動のWebサイトからWebCenter Portalサービスへのアクセスを可能にするには、次の2つの前提条件があります。

- WebサイトとWebCenter Portal間に共通のユーザー・ベースを作成する

- WebサイトからWebCenter Portalへのユーザー・アイデンティティ伝播を確立する

これらの前提条件については、以降のサブセクションで説明します。

- 第62.8.6.2.1項「共通ユーザー・ベースの作成: LDAP統合」

- 第62.8.6.2.2項「ユーザー・アイデンティティ伝播の確立: OAM構成」

- 62.8.6.2.3項「アイデンティティ・ストアでのGUID属性の構成」

- 第62.8.6.2.4項「ディスカッション・サーバー用SSOの構成」

62.8.6.2.1 共通ユーザー・ベースの作成: LDAP統合

共通ユーザー・ベースを作成するには、WebCenter SitesとすべてのWebCenter Portalコンポーネントで使用される共通のLDAPリポジトリを構成する必要があります。LDAPサーバーを選択する際、それがWebCenter Portalコンポーネントを実行するWebLogic Serverに準拠していることを確認します。

WLSでのセキュリティ構成時に、次の点を忘れないようにしてください。

- 「オーセンティケータ」の優先度を「SUFFICIENT」に設定します。

- 「制御フラグ」(カッコ内)と認証プロバイダの順序を次のように設定します。

- OAM IDアサーション・プロバイダ: (REQUIRED)

- LDAPオーセンティケータ: (SUFFICIENT)

- デフォルトのオーセンティケータ: (SUFFICIENT)

- デフォルトのアイデンティティ・アサーション・プロバイダ: (SUFFICIENT)

62.8.6.2.2 ユーザー・アイデンティティ伝播の確立: OAM構成

ユーザー・アイデンティティ伝播を確立するには、Oracle Access Manager (OAM)を使用してWebCenter SitesおよびWebCenter Portal用にSSOソリューションを構成することをお薦めします。

OAMを使用している場合は、ユーザー・プリンシパル名がORACLE_REMOTE_USERヘッダーに渡されるように構成されていることを確認します。ObSSOCookieとOAM_REMOTE_USERの両方が、WebLogic Server上のOAMアイデンティティ・アサーション・プロバイダでアクティブに設定されている必要があります。

62.8.6.2.3 アイデンティティ・ストアでのGUID属性の構成

GUID属性値を指定して、アイデンティティ・ストアで使用される値がLDAP認証プロバイダで構成された値と一致していることを確認します。この値は、jps-config.xmlファイル内で構成されます。

使用しているLDAPオーセンティケータのGUIDをjps-config.xmlファイルに設定します。

<serviceInstance provider="idstore.ldap.provider" name="idstore.ldap">
<property value="oracle.security.jps.wls.internal.idstore.WlsLdapIdStoreConfigProvider" name="idstore.config.provider"/>
<property value="oracle.security.idm.providers.stdldap.JNDIPool" name="CONNECTION_POOL_CLASS"/>
<property value="GUID=uuid" name="PROPERTY_ATTRIBUTE_MAPPING"/>
</serviceInstance>

62.8.6.2.4 ディスカッション・サーバー用SSOの構成

ディスカッションを使用するには、WebLogic Serverでオーセンティケータの順序付けを行う前に(デフォルトのオーセンティケータおよびデフォルトのアイデンティティ・アサーション・プロバイダを使用)、ディスカッション・サーバーをSSO用に構成します。WLSTを使用してディスカッション・サーバー用にSSOを構成することもできます。Oracle Fusion Middleware Oracle WebCenter Portalの管理の「SSOに関するディスカッション・サーバーの構成」の章を参照してください。

62.8.6.3 WSRPポートレットとして公開されたWebCenterサービスの登録

WebCenterサービスを公開するWSRPポートレットをページレット・プロデューサにインポートするには、Enterprise Manager、WLSTまたはページレット・プロデューサ管理コンソールを使用して、サービス・プロデューサをページレット・プロデューサにWSRPプロデューサとして登録するだけです。

図62-57では、ページレット・プロデューサ管理コンソールでのWSRPエンドポイントの登録例を示しています。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のページレット・プロデューサでのWSRPおよびOracle JPDKポートレット・プロデューサの登録に関する項を参照してください。

図62-57 ページレット・プロデューサ管理コンソール - WSRPエンドポイントの登録

このページの「セキュリティ」セクションの「トークン・プロファイル」は、サービス・プロデューサをサポートするために「WSS 1.0 SAML Token」に設定する必要があります。また、ページレット・プロデューサで設定されたサービス・プロデューサに対するリクエストに適切な実行タイムアウトを入力します(デフォルトは30秒)。

登録が完了すると、サービス・プロデューサはページレット・プロデューサ管理コンソールにリソースとして表示され、プロデューサによって公開されたすべてのWSRPポートレットがリソースのページレット・コレクションにリストされます。

62.8.6.3.1 サイト・ページへのページレットの追加

WebCenterサービスを公開しているページレットはすべて、Oracle WebCenter Sitesへのページレットの追加に関する項で説明する手順に従って、WebCenter Sitesのページに追加できます。図62-58に、WebCenter SitesにあるサンプルのAviSportsサイトのページに埋め込まれたドキュメント・マネージャ・サービスを示します。

注意:

自動生成されたWSRPリソースとページレット(サービス・プロデューサに関連付けられているものなど)は変更できません。インジェクタを追加したり、その他の変更を加えるには、編集可能なバージョンを作成する必要があります。ページレット・プロデューサ管理コンソールでリソースを選択し、「コピー」をクリックします。リソースのクローン・バージョンは編集可能であり、インジェクタなどの各種要素を追加してページレットの機能をカスタマイズできます。

図62-58 ドキュメントが埋め込まれたサンプルのAviSportsサイト

62.8.7 EBS11iを使用したページレットとしてのアプリケーションの消費

この項では、Oracle E-Business Suite 11i Order InformationモジュールのUIをページレットとして消費する場合の詳細な手順を説明します。ここでは、自動ログイン、ナビゲーション抑止、スタイル変更、およびURLリライトについて説明します。

この例は、Oracle SSOで保護されているEBS 11iインスタンスを使用して作成されました。この例では、次の共通用語と変数を使用しています。

- EBSホストの%EBS_HOST%:ルートURL(例: http://my-ebs.company.com:port/)

- OSSOホストの%OSSO_HOST%:ルートURL(例: http://sso.company.com:port/)

この項には次のサブセクションが含まれます:

- 第62.8.7.1項「基本のURLマッピング(プロキシ)に対するリソースの作成」

- 第62.8.7.2項「自動ログインの構成」

- 第62.8.7.3項「ページレットの作成」

- 第62.8.7.4「修正構成の作成」

62.8.7.1 基本のURLマッピング(プロキシ)に対するリソースの作成

次の手順によって、ページレット・プロデューサ内の新しいEBSリソースに対して基本的なURLマッピングを設定します。

1. 次の設定を使用して新しいWebリソースを作成します。

- 名前: EBS 11(または任意の名前)

- ソースURL: %EBS_HOST%
UIで使用するURLと間違えられないようにするために、このURLはあまり具体的にしないようにしてください。

- 宛先のURL: /ebs11/(または任意のもの)

- URLリライト: オン

- DHTMLリライト: オン

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

62.8.7.2 自動ログインの構成

この手順では、EBSシステムがOSSOによって保護されていて、ページレット・プロデューサがSSOに参加するのではなく(WebサイトがSSOで保護されていない場合の一般的なシナリオ)、フォームAutologinを提供するように構成されることを前提としています。EBS資格証明はすべてのユーザー用に共有することも(テスト用に有効)、ページレット・プロデューサの資格証明ボールトにユーザー別に格納することもできます。

1. 次の設定を使用して新しいWebリソースを作成します。

- 名前: OSSO(または任意の名前)

- ソースURL: %OSSO_HOST%

- 宛先のURL: /osso/(または任意のもの)

- URLリライト: オン

- DHTMLリライト: オフ

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

3. 新規に作成されたOSSOリソースの下で、次のように「フォーム・ログイン」オプションを使用して「Autologin」を構成します。

- ログイン・フォームの識別: URL - %OSSO_HOST%/sso/jsp/login.jsp

- フォームの送信場所: URL - %OSSO_HOST/sso/auth - POST

- フォーム・フィールド:
appctx: 生成済

locale: 生成済

password: 非保護またはユーザー・ボールト

site2pstoretoken: 生成済

ssousername: 非保護またはユーザー・ボールト

- v: 生成済

4. 「保存」をクリックします。

注意:

ログイン・フォームのフィールド名は通常、バックエンド・リソースを保護しているログイン・ページのHTMLソースを調べることによって取得されます。

62.8.7.3 ページレットの作成

この手順では、ページレットをEBS Order Informationモジュールの順序ステータス・ページに関連付けます。新しいページレットを作成するには、作成したEBSリソースの下で「ページレット」セクションを選択して「作成」アイコンをクリックします。次の設定を使用して新しいページレットを作成します。

- 名前: order_status (または任意の名前)

- ライブラリ: ebs11 (または任意のもの)

- URL接尾辞: OA_HTML/RF.jsp?function_id=1005664&resp_id=22480&resp_appl_id=660&security_group_id=0&lang_code=US

- インラインのリフレッシュ: オフ

構成済のページレットをテストするには、「ドキュメント」ページで、そのページレットにRESTリンク経由でアクセスします。ログインしなくても「Sales Order」ページが表示されます(ページレットでユーザー・ボールトを使用して資格証明を格納していて、そのページレットにはじめてアクセスする場合を除きます)。このページから「簡易検索」を使用て、ワイルドカード文字として'%'を使ってオーダーを検索できます。

62.8.7.4 修正構成の作成

ページレットの登録後に、プロキシ設定されたマークアップでのURLリライト関連の問題に対応するため、あるいは単にマークアップのスタイルを変更したり不必要な要素を非表示にするために、ページレットで追加機能(パーサー、インジェクタ、クリップなど)が必要になる場合があります。この項では、EBSでOrder InformationのUIを公開するサンプルのページレットに適用された修正構成について説明します。

この項には次のサブセクションが含まれます:

- 第62.8.7.4.1項「ポップアップURLリライト用のプラガブル・パーサーの作成」

- 第62.8.7.4.2項「フレーム・バストを無効化するインジェクタの作成」

- 第62.8.7.4.3項「iFrameを自動サイズ変更するインジェクタの作成」

- 第62.8.7.4.4項「JavaScriptの挿入によるクリッピングの設定」

- 第62.8.7.4.5項「ページレットのスタイル変更用にインジェクタを作成」

- 第62.8.7.4.6項「ページレットのテスト」

- 第62.8.7.4.7項「最終結果」

- 第62.8.7.4.8項「トラブルシューティング」

62.8.7.4.1 ポップアップURLリライト用のプラガブル・パーサーの作成

パーサーを使用して、コンテンツを解析したり、リライトする必要のあるURLを検索するために、ビルトイン・ロジックを補足または変更することができますビルトイン・パーサーがURLの識別に失敗した場合は、カスタム・パーサーを使用してこの失敗を修正することができます。EBS 11i UIの場合、この手順は「拡張検索」でのポップアップ処理の修正に必要です。

EBSリソースの下で、次の設定を使用して新しいパーサーを作成します。

- 名前: popupRewriter(または任意の名前)

- URLフィルタ: *.jsp*

- 基本パーサーの使用: オン

- フラグメントの場所

- var _jspDir='(.*?)'; (タイプ静的URL)

- <frame .? src="(.?) (タイプ静的URL)

図62-59にpopupRewriterの設定を示します。

図62-59 popupRewriter

62.8.7.4.2 フレーム・バストを無効化するインジェクタの作成

インジェクタによって、プロキシ設定されているリソース・ページの指定された場所にコンテンツが挿入されます。コンテンツには、HTML、CSS、JavaScript、およびページレット宣言も含めて、任意のテキストが使用できます。空のインジェクタを使用して、不必要なコンテンツをページから削除することもできます。次のインジェクタはEBSページレットに対して作成されたものですが、その目的は、ユーザーが職責を選択するよう求められる最初のページで発生するページの継承をEBSページレットが行わないようにすることです。

EBSリソースの下で、次の設定を使用して新しいインジェクタを作成します。

- 一般

- 名前: frameBustDisabler

- URLフィルタ: <none>

- MIMEフィルタ: text/html

- 挿入位置: target=_topを置換

- コンテンツ: (テキスト)alt=''

図62-60に、新しいインジェクタのパラメータ設定を示します。

図62-60 frameBustDisablerインジェクタ

62.8.7.4.3 iFrameを自動サイズ変更するインジェクタの作成

よりシームレスに消費側ページに統合するには、コンテンツを収められるように動的にサイズ変更することによって、ページレットiFrameがよりインライン・コンテンツらしく動作するように構成できます。詳細は、このドキュメントのIFrameの自動サイズ変更の有効化に関する項を参照してください。

62.8.7.4.4 JavaScriptの挿入によるクリッピングの設定

ページレットとして公開されたページ要素を抑止するオプションの1つとして、ページレット・プロデューサで使用可能なグラフィカル・クリッピングまたは正規表現ベースのクリッピングを使用してクリップを作成します。ただし、お薦めできる方法は、プロキシ設定されたページに注入されているカスタムJavaScriptを使用することです。この方法では、抑止する要素の識別ルールを動的に調節する必要性や、ページ上の複数要素の抑止ルールを調整する必要性に容易に適応できるため、より柔軟に対応できます。

カスタムJavaScriptは、プロキシ設定されたリソースにインジェクタを使用して追加できます。EBS 11i標準ヘッダーとナビゲーション要素を抑止するには、次のインジェクタ定義を使用して、ページのロード時に不必要な要素を非表示にするJavaScriptのスニペットを挿入します。(ページレット・プロデューサの標準クリッパ機能は、EBS Web UIが複雑であるため使用しません。)

EBSリソースの下で、次の設定を使用して新しいインジェクタを作成します。

- 一般

- 名前: nav_suppressor(または任意の名前)

- URLフィルタ: <none>

- MIMEフィルタ: text/html

- 挿入位置: </body>の前

- コンテンツ: (テキスト - 次のコンテンツをコピーおよび貼付け)

<script type="text/javascript">
// this script is injected into the page by ensemble
// it hides header and footer tables at page load

// register handler function to the page load event
if (window.addEventListener) {
window.addEventListener('load', hideHeaderFooter, false);
} else if (document.attachEvent) {
window.attachEvent('onload', hideHeaderFooter);
}

// this function does the actual hiding
function hideHeaderFooter() {
var form = document.forms[0];
if (typeof(form) == 'undefined') return;
// main span is form's second child span
var spansFound = 0;
var mainSpan = null;
for (var i = 0; i < form.childNodes.length; i++) {
var child = form.childNodes[i];
if (child.tagName && child.tagName.toLowerCase() == 'span') {
if (++spansFound == 2) {
mainSpan = child;
break;
}
}
}
if (typeof(mainSpan) != "undefined" && mainSpan != null) {
for (var i = 0; i < mainSpan.childNodes.length; i++) {
var child = mainSpan.childNodes[i];
if (child.tagName && child.tagName.toLowerCase() == 'table') {
child.style.display = 'none';
}
}
}
}
// call this function directly
hideHeaderFooter();
</script>

62.8.7.4.5 ページレットのスタイル変更用にインジェクタを作成

消費側のページでEBSページレットが見栄えよく収まるようにするには、インジェクタを使用して元のCSSをオーバーライドするスタイルを追加できます。

次のインジェクタ定義の例では、WebCenter SitesにおけるサンプルのAviSports Webサイトのスタイル変更の実装方法を示しています。

注意:

オーバーライドが適切に機能するためには、インジェクタによるスタイル定義がバックエンド・アプリケーションによって定義されたスタイルの後に置かれることが重要です。次の例では、コンテンツはページの<HEAD>セクションの終わりに注入されています。

EBSリソースの下で、次の設定を使用して新しいインジェクタを作成します。

- 一般

- 名前: avisports_styles

- URLフィルタ: <none>

- MIMEフィルタ: text/html

- 挿入位置: </head>の前

- コンテンツ: (テキスト - 次のコンテンツをコピーおよび貼付け)

<style>
* {
font: 11px Arial,Helvetica,sans-serif;
}
body {
background: url("http://sites-host:port/cs/avisports/images/BlueSliver.png") repeat-x scroll center bottom transparent;
}
.OraTableCellText, .x1l, .OraTableCellNumber, .x1n, .OraTableCellIconButton, .x1p, .OraTableCellSelect, .x55,
.OraTableControlBarTop, .x1i, .OraTableControlBarBottom, .x1j {
background-color: #eceef1;
border-color: #0b2a55;
}
.OraTableColumnHeader, .x1r, .OraTableSortableColumnHeader, .x20, .OraTableSortableHeaderLink, .x23 {
background-color: #0b2a55;
border-color: #F7F7E7;
color: #336699;
}
.OraTableHeaderLink, .x24, .OraTableColumnHeaderNumber, .x1s, .OraTableColumnHeaderIconButton, .x1t {
background-color: #0b2a55;
color: #ffffff;
}
.p_InContextBrandingText, .x2l, .OraHGridNavRowInactiveLink, .x3v, .OraNavBarInactiveLink, .x42,
.OraBINavBarInactiveLink, .x7n, .OraBINavBarInactiveLink_small, .x7o {
color: #000000;
}
.OraLink:link, .xd:link, .OraBreadCrumbs, .xh, .OraBulletedList a, .xj a, .OraLinkText, .x2v,
.OraHGridNavRowActiveLink, .x3u, .OraNavBarActiveLink, .x41, .OraBINavBarActiveLink, .x7l, .OraBINavBarActiveLink_small, .x7m {
color: #0b2a55;
}
.OraBreadCrumbs a, .xh a {
color: #0b2a55;
}
</style>

62.8.7.4.6 ページレットのテスト

これでEBS11リソースには、図62-61に示すように、ページレット、カスタム・インジェクタ、およびカスタム・パーサーが含まれるようになりました。

図62-61 EBS11プロジェクト・リソース

ページレットをテストするには、「ドキュメント」ページを参照し、次に示すURLを使用して、「example.com」をローカル・ホストIDに置き換えます。

http://example.com:8889/pagelets/inject/v2/pagelet/ebs11/order_status?content-type=iframe&csapi=true&ifheight=300px

62.8.7.4.7 最終結果

次のスクリーンショットは、iFrameのページレット・アクセス用のREST URLを使用してWebCenter SitesにあるサンプルのAviSportsサイトのページに埋め込まれたEBS 11i Order Informationの画面を示しています。

62.8.7.4.8 トラブルシューティング

イメージが適切にレンダリングされない場合は、DHTMLリライトが有効になっていることを確認します。(DHTMLリライトの設定はリソースの「一般」ページにあります。)

62.8.8 ページレット・プロデューサを使用したOpenSocialガジェットの消費

ページレット・プロデューサは、次の機能を公開するOpenSocialコンテナです。

- ユーザー(ピープル・コネクションを公開)

- アクティビティ(アクティビティ・ストリームを公開)

- アプリケーション・データ(ガジェットのパーソナライズをサポート)

- Pub-Subメカニズム

ユーザーおよびアクティビティ機能には、WebCenter Portalが必要です。ユーザーおよびアクティビティ機能を使用するには、WebCenterDSのターゲットとして、WC_Portlet管理対象サーバー(つまり、ページレット・プロデューサ)を指定します。アプリケーション・データに対して、ページレット・プロデューサでは、ユーザー、インスタンスおよびページレット・スコープのプリファレンスをサポートします。

次に例を示します。

1. ページレット・プロデューサを開き、新しいOpenSocialリソースを作成します。

2. 必要に応じてURLとポリシーを定義します。

3. 新しいページレットを作成し、外部ガジェットのURLを指定します。
例:

http://bayareacoder.com/gogo/localweather/localweather.xml

4. ガジェットでプリファレンスをサポートする場合、必須パラメータを構成します(図62-62および図62-63を参照)。

図62-62 プリファレンス・エディタ

図62-63 「ページレット・パラメータ」ダイアログ

5. ガジェットXMLファイルを作成またはアップロードします(図62-64を参照)。

図62-64 ページレット・プロデューサ内のアクティビティJavaScriptおよびXMLオプション

「名前」フィールドに指定するパスは、ページレット・プロデューサがファイルの提供に使用する仮想URLであり、任意のパスまたは名前を使用できます。

6. 新しいガジェットに必要な他のファイル(JavaScriptファイルやイメージなど)を作成またはアップロードしたら、作業は完了です。

62.8.9 HTMLマークアップの操作

この項では、HTMLマークアップを変更するためのJavaScriptを挿入し、インジェクタでSSLを使用する方法について説明します。

この項には次のサブセクションが含まれます:

- 第62.8.9.1項「インジェクタでのJavaScriptの使用」

- 第62.8.9.2項「インジェクタでのSSLの使用」

62.8.9.1 インジェクタでのJavaScriptの使用

HTMLマークアップの挿入や置換だけでは、可能性は限定されます。より有効な方法は、HTMLマークアップを直接変更するJavaScriptを挿入することです。これを行うには、次の手順を実行します。

- 次のコード・スニペットに示すように、ハンドラ関数をページ・ロード・イベントで登録します。

if (window.addEventListener) {
window.addEventListener('load', hideHeaderFooter, false);
} else if (document.attachEvent) {
window.attachEvent('onload', hideHeaderFooter);
}

- コード例の残りの部分に示すように、マークアップ操作を行うためのハンドラを使用します。

function hideHeaderFooter() {
var header = null;
// find the header table by class
if (document.getElementsByClassName) {
header = document.getElementsByClassName('page_header')[0];
} else {
// for older versions of IE
var tables = document.getElementsByTagName('table');
for (var table in tables) {
if (table.class == 'page_header') {
header = table;
break;
}
}
}
if (header != null) {
header.style.display = 'none';
}
// now find and hide the footer (easier to find, since it has an id)
var footer = document.getElementById('t23PageFooter');
if (footer != null) {
footer.style.display = 'none';
}
}
</script>

62.8.9.2 インジェクタでのSSLの使用

SSLリソースを消費するには、次のものを含むHTTPS経由のページレット・プロデューサ接続が必要です。

- WLSとページレット・プロデューサ間のセキュアなポート・マッピング

- HTTPSを経由したコンテナへのアクセス

インジェクタでは、ページレット・プロデューサによってプロキシされるHTMLマークアップを、次のように変更できます。

- URLパターン(リソース・スコープ)に基づきます。

- MIMEタイプに基づきます。

- 場所(上部または下部)またはテキストの完全一致(前、後、置換)に基づきます。

- コンテンツ・ページで挿入内容を定義します。

62.8.10 高度なURLリライト

この項では、ページレット・プロデューサの自動ログイン機能を使用する方法、およびカスタム・パーサーを設計する方法について説明します。

この項には次のサブセクションが含まれます:

- 第62.8.10.1項「自動ログインの使用」

- 第62.8.10.2項「カスタム・パーサーの使用」

62.8.10.1 自動ログインの使用

自動ログインを使用すると、ユーザー名およびパスワード資格証明をバックエンド・リソースに渡すことができます。これらは、次のいずれかのものとして渡すことができます。

- 静的な資格証明: すべてのユーザーに1つのセット

- リソースへの初回アクセス時にユーザーから動的に取得し、セキュアな資格証明ボールトに格納

- ユーザー・プロファイル(ユーザー名を取得して渡す)

自動ログインでサポートされる認証メカニズムは、次のとおりです。

- 基本ログイン

- フォーム・ログイン(次の例で使用)

- NTLMログイン

- Kerberosログイン

図62-65の例と、次のコード・スニペットは、自動ログインを使用してログイン・ページをリダイレクトする方法を示しています。

図62-65 ページレット・プロデューサ - 自動ログインの例

次のコードは、図62-65の設定を反映しています。

<form action="wwv_flow.accept" method="post" name="wwv_flow" id="wwvFlowForm" autocomplete="off">
<input type="hidden" name="p_flow_id" value="53557" id="pFlowId" />
<input type="hidden" name="p_flow_step_id" value="101" id="pFlowStepId" />
<input type="hidden" name="p_instance" value="724836084846701" id="pInstance" />
<input type="hidden" name="p_page_submission_id" value="1431956852758801" id="pPageSubmissionId" />
<input type="hidden" name="p_request" value="" id="pRequest" />
<div id="login"> <div id="messages"></div> <div id="login-main">
<table id="myapp_layout_45149677586857064102" border="0" class="formlayout" summary="" role="presentation" datatable=0 >
<tr><td align="right"><label for="P101_USERNAME" tabindex="999"><a class="optional-w-help" href="javascript:popupFieldHelp('45149677686365064111','724836084846701')"
tabindex="999">
User Name</a></label></td> <td colspan="1" rowspan="1" align="left"><input
type="hidden" name="p_arg_names" value="45149677686365064111" /><input type="text"
id="P101_USERNAME" name="p_t01" value="" size="20" maxlength="100" class="text_
field" /></td></tr><tr><td align="right"><label for="P101_PASSWORD"
tabindex="999"><a class="optional-w-help" href="javascript:popupFieldHelp('45149677888869064121','724836084846701')"
tabindex="999">Password</a></label></td> <td colspan="1" rowspan="1"
align="left"><input type="hidden" name="p_arg_names" value="45149677888869064121"/>
<input type="password" name="p_t02" size="20" maxlength="100" value="" id="P101_
PASSWORD" class="password" onkeypress="return submitEnter(this,event)" />
<input type="button" value="Login"onclick="myapp.submit('LOGIN');" id="P101_LOGIN" />
</td></tr> </table> Please refer to "Using Myapp" in the Myapp User's Guide for more information.</div>
</div> <input type="hidden" name="p_md5_checksum" value="" /><input type="hidden"
name="p_page_checksum" value="D95DBE8607E971820E98E93FC0EC064E" /></form>

62.8.10.2 カスタム・パーサーの使用

パーサーを使用すると、URL解析の組込みロジックを拡張または変更できます。URLフィルタと正規表現を使用すると、ページ内でパーサーによって変更される部分を絞り込むことができます(図62-66)。

図62-66 ページレット・プロデューサ - カスタム・パーサーの例

正規表現を使用すると、解析するHTMLフラグメントを指定できます。カッコで囲まれた最初のグループ化表現はフラグメントを識別し、残りの表現はそれを検索するためのコンテキストを提供します。プラガブル・パーサー・フレームワークを使用すると、プロキシが様々なタイプのコンテンツを、MIMEタイプ、HTTPヘッダーまたはURLに基づいてどのように認識するかを微調整できます。

この例では、Flashを動作させるために、ページ・マークアップ内の2つの場所にある3つのURLを変更する必要があります。

<embed src=" /i/flashchart/anychart_5/swf/OracleAnyChart.swf?
XMLFile=http://example.com/pls/myapp/myapp_
util.flash?p=53557:1:74175370346201:FLOW_FLASH_CHART5_R45192463162785599619_en"
<param name="movie" value="/i/flashchart/anychart_5/swf/AnyChart.swf?
XMLFile=http://example.com/pls/myapp/myapp_
util.flash?p=53557:1:74175370346201:FLOW_FLASH_CHART5_R45192463162785599619_en"

これを行うには、次の3つの正規表現(図62-66の「正規表現」の下)を使用します。

- XMLFile=(.*?)"

- param name="movie" value="(.*?\.swf)

- embed src="(.*?\.swf)

62.9 ページレットのトラブルシューティング

リソースとページレットをトラブルシューティングする際には、次の一般的な構成エラーに注意してください。ページレット・プロデューサ設定の構成の詳細は、第62.2項「ページレット・プロデューサ設定の構成」を参照してください。

- SSLを使用する場合、ページレット・プロデューサ設定の「変換」ページで、HTTP (セキュアでない)およびHTTPS (セキュア)ポートが適切に構成されていることを確認してください。

- HTTPプロキシを必要とするネットワーク上の外部サイトをプロキシする場合、ページレット・プロデューサ設定の「プロキシ」ページで、プロキシURLを構成する必要があります。

- デフォルトで作成されるlogin_resourceおよびpagelet_apiリソースが存在し、適切に構成されていることを確認してください。

- KDブラウザや他のCSPページレットをプロキシする場合、ページレット・プロデューサ設定の「CSP」ページで、イメージ・サービスのURLが絶対URLであることと、CSP SOAP APIのURLが正しく設定されていることを確認してください。

- Sun Java仮想マシン(JVM)の制限により、ページレットでは、基になる証明書によってMD2署名アルゴリズムが使用される場合、HTTPSコンテンツを使用できません。

その他のトラブルシューティング情報を確認するには、ロギングを使用します。ページレット・プロデューサは、標準のOracle Diagnostic Loggingファシリティにメッセージのログを記録します。Oracle WebLogic Serverの場合、その場所はuser-projects/domains/<domain>/servers/ <server>/logs/<server>-diagnostic.logです。ロギングの構成の詳細は、第62.2.2項「ロギング設定の構成」を参照してください。ページレットのデバッグの詳細は、『Oracle Fusion Middleware Oracle WebCenter PortalおよびOracle Jdeveloperでのポータルの開発』の「Oracle WebCenter Portalのページレット・プロデューサによるページレットの作成」の章を参照してください。

63 ポートレットの消費

この章では、WebCenter Portal Frameworkアプリケーションのページにポートレットを追加する方法およびこのプロセスに付随するオプションについて説明します。

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

- 第63.1項「ポートレットの消費の概要」

- 第63.2項「WebCenter Portal Frameworkアプリケーションへのポートレット・プロデューサの登録」

- 第63.3項「ポートレット・プロデューサの接続の管理」

- 第63.4項「ポートレット・プロデューサ・タスク・フローの追加」

- 63.5項「ページへのポートレットの追加」

- 第63.6項「ポートレット・タグの属性値の設定」

- 第63.7項「JSR 286ポートレットでのパラメータとイベントの手動によるワイヤリング」

- 第63.8項「ポートレットのコピー」

- 63.9項「アプリケーション・ページからのポートレットの削除」

- 第63.10項「WebCenterサービス・ポートレットの消費」

- 第63.11項「ポートレットのトラブルシューティング」

この章では、Oracle JDeveloperまたはOracle ADFページの特性の基本については説明しません。Portal Frameworkアプリケーション・ページに固有のページ作成に関してのみ説明します。したがって、この章をお読みになる前に、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』の内容に精通しておいてください。

Portal Frameworkアプリケーション・ページで消費可能なポートレットの作成の詳細は、次に示す章を参照してください。

- 第57章「ポートレットの概要」

- 第58章「Oracle JSF Portlet Bridgeを使用したJSFアプリケーションからのポートレットの作成」

- 第59章「JSR 286を使用した標準ベースのJavaポートレットの作成」

63.1 ポートレットの消費の概要

Oracle WebCenter Portal Frameworkでは、ポートレット・プロデューサをアプリケーションに登録することにより、ポートレットを消費できます。アプリケーションでは、(パッケージ・アプリケーションのベンダーなどの)サード・パーティから入手したポートレットおよび自分で構築したポートレットを消費できます。

ポートレット・プロデューサは、次の2つの方法で登録できます。

- 特定のアプリケーションにポートレット・プロデューサを登録します。このオプションは、他のアプリケーションにそのプロデューサを登録する可能性がない場合に使用します。

- 「リソース・パレット」を使用してポートレット・プロデューサを登録します。このオプションは、複数のアプリケーションにそのプロデューサのポートレットを使用する場合に使用します。

「リソース・パレット」で使用可能なポートレットは、他のコンポーネントの場合と同様にそれをページ上にドロップすることで、任意のPortal Frameworkアプリケーションに追加できます。「リソース・パレット」からポートレットを追加すると、そのプロデューサがアプリケーションにまだ登録されていない場合は、そのプロデューサがアプリケーションに登録されます。アプリケーション・ナビゲータの「アプリケーション・リソース」パネルに、「リソース・パレット」からプロデューサ接続全体をドラッグ・アンド・ドロップすることもできます。これにより、プロデューサがアプリケーションに登録されます。かわりに、「リソース・パレット」でプロデューサを右クリックし、ポップアップ・メニューから「アプリケーションに追加」を選択して、現在開いているアプリケーションにプロデューサを登録できます。

JDeveloperは、WSRPプロデューサとOracle PDK-Javaプロデューサの両方を登録するためのウィザードを備えています。

注意:

アプリケーションがソース・コントロールされている場合、プロデューサの登録中に作成されたすべての新しいファイルに対してソース・コントロール・システムに要素を手動で作成する必要があります。すでにソース・コントロールされているファイルはすべて、プロデューサ登録プロセスによって自動的にチェックアウトされます。

ポートレットの消費に関連するオプションは数多くあります。たとえば、ポートレットをページに直接配置するか、コンポーザ・コンポーネント内にそれらをネストするかを選択できます。また、ポートレット・タグの多くの属性は調整でき、複数のポートレットを互いに連結することもできます。

63.2 WebCenter Portal Frameworkアプリケーションへのポートレット・プロデューサの登録

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

- 第63.2.1項「WebCenter Portal FrameworkアプリケーションへのWSRPポートレット・プロデューサの登録」

- 第63.2.2項「WebCenter Portal FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」

63.2.1 WebCenter Portal FrameworkアプリケーションへのWSRPポートレット・プロデューサの登録

WSRPポートレット・プロデューサを登録する場合、プロデューサの操作パラメータを指定する基本情報を設定します。ポートレットを消費するアプリケーションは、プロデューサと通信したり、プロデューサを介してポートレットと通信するときに、この情報を使用します。

WebCenter Portal Frameworkでは、WSRP 1.0とWSRP 2.0の両方のプロデューサがサポートされています。WSRP 2.0標準では特に、ポートレット間の通信およびポートレット・カスタマイズのエクスポートおよびインポートがサポートされます。標準ベースのJSR 286ポートレットを構築しながら、WSRP 2.0のメリットを活用できます。

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

- 第63.2.1.1項「WSRPポートレット・プロデューサの登録方法」

- 第63.2.1.2項「アプリケーションの定義済Java EEセキュリティ・ロールに対するプロデューサの宣言済ユーザー・カテゴリのマップ方法」

63.2.1.1 WSRPポートレット・プロデューサの登録方法

WSRPポートレット・プロデューサの登録ウィザードは、WSRP 1.0および2.0の両方のプロデューサを登録するための入口です。登録に成功すると、接続を作成した場所に応じて、新しく登録されたプロデューサがJDeveloperでアプリケーション・ナビゲータの「アプリケーション・リソース」パネルか、「リソース・パレット」に表示されます。その後、プロデューサからポートレットを選択してアプリケーション(.jspx)ページに配置できます。

注意:

Oracle WebLogic Portalによって提供されるプロデューサを登録し、そのポートレットでADFリッチ・コンポーネントを使用する場合、WSRP 2.0 WSDL URLを登録し、ポートレットが適切に機能するようにする必要があります。

また、WSRPポートレット・プロデューサの登録ウィザードを使用して、ポートレット化したJSFアプリケーションまたはポートレット化したADFタスク・フローであるJSFポートレットを登録します。JSFアプリケーションからポートレットを作成したら、ポートレットをWLSインスタンスにデプロイし、WSRPポートレット・プロデューサを登録する場合と同じようにそのJSFポートレット・プロデューサを登録できます。Oracle JSF Portlet Bridgeによって、JSFアプリケーションおよびタスク・フローがJSR 286ポートレットとして公開されます。詳細は、第58章「Oracle JSF Portlet Bridgeを使用したJSFアプリケーションからのポートレットの作成」を参照してください。

WSRPポートレット・プロデューサを登録するには:

注意:

WSRPポートレット・プロデューサの登録ウィザードで、「終了」をクリックした後に「取消」をクリックしてもその登録は取り消されません。

1. アプリケーション・ナビゲータの「アプリケーション・リソース」パネルで、「接続」を右クリックし、「接続の作成」→「WSRPプロデューサ」を選択します。

2. WSRPポートレット・プロデューサの登録ウィザードの「プロデューサ名の指定」ページで、ウィザードで選択したものに応じて「接続の作成」オプションが選択されています。デフォルトの選択は、アプリケーションからウィザードを起動した場合は「アプリケーション・リソース」、「リソース・パレット」からウィザードを起動した場合は「リソース・パレット」です。このオプションは、この時点で変更できます。

3. 「ターゲット・プロジェクト」ドロップダウン・リストから、WSRPプロデューサ接続に対して構成するプロジェクトを選択します。
これは、ポートレットを消費する予定のものと同じプロジェクトです。

このオプションは、アプリケーション・ナビゲータからウィザードを起動した場合にのみ変更できます。

4. 「プロデューサ登録名」フィールドで、すべての接続の中で一意であるプロデューサ登録の名前を入力し、「次」をクリックします。

5. 「接続詳細の指定」ページの「WSDL URL」フィールドで、プロデューサのURLを入力します。
構文は、WSRP実装に応じて異なります。たとえば、サンプルWSRPプロデューサでは次の構文を使用します。

- http://host:port/context-root/portlets/wsrp1?WSDL

- http://host:port/context-root/portlets/wsrp2?WSDL

- http://host:port/context-root/portlets?WSDL (後方互換性のためのWSRP 1.0)

ここで:

- hostは、プロデューザがデプロイされているサーバーです。

- portは、サーバーがHTTPリクエストをリスニングするポートです。

- context-rootは、Webアプリケーションのコンテキスト・ルートです。

- portlets[/wsrp(1|2)]?WSDLは静的テキストです。ここに入力するテキストは、プロデューサがデプロイされている方法によって異なります。

例:

http://myhost.example.com:7101/portletapp/portlets/wsrp2?WSDL

プロデューサ・テスト・ページには、次のURLを介してアクセスできます。

http://host:port/context-root/info

6. アプリケーションとプロデューサがファイアウォールで区切られている場合、HTTPプロキシが、アプリケーションとプロデューサ間の通信に必要です。ご使用のアプリケーションがこれに該当する場合、「プロデューサへの連絡にプロキシを使用」を選択し、プロキシのURLおよびポート番号を指定します。

注意:

この手順のプロキシ・フィールドは、デフォルトでJDeveloperの「プリファレンス」で設定されているプロキシ・プリファレンス(メイン・メニューから「ツール」→「プリファレンス」→「Webブラウザとプロキシ」を選択)になります。

7. 「次へ」をクリックします。
プロデューサへの接続がテストされます。問題がある場合、エラー・メッセージが表示されます。続行する前に問題をすべて解決する必要があります。

8. 「追加登録詳細の指定」ページの「デフォルト・タイムアウト間隔」(秒単位)フィールドに、デザインタイム操作中にプロデューサのレスポンスがあるまで待機する秒数を入力します。
プロデューサによっては、追加の登録プロパティを定義します。そのような場合、ウィザードのこのページの表にそれらのプロパティが表示されます。表のこれらの追加プロパティに対して値を入力できます。これらのプロパティはプロデューサに固有であり、登録時にのみ使用されます。つまり、コンシューマ・アプリケーションによりプロデューサに送信される情報を登録時に収集すると、プロデューサによってコンシューマに対してこの情報が格納され、以降は使用されます。

9. 「リソース・パレット」でプロデューサを登録している場合、「終了」をクリックして登録を完了します。
「アプリケーション・リソース」パネルでプロデューサを登録していて、プロデューサ(およびその結果、そのポートレット)にアクセスするたびに認証をリクエストする予定である場合、「次へ」をクリックして、次の残りの手順を続行します。セキュリティを構成しない場合は、「終了」をクリックします。

プロデューサがユーザー・カテゴリを宣言する場合は、「終了」をクリックすると、「WSRPポートレット・プロデューサの登録」ダイアログが表示されます。「はい」をクリックして、第63.2.1.2項「アプリケーションの定義済Java EEセキュリティ・ロールに対するプロデューサの宣言済ユーザー・カテゴリのマップ方法」を参照してください。この機会を拒否して登録プロセスを完了するには、「いいえ」をクリックします。

注意:

この時点でセキュリティ・ロールへのユーザー・カテゴリのマップを拒否する場合、後でプロデューサ登録を編集することでそれを実行できます。

10. 「セキュリティ属性の構成」ページで、「トークン・プロファイル」ドロップダウン・リストから、WSRPプロデューサでの認証に使用するトークン・プロファイルのタイプを選択します。

- なし - トークンなし。WS-SecurityヘッダーはSOAPメッセージにアタッチされません。
このオプションを選択する場合、ウィザードの残りの部分を完了しないことになります。「終了」をクリックします。

- メッセージ整合性付きWSS 1.0 SAMLトークン - WS-Security 1.0標準に従って、アウトバウンドSOAPメッセージのメッセージ・レベルの整合性保護と、SAMLベースの認証を提供します。SOAPメッセージに含まれているSAMLトークンは、送信者保証確認を使用したSAMLベースの認証で使用されます。このポリシーでは、WS-Securityの非対称鍵テクノロジのBasic 128スイートと、メッセージ整合性のためにSHA-1ハッシュ・アルゴリズムが使用されます。

- メッセージ保護付きWSS 1.0 SAMLトークン - WS-Security 1.0標準に従ったアウトバウンドSOAPリクエストに対するメッセージ・レベルの保護(整合性と機密保護)およびSAMLベースの認証を提供します。Webサービス・コンシューマにはSOAPヘッダーのSAMLトークンが含まれ、確認タイプはsender-vouchesです。このポリシーでは、WS-SecurityのBasic 128スイートの非対称鍵テクノロジが使用されます。具体的には、メッセージ機密保護のためのRSA鍵メカニズム、メッセージ整合性のためのSHA-1ハッシュ・アルゴリズム、およびAESの128ビット暗号化が使用されます。
このポリシーを選択する場合は、「受信者の別名」も指定する必要があります。

- WSS1.0ユーザー名トークン(パスワードなし) - WS-Security v1.0標準に従ったアウトバウンドSOAPリクエストに対して、証明書ベースのメッセージ保護とともにパスワード付きユーザー名トークン・プロファイル・ベースのアイデンティティ伝播を提供します。プレーン・テキストとダイジェスト・メカニズムの両方がサポートされています。このポリシーは、WS-Securityの非対称キー・テクノロジのBasic128スイートを使用します。具体的には、メッセージ機密保護のためのRSA鍵メカニズム、メッセージ整合性のためのSHA-1ハッシュ・アルゴリズムおよびAES-128ビット暗号化が使用されます。
このトークン・プロファイルは、WSRPプロデューサに異なるアイデンティティ・ストアがある場合に使用します。このプロデューサには、プロデューサに関連する外部アプリケーションを定義して関連付ける必要があります。ここで定義される外部アプリケーションは、ユーザー資格証明を取得し、プロデューサに伝播するために使用されます。プロデューサは、これを外部アプリケーションに対して構成されたアイデンティティ・ストアで検証します。

このポリシーを選択する場合は、「受信者の別名」も指定する必要があります。

- WSS1.0ユーザー名トークン(パスワードあり) - WS-Security 1.0標準に従ったアウトバウンドSOAPリクエストに対して、証明書ベースのメッセージ保護とともにパスワード付きユーザー名トークン・プロファイル・ベースのアイデンティティ伝播を提供します。資格証明(ユーザー名のみ)は、WS-Security UsernameTokenヘッダーを通じてアウトバウンドSOAPリクエスト・メッセージに含められます。パスワードは含められません。メッセージ保護は、WS-Security 1.0の非対称鍵テクノロジのBasic128スイートを使用して行われます。具体的には、メッセージ機密保護のためのRSA鍵メカニズム、メッセージ整合性のためのSHA-1ハッシュ・アルゴリズム、およびAESの128ビット暗号化が使用されます。
このポリシーを選択する場合は、「受信者の別名」も指定する必要があります。

- WSS 1.0 SAMLトークン - WS-Security 1.0標準に従ったアウトバウンドSOAPリクエスト・メッセージに対してSAMLベース認証を提供します。ポリシーは、ユーザー・アイデンティティを伝播し、通常はメッセージ保護と整合性チェックが不要な部門内デプロイメントに使用されます。
このポリシーには、キーストローク構成は不要です。

- メッセージ保護付きWSS 1.1 SAMLトークン - WS-Security 1.1標準に従ったアウトバウンドSOAPリクエストに対するメッセージ・レベルの保護(整合性と機密保護)およびSAMLトークンの移入を提供します。SOAPメッセージに含まれているSAMLトークンは、送信者保証確認を使用したSAMLベースの認証で使用されます。このポリシーでは、署名と暗号化に対称鍵テクノロジが使用され、署名の裏書きにはWS-SecurityのBasic128スイートの非対称鍵テクノロジが使用されます。

11. 次の構成タイプから選択します。

- デフォルト - デフォルトを選択した場合、すべてのデフォルト・キーストア属性(場所、パスワード、キーストア・タイプ、署名キーおよび別名、暗号化鍵および別名)は、JPS (Java Platform Security)構成から取得されます。「受信者の別名」の値は、使用されているポリシーから取得されます。アプリケーションがデプロイされているWebLogic Serverは、WS-Security用に構成されている必要があります。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のWS-SecurityによるWSRPプロデューサの保護に関する項を参照してください。

- カスタム - このオプションを選択する場合、ウィザードの次のページで適切なキーストア属性を入力する必要があります。

12. 「デフォルト・ユーザー」フィールドに、ユーザーがPortal Frameworkアプリケーションに対して認証されていないときにリモート・プロデューサにアサートするユーザー名を入力します。
認証されていない場合は、anonymousというアイデンティティがアプリケーション・ユーザーに関連付けられます。OWSMでは、現時点では匿名アイデンティティの伝播はサポートされていないため、ここではかわりのアイデンティティを指定する必要があります。ただし、この場合は、Portal Frameworkアプリケーションがユーザーを認証していないため、指定するデフォルト・ユーザーはリモート・プロデューサで、権限の低いユーザー(パブリック・コンテンツの表示に使用するのに適したアイデンティティ)になることに注意してください。たとえば、この目的でアイデンティティ・ストアにゲスト・アカウントを作成できます。ユーザーがアプリケーションで認証されている場合、デフォルト・ユーザーではなくそのユーザーのアイデンティティがアサートされます。

注意:

「デフォルト・ユーザー」を指定する場合、この情報を受け入れるようにリモート・プロデューサを設定する必要があります。

「ユーザー名トークン(パスワードあり)」を選択した場合、「デフォルト・ユーザー」ディレクトリは表示されません。

13. 「発行者名」フィールドに、SAMLトークンの発行者名(www.oracle.comなど)を入力します。
このフィールドは、「トークン・プロファイル」ドロップダウン・リストから「SAMLトークン」オプションを選択し、「構成」オプションから「カスタム」を選択した場合にのみ表示されます。発行者名は、サブジェクトの検証を保証する証明エンティティです。

14. このプロデューサが外部アプリケーションに対する認証を提供する必要がある場合は、「プロデューサと外部アプリケーションとの関連付け」を選択し、アプリケーションを選択します。
詳細は、第74.13.3項「外部アプリケーションの管理」を参照してください。

このオプションは、「ユーザー名トークン(パスワードあり)」を選択した場合にのみ使用できます。

15. 「次へ」をクリックします。
構成オプションとして「デフォルト」を選択した場合、「キーストアの指定」ページのフィールドは無効化されます。「終了」をクリックして、登録を完了します。

プロデューサがユーザー・カテゴリを宣言する場合は、「終了」をクリックすると、「WSRPポートレット・プロデューサの登録」ダイアログが表示されます。「はい」をクリックして、第63.2.1.2項「アプリケーションの定義済Java EEセキュリティ・ロールに対するプロデューサの宣言済ユーザー・カテゴリのマップ方法」を参照してください。この機会を拒否して登録プロセスを完了するには、「いいえ」をクリックします。

16. 「キーストアの指定」ページの「ストア・パス」フィールドに、SOAPメッセージの一部(セキュリティ・トークンとSOAPメッセージ本体)を署名するために使用される証明書および秘密鍵が含まれるキーストアのフルパスを入力します。
フルパスがわからない場合は、「参照」をクリックして、そのファイルに移動して選択します。選択するファイルは、Java keytoolで作成されたキーストアです。

17. 「ストア・パスワード」フィールドで、キーストアを作成したときに設定したパスワードを指定します。
キーストア・パスワードは、移入先の「ストア・タイプ」フィールドおよび「署名鍵の別名」ドロップダウン・リストに対して正確である必要があります。

間違ったキーストア・パスまたはパスワードを入力すると、パスワードは無効で修正する必要があるというエラー・メッセージが表示されます。適切な値を指定するまで、この画面上の「ストア・パス」および「ストア・パスワード」以外のすべてのフィールドは無効になっています。

18. 適切なキーストア・パスおよびパスワードを指定した後、[Tab]キーを押すと、別のなアクティブなフィールド(たとえば、「ストア・パス」フィールド)に移動します。「ストア・タイプ」フィールドおよび「署名鍵の別名」ドロップダウン・リストに適切に移入されていることを確認します。

19. 「ストア・タイプ」の値はキーストアから読み取られ、常に編集不可能です。ストア・タイプは常にJKS (Java Key Store)です。

20. 「署名キーの別名」ドロップダウン・リストから、署名キーの別名を選択します。
「ストア・パスワード」フィールドに適切なパスワードを入力すると、リストに自動的に移入されます。「署名鍵の別名」は、署名に使用される秘密鍵に関連付けられている証明書の識別子です。指定されたキーストアで見つかったキーの別名は、リストで選択可能になります。署名に使用するキーの別名を選択してください。

21. 「署名鍵のパスワード」フィールドで、「署名鍵の別名」に指定した別名によって識別されるキーにアクセスするためのパスワードを指定します。

22. オプションで、「暗号化鍵の別名」ドロップダウン・リストから、暗号化鍵の別名を選択します。
「ストア・パスワード」フィールドに適切なパスワードを入力すると、リストに自動的に移入されます。指定されたキーストアで見つかったキーの別名は、リストで選択可能になります。暗号化に使用するものを選択します。

23. オプションで、「暗号化鍵のパスワード」フィールドで、「暗号化鍵の別名」に指定した別名によって識別されるキーにアクセスするためのパスワードを指定します。

24. 「受信者の別名」フィールドから、プロデューサの証明書と関連付けられたキーストア別名を選択し、「終了」をクリックします。
この資格証明は、プロデューサへのメッセージの暗号化に使用します。

このフィールドは、ウィザードの「セキュリティ属性の構成」ページで「メッセージ整合性付きSAMLトークン」を「トークン・プロファイル」として選択した場合は表示されません。

プロデューサがユーザー・カテゴリを宣言する場合は、「終了」をクリックすると、そのユーザー・カテゴリをJava EEロールにマップするかどうかを尋ねるダイアログが表示されます。「はい」をクリックして、第63.2.1.2項「アプリケーションの定義済Java EEセキュリティ・ロールに対するプロデューサの宣言済ユーザー・カテゴリのマップ方法」を参照してください。この機会を拒否して登録プロセスを完了するには、「いいえ」をクリックします。

63.2.1.2 アプリケーションの定義済Java EEセキュリティ・ロールに対するプロデューサの宣言済ユーザー・カテゴリのマップ方法

プロデューサで宣言するユーザー・カテゴリは、プロデューサに含まれるポートレットから導出されます。たとえば、規格に基づいたJavaポートレット(JSR 286)ウィザードで作成された1つ以上のJSR 286ポートレットがプロデューサに含まれる場合、ポートレット作成中に追加されたセキュリティ・ロールはすべて、プロデューサで宣言するユーザー・カテゴリに含められます。Java EEセキュリティ・ロールは、Portal Frameworkアプリケーションのweb.xmlファイルのプロパティを介して指定できます。

JSR 286ポートレットでのセキュリティ・ロールの詳細は、第74.17項「WS-Securityを使用したWSRPプロデューサを介するアイデンティティ伝播の保護」を参照してください。

この手順は、第63.2.1.1項「WSRPポートレット・プロデューサの登録方法」から続いています。

アプリケーション定義のJava EEセキュリティ・ロールでプロデューサが宣言したユーザー・カテゴリをマップするには:

1. WSRPポートレット・プロデューサの登録ウィザードで「終了」をクリックした後、その結果のダイアログで「はい」をクリックします。

2. 「ユーザー・カテゴリ」ダイアログで、「ユーザー・カテゴリ」ごとに、「J2EEセキュリティ・ロール」列の対応するフィールドをクリックします。
プロデューサ登録設定を編集するときは、「ユーザー・カテゴリ」ダイアログにもアクセスできます。詳細は、第63.3.1項「ポートレット・プロデューサ登録設定の編集方法」を参照してください。

3. 表示されるリストから、プロデューサのユーザー・カテゴリにマップするセキュリティ・ロールを選択します。

4. すべてのユーザー・カテゴリがマップされたら、「OK」をクリックします。

63.2.2 WebCenter Portal FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録

PDK-Javaポートレット・プロデューサを登録する場合、プロデューサの操作パラメータを指定する基本情報を設定します。ポートレットを消費するアプリケーションは、プロデューサと通信したり、プロデューサを介してポートレットと通信するときに、この情報を使用します。

登録に成功すると、接続を作成した場所に応じて、新しく登録されたプロデューサがJDeveloperでアプリケーション・ナビゲータの「アプリケーション・リソース」パネルか、「リソース・パレット」に表示されます。その後、プロデューサからポートレットを選択してアプリケーション(.jspx)ページに配置できます。

注意:

Oracle PDK-Javaポートレット・プロデューサの登録ウィザードで、「終了」をクリックした後に「取消」をクリックしてもその登録は取り消されません。

PDK-Javaポートレット・プロデューサを登録するには:

1. アプリケーション・ナビゲータの「アプリケーション・リソース」パネルで、「接続」を右クリックし、「接続の作成」→「Oracle PDK-Javaプロデューサ」を選択します。

2. Oracle PDK-Javaポートレット・プロデューサの登録ウィザードの「プロデューサ名の指定」ページで、ウィザードで選択したものに応じて「接続の作成」オプションが選択されています。デフォルトの選択は、アプリケーションからウィザードを起動した場合は「アプリケーション・リソース」、「リソース・パレット」からウィザードを起動した場合は「リソース・パレット」です。このオプションは、この時点で変更できます。

3. 「ターゲット・プロジェクト」ドロップダウン・リストから、PDK-Javaプロデューサ接続に対して構成するプロジェクトを選択します。
これは、ポートレットを消費する予定のものと同じプロジェクトです。

このオプションは、アプリケーション・ナビゲータからウィザードを起動した場合にのみ変更できます。

4. 「プロデューサ登録名」フィールドで、すべての接続の中で一意であるプロデューサ登録の名前を入力し、「次」をクリックします。

5. 「接続詳細の指定」ページの「URLエンドポイント」フィールドで、次の構文を使用してプロデューサのURLを入力します。

http://host:port/context-root/providers

ここで:

- hostは、プロデューザがデプロイされているサーバーです。

- portは、サーバーがHTTPリクエストをリスニングするポートです。

- context-rootは、Webアプリケーションのコンテキスト・ルートです。

- providersは静的テキストです。ここに入力するテキストは、プロデューサがデプロイされている方法によって異なります。

例:

http://myhost.example.com:7101/myEnterprisePortlets/providers

6. 「サービスID」フィールドに、このプロデューサの一意の識別子を入力します。
PDK-Javaでは、1つのアダプタ・サーブレットの下に複数のプロデューサをデプロイできます。これらのプロデューサは、それぞれ一意のサービスIDによって識別されます。サービスIDが必要になるのは、URLエンドポイントにサービスIDまたはプロデューサ名が追加されていない場合のみです。たとえば、次のURLエンドポイントにはsampleというサービスIDが必要です。

http://myhost:7101/myEnterprisePortlets/providers

しかし、次のURLエンドポイントにはサービスIDは不要です。

http://myhost:7101/myEnterprisePortlets/providers/sample

7. アプリケーションとプロデューサがファイアウォールで区切られている場合、HTTPプロキシが、アプリケーションとプロデューサ間の通信に必要です。ご使用のアプリケーションがこれに該当する場合、「プロデューサへの連絡にプロキシを使用」を選択し、プロキシのURLおよびポート番号を指定します。

注意:

この手順のプロキシ・フィールドは、デフォルトでJDeveloperの「プリファレンス」で設定されているプロキシ・プリファレンス(メイン・メニューから「ツール」→「プリファレンス」→「Webブラウザとプロキシ」を選択)になります。

8. このプロデューサが外部アプリケーションに対する認証を提供する必要がある場合は、「プロデューサと外部アプリケーションとの関連付け」を選択し、アプリケーションを選択します。
詳細は、第74.13.3項「外部アプリケーションの管理」を参照してください。

外部アプリケーションは個々のアプリケーションにスコープ設定されているため、このオプションは、アプリケーション・ナビゲータからウィザードを起動する場合にのみ使用できます。

9. 「プロデューサ・セッションの有効化」を選択して、プロデューサと消費するアプリケーションとの間のセッションを有効化します。
セッションが有効化されると、サーバーは、ユーザー名などのセッション固有の情報をメンテナンスします。メッセージ認証ではセッションが使用されるため、共有キーが設定されている場合は、このオプションも選択する必要があります。

プロデューサとサーバー間がセッションレス通信である場合は、このオプションを選択解除してください。

10. ウィザードのこの時点で、「終了」をクリックして登録を終了し、残りのすべての手順にデフォルト値を使用できます。
追加の詳細を指定するには、「次」をクリックし、残りの手順を続行します。

11. 「追加の詳細の指定」ページの「デフォルト・タイムアウト間隔」(秒単位)フィールドに、デザインタイム操作中にプロデューサのレスポンスがあるまで待機する秒数を入力します。

12. 「サブスクライバID」フィールドに、登録するプロデューサのコンシューマを識別する文字列を入力します。
プロデューサが登録されると、プロデューサのコールが送信されます。コール中、コンシューマは「サブスクライバID」の値をプロデューサに渡します。この値は、ポートレット・コールが行われるたびに渡されます。「サブスクライバID」がプロデューサの予測した値でない場合、プロデューサは登録コールを拒否することがあります。

注意:

最初の登録後にプロデューサ登録を編集して「サブスクライバID」を変更しても、何も影響を与えません。異なる「サブスクライバID」を指定するには、プロデューサを登録する必要があります。

13. 「共有キー」フィールドに、暗号化を処理するために設定されているプロデューサに使用する共有キーを入力し、「終了」をクリックします。
共有キーは、メッセージ認証用のメッセージ署名を生成するための暗号化アルゴリズムで使用されます。プロデューサを共有鍵で設定し、誤った共有鍵を入力した場合、プロデューサの登録は失敗することに注意してください。共有キーには、英数字10から20文字を含めることができます。

63.3 ポートレット・プロデューサの接続の管理

ポートレット・プロデューサを登録した後、登録設定を編集、接続をテスト、プロデューサをリフレッシュして最新のポートレットのリストを取得、またはポートレット・プロデューサへの接続を削除できます。

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

- 第63.3.1項「ポートレット・プロデューサ登録設定の編集方法」

- 第63.3.2項「ポートレット・プロデューサ接続のテスト方法」

- 第63.3.3項「ポートレット・プロデューサのリフレッシュ方法」

- 第63.3.4項「ポートレット・プロデューサの削除方法」

- 第63.3.5項「ポートレット・クライアント構成を編集する方法」

63.3.1 ポートレット・プロデューサ登録設定の編集方法

WSRPポートレット・プロデューサの登録ウィザードと「PDK-Javaポートレット・プロデューサの登録」ウィザードではいずれも、プロデューサを登録したとき入力した値の多くをアクセスおよび修正できます。

ポートレット・プロデューサの登録設定を編集するには:

1. アプリケーション・ナビゲータの「アプリケーション・リソース」パネルまたは「リソース・パレット」でそのプロデューサに移動します。

2. 編集するプロデューサを右クリックし、「プロパティ」を選択します。

3. 必要に応じてプロデューサ登録プロパティを編集し、「次へ」をクリックして、ウィザードの各ページの手順を実行します。
ウィザードの左側にあるナビゲーション・パネル内のリンクをクリックすることで、特定の手順に直接進むこともできます。

- WSRPプロデューサの設定の詳細は、第63.2.1項「WebCenter Portal FrameworkアプリケーションへのWSRPポートレット・プロデューサの登録」を参照してください。

- Oracle PDK-Javaプロデューサの設定の詳細は、第63.2.2項「WebCenter Portal FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。

「プロデューサ登録名」を編集することはできません。

4. 必要な設定をすべて変更したら、「終了」をクリックします。

5. 「WSDL URL」、「URLエンドポイント」など、いくつかのプロパティの編集では、プロデューサのリフレッシュが必要です。そのような変更を実行して、プロデューサをただちにリフレッシュできるダイアログが表示された場合、変更を保存します。ただし、プロデューサをリフレッシュしないでください。リフレッシュすると、プロデューサの登録を編集するためのウィザードに戻ります。必要に応じて、「はい」、「いいえ」、または「取消」をクリックします。

注意:

「WSDL URL」フィールドの値は編集できますが、別のプロデューサを指定できるのは、新しいプロデューサが古いプロデューサのプリファレンス・ストアにアクセスできる場合、または古いプロデューサのプリファレンス・ストアが新しいプロデューサのそれに移行済である場合のみです。

6. プロデューサが正常にリフレッシュされたら、必要に応じて「OK」をクリックします。

7. 編集を完了した後は、プロデューサ接続をテストして、接続情報が有効であるか確認することを考慮してください。詳細は、第63.3.2項「ポートレット・プロデューサ接続のテスト方法」を参照してください。

63.3.2 ポートレット・プロデューサ接続のテスト方法

接続テスト機能には、ポートレット・プロデューサ接続の有効性をテストする手段が備わっています。

ポートレット・プロデューサ接続をテストするには:

1. アプリケーション・ナビゲータの「アプリケーション・リソース」パネルまたは「リソース・パレット」でそのプロデューサに移動します。

2. テストするプロデューサを右クリックし、「プロデューサ接続のテスト」を選択します。

3. テストの実行中は、プログレス・バーが表示されます。テストが完了すると、成功または失敗ダイアログが表示されます。「「OK」」をクリックしてダイアログを閉じます。
失敗ダイアログが表示された場合、プロデューサ登録詳細を編集し、プロデューサ接続を再テストしてください。さらに、特に失敗ダイアログの表示に長時間かかる場合、プロデューサが使用可能であることを確認してください。たとえば、プロデューサが統合WLSを介して提供されている場合は、統合WLSが実行されていることを確認してから接続を再テストしてください。

63.3.3 ポートレット・プロデューサのリフレッシュ方法

ポートレット・プロデューサをリフレッシュすると、そのプロデューサに属するポートレットもリフレッシュされます。新しく追加されたポートレットや、既存のポートレットに対する更新内容が、このプロデューサに属するポートレットを消費しているアプリケーションに対して使用可能になります。

ヒント:

ポートレットがプロデューサから削除された場合は、必ず、ポートレットが配置されているすべてのアプリケーション・ページからそのポートレットを手動で削除してください。詳細は、63.9項「アプリケーション・ページからのポートレットの削除」を参照してください。

ポートレット・プロデューサをリフレッシュするには:

1. アプリケーション・ナビゲータの「アプリケーション・リソース」パネルまたは「リソース・パレット」でそのプロデューサに移動します。

2. リフレッシュするプロデューサを右クリックし、「プロデューサ登録のリフレッシュ」を選択します。

3. 「ポートレット・プロデューサのリフレッシュ」ダイアログ・ボックスで、「はい」をクリックします。

63.3.4 ポートレット・プロデューサの削除方法

特定のプロデューサをアプリケーションで使用しなくなった場合は、そのプロデューサを削除できます。ポートレットおよび関連するページ変数の削除の詳細は、第63.9項「アプリケーション・ページからのポートレットの削除」を参照してください。

注意:

プロデューサを削除すると、そのプロデューサに属するポートレットを消費するページには、ポートレットが使用できないことを示すエラー・メッセージが表示されます。同じ名前を使用してそのプロデューサを再登録するしても、ポートレットは依然として使用できません。

ポートレット・プロデューサを削除するには:

1. アプリケーション・ナビゲータの「アプリケーション・リソース」パネルまたは「リソース・パレット」でそのプロデューサに移動します。

2. 削除するプロデューサを右クリックして「削除」を選択します。

3. 「削除の確認」ダイアログで「はい」をクリックします。

63.3.5 ポートレット・クライアント構成を編集する方法

adf-config.xmlファイルには、WebCenter Portalのツールとサービスの構成情報が含まれています。タイムアウトやキャッシュの設定など、ポートレット・クライアント構成の詳細は、ファイルのadf-portlet-configセクション内に指定されています。

アプリケーションのadf-config.xmlファイルを編集し、ポートレット・クライアント構成を編集できます。

注意:

adf-config.xmlファイルを編集する場合は、変更を加えた後、アプリケーションを再デプロイする必要があります。

表63-1は、adf-portlet-configの子要素について説明しています。最初の列のinit-param名は、Webアダプタを介してポートレットにアクセスするときに使用されるサーブレットinit-paramsの名前に対応します。

表63-1 adf-portlet-configの子要素

要素(init-param)

説明

デフォルト値

parallelPoolSize (parallel.pool.size)

タスクのパラレル実行のために使用するスレッド数。

10

parallelQueueSize (parallel.queue.size)

パラレル実行を待つタスクのキューのサイズ。キュー・サイズを超過すると、タスクは拒否されます。

20

defaultTimeout (default.timeout)

プロデューサに対して作成されたリクエストのデフォルトのタイムアウト期間(秒)。この値は、ポートレットまたはプロデューサ・レベルでタイムアウトが定義されていない場合に使用されます。

10

minimumTimeout (minimum.timeout)

プロデューサに対して作成されたリクエストの最小タイムアウト期間(秒)。この値は、ポートレットまたはプロデューサにより指定されたタイムアウト期間に下限を設定する場合に使用されます。

0.1

maximumTimeout (maximum.timeout)

プロデューサに対して作成されたリクエストの最大タイムアウト期間(秒)。この値は、ポートレットまたはプロデューサにより指定されたタイムアウト期間に上限を設定する場合に使用されます。

300

resourceProxyPath (resource.proxy.path)

アプリケーションのコンテキスト・ルートを基準とした、リソース・プロキシ・サーブレットのベース・パス。ポートレット・マークアップ内のリソース・サーブレットへのリンクを作成するために使用されます。

/resourceproxy

supportedLocales (supported.locales)

次の形式の文字列を使用して定義される一連のサポート・ロケール。

language[_country[_variant]]

デフォルトではコメント・アウトされています。複数のロケールがある場合は、この要素を非コメント化します。例63-1を参照してください。

portletTechnologies (portlet.technologies)

クライアントでサポートされる、PortletTechnologyConfigインタフェースを実装するクラスの完全修飾名で定義された一連のポートレット・テクノロジ。

{o.p.c.ci.web.WebPortletTechnologyConfig, o.p.c.ci.wsrp.WSRPPortletTechnologyConfig}

cacheSettings (cache.*)

キャッシュ構成情報。キャッシュの有効化または無効化、キャッシュの最大サイズの定義、および様々なユーザーやサブスクライバに使用可能な領域の量に対する制限の設定に使用されます。

キャッシュは有効で、サイズ制限は設定されていません。

maximumResourceUrlLength (maximum.resource.url.length)

最大長はリソースURLに適用されます。これは、ポートレットがリソース・リクエストで多数のコンテキスト情報を渡す場合に、URLが長くなるのを防ぎます。2048文字よりも長いリソースURLは、一部のブラウザで問題が発生する場合があります。

リソースURLとしてエンコードされた情報がこの値を超える場合、ポートレット・クライアントは、セッションでこの情報を格納し、かわりに、そのセッションの属性へのキーをURLとしてエンコードします。ブラウザのキャッシュに悪影響を及ぼすことを回避するために、このキーは決定論的方法で計算されます。

2048

例63-1は、adf-config.xml内にあるadf-portlet-configセクションの使用方法を示しています。

例63-1 adf-config.xmlのadf-portlet-configセクション

<adf-portlet-config xmlns="http://xmlns.oracle.com/adf/portlet/config">
<supportedLocales>
<value>en</value>
<value>fr</value>
<value>de</value>
<value>es</value>
</supportedLocales>
<portletTechnologies>
<value>oracle.portlet.client.containerimpl.web.
WebPortletTechnologyConfig</value>
<value>oracle.portlet.client.containerimpl.wsrp.
WSRPPortletTechnologyConfig</value>
</portletTechnologies>
<defaultTimeout>20</defaultTimeout>
<minimumTimeout>1</minimumTimeout>
<maximumTimeout>300</maximumTimeout>
<resourceProxyPath>/portletresource</resourceProxyPath>
<cacheSettings>
<maxSize>10000000</maxSize>
<subscriber default="true">
<systemLevel>
<maxSize>5000000</maxSize>
</systemLevel>
<userLevel>
<maxSize>8000000</maxSize>
</userLevel>
</subscriber>
</cacheSettings>
</adf-portlet-config>

ヒント:

アプリケーションを再デプロイせず、実行時にポートレット・クライアント構成を編集するには、setPortletClientConfig WLSTコマンドを使用します。詳細は、『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』のsetPortletClientConfigに関する項を参照してください。

63.4 ポートレット・プロデューサ・タスク・フローの追加

ポートレット・プロデューサ・タスク・フロー(プロデューサ)によって、ユーザーは、実行時にポートレット・プロデューサ接続を管理できます。

WebCenter PortalのPortal Frameworkアプリケーション・テンプレートを使用して作成されたアプリケーションの場合、ポートレット・プロデューサ・タスク・フローは、ランタイム管理コンソール(「サービス」タブ)を使用してそのままで使用できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「Portal Frameworkアプリケーション用のサービス、ポートレット・プロデューサおよび外部アプリケーションの構成」の章を参照してください。

さらに、ポートレット・プロデューサ・タスク・フローは、他のタスク・フローと同様にアプリケーション・ページに追加できます。これは、WebCenter PortalのPortal Frameworkアプリケーション・テンプレートを使用しておらず、したがって、ランタイム管理コンソールがプロジェクトの一部ではない場合に特に便利です。プロデューサ・タスク・フローを介してポートレット・プロデューサ接続を管理または表示するには、次のような特別な権限が必要です。

- AppConnectionManager - このロールを持つユーザーは、実行時にポートレット・プロデューサ接続を登録、変更、および削除できます。

- AppConnectionViewer - このロールを持つユーザーは、実行時にポートレット・プロデューサ接続を表示できます。デフォルトでは、ログインしている(つまり、authenticated-userロールを持つ)ユーザーはすべて、このロールを付与されます。

デフォルトでは、Administratorロールを持つユーザーはポートレット・プロデューサを管理できます。他のユーザーがポートレット・プロデューサ・タスク・フローを介して接続を管理できるようにする場合は、彼らにAppConnectionManagerロールを付与する必要があります。

ポートレット・プロデューサ・タスク・フローを追加するには:

1. タスク・フローを追加するアプリケーション内で、JSFページを作成するか開きます。

2. リソース・パレットで「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。

3. 「リソース・パレット」から「プロデューサ」をドラッグし、それをaf:formタグ内のページにドロップします。

4. 必要に応じて、次のようにAppConnectionManagerロールを1人以上のテスト・ユーザーに付与します。

1. テスト・ユーザーTEST_PRODを追加します。

2. AppConnectionManagerロールを付与します。

ユーザーを追加してこのロールを付与する方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のテスト・ユーザーの作成に関する項を参照してください。

5. ページを保存し、実行します。管理者、または前の手順で定義したTEST_PRODユーザーとしてログインします。図63-1に示す画面が表示されます。

図63-1 ポートレット・プロデューサ・タスク・フロー

注意:

アプリケーション管理者は、実行時に、WebCenter Portal管理を介してユーザーにAppConnectionManagerおよびAppConnectionViewerのロールを付与できます(Oracle Fusion Middleware Oracle WebCenter Portalの管理のアプリケーション・ロールへのメンバーの追加に関する項を参照)。または、システム管理者は、Fusion Middleware Controlを通してAppConnectionManagerおよびAppConnectionViewerロールを付与できます(Oracle Fusion Middleware Oracle WebCenter Portalの管理のFusion Middleware Controlを使用したアプリケーション・ロールの付与に関する項を参照)。

63.5 ページへのポートレットの追加

Portal Frameworkアプリケーション・ページへのポートレットの配置は、「アプリケーション・リソース」パネルまたは「リソース・パレット」からポートレットをそのページにドラッグ・アンド・ドロップする簡単な操作で実行できます。

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

- 第63.5.1項「ページへのポートレットの追加方法」

- 第63.5.2項「ページへのポートレットの追加時の処理」

- 第63.5.3項「ポートレット間通信に関する必知事項」

- 第63.5.4項「インライン・フレームに関する必知事項」

- 第63.5.5項「ポートレットのサイズ設定に関する必知事項」

- 第63.5.6項「最小化、リストアおよび移動に関する必知事項」

- 第63.5.7項「実行時の処理」

始める前に

ページ上にポートレットを配置するには、この簡単な操作を実行する前に実行する必要があるいくつかの準備手順があります。次のような内容が含まれます。

1. Portal Frameworkアプリケーションの作成。詳細は、第6.1項「新しいWebCenter Portal Frameworkアプリケーションの作成」を参照してください。

2. アプリケーション・ページの作成。詳細は、第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」を参照してください。

3. アプリケーションへのポートレットのプロデューサの登録。詳細は、第63.2.1項「WebCenter Portal FrameworkアプリケーションへのWSRPポートレット・プロデューサの登録」または第63.2.2項「WebCenter Portal FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。

4. 消費しようとするポートレットの一部が、独自の認証を処理するアプリケーションに属していることがあります。このような場合は、アプリケーションを外部アプリケーションとして登録し、その提供元のポートレット・プロデューサに対して識別する必要があります。詳細は、第74章「WebCenter Portal Frameworkアプリケーションの保護」を参照してください。

5. 消費しようとするポートレットの一部が、Secure Socket Layer (SSL)対応のプロデューサに属していることもあります。SSL対応プロデューサにアクセスしようとすると、セキュリティ・アラート・ダイアログが表示され、プロデューサの証明書を表示して信頼できる証明書リストに追加するように要求されることがあります。セキュリティ・アラート・ダイアログが表示されるのは、プロデューサが、広く受け入れられていない認証局によって発行されたセキュリティ証明書を使用する場合のみです。このようなプロデューサからのポートレットを消費するには、まず、プロデューサのセキュリティ証明書をキーストアに追加する必要があります。詳細は、第74.14項「キーストアへのカスタム証明書の登録」を参照してください。

63.5.1 ページへのポートレットの追加方法

ページにポートレットを追加するには、アプリケーション・ナビゲータの「アプリケーション・リソース」パネルまたは「リソース・パレット」からそれをドラッグ・アンド・ドロップします。

ポートレットをページに追加するには:

1. アプリケーション・ナビゲータで、ポートレットの追加先のページ(.jspxファイル)が含まれているアプリケーションを開きます。

2. ページが含まれているプロジェクトを開きます。

3. ページを見つけ、それを右クリックし、「開く」を選択します。

ヒント:

ページをダブルクリックして開くこともできます。

4. アプリケーション・ナビゲータの「アプリケーション・リソース」パネルまたは「リソース・パレット」の「コネクション」ノードで、次のようにします。

- プロデューサがWSRPプロデューサである場合、「WSRPプロデューサ」ノードを開きます。

- プロデューサがPDK-Javaプロデューサである場合、「Oracle PDK-Javaプロデューサ」ノードを開きます。

5. ページに追加するポートレットが含まれるポートレット・プロデューサのノードを開きます。
選択したプロデューサの下に、そのプロデューサに含まれているすべてのポートレットがリストされます。

6. プロデューサ・ノードからページにポートレットを直接ドラッグします。
ページのフォーム上にポートレットをドラッグする必要があります。そのようにしない場合、ポートレットが含まれるフォームの作成を要求するダイアログが表示されます。次のいずれかを選択します。

- ADF Faces - フォーム - ページにリッチ・クライアント・コンポーネントが含まれる場合。これによって、af:formコンポーネントがページに追加されます。

- JSF HTML - フォーム - ページにHTMLコンポーネントが含まれている場合(たとえば、それがアップグレード済10.1.3.2ページである場合)。これによって、囲むドキュメント・タグに応じて、h:formまたはtr:formコンポーネントが、ページに追加されます。

「HTML - フォーム」は、ポートレットに対して無効であるため、選択しないでください。

注意:

Show Detail Frameコンポーネントの子コンポーネントとして、任意のOracle ADF Facesコンポーネントまたはタスク・フローを含めることができます。ただし、ポートレットは、Show Detail Frameコンポーネントによって提供されているものに類似したヘッダーを含んでおり、Panel Customizableコンポーネントに直接追加できます。Show Detail Frameコンポーネントにポートレットを含めることの利点はこれ以上ありません。

注意:

ポートレットをTrinidadコンポーネントとして、つまり、tr:formコンポーネント内に追加し、そのポートレットが表示モード以外のモードを実装する場合、アプリケーションのweb.xmlファイル内に次のものを含める必要があります。

<context-param>
<param-name>
oracle.adf.view.rich.newWindowDetect.OPTIONS
</param-name>
<param-value>off</param-value>
</context-param>

注意:

Portal FrameworkアプリケーションのページにPeopleSoftポートレットを追加する場合、renderPortletInIFrameポートレット・タグ属性をtrueに設定する必要があります。

詳細は、第63.6項「ポートレット・タグの属性値の設定」を参照してください。

63.5.2 ページへのポートレットの追加時の処理

ポートレットをページに追加すると、ポートレット・タグ(adfp:portletまたはadfph:portlet)がページ・ソースに追加されます。これは、ポートレット・コンポーネントを表すタグです。このタグに含まれている属性を「プロパティ・インスペクタ」を使用するかページ・ソースで編集することで、そのポートレットの動作および外観をさらに制御できます。これらの属性の詳細は、第63.6項「ポートレット・タグの属性値の設定」を参照してください。

使用するポートレット・タグのタイプは、次のものによって決まります。

- プロジェクトが、リッチ・クライアント・コンポーネントのみに対して構成されている場合は、adfp:portletタグが使用されます。

- プロジェクトが、Trinidadコンポーネントのみに対して構成されている場合は、adfph:portletタグが使用されます。

- プロジェクトが、リッチ・クライアント・コンポーネントとTrinidadコンポーネントの両方に対して構成されている場合は、adfp:portletタグが使用されます。

- プロジェクトが、リッチ・クライアントとTrinidadのどちらのコンポーネントに対しても構成されていない場合は、adfp:portletタグが使用され、プロジェクトはリッチ・クライアント・コンポーネントに対して自動的に構成されます。

これは、ポートレットのルック・アンド・フィールが、ページ上の他のコンポーネントのものと一致するようにするためです。たとえば、第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」の説明に従ってページを作成した場合、そのページはリッチ・クライアント・ページです。この場合、例63-2に示すように、ポートレットはadfp:portletタグを使用して追加されます。

例63-2 ポートレットが含まれているリッチ・クライアント・ページ

<?xml version='1.0' encoding='US-ASCII'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:adfp="http://xmlns.oracle.com/adf/faces/portlet">
<jsp:directive.page contentType="text/html;charset=US-ASCII"/>
<f:view>
<af:document>
<af:form>
<adfp:portlet value="#{bindings.Portlet11_1}"
id="portlet1"
renderPortletInIFrame="true"/>
</af:form>
</af:document>
</f:view>
</jsp:root>

アップグレード済10.1.3.2アプリケーションまたはTrinidadコンポーネントが含まれるアプリケーションを使用している場合、そのアプリケーションでは、リッチ・クライアント・コンポーネントではなく、HTMLコンポーネントが使用されます。この場合、例63-3に示すように、ページ上にポートレットをドラッグすると、adfph:portletタグが使用されます。

例63-3 ポートレットを含むTrinidadページ

<?xml version='1.0' encoding='US-ASCII'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:tr="http://myfaces.apache.org/trinidad"
xmlns:adfph="http://xmlns.oracle.com/adf/faces/portlet/html">
<jsp:directive.page contentType="text/html;charset=US-ASCII"/>
<f:view>
<tr:document title="Title 1">
<tr:form>
<adfph:portlet value="#{bindings.Portlet12_1}"
id="portlet1"/>
</tr:form>
</tr:document>
</f:view>
</jsp:root>

アプリケーション・ページに1つ以上のコンポーザ・コンポーネントが含まれている場合は、これがポートレットの配置場所に影響を与えることがあります。たとえば、「構造」パネルで、cust:panelCustomizableタグを含むページに配置されているポートレットは、例63-4のように配置されます。

例63-4 ポートレット・タグの階層配置

af:document
af:form
cust:panelCustomizable
adfp:portlet

注意:

ADF Facesリッチ・クライアント・コンポーネントとHTMLまたはTrinidadコンポーネントを同じページ上に混在させないことをお薦めします。そのようにすると、実行時に予期しない結果になることがあります。したがって、コンポーザHTMLコンポーネント内にリッチ・クライアント・ポートレットを配置したり、コンポーザ・リッチ・クライアント・コンポーネント内にHTMLポートレットを配置しないでください。

コンポーザ・タグの詳細は、第18章「コンポーザを使用したページの実行時編集の有効化」を参照してください。

注意:

OmniPortletのインスタンスをページ上にドロップする場合、プロパティ・インスペクタを開き、「表示モード」カテゴリの下のAllModesSharedScreenプロパティがfalse(デフォルト値)に設定されていることを確認します。このプロパティをtrueを設定すると、OmniPortletウィザードでOmniPortletの特定のセクションを編集できなくなることがあります。

63.5.3 ポートレット間通信に関する必知事項

WebCenter Portal Frameworkアプリケーションのインタラクティブ性を高める1つの方法として、関連するコンポーネントをリンクして、これらのコンテンツをコンテキストに即して同期させる方法があります。たとえば、1つのページに2つの株式ポートレットがあり、一方は株価のデータを提供し、もう一方は株式のヘッドライン・ニュース・アイテムを提供するとします。どちらのポートレットも株式ティッカ・シンボルに基づいているため、株価ポートレット内のティッカ・シンボルが変更されると、株式ヘッドライン・ポートレットはその変更を取り込んで、同じティッカ・シンボルに関連するヘッドラインを使用して自動的にリフレッシュする、という動作は筋が通っています。

JSR 286標準では、パブリック・レンダラ・パラメータが導入されており、それを使用してページ上のポートレットをリンクできます。詳細は、第59.3.5項「JSR 286ポートレットでのパブリック・レンダラ・パラメータの使用方法」を参照してください。

JSR 286標準では、ポートレット・イベントもサポートされています。ポートレット・イベントを使用すると、ページ上の任意の場所で発生するアクションに基づいてポートレットのコンテンツを制御できます。ポートレット・イベントは、ポートレットがそれ自体のイベントをトリガーすることでイベントに応答し、それがそのページ上の他のポートレットに影響を与えるようにカスケードできます。ポートレット・イベントは、ADFコンテキスト・イベントによって消費することもでき、コンテキスト・イベントはポートレットによって消費できます。これを使用して、ポートレットとタスク・フローをコンテキストに即してリンクできます。詳細は、第59.3.6項「JSR 286ポートレットでのポートレット・イベントの使用方法」を参照してください。

ページにポートレットを追加すると、ポートレット・バインディングがそのページ定義ファイルに追加されます。このポートレット・バインディングには、ポートレットがパラメータの変更およびイベントを自動的にリスニングするかどうかを指定する属性が含まれています(例63-5)。

例63-5 ポートレット・バインディング

<portlet id="LotteryPortlet2_1"
portletInstance="oracle/adf/portlet/SamplePortlets/ap/Ei7default_03ba18be_012d_1000_8002_0ae8827e9493"
class="oracle.adf.model.portlet.binding.PortletBinding"
retainPortletHeaders="false"
listenForAutoDeliveredPortletEvents="true"
listenForAutoDeliveredParameterChanges="true"
xmlns="http://xmlns.oracle.com/portlet/bindings"/>

これらの属性をtrue (デフォルト)に設定すると、そのポートレットでサポートされているものに一致する(つまり、同じQNameを持つ)、変更されたパラメータまたはページ上の任意の場所で発生したイベントによって、そのポートレットがそれに従って自動的に更新されることを意味します。さらに、ポートレットは、そのパラメータおよびイベントの別名を定義して、異なるQNameを持つパラメータおよびイベントと一致させることができます。

これらの属性をfalseに設定すると、このパラメータおよびイベントの自動リスニングを無効化できます。たとえば、ページに、同じポートレットの複数のインスタンスが含まれていて、それらは、異なるソースから値を取得する必要がある場合があります。パラメータおよびイベントの自動リスニングを無効化する場合、またはポートレットで、リンクに使用するものと一致しない名前を持つパラメータまたはイベントを定義する場合、ポートレット・ワイヤリングを手動で構成する必要があります。詳細は、第63.7項「JSR 286ポートレットでのパラメータとイベントの手動によるワイヤリング」を参照してください。

63.5.4 インライン・フレームに関する必知事項

ポートレットをページ上に直接レンダリングするほうが、インライン・フレーム(iframe)にそれを配置するよりも優れたユーザー・エクスペリエンスを提供します。ただし、ポートレット・マークアップをインライン・フレーム内に組み込む必要が生じる場合もあります。renderPortletInIFrame属性を使用して、ポートレットをインライン・フレーム内にレンダリングする必要があるかどうかを決定できます。

renderPortletInIFrame属性のデフォルト設定はautoです。これにより、インライン・フレームを必要とせずにOracle ADFページ内に適切にレンダリングされるように、ポートレット・コンシューマによって、可能な場合は必ずポートレット・マークアップのリライトが試みられるようになります。

ただし、次のような状況では、ポートレットはインライン・フレーム内にレンダリングされます。

- パーサーが、マークアップを解析できないために例外をスローします。

- ポートレット・コードに、マルチパート・フォーム・ポストが含まれています。

- ポートレット・コードにファイル・アップロード要素が含まれています。

- ポートレット開発者が、portlet.xmlファイルのcom.oracle.portlet.requireIFrameコンテナ・ランタイム・オプションをtrueに設定することで、インライン・フレーム内にポートレットをレンダリングすることを明示的に要求しました。

注意:

Oracle JSF Portlet Bridgeを使用して作成されたポートレットは、JavaScriptの問題により直接Oracle ADFページにレンダリングするには複雑すぎるため、requireIFrameコンテナ実行時オプションはtrueに設定されます。

場合によっては、ポートレット・コンシューマが、Oracle ADFページ内にポートレットを含めるように、ポートレット・マークアップおよびJavaScriptをリライトできないことがあります。このような場合は、ボタンが機能しなかったり、コンソールにJavaScriptエラーが表示されるなど、ポートレットが期待どおりに動作しないことがあります。その場合は、renderPortletInIFrame属性をtrueに設定し、ポートレットが常にインライン・フレーム内にレンダリングされるようにします。

renderPortletInIFrameをtrueに設定する必要がある場合の例は、次のとおりです。

- ポートレット・コードで、要素名がJavaScriptで動的に作成されます。

- ポートレット・コードで、複数のフォームが使用されており、それらがJavaScriptで索引によって参照されます。

- JavaScriptライブラリ・コードは、ポートレットないで要素を参照します。

注意:

ポートレットをインライン・フレーム内にレンダリングした場合、window.locationを操作すると予期しない結果が発生することがあります。ポートレットでwindow.locationを使用する場合は、ポートレットがインライン・フレーム内にレンダリングされる場合に対応できるだけの堅牢性がJavaScriptに備わっていることを確認してください。

アクセシビリティなどの理由により、ポートレットをインライン・フレーム内にレンダリングしないようにするには、renderPortletInIFrame属性をfalseに設定します。インライン・フレーム内にレンダリングされないポートレットからのHTMLマークアップは、Oracle ADFページ上の他のコンポーネントの障害となることがあります。

インライン・フレームの使用によるアクセシビリティへの影響の詳細は、第H項「WebCenter Portalアクセシビリティ機能」を参照してください。

63.5.5 ポートレットのサイズ設定に関する必知事項

ADF Facesコンポーネントは、それらの子を拡大することもしないこともできます。通常、子を拡大できるようにするには、その親に含まれる子が1つのみであることが必要です。コンポーネントでは、拡大することまたは拡大しないこともサポートされています。拡大がサポートされているコンポーネントを、子を拡大する親の内部に配置すると、その子のディメンションは親のディメンションによって決定されます。その子は、親によって拡大されると言い、親を満たすようにサイズ設定されます。

コンポーネントがその親によって拡大されない場合は、それはフロー・レイアウトになっていると言います。その場合、その親からそのサイズを取得しません。それは、それ自体のサイズを、その子から、またはページ・デザイナによって指定されたディメンション・スタイル設定から決定する必要があります。

portlet Facesコンポーネントでは、その親による拡大がサポートされています。それは、その子を明示的に拡大することはありません。

portletコンポーネントのサイズを決定する方法は、そのポートレットの親コンポーネントおよびportletコンポーネント自体で設定されている属性に応じて3つあります。

- ポートレットがその親によって拡大される場合、そのサイズは親によってのみ決定されます。ポートレットは、ストレッチ・レイアウトになっています。

- コンテンツの大きさは関係なく、それは、そのポートレットのサイズには関係ありません。コンテンツがそのポートレットよりも大きい場合、ユーザーがすべてのコンテンツを表示できるようにスクロールバーが表示されます。

- ポートレットの高さが指定されている場合、それは無視され、拡大が優先されます。

- これは、望ましいレイアウト方法であり、常に信頼できます。

- ADF Facesタグ・ドキュメントでは、各コンポーネントがその子を拡大するかどうかが指定されています。

- ポートレットが、その親によって拡大されず、明示的なサイズが設定されている場合、それらが使用されます。

- これも、常に信頼でき、指定したとおりのサイズになります。

- コンテンツがその指定されているサイズトよりも大きい場合、ユーザーがすべてのコンテンツを表示できるようにスクロールバーが表示されます。

- サイズは固定され、そのコンテンツのサイズは考慮されません。

- ポートレットが、その親によって拡大されず、明示的なサイズが設定されていない場合、ポートレットによってコンテンツに合せた自動サイズ設定が試みられます。

自動サイズ設定

ポートレットがフロー・レイアウトになっており、明示的なサイズが設定されていない場合、スクロールバーを使用せずにそのポートレット・コンテンツをすべて表示するのに適合する大きさになるようにポートレットのサイズの設定が試みられます。

ポートレットは、スクロールバーを使用せずにコンテンツを表示するために必要な領域の大きさをブラウザに問い合せ、それを使用してポートレットの高さを設定することで、これを実現します。具体的に言えば、インライン・フレーム・ウィンドウのscrollHeightプロパティが調査されます。

これが、どの程度機能するのかは、ポートレットの中身に応じて異なります。レイアウトによっては、本来のサイズが自動サイズ設定に適しているものもあります。しかし、コンテンツを表示しないようにオーバーフローさせるものまたはスクロールバーを使用するものなど、ポートレット内のレイアウトおよびコンポーネントによって、それらのコンテンツのサイズが実質的に非表示になるものもあります。具体的に言えば、そのようなHTMLマークアップは、hidden、autoまたはscrollのオーバーフロー設定を持つHTML要素です。これは、その要素に適用されているインライン・スタイルまたはCSSスタイルの結果である場合もあります。

scrollHeightは、コンテンツを適切に表示するために最小限必要な高さであるため、問題が生じます。たとえば、overflow="auto"が設定されたdiv要素がある場合、そのdivがコンテンツよりも小さいと、スクロールバーが使用されます。したがって、divを表示するために必要な最小サイズを問い合せると、明示的な高さや最小の高さが設定されていない場合、答えは0になります。したがって、このdivのコンテンツは、それが明確な高さを持っている場合でも、そのコンテンツの全体的なスクロールの高さに関与しません。

ADFに関しては、これは、多くの場合、dimensionFrom="parent"が設定されているpanelStretchLayoutなど親からそれらのディメンションを取得すると期待されているコンポーネント、またはlayout="scroll"が設定されているpanelGroupLayoutなどそれらのコンテンツをスクロールするコンポーネントに関連しています。これらは、表示されないかスクロール可能なオーバーフローを持つ傾向にあるコンポーネントです。

ADF Facesレイアウト・モデルについて考えると、別の方法で問題を理解できます。ADF Facesのレイアウト・ガイドラインでは、親によって拡大されるコンポーネントとその中のフロー・レイアウト(通常、コンポーネントが固定の高さを持つかそれらのディメンションをそれらの子から取得するaf:panelGroupLayoutによって開始される)のアイランドからなる連鎖から始めることが示されています。ポートレットのルートに、親からディメンションを取得することを期待するコンポーネントの切れ目のない連鎖があるが、そのポートレット自体がフロー・レイアウトになっているためコンテンツからそのディメンションを決定することを期待する場合、袋小路になります。そのポートレットは、サイズについてその親からディメンションを取得することを期待しています。これに対する解決策は、ポートレットを拡大するか(つまり、それをフロー・レイアウト・アイランドから取り出す)、そのポートレットに高さを設定するか、そのポートレットのコンテンツ全体およびフロー・レイアウト・コンテンツのアイランドを作成することであることは明らかです。

コンテンツを自動サイズ設定できない場合、その高さは、デフォルトでFirefoxでは200pxに、Internet Explorerでは0pxになります。Internet Explorerが0であるのは、scrollHeightで、min-height CSSスタイル設定が正しく認識されないという不適切な動作が原因です。Firefoxの200pxの高さは、ポートレット化タスク・フローをレンダリングするリージョンに設定されているminheightによるものです。これを回避するために、コンシューマでheightまたはmin-height CSSを設定できます。

自動サイズ設定のベスト・プラクティス

コンテンツを自動サイズ設定するようにフロー・レイアウトでポートレットを使用する場合に最善の結果を得るには:

- ポートレット・コンテンツを、子からディメンションを取得するコンポーネントからなる連鎖にします。

- dimensionsFrom="children"属性がサポートされているコンポーネント(たとえば、af:panelStretchLayout)に対しては、それを使用し、それらがそれらの子からディメンションを取得するようにします。

- panelGroupLayoutに対してlayout="scroll"ではなくlayout="vertical"を使用し、その子のサイズが、全体的な自動サイズ設定ディメンションに寄与するようにします。

- コンポーネントのフロー・レイアウト連鎖からストレッチ・レイアウトに切り替える場合、子を拡大する最初のコンポーネントに明示的な高さを設定します。通常、これはdimensionsFrom="parent"を指定したpanelStretchLayoutを使用した場所になります。

63.5.6 最小化、リストアおよび移動に関する必知事項

開発環境のニーズに合せるために、Show Detail Frameおよびportletコンポーネントのアクション「最小化」、「リストア」および「移動」の動作は、設計時と実行時では異なります。設計時では、これらのアクションは特定の1つのWLSセッションでは維持されますが、セッション間では維持されません(セッションとは、WLSの開始から停止までの時間を意味します)。実行時では、これらのアクションは特定の1つのWLSセッションおよびセッション間の両方で維持されます。

この違いは、設計時におけるアプリケーション・ページの自動リセットを可能にするために取り入れられたものです。

実行時にセッション間で維持する必要がない場合は、アプリケーションのweb.xmlファイルに単純な変更を行うことでそれをオフにできます。アプリケーションのweb.xmlファイル内で、次のパラメータ設定を見つけます(例63-6)。

例63-6 アプリケーションのweb.xmlファイル内の永続性設定

<context-param>
<param-name>oracle.adf.view.faces.CHANGE_PERSISTENCE</param-name>
<param-value>oracle.adfinternal.view.faces.change.HybridChangeManager</param-value>
</context-param>

これを次のコードで置き換えます(例63-7)。

例63-7 アプリケーションのweb.xmlファイルでの実行時永続性の無効化

<context-param>
<param-name>oracle.adf.view.faces.CHANGE_PERSISTENCE</param-name>
<param-value>oracle.adf.view.faces.change.SessionChangeManager</param-value>
</context-param>

アプリケーションにセキュリティを実装すると、「最小化」、「リストア」、「移動」アクションはカスタマイズ権限を持つユーザーにのみ表示されます。これらのアクションは、パーソナライズ権限を持つユーザーには表示されません。カスタマイズ権限を持つユーザーは、設計時に次の手順を実行することにより、これらのアクションの効果をテストできます。

1. JDeveloperの統合WLS使用してアプリケーション・ページを実行します。

2. 管理者としてログインします。

3. 関連するアクション・コマンドを使用して、ポートレットの最小化、ポートレットの移動など自由に変更を行います。

4. いったんログアウトしてからユーザーとしてログインし、アクションの効果を確認します。

63.5.7 実行時の処理

ページ上にポートレットを配置したら、そのページを右クリックし、「実行」を選択します。これにより、ページが表示され、デフォルト・ブラウザでJDeveloperの統合WLSを使用してポートレットが実行されます。ポートレットによっては、追加の実行時構成が必要になることもあります。特に、OmniPortletポートレットまたはWebクリッピング・ポートレットのインスタンスの内容は実行時に定義されます。OmniPortletの詳細は、第64章「OmniPortletを使用したポートレットの作成」を参照してください。Webクリッピング・ポートレットの詳細は、第65章「Webクリッピングを使用したコンテンツ・ベースのポートレットの作成」を参照してください。ポートレット全般の詳細は、第57章「ポートレットの概要」を参照してください。

「編集」モード(Portal Frameworkアプリケーションでは、ポートレット・ヘッダーに「パーソナライズ」アイコン(鉛筆アイコン)としてレンダリングされる)を備えたポートレットを実行する場合、認証されたユーザー(つまり、ログインしているユーザー)にのみ、「パーソナライズ」アイコンが表示されます。匿名ユーザーまたはパブリック・ユーザーには、ポートレットをパーソナライズするためのオプションは表示されません。ポートレットを消費するアプリケーションで、ユーザーがポートレットのビューをパーソナライズできるようにするには、あらかじめなんらかの形態のセキュリティを実装しておく必要があります。ポートレットおよびページを作成する開発者は、アプリケーションに完全なセキュリティ・モデルを作成せずに、ポートレットの「編集」モードをテストする必要があることがあります。セキュリティを追加してポートレットの「編集」モードのテストを有効化する方法の詳細は、第74.12項「ポートレット・パーソナライズをテストするための基本認証の構成」を参照してください。

注意:

実行時にページにポートレットを追加できるようにするには、設計時に少なくとも1つのポートレットをそのページに追加する必要があります。設計時にポートレットを追加すると、DataBindings.cpxファイルの<definitionFactories>要素に次のものが追加されます。

<factory nameSpace="http://xmlns.oracle.com/portlet/bindings"
className="oracle.adf.model.portlet.binding.PortletBindingDefFactoryImpl"/>
<dtfactory className="oracle.adfdtinternal.view.faces.portlet.PortletDefinitionDTFactory"/>

このエントリは、実行時のポートレットの消費を可能にするために必要です。

ポートレットでパラメータまたはイベントがサポートされており、パラメータおよびイベントの自動リスニングが有効化されている場合、サポートされているパラメータおよびイベント(または別名が付けられているパラメータおよびイベント)に対するすべての変更によって、ポートレットが自動的に更新されます。

外部アプリケーションに関連付けられているプロデューサからポートレットを実行する場合、ログイン情報を更新するためのリンクが表示されます。リンクをクリックすると、外部アプリケーション資格証明を入力するための資格証明プロビジョニング・ページが表示されます。有効な資格証明を指定すると、それに従ってポートレットによってコンテンツが表示されます。外部アプリケーションの詳細は、第74.13項「外部アプリケーションの使用」を参照してください。

63.6 ポートレット・タグの属性値の設定

ページのソース・コード・ビューで、各ポートレットはadfp:portletタグ(またはadfph:portletタグ)で表され、その中に必須属性とオプション属性のセットが含まれています。必須属性であるvalueおよびportletTypeはフレームワークによって自動的に設定され、変更できません。オプション属性値は、ポートレットにその属性のサポートが組み込まれている場合に適用されます。たとえば、isAboutModeAvailableをtrueに設定できますが、ポートレットに情報モードが定義されていない場合、この属性設定はポートレットに影響を与えません。

また、ポートレットでは、スタイル関連属性のセットがサポートされています。これらの属性については、第20.10項「コンポーネントへのスタイルの適用」で詳しく説明しています。

ポートレット・タグでは多数の属性を使用します。それらはJDeveloperのプロパティ・インスペクタを使用するか、タグの属性としてソース・コードで、設計時に設定できます。

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

- 第63.6.1項「プロパティ・インスペクタを使用してポートレット・タグに属性値を設定する方法」

- 第63.6.2項「ポートレット・タグの属性値をソース・コードで設定する方法」

- 第63.6.3項「ポートレット・タグの共通属性」

- 第63.6.4項「ポートレット・タグの外観属性」

- 第63.6.5項「ポートレット・タグの動作属性」

- 第63.6.6項「ポートレット・タグのポートレット・モード属性」

- 第63.6.7項「ポートレット・タグのスタイル属性」

- 第63.6.8項「ポートレット・タグのバインディング属性」

- 第63.6.9項「ポートレット・タグのカスタマイズ属性」

- 第63.6.10項「ポートレット・タグのその他の属性」

63.6.1 プロパティ・インスペクタを使用してポートレット・タグに属性値を設定する方法

プロパティ・インスペクタは、ソース・コードを自分で編集することなく、ポートレット・タグの属性値を設定する迅速で簡単な方法を提供します。

プロパティ・インスペクタを使用してポートレット・タグの属性値を設定するには:

1. アプリケーション・ナビゲータで、ポートレットが表示されるページが含まれているアプリケーションを開きます。

2. ページが含まれているプロジェクトを開きます。

3. ページを見つけ、それを右クリックし、「開く」を選択します。

ヒント:

ページをダブルクリックして開くこともできます。

4. デザイン・ビューで、設定する属性を持つポートレットを選択します。

5. プロパティ・インスペクタで、該当するタブをクリックし、目的の属性を設定します。
必要な回数だけ、この手順を繰り返します。

6. 変更内容を保存します。

7. 行った変更をテストするには、ページを右クリックし、「実行」を選択します。

63.6.2 ポートレット・タグの属性値をソース・コードで設定する方法

ソース・コードで作業する場合は、ポートレット・タグの属性値をそこで直接設定できます。

ソース・コードでポートレット・タグの属性値を設定するには:

1. アプリケーション・ナビゲータで、ポートレットが表示されるページが含まれているアプリケーションを開きます。

2. ページが含まれているプロジェクトを開きます。

3. ページを見つけ、それを右クリックし、「開く」を選択します。

ヒント:

ページをダブルクリックして開くこともできます。

4. デザイン・ビューで、設定する属性を持つポートレットを選択します。

5. 「ソース」タブをクリックします。選択したポートレットが、ソース・コード内で強調表示されます。

6. ソース・コードに変更を直接行います。例63-8は編集済ポートレット・タグを示しています。

例63-8 編集済ポートレット・タグ

<adfp:portlet value="#{bindings.portlet1}"
portletTypes="/oracle/adf/portlet/WsrpPortletProducer1/applicationPortlets/
E0default_b452f828_010a_1000_8002_82235f57eaa8"
allModesSharedScreen="true"
isMaximizable="true"
isMinimizable="true"/>

7. 変更内容を保存します。

8. 行った変更をテストするには、ページを右クリックし、「実行」を選択します。

63.6.3 ポートレット・タグの共通属性

表63-2は、ポートレット・タグの共通属性について説明しています。

表63-2 ポートレット・タグの共通属性

属性

値

説明

id

テキスト文字列。例:

id="newsBrief"

この値は、HTMLで許可される構文のサブセットに準拠している必要があります。

- 長さがゼロの文字列にすることはできません。

- 最初の文字は、ASCII文字(A-Z a-z)またはアンダースコア(_)にする必要があります。

- 後続の文字は、ASCII文字または数字(a-Z a-z 0-9)、アンダースコア(_)またはダッシュ(-)にする必要があります。

ポートレットの一意識別子。この属性には、ページにそのポートレットを追加するときにデフォルトで一意の値が移入されます。

title

テキスト文字列。例:

title="Announcements"

ポートレット・タイトル。これはポートレット・ヘッダーに表示されます。

ここで指定した値は、他のどの場所(たとえば、ポートレット・マークアップ内)に指定されているタイトルよりも優先されます。

ここで値を指定しない場合、ポートレットによりポートレットのマークアップからタイトルが抽出されます(レスポンス)。

ここでもポートレット・マークアップでも値を指定しない場合、ポートレットによりそのポートレット定義からそのタイトルが抽出されます。

注意: 設計時にtitle属性に値を指定すると、編集またはデフォルト編集モードで実行時にそのタイトルに対して行われる変更は無視されます。

width

使用可能な領域をピクセルまたはパーセンテージで表した数値。

- ピクセルの場合は、npxを入力します。次に例を示します。

width = 300px

- パーセンテージの場合は、n%を入力します。次に例を示します。

width = 50%

ポートレットを表示できる領域の幅です。

displayScrollBarをautoまたはtrueに設定した場合、ポートレットの実際の幅がここに入力したwidth値を超えると、スクロールバーが表示されます。displayScrollBarをfalseに設定した場合、ポートレットの実際の幅がwidth属性に指定されている値を超えると、width属性の値が適用され、ポートレットのコンテンツは切り捨てられます。

height

ピクセルで表された数値。次に例を示します。

height = 300px

ポートレットを表示できる領域の高さです。

displayScrollBarをautoまたはtrueに設定した場合、ポートレットの実際の高さがここに入力したheight値を超えると、スクロールバーが表示されます。displayScrollBarをfalseに設定した場合、ポートレットの実際の高さがheight属性に指定されている値を超えると、height属性の値が適用され、ポートレットのコンテンツは切り捨てられます。

icon

イメージのURI。例:

icon="coffee.png"

プロパティ・インスペクタで、フィールドの横にある「プロパティ・メニュー」アイコンをクリックし、「編集」を選択して、必要なイメージを選択します。

その値は、絶対URIであるか、現在のページまたはアプリケーション・コンテキスト・ルートを基準として解決可能なURIにする必要があります。前の例で指定したURIは、アプリケーション・コンテキスト・ルートで格納され、したがって、フルパスは必要ありません。

ポートレット・ヘッダーのポートレット・タイトルの左側に表示されるアイコンとして使用されるイメージの位置を指定するURI。このアイコンは、ポートレットの目的を示すため、ブランド力強化のため、コンテンツ・インジケータとして、またはその他の理由のために使用できます。

partialTriggers

1つ以上のコンポーネントID。例:

partialTriggers="_id1 _id2 componentID5"

空白でコンポーネントIDを区切ります。

部分更新をトリガーするコンポーネントのID。ポートレットは、指定されたトリガー・コンポーネントをリスニングします。1つのトリガー・コンポーネントが、なんらかの方法でそれを更新するトリガー・イベントを受け取った場合、このポートレットでも更新が要求されます。

63.6.4 ポートレット・タグの外観属性

表63-3は、ポートレット・タグの外観属性について説明しています。

表63-3 ポートレット・タグの外観属性

属性

値

説明

expansionMode

minimized
normal

デフォルト: normal

ポートレットのデフォルトの状態。

- minimized - ポートレットのデフォルト表示モードは閉じた状態(最小化)です。

- normal - ポートレットのデフォルト表示モードは、閉じた状態でも、ページの幅に拡大でもありません。

allModesSharedScreen

auto
false
true

デフォルト: auto

ポートレット・モードが変更されると、ポートレットが配置されているページではなく、新しいページに新しいモードがレンダリングされるかどうか。

- auto - リモート・ポートレットが、そのportlet.xmlファイルのcom.oracle.portlet.requireIFrameコンテナ・ランタイム・オプションを介してインライン・フレーム(IFRAME)を必要とするように構成されている場合、すべてのポートレット・モードはインラインで表示されます。これにより、Oracle Bridgeポートレットは必ずインラインで表示されます。

- false - View (JSR 286)またはShow (PDK-Java)を除いたすべてのポートレット・モードが、それぞれのページにレンダリングされます。これは、OmniPortletやWebクリッピング・ポートレットなどのポートレットに役立ちます。これらはShowモード以外のモードが、ポートレットが存在しないページに表示されることを要求します。

- true - すべてのポートレット・モードがインラインで表示されます。モードは同じページ上で切り替わります。つまり、この属性を指定すると、1つのページのコンテキスト内ですべてのポートレット・モードを表示できます。

renderPortletInIFrame

auto
false
true

デフォルト: auto

ポートレットがIFRAME内にレンダリングされるかどうか。

- auto - 可能な場合は、ADFページに適切にレンダリングされるように、ポートレット・コンシューマによってポートレット・マークアップのリライトが必ず試みられます。それ以外の場合は、ポートレットがIFRAME内にレンダリングされます。

- false - ポートレットはIFRAME内にレンダリングされません。

- true - ポートレットは常にIFRAME内にレンダリングされます。

詳細は、第63.5.4項「インライン・フレームに関する必知事項」を参照してください。

displayScrollBar

auto
false
true

デフォルト: auto

スクロール・バーが表示されるかどうか。

- auto - ポートレット・コンテンツが、指定されたwidthおよびheight内に収まらない場合にスクロールバーがレンダリングされます。

- false - スクロールバーはレンダリングされません。ポートレット・コンテンツが、指定されたheightおよびwidthに収まらない場合は、ポートレットは実際のサイズでレンダリングされます。

- true - 常にスクロールバーがレンダリングされます。

displayHeader

false
true

デフォルト: true

ポートレット・ヘッダーが表示されるかどうか。

- false - ポートレット・ヘッダーは表示されません。ヘッダーに通常表示されるアイコンおよびリンクは非表示になります。isSeededInteractionAvailableをtrueに設定すると、マウスをポートレットに移動することでユーザーはポートレット・メニューおよびアイコンを使用できます。フェードインおよびフェードアウトのツールバーが表示され、ここからユーザーは「処理」メニュー・オプションを選択できます。

- true - ポートレット・ヘッダーが表示されます。したがって、ヘッダーをベースにしたアイコンおよびリンクが表示されます。

displayShadow

false
true

デフォルト: true

ポートレットの周囲に影の装飾が表示されるかどうか。

- false - 影の装飾を表示しません。

- true - 影の装飾を表示します。

rendered

false
true

デフォルト: true

ポートレットがレンダリングされるかどうか。

- false - ポートレットをレンダリングしません。出力はレンダリングされません。

- true - ポートレットをレンダリングします。これが推奨設定です。この属性をfalseに設定すると、ページを実行したときに問題が発生します。

background

dark
light
medium

デフォルト: medium

ポートレットによって使用されるスキンに適用されるスタイル・セレクタ。

- dark - スキンにダーク・スタイル・セレクタを適用します。

- light - スキンにライト・スタイル・セレクタを適用します。

- medium - スキンにミディアム・スタイル・セレクタを適用します。

これは、ページ上の各ポートレットに異なるルック・アンド・フィールを適用する手段を提供します。

shortDesc

テキスト文字列。例:

shortDesc="Portlet for entering display text in place."

ポートレットの短い説明。

displayActions

always
onHover

デフォルト: always

ポートレットのシード済相互作用が表示されるかどうか。

- always - シード済相互作用を常に表示します。

- onHover - ユーザーがポートレット上にマウスを移動するとシール済相互作用が表示されます。

showMoveAction

menu
none

デフォルト: menu

ポートレットの「アクション」メニューに「移動」コマンドを表示するかどうか。

- menu - ポートレットの「アクション」メニューに「移動」コマンドを表示します。

- none - 「移動」コマンドを表示しません。

設計時と実行時では「移動」コマンドの動作のしかたが異なります。詳細は、第63.5.6項「最小化、リストアおよび移動に関する必知事項」を参照してください。

showRemoveAction

menu
none

デフォルト: menu

ポートレット・クロムに「削除」アイコンを表示するかどうか。

- menu - ポートレットの「アクション」メニューに「削除」コマンドを表示します。

- なし - 「削除」アイコンを表示しません。

設計時と実行時では「削除」アイコンの動作のしかたが異なります。詳細は、第63.5.6項「最小化、リストアおよび移動に関する必知事項」を参照してください。

注意: この属性はadfp:portletタグにのみ使用でき、adfph:portletタグには使用できません。

showResizer

always
never

デフォルト: always

ポートレットの右下隅にあるサイズ変更ハンドルを表示するかどうか。

- always - サイズ変更ハンドルを常に表示します。

- never - サイズ変更ハンドルを表示しません。

注意: この属性はadfp:portletタグにのみ使用でき、adfph:portletタグには使用できません。

showMinimizeAction

chrome
none

デフォルト: chrome

ポートレット・クロムに「最小化」アイコンを表示するかどうか。

- chrome - ポートレット・クロムに「最小化」アイコンを表示します。

- none - 「最小化」アイコンを表示しません。

設計時と実行時では「最小化」アイコンの動作のしかたが異なります。詳細は、第63.5.6項「最小化、リストアおよび移動に関する必知事項」を参照してください。

63.6.5 ポートレット・タグの動作属性

表63-4は、ポートレット・タグの動作属性について説明しています。

表63-4 ポートレット・タグの動作属性

属性

値

説明

partialTriggers

1つ以上のコンポーネントID。例:

partialTriggers="_id1 _id2 componentID5"

空白でコンポーネントIDを区切ります。

部分更新をトリガーするコンポーネントのID。ポートレットは、指定されたトリガー・コンポーネントをリスニングします。1つのトリガー・コンポーネントが、なんらかの方法でそれを更新するトリガー・イベントを受け取った場合、このポートレットでも更新が要求されます。

submitUrlParamters

false
true

デフォルト: false

ページから、ポートレットが配置されているページを指すポートレット・リンク内のパラメータを使用できるようにするかどうか。

- false - ページからパラメータを使用できるようにしません。これらのパラメータは、リクエストを開始したポートレット内部でのみ使用可能です。

- true - コンテナ・ページでパラメータは使用可能です。

63.6.6 ポートレット・タグのポートレット・モード属性

ポートレット・モード属性は、編集モードへの切替えなど、モード切替えUIアクションのレンダリングを制御します。特定のモードでポートレットをレンダリングできるかどうかは、ポートレットでサポートされているモードおよびユーザー認可によって決まります。たとえば、isCustomizeModeAvailable属性がtrueに設定されていても、そのアクションがポートレットでサポートされていなければ、この属性設定はポートレットに影響を与えません。

表63-5に示すポートレット・モード属性は、trueまたはfalseに評価される値バインディング式です。

- trueは、その名前のモードでポートレットをレンダリングできることを意味します。

- falseは、その名前のモードでポートレットをレンダリングできないことを意味します。

表63-5 ポートレット・タグのポートレット・モード属性

属性

値

説明

isAboutModeAvailable

false
true

デフォルト: true

ポートレットの「アクション」メニューに「バージョン情報」コマンドをレンダリングするかどうか。

ユーザーが「バージョン情報」を選択すると、ポートレットの情報モードが起動されます。

isConfigModeAvailable

false
true

デフォルト: true

JSR 286ポートレットの「アクション」メニューに、「構成」コマンドをレンダリングするかどうか。

ユーザーが「構成」を選択すると、ポートレットの構成設定が開きます。

isCustomizeModeAvailable

false
true

デフォルト: true

ポートレット・ヘッダーに「カスタマイズ」アイコンをレンダリングするかどうか。

サイト管理者は「カスタマイズ」を選択して、ポートレットのデフォルト個人情報データを編集します。

isDetailModeAvailable

false
true

デフォルト: true

PDK-Javaポートレットの「アクション」メニューに、「詳細」コマンドをレンダリングするかどうか。

ユーザーが「詳細」を選択すると、全画面モードでポートレットが開きます。

isHelpModeAvailable

false
true

デフォルト: true

ポートレットの「アクション」メニューに「ヘルプ」コマンドをレンダリングするかどうか。

ユーザーが「ヘルプ」を選択すると、ポートレットの「ヘルプ」ページが開きます。

isPrintModeAvailable

false
true

デフォルト: true

JSR 286ポートレットの「アクション」メニューに、「印刷」コマンドをレンダリングするかどうか。

ユーザーが「印刷」を選択すると、ポートレットのプリンタ・フレンドリ・バージョンが表示されます。

isNormalModeAvailable

false
true

デフォルト: true

ポートレットの「アクション」メニューに「リフレッシュ」コマンドをレンダリングするかどうか。

ユーザーが「リフレッシュ」を選択すると、ページ上の他のコンテンツに関係なくポートレットが再描画されます(これは、部分ページ・リフレッシュとも呼ばれます)。

isPersonalizeModeAvailable

false
true

デフォルト: true

ポートレット・ヘッダーに「パーソナライズ」アイコンをレンダリングするかどうか。

ユーザーは「パーソナライズ」を選択して、ポートレットの個人ビューを変更します。このモードは、規格に基づいたJavaポートレット(JSR 286)ウィザードで「編集」を選択する操作に相当します。

「パーソナライズ」アイコンは、認証を受けたユーザー(つまりログインしているユーザー)にのみ表示されます。パブリック・ユーザーまたは認証を持たないユーザーには表示されません。ユーザーがポートレットの表示をパーソナライズできるようにするには、なんらかのアプリケーション・セキュリティを実装する必要があります。

ポートレットを作成する開発者が、アプリケーション用の完全なセキュリティ・モデルを作成せずに「パーソナライズ」モードをテストする場合は、第74.12項「ポートレット・パーソナライズをテストするための基本認証の構成」を参照してください。

注意: パーソナライズ設定が一般的に行われるのは、ポートレット・タイトルです。設計時にポートレット・タイトルを設定するには、title属性に値を指定します。ただし、設計時にtitle属性に値を入力することにより、実行時のポートレット・タイトルのパーソナライズおよびカスタマイズの妨げになることを考慮してください。

isPreviewModeAvailable

false
true

デフォルト: false

ポートレット・コンテンツのプレビューを有効化するかどうか。

このモードはPortal Frameworkアプリケーション内での特定の用途はありませんが、Oracle Portalのポートレット・リポジトリ内で使用され、拡大鏡アイコンとしてレンダリングされます。ユーザーはこのアイコンをクリックして、ポートレットをプレビューします。

63.6.7 ポートレット・タグのスタイル属性

表63-6は、ポートレット・タグのスタイル属性について説明しています。

表63-6 ポートレット・タグのスタイル属性

属性

値

説明

contentStyle

1つ以上のCSSスタイル。

これらは少なくともCSS 2.0に準拠し、次の形式をとる必要があります。

contentStyle="color:rgb(255,0,255); font-family:Arial Helvetica Geneva sans-serif;font-size:large;"

ポートレット・コンテンツに適用されるCSSスタイルです。

ここに入力する値は、inlineStyle属性で指定されているスタイル、CSSに含まれているものまたは特定のポートレット・インスタンス上のスキンより優先されます。詳細は、「contentStyleプロパティおよびinlineStyleプロパティの理解」を参照してください。

inlineStyle

1つ以上のCSSスタイル。

これらは少なくともCSS 2.0に準拠し、次の形式をとる必要があります。

inlineStyle="color:rgb(255,0,255); font-family:Arial Helvetica Geneva sans-serif;font-size:large;"

ポートレット全体に適用するCSSスタイル。

ここに入力した値は、特定のポートレット・インスタンスのCSSまたはスキンで指定されているスタイルより優先されます。詳細は、「contentStyleプロパティおよびinlineStyleプロパティの理解」を参照してください。

63.6.8 ポートレット・タグのバインディング属性

表63-7は、ポートレット・タグのバインディング属性について説明しています。

表63-7 ポートレット・タグのバインディング属性

属性

値

説明

binding

マネージドBeanの名前。例:

binding="#{frameActionsBean.Binding}"

プロパティ・インスペクタで、フィールドの横にある「プロパティ・メニュー」アイコンをクリックし、「編集」を選択して、マネージドBeanを選択し、関連するマネージドBeanプロパティを指定します。

コンポーネント・インスタンスを格納するためのバインディング参照。バインディング参照によって、ポートレットのインスタンスがマネージドBeanプロパティにバインドされます。マネージドBeanは、JSF faces-config.xmlファイル内に登録されているアプリケーションで使用されるJavaBeansです。

63.6.9 ポートレット・タグのカスタマイズ属性

表63-8は、ポートレット・タグのカスタマイズ属性について説明しています。

表63-8 ポートレット・タグのカスタマイズ属性

属性

値

説明

customizationAllowed

false
true

デフォルト: true

ポートレット・タグの設計時カスタマイズがこのポートレットに対して可能かどうか。

customizationAllowedBy

テキスト文字列

設計図カスタマイズが許可されるロール。この属性によってカスタマイズの許可が可能になりますが、実際にそれを誰が実行できるのかを制限します。

63.6.10 ポートレット・タグのその他の属性

表63-9は、ポートレット・タグのその他の属性について説明しています。

表63-9 ポートレット・タグのその他の属性

属性

値

説明

iframeDtd

loose
none
strict

デフォルト: loose

ポートレット・コンテンツがIFRAME内にレンダリングされるときに作成されるdoctype宣言でどのDTDが指定されるのか(ある場合)。

- none - DTDは指定されません。これにより、HTMLコンテンツが技術的に準拠しているHTMLであることに対する制限が緩和されます。ブラウザでは、通常、そのようなHTMLも十分に処理されますが、ポートレットを消費するADF FacesページのいくつかのCSSスタイル・シートもIFRAMEドキュメントにインポートされるため、そのスタイル・シートが適切に機能するために、緩やかなDTDまたは厳密なDTDに準拠するコンテンツを宣言することが必要な場合もあります。

- loose: DTD http://www.w3.org/TR/html/loose.dtdが使用されます。

- strict: DTD http://www.w3.org/TR/html/strict.dtdが使用されます。

63.7 JSR 286ポートレットでのパラメータとイベントの手動によるワイヤリング

ページに追加するポートレットで、そのコンテンツを動的に変更するために使用されるパラメータまたはイベントが定義される場合、多くの部分で、これは自動的に行われます。詳細は、第63.5.3項「ポートレット間通信に関する必知事項」を参照してください。

ただし、状況によっては、デフォルトのパラメータおよびイベントの自動リスニングをオフにする必要があるか、適切な別名に一致しないかそれらを定義しない名前を持つパラメータまたはイベントを持つポートレットを使用することもあります。そのような場合、ポートレット内のパラメータおよびイベントを手動でワイヤリングする必要があります。

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

- 第63.7.1項「パブリック・レンダラ・パラメータとポートレットの手動によるリンク方法」

- 第63.7.2項「ポートレット・イベントとポートレットの手動によるリンク方法」

63.7.1 パブリック・レンダラ・パラメータとポートレットの手動によるリンク方法

ページ上にポートレットを配置するときに、同じQNameを持つパブリック・レンダラ・パラメータはすべて自動的にリンクされます。たとえば、1つのポートレットが、myParamという名前のパラメータに値を公開し、ページ上の2番目のポートレットが同じ名前を持つパラメータから値を受け入れる場合、2番目のポートレットは適切な値で自動的に更新されます。

ポートレット開発者がパラメータの別名を設定した場合、異なるQNameを持つパラメータを使用して、複数のポートレットを一緒にリンクすることもできます。

次の例では、パブリック・レンダラ・パラメータを使用して、異なる名前を持ち、別名を定義されていないパラメータを使用して2つのポートレット動作をリンクする方法を示しています。この例では、パブリック・レンダラ・パラメータの更新を可能にする汎用パラメータ・フォーム・ポートレットを取り上げて、どのようにして株価をレンダリングする株価ポートレットにそれをリンクして、パブリック・レンダラ・パラメータから株式記号を取得できるかを示します。

これらの2つのポートレットを同じページ上にドロップするときに、それらが自動的に互いにリンクされることはありません。これは、パラメータ・フォーム・ポートレットの汎用パラメータ名のいずれも、株価ポートレットのstocksymbolパラメータに一致せず、株価ポートレットではパラメータ・フォーム・ポートレットの汎用パラメータ名に一致するstocksymbolパラメータの別名が定義されていないためです。

手動でパラメータをリンクする方法は2つあり、ページ変数を使用するか、ParametersChange ADFコンテキスト・イベントを使用します。

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

- 第63.7.1.1項「ページ変数を使用したパラメータの手動によるリンク」

- 第63.7.1.2項「ParametersChange ADFコンテキスト・イベントを使用したパラメータの手動によるリンク」

63.7.1.1 ページ変数を使用したパラメータの手動によるリンク

ポートレットがページ上にドロップされるときに、ポートレットによってサポートされているパラメータごとにページ変数が作成されます。私たちの例では、ページ変数は、パラメータ・ホーム・ポートレットに対して3つ、株価ポートレットに対して1つあります(例63-9)。

例63-9 ポートレット・パラメータに対して作成されるページ変数

<pageDefinition ...>
<parameters/>
<executables>
<variableIterator id="variables">
<variable Name="ParameterFormPortlet1_1_Parameter1"
Type="java.lang.Object"/>
<variable Name="ParameterFormPortlet1_1_Parameter2"
Type="java.lang.Object"/>
<variable Name="ParameterFormPortlet1_1_Parameter3"
Type="java.lang.Object"/>
<variable Name="StockPricePortlet1_1_stocksymbol"
Type="java.lang.Object"/>
</variableIterator>
<portlet id="ParameterFormPortlet1_1"
...>
<parameters>
<parameter name="Parameter1"
pageVariable="ParameterFormPortlet1_1_Parameter1"/>
<parameter name="Parameter2"
pageVariable="ParameterFormPortlet1_1_Parameter2"/>
<parameter name="Parameter3"
pageVariable="ParameterFormPortlet1_1_Parameter3"/>
</parameters>
<events>
<event eventType="ParametersChange"
name="ParameterFormPortlet1_1_Event"/>
</events>
</portlet>
<portlet id="StockPricePortlet1_1"
...>
<parameters>
<parameter name="stocksymbol"
pageVariable="StockPricePortlet1_1_stocksymbol"/>
</parameters>
<events>
<event eventType="ParametersChange"
name="StockPricePortlet1_1_Event"/>
</events>
</portlet>
</executables>
<bindings/>
</pageDefinition>

ポートレットをリンクするために、株価ポートレットが、パラメータ・フォーム・ポートレットに対して作成されるページ変数の1つからの値を使用するようにすることができます(例63-10)。

例63-10 ページ変数を使用したポートレット・パラメータのリンク

<portlet id="StockPricePortlet1_1"
...>
<parameters>
<parameter name="stocksymbol"
pageVariable="ParameterFormPortlet1_1_Parameter1"/>
</parameters>
<events>
<event eventType="ParametersChange"
name="StockPricePortlet1_1_Event"/>
</events>
</portlet>

ここで、パラメータ・フォーム・ポートレットの最初のパラメータ・フィールドに値を入力すると、対応するページ変数がそれと同じ値に設定され、それによって、株価ポートレットがその新しい値で更新されます。

63.7.1.2 ParametersChange ADFコンテキスト・イベントを使用したパラメータの手動によるリンク

パラメータおよび前の項で説明したページ変数をサポートするポートレットをドロップすると、ADF ParametersChangeコンテキスト・イベントがそのポートレットに対して作成されます。このイベントは、そのポートレットのパラメータの値が変更されるとトリガーされます。このイベントのペイロードは、そのパラメータの新しい値です。このイベントを使用すると、ページ定義で最初のポートレットのイベントのペイロードを2番目のポートレットのパラメータにマップするイベント・マップを作成することによって別のポートレットのパラメータの値を設定できます。例63-11は、私たちの例の場合に、このイベント・マップがどのようなものになるのかを示しています。

例63-11 ParametersChange ADFコンテキスト・イベントを使用するポートレット・パラメータのリンク

<eventMap xmlns="http://xmlns.oracle.com/adfm/contextualEvent">
<event name="ParameterFormPortlet1_1_Event">
<producer region="ParameterFormPortlet1_1">
<consumer handler="StockPricePortlet1_1">
<parameters>
<parameter name="stocksymbol">
value="${payLoad.Parameter1}"/>
</parameters>
</consumer>
</producer>
</event>
</eventMap>

パラメータ・フォーム・ポートレットの最初のパラメータ・フィールドに値を入力すると、ParametersChangeイベントがトリガーされます。このイベントのペイロードである新しいパラメータ値は、株価ポートレットに送信され、stocksymbolパラメータの値を指定するために使用されます。

63.7.2 ポートレット・イベントとポートレットの手動によるリンク方法

次の例では、異なるポートレットに対して定義されているイベントの名前が一致しない場合に、ポートレット・イベントを使用して手動でポートレットをリンクする方法を示します。

この例では、1つの会社の様々なオフイスの地理的な位置をリストした部門の位置ポートレットがあるとします。部門の位置ポートレットでは、特定の部門がポートレット内で選択されると、ポートレット・イベント(latLong)が発生します。

Googleマップを表示するマップ・ポートレットという別のポートレットがあります。マップ・ポートレットは、マップ上に表示する位置の判別に使用するポートレット・イベント(geolocation)をリスニングします。

この2つのポートレットが1つのページ上にドロップされている場合、マップ・ポートレットには、マップの表示に使用できる情報を提供するイベントが部門の位置ポートレットによって発生したことを知る方法がありません。この2つのポートレット間のリンクを作成するには、例63-12に示すようにページ定義を編集して2つのイベントの間のマッピングを明示的に作成する必要があります。

例63-12 ページ定義における明示的なイベント・マッピング

<pageDefinition ...>
<parameters/>
<executables>
<variableIterator id="variables"/>
<portlet id="DepartmentLocations1_1"
...
<events>
<event name="latLong">
<portletevent namespace-uri="http://xmlns.oracle.com/portlet/EventSample"
localpart="latLong"/>
</event>
</events>
</portlet>
<portlet id="Map1_1"
...
<events>
<event name="geolocation">
<portletevent namespace-uri="http://xmlns.oracle.com/portlet/EventSample"
localpart="geolocation"/>
</event>
</events>
</portlet>
</executables>
<bindings/>
<eventMap xmlns="http://xmlns.oracle.com/adfm/contextualEvent">
<event name="{http://xmlns.oracle.com/portlet/EventSample}latLong">
<producer region="DepartmentLocations1_1">
<consumer handler="Map1_1.{http://xmlns.oracle.com/portlet/EventSample}geolocation"/>
</producer>
</event>
</eventMap>
</pageDefinition>

63.8 ポートレットのコピー

ポートレットをコピーする場合、ポートレットとそのコピーは同じアプリケーション内に置く必要があります。たとえば、ポートレットを、1つのアプリケーションの1つのページからそのアプリケーションの同じプロジェクト内の別のページにコピーしたり、同じページ上の1つの場所から別の場所にコピーできます。また、ターゲット・プロジェクトがポートレットを消費するように構成されている場合、同じアプリケーション内の1つのプロジェクトから別のプロジェクトにポートレットをコピーすることもできます。コピーは、おやじ・ポートレット・インスタンスへの参照であるため、ポートレット(オリジナルまたはコピー)のインスタンスに行ったカスタマイズまたはパーソナライズは、他のすべてのインスタンスに影響を与えます。

ポートレットのコピーは、ポートレット表示タグをコピーして貼り付けること以上のものです。これには、アプリケーション・ページのソースからのポートレット関連のエントリのコピーも含まれます。また、ページ定義ファイルからポートレット関連のエントリをコピーすることと、コピーされたポートレットのバインディングBean内から重複するポートレット・バインディング情報を削除したり、新しいメソッドを作成することも含まれる場合があります。

ポートレットをコピーする場合、ターゲット・ページはOracle ADF Facesページにする必要があります。ターゲット・ページ上に前から存在しているコードはすべて、それを反映する必要があります。このための操作は、非常に簡単です。JDeveloperによって新しいJSFページが作成されると、そのページには純粋なJSFタグが含まれます。Oracle ADF Facesコンポーネントを初めてページ上にドロップすると、自動的にタグがOracle ADF Facesタグに更新されます。たとえば、<html>タグは<afh:html>になり、<head>タグと<title="title">タグは<afh:head title="title">になります。このように、ターゲット・ページをOracle ADF Facesページに確実に変換する簡単な方法は、ターゲット・ページ上にOracle ADF Facesコンポーネントを配置することです。これによって、必要なコード変換が自動的に実行されます。

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

- 第63.8.1項「ポートレットをコピーしてそれを同じページに配置する方法」

- 第63.8.2項「アプリケーション・ページから別のアプリケーション・ページにポートレットをコピーする方法」

63.8.1 ポートレットをコピーしてそれを同じページに配置する方法

ポートレットを同じページにコピーすると、両方のポートレット・インスタンスにそのページのリソースすべてが使用可能になるため、そのページのページ定義ファイルからポートレット関連情報をコピーする必要はありません。それは、ポートレットの表示タグをコピーして貼り付けてコピーに一意の識別子を割り当てるだけのことです。

同じページにポートレットをコピーして配置するには:

1. アプリケーション・ナビゲータで、コピーするポートレットが表示されるページが含まれているアプリケーションを開きます。

2. ページが含まれているプロジェクトを開きます。

3. ページを見つけ、それを右クリックし、「開く」を選択します。

ヒント:

ページをダブルクリックして開くこともできます。

4. デザイン・ビューで、コピーするポートレットを選択します。

5. 「ソース」タブをクリックします。選択したポートレットが、ソース・コード内で強調表示されます。

6. ポートレット・タグをコピーします(例63-13)。

例63-13 ポートレットをコピーする際にコピーするコード部分

<f:view>
<afh:html binding="#{backing_portlet_page.html1}" id="html1">
<afh:head title="portlet_page" binding="#{backing_portlet_page.head1}"
id="head1">
<meta http-equiv="Content-Type"
content="text/html;charset=windows-1252"/>
</afh:head>
<afh:body binding="#{backing_portlet_page.body1}" id="body1">
<h:form binding="#{backing_portlet_page.form1}" id="form1">
<adfp:portlet value="#{bindings.portlet1}"
portletType="/oracle/adf/portlet/
pdksampleproducer_1153245807295/applicationPortlets/
Portlet2_82d49b79_010c_1000_8006_82235ffc4e2b"
binding="#{backing_portlet_page.portlet1}"
id="portlet1"
isCustomModesAvailable="true"/>
</h:form>
</afh:body>
</afh:html>
</f:view>

7. コピーしたコード・フラグメントを、ページ・ソースの目的の場所に貼り付けます。

8. コピーのid属性に一意の値を指定します(例63-14)。

例63-14 ポートレットIDの変更

<adfp:portlet value="#{bindings.portlet1}"
portletType="/oracle/adf/portlet/
pdksampleproducer_1153245807295/applicationPortlets/
Portlet2_82d49b79_010c_1000_8006_82235ffc4e2b"
binding="#{backing_portlet_page.portlet1}"
id="portlet2"
isCustomModesAvailable="true"/>

注意:

1つのページ上で、各ポートレットは一意のIDを持つ必要があります。

9. ページ・ソースで、たとえば次のように、コピーしたポートレットのadfp:portletタグにバインディング属性が含まれるとします。

binding="#{backing_untitled2.portlet1}"

この場合は、このバインディングを削除するか、このマネージドBeanのマネージドBeanクラスを開いて新しいメソッドを定義することによって、バインディングBean内に新しいメソッドを作成します。

たとえば、例63-15に示すように、portlet1をコピーした場合、貼り付けられたコピーはマネージドBeanクラスでportet2になります。

例63-15 マネージドBeanクラスでのマネージドBeanの新しいメソッドの作成

.
private PortletBase portlet2;
public void setPortlet2(PortletBase portet2) {
this.portlet2 = portlet2;
}
.
public PortletBase getPortlet2() {
return portlet2;
}

10. メイン・メニューから、「ファイル」→「すべて保存」の順に選択します。

63.8.2 アプリケーション・ページから別のアプリケーション・ページにポートレットをコピーする方法

アプリケーション内の異なるページ間でポートレットをコピーする場合は、ソース・ページのページ定義ファイルからポートレット関連のコードをコピーする必要もあります。この項では、異なるアプリケーション・ページ間でのコピーと、異なるアプリケーション・プロジェクト間でのコピーに関連する手順を示します。

1つのページから別のページにポートレットをコピーするには:

1. アプリケーション・ナビゲータで、コピーするポートレットが表示されるページが含まれているアプリケーションを開きます。

2. ページが含まれているプロジェクトを開きます。

3. ページを見つけ、それを右クリックし、「開く」を選択します。

ヒント:

ページをダブルクリックして開くこともできます。

4. デザイン・ビューで、コピーするポートレットを選択します。

5. 「ソース」タブをクリックします。選択したポートレットが、ソース・コード内で強調表示されます。

6. ポートレット・タグをコピーします(例63-16)。

例63-16 ポートレットをコピーする際にコピーするソース・ページのコード部分

<f:view>
<afh:html binding="#{backing_portlet_page.html1}" id="html1">
<afh:head title="portlet_page" binding="#{backing_portlet_page.head1}"
id="head1">
<meta http-equiv="Content-Type"
content="text/html;charset=windows-1252"/>
</afh:head>
<afh:body binding="#{backing_portlet_page.body1}" id="body1">
<h:form binding="#{backing_portlet_page.form1}" id="form1">
<adfp:portlet value="#{bindings.portlet1}"
portletType="/oracle/adf/portlet/
pdksampleproducer_1153245807295/applicationPortlets/
Portlet2_82d49b79_010c_1000_8006_82235ffc4e2b"
binding="#{backing_portlet_page.portlet1}"
id="portlet1"
isCustomModesAvailable="true"/>
</h:form>
</afh:body>
</afh:html>
</f:view>

7. ポートレットのコピー先のアプリケーション・ページ(ターゲット・ページ)に移動します。
ポートレットは、Oracle ADF Facesページにしか配置できません。ターゲット・ページにOracle ADF Facesコンポーネントが含まれていない場合は、コンテナ・オブジェクト(つまり、ネストされたポートレット・タグを囲んでいるタグ)でOracle ADFタグが使用されていることを確認します。

別のプロジェクトのページにポートレットをコピーする場合、ターゲット・プロジェクトは、ポートレットを消費するように構成されている必要があります。プロジェクトを構成するには、プロジェクトにポートレット・プロデューサを登録する必要があります。詳細は、第63.2.1項「WebCenter Portal FrameworkアプリケーションへのWSRPポートレット・プロデューサの登録」または第63.2.2項「WebCenter Portal FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。

8. 「ソース」タブをクリックし、コピーしたコード・フラグメントを、ページ・ソースの目的の場所に貼り付けます。

9. アプリケーション・ナビゲータで、ソース・ページ(ポートレットのコピー元のページ)を右クリックし、「ページ定義に移動」を選択します。

10. 「ソース」タブをクリックし、ソース・ページのページ定義ファイルからポートレット・バインディングをコピーします(例63-17)。

例63-17 ページ定義ファイルからコピーするコード部分

<portlet id="portlet1"
portletInstance="/oracle/adf/portlet/pdksampleproducer_1153245/applicationPortlets/Portlet2_82d49_010c_1000_8006_82235"
class="oracle.adf.model.portlet.binding.PortletBinding"
xmlns="http://xmlns.oracle.com/portlet/bindings"/>

注意:

コピーするポートレットにパラメータが含まれる場合は、必ず、コピーしたポートレットのポートレット・パラメータと、ポートレット・パラメータに関連付けられているページ変数もコピーに含めてください。

11. アプリケーション・ナビゲータで、ターゲット・ページを右クリックして「ページ定義に移動」を選択します。
そのページのページ定義が存在しない場合、それを作成するかどうかを尋ねられます。「はい」をクリックします。

12. 「ソース」タブをクリックし、ソースからコピーしたポートレット・バインディングを(関連するポートレット・パラメータ、およびこれらのパラメータに関連付けられたページ変数とともに)貼り付けます。
<executables>タグの間にコードを貼り付けます。場合によっては、終了の</executables>タグを追加し、開始タグにスラッシュ(/)が含まれていないことを確認する必要があります。

13. メイン・メニューから、「ファイル」→「すべて保存」の順に選択します。

63.9 アプリケーション・ページからのポートレットの削除

アプリケーション・ページからポートレットを削除する場合、そのポートレットにパラメータが含まれていれば、アプリケーション・ページのページ定義ファイルから、これらのパラメータに関連付けられたページ変数も削除する必要があります。

ポートレットとそれに関連するページ変数をページから削除するには:

1. アプリケーション・ナビゲータで、削除するポートレットが表示されるページが含まれているアプリケーションを開きます。

2. ページが含まれているプロジェクトを開きます。

3. ページを見つけ、それを右クリックし、「開く」を選択します。

ヒント:

ページをダブルクリックして開くこともできます。

4. デザイン・ビューで、削除するポートレットを右クリックして、「削除」を選択します。
これによって、ページからポートレットが削除され、ページ定義ファイルからポートレット・バインディングが削除されます。

5. ポートレットに変数が含まれている場合、アプリケーション・ナビゲータで、ページを右クリックし、「ページ定義に移動」を選択します。

6. 「ソース」タブをクリックし、削除したポートレットに関連付けられているページ変数を見つけて、ページ定義ファイルから削除します。
たとえば、portlet1を削除した場合は、例63-18で強調表示された変数も削除します。

例63-18 ページ定義ファイルからのポートレット関連ページ変数の削除

<?xml version="1.0" encoding="UTF-8" ?>
<pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel"
version="10.1.3.38.97" id="untitled1PageDef"
Package="project1.pageDefs">
<parameters/>
<executables>
<variableIterator id="variables">
<variable Name="portlet1_param1" Type="java.lang.Object"/>
<variable Name="portlet1_param2" Type="java.lang.Object"/>
<variable Name="portlet2_param1" Type="java.lang.Object"/>
<variable Name="portlet2_param2" Type="java.lang.Object"/>
</variableIterator>
<portlet id="portlet2" portletInstance="/oracle/adf/portlet/
PdkPortletProducer2_1154100666247/applicationPortlets/
Portlet1_b5e49696_010c_1000_8008_8c5707ef9c4f"
class="oracle.adf.model.portlet.binding.PortletBinding"
xmlns="http://xmlns.oracle.com/portlet/bindings">
<parameters>
<parameter name="param1" pageVariable="portlet2_param1"/>
<parameter name="param2" pageVariable="portlet2_param2"/>
</parameters>
</portlet>
</executables>
<bindings/>
</pageDefinition>

7. メイン・メニューから、「ファイル」→「すべて保存」の順に選択します。

63.10 WebCenterサービス・ポートレットの消費

WebCenterサービス・ポートレットは、事前定義されたすぐに使用できるプロデューサであり、WebCenter Portalのツールとサービス・タスク・フローをWSRPポートレットまたはページレットとして他のアプリケーションで公開できます。

WebCenterサービス・ポートレットは、次のポートレットを提供します。

- ドキュメント・マネージャ - WebCenter Contentリポジトリのフォルダ、ファイル、およびWikisを表示します。

- ブログ - WebCenter Contentリポジトリの選択した場所からブログ・ポストを表示します。

- ディスカッション・フォーラム - すべてのディスカッションとその返信を表示し、ユーザーが彼らの権限に基づいて様々な操作を実行できるようにします。

- お知らせ - 現在のお知らせをすべて表示し、ユーザーが彼らの権限に基づいて様々な操作を実行できるようにします。

- リスト - ユーザー作成リストを表示し、リストの作成およびリスト・データの追加のためのコントロールを提供します。

- 投票マネージャ - ユーザーが投票に関する管理操作を実行できるようにします。

- 投票の実施 - 最後に公開された実行可能な投票またはpollIdパラメータによって識別される特定の投票を表示します。

- メール - メール受信ボックスを表示します。

- アクティビティ・ストリーム - ユーザーのコネクションによって実行された最新のアクティビティの概要を提供します。

- タグ・クラウド - タグ・クラウドを表示します。これは、そのページ上で使用されるすべてのタグのビジュアル表現です。

WebCenterサービス・ポートレットは、次のアプリケーションで消費できます。

- Oracle Portal

- Oracle WebLogic Portal

- Oracle WebCenter Interaction。Oracle WebCenter Portalのページレット・プロデューサを使用します。

WebCenterサービス・ポートレット・プロデューサは、WSRPプロデューサです。したがって、それを他のWSRPプロデューサの場合と同じ方法で、アプリケーションに登録します。

注意:

WebCenterサービス・ポートレット・プロデューサは、セキュアなプロデューサです。したがって、そのプロデューサを登録するときは、WebCenter Portalでそのプロデューサを構成するときに使用したものと同じトークンを使用する必要があります。

WebCenterサービス・ポートレット・プロデューサの構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のWebCenterサービス・ポートレットの構成に関する項を参照してください。

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

- 第63.10.1項「Oracle PortalでのWebCenterサービス・ポートレットの消費方法」

- 第63.10.2項「Oracle WebLogic PortalでのWebCenterサービス・ポートレットの消費方法」

- 第63.10.3項「Oracle WebCenter InteractionでのWebCenterサービス・ポートレットの消費方法」

- 第63.10.4項「WebCenterサービス・ポートレット・パラメータの設定方法」

- 第63.10.5項「WebCenterサービス・ポートレットの制限」

- 第63.10.6項「WebCenterサービス・ポートレットでの問題のトラブルシューティング」

63.10.1 Oracle PortalでのWebCenterサービス・ポートレットの消費方法

Oracle PortalでWebCenterサービス・ポートレットを消費する手順は、次のとおりです。

1. Oracle PortalでWebCenterサービス・ポートレットWSRPプロデューサを登録します。
これを実行する方法の詳細は、『Oracle Fusion Middleware Oracle Portal管理者ガイド』のWebサービス・リモート・ポートレットへのアクセスの保護に関する項を参照してください。

2. プロデューサを登録した後、そのプロデューサによって提供されるポートレットのいずれでも、Oracle Portalアプリケーションのページに追加できます。
これを実行する方法の詳細は、Oracle Fusion Middleware Oracle Portalユーザーズ・ガイドのページへのポートレットの追加に関する項を参照してください。

63.10.2 Oracle WebLogic PortalでのWebCenterサービス・ポートレットの消費方法

Oracle WebLogic PortalでWebCenterサービス・ポートレットを消費する手順は、次のとおりです。

1. Oracle WebLogic PortalでWebCenterサービス・ポートレットWSRPプロデューサを登録します。
これを実行する方法の詳細は、Oracle Fusion Middleware Oracle WebLogic Portalフェデレーテッド・ポータル・ガイドのプロデューサの追加に関する項を参照してください。

2. リモート・ポートレットをポータル・ライブラリに追加します。
これを実行する方法の詳細は、Oracle Fusion Middleware Oracle WebLogic Portalフェデレーテッド・ポータル・ガイドのポータル・ライブラリへのリモート・ポートレットの追加に関する項を参照してください。

3. WebCenterサービス・ポートレット・プロデューサは、セキュアなWSRPプロデューサであるため、SAMLセキュリティを設定する必要があります。
これを実行する方法の詳細は、Oracle Fusion Middleware Oracle WebLogic Portalフェデレーテッド・ポータル・ガイドのWebLogic PortalコンシューマとWebCenter Portal: Frameworkアプリケーション・プロデューサとの間のSAMLセキュリティに関する項を参照してください。

4. プロデューサを登録してセキュリティを設定した後、そのプロデューサによって提供されるポートレットのいずれでも、Oracle WebLogic Portalアプリケーションのページに追加できます。
これを実行する方法の詳細は、Oracle Fusion Middleware Oracle WebLogic Portalポータル開発ガイドのページへのコンテンツの追加に関する項を参照してください。

63.10.3 Oracle WebCenter InteractionでのWebCenterサービス・ポートレットの消費方法

Oracle WebCenter InteractionでWebCenterサービス・ポートレットを消費する手順は、次のとおりです。

1. Oracle WebCenter InteractionでWebCenterサービス・ポートレットを使用可能にするには、最初にOracle WebCenter Portalのページレット・プロデューサを使用してページレット・プロデューサとしてそのプロデューサを登録する必要があります。
これを実行する方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のページレット・プロデューサでのWSRPおよびOracle JPDKポートレット・プロデューサの登録に関する項を参照してください。

注意:

WebCenterサービス・ポートレットのWS-Securityを構成したときに指定したものと同じトークン・プロファイルを選択する必要があります。

2. ページレット・プロデューサを作成したら、それをOracle WebCenter Interactionに登録する必要があります。
これを実行する方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Interaction管理者ガイドのOracle WebCenterページレット・プロデューサ・リモート・サーバーの作成に関する項を参照してください。

3. Oracle WebCenter Interactionアプリケーションにページレット・プロデューサを登録するときは、使用するページレットごとにリモート・ページレットWebサービスを作成する必要があります。
これを実行する方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Interaction管理者ガイドのリモート・ページレットWebサービスの作成または編集に関する項を参照してください。

4. 次に、ページレットのポートレットを作成します。
これを実行する方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Interaction管理者ガイドのポートレットの作成または編集に関する項を参照してください。

5. 最後に、Oracle WebCenter Interactionコミュニティ・ページにポートレットを追加できます。
これを実行する方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Interaction管理者ガイドのコミュニティ・ページの作成に関する項を参照してください。

63.10.4 WebCenterサービス・ポートレット・パラメータの設定方法

WebCenterサービス・ポートレットによって提供される各ポートレットでは、各種パラメータが定義され、それによって、アプリケーションでポートレットを消費するときにそれの外観または動作を変更できます。

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

- 第63.10.4.1項「WebCenterサービス・ポートレットの共通パラメータ」

- 第63.10.4.2項「ドキュメント・マネージャ・ポートレット・パラメータ」

- 第63.10.4.3項「ディスカッション・フォーラム・ポートレット・パラメータ」

- 第63.10.4.4項「ブログ・ポートレット・パラメータ」

- 第63.10.4.5項「リスト・ポートレット・パラメータ」

- 第63.10.4.6項「投票マネージャ・ポートレット・パラメータ」

- 第63.10.4.7項「投票の実施ポートレット・パラメータ」

- 第63.10.4.8項「お知らせポートレット・パラメータ」

- 第63.10.4.9項「メール・ポートレット・パラメータ」

- 第63.10.4.10項「アクティビティ・ストリーム・ポートレット・パラメータ」

- 第63.10.4.11項「タグ・クラウド・ポートレット・パラメータ」

63.10.4.1 WebCenterサービス・ポートレットの共通パラメータ

表63-10は、WebCenterサービス・ポートレットによって提供されるすべてのポートレットに使用できるパラメータを示しています。

表63-10 WebCenterサービス・ポートレットの共通パラメータ

パラメータ

説明

width

消費するページ上のポートレットの幅を指定します。指定しない場合、ポートレットは、ページで許容される最大の大きさ水平方向の領域を取ります。

height

消費するページ上のポートレットの高さを指定します。指定しない場合、ポートレットの高さはポートレット・コンシューマにより決定されます。

63.10.4.2 ドキュメント・マネージャ・ポートレット・パラメータ

表63-11は、ドキュメント・マネージャ・ポートレットに使用できる追加のパラメータを示しています。

表63-11 ドキュメント・マネージャ・ポートレット・パラメータ

パラメータ

説明

connectionName

WebCenterサービス・ポートレットによって使用されるOracle Content Server接続の名前。値が選択されない場合、アプリケーション開発者または管理者が指定したデフォルトの接続が使用されます。コンテンツ・リポジトリ接続の構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの管理』のWebCenter PortalまたはPortal Frameworkアプリケーション用のコンテンツ・リポジトリの登録に関する項を参照してください。

デフォルト: アプリケーション開発者によって「コンテンツ・リポジトリ接続の作成」ダイアログ・ボックスのデフォルトとして選択されている接続。これは管理者が変更できます。

featuresOff

ポートレットの無効化されている機能のリスト。項目を区切るには、カンマまたは空白を使用します。有効な値は、次のようにJavaDocで公開されています。checkin, checkout, clipboard, close, delete, download, dnd, editwiki, editoffice, newfolder, newwiki, rename, upload, multifile-upload, profile-upload, search, advancedSearch, workflow, properties, history, comments, likes, links, tags, recommendations, autovue, title, related-items, social, sidebars, ils

例:

${'search, advancedSearch, clipboard, dnd, rename, newfolder, upload, newwiki, checkin, checkout, editoffice, edithtml, delete, sidebars, history'}

layout

タスク・フローのターゲット・レイアウト。次のうちから選択します。

- ${'explorer'} - (デフォルト)フォルダおよびファイルを2つのペインに表示します。左のペインにはフォルダが、右のペインには、現在選択されているフォルダのコンテンツが表示されます。

- ${'table'} - フォルダをクリックしてドリルダウンする機能およびフォルダ・コンテンツでペインをリフレッシュする機能がある1つのペインに現在のフォルダのコンテンツのみを表示します。

- ${'treeTable'} - 、ルート・フォルダから始まるフォルダ階層を、フォルダを縮小したり展開したりする機能を持つ1つのペインに表示します。

pageSize

ポートレットに表示される行の最大数。ポートレット内のフォルダおよびファイルのリストが、指定した行数よりも大きい場合は、ポートレットによってスクロールバーが表示されます。デフォルト: 27

注意: pageSizeを、画面サイズに対して大きすぎる値に設定すると、エンド・ユーザーがポートレット・スクロールバーをアプリケーション・スクロールバーに合せるのが難しくなります。

readOnly

すべてのコンテンツ管理操作を無効にし、非表示にするかどうかを指定します。

- ${true} - コンテンツ管理を無効化します。

- ${false} - (デフォルト)コンテンツ管理をユーザーに公開します。

resourceId

現在フォーカスされているリソース。この値は、フォルダIDまたはドキュメントIDです。

startFolderPath

現在のポートレット・インスタンスでルート・フォルダとして使用するフォルダの名前。

これはコンテンツ・スコーピング・パラメータであり、ポートレット・インスタンスに表示するコンテンツのソースと範囲を指定できます。

この値を設定するEL式を指定できます。

例: ${'/WebCenterB5/Proj_X/Specs'}

63.10.4.3 ディスカッション・フォーラム・ポートレット・パラメータ

表63-12は、ドキュメント・フォーラム・ポートレットに使用できる追加のパラメータを示しています。

表63-12 ディスカッション・フォーラム・ポートレット・パラメータ

パラメータ

説明

categoryId

ビューをスコープ設定するWebCenterポータルのディスカッション・サーバーの既存のカテゴリの識別子。

値が指定されない場合、デフォルトのディスカッション・サーバーの適切なルート・カテゴリとなります。(このルート・カテゴリIDは、接続でapplication.root.category.idという名前の追加のプロパティを指定することによってオーバーライドできます。)

ディスカッション・サーバー管理者インタフェースを使用して、テスト目的でカテゴリを作成し、ここでそのカテゴリ識別子を参照することもできます。

forumId

人気のあるトピックをフェッチするディスカッション・サーバーの既存のフォーラムの識別子。

categoryIdとforumIdの両方が指定されている場合、categoryIdのみが有効になります。

showRecursiveForums

アウトレットで、フォーラムがカテゴリのみに表示されるかサブカテゴリに表示されるかを決定します。

trueは、特定のカテゴリ/サブカテゴリの下のすべてのフォーラムが表示されることを意味しています。また、falseは、カテゴリの直接の子フォーラムのみが表示されることを意味しています。デフォルト値はfalseです。

注意: trueの場合、パフォーマンスに影響を及ぼす可能性があります。

isCategoryView

フォーラムがカテゴリIDカテゴリの下にグループ化されるか、トピックがフォーラムIDフォーラムの下にグループ化されるかを決定します。

trueは、ポートレットがcategoryIdの下に分類されたフォーラムを表示することを意味し、falseは、ポートレットが、指定されたforumIdと関連付けられたトピックを表示することを意味します。デフォルト値はfalseです。

このパラメータは、他のパラメータと組み合されて機能します。

63.10.4.4 ブログ・ポートレット・パラメータ

表63-13は、ブログ・ポートレットに使用できる追加のパラメータを示しています。

表63-13 ブログ・ポートレット・パラメータ

パラメータ

説明

hideComments

ブログ・ポスト・コメントを表示するかどうかを指定します。

- true - ブログ・ポストに対してコメントが表示されます。

- false - (デフォルト)ブログ・ポストに対してコメントは表示されません。

pageSize

ページ区切りが表示されてユーザーが次のページに進むことを選択できる前に表示されるブログ・ポストの数を指定します。デフォルトでは、ブログ・ページに最大10個のブログ・ポストを表示できます。

resourceId

選択したフォルダの一意の識別子を指定します。

この値は、次の書式で指定できます。

- connection_name/path_to_folder
ここで、connection_nameは、WebCenterサービス・ポートレットによって使用されるOracle Content Server接続の名前であり、path_to_folderは、ブログとして公開するOracle Content Server上のフォルダのパスです。

- connection_name#dCollectionID:dCollectionId
ここで、connection_nameは、WebCenterサービス・ポートレットによって使用されるOracle Content Server接続の名前であり、dCollectionIdは、ブログとして公開するOracle Content Server上のフォルダのコレクションIDです。

63.10.4.5 リスト・ポートレット・パラメータ

リスト・ポートレットには、追加のパラメータは含まれていません。

63.10.4.6 投票マネージャ・ポートレット・パラメータ

表63-14は、投票マネージャ・ポートレットに使用できる追加のパラメータを示しています。

表63-14 投票マネージャ・ポートレット・パラメータ

パラメータ

説明

showUserDataOnly

すべての投票を表示するのか、そのユーザーによって作成された投票のみを表示するのかを決定します。デフォルト(No)では、すべての投票が表示されます。

Yesに設定すると、そのユーザーによって作成された投票のみが表示されます。

63.10.4.7 投票の実施ポートレット・パラメータ

表63-15は、投票の実施ポートレットに使用できる追加のパラメータを示しています。

表63-15 投票の実施ポートレット・パラメータ

パラメータ

説明

pollId

表示する投票のID。

63.10.4.8 お知らせポートレット・パラメータ

表63-16は、お知らせポートレットに使用できる追加のパラメータを示しています。

表63-16 お知らせポートレット・パラメータ

パラメータ

説明

parentId

お知らせオブジェクトが維持されるディスカッション・サーバー内のフォーラムID。各アプリケーションは、ディスカッション・サーバーにフォーラムを作成する必要があります。そのフォーラムID、たとえば${2}をここに入力します。

このパラメータが指定されていない場合は、お知らせはデフォルトのグローバルなお知らせになります。

63.10.4.9 メール・ポートレット・パラメータ

表63-17は、メール・ポートレットに使用できる追加のパラメータを示しています。

表63-17 メール・ポートレット・パラメータ

パラメータ

説明

tabularView

EL値タイプを使用して、trueの値を入力すると、件名、送信元、送信日付など、メール・メッセージに関連付けられた情報が表形式で表示されます。このパラメータをfalseに設定すると、メール・メッセージはリスト・ビューでレンダリングされます。

63.10.4.10 アクティビティ・ストリーム・ポートレット・パラメータ

表63-18は、アクティビティ・ストリーム・ポートレットに使用できる追加のパラメータを示しています。

表63-18 アクティビティ・ストリーム・ポートレット・パラメータ

パラメータ

説明

advancedQuery

ストリームされたアイテムをフィルタ処理するためのカスタム問合せを指定するためのフィールド。

詳細は、第39.4項「アクティビティ・ストリームの詳細な問合せパラメータの設定」を参照してください。

enableContextInfo

現在のコンテキストにおけるオブジェクトに関する詳細情報を表示または省略する手段(ポップアップまたは他のコンテキストに基づく手段)

- #{true}を入力すると、アクティビティ・ストリームでaf:contextInfoコンポーネント(小さな赤いドット)が表示できるようになります。ユーザーはこのドットをクリックしてオブジェクトの詳細情報を表示できます。

- #{false}を入力すると、オブジェクトの詳細情報は省略されます。

このパラメータがtrueで、サービス定義にcontextInfoTaskflowIdが定義されている場合、サービスのアクティビティによりaf:contextInfoが表示されます。それ以外の場合、コンテキスト情報は表示されません。

hideComments

ストリーム・アクティビティ上のコメント機能を表示または非表示にする手段。

trueを入力すると、コメント機能が非表示になります。falseを入力するとこれが表示されます。

hideConfigure

タスク・フロー・インスタンスのパーソナライズ・オプションを非表示にする手段。

hideInlinePreview

ストリーム・アクティビティに添付されるファイルのインライン・プレビューを許可または省略する手段。

trueを入力すると、ファイルのプレビューは省略されます。falseを入力するとこれが表示されます。

hideLike

ストリーム・アクティビティ上の「お気に入り登録」リンクを表示または非表示にする手段。

trueを入力すると、「お気に入り登録」リンクが非表示になります。falseを入力するとこれが表示されます。

hideShare

ストリーム・アクティビティ上の「共有」メニューを表示または非表示にする手段。

trueを入力すると、「共有」メニューが非表示になります。falseを入力するとこれが表示されます。

pageSize

指定のタスク・フロー・インスタンスにストリームするアイテム数。

pagination

マルチページ・ストリームで使用するページ区切りの形式。

- #{true}を入力すると、「前へ」および「次へ」リンクが表示されます。

- #{false}を入力すると、「前へ」および「次へ」リンクが省略されます。かわりに「詳細」リンクがレンダリングされ、ユーザーはすべてのストリーム・アクティビティが表示されたより詳細なタスク・フローのビューにナビゲートできます。

profileOnly

ユーザー・プロファイルからのみアクティビティをストリームする手段。

- ユーザー・プロファイルに関連付けられたアクティビティのみをストリームするには、trueを入力します。

- ユーザー・プロファイルに関連付けられたアクティビティとともに、他のタイプのアクティビティもストリームするには、falseを入力します。

resourceId

現在のユーザーID。

#{securityContext.userName}を入力すると、現在のユーザーが戻されます。

serviceCategories

アクティビティのストリーム元となるサービス名のカンマ区切りリストを入力するためのフィールド。

このパラメータを使用して、ストリームされたアクティビティの表示を指定したサービスに関連付けられたアクティビティのみに制限できます。たとえば、次のように1つ以上のサービスIDを入力します。

oracle.webcenter.collab.announcement, oracle.webcenter.collab.forum

有効なサービスIDのリストは、表F-7を参照してください。すべてのサービスがアイテムをアクティビティ・ストリームへストリームするわけではないので、リストされたすべてのサービスIDを使用できるわけではない点に注意してください。たとえば、RSSサービスはアクティビティをストリームしません。

63.10.4.11 タグ・クラウド・ポートレット・パラメータ

タグ・クラウド・ポートレットには、追加のパラメータは含まれていません。

63.10.5 WebCenterサービス・ポートレットの制限

この項では、WebCenterサービス・ポートレットを使用してリモートにアクセスされる場合のWebCenterポータル・サービスでの制限について説明します。

- WebCenterサービス・ポートレットには、たとえば、Wikisなどリソースへのリンクを電子メールで通知する「メールの送信」オプションは含まれていません。

- WebCenterサービス・ポートレットでは、ユーザー名をクリックしたときの「プロファイルの表示」オプションはサポートされていません。

- WebCenterサービス・ポートレットでは、推奨はサポートされていません。

- WebCenterサービス・ポートレットでは、匿名アクセスはサポートされていません。

- WebCenterサービス・ポートレットは、ワークリスト・ポートレットをサポートしなくなりました。
かわりに、Oracle Business Process Managementによって提供されるタスク・リスト・タスク・フローの使用を検討してください。詳細は、『Oracle Fusion Middleware Oracle Business Process Managementユーザーズ・ガイド』のOracle Business Process Management Workspaceのタスク・フローを使用したカスタムADFアプリケーションの作成に関する項を参照してください。

- ドキュメント・マネージャやブログ・ポートレットなど別のWebCenterサービス・ポータルからディスカッション・フォーラムへのリンクを作成する場合、カテゴリIDが0のディスカッション・フォーラムのみがリストされます。

- ディスカッション・フォーラム、リスト、およびお知らせのポートレット内ではRSSはサポートされていません。

- メール・ポートレットでは、メッセージを作成するときの「ユーザーの検索」オプションはサポートされていません。受信者は手動で入力する必要があります。

- 「ダウンロードURL」オプションは、ドキュメント・マネージャの「表示」メニューから使用できません。かわりに、ユーザーは、「ダイレクトURL」フィールドに指定されているURLにアクセスしてドキュメントを表示し、「ダウンロード」ボタンをクリックする必要があります。

- 「Wordで編集」オプションは、ドキュメント・マネージャ・ポートレットの「ファイル」メニューから使用できません。

- ドキュメント・マネージャまたはブログのポートレットの「リンクの取得」オプションからリンクを使用する場合、新しいブラウザ・セッションでそのリンクを開く必要があります。ポートレットを現在実行しているものと同じブラウザ・セッションの新しいタブでリンクを開くことはできません。

- 「ファイル」メニューからアクセスする「サブスクライブ」オプションは、ドキュメント・マネージャまたはブログのポートレットではサポートされていません。

- ブログ・ポートレットでブログを表示するときは、「共有」オプションを「編集」メニューから使用することはできません。

63.10.6 WebCenterサービス・ポートレットでの問題のトラブルシューティング

この項では、WebCenterサービス・ポートレットの使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

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

- 第63.10.6.1項「お知らせまたはディスカッション・フォーラム・ポートレットの外部リンクが機能しない」

- 第63.10.6.2項「ドキュメント・マネージャおよびブログのポートレットの「リンクの取得」オプションが機能しない」

- 第63.10.6.3項「ドキュメント・マネージャおよびブログのポートレットの「推奨」タブが空である」

- 第63.10.6.4項「ブログにイメージを埋め込めない」

- 第63.10.6.5項「「ブログ投稿」または「Wiki」でのリンクの作成時に選択したテキストが失われる」

63.10.6.1 お知らせまたはディスカッション・フォーラム・ポートレットの外部リンクが機能しない

問題

お知らせまたはディスカッション・フォーラム・ポートレットの外部Webページへのリンクをユーザーがクリックしても、何も表示されません。

原因

WebCenterサービス・ポートレットは、インライン・フレーム内に表示されます。たとえばGoogleなど、いくつかのWebサイトは、親フレームが同じオリジナルを持っていない場合、インライン・フレーム内に表示されません。したがって、お知らせまたはディスカッション・フォーラム・ポートレット内でこれらのWebサイトの1つにリンクする場合、リンクは表示されません。

解決方法

お知らせまたはディスカッション・フォーラム・ポートレットから外部Webページにリンクする場合、新しいブラウザ・タブまたはウィンドウにターゲットを表示することをお薦めします。これを行うには、リンクにtarget="_blank"属性を追加します。例:

<a href="http://www.google.com" target="_blank">Google</a>

63.10.6.2 ドキュメント・マネージャおよびブログのポートレットの「リンクの取得」オプションが機能しない

問題

Oracle WebCenter Interactionでドキュメント・マネージャまたはブログのポートレットを消費する場合、「表示」メニューの「リンクの取得」オプションから提供されるリンクが、Microsoft Internet Explorerで機能しません。

原因

Oracle WebCenter Interactionは、ページレット・プロデューサを介してWebCenterサービス・ポートレットにアクセスします。したがって、Oracle WebCenter InteractionのページでWebCenterサービス・ポートレットを消費する場合、ポートレットの基盤となっているページレットには、injectpagelet JavaScriptコールを使用してアクセスします。これにより、そのポートレット内のリンクが、URLに対するInternet Explorerの2KBの制限を超えることがあります。

解決方法

injectpagelet JavaScriptコールを、インライン・フレーム内でページレットを参照するHTMLポートレットに置き換えます。インライン・フレームではURLが短くなるため、Internet Explorerの制限である2KBを超える可能性は低くなります。

たとえば、Oracle WebCenter Interactionでは、ドキュメント・マネージャ・ポートレットにアクセスするために、デフォルトで次のコールが提供される場合があります。

<script type='text/javascript'>
injectpagelet("ServicesPortlets_PS6_49823a17-f56d-41cf-b50e-3506b4394f25",
"Document_Manager", "iframe ifheight=650px ifwidth=100%", "",
"resourceId=dev-ucm%23dDocName%3ADSS000411", "", "", "", "none", false);
</script>

このコールを、次のインライン・フレームを含むHTMLポートレットに置き換えます。

<iframe id="pt-pagelet-iframe-1" frameborder="0" height='650px' width='100%'
src='http://server.example.com:7777/inject/v2/pagelet/
ServicesPortlets_PS6_49823a17-f56d-41cf-b50e-3506b4394f25/Document_Manager
?content-type=html&csapi=true&instanceid=1&chrome=none&consumepage=true
&resourceId=dev-ucm%23dDocName%3ADSS000411'>
</iframe>

63.10.6.3 ドキュメント・マネージャおよびブログのポートレットの「推奨」タブが空である

問題

ドキュメント・マネージャおよびブログのポートレットの「推奨」タブに、推奨がリストされません。

原因

WebCenterサービス・ポートレットでは、推奨はサポートされていません。

解決方法

ドキュメント・マネージャおよびブログのポートレットから「推奨」タブを削除するには、そのポートレットを編集し、featureOffパラメータをrecommendationsに設定します。

63.10.6.4 ブログにイメージを埋め込めない

問題

Oracle WebCenter Interactionでブログ・ポートレットを消費する場合、イメージをブログ・ポストに埋め込めません。

原因

イメージのファイル名が長い(たとえば250文字以上など)場合、ブログのイメージに使用されるリソースURLの長さが、サポートされている制限を超えることがあります。

解決方法

イメージ・ファイル名の長さを減らします。

かわりに、Oracle WebCenter InteractionでWebCenterサービス・ポートレットを消費するときは、ポートレットをHTMLポートレット内に配置することをお薦めします。詳細は、第63.10.6.2項「ドキュメント・マネージャおよびブログのポートレットの「リンクの取得」オプションが機能しない」を参照してください。

63.10.6.5 「ブログ投稿」または「Wiki」でのリンクの作成時に選択したテキストが失われる

問題

ブログ・ポストまたはWikiでテキストを選択し、「リソースの選択」または「新規リソース」アイコンをクリックしてリンクを作成すると、選択したテキストが表示されなくなります。

原因

選択したテキストは、リンクの作成中は一時的に挿入カーソルに置き換えられています。

解決方法

アクションは不要です。リンクの作成を終了するか、その操作を取り消すと、選択したテキストがリストアされます。

63.11 ポートレットのトラブルシューティング

この項では、ポートレットの使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。内容は次のとおりです。

- 第63.11.1項「ポートレットをトラブルシューティングするための診断ツール」

- 第63.11.2項「ポートレット・ログ・ファイルの構成」

- 第63.11.3項「ポートレットにポートレット・コンシューマ・エラーが表示される」

- 第63.11.4項「ポートレットにポートレット・タイムアウトが表示される」

- 第63.11.5項「ポートレットにリモート・ポートレット・コンシューマ・エラーが表示される」

- 第63.11.6項「ポートレットにリモート・ポートレット・エラーが表示される」

63.11.1 ポートレットをトラブルシューティングするための診断ツール

コンシューマとプロデューサの両方で使用できる、ポートレットでの問題の識別および解決に役立つ一連のツールがあります。

ポートレットをレンダリングするときにポートレット・エラー・メッセージが表示される場合、またはポートレットが表示されるがそれと適切に対話できない場合、その問題を診断するために従う必要があるこれらのツールの一般的な使用手順があります。

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

- 第63.11.1.1項「ポートレット・インスタンスの識別」

- 第63.11.1.2項「ポートレット・コンシューマ・テスト・ページの調査」

- 第63.11.1.3項「プロデューサ・テスト・ページの調査」

63.11.1.1 ポートレット・インスタンスの識別

ポートレット・エラーが発生した場合の最初の手順は、どのポートレット・プロデューサおよびポートレット・インスタンスが起動されているのかを特定することです。ブラウザからportletDebugShow() JavaScriptを実行し、メイン・ポートレット・コンテンツ領域にこの情報を表示します。

ポートレット・インスタンスを識別するには:

1. ブラウザの場所フィールドに次のコマンドを入力します。

javascript:portletDebugShow()

ヒント:

Internet ExplorerおよびGoogle Chromeでは、このコマンドを場所フィールドに入力する必要があります。このコマンドをフィールドに貼り付けた場合、javascriptの部分が削除されます。

Firefox 6以上の場合、場所フィールドにJavaScriptを入力できません。このコマンドをJavaScriptコンソールに入力する必要があります。

2. スクリプトを実行すると、すべてのポートレットによって次の情報が表示されます。

- プロデューサ名

- ポートレット名

- ポートレット・インスタンスID

- 実行コンテキストID (ECID)
ECIDは、ポートレット・リクエストを識別するために使用される一意のIDです。ECIDを使用して、Fusion Middleware Controlを使用して様々なコンシューマおよびプロデューサ・ログ・ファイルにわたるメッセージを関係付けます。同じECIDが、コンシューマからプロデューサに伝播されます。詳細は、『Oracle Fusion Middleware管理者ガイド』の複数のログ・ファイルとコンポーネントにわたるメッセージの関係付けに関する項を参照してください。

注意:

破損しているポートレットは、2つのECIDを示します。1つはエラーが発生したリクエストに対するもの、1つはエラーが報告されたリクエストに対するものです。インライン・ポートレット(つまり、IFRAME内に表示されないポートレット)の場合、これらの2つのECIDは同じです。

IFRAMEポートレット(たとえば、Oracle JSF Portlet Bridgeポートレット)の場合、ECIDは異なります。これは、元の例外が発生したものより後のリクエストでエラーが報告されるためです。ログを確認するときは、どちらのECIDにも関連情報が含まれている可能性があるため、両方のECIDを調べます。

この情報を後続の診断手順で使用して、問題の特定に役立てることができます。

注意:

ポートレット診断情報に表示されるECIDは、ポートレット・プロデューサに対して(ポートレット・コンシューマ・リソース・プロキシを使用して)行われた部分ページ・レンダリング・リクエストを反映していません。これらのリクエストによって、ポートレットが更新される場合がありますが、ポートレット診断情報にECIDは記録されません。これらのリクエスト中に発生するエラーは、プロデューサで記録され、コンシューマ上のポートレット・リソース・プロキシによって記録されますが、ポートレット診断情報で報告されるECID情報を使用して、関連するログ・エントリのECIDを判別するために役立てることはできません。

3. ポートレットのデバッグを終了したら、次のコマンドを入力して、ポートレット・デバッグ情報を非表示にします。

javascript:portletDebugHide()

ヒント:

Internet ExplorerおよびGoogle Chromeでは、このコマンドを場所フィールドに入力する必要があります。このコマンドをフィールドに貼り付けた場合、javascriptの部分が削除されます。

Firefox 6以上の場合、場所フィールドにJavaScriptを入力できません。このコマンドをJavaScriptコンソールに入力する必要があります。

63.11.1.2 ポートレット・コンシューマ・テスト・ページの調査

ポートレット・エラーの診断の次の手順では、ポートレット・コンシューマ・テスト・ページ(図63-2に表示)にアクセスし、ポートレット・プロデューサを探して、必要に応じて、ポートレットを単独でテストします。

図63-2 ポートレット・コンシューマ・テスト・ページ

ポートレット・コンシューマ・テスト・ページには、次3つのタブがあります。

- プロデューサ: このタブには、コンシューマ・アプリケーションに登録されているすべてのプロデューサがリストされます。1つのプロデューサを選択すると、そのプロデューサに関する具体的な情報が提供されます。

- 健全性チェック: このタブには、コンシューマ・アプリケーション開発者によって構成された、コンシューマ・アプリケーション内で実行できるポートレット・インスタンスと必須パラメータの事前定義済セットが含まれている場合があります。これらのポートレット内の障害はすべて、対応するプロデューサまたはポートレット、あるいはその両方での問題を示しています。

- 構成: このタブで、ポートレットの消費のためのコンシューマ構成エントリを識別できます。これらの値は、アプリケーション内に格納されているため変更できません。それらは参照目的でのみ表示されています。

ポートレット・コンシューマ・テスト・ページにアクセスした後、さらに診断手順を実行できます。

この項では、ポートレット・コンシューマ・テスト・ページを使用してポートレットの問題を診断する方法について説明します。内容は次のとおりです。

- 第63.11.1.2.1項「ポートレット・コンシューマ・テスト・ページへのアクセス」

- 第63.11.1.2.2項「ポートレット・プロデューサを見つける」

- 第63.11.1.2.3項「ポートレット・インスタンスを見つけて実行する」

- 第63.11.1.2.4項「健全性チェックの実行」

- 第63.11.1.2.5項「コンシューマ構成エントリのチェック」

63.11.1.2.1 ポートレット・コンシューマ・テスト・ページへのアクセス

ポートレット・コンシューマ・テスト・ページには、ポートレット・コンシューマに関する診断情報が表示されます。

ポートレット・コンシューマ・テスト・ページにアクセスするには:

1. ブラウザで、ポートレット・コンシューマ・テスト・ページのURLを入力します。

http://host:port/context-root/faces/oracle/portlet/client/adf/diagnostic/pages/ConsumerTestPage.jspx

注意:

コンシューマ・アプリケーションがセキュリティで保護されている場合、ポートレット・コンシューマ・テスト・ページには、それらのページを表示する権限を持つユーザーのみがアクセスできます。

2. 後続の項で説明するように、ポートレット・コンシューマ・テスト・ページで、さらに診断手順を実行できます。

63.11.1.2.2 ポートレット・プロデューサを見つける

ポートレット・コンシューマ・テスト・ページの「プロデューサ」タブには、そのコンシューマ・アプリケーションに登録されたすべてのプロデューサがリストされます。アプリケーション内のポートレット・インスタンスによってエラー・メッセージが表示される場合、そのポートレットを所有するプロデューサに関する情報を、このタブでそれを選択することで表示できます。

ポートレット・プロデューサを見つけるには:

1. ポートレット・コンシューマ・テスト・ページで、エラーを報告しているポートレット・インスタンスを所有するポートレット・プロデューサを選択します。
この情報は、第63.11.1.1項「ポートレット・インスタンスの識別」で書き留めました。

2. 次の情報が、選択したプロデューサに対して提供されます。

- プロデューサ・テスト・ページ: 「プロデューサ・テスト・ページ」へのリンク。

- 構成: 使用しているプロデューサに関連するスキン、セキュリティ、およびタイムアウトに関する可能性のある問題の詳細。

- 提供されるポートレット: プロデューサによって提供されるすべてのポートレットのリスト。リストされる提供されるポートレットがない場合、プロデューサの登録メタデータに問題があることを示しています。

- ポートレット・インスタンス: コンシューマ・アプリケーション内の選択されたプロデューサに対するすべてのポートレット・インスタンスのリスト。リストが空の場合もあります。

この情報を使用して、プロデューサでの可能性のある問題を識別できます。

63.11.1.2.3 ポートレット・インスタンスを見つけて実行する

依然としてポートレット・エラーの原因を特定できない場合は、ポートレット・インスタンス自体に問題がある可能性があります。

ポートレット・インスタンスを見つけて実行するには:

1. ポートレット・コンシューマ・テスト・ページで、エラーを報告しているポートレット・インスタンスを所有するポートレット・プロデューサを選択します。
この情報は、第63.11.1.1項「ポートレット・インスタンスの識別」で書き留めました。

2. 「ポートレット・インスタンス」の下で、ポートレット・インスタンスを選択して、「コンシューマ・テスト・ページ: ポートレット」ページを表示します。
この情報は、第63.11.1.1項「ポートレット・インスタンスの識別」で書き留めました。

3. 「ポートレット・コンシューマ・テスト・ページ: ポートレット」ページでは、スタンドアロン・ページとしてポートレットがレンダリングされます。このページでポートレットが適切に実行される場合、問題は、破損しているポートレットが含まれているページ上の他のコンポーネントが原因である可能性が高いです。

4. 「パラメータ」セクションでは、拡大またはフロー・レイアウトを使用するとポートレットがどのように表示されるのか実験することができます。

5. ポートレットにパラメータが含まれている場合、「パラメータ」セクションに、そのポートレットのすべてのパブリック・パラメータがリストされます。任意のパラメータに対して値を入力し、ポートレットがパラメータを適切に受け取っているかテストします。

6. ポートレット・コンシューマ・テスト・ページに戻るには、そのページの最上部にあるプロデューサ名リンクをクリックします。

63.11.1.2.4 健全性チェックの実行

ポートレット・コンシューマ・テスト・ページの健全性チェック・タブ(図63-3に示す)には、すべてのプロデューサにわたるアプリケーション内のポートレット通信の状態の概要が表示されます。

図63-3 健全性チェック・タブ

健全性チェック・タブは、コンシューマ・アプリケーション内で使用されるポートレット・インスタンスを参照します。このリストは、含めるポートレットとこれらのポートレットに渡すパラメータを選択したアプリケーション開発者によって構成されています。

このページのチェックによってUIに出力がレンダリングされることはありませんが、秘密裏にポートレットの実行可能なインスタンスが単に作成され、例外がポートレットによって返される場合は障害が報告されます。

健全性チェックを実行するには:

1. ポートレット・コンシューマ・テスト・ページで、健全性チェック・タブをクリックします。

2. テストするポートレットの横にある「チェック」リンクをクリックします。
健全性テストの結果は「ステータス」列に表示されます。

3. リストされているプロパティすべてで健全性チェックを実行するには、「すべての健全性チェックを実行」リンクをクリックします。

63.11.1.2.5 コンシューマ構成エントリのチェック

ポートレット・コンシューマ・テスト・ページの「構成」タブ(図63-4に示す)で、ポートレットの消費のためのコンシューマ構成エントリを識別できます。このタブには、adf-config.xmlファイルで定義されている設定(たとえば、最小および最大タイムアウト値およびコンシューマ・バージョン番号)が表示されます。これらの値は、アプリケーション内に格納されているため変更できません。それらは参照目的でのみ表示されています。

図63-4 「構成」タブ

63.11.1.3 プロデューサ・テスト・ページの調査

コンシューマ・アプリケーションでエラーの原因を特定できない場合、次の手順は、プロデューサ・テスト・ページ(図63-5に示す)を使用して、ポートレット・プロデューサ・アプリケーションでの可能性のある問題を識別することです。

図63-5 プロデューサ・テスト・ページ

メイン・プロデューサ・テスト・ページへのアクセスはパブリックですが、各ポートレットのテスト・ページへのリンクには、基礎となっているページおよびタスク・フローに対する権限を付与されているユーザーのみがアクセスできます。

プロデューサ・テスト・ページには、次の5つのセクションがあります。

- ポートレット
プロデューサ内のすべてのポートレットのリスト。Oracle JSF Portlet Bridgeポートレットの場合、各ポートレットは、サーブレットとしてそのポートレットを実行するための個別のリンクも提供します(これは、それらをポートレットとして実行するための前提条件です。ポートレットがサーブレットとして実行されない場合、それはポートレットとして実行できません)。

- コンテナ構成
コンシューマ・プリファレンス情報が格納される場所に関する情報。

- コンテナ・バージョン
ポートレット・プロデューサ・コンテナのバージョン番号。

- WSDL URL
登録に使用するWeb Service Definition Language (WSDL)ドキュメントへのリンク。

- SOAPモニター
WSRP SOAPモニターへのリンク。それによって、MonitorまたはAdminロールを持つユーザーは、コンシューマとプロデューサとの間のSOAPメッセージを追跡できます。

プロデューサ・テスト・ページにアクセスした後、さらに診断手順を実行できます。

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

- 第63.11.1.3.1項「プロデューサ・テスト・ページへのアクセス」

- 第63.11.1.3.2項「サーブレットとしてのJSFポートレットの実行」

- 第63.11.1.3.3項「SOAPモニターの調査」

63.11.1.3.1 プロデューサ・テスト・ページへのアクセス

プロデューサ・テスト・ページには、ポートレット・プロデューサに関する診断情報が表示されます。

プロデューサ・テスト・ページにアクセスするには:

1. ブラウザで、プロデューサ・テスト・ページのURLを入力します。

http://host:port/context-root/info

2. 後続の項で説明するように、プロデューサ・テスト・ページで、さらに診断手順を実行できます。

63.11.1.3.2 サーブレットとしてのJSFポートレットの実行

Oracle JSF Portlet Bridgeポートレット・プロデューサが適切に実行されていることを確認するには、最初に標準HTTPリクエストを介してプロデューサ・アプリケーションが適切に実行されていることを確認する必要があります。プロデューサによってポートレットとして公開されるアーティファクトが、サーブレットとして実行されていない場合、それらはポートレットとして実行されません。

JSFポートレットをサーブレットとして実行するには:

1. プロデューサ・テスト・ページで、ポートレットの横にある「サーブレットとして実行」リンクをクリックします。

2. そのポートレットは、基礎となっているページまたはタスク・フローをリクエストする標準HTTPを使用してコールされます。リクエストの結果は、新しいブラウザ・ウィンドウに表示されます。
結果のページまたはタスク・フローが適切にレンダリングされない場合、プロデューサ・アプリケーションに、ページまたはタスク・フローをポートレットとして実行する前に解決する必要がある問題があります。

3. ポートレットがパラメータを取る場合、「パラメータの表示」をクリックして、それらをリストし、値を指定します。「サーブレットとして実行」をクリックすると、ポートレット・コールにそのパラメータ値が含められます。

63.11.1.3.3 SOAPモニターの調査

SOAPモニターは、ポートレットをレンダリングするときのコンシューマとプロデューサとの間のSOAPリクエストへのアクセスを提供します。これは、通信レベルでの問題の診断にとても役立ちます。

SOAPモニターを調査するには:

1. プロデューサ・テスト・ページで、ページの下部にあるSOAPモニター・リンクをクリックします。

2. プロンプトが表示されたらユーザー名とパスワードを入力します。

注意:

SOAPモニターにアクセスするには、アイデンティティ管理システムのMonitorsまたはAdministratorsロールのメンバーであることが必要です。

3. デフォルトでは、SOAPモニターは無効化されているため、そのページは空です。最初に、ページの最上部にある「有効化」リンクをクリックすることでモニターを有効化する必要があります。

4. ページは自動的にリフレッシュされないため、SOAPメッセージを表示するには、「リフレッシュ」リンクをクリックする必要があります。

5. 障害が発生しているポートレットに対してリクエストを強制するには、そのポートレットの「ポートレット・コンシューマ・テスト・ページ: ポートレット」ページに移動し、「ポートレットのリフレッシュ」を選択します。

6. ポートレットがレンダリングされたか失敗したときに、SOAPモニターの「リフレッシュ」リンクをクリックし、取得されたリクエストを表示します。

7. これで、送信されたSOAPメッセージとそのレスポンスを調査して、問題の原因の絞込みを試みることができるようになりました。

注意:

ポートレットを再実行してSOAPモニターをリフレッシュした後に、メッセージがなにも表示されない場合、それは、プロデューサとコンシューマの間にセキュリティの問題がある可能性を示しています。プロデューサとコンシューマが通信するために適切なWS-Security設定が設定されていることを確認する必要があります。

63.11.2 ポートレット・ログ・ファイルの構成

ポートレットの問題をトラブルシューティングするには、ポートレット・ログハンドラおよびロガーを、ロギング構成ファイルlogging.xmlに追加すると便利です。

例63-19は、ポートレット・ログハンドラおよびロガーの追加方法を示しています。この例では、コンシューマおよびプロデューサのアプリケーションが同じWebLogic Serverインスタンス上で実行されていると想定します。異なるインスタンスでコンシューマおよびプロデューサのアプリケーションを実行している場合は、それらを適切に分割する必要があります。

注意:

ファイルの終わりにログ・エントリを追加すると、シードされた設定がそれらによってオーバーライドされるようになります。

例63-19 ポートレットの問題をトラブルシューティングするためのログ・ファイルの構成

<!-- NOTE: You need to change the path where the logfile is located -->
<log_handlers>
...
<!-- Portlet Consumer -->
<log_handler name="portlet-consumer-handler" class="oracle.core.ojdl.logging.ODLHandlerFactory">
<property name="format" value="ODL-Text"/>
<property name="path" value="/scratch/logs/portlet-consumer.log"/>
</log_handler>

<!-- Portlet Producer -->
<log_handler name="portlet-producer-handler" class="oracle.core.ojdl.logging.ODLHandlerFactory">
<property name="format" value="ODL-Text"/>
<property name="path" value="/scratch/logs/portlet-producer.log"/>
</log_handler>

<!-- Portlet Bridge -->
<log_handler name="portlet-bridge-handler" class="oracle.core.ojdl.logging.ODLHandlerFactory">
<property name="format" value="ODL-Text"/>
<property name="path" value="/scratch/logs/portlet-bridge.log"/>
</log_handler>
...
</log_handlers>

<loggers>
...
<!-- Portlet Consumer -->
<logger name="oracle.portlet.client" level="FINEST" useParentHandlers="false">
<handler name="portlet-consumer-handler"/>
</logger>

<!-- Portlet Servers -->
<logger name="com.bea.portlets" level="FINEST" useParentHandlers="false">
<handler name="portlet-producer-handler"/>
</logger>
<logger name="com.bea.netuix" level="FINEST" useParentHandlers="false">
<handler name="portlet-producer-handler"/>
</logger>
<logger name="com.bea.wsrp" level="FINEST" useParentHandlers="false">
<handler name="portlet-producer-handler"/>
</logger>
<logger name="oracle.portlet.producer" level="FINEST" useParentHandlers="false">
<handler name="portlet-producer-handler"/>
</logger>

<!-- Portlet Bridge -->
<logger name="oracle.portlet.bridge" level="FINEST" useParentHandlers="false">
<handler name="portlet-bridge-handler"/>
</logger>
<logger name="oracle.portlet.server.bridge" level="FINEST" useParentHandlers="false">
<handler name="portlet-bridge-handler"/>
</logger>
...
</loggers>

ロギング構成ファイルは次の場所にあります。

DOMAIN_HOME/config/fmwconfig/servers/server/logging.xml

ログ・ファイル名も、logging.xmlで定義されます。デフォルトのログ・ファイル名は次のとおりです。

DOMAIN_HOME/servers/server/logs/server-diagnostic.log

63.11.3 ポートレットにポートレット・コンシューマ・エラーが表示される

メッセージ「ポートレット・コンシューマ・エラー」(図63-6に表示)は、通常、ポートレット・コンシューマ・アプリケーションのポートレット部分の操作でエラーが発生したことを示します。

図63-6 ポートレット・コンシューマ・エラーが表示されたポートレット

問題

エラーは、ポートレット・コンシューマ・アプリケーションのポートレット部分の操作内で発生しました。つまり、エラーは、リモート・ポートレット・プロデューサ・アプリケーションには関係ありません。

解決方法

診断ログ・ファイルを調べて、例外の原因を判別します。

DebugErrorRendererが有効化されている場合、原因例外が、ログ・ファイルへのリンクとともにポートレット内に表示されます。本番モードで実行している場合は、コンシューマ側のログを参照してください。

エラー・メッセージが表示される原因となった例外が記録されています。可能な場合は、メッセージは、例外スタックの先頭でログに含められ、例外がどのポートレット・バインディングに対して発生したかを示します。例63-20は、ポートレット・エラーに対して記録されたメッセージを示しています。

例63-20 ポートレット・エラーに対して記録されるメッセージの例

<PortletRenderer> <setErrorState> An error has occured for Portlet Binding
portlet1.
oracle.portlet.client.container.PortletContentTypeException: Unexpected content
type "null" in WSRPGetMarkup response.
...

スタック内の原因例外に特に注意してください。これが、元になっている実際の問題が何かを示している可能性があります。

原因は、内部エラーである可能性が高く、適切な対処方法は、Oracleサポートに連絡することです。

63.11.4 ポートレットにポートレット・タイムアウトが表示される

ページのポートレットが表示されることが期待されている領域に「ポートレット・タイムアウト」が表示される場合(図63-7に示す)は、構成済の時間だけ、コンシューマはプロデューサのレスポンスを待機したが、その時間中にレスポンスがなかったか、レスポンスがその時間中に完了しなかったことを意味します。原因はいくつか考えられます。

図63-7 ポートレット・タイムアウト・エラーが表示されているポートレット

問題1

プロデューサ・マシンがオーバーロードになっています。

解決策1

プロデューサ管理対象サーバー上の負荷を確認します(これを実行するために使用するツールは、プロデューサを実行しているオペレーティング・システムに応じて異なります)。負荷が高い場合、特定のプロセスがこの高い負荷の原因になっているかどうかと、そのようなプロセスを別のマシンで、またはビジーでない時間に実行できないか確認します。1つのプロセスがこの高い負荷の原因になっている場合、またはOracle WebLogic Serverが高い負荷の原因になっている場合で、かつ負荷が継続的に高い場合は、プロデューサ・ハードウェアが適切かどうか、つまり、それをアップグレードする(またはクラスタに別のノードを追加する)必要があるかどうかを検討します。また、Oracle WebLogic Serverの構成を調整し、リクエスト・スレッド・プールのサイズを増やすことも検討します。詳細は、Oracle WebLogic Serverのマニュアルを参照してください。

問題2

ネットワークがオーバーロードになっている。つまり、コンシューマとプロデューサの間の通信に影響を与えているネットワークに関する問題があります。

解決策2

コンシューマ・マシンからプロデューサ・マシンにpingできることを確認します。ローカル・ブラウザでプロデューサのWSRPプロデューサ・テスト・ページにアクセスできることを確認します。これが機能する場合は、コンシューマ・マシンで実行されているブラウザからこの同じページにアクセスできることを確認します。これらの手順のいずれかで問題が発生し、なおかつマシンがオーバーロードになっていない場合は、ネットワークの問題である可能性があり、システム管理者による調査が必要です。

問題3

リクエスト・スレッドがハングする原因となっているプロデューサ・マシン上にデッドロック(またはスタック・スレッド)があります。

解決策3

これは、通常の操作中は発生しません。これが発生する場合は、通常、デッドロックが発生したポイントを示しているプロデューサのログ・ファイルにエラーがあります。これが、問題の診断に役立つ場合があります。場合によっては、Oracle WebLogic Serverの構成を変更することで、これを回避できる可能性があります。詳細は、Oracle WebLogic Serverのマニュアルを参照してください。

問題4

プロデューサ・アプリケーションの実行速度が(たとえば、大量のデータを処理しているために)遅くなっています。

解決策4

この場合、プロデューサ・アプリケーションは、大量のデータを処理しており、レスポンスの構築に時間がかかりすぎている可能性があります。そのアプリケーションで定期的に大量の情報を処理する場合は、プロデューサ・ハードウェアを追加または向上させるか、ポートレット・タイムアウト期間を増やす必要が生じることもあります。ポートレット・タイムアウトは、Enterprise ManagerまたはWLST setWSRPProducerConnectionコマンドを使用してコンシューマ・アプリケーションのプロデューサ接続で構成できます。さらに、アプリケーション内のすべてのプロデューサ接続の最小および最大のタイムアウトは、adf-config.xmlファイルのポートレット・セクション内で構成できます。

問題5

プロデューサ・アプリケーションが、データベースなど別のリソースからのレスポンスを待機し、それに時間がかかりすぎます(たとえば、データベースがオーバーロードになっている場合)。

解決策5

問題のリソースが適切に機能していることを確認します。している場合は、解決策は解決策4と同じです。

問題6

ポートレット・タイムアウト値が、タイムアウト期間が短すぎるなど、不適切に構成されています。

解決策6

通常、ポートレットのタイムアウトは、プロデューサの登録で設定されます。これは、ポートレットがレスポンスするための時間を与えない値に設定されていることがあります。

また、adf-config.xmlファイルのポートレット・セクションで、ポートレット・タイムアウトの最小、最大およびデフォルト値をアプリケーション全体にわたって構成できます。最大タイムアウトによって、ポートレット・プロデューサによって指定されるタイムアウトの上限が設定されるため、最大タイムアウトが短すぎると、プロデューサ接続で指定したタイムアウトが長い場合でも、予期しないポートレット・タイムアウト・エラーが発生することがあります。

63.11.5 ポートレットにリモート・ポートレット・コンシューマ・エラーが表示される

画面のセクションに「リモート・ポートレット通信エラー」メッセージ(図63-8に示す)が表示され、その周囲に、それ以外の場合は空白のリージョンがある場合は、その領域はポートレットが表示されることが予期されており、アプリケーションとそれとのやり取りができていません。

図63-8 「リモート・ポートレット通信エラー」を表示するポートレット

問題1

プロデューサが停止しています。

解決策1

プロデューサ・アプリケーションが実行されていないか、それがデプロイされている管理対象サーバーが起動されていない可能性があります。この場合、起動する必要があります。ポートレット障害が発生した時点で試みていたタスクに基づいて起動する必要があるアプリケーションを特定します。

問題2

Webサービス・セキュリティが不適切に構成されています。

解決策2

Webサービス・セキュリティのトラブルシューティング手順は、使用しているセキュリティ・プロファイルのタイプ(たとえば、AuthN、SSLまたはMessage Security)に応じて異なります。

Webサービスのセキュリティに関するトラブルシューティングの詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』の問題の診断に関する項を参照してください。

問題3

プロデューサ管理対象サーバーにアクセスできません。

解決策3

プロデューサは、介在するファイアウォールまたは不適切なルーティング・ルールのために、コンシューマ・アプリケーションからアクセスできない場所に配置されていることもあります。オラクル社のプロビジョニング・ソフトウェアによってインストールされた環境では、これは発生しませんが、次の場所に移動することで、コンシューマをホストしているマシンからプロデューサのWSDLエンドポイントにアクセスできることを確認してみる価値はあります。

http://host:port/context-root/portlets/wsrp2?WSDL

ここで:

- hostは、ポートレット・プロデューサがデプロイされているサーバーです。

- portは、サーバーがHTTPリクエストをリスニングするポートです。

- context-rootは、プロデューサWebアプリケーションのコンテキスト・ルートです。

例:

http://portlets.example.com:9999/sample/portlets/wsrp2?WSDL

63.11.6 ポートレットにリモート・ポートレット・エラーが表示される

ポートレットで「リモート・ポートレット・エラー」 (図63-9に示す)が表示される場合、これはプロデューサがそのエラー・メッセージでレスポンスしたことを示しています。エラー・メッセージは、レスポンス・ドキュメント内のSOAPフォルト・メッセージの形式で返されます。プロデューサがエラーを返す理由はいくつかあります。これらのエラーを診断する最適な方法は、最初にコンシューマ診断ログ内の対応する例外スタック・トレースを見つけることです。このスタック・トレースは、プロデューサによって返されたフォルトの種類と、レスポンスに必要な詳細情報を示します。発生する可能性があるいくつかの障害は、後続の項でリストします。

図63-9 「リモート・ポートレット・エラー」を表示するポートレット

問題1

OperationFailedException。これは、最も一般的なタイプの「リモート・ポートレット・エラー」であり、プロデューサ・アプリケーション内で発生した未対応の例外に対する包括的なものです。

解決策1

OperationFailedExceptionを解決するには、コンシューマ診断ログで例外を調べます。これは、通常、最後のCaused by例外としてフォルト・レスポンスをトリガーするプロデューサ・アプリケーションで発生した例外を示します。

必要に応じて、詳細やそのフォルトがトリガーされる前に発生した関連する例外についてプロデューサ・アプリケーションの診断ログを調査できます。場合によっては、プロデューサ・ログの例外が、データベース接続障害や構成の問題など、簡単に解決できる問題を示していることもあります。例外がポートレット・コード内の不具合を示す場合もあります。

問題2

InvalidRegistrationException。このエラーは、コンシューマがプロデューサとの通信を試みる前に、そのプロデューサがコンシューマに適切に登録されていなかったことを示します。これは、コンシューマが登録した後に、プロデューサのプリファレンス・ストアが移動されたか削除された場合にも発生することがあります。

解決策2

永続ストアが使用可能であり、web.xmlファイル内の永続ストアの構成が正しいことを確認します。

問題3

InvalidHandleException。これは、コンシューマがプロデューサに、プロデューサが認識していないポートレット・インスタンスをレンダリングするか、それと対話するように求めたことを示しています。これは、ポートレットがそのページに追加された後に、なんらかの方法で、プロデューサのプリファレンス・ストアが壊れた場合にも発生することがあります。

解決策3

永続ストアが使用可能であり、web.xmlファイル内の永続ストアの構成が正しいことを確認します。

問題4

AccessDeniedException。これは、プロデューサ・アプリケーションによって、現在のユーザーが、問題のポートレットまたはタスク・フローへのアクセス権を持っていないと判断されたことを示します。

解決策4

これは、正当なエラー・メッセージであるか構成の問題を示しているかのいずれかの可能性があります。多くの場合、WebCenter Portalでは、ポートレット・リモート・エラーが表示されることなく、認可エラーは正常に処理されます。

64 OmniPortletを使用したポートレットの作成

この章では、Oracle JDeveloper環境でのOmniPortletの使用方法について説明します。

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

- 第64.1項「OmniPortletの概要」

- 第64.2項「アプリケーションへのOmniPortletの追加」

- 第64.3項「OmniPortletのカスタマイズ」

- 第64.4項「OmniPortlet構成のヒント」

- 第64.5項「OmniPortletの問題のトラブルシューティング」

OmniPortletウィザードの使用方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「OmniPortletの使用」の章を参照してください。

64.1 OmniPortletの概要

OmniPortletはデータ公開ポートレットであり、Oracle WebCenter Portalのサブコンポーネントとして提供されています。OmniPortletを使用すると、開発者がコードを記述することなく、多様なレイアウトを使用して様々なデータ・ソースからデータを容易に公開できます。OmniPortletは使いやすいウィザードを使用して、設計時にアプリケーションに追加し、実行時にカスタマイズします。OmniPortletのベースには、SQL、XML、Webサービス、スプレッドシート(カンマ区切り)、さらには既存のWebページのアプリケーション・データなど、多様なデータ・ソースを使用できます。このデータは、カスタマイズ可能なチャートや表などの様々なレイアウトで公開できます。図64-1に、OmniPortletを使用して作成されたポートレットの例を示します。

図64-1 OmniPortletの例

OmniPortletを使用すると、WebCenter Portal Frameworkアプリケーション開発者およびコンポーネント開発者は、次のことができます。

- 複数ソース(CSV、XML、Webサービス、SQLなど)のデータの表示

- 表示するデータのソート

- 多様なレイアウト(箇条書きリスト、チャート、HTMLなど)を使用したデータの書式設定

- ポートレット・パラメータの使用

- ページ・ビューアへのパーソナライズ可能な設定の公開

パーソナライズされたデータを表示する場合は、データ・ソースから戻された結果をフィルタリングして、取得したデータを絞り込み、保護されたデータのアクセスに使用する資格証明情報をパラメータ化できます。OmniPortletには最初から、表、チャート、HTML、ニュース、箇条書きリストおよびフォームなど、最も一般的なポートレット用のレイアウトが用意されています。

64.2 アプリケーションへのOmniPortletの追加

第63章「ポートレットの消費」で説明しているように、OmniPortletは、Oracle JDeveloperで作成されたページに追加できます。OmniPortletは、Oracle JDeveloperとともにインストールされる統合WebLogic Server (統合WLS)内の、事前構成済PortalToolsポートレット・プロデューサに含まれています。

アプリケーションにOmniPortletを追加するには:

1. 統合WLSを起動します。詳細は、第2.2.4項「統合WebLogic Serverの管理」を参照してください。

2. 事前構成済PortalToolsポートレット・プロデューサがまだデプロイされていない場合は、デプロイします。詳細は、第2.4.1.1項「事前構成済ポートレット・プロデューサのデプロイ」を参照してください。

3. アプリケーションにOmniPortletプロデューサを登録します。詳細は、第63.2.2項「WebCenter Portal FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。

4. OmniPortletを対象のJSPXページにドラッグして、アプリケーションに追加します。詳細は、第63.5項「ページへのポートレットの追加」を参照してください。

注意:

Oracle JDeveloperでOmniPortletのインスタンスをページに追加する際、ポートレットの「プロパティ・インスペクタ」を開き、AllModesSharedScreenプロパティとRenderPortletInIFrameプロパティが次のように設定されていることを確認します。

- AllModesSharedScreenは、「カスタマイズ」と「パーソナライズ」がフル・ページのサイズで表示されるようにFalseに設定されています。

- RenderPortletInIFrameは、表示モードでOmniPortletが独自のインライン・フレーム(iframe)に表示されるようにTrueに設定されています。

Oracle JDeveloperでのOmniPortletの構成の詳細は、第64.4項「OmniPortlet構成のヒント」を参照してください。

64.3 OmniPortletのカスタマイズ

設計時にOmniPortletをアプリケーションに追加しておくと、アプリケーションをブラウザで実行することにより、コンテンツ、レイアウトおよびその他のオプションをカスタマイズできます。この項では、実行時のカスタマイズに関する大まかな概要を説明します。このポートレットの使用およびカスタマイズ方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「OmniPortletの使用」の章を参照してください。

注意:

OmniPortletの構成の詳細は、第64.4項「OmniPortlet構成のヒント」を参照してください。

OmniPortletウィザードには最初に、5つの手順が含まれています。OmniPortletを初めて定義するときは、データ・ソース・タイプ、データ・ソース・オプション、フィルタ・オプション、表示オプションおよびレイアウトを設定します。ウィザードのこれらの設定手順を終えた後にウィザードを再開する場合は、ポートレットの「カスタマイズ」リンクをクリックします。ウィザードを再開すると、「ソース」、「フィルタ」、「表示」および「レイアウト」の各タブで定義を変更できます。

注意:

IBM Linux on Powerプラットフォームで、OmniPortletの定義時に、アクション・ボタン(「次へ」、「終了」、「取消」)が点の状態に最小化されている場合は、スタック・サイズのシェル制限を無制限にし、WLS_portletインスタンスを再起動します。スタック・サイズのシェル制限を無制限に設定するには、コマンドprompt> ulimit -s unlimitedを実行します。

OmniPortletには次の各種データ・ソースを使用できます。

- スプレッドシート

- SQL

- XML

- Webサービス

- Webページ

OmniPortletでこれらのデータ・ソースを使用する方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』を参照してください。

64.4 OmniPortlet構成のヒント

この項では、OmniPortletの構成について説明します。OmniPortletウィザードの詳細は、第64章「OmniPortletを使用したポートレットの作成」を参照してください。

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

- 第64.4.1項「ファイアウォール外のデータにアクセスするためのOmniPortletプロデューサの構成」

- 第64.4.2項「他のリレーショナル・データベースにアクセスするためのOmniPortletプロデューサの構成」

- 第64.4.3項「PortalツールおよびWebプロデューサの構成(オプション)」

注意:

この項では、OmniPortlet_WAR_DIRは、WebLogic ServerでomniPortlet.warがデプロイされているディレクトリを示します。その正確なパスは、インストールに応じて異なります。このパスを見極めるには、ファイル・システム内でomniPortlet/provider.xmlを検索します。たとえば、UNIXでは次のコマンドを実行します。

> find DOMAIN_DIR -name "provider.xml" | grep -i omniportlet

統合WebLogic Server (統合WLSまたはデフォルト・サーバー)では、OmniPortletのprovider.xmlのパスは次の場所にあります。

JDEV_SYSTEM_DIRECTORY/DefaultDomain/servers/DefaultServer/tmp/_WL_user/portalTools_11.1.1.2.0/RANDOMLY_GENERATED_DIRECTORY/war/WEB-INF/providers/omniPortlet/provider.xml

Windowsプラットフォームでは、JDeveloperのシステム・ディレクトリへのパスに空白が含まれている場合、Portal Frameworkアプリケーション内のページはレンダリングされません。したがって、JDEV_SYSTEM_DIRECTORYパスに空白が含まれていないことを確認してください。

Fusion Middleware 11gインストールでは、OmniPortletのprovider.xmlのパスは、次の場所にあります。

FMW_HOME/user_projects/domains/wc_domain/servers/WLS_Portlet/tmp/_WL_user/portalTools_version_number/RANDOMLY_GENERATED_DIRECTORY/war/WEB-INF/providers/omniPortlet/provider.xml

64.4.1 ファイアウォール外のデータにアクセスするためのOmniPortletプロデューサの構成

OmniPortletプロデューサがファイアウォールの内側にある場合、OmniPortletがファイアウォールの外側にあるデータ(CSV、XMLまたはWebサービスなど)のURLにアクセスできるように、プロキシ情報を構成する必要があります。そのために、WebLogic Serverを起動するときにコマンドラインでプロキシ情報を設定できます。また、OmniPortlet_WAR_DIR/WEB-INF/providers/omniPortlet/provider.xmlにあるOmniPortletのprovider.xmlファイルでプロキシ情報を設定することもできます。

注意:

Webサービス・データ・ソースの場合、provider.xmlファイルとコマンドライン・パラメータの両方でプロキシ情報を設定する必要があります。

- WebLogic Serverを起動するときにコマンドラインでプロキシ情報を設定するには、HTTPプロキシ・ホストを使用している場合は表64-1、HTTPSプロキシ・ホストを使用している場合は表64-2に示すパラメータを設定します。

表64-1 HTTPプロキシ情報コマンドライン・パラメータ

パラメータ

説明

http.proxyHost

プロキシ・サーバーのホスト名(OmniPortletプロデューサからそのデータ・ソースにURL接続するためにそれが必要な場合)。

http.proxyPort

HTTPプロキシ・ホストのポート番号。

http.nonProxyHosts

ローカル・マシンなど、プロキシ・サーバーを迂回して直接接続できる任意のドメインまたはホストの名前。

localhost|localhost.localdomain

ホストは、完全修飾ホスト名でもIPアドレスでもかまいません。

http.proxyUser

プロキシ・サーバーが認証を必要とする場合にプロキシ・サーバーにログインするためのユーザー。

http.proxyPassword

プロキシ・サーバーが認証を必要とする場合にプロキシ・サーバーにログインするためのパスワード。

http.proxyAuthType

プロキシ・サーバーの認証タイプ。指定可能な値: Basic | Digest。

http.proxyAuthRealm

プロキシ・サーバーのレルムの名前。レルムの名前がわからない場合は、プロキシ・サーバーの管理者に問い合せてください。

表64-2 HTTPSプロキシ情報コマンドライン・パラメータ

パラメータ

説明

https.proxyHost

プロキシ・サーバーのホスト名(OmniPortletプロデューサからそのデータ・ソースにURL接続するためにそれが必要な場合)。

https.proxyPort

HTTPSプロキシ・ホストのポート番号。

https.nonProxyHosts

ローカル・マシンなど、プロキシ・サーバーを迂回して直接接続できる任意のドメインまたはホストの名前。

localhost|localhost.localdomain

ホストは、完全修飾ホスト名でもIPアドレスでもかまいません。

https.proxyUser

プロキシ・サーバーが認証を必要とする場合にプロキシ・サーバーにログインするためのユーザー。

https.proxyPassword

プロキシ・サーバーが認証を必要とする場合にプロキシ・サーバーにログインするためのパスワード。

https.proxyAuthType

プロキシ・サーバーの認証タイプ。指定可能な値: Basic | Digest。

https.proxyAuthRealm

プロキシ・サーバーのレルムの名前。レルムの名前がわからない場合は、プロキシ・サーバーの管理者に問い合せてください。

3つのパラメータとその値の例を次に示します。

-Dhttps.proxyHost=myProxyServer.mycompany.com
-Dhttps.proxyPort=80
-Dhttps.nonProxyHosts=localhost|localhost.localdomain|127.0.0.1|

- provider.xmlファイルにプロキシ情報を構成するには、表64-3のパラメータのリストとその説明を参照してください。

表64-3 Provider.xmlのタグ

パラメータ

説明

httpProxyHost

OmniPortletプロデューサからそのデータ・ソースへのURL接続を行うために必要な場合、プロキシ・サーバーのホスト名を入力します。

httpProxyPort

HTTPプロキシ・ホストのポート番号を入力します。

dontProxyFor

プロキシ・サーバーを介さずに直接接続できるドメインまたはホスト名を入力します。ドメイン名は、次の例のように、企業、組織、政府機関などの名前を含むURLの一部です。

*.company.com, *.us.company.com

ホストは、完全修飾ホスト名でもIPアドレスでもかまいません。

proxyUseAuth

指定可能な値: true | false

プロキシ・サーバーに認証が必要な場合は、trueを入力します。認証パラメータは、proxyType、proxyRealm、proxyUseGlobal、proxyUserNameおよびproxyPasswordのタグによって指定します。

proxyType

指定可能な値: Basic | Digest

プロキシ・サーバーのタイプを選択します。

BasicまたはDigest認証の詳細は、http://www.faqs.org/rfcs/rfc2617.htmlを参照してください。

proxyRealm

この表で後から説明するログイン情報に従い、ユーザーがアクセスするプロキシ・サーバーのレルムの名前を入力します。レルムの名前がわからない場合は、プロキシ・サーバーの管理者に問い合せてください。

proxyUseGlobal

指定可能な値: true | false

trueの場合、<proxyUser>と<proxyPassword>の値はすべてのユーザーに使用されます。ユーザーには「ソース」タブおよび「パーソナライズ」ページで「プロキシ認証」セクションが表示されません。falseの場合、ページ設計者は、ポートレットを定義する際、「ソース」タブの「プロキシ認証」セクションを使用してログインする必要があります。エンド・ユーザーは、「パーソナライズ」画面の「プロキシ認証」セクションを使用してログインする必要があります。<proxyUsername>および<proxyPassword>を指定すると、それらはパブリック・ユーザーにのみ使用されます。

proxyUserName

プロキシ・サーバーにログインするユーザー名を入力します。

ProxyPassword

指定したユーザー名のパスワードを入力します。プレーン・パスワード・テキストの前に!を付ける必要があります。プロデューサが起動すると、これはprovider.xmlファイルで暗号化されて保護されます。

ファイアウォール外のデータにアクセスするためにプロキシを使用する基本的な例は、次のとおりです。

<proxyInfo class="oracle.portal.provider.v2.ProxyInformation">
<httpProxyHost>www-proxy.example.com</httpProxyHost>
<httpProxyPort>80</httpProxyPort>
<proxyUseAuth>false</proxyUseAuth>
</proxyInfo>

次の例では、プロキシ・サーバーのすべてのユーザーに、ログインおよびBasic認証が必要です。

<proxyInfo class="mycompany.portal.provider.v2.ProxyInformation">
<httpProxyHost>myport.example.com</httpProxyHost>
<httpProxyPort>8080</httpProxyPort>
<proxyUseAuth>true</proxyUseAuth>
<proxyType>Basic</proxyType>
<proxyRealm>myport</proxyRealm>
<proxyUseGlobal>false</proxyUseGlobal>
</proxyInfo>

64.4.2 他のリレーショナル・データベースにアクセスするためのOmniPortletプロデューサの構成

OmniPortlet SQLデータ・ソースは、OracleデータベースにはOracle JDBCドライバを使用して、ODBCデータ・ソースにはSun MicrosystemのJDBC-ODBCドライバを使用してアクセスするように事前に構成されています。開発者は、DataDirect JDBCドライバを使用して他のリレーショナル・データベースにアクセスできます。

関連項目:

サポートされているデータベースのリストは、Oracle Technology Network (http://www.oracle.com/technetwork/index.html)で入手できるOracle Application ServerおよびDataDirect JDBCの動作保証マトリックスを参照してください。

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

- 第64.4.2.1項「DataDirect JDBCドライバのインストール」

- 第64.4.2.2項「OmniPortletへのDataDirectドライバの登録」

64.4.2.1 DataDirect JDBCドライバのインストール

WebLogic Serverインストールには、次のDataDirect JDBCドライバが含まれています。

- YMutil.jar

- YMsybase.jar

- YMsqlserver.jar

- YMspy.jar

- YMinformix.jar

- YMdb2.jar

- YMbase.jar

これらのDataDirectドライバを使用する予定がない場合は、かわりに目的のデータベースにアクセスするためのDataDirect JDBCドライバをダウンロードできます。これらのドライバは、1つのZIPにパッケージ化されており、次の場所からダウンロードできます。

http://www.oracle.com/technetwork/topics/datadirect-index-091847.html

DataDirect JDBCドライバをインストールするには:

1. ZIPファイルの中身を一時ディレクトリ(/temp/datadirectなど)に解凍します。

2. DataDirect JDBCドライバを一時ディレクトリからご使用のWebLogic ServerディレクトリであるWLS_DOMAIN_DIRECTORY/libにコピーします。

64.4.2.2 OmniPortletへのDataDirectドライバの登録

OmniPortletはWebプロデューサとして実装され、構成プロパティはすべてprovider.xmlファイルに格納されています。DataDirect JDBCドライバをOmniPortletで使用するには、これらのドライバをprovider.xmlファイルに登録する必要があります。

新しいDataDirect JDBCドライバを登録するには:

1. OmniPortlet_WAR_DIRECTORY/WEB-INF/providers/omniPortlet/provider.xmlファイルをバックアップして、そのファイルを開きます。

2. SQLデータ・ソース構成エントリに使用するドライバを追加します。

1. XMLタグdriverInfoを検索します。

2. 最後のdriverInfoタグの後に新しいエントリを追加します。

WebLogic DataDirectドライバのdriverInfoの例を次に示します。

- Microsoft SQL Server (デフォルト接続):

<driverInfo class="oracle.webdb.reformlet.data.jdbc.JDBCDriverInfo">
<name>Microsoft SQL Server</name>
<sourceDataBase>other</sourceDataBase>
<subProtocol>weblogic:sqlserver</subProtocol>
<connectString>mainProtocol:subProtocol://databaseName</connectString>
<driverClassName>weblogic.jdbc.sqlserver.SQLServerDriver
</driverClassName>
<dataSourceClassName>weblogic.jdbcx.sqlserver.SQLServerDataSource
</dataSourceClassName>
<connHandlerClass>oracle.webdb.reformlet.data.jdbc.JDBCConnectionHandler
</connHandlerClass>
<connPoolSize>5</connPoolSize>
<loginTimeOut>30</loginTimeOut>
</driverInfo>

- Microsoft SQL Server (名前付き接続。たとえば、mycompany.com:port;databaseName=mydb):

<driverInfo class="oracle.webdb.reformlet.data.jdbc.JDBCDriverInfo">
<name>Microsoft SQL Server</name>
<sourceDataBase>other</sourceDataBase>
<subProtocol>weblogic:sqlserver</subProtocol>
<connectString>mainProtocol:subProtocol://databaseName</connectString>
<driverClassName>weblogic.jdbc.sqlserver.SQLServerDriver
</driverClassName>
<connHandlerClass>
oracle.webdb.reformlet.data.jdbc.JDBCODBCConnectionHandler
</connHandlerClass>
<connPoolSize>5</connPoolSize>
<loginTimeOut>60</loginTimeOut>
</driverInfo>

- Sybase:

<driverInfo class="oracle.webdb.reformlet.data.jdbc.JDBCDriverInfo">
<name>Sybase</name>
<sourceDataBase>other</sourceDataBase>
<subProtocol>weblogic:sybase</subProtocol>
<connectString>mainProtocol:subProtocol://databaseName</connectString>
<driverClassName>weblogic.jdbc.sybase.SybaseDriver
</driverClassName>
<connHandlerClass>
oracle.webdb.reformlet.data.jdbc.JDBCODBCConnectionHandler
</connHandlerClass>
<connPoolSize>5</connPoolSize>
<loginTimeOut>30</loginTimeOut>
</driverInfo>

- DB2:

<driverInfo class="oracle.webdb.reformlet.data.jdbc.JDBCDriverInfo">
<name>DB2</name>
<sourceDataBase>other</sourceDataBase>
<subProtocol>weblogic:db2</subProtocol>
<connectString>mainProtocol:subProtocol://databaseName</connectString>
<driverClassName>weblogic.jdbc.db2.DB2Driver
</driverClassName>
<connHandlerClass>
oracle.webdb.reformlet.data.jdbc.JDBCODBCConnectionHandler
</connHandlerClass>
<connPoolSize>5</connPoolSize>
<loginTimeOut>30</loginTimeOut>
</driverInfo>

- Informix:

<driverInfo class="oracle.webdb.reformlet.data.jdbc.JDBCDriverInfo">
<name>Informix</name>
<sourceDataBase>other</sourceDataBase>
<subProtocol>weblogic:informix</subProtocol>
<connectString>mainProtocol:subProtocol://databaseName</connectString>
<driverClassName>weblogic.jdbc.informix.InformixDriver
</driverClassName>
<connHandlerClass>
oracle.webdb.reformlet.data.jdbc.JDBCODBCConnectionHandler
</connHandlerClass>
<connPoolSize>5</connPoolSize>
<loginTimeOut>30</loginTimeOut>
</driverInfo>

表64-4では、driverInfoプロパティのパラメータについて説明しています。

表64-4 driverInfoプロパティのパラメータ

パラメータ

説明

name

使用するデータベースの名前。この名前は、「OmniPortlet」ウィザードの「ソース」タブで使用されます。

sourceDataBase

内部値。値をotherに設定します。

subProtocol

OmniPortletによって使用される、接続文字列を作成するためのJDBCサブプロトコル名。たとえば、sqlserver、sybase、db2などです。

サブプロトコル名のリストについては、この項の最後にあるリンクから、DataDirect JDBCドライバのドキュメントを参照してください。

connectString

接続文字列の書式の説明。DataDirectドライバの場合、書式は次のとおりです。

mainProtocol:subProtocol://databaseName

driverClassName

ドライバ・クラスの名前。様々な値を取得するには、この項の最後にあるリンクを使用して、DataDirect JDBCドライバのドキュメントを参照してください。

dataSourceClassName

接続プーリングを実装するデータ・ソース・クラスの名前。このパラメータは、OmniPortletリリース9.0.4.1以上でのみ使用可能です。使用するドライバの正しいデータ・ソース・クラス名は、表64-5を参照してください。

connHandlerClass

ドライバおよび接続プーリングの管理にOmniPortletで使用されるクラス。値は次のいずれかです。

- OmniPortletリリース9.0.4.1以上の場合:
oracle.webdb.reformlet.data.jdbc.JDBCConnectionHandler

- OmniPortleリリース9.0.4.1より前の場合:
oracle.webdb.reformlet.data.jdbc.JDBCODBCConnectionHandler

connPoolSize

接続プールによって開かれる接続の最小数。

loginTimeOut

このデータ・ソースが、データベースへの接続を試みる間待機する最大時間(秒)。

表64-5では、特定のDataDirect JDBCドライバのdriverClassNameプロパティとdataSourceClassNameプロパティの値を示します。

表64-5 driverClassNameおよびdataSourceClassNameのパラメータと値

サポートされるDataDirectドライバ

プロパティ

Microsoft SQL Server

パラメータ: driverClassName

値: weblogic.jdbc.sqlserver.SQLServerDriver

Sybase

パラメータ: driverClassName

値: weblogic.jdbc.sybase.SybaseDriver

DB2

パラメータ: driverClassName

値: weblogic.jdbc.db2.DB2Driver

Informix

パラメータ: driverClassName

値: weblogic.jdbc.informix.InformixDriver

3. provider.xmlファイルを保存します。

4. ポートレット・プロデューサがデプロイされていたOracle WebLogic管理対象サーバー・インスタンスを停止してから起動します。
これを行うには、FMW_HOME/user_projects/domains/wc_Domain/binに移動し、次のコマンドを発行します。

./startManagedWebLogic.sh WC_Portlet

注意:

複数ノード構成(クラスタリングまたはロードバランシング環境など)でOmniPortletを使用している場合、provider.xmlファイルを手動で各ノードにコピーする必要があります。

関連項目:

DataDirect JDBCドライバの使用方法の詳細は、第64章「OmniPortletを使用したポートレットの作成」を参照してください。

64.4.3 PortalツールおよびWebプロデューサの構成(オプション)

ローカルに構築されたOmniPortletプロデューサおよびカスタムで構築されたWebプロデューサが、中間層環境で適切に機能するようにするには、追加の構成が必要な場合があります。ファイル・システムでOmniPortletまたはその他のWebプロデューサがカスタマイズされている場合、PDK-Javaによって提供されている永続ストア移行およびアップグレード・ユーティリティを使用して、既存のカスタマイズをデータベースに移行し、前のリリースからカスタマイズをアップグレードできます。PDK-Javaの永続ストア移行ユーティリティの詳細は、第60.3.8.2項「PDK-Javaプロデューサの永続ストアの移行」を参照してください。

複数中間層環境でのPortalツール・プロデューサの構成

デフォルトでは、OmniPortletプロデューサはデータベース・プリファレンス・ストアを使用します。これは、追加の構成を必要とせずに複数の中間層環境で機能します。

データベース永続ストアの構成の詳細は、第60.3.8.1項「PDK-Javaプロデューサの永続ストアの設定」を参照してください。

1. カスタマイズを行ったOmniPortletインスタンスをファイル・システム内で作成済の場合は、永続ストア移行ユーティリティを使用して、これらのカスタマイズをデータベースに移行する必要があります。
この移行ユーティリティを実行するには:

1. 次のコマンドを使用して、WebCenter Portal Oracleホーム・ディレクトリに移動します。

cd WC_ORACLE_HOME

2. 次のコマンドを実行して、OmniPortletデータをファイルベースの永続ストア(FilePreferenceStore)からデータベース永続ストア(DBPreferenceStore)に移行します。

java -classpath lib/dms.jar:jdbc/lib/ojdbc14dms.jar:portal/jlib/pdkjava.jar:portal/jlib/
ptlshare.jar oracle.portal.provider.v2.preference.MigrationTool -mode
filetodb -pref1UseHashing true -pref1RootDirectory portal/portletdata/tools/omniPortlet
-pref2User User_Name -pref2Password User_Password -pref2URL
jdbc:oracle:thin:@infra.host.com:1521:orcl

PDK-Javaの永続ストア移行ユーティリティの詳細は、第60.3.8.2項「PDK-Javaプロデューサの永続ストアの移行」を参照してください。

2. 通常、ロード・バランシング・ルーター(LBR)を構成する前に、OmniPortletのHTTPプロキシ構成を実行します。LBRの構成後にこれを行う手順は、次のとおりです。

1. Portalツールの構成情報は、中間層サーバー上のprovider.xmlファイルに格納されています。1つの中間層(M1など)で構成を直接更新し、それをLBRがフロントエンド処理を行うすべての中間層に伝播する必要があります。最初に、M1以外の中間層をすべて停止する必要があります。

2. HTTPプロキシ設定をprovider.xmlファイルで変更できます。詳細は、第64.4.1項「ファイアウォール外のデータにアクセスするためのOmniPortletプロデューサの構成」を参照してください。

3. OmniPortlet_WAR_DIR/WEB-INF/providers/omniPortlet/provider.xmlをM1からM2へコピーすることにより、provider.xmlファイルへの変更を、中間層M2に伝播します。

3. 中間層M2を再起動します。

4. Portal Frameworkアプリケーションでポートレット・プロデューサ登録を更新します。プロデューサ登録URLの最初の部分をhttp://m1.abc.com:7777/からhttp://lbr.abc.com/に変更します。

5. OmniPortletプロデューサが、LBRを介して正常に動作することを、次のURLにあるテスト・ページに移動して確認します。

http://lbr.abc.com/portalTools/omniPortlet/producers/omniPortlet

OmniPortletプロデューサのテスト・ページで、「ポートレット情報」セクションに「使用可能なポートレットはありません」というメッセージが表示された場合、ステップ1でOmniPortletを正しく構成していない可能性があります。OmniPortletが正しく構成されている場合、「OmniPortlet」と「シンプル・パラメータ・フォーム」のポートレットがテスト・ページで利用できます。

注意:

OmniPortletのWebページ・データ・ソースを使用するには、Oracle Web Cacheでセッション・バインディングも有効にする必要があります。

64.5 OmniPortletの問題のトラブルシューティング

この項では、OmniPortletの使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

注意:

OmniPortletプロデューサはPortal Frameworkアプリケーションと異なる層に存在し、そこで実行されるため、セッション情報にはアクセスできません。OmniPortletがアクセスできるように、XMLファイルをPUBLICとして公開する必要があります。

「定義」リンクを使用してOmniPortletを定義できない

実行時にOmniPortletを定義することはできません。

問題

OmniPortletは、trueのRenderPortletInIFrame値のみをサポートします。これはOmniPortletをIFRAME内でレンダリングする必要があることを意味します。したがって、OmniPortletプロパティRenderPortletInIFrameをtrueに設定する必要があります。「プロパティ・インスペクタ」で、RenderPortletInIFrameプロパティは、「表示オプション」の下にあります。

現時点では、RenderPortletInIFrameプロパティの値はfalseです。そのため、実行時に「定義」リンクをクリックしても、「タイプ」タブは表示されず、OmniPortletの定義を進めることができません。

解決方法

OmniPortletを定義するために、「処理」リストから「カスタマイズ」を選択するか、Oracle JDeveloperの「構造」ウィンドウでOmniPortletを選択して、RenderPortletInIFrameをtrueに設定します。

65 Webクリッピングを使用したコンテンツ・ベースのポートレットの作成

この章では、Oracle JDeveloper環境でのWebクリッピングの使用方法について説明します。

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

- 第65.1項「Webクリッピングの概要」

- 第65.2項「アプリケーションへのWebクリッピングの追加」

- 第65.3項「シングル・サインオンを使用した認証されているWebコンテンツの統合」

- 第65.4項「Webクリッピングの拡張機能」

- 第65.5項「Webクリッピング・ポートレット構成のヒント」

- 第65.6項「Webクリッピングに関する現在の制限」

- 第65.7項「Webクリッピングのトラブルシューティング」

実行時のWebクリッピングの使用方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「Webクリッピング・ポートレットの使用」の章を参照してください。

注意:

Webクリッピング・ポートレットは、リリース11g (11.1.1.7.0)では非推奨になっています。Oracle WebCenter Portalのページレット・プロデューサを使用してクリップ・ページレットを使用することを検討してください。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「ページレット・プロデューサの管理」の章を参照してください。

65.1 Webクリッピングの概要

Webクリッピングは、WebCenter Portal Frameworkアプリケーションに任意のWebアプリケーションを統合できるようにする公開ポートレットです。Webクリッピングは、Webアプリケーションの既存のユーザー・インタフェースを利用して迅速に統合できるように設計されています。Webクリッピングでは、Webコンテンツを単一の一元化したWebページのポートレットに収集できます。Webクリッピングを使用すると、大規模な組織に散在するWebサイトのコンテンツを統合できます。

Webクリッピングを使用すると、Webページ全体または一部をクリップし、ポートレットとして再利用できます。基本およびHTMLフォームベースのサイトはクリップ可能です。Webクリッピングは、既存のWebページのコンテンツをコピーし、Portal Frameworkアプリケーションでポートレットとして公開する場合に使用します。

Webクリッピングは次の機能をサポートします。

- 様々なスタイルのログイン・メカニズムを介したナビゲーション
Webクリッピングでは、フォーム・ベースとJavaScriptベースの送信、Cookieベースのセッション管理を使用したHTTPのBasic認証とDigest認証など、様々なログイン・メカニズムをサポートしています。

- クリッピングのファジー・マッチング
ファジー・マッチング機能により、Webクリッピングがソース・ページ内で順序変更されたり、その文字フォント、サイズまたはスタイルが変更された場合でも、Webクリッピング・エンジンがWebクリッピングを正確に識別し、ポートレット・コンテンツとして配信できるようになります。

- パーソナライズ
パーソナライズ機能を使用すると、エンド・ユーザーがポートレットのパーソナライズ時に変更できる入力パラメータを公開できます。パラメータは、ページ・パラメータとしてマップできるパブリック・パラメータとして公開できます。この機能により、エンド・ユーザーはパーソナライズされたクリッピングを取得できます。

- シングル・サインオンを使用した認証済Webコンテンツの統合
外部アプリケーションやOracle Single Sign-Onを利用して、認証済外部Webサイトのコンテンツをクリップできます。

- インライン・レンダリング
インライン・レンダリングを使用すると、ポートレットのコンテキスト内にリンクを表示するようにWebクリッピング・ポートレットを設定できます。ユーザーがWebクリッピング・ポートレット内でリンクをクリックすると、同じポートレット内に結果が表示されます。この機能は、内部および外部のWebサイトで使用できます。

- プロキシ認証
Webクリッピングは、グローバルなプロキシ認証やユーザーごとの認証などのプロキシ認証をサポートします。プロキシ・サーバーから認証を求められる場合は、この機能を使用できます。タイプ(BasicまたはDigest)やprovider.xmlファイル内のレルムなど、プロキシ・サーバー認証の詳細を指定できます。また、ユーザー資格情報の入力スキームを指定することもできます。

- すべてのユーザーは、指定されたユーザー名とパスワードを使用して自動的にログインします。

- すべてのユーザーは、自ら設定したユーザー名とパスワードを使用してログインする必要があります。

- すべてのパブリック・ユーザー(Portal Frameworkアプリケーションで未認証)は、指定されたユーザー名とパスワードを使用して自動的にログインしますが、有効なユーザー(Portal Frameworkアプリケーションで認証済)は、自ら設定したユーザー名とパスワードを使用してログインします。

詳細は、第65.5.2項「HTTPまたはHTTPSのプロキシ構成」を参照してください。

- HTTPSのサポート
Webクリッピングを使用すると、適切なサーバー証明書を取得している場合に、HTTPSベースの外部Webサイトからコンテンツをクリップできます。サーバー証明書の詳細は、第65.5.3.1項「信頼できるサイトの証明書の追加」を参照してください。

- オープン・トランスポートAPI
デフォルトでは、Webクリッピング・プロバイダは、Basic、Digest、フォーム送信ログインなどのHTTPチャレンジベースの認証方式のみをサポートしています。Kerberosプロキシ認証などのカスタムの認証方式をサポートするには、Webクリッピング・トランスポートAPIを使用できます。詳細は、第65.4.1項「Webクリッピング・トランスポートAPIの使用方法」を参照してください。

- 広範囲なWebコンテンツの再利用
Webクリッピングには、HTTPのGETおよびPOSTのフォーム送信方式を使用して取得された、JavaScriptで記述されたページ、アプレットおよびプラグイン対応コンテンツの基本サポートが用意されています。

Webクリッピングではまた、次のようなHTML 4.01で記述されたページのコンテンツのクリッピングもサポートしています。

- <applet>、<body>、<div>、<embed>、<img>、<object>、<ol>、<span>、<table>、および<ul>タグ付きコンテンツのクリッピング

- <head>スタイルとフォント、およびCSSの保持

- UTF-8準拠のキャラクタ・セットのサポート

- ハイパーリンク(HTTP GET)、フォーム送信(HTTP POST)、フレームおよびURLリダイレクションを使用したナビゲーション

- グローバリゼーション・サポート
Webクリッピングは、URLおよびURLパラメータでのグローバリゼーション・サポートを提供します。クリップされたコンテンツのキャラクタ・セットをWebクリッピングが決定する方法の詳細は、第65.6項「Webクリッピングに関する現在の制限」を参照してください。

- Webクリッピングの定義の永続的な格納
Webクリッピングの定義は、リポジトリに永続的に格納されます。デフォルトでは、JDeveloperで、Webクリッピング・プロデューサがファイルベースのOracle Metadata Service (MDS)をリポジトリとして使用するように構成されています。必要に応じて、Webクリッピング・リポジトリにデータベース・スキーマを使用できます。Webクリッピング・リポジトリの構成の詳細は、第65.5.1項「Webクリッピング・リポジトリの構成」を参照してください。

- 保護情報の暗号化
パスワードなどの保護情報は、Oracleの暗号化テクノロジを使用し、Data Encryption Standard (DES)に基づいて暗号化されたフォームで格納されます。

65.2 アプリケーションへのWebクリッピングの追加

第63章「ポートレットの消費」で説明しているように、Webクリッピング・ポートレットは、Oracle JDeveloperで作成されたページに追加できます。Webクリッピング・ポートレット・プロデューサは、Oracle JDeveloperとともにインストールされる統合WebLogic Server (統合WLS)内の、事前構成済PortalToolsポートレット・プロデューサに含まれています。

Webクリッピングをアプリケーションに追加するには:

1. 統合WLSを起動します。詳細は、第2.2.4項「統合WebLogic Serverの管理」を参照してください。

2. 事前構成済PortalToolsポートレット・プロデューサがまだデプロイされていない場合は、デプロイします。詳細は、第2.4.1.1項「事前構成済ポートレット・プロデューサのデプロイ」を参照してください。

3. アプリケーションにWebクリッピング・プロデューサを登録します。詳細は、第63.2.2項「WebCenter Portal FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。

4. Webクリッピング・ポートレットを対象の「JSPX」ページにドラッグして、アプリケーションに追加します。詳細は、第63.5項「ページへのポートレットの追加」を参照してください。

注意:

Oracle JDeveloperでWebクリッピング・ポートレットのインスタンスをページに追加する際、ポートレットの「プロパティ・インスペクタ」を開き、AllModesSharedScreenプロパティとRenderPortletInIFrameプロパティが次のように設定されていることを確認します。

- AllModesSharedScreenは、「カスタマイズ」と「パーソナライズ」がフル・ページのサイズで表示されるようにFalseに設定されています。

- RenderPortletInIFrameは、表示モードでWebクリッピング・ポートレットが独自のインライン・フレーム(iframe)に表示されるようにTrueに設定されています。

注意:

SSL対応Webサイトをクリップするには、証明書ストアにそれらのサイトの証明書を追加する必要があります。Equifax、VeriSignまたはCybertrustの証明書を使用するSSL対応Webサイトの証明書は追加する必要がありません。これらの証明書は、デフォルトの証明書ストアに含まれています。

証明書の追加の詳細は、第65.5.3.1項「信頼できるサイトの証明書の追加」を参照してください。

65.3 シングル・サインオンを使用した認証されているWebコンテンツの統合

Oracle Single Sign-Onを利用して、認証に必要な外部WebサイトのコンテンツをWebクリッピング・ポートレットに統合できます。

注意:

1つのプロデューサに関連付けることができる外部アプリケーションは1つのみです。外部アプリケーションごとに新規のプロデューサを登録する必要があります。Portal Frameworkアプリケーション・ユーザーは、資格情報ではなく、該当のシステムのユーザー名とパスワードを使用して認証されているコンテンツにアクセスします。

認証が必要な外部アプリケーションを統合するには:

1. JDeveloperでPortal Frameworkアプリケーションを開きます。

2. 認証情報を指定して、外部アプリケーションを登録します。詳細は、第74.13.3.2.1項「外部アプリケーションのOracle JDeveloperでの登録」を参照してください。

3. Webクリッピング・プロデューサを登録します。詳細は、第63.2.2項「WebCenter Portal FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。
Oracle PDK-Javaポートレット・プロデューサの登録ウィザードを使用してプロデューサを登録する際に、「接続詳細の指定」ページで、「プロデューサと外部アプリケーションとの関連付け」チェック・ボックスを選択し、値のリストから登録した外部アプリケーションを選択します。「プロデューサ・セッションの有効化」チェック・ボックスが自動的に選択されます。

図65-1に、Webクリッピング・プロデューサに関連付けられたMyOracleSupportという名前の外部アプリケーションを示します。

図65-1 外部アプリケーションへのWebクリッピング・プロデューサの関連付け

4. 先ほど登録したプロデューサからWebクリッピング・ポートレットを「JSPX」ページに追加します。

5. 「JSPX」ページを右クリックし、「実行」を選択します。

6. 外部アプリケーションの共有資格情報または公開資格情報を指定しなかった場合は、ポートレットに「ログイン情報の更新」リンクが含まれます。このリンクをクリックします。

7. 資格情報を入力し、「OK」をクリックして外部Webサイトにログインします。
図65-2に、MyOracleSupportという名前の外部アプリケーションのログイン画面を示します。

図65-2 統合外部アプリケーションへのログイン

8. Webクリッピング・ポートレットのヘッダーで「アクション」アイコンをクリックし、「カスタマイズ」を選択します。
「Webクリッピングの検索」ページが表示され、外部アプリケーションのデフォルトのURLが「URLの場所」フィールド(図65-3)に表示されます。

図65-3 Webクリッピングの検索

これで、Webクリッピング・ポートレットに表示するWebページの任意のセクションを選択できるようになりました。実行時のWebクリッピング・ポートレットのカスタマイズ方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「Webクリッピング・ポートレットの使用」の章を参照してください。

外部アプリケーションの必要なページをクリップすると、認証が必要なページからのWebクリッピングでも、ポートレットで使用できるようになります。

65.4 Webクリッピングの拡張機能

Webクリッピングは、特定の拡張機能をサポートしています。Webクリッピング・トランスポートAPIを使用してカスタム認証方式を構成し、リソース・プロキシを使用するようにイメージ・リンクをリライトできます。

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

- 第65.4.1項「Webクリッピング・トランスポートAPIの使用方法」

- 第65.4.2項「リソース・プロキシを使用するためのイメージ・リンクのリライト」

65.4.1 Webクリッピング・トランスポートAPIの使用方法

カスタム認証方式をサポートするには、Webクリッピング・トランスポートAPIを使用できます。Webクリッピング・トランスポート・レイヤーを拡張してカスタム認証方式をサポートするには、いくつかの実装およびデプロイの手順を実行する必要があります。

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

- 第65.4.1.1項「Webクリッピング・トランスポートAPIの実装」

- 第65.4.1.2項「Webクリッピング・トランスポートAPIのデプロイ」

65.4.1.1 Webクリッピング・トランスポートAPIの実装

Kerberosなどのカスタム認証方式をサポートする場合は、まず、固有のトランスポート・クラスを実装する必要があります。

カスタム・トランスポート・クラスを実装するには:

1. oracle.portal.wcs.transport.http.HttpTransportLiaisonインタフェースの2つのユース・ケースをオーバーライドします。
Webクリッピングでは、このインタフェースを使用してHTTPトランスポート・レイヤーが抽象化されます。デフォルトでは、次の実装によって、このインタフェースの2つのユース・ケースがマニフェストされます。

- HttpClientStudioTransportLiaisonは、Webクリッピング・スタジオ・モードでHTTPトランスポートを処理します

- HttpClientProviderTransportLiaisonは、Webクリッピング・プロデューサ表示モードでHTTPトランスポートを処理します

その他の認証方式をサポートするには、スタジオとプロバイダの両方のHttpClientTransportLiaison実装についてaddRequestHeadersメソッドをオーバーライドし、独自の認証固有ヘッダーを追加する必要があります。詳細は、Oracle WebLogic Server Webクリッピング・トランスポートAPIリファレンスを参照してください。

2. 新しいサブクラスをコンパイルし、JARファイルにパッケージ化します。
たとえば、新しいサブクラスをコンパイルするには次のコマンドを使用します。

javac -classpath path_to_wcejar -d classes/

ここで、path_to_wcejarは、wce.jarファイルへのパスを指します。

JARファイルを作成するには、たとえば、次のコマンドをclassesディレクトリから実行します。

jar cvf ../mytransport.jar

ここで、mytransport.jarは、ユーザーが作成するJARファイルを指します。

65.4.1.2 Webクリッピング・トランスポートAPIのデプロイ

新しいトランスポート・クラスを実装したら、カスタム認証方式をサポートするためにJARファイルをデプロイする必要があります。

JARファイルをデプロイするには:

1. JARファイルを、実行時にWebクリッピング・プロデューサに使用されるクラス・パスまたは共有ライブラリに置きます。

2. HttpClientProviderTransportLiaisonおよびHttpClientStudioTransportLiaisonに定義されているコンテキスト・パラメータに次の変更を行うことにより、Webクリッピング・プロデューサのweb.xmlファイルにトランスポート・クラスを登録します。

- oracle.webclipping.provider.TransportLiaisonClassのパラメータ値を、HttpClientProviderTransportLiaison クラスから拡張した新しいクラスの名前に変更します。

- oracle.webclipping.studio.TransportLiaisonClassのパラメータ値を、HttpClientStudioTransportLiaisonクラスから拡張された新しいクラスの名前に変更します。

3. プロデューサ・サーバーを再起動して変更を有効にします。

65.4.2 リソース・プロキシを使用するためのイメージ・リンクのリライト

Webクリッピングを使用すると、イメージ・リンクをリライトしてリソース・プロキシを使用できます。この機能を有効にするには、次のエントリをWebクリッピング・プロデューサのweb.xmlファイルに追加する必要があります。

<env-entry>
<env-entry-name>oracle/webclipping/rewriteImageLink</env-entry-name>
<env-entry-type>java.lang.Boolean</env-entry-type>
<env-entry-value>false</env-entry-value>
</env-entry>

65.5 Webクリッピング・ポートレット構成のヒント

Webクリッピングを使用する前に、いくつかの管理タスクを実行する必要があります。

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

- 第65.5.1項「Webクリッピング・リポジトリの構成」

- 第65.5.2項「HTTPまたはHTTPSのプロキシ構成」

- 第65.5.3項「Webクリッピング・プロデューサのセキュリティ」

65.5.1 Webクリッピング・リポジトリの構成

Webクリッピングには、Oracle Metadata Services (MDS)ストアまたはOracleデータベースに永続的に格納する必要がある定義があります。

注意:

Microsoft SQL ServerまたはIBM DB2データベースをWebクリッピング・リポジトリとして使用することはできません。

Webクリッピング・リポジトリ構成は、次の場所にあるWebクリッピング・プロデューサのテスト・ページにアクセスすることで表示できます。

http://host:port/portalTools/webClipping/providers/webClipping

ここでhostは、Webクリッピング・プロデューサのデプロイ先のサーバーであり、portは、サーバーのHTTPリクエストのリスニング先のポートです。

注意:

統合WLSとWLS_Portlet管理対象サーバーは、同じシステム上で使用可能である場合でも、異なるポートにデプロイする必要があります。デフォルトでは、統合WLSはポート7101にデプロイされており、WLS_Portletはポート8889にデプロイされています。

プロバイダ・テスト・ページは、Webクリッピング・プロデューサが有効なリポジトリで構成されているかどうかを自動的に検出します。構成されていない場合、Webクリッピング・リポジトリの「ステータス」列には「未構成」と表示されます。図65-4に、Webクリッピングのプロバイダ・テスト・ページを示します。

図65-4 Webクリッピング - プロバイダ・テスト・ページ

プロバイダ・テスト・ページを使用して、Webクリッピング構成情報を変更することはできません。Webクリッピング・リポジトリは、provider.xmlファイルに適切な値を設定することで構成できます。このファイルでは、repositoryInfoタグを使用して、Webクリッピング・リポジトリ設定を指定します。

注意:

provider.xmlのパスを判別するには、ファイル・システム内でwebClipping/provider.xmlを検索します。たとえば、UNIXでは次のコマンドを実行します。

> find DOMAIN_DIR -name "provider.xml" | grep -i webClipping

Oracle JDeveloperの統合WLSでは、Webクリッピングのprovider.xmlは、次の場所にあります。

JDEV_SYSTEM_DIRECTORY/DefaultDomain/servers/DefaultServer/tmp/_WL_user/portalTools_11.1.1.2.0/RANDOMLY_GENERATED_DIRECTORY/war/WEB-INF/providers/webClipping/provider.xml

Windowsプラットフォームでは、JDeveloperのシステム・ディレクトリへのパスに空白が含まれている場合、Portal Frameworkアプリケーション内のページはレンダリングされません。したがって、JDEV_SYSTEM_DIRECTORYパスに空白が含まれていないことを確認してください。

Fusion Middleware 11gインストールでは、Webクリッピングのprovider.xmlは次の場所にあります。

FMW_HOME/user_projects/domains/wc_domain/servers/WLS_Portlet/tmp/_WL_user/portalTools_11.1.1.2.0/RANDOMLY_GENERATED_DIRECTORY/war/WEB-INF/providers/webClipping/provider.xml

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

- 第65.5.1.1項「Webクリッピング・リポジトリとしてのOracle Metadata Services (MDS)の使用方法」

- 第65.5.1.2項「Webクリッピング・リポジトリとしてのOracleデータベースの使用方法」

- 第65.5.1.3項「provider.xmlでのWebクリッピング・リポジトリの構成」

- 第65.5.1.4項「repositoryInfoタグの属性および子タグ」

- 第65.5.1.5項「Webクリッピング・リポジトリの移行」

65.5.1.1 Webクリッピング・リポジトリとしてのOracle Metadata Services (MDS)の使用方法

デフォルトでは、Oracle JDeveloperで統合WLS(デフォルト・サーバー)でホストされているWebクリッピング・プロデューサは、Webクリッピング・リポジトリとしてファイルベースのMDSを使用するように構成されています。

注意:

完全なOracle Fusion Middlewareインストールでは、Webクリッピング・ポートレット・プロデューサは、デフォルト・ドメインのWLS_Portlets管理対象サーバー内にも組み込まれています。デフォルトでは、このWebクリッピング・ポートレット・プロデューサは、Webクリッピング・リポジトリとして、Oracle WebLogic Serverの一部としてインストールされているOracleデータベースを使用するように構成されています。

例65-1に、provider.xml内のデフォルト・リポジトリとしてのMDSを示します。

例65-1 provider.xml内のデフォルトWebクリッピング・リポジトリとしてのMDS

<repositoryInfo class="oracle.portal.wcs.provider.info.MdsInformation">
<mdsConfigLocation>mds-config.xml</mdsConfigLocation>
</repositoryInfo>

MDSリポジトリの場合、repositoryInfoタグはMdsInformationクラスに設定されます。mdsConfigLocationエントリは、mds-config.xmlファイルのパスを指定します。このファイルには、メタデータ・ストア構成情報(実際のメタデータ・ストアのパスを含む)が納められています。Oracle JDeveloperでは、mds-config.xmlファイルは、次のパスにあります。

JDEV_SYSTEM_DIRECTORY/DefaultDomain/servers/DefaultServer/tmp/_WL_user/portalTools_11.1.1.2.0/RANDOMLY_GENERATED_DIRECTORY/war/WEB-INF

注意:

Windowsプラットフォームでは、JDeveloperのシステム・ディレクトリへのパスに空白が含まれている場合、Portal Frameworkアプリケーション内のページはレンダリングされません。したがって、JDEV_SYSTEM_DIRECTORYパスに空白が含まれていないことを確認してください。

mds-config.xmlファイルでは、プロパティ・タグ内でリポジトリの場所を指定します。

<property name="metadata-path" value="portletdata/tools/webClipping"/>

valueに指定される場所は、JDEV_HOME/portalを基準としています。指定される相対パスは、JDEV_HOME/portalを基準としているものと解釈されます。別の場所(たとえば、Oracle JDeveloperホーム外の場所)を使用するには、絶対パス(c:\mdsなど)を指定します。

注意:

複数中間層デプロイの場合、メタデータ・パスを共有ファイル・システムに変更します。

65.5.1.2 Webクリッピング・リポジトリとしてのOracleデータベースの使用方法

MDSはOracle JDeveloperでのデフォルト・リポジトリですが、かわりに、Webクリッピング・リポジトリ用にデータベース・スキーマを使用することを選択できます。

注意:

Webクリッピング・リポジトリとしてデータベースを使用する場合、カスタマイズは、Webクリッピング・プロデューサまたは消費するアプリケーションを再デプロイする場合でもすべて保持されます。

Webクリッピングには次のデータベース・スキーマのいずれかを使用できます。

- Oracle WebLogic Server向けのRCUによって作成されたデフォルトPORTLETデータベース・スキーマ

- Oracle 9i以上用のユーザー定義データベース・スキーマ

注意:

Microsoft SQL ServerまたはIBM DB2データベースをWebクリッピング・リポジトリとして使用することはできません。

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

- 第65.5.1.2.1項「RCUによって作成されるデータベース・スキーマの使用方法」

- 第65.5.1.2.2項「データベース・スキーマの作成」

65.5.1.2.1 RCUによって作成されるデータベース・スキーマの使用方法

Webクリッピング・リポジトリの場合、jdbc/portletPrefsという名前のJNDIデータ・ソースにより、Oracle WebLogic Serverの一部としてインストールされているOracleデータベースを使用できます。このデータベースにアクセスするには、PORTLETという名前のスキーマを使用します。

注意:

PORTLETスキーマは、WebCenter Portal用に構成されたOracleデータベースで作成する必要があります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド』の「Oracle WebCenter Portalのインストール」の章を参照してください。

65.5.1.2.2 データベース・スキーマの作成

Webクリッピング・リポジトリとしてOracle 9i以上のデータベースの任意のユーザー定義スキーマを使用できます。Webクリッピングの定義およびクリッピング用のデータベース・スキーマを作成するには、例65-2のJavaコマンドを実行します。

例65-2 Webクリッピング・ポートレットの定義およびクリッピング用のスキーマを作成するためのJavaコマンド

java -classpath WC_ORACLE_HOME/lib/xmlparserv2.jar:
WC_ORACLE_HOME/jdbc/lib/ojdbc14.jar:WC_ORACLE_HOME/portal/jlib/wce.jar
oracle.portal.wcs.Installer -installSchema -username dbuser -password
dbpassword -dburl jdbc:oracle:thin:@//host:port/dbid

ここで:

- WC_ORACLE_HOMEは、ご使用のWebCenter Portal Oracleホーム・ディレクトリのパスです。

- dbuserは、スキーマのデータベース・ユーザーです。
WSRPおよびPDK-Javaのプリファレンス・ストア・データベース・スキーマの作成で使用するものと同じデータベース・ユーザーを使用することを検討してください。同じユーザーを使用しない場合は、新規のユーザーを作成し、接続権限とリソース権限を付与する必要があります。

- dbpasswordは、指定したユーザーのパスワードです。

- dburlは、データベースのURLです。
これは、次の構文を使用してWebクリッピング・ポートレットの定義およびクリッピング用に作成するスキーマを含むデータベースです。

jdbc:oracle:thin:@//dbhost:dbport/service_name

例:

jdbc:oracle:thin:@//shobeen:1521/sales_us

注意:

例65-2のクラスパスでは、UNIXとWindowsで異なるセパレータを使用しています。UNIXシステムでは、classpathにコロン(:)セパレータを使用します。Windowsシステムでは、classpathにセミコロン(;)セパレータを使用します。

65.5.1.3 provider.xmlでのWebクリッピング・リポジトリの構成

統合WLSにデプロイされたWebクリッピング・プロデューサのリポジトリ構成を変更するには:

1. テキスト・エディタでprovider.xmlファイルを開きます。

2. ご使用のWebクリッピング・リポジトリの設定を指定します。

- RCUによって作成されるJNDIデータ・ソースによって参照されるPORTLETスキーマを使用します。例65-3に示すエントリを指定します。

例65-3 Webクリッピング・リポジトリとしてのOracleデータベース

<repositoryInfo class="oracle.portal.wcs.provider.info.JdbcDbInformation">
<connectionName>jdbc/portletPrefs</connectionName>
<useRAA>false</useRAA>
<useASO>false</useASO>
</repositoryInfo>

タグ・パラメータの詳細は、第65.5.1.4項「repositoryInfoタグの属性および子タグ」を参照してください。

- Oracle database 9i以上用に作成されたデータベース・スキーマを使用します。そこで、接続情報を手動で指定できます。
Webクリッピング・リポジトリとしてOracle 9i以上を指定するには、例65-4に示すエントリでデータベース接続パラメータを指定します。

例65-4 Webクリッピング・リポジトリとしてのOracle Database 9i以上の設定

<repositoryInfo class="oracle.portal.wcs.provider.info.DatabaseInformation">
<useRAA>false</useRAA>
<databaseHost>dbhost.mycompany.com</databaseHost>
<databasePort>1521</databasePort>
<databaseSid>iasdb</databaseSid>
<databaseUsername>scott</databaseUsername>
<databasePassword>!tiger</databasePassword>
<useASO>false</useASO>
</repositoryInfo>

タグ・パラメータの詳細は、第65.5.1.4項「repositoryInfoタグの属性および子タグ」を参照してください。

セキュアなデータベース接続が必要な場合は、useASOエントリをtrueに設定することで、詳細セキュリティ・オプション(ASO)を有効にします。ASOの構成の詳細は、第65.5.3項「Webクリッピング・プロデューサのセキュリティ」を参照してください。

注意:

provider.xmlには、<repositoryInfo>の1つのエントリのみが存在できます。選択したWebクリッピング・リポジトリに応じて、そのエントリのみ非コメント化する必要があります。

3. provider.xmlファイルを保存します。

4. 統合WLSを再起動します。

65.5.1.4 repositoryInfoタグの属性および子タグ

表65-1に、repositoryInfoタグの属性および子タグとその説明を示します。

注意:

repositoryInfoタグの属性および子タグは、Webクリッピングのprovider.xmlファイルのコメントでも説明されています。

provider.xmlファイルのコメントでは、Oracleインフラストラクチャ・データベースを使用するOracle9iデータベース以上用に提供されている例は、Oracle Portalと、そのインフラストラクチャ・データベースおよびアプリケーション・プログラミング・インタフェース専用です。その例は、Portal Frameworkアプリケーションの実装には使用しないでください。

表65-1 repositoryInfoタグの属性および子タグ

属性/パラメータ

MDS/データベース

説明

class

両方

class属性は、Webクリッピングの定義の格納に使用されるリポジトリのタイプを指定します。この属性には、次の値を指定できます。

- oracle.portal.wcs.provider.info.MdsInformation
この値は、Webクリッピングの定義の格納にMDSが使用され、MDS構成がmds-config.xmlファイルにプッシュされることを意味します。

- oracle.portal.wcs.provider.info.DatabaseInformation
この値は、Webクリッピングの定義の格納にはOracle9iデータベース以上が使用され、データベースの接続の詳細はrepositoryInfoタグに子として含まれることを意味します。

- oracle.portal.wcs.provider.info.JdbcDbInformation
この値は、Oracle WebLogic Serverの一部としてインストールされているOracleデータベースが、Webクリッピング定義の格納に使用されることを示しています。

mdsConfigLocation

MDS

class属性の値がMDSリポジトリを示す場合、mdsConfigLocationタグを使用します。それは、MDS構成ファイルmds-config.xmlを指しており、それによって実際のMDSの場所が指定されます。mds-config.xmlファイルは、次の場所にあります。

MW_HOME/wlserver_10.3/wc_domain/servers/WLS_Portlet/tmp/_WL_user/portalTools_11.1.1.2.0/yyggl7/war/WEB-INF

connectionName

データベース

RCUを使用してWebクリッピング・リポジトリがインストールされたデータ・ソースのJNDI名を指定します。デフォルトでは、接続名はjdbc/portletPrefsであり、それはOracle WebLogic ServerのPORTLETスキーマを指しています。

Oracle WebLogic Server 11g中間層がOracle Application Server 10gリポジトリとペアになっている相互運用シナリオでは、接続はOracle Application Server 10gリポジトリのPORTALスキーマを指しています。

useASO

データベース

trueまたはfalseに設定します。

- Webクリッピング・プロデューサとデータベース間の通信チャネルの暗号化にOracle Advanced Security Option (ASO)を使用するには、trueを指定します。これは、クリップされたコンテンツに大文字小文字の区別があるデータ含まれている場合に追加のセキュリティを導入するために用意されています。

- このオプションを省略する場合は、falseを指定します。

useRAA

データベース

trueまたはfalseに設定します。

- データベース接続パラメータへのアクセスにリポジトリ・アクセスAPIが使用される場合は、trueを指定します。trueを指定することは、Webクリッピング・プロデューサでリポジトリとしてデフォルトのOracleインフラストラクチャ・データベースを使用することに相当します。
trueを指定すると、他のrepositoryInfo子タグの必要がなくなります。

- このオプションを省略する場合は、falseを指定します。

databaseHost

データベース

Oracleデータベースのホスト名を指定します。バージョン9i以上のみを使用します。例:

mycompany.dbhost.com

databasePort

データベース

Oracleデータベース・リスナーのポート番号を指定します。これは通常1521です。

databaseSid

データベース

Webクリッピング・リポジトリをホスティングするデータベースのOracle SIDを指定します。

databaseUsername

データベース

データベースへのログインに使用するユーザー名を入力します。

databasePassword

データベース

指定したデータベース・ユーザー名のプレーン・テキストのパスワードを入力します。パスワードの前に感嘆符(!)を付け、Webクリッピング・プロデューサが起動と同時にパスワードを暗号化できるようにします。

例:

!AX3tR

65.5.1.5 Webクリッピング・リポジトリの移行

デフォルトでは、Webクリッピングは、ファイルベースのMDSを使用し、Webクリッピング定義および関連するメタデータを格納します。ただし、データベースを使用するようにWebクリッピングを構成できます。Portal Frameworkアプリケーション用にこのリポジトリを移行するには、エクスポートおよびインポート・モードでデプロイ前ツールを使用して、MDSからデータベースへ、あるいはその逆に移行します。この手順は、アプリケーションごとに次のように実行する必要があります。

1. Webクリッピング・プロデューサを使用するすべてのPortal Frameworkアプリケーションに対して、デプロイ前ツールをexportモードで実行します。

2. 別のリポジトリを使用するように、プロデューサを更新します。詳細は、第65.5.1.3項「provider.xmlでのWebクリッピング・リポジトリの構成」を参照してください。

3. Webクリッピング・プロデューサを使用するすべてのPortal Frameworkアプリケーションに対して、デプロイ前ツールをimportモードで実行します。

65.5.2 HTTPまたはHTTPSのプロキシ構成

HTTPまたはHTTPSのプロキシ設定は、Webクリッピング・スタジオがファイアウォールの外にあるWebサイトに接続できるように設定する必要があります。provider.xmlファイルを手動で編集することにより、設定を指定できます。

Portal Frameworkアプリケーション管理者は、HTTPまたはHTTPS構成に従って、手動でプロキシ設定を設定できます。provider.xmlファイルの該当するエントリを編集します。

例65-5では、provider.xmlの該当する部分を示しています。

例65-5 プロキシ設定

- <!--
proxy information: Fill the following up if you have a proxy
server between the provider and external sites.
<proxyInfo class="oracle.portal.provider.v2.ProxyInformation">
<httpProxyHost>proxy.mycompany.com</httpProxyHost>
<httpProxyPort>80</httpProxyPort>
<dontProxyFor>*.mycompany.com</dontProxyFor>
<proxyUseAuth>true</proxyUseAuth>
<proxyType>Basic</proxyType>
<proxyRealm>realm1</proxyRealm>
<proxyUseGlobal>false</proxyUseGlobal>
<proxyUser>scott</proxyUser>
<proxyPassword>!tiger</proxyPassword>
</proxyInfo>

-->

<proxyUseAuth>、<proxyType>、<proxyRealm>、<proxyUseGlobal>、<proxyUser>および<proxyPassword>のタグに値を指定するかどうかはオプションです。

表65-2では、provider.xmlファイルで指定するプロキシ設定について説明しています。

表65-2 Provider.xmlのタグ

パラメータ

説明

httpProxyHost

Webクリッピング・プロバイダからそのデータ・ソースにURL接続するためにプロキシ・サーバーが必要な場合に、そのプロキシ・サーバーのホスト名を入力します。

httpProxyPort

HTTPプロキシ・ホストのポート番号を入力します。

dontProxyFor

プロキシ・サーバーを介さずに直接接続できるドメインまたはホスト名を入力します。ドメイン名は、次の例のように、企業、組織、政府機関などの名前を含むURLの一部です。

*.company.com, *.us.company.com

ホストは、完全修飾ホスト名でもIPアドレスでもかまいません。

proxyUseAuth

指定可能な値: true | false

プロキシ・サーバーに認証が必要な場合は、trueを入力します。認証パラメータは、proxyType、proxyRealm、proxyUseGlobal、proxyUserNameおよびproxyPasswordのタグによって指定します。

proxyType

指定可能な値: Basic | Digest

プロキシ・サーバーのタイプを選択します。

BasicまたはDigest認証の詳細は、http://www.faqs.org/rfcs/rfc2617.htmlを参照してください。

proxyRealm

この表で後から説明するログイン情報に従い、ユーザーがアクセスするプロキシ・サーバーのレルムの名前を入力します。レルムの名前がわからない場合は、プロキシ・サーバーの管理者に問い合せてください。

proxyUseGlobal

指定可能な値: true | false

trueの場合、<proxyUser>と<proxyPassword>の値はすべてのユーザーに使用されます。ユーザーには「ソース」タブおよび「パーソナライズ」ページで「プロキシ認証」セクションが表示されません。falseの場合、ページ設計者は、ポートレットを定義する際、「ソース」タブの「プロキシ認証」セクションを使用してログインする必要があります。エンド・ユーザーは、「パーソナライズ」画面の「プロキシ認証」セクションを使用してログインする必要があります。<proxyUsername>および<proxyPassword>を指定すると、それらはパブリック・ユーザーにのみ使用されます。

proxyUserName

プロキシ・サーバーにログインするユーザー名を入力します。

ProxyPassword

指定したユーザー名のパスワードを入力します。プレーン・パスワード・テキストの前に!を付ける必要があります。プロデューサが起動すると、これはprovider.xmlファイルで暗号化されて保護されます。

注意:

外部のWebサイトに接続するためにプロキシ・サーバーを使用する環境の場合、dontProxyForエントリを使用して、プロキシ例外リストを指定できます。Webクリッピングではプロキシ例外リストを使用して、ユーザーが未認可の外部Webサイトからコンテンツをクリッピングできないように制限します。ユーザーがリストにあるドメイン内のWebサイトをWebクリッピング・スタジオから参照しようとすると、HTTPタイムアウト・エラーが発生します。

65.5.3 Webクリッピング・プロデューサのセキュリティ

ここまでの項では、Webクリッピング・プロデューサを使用できるようにするために実行する必要のある管理タスクについて説明しました。この後の項では、Webクリッピング・プロデューサがSecure Sockets Layer (SSL)対応Webサイトにアクセスし、それ自体とデータベース間のチャネルを暗号化できるようにするために、実装する必要のあるセキュリティ構成オプションのいくつかについて説明します。

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

- 第65.5.3.1項「信頼できるサイトの証明書の追加」

- 第65.5.3.2項「Webクリッピング・プロデューサに対するOracle Advanced Securityの構成」

65.5.3.1 信頼できるサイトの証明書の追加

ユーザーがセキュアなサイトへ移動すると、そのWebサイトは、セキュリティに関する情報をユーザーから要求されたときに自身の身元を示す証明書をユーザーに返すことが普通です。ユーザーが証明書を受け取ると、その証明書はブラウザの信頼できる証明書のリスト内に置かれるので、ブラウザとそのサーバーとの間でセキュアなチャネルを開くことができます。Webブラウザと同様に、Webクリッピング・プロデューサは外部Webサイトに対してHTTPクライアントとして機能します。信頼できるサイトを記録するために、Webクリッピング・プロデューサは、cacertsファイルを使用します。これは、信頼できる証明書を格納するためのJavaキーストアです。

デフォルトでは、cacertsファイルには、Equifax、VeriSign、Cybertrustの証明書など様々な証明書が格納されます。ただし、これには、Web上に存在する使用可能なサーバー証明書の一部は含まれていません。このため、ユーザーがHTTPSを使用してセキュアなサーバーに移動しているときに、Webクリッピング・スタジオ内で、SSLのハンドシェイク失敗例外が発生することがあります。この問題を解決するために、そのサイトの証明書をcacertsファイルに追加する必要があります。

証明書をcacertsファイルに追加するには:

1. HTTPS Webサイトの証明書をダウンロードし、その証明書をPEM形式で保存します。

ヒント:

Mozilla Firefox 3.0以上では、証明書ファイルをPEM形式で保存できます。

2. 次のようにして、cacertsファイルを見つけます。

1. 次のURL書式を使用してOracle WebLogic Server管理コンソールにログインします。
http://host:port/console

2. WLS_Portlets管理対象サーバーの「キーストア」タブを開きます。

3. 「Java標準信頼キーストア」フィールドに指定されているcacertsファイルの場所を書き留めます。

図65-5 cacertsファイルを見つける

3. コマンド・プロンプトで、cacertsファイルの場所に移動し、次のコマンドを実行して証明書を追加します。
keytool -importcert -alias certi_alias -file certifi_name -keystore cacerts -storepass password

ここで、certi_aliasは証明書に使用される別名を、certifi_nameは証明書ファイル名を、passwordはcacertsファイルのパスワードをそれぞれ指します。デフォルト・パスワードはchangeitです。

例:

keytool -importcert -alias stamf05 -file stamf05.crt -keystore cacerts -storepass changeit

ヒント:

別名を使用することで、信頼できる証明書をcacertsファイルにインポートすることをお薦めします。これにより、キーストアのエントリの削除またはリストが容易になります。

65.5.3.2 Webクリッピング・プロデューサに対するOracle Advanced Securityの構成

Webクリッピング・プロデューサでは、Oracle Advanced Security Option (ASO)を使用して、自身とWebクリッピング・リポジトリをホスティングするデータベースとの間のチャネルを保護し、暗号化できます。この機能は、任意のOracleデータベースをWebクリッピング・リポジトリとして選択した場合にのみ使用可能です。Oracle JDeveloperでは、Oracle Metadata ServicesがデフォルトのWebクリッピング・リポジトリであるため、この機能はデフォルトでは無効です。

ASOを有効にするには:

1. テキスト・エディタでprovider.xmlを開きます。

2. ファイルのリポジトリ設定セクション(例65-3に示す)で、useASOエントリをtrueに設定します。

3. provider.xmlファイルを保存します。

さらに、sqlnet.oraファイル内に次のASO構成パラメータを設定して、Webクリッピング・プロデューサと、Webクリッピング・リポジトリのホストとして動作するデータベース間で確立されるデータベース接続でASOが使用されるようにします。

- SQLNET.AUTHENTICATION_SERVICES -- このパラメータは、ASOによるデータベース接続作成で、サポートされている認証方法を選択するために使用されます。このパラメータの設定の詳細は、『Oracle Database Advanced Security管理者ガイド』を参照してください。

- SQLNET.CRYPTO_SEED -- このパラメータは、ASOによるデータベース接続作成に使用される、暗号化シード値(FIPS 140-1設定)を示しています。
パラメータの設定およびパラメータの様々な可能な組合せに使用する値の詳細は、『Oracle Database Advanced Security管理者ガイド』を参照してください。

注意:

最初の構成、つまりデータベース・パラメータがすでに設定されている状態の後にこれらのパラメータを設定する場合は、データベース接続が開いているとみなされます。ASOを有効にすると、データベースへのすべての接続が影響を受けるため、ASOを使用する場合は、Webクリッピング・プロデューサが含まれている統合WLSを再起動して、現在のすべての接続をリセットすることをお薦めします。ASOを無効にする場合も、これを行う必要があります。

65.6 Webクリッピングに関する現在の制限

Webクリッピングを使用する場合は、次の制限に注意する必要があります。

- クリップするサイトで、Cookieを操作するために多数のJavaScriptが使用されている場合、または、書き出されるHTML文書を変更するためにJavaScriptメソッドのdocument.writeが使用されている場合は、そのサイトからコンテンツをクリップできない場合があります。

- パートナ・アプリケーションと(mod_ossoを使用して)統合する場合、認証された方法ではそのパートナ・アプリケーションを介して直接クリップできません。ただし、パートナ・アプリケーションは、外部アプリケーション・フレームワークを介して使用できます。

- Webクリッピング・ポートレットを使用して、Oracle PortalページやADFページをクリップすることはできません。回避策としては、接続先ポータルで同じプロデューサを再登録し、そのポータルを手動で編集します。

- Webクリッピング・ポートレットを使用して、複数のフレーム(フレームセット)を含むWebページをクリップすることはできません。

- WebクリッピングとCSSの使用に関して次の点に注意してください。

- CSSを使用するポートレットがWebページに複数ある場合、CSSが、スタイルの名前としてHTMLタグ名(<A>など)ではなく個別のスタイル名(OraRefなど)を使用してHTMLタグ内にスタイルを指定すれば、ポートレットが競合することはありません。

- あるポートレットがCSSを使用し、そのCSSが、スタイルの名前としてタグ名(<A>など)を使用してHTMLタグの動作を上書きし、同じページの2番目のポートレットがCSSを使用しない場合、2番目のポートレットは、最初のポートレットのCSSのスタイル指示によって影響されます。

- 同じページにある2つのポートレットが別々のCSSを使用し、各CSSがスタイル名としてHTMLタグ名(<A>など)を使用して相手のHTMLタグの動作を上書きする場合、表示されるスタイルはブラウザによって異なってきます。

- Webクリッピングは、次の方法でグローバリゼーション・サポート設定をチェックします。

1. Webクリッピングは、charset属性がないかHTTPヘッダーのContent-Typeをチェックします。キャラクタ・セット属性がある場合は、これがHTMLページの文字コードであるとみなします。

2. charset属性がない場合は、Webクリッピングは、ページのHTML METAタグをチェックして文字コードを突き止めます。

3. HTML METAタグがない場合、Webクリッピングは以前にブラウズされたページのcharsetを使用します。これがブラウズした最初のページである場合は、デフォルトの文字コードISO-8859-1をとります。

4. Content-TypeまたはMETAタグのcharsetの値がサポートされていない(たとえば、charsetがNONEとして指定されている)場合、Webクリッピングは、以前にブラウズされたページのcharsetではなくデフォルトのキャラクタ・セットISO-8859-1を使用します。

- Webクリッピング・ポートレットを使用するには、Windows 2000ではNetscape 7.0以上、Microsoft Internet Explorer 5.5以上、Windows XPではMicrosoft Internet Explorer 6.0以上を使用する必要があります。使用するブラウザのバージョンがこれより古い場合は、JavaScriptエラーが発生する可能性があります。

65.7 Webクリッピングのトラブルシューティング

この項では、Webクリッピングの使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

行n、列nで"x"が見つかりました。期待される値(いずれか): "x"、"y" ...

パーサー・エラー・メッセージがログ・ファイルに書き込まれました。

問題

Webクリッピング・ポートレットに表示されているWebコンテンツに無効なHTMLまたはJavaScriptが含まれています。

解決方法

これは、Webクリッピング・エラーではなく、サイト固有の問題です。サイトの管理者に連絡して支援を求めてください。

第XI部

パーソナライズされたコンテンツの配信

第XI部の内容は次のとおりです。

- 第66章「Oracle WebCenter Portalアプリケーションのパーソナライズ」

- 第67章「カスタム・データ・プロバイダの実装」

- 第68章「カスタム・ファンクション・プロバイダの実装」

- 第69章「ファンクション・プロバイダ・リファレンス」

- 第70章「プロパティ・サービスの使用」

- 第71章「プロパティ・サービスREST API」

- 第72章「コンダクタAPIリファレンス」

- 第73章「パーソナライズのためのキャッシュ管理」

66 Oracle WebCenter Portalアプリケーションのパーソナライズ

この章では、パーソナライズをPortal Frameworkアプリケーションに統合し、ユーザーとアプリケーションの両方のコンテキストに基づく、ターゲット・コンテンツを提供する方法について説明します。また、この章ではアプリケーション・フローの宣言型定義を可能にする、パーソナライズ・ランタイム・システムおよびその関連ツールについても説明します。

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

- 第66.1項「パーソナライズの概要」

- 第66.2項「アプリケーションへのパーソナライズの統合」

- 第66.3項「パーソナライズ・ファイルのデプロイ」

- 第66.4項「チュートリアル: 単純なアプリケーションの作成、テストおよびデプロイ」

- 第66.5項「WebCenter Portalでのパーソナライズの使用」

パーソナライズの詳細は、次も参照してください。

- 付録Fの「パーソナライズに関連するEL」

- Oracle Fusion Middleware Oracle WebCenter Portalの管理の「パーソナライズの管理」

66.1 パーソナライズの概要

パーソナライズによって、Portal Frameworkアプリケーションで、動的に導出されたユーザー・エクスペリエンスが提供されます。パーソナライズでは、入力データの定義済ソースが評価され、その評価に基づく決定が生成された後、その情報が宣言的に定義されたパーソナライズ・シナリオに適用されます。たとえば、パーソナライズでは、特定のユーザーのアプリケーション体験をターゲットとし、そのユーザーに関する人事管理データベース内の情報に基づいて、コンテンツを戻したり、アプリケーション・フローを変更したりできます。

この項では、パーソナライズの機能と要件の概要について説明します。内容は次のとおりです。

- 第66.1.1項「パーソナライズ・アーキテクチャ」

- 第66.1.2項「コンダクタ」

- 第66.1.3項「データ・プロバイダの使用」

66.1.1 パーソナライズ・アーキテクチャ

図66-1にアーキテクチャ、即時利用可能なサービス、およびパーソナライズを構成するコンポーネントを示します。これらについて、およびパーソナライズのその他のコンポーネントについては、次を参照してください。

- 第66.1.2項「コンダクタ」

- 第66.1.3項「データ・プロバイダの使用」

図66-1 パーソナライズ・サービスのアーキテクチャ

66.1.2 コンダクタ

この項では、コンダクタの役割について説明します。パーソナライズ・エンジンの中心であるコンダクタは、シナリオと呼ばれる作業単位を含み、それらを実行します。コンダクタは、準備済のシナリオを実行し、コンダクタに接続するプロバイダ拡張機能へのアクセスを提供します。次の項では、コンダクタのこれらの側面について説明します。

- 第66.1.2.1項「シナリオ」

- 第66.1.2.2項「パーソナライズされたアプリケーション・フロー」

- 第66.1.2.3項「プロパティ・セットの統合」

- 第66.1.2.4項「プロバイダの統合」

66.1.2.1 シナリオ

シナリオは、JDeveloperのシナリオ・エディタを使用して作成するスクリプトによって定義します(または、XMLファイルとして提供します)。シナリオは簡単な構文に基づいており、条件文の評価が可能です。その結果として、なんらかの形式のコンテンツがクライアントに返されます。コンテンツはクライアントへの返却に先立ち、フィルタ処理または操作できます。

シナリオは、目的のコンテンツを返すかわりに、アプリケーション・フローを動的に変更するためにも使用できるため、アプリケーション内でのユーザー・エクスペリエンスのパーソナライズが可能になります。

JDeveloperでは、シナリオ・エディタを使用して、シナリオをグラフィカルに設計できます。また、XMLファイル・ベースのシナリオを作成することもできます。第66.2.2.3項「シナリオ・エディタでの新しいシナリオの作成」および第66.2.2.4項「ノード・タイプを使用したシナリオ・フローの指定」を参照してください。また、第66.2.3項「ファイル・ベースのシナリオの作成」も参照してください。

66.1.2.2 パーソナライズされたアプリケーション・フロー

コンダクタ内で実行されるシナリオでは、特定のユーザーをターゲットとしたコンテンツを戻すだけでなく、アプリケーション・フローを制御したり、ユーザー・インタフェース・コンポーネントをレンダリングしたり、アプリケーション関連イベントを実行したりすることもできます。コンダクタのパブリックJavaおよび式言語(EL) APIを使用すると、既存のJavaアプリケーションやWebベースのアプリケーションとのシームレスな統合を実現できます。Java APIおよびEL APIの使用の詳細は、第72章「コンダクタAPIリファレンス」を参照してください。

66.1.2.3 プロパティ・セットの統合

プロパティ・サービスは、プロパティ・セットを使用してユーザーまたはアプリケーション・データのセットを編成し、プロパティ定義を使用してプロパティ・データにデータ型を割り当てます。プロパティ・サービスを拡張すると、企業のLDAPリポジトリに格納されている他のユーザー・プロファイル・データにアクセスしたり、Oracle MDSなどの他のリポジトリにアクセスしたりできます。プロパティ・サービスとプロパティ・セットの詳細は、第66.2.2.2項「プロパティ・セットとプロパティ定義の作成」を参照してください。

66.1.2.4 プロバイダの統合

プロバイダによって、シナリオ内の外部リソースにアクセスする方法が提供されます。コンダクタでは、プロパティ・サービス、Content Serverプロバイダ(CMIS)およびアクティビティ・グラフに対応した3つのデフォルト・プロバイダだけでなく、シナリオ内からのカスタム・プロバイダの実装とそれらへのアクセスを可能にする、拡張可能なアーキテクチャもサポートされます。プロバイダの詳細は、第66.1.3項「データ・プロバイダの使用」を参照してください。

66.1.3 データ・プロバイダの使用

データ・プロバイダは、外部サービスとの通信を可能にする、コンダクタ用のインタフェース・ポイントです。パーソナライズによって、プロパティ・サービスに対応したデフォルト・プロバイダ、Oracle WebCenter Content Serverとの対話処理を可能にするCMISプロバイダおよびアクティビティ・グラフと、プロパティ・サービス・プロバイダがピープル・コネクションとの統合を実現するために使用するロケータが提供されます。また、データ・プロバイダおよびファンクション・プロバイダという実装可能な2つのタイプのカスタム・プロバイダも提供されます。

この項では、デフォルト・プロバイダと2つのタイプのカスタム・プロバイダについて説明します。内容は次のとおりです。

- 第66.1.3.1項「デフォルト・プロバイダ」

- 第66.1.3.2項「カスタム・データ・プロバイダの作成」

- 第66.1.3.3項「カスタム・ファンクション・プロバイダの作成」

66.1.3.1 デフォルト・プロバイダ

この項では、シナリオ内からアクセスできるデフォルト・プロバイダについて、およびプロパティ・サービス・プロバイダがピープル・コネクションとの統合を実現するために使用するロケータについて説明します。

この項には次のサブセクションが含まれます:

- 第66.1.3.1.1項「プロパティ・サービス・プロバイダ」

- 第66.1.3.1.2項「CMISプロバイダ」

- 第66.1.3.1.3項「アクティビティ・グラフ・プロバイダ」

- 第66.1.3.1.4項「ピープル・コネクション・ロケータ」

66.1.3.1.1 プロパティ・サービス・プロバイダ

プロパティ・サービス・プロバイダを使用すると、プロパティ・サービスとの統合を実現できます。また、このプロバイダを使用すると、特定のプロパティ・セット定義に対応したプロパティ・セットを取得したり、名前でプロパティ・セットを取得したり、プロパティ・セットから特定のプロパティを戻したりできます。プロパティ・サービス・プロバイダの詳細は、第66.2.2.6.1項「プロパティ・サービス・プロバイダの使用」を参照してください。

66.1.3.1.2 CMISプロバイダ

CMISプロバイダは、特にOracle WebCenter Content Serverにより提供される標準ベースのCMIS (Content Management Interoperability Services)コンテンツ・サーバーからコンテンツを取得および検索するサービスを提供します。CMISプロバイダには、結果を簡略化されたフォームに変換するためのユーティリティ関数プロバイダも用意されています。CMISプロバイダの統合の詳細は、第66.2.2.6.2項「CMISプロバイダの使用」を参照してください。コンテンツ・サーバー・プロバイダに対する接続構成の作成と編集の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のRESTサービスのアイデンティティ・アサーション・プロバイダの構成に関する項を参照してください。

66.1.3.1.3 アクティビティ・グラフ・プロバイダ

アクティビティ・グラフ・プロバイダ(ActivityGraphProvider)は、WebCenter内での分析に基づいて、ユーザーの接続に関するニーズに対して推奨事項を提供するアクティビティ・グラフ・エンジン(アクティビティ・グラフ・サービスの基準)との統合を実現します。たとえば、アクティビティ・グラフ・プロバイダのメソッドrecommendedUsersは、指定されたユーザーが接続する可能性のあるユーザーのリストについてアクティビティ・グラフ・エンジンに問い合せます。

アクティビティ・グラフ・エンジンは、エンタープライズ・アプリケーションによって収集されるアクションの中央リポジトリを提供します。アクティビティ・グラフ・サービスとアクティビティ・グラフ・エンジンの詳細は、第46章「アクティビティ・グラフの統合」を参照してください。

アクティビティ・グラフ・プロバイダは、WebCenter Portalサーバー(WC_Spaces)上で実行しているアクティビティ・グラフの2つのRESTサービスにビルドされているため、WebCenter Portalを使用環境にインストールする必要があります。アクティビティ・グラフ・プロバイダのシナリオへの統合の詳細は、第66.2.2.6.3項「アクティビティ・グラフ・プロバイダの使用」を参照してください。アクティビティ・グラフ・プロバイダの接続構成の作成と編集の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフ・プロバイダの構成に関する項を参照してください。

66.1.3.1.4 ピープル・コネクション・ロケータ

ピープル・コネクション・ロケータは、プロパティ・プロバイダがピープル・コネクションとの接続に使用するIPropertyLocatorです。ピープル・コネクションの利点の1つは、WebCenter Portalに格納されているユーザー・プロファイル情報にアクセスできることです。ピープル・コネクションの詳細は、第36.3.4.2.16項「ピープル・コネクションの使用」を参照してください。ピープル・コネクション・ロケータの詳細は、第66.2.2.6.1項「プロパティ・サービス・プロバイダの使用」を参照してください。ピープル・コネクション・ロケータの接続構成の作成と編集の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のOracleピープル・コネクション・ロケータの構成に関する項を参照してください。

66.1.3.2 カスタム・データ・プロバイダの作成

データ・プロバイダは、コンダクタのアーキテクチャに接続し、なんらかのサービスのかわりに機能するコンポーネントです。データ・プロバイダから戻されたデータは、そのまま(Javaクラスとして)使用することも、連結して同じシナリオに含まれる他のデータ・プロバイダへの入力として使用することもできます。

データ・プロバイダは通常、指定されたユーザーの入力コンテキストで、または外部アプリケーション・データ・セットで(またはその両方で)動作します。パーソナライズには、ユーザー・データまたはアプリケーション・データ用に入力済データ記憶域を提供できるプロパティ・サービスが含まれていて、プロバイダへの入力としてアクセスできます。独自のデータ・プロバイダの作成の詳細は、第67章「カスタム・データ・プロバイダの実装」を参照してください。

66.1.3.3 カスタム・ファンクション・プロバイダの作成

ファンクション・プロバイダでは、式言語(EL)式を使用して起動できるユーティリティ・メソッド(データの操作と変換、ビジネス・ルールの計算などの用途があります)の作成を目的とした、コンダクタ用の拡張ポイントも提供されます。単純な例は、${strings:concat('string1','string2')})です。独自のファンクション・プロバイダの作成の詳細は、第68章「カスタム・ファンクション・プロバイダの実装」を参照してください。

CMISプロバイダとアクティビティ・グラフ・プロバイダには、それぞれ、その他のユーティリティとして特に、データ変換を容易にする独自のファンクション・プロバイダがあります。パーソナライズELの詳細は、付録Fの「パーソナライズに関連するEL」を参照してください。

66.2 アプリケーションへのパーソナライズの統合

この項では、Portal Frameworkアプリケーションにパーソナライズを統合する方法について説明します。

この項には次のサブセクションが含まれます:

- 第66.2.1項「パーソナライズの要件」

- 第66.2.2項「JDeveloperでのパーソナライズされたシナリオの作成」

- 第66.2.3項「ファイル・ベースのシナリオの作成」

- 第66.2.4項「実行時のターゲット・コンテンツの表示」

66.2.1 パーソナライズの要件

この項では、JDeveloperを使用して、パーソナライズ・サービスを統合するWebCenter Portalアプリケーションを開発するための、設計時のシステム要件と依存性について説明します。パーソナライズの要件、依存性およびオプションの全リストは、Oracle Fusion Middleware Oracle WebCenter Portalの管理のパーソナライズの前提条件および制限に関する項を参照してください。

- シナリオ内でCMISプロバイダ、アクティビティ・グラフ・プロバイダまたはピープル・コネクション・ロケータを使用している場合は、WebCenter Portalをインストールする必要があります。基本的な反復開発の場合、ドメインにWebCenter Portalをインストールする必要はありません。

- REST APIを使用するには、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「始める前に: 必須の構成の実行」に概要が記載されている手順を実行する必要があります。

- パーソナライズでは、WebCenterトラスト・サービスによって、CMISプロバイダ経由でアクセスされるOracle WebCenter Content: Content Serverなど、WebCenterドメインに含まれる様々な管理対象サーバー間のシングル・サインオン(SSO)が提供されます。JDeveloperの統合ドメインの場合、DefaultDomain/scrpts-wcpsディレクトリにあるWLSTスクリプト(configureWCPS.py)を使用して、トラスト・サービスを構成する必要があります。WebCenterトラスト・サービスの構成およびこのスクリプトを使用したシングル・サインオンの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のシングル・サインオンの構成に関する項を参照してください。

- RESTサービスを構成する必要があります。RESTサービスの構成方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「RESTサービスの管理」の章を参照してください。

注意:

必要に応じて、アクティビティ・グラフとピープル・コネクションに対応したデフォルト・プロバイダをアプリケーションに含めることができますが、結果をJDeveloper内でテストすることはできません。また、これらのプロバイダは一部のみ構成されるため、Oracle Fusion Middleware Oracle WebCenter Portalの管理のOracle People Connectionsサービスの構成に関する項とアクティビティ・グラフ・サービスの構成に関する項の説明に従って、プロバイダの構成を完了する必要があります。

66.2.2 JDeveloperでのパーソナライズされたシナリオの作成

この項では、JDeveloperのパーソナライズ・ツールを使用して、パーソナライズされたシナリオを作成する方法について説明します。内容は次のとおりです。

- 第66.2.2.1項「プロパティ・ネームスペース・ファイルの作成」

- 第66.2.2.2項「プロパティ・セットとプロパティ定義の作成」

- 第66.2.2.3項「シナリオ・エディタでの新しいシナリオの作成」

- 第66.2.2.4項「ノード・タイプを使用したシナリオ・フローの指定」

- 第66.2.2.5項「プロパティ・セットとプロパティ・ロケータの定義」

- 第66.2.2.6項「デフォルト・プロバイダの使用」

66.2.2.1 プロパティ・ネームスペース・ファイルの作成

シナリオ設定の最初の手順は、プロパティ・ネームスペース・ファイルの作成です。このファイルには、シナリオが実行されるネームスペースの設定が格納されますが、これは通常、一連のデフォルト・プロパティ定義です。このファイルには、後ほど第66.2.2.2項「プロパティ・セットとプロパティ定義の作成」で定義する、プロパティ定義およびプロパティ・セット定義も格納されます。

JDeveloperでプロパティ・ネームスペース・ファイルを作成するには:

1. アプリケーション・ナビゲータでアプリケーションを開き、「ファイル」メニューから「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます(図66-2を参照)。

図66-2 「新規ギャラリ」ダイアログ

注意:

「パーソナライズ」カテゴリが表示されない場合は、「すべてのテクノロジ」タブを開いてそれを選択するか、「選択済のテクノロジ」をクリックしてプロジェクトにWebCenterパーソナライズを追加します。

2. プロパティ・ネームスペースを選択し、「OK」をクリックします。
「ネームスペースの作成」ダイアログが表示されます(図66-3を参照)。

図66-3 「ネームスペースの作成」ダイアログ

3. ネームスペースの名前を入力し、デフォルトのプロパティ定義を含めるチェック・ボックスを選択して、初期のデフォルト・プロパティ定義をネームスペースに追加した後、「OK」をクリックします。
デフォルトのプロパティ定義を含めるチェック・ボックスでは、初期のデフォルトのプロパティ定義がネームスペース・ファイルに追加されるかどうかを制御します。これらは、IntDef、NumberDef、StringDef、BooleanDef、DateTimeDef、ClobDef、IntArrayDef、NumberArrayDef、StringArrayDef、BooleanArrayDef、DateTimeArrayDef、ClobArrayDefです。プロパティ定義は必要のない場合、後で削除できます。または、このチェック・ボックスを未選択のままにして、初期のプロパティ定義を使用しないで開始し、必要に応じてプロパティ・エディタでプロパティ定義を作成することもできます。

設計ペインにネームスペース・ファイルがグラフィック形式で表示されます(図66-4を参照)。

図66-4 設計ペイン - ネームスペース定義

4. 第66.2.2.2項「プロパティ・セットとプロパティ定義の作成」の説明に従って、シナリオ内で必要になるプロパティ・セットとプロパティを定義します。

66.2.2.2 プロパティ・セットとプロパティ定義の作成

プロパティは、シナリオのフロー内で条件の評価基準にできる人や物に関するデータです。たとえば、プロパティには人の年齢や性別が含まれる場合があります。プロパティ・セットは、簡単に言えば、関連プロパティのコレクションまたはコンテナです。

プロパティ・セットと関連プロパティを定義するには:

1. JDeveloperのアプリケーション内で、設計ペインのネームスペースを右クリックし、「新規プロパティ・セット定義の作成」を選択して、「OK」をクリックします。
新しいプロパティ・セットの作成ダイアログが表示されます(図66-5を参照)。

図66-5 新しいプロパティ・セットの作成ダイアログ

2. プロパティ・セットの名前を入力し、「OK」をクリックします。
新しいプロパティ・セットのノードが「デザイン」ペインに表示されます(図66-6を参照)。

図66-6 「デザイン」ペイン - 新しいプロパティ・セット定義

3. プロパティを新しいプロパティ・セットに追加するには、プロパティ・セットを右クリックし、「新規プロパティ定義マッピングの作成」を選択します。
プロパティ・マッピングの作成ダイアログが表示されます(図66-7を参照)。

図66-7 プロパティ・マッピングの作成ダイアログ

4. 「プロパティ名」に入力して「定義」(値のデータ型)を選択後、「OK」をクリックします。
新しいプロパティ定義を作成するには、「定義」ドロップダウン・リストのNew Definitionを選択します。

新しいプロパティが、プロパティ・セットのグラフィック表現の一部として表示されます(図66-8を参照)。

図66-8 設計ペイン - プロパティ定義

5. 他に必要なプロパティをプロパティ・セット定義に追加(または新しいプロパティ・セットを作成)した後、第66.2.2.3項「シナリオ・エディタでの新しいシナリオの作成」の説明に従ってシナリオを作成します。

66.2.2.3 シナリオ・エディタでの新しいシナリオの作成

コンダクタのシナリオ・エディタには、コンダクタによって管理されるシナリオ定義の表示と編集に対応するビジュアル・ツールがあります。シナリオ・エディタはシナリオをファイル形式とビジュアル形式の両方で格納しており、JDeveloper内から使用できます。シナリオを作成する前に、ネームスペースと、シナリオに必要な最低限のプロパティ・セットとプロパティを作成しておく必要があります。

JDeveloperのシナリオ・エディタを使用して新しいシナリオを作成するには:

1. JDeveloperで、アプリケーション内からナビゲーション・バーのアプリケーションを右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます(図66-9を参照)。

図66-9 「新規ギャラリ」ダイアログ

注意:

「パーソナライズ」カテゴリが表示されない場合は、「すべてのテクノロジ」タブを開いてそれを選択するか、「選択済のテクノロジ」をクリックしてプロジェクトにパーソナライズ・テクノロジを追加します。

2. 「シナリオ」を選択して「OK」をクリックします。
新規シナリオ・ウィザードのダイアログが表示されます(図66-10を参照)。

図66-10 新規シナリオ・ウィザードのダイアログ

3. 新規シナリオ・ファイルの作成を選択し、必要に応じて、ファイル名とファイルの格納場所を変更します。シナリオ名の拡張子(.scenarios_diagram)は変更できないことに注意してください。
シナリオ・エディタに新しい「開始」ノードが表示されます(図66-11を参照)。

図66-11 シナリオ・エディタ - 「開始」ノード

4. シナリオにノードを追加するには、新しいノードの追加先となるノードを右クリックし、「次の文を追加」を選択した後、図66-12のようにリストからノード・タイプを選択します。

図66-12 シナリオ・エディタでのノードの追加

新しいノードを右クリックして、ノード・プロパティの設定とフローの拡張に関するオプションを表示します。使用可能なノード・タイプについては、第66.2.2.4項「ノード・タイプを使用したシナリオ・フローの指定」を参照してください。

66.2.2.4 ノード・タイプを使用したシナリオ・フローの指定

シナリオ・エディタでは、(判断に使用される)サブツリーの組合せによってフローが表されるツリー構造の固定レイアウト、およびループや複雑なネストされたif/else判断のフローを表す内部ラベル参照が使用されます。

ノード・タイプ

- 開始: 「開始」ノードは、シナリオの開始地点を定義するルート・レベルのノードです。

- 戻る: 「戻る」ノードは、シナリオの実行を停止し、指定されたEL式の評価結果をコール元に戻します。

- 変数の設定: 「変数の設定」ノードでは、現在実行中のシナリオのコンテキスト内にスコープ指定される変数を定義し、それを式によって初期化できます。

- スクリプト: 埋込みEL式を使用するスクリプトを含め、シナリオにスクリプトを追加するには、「スクリプト」ノードを使用します。スクリプト・エンジンにはMIMEタイプかエンジン名のいずれかが指定できます。

- 実行: 「実行」ノードは、戻り値を期待せずに、指定されたEL式を起動します。変数の割当てと同様、式の結果のみがシナリオのコンテキスト内に格納されません。

- エラー・ハンドラ: 「エラー・ハンドラ」ノードでは、Javaに似たCatch/Try構文が提供されます。この構文ではTry節を使用し、条件のテストおよび結果に応じてレスポンスを返すことができます。

- 条件付き: 「条件付き」ノードは、EL式を評価し、EL式がtrueと評価された場合、そこに含まれる文を実行します。「Otherwise」ブロック内の文は、すべての条件文がfalseと評価された場合のみ実行されます。

- For Each: 「For Each」ノードは、要素のコレクションに対してループおよび反復機能を提供します。

- while: 指定されたEL式がtrueと評価されるかぎり、ループおよび反復機能を提供します。

- エラー発生: エラーが発生し、指定されたエラー・メッセージとともに、そのエラーがスローされます

- プロバイダの起動: IDataProviderの名前の実装を起動します。結果は、現在実行されているシナリオのコンテキスト内に格納されます。

- シナリオの起動: 同じネームスペース内の別の名前付きシナリオを起動します。結果は、現在実行されているシナリオのコンテキスト内に格納されます

66.2.2.5 プロパティ・セットとプロパティ・ロケータの定義

プロパティ・エディタでは、プロパティ・サービスによって管理される、プロパティ・セット定義とそれに関連付けられたプロパティ定義を表示および編集できます。プロパティ・エディタは、プロパティ・サービスを通じてデータと通信し、それらを保持します。

プロパティ・セットとそれに含まれるプロパティは、様々な場所に様々な形式で格納できるため、それらの取得にはロケータ機能が必要です。プロパティ・セットのデータを取得し、事前構成済データベースに格納する、デフォルトのプロパティ・セット・ロケータが提供されています。このデフォルト・ロケータは、プロパティ・セット用に他のロケータが指定されなかった場合のみ使用されます。

ピープル・コネクション・サービス用のカスタム・ロケータもデフォルトで提供されます(詳細は第66.1.3.1.4項「ピープル・コネクション・ロケータ」を参照)が、他のデータ・ソース用に追加のロケータを定義することもできます。プロパティとプロパティ・セット用に複数のロケータを定義でき、それらは優先順位に従って定義することもできます。ロケータの実装手順については、第70章の「カスタム・ロケータの実装」を参照してください。1つのプロパティ・セット定義に複数のロケータの関連付けが可能ですが、複数のロケータの中の1つに割当てが可能なのは、そのプロパティ・セット定義内の1つのプロパティのみです。

66.2.2.6 デフォルト・プロバイダの使用

パーソナライズには、シナリオ内で使用する即時利用可能な3つのプロバイダ、プロパティ・サービス・プロバイダ、コンテンツ・サーバー・プロバイダ(CMIS)、およびアクティビティ・グラフが用意されています。この項では、次のサブセクションでこれらのプロバイダをアプリケーションに統合する方法を説明します。

- 第66.2.2.6.1項「プロパティ・サービス・プロバイダの使用」

- 第66.2.2.6.2項「CMISプロバイダの使用」

- 第66.2.2.6.3項「アクティビティ・グラフ・プロバイダの使用」

66.2.2.6.1 プロパティ・サービス・プロバイダの使用

プロパティ・サービス・プロバイダ(oracle.PropertiesServiceProvider)により、パーソナライズ・サーバー・プロパティ・サービスとの統合が実現できます。このプロバイダを使用すると、特定のプロパティ・セット定義に対してプロパティ・セットを取得したり、プロパティ・セットを名前別に取得したり、プロパティ・セットから特定のプロパティを返したりすることができます。ピープル・コネクション・ロケータを使用してプロファイル・データをシナリオに統合している場合は、それを使用する前にプロパティ・サービスを構成する必要があります。ピープル・コネクション・ロケータの詳細は、第66.1.3.1.4項「ピープル・コネクション・ロケータ」を参照してください。プロパティ・サービス・プロバイダの構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のOracleピープル・コネクション・ロケータの構成に関する項を参照してください。

66.2.2.6.2 CMISプロバイダの使用

CMISプロバイダ(CMISProvider)では、コンテンツを標準ベースのCMIS (Content Management Interoperability Services)コンテンツ・サーバーから検索して取得するためのサービスが提供されます。WebCenterの場合、これはOracle WebCenter Content: Content Serverによって提供されます。また、CMISプロバイダでは、結果を単純な形式に変換するためのユーティリティ・ファンクション・プロバイダ(CMISFunctionProvider)も提供されます。次の例を試す前に、Oracle Fusion Middleware Oracle WebCenter Portalの管理のCMISプロバイダの構成に関する項の説明に従って、必ずCMISプロバイダ接続を構成してください。

CMISプロバイダのシナリオの例

次を使用してシナリオを作成します(application/xmlのcontent-typeを必ず設定してください)。

リクエストURI:

POST http://localhost:8891/wcps/api/conductor/namespaces/myNameSpace/scenarios

リクエスト本文:

<scenarioMetadata>
<scenario xmlns:common="http://xmlns.oracle.com/wcps/conductor/common/1.0.0" xmlns:scenario="http://xmlns.oracle.com/wcps/conductor/scenarios/1.0.0">
<body>
<call-provider>
<provider-name>CMISProvider</provider-name>
<connection-name>CmisConfigConnection</connection-name>
<variable>exprString</variable>
<input>
<parameter>
<common:name>search</common:name>
<common:value>SELECT * FROM cmis:document WHERE cmis:name LIKE 'flowers'</common:value>
</parameter>
</input>
</call-provider>
<return>
<expression>${exprString}</expression>
</return>
</body>
<name>CMIS Scenario</name>
<comments>CMIS Scenario comments</comments>
<tags>
<tag>CMIS Scenario tag</tag>
</tags>
</scenario>
</scenarioMetadata>

シナリオの実行

リクエストURI:

POST http://localhost:8891/wcps/api/conductor/namespaces/myNameSpace/scenarios/CMIS%20Scenario

リクエスト本文:

<parameters/>

CMISFunctionProviderの使用

ファンクション・プロバイダは、シナリオから起動できるユーティリティ・クラスです。CMISFunctionProviderでは、いくつかのメソッドがサポートされます(詳細はクラスのJavaDocを参照)。2つのメソッドの例を次に示します。

/**
* Convert the array of input IDs to a CMIS query in the form of 'IN'
* @param ids Array of document IDs, in the form of dDocName only
* @return CMIS query String
*/
public static String getCMISQueryForDocIDs(
@PublicParameter(parameterName="repository",descriptionBundleKey="getCMISQueryForDocIDs.parameter.description.inputList") String repository,
@PublicParameter(parameterName="ids",descriptionBundleKey="getCMISQueryForDocIDs.parameter.description.inputList") List<String> ids))
...

/**
* Convert the array of input IDs to a CMIS query in the form of 'IN'
* @param ids, in the form of a WebCenter document ObjectURN.  For example: stanl18-ucm11g#dDocName:MOUNTAINS
* @return CMIS query String
*/
public static String
getCMISQueryForDocIDsFromFullID(@PublicParameter(parameterName="ids",
descriptionBundleKey="getCMISQueryForDocIDs.parameter.description.inputList") List<String> ids)

シナリオでのCMISFunctionProviderの使用

次のシナリオ・スニペットでは、データがCMISFunctionProviderに指定され、複数のノードに対してCMIS問合せが作成される状況を示しています。この問合せはその後、CMISプロバイダに送信されます。(より現実的なケースでは、データを生成するかわりに、たとえばアクティビティ・グラフ・プロバイダのコールによる結果を渡すこともできます。)

<scenario:scenario xmlns:common="http://xmlns.oracle.com/wcps/conductor/common/1.0.0"
xmlns:scenario="http://xmlns.oracle.com/wcps/conductor/scenarios/1.0.0">
<comments>testFunctionProviderScenario4 comments</comments>
<body>
<assign-variable>
<variable>ids</variable>
<expression>${collections:new()}</expression>
</assign-variable>
<execute>
<expression>${collections:append(ids,'StellentRepository#dDocName:MOUNTAINS')}</expression>
</execute>
<execute>
<expression>${collections:append(ids,'StellentRepository#dDocName:PARKS')}</expression>
</execute>
<execute>
<expression>${collections:append(ids,'StellentRepository#dDocName:PATAGONIAPARKS')}</expression>
</execute>

<!-- Assign those as IDs to send to CMIS -->
<assign-variable>
<variable>cmisQuery</variable>
<expression>${cmisfunction:getCMISQueryForDocIDsFromFullID(ids)}</expression>
</assign-variable>

<!-- Make the call to CMIS -->
<call-provider>
<provider-name>CMISProvider</provider-name>
<connection-name>NonProxyConnection</connection-name>
<variable>cmisResults</variable>
<input>
<parameter>
<common:name>search</common:name>
<common:value>${cmisQuery}</common:value>
</parameter>
</input>
</call-provider>
<return>
<expression>${cmisResults}</expression>
</return>
</body>
<name>testFunctionProviderScenario4</name>

</scenario:scenario>

66.2.2.6.3 アクティビティ・グラフ・プロバイダの使用

アクティビティ・グラフ・プロバイダ(ActivityGraphProvider)によって、WebCenter内での分析に基づいて推奨事項を提供するアクティビティ・グラフ・サービスとの統合が実現されます。次の例を試す前に、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアクティビティ・グラフ・プロバイダの構成に関する項の説明に従って、必ずアクティビティ・グラフ・サービスの接続を構成してください。

アクティビティ・グラフ・プロバイダのシナリオの例

次を使用してシナリオを作成します(application/xmlのcontent-typeを必ず設定してください)。

リクエストURI:

POST http://localhost:8891/wcps/api/conductor/namespaces/default/scenarios

リクエスト本文:

<scenarioMetadata>
<scenario xmlns:common="http://xmlns.oracle.com/wcps/conductor/common/1.0.0">
<body>
<call-provider>
<provider-name>ActivityGraphProvider</provider-name>
<connection-name>ActivityGraphConfigConnection</connection-name>
<resource-name>QueryCommonItems</resource-name>
<method-name>queryCommonItems</method-name>
<variable>providerResults</variable>
<input>
<parameter>
<common:name>sourceClassURN</common:name>
<common:value>WC.user</common:value>
</parameter>
<parameter>
<common:name>sourceObjectURN</common:name>
<common:value>carl</common:value>
</parameter>
<parameter>
<common:name>targetClassURN</common:name>
<common:value>WC.user</common:value>
</parameter>
<parameter>
<common:name>targetObjectURN</common:name>
<common:value>monty</common:value>
</parameter>
<parameter>
<common:name>similarityURN</common:name>
<common:value>user-edit</common:value>
</parameter>
</input>
</call-provider>
<return>
<expression>${providerResults}</expression>
</return>
</body>
<name>QueryCommonItemsScenario</name>
<comments>QueryCommonItemsScenario comments</comments>
<tags>
<tag>invoke</tag>
<tag>sample</tag>
<tag>provider</tag>
<tag>resource</tag>
<tag>input</tag>
<tag>parameters</tag>
<tag>overloaded</tag>
</tags>
</scenario>
</scenarioMetadata>

シナリオの実行

次に進む前に、ヘッダー値Accept=application/xmlとcontent-type=application/xmlを設定する必要があります。

リクエストURI:

POST http://localhost:8891/wcps/api/conductor/namespaces/default/scenarios/QueryCommonItemsScenario

リクエスト本文:

<parameters/>

AGFunctionProviderの使用

ファンクション・プロバイダは、シナリオから起動できるユーティリティ・クラスです。AGFunctionProviderの使用例を次に示します。

/**
* Return the value of 'ObjectURN', only for WC.document, from the input Object.
* @param agResults From call to 'QueryRecommendations' or QueryItems.  Can be one of the following Classes:
*
* From AG REST 'recommendations'
* <ul>
*   <li> Recommendations
*   <li> RecommendedItems
*   <li> List<Recommendation>
* </ul>
*
* From AG REST 'items'   (common items)
* <ul>
*   <li> Results
*   <li> Items
*   <li> List<Item>
* </ul>
*
* @param dDocNameOnly  If true, just the last part of the ObjectURN for
* document will be returned; otherwise, the entire ObjectURN will be.
* For example, if ObjectURN is example-ucm11g#dDocName:EXAMPLEACL000116,
* if this value is 'true', then only EXAMPLEACL000116 will be returned.
* Otherwise, all of stanl18-ucm11g#dDocName:EXAMPLEACL000116 is returned.
*
* @return a List of ObjectURN representing the document ID
*/
@PublicFunction

public static List<String> getDocumentIDs(
@PublicParameter(parameterName="agResults",descriptionBundleKey="getContentIDs.parameter.description.inputList")Object agResults,
@PublicParameter(parameterName="dDocNameOnly",  descriptionBundleKey="getContentIDs.parameter.description.inputList")boolean dDocNameOnly)
{
...

/**
* Return the value of 'ObjectURN' for the 'ClassURN' from the input Object.
* @param agResults From call to 'QueryRecommendations' or QueryItems.  Can be one of the following Classes:
*
* From AG REST 'recommendations'
* <ul>
*   <li> Recommendations
*   <li> RecommendedItems
*   <li> List<Recommendation>
* </ul>
*
* From AG REST 'items'   (common items)
* <ul>
*   <li> Results
*   <li> Items
*   <li> List<Item>
* </ul>
*
* param filterClassURN return content only of this type.  Examples are: WC.wiki-page, WC.group-space, WC.user, WC.blog,
* WC.topic, WC.document.  If this is null, return all types.
*
* @return a List of ObjectURN representing the item identifier.
*/
@PublicFunction
(
functionName="getContentIDs",
descriptionBundleKey="getContentIDs.method.description"
)
public static List<String> getContentIDs(@PublicParameter(parameterName="agResults",
descriptionBundleKey="getContentIDs.parameter.description.inputList")Object agResults,
@PublicParameter(parameterName="filterClassURN",
descriptionBundleKey="getContentIDs.parameter.description.filterClassURN") String filterClassURN)
...

/**
* Filter recommendations by score.  Only those recommendations with a score >= the cutoff will be preserved.
*/
@PublicFunction
(
functionName="filterRecsByScore",
descriptionBundleKey="filterRecsByScore.method.description"
)
public static Recommendations filterRecsByScore(
@PublicParameter(parameterName="recommendations",
descriptionBundleKey="filterRecsByScore.parameter.description.agRecs") Recommendations recs,
@PublicParameter(parameterName="cutoffScore",
descriptionBundleKey="filterRecsByScore.parameter.description.cutoffScore") float cutoffScore
)
{

シナリオでのAGFunctionProviderの使用

次のシナリオでは、まずアクティビティ・グラフRESTサービスがコールされます。そのコールの結果はagRecommendations変数に格納されます。このシナリオでは、次にAGFunctionProvider.getContentIDs()メソッドをコールしてagRecommendationsの結果(アクティビティ・グラフ・オブジェクト)を渡し、expressionsコールの評価内で保持されるドキュメントIDのList<String>を戻します。

<expression>${agfunction:getContentIDs(agRecommendations,'WC.user')}</expression>

<scenario:scenario xmlns:common="http://xmlns.oracle.com/wcps/conductor/common/1.0.0"
xmlns:scenario="http://xmlns.oracle.com/wcps/conductor/scenarios/1.0.0">
<comments>CallProviderScenario comments</comments>
<body>
<call-provider>
<provider-name>ActivityGraphProvider</provider-name>
<connection-name>AgTestServerConnection</connection-name>
<resource-name>QueryRecommendations</resource-name>
<method-name>getRecommendationsUsingDefaultRecipe</method-name>
<variable>agRecommendations</variable>
<input>
<parameter>
<common:name>classURN</common:name>
<common:value>WC.user</common:value>
</parameter>
<parameter>
<common:name>objectURN</common:name>
<common:value>carl</common:value>
</parameter>
</input>
</call-provider>

<!-- Now call function provider to translate into user IDs.  A more specific call is available for WC.document; this just tests
the ability of the function provider to handle different types of content  -->
<return>
<expression>${agfunction:getContentIDs(agRecommendations,'WC.user')}</expression>
</return>
</body>
<name>CallProviderScenario</name>
</scenario:scenario>

66.2.3 ファイル・ベースのシナリオの作成

シナリオ・エディタを使用するだけでなく、XML形式のファイル・ベースのシナリオを作成することもできます。ファイル・ベースのシナリオは、コンダクタのインポート・ファンクションとエクスポート・ファンクション、およびJDeveloper MDSの統合を通じてのみサポートされます。ファイル・ベースのシナリオをシナリオ・エディタにインポートするには、シナリオの作成時に「既存のシナリオ・ファイルのインポート」オプションを選択します。

表66-1は、シナリオ・ファイルのコンテンツを構成する文を示しています。文の詳細は、第66.2.2.4項「ノード・タイプを使用したシナリオ・フローの指定」のノードに関する説明を参照してください。

表66-1 シナリオの文

文

説明

例

変数の設定

現在実行中のシナリオのコンテキスト内にスコープ指定された変数を作成します。

<assign-variable>
<variable>index</variable>
<expression>3</expression>
</assign-variable>

実行

戻り値を期待せずに、指定されたEL式を起動します。変数の割当てと同様、式の結果のみがシナリオのコンテキスト内に格納されません。

<execute>
<comments>Adds to an existing
collection.</comments>

<expression>${collections:append(responses,
'The outlook is not so good.')}</expression>
</execute>

条件付き

EL式を評価し、EL式がtrueと評価された場合、そこに含まれる文を実行します。「Otherwise」ブロック内の文は、すべての条件文がfalseと評価された場合のみ実行されます。

<conditions>
<body>
<condition>
<body>
<assign-variable>
<variable>customerType</variable>
<expression>Great Customer</expression>
</assign-variable>
</body>
<expression>${customer.totalMoneySpent >= 100000}</expression>
</condition>
<otherwise>
<body>
<assign-variable>
<variable>customerType</variable>
<expression>Good Customer</expression>
</assign-variable>
</body>
</otherwise>
</body>
</conditions>

エラー・ハンドラ

シナリオにtry/catchブロックが追加できるようになります。

<body>
<error-handler id="_1">
<try id="_2">
<body/>
</try>
<catch id="_3">
<body/>
<variable>exception</variable>
</catch>
</error-handler>
</body>

For Each

要素のコレクションに対してループおよび反復機能を提供します。

<for-each>
<body>
<execute>
<comments>
Let's send each great customer an email, thanking them for their loyalty.
</comments>
<expression>
${emailService:sendMail(customer,'Subject:Thanks for being a great customer')}
</expression>
</execute>
</body>
<variable>customer</variable>
<max-iterations>10</max-iterations>
<items>${greatCustomers}</items>
</for-each>

スクリプト

シナリオ内でスクリプトが実行できるようにします。スクリプトはJavaScript、Groovy、JRuby、Pythonで作成できます。

<body>
<script type="text/javascript" resolveAsExpression="true" id="_5">
<variable>hello</variable>
<source>y=5;
z=2;
x=y+z;
hello=x;
</source>
</script>
<return id="_6">
<expression>${hello}</expression>
</return>
</body>

while

指定されたEL式がtrueと評価されるかぎり、ループおよび反復機能を提供します。

<while>
<body>
<assign-variable>
<comments>Sum up customer invoices to arrive at customer total expenditure.</comments>
<variable>customerTotalSpent</variable>
<expression>${customerTotalSpent+order.invoiceTotal}</expression>
</assign-variable>
</body>
<expression>${customer.id = currentCustomerId }</expression>
<max-iterations>-1</max-iterations>
</while>

シナリオの起動

同じネームスペース内の別の名前付きシナリオを起動します。結果は、現在実行されているシナリオのコンテキスト内に格納されます。

<call-scenario >
<variable>greeting</variable>
<scenario>randomGreetingGenerator</scenario>
<input>
<parameter>
<ns2:name>greetingsList</ns2:name>
<ns2:value>hello, Bonjour, Buenos días</ns2:value>
</parameter>
</input>
</call-scenario>

プロバイダの起動

IDataProviderの名前の実装を起動します。結果は、現在実行されているシナリオのコンテキスト内に格納されます

<call-provider>
<provider-name>CRM_Provider</provider-name>
<connection-name>crm_db</connection-name>
<resource-name>getGreatCustomers</resource-name>
<variable>greatCustomers</variable>
<input>
<parameter>
<ns2:name>minMoneySpent</ns2:name>
<ns2:value>100000</ns2:value>
</parameter>
</input>
</call-provider>

戻る

指定されたEL式の評価結果を戻します。

<return>
<comments>Return the sales rep who
sold the most widgets this month.</comments>
<expression>${bestSalesRep.id}</expression>
</return>

エラー発生

エラーが発生し、指定されたエラー・メッセージとともに、そのエラーがスローされます

<raise-error>
<comments>User is unathorized,
so let's return a 401.</comments>
<statusCode>401</statusCode>
<message>User ${ScenarioContext.scenarioRequest.user
Principal.name} is unauthorized to
execute this scenario.</message>
</raise-error>

スクリプト

スクリプトを追加します。埋込みEL式を使用したスクリプトも含まれます。

例66-1 ファイル・ベースのシナリオの例

<scenario:scenario xmlns:common="http://xmlns.oracle.com/wcps/conductor/common/1.0.0"
xmlns:scenario="http://xmlns.oracle.com/wcps/conductor/scenarios/1.0.0">
<comments>sampleScenarioWithIf comments</comments>
<body>
<assign-variable>
<variable>index</variable>
<expression>3</expression>
</assign-variable>
<conditions>
<body>
<condition>
<body>
<assign-variable>
<variable>ResultVar</variable>
<expression>conditionSatisfied</expression>
</assign-variable>
</body>
<expression>${index == 3}</expression>
</condition>
<otherwise>
<body>
<assign-variable>
<variable>ResultVar</variable>
<expression>otherwiseInvoked</expression>
</assign-variable>
</body>
</otherwise>
</body>
</conditions>
<return>
<expression>${ResultVar}</expression>
</return>
</body>
<name>sampleScenarioWithIf</name>
<tags>
<tag>if</tag>
<tag>condition</tag>
<tag>otherwise</tag>
</tags>
</scenario:scenario>

66.2.4 実行時のターゲット・コンテンツの表示

コンテンツ・プレゼンタを使用すると、実行時にユーザーに対してターゲット・コンテンツを表示できます。コンテンツ・プレゼンタは、コンダクタの動的コンテンツ問合せ生成機能と密接に統合されており、動的コンテンツの単純な表面化を可能にします。アプリケーション内でのコンテンツ・プレゼンタの使用の詳細は、第27章「コンテンツ・プレゼンタ表示テンプレートの作成」を参照してください。

66.3 パーソナライズ・ファイルのデプロイ

この項では、Oracle WebCenter Portal Personalization (WCPS)ファイルを構築およびデプロイする方法を説明します。

注意:

パーソナライズの統合および構成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のパーソナライズの前提条件および制限に関する項を参照してください。

- 第66.3.1項「パーソナライズ・ファイルのサーバーへのデプロイ」

- 第66.3.2項「パーソナライズ・ファイルのアーカイブ・ファイルへのデプロイ」

- 第66.3.3項「MARファイルのインポートとエクスポート」

- 第66.3.4項「パーソナライズ・ファイルの伝播」

66.3.1 パーソナライズ・ファイルのサーバーへのデプロイ

パーソナライズ・ファイルをサーバーへデプロイするには:

注意:

この項で説明するデプロイメント機能を使用するには、WebCenterパーソナライズのテクノロジ・スコープが必要です。このスコープが追加されていないと、関連のメニュー・アイテムが無効になります。第66.2項「アプリケーションへのパーソナライズの統合」を参照してください。

1. JDeveloperでポータル・プロジェクトを開きます。WLSTコマンドを使用してこのデプロイを実行する場合には、第66.3.3項「MARファイルのインポートとエクスポート」を参照してください。

2. 「アプリケーション」メニューから、「パーソナライズ・ファイルのデプロイ」を選択して「サーバーへ」を選択します。

3. 「サーバーへのデプロイ」ダイアログで、サービスをデプロイするサーバーを選択します。図66-13を参照してください。

図66-13 「サーバーへのデプロイ」ダイアログ

注意:

オプションで、「追加」ボタンをクリックして、サーバーをリストに追加できます。

4. 省略記号("...")ボタンをクリックして、特定のサーバー・インスタンスを選択します。たとえば、実行中のDefaultServerなどです。

5. 終了したら「OK」をクリックします。

6. 「メッセージ - ログ」ウィンドウで、デプロイの詳細をチェックします。ログに、メタデータ・ファイルのデプロイが正常に完了したかどうかが表示されます。

66.3.2 パーソナライズ・ファイルのアーカイブ・ファイルへのデプロイ

ファイル・システムで、パーソナライズ・ファイルをメタデータ・アーカイブ(MAR)ファイルにデプロイできます。MARファイルをデプロイするには:

1. JDeveloperでポータル・プロジェクトを開きます。

2. 「アプリケーション」メニューから、「パーソナライズ・ファイルのデプロイ」を選択して「ファイルシステムへ」を選択します。

3. 「ファイルシステムへのデプロイ」ダイアログで、「メタデータ・アーカイブの作成」を選択して、MARファイルの場所と名前を指定します。

その後、コマンドライン・ユーティリティを使用して、MARファイルをサーバーに更新できます。詳細は、第66.3.3項「MARファイルのインポートとエクスポート」を参照してください。

66.3.3 MARファイルのインポートとエクスポート

メタデータ・アーカイブ(MAR)ファイルの新しいファイルを使用してパーソナライズ・サーバーを更新するには、次のWLSTコマンドでサーバーに接続してメタデータをインポートします。

wlst:> connect('<username>', '<password>', 't3://admin-server-hostname:7001')
wlst:> importMetadata(application='wcps-services', server='WC_Utilities', fromLocation='<mar file>', remote='true')

ファイルシステムでサーバーからMARファイルにパーソナライズ・ファイルをエクスポートするには、これらのWLSTコマンドでサーバーに接続してメタデータをエクスポートします。

wlst:> connect('<username>', '<password>', 't3://admin-server-hostname:7001')
wlst:> exportMetadata(application='wcps-services', server='WC_Utilities', toLocation='<mar file>', remote='true')

MDS WLSTコマンドの詳細は、Oracle Technology Networkで『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』を参照してください。

開発環境の統合WebLogic Serverで実行中の場合、接続URLはt3://localhost:7101で、サーバーはDefaultServerです。

66.3.4 パーソナライズ・ファイルの伝播

WebCenter Portal管理コンソールには、停止時間を生じることなくポータル・メタデータをステージングから本番サーバーへ移行する伝播ツールが備わっています。伝播ツールは、Oracle WebCenter Portalのパーソナライズ・ファイルのステージングから本番への移行をサポートします。伝播ツールはソース・サーバーのアプリケーションのMDSリポジトリから自動的にメタデータをエクスポートし、それをターゲット・サーバーのアプリケーションのMDSリポジトリにインポートします。伝播ツールの詳細は、第8.13項「ステージングから本番に伝播させる伝播ツールの使用」を参照してください。

伝播ツールのパーソナライズ・ファイル移動機能は、次の条件によって決まります。

- Portal FrameworkアプリケーションのMDSリポジトリは、mds-wcpsDSデータ・ソースと同じデータベースを指している必要があります。これがデフォルトの構成です。通常、デフォルトのデータベース構成を変更しなければ、伝播は正確に機能します。

- ソース・サーバーと移動先のサーバーの両方で、アプリケーションMDSストアはwcps-servicesのMDSストアと同一のパーティション名を使用する必要があります。標準のポータルの構成では、このパーティションはwebcenter-portalです。

注意:

通常、伝播ツールの初期化とMDS変更のパーソナライズRESTサービスへの通知の間に1から2分の遅延があります。この遅延は、第66.3.3項「MARファイルのインポートとエクスポート」で説明されているような、WLSTコマンドを使用したパーソナライズ・ファイルの伝播の場合は発生しません。

66.4 チュートリアル: 単純なアプリケーションの作成、テストおよびデプロイ

この項では、JDeveloperで、単純な文字列(Hello World)を戻すシナリオを含む単純なアプリケーションを作成する方法について説明します。さらに、そのシナリオをJSPページに追加し、統合されたWebLogicサーバーでアプリケーションを実行して結果をブラウザに表示することによって、シナリオの結果をテストします。

この項では、統合WebLogic Serverを構成して起動する手順、パーソナライズ・サーバーのコンダクタへの接続を定義する手順、およびシナリオとJSPアーティファクトをテスト用にサーバー・ドメインにデプロイする方法についても説明します。

注意:

このチュートリアルの前提条件として、Oracle JDeveloperに対するWebCenter Portalの拡張機能(oracle.webcenter.framework_bundle.zip)がインストールされている必要があります。この拡張が追加されていない場合は、JDeveloperの更新ウィザードで「ヘルプ」メニューの「更新のチェック」をクリックし、更新があるかどうかをチェックしてください。

1. デフォルトのオプションとテクノロジを使用して、単純なWebCenter Portalアプリケーション(Hello_Applicaton)を作成します。

1. 「ファイル」メニューから、「新規」を選択します。
「新規ギャラリ」が表示されます。

2. 「アプリケーション」カテゴリを選択します。

3. アイテム・リストから「WebCenter Portal Frameworkアプリケーション」を選択して、「OK」をクリックします。WebCenter Portal Frameworkアプリケーションの作成ウィザードが表示されます。

4. 図66-14に示すように、「アプリケーション名」にHello_Applicationと入力します。

図66-14 Hello_Applicationの作成 - 手順1

5. ウィザード(ステップ2)のプロジェクト1の名前ページで、「使用可能」リストからWebCenterパーソナライズを選択し、「選択済」リストへ移動します。

6. ステップ5まで「次へ」をクリックし、「終了」をクリックします。

2. JDeveloperの統合サーバー(統合WLS)のデフォルト・ドメインを構成します。
ドメインは自動的に拡張され、パーソナライズ・コンポーネントの実行に必要なサーバー・アーティファクト(つまり、パーソナライズ・コンダクタとプロパティ・サービス)が含まれます。

1. 「表示」メニューから「アプリケーション・サーバー・ナビゲータ」を選択し、「アプリケーション・サーバー」ツリー・ノードを開いてIntegratedWeblogicServerを表示します。
現在のステータスは(ドメイン未構成)になっています。

2. IntegratedWeblogicServerを右クリックしてコンテキスト・メニューを表示し、「デフォルト・ドメインの作成」を選択します。

図66-15 アプリケーション・サーバー・ナビゲータ - デフォルト・ドメインの作成

3. 入力を求められたら、管理者パスワードとしてwelcome1と入力し、「OK」をクリックします。
ステータスは(ドメインの作成中)と表示され、「メッセージ・ログ」ウィンドウに、ドメインの作成中であることを示す出力が表示されます。ドメインの作成が完了するまで待機します。この操作の完了には時間がかかる場合があります。完了すると、メッセージ・ログに「統合Weblogicドメインの処理が正常に完了しました。」と表示されます。

4. IntegratedWeblogicServerを右クリックしてコンテキスト・メニューを表示し、「サーバー・インスタンスの起動」を選択してサーバーを起動します。図66-16を参照してください。
「Running: IntegratedWeblogicServer - Log」ビューが表示され、サーバーが起動しはじめると出力が表示されます。サーバーの起動が終了するまで待ちます。この操作の完了には時間がかかる場合があります。終了したら、IntegratedWeblogicServerメッセージ・ログに 「IntegratedWebLogicServerが起動しました」と表示されます。

図66-16 アプリケーション・サーバー・ナビゲータ - サーバーの起動

3. アプリケーション・サーバーのパーソナライズ・コンダクタ・コンポーネントへのアプリケーションURL接続を構成します。

1. 「アプリケーション」メニューから「アプリケーション・プロパティ」を選択します。「アプリケーション・プロパティ」ダイアログが表示されます。

2. 「パーソナライズ・サーバー」カテゴリを選択し、「URL接続」ドロップダウン・リストから<新しいURL接続...>を選択します。
「URL接続の作成」ダイアログが表示されます(図66-17を参照)。

図66-17 「URL接続の作成」ダイアログ - コンダクタのURL接続

3. (デフォルトの)データ・エントリ・フィールドに、次のように値を入力して、接続を作成します。

フィールド名

値

名前

Conductor

URLエンドポイント

http://localhost:7101/wcps/api/conductor/resourceIndex

認証タイプ

基本

ユーザー名

weblogic

パスワード

welcome1 (ドメインの作成時に指定した管理者パスワード)

レルム

WCPS

4. 「接続のテスト」をクリックします。
「ステータス」に「接続が正常に確立されました。」と表示されます。

5. 「OK」をクリックして、コンダクタURL接続を作成します。

6. 「パーソナライズ・サーバー」ページで、「OK」をクリックします。

4. パーソナライズ・サーバーによって呼び出されたときに文字列Hello Worldを戻す、単純なhello_worldシナリオを作成します。

1. アプリケーション・ナビゲータでPortalプロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」が表示されます。

2. 「現在のプロジェクト・テクノロジ」タブから、「パーソナライズ」カテゴリを選択します。

3. 「シナリオ」を選択して「OK」をクリックします。
「新規シナリオ」ダイアログが表示されます。

図66-18 「新規シナリオ」ダイアログ

4. 新規シナリオ・ファイルの作成オプションを選択し、新規シナリオ・ファイル名にhello_world.scenarios_diagramと入力し、「OK」をクリックしてシナリオを作成します。

5. シナリオ・エディタの「ダイアグラム」ビューで「開始」ノードを右クリックし、「次の文を追加」→「戻る」を選択します。
「戻る」ノードが追加および接続されます。

6. 「戻る」ノードを右クリックし、「式の設定」を選択します。
シナリオ式ビルダーが表示されます(図66-19を参照)。

図66-19 シナリオ式ビルダー

7. 「式」のテキスト領域に次のEL式を入力し、「OK」をクリックします。

${'Hello World'}

シナリオの図は、図66-20のようになります。

図66-20 シナリオ・エディタ - hello_worldシナリオ

8. 「ファイル」メニューから「保存」を選択して、hello_world.scenarios_diagramを保存します。

5. シナリオを直接、試行します。「開始」ノードを右クリックし、「実行」を選択します。

6. シナリオ入力ダイアログで、「OK」をクリックします。このダイアログを使用すると、シナリオで必要な任意のパラメータが入力できるようになります。今回は、必要なパラメータはありません。

7. ログ・ウィンドウに、結果のHello Worldが表示されます。

8. 次に、hello_worldシナリオを呼び出して結果を表示するJSPページを作成します。

1. アプリケーション・ナビゲータでPortalプロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」が表示されます。

2. 「現在のプロジェクト・テクノロジ」タブから、「JSP」カテゴリを選択します。

3. アイテム・リストから「JSP」を選択し、「OK」をクリックします。
「JSPの作成」ダイアログが表示されます(図66-21を参照)。

図66-21 「JSPの作成」ダイアログ

4. 「ファイル名」にhello_world.jspと入力し、「OK」をクリックしてJSPページを作成します。

5. JSPエディタが起動したら、「ソース」ビューを選択し、テンプレート・テキストを次のJSPコードで置換します。
c:outコマンド内で、パーソナライズ・コンテキストBeanp13nContextがどのように使用されているかに注目してください。ここでは、「アプリケーション・プロパティ」ダイアログで指定したシナリオ・ネームスペースHello_Applicationを使用して作成したコンダクタ接続(Conductor)を呼び出し、hello_worldというシナリオを呼び出した後、結果を表示しています。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>hello_world</title>
</head>
<body>
<jsp:useBean id="p13nContext"
class="oracle.wcps.client.PersonalizationContext" scope="session"/>
<%((oracle.wcps.client.PersonalizationContext)session.getAttribute("p13nContext")).reset(); %>
<c:out value="${p13nContext.conductor['Conductor'].namespaces['Hello_
application'].scenario['hello_world'].results}"/>
</body>
</html>

注意:

手順3の説明に従ってシングル・サインオンとトラスト・サービスを構成していない場合、ページの実行時に、ここで指定したConductor URL接続によって、401 Unauthorizedリターン・コードが生成されます。簡単な方法(テストのみを目的とする場合)は、次のインライン接続を使用することです。

http://weblogic:weblogic1@localhost:7101/wcps/api/conductor/resourceIndex

これをConductor URLのかわりに使用することによって、シングル・サインオンの制約を回避できます。WebCenterトラスト・サービスの構成およびこのスクリプトを使用したシングル・サインオンの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のシングル・サインオンの構成に関する項を参照してください。

6. 「ファイル」メニューから「保存」を選択して、hello_world.jspを保存します。

9. 最後に、Hello_Applicationを構築してデプロイするために、アプリケーション・ナビゲータで実行可能アーティファクト(hello_world.jspページ)を右クリックし、「実行」を選択します。
JDeveloperによって、次のようないくつかのバックグラウンド・プロセスが順番に開始されます。

- アプリケーションの構築

- 統合サーバーの起動(まだ起動していない場合)

- デフォルト・ドメインへのアプリケーション・アーティファクト(パーソナライズ・アーティファクトを含む)のデプロイ

- 外部Webブラウザの起動によるアーティファクトhello_world.jspの表示

図66-22 アプリケーション・ナビゲータ - アプリケーションの構築とデプロイ

生成されたhello_world.jsp JSPページがブラウザに表示されます。

図66-23 ブラウザに表示されたHello_Applicationのhello_world.jspページ

66.5 WebCenter Portalでのパーソナライズの使用

Oracle WebCenter Portalのパーソナライズでは、式言語(EL)式と組み合せて使用できる、任意のWebCenter Portalオブジェクトに適用可能なユーザー・エクスペリエンスが、動的に導出されて提供されます。この項では、どのWebCenter Portalオブジェクトがユーザーに提示されているかを判別するための、パーソナライズ・エンジンの使用方法の概要と、パーソナライズ・シナリオの結果に基づくこれらのオブジェクトの提示方法の概要について説明します。

この章には次の項が含まれます。

- 第66.5.1項「WebCenter Portalでのパーソナライズの概要」

- 第66.5.2項「WebCenter PortalでのパーソナライズELのコール」

66.5.1 WebCenter Portalでのパーソナライズの概要

WebCenter Portalのパーソナライズで提供されるメカニズムにより、パーソナライズ・シナリオで定義された条件の動的な評価に基づき、様々なユーザー・エクスペリエンスが可能になります。シナリオにより、入力データの定義済ソースが評価され、決定が生成されます。その決定の結果または結果は、式言語(EL)式を使用してWebCenter Portalに適用できます。

WebCenter Portalでパーソナライズを使用するにはまず、Frameworkアプリケーションでシナリオを作成する必要があります。ロジックの指定や、データを取得するための1つまたは複数のデータ・プロバイダのコールといったすべての作業は、シナリオによって行われます。その後、ELを使用してシナリオを実行して結果を返し、それに応じてWebCenter Portalでのユーザー・エクスペリエンスを変更します。パーソナライズ・シナリオの作成方法の詳細は、第66.2.2項「JDeveloperでのパーソナライズされたシナリオの作成」を参照してください。シナリオの実行に使用されるELの一覧は、第F.11項「パーソナライズに関連するEL」にあります。

一度シナリオを設定すると、WebCenter Portal内のELを使用して、ユーザーに関する情報に基づいてターゲット・コンテンツを表示したり、コンテンツの表示方法を決定したりできます。たとえば、パーソナライズ・シナリオを使用して、企業内でのユーザーの役割を決定し、それに基づいてその役割用のコンテンツを選択的に表示できます。ユーザーに対する表示(たとえばページ・テンプレート、ページ・スタイル、スキン、リソース・カタログなど)の調整も可能です。

66.5.2 WebCenter PortalでのパーソナライズELのコール

パーソナライズにより、ユーザーとアプリケーションの両方のコンテキストに基づいて、ターゲット・コンテンツを提供したり、アプリケーション・フローを変更したりできます。パーソナライズでは、たとえば、あるユーザーに関する人事管理データベース内の情報に基づいてコンテンツを戻すことが可能です。また、ページ・テンプレート、ページ・スタイル、スキンおよびナビゲーション・フローでは、それらの内部でコンテンツが表示されますが、それらを選択することで、その特定のユーザーのWebCenter Portal体験をターゲットとすることが可能です。

シナリオの評価またはシナリオにデータを提供するため使用される、コンテンツ・ソースまたはデータ・プロバイダを定義できます。パーソナライズのデフォルトのデータ・プロバイダは、CMISデータ・プロバイダです。このプロバイダは、WebCenter Portalのデフォルト・コンテンツ・リポジトリ(Oracle WebCenter Content Server)からのデータの取得が可能です。また、アクティビティ・グラフ用のデータ・プロバイダとピープル・コネクション用のロケータもすぐに使用できます。他のデータ・ソース用に独自のデータ・プロバイダを定義することもできます。データ・プロバイダの詳細は、第66.1.3項「データ・プロバイダの使用」を参照してください。

通常、ポータルからのシナリオのコールは、次のEL式を使用して行います。

#{p13nContext.conductor['CONDUCTORCONNECTION'].namespaces['NAMESPACE'].scenario['SCENARIO'].results}

ここで:

- CONDUCTORCONNECTION: WebCenterアプリケーションに対して構成されたADF接続の名前です。

- NAMESPACE: ネームスペースの名前です。内部でシナリオが実行されます。

- SCENARIO: 起動されるシナリオの名前です。

たとえば、ユーザーに関する情報に基づいてコンテンツを制御する、パーソナライズの簡単な使用例を作成できます。この例では、従業員の入社日がここ2か月以内の場合、「true」を返すシナリオを作成します(パーソナライズ・シナリオの作成方法の詳細は、第66.2.2項「JDeveloperでのパーソナライズされたシナリオの作成」を参照してください)。シナリオの作成後の手順は、次のとおりです。

1. WebCenter Portalに管理者としてログインします。

2. 新入社員用のページを作成し、New Hireという名前にします。

3. サイトのナビゲーション・モデルを編集し、New Hireページへの新規ナビゲーション・リンクを追加します。ポータルでのナビゲーション・モデルの編集の詳細は、第10.3項「ナビゲーション・モデルの編集」を参照してください。

4. 「New Hire」を選択して「編集」(鉛筆)アイコンをクリックします。

図66-24 ナビゲーション・モデル

5. 「表示可能」属性で式エディタを開き、「値または式の入力」を選択して次のとおり入力します。

#{p13nContext.conductor.default.namespaces['p13nApp'].scenario['NewHire'].results}

ここでp13nAppは、シナリオを含むFrameworkアプリケーションの名前です。また、NewHireは、シナリオの名前です。これでシナリオが実行され、結果(この場合、TrueまたはFalse)が返されます。シナリオの結果を基準にするとユーザーが新入社員(True)である場合、ユーザーがログインすると、メニュー・アイテムが表示されます。

図66-25 式エディタ

67 カスタム・データ・プロバイダの実装

この章では、データ・プロバイダについて紹介します。また、パーソナライズ・アーキテクチャにおけるその重要な役割について説明し、JDeveloperで作成および実行できる基本的な例を示します。この章を読了すると、カスタム・データ・プロバイダの実装方法の基礎が理解できます。

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

- 第67.1項「データ・プロバイダの概要」

- 第67.2項「カスタム・データ・プロバイダ作成の必要性の判断」

- 第67.3項「データ・プロバイダの検出」

- 第67.4項「単純なカスタム・データ・プロバイダの実装」

- 第67.5項「カスタム・データ・プロバイダのデプロイ」

- 第67.6項「シナリオ内のデータ・プロバイダのJDeveloperからの起動」

- 第67.7項「カスタム・データ・プロバイダの設計: ベスト・プラクティス」

67.1 データ・プロバイダの概要

データ・プロバイダは、経営管理システムや在庫管理システムなどの、外部システムから提供されるサービスとコンダクタ間の接続ポイントです。コンダクタは、シナリオと呼ばれる、スクリプト化されたコンポーネントの実行および管理のためのコンテナです。シナリオは、1つまたは複数のデータ・プロバイダが取得したデータを使用および処理します。そのため、ポータル・アプリケーションやモバイル・アプリケーションなどのクライアント・アプリケーションでそのデータを使用できるようになります。詳細は、図67-1を参照してください。

注意:

パーソナライズで使用されるもう1つのタイプのプロバイダが、ファンクション・プロバイダです。データ・プロバイダでは、外部ソースからデータがフェッチされ、シナリオに返されますが、ファンクション・プロバイダではシナリオ内でデータがフィルタされ、変換されます。第68章「カスタム・ファンクション・プロバイダの実装」を参照してください。

図67-1 パーソナライズ・アーキテクチャの概要

データ・プロバイダは、パーソナライズ・アーキテクチャの中で重要なコンポーネントです。データ・プロバイダでは、ほぼすべての種類のサービスへの接続とそこからのデータの取得が柔軟に行えます。WebCenter Portalには、複数のデフォルトのプロバイダが用意されています。これらのデフォルトのプロバイダをすぐに使用開始することも、特定のユースケースに対応する独自のカスタム・データ・プロバイダを作成することもできます。

たとえば、在庫プロバイダを作成しての部品情報および在庫情報の取得、購買プロバイダを作成しての経営管理システムからの購買情報の取得、売上プロバイダを作成してのCRMシステムからの売上情報の取得などが可能です。

67.2 カスタム・データ・プロバイダ作成の必要性の判断

まずはじめに、使用するパーソナライズのユースケースで、デフォルトのプロバイダのいずれかで要件が満たされるのかどうかを確認する必要があります。デフォルトのデータ・プロバイダには、次のものがあります。

- プロパティ・サービス・プロバイダ: プロパティ・サービスのデータをシナリオに統合できます。第70.5項「プロパティ・サービス・データ・プロバイダの使用」を参照してください。

- CMISデータ・プロバイダ: 特にOracle WebCenter Content Serverにより提供される標準ベースのCMIS (Content Management Interoperability Services)コンテンツ・サーバーからコンテンツを取得および検索するサービスを提供します。

- アクティビティ・グラフ・データ・プロバイダ: WebCenter内での分析に基づいて、ユーザーの接続に関するニーズに対して推奨事項を提供するアクティビティ・グラフ・エンジン(アクティビティ・グラフの基盤)との統合を実現します。

これらのデータ・プロバイダは、すべてのユースケースに適合するわけではありません。たとえば、レガシー・アプリケーションから一連の非標準のAPIを使用して、データを取得する必要がある場合です。その場合、カスタム・データ・プロバイダの実装が必要です。第67.4項「単純なカスタム・データ・プロバイダの実装」を参照してください。

67.3 データ・プロバイダの検出

データ・プロバイダ(デフォルト・プロバイダとカスタム・プロバイダの両方)は、図67-2に示す「起動するプロバイダのプロパティ」ダイアログにリスト表示されます。

このダイアログにアクセスするには、シナリオを作成し、そこにプロバイダの起動ノードを追加します。ノードを右クリックして、起動するプロバイダのプロパティを選択します。シナリオの作成およびこのダイアログへのアクセスの詳細は、第66.2.2項「JDeveloperでのパーソナライズされたシナリオの作成」を参照してください。

データ・プロバイダの起動方法を示す例は、第67.6項「シナリオ内のデータ・プロバイダのJDeveloperからの起動」を参照してください。

図67-2 既知のプロバイダのリスト

67.4 単純なカスタム・データ・プロバイダの実装

この項では、単純なカスタム・データ・プロバイダの実装方法、構成方法およびシナリオ内での起動方法について説明します。これは非常に基本的な例ではありますが、カスタム・プロバイダの開発および構成の多くの重要な側面について説明しています。

- 第67.4.1項「使用例と前提条件の概要」

- 第67.4.2項「データ・プロバイダのアーキテクチャ」

- 第67.4.3項「DefaultDataProviderクラスの拡張」

- 第67.4.4項「リソース・プロパティ・ファイルの作成」

- 第67.4.5項「BaseConnectionConfigおよびDefaultProviderConnectionの拡張」

- 第67.4.6項「DefaultExecutableResourceの拡張」

67.4.1 使用例と前提条件の概要

この例では、シナリオ内でコールされた場合に1つのパラメータを受け取り、サーバー・コンソールにメッセージを返す、データ・プロバイダの実装方法を示しています。次からの項では、必要なプロバイダのコードについて考察し、プロバイダのコンダクタへの統合方法、プロバイダのシナリオでの使用方法およびシナリオの実行方法について説明します。

データ・プロバイダを含む、カスタム・パーソナライズ・コンポーネントの開発の前提条件については、第2.5項「パーソナライズのためのJDeveloperの設定」で説明されています。前提条件には、プロジェクトで使用可能な、特定の必要なコンポーネントの作成も含まれます。

注意:

この例は、JDeveloperのPortal Frameworkアプリケーションとの関連で示されています。

カスタム・データ・プロバイダの開発には、JDeveloperは必要ありません。任意のJava IDEを使用できますが、使用するプロジェクトに、必要なWebCenterパーソナライズのJARファイルおよびJavaコンポーネントをインクルードする必要があります。詳細は、第2.5項「パーソナライズのためのJDeveloperの設定」を参照してください。

67.4.2 データ・プロバイダのアーキテクチャ

カスタム・データ・プロバイダを作成するには、一連のJavaベースのクラスを拡張して、適切な機能が提供されるようにする必要があります。表67-1に、この例で使用されているデータ・プロバイダのクラスの早見表を示します。カスタム・プロバイダを作成する場合は、これらのクラスに精通する必要があります。デフォルトのプロバイダを使用する場合は、この基本的なアーキテクチャを理解すると役に立ちます。

表67-1 データ・プロバイダの必須のベース・クラス

インタフェース

主目的

DefaultDataProvider

プロバイダが使用する接続構成オブジェクトをインスタンス化します。各データ・プロバイダが1つの接続を持ちます(1対1リレーションシップ)。

BaseConnectionConfig

接続の名前を指定します。この章で後述するとおり、接続名は必須であり、wcps-connections.xmlという構成ファイルに追加する必要があります。

DefaultProviderConnection

1つまたは複数のExecutableResourceオブジェクトをインスタンス化します。1つのデータ・プロバイダは、複数の実行可能なリソース・オブジェクトを参照できます(1対多リレーションシップ)。

DefaultExecutableResource

ExecutableResourceメソッドは、データ・プロバイダに対して実行が要求された、あらゆる作業を実行します。通常、この作業には外部サービスとのやり取りが含まれます。たとえば、使用するプロバイダがメールとやり取りするよう作成されている場合、特定のメール接続情報を取得してから、getMail()メソッドおよびsendMail()メソッドを実装します。これらのメソッドは、その後でシナリオのコンテキスト内で呼出しできます。これらの概念は、この章で示されている単純なデータ・プロバイダの例を見直すと、より明確になります。

67.4.3 DefaultDataProviderクラスの拡張

カスタム・データ・プロバイダの例を作成する最初の手順は、DefaultDataProviderを拡張することです。この方法は、データベースやアプリケーションなどの外部リソースに依存しないカスタム・プロバイダを、すばやく実装するために使用すると最適です。外部リソースが必要な場合は、かわりにExternalDataProviderクラスを拡張してください。

例67-1に、拡張されたDefaultDataProviderクラスのコードをリストします。Javaクラスの作成およびコンパイルの詳細は、JDeveloperでオンライン・ヘルプを参照してください。

ヒント:

一般的なクラスの作成手順では、「ファイル」メニューから「新規」を選択して、新規Javaクラスの作成を選択します。コードの例をファイルにコピーして保存します。「Javaクラスの作成」ダイアログで、パッケージproviders.dataを明示的に入力すると、そのパッケージ・ディレクトリが作成され、使用するクラスのファイルがそのパッケージ・ディレクトリに配置されます。同じ方法で、この例に示されているすべてのクラスを作成します。

例67-1 DefaultDataProviderの拡張

package providers.data;

import oracle.wcps.conductor.annotation.ContextualProvider;
import oracle.wcps.dataprovider.base.DefaultDataProvider;
import oracle.wcps.conductor.provider.IConnection;
import oracle.wcps.dataprovider.base.IConnectionConfig;

@ContextualProvider
(
contextName="SayHelloProvider",
resourceBundle="resources.SayHelloProperties",
descriptionBundleKey="hello.provider.description",
nameBundleKey="hello.provider.name"
)

public class SayHelloProvider extends DefaultDataProvider {

public Class<?> getConnectionConfigClass()
{
return SayHelloConnectionConfig.class;
}

@Override
protected IConnection createConnection(IConnectionConfig config)
{
return new SayHelloConnection((SayHelloConnectionConfig)config);
}

}

SayHelloProviderで最初に注目すべき点は、これが注釈付きであるということです。各データ・プロバイダ・クラスには、クラス定義の直前に、次のような@ContextualProvider注釈スタンザが必要です。

@ContextualProvider
(
contextName="SayHelloProvider",
resourceBundle="resources.SayHelloProperties",
descriptionBundleKey="hello.provider.description",
nameBundleKey="hello.provider.name"
)

contextName要素には、シナリオ・エディタ・ダイアログに表示される名前を指定します。このダイアログでは、データ・プロバイダを選択できます。resourceBundle要素は、データ・プロバイダのクラス・パスに存在する、リソース・ファイルを参照します。1つのプロジェクトに複数のリソース・ファイルを指定できます。resourceBundleの値は、これらのファイルのいずれかと対応している必要があるので、注意してください。その他の注釈は、リソース・ファイル内の文字列を識別するため使用される、リソース・バンドル・キーです。リソース・ファイルは、主としてローカライゼーションをサポートします。次項、第67.4.4項「リソース・プロパティ・ファイルの作成」では、リソース・ファイルの作成について考察します。

これらのクラス・レベルの注釈を使用するには、次のクラスをインポートする必要があることに注意します。

import oracle.wcps.conductor.annotation.ContextualProvider;

図67-3に、JDeveloperのアプリケーション・ナビゲータでの新規SayHelloProvider.javaソース・ファイルを示します。ソース・ファイルがproviders.dataというパッケージ内にあることに注目してください。独自の表記規則に従って、自分が作成したパッケージです。

図67-3 データ・プロバイダのソース・ファイル

67.4.4 リソース・プロパティ・ファイルの作成

データ・プロバイダのソース・ファイルに配置された、クラス・レベルのJava注釈には、リソース・プロパティ・ファイルを指定します。このファイルは、存在する必要があり、かつクラス注釈で使用されるキーを格納し、その値を提供する必要があります。

注意:

リソース・プロパティ・ファイルのパッケージは、ソース・コードまたはソース・コード・パッケージと同一の親ディレクトリ内に配置する必要があります。プロバイダ・クラスで適切に参照されているかぎり、複数のリソース・ファイルを作成できます。

たとえば、SayHelloProviderクラス注釈(例67-1のリスティングを参照)では、次のリソース・キーが示されていました。最初の注釈、hello.provider.nameには、シナリオ・エディタのプロバイダの起動ダイアログに表示されるように、プロバイダの名前を指定します。2番目の注釈は、要約を提供します。これもプロバイダの起動ダイアログで、プロバイダの名前の上にマウスを置くと表示されます。

hello.provider.name=SayHelloProvider
hello.provider.description=Simple data provider that greets a user by name.

図67-4は、アプリケーション・ナビゲータにあるSayHelloProperties.propertiesというプロパティ・ファイルを示しています。このファイルは、resourcesというパッケージ内にあります。例67-1では、クラス注釈でリソース・ファイルがresources.DataProviderResourcesになるように指定されていました。それが図67-4に反映されています。

図67-4 リソース・プロパティ・ファイル

67.4.5 BaseConnectionConfigおよびDefaultProviderConnectionの拡張

SayHelloProviderクラスを前述のとおり作成すると、2つのクラスが未解決であることに気づきます。次に、これらのクラスを作成します。最初のクラス、SayHelloConnectionConfigは、ベース・クラスのBaseConnectionConfigを拡張します。2番目のSayHelloConnectionは、DefaultProviderConnectionを拡張します。

注意:

各DataProviderクラスには、単一のConnectionクラスがあり、その属性はConnectionConfigクラス内で指定されています。

例67-2では、SayHelloConnectionConfigをリストします。この例では、構成する接続が存在しないため、空になっています。この例の場合、BaseConnectionConfigを拡張せずに、直接使用しても構いません。外部リソースに接続する必要のあるプロバイダを作成する場合は、このクラスはさらに重要になります。

例67-2 BaseConnectionConfigの拡張

package providers.data;

import oracle.wcps.dataprovider.base.BaseConnectionConfig;
import oracle.wcps.connection.annotation.ConnectionConfiguration;

@ConnectionConfiguration
(
connectionType="client.simple.connection"
)
public class SayHelloConnectionConfig extends BaseConnectionConfig {
public SayHelloConnectionConfig() {
super();
}
}

クラス・レベルの注釈、@ConnectionConfigurationが重要です。ここで、プロバイダの接続タイプを指定します。この注釈で指定された接続タイプは、wcps-connections.xml構成ファイルの<connection-type>要素と一致する必要があります。この構成ファイルについては、まもなく第67.5.6項「WCPS接続構成ファイルの更新」で考察します。

次のクラスのSayHelloConnectionは、DefaultProviderConnectionを拡張します。このクラスは主に、ExecutableResourceオブジェクトのインスタンス化の役割を担います。このオブジェクトは、外部APIをコールしてデータを取得するなどの、データ・プロバイダの働きをします。1つのプロバイダに複数のExecutableResourceオブジェクトを指定できますが、この例で必要なのは、1つのみです。

例67-3 DefaultProviderConnectionの拡張

package providers.data;

import oracle.wcps.conductor.provider.IExecutableResource;
import oracle.wcps.dataprovider.base.DefaultProviderConnection;

public class SayHelloConnection extends DefaultProviderConnection {

public SayHelloConnection(SayHelloConnectionConfig config) {
super(config);
}
@Override
protected void createExecutableResources()
{
IExecutableResource resource = new SayHelloExecutableResource();
executableResources.put("SimpleDataProvider", resource);

}
}

マップ・キー"SimpleDataProvider"は、任意の名前であることに注意してください。これはクラス名と一致する必要はありません。

67.4.6 DefaultExecutableResourceの拡張

拡張する必要のある最後のクラスは、DefaultExecutableResourceです。ExecutableResourceオブジェクトは、データ・プロバイダの主力です。これらのクラスにより、シナリオで実行されるカスタム・コードの実装が可能になります。外部ソースからデータをフェッチするプロバイダを作成する場合、その作業を実行するコードは、ExecutableResourceクラスに配置します。

注意:

1つの接続には、複数のExecutableResourceの実装が含まれることがあります。たとえば、ActivityGraphProviderのActivityGraphConnectionには、共通アイテム、共通ユーザー、推奨に関連する3つの異なるExecutableResourceが含まれます。

この単純な例のExecutableResourceクラスでは、それほどの作業は行っていません。メッセージを返すのみです。例67-4のコードを確認し、例の直後で詳細について考察します。

例67-4 DefaultExecutableResourceの拡張

package providers.data;

import oracle.wcps.conductor.annotation.PublicFunction;
import oracle.wcps.conductor.annotation.PublicParameter;
import oracle.wcps.dataprovider.base.DefaultExecutableResource;

public class SayHelloExecutableResource extends DefaultExecutableResource {

@PublicFunction
(
functionName = "sayHello",
descriptionBundleKey = "provider.method.sayHello.description"
)
public String sayHello(@PublicParameter(parameterName = "user",
descriptionBundleKey = "provider.parameter.sayHello.user.description")
String user)

{
String msg = "Hello, " + user +
".  How are you today!";
System.err.println(msg);
return msg;
}
}

このコードで注目するべき最も重要な点は、sayHello()メソッドとそのパラメータが注釈付きであることです。注釈は必須であり、このメソッドに関するメタデータの取得および表示がシナリオ・エディタで可能になります。他の注釈同様、これらの注釈は名前/値ペアを表します。ここで値の部分は、リソース・バンドル・キーです。このキーはさらに、SayHelloProviderクラスで指定されたものと同じリソース・プロパティ・ファイルで参照されます。

ヒント:

文字列値を分離するためリソース・バンドルを使用することは、最善の方法であり、ローカライゼーションの支援になります。必ず最終のデプロイ済JARファイルに、プロパティ・ファイルをインクルードするようにしてください。JARファイルの作成については、第67.5項「カスタム・データ・プロバイダのデプロイ」で考察します。また、第67.4.4項「リソース・プロパティ・ファイルの作成」も参照してください。

単純なSayHelloExecutableResourceクラスのコーディングはここまでです。ご覧のとおり、このクラスを使用すると、シナリオで実行可能なカスタム・メソッドを実装できます。メソッドとパラメータの両方で注釈が必要であることを忘れないようにしてください。

次に、データ・プロバイダをシナリオで使用する場合は、サーバーにデプロイする必要があります。第67.5項「カスタム・データ・プロバイダのデプロイ」を参照してください。

67.5 カスタム・データ・プロバイダのデプロイ

新しいデータ・プロバイダ・クラスを作成した後は、コンパイルして、適切にデプロイする必要があります。これらの作業を正常に完了すると、第67.6項「シナリオ内のデータ・プロバイダのJDeveloperからの起動」で説明されているように、データ・プロバイダ・プロパティの起動ダイアログのシナリオ・エディタに、プロバイダが表示されます。

注意:

データ・プロバイダのデプロイは、大部分が手作業による手順のため、注意を要します。これらの手順には、慎重に従う必要があります。いかなる時点の単純な入力ミスでも、プロバイダを正常にデプロイできなくなります。

手順を要約すると、次のものを格納したJARファイルをデプロイする必要があります。

- コンパイル済のデータ・プロバイダ・クラス

- リソース・プロパティ・ファイル(クラスと同一の親ディレクトリ内に存在する必要があります)

- データ・プロバイダのクラス名が記述されている構成ファイル

67.5.1 データ・プロバイダ・クラスのコンパイル

データ・プロバイダはJavaで作成されており、デプロイする前にコンパイルする必要があります。

1. 図67-5に示すように、アプリケーション・ナビゲータで、ソース・コードが含まれるプロジェクトを右クリックし、「メイク」または「再ビルド」のいずれかのオプションを選択します。

図67-5 プロジェクトのコンパイル

67.5.2 META-INF/servicesへの構成ファイルの作成

データ・プロバイダのデプロイを準備する次の手順は、プロバイダの完全なクラス名が記述された、単純な構成ファイルを作成することです。

1. アプリケーション・ナビゲータで、「アプリケーション・ソース」フォルダ内に、META-INFという新しいフォルダを作成します。

2. META-INFフォルダ内に、servicesというフォルダを作成します。

3. servicesフォルダ内に、oracle.wcps.conductor.provider.IDataProviderというテキスト・ファイルを作成します。厳密にこの名前を使用する必要があります。

4. oracle.wcps.conductor.provider.IDataProviderファイルを開き、デプロイ対象の各データ・プロバイダの完全なクラス名を入力します。複数のプロバイダが存在する場合は、ファイル内で各プロバイダを別々の行に記述します。
例:

providers.data.SayHelloProvider

67.5.3 JARファイル構造の設定

この項は、ユーザーがJDeveloperでのJARファイルの作成に不慣れな場合、JARファイル構造(デプロイメント・プロファイル)の設定方法を説明し、必要な要素がすべて含まれるようにするものです。

1. アプリケーション・ナビゲータで、データ・プロバイダのソース・コードが格納されているプロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。

2. 「プロジェクト・プロパティ」ダイアログで「デプロイ」を選択します。

3. 「新規」をクリックします。

4. 「アーカイブ・タイプ」として「JARファイル」を選択し、JARの名前を入力します。

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

6. 「JARオプション」ダイアログで、「コントリビュータ」を選択します。

7. 図67-6に示すように、「プロジェクトの出力ディレクトリ」、「プロジェクトのソースパス」および「プロジェクトの依存性」が選択されていることを確認します。

図67-6 プロジェクト出力コントリビュータの選択

8. 「フィルタ」を選択します。

9. 「パターン」タブを選択します。

10. 「パターン」タブで、次のファイル・パターンを追加し、特定のタイプのファイルのJARへの組込みおよび除外を行います。

- 組込み: **.class

- 組込み: **resources**

- 組込み: META-INF**

- 除外: **.java

- 除外: **.txt

- 除外: **.html

図67-7に、リストに追加後のこれらのパターンを示します。

図67-7 JARファイルの内容の選択

11. 「OK」をクリックしてから、「プロジェクト・プロパティ」ダイアログの「OK」をクリックします。

12. プロジェクトを保存します。

67.5.4 JARファイルの作成

JARデプロイメント・プロファイルを設定したら、プロジェクトからのJARファイルの生成は準備完了です。

1. アプリケーション・ナビゲータで、プロジェクト(この場合、Portalプロジェクト)を右クリックし、「デプロイ」を選択します。

2. デプロイするJARファイルを選択します。これは、第67.5.3項「JARファイル構造の設定」でファイルに指定した名前です。

3. 「デプロイメント・アクション」ダイアログで、「JARファイルにデプロイ」を選択して「終了」をクリックします。

JARファイルがプロジェクト・ディレクトリに配置されます。このファイルは、ファイル・システムの<Workspace_Directory>/Portal/deployで確認できます。たとえば、MyProvidersというワークスペースの場合、JARはC:\JDeveloper\mywork\MyProviders\Portal\deployにあります。

67.5.5 JARファイルのサーバーへのコピー

JARファイルは、サーバーにコピーする必要があります。

1. 前の手順で作成したJARファイルをコピーします。前述したとおり、ファイルは<Workspace_Directory\Portal\deployに配置されています。

2. JARファイルを、サーバーの次の場所に貼り付けます。
DOMAIN_HOME/conductor-extensions-library/WEB-INF/lib

たとえば、統合WebLogic Server環境では次の場所になります。

C:\JDeveloper\system11.1.7.40.63.82\DefaultDomain\conductor-extensions-library\WEB-INF\lib

また、管理対象サーバー環境では次の場所になります。

ORACLE_HOME/oracle/user_projects/applications/wc_domain/conductor-extensions-library/WEB-INF/lib

3. サーバーを再起動します。

67.5.6 WCPS接続構成ファイルの更新

最後に、wcps-connections.xmlを更新する必要があります。このファイルはサーバーの、デフォルト・ドメイン・ディレクトリの構成ディレクトリに存在します。独自の開発環境での最も簡単な更新方法は、このファイルを手動で編集することです。このファイルは、デフォルト・ドメインの次の場所に配置されています。

DOMIAIN_HOME/config/fmwconfig/wcps-connections.xml

注意:

このファイルを編集および保存後、WebLogic Serverコンソールを使用して、wcps-servicesアプリケーションを再デプロイします。それには、コンソールの「デプロイメント」セクションに移動して、「デプロイメント」表でwcps-servicesを探します。「wcps-services」を選択して「更新」をクリックすると、再デプロイされます。

例67-5に示す<connection>要素を、wcps-connections.xmlファイルに追加します。

例67-5 wcps-connection.xmlエントリのサンプル

<connection>
<connection-name>SayHelloConnection</connection-name>
<connection-type>client.simple.connection</connection-type>
<namespace>*</namespace>
<properties>
<property>
<name>isDefault</name>
<value>true</value>
</property>
</properties>
</connection>

namespace属性には、シナリオが存在するネームスペースを指定します。デフォルトでは、ネームスペースはポータル・アプリケーションの名前です。また、namespaceをアスタリスク(*)にして、すべてのネームスペースを指定することもできます。

ヒント:

ネームスペースは、RESTコマンドを使用して確認できます。resourceIndexから、ネームスペースのリンクをたどります。例:

http://localhost:7101/wcps/api/conductor/resourceIndex

resourceIndexの詳細は、第66.4項「チュートリアル: 単純なアプリケーションの作成、テストおよびデプロイ」を参照してください。

接続名は任意の名前で、シナリオ・エディタのユーザー・インタフェースに表示されます。接続タイプは、作成したBaseConnectionConfigの拡張のconnectionType注釈と一致する必要があります(例67-2を参照)。デフォルトのデータ・プロバイダ用の接続タイプは次のとおりです。

- properties.provider.connection: プロパティ・サービス・データ・プロバイダ

- activity.provider.connection: アクティビティ・グラフ・データ・プロバイダ

- cmis.provider.connection: CMISデータ・プロバイダ

ヒント:

プロバイダをデプロイしてもユーザー・インタフェースに表示されない場合は、wcps-connections.xmlに誤ったネームスペースが指定されている可能性があります。どのネームスペースを使用するかが不明な場合は、アスタリスク(*)を使用してみてください。

サーバーのファイル・システムに直接アクセスできない場合は、Fusion Middleware Controlを使用して接続情報を更新できます。Fusion Middleware Controlの使用の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のFusion Middleware Controlを使用した接続の構成に関する項を参照してください。

67.5.7 デプロイのテスト

デプロイのテストは、シナリオ・エディタのユーザー・インタフェースにカスタム・データ・プロバイダが表示されることを確認するだけです。詳細は、第67.3項「データ・プロバイダの検出」を参照してください。

デプロイしたプロバイダが見つからない場合は、行った手順を見直して、構成ファイルやリソース・ファイルに誤字があるような、明らかな誤りがないことを注意深く確認します。第67.5.3項「JARファイル構造の設定」の説明に従って、JARファイルが適切に作成されていることを確認します。また、JARファイルが適切なドメインにコピーされていることを確認します。

再確認の必要がある一般的なミスには、次のものがあります。

- META-INF/servicesの内容は、JARファイルのトップ・レベルでインクルードする必要があります。たとえば、このフォルダはJARファイル内にMETA-INF/services/oracle.wcps.conductor.provider.IDataProviderとしてパッケージ化されており、これ以外の場所ではありません。

- 注釈が指定されたプロパティ・ファイルは、JARファイルのトップ・レベルでインクルードする必要があります。第67.4.4項「リソース・プロパティ・ファイルの作成」も参照してください。

- JARファイルは、次のフォルダにコピーする必要があります。
DOMAIN_HOME/conductor-extensions/WEB-INF/lib

ファイルのコピー後は、サーバーを再起動する必要があります。

- wcps-connections.xmlに、データ・プロバイダの接続エントリを追加する必要があります。第67.5.6項「WCPS接続構成ファイルの更新」を参照してください。

67.6 シナリオ内のデータ・プロバイダのJDeveloperからの起動

作成したカスタム・データ・プロバイダが正常にデプロイされたら、シナリオで使用できるようになります。これがどのように動作するかを、作成したプロバイダの例で確認します。

1. アプリケーション・ナビゲータでプロジェクトを右クリックし、「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」カテゴリを選択後、「パーソナライズ」をクリックします。

3. アイテム・リストで、コンダクタ・シナリオを選択して「OK」をクリックします。

4. 「新規コンダクタ・シナリオ」ダイアログで、シナリオの名前を入力して「OK」をクリックします。

5. シナリオ・エディタで、「開始」ノードを右クリックし、次の文を追加を選択後、プロバイダの起動を選択します。

6. プロバイダ・ノードを右クリックし、起動するプロバイダのプロパティを選択します。

7. 図67-8に示すように、「SayHelloProvider」ノードをたどってsayHello(user)メソッドを選択します。

図67-8 データ・プロバイダのメソッドの選択

8. 「変数名」フィールドに変数名を入力します。この変数は、次の手順でreturn文を作成する際に参照します。たとえば、単純にresultと入力します。

注意:

変数名の入力は、忘れやすいものです。変数はシナリオのコンテキスト内で使用できるようになります。そのため、他のシナリオのコンポーネントや操作で再利用できることがわかります。

9. ダイアログの「パラメータ」セクションで、「user」パラメータの値を入力します。この値は、シナリオの実行時に出力される、静的な変数になります。

ヒント:

これ以外の方法は、EL式を追加してログインしたユーザーの名前を取得し、それをシナリオで使用するというものです。例: ${ScenarioContext.scenarioRequest.userPrincipal.name}

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

11. プロバイダの起動ノードを右クリックし、次の文を追加を選択してから、「戻る」を選択します。

12. 「戻る」ノードを右クリックし、「式の設定」を選択します。

13. 「シナリオ式ビルダー」ダイアログで、式プロバイダの起動ダイアログで作成した変数名をそのまま入力します。適切な式言語の構文を使用する必要があります。たとえば、変数resultをコールする場合、${result}と入力します。

図67-9 Resultの式の入力

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

15. 「開始」ノードを右クリックし、「実行」を選択します。

16. シナリオ入力ダイアログで、「OK」をクリックします。

17. サーバーが起動してシナリオがデプロイされたら、図67-10に示すように、JDeveloperのログ・ウィンドウで結果を確認します。

図67-10 シナリオの結果

シナリオ・エディタおよび式ビルダーの使用の詳細は、第66章の「JDeveloperでのパーソナライズされたシナリオの作成」を参照してください。

67.7 カスタム・データ・プロバイダの設計: ベスト・プラクティス

この項では、カスタム・データ・プロバイダの設計の際に考慮する必要がある、ベスト・プラクティスについて考察します。

- 第67.7.1項「ドメイン固有のプロバイダの作成」

- 第67.7.2項「既存のデータ・プロバイダ・インフラストラクチャの拡張」

- 第67.7.3項「シナリオとデータ・プロバイダの再利用」

67.7.1 ドメイン固有のプロバイダの作成

ユース・ケースに固有の、または問題のあるドメインに固有のデータ・プロバイダを個別に作成します。たとえば、PeopleSoftやSiebelなどのビジネス・サービスのデータにアクセスする場合のベスト・プラクティスは、別々のデータ・プロバイダを作成して、この2つを明確に線引きすることです。

1つのデータ・プロバイダは、各々が特定のサービスを表す、複数の実行可能なリソースを持つ可能性があることも念頭においてください。たとえば、1つのPeopleSoftProviderは、ベースのExternalDataProviderを拡張して、複数の実行可能なリソースを持つことが可能です。つまり、1つのリソースは個人の基本情報を取得するため、もう1つは仕事の詳細の取得のためなどです。

67.7.2 既存のデータ・プロバイダ・インフラストラクチャの拡張

独自のデータ・プロバイダ・クラスを一から実装するよりも、既存のものを拡張することが最善の方法です。

- 第67.7.2.1項「ベース・クラスの拡張」

- 第67.7.2.2項「接続構成の使用」

- 第67.7.2.3項「接続の再利用」

- 第67.7.2.4項「キャッシュの使用」

67.7.2.1 ベース・クラスの拡張

コンダクタでは、データ・プロバイダ用のベースのインフラストラクチャが提供されます。そのため、プロバイダを一から作成し始めるのではなく、そのいずれかを拡張することを強くお薦めします。例として、AbstractSOAPProviderは、ExternalDataProviderを拡張して作成できます。より具体的なプロバイダでは、PeopleSoftProviderなどは、SoapProviderを拡張して作成できます。

67.7.2.2 接続構成の使用

外部システムに対しては、コンダクタの接続構成ファイルを活用します。ホスト、ポート、WSDLなどの、かなり静的な情報は、データ・プロバイダの接続との関連付けに適した属性です。コンダクタの接続は、Fusion Middleware Controlを使用して管理できます。これは、接続属性の値を実行時に追加または変更できることを意味します。Oracle Fusion Middleware Oracle WebCenter Portalの管理のFusion Middleware Controlを使用した接続の構成に関する項

67.7.2.3 接続の再利用

コンダクタによるデータ・プロバイダの使用方法はRESTfulであるため、データ・プロバイダはシナリオが起動されるたびにインスタンス化されます。外部リソースへの接続を作成すると、コストがかかる場合があります。データ・プロバイダのベース・インフラストラクチャでは、これらの接続のキャッシュが可能です。

67.7.2.4 キャッシュの使用

パーソナライズにより、Coherenceキャッシュを強化するAPIが提供されます。

詳細は、第73章「パーソナライズのためのキャッシュ管理」を参照してください。

67.7.3 シナリオとデータ・プロバイダの再利用

パーソナライズの最も強力な側面の1つは、データ・プロバイダとシナリオの両方の再利用が、複数のコンテキストで複数のクライアントを使用して可能なことです。たとえば、1つのシナリオを再利用して、モバイル・アプリケーション、トランザクションWebサイト、ポータル、タブレットにデータを配信できます。

シナリオでは、複数のデータ(およびファンクション)プロバイダを起動して、特定のビジネス・プロセスをカプセル化します。シナリオは、連鎖することもできます。つまり、あるシナリオの出力を、別のシナリオの入力として使用できます。

68 カスタム・ファンクション・プロバイダの実装

この章では、ファンクション・プロバイダについて紹介します。また、データの統合とデータ統合アーキテクチャにおけるその重要な役割について説明し、JDeveloperで作成および実行できる基本的な例を示します。この章を読むと、ファンクション・プロバイダの実装方法の基礎が理解できます。

この章には次の項が含まれます。

- 第68.1項「ファンクション・プロバイダの概要」

- 第68.2項「ファンクション・プロバイダ作成の必要性の判断」

- 第68.3項「ファンクション・プロバイダの検出」

- 第68.4項「単純なカスタム・ファンクション・プロバイダの実装」

- 第68.5項「カスタム・ファンクション・プロバイダのデプロイ」

- 第68.6項「シナリオ内のファンクション・プロバイダのコール」

68.1 ファンクション・プロバイダの概要

データ・プロバイダがデータ・ソースに接続してデータを取得するのに対し、ファンクション・プロバイダは、シナリオのコンテキスト内のデータを操作します。WebCenter Portalでは、多くのデフォルトのファンクション・プロバイダが用意されており、リスト・オブジェクト、日付オブジェクト、SQLデータなどを操作するためのプロバイダなどがあります。また、カスタム・ファンクション・プロバイダを実装して、特定のユース・ケースに対処できます。

68.2 ファンクション・プロバイダ作成の必要性の判断

WebCenter Portalには、一連のデフォルトのファンクション・プロバイダが用意されており、一般的に必要とされる特定のタスクを実行します。WebCenter Portalでは、ファンクション・プロバイダが用意されており、リストや日付の作成および操作などの、一般的な操作に対処します。さらに、デフォルトのファンクション・プロバイダには、SQLデータ・プロバイダやRESTデータ・プロバイダなど、特定のデータ・プロバイダが返すデータに対処するものがあります。

注意:

デフォルトのファンクション・プロバイダについては、第69章「ファンクション・プロバイダ・リファレンス」で説明されています。

一部のユース・ケースでは、一連の標準のファンクション・プロバイダでは不十分な場合があります。その場合、独自のカスタム・ファンクション・プロバイダを作成してデプロイすることも選択できます。たとえば、カスタム・データ・プロバイダから返された、特定のデータセットを操作する必要がある場合、そのデータを処理するために、カスタム・ファンクション・プロバイダを作成する必要がある場合があります。第68.4項「単純なカスタム・ファンクション・プロバイダの実装」を参照してください。

68.3 ファンクション・プロバイダの検出

デフォルト・ファンクション・プロバイダおよびカスタム・ファンクション・プロバイダのリストを検出する1つの方法は、図68-1に示すように、「シナリオ式ビルダー」ダイアログを表示することです。

1. Executeシナリオ・ノードを作成します。

2. 「Execute」ノードを右クリックし、「式の設定」を選択します。

例については、第68.6項「シナリオ内のファンクション・プロバイダのコール」を参照してください。

図68-1 ファンクション・プロバイダのリスト

ファンクション・プロバイダを使用すると、データに対する操作を行うことが可能になります。たとえば、図68-1は「シナリオ式ビルダー」ダイアログを示しています。コレクション・ファンクション・プロバイダが選択されています。ドロップダウン・リストを使用して、データのコレクションを処理するファンクション・プロバイダのメソッドを選択できます。コレクション・ファンクション・プロバイダは、様々なデフォルト・ファンクション・プロバイダの中の1つです。

ファンクション・プロバイダの選択後は、パラメータが存在する場合は、その値を入力する必要があります。ファンクション・プロバイダへのパラメータ値の入力は、「式ビルダー」ダイアログ内で式言語文を編集して行います。このダイアログでは、コンテキスト・サービス同様、現在のシナリオ・コンテキストでも使用可能な、すべての変数のリストも提供されます。これらは、現在のアプリケーションのスコープ内に存在する変数です。

注意:

ファンクション・プロバイダは、条件文やReturn文などの、式ビルダーを使用するシナリオ・エディタ内の他の文のコンテキストで表示されます。ただし、各文に関連付けられた式ビルダーのユーザー・インタフェースは、同一です。

使用可能なファンクション・プロバイダを検出するもう1つの方法は、RESTリクエストを実行してレスポンスを表示することが可能なツールで、RESTのレスポンスを表示することです。

1. ブラウザで、次のURLを入力します。ここでホストおよびポートは、WCPSサーバーが稼働しているホスト名とポート名です。例:

http://example.com:8891/wcps/api/conductor/resourceIndex

2. ネームスペースのURIを検索し、そのURLをブラウザで入力します。例:

http://example.com:8891/wcps/api/conductor/namespaces

3. アプリケーションのfunctionProvidersのURIを検索し、そのURLをブラウザで入力します。projectionの値をsummaryに設定します。例:

http://mexample.com:8891/wcps/api/conductor/namespaces/MyApplication/functionProviders?projection=summary

このURLは、サーバーにデプロイされたすべてのファンクション・プロバイダを含む、RESTレスポンスを返します。この方法は、新しいファンクション・プロバイダの構成をテストするため実行する、手軽なテストでもあります。

68.4 単純なカスタム・ファンクション・プロバイダの実装

この項では、単純なカスタム・ファンクション・プロバイダの実装方法、構成方法およびシナリオ内での起動方法について説明します。これは非常に基本的な例ではありますが、カスタム・プロバイダの開発および構成の多くの重要な側面について説明しています。

68.4.1 使用例と前提条件の概要

JDeveloperでのファンクション・プロバイダの開発を始める前に、適切に設定が行われていることを確認します。いくつかの構成は、使用する環境で構成を行うか、確認する必要があります。詳細は、第2.5項「パーソナライズのためのJDeveloperの設定」を参照してください。

一般的なガイダンスとして、図68-2に、カスタム・ファンクション・プロバイダの実装用の、サンプルのプロジェクト構造を示します。ファンクション・プロバイダの開発は、Javaの開発をサポートする、あらゆるタイプのJDeveloperプロジェクトで可能です。JDeveloperでのJavaクラスの作成の詳細は、JDeveloperオンライン・ヘルプを参照してください。

注意:

この例では、プロバイダはJDeveloperのFusion Webアプリケーションの状態で作成されています。ファンクション・プロバイダは、WebCenter Portalアプリケーションや、Javaの機能が組み込まれた、他の任意のタイプのJDeveloperアプリケーションの状態で作成することも可能です。

注意:

作成するプロジェクト構造は、図68-2に示すサンプルとは、まったく同じにはなりません。ただし、正常にデプロイするためには、コンポーネントの基本的な構成(ソース・ファイル、リソース・プロパティおよびMETA-INF/services構成ファイル)は、このパターンに従う必要があります。たとえば、resourcesディレクトリは、クラス・ファイルのディレクトリと同一のディレクトリに存在する必要があります。繰り返しますが、図68-2に示された、一般的なパターンに従えばデプロイは成功します。プロジェクト構造の個々の部分については、以降の項で説明します。

図68-2 サンプルのファンクション・プロバイダのプロジェクト構造

68.4.2 ファンクション・プロバイダの例

すべてのファンクション・プロバイダは、IFunctionProviderインタフェースの実装です。データ・プロバイダ同様、ファンクション・プロバイダでも、Java注釈を使用するとメソッドとパラメータがシナリオ・エディタのユーザー・インタフェースに表示されるようになります。

例68-1に、ファンクション・プロバイダの例を示します。これは、数字に書式を設定するメソッドを提供します。以降の項では、クラスの先頭やメソッドおよびパラメータの前後に現れる必須のJava注釈を含む、クラスの要素を詳細に確認します。

ヒント:

一般的なクラスの作成手順では、「ファイル」メニューから「新規」を選択して、新規Javaクラスの作成を選択します。コードの例をファイルにコピーして保存します。「Javaクラスの作成」ダイアログで、パッケージmodel (この例用)を明示的に入力すると、そのパッケージ・ディレクトリが作成され、使用するクラスのファイルがそのパッケージ・ディレクトリに配置されます。

注意:

ファンクション・プロバイダは、単純にJavaコンポーネントなので、いずれのサーバー・サイドJavaコンポーネントでも適用されるような例外処理のベスト・プラクティスを適用できます。

例68-1 ファンクション・プロバイダの例

package model;

import oracle.wcps.conductor.annotation.FunctionProvider;
import oracle.wcps.conductor.provider.IFunctionProvider;
import oracle.wcps.conductor.annotation.PublicFunction;
import oracle.wcps.conductor.annotation.PublicParameter;
import java.text.DecimalFormat;
import java.lang.NumberFormatException;

import oracle.wcps.conductor.exception.ConductorRuntimeException;

@FunctionProvider
(
prefix="number",
resourceBundle="resources.Providers",
nameBundleKey="function.provider.name",
descriptionBundleKey="function.provider.description"
)
public class FormatNumberProvider implements IFunctionProvider {
@PublicFunction
(
functionName="format",
descriptionBundleKey="format.description"
)
public static String getNumber(@PublicParameter(parameterName="pattern",
descriptionBundleKey="pattern.description") String pattern,
@PublicParameter(parameterName="number", descriptionBundleKey="number.description") String number) {
Double dd;
dd = new Double("1.0");
try {
dd = new Double(number);
} catch (NumberFormatException e){
return ("You must enter a valid number.");
}
DecimalFormat df = new DecimalFormat(pattern);
return number = df.format(dd);
}
}

図68-3に、Javaソース・ファイルの例であるFormatNumProvider.javaの、JDeveloperのアプリケーション・ナビゲータでの表示を示します。このファイルは、modelというパッケージ内にあります。

ヒント:

読者が作成したソース・ファイルの構成とは異なる可能性がありますが、少なくとも図68-3は、ファンクション・プロバイダの完全なプロジェクト構造を示しています。この一般的なプロジェクト構造のパターンが、ベスト・プラクティスです。

図68-3 プロバイダ・クラスのソース・ファイル

ファンクション・プロバイダは、任意のオブジェクトを返すことが可能です。最善の方法として、戻りオブジェクトはマーシャリング可能で、JAXB標準に準拠するようにしてください。この条件に従った戻りオブジェクトは、データ・プロバイダの入力など、シナリオ内の任意の場所で使用できます。

68.4.3 Javaクラス注釈の追加

各ファンクション・プロバイダ・クラスには、クラス定義の直前に、次のようなJava注釈スタンザが必要です。

@FunctionProvider
(
prefix="number",
resourceBundle="resources.Providers",
nameBundleKey="function.provider.name",
descriptionBundleKey="function.provider.description"
)

接頭辞要素には名前を指定します。この名前はシナリオ・エディタのユーザー・インタフェースに表示され、ファンクション・プロバイダを選択できるようになります。たとえば、このファンクション・プロバイダがシナリオで参照されている場合、メソッドは式言語式を使用して次のようにコールされます。${number:getNumber(format, number)"}

注意:

接頭辞名および変数には、ハイフンまたは空白を含めないでください。ハイフンまたは空白が接頭辞名または変数内に存在する場合、式言語式では参照できません。

resourceBundle要素は、ファンクション・プロバイダのクラス・パスに存在する、リソース・ファイルを参照します。その他の注釈は、リソース・ファイル内の文字列を識別するため使用される、リソース・バンドル・キーです。リソース・ファイルは、主としてローカライゼーションをサポートします。

次の項で説明するように、ファンクション・プロバイダのメソッドおよびメソッドのパラメータの前後には注釈も必要です。注釈を使用するには、次のクラスをインポートする必要があることに注意します。

import oracle.wcps.conductor.annotation.PublicFunction;
import oracle.wcps.conductor.annotation.PublicParameter;

68.4.4 ファンクション・プロバイダのメソッドの作成

メソッドおよびそのパラメータには、例68-0に示すパターンに従って注釈を付ける必要があります。functionNameの値は、ユーザー・インタフェースに表示されます。descriptionBundleKeyに値を指定すると、クラスの先頭で指定されているリソース・ファイルに説明を記述できます。メソッドのパラメータの注釈でも、同様のパターンが適用されます。

ヒント:

Java Bean形式のget構文を使用してメソッドを作成した場合は、便利なドット表記法を使用してELによりオブジェクト属性にアクセスできます。たとえば、プロバイダにfooという属性とgetFoo()というメソッドがある場合、次のような文を使用して、シナリオ内でELでドット表記法を使用して属性にアクセスできます。${myReturnObject.foo()}

例68-2 メソッドおよびパラメータ用のJava注釈

@PublicFunction
(
functionName="format",
descriptionBundleKey="format.description"
)
public static String getNumber(@PublicParameter(parameterName="pattern",
descriptionBundleKey="pattern.description") String pattern,
@PublicParameter(parameterName="number", descriptionBundleKey="number.description") String number) {

Double dd;
dd = new Double("1.0");
try {
dd = new Double(number);
} catch (NumberFormatException e){
return ("You must enter a valid number.");
}
DecimalFormat df = new DecimalFormat(pattern);
return number = df.format(dd);
}
}

68.5 カスタム・ファンクション・プロバイダのデプロイ

新しいファンクション・プロバイダ・クラスを作成した後は、コンパイルして、適切にデプロイする必要があります。これらの作業を正常に完了すると、プロバイダがシナリオ・エディタの式ビルダー・ユーザー・インタフェースに表示されます。この項では、必要な手順について説明します。

注意:

ファンクション・プロバイダのデプロイは、大部分が手作業による手順のため、注意を要します。これらの手順には、慎重に従う必要があります。いかなる時点の単純な入力ミスでも、プロバイダをデプロイできなくなります。

手順を要約すると、次のものを格納したJARファイルをデプロイする必要があります。

- コンパイル済のファンクション・プロバイダ・クラス

- リソース・プロパティ・ファイル(クラスと同一のディレクトリ内に存在する必要があります)

- ファンクション・プロバイダのクラス名が記述されている構成ファイル

その後、JARファイルを手動でサーバーにコピーし、サーバーを再起動する必要があります。

68.5.1 ファンクション・プロバイダ・クラスのコンパイル

ファンクション・プロバイダはJavaで作成されており、デプロイする前にコンパイルする必要があります。

1. 図68-4に示すように、アプリケーション・ナビゲータで、ソース・コードが含まれるプロジェクトを右クリックし、「メイク」または「再ビルド」のいずれかのオプションを選択します。

図68-4 プロジェクトのコンパイル

68.5.2 リソース・プロパティ・ファイルの作成

ファンクション・プロバイダ・クラスのファイルに配置されたJava注釈は、リソース・プロパティ・ファイルを指します。このファイルは存在する必要があり、かつ必要なキーおよび値を格納している必要があります。このファイルを作成する基本手順は、次のとおりです。

1. Javaファイルが含まれるプロジェクトを右クリックし、「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を選択します。

3. Javaパッケージを作成します。この例では、パッケージはresourcesという名前です。

4. パッケージ内にプロパティ・ファイルを作成します。この例では、このファイルはProviders.propertiesという名前です。

図68-5に、resourcesパッケージ内にあるProviders.propertiesというプロパティ・ファイルを示します。

図68-5 リソース・プロパティ・ファイル

たとえば、NumberFormatProviderクラスの注釈(例68-1のリスティングを参照)では、次のリソース・キーが示されていました。最初の注釈format.descriptionには、プロバイダの目的を記述します。その他では、各入力パラメータについて記述します。

format.description=Format a number.
pattern.description=A number format pattern like #.##.
number.description=The number to format.

68.5.3 META-INF/servicesへの構成ファイルの作成

ファンクション・プロバイダのデプロイを準備する最後の手順は、プロバイダの完全なクラス名が記述された、単純な構成ファイルを作成することです。

1. アプリケーション・ナビゲータで、「アプリケーション・ソース」フォルダ内に、META-INFという新しいフォルダを作成します。

2. META-INFフォルダ内に、servicesというフォルダを作成します。

3. servicesフォルダ内に、oracle.wcps.conductor.provider.IFunctionProviderというファイルを作成します。厳密にこの名前を使用する必要があります。図68-6を参照してください。

図68-6 ファンクション・プロバイダの構成ファイル

4. oracle.wcps.conductor.provider.IFunctionProviderファイルを開き、デプロイ対象の各ファンクション・プロバイダの完全なクラス名を入力します。
例:

model.FormatNumProvider

68.5.4 JARファイル構造の設定

この項は、ユーザーがJDeveloperでのJARファイルの作成に不慣れな場合、JARファイル構造(デプロイメント・プロファイル)の設定方法を説明し、必要な要素がすべて含まれるようにするものです。

1. アプリケーション・ナビゲータで、プロジェクト(この例では、Portalというプロジェクト)を右クリックし、「プロジェクト・プロパティ」を選択します。

2. 「プロジェクト・プロパティ」ダイアログで「デプロイ」を選択します。

3. 「新規」をクリックします。

4. 「アーカイブ・タイプ」として「JARファイル」を選択し、JARの名前を入力します。

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

6. 「JARオプション」ダイアログで、「コントリビュータ」を選択します。

7. 図68-7に示すように、「プロジェクトの出力ディレクトリ」、「プロジェクトのソースパス」および「プロジェクトの依存性」が選択されていることを確認します。

図68-7 プロジェクト出力コントリビュータの選択

8. 「フィルタ」を選択します。

9. 「ファイル」タブで、JARに追加するファイルのみを選択します。図68-8に示すように、JARにはMETA-INF/servicesディレクトリの内容、Javaクラスおよびリソース・フォルダを含める必要があります。

図68-8 JARファイルの内容の選択

10. 「OK」をクリックしてから、「プロジェクト・プロパティ」ダイアログの「OK」をクリックします。

11. プロジェクトを保存します。

68.5.5 JARファイルの作成

JARデプロイメント・プロファイルを設定したら、プロジェクトからのJARファイルの生成は準備完了です。

1. アプリケーション・ナビゲータで、プロジェクト(この場合、Portalプロジェクト)を右クリックし、「デプロイ」を選択します。

2. デプロイするJARファイルを選択します。これは、第68.5.4項「JARファイル構造の設定」でファイルに指定した名前です。

3. 「デプロイメント・アクション」ダイアログで、「JARファイルにデプロイ」を選択して「終了」をクリックします。

JARファイルがプロジェクト・ディレクトリに配置されます。このファイルは、ファイル・システムの<Workspace_Directory>/Portal/deployで確認できます。たとえば、MyProvidersというワークスペースの場合、JARはC:\JDeveloper\mywork\MyProviders\Portal\deployにあります。

68.5.6 JARファイルのサーバーへのコピー

JARファイルは、サーバーにコピーする必要があります。

1. 前の手順で作成したJARファイルをコピーします。前述したとおり、ファイルは<Workspace_Directory\Portal\deployに配置されています。

2. JARファイルを、サーバーの次の場所に貼り付けます。
DOMAIN_HOME/conductor-extensions-library/WEB-INF/lib

たとえば、統合WebLogic Server環境では次の場所になります。

C:\JDeveloper\system11.1.7.40.63.82\DefaultDomain\conductor-extensions-library\WEB-INF\lib

また、管理対象サーバー環境では次の場所になります。

ORACLE_HOME/oracle/user_projects/applications/wc_domain/conductor-extensions-library/WEB-INF/lib

3. サーバーを再起動します。

68.5.7 デプロイのテスト

デプロイのテストは、UIにカスタム・データ・プロバイダが表示されることを確認するか、REST APIを使用して検索できることを確認するだけです。詳細は、第68.3項「ファンクション・プロバイダの検出」を参照してください。

デプロイしたファンクション・プロバイダが見つからない場合は、行った手順を見直して、構成ファイルやリソース・ファイルに誤字があるような、明らかな誤りがないことを注意深く確認します。第68.5.4項「JARファイル構造の設定」の説明に従って、JARファイルが適切に作成されていることを確認します。また、JARファイルが適切なドメインにコピーされていることを確認します。

再確認の必要がある一般的なミスには、次のものがあります。

- META-INF/servicesの内容を、JARファイルに含める必要があります。

- JARファイルはDOMAIN_HOME/conductor-extensions/WEB-INF/libフォルダにコピーする必要があります。ファイルのコピー後は、サーバーを再起動する必要があります。

68.6 シナリオ内のファンクション・プロバイダのコール

シナリオ・エディタを使用すると、変数に対して操作を行うことが可能なかぎり、変数の設定、return文の作成、データ・プロバイダへの入力パラメータの作成、条件分岐文の設定などの、いずれの場合でもファンクション・プロバイダをコールできます。

ファンクション・プロバイダは、常に「式ビルダー」ダイアログ内からコールします。このダイアログを使用すると、ファンクション・プロバイダの選択と、実行対象の特定のメソッドの選択が可能です。プロバイダが入力パラメータを取る場合、パラメータを式言語(EL)文で指定する必要があります。EL文は、メソッドの選択の際に自動的に生成されるので、その後は適切な変数の選択または入力のみを行います。

たとえば、ファンクション・プロバイダの例、NumberFormatProvider (例68-1にリストされている)を見てみます。

プロバイダのクラスには、prefixという注釈があります。この例では、この注釈にnumberが設定されています。「式ビルダー」ダイアログでは、ファンクション・プロバイダのドロップダウン・リストにnumberというプロバイダが表示されているのがわかります。図68-9では、「関数」ドロップダウン・リストでnumberというファンクション・プロバイダが選択されています。numberの下は、プロバイダにあるメソッドのリストです。この例では、formatという1つのメソッドのみが含まれています。formatはメソッドのfunctionName注釈で指定されていたものです。

注意:

接頭辞名および変数には、ハイフンまたは空白を含めないでください。ハイフンまたは空白が接頭辞名または変数内に存在する場合、式言語式では参照できません。

図68-9 「シナリオ式ビルダー」ダイアログ

ダイアログの「式」フィールドには、EL文が自動的に入力され、ファンクション・プロバイダに変数を渡すことが可能になります。式は次のとおりです。

${number:format(format,myNumber)}

式を解析すると、次のとおりです。

- numbers: ファンクション・プロバイダのクラス注釈で指定された、ファンクション・プロバイダの名前です。

- format: メソッドの注釈で指定された、メソッドの名前です。

- pattern: メソッドの注釈で指定された、最初のパラメータの名前です。この場合、「説明」に表示されているように、パラメータの型は文字列です。ファンクション・パラメータの実装でわかるように、この文字列は、数字の書式設定方法を表すパターンです。このパラメータは、JavaクラスのDecimalNumberが元になっています。詳細は、このクラスのJavadocを参照してください。

- number: メソッドの注釈で指定された、2番目のパラメータの名前です。この場合も、パラメータの型は文字列です。単に文字列として表された数字です。

シナリオ・エディタおよび式ビルダーの使用の詳細は、第66章の「JDeveloperでのパーソナライズされたシナリオの作成」を参照してください。

69 ファンクション・プロバイダ・リファレンス

この章では、一連のデフォルトの標準ファンクション・プロバイダおよびその関連メソッドについて説明します。

ファンクション・プロバイダのメソッドは、シナリオから起動され、データ・プロバイダから返されるデータを操作できます。この章で説明する一連の標準ファンクション・プロバイダは、WebCenter Portalにデフォルトで用意されており、データ・プロバイダから返される結果に対して、一般的に必要とされる操作を行います。

カスタム・ファンクション・プロバイダの実装の詳細は、第68章「カスタム・ファンクション・プロバイダの実装」を参照してください。

表69-1に、標準ファンクション・プロバイダのメソッドの様々なカテゴリを示します。

表69-1 標準ファンクション・プロバイダのカテゴリ

ファンクション・プロバイダのカテゴリ

説明

キャッシュ・メソッド

名前付きキャッシュに対する操作を行います。

マップ・メソッド

Mapオブジェクトを作成および更新します。

リスト・メソッド

Listオブジェクトを作成および更新します。

文字列メソッド

一般的な文字列操作を行います。

日付メソッド

Dateオブジェクトを作成および操作します。

システム・メソッド

出力操作を行います。

コレクション・メソッド

コレクション・オブジェクトを作成、更新および変換します。

セキュリティ・メソッド

特定のロールのユーザーかどうか判定します。

CMISメソッド

CMISプロバイダをサポートします。

アクティビティ・グラフ・メソッド

アクティビティ・グラフ・プロバイダをサポートします。

セキュリティ・メソッド

ユーザーおよびロールに関する情報を取得できます。

キャッシュ・メソッド

名前付きOracle Coherenceキャッシュ・オブジェクトに対する操作を行います。

表69-2 キャッシュ・メソッド

使用するメソッド

アクション

getCache

指定されたキャッシュ構成ファイル内のエントリを使用して、名前付きキャッシュを返します。

get

名前付きキャッシュ内のアドレス・キーの値を返します。

clear

名前付きキャッシュをクリアします。

getCustomCache

wcps-dataprovider-cache-config.xmlに構成された、カスタム・キャッシュを取得します。

getLargeCache

wcps-dataprovider-cache-config.xmlに構成された、大容量のキャッシュを取得します。

getMediumCache

wcps-dataprovider-cache-config.xmlに構成された、中容量のキャッシュを取得します。

getSmallCache

wcps-dataprovider-cache-config.xmlに構成された、中容量のキャッシュを取得します。

put

名前付きキャッシュに値を設定します。

getCache

指定されたキャッシュ構成ファイル内のエントリを使用して、名前付きキャッシュを返します。

引数

cacheConfigFile

(String)キャッシュ構成XMLファイルの名前。カスタム・ファンクション・プロバイダの場合、この構成ファイルはアプリケーションのクラスパス内に存在する必要があります。言い換えると、コールする側のクラスパス内であれば、どこにあっても構いません。

cacheName

(String)このメソッドにより返されるキャッシュの名前。

式言語の形式

${cache:getCache(configFile,cacheName)}

戻り値

com.tangosol.net.NamedCache

例

${cache:getCache('my-config.xml','mycache')}

使用上の注意

なし。

get

指定されたキーのキャッシュのマップ先の値を返します。

引数

cacheName

(com.tangosol.net.NamedCache)キャッシュ・オブジェクト。

key

(Object)名前付きキャッシュ内のアドレスの値へのキー。

式言語の形式

${cache:getCache(cache, key)}

戻り値

(Object)指定されたキーのキャッシュのマップ先の値。

例

${cache:get(mycache, aKey)}

使用上の注意

なし。

clear

名前付きキャッシュをクリアします。

引数

cacheName

(com.tangosol.net.NamedCache)キャッシュ・オブジェクト。

式言語の形式

${cache:getCache(cacheName)}

例

${cache:clear(aCache)}

使用上の注意

なし。

getCustomCache

wcps-dataprovider-cache-config.xmlに構成された、カスタム・キャッシュを取得します。

引数

cacheName

(String) wcps-dataprovider-cache-config.xmlに構成されたキャッシュの名前。

式言語の形式

${cache:getCache("cacheName")}

(Object)指定されたキーのキャッシュのマップ先の値。

戻り値

(com.tangosol.net.NamedCache)キャッシュ・オブジェクト。

例

${cache:clear("aCache")}

使用上の注意

なし。

getLargeCache

wcps-dataprovider-cache-config.xmlに構成された、大容量のキャッシュを取得します。デフォルトのキャッシュ・パラメータは、次のとおりです。

- 10000エントリ

- 1時間のTTL

引数

cacheName

(String) wcps-dataprovider-cache-config.xmlに構成された大容量のキャッシュの名前。

式言語の形式

${cache:getLargeCache("cacheName")}

戻り値

(com.tangosol.net.NamedCache) wcps-dp-large-<cacheName>という名前のキャッシュ・オブジェクト。

例

${cache:getLargeCache("aLargeCache")}

使用上の注意

なし。

getMediumCache

wcps-dataprovider-cache-config.xmlに構成された、中容量のキャッシュを取得します。デフォルトのキャッシュ・パラメータは、次のとおりです。

- 1000エントリ

- 1時間のTTL

引数

cacheName

(String) wcps-dataprovider-cache-config.xmlに構成された中容量のキャッシュの名前。

式言語の形式

${cache:getMediumCache("cacheName")}

戻り値

(com.tangosol.net.NamedCache) wcps-dp-medium-<cacheName>という名前のキャッシュ・オブジェクト。

例

${cache:getMediumCache("aMediumCache")}

使用上の注意

なし。

getSmallCache

wcps-dataprovider-cache-config.xmlに構成された、小容量のキャッシュを取得します。デフォルトのキャッシュ・パラメータは、次のとおりです。

- 100エントリ

- 1時間のTTL

引数

cacheName

(String) wcps-dataprovider-cache-config.xmlに構成された小容量のキャッシュの名前。

式言語の形式

${cache:getSmallCache("cacheName")}

戻り値

(com.tangosol.net.NamedCache) wcps-dp-small-<cacheName>という名前のキャッシュ・オブジェクト。

例

${cache:getSmallCache("aSmallCache")}

使用上の注意

なし。

put

名前付きキャッシュに値を設定します。

引数

cache

(com.tangosol.net.NamedCache)キャッシュ・オブジェクト。

key

(java.lang.Object)保存されたオブジェクトを識別するためのキー。

value

(java.lang.Object)キャッシュ対象のオブジェクト。

式言語の形式

${cache:put(aCache, aKey, aValue)}

戻り値

void

例

${cache:put(myCache, myKey, myValue)}

使用上の注意

なし。

マップ・メソッド

Mapオブジェクトを操作するユーティリティ・メソッドです。

表69-3 マップ・メソッド

使用するメソッド

アクション

new

新規HashMapオブジェクトを作成して返します。

put

キー/値ペアの既存のマップにエントリを設定します。

size

マップ内のエントリ数を返します。

keyset

マップ内のキーのコレクションを返します。

values

Mapオブジェクト内の値のコレクションを返します。

get

キーに関連付けられた、Mapオブジェクトからの値を返します。

new

新規HashMapオブジェクトを作成して返します。

引数

なし。

式言語の形式

${maps:new()}

戻り値

java.util.HashMap

例

${maps:new()}

使用上の注意

なし。

put

キー/値ペアの既存のマップにエントリを設定します。

引数

map

HashMapの名前。

key

キー・オブジェクト。

value

キーに対してマップされた値。

式言語の形式

${maps:put(map,key,value)}

戻り値

新規Mapオブジェクトを返します(java.util.Map)。

例

${maps:put(existingMap, keyObj, aValue)}

使用上の注意

なし。

size

マップ内のエントリ数を返します。

引数

map

(java.util.Map) Mapオブジェクト。

式言語の形式

${maps:size(aMap)}

戻り値

int

例

${maps:size(aMap)}

使用上の注意

なし。

keyset

マップ内のキーのコレクションを返します。

引数

map

(java.util.Map) Mapオブジェクト。

式言語の形式

${maps:put(map)}

戻り値

java.util.Set

例

${maps:keyset(aMap)}

使用上の注意

なし。

values

Mapオブジェクト内の値のコレクションを返します。

引数

map

(java.util.Map) Mapオブジェクト。

key

(java.lang.Object)キー・オブジェクト。

value

(<V>)キーに対してマップされた値。

式言語の形式

${maps:values(map)}

戻り値

java.util.Collection

例

${maps:values(aMap)}

使用上の注意

なし。

get

キーに関連付けられた、Mapオブジェクトからの値を返します。

引数

map

(java.util.Map) Mapオブジェクト。

key

(java.lang.Object)キー・オブジェクト。

式言語の形式

${maps:put(map,key)}

戻り値

<V>型の値。

例

${maps:put(aMap, aKey)}

使用上の注意

なし。

withEntries

指定されたキー/値ペアが移入された、HashMapを作成します。

引数

key: (String)キー。

value: (String)値。

式言語の形式

${maps:withEntries(keyvaluepairs)}

戻り値

java.util.Map

使用上の注意

なし。

リスト・メソッド

オブジェクトのリストの作成およびオブジェクトのリストへの追加を行います。

表69-4 リスト・メソッド

使用するメソッド

アクション

new

新規ArrayListオブジェクトを作成して返します。

add

リストにオブジェクトを追加します。

size

Listオブジェクト内の要素の数を返します。

new

新規ArrayListオブジェクトを作成して返します。

引数

なし。

式言語の形式

${list:new()}

戻り値

java.util.ArrayList

例

${list:new()}

使用上の注意

なし。

add

リストにオブジェクトを追加します。

引数

list

(java.util.List) List型のオブジェクト。

value

(java.lang.Object)リストに追加する値。

式言語の形式

${list:add(list,value)}

戻り値

java.lang.Boolean

例

${list.add(existingList, aValue)}

使用上の注意

なし。

size

Listオブジェクト内の要素の数を返します。

引数

list

(java.util.List) Listオブジェクト。

式言語の形式

${list:size(list)}

戻り値

int

例

${list:size(mylist)}

使用上の注意

なし。

文字列メソッド

文字列に対する基本的なユーティリティ機能を実行します。

表69-5 文字列メソッド

使用するメソッド

アクション

concat

2つの文字列を連結し、新規Stringオブジェクトを返します。

contains

この文字列に指定された文字列が含まれる場合、trueを返します。

indexOf

この文字列内で、指定された部分文字列が最初に見つかったインデックスを返します。

join

指定されたコレクション内のStringオブジェクトを結合し、指定されたデリミタで区切った、新しい文字列を返します。

replaceAll

この文字列の、指定された正規表現と一致する各部分文字列を、指定された置換文字列で置き換えます。

split

この文字列を、指定された正規表現に一致する前後で分割します。

startsWith

この文字列が、指定された接頭辞で始まるかどうかをテストします。

endsWith

この文字列が、指定された接頭辞で終わるかどうかをテストします。

substring

この文字列の部分文字列である、新しい文字列を返します。

concat

2つの文字列を連結し、新規Stringオブジェクトを返します。

引数

stringA

(java.lang.String)連結先の文字列。

stringB

(java.lang.String) stringAの最後に連結する文字列。

式言語の形式

${string:concat(stringA,stringB)}

戻り値

java.lang.String

例

${cache:getCache("Hello, ","world!")}

使用上の注意

なし。

contains

この文字列に指定された文字列が含まれる場合、trueを返します。

引数

string

(java.lang.String)検索対象の文字列。

containsString

(java.lang.String)検索する文字列。

式言語の形式

${string:contains(string,containsString)}

戻り値

java.lang.Boolean

例

${cache:getCache("the quick brown fox","fox")}

使用上の注意

なし。

indexOf

この文字列内で、指定された部分文字列が最初に見つかったインデックスを返します。

引数

string

(java.lang.String)部分文字列の検索対象の文字列。

substring

(java.lang.String)検索する部分文字列。

式言語の形式

${string:indexOf(string,substring)}

戻り値

int

例

${cache:getCache("the quick brown fox", "quick")}

使用上の注意

なし。

join

指定されたコレクション内のStringオブジェクトを結合し、指定されたデリミタで区切った、新しい文字列を返します。

引数

collection

文字列を含むコレクション・オブジェクト。

delimiter

入力文字列の値の分割に使用される、文字列トークン。

式言語の形式

${string:join(collection,delimiter)}

戻り値

java.lang.String

例

${cache:getCache(aCollection,', ')}

使用上の注意

なし。

replaceAll

この文字列の、指定された正規表現と一致する各部分文字列を、指定された置換文字列で置き換えます。

引数

string

元のStringオブジェクト。

regex

部分文字列の識別に使用される、正規表現。

replacementString

元の文字列入力変数を置き換える文字列。

式言語の形式

${string:replaceAll(string,regex,replacementString)}

戻り値

java.lang.String

例

${cache:getCache("SomeSimpleString, "Simple", "Complex")}

使用上の注意

なし。

split

この文字列を、指定された正規表現に一致する前後で分割します。

引数

string

分割対象のStringオブジェクト。

splitToken

入力文字列パラメータの分割に使用されるトークン文字列。

式言語の形式

${string:split(string,splitToken)}

戻り値

java.lang.String

例

${cache:getCache("one, two, three"), ",")}

使用上の注意

なし。

startsWith

この文字列が、指定された接頭辞で始まるかどうかをテストします。

引数

string

テスト対象の文字列。

start

テスト用の文字列。

式言語の形式

${string:startsWith(string,start)}

戻り値

(java.lang.Boolean)入力文字列がテスト用の文字列で始まる場合、trueを返します。

例

${cache:getCache("BeginString", "Begin")}

使用上の注意

なし。

endsWith

この文字列が、指定された接頭辞で終わるかどうかをテストします。

引数

string

テスト対象の文字列。

start

テスト用の文字列。

式言語の形式

${string:startsWith(string,end)}

戻り値

(java.lang.Boolean)入力文字列がテスト用の文字列で始まる場合、trueを返します。

例

${cache:getCache("StringEnd", "End")}

使用上の注意

なし。

substring

この文字列の部分文字列である、新しい文字列を返します。

引数

inputString

文字列のサブセット。

startIndex

それ自身を含む、開始インデックス。

endIndex

それ自身を含む、終了インデックス。

式言語の形式

${string:startsWith(string,end)}

戻り値

(java.lang.Boolean)入力文字列がテスト用の文字列で始まる場合、trueを返します。

例

${cache:getCache("The quick brown fox", 1, 10)}

使用上の注意

なし。

日付メソッド

Dateオブジェクトを処理するユーティリティ・メソッドです。

表69-6 日付メソッド

使用するメソッド

アクション

after

この日付が指定された日付より後かどうかをテストします。

before

この日付が指定された日付より後かどうかをテストします。

diffDates

指定された測定単位による、2つの日付間の差(日付1 – 日付2)を返します。

diffFromNow

指定された測定単位による、本日の日付と指定された日付の間の差を返します。

format

入力された日付を、指定された書式文字列で書式設定します。

new

現在の日時を使用して新しい日付を返します。

after

この日付が指定された日付より後かどうかをテストします。

引数

date1

(java.util.Date)テスト対象の1番目の日付。

date2

(java.util.Date)テスト対象の2番目の日付。

式言語の形式

${date:after(date1,date2)}

戻り値

(java.lang.Boolean) 2番目の日付が1番目の日付より後の場合、trueを返します。

例

${date:after(aDate, bDate)}

使用上の注意

なし。

before

この日付が指定された日付より前かどうかをテストします。

引数

date1

(java.util.Date)テスト対象の1番目の日付。

date2

(java.util.Date)テスト対象の2番目の日付。

式言語の形式

${date:after(date1,date2)}

戻り値

(java.lang.Boolean) 2番目の日付が1番目の日付より前の場合、trueを返します。

例

${date:before(aDate, bDate)}

使用上の注意

なし。

diffDates

指定された測定単位による、2つの日付間の差(日付1 – 日付2)を返します。

引数

date1

テスト対象の1番目の日付。

date

テスト対象の2番目の日付。

units

(String)有効な単位は次のとおりです。

表69-7 unitsパラメータの有効値

単位

説明

y

年

M

年における月

w

年における週

d

年における日

m

分

s

秒

l

ミリ秒

式言語の形式

${date:diffDates(date1,date2,units)}

戻り値

(int)入力された単位で指定されたとおりに算出された、2つの日付間の差です。たとえば、入力された単位がyの場合、結果は2つの日付の間隔の年数になります。

例

${date:diffDates(aDate, bDate, "M")}

使用上の注意

なし。

diffFromNow

指定された測定単位による、本日の日付と指定された日付の間の差を返します。

引数

date1

(java.util.Date)テスト対象の日付。

units

(String)有効な単位は次のとおりです。

表69-8 unitsパラメータの有効値

単位

説明

y

年

M

年における月

w

年における週

d

年における日

m

分

s

秒

l

ミリ秒

式言語の形式

${date:diffFromNow(date1,date2,units)}

戻り値

(int)入力された単位で指定されたとおりに算出された、2つの日付間の差です。たとえば、入力された単位がyの場合、結果は2つの日付の間隔の年数になります。

例

${date:diffFromNow(aDate, bDate, "M")}

使用上の注意

なし。

format

入力された日付を、指定された書式文字列で書式設定します。

引数

date

(java.util.Date)書式設定の対象の日付。

pattern

日付を書式設定するための日付パターン。

式言語の形式

${date:format(date,pattern)}

戻り値

java.lang.String

例

${date:format(aDate, "yyyy-MM-dd")}

使用上の注意

なし。

new

現在の日時を使用して新しい日付を返します。

引数

なし。

式言語の形式

${date:new()}

戻り値

java.lang.Date

例

${date:new()}

使用上の注意

なし。

システム・メソッド

標準の出力メソッドを提供します。

表69-9 システム・メソッド

使用するメソッド

アクション

print

標準エラー出力または標準コンソールのいずれかに、オブジェクトを出力します。

println

標準エラー出力または標準コンソールのいずれかに、オブジェクトを改行して出力します。

print

オブジェクトを出力します。

引数

stream

(String) 標準エラー出力ストリームに出力する場合はerrを、標準コンソールに出力する場合はoutを指定します。

object

(java.lang.Object)出力対象のオブジェクト。

式言語の形式

${system:print(stream,object)}

戻り値

void

例

${cache:getCache("err", "Hello, world!")}

使用上の注意

outオプションを指定した場合はWC_Utilities.outファイルに、errオプションを指定した場合はWC_Utilities.errファイルにそれぞれ出力されます。これらのファイルは、サーバーのドメイン・ディレクトリに配置されています。

println

オブジェクトを改行して出力します。

引数

stream

(String) 標準エラー出力ストリームに出力する場合はerrを、標準コンソールに出力する場合はoutを指定します。

object

(java.lang.Object)出力対象のオブジェクト。

式言語の形式

${system:println(stream,object)}

戻り値

void

例

${cache:println("out", "Hello, world!")}

使用上の注意

outオプションを指定した場合はWC_Utilities.outファイルに、errオプションを指定した場合はWC_Utilities.errファイルにそれぞれ出力されます。これらのファイルは、サーバーのドメイン・ディレクトリに配置されています。

セキュリティ・メソッド

ユーザーおよびロールに関する情報を検索できます。

表69-10 セキュリティ・メソッド

使用するメソッド

アクション

getUserRoles

現在の対象の一部である、ロール/グループの配列を返します。

isUserInRole

現在のユーザーが、指定されたロール名またはグループ名のメンバーかどうかを判定します。

getUserRoles

現在の対象の一部である、ロール/グループの配列を返します。

引数

なし。

式言語の形式

${security:getUserRoles()}

戻り値

java.util.List

例

${security:getUserRoles()}

使用上の注意

なし。

isUserInRole

現在のユーザーが、指定されたロール名またはグループ名のメンバーかどうかを判定します。

引数

role

(String)ロールまたはグループの名前

式言語の形式

${security:isUserInRole(role)}

戻り値

Boolean

例

${security:isUserInRole("Moderator")}

使用上の注意

なし。

コレクション・メソッド

コレクション・オブジェクトに対する操作を行います。

表69-11 コレクション・メソッド

使用するメソッド

アクション

append

fromArray

size

sort

オブジェクトのコレクションにオブジェクトを追加します。

toArray

コレクションに由来する、オブジェクトの配列を返します。

fromArray

オブジェクトの配列の中のオブジェクトが格納された、Listオブジェクトを返します。

size

コレクションのサイズを判定します。コレクションがnullの場合、0(ゼロ)が返されます。

sort

リストの要素の自然順により、指定されたリストを昇順にソートします。

new

新規Collectionオブジェクトを返します。

append

オブジェクトのコレクションにオブジェクトを追加します。

引数

collection

(java.util.Collection) Collectionオブジェクト。

item

(java.lang.Object)コレクションへの追加対象のオブジェクト。

式言語の形式

${collections:append(collection,item)}

戻り値

java.util.Collection

例

${collections:append(aCollection, anObject)}

使用上の注意

なし。

toArray

コレクションに由来する、オブジェクトの配列を返します。

引数

collection

(java.util.Collection)オブジェクトの配列になるCollectionオブジェクト。

式言語の形式

${collections:toArray(collection)}

戻り値

java.lang.Object

例

${cache:getCache(aCollection)}

使用上の注意

なし。

fromArray

オブジェクトの配列の中のオブジェクトが格納された、Listオブジェクトを返します。

引数

array

(java.lang.Object[])オブジェクトの配列。

式言語の形式

${collections:fromArray(array)}

戻り値

java.util.Collection

例

${collections:fromArray(anArray)}

使用上の注意

なし。

size

コレクションのサイズを判定します。コレクションがnullの場合、0(ゼロ)が返されます。

引数

collection

(java.util.Collection) Collectionオブジェクト。

式言語の形式

${collections:size(collection)}

戻り値

long

例

${collections:size(aCollection)}

使用上の注意

なし。

sort

リストの要素の自然順により、指定されたリストを昇順にソートします。

引数

list

(java.util.List)ソート対象のListオブジェクト。

式言語の形式

${collections:sort(list)}

戻り値

void

例

${collections:sort(myList)}

使用上の注意

なし。

new

新規Collectionオブジェクトを返します。

引数

なし。

式言語の形式

${collections:new()}

戻り値

java.lang.Collection

例

${collections:new()}

使用上の注意

なし。

アクティビティ・グラフ・メソッド

アクティビティ・グラフに対する操作を行います。

表69-12 アクティビティ・グラフ・メソッド

使用するメソッド

アクション

filterRecsByScore

スコア>=入力スコアの推奨事項を選別します。

getCMISLinksFromCommonItems

共通のアイテムをCMISオブジェクトとして表している、URLのリストを返します。

getCMISLinksFromRecommendations

CMISオブジェクトを表すURLのリストを返します。

getContentIDs

入力オブジェクトから、コンテンツIDを抽出します。すべてのタイプのコンテンツを含みます(WC.document, WC.wiki)。

getContentIDsExclude

入力オブジェクトから、コンテンツIDを抽出します。

getContentIDsFiltered

入力オブジェクトから、コンテンツIDを抽出します。

filterRecsByScore

スコア>=入力スコアの推奨事項を選別します。

cutoffScore以上の推奨事項のみを返します。

引数

recommendations

(java.util.Collection) Collectionオブジェクト。

cutoffScore

(float)カットオフ・スコア。

式言語の形式

${agfunction:filterRecsByScore(recommendations,cutoffScore)}

戻り値

oracle.wcps.activity.agrest.spy.jaxb.Recommendations

使用上の注意

なし。

getCMISLinksFromCommonItems

共通のアイテム内の実際のコンテンツ・アイテムをCMISオブジェクトとして表している、クリック可能なURLのリストを返します。

引数

results

(oracle.wcps.activity.agrest.spy.jaxb.Results)

式言語の形式

${agfunction:getCMISLinksFromCommonItems(results)}

戻り値

java.util.List

使用上の注意

なし。

getCMISLinksFromRecommendations

推奨事項内の実際のコンテンツ・アイテムを表している、クリック可能なURLのリストを返します。

引数

recommendation

(oracle.wcps.activity.agrest.spy.jaxb.Recommendations)

式言語の形式

${agfunction:getCMISLinksFromRecommendations(recommendations)}

戻り値

java.util.List

使用上の注意

なし。

getContentIDs

入力オブジェクトから、コンテンツIDを抽出します。すべてのタイプのコンテンツを含みます(WC.document, WC.wiki)。

推奨事項の結果の中から、短縮バージョンのコンテンツ識別子を返します。パラメータagResultsは、次のいずれかになります。

- Recommendations

- RecommendedItems

- List<Recommendation>

引数

agResults

(java.lang.Object)

式言語の形式

${agfunction:getContentIDs(agResults)}

戻り値

java.util.List

使用上の注意

なし。

getContentIDsExclude

推奨事項の結果の中から、短縮バージョンのコンテンツ識別子を返します。結果から、excludeClassURNを除外します。パラメータagResultsは、次のいずれかになります。

- Recommendations

- RecommendedItems

- List<Recommendations>

引数

agResults

(java.lang.Object)

式言語の形式

${agfunction:getContentIDsExclude(agResults,excludeClassURN)}

戻り値

java.util.List

使用上の注意

なし。

getContentIDsFiltered

推奨事項の結果の中から、短縮バージョンのコンテンツ識別子を返します。classURNに対応するIDのみを返します。ClassURNの詳細は、このブログの命名体系に関する項を参照してください。パラメータagResultsは、次のいずれかになります。

- Recommendations

- RecommendedItems

- List<Recommendations>

引数

agResults

(java.lang.Object)

filterClassURN

(java.lang.String)

式言語の形式

${agfunction:getContentIDsFiltered(agResults,filterClassURN)}

戻り値

java.util.List

使用上の注意

なし。

CMISメソッド

CMISに対する操作を行います。

表69-13 CMISメソッド

使用するメソッド

アクション

getCMISLinksFromCommonItems

共通のアイテムをCMISオブジェクトとして表している、URLのリストを返します。

getCMISLinksFromRecommendations

CMISオブジェクトを表すURLのリストを返します。

getContentIDs

入力オブジェクトから、コンテンツIDを抽出します。すべてのタイプのコンテンツを含みます(WC.document, WC.wiki)。

getContentIDsExclude

入力オブジェクトから、コンテンツIDを抽出します。

getContentIDsFiltered

入力オブジェクトから、コンテンツIDを抽出します。

atomAsCMISObjects

List<CMISObject>としてのATOMフィード。

atomAsEntries

List<org.apache.abdera.model.Entry>としてのATOMフィード。

atomAsFeed

org.apache.abdera.model.FeedとしてのATOMフィード。

atomAsStreamUrls

URLのList<String>としてのATOMフィード。

getCMISQueryForDocIDs

CMIS問合せをIN問合せ構文の形式で作成します。これにより、入力ドキュメントIDの配列用のドキュメントが取得されます。

getCMISQueryForDocIDsFromFullID

CMIS問合せをIN問合せ構文の形式で作成します。これにより、入力ドキュメントIDの配列用のドキュメントが取得されます。

atomAsCMISObjects

CMISオブジェクトはマーシャリングできないため、このメソッドをJavaクライアントのコードで使用して、ATOM問合せの結果をList<CMISObject>に変換します。

引数

atomFeed

(java.lang.String) Collectionオブジェクト。

cutoffScore

(float)カットオフ・スコア。

式言語の形式

${cmisfunction:atomAsCMISObjects(atomFeed)}

戻り値

java.util.List

使用上の注意

なし。

atomAsEntries

org.apache.abdera.model.Entry (Abderaフィード上の属性)はマーシャリングできないため、このメソッドをJavaクライアントのコードで使用して、ATOM問合せの結果をList<org.apache.abdera.model.Entry>に変換します。

引数

atomFeed

(String)

式言語の形式

${cmisfunction:atomAsEntries(atomFeed)}

戻り値

java.util.List

使用上の注意

なし。

atomAsFeed

org.apache.abdera.model.Feedはマーシャリングできないため、このメソッドをJavaクライアントのコードで使用して、ATOM問合せの結果をList<org.apache.abdera.model.Feed>に変換します。

引数

atomFeed

(String)

式言語の形式

${cmisfunction:atomAsFeed(atomFeed)}

戻り値

java.util.List

使用上の注意

なし。

atomAsStreamUrls

ATOMフィードをURLのList<String>として返します。

引数

atomFeed

(String)

式言語の形式

${agfunction:getContentIDs(agResults)}

戻り値

java.util.List

使用上の注意

なし。

getCMISQueryForDocIDs

CMIS問合せをIN問合せ構文の形式で作成します。これにより、入力ドキュメントIDの配列用のドキュメントが取得されます。

引数

repository

(String)

ids

(java.util.List)

式言語の形式

${agfunction:getContentIDsExclude(agResults,excludeClassURN)}

戻り値

String

使用上の注意

なし。

getCMISQueryForDocIDsFromFullID

CMIS問合せをIN問合せ構文の形式で作成します。これにより、入力ドキュメントIDの配列用のドキュメントが取得されます。

このメソッドにより、IDのリスト(おそらく、アクティビティ・グラフ・プロバイダで取得されたもの)が、CMIS問合せ文字列に変換され、複数のコンテンツ・アイテムが取得されます。このIDは、my-ucm11g#dDocName:MOUNTAINSのような、WebCenter IDの形式になっています。

引数

ids

(java.util.List)

式言語の形式

${cmisfunction:getCMISQueryForDocIDsFromFullID(ids)}

戻り値

String

使用上の注意

なし。

70 プロパティ・サービスの使用

サービス・アクセス・レイヤーのプロパティ・サービスでは、開発者がデータにアクセスして、クライアント・アプリケーションで使用できるようにするための、シンプルで拡張可能な方法が用意されています。

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

- 第70.1項「プロパティ・サービスの概要」

- 第70.2項「JDeveloperでのプロパティ・セット定義の作成」

- 第70.3項「プロパティ・セット定義のデプロイ」

- 第70.4項「プロパティ・セット定義のデプロイのテスト」

- 第70.5項「プロパティ・サービス・データ・プロバイダの使用」

- 第70.6項「プロパティ・サービスのキャッシュ・サービスの使用」

- 第70.7項「カスタム・ロケータの実装」

70.1 プロパティ・サービスの概要

プロパティ・サービスは、RESTまたはJava APIを介したデータの取得および更新のためのメカニズムです。リレーショナル・データベース、Oracle Metadata Service (MDS)のリポジトリ、LDAPのリポジトリなどの、任意のデータ・ソースにデータを格納できます。シナリオのコンテキストにデータをフェッチする、データ・プロバイダとは異なり(第67.1項「データ・プロバイダの概要」)、プロパティ・サービスは、シナリオのコンテキスト外のデータのフェッチおよび更新に使用できます。さらに、プロパティ・サービスでは、プロパティ・セットと呼ばれる、編成されたデータの表現を作成できます。その各々は、ネームスペースに一意に関連付けられています。プロパティ・セットは、RESTリクエストまたはJavaメソッド・コールを使用して、ネームスペースを参照するだけで検索できます。シナリオの詳細は、第66.1.1項「パーソナライズ・アーキテクチャ」を参照してください。

注意:

WebCenter Portalには、便利なようにプロパティ・サービス・データ・プロバイダが用意されており、プロパティ・セットからシナリオのコンテキストにデータをフェッチできます。詳細は、第70.5項「プロパティ・サービス・データ・プロバイダの使用」を参照してください。

70.1.1 プロパティ・サービスの用途

プロパティ・サービスとその機能には、多くのユースケースが存在します。重要なユース・ケースは、複数のソースのデータを集約し、そのデータをシナリオで使用できるようにする機能です。後で説明しますが、プロパティ・サービスは、データ・プロバイダを介してコンダクタやシナリオと統合されます。データ・プロバイダは、シナリオのコンテキスト内のプロパティ・サービスから提供されたデータへのアクセスを提供します。たとえば、複数のソースからのデータで構成されたユーザー・プロファイルを作成した後、複数のシナリオでそのプロファイルを使用することが可能です。

70.1.2 プロパティ・セットについて

プロパティ・セットは、簡単に言えば、関連プロパティのコレクションです。たとえば、本のコレクションを表し、ISBN番号、表題、著者、ページ数などのプロパティが含まれるプロパティ・セットが考えられます。

各プロパティ・セットには、プロパティ・セット定義と呼ばれるスキーマがあります。この定義には、ゼロ以上のプロパティ(セットのメンバー)を指定します。プロパティには、名前、詳細、データ・タイプなどがあります。プロパティ・セットは、プロパティ・セット定義をインスタンス化したものと考えられます。

図70-1に、JDeveloperのビジュアル・エディタでのプロパティ・セット定義を示します。プロパティ・セット定義の要素を、1つ1つ見ていきます。

図70-1 JDeveloperでのプロパティ・セット定義のモデリング

最初に、プロパティ・セット定義が階層としてモデル化されます。JDeveloperのビジュアル・エディタを使用すると、プロパティ・セット定義が容易に作成できます。まず、階層の一番上には、ネームスペース要素が定義されています。すべてのプロパティ・セットが、ネームスペースのコンテキスト内に存在します。ネームスペースの名前を使用して、RESTリクエストまたはJavaメソッド・コールによりプロパティ・セット定義を検索できます。図70-1では、ネームスペースはmyPropertiesという名前です。

次に、プロパティ・セット定義そのものが作成され、名前が付けられます。この例では、プロパティ・セット定義はEmployeeという名前です。次の手順では、プロパティ・セット定義にプロパティ・マップを組み込みます。各プロパティ・マップには、名前、定義(データ型のようなもの)およびマップに関連付けられたロケータ・クラスがあります。図70-2に、新規プロパティ・マップの作成に使用されるダイアログと、プロパティ・マップ用に定義を選択できるドロップダウン・メニューを示します。定義には、String、StringArray、Number、Int、DateTime、その他複数のものがあります。たとえば、nameプロパティのマッピングには、String型の定義タイプを指定します。プロパティ・セットは、ユーザー・プロファイルなどの、適切に構造化されたデータのモデリングに特に役立つことがわかります。

図70-2 プロパティ・マップの作成

70.1.3 ロケータについて

各プロパティ・セットは、ロケータと呼ばれるJavaコンポーネントに関連付けられています。ロケータは、ILocatorクラスのカスタム実装で、プロパティ・セットのデータの取得、フィルタリングおよび更新のためのメソッドが含まれます。この意味では、ロケータはデータ・プロバイダ(第67.1項「データ・プロバイダの概要」)に似ています。REST API (またはJava API)を使用すると、モバイル・アプリケーションやポータルなどのクライアント・アプリケーションで直接データを取得できます。

注意:

ロケータ・クラスは、ネームスペース・レベル、プロパティ・セット定義レベルまたは個々のプロパティ・レベルで連結できます。ロケータは、固有の優先順で解決されます。個々のプロパティに連結されたロケータは、プロパティ・セット定義レベルなどのロケータよりも優先されます。カスタム・ロケータが指定されていない場合は、デフォルトのロケータが使用されます。

WebCenter Portalでは、プロパティ・セットのデータを取得し、事前構成済データベースに格納する、デフォルトのプロパティ・セット・ロケータが提供されています。このデフォルト・ロケータは、プロパティ・セット用に他のロケータが指定されなかった場合のみ使用されます。使用するユース・ケースで、デフォルトのロケータでは不十分な場合は、カスタム・ロケータを開発できます。第70.7項「カスタム・ロケータの実装」も参照してください。

70.1.4 プロパティ・サービスのキャッシュ

プロパティ・サービスには、統合されたキャッシュ・サービスと、データ検証用のコードを作成するためのインタフェースも含まれています。第70.6項「プロパティ・サービスのキャッシュ・サービスの使用」を参照してください。

70.1.5 プロパティ・サービスのシナリオでの使用

コンダクタやシナリオなどの概念を熟知していない場合は、第66章「Oracle WebCenter Portalアプリケーションのパーソナライズ」を参照してください。

プロパティ・サービスが、コンダクタに直接関連付けられていないことに注意することは重要です。これは、プロパティ・サービスを使用して、シナリオのコンテキスト外のデータを取得および更新できることを意味します。ただし、WebCenter Portalでは、プロパティ・サービス・データ・プロバイダが用意されており、プロパティ・サービスのデータをシナリオに取得することが可能です。シナリオでは、データをさらにフィルタして処理し、他のシナリオのデータとともにまとめたり、ビジネス・オブジェクトなどの、他のデータ統合機能を利用したりできます。

70.1.6 アーキテクチャの概要

図70-3に、ここまでの項で説明した、プロパティ・サービス全体のアーキテクチャを示します。

図70-3 プロパティ・サービスのアーキテクチャ

70.2 JDeveloperでのプロパティ・セット定義の作成

この項では、新規プロパティ・セット定義の作成方法について説明します。

注意:

一般的に、1つまたは複数のプロパティ・マップを伴う、明確に定義されたプロパティ定義を作成することが最良です。ただし、要素がゼロのプロパティ・セット定義にすると、動的なプロパティ・セットの作成が可能になるため、便利な場合があります。

注意:

JDeveloperで作成されたプロパティ・セット定義は、デプロイ中にMDSにインポートされます。これらのプロパティ・セット定義に基づき、実行時に作成されたプロパティ・セットはすべて、デフォルトのデータベース(または、カスタム・ロケータにより構成されるような、他の永続性の記憶域)に格納されます。

JDeveloperでプロパティ・セット定義を作成するには:

1. プロジェクトのクラスパスに、データ統合コンポーネントが含まれるようにします。第2.5項「パーソナライズのためのJDeveloperの設定」を参照してください。

2. アプリケーション・ナビゲータで、プロジェクトを右クリックし、「新規」を選択します。

3. 「新規ギャラリ」ダイアログの「一般」カテゴリで、「パーソナライズ」を選択します。

4. ダイアログの「アイテム」の部分で、プロパティのネームスペースを選択して「OK」をクリックします。

5. プロパティのネームスペースの作成ダイアログで、ネームスペースの名前を入力します。

6. 「プロパティ・サービス」エディタが、デザイン・ビューで開きます。図70-4に示すように、プロパティのネームスペースの定義ノードを右クリックし、新規プロパティ・セット定義の作成を選択します。

図70-4 新規プロパティ・セット定義の作成

7. 新規プロパティ・セット定義の作成ダイアログで、名前を入力して「OK」をクリックします。

8. 新しいプロパティ・セット定義のノードを右クリックし、新規プロパティ・セット定義マップの作成を選択します。

注意:

このダイアログでは、プロパティ・セット定義に含める個別のプロパティ・マップを定義できます。各プロパティ・マップがロケータ・クラスを持つことが可能なことに注意してください。デフォルトのロケータ・クラスは、デフォルトのデータベースの中でプロパティ・セットのデータを検索します。別のソースからデータを取得するには、カスタム・ロケータを実装する必要があります。詳細は、第70.7項「カスタム・ロケータの実装」を参照してください。

9. プロパティ・マップの作成/編集ダイアログで、プロパティの名前を入力します。プロパティの定義(データ型のようなもの)を選択します。たとえば、名前はStringDef型、従業員IDはIntDef (integer)型にします。プロパティのロケータ・クラスも指定できます。ロケータ・クラスを指定しない場合、プロパティではデフォルトのロケータが使用されます。第70.1.3項「ロケータについて」を参照してください。

10. さらにプロパティを作成する場合は、「プロパティ・セット定義」のノードを右クリックして、同様の手順に従います。

11. 作業内容を保存します。

次に、プロパティ・セット定義をサーバーにデプロイする必要があります。サーバーでは新しいプロパティ・セットのインスタンス化に使用されます。

70.3 プロパティ・セット定義のデプロイ

プロパティ・セット定義を作成した後は、サーバーにデプロイする必要があります。JDeveloperから、統合WebLogic Serverまたは、外部の管理対象サーバーに対してデプロイできます。プロパティ・セット定義をデプロイした後は、REST APIやJava APIを介して、またはシナリオでプロパティ・サービス・データ・プロバイダを介してアクセスできます。

この例では、統合WebLogic Serverのインスタンスに対してデプロイします。

1. 第70.2項「JDeveloperでのプロパティ・セット定義の作成」の説明に従って、1つまたは複数のプロパティ・セット定義を作成します。

2. デプロイ先を決定します。ターゲットのサーバーは、稼動している必要があります。

3. アプリケーション・メニューから、パーソナライズ・ファイルのデプロイを選択します。

4. 次のようにデプロイ・ターゲットを選択します。

- 最後に選択されたサーバーへ: 最後に選択されたサーバーにデプロイします。

- サーバーへ: このオプションを使用すると、デプロイ先のサーバーを選択できます。

- ファイルシステムへ: メタデータ・アーカイブ(MAR)ファイルをファイル・システムへデプロイします。このファイルは、後でサーバーにデプロイできます。

5. この例では、サーバーへを選択します。

6. 「サーバーへのデプロイ」ダイアログで、「IntegratedWebLogicServer」を選択し、サーバー・インスタンスとして「DefaultServer」を選択します。

図70-5 「サーバーへのデプロイ」ダイアログ

7. 「OK」をクリックします。JDeveloperにより、所定の定義ファイルがサーバーにデプロイされます。厳密には、これらのファイルはメタデータ・アーカイブ(MAR)ファイルに配置され、さらにそのファイルがサーバーにデプロイされます。図70-6に示すように、デプロイの結果は、「デプロイメント・ログ」ウィンドウで見ることが可能です。

図70-6 「デプロイメント・ログ」ウィンドウ

プロパティ・セット定義がデプロイされたので、早速デプロイをテストできます。

70.4 プロパティ・セット定義のデプロイのテスト

この項では、プロパティ・セット定義のデプロイのテストが可能な、2つの方法について考察します。1番目は、REST APIを使用してプロパティ・セット定義を検索する方法です。2番目は、シナリオでプロパティ・セット定義のデータ・プロバイダを使用する方法です。

70.4.1 RESTを使用したプロパティ・セット定義の検索

使用可能なプロパティ・セットを検索する1つの方法は、RESTリクエストを送信して、レスポンスを表示することが可能なツールを使用することです。そのようなツールやブラウザ・プラグインは多数存在します。REST APIの詳細は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

1. RESTクライアント・ツールで、このURLを入力します。ここでhostおよびportは、WCPSサーバーが稼動しているホスト名およびポート名です。

http://host:port/wcps/api/property/resourceIndex

2. ネームスペースのURIを検索し、そのURLをブラウザで入力します。例:

http://host:port/wcps/api/conductor/namespaces

たとえば、次のように入力します。http://myhost:7101/wcps/api/conductor/namespaces

3. レスポンス内で、作成したプロパティ・セットのネームスペースを検索します。たとえば、Employee_Namespaceというプロパティ・セットのネームスペースを作成した場合(第70.2項「JDeveloperでのプロパティ・セット定義の作成」を参照)のレスポンスは、図70-7に示すレスポンス同様の見かけになります。

図70-7 デプロイされたネームスペース、Employee_Namespaceを示したRESTのレスポンス

70.4.2 データ・プロバイダを使用したプロパティ・セット定義の検索

デプロイされたプロパティ・セット定義には、シナリオでプロパティ・サービス・データ・プロバイダを介してアクセスできます。詳細は、第70.5項「プロパティ・サービス・データ・プロバイダの使用」を参照してください。

70.5 プロパティ・サービス・データ・プロバイダの使用

プロパティ・サービス・データ・プロバイダ(oracle.PropertiesServiceProvider)を使用すると、プロパティ・サービス・データをシナリオに統合できます。このプロバイダでは、次のことが可能です。

- 指定されたプロパティ・セット定義のプロパティ・セットの取得

- 名前によるプロパティ・セットの取得

- プロパティ・セットからの指定されたプロパティの返却

70.5.1 シナリオでのプロパティ・サービス・データ・プロバイダへのアクセス

プロパティ・サービス・データ・プロバイダは、その他のプロバイダと同様、次の手順でシナリオのデータ・プロバイダ・ファンクションの起動を選択して、使用します。

1. シナリオ・エディタで、新しいシナリオを作成します。シナリオ・エディタの使用の詳細は、第66章「JDeveloperでのパーソナライズされたシナリオの作成」を参照してください。

2. 要求された場合、サーバーへのURL接続を作成します。「URL接続」ダイアログで、次の情報を入力します。

フィールド名

値

名前

Conductor

URLエンドポイント

http://host:port/wcps/api/conductor/resourceIndex

例: http://example.com:7101/wcps/api/conductor/resourceIndex

認証タイプ

Basic

ユーザー名

weblogic

パスワード

weblogic1

レルム

WCPS

3. 「開始」ノードをクリックして、「次の文を追加」を選択してから、「データ・プロバイダの起動」を選択します。

4. 「プロバイダの起動」ノードをクリックして、「起動するプロバイダのプロパティ」を選択します。

5. 「プロバイダの起動」ダイアログで、「oracle.PropertiesServiceProvider」ノードを開いてから、「LocalServerConnection」ノードを開き、最後に「GetProperiesResource」ノードを開きます。図70-8を参照してください。

図70-8 プロパティ・サービス・データ・プロバイダのメソッドの公開

実行するメソッドを選択して、ダイアログの下部でパラメータを入力します。パラメータには、プロパティ・セットまたは取得するプロパティを指定できます。メソッドの詳細は、第70.5.2項「プロパティ・サービス・データ・プロバイダ・メソッドのリファレンス」を参照してください。

70.5.2 プロパティ・サービス・データ・プロバイダ・メソッドのリファレンス

この項では、各プロパティ・サービス・データ・プロバイダ・メソッドについて説明します。これらのメソッドを使用すると、指定されたネームスペースのプロパティ・セットおよびそのプロパティにアクセスできます。

70.5.2.1 getProperty(definition, set, property)

現在の、デフォルトのネームスペースからプロパティを取得します。

パラメータ:

- definition: デフォルトのネームスペースに存在する、プロパティ・セット定義の名前

- set: プロパティ・セット定義のインスタンスの名前

- property: 取得するプロパティの名前

戻り値:

プロパティの型のオブジェクト。プロパティが見つからない場合は、nullを返します。

例:

getProperty("EmployeeSetDef", "kjones", "address")

70.5.2.2 getProperty(namespace, definition, set, property)

指定されたネームスペースから、プロパティを取得します。

パラメータ:

- namespace: ネームスペースの名前

- definition: デフォルトのネームスペースに存在する、プロパティ・セット定義の名前

- set: プロパティ・セット定義のインスタンスの名前

- property: 取得するプロパティの名前

戻り値:

プロパティの型のオブジェクト。

例:

getProperty("NS1", "EmployeeSetDef", "kjones", "address")

70.5.2.3 getPropertySet(definition, set)

現在またはデフォルトのネームスペースのプロパティ・セットを取得します。

パラメータ:

- definition: デフォルトのネームスペースに存在する、プロパティ・セット定義の名前

- set: プロパティ・セット定義のインスタンスの名前

戻り値:

プロパティ・セットを格納しているMapオブジェクト。

例:

getPropertySet("EmployeeSetDef", "kjones")

70.5.2.4 getPropertySet(namespace, definition, set)

指定されたのネームスペースのプロパティ・セットを取得します。

パラメータ:

- namespace: ネームスペースの名前

- definition: デフォルトのネームスペースに存在する、プロパティ・セット定義の名前

- set: プロパティ・セット定義のインスタンスの名前

戻り値:

プロパティ・セットを格納しているMapオブジェクト。

例:

getPropertySet("NS1", "EmployeeSetDef", "kjones")

70.5.2.5 getPropertySets(definition, search, restrictions)

指定されたプロパティ・セット定義のインスタンスである、プロパティ・セットのリストを取得します。このリストは、オプションのsearchおよびrestrictionsパラメータで操作できます。このメソッドは、現在またはデフォルトのネームスペースを検索します。

パラメータ:

- definition: デフォルトのネームスペースに存在する、プロパティ・セット定義の名前

- search: (オプション)入力された検索式(文字)を適用して、指定されたプロパティ・セットを取得します。nullが指定された場合、入力されたプロパティ・セットの、すべてのプロパティ・セットが取得されます(ページ区切りのコンテキスト内)。

- restrictions: (オプション)プロパティのリストが指定されたListオブジェクト。このリストで指定されたもののみが取得されます。nullが指定された場合、すべてのプロパティが取得されます。

戻り値:

プロパティの型のオブジェクト。

例:

getProperty("EmployeeSetDef", "tmyProp:equals:someValue")

その他の検索文字列の例:

myFavoriteHobbies:contains:camping

tps-created-on:gt:1980-01-01T00:00:00.000-070

70.5.2.6 getPropertySets(namespace, definition, search, restrictions)

指定されたプロパティ・セット定義のインスタンスである、プロパティ・セットのリストを取得します。このリストは、オプションのsearchおよびrestrictionsパラメータで操作できます。このメソッドは、指定されたネームスペースのみを検索します。

パラメータ:

- namespace: ネームスペースの名前

- definition: デフォルトのネームスペースに存在する、プロパティ・セット定義の名前

- search: (オプション)入力された検索式を適用して、指定されたプロパティ・セットを取得します。nullが指定された場合、入力されたプロパティ・セットの、すべてのプロパティ・セットが取得されます(ページ区切りのコンテキスト内)。

- restrictions: (オプション)プロパティのリストが指定されたListオブジェクト。このリストで指定されたもののみが取得されます。nullが指定された場合、すべてのプロパティが取得されます。

戻り値:

プロパティの型のオブジェクト。

例:

getProperty("NS1", "EmployeeSetDef", "tmyProp:equals:someValue")

その他の検索文字列の例:

myFavoriteHobbies:contains:camping

tps-created-on:gt:1980-01-01T00:00:00.000-070

70.6 プロパティ・サービスのキャッシュ・サービスの使用

プロパティ・サービスには、組込みのキャッシュ・レイヤーが含まれており、プロパティ・セットが返される際に、自動的にキャッシュします。プロパティ・サービスは、頻繁に使用されるデータへの高速アクセスを提供する、インメモリー・データ・グリッド・キャッシング・ソリューションである、Oracle Coherenceを使用します。Oracle Coherenceの構成の詳細は、Oracle Coherenceのドキュメントを参照してください。

プロパティ・サービスのキャッシュ構成ファイルは、次の場所にあります。

$ORACLE_HOME/user_projects/applications/<domain>/conductor-extensions-library/WEB-INF/classes.

デフォルトのキャッシュ構成ファイルを変更することも、必要であれば他のキャッシュ構成ファイルを追加することも自由にできます。プロパティ・サービスによってインスタンス化されたキャッシュ・ファクトリはすべて、プロパティ・サービスのクラス・ローダーに固有のものです。キャッシュ構成ファイルは、次の場所にあります。

$ORACLE_HOME/user_projects/applications/<domain>/conductor-extensions-library/WEB-INF/classes.

構成は、エンド・ユーザーのニーズに合わせて変更できますが、キャッシュの名前は変更しないでおく必要があります。

70.7 カスタム・ロケータの実装

各プロパティ・セットは、ロケータと呼ばれるJavaコンポーネントに関連付けられています。ロケータは、ILocatorクラスのカスタム実装で、プロパティ・セットのデータの取得、フィルタリングおよび更新のためのメソッドが含まれます。使用するユース・ケースで、デフォルトのロケータでは不十分な場合は、カスタム・ロケータを開発できます。

この項では、単純なカスタム・ロケータの実装方法、構成方法および起動方法について説明します。これは非常に基本的な例ではありますが、カスタム・ロケータの開発および使用の多くの重要な側面について説明しています。

ロケータ全般の概要は、第70.1.3項「ロケータについて」を参照してください。

- 第70.7.1項「使用例と前提条件の概要」

- 第70.7.2項「プロパティ・セット定義の作成」

- 第70.7.3項「データの作成: 単純なライブラリ・クラスの実装」

- 第70.7.4項「JavaBeanを使用したデータのバッキング」

- 第70.7.5項「Javaデータ・アクセス・オブジェクトの実装」

- 第70.7.6項「ILocatorクラスの実装」

- 第70.7.7項「カスタム・ロケータを使用したPropertySetDefinitionの更新」

- 第70.7.8項「例のコンパイルおよびデプロイ」

- 第70.7.9項「ロケータを使用するためのシナリオの作成」

- 第70.7.10項「シナリオのXMLソースの表示」

70.7.1 使用例と前提条件の概要

JDeveloperでのカスタム・ロケータの開発を始める前に、適切に設定が行われていることを確認します。いくつかの構成は、使用する環境で構成を行うか、確認する必要があります。詳細は、第2.5項「パーソナライズのためのJDeveloperの設定」を参照してください。

注意:

この例では、ロケータはJDeveloperのFusion Webアプリケーションの状態で作成されています。ファンクション・プロバイダは、WebCenter Portalアプリケーションや、Javaの機能が組み込まれた、他の任意のタイプのJDeveloperアプリケーションの状態で作成することも可能です。

例を使用して、本に関連するデータ(著者、表題、IBSN番号など)にアクセスするロケータの作成方法を説明します。ここでは、Javaクラスに生データが単純にハードコードされていますが、ロケータを同様に作成してデータベース内のデータにアクセスするようにできます。

一般的に使用される手法である、ロケータからのデータ・アクセスを委任するデータ・アクセス・オブジェクト(DAO)のパターンも使用して説明します。データが蔵書でも、ユーザーのデータベースでも、在庫システムでも、同様のパターンが適用できます。

主な手順は次のとおりです。

- Bookプロパティ・セット定義を定義します。

- Bookプロパティ・セット定義に関してプロパティ・サービスへ通知します。

- IPropertyLocatorインタフェースを実装して、Bookオブジェクトからプロパティをロードします。

70.7.2 プロパティ・セット定義の作成

第70.2項「JDeveloperでのプロパティ・セット定義の作成」の全体的な手順に従い、次の3つの部分のある、新しいプロパティ・セット定義を作成します。

- ネームスペースbook.property.locatorのコール

- プロパティ・セット定義BookPropertySetDefinitionのコール

- title、authorおよびISBNという、3つのStringDef型のプロパティ・マッピングの追加

図70-9に、JDeveloperのビジュアル・エディタでのこの単純な定義を示します。

図70-9 Book用のプロパティ・セット定義の例

ここからは、デフォルトのロケータ・クラスを使用します。後ほど、デフォルトから新しいカスタム・ロケータの実装を使用するように変更します。

70.7.3 データの作成: 単純なライブラリ・クラスの実装

例70-1のクラスでは、ハードコードされた、静的なbookデータから単純にマップを作成します。本の表題が、マップのキーとして使用されています。実際のユース・ケースでは、ライブラリ・データベースなどの、外部のデータ・ソースからデータを取得します。

例70-1 Bookデータを作成するクラス

package locator;

import java.util.HashMap;
import java.util.Map;

class Library {
static String [] titles = {"Into Thin Air", "Climbing Everest", "Rocky Mountains"};
static String [] ISBNs = {"0-201-69581-2", "0-423-78123-1", "0-321-23425-2"};
static String [] authors = {"Jon Krakauer", "Fooey Handley", "Rick Bicknell"};

// Keyed by title
private static Map<String, Book> library = new HashMap<String,Book>();

static void generateLibrary() {
for (int i=0; i<titles.length; i++)
{
Book book = new Book(titles[i], authors[i], ISBNs[i]);
library.put(book.getTitle(), book);
}
}

static Book getBook(String title) {
return library.get(title);
}
}

70.7.4 JavaBeanを使用したデータのバッキング

例70-2のJavaBeanクラスでは、Libraryクラス(表題、著者およびISBN番号)にハードコードされたbookの属性を示しています。例のコードを簡略化するため、getProperty(String name)メソッドを追加しました。実際には、JavaBeanイントロスペクションがよりよい方法です。

例70-2 Bookデータを表現する単純なJavaBean

package locator;

public class Book
{
String title;
String author;
String ISBN;

public Book(String title, String author, String ISBN) {
setTitle(title);
setAuthor(author);
setISBN(ISBN);
}

public void setTitle(String title) {
this.title = title;
}

public String getTitle() {
return title;
}

public void setAuthor(String author) {
this.author = author;
}

public String getAuthor() {
return author;
}

public void setISBN(String ISBN) {
this.ISBN = ISBN;
}

public String getISBN() {
return ISBN;
}

String getProperty(String propName) {
if (propName.equals("ISBN")) {
return getISBN();
}
if (propName.equals("title")) {
return getTitle();
}
if (propName.equals("author")) {
return getAuthor();
}
return null;
}
}

70.7.5 Javaデータ・アクセス・オブジェクトの実装

DAOクラスは前述のクラスよりも魅力的です。ここでは、DAOはソースからデータをフェッチするという大変な作業をします。この場合のソースは、作成したLibraryオブジェクトですが、データベース、RESTサービスまたは他のソースにすることも可能です。

例70-3 データ・アクセス・オブジェクトの実装

package model;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import oracle.wcps.property.IContext;
import oracle.wcps.property.IProperty;
import oracle.wcps.property.IPropertyDefinition;
import oracle.wcps.property.IPropertyDefinitionName;
import oracle.wcps.property.IPropertyMapping;
import oracle.wcps.property.IPropertyName;
import oracle.wcps.property.IPropertyService;
import oracle.wcps.property.IPropertySet;
import oracle.wcps.property.IPropertySetDefinition;
import oracle.wcps.property.ServiceFactory;
import oracle.wcps.property.Type;
import oracle.wcps.property.model.Property;

class BookPropertyDAO {
IPropertyService service;

// Generate the library that will provide our backing store.
static
{
Library.generateLibrary();
}

/**
* Assume the name of the PropertySet is the title of the book.
*/
void loadProperties(IPropertySet propertySet,
IPropertySetDefinition iPropertySetDefinition,
List<IPropertyName> propertyNames, IContext context) throws Exception
{

String title = propertySet.getName().getName();
Book book = Library.getBook(title);
loadProperties(book, propertySet, iPropertySetDefinition,
propertyNames, context);
}

private void loadProperties(Book book, IPropertySet propertySet,
IPropertySetDefinition iPropertySetDefinition,
List<IPropertyName> propertyNames, IContext context) throws Exception
{
Map<IPropertyName, IPropertyMapping> mappings =
iPropertySetDefinition.getPropertyMappings();

// Null propertyNames is valid, and indicates to get all properties
if (propertyNames==null)
{
propertyNames = new ArrayList<IPropertyName>();
propertyNames.addAll(mappings.keySet());
}

// Loop over all property names, create a Property value, and add it to the Property set
// for (IPropertyName pname : propertyNames)
{
String value = book.getProperty(pname.getName());
if (value != null)
{
IPropertyMapping mapping = mappings.get(pname);
addProperty(value, pname, propertySet, mapping, context);
}
}
}

// Add typed properties according to the information in our mappings
private void addProperty(String value, IPropertyName pname,
IPropertySet propertySet, IPropertyMapping mapping, IContext context)
{
// The property mappings could be useful if we wanted to get the individual
//PropertyDefinitions and inspect their type.
IPropertyDefinitionName pdefName = mapping.getPropertyDefinitionName();

// We need the namespace to look up our property definitions
if (service==null)
{
String ns = propertySet.getNamespaceName().getName();
System.err.println("Using namespace: " + ns);
//service = ServiceFactory.getPropertyService(IContext.NULL, ns);
service = ServiceFactory.getPropertyService(context, ns);
}

IPropertyDefinition pdef =
service.getPropertyDefinition(context, pdefName);
//service.getPropertyDefinition(IContext.NULL, pdefName);

Type type = pdef.getType();

IProperty ps = Property.builder().withProperty(pname, value, type).build();

System.err.println("Adding " + ps.getName() + " of type " + ps.getType());
propertySet.putProperty(pname, ps);
}
}

70.7.6 ILocatorクラスの実装

最後に例70-4に、ロケータ・クラスそのものを示します。最初に注目するのは、ILocatorが実装されていることです。このインタフェースには、ロケータのすべてのCRUD (作成、取得、更新、削除)操作を可能にする、複数のメソッドが含まれます。ただし、この例では、読取り操作に相当するloadProperties()のみが実装されています。このインタフェースの詳細は、WebCenter Portal APIリファレンス(Javadoc)で参照できます。

もう1つ重要な点は、loadProperties()メソッドがDAOに委任することです。DAOのクラスには、loadProperties()という同一のメソッドがあり、ライブラリ・データ・ストアからのデータのフェッチ動作を行います。

例70-4 ロケータ・クラスの例

package locator;

import java.util.List;

import java.util.Map;

import oracle.wcps.property.IContext;
import oracle.wcps.property.INamespaceName;
import oracle.wcps.property.IPagedList;
import oracle.wcps.property.IPropertyLocator;
import oracle.wcps.property.IPropertyMapping;
import oracle.wcps.property.IPropertyName;
import oracle.wcps.property.IPropertySet;
import oracle.wcps.property.IPropertySetDefinition;
import oracle.wcps.property.IPropertySetDefinitionName;
import oracle.wcps.property.filter.PropertySetFilterContext;
import oracle.wcps.property.filter.expression.PropertySetExpression;

public class BookPropertyLocator implements IPropertyLocator
{
private BookPropertyDAO dao;

// Must have a public default constructor, since the Property Service instantiates
// this

public BookPropertyLocator()
{
dao = new BookPropertyDAO();
}

/**
* Load property values, optionally returning only a subset of those.
* @param context the IContext containing parameters passed in from the PropertyService
* @param iPropertySet The PropertySet into which the retrieved values will be loaded
* @param iPropertySetDefinition The PropertySetDefinition defining the 'shape' of the properties
* @param propertyNames List of PropertyNames to load.  If null, all will be loaded.
*/
public void loadProperties(IContext context, IPropertySet iPropertySet,
IPropertySetDefinition iPropertySetDefinition,
List<IPropertyName> propertyNames)
{
try

// Delegate to BookProperDAO
dao.loadProperties(iPropertySet, iPropertySetDefinition, propertyNames, context);
}
catch (Exception e) {
throw new RuntimeException("Cannot load properties ", e);
}
}

/**
* Filter properties; load/return those properties that only match the filter criteria.
* @param context the IContext containing parameters passed in from the PropertyService
* @param iNamespaceName
* @param iPropertySetDefinitionName
* @param propertySetFilterContext
* @return
*/
public IPagedList<IPropertySet> filter(IContext context, INamespaceName iNamespaceName,
IPropertySetDefinitionName iPropertySetDefinitionName,
PropertySetFilterContext propertySetFilterContext)
{
return null;   //To Be Implemented
}

// As a read-only implementation, we don't support this
public void storeProperties(IContext context, IPropertySet iPropertySet,
IPropertySetDefinition iPropertySetDefinition,
List<IPropertyName> list)
{
throw new UnsupportedOperationException("BookPropertyLocator is read-only");
}

// As a read-only implementation, we don't support this
public void removeProperties(IContext context, IPropertySet iPropertySet,
List<IPropertyName> list)
{
throw new UnsupportedOperationException("BookPropertyLocator is read-only");
}

// As a read-only implementation, we don't support this
public void removeProperties(IContext context, INamespaceName iNamespaceName,
IPropertySetDefinitionName iPropertySetDefinitionName)
{
throw new UnsupportedOperationException("BookPropertyLocator is read-only");
}

public int count(IContext context, INamespaceName p1, IPropertySetDefinitionName p2, PropertySetExpression p3)
{
return 0;
}
}
;

ILocatorインタフェースのloadProperties()メソッドについて、もう少し詳しく見てみます。このメソッドでは、次のパラメータ型を取ります。

- IContext: IContextオブジェクトは、認証のための媒体です。この型のオブジェクトは、プロパティ・サービスから渡されます。ログイン済のユーザーの、ユーザー名とパスワード資格証明などのデータが含まれます。たとえば、次のようにユーザー名とパスワードを取得できます。

String u = context.getProperty(IContext.USERNAME_KEY);
string p = context.getProperty(IContext.PASSWORD_KEY);

また、requestオブジェクトを取得して、資格証明や他のリクエスト情報の取得に使用することも可能です。

HttpServletRequest request = context.getProperty(IContext.HTTP_REQUEST_KEY)

- IPropertySet: 取得されたプロパティ・セットの値は、このオブジェクトにロードされます。

- IPropertySetDefinition: データの構造を定義するオブジェクトです。この構造は、第70.7.2項「プロパティ・セット定義の作成」で前に作成したPropertySetDefinitionに基づいています。

- List<IPropertyName>: このオブジェクトでは、ロードのためにPropertyNameオブジェクトのリストが提供されます。nullの場合は、すべてのPropertyNameオブジェクトがロードされます。

クラスの例が完成したので、コンパイル、デプロイおよびロケータの使用が可能になりました。

70.7.7 カスタム・ロケータを使用したPropertySetDefinitionの更新

前述のプロパティ・セット定義の作成の際は、デフォルトのロケータを使用しました。カスタム・ロケータを実装したので、これを定義に追加する必要があります。

1. 使用するプロジェクトの「リソース」フォルダで、ns_book.property.locator.xmlファイルを探します。

2. デザイン・ビューで「ロケータ」ノードを右クリックし、「ロケータ情報の編集」を選択します。

3. 図70-10に示すように、「追加」アイコン(プラスのシンボル)をクリックし、「新規ロケータ」ダイアログでBookPropertyLocatorと入力して、「OK」をクリックします。

図70-10 カスタム・ロケータの追加

4. ロケータ・マップの構成ダイアログで、未割当てのプロパティを「ロケータに割り当てられたプロパティ」リストに追加します。追加が完了すると、author、titleおよびISBNが割り当てられたプロパティとして表示されます。

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

6. これでデザイン・ビューのロケータ情報ノードに、カスタム・ロケータが表示されるようになりました。

7. 作業内容を保存します。

70.7.8 例のコンパイルおよびデプロイ

デプロイする前には、方法は問いませんが、プロジェクトをコンパイルするのが決まりです。たとえば、JDeveloperなら、「ビルド」メニューから「メイク」を選択できます。

作成したプロパティのネームスペース定義をサーバーにデプロイするには、第70.3項「プロパティ・セット定義のデプロイ」の手順に従ってください。

カスタム・ロケータ・クラスをサーバーにデプロイするには、次の手順に従います。

70.7.8.1 JARファイル構造の設定

この項は、ユーザーがJDeveloperでのJARファイルの作成に不慣れな場合、JARファイル構造(デプロイメント・プロファイル)の設定方法を説明し、必要な要素がすべて含まれるようにするものです。

1. アプリケーション・ナビゲータで、プロジェクト(この例では、Modelというプロジェクト)を右クリックし、「プロジェクト・プロパティ」を選択します。

2. 「プロジェクト・プロパティ」ダイアログで「デプロイ」を選択します。

3. 「新規」をクリックします。

4. 「アーカイブ・タイプ」として「JARファイル」を選択し、JARの名前を入力します。

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

6. 「JARオプション」ダイアログで、「コントリビュータ」を選択します。

7. 図70-11に示すように、「プロジェクトの出力ディレクトリ」、「プロジェクトのソースパス」および「プロジェクトの依存性」が選択されていることを確認します。

図70-11 プロジェクト出力コントリビュータの選択

8. 「フィルタ」を選択します。

9. 「パターン」タブを選択します。

10. 「パターン」タブで、次のファイル・パターンを追加し、特定のタイプのファイルのJARへの組込みおよび除外を行います。
図70-12に、リストに追加後のこれらのパターンを示します。

- 対象: **.class

- 対象外: **.java

- 対象外: **.txt

- 対象外: **.html

図70-12 JARファイルの内容の選択

11. 「OK」をクリックしてから、「プロジェクト・プロパティ」ダイアログの「OK」をクリックします。

12. プロジェクトを保存します。

70.7.8.2 JARファイルの作成

JARデプロイメント・プロファイルを設定したら、プロジェクトからのJARファイルの生成は準備完了です。

1. アプリケーション・ナビゲータで、プロジェクト(この場合、Modelプロジェクト)を右クリックし、「デプロイ」を選択します。

2. デプロイするJARファイルを選択します。これは、第70.7.8.1項「JARファイル構造の設定」でファイルに指定した名前です。

3. 「デプロイメント・アクション」ダイアログで、「JARファイルにデプロイ」を選択して「終了」をクリックします。

JARファイルがプロジェクト・ディレクトリに配置されます。このファイルは、ファイル・システムの<Workspace_Directory>/Model/deployで確認できます。たとえば、MyProvidersというワークスペースの場合、JARはC:\JDeveloper\mywork\MyProviders\Model\deployにあります。

70.7.8.3 JARファイルのサーバーへのコピー

JARファイルは、サーバーにコピーする必要があります。

1. 前の手順で作成したJARファイルをコピーします。前述したとおり、ファイルは<Workspace_Directory\Model\deployに配置されています。

2. JARファイルを、サーバーのDefaultDomainの次の場所に貼り付けます。
$DOMAIN_HOME/locator-extensions-library/WEB-INF/lib

例:

C:\JDeveloper\system11.1.7.40.63.82\DefaultDomain\locator-extensions-library\WEB-INF\lib

3. サーバーを再起動します。

70.7.9 ロケータを使用するためのシナリオの作成

これらの基本的な手順に従って、シナリオを作成します。シナリオの作成の詳細は、第66.2.2項「JDeveloperでのパーソナライズされたシナリオの作成」を参照してください。

1. BookPropertyScenarioという新しいシナリオを作成します。

2. シナリオに、Invoke Providerノードを追加します。

3. プロバイダのプロパティを編集します。

4. 既知のプロバイダのリストの中からoracle.PropertiesServiceProviderノードを開き、プロバイダのメソッドにドリルダウンします。

5. GetProperty(namespace, definition, set, property)メソッドを選択します。

6. 次のパラメータ値を追加します。

表70-1 ロケータのパラメータ値

パラメータ

値

namespace

book.property.locator

definition

BookPropertySetDefinition

set

Into Thin Air

property

author

7. プロバイダ・プロパティの編集ダイアログで、忘れずに戻り値を指定してください。この例では、変数propertyをコールします。

8. return文を作成して、プロパティの値を返します。戻り変数には、次のような式言語(EL)の書式を使用する必要があることに注意してください。${property}

9. シナリオを保存して実行します。

70.7.10 シナリオのXMLソースの表示

前の項で作成したシナリオのXMLソース・コードは、次のようになります。

<scenario:scenario xmlns:common="http://xmlns.oracle.com/wcps/conductor/common/1.0.0" xmlns:scenario="http://xmlns.oracle.com/wcps/conductor/scenarios/1.0.0">
<body>
<call-provider>
<provider-name>oracle.PropertiesServiceProvider</provider-name>
<method-name>GetProperty</method-name>
<variable>property</variable>
<input>
<parameter>
<common:name>namespace</common:name>
<common:value>book.property.locator</common:value>
</parameter>
<parameter>
<common:name>definition</common:name>
<common:value>BookPropertySetDefinition</common:value>
</parameter>
<parameter>
<common:name>set</common:name>
<common:value>Into Thin Air</common:value>
</parameter>
<parameter>
<common:name>property</common:name>
<common:value>ISBN</common:value>
</parameter>
</input>
</call-provider>
<return>
<expression>${property}</expression>
</return>
</body>
<name>BookPropertyScenario</name>
</scenario:scenario>

71 プロパティ・サービスREST API

この章では、プロパティ・サービス用のREST APIについて説明します。

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

- 第71.1項「プロパティ・サービスREST APIの概要」

- 第71.2項「プロパティ・サービスREST APIの使用」

71.1 プロパティ・サービスREST APIの概要

この章では、プロパティ・サービスのREST APIを使用して、プロパティ・セットおよびプロパティに対する作成、取得、更新および削除(CRUD)操作を行う方法の例を示します。

- ネームスペースの作成

- プロパティ・セット定義の表示と作成

- プロパティ定義の表示と作成

- シナリオの表示、作成および実行

- データ・プロバイダの詳細の表示

71.2 プロパティ・サービスREST APIの使用

この項では、プロパティ・サービスのREST APIを使用して、プロパティ・セットおよびプロパティに対する作成、取得、更新および削除(CRUD)操作を行う方法の例を示します。

- ネームスペースの作成

- プロパティ・セット定義の表示と作成

- プロパティ定義の表示と作成

- シナリオの表示、作成および実行

- データ・プロバイダの詳細の表示

この項には次のサブセクションが含まれます:

- 第71.2.1項「プロパティ・サービスのリソース索引」

- 第71.2.2項「ネームスペースの作成、取得、更新および削除」

- 第71.2.3項「プロパティ定義の作成、取得、更新および削除」

- 第71.2.4項「プロパティ・セット定義の作成、取得、更新および削除」

- 第71.2.5項「プロパティ・セットの作成、取得、更新および削除」

- 第71.2.6項「プロパティの作成、取得、更新および削除」

- 第71.2.7項「JSONペイロード」

- 第71.2.8項「例外」

- 第71.2.9項「問合せパラメータ」

- 第71.2.10項「検索式」

71.2.1 プロパティ・サービスのリソース索引

プロパティ・サービスのリソース索引のレスポンスには、プロパティ・サービスの他のリソースにアクセスするためのリンクとテンプレートが含まれます。

71.2.1.1 ResourceIndex

この項では、プロパティ・サービスのリソース索引にアクセスするためのリクエストとレスポンスについて説明します。

ResourceIndex

XML

Request:
GET http://localhost:8891/wcps/api/property/resourceIndex
Content-Type: application/xml
Accept: application/xml

Response:
Status Code:200
Content-Length: 3595
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=t0FKMnYDSzjRlshhs0sFX20nvnTZLQY8vnxNLkplyfYPcWgfb9y6!-1714998420; path=/wcps; HttpOnly
X-Oracle-RF-Token-Location: header
Content-Type: application/xml
Date: Thu, 07 Oct 2010 23:31:15 GMT

<?xml version="1.0" encoding="UTF-8"?>
<resourceIndex resourceType="urn:oracle:wcps:property:resourceIndex">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces"
resourceType="urn:oracle:wcps:property:namespaces" template="http://localhost:8891/wcps/api/property/namespaces?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:8891/wcps/api/property/resourceIndex"
rel="self" resourceType="urn:oracle:wcps:property:resourceIndex"/>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
resourceType="urn:oracle:wcps:property:namespace" template="http://localhost:8891/wcps/api/property/namespaces/{namespaceName}"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
resourceType="urn:oracle:wcps:property:propertydefinitions" template="http://localhost:8891/wcps/api/property/namespaces/{namespaceName}/propertydefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
resourceType="urn:oracle:wcps:property:propertydefinition" template="http://localhost:8891/wcps/api/property/namespaces/{namespaceName}/propertydefinitions/{definitionName}"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
resourceType="urn:oracle:wcps:property:propertysetdefinitions" template="http://localhost:8891/wcps/api/property/namespaces/{namespaceName}/propertysetdefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
resourceType="urn:oracle:wcps:property:propertysetdefinition" template="http://localhost:8891/wcps/api/property/namespaces/{namespaceName}/propertysetdefinitions/{setDefinitionName}"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
resourceType="urn:oracle:wcps:property:propertysets" template="http://localhost:8891/wcps/api/property/namespaces/{namespaceName}/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&amp;dataFields={dataFields}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
resourceType="urn:oracle:wcps:property:propertyset" template="http://localhost:8891/wcps/api/property/namespaces/{namespaceName}/propertysetdefinitions/{setDefinitionName}/propertysets/{propertySetName}"/>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:delete"
resourceType="urn:oracle:wcps:property:properties" template="http://localhost:8891/wcps/api/property/namespaces/{namespaceName}/propertysetdefinitions/{setDefinitionName}/propertysets/{propertySetName}/properties"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
resourceType="urn:oracle:wcps:property:property" template="http://localhost:8891/wcps/api/property/namespaces/{namespaceName}/propertysetdefinitions/{setDefinitionName}/propertysets/{propertySetName}/properties/{propertyName}"/>
</links>
</resourceIndex>

JSON

Request:
GET http://localhost:8891/wcps/api/property/resourceIndex
Content-Type: application/json
Accept: application/json

Response:
Status Code:200
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=WFGvMnyKP7nDBW1RQynhhphbQvWLDjLSbFJj2MQ1g6nFH2VQlgJ4!-609606431; path=/wcps; HttpOnly
X-Oracle-RF-Token-Location: header
Transfer-Encoding: chunked
Content-Type: application/json
Date: Fri, 08 Oct 2010 01:24:22 GMT

{
"resourceType" : "urn:oracle:wcps:property:resourceIndex",
"links" : [ {
"template" : "http://localhost:8891/wcps/api/property/namespaces?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:namespaces",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces"
}, {
"resourceType" : "urn:oracle:wcps:property:resourceIndex",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:8891/wcps/api/property/resourceIndex",
"rel" : "self"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/{namespaceName}",
"resourceType" : "urn:oracle:wcps:property:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/{namespaceName}/propertydefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertydefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/{namespaceName}/propertydefinitions/{definitionName}",
"resourceType" : "urn:oracle:wcps:property:propertydefinition",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/{namespaceName}/propertysetdefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysetdefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/{namespaceName}/propertysetdefinitions/{setDefinitionName}",
"resourceType" : "urn:oracle:wcps:property:propertysetdefinition",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/{namespaceName}/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&dataFields={dataFields}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysets",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/{namespaceName}/propertysetdefinitions/{setDefinitionName}/propertysets/{propertySetName}",
"resourceType" : "urn:oracle:wcps:property:propertyset",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/{namespaceName}/propertysetdefinitions/{setDefinitionName}/propertysets/{propertySetName}/properties",
"resourceType" : "urn:oracle:wcps:property:properties",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:delete"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/{namespaceName}/propertysetdefinitions/{setDefinitionName}/propertysets/{propertySetName}/properties/{propertyName}",
"resourceType" : "urn:oracle:wcps:property:property",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
} ]
}

71.2.2 ネームスペースの作成、取得、更新および削除

71.2.2.1 ネームスペースの作成

REST HTTPインタフェースを使用してオブジェクトを作成するには、リクエスト・メソッドをPOSTに設定し、値application/xmlを含むヘッダーcontent-typeを追加する必要があります。この項では、プロパティ・サービスを使用してネームスペースを作成するための、リクエストとレスポンスについて説明します。

CreateNamespace

XML

Request:
POST http://localhost:8891/wcps/api/property/namespaces
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=t0FKMnYDSzjRlshhs0sFX20nvnTZLQY8vnxNLkplyfYPcWgfb9y6!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<namespace resourceType="urn:oracle:wcps:property:namespace">
<name>Oracle</name>
</namespace>

Response:
Status Code:201
Content-Length: 1671
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Content-Type: application/xml
Location: http://localhost:8891/wcps/api/property/namespaces/Oracle
Date: Thu, 07 Oct 2010 23:31:16 GMT
ETag: "1286494276437"

<?xml version="1.0" encoding="UTF-8"?>
<namespace resourceType="urn:oracle:wcps:property:namespace">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle"
rel="self" resourceType="urn:oracle:wcps:property:namespace"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions"
resourceType="urn:oracle:wcps:property:propertysetdefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions"
resourceType="urn:oracle:wcps:property:propertydefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
resourceType="urn:oracle:wcps:property:propertysets" template="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&amp;dataFields={dataFields}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<name>Oracle</name>
<createdOn>2010-10-07T17:31:16.437-0600</createdOn>
<updatedOn>2010-10-07T17:31:16.437-0600</updatedOn>
</namespace>

JSON

Request:
POST http://localhost:8891/wcps/api/property/namespaces
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=WFGvMnyKP7nDBW1RQynhhphbQvWLDjLSbFJj2MQ1g6nFH2VQlgJ4!-609606431;Version=1
Content-Type: application/json
Accept: application/json

{
"name" : "Oracle",
"resourceType" : "urn:oracle:wcps:property:namespace"
}

Response:
Status Code:201
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Transfer-Encoding: chunked
Content-Type: application/json
Location: http://localhost:8891/wcps/api/property/namespaces/Oracle
Date: Fri, 08 Oct 2010 01:24:26 GMT
ETag: "1286501066698"

{
"name" : "Oracle",
"createdOn" : "2010-10-07T19:24:26.698-0600",
"updatedOn" : "2010-10-07T19:24:26.698-0600",
"resourceType" : "urn:oracle:wcps:property:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle",
"rel" : "self"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysetdefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertydefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&dataFields={dataFields}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysets",
"capabilities" : "urn:oracle:restframework:read"
} ]
}

71.2.2.2 ネームスペースの取得

RetrieveNamespace

XML

Request:
GET http://localhost:8891/wcps/api/property/namespaces/Oracle
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=t0FKMnYDSzjRlshhs0sFX20nvnTZLQY8vnxNLkplyfYPcWgfb9y6!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

Response:
Status Code:200
Content-Length: 1759
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Content-Type: application/xml
Date: Thu, 07 Oct 2010 23:31:16 GMT
ETag: "1286494276833"

<?xml version="1.0" encoding="UTF-8"?>
<namespace resourceType="urn:oracle:wcps:property:namespace">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle"
rel="self" resourceType="urn:oracle:wcps:property:namespace"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions"
resourceType="urn:oracle:wcps:property:propertysetdefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions"
resourceType="urn:oracle:wcps:property:propertydefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
resourceType="urn:oracle:wcps:property:propertysets" template="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&amp;dataFields={dataFields}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<name>Oracle</name>
<createdOn>2010-10-07T17:31:16.437-0600</createdOn>
<updatedOn>2010-10-07T17:31:16.833-0600</updatedOn>
<propertyLocatorClassName>com.oracle.custom.MyPropertyLocator</propertyLocatorClassName>
</namespace>

JSON

Request:
GET http://localhost:8891/wcps/api/property/namespaces/Oracle
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=WFGvMnyKP7nDBW1RQynhhphbQvWLDjLSbFJj2MQ1g6nFH2VQlgJ4!-609606431;Version=1
Content-Type: application/json
Accept: application/json

Response:
Status Code:200
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Transfer-Encoding: chunked
Content-Type: application/json
Date: Fri, 08 Oct 2010 01:24:26 GMT
ETag: "1286501066808"

{
"name" : "Oracle",
"createdOn" : "2010-10-07T19:24:26.698-0600",
"propertyLocatorClassName" : "com.oracle.custom.MyPropertyLocator",
"updatedOn" : "2010-10-07T19:24:26.808-0600",
"resourceType" : "urn:oracle:wcps:property:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle",
"rel" : "self"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysetdefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertydefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&dataFields={dataFields}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysets",
"capabilities" : "urn:oracle:restframework:read"
} ]
}

71.2.2.3 ネームスペースの更新

UpdateNamespace

XML

Request:
PUT http://localhost:8891/wcps/api/property/namespaces/Oracle
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=t0FKMnYDSzjRlshhs0sFX20nvnTZLQY8vnxNLkplyfYPcWgfb9y6!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml
If-Match: 1286494276437

<?xml version="1.0" encoding="UTF-8"?>
<namespace resourceType="urn:oracle:wcps:property:namespace">
<name>Oracle</name>
<createdOn>2010-10-07T17:31:16.437-0600</createdOn>
<updatedOn>2010-10-07T17:31:16.437-0600</updatedOn>
<propertyLocatorClassName>com.oracle.custom.MyPropertyLocator</propertyLocatorClassName>
</namespace>

Response:
Status Code:200
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Date: Thu, 07 Oct 2010 23:31:16 GMT
ETag: "1286494276833"

JSON

Request:
PUT http://localhost:8891/wcps/api/property/namespaces/Oracle
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=WFGvMnyKP7nDBW1RQynhhphbQvWLDjLSbFJj2MQ1g6nFH2VQlgJ4!-609606431;Version=1
Content-Type: application/json
Accept: application/json
If-Match: 1286501066698

{
"name" : "Oracle",
"propertyLocatorClassName" : "com.oracle.custom.MyPropertyLocator",
"createdOn" : "2010-10-07T19:24:26.698-0600",
"updatedOn" : "2010-10-07T19:24:26.698-0600",
"resourceType" : "urn:oracle:wcps:property:namespace"
}

Response:
Status Code:200
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Date: Fri, 08 Oct 2010 01:24:26 GMT
ETag: "1286501066808"

71.2.2.4 ネームスペースの削除

DeleteNamespace

XML

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=t0FKMnYDSzjRlshhs0sFX20nvnTZLQY8vnxNLkplyfYPcWgfb9y6!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml
If-Match: 1286494276833

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Thu, 07 Oct 2010 23:31:17 GMT

JSON

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=WFGvMnyKP7nDBW1RQynhhphbQvWLDjLSbFJj2MQ1g6nFH2VQlgJ4!-609606431;Version=1
Content-Type: application/json
Accept: application/json
If-Match: 1286501066808

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Fri, 08 Oct 2010 01:24:26 GMT

71.2.2.5 すべてのネームスペースの取得

RetrieveAllNamespaces

XML

Request:
GET http://localhost:8891/wcps/api/property/namespaces
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=t0FKMnYDSzjRlshhs0sFX20nvnTZLQY8vnxNLkplyfYPcWgfb9y6!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

Response:
Status Code:200
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Transfer-Encoding: chunked
Content-Type: application/xml
Date: Thu, 07 Oct 2010 23:31:19 GMT

<?xml version="1.0" encoding="UTF-8"?>
<namespaces resourceType="urn:oracle:wcps:property:namespaces">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces"
rel="self" resourceType="urn:oracle:wcps:property:namespaces" template="http://localhost:8891/wcps/api/property/namespaces?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces?startIndex=10&amp;itemsPerPage=10"
rel="next" resourceType="urn:oracle:wcps:property:namespaces"/>
</links>
<itemsPerPage>10</itemsPerPage>
<startIndex>0</startIndex>
<totalCount>21</totalCount>
<items>
<namespace resourceType="urn:oracle:wcps:property:namespace">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/JDEV"
rel="self" resourceType="urn:oracle:wcps:property:namespace"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/JDEV/propertysetdefinitions"
resourceType="urn:oracle:wcps:property:propertysetdefinitions" template="http://localhost:8891/wcps/api/property/namespaces/JDEV/propertysetdefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/JDEV/propertydefinitions"
resourceType="urn:oracle:wcps:property:propertydefinitions" template="http://localhost:8891/wcps/api/property/namespaces/JDEV/propertydefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
resourceType="urn:oracle:wcps:property:propertysets" template="http://localhost:8891/wcps/api/property/namespaces/JDEV/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&amp;dataFields={dataFields}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<name>JDEV</name>
<createdOn>2010-10-07T17:31:20.061-0600</createdOn>
<updatedOn>2010-10-07T17:31:20.061-0600</updatedOn>
<propertyLocatorClassName>oracle.wcps.conductor.scenario.persistence.impl.properties.MDSScenarioPropertyLocator</propertyLocatorClassName>
<definitionLocatorClassName>oracle.wcps.property.persistence.mds.MDSDefinitionsLocator</definitionLocatorClassName>
</namespace>
<namespace resourceType="urn:oracle:wcps:property:namespace">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_0"
rel="self" resourceType="urn:oracle:wcps:property:namespace"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_0/propertysetdefinitions"
resourceType="urn:oracle:wcps:property:propertysetdefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_0/propertysetdefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_0/propertydefinitions"
resourceType="urn:oracle:wcps:property:propertydefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_0/propertydefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
resourceType="urn:oracle:wcps:property:propertysets" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_0/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&amp;dataFields={dataFields}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<name>Oracle_0</name>
<createdOn>2010-10-07T17:31:17.318-0600</createdOn>
<updatedOn>2010-10-07T17:31:17.318-0600</updatedOn>
</namespace>
<namespace resourceType="urn:oracle:wcps:property:namespace">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_1"
rel="self" resourceType="urn:oracle:wcps:property:namespace"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_1/propertysetdefinitions"
resourceType="urn:oracle:wcps:property:propertysetdefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_1/propertysetdefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_1/propertydefinitions"
resourceType="urn:oracle:wcps:property:propertydefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_1/propertydefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
resourceType="urn:oracle:wcps:property:propertysets" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_1/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&amp;dataFields={dataFields}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<name>Oracle_1</name>
<createdOn>2010-10-07T17:31:17.568-0600</createdOn>
<updatedOn>2010-10-07T17:31:17.568-0600</updatedOn>
</namespace>
<namespace resourceType="urn:oracle:wcps:property:namespace">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_2"
rel="self" resourceType="urn:oracle:wcps:property:namespace"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_2/propertysetdefinitions"
resourceType="urn:oracle:wcps:property:propertysetdefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_2/propertysetdefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_2/propertydefinitions"
resourceType="urn:oracle:wcps:property:propertydefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_2/propertydefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
resourceType="urn:oracle:wcps:property:propertysets" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_2/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&amp;dataFields={dataFields}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<name>Oracle_2</name>
<createdOn>2010-10-07T17:31:17.807-0600</createdOn>
<updatedOn>2010-10-07T17:31:17.807-0600</updatedOn>
</namespace>
<namespace resourceType="urn:oracle:wcps:property:namespace">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_3"
rel="self" resourceType="urn:oracle:wcps:property:namespace"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_3/propertysetdefinitions"
resourceType="urn:oracle:wcps:property:propertysetdefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_3/propertysetdefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_3/propertydefinitions"
resourceType="urn:oracle:wcps:property:propertydefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_3/propertydefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
resourceType="urn:oracle:wcps:property:propertysets" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_3/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&amp;dataFields={dataFields}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<name>Oracle_3</name>
<createdOn>2010-10-07T17:31:18.066-0600</createdOn>
<updatedOn>2010-10-07T17:31:18.066-0600</updatedOn>
</namespace>
<namespace resourceType="urn:oracle:wcps:property:namespace">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_4"
rel="self" resourceType="urn:oracle:wcps:property:namespace"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_4/propertysetdefinitions"
resourceType="urn:oracle:wcps:property:propertysetdefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_4/propertysetdefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_4/propertydefinitions"
resourceType="urn:oracle:wcps:property:propertydefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_4/propertydefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
resourceType="urn:oracle:wcps:property:propertysets" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_4/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&amp;dataFields={dataFields}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<name>Oracle_4</name>
<createdOn>2010-10-07T17:31:18.319-0600</createdOn>
<updatedOn>2010-10-07T17:31:18.319-0600</updatedOn>
</namespace>
<namespace resourceType="urn:oracle:wcps:property:namespace">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_5"
rel="self" resourceType="urn:oracle:wcps:property:namespace"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_5/propertysetdefinitions"
resourceType="urn:oracle:wcps:property:propertysetdefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_5/propertysetdefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_5/propertydefinitions"
resourceType="urn:oracle:wcps:property:propertydefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_5/propertydefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
resourceType="urn:oracle:wcps:property:propertysets" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_5/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&amp;dataFields={dataFields}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<name>Oracle_5</name>
<createdOn>2010-10-07T17:31:18.572-0600</createdOn>
<updatedOn>2010-10-07T17:31:18.572-0600</updatedOn>
</namespace>
<namespace resourceType="urn:oracle:wcps:property:namespace">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_6"
rel="self" resourceType="urn:oracle:wcps:property:namespace"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_6/propertysetdefinitions"
resourceType="urn:oracle:wcps:property:propertysetdefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_6/propertysetdefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_6/propertydefinitions"
resourceType="urn:oracle:wcps:property:propertydefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_6/propertydefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
resourceType="urn:oracle:wcps:property:propertysets" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_6/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&amp;dataFields={dataFields}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<name>Oracle_6</name>
<createdOn>2010-10-07T17:31:18.813-0600</createdOn>
<updatedOn>2010-10-07T17:31:18.813-0600</updatedOn>
</namespace>
<namespace resourceType="urn:oracle:wcps:property:namespace">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_7"
rel="self" resourceType="urn:oracle:wcps:property:namespace"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_7/propertysetdefinitions"
resourceType="urn:oracle:wcps:property:propertysetdefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_7/propertysetdefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_7/propertydefinitions"
resourceType="urn:oracle:wcps:property:propertydefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_7/propertydefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
resourceType="urn:oracle:wcps:property:propertysets" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_7/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&amp;dataFields={dataFields}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<name>Oracle_7</name>
<createdOn>2010-10-07T17:31:19.084-0600</createdOn>
<updatedOn>2010-10-07T17:31:19.084-0600</updatedOn>
</namespace>
<namespace resourceType="urn:oracle:wcps:property:namespace">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_8"
rel="self" resourceType="urn:oracle:wcps:property:namespace"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_8/propertysetdefinitions"
resourceType="urn:oracle:wcps:property:propertysetdefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_8/propertysetdefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle_8/propertydefinitions"
resourceType="urn:oracle:wcps:property:propertydefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_8/propertydefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
resourceType="urn:oracle:wcps:property:propertysets" template="http://localhost:8891/wcps/api/property/namespaces/Oracle_8/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&amp;dataFields={dataFields}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<name>Oracle_8</name>
<createdOn>2010-10-07T17:31:19.328-0600</createdOn>
<updatedOn>2010-10-07T17:31:19.328-0600</updatedOn>
</namespace>
</items>
</namespaces>

JSON

Request:
GET http://localhost:8891/wcps/api/property/namespaces
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=WFGvMnyKP7nDBW1RQynhhphbQvWLDjLSbFJj2MQ1g6nFH2VQlgJ4!-609606431;Version=1
Content-Type: application/json
Accept: application/json

Response:
Status Code:200
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Transfer-Encoding: chunked
Content-Type: application/json
Date: Fri, 08 Oct 2010 01:24:27 GMT

{
"namespaces" : [ {
"name" : "JDEV",
"createdOn" : "2010-10-07T19:24:28.114-0600",
"propertyLocatorClassName" : "oracle.wcps.conductor.scenario.persistence.impl.properties.MDSScenarioPropertyLocator",
"definitionLocatorClassName" : "oracle.wcps.property.persistence.mds.MDSDefinitionsLocator",
"updatedOn" : "2010-10-07T19:24:28.114-0600",
"resourceType" : "urn:oracle:wcps:property:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/JDEV",
"rel" : "self"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/JDEV/propertysetdefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysetdefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/JDEV/propertysetdefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/JDEV/propertydefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertydefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/JDEV/propertydefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/JDEV/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&dataFields={dataFields}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysets",
"capabilities" : "urn:oracle:restframework:read"
} ]
}, {
"name" : "Oracle_0",
"createdOn" : "2010-10-07T19:24:26.907-0600",
"updatedOn" : "2010-10-07T19:24:26.907-0600",
"resourceType" : "urn:oracle:wcps:property:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_0",
"rel" : "self"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_0/propertysetdefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysetdefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_0/propertysetdefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_0/propertydefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertydefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_0/propertydefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_0/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&dataFields={dataFields}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysets",
"capabilities" : "urn:oracle:restframework:read"
} ]
}, {
"name" : "Oracle_1",
"createdOn" : "2010-10-07T19:24:26.954-0600",
"updatedOn" : "2010-10-07T19:24:26.954-0600",
"resourceType" : "urn:oracle:wcps:property:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_1",
"rel" : "self"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_1/propertysetdefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysetdefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_1/propertysetdefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_1/propertydefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertydefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_1/propertydefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_1/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&dataFields={dataFields}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysets",
"capabilities" : "urn:oracle:restframework:read"
} ]
}, {
"name" : "Oracle_2",
"createdOn" : "2010-10-07T19:24:27.034-0600",
"updatedOn" : "2010-10-07T19:24:27.034-0600",
"resourceType" : "urn:oracle:wcps:property:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_2",
"rel" : "self"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_2/propertysetdefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysetdefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_2/propertysetdefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_2/propertydefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertydefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_2/propertydefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_2/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&dataFields={dataFields}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysets",
"capabilities" : "urn:oracle:restframework:read"
} ]
}, {
"name" : "Oracle_3",
"createdOn" : "2010-10-07T19:24:27.191-0600",
"updatedOn" : "2010-10-07T19:24:27.191-0600",
"resourceType" : "urn:oracle:wcps:property:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_3",
"rel" : "self"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_3/propertysetdefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysetdefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_3/propertysetdefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_3/propertydefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertydefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_3/propertydefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_3/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&dataFields={dataFields}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysets",
"capabilities" : "urn:oracle:restframework:read"
} ]
}, {
"name" : "Oracle_4",
"createdOn" : "2010-10-07T19:24:27.259-0600",
"updatedOn" : "2010-10-07T19:24:27.259-0600",
"resourceType" : "urn:oracle:wcps:property:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_4",
"rel" : "self"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_4/propertysetdefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysetdefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_4/propertysetdefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_4/propertydefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertydefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_4/propertydefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_4/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&dataFields={dataFields}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysets",
"capabilities" : "urn:oracle:restframework:read"
} ]
}, {
"name" : "Oracle_5",
"createdOn" : "2010-10-07T19:24:27.359-0600",
"updatedOn" : "2010-10-07T19:24:27.359-0600",
"resourceType" : "urn:oracle:wcps:property:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_5",
"rel" : "self"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_5/propertysetdefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysetdefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_5/propertysetdefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_5/propertydefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertydefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_5/propertydefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_5/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&dataFields={dataFields}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysets",
"capabilities" : "urn:oracle:restframework:read"
} ]
}, {
"name" : "Oracle_6",
"createdOn" : "2010-10-07T19:24:27.409-0600",
"updatedOn" : "2010-10-07T19:24:27.409-0600",
"resourceType" : "urn:oracle:wcps:property:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_6",
"rel" : "self"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_6/propertysetdefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysetdefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_6/propertysetdefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_6/propertydefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertydefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_6/propertydefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_6/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&dataFields={dataFields}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysets",
"capabilities" : "urn:oracle:restframework:read"
} ]
}, {
"name" : "Oracle_7",
"createdOn" : "2010-10-07T19:24:27.463-0600",
"updatedOn" : "2010-10-07T19:24:27.463-0600",
"resourceType" : "urn:oracle:wcps:property:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_7",
"rel" : "self"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_7/propertysetdefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysetdefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_7/propertysetdefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_7/propertydefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertydefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_7/propertydefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_7/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&dataFields={dataFields}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysets",
"capabilities" : "urn:oracle:restframework:read"
} ]
}, {
"name" : "Oracle_8",
"createdOn" : "2010-10-07T19:24:27.543-0600",
"updatedOn" : "2010-10-07T19:24:27.543-0600",
"resourceType" : "urn:oracle:wcps:property:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_8",
"rel" : "self"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_8/propertysetdefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysetdefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_8/propertysetdefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_8/propertydefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertydefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_8/propertydefinitions"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle_8/propertysetdefinitions/{setDefinitionName}/propertysets?startIndex={startIndex}&dataFields={dataFields}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysets",
"capabilities" : "urn:oracle:restframework:read"
} ]
} ],
"totalCount" : 21,
"startIndex" : 0,
"itemsPerPage" : 10,
"resourceType" : "urn:oracle:wcps:property:namespaces",
"links" : [ {
"template" : "http://localhost:8891/wcps/api/property/namespaces?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:namespaces",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces",
"rel" : "self"
}, {
"resourceType" : "urn:oracle:wcps:property:namespaces",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces?startIndex=10&itemsPerPage=10",
"rel" : "next"
} ]
}

71.2.2.6 すべてのネームスペースの削除

DeleteAllNamespaces

XML

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=t0FKMnYDSzjRlshhs0sFX20nvnTZLQY8vnxNLkplyfYPcWgfb9y6!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Thu, 07 Oct 2010 23:31:17 GMT

JSON

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=WFGvMnyKP7nDBW1RQynhhphbQvWLDjLSbFJj2MQ1g6nFH2VQlgJ4!-609606431;Version=1
Content-Type: application/json
Accept: application/json

Response:
Status Code:204
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Content-Type: application/json
Date: Fri, 08 Oct 2010 01:24:28 GMT

71.2.3 プロパティ定義の作成、取得、更新および削除

71.2.3.1 プロパティ定義の作成 - 整数プロパティ定義の作成

この項では、プロパティ・サービスを使用してネームスペース内のプロパティ定義を作成するための、リクエストとレスポンスについて説明します。

CreateIntPD

XML

Request:
POST http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=ZfhzMnYQz7pg4gzv5wZV1srvy3yDTsG4J4090X1GnHhrQpCSTkG2!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<propertyDefinition resourceType="urn:oracle:wcps:property:propertydefinition">
<namespaceName>Oracle</namespaceName>
<name>Integer_Def</name>
<type>INT</type>
<restricted>false</restricted>
<defaultValues/>
</propertyDefinition>

Response:
Status Code:201
Content-Length: 678
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Content-Type: application/xml
Location: http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Def
Date: Thu, 07 Oct 2010 23:31:29 GMT
ETag: "1286494289263"

<?xml version="1.0" encoding="UTF-8"?>
<propertyDefinition resourceType="urn:oracle:wcps:property:propertydefinition">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Def"
rel="self" resourceType="urn:oracle:wcps:property:propertydefinition"/>
</links>
<namespaceName>Oracle</namespaceName>
<name>Integer_Def</name>
<createdOn>2010-10-07T17:31:29.263-0600</createdOn>
<updatedOn>2010-10-07T17:31:29.263-0600</updatedOn>
<type>INT</type>
<restricted>false</restricted>
<defaultValues/>
</propertyDefinition>

JSON

Request:
POST http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=GSw4MnyYTw87Q6yCBb2H9F0JL6kLJwjrqYv3b72LtDMQGdLKPGRc!-609606431;Version=1
Content-Type: application/json
Accept: application/json

{
"name" : "Integer_Def",
"type" : "INT",
"namespaceName" : "Oracle",
"restricted" : false,
"defaultValues" : [ ],
"resourceType" : "urn:oracle:wcps:property:propertydefinition"
}

Response:
Status Code:201
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Transfer-Encoding: chunked
Content-Type: application/json
Location: http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Def
Date: Fri, 08 Oct 2010 01:24:41 GMT
ETag: "1286501081086"

{
"name" : "Integer_Def",
"type" : "INT",
"namespaceName" : "Oracle",
"defaultValues" : [ ],
"createdOn" : "2010-10-07T19:24:41.086-0600",
"updatedOn" : "2010-10-07T19:24:41.086-0600",
"restricted" : false,
"resourceType" : "urn:oracle:wcps:property:propertydefinition",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:propertydefinition",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Def",
"rel" : "self"
} ]
}

71.2.3.2 プロパティ定義の作成 - 整数配列プロパティ定義の作成

CreateIntArrPD

XML

Request:
POST http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=ZfhzMnYQz7pg4gzv5wZV1srvy3yDTsG4J4090X1GnHhrQpCSTkG2!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<propertyDefinition resourceType="urn:oracle:wcps:property:propertydefinition">
<namespaceName>Oracle</namespaceName>
<name>Integer_Array_Def</name>
<type>INT_ARRAY</type>
<restricted>true</restricted>
<restrictedValues>
<integer>1</integer>
<integer>2</integer>
<integer>3</integer>
<integer>4</integer>
<integer>5</integer>
</restrictedValues>
<defaultValues>
<integer>1</integer>
<integer>2</integer>
</defaultValues>
</propertyDefinition>

Response:
Status Code:201
Content-Length: 887
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Content-Type: application/xml
Location: http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Array_Def
Date: Thu, 07 Oct 2010 23:31:29 GMT
ETag: "1286494289494"

<?xml version="1.0" encoding="UTF-8"?>
<propertyDefinition resourceType="urn:oracle:wcps:property:propertydefinition">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Array_Def"
rel="self" resourceType="urn:oracle:wcps:property:propertydefinition"/>
</links>
<namespaceName>Oracle</namespaceName>
<name>Integer_Array_Def</name>
<createdOn>2010-10-07T17:31:29.494-0600</createdOn>
<updatedOn>2010-10-07T17:31:29.494-0600</updatedOn>
<type>INT_ARRAY</type>
<restricted>true</restricted>
<restrictedValues>
<integer>1</integer>
<integer>2</integer>
<integer>3</integer>
<integer>4</integer>
<integer>5</integer>
</restrictedValues>
<defaultValues>
<integer>1</integer>
<integer>2</integer>
</defaultValues>
</propertyDefinition>

JSON

Request:
POST http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=GSw4MnyYTw87Q6yCBb2H9F0JL6kLJwjrqYv3b72LtDMQGdLKPGRc!-609606431;Version=1
Content-Type: application/json
Accept: application/json

{
"name" : "Integer_Array_Def",
"type" : "INT_ARRAY",
"namespaceName" : "Oracle",
"restricted" : true,
"restrictedValues" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 1
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 2
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 3
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 4
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 5
} ],
"defaultValues" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 1
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 2
} ],
"resourceType" : "urn:oracle:wcps:property:propertydefinition"
}

Response:
Status Code:201
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Transfer-Encoding: chunked
Content-Type: application/json
Location: http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Array_Def
Date: Fri, 08 Oct 2010 01:24:41 GMT
ETag: "1286501081123"

{
"name" : "Integer_Array_Def",
"type" : "INT_ARRAY",
"namespaceName" : "Oracle",
"defaultValues" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 1
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 2
} ],
"createdOn" : "2010-10-07T19:24:41.123-0600",
"updatedOn" : "2010-10-07T19:24:41.123-0600",
"restricted" : true,
"restrictedValues" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 1
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 2
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 3
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 4
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 5
} ],
"resourceType" : "urn:oracle:wcps:property:propertydefinition",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:propertydefinition",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Array_Def",
"rel" : "self"
} ]
}

71.2.3.3 プロパティ定義の取得

RetrievePD

XML

Request:
GET http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Def
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=ZfhzMnYQz7pg4gzv5wZV1srvy3yDTsG4J4090X1GnHhrQpCSTkG2!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

Response:
Status Code:200
Content-Length: 743
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Content-Type: application/xml
Date: Thu, 07 Oct 2010 23:31:29 GMT
ETag: "1286494289862"

<?xml version="1.0" encoding="UTF-8"?>
<propertyDefinition resourceType="urn:oracle:wcps:property:propertydefinition">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Def"
rel="self" resourceType="urn:oracle:wcps:property:propertydefinition"/>
</links>
<namespaceName>Oracle</namespaceName>
<name>Integer_Def</name>
<description>Defines an integer property value type</description>
<createdOn>2010-10-07T17:31:29.263-0600</createdOn>
<updatedOn>2010-10-07T17:31:29.862-0600</updatedOn>
<type>INT</type>
<restricted>false</restricted>
<defaultValues/>
</propertyDefinition>

JSON

Request:
GET http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Def
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=GSw4MnyYTw87Q6yCBb2H9F0JL6kLJwjrqYv3b72LtDMQGdLKPGRc!-609606431;Version=1
Content-Type: application/json
Accept: application/json

Response:
Status Code:200
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Transfer-Encoding: chunked
Content-Type: application/json
Date: Fri, 08 Oct 2010 01:24:41 GMT
ETag: "1286501081172"

{
"name" : "Integer_Def",
"type" : "INT",
"description" : "Defines an integer property value type",
"namespaceName" : "Oracle",
"defaultValues" : [ ],
"createdOn" : "2010-10-07T19:24:41.086-0600",
"updatedOn" : "2010-10-07T19:24:41.172-0600",
"restricted" : false,
"resourceType" : "urn:oracle:wcps:property:propertydefinition",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:propertydefinition",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Def",
"rel" : "self"
} ]
}

71.2.3.4 プロパティ定義の更新

UpdatePD

XML

Request:
PUT http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Def
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=ZfhzMnYQz7pg4gzv5wZV1srvy3yDTsG4J4090X1GnHhrQpCSTkG2!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml
If-Match: 1286494289263

<?xml version="1.0" encoding="UTF-8"?>
<propertyDefinition resourceType="urn:oracle:wcps:property:propertydefinition">
<namespaceName>Oracle</namespaceName>
<name>Integer_Def</name>
<description>Defines an integer property value type</description>
<createdOn>2010-10-07T17:31:29.263-0600</createdOn>
<updatedOn>2010-10-07T17:31:29.263-0600</updatedOn>
<type>INT</type>
<restricted>false</restricted>
<defaultValues/>
</propertyDefinition>

Response:
Status Code:200
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Date: Thu, 07 Oct 2010 23:31:29 GMT
ETag: "1286494289862"

JSON

Request:
PUT http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Def
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=GSw4MnyYTw87Q6yCBb2H9F0JL6kLJwjrqYv3b72LtDMQGdLKPGRc!-609606431;Version=1
Content-Type: application/json
Accept: application/json
If-Match: 1286501081086

{
"name" : "Integer_Def",
"type" : "INT",
"description" : "Defines an integer property value type",
"namespaceName" : "Oracle",
"createdOn" : "2010-10-07T19:24:41.086-0600",
"updatedOn" : "2010-10-07T19:24:41.086-0600",
"restricted" : false,
"defaultValues" : [ ],
"resourceType" : "urn:oracle:wcps:property:propertydefinition"
}

Response:
Status Code:200
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Date: Fri, 08 Oct 2010 01:24:41 GMT
ETag: "1286501081172"

71.2.3.5 プロパティ定義の削除

DeletePD

XML

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Def
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=ZfhzMnYQz7pg4gzv5wZV1srvy3yDTsG4J4090X1GnHhrQpCSTkG2!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml
If-Match: 1286494289263

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Thu, 07 Oct 2010 23:31:29 GMT

JSON

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Def
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=GSw4MnyYTw87Q6yCBb2H9F0JL6kLJwjrqYv3b72LtDMQGdLKPGRc!-609606431;Version=1
Content-Type: application/json
Accept: application/json
If-Match: 1286501081086

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Fri, 08 Oct 2010 01:24:41 GMT

71.2.3.6 すべてのプロパティ定義の取得

この項では、プロパティ・サービスを使用してネームスペース内のプロパティ定義を表示するための、リクエストとレスポンスについて説明します。

RetrieveAllPDs

XML

Request:
GET http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=ZfhzMnYQz7pg4gzv5wZV1srvy3yDTsG4J4090X1GnHhrQpCSTkG2!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

Response:
Status Code:200
Content-Length: 1586
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Content-Type: application/xml
Date: Thu, 07 Oct 2010 23:31:29 GMT

<?xml version="1.0" encoding="UTF-8"?>
<propertyDefinitions resourceType="urn:oracle:wcps:property:propertydefinitions">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions?q=pd-name:like:%25&amp;startIndex=0&amp;itemsPerPage=10"
rel="self"
resourceType="urn:oracle:wcps:property:propertydefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<itemsPerPage>10</itemsPerPage>
<startIndex>0</startIndex>
<totalCount>1</totalCount>
<namespaceName>Oracle</namespaceName>
<items>
<propertyDefinition resourceType="urn:oracle:wcps:property:propertydefinition">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Array_Def"
rel="self" resourceType="urn:oracle:wcps:property:propertydefinition"/>
</links>
<name>Integer_Array_Def</name>
<createdOn>2010-10-07T17:31:29.494-0600</createdOn>
<updatedOn>2010-10-07T17:31:29.494-0600</updatedOn>
<type>INT_ARRAY</type>
<restricted>true</restricted>
<restrictedValues>
<integer>5</integer>
<integer>4</integer>
<integer>3</integer>
<integer>2</integer>
<integer>1</integer>
</restrictedValues>
<defaultValues>
<integer>2</integer>
<integer>1</integer>
</defaultValues>
</propertyDefinition>
</items>
</propertyDefinitions>

JSON

Request:
GET http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=GSw4MnyYTw87Q6yCBb2H9F0JL6kLJwjrqYv3b72LtDMQGdLKPGRc!-609606431;Version=1
Content-Type: application/json
Accept: application/json

Response:
Status Code:200
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Transfer-Encoding: chunked
Content-Type: application/json
Date: Fri, 08 Oct 2010 01:24:41 GMT

{
"namespaceName" : "Oracle",
"propertyDefinitions" : [ {
"name" : "Integer_Array_Def",
"type" : "INT_ARRAY",
"defaultValues" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 2
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 1
} ],
"createdOn" : "2010-10-07T19:24:41.123-0600",
"updatedOn" : "2010-10-07T19:24:41.123-0600",
"restricted" : true,
"restrictedValues" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 5
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 4
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 3
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 2
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 1
} ],
"resourceType" : "urn:oracle:wcps:property:propertydefinition",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:propertydefinition",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Array_Def",
"rel" : "self"
} ]
} ],
"totalCount" : 1,
"startIndex" : 0,
"itemsPerPage" : 10,
"resourceType" : "urn:oracle:wcps:property:propertydefinitions",
"links" : [ {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertydefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions?q=pd-name:like:%25&startIndex=0&itemsPerPage=10",
"rel" : "self"
} ]
}

71.2.3.7 すべてのプロパティ定義の削除

DeleteAllPDs

XML

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=ZfhzMnYQz7pg4gzv5wZV1srvy3yDTsG4J4090X1GnHhrQpCSTkG2!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Thu, 07 Oct 2010 23:31:30 GMT

JSON

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=GSw4MnyYTw87Q6yCBb2H9F0JL6kLJwjrqYv3b72LtDMQGdLKPGRc!-609606431;Version=1
Content-Type: application/json
Accept: application/json

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Fri, 08 Oct 2010 01:24:41 GMT

71.2.4 プロパティ・セット定義の作成、取得、更新および削除

71.2.4.1 プロパティ・セット定義の作成

この項では、プロパティ・サービスを使用してネームスペース内のプロパティ・セット定義を作成するための、リクエストとレスポンスについて説明します。

CreatePSD

XML

Request:
POST http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=6Q93MnYT5xcTQJ3tPLn3vT7sCPDNFlyzQGRSRnXlfHp8lSTbR8NH!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<propertySetDefinition resourceType="urn:oracle:wcps:property:propertysetdefinition">
<namespaceName>Oracle</namespaceName>
<name>partnersinfo</name>
<propertyMapping>
<propertyName>company_name</propertyName>
<propertyDefinitionName>String_Def</propertyDefinitionName>
</propertyMapping>
<propertyMapping>
<propertyName>address</propertyName>
<propertyDefinitionName>String_Def</propertyDefinitionName>
</propertyMapping>
<propertyMapping>
<propertyName>number_of_employees</propertyName>
<propertyDefinitionName>Integer_Def</propertyDefinitionName>
</propertyMapping>
<propertyMapping>
<propertyName>previous_ranking_and_current_ranking</propertyName>
<propertyDefinitionName>Integer_Array_Def</propertyDefinitionName>
</propertyMapping>
</propertySetDefinition>

Response:
Status Code:201
Content-Length: 2854
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Content-Type: application/xml
Location: http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo
Date: Thu, 07 Oct 2010 23:31:32 GMT
ETag: "1286494292658"

<?xml version="1.0" encoding="UTF-8"?>
<propertySetDefinition resourceType="urn:oracle:wcps:property:propertysetdefinition">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo"
rel="self" resourceType="urn:oracle:wcps:property:propertysetdefinition"/>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets"
resourceType="urn:oracle:wcps:property:propertysets" template="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets?startIndex={startIndex}&amp;dataFields={dataFields}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<namespaceName>Oracle</namespaceName>
<name>partnersinfo</name>
<createdOn>2010-10-07T17:31:32.658-0600</createdOn>
<updatedOn>2010-10-07T17:31:32.658-0600</updatedOn>
<propertyMapping>
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Def" resourceType="urn:oracle:wcps:property:propertydefinition"/>
</links>
<propertyName>number_of_employees</propertyName>
<propertyDefinitionName>Integer_Def</propertyDefinitionName>
</propertyMapping>
<propertyMapping>
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/String_Def" resourceType="urn:oracle:wcps:property:propertydefinition"/>
</links>
<propertyName>address</propertyName>
<propertyDefinitionName>String_Def</propertyDefinitionName>
</propertyMapping>
<propertyMapping>
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/String_Def" resourceType="urn:oracle:wcps:property:propertydefinition"/>
</links>
<propertyName>company_name</propertyName>
<propertyDefinitionName>String_Def</propertyDefinitionName>
</propertyMapping>
<propertyMapping>
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Array_Def" resourceType="urn:oracle:wcps:property:propertydefinition"/>
</links>
<propertyName>previous_ranking_and_current_ranking</propertyName>
<propertyDefinitionName>Integer_Array_Def</propertyDefinitionName>
</propertyMapping>
</propertySetDefinition>

JSON

Request:
POST http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitionsX-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=dpvQMnyDkSNwv1TZ20JSYyzJpKJn1JwBQdRtNLQhNPHWpgvs8PcZ!-609606431;Version=1
Content-Type: application/json
Accept: application/json

{
"name" : "partnersinfo",
"namespaceName" : "Oracle",
"propertyMappings" : [ {
"propertyDefinitionName" : "String_Def",
"propertyName" : "company_name"
}, {
"propertyDefinitionName" : "String_Def",
"propertyName" : "address"
}, {
"propertyDefinitionName" : "Integer_Def",
"propertyName" : "number_of_employees"
}, {
"propertyDefinitionName" : "Integer_Array_Def",
"propertyName" : "previous_ranking_and_current_ranking"
} ],
"resourceType" : "urn:oracle:wcps:property:propertysetdefinition"
}

Response:
Status Code:201
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Transfer-Encoding: chunked
Content-Type: application/json
Location: http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo
Date: Fri, 08 Oct 2010 01:24:51 GMT
ETag: "1286501091845"

{
"name" : "partnersinfo",
"namespaceName" : "Oracle",
"createdOn" : "2010-10-07T19:24:51.845-0600",
"updatedOn" : "2010-10-07T19:24:51.845-0600",
"propertyMappings" : [ {
"propertyName" : "number_of_employees",
"propertyDefinitionName" : "Integer_Def",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:propertydefinition",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Def"
} ]
}, {
"propertyName" : "address",
"propertyDefinitionName" : "String_Def",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:propertydefinition",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/String_Def"
} ]
}, {
"propertyName" : "company_name",
"propertyDefinitionName" : "String_Def",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:propertydefinition",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/String_Def"
} ]
}, {
"propertyName" : "previous_ranking_and_current_ranking",
"propertyDefinitionName" : "Integer_Array_Def",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:propertydefinition",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertydefinitions/Integer_Array_Def"
} ]
} ],
"resourceType" : "urn:oracle:wcps:property:propertysetdefinition",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:propertysetdefinition",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo",
"rel" : "self"
}, {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets?startIndex={startIndex}&dataFields={dataFields}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysets",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets"
} ]
}

71.2.4.2 プロパティ・セット定義の取得

RetrievePSD

XML

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=6Q93MnYT5xcTQJ3tPLn3vT7sCPDNFlyzQGRSRnXlfHp8lSTbR8NH!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml
If-Match: 1286494292658

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Thu, 07 Oct 2010 23:31:33 GMT

JSON

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=dpvQMnyDkSNwv1TZ20JSYyzJpKJn1JwBQdRtNLQhNPHWpgvs8PcZ!-609606431;Version=1
Content-Type: application/json
Accept: application/json
If-Match: 1286501091845

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Fri, 08 Oct 2010 01:24:51 GMT

71.2.4.3 すべてのプロパティ・セット定義の取得

この項では、プロパティ・サービスを使用してネームスペース内のプロパティ・セット定義を表示するための、リクエストとレスポンスについて説明します。

RetrieveAllPSDs

XML

Request:
GET http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=6Q93MnYT5xcTQJ3tPLn3vT7sCPDNFlyzQGRSRnXlfHp8lSTbR8NH!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

Response:
Status Code:200
Content-Length: 779
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Content-Type: application/xml
Date: Thu, 07 Oct 2010 23:31:33 GMT

<?xml version="1.0" encoding="UTF-8"?>
<propertySetDefinitions resourceType="urn:oracle:wcps:property:propertysetdefinitions">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions?startIndex=0&amp;itemsPerPage=10"
rel="self"
resourceType="urn:oracle:wcps:property:propertysetdefinitions" template="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions?startIndex={startIndex}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<itemsPerPage>10</itemsPerPage>
<startIndex>0</startIndex>
<totalCount>0</totalCount>
<namespaceName>Oracle</namespaceName>
<items/>
</propertySetDefinitions>

JSON

Request:
GET http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=dpvQMnyDkSNwv1TZ20JSYyzJpKJn1JwBQdRtNLQhNPHWpgvs8PcZ!-609606431;Version=1
Content-Type: application/json
Accept: application/json

Response:
Status Code:200
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Transfer-Encoding: chunked
Content-Type: application/json
Date: Fri, 08 Oct 2010 01:24:51 GMT

{
"namespaceName" : "Oracle",
"propertySetDefinitions" : [ ],
"totalCount" : 0,
"startIndex" : 0,
"itemsPerPage" : 10,
"resourceType" : "urn:oracle:wcps:property:propertysetdefinitions",
"links" : [ {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions?startIndex={startIndex}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysetdefinitions",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions?startIndex=0&itemsPerPage=10",
"rel" : "self"
} ]
}

71.2.4.4 すべてのプロパティ・セット定義の削除

DeleteAllPSDs

XML

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=6Q93MnYT5xcTQJ3tPLn3vT7sCPDNFlyzQGRSRnXlfHp8lSTbR8NH!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Thu, 07 Oct 2010 23:31:33 GMT

JSON

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=dpvQMnyDkSNwv1TZ20JSYyzJpKJn1JwBQdRtNLQhNPHWpgvs8PcZ!-609606431;Version=1
Content-Type: application/json
Accept: application/json

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Fri, 08 Oct 2010 01:24:51 GMT

71.2.5 プロパティ・セットの作成、取得、更新および削除

71.2.5.1 プロパティ・セットの作成

この項では、プロパティ・サービスを使用してネームスペース内のプロパティ・セットを作成するための、リクエストとレスポンスについて説明します。

CreatePS

XML

Request:
POST http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=vc1pMnYWRZysgqhXVz5XrGKqhvfy0vv2zc7xQ3RyDSvG0mG22ZlJ!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<propertySet resourceType="urn:oracle:wcps:property:propertyset">
<namespaceName>Oracle</namespaceName>
<propertySetDefinitionName>partnersinfo</propertySetDefinitionName>
<name>infosys</name>
<items>
<property multiValue="false" resourceType="urn:oracle:wcps:property:property">
<name>company_name</name>
<type>STRING</type>
<values>
<string>InfoSys</string>
</values>
</property>
<property multiValue="false" resourceType="urn:oracle:wcps:property:property">
<name>address</name>
<type>STRING</type>
<values>
<string>1 foo loop, San Francisco, CA</string>
</values>
</property>
<property multiValue="false" resourceType="urn:oracle:wcps:property:property">
<name>number_of_employees</name>
<type>INT</type>
<values>
<integer>10000</integer>
</values>
</property>
<property multiValue="true" resourceType="urn:oracle:wcps:property:property">
<name>previous_ranking_and_current_ranking</name>
<type>INT_ARRAY</type>
<values>
<integer>3</integer>
<integer>5</integer>
</values>
</property>
</items>
</propertySet>

Response:

Status Code:201
Content-Length: 3709
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Content-Type: application/xml
Location: http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys
Date: Thu, 07 Oct 2010 23:31:35 GMT
ETag: "1286494295948"

<?xml version="1.0" encoding="UTF-8"?>
<propertySet resourceType="urn:oracle:wcps:property:propertyset">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
resourceType="urn:oracle:wcps:property:property" template="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/{propertyName}"/>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys"
rel="self" resourceType="urn:oracle:wcps:property:propertyset"/>
</links>
<namespaceName>Oracle</namespaceName>
<propertySetDefinitionName>partnersinfo</propertySetDefinitionName>
<name>infosys</name>
<items>
<property multiValue="false" resourceType="urn:oracle:wcps:property:property">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/number_of_employees"
rel="self" resourceType="urn:oracle:wcps:property:property"/>
</links>
<name>number_of_employees</name>
<type>INT</type>
<values>
<integer>10000</integer>
</values>
<createdOn>2010-10-07T17:31:35.948-0600</createdOn>
<updatedOn>2010-10-07T17:31:35.948-0600</updatedOn>
</property>
<property multiValue="false" resourceType="urn:oracle:wcps:property:property">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/address"
rel="self" resourceType="urn:oracle:wcps:property:property"/>
</links>
<name>address</name>
<type>STRING</type>
<values>
<string>1 foo loop, San Francisco, CA</string>
</values>
<createdOn>2010-10-07T17:31:35.948-0600</createdOn>
<updatedOn>2010-10-07T17:31:35.948-0600</updatedOn>
</property>
<property multiValue="false" resourceType="urn:oracle:wcps:property:property">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/company_name"
rel="self" resourceType="urn:oracle:wcps:property:property"/>
</links>
<name>company_name</name>
<type>STRING</type>
<values>
<string>InfoSys</string>
</values>
<createdOn>2010-10-07T17:31:35.948-0600</createdOn>
<updatedOn>2010-10-07T17:31:35.948-0600</updatedOn>
</property>
<property multiValue="true" resourceType="urn:oracle:wcps:property:property">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/previous_ranking_and_current_ranking"
rel="self" resourceType="urn:oracle:wcps:property:property"/>
</links>
<name>previous_ranking_and_current_ranking</name>
<type>INT_ARRAY</type>
<values>
<integer>3</integer>
<integer>5</integer>
</values>
<createdOn>2010-10-07T17:31:35.948-0600</createdOn>
<updatedOn>2010-10-07T17:31:35.948-0600</updatedOn>
</property>
</items>
<createdOn>2010-10-07T17:31:35.948-0600</createdOn>
<updatedOn>2010-10-07T17:31:35.948-0600</updatedOn>
</propertySet>

JSON

Request:
POST http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=h72xMnyKQQSW9Lwcg2HMGDnNQnK1HZJpGJmLgZ2P1vHFpvT2bX2k!-609606431;Version=1
Content-Type: application/json
Accept: application/json

{
"name" : "infosys",
"properties" : [ {
"name" : "company_name",
"type" : "STRING",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:string-value",
"value" : "InfoSys"
} ],
"multiValue" : false,
"resourceType" : "urn:oracle:wcps:property:property"
}, {
"name" : "address",
"type" : "STRING",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:string-value",
"value" : "1 foo loop, San Francisco, CA"
} ],
"multiValue" : false,
"resourceType" : "urn:oracle:wcps:property:property"
}, {
"name" : "number_of_employees",
"type" : "INT",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 10000
} ],
"multiValue" : false,
"resourceType" : "urn:oracle:wcps:property:property"
}, {
"name" : "previous_ranking_and_current_ranking",
"type" : "INT_ARRAY",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 3
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 5
} ],
"multiValue" : true,
"resourceType" : "urn:oracle:wcps:property:property"
} ],
"namespaceName" : "Oracle",
"propertySetDefinitionName" : "partnersinfo",
"resourceType" : "urn:oracle:wcps:property:propertyset"
}

Response:
Status Code:201
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Transfer-Encoding: chunked
Content-Type: application/json
Location: http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys
Date: Fri, 08 Oct 2010 01:24:58 GMT
ETag: "1286501098924"

{
"name" : "infosys",
"properties" : [ {
"name" : "number_of_employees",
"type" : "INT",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 10000
} ],
"createdOn" : "2010-10-07T19:24:58.924-0600",
"updatedOn" : "2010-10-07T19:24:58.924-0600",
"multiValue" : false,
"resourceType" : "urn:oracle:wcps:property:property",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:property",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/number_of_employees",
"rel" : "self"
} ]
}, {
"name" : "address",
"type" : "STRING",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:string-value",
"value" : "1 foo loop, San Francisco, CA"
} ],
"createdOn" : "2010-10-07T19:24:58.924-0600",
"updatedOn" : "2010-10-07T19:24:58.924-0600",
"multiValue" : false,
"resourceType" : "urn:oracle:wcps:property:property",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:property",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/address",
"rel" : "self"
} ]
}, {
"name" : "company_name",
"type" : "STRING",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:string-value",
"value" : "InfoSys"
} ],
"createdOn" : "2010-10-07T19:24:58.924-0600",
"updatedOn" : "2010-10-07T19:24:58.924-0600",
"multiValue" : false,
"resourceType" : "urn:oracle:wcps:property:property",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:property",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/company_name",
"rel" : "self"
} ]
}, {
"name" : "previous_ranking_and_current_ranking",
"type" : "INT_ARRAY",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 3
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 5
} ],
"createdOn" : "2010-10-07T19:24:58.924-0600",
"updatedOn" : "2010-10-07T19:24:58.924-0600",
"multiValue" : true,
"resourceType" : "urn:oracle:wcps:property:property",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:property",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/previous_ranking_and_current_ranking",
"rel" : "self"
} ]
} ],
"namespaceName" : "Oracle",
"createdOn" : "2010-10-07T19:24:58.924-0600",
"updatedOn" : "2010-10-07T19:24:58.924-0600",
"propertySetDefinitionName" : "partnersinfo",
"resourceType" : "urn:oracle:wcps:property:propertyset",
"links" : [ {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/{propertyName}",
"resourceType" : "urn:oracle:wcps:property:property",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
}, {
"resourceType" : "urn:oracle:wcps:property:propertyset",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys",
"rel" : "self"
} ]
}

71.2.5.2 プロパティ・セットの取得

RetrievePS

XML

Request:
GET http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=vc1pMnYWRZysgqhXVz5XrGKqhvfy0vv2zc7xQ3RyDSvG0mG22ZlJ!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

Response:
Status Code:200
Content-Length: 3709
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Content-Type: application/xml
Date: Thu, 07 Oct 2010 23:31:36 GMT
ETag: "1286494296325"

<?xml version="1.0" encoding="UTF-8"?>
<propertySet resourceType="urn:oracle:wcps:property:propertyset">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
resourceType="urn:oracle:wcps:property:property" template="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/{propertyName}"/>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys"
rel="self" resourceType="urn:oracle:wcps:property:propertyset"/>
</links>
<namespaceName>Oracle</namespaceName>
<propertySetDefinitionName>partnersinfo</propertySetDefinitionName>
<name>infosys</name>
<items>
<property multiValue="false" resourceType="urn:oracle:wcps:property:property">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/number_of_employees"
rel="self" resourceType="urn:oracle:wcps:property:property"/>
</links>
<name>number_of_employees</name>
<type>INT</type>
<values>
<integer>10000</integer>
</values>
<createdOn>2010-10-07T17:31:35.948-0600</createdOn>
<updatedOn>2010-10-07T17:31:36.325-0600</updatedOn>
</property>
<property multiValue="false" resourceType="urn:oracle:wcps:property:property">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/company_name"
rel="self" resourceType="urn:oracle:wcps:property:property"/>
</links>
<name>company_name</name>
<type>STRING</type>
<values>
<string>InfoSys</string>
</values>
<createdOn>2010-10-07T17:31:35.948-0600</createdOn>
<updatedOn>2010-10-07T17:31:36.325-0600</updatedOn>
</property>
<property multiValue="false" resourceType="urn:oracle:wcps:property:property">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/address"
rel="self" resourceType="urn:oracle:wcps:property:property"/>
</links>
<name>address</name>
<type>STRING</type>
<values>
<string>1 foo loop, San Francisco, CA</string>
</values>
<createdOn>2010-10-07T17:31:35.948-0600</createdOn>
<updatedOn>2010-10-07T17:31:36.325-0600</updatedOn>
</property>
<property multiValue="true" resourceType="urn:oracle:wcps:property:property">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/previous_ranking_and_current_ranking"
rel="self" resourceType="urn:oracle:wcps:property:property"/>
</links>
<name>previous_ranking_and_current_ranking</name>
<type>INT_ARRAY</type>
<values>
<integer>4</integer>
<integer>5</integer>
</values>
<createdOn>2010-10-07T17:31:35.948-0600</createdOn>
<updatedOn>2010-10-07T17:31:36.325-0600</updatedOn>
</property>
</items>
<createdOn>2010-10-07T17:31:35.948-0600</createdOn>
<updatedOn>2010-10-07T17:31:36.325-0600</updatedOn>
</propertySet>

JSON

Request:
GET http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=h72xMnyKQQSW9Lwcg2HMGDnNQnK1HZJpGJmLgZ2P1vHFpvT2bX2k!-609606431;Version=1
Content-Type: application/json
Accept: application/json

Response:
Status Code:200
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Transfer-Encoding: chunked
Content-Type: application/json
Date: Fri, 08 Oct 2010 01:24:58 GMT
ETag: "1286501098964"

{
"name" : "infosys",
"properties" : [ {
"name" : "number_of_employees",
"type" : "INT",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 10000
} ],
"createdOn" : "2010-10-07T19:24:58.924-0600",
"updatedOn" : "2010-10-07T19:24:58.964-0600",
"multiValue" : false,
"resourceType" : "urn:oracle:wcps:property:property",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:property",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/number_of_employees",
"rel" : "self"
} ]
}, {
"name" : "company_name",
"type" : "STRING",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:string-value",
"value" : "InfoSys"
} ],
"createdOn" : "2010-10-07T19:24:58.924-0600",
"updatedOn" : "2010-10-07T19:24:58.964-0600",
"multiValue" : false,
"resourceType" : "urn:oracle:wcps:property:property",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:property",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/company_name",
"rel" : "self"
} ]
}, {
"name" : "address",
"type" : "STRING",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:string-value",
"value" : "1 foo loop, San Francisco, CA"
} ],
"createdOn" : "2010-10-07T19:24:58.924-0600",
"updatedOn" : "2010-10-07T19:24:58.964-0600",
"multiValue" : false,
"resourceType" : "urn:oracle:wcps:property:property",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:property",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/address",
"rel" : "self"
} ]
}, {
"name" : "previous_ranking_and_current_ranking",
"type" : "INT_ARRAY",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 4
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 5
} ],
"createdOn" : "2010-10-07T19:24:58.924-0600",
"updatedOn" : "2010-10-07T19:24:58.964-0600",
"multiValue" : true,
"resourceType" : "urn:oracle:wcps:property:property",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:property",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/previous_ranking_and_current_ranking",
"rel" : "self"
} ]
} ],
"namespaceName" : "Oracle",
"createdOn" : "2010-10-07T19:24:58.924-0600",
"updatedOn" : "2010-10-07T19:24:58.964-0600",
"propertySetDefinitionName" : "partnersinfo",
"resourceType" : "urn:oracle:wcps:property:propertyset",
"links" : [ {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/{propertyName}",
"resourceType" : "urn:oracle:wcps:property:property",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
}, {
"resourceType" : "urn:oracle:wcps:property:propertyset",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys",
"rel" : "self"
} ]
}

71.2.5.3 プロパティ・セットの更新

UpdatePS

XML

Request:
PUT http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=vc1pMnYWRZysgqhXVz5XrGKqhvfy0vv2zc7xQ3RyDSvG0mG22ZlJ!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml
If-Match: 1286494295948

<?xml version="1.0" encoding="UTF-8"?>
<propertySet resourceType="urn:oracle:wcps:property:propertyset">
<namespaceName>Oracle</namespaceName>
<propertySetDefinitionName>partnersinfo</propertySetDefinitionName>
<name>infosys</name>
<items>
<property multiValue="false" resourceType="urn:oracle:wcps:property:property">
<name>number_of_employees</name>
<type>INT</type>
<values>
<integer>10000</integer>
</values>
<createdOn>2010-10-07T17:31:35.948-0600</createdOn>
<updatedOn>2010-10-07T17:31:35.948-0600</updatedOn>
</property>
<property multiValue="false" resourceType="urn:oracle:wcps:property:property">
<name>address</name>
<type>STRING</type>
<values>
<string>1 foo loop, San Francisco, CA</string>
</values>
<createdOn>2010-10-07T17:31:35.948-0600</createdOn>
<updatedOn>2010-10-07T17:31:35.948-0600</updatedOn>
</property>
<property multiValue="false" resourceType="urn:oracle:wcps:property:property">
<name>company_name</name>
<type>STRING</type>
<values>
<string>InfoSys</string>
</values>
<createdOn>2010-10-07T17:31:35.948-0600</createdOn>
<updatedOn>2010-10-07T17:31:35.948-0600</updatedOn>
</property>
<property multiValue="true" resourceType="urn:oracle:wcps:property:property">
<name>previous_ranking_and_current_ranking</name>
<type>INT_ARRAY</type>
<values>
<integer>4</integer>
<integer>5</integer>
</values>
<createdOn>2010-10-07T17:31:35.948-0600</createdOn>
<updatedOn>2010-10-07T17:31:35.948-0600</updatedOn>
</property>
</items>
<createdOn>2010-10-07T17:31:35.948-0600</createdOn>
<updatedOn>2010-10-07T17:31:35.948-0600</updatedOn>
</propertySet>

Response:
Status Code:200
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Date: Thu, 07 Oct 2010 23:31:36 GMT
ETag: "1286494296325"

JSON

Request:
PUT http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=h72xMnyKQQSW9Lwcg2HMGDnNQnK1HZJpGJmLgZ2P1vHFpvT2bX2k!-609606431;Version=1
Content-Type: application/json
Accept: application/json
If-Match: 1286501098924

{
"name" : "infosys",
"properties" : [ {
"name" : "number_of_employees",
"type" : "INT",
"createdOn" : "2010-10-07T19:24:58.924-0600",
"updatedOn" : "2010-10-07T19:24:58.924-0600",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 10000
} ],
"multiValue" : false,
"resourceType" : "urn:oracle:wcps:property:property"
}, {
"name" : "address",
"type" : "STRING",
"createdOn" : "2010-10-07T19:24:58.924-0600",
"updatedOn" : "2010-10-07T19:24:58.924-0600",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:string-value",
"value" : "1 foo loop, San Francisco, CA"
} ],
"multiValue" : false,
"resourceType" : "urn:oracle:wcps:property:property"
}, {
"name" : "company_name",
"type" : "STRING",
"createdOn" : "2010-10-07T19:24:58.924-0600",
"updatedOn" : "2010-10-07T19:24:58.924-0600",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:string-value",
"value" : "InfoSys"
} ],
"multiValue" : false,
"resourceType" : "urn:oracle:wcps:property:property"
}, {
"name" : "previous_ranking_and_current_ranking",
"type" : "INT_ARRAY",
"createdOn" : "2010-10-07T19:24:58.924-0600",
"updatedOn" : "2010-10-07T19:24:58.924-0600",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 4
}, {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:integer-value",
"value" : 5
} ],
"multiValue" : true,
"resourceType" : "urn:oracle:wcps:property:property"
} ],
"namespaceName" : "Oracle",
"createdOn" : "2010-10-07T19:24:58.924-0600",
"updatedOn" : "2010-10-07T19:24:58.924-0600",
"propertySetDefinitionName" : "partnersinfo",
"resourceType" : "urn:oracle:wcps:property:propertyset"
}

Response:
Status Code:200
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Date: Fri, 08 Oct 2010 01:24:58 GMT
ETag: "1286501098964"

71.2.5.4 プロパティ・セットの削除

DeletePS

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=vc1pMnYWRZysgqhXVz5XrGKqhvfy0vv2zc7xQ3RyDSvG0mG22ZlJ!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml
If-Match: 1286494295948

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Thu, 07 Oct 2010 23:31:36 GMT

JSON

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=h72xMnyKQQSW9Lwcg2HMGDnNQnK1HZJpGJmLgZ2P1vHFpvT2bX2k!-609606431;Version=1
Content-Type: application/json
Accept: application/json
If-Match: 1286501098924

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Fri, 08 Oct 2010 01:24:58 GMT

71.2.5.5 すべてのプロパティ・セットの取得

この項では、プロパティ・サービスを使用してネームスペース内のプロパティ・セットを表示するための、リクエストとレスポンスについて説明します。

RetrieveAllPSs

XML

Request:
GET http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=vc1pMnYWRZysgqhXVz5XrGKqhvfy0vv2zc7xQ3RyDSvG0mG22ZlJ!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

Response:
Status Code:200
Content-Length: 886
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Content-Type: application/xml
Date: Thu, 07 Oct 2010 23:31:36 GMT

<?xml version="1.0" encoding="UTF-8"?>
<propertySets resourceType="urn:oracle:wcps:property:propertysets">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets?startIndex=0&amp;itemsPerPage=10"
rel="self" resourceType="urn:oracle:wcps:property:propertysets" template="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets?startIndex={startIndex}&amp;dataFields={dataFields}&amp;q={q}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<itemsPerPage>10</itemsPerPage>
<startIndex>0</startIndex>
<totalCount>0</totalCount>
<namespaceName>Oracle</namespaceName>
<propertySetDefinitionName>partnersinfo</propertySetDefinitionName>
<items/>
</propertySets>

JSON

Request:
GET http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=h72xMnyKQQSW9Lwcg2HMGDnNQnK1HZJpGJmLgZ2P1vHFpvT2bX2k!-609606431;Version=1
Content-Type: application/json
Accept: application/json

Response:
Status Code:200
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Transfer-Encoding: chunked
Content-Type: application/json
Date: Fri, 08 Oct 2010 01:24:59 GMT

{
"propertySets" : [ ],
"namespaceName" : "Oracle",
"propertySetDefinitionName" : "partnersinfo",
"totalCount" : 0,
"startIndex" : 0,
"itemsPerPage" : 10,
"resourceType" : "urn:oracle:wcps:property:propertysets",
"links" : [ {
"template" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets?startIndex={startIndex}&dataFields={dataFields}&q={q}&itemsPerPage={itemsPerPage}",
"resourceType" : "urn:oracle:wcps:property:propertysets",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets?startIndex=0&itemsPerPage=10",
"rel" : "self"
} ]
}

71.2.5.6 すべてのプロパティ・セットの削除

DeleteAllPSs

XML

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=vc1pMnYWRZysgqhXVz5XrGKqhvfy0vv2zc7xQ3RyDSvG0mG22ZlJ!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Thu, 07 Oct 2010 23:31:36 GMT

JSON

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=h72xMnyKQQSW9Lwcg2HMGDnNQnK1HZJpGJmLgZ2P1vHFpvT2bX2k!-609606431;Version=1
Content-Type: application/json
Accept: application/json

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Fri, 08 Oct 2010 01:24:59 GMT

71.2.6 プロパティの作成、取得、更新および削除

71.2.6.1 プロパティの作成

CreateP

XML

Request:
POST http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=vc1pMnYWRZysgqhXVz5XrGKqhvfy0vv2zc7xQ3RyDSvG0mG22ZlJ!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<property multiValue="false" resourceType="urn:oracle:wcps:property:property">
<name>ceo_name</name>
<type>STRING</type>
<values>
<string>Mr. Smith</string>
</values>
</property>

Response:
Status Code:201
Content-Length: 694
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Content-Type: application/xml
Location: http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/ceo_name
Date: Thu, 07 Oct 2010 23:31:36 GMT
ETag: "1286494297011"

<?xml version="1.0" encoding="UTF-8"?>
<property multiValue="false" resourceType="urn:oracle:wcps:property:property">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/ceo_name"
rel="self" resourceType="urn:oracle:wcps:property:property"/>
</links>
<name>ceo_name</name>
<type>STRING</type>
<values>
<string>Mr. Smith</string>
</values>
<createdOn>2010-10-07T17:31:36.741-0600</createdOn>
<updatedOn>2010-10-07T17:31:37.011-0600</updatedOn>
</property>

JSON

Request:
POST http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=h72xMnyKQQSW9Lwcg2HMGDnNQnK1HZJpGJmLgZ2P1vHFpvT2bX2k!-609606431;Version=1
Content-Type: application/json
Accept: application/json

{
"name" : "ceo_name",
"type" : "STRING",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:string-value",
"value" : "Mr. Smith"
} ],
"multiValue" : false,
"resourceType" : "urn:oracle:wcps:property:property"
}

Response:
Status Code:201
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Transfer-Encoding: chunked
Content-Type: application/json
Location: http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/ceo_name
Date: Fri, 08 Oct 2010 01:24:59 GMT
ETag: "1286501099056"

{
"name" : "ceo_name",
"type" : "STRING",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:string-value",
"value" : "Mr. Smith"
} ],
"createdOn" : "2010-10-07T19:24:59.038-0600",
"updatedOn" : "2010-10-07T19:24:59.056-0600",
"multiValue" : false,
"resourceType" : "urn:oracle:wcps:property:property",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:property",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/ceo_name",
"rel" : "self"
} ]
}

71.2.6.2 プロパティの取得

RetrieveP

XML

Request:
GET http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/ceo_name
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=vc1pMnYWRZysgqhXVz5XrGKqhvfy0vv2zc7xQ3RyDSvG0mG22ZlJ!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml

Response:
Status Code:200
Content-Length: 694
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Content-Type: application/xml
Date: Thu, 07 Oct 2010 23:31:37 GMT
ETag: "1286494297366"

<?xml version="1.0" encoding="UTF-8"?>
<property multiValue="false" resourceType="urn:oracle:wcps:property:property">
<links>
<link
capabilities="urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete"
href="http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/ceo_name"
rel="self" resourceType="urn:oracle:wcps:property:property"/>
</links>
<name>ceo_name</name>
<type>STRING</type>
<values>
<string>Mr. Baker</string>
</values>
<createdOn>2010-10-07T17:31:36.741-0600</createdOn>
<updatedOn>2010-10-07T17:31:37.366-0600</updatedOn>
</property>

JSON

Request:
GET http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/ceo_name
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=h72xMnyKQQSW9Lwcg2HMGDnNQnK1HZJpGJmLgZ2P1vHFpvT2bX2k!-609606431;Version=1
Content-Type: application/json
Accept: application/json

Response:
Status Code:200
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Transfer-Encoding: chunked
Content-Type: application/json
Date: Fri, 08 Oct 2010 01:24:59 GMT
ETag: "1286501099162"

{
"name" : "ceo_name",
"type" : "STRING",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:string-value",
"value" : "Mr. Baker"
} ],
"createdOn" : "2010-10-07T19:24:59.038-0600",
"updatedOn" : "2010-10-07T19:24:59.162-0600",
"multiValue" : false,
"resourceType" : "urn:oracle:wcps:property:property",
"links" : [ {
"resourceType" : "urn:oracle:wcps:property:property",
"capabilities" : "urn:oracle:restframework:create urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete",
"href" : "http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/ceo_name",
"rel" : "self"
} ]
}

71.2.6.3 プロパティの更新

UpdateP

XML

Request:
PUT http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/ceo_name
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
Cookie: JSESSIONID=vc1pMnYWRZysgqhXVz5XrGKqhvfy0vv2zc7xQ3RyDSvG0mG22ZlJ!-1714998420;Version=1
Content-Type: application/xml
Accept: application/xml
If-Match: 1286494297011

<?xml version="1.0" encoding="UTF-8"?>
<property multiValue="false" resourceType="urn:oracle:wcps:property:property">
<name>ceo_name</name>
<type>STRING</type>
<values>
<string>Mr. Baker</string>
</values>
<createdOn>2010-10-07T17:31:36.741-0600</createdOn>
<updatedOn>2010-10-07T17:31:37.011-0600</updatedOn>
</property>

Response:
Status Code:200
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FC59cJkhnJPolzPwKsStfD0Dxjm8_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Date: Thu, 07 Oct 2010 23:31:37 GMT
ETag: "1286494297366"

JSON

Request:
PUT http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/ceo_name
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=h72xMnyKQQSW9Lwcg2HMGDnNQnK1HZJpGJmLgZ2P1vHFpvT2bX2k!-609606431;Version=1
Content-Type: application/json
Accept: application/json
If-Match: 1286501099056

{
"name" : "ceo_name",
"type" : "STRING",
"createdOn" : "2010-10-07T19:24:59.038-0600",
"updatedOn" : "2010-10-07T19:24:59.056-0600",
"values" : [ {
"concreteType" : "urn:oracle:wcps:property:internal:jaxrs:model:string-value",
"value" : "Mr. Baker"
} ],
"multiValue" : false,
"resourceType" : "urn:oracle:wcps:property:property"
}

Response:
Status Code:200
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Cache-Control: no-cache
X-Oracle-RF-Token-Location: header
Date: Fri, 08 Oct 2010 01:24:59 GMT
ETag: "1286501099162"

71.2.6.4 プロパティの削除

DeleteP

XML

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/ceo_name
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=VyThMnyG0gyp97J3vKPrkfF4VvtrjTDHJ3SL894V0glWzqJ24L0B!-609606431;Version=1
Content-Type: application/xml
Accept: application/xml
If-Match: 1286501097791

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Fri, 08 Oct 2010 01:24:58 GMT

JSON

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties/ceo_name
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=h72xMnyKQQSW9Lwcg2HMGDnNQnK1HZJpGJmLgZ2P1vHFpvT2bX2k!-609606431;Version=1
Content-Type: application/json
Accept: application/json
If-Match: 1286501099162

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Fri, 08 Oct 2010 01:24:59 GMT

71.2.6.5 すべてのプロパティの削除

DeleteAllP

XML

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=VyThMnyG0gyp97J3vKPrkfF4VvtrjTDHJ3SL894V0glWzqJ24L0B!-609606431;Version=1
Content-Type: application/xml
Accept: application/xml

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Fri, 08 Oct 2010 01:24:58 GMT

JSON

Request:
DELETE http://localhost:8891/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partnersinfo/propertysets/infosys/properties
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
Cookie: JSESSIONID=h72xMnyKQQSW9Lwcg2HMGDnNQnK1HZJpGJmLgZ2P1vHFpvT2bX2k!-609606431;Version=1
Content-Type: application/json
Accept: application/json

Response:
Status Code:204
Content-Length: 0
X-Oracle-RF-Token-Scheme: utoken
X-Oracle-RF-Token: FIxec1lmTFguxer9ZqZJpsXSnlZy_w**
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
X-Oracle-RF-Token-Location: header
Date: Fri, 08 Oct 2010 01:24:59 GMT

71.2.7 JSONペイロード

JSON形式のプロパティ値は、concreteTypeフィールドの名前を使用して値タイプを示します。次の表では、プロパティ定義タイプおよびJavaデータ型をconcreteTypeの値にマップします。

表71-1 concreteTypeの値

プロパティ定義型

Javaデータ型

concreteTypeの値

INT

java.lang.Integer

urn:oracle:wcps:property:internal:jaxrs:model:integer-value

NUMBER

java.lang.Double

urn:oracle:wcps:property:internal:jaxrs:model:double-value

STRING

java.lang.String

urn:oracle:wcps:property:internal:jaxrs:model:string-value

BOOLEAN

java.lang.Boolean

urn:oracle:wcps:property:internal:jaxrs:model:boolean-value

BLOB

oracle.wcps.property.BlobData

urn:oracle:wcps:property:blob-data

CLOB

oracle.wcps.property.ClobData

urn:oracle:wcps:property:clob-data

DATETIME

oracle.wcps.property.DateTime

urn:oracle:wcps:property:date-time

71.2.8 例外

- オプティミスティックな並行性がプロパティ・サーバーで無効になっている場合、If-Matchリクエスト・ヘッダーは不要です。有効になっている場合は、If-Matchヘッダーの値がレスポンス・ヘッダーETagに送信する値となります。

- リクエスト・ヘッダーX-Oracle-RF-Tokenを送信しなかった場合、403レスポンス・ステータスが戻されます。このトークンの値は、/resouceIndexリクエストへのレスポンスとして送信される値となります。

- 使用中のネームスペース、プロパティ定義またはプロパティ・セット定義を削除しようとすると、412レスポンス・ステータスが戻されます。

71.2.9 問合せパラメータ

表71-2に、サポートされる問合せパラメータとそのデフォルト値を示します。

表71-2 問合せパラメータ

問合せパラメータ名

説明

デフォルト値

その他の特殊な値

q

この値は検索式となります

なし

なし

startIndex

ページ内の最初の要素の索引を表します

0

なし

itemsPerPage

ページ内に含まれるアイテムの数を表します

10

なし

dataFields

データを戻すプロパティ・サービス・エンティティの属性のリストを表します

空のリスト = (属性は戻されません)

* = (すべての属性)

71.2.10 検索式

71.2.10.1 構文

q問合せパラメータの値は、検索式です。検索式の形式は、次のとおりです。

single_expression = attribute_name:operator_name:value
expression = single_expression[;single_expression]

71.2.10.2 サポートされる演算子

- 関係演算子

- :equals: ==> 等しい

- :contains: ==> 含む

- :like: ==> SQLのLike(文字列タイプのプロパティ値にのみ適用されます)

- :gt: ==> より大きい

- :gte: ==> 以上

- :lt: ==> より小さい

- :lte: ==> 以下

- 論理演算

- ; ==> および

71.2.10.3 サポートされる属性名

表71-3、表71-4、表71-5および表71-6に、プロパティ・サービス・エンティティを検索するための検索式で使用できる、サポートされる属性名を示します。

ネームスペースの属性

表71-3 ネームスペースの属性

属性名

説明

ns-name

ネームスペースの名前

ns-property-locator-class-name

ネームスペースのプロパティ・ロケータ・クラス名

ns-definition-locator-class-name

ネームスペースの定義ロケータ・クラス名

ns-created-on

ネームスペースの作成日時

ns-updated-on

ネームスペースの更新日時

例:

/wcps/api/property/namespaces?q=ns-name:like:Oracle_%25

/wcps/api/property/namespaces?q=ns-definition-locator-class-name:like:%25Locator%25;ns-name:like:Oracle_%25

プロパティ定義の属性

表71-4 プロパティ定義の属性

属性名

説明

pd-name

プロパティ定義の名前

pd-description

プロパティ定義の説明

pd-type

プロパティ定義のタイプ

pd-restricted

プロパティ定義の制限付き属性

pd-validator-class-name

プロパティ定義のバリデータ・クラス名

pd-created-on

プロパティ定義の作成日時

pd-updated-on

プロパティ定義の更新日時

例:

/wcps/api/property/namespaces/Oracle/propertydefinitions?q=pd-name:like:%25D%25;pd-description:contains:4th;pd-restricted:contains:true

プロパティ・セット定義の属性

表71-5 プロパティ・セット定義の属性

属性名

説明

psd-name

プロパティ・セット定義の名前

psd-description

プロパティ・セット定義の説明

psd-pd-name

プロパティ・セット定義によって参照されるプロパティ定義名

psd-property-locator-class-name

プロパティ・セット定義に関連付けられたプロパティ・ロケータ・クラス名

psd-created-on

プロパティ・セット定義の作成日時

psd-updated-on

プロパティ・セット定義の更新日時

例:

wcps/api/property/namespaces/Oracle/propertysetdefinitions?q=psd-created-on:gt:1980-01-01T00:00:00.000-0700;psd-name:like:%255%25

プロパティ・セットの属性

表71-6 プロパティ・セットの属性

属性名

説明

ps-name

プロパティ・セットの名前

ps-description

プロパティ・セットの説明

psd-created-on

プロパティ・セットの作成日時

psd-updated-on

プロパティ・セットの更新日時

プロパティの名前

プロパティの名前属性(firstName、zipCodeなど)

例:

/wcps/api/property/namespaces/Oracle/propertysetdefinitions/partners_info/propertysets?q=ps-created-on:gt:1980-01-01T00:00:00.000-0700

72 コンダクタAPIリファレンス

この章では、コンダクタ用のパブリックAPIについて説明します。コンダクタは、データ統合コンポーネントとWebCenter Portalのアクティビティを、調整するコンポーネントです。

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

- 第72.1項「Java APIの使用」

- 第72.2項「コンダクタREST APIの使用」

- 第72.3項「ELを使用したデータ統合クライアント・サービスのコール」

72.1 Java APIの使用

表72-1に示すサービス・インタフェースは、リモート・コンダクタAPIについて説明するものです。

表72-1 リモート・コンダクタAPI

インタフェース/サービス

説明

oracle.wcps.conductor.services.IScenariosService

格納されているシナリオの全般的な管理、取得および実行

oracle.wcps.conductor.services.INamespaceService

コンダクタによって認識されている、格納されているネームスペースの全般的な管理

oracle.wcps.conductor.services.IProviderService

コンダクタ・サーバーによって認識されているプロバイダ・メタデータの取得

72.2 コンダクタREST APIの使用

この項では、コンダクタのREST APIを使用して、次のような基本的なデータ統合タスクをプログラムから実行する方法の例を示します。

- データ・プロバイダに関する情報の取得

- ファンクション・プロバイダに関する情報の取得

- ネームスペースの作成、取得または削除

- シナリオの作成、取得、実行または削除

コンダクタREST APIは、アプリケーション・コード内から使用するか、WebCenter Portal FrameworkアプリケーションやWebCenter Portal内からデータ統合ELを使用してコールできます。

この項には次のサブセクションが含まれます:

- 第72.2.1項「データ・プロバイダ管理REST APIの使用」

- 第72.2.2項「ファンクション・プロバイダ管理APIの使用」

- 第72.2.3項「ネームスペース管理APIの使用」

- 第72.2.4項「シナリオ管理APIの使用」

72.2.1 データ・プロバイダ管理REST APIの使用

この項では、コンダクタのデータ・プロバイダ管理APIの使用例を示します。内容は次のとおりです。

- 第72.2.1.1項「データ・プロバイダのコレクションの取得(GET)」

- 第72.2.1.2項「単一のデータ・プロバイダのメタデータの取得(GET)」

- 第72.2.1.3項「データ・プロバイダの接続に関する情報の取得(GET)」

- 第72.2.1.4項「データ・プロバイダと接続で実行可能なリソースに関する情報の取得(GET)」

- 第72.2.1.5項「データ・プロバイダと接続で実行可能なリソースのメソッド情報の取得(GET)」

- 第72.2.1.6項「データ・プロバイダの全情報と詳細予測の取得(GET)」

72.2.1.1 データ・プロバイダのコレクションの取得(GET)

XML

Sample Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection=summary
accept-language: en
content-type: application/xml
accept: application/xml

Sample Response:
Status Code:200
Content-Length: 4469
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=YxYmM25GLpCy7BSND7vF6BnsQCn20RQsCrS92n1SLXmxpccVkfpX!822326988; path=/wcps; HttpOnly
Content-Type: application/xml
Date: Wed, 13 Oct 2010 22:58:46 GMT

<?xml version="1.0" encoding="UTF-8"?>
<dataProviders resourceType="urn:oracle:wcps:conductor:provider:dataProviders">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection=summary&amp;startIndex=0&amp;itemsPerPage=10"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:dataProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}"/>
</links>
<items>
<dataProvider resourceType="urn:oracle:wcps:conductor:provider:dataProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:dataProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/CMISProvider"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:dataProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/CMISProvider?projection={projection}"/>
</links>
<name>CMISProvider</name>
<localizedName>Universal Content Provider (CMIS)</localizedName>
<localizedDescription>Provides access to content over CMIS connections.</localizedDescription>
</dataProvider>
<dataProvider resourceType="urn:oracle:wcps:conductor:provider:dataProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:dataProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/SampleProvider"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:dataProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/SampleProvider?projection={projection}"/>
</links>
<name>SampleProvider</name>
<localizedName>Sample Data Provider</localizedName>
<localizedDescription>Example of a data provider</localizedDescription>
</dataProvider>
<dataProvider resourceType="urn:oracle:wcps:conductor:provider:dataProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:dataProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/ActivityGraphProvider"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:dataProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/ActivityGraphProvider?projection={projection}"/>
</links>
<name>ActivityGraphProvider</name>
<localizedName>Activity Graph</localizedName>
<localizedDescription>Activity Graph Adapter</localizedDescription>
</dataProvider>
<dataProvider resourceType="urn:oracle:wcps:conductor:provider:dataProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:dataProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:dataProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider?projection={projection}"/>
</links>
<name>oracle.PropertiesServiceProvider</name>
<localizedName>Property Service Data Provider</localizedName>
<localizedDescription>Data provider implementation to integrate the properties service for use in scenarios. </localizedDescription>
</dataProvider>
</items>
</dataProviders>

JSON

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection=summary
accept-language: en
content-type: application/json
accept: application/json

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=ylp2M27pSyLJPv2X4cn9RYy7NRyftzz2vs7VCyJ1NQKJl4XQnjXd!822326988; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Date: Wed, 13 Oct 2010 23:07:10 GMT

{
"dataProviders" : [ {
"name" : "CMISProvider",
"localizedName" : "Universal Content Provider (CMIS)",
"localizedDescription" : "Provides access to content over CMIS connections.",
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/CMISProvider?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/CMISProvider",
"rel" : "self"
} ]
}, {
"name" : "SampleProvider",
"localizedName" : "Sample Data Provider",
"localizedDescription" : "Example of a data provider",
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/SampleProvider?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/SampleProvider",
"rel" : "self"
} ]
}, {
"name" : "ActivityGraphProvider",
"localizedName" : "Activity Graph",
"localizedDescription" : "Activity Graph Adapter",
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/ActivityGraphProvider?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/ActivityGraphProvider",
"rel" : "self"
} ]
}, {
"name" : "oracle.PropertiesServiceProvider",
"localizedName" : "Property Service Data Provider",
"localizedDescription" : "Data provider implementation to integrate the properties service for use in scenarios. ",
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider",
"rel" : "self"
} ]
} ],
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProviders",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection=summary&startIndex=0&itemsPerPage=10",
"rel" : "self"
} ]
}

72.2.1.2 単一のデータ・プロバイダのメタデータの取得(GET)

XML

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider?projection=summary
accept-language: en
content-type: application/xml
accept: application/xml

Response:
Status Code:200
Content-Length: 5792
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=L3b2M25L67PvznfyQNqHcyPh2J11rP51MMYlL1h80GvWsPxlHPvY!822326988; path=/wcps; HttpOnly
Content-Type: application/xml
Date: Wed, 13 Oct 2010 22:58:48 GMT

<?xml version="1.0" encoding="UTF-8"?>
<dataProvider resourceType="urn:oracle:wcps:conductor:provider:dataProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:dataProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider?projection=summary"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:dataProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
rel="urn:oracle:wcps:conductor:provider:providerConnections"
resourceType="urn:oracle:wcps:conductor:provider:providerConnections" template="http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
rel="urn:oracle:wcps:conductor:provider:providerConnection"
resourceType="urn:oracle:wcps:conductor:provider:providerConnection" template="http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
rel="urn:oracle:wcps:conductor:provider:connectionResources"
resourceType="urn:oracle:wcps:conductor:provider:connectionResources" template="http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}/resources?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
rel="urn:oracle:wcps:conductor:provider:connectionResource"
resourceType="urn:oracle:wcps:conductor:provider:connectionResource" template="http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}/resources/{resource-name}?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
rel="urn:oracle:wcps:conductor:provider:resourceMethods"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}/resources/{resource-name}/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
rel="urn:oracle:wcps:conductor:provider:resourceMethod"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}/resources/{resource-name}/methods/{method-name}?projection={projection}"/>
</links>
<name>oracle.PropertiesServiceProvider</name>
<localizedName>Property Service Data Provider</localizedName>
<localizedDescription>Data provider implementation to integrate the properties service for use in scenarios. </localizedDescription>
<providerConnections resourceType="urn:oracle:wcps:conductor:provider:providerConnections">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:dataProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:providerConnections" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections?projection={projection}"/>
</links>
<items>
<providerConnection resourceType="urn:oracle:wcps:conductor:provider:providerConnection">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:providerConnections" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/metadata"
rel="urn:oracle:wcps:conductor:provider:connectionMetadata"
resourceType="urn:oracle:wcps:conductor:provider:connectionMetadata" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/metadata?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:providerConnection" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection?projection={projection}"/>
</links>
<name>LocalServerConnection</name>
</providerConnection>
</items>
</providerConnections>
</dataProvider>

JSON

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider?projection=details
accept-language: en
content-type: application/json
accept: application/json

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=R1P2M27Qd09Wh86s5rGdDFfBcbKtftPKvpdMsN2gcpLRN7XPyDnQ!822326988; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Date: Wed, 13 Oct 2010 23:07:12 GMT

{
"name" : "oracle.PropertiesServiceProvider",
"localizedName" : "Property Service Data Provider",
"localizedDescription" : "Data provider implementation to integrate the properties service for use in scenarios. ",
"providerConnections" : [ {
"name" : "LocalServerConnection",
"connectionResources" : [ {
"name" : "GetPropertiesResource",
"resourceMethods" : {
"resourceMethods" : [ {
"name" : "GetProperty",
"uniqueName" : "GetProperty(namespace,definition,set,property)",
"returnType" : "java.io.Serializable",
"parameters" : [ {
"type" : "java.lang.String",
"name" : "namespace",
"localizedDescription" : "The namespace in which the property set definition and property set exists."
}, {
"type" : "java.lang.String",
"name" : "definition",
"localizedDescription" : "The property set definition name."
}, {
"type" : "java.lang.String",
"name" : "set",
"localizedDescription" : "The property set name."
}, {
"type" : "java.lang.String",
"name" : "property",
"localizedDescription" : "The property name."
} ],
"localizedDescription" : "Retrieves a property set for the current (or specified) namespace, property set definition name, and property set name, and property name.  If no namespace, property set definition, property set and property exists\tnull will be returned.",
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(namespace,definition,set,property)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(namespace,definition,set,property)",
"rel" : "self"
} ]
}, {
"name" : "GetProperty",
"uniqueName" : "GetProperty(definition,set,property)",
"returnType" : "java.io.Serializable",
"parameters" : [ {
"type" : "java.lang.String",
"name" : "definition",
"localizedDescription" : "The property set definition name."
}, {
"type" : "java.lang.String",
"name" : "set",
"localizedDescription" : "The property set name."
}, {
"type" : "java.lang.String",
"name" : "property",
"localizedDescription" : "The property name."
} ],
"localizedDescription" : "Retrieves a property set for the current (or specified) namespace, property set definition name, and property set name, and property name.  If no namespace, property set definition, property set and property exists\tnull will be returned.",
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(definition,set,property)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(definition,set,property)",
"rel" : "self"
} ]
}, {
"name" : "execute",
"uniqueName" : "execute()",
"returnType" : "java.lang.Object",
"parameters" : [ ],
"localizedDescription" : "This is the default method executed if no method is specified, which currently returns nothing.",
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/execute()?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/execute()",
"rel" : "self"
} ]
}, {
"name" : "GetPropertySet",
"uniqueName" : "GetPropertySet(definition,set)",
"returnType" : "java.util.Map",
"parameters" : [ {
"type" : "java.lang.String",
"name" : "definition",
"localizedDescription" : "The property set definition name."
}, {
"type" : "java.lang.String",
"name" : "set",
"localizedDescription" : "The property set name."
} ],
"localizedDescription" : "Retrieves a property set for the current (or specified) namespace, property set definition name, and property set name. If no namespace, property set definition, or property set exists, null will be returned.",
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(definition,set)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(definition,set)",
"rel" : "self"
} ]
}, {
"name" : "GetPropertySet",
"uniqueName" : "GetPropertySet(namespace,definition,set)",
"returnType" : "java.util.Map",
"parameters" : [ {
"type" : "java.lang.String",
"name" : "namespace",
"localizedDescription" : "The namespace in which the property set definition and property set exists."
}, {
"type" : "java.lang.String",
"name" : "definition",
"localizedDescription" : "The property set definition name."
}, {
"type" : "java.lang.String",
"name" : "set",
"localizedDescription" : "The property set name."
} ],
"localizedDescription" : "Retrieves a property set for the current (or specified) namespace, property set definition name, and property set name. If no namespace, property set definition, or property set exists, null will be returned.",
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)",
"rel" : "self"
} ]
}, {
"name" : "GetPropertySets",
"uniqueName" : "GetPropertySets(definition)",
"returnType" : "java.util.Map",
"parameters" : [ {
"type" : "java.lang.String",
"name" : "definition",
"localizedDescription" : "The property set definition name."
} ],
"localizedDescription" : "Retrieves a Map of property sets for the current (or specified) namespace and property set definition name that is keyed by property set name. The size and start index of this list will be within the boundaries of the specified start index and page size specified in the request.",
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(definition)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(definition)",
"rel" : "self"
} ]
}, {
"name" : "GetPropertySets",
"uniqueName" : "GetPropertySets(namespace,definition)",
"returnType" : "java.util.Map",
"parameters" : [ {
"type" : "java.lang.String",
"name" : "namespace",
"localizedDescription" : "The namespace in which the property set definition and property set exists."
}, {
"type" : "java.lang.String",
"name" : "definition",
"localizedDescription" : "The property set definition name."
} ],
"localizedDescription" : "Retrieves a Map of property sets for the current (or specified) namespace and property set definition name that is keyed by property set name. The size and start index of this list will be within the boundaries of the specified start index and page size specified in the request.",
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(namespace,definition)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(namespace,definition)",
"rel" : "self"
} ]
} ],
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResource",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "self"
} ]
},
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResource",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResources",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResource",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource",
"rel" : "self"
} ]
} ],
"resourceType" : "urn:oracle:wcps:conductor:provider:providerConnection",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:providerConnections",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionMetadata",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/metadata?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/metadata",
"rel" : "urn:oracle:wcps:conductor:provider:connectionMetadata"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:providerConnection",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection",
"rel" : "self"
} ]
} ],
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider?projection=details",
"rel" : "self"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:providerConnections",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"rel" : "urn:oracle:wcps:conductor:provider:providerConnections"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:providerConnection",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"rel" : "urn:oracle:wcps:conductor:provider:providerConnection"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResources",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}/resources?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"rel" : "urn:oracle:wcps:conductor:provider:connectionResources"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResource",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}/resources/{resource-name}?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"rel" : "urn:oracle:wcps:conductor:provider:connectionResource"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}/resources/{resource-name}/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"rel" : "urn:oracle:wcps:conductor:provider:resourceMethods"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}/resources/{resource-name}/methods/{method-name}?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"rel" : "urn:oracle:wcps:conductor:provider:resourceMethod"
} ]
}

72.2.1.3 データ・プロバイダの接続に関する情報の取得(GET)

XML

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection?projection=summary
accept-language: en
content-type: application/xml
accept: application/xml

Response:
Status Code:200
Content-Length: 3896
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=QGswM25H1GLC61Qvbt08HLfJhfJdN50TSV8lRzWhpvbJG0vFJtSN!822326988; path=/wcps; HttpOnly
Content-Type: application/xml
Date: Wed, 13 Oct 2010 22:58:47 GMT

<?xml version="1.0" encoding="UTF-8"?>
<connection resourceType="urn:oracle:wcps:conductor:provider:providerConnection">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:providerConnections" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/metadata"
rel="urn:oracle:wcps:conductor:provider:connectionMetadata"
resourceType="urn:oracle:wcps:conductor:provider:connectionMetadata" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/metadata?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection?projection=summary"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:providerConnection" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection?projection={projection}"/>
</links>
<name>LocalServerConnection</name>
<connectionResources resourceType="urn:oracle:wcps:conductor:provider:connectionResources">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:providerConnection" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:connectionResources" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources?projection={projection}"/>
</links>
<items>
<connectionResource resourceType="urn:oracle:wcps:conductor:provider:connectionResource">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:connectionResources" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:connectionResource" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection={projection}"/>
</links>
<name>GetPropertiesResource</name>
</connectionResource>
</items>
</connectionResources>
</connection>

JSON

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection?projection=summary
accept-language: en
content-type: application/json
accept: application/json

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=tLqRM27fHTGT9nxHfW1TyHJv3522rhw84Z5RRcymb1dy3pLMFgp6!822326988; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Date: Wed, 13 Oct 2010 23:07:11 GMT

{
"name" : "LocalServerConnection",
"connectionResources" : [ {
"name" : "GetPropertiesResource",
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResource",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResources",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResource",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource",
"rel" : "self"
} ]
} ],
"resourceType" : "urn:oracle:wcps:conductor:provider:providerConnection",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:providerConnections",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionMetadata",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/metadata?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/metadata",
"rel" : "urn:oracle:wcps:conductor:provider:connectionMetadata"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:providerConnection",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection?projection=summary",
"rel" : "self"
} ]
}

72.2.1.4 データ・プロバイダと接続で実行可能なリソースに関する情報の取得(GET)

XML

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection=summary
accept-language: en
content-type: application/xml
accept: application/xml

Response:
Status Code:200
Content-Length: 11964
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=6NMkM25Ljb1yWPTMTSyMYksJjhtVKR90BhTv5MvGVjDHCVGyHGQG!822326988; path=/wcps; HttpOnly
Content-Type: application/xml
Date: Wed, 13 Oct 2010 22:58:48 GMT

<?xml version="1.0" encoding="UTF-8"?>
<connectionResource resourceType="urn:oracle:wcps:conductor:provider:connectionResource">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:connectionResources" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection=summary"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:connectionResource" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection={projection}"/>
</links>
<name>GetPropertiesResource</name>
<resourceMethods resourceType="urn:oracle:wcps:conductor:provider:resourceMethods">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:connectionResource" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
</links>
<items>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(namespace,definition,set,property)"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(namespace,definition,set,property)?projection={projection}"/>
</links>
<name>GetProperty</name>
<uniqueName>GetProperty(namespace,definition,set,property)</uniqueName>
<parameters/>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(definition,set,property)"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(definition,set,property)?projection={projection}"/>
</links>
<name>GetProperty</name>
<uniqueName>GetProperty(definition,set,property)</uniqueName>
<parameters/>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/execute()"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/execute()?projection={projection}"/>
</links>
<name>execute</name>
<uniqueName>execute()</uniqueName>
<parameters/>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(definition,set)"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(definition,set)?projection={projection}"/>
</links>
<name>GetPropertySet</name>
<uniqueName>GetPropertySet(definition,set)</uniqueName>
<parameters/>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)?projection={projection}"/>
</links>
<name>GetPropertySet</name>
<uniqueName>GetPropertySet(namespace,definition,set)</uniqueName>
<parameters/>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(definition)"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(definition)?projection={projection}"/>
</links>
<name>GetPropertySets</name>
<uniqueName>GetPropertySets(definition)</uniqueName>
<parameters/>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(namespace,definition)"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(namespace,definition)?projection={projection}"/>
</links>
<name>GetPropertySets</name>
<uniqueName>GetPropertySets(namespace,definition)</uniqueName>
<parameters/>
</resourceMethod>
</items>
</resourceMethods>
</connectionResource>

JSON

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection=summary
accept-language: en
content-type: application/json
accept: application/json

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=lP2dM27QwpNKslGK8xd818TLMmBhpdBzcLnZyncLXWLv6BrNjkq8!822326988; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Date: Wed, 13 Oct 2010 23:07:12 GMT

{
"name" : "GetPropertiesResource",
"resourceMethods" : {
"resourceMethods" : [ {
"name" : "GetProperty",
"uniqueName" : "GetProperty(namespace,definition,set,property)",
"parameters" : [ ],
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(namespace,definition,set,property)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(namespace,definition,set,property)",
"rel" : "self"
} ]
}, {
"name" : "GetProperty",
"uniqueName" : "GetProperty(definition,set,property)",
"parameters" : [ ],
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(definition,set,property)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(definition,set,property)",
"rel" : "self"
} ]
}, {
"name" : "execute",
"uniqueName" : "execute()",
"parameters" : [ ],
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/execute()?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/execute()",
"rel" : "self"
} ]
}, {
"name" : "GetPropertySet",
"uniqueName" : "GetPropertySet(definition,set)",
"parameters" : [ ],
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(definition,set)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(definition,set)",
"rel" : "self"
} ]
}, {
"name" : "GetPropertySet",
"uniqueName" : "GetPropertySet(namespace,definition,set)",
"parameters" : [ ],
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)",
"rel" : "self"
} ]
}, {
"name" : "GetPropertySets",
"uniqueName" : "GetPropertySets(definition)",
"parameters" : [ ],
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(definition)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(definition)",
"rel" : "self"
} ]
}, {
"name" : "GetPropertySets",
"uniqueName" : "GetPropertySets(namespace,definition)",
"parameters" : [ ],
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(namespace,definition)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(namespace,definition)",
"rel" : "self"
} ]
} ],
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResource",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "self"
} ]
},
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResource",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResources",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResource",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection=summary",
"rel" : "self"
} ]
}

72.2.1.5 データ・プロバイダと接続で実行可能なリソースのメソッド情報の取得(GET)

XML

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)?projection=details
accept-language: en
content-type: application/xml
accept: application/xml

Response:
Status Code:200
Content-Length: 2243
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=rnBkM27d8dHMpZT4WdT0CLGythB2hRhQ2yjTmg6rh7BDfB1JTQjL!822326988; path=/wcps; HttpOnly
Content-Type: application/xml
Date: Wed, 13 Oct 2010 23:07:09 GMT

<?xml version="1.0" encoding="UTF-8"?>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)?projection=details"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)?projection={projection}"/>
</links>
<name>GetPropertySet</name>
<uniqueName>GetPropertySet(namespace,definition,set)</uniqueName>
<localizedDescription>Retrieves a property set for the current (or specified) namespace, property set definition name, and property set name. If no namespace, property set definition, or property set exists, null will be returned.</localizedDescription>
<parameters>
<parameter>
<localizedDescription>The namespace in which the property set definition and property set exists.</localizedDescription>
<name>namespace</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<localizedDescription>The property set definition name.</localizedDescription>
<name>definition</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<localizedDescription>The property set name.</localizedDescription>
<name>set</name>
<type>java.lang.String</type>
</parameter>
</parameters>
<returnType>java.util.Map</returnType>
</resourceMethod>

JSON

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)?projection=details
accept-language: en
content-type: application/json
accept: application/json

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=MD62M27BQLv9jxFR8K1SSXXyL70DwLGd7gpHvMh21xGM9gfppLR2!822326988; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Date: Wed, 13 Oct 2010 23:07:13 GMT

{
"name" : "GetPropertySet",
"uniqueName" : "GetPropertySet(namespace,definition,set)",
"returnType" : "java.util.Map",
"parameters" : [ {
"type" : "java.lang.String",
"name" : "namespace",
"localizedDescription" : "The namespace in which the property set definition and property set exists."
}, {
"type" : "java.lang.String",
"name" : "definition",
"localizedDescription" : "The property set definition name."
}, {
"type" : "java.lang.String",
"name" : "set",
"localizedDescription" : "The property set name."
} ],
"localizedDescription" : "Retrieves a property set for the current (or specified) namespace, property set definition name, and property set name. If no namespace, property set definition, or property set exists, null will be returned.",
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)?projection=details",
"rel" : "self"
} ]
}

72.2.1.6 データ・プロバイダの全情報と詳細予測の取得(GET)

XML

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider?projection=details
accept-language: en
content-type: application/xml
accept: application/xml

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=T5nQM27dHT1yGdzP7yMy25l0QGKDt95kXymntN83tfhT72n1gkcQ!822326988; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/xml
Date: Wed, 13 Oct 2010 23:07:09 GMT

<?xml version="1.0" encoding="UTF-8"?>
<dataProvider resourceType="urn:oracle:wcps:conductor:provider:dataProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:dataProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider?projection=details"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:dataProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
rel="urn:oracle:wcps:conductor:provider:providerConnections"
resourceType="urn:oracle:wcps:conductor:provider:providerConnections" template="http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
rel="urn:oracle:wcps:conductor:provider:providerConnection"
resourceType="urn:oracle:wcps:conductor:provider:providerConnection" template="http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
rel="urn:oracle:wcps:conductor:provider:connectionResources"
resourceType="urn:oracle:wcps:conductor:provider:connectionResources" template="http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}/resources?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
rel="urn:oracle:wcps:conductor:provider:connectionResource"
resourceType="urn:oracle:wcps:conductor:provider:connectionResource" template="http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}/resources/{resource-name}?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
rel="urn:oracle:wcps:conductor:provider:resourceMethods"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}/resources/{resource-name}/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
rel="urn:oracle:wcps:conductor:provider:resourceMethod"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}/resources/{resource-name}/methods/{method-name}?projection={projection}"/>
</links>
<name>oracle.PropertiesServiceProvider</name>
<localizedName>Property Service Data Provider</localizedName>
<localizedDescription>Data provider implementation to integrate the properties service for use in scenarios. </localizedDescription>
<providerConnections resourceType="urn:oracle:wcps:conductor:provider:providerConnections">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:dataProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:providerConnections" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections?projection={projection}"/>
</links>
<items>
<providerConnection resourceType="urn:oracle:wcps:conductor:provider:providerConnection">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:providerConnections" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/metadata"
rel="urn:oracle:wcps:conductor:provider:connectionMetadata"
resourceType="urn:oracle:wcps:conductor:provider:connectionMetadata" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/metadata?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:providerConnection" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection?projection={projection}"/>
</links>
<name>LocalServerConnection</name>
<connectionResources resourceType="urn:oracle:wcps:conductor:provider:connectionResources">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:providerConnection" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:connectionResources" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources?projection={projection}"/>
</links>
<items>
<connectionResource resourceType="urn:oracle:wcps:conductor:provider:connectionResource">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:connectionResources" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:connectionResource" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection={projection}"/>
</links>
<name>GetPropertiesResource</name>
<resourceMethods resourceType="urn:oracle:wcps:conductor:provider:resourceMethods">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:connectionResource" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
</links>
<items>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(namespace,definition,set,property)"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(namespace,definition,set,property)?projection={projection}"/>
</links>
<name>GetProperty</name>
<uniqueName>GetProperty(namespace,definition,set,property)</uniqueName>
<localizedDescription>Retrieves a property set for the current (or specified) namespace, property set definition name, and property set name, and property name.  If no namespace, property set definition, property set and property exists     null will be returned.</localizedDescription>
<parameters>
<parameter>
<localizedDescription>The namespace in which the property set definition and property set exists.</localizedDescription>
<name>namespace</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<localizedDescription>The property set definition name.</localizedDescription>
<name>definition</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<localizedDescription>The property set name.</localizedDescription>
<name>set</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<localizedDescription>The property name.</localizedDescription>
<name>property</name>
<type>java.lang.String</type>
</parameter>
</parameters>
<returnType>java.io.Serializable</returnType>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(definition,set,property)"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(definition,set,property)?projection={projection}"/>
</links>
<name>GetProperty</name>
<uniqueName>GetProperty(definition,set,property)</uniqueName>
<localizedDescription>Retrieves a property set for the current (or specified) namespace, property set definition name, and property set name, and property name.  If no namespace, property set definition, property set and property exists     null will be returned.</localizedDescription>
<parameters>
<parameter>
<localizedDescription>The property set definition name.</localizedDescription>
<name>definition</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<localizedDescription>The property set name.</localizedDescription>
<name>set</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<localizedDescription>The property name.</localizedDescription>
<name>property</name>
<type>java.lang.String</type>
</parameter>
</parameters>
<returnType>java.io.Serializable</returnType>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/execute()"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/execute()?projection={projection}"/>
</links>
<name>execute</name>
<uniqueName>execute()</uniqueName>
<localizedDescription>This is the default method executed if no method is specified, which currently returns nothing.</localizedDescription>
<parameters/>
<returnType>java.lang.Object</returnType>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(definition,set)"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(definition,set)?projection={projection}"/>
</links>
<name>GetPropertySet</name>
<uniqueName>GetPropertySet(definition,set)</uniqueName>
<localizedDescription>Retrieves a property set for the current (or specified) namespace, property set definition name, and property set name. If no namespace, property set definition, or property set exists, null will be returned.</localizedDescription>
<parameters>
<parameter>
<localizedDescription>The property set definition name.</localizedDescription>
<name>definition</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<localizedDescription>The property set name.</localizedDescription>
<name>set</name>
<type>java.lang.String</type>
</parameter>
</parameters>
<returnType>java.util.Map</returnType>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)?projection={projection}"/>
</links>
<name>GetPropertySet</name>
<uniqueName>GetPropertySet(namespace,definition,set)</uniqueName>
<localizedDescription>Retrieves a property set for the current (or specified) namespace, property set definition name, and property set name. If no namespace, property set definition, or property set exists, null will be returned.</localizedDescription>
<parameters>
<parameter>
<localizedDescription>The namespace in which the property set definition and property set exists.</localizedDescription>
<name>namespace</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<localizedDescription>The property set definition name.</localizedDescription>
<name>definition</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<localizedDescription>The property set name.</localizedDescription>
<name>set</name>
<type>java.lang.String</type>
</parameter>
</parameters>
<returnType>java.util.Map</returnType>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(definition)"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(definition)?projection={projection}"/>
</links>
<name>GetPropertySets</name>
<uniqueName>GetPropertySets(definition)</uniqueName>
<localizedDescription>Retrieves a Map of property sets for the current (or specified) namespace and property set definition name that is keyed by property set name. The size and start index of this list will be within the boundaries of the specified start index and page size specified in the request.</localizedDescription>
<parameters>
<parameter>
<localizedDescription>The property set definition name.</localizedDescription>
<name>definition</name>
<type>java.lang.String</type>
</parameter>
</parameters>
<returnType>java.util.Map</returnType>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(namespace,definition)"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(namespace,definition)?projection={projection}"/>
</links>
<name>GetPropertySets</name>
<uniqueName>GetPropertySets(namespace,definition)</uniqueName>
<localizedDescription>Retrieves a Map of property sets for the current (or specified) namespace and property set definition name that is keyed by property set name. The size and start index of this list will be within the boundaries of the specified start index and page size specified in the request.</localizedDescription>
<parameters>
<parameter>
<localizedDescription>The namespace in which the property set definition and property set exists.</localizedDescription>
<name>namespace</name>
<type>java.lang.String</type>
</parameter>
<parameter>
<localizedDescription>The property set definition name.</localizedDescription>
<name>definition</name>
<type>java.lang.String</type>
</parameter>
</parameters>
<returnType>java.util.Map</returnType>
</resourceMethod>
</items>
</resourceMethods>
</connectionResource>
</items>
</connectionResources>
</providerConnection>
</items>
</providerConnections>
</dataProvider>

JSON

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider?projection=details
accept-language: en
content-type: application/json
accept: application/json

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=GvbXM27BZxQhPJQqnv9Qmsn1j2G1Lvzhc67hpLp4gnjhjsypnTTm!822326988; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Date: Wed, 13 Oct 2010 23:07:13 GMT

{
"name" : "oracle.PropertiesServiceProvider",
"localizedName" : "Property Service Data Provider",
"localizedDescription" : "Data provider implementation to integrate the properties service for use in scenarios. ",
"providerConnections" : [ {
"name" : "LocalServerConnection",
"connectionResources" : [ {
"name" : "GetPropertiesResource",
"resourceMethods" : {
"resourceMethods" : [ {
"name" : "GetProperty",
"uniqueName" : "GetProperty(namespace,definition,set,property)",
"returnType" : "java.io.Serializable",
"parameters" : [ {
"type" : "java.lang.String",
"name" : "namespace",
"localizedDescription" : "The namespace in which the property set definition and property set exists."
}, {
"type" : "java.lang.String",
"name" : "definition",
"localizedDescription" : "The property set definition name."
}, {
"type" : "java.lang.String",
"name" : "set",
"localizedDescription" : "The property set name."
}, {
"type" : "java.lang.String",
"name" : "property",
"localizedDescription" : "The property name."
} ],
"localizedDescription" : "Retrieves a property set for the current (or specified) namespace, property set definition name, and property set name, and property name.  If no namespace, property set definition, property set and property exists\tnull will be returned.",
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(namespace,definition,set,property)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(namespace,definition,set,property)",
"rel" : "self"
} ]
}, {
"name" : "GetProperty",
"uniqueName" : "GetProperty(definition,set,property)",
"returnType" : "java.io.Serializable",
"parameters" : [ {
"type" : "java.lang.String",
"name" : "definition",
"localizedDescription" : "The property set definition name."
}, {
"type" : "java.lang.String",
"name" : "set",
"localizedDescription" : "The property set name."
}, {
"type" : "java.lang.String",
"name" : "property",
"localizedDescription" : "The property name."
} ],
"localizedDescription" : "Retrieves a property set for the current (or specified) namespace, property set definition name, and property set name, and property name.  If no namespace, property set definition, property set and property exists\tnull will be returned.",
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(definition,set,property)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(definition,set,property)",
"rel" : "self"
} ]
}, {
"name" : "execute",
"uniqueName" : "execute()",
"returnType" : "java.lang.Object",
"parameters" : [ ],
"localizedDescription" : "This is the default method executed if no method is specified, which currently returns nothing.",
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/execute()?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/execute()",
"rel" : "self"
} ]
}, {
"name" : "GetPropertySet",
"uniqueName" : "GetPropertySet(definition,set)",
"returnType" : "java.util.Map",
"parameters" : [ {
"type" : "java.lang.String",
"name" : "definition",
"localizedDescription" : "The property set definition name."
}, {
"type" : "java.lang.String",
"name" : "set",
"localizedDescription" : "The property set name."
} ],
"localizedDescription" : "Retrieves a property set for the current (or specified) namespace, property set definition name, and property set name. If no namespace, property set definition, or property set exists, null will be returned.",
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(definition,set)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(definition,set)",
"rel" : "self"
} ]
}, {
"name" : "GetPropertySet",
"uniqueName" : "GetPropertySet(namespace,definition,set)",
"returnType" : "java.util.Map",
"parameters" : [ {
"type" : "java.lang.String",
"name" : "namespace",
"localizedDescription" : "The namespace in which the property set definition and property set exists."
}, {
"type" : "java.lang.String",
"name" : "definition",
"localizedDescription" : "The property set definition name."
}, {
"type" : "java.lang.String",
"name" : "set",
"localizedDescription" : "The property set name."
} ],
"localizedDescription" : "Retrieves a property set for the current (or specified) namespace, property set definition name, and property set name. If no namespace, property set definition, or property set exists, null will be returned.",
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)",
"rel" : "self"
} ]
}, {
"name" : "GetPropertySets",
"uniqueName" : "GetPropertySets(definition)",
"returnType" : "java.util.Map",
"parameters" : [ {
"type" : "java.lang.String",
"name" : "definition",
"localizedDescription" : "The property set definition name."
} ],
"localizedDescription" : "Retrieves a Map of property sets for the current (or specified) namespace and property set definition name that is keyed by property set name. The size and start index of this list will be within the boundaries of the specified start index and page size specified in the request.",
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(definition)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(definition)",
"rel" : "self"
} ]
}, {
"name" : "GetPropertySets",
"uniqueName" : "GetPropertySets(namespace,definition)",
"returnType" : "java.util.Map",
"parameters" : [ {
"type" : "java.lang.String",
"name" : "namespace",
"localizedDescription" : "The namespace in which the property set definition and property set exists."
}, {
"type" : "java.lang.String",
"name" : "definition",
"localizedDescription" : "The property set definition name."
} ],
"localizedDescription" : "Retrieves a Map of property sets for the current (or specified) namespace and property set definition name that is keyed by property set name. The size and start index of this list will be within the boundaries of the specified start index and page size specified in the request.",
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(namespace,definition)?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(namespace,definition)",
"rel" : "self"
} ]
} ],
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResource",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods",
"rel" : "self"
} ]
},
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResource",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResources",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResource",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource",
"rel" : "self"
} ]
} ],
"resourceType" : "urn:oracle:wcps:conductor:provider:providerConnection",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:providerConnections",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionMetadata",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/metadata?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/metadata",
"rel" : "urn:oracle:wcps:conductor:provider:connectionMetadata"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:providerConnection",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection",
"rel" : "self"
} ]
} ],
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders/oracle.PropertiesServiceProvider?projection=details",
"rel" : "self"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:providerConnections",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"rel" : "urn:oracle:wcps:conductor:provider:providerConnections"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:providerConnection",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"rel" : "urn:oracle:wcps:conductor:provider:providerConnection"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResources",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}/resources?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"rel" : "urn:oracle:wcps:conductor:provider:connectionResources"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:connectionResource",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}/resources/{resource-name}?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"rel" : "urn:oracle:wcps:conductor:provider:connectionResource"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethods",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}/resources/{resource-name}/methods?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"rel" : "urn:oracle:wcps:conductor:provider:resourceMethods"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:resourceMethod",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/{namespace}/dataProviders/{provider-name}/connections/{connection-name}/resources/{resource-name}/methods/{method-name}?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"rel" : "urn:oracle:wcps:conductor:provider:resourceMethod"
} ]
}

72.2.2 ファンクション・プロバイダ管理APIの使用

この項では、コンダクタのファンクション・プロバイダAPIの使用例を示します。内容は次のとおりです。

- 第72.2.2.1項「ファンクション・プロバイダのコレクションの取得(GET)」

- 第72.2.2.2項「単一のファンクション・プロバイダのメタデータの取得(GET)」

72.2.2.1 ファンクション・プロバイダのコレクションの取得(GET)

XML

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection=summary
accept-language: en
content-type: application/xml
accept: application/xml

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=1NxqM2GHfPhT6VydXnQctrgCJ7FmxMLD3pPrRCgPrCLGRJGk9Rk5!2098846330; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/xml
Date: Wed, 13 Oct 2010 23:51:35 GMT

<?xml version="1.0" encoding="UTF-8"?>
<functionProviders resourceType="urn:oracle:wcps:conductor:provider:functionProviders">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection=summary"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
</links>
<items>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:filterRecsByScore"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:filterRecsByScore?projection={projection}"/>
</links>
<category>agfunction</category>
<example>${agfunction:filterRecsByScore(recommendations,cutoffScore)}</example>
<localizedDescription>Filter out Recommendations whose score is &gt;= the input score</localizedDescription>
<name>filterRecsByScore</name>
<parameters/>
<returnType>oracle.wcps.activity.agrest.spy.jaxb.Recommendations</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:getCMISLinksFromCommonItems"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:getCMISLinksFromCommonItems?projection={projection}"/>
</links>
<category>agfunction</category>
<example>${agfunction:getCMISLinksFromCommonItems(results)}</example>
<localizedDescription>Return a List of URLs representing the common items as CMIS objects</localizedDescription>
<name>getCMISLinksFromCommonItems</name>
<parameters/>
<returnType>java.util.List</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:getCMISLinksFromRecommendations"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:getCMISLinksFromRecommendations?projection={projection}"/>
</links>
<category>agfunction</category>
<example>${agfunction:getCMISLinksFromRecommendations(recommendations)}</example>
<localizedDescription>Return a List of URLs representing the CMIS objects</localizedDescription>
<name>getCMISLinksFromRecommendations</name>
<parameters/>
<returnType>java.util.List</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:getContentIDs"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:getContentIDs?projection={projection}"/>
</links>
<category>agfunction</category>
<example>${agfunction:getContentIDs(agResults)}</example>
<localizedDescription>Extract content IDs from input objects.  Includes content of all types (WC.document, WC.wiki)</localizedDescription>
<name>getContentIDs</name>
<parameters/>
<returnType>java.util.List</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:getContentIDsFiltered"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:getContentIDsFiltered?projection={projection}"/>
</links>
<category>agfunction</category>
<example>${agfunction:getContentIDsFiltered(agResults,excludeClassURN)}</example>
<localizedDescription>Extract content IDs from input objects</localizedDescription>
<name>getContentIDsFiltered</name>
<parameters/>
<returnType>java.util.List</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:atomAsCMISObjects"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:atomAsCMISObjects?projection={projection}"/>
</links>
<category>cmisfunction</category>
<example>${cmisfunction:atomAsCMISObjects(atomFeed)}</example>
<localizedDescription>ATOM feed as List&lt;CMISObject&gt;</localizedDescription>
<name>atomAsCMISObjects</name>
<parameters/>
<returnType>java.util.List</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:atomAsEntries"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:atomAsEntries?projection={projection}"/>
</links>
<category>cmisfunction</category>
<example>${cmisfunction:atomAsEntries(atomFeed)}</example>
<localizedDescription>ATOM feed as  List&lt;org.apache.abdera.model.Entry&gt;</localizedDescription>
<name>atomAsEntries</name>
<parameters/>
<returnType>java.util.List</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:atomAsFeed"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:atomAsFeed?projection={projection}"/>
</links>
<category>cmisfunction</category>
<example>${cmisfunction:atomAsFeed(atomFeed)}</example>
<localizedDescription>ATOM feed as  org.apache.abdera.model.Feed</localizedDescription>
<name>atomAsFeed</name>
<parameters/>
<returnType>org.apache.abdera.model.Feed</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:atomAsStreamUrls"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:atomAsStreamUrls?projection={projection}"/>
</links>
<category>cmisfunction</category>
<example>${cmisfunction:atomAsStreamUrls(atomFeed)}</example>
<localizedDescription>ATOM feed as List&lt;String&gt; of URLs</localizedDescription>
<name>atomAsStreamUrls</name>
<parameters/>
<returnType>java.util.List</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:getCMISQueryForDocIDs"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:getCMISQueryForDocIDs?projection={projection}"/>
</links>
<category>cmisfunction</category>
<example>${cmisfunction:getCMISQueryForDocIDs(repository,ids)}</example>
<localizedDescription>Construct a CMIS query in the form of 'IN' query syntax that will retrieve the documents for the array of input doc IDs.</localizedDescription>
<name>getCMISQueryForDocIDs</name>
<parameters/>
<returnType>java.lang.String</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:getCMISQueryForDocIDsFromFullID"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:getCMISQueryForDocIDsFromFullID?projection={projection}"/>
</links>
<category>cmisfunction</category>
<example>${cmisfunction:getCMISQueryForDocIDsFromFullID(ids)}</example>
<localizedDescription>Construct a CMIS query in the form of 'IN' query syntax that will retrieve the documents for the array of input doc IDs.</localizedDescription>
<name>getCMISQueryForDocIDsFromFullID</name>
<parameters/>
<returnType>java.lang.String</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:append"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:append?projection={projection}"/>
</links>
<category>collections</category>
<example>${collections:append(collection,item)}</example>
<localizedDescription>Appends </localizedDescription>
<name>append</name>
<parameters/>
<returnType>java.util.Collection</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:new"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:new?projection={projection}"/>
</links>
<category>collections</category>
<example>${collections:new()}</example>
<localizedDescription>Creates and returns a new collection.</localizedDescription>
<name>new</name>
<parameters/>
<returnType>java.util.Collection</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:sort"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:sort?projection={projection}"/>
</links>
<category>collections</category>
<example>${collections:sort(list)}</example>
<localizedDescription>Sorts the provided collection.</localizedDescription>
<name>sort</name>
<parameters/>
<returnType>void</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/connectionsQA:getSampleConfig"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/connectionsQA:getSampleConfig?projection={projection}"/>
</links>
<category>connectionsQA</category>
<example>${connectionsQA:getSampleConfig(scenarioContext,connectionName)}</example>
<localizedDescription>Retrieves a sample configuration by name.</localizedDescription>
<name>getSampleConfig</name>
<parameters/>
<returnType>oracle.wcps.test.providers.sample.SampleConnectionConfigImpl</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/connectionsQA:getSampleConfigs"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/connectionsQA:getSampleConfigs?projection={projection}"/>
</links>
<category>connectionsQA</category>
<example>${connectionsQA:getSampleConfigs(scenarioContext)}</example>
<localizedDescription>Retrieves all sample connection configurations for the current namespace.</localizedDescription>
<name>getSampleConfigs</name>
<parameters/>
<returnType>java.util.List</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/connectionsQA:removeSampleConfig"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/connectionsQA:removeSampleConfig?projection={projection}"/>
</links>
<category>connectionsQA</category>
<example>${connectionsQA:removeSampleConfig(scenarioContext,connectionName)}</example>
<localizedDescription>Removes a sample configuration with the specified name in the current namespace.</localizedDescription>
<name>removeSampleConfig</name>
<parameters/>
<returnType>void</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/connectionsQA:saveSampleConfig"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/connectionsQA:saveSampleConfig?projection={projection}"/>
</links>
<category>connectionsQA</category>
<example>${connectionsQA:saveSampleConfig(scenarioContext,connectionName,samplePropertyValue)}</example>
<localizedDescription>Creates or saves a sample configuration.</localizedDescription>
<name>saveSampleConfig</name>
<parameters/>
<returnType>oracle.wcps.test.providers.sample.SampleConnectionConfigImpl</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/magiceightball:response"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/magiceightball:response?projection={projection}"/>
</links>
<category>magiceightball</category>
<example>${magiceightball:response(scenarioContext,responses)}</example>
<localizedDescription>Provides clairvoyant responses to all your questions</localizedDescription>
<name>response</name>
<parameters/>
<returnType>java.lang.String</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/security:getUserRoles"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/security:getUserRoles?projection={projection}"/>
</links>
<category>security</category>
<example>${security:getUserRoles()}</example>
<localizedDescription>Returns an array of roles/groups that is part of the current subject.</localizedDescription>
<name>getUserRoles</name>
<parameters/>
<returnType>java.util.List</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/security:isUserInRole"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/security:isUserInRole?projection={projection}"/>
</links>
<category>security</category>
<example>${security:isUserInRole(role)}</example>
<localizedDescription>Determines if the current user is a member in the specified role or group name (role).</localizedDescription>
<name>isUserInRole</name>
<parameters/>
<returnType>boolean</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:complexType"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:complexType?projection={projection}"/>
</links>
<category>test</category>
<example>${test:complexType(arg0,arg1)}</example>
<localizedDescription>Demonstrates how to return a complex type.</localizedDescription>
<name>complexType</name>
<parameters/>
<returnType>oracle.wcps.test.providers.functions.ComplexType</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:complexTypeList"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:complexTypeList?projection={projection}"/>
</links>
<category>test</category>
<example>${test:complexTypeList(arg0)}</example>
<localizedDescription>Demonstrates how to return a list of complex types.</localizedDescription>
<name>complexTypeList</name>
<parameters/>
<returnType>java.util.List</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:complexTypeMap"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:complexTypeMap?projection={projection}"/>
</links>
<category>test</category>
<example>${test:complexTypeMap(arg0)}</example>
<localizedDescription>Demonstrates how to return a map of complex types.</localizedDescription>
<name>complexTypeMap</name>
<parameters/>
<returnType>java.util.Map</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:concat"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:concat?projection={projection}"/>
</links>
<category>test</category>
<example>${test:concat(arg0,arg1)}</example>
<localizedDescription>Demonstrates how to return a complex type.</localizedDescription>
<name>concat</name>
<parameters/>
<returnType>java.lang.String</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:sleep"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:sleep?projection={projection}"/>
</links>
<category>test</category>
<example>${test:sleep(arg0)}</example>
<localizedDescription>Pauses the current thread for the specified number of milliseconds.</localizedDescription>
<name>sleep</name>
<parameters/>
<returnType>void</returnType>
</functionProvider>
</items>
</functionProviders>

JSON

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection=summary
accept-language: en
content-type: application/json
accept: application/json

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=Q9VFM2GLn2ny2CxbKvxKXYbYTMT4zvJ3QMgP2DzxH0GSkfct76cC!2098846330; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Date: Wed, 13 Oct 2010 23:51:36 GMT

{
"functionProviders" : [ {
"parameters" : [ ],
"name" : "filterRecsByScore",
"returnType" : "oracle.wcps.activity.agrest.spy.jaxb.Recommendations",
"category" : "agfunction",
"example" : "${agfunction:filterRecsByScore(recommendations,cutoffScore)}",
"localizedDescription" : "Filter out Recommendations whose score is >= the input score",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:filterRecsByScore?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:filterRecsByScore",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "getCMISLinksFromCommonItems",
"returnType" : "java.util.List",
"category" : "agfunction",
"example" : "${agfunction:getCMISLinksFromCommonItems(results)}",
"localizedDescription" : "Return a List of URLs representing the common items as CMIS objects",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:getCMISLinksFromCommonItems?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:getCMISLinksFromCommonItems",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "getCMISLinksFromRecommendations",
"returnType" : "java.util.List",
"category" : "agfunction",
"example" : "${agfunction:getCMISLinksFromRecommendations(recommendations)}",
"localizedDescription" : "Return a List of URLs representing the CMIS objects",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:getCMISLinksFromRecommendations?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:getCMISLinksFromRecommendations",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "getContentIDs",
"returnType" : "java.util.List",
"category" : "agfunction",
"example" : "${agfunction:getContentIDs(agResults)}",
"localizedDescription" : "Extract content IDs from input objects.  Includes content of all types (WC.document, WC.wiki)",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:getContentIDs?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:getContentIDs",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "getContentIDsFiltered",
"returnType" : "java.util.List",
"category" : "agfunction",
"example" : "${agfunction:getContentIDsFiltered(agResults,excludeClassURN)}",
"localizedDescription" : "Extract content IDs from input objects",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:getContentIDsFiltered?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/agfunction:getContentIDsFiltered",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "atomAsCMISObjects",
"returnType" : "java.util.List",
"category" : "cmisfunction",
"example" : "${cmisfunction:atomAsCMISObjects(atomFeed)}",
"localizedDescription" : "ATOM feed as List<CMISObject>",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:atomAsCMISObjects?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:atomAsCMISObjects",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "atomAsEntries",
"returnType" : "java.util.List",
"category" : "cmisfunction",
"example" : "${cmisfunction:atomAsEntries(atomFeed)}",
"localizedDescription" : "ATOM feed as  List<org.apache.abdera.model.Entry>",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:atomAsEntries?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:atomAsEntries",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "atomAsFeed",
"returnType" : "org.apache.abdera.model.Feed",
"category" : "cmisfunction",
"example" : "${cmisfunction:atomAsFeed(atomFeed)}",
"localizedDescription" : "ATOM feed as  org.apache.abdera.model.Feed",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:atomAsFeed?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:atomAsFeed",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "atomAsStreamUrls",
"returnType" : "java.util.List",
"category" : "cmisfunction",
"example" : "${cmisfunction:atomAsStreamUrls(atomFeed)}",
"localizedDescription" : "ATOM feed as List<String> of URLs",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:atomAsStreamUrls?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:atomAsStreamUrls",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "getCMISQueryForDocIDs",
"returnType" : "java.lang.String",
"category" : "cmisfunction",
"example" : "${cmisfunction:getCMISQueryForDocIDs(repository,ids)}",
"localizedDescription" : "Construct a CMIS query in the form of 'IN' query syntax that will retrieve the documents for the array of input doc IDs.",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:getCMISQueryForDocIDs?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:getCMISQueryForDocIDs",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "getCMISQueryForDocIDsFromFullID",
"returnType" : "java.lang.String",
"category" : "cmisfunction",
"example" : "${cmisfunction:getCMISQueryForDocIDsFromFullID(ids)}",
"localizedDescription" : "Construct a CMIS query in the form of 'IN' query syntax that will retrieve the documents for the array of input doc IDs.",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:getCMISQueryForDocIDsFromFullID?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/cmisfunction:getCMISQueryForDocIDsFromFullID",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "append",
"returnType" : "java.util.Collection",
"category" : "collections",
"example" : "${collections:append(collection,item)}",
"localizedDescription" : "Appends ",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:append?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:append",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "new",
"returnType" : "java.util.Collection",
"category" : "collections",
"example" : "${collections:new()}",
"localizedDescription" : "Creates and returns a new collection.",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:new?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:new",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "sort",
"returnType" : "void",
"category" : "collections",
"example" : "${collections:sort(list)}",
"localizedDescription" : "Sorts the provided collection.",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:sort?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:sort",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "getSampleConfig",
"returnType" : "oracle.wcps.test.providers.sample.SampleConnectionConfigImpl",
"category" : "connectionsQA",
"example" : "${connectionsQA:getSampleConfig(scenarioContext,connectionName)}",
"localizedDescription" : "Retrieves a sample configuration by name.",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/connectionsQA:getSampleConfig?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/connectionsQA:getSampleConfig",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "getSampleConfigs",
"returnType" : "java.util.List",
"category" : "connectionsQA",
"example" : "${connectionsQA:getSampleConfigs(scenarioContext)}",
"localizedDescription" : "Retrieves all sample connection configurations for the current namespace.",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/connectionsQA:getSampleConfigs?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/connectionsQA:getSampleConfigs",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "removeSampleConfig",
"returnType" : "void",
"category" : "connectionsQA",
"example" : "${connectionsQA:removeSampleConfig(scenarioContext,connectionName)}",
"localizedDescription" : "Removes a sample configuration with the specified name in the current namespace.",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/connectionsQA:removeSampleConfig?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/connectionsQA:removeSampleConfig",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "saveSampleConfig",
"returnType" : "oracle.wcps.test.providers.sample.SampleConnectionConfigImpl",
"category" : "connectionsQA",
"example" : "${connectionsQA:saveSampleConfig(scenarioContext,connectionName,samplePropertyValue)}",
"localizedDescription" : "Creates or saves a sample configuration.",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/connectionsQA:saveSampleConfig?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/connectionsQA:saveSampleConfig",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "response",
"returnType" : "java.lang.String",
"category" : "magiceightball",
"example" : "${magiceightball:response(scenarioContext,responses)}",
"localizedDescription" : "Provides clairvoyant responses to all your questions",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/magiceightball:response?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/magiceightball:response",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "getUserRoles",
"returnType" : "java.util.List",
"category" : "security",
"example" : "${security:getUserRoles()}",
"localizedDescription" : "Returns an array of roles/groups that is part of the current subject.",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/security:getUserRoles?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/security:getUserRoles",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "isUserInRole",
"returnType" : "boolean",
"category" : "security",
"example" : "${security:isUserInRole(role)}",
"localizedDescription" : "Determines if the current user is a member in the specified role or group name (role).",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/security:isUserInRole?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/security:isUserInRole",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "complexType",
"returnType" : "oracle.wcps.test.providers.functions.ComplexType",
"category" : "test",
"example" : "${test:complexType(arg0,arg1)}",
"localizedDescription" : "Demonstrates how to return a complex type.",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:complexType?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:complexType",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "complexTypeList",
"returnType" : "java.util.List",
"category" : "test",
"example" : "${test:complexTypeList(arg0)}",
"localizedDescription" : "Demonstrates how to return a list of complex types.",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:complexTypeList?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:complexTypeList",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "complexTypeMap",
"returnType" : "java.util.Map",
"category" : "test",
"example" : "${test:complexTypeMap(arg0)}",
"localizedDescription" : "Demonstrates how to return a map of complex types.",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:complexTypeMap?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:complexTypeMap",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "concat",
"returnType" : "java.lang.String",
"category" : "test",
"example" : "${test:concat(arg0,arg1)}",
"localizedDescription" : "Demonstrates how to return a complex type.",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:concat?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:concat",
"rel" : "self"
} ]
}, {
"parameters" : [ ],
"name" : "sleep",
"returnType" : "void",
"category" : "test",
"example" : "${test:sleep(arg0)}",
"localizedDescription" : "Pauses the current thread for the specified number of milliseconds.",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:sleep?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/test:sleep",
"rel" : "self"
} ]
} ],
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection=summary",
"rel" : "self"
} ]
}

72.2.2.2 単一のファンクション・プロバイダのメタデータの取得(GET)

XML

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:append?projection=details
accept-language: en
content-type: application/xml
accept: application/xml

Response:
Status Code:200
Content-Length: 1433
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=xf4NM2GL2yrTY3QPCZ591Ht8h7MVTSW9GGzR6Tm12WtFLvD0vnng!2098846330; path=/wcps; HttpOnly
Content-Type: application/xml
Date: Wed, 13 Oct 2010 23:51:36 GMT

<?xml version="1.0" encoding="UTF-8"?>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:webcenter:parent"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:append?projection=details"
rel="self"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:append?projection={projection}"/>
</links>
<category>collections</category>
<example>${collections:append(collection,item)}</example>
<localizedDescription>Appends </localizedDescription>
<name>append</name>
<parameters>
<parameter>
<localizedDescription>The collection to append to.</localizedDescription>
<name>collection</name>
<type>java.util.Collection</type>
</parameter>
<parameter>
<localizedDescription>The item or object to append.</localizedDescription>
<name>item</name>
<type>java.lang.Object</type>
</parameter>
</parameters>
<returnType>java.util.Collection</returnType>
</functionProvider>

JSON

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:append?projection=details
accept-language: en
content-type: application/json
accept: application/json

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=BCz3M2GJWQnS3jQV1DvMsJynJXGnlJ6MrmrST4qxm8L7NxbgJh9T!2098846330; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Date: Wed, 13 Oct 2010 23:51:37 GMT

{
"parameters" : [ {
"type" : "java.util.Collection",
"name" : "collection",
"localizedDescription" : "The collection to append to."
}, {
"type" : "java.lang.Object",
"name" : "item",
"localizedDescription" : "The item or object to append."
} ],
"name" : "append",
"returnType" : "java.util.Collection",
"category" : "collections",
"example" : "${collections:append(collection,item)}",
"localizedDescription" : "Appends ",
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProvider",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:append?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders/collections:append?projection=details",
"rel" : "self"
} ]
}

72.2.3 ネームスペース管理APIの使用

この項では、コンダクタのネームスペース管理APIの使用例を示します。内容は次のとおりです。

- 第72.2.3.1項「ネームスペースのコレクションの取得(GET)」

- 第72.2.3.2項「単一のネームスペースの取得(GET)」

- 第72.2.3.3項「ネームスペースの作成(POST)」

- 第72.2.3.4項「ネームスペースの削除(DELETE)」

72.2.3.1 ネームスペースのコレクションの取得(GET)

XML

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces?startIndex=0&itemsPerPage=10
accept-language: en
content-type: application/xml
accept: application/xml

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=JVqNM0HGTxxrXJJsy2cLCPjRTqJzDQ6pFytMMNy3JQTph671rTC2!-1838429496; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/xml
Date: Tue, 12 Oct 2010 20:40:06 GMT

<?xml version="1.0" encoding="UTF-8"?>
<namespaces resourceType="urn:oracle:wcps:conductor:namespaces">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/resourceIndex"
rel="urn:oracle:webcenter:parent" resourceType="urn:oracle:wcps:conductor:resourceIndex"/>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:create"
href="http://localhost:7001/wcps/api/conductor/namespaces?startIndex=0&amp;itemsPerPage=10"
rel="self" resourceType="urn:oracle:wcps:conductor:namespaces" template="http://localhost:7001/wcps/api/conductor/namespaces?startIndex={startIndex}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<items>
<namespace resourceType="urn:oracle:wcps:conductor:namespace">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces"
rel="urn:oracle:webcenter:parent" resourceType="urn:oracle:wcps:conductor:namespaces"/>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:7001/wcps/api/conductor/namespaces/JDEV"
rel="self" resourceType="urn:oracle:wcps:conductor:namespace"/>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:create"
href="http://localhost:7001/wcps/api/conductor/namespaces/JDEV/scenarios"
rel="urn:oracle:wcps:conductor:scenarioMetadatas"
resourceType="urn:oracle:wcps:conductor:scenarioMetadatas" template="http://localhost:7001/wcps/api/conductor/namespaces/JDEV/scenarios?tag={tag}&amp;projection={projection}&amp;startIndex={startIndex}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/JDEV/dataProviders"
rel="urn:oracle:wcps:conductor:provider:dataProviders"
resourceType="urn:oracle:wcps:conductor:provider:dataProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/JDEV/dataProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/JDEV/functionProviders"
rel="urn:oracle:wcps:conductor:provider:functionProviders"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/JDEV/functionProviders?projection={projection}"/>
</links>
<name>JDEV</name>
</namespace>
<namespace resourceType="urn:oracle:wcps:conductor:namespace">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces"
rel="urn:oracle:webcenter:parent" resourceType="urn:oracle:wcps:conductor:namespaces"/>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle"
rel="self" resourceType="urn:oracle:wcps:conductor:namespace"/>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:create"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios"
rel="urn:oracle:wcps:conductor:scenarioMetadatas"
resourceType="urn:oracle:wcps:conductor:scenarioMetadatas" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios?tag={tag}&amp;projection={projection}&amp;startIndex={startIndex}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders"
rel="urn:oracle:wcps:conductor:provider:dataProviders"
resourceType="urn:oracle:wcps:conductor:provider:dataProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:wcps:conductor:provider:functionProviders"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
</links>
<name>Oracle</name>
</namespace>
</items>
</namespaces>

JSON

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces?startIndex=0&itemsPerPage=10
accept-language: en
content-type: application/json
accept: application/json

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=3yvMM0HLChkXHS7R2VGn4F6lFKHwTGP2NwjC2Lf7J2jpvLTW9GvV!-1838429496; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Date: Tue, 12 Oct 2010 20:40:11 GMT

{
"namespaces" : [ {
"name" : "JDEV",
"resourceType" : "urn:oracle:wcps:conductor:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:namespaces",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/JDEV",
"rel" : "self"
}, {
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadatas",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/JDEV/scenarios?tag={tag}&projection={projection}&startIndex={startIndex}&itemsPerPage={itemsPerPage}",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:create",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/JDEV/scenarios",
"rel" : "urn:oracle:wcps:conductor:scenarioMetadatas"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/JDEV/dataProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/JDEV/dataProviders",
"rel" : "urn:oracle:wcps:conductor:provider:dataProviders"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/JDEV/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/JDEV/functionProviders",
"rel" : "urn:oracle:wcps:conductor:provider:functionProviders"
} ]
}, {
"name" : "Oracle",
"resourceType" : "urn:oracle:wcps:conductor:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:namespaces",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle",
"rel" : "self"
}, {
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadatas",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios?tag={tag}&projection={projection}&startIndex={startIndex}&itemsPerPage={itemsPerPage}",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:create",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios",
"rel" : "urn:oracle:wcps:conductor:scenarioMetadatas"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders",
"rel" : "urn:oracle:wcps:conductor:provider:dataProviders"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:wcps:conductor:provider:functionProviders"
} ]
}],
"resourceType" : "urn:oracle:wcps:conductor:namespaces",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:resourceIndex",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/resourceIndex",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:namespaces",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces?startIndex={startIndex}&itemsPerPage={itemsPerPage}",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:create",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces?startIndex=0&itemsPerPage=10",
"rel" : "self"
} ]
}

72.2.3.2 単一のネームスペースの取得(GET)

XML

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle
accept-language: en
content-type: application/json
accept: application/json

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=qzMqM0HMPYBlKQGMJvnQMS4rxXS4Jn1QnBjW850G1vnSjt4lHbLy!-1838429496; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Date: Tue, 12 Oct 2010 20:40:12 GMT

{
"name" : "Oracle",
"resourceType" : "urn:oracle:wcps:conductor:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:namespaces",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle",
"rel" : "self"
}, {
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadatas",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios?tag={tag}&projection={projection}&startIndex={startIndex}&itemsPerPage={itemsPerPage}",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:create",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios",
"rel" : "urn:oracle:wcps:conductor:scenarioMetadatas"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders",
"rel" : "urn:oracle:wcps:conductor:provider:dataProviders"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:wcps:conductor:provider:functionProviders"
} ]
}

JSON

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle
accept-language: en
content-type: application/json
accept: application/json

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=qzMqM0HMPYBlKQGMJvnQMS4rxXS4Jn1QnBjW850G1vnSjt4lHbLy!-1838429496; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Date: Tue, 12 Oct 2010 20:40:12 GMT

{
"name" : "Oracle",
"resourceType" : "urn:oracle:wcps:conductor:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:namespaces",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle",
"rel" : "self"
}, {
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadatas",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios?tag={tag}&projection={projection}&startIndex={startIndex}&itemsPerPage={itemsPerPage}",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:create",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios",
"rel" : "urn:oracle:wcps:conductor:scenarioMetadatas"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders",
"rel" : "urn:oracle:wcps:conductor:provider:dataProviders"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:wcps:conductor:provider:functionProviders"
} ]
}

72.2.3.3 ネームスペースの作成(POST)

XML

Request:
POST http://localhost:7001/wcps/api/conductor/namespaces?startIndex=0&itemsPerPage=10
accept-language: en
content-type: application/xml
accept: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<namespace resourceType="urn:oracle:wcps:conductor:namespace">
<name>Oracle</name>
</namespace>

Response:
Status Code:201
Content-Length: 1753
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=RW6QM0HF5x2KLvNSZJVncTpSXbl1rKY3tTfXyH94yY6Qv6ddGJkY!-1838429496; path=/wcps; HttpOnly
Content-Type: application/xml
Location: http://localhost:7001/wcps/api/conductor/namespaces/Oracle
Date: Tue, 12 Oct 2010 20:40:05 GMT

<?xml version="1.0" encoding="UTF-8"?>
<namespace resourceType="urn:oracle:wcps:conductor:namespace">
<links>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces"
rel="urn:oracle:webcenter:parent" resourceType="urn:oracle:wcps:conductor:namespaces"/>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:delete"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle"
rel="self" resourceType="urn:oracle:wcps:conductor:namespace"/>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:create"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios"
rel="urn:oracle:wcps:conductor:scenarioMetadatas"
resourceType="urn:oracle:wcps:conductor:scenarioMetadatas" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios?tag={tag}&amp;projection={projection}&amp;startIndex={startIndex}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders"
rel="urn:oracle:wcps:conductor:provider:dataProviders"
resourceType="urn:oracle:wcps:conductor:provider:dataProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders"
rel="urn:oracle:wcps:conductor:provider:functionProviders"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}"/>
</links>
<name>Oracle</name>
</namespace>

JSON

Request:
POST http://localhost:7001/wcps/api/conductor/namespaces?startIndex=0&itemsPerPage=10
accept-language: en
content-type: application/json
accept: application/json

{
"name" : "Oracle",
"resourceType" : "urn:oracle:wcps:conductor:namespace"
}

Response:
Status Code:201
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=xh18M0HKT86f4y1bWqZnBmzHXvNnvh0p7y9RLTmQfbRQC3fh79gx!-1838429496; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Location: http://localhost:7001/wcps/api/conductor/namespaces/Oracle
Date: Tue, 12 Oct 2010 20:40:10 GMT

{
"name" : "Oracle",
"resourceType" : "urn:oracle:wcps:conductor:namespace",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:namespaces",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces",
"rel" : "urn:oracle:webcenter:parent"
}, {
"resourceType" : "urn:oracle:wcps:conductor:namespace",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:delete",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle",
"rel" : "self"
}, {
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadatas",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios?tag={tag}&projection={projection}&startIndex={startIndex}&itemsPerPage={itemsPerPage}",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:create",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios",
"rel" : "urn:oracle:wcps:conductor:scenarioMetadatas"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:dataProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders",
"rel" : "urn:oracle:wcps:conductor:provider:dataProviders"
}, {
"resourceType" : "urn:oracle:wcps:conductor:provider:functionProviders",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders?projection={projection}",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/functionProviders",
"rel" : "urn:oracle:wcps:conductor:provider:functionProviders"
} ]
}

72.2.3.4 ネームスペースの削除(DELETE)

XML/JSON

Request:
DELETE http://localhost:7001/wcps/api/conductor/namespaces/Oracle
accept-language: en
content-type: application/xml
accept: application/xml

Response:
Status Code:204
Content-Length: 0
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
Set-Cookie: JSESSIONID=SMctM0HJxYxSvkMszjrfpl5zJ3Q0v25NhB7QPRTnJFLmd1tK1hYC!-1838429496; path=/wcps; HttpOnly
Date: Tue, 12 Oct 2010 20:40:09 GMT

72.2.4 シナリオ管理APIの使用

この項では、コンダクタのシナリオ管理APIの使用例を示します。内容は次のとおりです。

- 第72.2.4.1項「シナリオのコレクションの取得(GET)」

- 第72.2.4.2項「単一のシナリオの取得(GET)」

- 第72.2.4.3項「シナリオの作成(POST)」

- 第72.2.4.4項「シナリオの更新(PUT)」

- 第72.2.4.5項「シナリオの削除(DELETE)」

- 第72.2.4.6項「シナリオの実行(POST)」

72.2.4.1 シナリオのコレクションの取得(GET)

XML

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios?projection=summary&startIndex=0&itemsPerPage=10
accept-language: en
content-type: application/xml
accept: application/xml

Response:
Status Code:200
Content-Length: 1915
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=LJq1M1TGZp7fClyTJ2wggGczv2r8N0X1jsPYlg8kpGFWwGMvrQsM!21637120; path=/wcps; HttpOnly
Content-Type: application/xml
Date: Wed, 13 Oct 2010 15:43:02 GMT

<?xml version="1.0" encoding="UTF-8"?>
<scenarioMetadatas
resourceType="urn:oracle:wcps:conductor:scenarioMetadatas"
xmlns:ns2="http://xmlns.oracle.com/wcps/conductor/common/1.0.0" xmlns:ns3="http://xmlns.oracle.com/wcps/conductor/scenarios/1.0.0">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:create"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios?projection=summary&amp;startIndex=0&amp;itemsPerPage=10"
rel="self"
resourceType="urn:oracle:wcps:conductor:scenarioMetadatas" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios?tag={tag}&amp;projection={projection}&amp;startIndex={startIndex}&amp;itemsPerPage={itemsPerPage}"/>
</links>
<items>
<scenarioMetadata resourceType="urn:oracle:wcps:conductor:scenarioMetadata">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete urn:oracle:restframework:execute"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World"
rel="self"
resourceType="urn:oracle:wcps:conductor:scenarioMetadata" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello World?projection={projection}&amp;startIndex={startIndex}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World/definition"
rel="alternate" resourceType="urn:oracle:wcps:conductor:scenario"/>
</links>
<status>PUBLISHED</status>
<createdAuthor>weblogic</createdAuthor>
<createdDateTime>2010-10-13T09:43:01.617-06:00</createdDateTime>
<updatedAuthor>weblogic</updatedAuthor>
<updatedDateTime>2010-10-13T09:43:01.617-06:00</updatedDateTime>
<scenario>
<comments/>
<name>Hello World</name>
<tags/>
<input-parameters/>
</scenario>
</scenarioMetadata>
</items>
</scenarioMetadatas>

JSON

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios?projection=summary&startIndex=0&itemsPerPage=10
accept-language: en
content-type: application/json
accept: application/json

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=0VBvM2ZMwfWC6bPnZ8QDWv7q4h7WhmTMPvb0Lyc9n8t0lnyTtGLy!822326988; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Date: Wed, 13 Oct 2010 20:39:40 GMT

{
"scenarioMetadatas" : [ {
"scenario" : {
"tags" : [ ],
"inputParameters" : [ ],
"name" : "Hello World",
"comments" : "This scenario returns a Hello World string."
},
"status" : "PUBLISHED",
"createdAuthor" : "weblogic",
"createdDateTime" : "2010-10-13T14:39:40.103-0600",
"updatedAuthor" : "weblogic",
"updatedDateTime" : "2010-10-13T14:39:40.103-0600",
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadata",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadata",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello World?projection={projection}&startIndex={startIndex}&itemsPerPage={itemsPerPage}",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete urn:oracle:restframework:execute",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World",
"rel" : "self"
}, {
"resourceType" : "urn:oracle:wcps:conductor:scenario",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World/definition",
"rel" : "alternate"
} ]
} ],
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadatas",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadatas",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios?tag={tag}&projection={projection}&startIndex={startIndex}&itemsPerPage={itemsPerPage}",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:create",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios?projection=summary&startIndex=0&itemsPerPage=10",
"rel" : "self"
} ]
}

72.2.4.2 単一のシナリオの取得(GET)

XML

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World?projection=details&startIndex=0&itemsPerPage=10
accept-language: en
content-type: application/xml
accept: application/xml

Response:
Status Code:200
Content-Length: 1725
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=mS7LM2hYbWDd8xvmKYGSGVLXJ2qYDTXNGLy3lqknyp8fYStlBQNT!822326988; path=/wcps; HttpOnly
Content-Type: application/xml
Date: Wed, 13 Oct 2010 20:45:44 GMT

<?xml version="1.0" encoding="UTF-8"?>
<scenarioMetadata
resourceType="urn:oracle:wcps:conductor:scenarioMetadata"
xmlns:ns2="http://xmlns.oracle.com/wcps/conductor/common/1.0.0" xmlns:ns3="http://xmlns.oracle.com/wcps/conductor/scenarios/1.0.0">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete urn:oracle:restframework:execute"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World?projection=details&amp;startIndex=0&amp;itemsPerPage=10"
rel="self"
resourceType="urn:oracle:wcps:conductor:scenarioMetadata" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello World?projection={projection}&amp;startIndex={startIndex}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World/definition"
rel="alternate" resourceType="urn:oracle:wcps:conductor:scenario"/>
</links>
<status>PUBLISHED</status>
<createdAuthor>weblogic</createdAuthor>
<createdDateTime>2010-10-13T14:45:42.525-06:00</createdDateTime>
<updatedAuthor>weblogic</updatedAuthor>
<updatedDateTime>2010-10-13T14:45:42.525-06:00</updatedDateTime>
<scenario>
<comments>This scenario returns a Hello World string.</comments>
<body>
<return>
<comments>This is what is returned by the scenario.  A static string with the input parameter embedded.</comments>
<expression>Hello World with input '${input}'!</expression>
</return>
</body>
<name>Hello World</name>
<tags>
<tag>hello</tag>
<tag>world</tag>
</tags>
<input-parameters>
<parameter required="true">input</parameter>
</input-parameters>
</scenario>
</scenarioMetadata>

JSON

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World?projection=details&startIndex=0&itemsPerPage=10
accept-language: en
content-type: application/json
accept: application/json

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=LJnKM2hppVQL9ph88JWCymz8M1TQqcQjSbD03zJQ9z6yyT314Zy4!822326988; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Date: Wed, 13 Oct 2010 20:45:50 GMT

{
"scenario" : {
"tags" : [ "hello", "world" ],
"inputParameters" : [ {
"value" : "input",
"required" : true
} ],
"name" : "Hello World",
"body" : {
"statements" : [ {
"concreteType" : "urn:oracle:wcps:conductor:scenario:schema:return",
"expression" : "Hello World with input '${input}'!",
"comments" : "This is what is returned by the scenario.  A static string with the input parameter embedded."
} ]
},
"comments" : "This scenario returns a Hello World string."
},
"status" : "PUBLISHED",
"createdAuthor" : "weblogic",
"createdDateTime" : "2010-10-13T14:45:48.681-0600",
"updatedAuthor" : "weblogic",
"updatedDateTime" : "2010-10-13T14:45:48.681-0600",
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadata",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadata",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello World?projection={projection}&startIndex={startIndex}&itemsPerPage={itemsPerPage}",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete urn:oracle:restframework:execute",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World?projection=details&startIndex=0&itemsPerPage=10",
"rel" : "self"
}, {
"resourceType" : "urn:oracle:wcps:conductor:scenario",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World/definition",
"rel" : "alternate"
} ]
}

72.2.4.3 シナリオの作成(POST)

XML

Request:
POST http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios?projection=details&startIndex=0&itemsPerPage=10
accept-language: en
content-type: application/xml
accept: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<scenarioMetadata
resourceType="urn:oracle:wcps:conductor:scenarioMetadata"
xmlns:ns2="http://xmlns.oracle.com/wcps/conductor/common/1.0.0" xmlns:ns3="http://xmlns.oracle.com/wcps/conductor/scenarios/1.0.0">
<scenario>
<comments>This scenario returns a Hello World string.</comments>
<body>
<return>
<comments>This is what is returned by the scenario.  A static string with the input parameter embedded.</comments>
<expression>Hello World with input '${input}'!</expression>
</return>
</body>
<name>Hello World</name>
<tags>
<tag>hello</tag>
<tag>world</tag>
</tags>
<input-parameters>
<parameter required="true">input</parameter>
</input-parameters>
</scenario>
</scenarioMetadata>

Response:
Status Code:201
Content-Length: 1669
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=L41NM2hW6p8FtvJmjRxKkZNF2LJnnY4JhGJCT1xDG4prwf1T1g3D!822326988; path=/wcps; HttpOnly
Content-Type: application/xml
Location: http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World
Date: Wed, 13 Oct 2010 20:45:42 GMT

<?xml version="1.0" encoding="UTF-8"?>
<scenarioMetadata
resourceType="urn:oracle:wcps:conductor:scenarioMetadata"
xmlns:ns2="http://xmlns.oracle.com/wcps/conductor/common/1.0.0" xmlns:ns3="http://xmlns.oracle.com/wcps/conductor/scenarios/1.0.0">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete urn:oracle:restframework:execute"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World"
rel="self"
resourceType="urn:oracle:wcps:conductor:scenarioMetadata" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello World?projection={projection}&amp;startIndex={startIndex}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World/definition"
rel="alternate" resourceType="urn:oracle:wcps:conductor:scenario"/>
</links>
<status>PUBLISHED</status>
<createdAuthor>weblogic</createdAuthor>
<createdDateTime>2010-10-13T14:45:42.525-06:00</createdDateTime>
<updatedAuthor>weblogic</updatedAuthor>
<updatedDateTime>2010-10-13T14:45:42.525-06:00</updatedDateTime>
<scenario>
<comments>This scenario returns a Hello World string.</comments>
<body>
<return>
<comments>This is what is returned by the scenario.  A static string with the input parameter embedded.</comments>
<expression>Hello World with input '${input}'!</expression>
</return>
</body>
<name>Hello World</name>
<tags>
<tag>hello</tag>
<tag>world</tag>
</tags>
<input-parameters>
<parameter required="true">input</parameter>
</input-parameters>
</scenario>
</scenarioMetadata>

JSON

Request:
POST http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios?projection=details&startIndex=0&itemsPerPage=10
accept-language: en
content-type: application/json
accept: application/json

{
"scenario" : {
"tags" : [ "hello", "world" ],
"inputParameters" : [ {
"value" : "input",
"required" : true
} ],
"name" : "Hello World",
"body" : {
"statements" : [ {
"concreteType" : "urn:oracle:wcps:conductor:scenario:schema:return",
"expression" : "Hello World with input '${input}'!",
"comments" : "This is what is returned by the scenario.  A static string with the input parameter embedded."
} ]
},
"comments" : "This scenario returns a Hello World string."
},
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadata"
}

Response:
Status Code:201
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=XrT7M2hcNRzpmCKF7SxPNs9phBvfPlsnffy98nRLDL8G52wHwd1y!822326988; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Location: http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World
Date: Wed, 13 Oct 2010 20:45:48 GMT

{
"scenario" : {
"tags" : [ "hello", "world" ],
"inputParameters" : [ {
"value" : "input",
"required" : true
} ],
"name" : "Hello World",
"body" : {
"statements" : [ {
"concreteType" : "urn:oracle:wcps:conductor:scenario:schema:return",
"expression" : "Hello World with input '${input}'!",
"comments" : "This is what is returned by the scenario.  A static string with the input parameter embedded."
} ]
},
"comments" : "This scenario returns a Hello World string."
},
"status" : "PUBLISHED",
"createdAuthor" : "weblogic",
"createdDateTime" : "2010-10-13T14:45:48.681-0600",
"updatedAuthor" : "weblogic",
"updatedDateTime" : "2010-10-13T14:45:48.681-0600",
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadata",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadata",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello World?projection={projection}&startIndex={startIndex}&itemsPerPage={itemsPerPage}",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete urn:oracle:restframework:execute",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World",
"rel" : "self"
}, {
"resourceType" : "urn:oracle:wcps:conductor:scenario",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World/definition",
"rel" : "alternate"
} ]
}

72.2.4.4 シナリオの更新(PUT)

XML

Request:
PUT http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World?projection=details&startIndex=0&itemsPerPage=10
accept-language: en
content-type: application/xml
accept: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<scenarioMetadata
resourceType="urn:oracle:wcps:conductor:scenarioMetadata"
xmlns:ns2="http://xmlns.oracle.com/wcps/conductor/common/1.0.0" xmlns:ns3="http://xmlns.oracle.com/wcps/conductor/scenarios/1.0.0">
<scenario>
<comments>This scenario returns a Hello World string.</comments>
<body>
<assign-variable>
<variable>initVariable</variable>
<expression>Hello World with input '${input}'!</expression>
</assign-variable>
<return>
<comments>This is what is returned by the scenario.  A static string with the input parameter embedded.</comments>
<expression>${initVariable}</expression>
</return>
</body>
<name>Hello World</name>
<tags>
<tag>hello</tag>
<tag>world</tag>
</tags>
<input-parameters>
<parameter required="true">input</parameter>
</input-parameters>
</scenario>
</scenarioMetadata>

Response:
Status Code:200
Content-Length: 1777
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=CnGYM2hYBBJ2hNPGLkcDG1WWvhP41gBDvBsCwmKpdHvtCJtQL67L!822326988; path=/wcps; HttpOnly
Content-Type: application/xml
Date: Wed, 13 Oct 2010 20:45:44 GMT

<?xml version="1.0" encoding="UTF-8"?>
<scenarioMetadata
resourceType="urn:oracle:wcps:conductor:scenarioMetadata"
xmlns:ns2="http://xmlns.oracle.com/wcps/conductor/common/1.0.0" xmlns:ns3="http://xmlns.oracle.com/wcps/conductor/scenarios/1.0.0">
<links>
<link
capabilities="urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete urn:oracle:restframework:execute"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World"
rel="self"
resourceType="urn:oracle:wcps:conductor:scenarioMetadata" template="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello World?projection={projection}&amp;startIndex={startIndex}&amp;itemsPerPage={itemsPerPage}"/>
<link capabilities="urn:oracle:restframework:read"
href="http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World/definition"
rel="alternate" resourceType="urn:oracle:wcps:conductor:scenario"/>
</links>
<status>PUBLISHED</status>
<createdAuthor>weblogic</createdAuthor>
<createdDateTime>2010-10-13T14:45:42.525-06:00</createdDateTime>
<updatedAuthor>weblogic</updatedAuthor>
<updatedDateTime>2010-10-13T14:45:44.471-06:00</updatedDateTime>
<scenario>
<comments>This scenario returns a Hello World string.</comments>
<body>
<assign-variable>
<variable>initVariable</variable>
<expression>Hello World with input '${input}'!</expression>
</assign-variable>
<return>
<comments>This is what is returned by the scenario.  A static string with the input parameter embedded.</comments>
<expression>${initVariable}</expression>
</return>
</body>
<name>Hello World</name>
<tags>
<tag>hello</tag>
<tag>world</tag>
</tags>
<input-parameters>
<parameter required="true">input</parameter>
</input-parameters>
</scenario>
</scenarioMetadata>

JSON

Request:
PUT http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World?projection=details&startIndex=0&itemsPerPage=10
accept-language: en
content-type: application/json
accept: application/json

{
"scenario" : {
"tags" : [ "hello", "world" ],
"inputParameters" : [ {
"value" : "input",
"required" : true
} ],
"name" : "Hello World",
"body" : {
"statements" : [ {
"concreteType" : "urn:oracle:wcps:conductor:scenario:schema:variable-assignment",
"expression" : "Hello World with input '${input}'!",
"variable" : "initVariable"
}, {
"concreteType" : "urn:oracle:wcps:conductor:scenario:schema:return",
"expression" : "${initVariable}",
"comments" : "This is what is returned by the scenario.  A static string with the input parameter embedded."
} ]
},
"comments" : "This scenario returns a Hello World string."
},
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadata"
}

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=sJBGM2hpTwwM7l3Q7HNnQ8lDpjkqQvkJy4h1Wr11KJFx1gd2XDSY!822326988; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Date: Wed, 13 Oct 2010 20:45:50 GMT

{
"scenario" : {
"tags" : [ "hello", "world" ],
"inputParameters" : [ {
"value" : "input",
"required" : true
} ],
"name" : "Hello World",
"body" : {
"statements" : [ {
"concreteType" : "urn:oracle:wcps:conductor:scenario:schema:variable-assignment",
"expression" : "Hello World with input '${input}'!",
"variable" : "initVariable"
}, {
"concreteType" : "urn:oracle:wcps:conductor:scenario:schema:return",
"expression" : "${initVariable}",
"comments" : "This is what is returned by the scenario.  A static string with the input parameter embedded."
} ]
},
"comments" : "This scenario returns a Hello World string."
},
"status" : "PUBLISHED",
"createdAuthor" : "weblogic",
"createdDateTime" : "2010-10-13T14:45:48.681-0600",
"updatedAuthor" : "weblogic",
"updatedDateTime" : "2010-10-13T14:45:50.533-0600",
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadata",
"links" : [ {
"resourceType" : "urn:oracle:wcps:conductor:scenarioMetadata",
"template" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello World?projection={projection}&startIndex={startIndex}&itemsPerPage={itemsPerPage}",
"capabilities" : "urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete urn:oracle:restframework:execute",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World",
"rel" : "self"
}, {
"resourceType" : "urn:oracle:wcps:conductor:scenario",
"capabilities" : "urn:oracle:restframework:read",
"href" : "http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World/definition",
"rel" : "alternate"
} ]
}

72.2.4.5 シナリオの削除(DELETE)

XML/JSON

Request:
DELETE http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World?projection=details&startIndex=0&itemsPerPage=10
accept-language: en
content-type: application/xml
accept: application/xml

Response:
Status Code:204
Content-Length: 0
X-Powered-By: Servlet/2.5 JSP/2.1
Connection: close
Set-Cookie: JSESSIONID=nyKyM2WdGDL6v6Qsgpn335Vgzs5b7vnS417p9dcTgGrlv3736mmm!822326988; path=/wcps; HttpOnly
Date: Wed, 13 Oct 2010 20:28:45 GMT

72.2.4.6 シナリオの実行(POST)

XML

Request:
POST http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World?projection=details&startIndex=0&itemsPerPage=10
accept-language: en
content-type: application/xml
accept: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<parameters>
<parameter>
<name>input</name>
<value>input parameter value</value>
</parameter>
</parameters>

Response:
Status Code:200
Content-Length: 348
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=FlFzM2WchrvP59qBJdbSQldb7TvPQPyRj1HsvJJPCQhKrj7z6zs8!822326988; path=/wcps; HttpOnly
Content-Type: application/xml
Date: Wed, 13 Oct 2010 20:28:44 GMT

<?xml version="1.0" encoding="UTF-8"?>
<conductorExecutionResults resourceType="urn:oracle:wcps:conductor:genericType">
<results xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">Hello World with input 'input parameter value'!</results>
</conductorExecutionResults>

JSON

Request:
POST http://localhost:7001/wcps/api/conductor/namespaces/Oracle/scenarios/Hello%20World?projection=details&startIndex=0&itemsPerPage=10
accept-language: en
content-type: application/json
accept: application/json

{
"parameters" : [ {
"name" : "input",
"value" : "input parameter value"
} ]
}

Response:
Status Code:200
X-Powered-By: Servlet/2.5 JSP/2.1
Set-Cookie: JSESSIONID=fhJpM2hf45WSGZl3dwwBnMhCkxPbQwQTF9GLZ15QFc42ZQyVKLcj!822326988; path=/wcps; HttpOnly
Transfer-Encoding: chunked
Content-Type: application/json
Date: Wed, 13 Oct 2010 20:45:51 GMT

{
"results" : "Hello World with input 'input parameter value'!",
"resourceType" : "urn:oracle:wcps:conductor:genericType"
}

72.3 ELを使用したデータ統合クライアント・サービスのコール

式言語(EL)式を使用すると、WebページやJava Server Faces環境などのリモート・クライアントからデータ統合サービスをコールできます。たとえば、ELを使用して、データ統合シナリオをWebCenter Portal内のページに適用できます。データ統合ELの詳細は、第F.11項「パーソナライズに関連するEL」を参照してください。

この項には次のサブセクションが含まれます:

- 第72.3.1項「JSFページからのデータ統合クライアント・サービスのコール」

- 第72.3.2項「JSPページからのデータ統合クライアント・サービスのコール」

- 第72.3.3項「データ統合コンテキスト・オブジェクトのメソッド・リファレンス」

- 第72.3.4項「シングル・サインオンの有効化」

72.3.1 JSFページからのデータ統合クライアント・サービスのコール

P13NContextは、Java Server Facesのコンテキストによって自動的に宣言およびインスタンス化される、セッション内にスコープ指定されたマネージドBeanであり、次のELとともに使用されます。

#{p13nContext}

コンダクタのコンテキストへのアクセス

リモート・コンダクタ・サービスには、次の方法でアクセスできます。

#{p13nContext.conductor["<UrlOrConnectionName>"]}

UrlOrConnectionNameは、コンダクタのリソース索引のURL (http://localhost:7001/wcps/api/conductor/resourceIndexなど)またはconnections.xml (JDeveloperまたはWebCenter環境内でのみ使用可能です)内に指定された接続名です。

接続名defaultを指定した場合、Conductorで始まる最初の接続名が取得されます。例:

#{p13nContext.conductor['default'].namespaces['myNamespace'].scenario['myScenario'].results}

プロパティ・サービスのコンテキストへのアクセス

リモート・プロパティ・サービスには、次の方法でアクセスできます。

#{p13nContext.properties["<UrlOrConnectionName>"]}

UrlOrConnectionNameは、プロパティ・サービスのリソース索引のURL (http://localhost:7001/wcps/api/property/resourceIndexなど)またはconnections.xml (JDeveloperまたはWebCenter環境内でのみ使用可能です)内に指定された接続名です。

接続名defaultを指定した場合、Propertiesで始まる最初の接続名が取得されます。例:

#{p13nContext.properties['default'].namespaces['myNamespace'].setDefinitions['MyPropertySetDefinition'].sets['MyPropertySet'].results['MyPropertyName']}

リクエストのスコープに合わせたクライアント・サービスの構成

データ統合サービス・クライアントでは、セッションのスコープではなくリクエストのスコープを使用することが必要になる場合があります。これを行うには、次の例のように、アプリケーションのfaces-config内でカスタム・マネージドBeanを構成します。

<managed-bean>
<managed-bean-name>myP13nContext</managed-bean-name>
<managed-bean-class>oracle.wcps.client.PersonalizationContext
</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>

72.3.2 JSPページからのデータ統合クライアント・サービスのコール

データ統合クライアントは

JSPページとともに使用でき、その方法はJava Server Facesページ内で使用する場合と類似しています(第72.3.1項「JSFページからのデータ統合クライアント・サービスのコール」を参照)。ただし、次の例のように、<jsp:useBean>を使用してBeanを登録する必要があります。

<jsp:useBean id="p13nContext" class="oracle.wcps.client.PersonalizationContext" scope="session"/>
<c:out value="${p13nContext.conductor['http://weblogic:webl0gic@localhost:7001/wcps/api/conductor'].namespaces['default'].scenario['my_scenario_name'].withInput['question=Does JSP work?'].results}"/>

Beanの状態をクリアする場合、次のようなスクリプトレット・コードを<jsp:useBean>文の後に配置してこれを呼び出すことができます。

<jsp:scriptlet>((oracle.wcps.client.PersonalizationContext)session.getAttribute("p13nContext")).reset();</jsp:scriptlet>

72.3.3 データ統合コンテキスト・オブジェクトのメソッド・リファレンス

表72-2に、データ統合コンテキスト・オブジェクトのメソッドを示します。

表72-2 データ統合コンテキスト・オブジェクトのメソッド・リファレンス

メソッド名

説明

例

reset

起動元のコンテキスト・オブジェクトの状態をクリアします。

#{p13nContext.reset}
#{p13nContext.conductor['ConductorConnection'].reset}
#{p13nContext.conductor['ConductorConnection'].namespaces['MyNamespace'].reset}
#{p13nContext.properties['PropertiesConnection'].namespaces['MyNamespace'].setDefinitions['MyPropertySetDefinition'].set['MyPropertySet'].reset}

update

フォームにバインドされている場合、設定されているプロパティを新しい値で更新します。このメソッドは、PropertySetContextにのみ適用されます。

注意: このメソッドは、フォーム・ベースのアクションの一部としてのみコールできます。

#{p13nContext.properties['PropertiesConnection'].namespaces['MyNamespace'].setDefinitions['MyPropertySetDefinition'].set['MyPropertySet'].update}

results

コンテキスト・オブジェクトの結果を取得します。

PropertySetContextに対しては、プロパティ・セットを、名前とプロパティ・セット定義により(存在する場合)取得します。

ScenarioExecutionContextとParameterizedScenarioExecutionContextに対しては、シナリオの結果を取得します。

#{p13nContext.properties['PropertiesConnection'].namespaces['MyNamespace'].setDefinitions['MyPropertySetDefinition'].set['MyPropertySet'].results}
#{p13nContext.conductor['ConductorConnection'].namespaces['MyNamespace'].scenario['MyScenario'].results}
#{p13nContext.conductor['ConductorConnection'].namespaces['MyNamespace'].scenario['MyScenario'].withInput['input1=val1;input2=value2;input3=value3'].results}

withInput

入力パラメータで指定された名前のシナリオを実行します。入力パラメータは、次の形式に従っている必要があります。

<paramOne>=<valueOne>;<paramTwo>=<valueTwo>;<paramThree>=<valueThree>

各パラメータ名および値は、セミコロンで区切ります。このメソッドは、ScenarioExecutionContextにのみ適用されます。

#{p13nContext.conductor['ConductorConnection'].namespaces['MyNamespace'].scenario['MyScenario'].withInput['input1=val1;input2=value2;input3=value3'].results}

isError

現在のコンテキスト・オブジェクトでエラーが発生したかどうかを判断します。PropertySetContextおよびScenarioExecutionContextにのみ適用されます。

#{p13nContext.conductor['ConductorConnection'].namespaces[myManagedBean.namespace].scenario[myManagedBean.scenario].isError}
#{p13nContext.properties['PropertiesConnection'].namespaces['MyNamespace'].setDefinitions['MyPropertySetDefinition'].set['MyPropertySet'].isError}

errorMessage

現在のコンテキスト・オブジェクトでエラーが発生した場合は、エラー・メッセージを返します。PropertySetContextおよびScenarioExecutionContextにのみ適用されます。

#{p13nContext.conductor['ConductorConnection'].namespaces[myManagedBean.namespace].scenario[myManagedBean.scenario].errorMessage}
#{p13nContext.properties['PropertiesConnection'].namespaces['MyNamespace'].setDefinitions['MyPropertySetDefinition'].set['MyPropertySet'].errorMessage}

72.3.4 シングル・サインオンの有効化

シングル・サインオンを有効化するには、JSF環境とJSP環境の両方からHttpServletRequestにアクセスできる必要があります。javax.servlet.Filter (PersonalizationFilter)の実装によって、ThreadLocalにHttpServletRequestが配置されるため、次の例のように、クライアント内でのアクセスが実現します。

<filter>
<description>Personalization Filter for staging client-side objects.</description>
<filter-name>PersonalizationFilter</filter-name>
<filter-class>oracle.wcps.client.PersonalizationFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>PersonalizationFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>

このフィルタは、wcps-services-client-web-lib内で自動的に構成されます。

73 パーソナライズのためのキャッシュ管理

この章では、パーソナライズ用のキャッシュ管理について説明します。

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

- 第73.1項「パーソナライズ用のキャッシュ管理の概要」

- 第73.2項「キャッシュ構成ファイルの配置および更新」

- 第73.3項「パーソナライズ・コンポーネントでのキャッシュの使用」

- 第73.4項「パーソナライズ・コンポーネント向けのキャッシュの構成」

- 第73.5項「データ・プロバイダ接続上のキャッシュの構成」

- 第73.6項「Oracle Coherenceの監視」

73.1 パーソナライズ用のキャッシュ管理の概要

WebCenter Portalでは、Oracle Coherenceを使用して、パーソナライズ機能用のサーバー側キャッシュを管理します。すべてのWebCenterのインストールには、ローカルのCoherenceライセンスが提供されます。パーソナライズは、Coherenceが使用するさらに複雑な他のモードをサポートしますが、その場合は、適切なCoherenceライセンスを購入する必要があります。

この章では、シナリオやデータ・プロバイダなどの、WebCenter Portalのパーソナライズ機能でのキャッシュの使用方法について説明します。

注意:

これは、キャッシュの概念および手法の基礎を理解していることを前提としています。この章全般では、これらの概念について説明することはありません。また、Oracle Coherenceについても精通していることを前提としています。Coherenceの詳細は、『Oracle Coherenceスタート・ガイド』を参照してください。

また、第66章「Oracle WebCenter Portalアプリケーションのパーソナライズ」で説明されている、WebCenter Portalパーソナライズの概念および機能についても、精通していることが前提です。

73.2 キャッシュ構成ファイルの配置および更新

WebCenter Portalでは、パーソナライズでの使用のため、2つのCoherenceキャッシュ構成ファイルが提供されています。これらのファイルの使用方法は、この項で説明します。

注意:

WebCenter Personalization Server (WCPS)によってインスタンス化されたキャッシュ・ファクトリはすべて、WCPSのクラス・ローダーに固有のものです。

- 第73.2.1項「キャッシュ構成ファイルの格納先」

- 第73.2.2項「キャッシュ構成ファイルの使用」

73.2.1 キャッシュ構成ファイルの格納先

キャッシュ構成ファイルは、次の場所にあります。

$ORACLE_HOME/user_projects/applications/<domain>/conductor-extensions-library/WEB-INF/classes

カスタム構成ファイルを作成した場合は、これと同じディレクトリに格納することが最善の方法です。一方で、これらのファイルはWCPSのWebアプリケーションのクラスパス内であれば、どこでも配置できます。新しいクラスを認識させるには、WCPS Webアプリケーションを再デプロイするか、サーバーを再起動する必要があります。第73.2.2.3項「カスタム・キャッシュ構成ファイルの作成」も参照してください。

73.2.2 キャッシュ構成ファイルの使用

この項では、パーソナライズ機能で使用される、各キャッシュ構成ファイルと、カスタム・キャッシュ構成ファイルの作成について説明します。

73.2.2.1 内部キャッシュ構成ファイル

キャッシュ構成ファイルwcps-coherence-cache-config.xmlは、プロパティ・サービス、コンダクタおよびデータ・プロバイダの中核機能などの、内部の統合コンポーネントをサポートします。

注意:

この構成ファイル内のキャッシュの名前は変更しないでください。ただし、このファイル内のキャッシュ構成パラメータは変更できます。

73.2.2.2 データ・プロバイダのキャッシュ・ファイル

キャッシュ構成ファイル、wcps-dataprovider-cache-config.xmlでは、データ・プロバイダと関連付けられているキャッシュのアドレスが指定されています。このファイルでは、ワイルドカード・パターンが使用されており、wcps-dp-small-contentやmy-custom-cacheなどのいずれのパターンを使用しても、利用者が固有のキャッシュを持てるようにしています。たとえば、wcps-dp-medium-*のようなワイルドカード・パターンは、wcps-dp-small-contentまたはwcps-dp-small-ebsなどのキャッシュ名を指定すると、解決されます。

デフォルトのデータ・プロバイダの構成は、ニーズに合うように変更するか、カスタム・データ・プロバイダをサポートするように、新しいエントリを追加しても構いません。既存のデフォルトの構成へのいかなる変更でも、使用する環境にデプロイされた他のカスタム・データ・プロバイダに影響する可能性があることに注意してください。

デフォルトのデータ・プロバイダのキャッシュ構成には、次のものが含まれます。

- メモリーに実装されたローカル・キャッシュ

- LRU削除ポリシー

- 小容量: 100エントリ、デフォルトは1時間のTTL

- 中容量: 1000エントリ、デフォルトは1時間のTTL

- 大容量: 10000エントリ、デフォルトは1時間のTTL

注意:

Coherenceライセンス機能のアップグレードをサポートするため、これらの構成が変更される場合があります。

このキャッシュ構成ファイルはCoherenceパラメータ・マクロを利用するため、特定のニーズに合わせて容易に変更できます。パラメータに固有のCoherenceドキュメントへのリンクは、構成ファイルそのものの中で提供されています。

利用者は、この構成ファイルに追加のエントリを構成できます。これらのエントリは、パーソナライズ・キャッシュAPIで使用できるようになります。第73.3項「パーソナライズ・コンポーネントでのキャッシュの使用」を参照してください。

73.2.2.3 カスタム・キャッシュ構成ファイルの作成

特定のユース・ケースに対処するため、カスタムCoherenceキャッシュ構成ファイルを作成できます。Coherenceキャッシュ構成ファイルを、次の一般的な規則に準拠させることをお薦めします。

- キャッシュ構成ファイルを次の場所に配置すること。

$ORACLE_HOME/user_projects/applications/<domain>/conductor-extensions-library/WEB-INF/classes

- データ・プロバイダやファンクション・プロバイダなどの、サーバー側のパーソナライズ・コンポーネントで使用されるキャッシュのみを参照すること。これらのコンポーネントの詳細は、第67章「カスタム・データ・プロバイダの実装」および第68章「カスタム・ファンクション・プロバイダの実装」を参照してください。

注意:

実際は、キャッシュ構成ファイルは、WCPS Webアプリケーションのクラス・ローダーから参照可能であれば、どこにでも配置できます。このファイルを上のディレクトリに配置すると、他のWCPSキャッシュ構成ファイルとの整合性を保てます。ただし、キャッシュ構成ファイルを異なる方法で定義およびパッケージ化する場合もあります。

CoherenceCacheFactoryは、URIを使用してファイルをロードするため、キャッシュ構成ファイルは、データ・プロバイダのJARファイルの一部としても、ファイル・システム上の任意の場所でもパッケージ化できます。CoherenceCacheFactoryは、データ・プロバイダのプログラムまたはWCPSサーバーにデプロイされたその他のクラスのプログラムによって使用されます。第73.3.2項「CoherenceCacheFactoryの使用」を参照してください。

注意:

データ・プロバイダのJARファイルは、次の場所にあります。

$DOMAIN_HOME/conductor-extensions-library/WEB-INF/lib.

データ・プロバイダのパッケージ化およびデプロイの詳細は、第67章「カスタム・データ・プロバイダの実装」を参照してください。

新しいクラスを認識させるには、WCPS Webアプリケーションを再デプロイするか、サーバーを再起動する必要があります。

73.3 パーソナライズ・コンポーネントでのキャッシュの使用

データ・プロバイダ、ファンクション・プロバイダおよびカスタム・データ・プロバイダなどのパーソナライズ・コンポーネントは、コンテキストにより、2つの方法の中の1つの方法でCoherenceと連携します。

- CacheFunctionProvider: シナリオのコンテキスト内で使用可能または、任意のデータ・プロバイダでプログラムにより使用可能なメソッドを含みます。ファンクション・プロバイダは、シナリオのコンテキスト内のデータに対する操作を行います。第68.1項「ファンクション・プロバイダの概要」も参照してください。

- CoherenceCacheFactory: WCPSにデプロイされたデータ・プロバイダおよび他のクラスは、このファクトリ・クラスを使用して、プログラムによりキャッシュを実装します。

73.3.1 キャッシュ・ファンクション・プロバイダ

CacheFunctionProviderは、シナリオ内からキャッシュを管理するメソッドを提供します。このファンクション・プロバイダは、CoherenceCacheFactoryクラスに委任し、複数の簡便性メソッドをインクルードします。

キャッシュ・ファンクション・プロバイダのメソッドについては、第69章「ファンクション・プロバイダ・リファレンス」の「キャッシュ・メソッド」で説明されています。

CacheFunctionProviderの接頭辞は、cache (シナリオ・エディタの「式ビルダー」ダイアログに表示される名前)です。図73-1に、「式ビルダー」ダイアログでのキャッシュ・ファンクション・プロバイダを示します。

図73-1 キャッシュ・ファンクション・プロバイダ

例73-1は、キャッシュ・ファンクション・プロバイダのメソッド、getMediumCache()を使用するシナリオのXML構造をリストしています。最初に、キャッシュが返され、変数に格納されます。その後、その変数を使用してキャッシュから特定の値が返されます。

例73-1 シナリオでのキャッシュ・ファンクション・プロバイダの使用

<!-- Check cache first, using CacheFunctionProvider -->
<assign-variable>
<variable>userIdCache</variable>
<expression>${cache:getMediumCache('userIdCache')}</expression>
</assign-variable>

<assign-variable>
<variable>userId</variable>
<expression>${cache:get(userIdCache,username)}</expression>
</assign-variable>

例73-2に、CacheFunctionProviderのメソッドをプログラムを使用してコールする方法を示します。必ず、次をインポートしてください。oracle.wcps.dataprovider.base.CacheFunctionProvider

例73-2 Javaクラスでのキャッシュ・ファンクション・プロバイダの使用

NamedCache myCache = CacheFunctionProvider.getMediumCache("userIdCache");
String userId = (String)myCache.get("jpalmer");

注意:

例73-1および例73-2の両方の例で、wcps-cp-medium-userIdCacheという名前のキャッシュが返されています。このキャッシュがまだ存在していない場合は、作成されます。

例73-3に、カスタム・キャッシュの使用例を示します。この例では、返されるキャッシュには接頭辞がなく、完全なキャッシュ名ではありません。

例73-3 Javaクラスでのキャッシュ・ファンクション・プロバイダの使用

NamedCache myCache = CacheFunctionProvider.getCustomCache("my-custom-cache");

73.3.2 CoherenceCacheFactoryの使用

WCPSにデプロイされたデータ・プロバイダおよび他のクラスは、このファクトリ・クラスを使用して、プログラムによりキャッシュを実装します。このクラスは、デプロイ先のWebアプリケーションにスコープ設定されています。

CoherenceCacheFactoryのコールするメソッドは1つです。

public static NamedCache getCache(String cacheConfigFile, String cacheName)

例73-4は、前の第73.2.2.3項「カスタム・キャッシュ構成ファイルの作成」で説明したベスト・プラクティスに従って、WCPSのクラスパスにキャッシュ構成ファイルがある場合の、getCache()のコール方法を示しています。

例73-4 クラスパスにある構成ファイルを使用したgetCache()のコール

NamedCache myCache = CoherenceCacheFactory.getCache("content-cache-config.xml", "userIdCache");
String userId = (String)myCache.get("jpalmer");

例73-5は、ファイル・システムの別の場所に、キャッシュ構成ファイルが配置されている場合のgetCache()のコール方法を示しています。

例73-5 ファイル・システムにある構成ファイルを使用したgetCache()のコール

NamedCache myCache = CoherenceCacheFactory.getCache("file:///myconfig/content-cache-config.xml", "userIdCache");
StringuserId = (String)myCache.get("jpalmer");

73.4 パーソナライズ・コンポーネント向けのキャッシュの構成

この項では、構成ファイルでのキャッシュの構成方法について説明します。wcps-datatprovider-cache-config.xmlに構成されている、事前構成済のキャッシュおよびカスタム・キャッシュについて説明します。その後、キャッシュが独自の構成ファイルを持つ場合について説明します。

- 第73.4.1項「事前構成済キャッシュ」

- 第73.4.2項「カスタム・キャッシュ」

- 第73.4.3項「キャッシュが独自の構成ファイルを持つ場合」

73.4.1 事前構成済キャッシュ

構成ファイルには、事前構成済キャッシュ(小容量、中容量、大容量)が含まれています。これらのキャッシュには、キャッシュ・ファンクション・プロバイダ(第73.3.1項「キャッシュ・ファンクション・プロバイダ」参照)を介してアクセスできます。アクセス・メソッドについては、第69章「ファンクション・プロバイダ・リファレンス」の「キャッシュ・メソッド」で説明されています。これらには次のものがあります。

- getSmallCache(String cacheName)

- getMediumCache(String cacheName)

- getLargeCache(String cacheName)

注意:

wcps-dataprovider-cache-config.xml内のパターンと一致するように、内部の接頭辞の後にcacheNameパラメータが追加されます。たとえば、次のようになります。wcps-dp-large-<cacheName>詳細は、第73.2.2.2項「データ・プロバイダのキャッシュ・ファイル」を参照してください。

73.4.2 カスタム・キャッシュ

カスタム・キャッシュは、新しいエントリがwcps-dataprovider-cache-config.xmlに追加されていることを前提にしています。構成ファイルに指定されたとおりに構成された、cacheName (接頭辞なし)を使用してキャッシュを返します。

wcps-dataprovider-cache-config.xmlに構成されたカスタム・キャッシュを返すために使用される、キャッシュ・ファンクション・プロバイダ・メソッドは、次のとおりです。

getCustomCache(String cacheName)

詳細は、第69章「ファンクション・プロバイダ・リファレンス」の「キャッシュ・メソッド」を参照してください。

73.4.3 キャッシュが独自の構成ファイルを持つ場合

WCPS Webアプリケーションのクラス・ローダーで、構成ファイルconfigFileが使用可能である必要があります。第73.2.2.3項「カスタム・キャッシュ構成ファイルの作成」も参照してください。

カスタム・キャッシュ構成ファイルに構成されたキャッシュを返すために使用される、ファンクション・プロバイダのメソッドは、次のとおりです。

getCache(String myConfigFile.xml, String cacheName)

注意:

キャッシュ構成ファイルは、アプリケーションのクラスパス内に存在する必要があります。言い換えると、コールする側のクラスパス内であれば、どこにあっても構いません。

詳細は、第69章「ファンクション・プロバイダ・リファレンス」の「キャッシュ・メソッド」を参照してください。

73.5 データ・プロバイダ接続上のキャッシュの構成

キャッシュ名は、データ・プロバイダ内にハードコードできます。または、キャッシュ名をパラメータとして、wcps-connections.xmlプロバイダ構成ファイルに設定できます。このファイルの詳細は、第67.5.6項「WCPS接続構成ファイルの更新」で説明しています。

ヒント:

キャッシュ名を接続パラメータとして設定することの利点は、実行時にキャッシュ名を変更できることです。

例73-6は、wcps-connnections.xmlへのキャッシュの構成方法を示しています。<connection>要素には、2つのプロパティを追加する必要があります。

- <cacheName>: キャッシュの名前を指定します。この例では、名前はdemo-cacheです。

- <configFileUri>: ファイル・システム上のキャッシュ構成ファイルの場所を指定します。この例では、この値はfile:///mydir/demo-cache.xmlです。

この例では、<connection>要素には、demo-cacheという値の<cache-name>プロパティが設定されています。

例73-6 データ・プロバイダの接続構成

<connection>
<connection-name>TestConnection</connection-name>
<connection-type>my.test.connection</connection-type>
<namespace>default</namespace>
<properties>
<property>
<name>cacheName</name>
<value>demo-cache</value>
</property>
<property>
<name>configFileUri</name>
<value>file:///Users/jpalmer/demo-cache.xml</value>
</property>
</properties>
</connection>

73.6 Oracle Coherenceの監視

Coherenceには、そのキャッシュを監視するためのMBeanコンソールが用意されています。サーバーのプロパティを設定して、この機能を有効にする方法の詳細は、「JMXを使用したOracle Coherenceの管理」を参照してください。

図73-2 Coherence監視コンソール

第XII部

WebCenter Portalアプリケーションの完成

第XII部の内容は次のとおりです。

- 第74章「WebCenter Portal Frameworkアプリケーションの保護」

- 第75章「複数言語に対応したポータルの構築」

74 WebCenter Portal Frameworkアプリケーションの保護

この章では、Portal Frameworkアプリケーションで提供されるセキュリティのメカニズムおよび機能について説明し、Oracle ADFセキュリティを使用して認証および認可を処理する方法について紹介します。

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

- 第74.1項「Portal Frameworkアプリケーションのセキュリティの概要」

- 第74.2項「アプリケーション・ロールの作成」

- 第74.3項「ADFセキュリティの構成」

- 第74.4項「ロール・マネージャ・タスク・フローの使用」

- 第74.5項「エンタープライズ・ロール・メンバー・タスク・フローの使用」

- 第74.6項「ページ階層セキュリティ・エディタの使用」

- 第74.7項「ログイン・ページおよびログイン・コンポーネントの作成」

- 第74.8項「ログイン・ポートレットの作成」

- 第74.9項「ログイン・ページへのポートレットの追加」

- 第74.10項「自己登録ページの作成」

- 第74.11項「パスワードのリセット・ページの作成」

- 第74.12項「ポートレット・パーソナライズをテストするための基本認証の構成」

- 第74.13項「外部アプリケーションの使用」

- 第74.14項「キーストアへのカスタム証明書の登録」

- 第74.15項「ポートレットおよびカスタマイズ可能コンポーネントの継承されたセキュリティのオーバーライド」

- 第74.16項「アイデンティティ伝播メカニズム」

- 第74.17項「WS-Securityを使用したWSRPプロデューサを介するアイデンティティ伝播の保護」

- 第74.18項「PDK-Javaポートレットのセキュリティの実装」

- 第74.19項「WebCenter Portal偽装ELおよびAPIの使用」

- 第74.20項「セキュリティ問題のトラブルシューティング」

74.1 Portal Frameworkアプリケーションのセキュリティの概要

Portal Frameworkアプリケーションは動的であり、カスタマイズやプリファレンスといった形でユーザーからの入力が多く発生するため、柔軟なセキュリティ・モデルが必要になります。WebCenterのセキュリティ・モデルは、従来のJ2EEセキュリティ・モデルではなくADFセキュリティ・モデルに基づいています。ADFセキュリティの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のFusion WebアプリケーションでのADFセキュリティの有効化に関する項を参照してください。

デフォルトでは、Portal Frameworkアプリケーションは、ADFセキュリティで構成されます。デフォルトのユーザー名とパスワード(weblogic/weblogic1)が自動的に作成され、このユーザー名とパスワードの組合せをテスト用にただちに使用できます。ADFセキュリティの構成の詳細は、第74.3項「ADFセキュリティの構成」を参照してください。Portal Frameworkアプリケーションのテンプレートには、デフォルトのログインおよびログアウト・ページも用意されています。

Portal Frameworkアプリケーションには、ロール・マネージャ・タスク・フローとページ階層セキュリティ・エディタという2つのセキュリティ・ツールも用意されています。ロール・マネージャ・タスク・フローでは、ユーザーのロールおよび権限を定義するために事前定義されたランタイム・セキュリティ管理機能が提供されます。ページ階層セキュリティ・エディタを使用すると、継承または委任されたセキュリティ(あるいはその両方)をアプリケーション・ページに迅速に適用できます。この2つのセキュリティ・ツールの詳細は、第74.4項「ロール・マネージャ・タスク・フローの使用」および第74.6項「ページ階層セキュリティ・エディタの使用」を参照してください。

74.2 アプリケーション・ロールの作成

次の3つのロールがデフォルトで用意されています。

- Administrator: アプリケーションのAdministratorロールのデフォルト・メンバーは、エンタープライズのAdministratorロールです。このロールはドメインに対する管理者権限を持ち、そのデフォルト・メンバーは、weblogicです。

- AppConnectionManager: AppConnectionManagerロールのデフォルト・メンバーは、アプリケーションのAdministratorロールです。このロールは、アプリケーションに対する管理者権限を持ちます。

- AppConnectionViewer - AppConnectionViewerロールのデフォルト・メンバーはauthenticated-roleです

Administratorロールを使用すると、アプリケーションにナビゲーションとセキュリティを設定して、権限を他のユーザーに委任できます。

AppConnectionManagerおよびAppConnectionViewerは、個々のアプリケーション接続を管理および確認するために定義されているロールです。通常、アプリケーション接続は、Fusion Middleware ControlまたはWLSTコマンドを使用して構成および管理します。ただし、ポートレット・プロデューサおよび外部アプリケーションの接続は、アプリケーションのランタイム管理ページ(個別に実装されている場合はロール・マネージャ・タスク・フロー)を使用して構成できます。これらの接続を管理または確認するには、前述のいずれかのロールに属している必要があります。デフォルトのロールの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアプリケーション・ロールの理解に関する項を参照してください。

これらのロールのメンバーは、実行時に管理者ページ(個別に実装されている場合はロール・マネージャ・タスク・フロー)を使用して、またはJDeveloperでJAZNエディタを使用して追加できます。管理者は、外部アプリケーションとポートレット・プロデューサの接続を即時構成可能であり、これらの接続を確認できるのは、その他の認証ユーザーのみになります。同様に、アプリケーションにユーザーを追加するには、ADFセキュリティ・ポリシー・エディタで「ユーザー」タブを選択し、追加(+)アイコンをクリックしてユーザー名およびパスワードを指定します。

アプリケーション・ロールを作成するには:

1. 次のいずれかの方法でADFセキュリティ・ポリシー・エディタにアクセスします。

- META-INFフォルダの下にある「アプリケーション・リソース」パネルのjazn-data.xmlファイルに移動します。jazn-data.xmlを右クリックし、ポップアップ・メニューから「開く」を選択します。「アプリケーション・ロール」タブを開きます。

- アプリケーション名を右クリックし、「保護」→「アプリケーション・ロール」の順に選択します。

- 「アプリケーション」メニューから、「保護」→「アプリケーション・ロール」の順に選択します。

2. アプリケーション・ロール・エディタで、追加(+)アイコンをクリックして「新規ロール」を選択します。

3. 新規ロールの名前、表示名および説明を入力します。

4. ファイルを保存します。

同様に、アプリケーションにユーザーを追加するには、ADFセキュリティ・ポリシー・エディタで「ユーザー」タブを開き、追加(+)アイコンをクリックしてユーザー名およびパスワードを指定します。

74.3 ADFセキュリティの構成

Portal Frameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。この項では、ADFセキュリティの構成ウィザードについて説明します。このウィザードを使用すると、Portal Frameworkアプリケーションのデフォルト設定をオーバーライドできます。また、アプリケーションでPortal Frameworkアプリケーション・テンプレートを使用しない場合についても説明します(アプリケーションの作成時に「標準ポータル機能のアプリケーションの構成」チェック・ボックスを選択しなかった場合など)。この項では、Portal Frameworkアプリケーションの作成の際と、コンポーネントが使用される際に、それぞれ生成される権限付与についても説明します。

この項には次のサブセクションが含まれます:

- 第74.3.1項「ADFセキュリティ設定の構成」

- 第74.3.2項「Portal Frameworkアプリケーションの自動セキュリティ権限付与」

74.3.1 ADFセキュリティ設定の構成

この項では、ADFセキュリティの構成ウィザードについて説明します。このウィザードを使用すると、Portal Frameworkアプリケーションのデフォルト設定をオーバーライドできます。また、アプリケーションでPortal Frameworkアプリケーション・テンプレートを使用しない場合についても説明します(アプリケーションの作成時に「標準ポータル機能のアプリケーションの構成」チェック・ボックスを選択しなかった場合など)。

ADFセキュリティ設定を構成するには:

1. ポータル・アプリケーションを開きます。

2. 次のいずれかの方法でADFセキュリティの構成ウィザードにアクセスします。

- 「アプリケーション」メニューから、「保護」→「ADFセキュリティの構成」の順に選択します。

- アプリケーション名を右クリックし、「保護」→「ADFセキュリティの構成」の順に選択します。

3. 「ADFセキュリティの有効化」ページで、Portal Frameworkアプリケーションで通常選択される「ADF認証および認可」を選択します。

図74-1 ADFセキュリティ・ウィザードの「ADFセキュリティ」ページ

4. 「次へ」をクリックします。

5. デフォルトでフォームベース認証が選択されていることに注意してください。
アプリケーションの保護プロセスを簡単にするには、図74-2に示すように、「フォームベース認証」で「デフォルト・ページの生成」オプションを選択します。

注意:

Portal Frameworkアプリケーションには、デフォルトでログイン・ページとエラー・ページが用意されています。Portal Frameworkアプリケーション・テンプレートを使用して構築されていないアプリケーションでは、「デフォルト・ページの生成」オプションを選択する必要があります。

「デフォルト・ページの生成」を選択しない場合は、カスタムのログイン・ページおよびエラー・ページを作成できます。カスタム・ログイン・ページの作成の詳細は、第74.7項「ログイン・ページおよびログイン・コンポーネントの作成」を参照してください。

図74-2 ADFセキュリティ・ウィザードの認証ページ

6. 「次へ」をクリックします。

7. 「自動ポリシー付与の有効化」ページでは、図74-3に示すように、アプリケーション開発者が最初にADFポリシー付与を定義することなくADFリソースをパブリックにするかどうかを選択します。標準のセキュリティ実装では、「自動付与なし」オプションを選択できます。
ただし、この場合は、アプリケーション内の各ページに権限を個別に付与する必要があります。

図74-3 「自動ポリシー付与」ページ

自動ポリシー付与を有効化すると、すべてのADFリソースに対する表示権限がtest-allアプリケーション・ロールに作成され、publicロールがデフォルト・メンバーになります。このオプションを選択することで、ADF認可で適用されるアクセスの制限がなくなり、アプリケーション・リソースの実行およびテストが容易になります。自動ポリシー付与を無効にして、デフォルトですべてのADFリソースを保護することもできます。

ADFリソースへのアクセス権を付与するポリシー・ストアを明示的に構成する場合は、「自動付与なし」を選択します。これにより、test-allアプリケーション・ロールへの自動付与が行われなくなります。ただし、アプリケーションでWebCenter Portalのタスク・フローが使用されると、WebCenter拡張機能によりそれらのタスク・フローに適切な権限が自動的に付与され、authenticated-roleロールに表示アクセス権が付与されます。タスク・フローを介して付与される特定の権限の詳細は、第74.3.2項「Portal Frameworkアプリケーションの自動セキュリティ権限付与」を参照してください。

注意:

デフォルトでは、タスク・フローにアクセスするために付与される権限は、anonymous-userです。匿名アクセス権はresourceViewerタスク・フローに対しても提供され、これにより、アクティビティ・ストリームまたは検索でデータを検索する際にリソースが表示可能になります。目的の機能に対するパブリックまたは匿名アクセス権がない場合は、anonymous-roleに付与されているすべての権限をauthenticated-roleに移動する必要があります。authenticated-roleに作成された権限はjazn-data.xmlファイルのソース・ビューで表示できます。

anonymous-roleまたはauthenticated-roleのデフォルトの権限がアプリケーションに対して適切でない場合は、アプリケーションのjazn-data.xmlファイルのソース・ビューを開き、適切なロールに権限をカット・アンド・ペーストすることで変更できます。

JDeveloperでtest-all(パブリック)アプリケーション・ロールに表示権限を付与し、このポリシーをすべてのアプリケーションの既存のADFタスク・フロー、およびユーザー・インタフェース・プロジェクト内のすべてのWebページに適用する場合は、「既存のオブジェクトのみに付与」を選択します。

JDeveloperでtest-allアプリケーション・ロールに表示権限を付与し、このポリシーをすべてのADFタスク・フロー、および開発者がユーザー・インタフェース・プロジェクトで作成するWebページに適用する場合は、「すべてのオブジェクトに付与」を選択します。ウィザードの初回実行時には、「すべてのオブジェクトに付与」オプションが表示されることに注意してください。それ以降は、ウィザードの各実行時に「新規オブジェクトに付与」オプションが表示されます。

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

9. 必要に応じて、認証時に特定のようこそページを表示する場合は、図74-4に示すように「認証の成功時にリダイレクト」オプションを選択します。
カスタムのようこそページを作成することも、ウィザードでデフォルトのようこそページを作成することもできます。プロセスを簡単にするには、「デフォルトの生成」を選択します。

図74-4 「認証されたようこそページを指定」

10. 図74-5に示すような「サマリー」ページが開きます。

図74-5 「サマリー」ページ

11. 「終了」をクリックします。
操作の完了に時間がかかる場合があります。

12. 「セキュリティ・インフラストラクチャが作成されました」ダイアログで、「OK」をクリックします。

74.3.2 Portal Frameworkアプリケーションの自動セキュリティ権限付与

表74-1は、標準のポータル機能で構成されたPortal Frameworkアプリケーションで自動的に付与されるセキュリティの権限を示しています。

注意:

アプリケーションへのパブリックまたは匿名アクセス権を持っていない場合は、現在anonymous-roleに与えられている権限は、次のWLSTコマンドを使用して除去することができます。

revokePermission(appStripe="papp1#V2.0",principalClass=
"oracle.security.jps.internal.core.principals.JpsAnonymousRoleImpl",
principalName="anonymous-role",
permClass="oracle.adf.controller.security.TaskFlowPermission",
permActions="view", permTarget="/oracle/webcenter/.*")

表74-1 Portal Frameworkアプリケーションの自動セキュリティ権限付与

ロール

付与

アクション

リソース名

anonymous-role

TaskflowPermission

表示

/oracle/webcenter/siteresources/scopedMD/.*

/oracle/webcenter/portalapp/.*

/oracle/webcenter/navigationtaskflows/view/pagebreadcrumb-definition.xml#pagebreadcrumb-definition

/oracle/webcenter/navigationtaskflows/view/pagemenu-definition.xml#pagemenu-definition

/oracle/webcenter/navigationtaskflows/view/pagetree-definition.xml#pagetree-definition

/oracle/webcenter/navigationtaskflows/view/.*

/oracle/webcenter/.*

RegionPermission

表示

oracle.webcenter.siteresources.scopedMD.*

oracle.webcenter.taskflow.view.ContainerPageDef

oracle.webcenter.taskflow.view.ViewerPageDef

oracle.webcenter.taskflowstyle.view.PreviewPageDef

oracle.webcenter.page.pstemplates.*

oracle.webcenter.portalapp.pagetemplates.*

oracle.webcenter.portalapp.pages.loginPageDef

oracle.webcenter.portalapp.pages.errorPageDef

oracle.webcenter.portalapp.pages.navigation_rendererPageDef

HierarchicalResource権限

表示

serviceID=oracle.webcenter.page,scopeID=s8bba98ff_4cbb_40b8_beee_296c916a23ed,resourceID=s8bba98ff_4cbb_40b8_beee_296c916a23ed

authenticated-role

RegionPermission

表示

oracle.webcenter.portalwebapp.pages.adminPageDef

oracle.webcenter.collab.*

oracle.webcenter.doclib.*

oracle.webcenter.tagging.*

RegionPermission

付与

oracle.webcenter.taskflow.view.ContainerPageDef

HierarchicalResourcePermission

パーソナライズ、表示

serviceID=oracle.webcenter.page,scopeID=s8bba98ff_4cbb_40b8_beee_296c916a23ed,resourceID=s8bba98ff_4cbb_40b8_beee_296c916a23ed

CatalogPermission

作成、編集

/oracle/webcenter/quicklinks/scopedMD/.*

管理者

HierarchicalResourcePermission

作成、削除、権限付与、管理、パーソナライズ、更新、表示

serviceID=oracle.webcenter.page,scopeID=s8bba98ff_4cbb_40b8_beee_296c916a23ed,resourceID=s8bba98ff_4cbb_40b8_beee_296c916a23ed

WebCenterResourcePermission

管理

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_contentpresenter_.*

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_datacontrol_.*

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_navigation_.*

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_pagestyle_.*

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_catalog_.*

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_pagetemplate_.*

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_skin_.*

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_taskflow_.*

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_taskflowstyle_.*

表74-2はサービスの使用時に付与される権限を示しています。サービスは、当該サービスに属しているコンポーネント(コンポーネント・パレットから)またはタスク・フロー(リソース・パレットから)がページに追加されるたびに使用されます。

jazn-data.xmlファイルに自動的に追加されます。それらの権限はADFセキュリティ・ポリシー・エディタで確認および編集できます。詳細は、第74.3.1項「ADFセキュリティ設定の構成」を参照してください。

注意:

Portal Frameworkアプリケーションが作成されるとき、次の要素

<name>resource=MyApplicationName</name>

(MyApplicationNameは作成したアプリケーションの名前)が、jazn-data.xmlファイルに追加されます。jazn-data.xmlファイルを変更する場合は、そのアプリケーション名がjazn-data.xmlファイルの<policy-store>要素にあるアプリケーション名と一致するようにしてください。このアプリケーション名が一致しないと、WSセキュリティ・アイデンティティ伝播に依存するすべての機能が動作しなくなります。

アプリケーションに対してADFセキュリティが構成されていない場合、これらの権限は追加されませんが、後からセキュリティが構成された場合は、アプリケーションで使用されているすべてのコンポーネントに権限が追加されます。一般的な権限は、どのWebCenter Portalサービスを使用した場合でも必ず付与されます。

表74-2 Portal Frameworkアプリケーションの自動セキュリティ権限付与

サービス

ロール

付与

アクション

リソース名

共通

anonymous-role

TaskFlow権限

表示

/oracle/webcenter/framework/service/controller/taskflows/resourceViewer.xml#resourceViewer

/oracle/webcenter/security/peoplepicker/jsf/taskflows/peoplepicker.xml#peoplepicker

/oracle/webcenter/peopleconnections/personalweb/view/jsf/regions/profile-gallery.xml#profile-gallery

/oracle/webcenter/peopleconnections/profile/view/jsf/regions/extended/extended-profile.xml#extended-profile

/oracle/webcenter/peopleconnections/view/jsf/regions/profile-snapshot.xml#profile-snapshot

/oracle/webcenter/peopleconnections/connections/controller/taskflows/connections-main-view-taskflow.xml#connections-main-view-taskflow

/oracle/webcenter/peopleconnections/connections/controller/taskflows/connections-mini-view-taskflow.xml#connections-mini-view-taskflow

/oracle/webcenter/peopleconnections/connections/controller/taskflows/table-of-connections-taskflow.xml#table-of-connections-taskflow

/oracle/webcenter/peopleconnections/wall/controller/taskflows/WallDetailViewer.xml#WallDetailViewer

/oracle/webcenter/peopleconnections/wall/controller/taskflows/WallViewer.xml#WallViewer

/oracle/webcenter/peopleconnections/kudos/controller/taskflows/KudosDetailViewer.xml#KudosDetailViewer

/oracle/webcenter/peopleconnections/kudos/controller/taskflows/KudosMiniViewer.xml#KudosMiniViewer

/oracle/webcenter/activitystreaming/controller/taskflows/activity-streaming-mainview.xml#activity-streaming-mainview

/oracle/webcenter/activitystreaming/controller/taskflows/activity-streaming-miniview.xml#activity-streaming-miniview

/oracle/webcenter/peopleconnections/.*

/oracle/webcenter/activitystreaming/.*

authenticated-role

Region権限

表示

oracle.webcenter.security.peoplepicker.pageDefs.oracle_webcenter_security_peoplepicker_jsf_pages_PeoplePickerPagePageDef

authenticated-role

CustomPage権限

表示

oracle.webcenter.framework.service.view.pageDefs.resourceExternalPageDef

authenticated-role

Profile権限

編集、共有、ビュー

/oracle/webcenter/peopleconnections/profile/s8bba98ff_4cbb_40b8_beee_296c916a23ed/.*

管理者

WCApp権限

管理

application

管理者

Profile権限

管理

/oracle/webcenter/peopleconnections/profile/s8bba98ff_4cbb_40b8_beee_296c916a23ed/.*

お知らせ

anonymous-role

TaskFlow権限

表示

/oracle/webcenter/collab/announcement/view/taskflows/main-view-definition.xml#announcement-main-view

/oracle/webcenter/collab/announcement/view/taskflows/mini-view-definition.xml#announcement-mini-view

/oracle/webcenter/collab/announcement/view/taskflows/link-existing-view-definition.xml#link-existing-view-definition

/oracle/webcenter/collab/announcement/view/taskflows/config-view-definition.xml#announcement-config-view

/oracle/webcenter/collab/announcement/view/taskflows/announcement-view-definition.xml#announcement-resource-view

/oracle/webcenter/collab/announcement/view/taskflows/.*

authenticated-role

Region権限

表示

oracle.webcenter.collab.announcement.view.pageDefs.oracle_webcenter_collab_announcement_view_jsf_pages_AnnouncementLinkExistingViewPageDef

oracle.webcenter.collab.announcement.view.pageDefs.oracle_webcenter_collab_announcement_view_jsf_pages_AnnouncementLinkResourceViewPageDef

コンポーザ

anonymous-role

Taskflow権限

表示

/oracle/adfinternal/pageeditor/.*

ディスカッション

anonymous-role

Taskflow権限

表示

/oracle/webcenter/collab/forum/view/taskflows/main-task-flow.xml#forum-main

/oracle/webcenter/collab/forum/view/taskflows/miniview-task-flow.xml#forum-miniview

/oracle/webcenter/collab/forum/view/taskflows/popularTopic-task-flow.xml#forum-popularTopic

/oracle/webcenter/collab/forum/view/taskflows/recentTopic-task-flow.xml#forum-recentTopic

/oracle/webcenter/collab/forum/view/taskflows/watchedTopic-task-flow.xml#forum-watchedTopic

/oracle/webcenter/collab/forum/view/taskflows/watchedForum-task-flow.xml#forum-watchedForum

/oracle/webcenter/collab/forum/view/taskflows/config-task-flow.xml#forum-config-view

/oracle/webcenter/collab/forum/view/taskflows/link-existing-task-flow.xml#forum-link-existing

/oracle/webcenter/collab/forum/view/taskflows/link-new-task-flow.xml#forum-link-new

/oracle/webcenter/collab/forum/view/taskflows/message-task-flow.xml#forum-message

/oracle/webcenter/collab/forum/view/taskflows/resource-view-task-flow.xml#forum-resource-view

/oracle/webcenter/collab/forum/view/taskflows/scope-config-task-flow.xml#forum-scope-config-view

/oracle/webcenter/collab/forum/view/taskflows/.*

authenticated-role

Region権限

表示

oracle.webcenter.collab.forum.view.pageDefs.oracle_webcenter_collab_forum_view_jsf_pages_ForumLinkExistingViewPageDef

oracle.webcenter.collab.forum.view.pageDefs.oracle_webcenter_collab_forum_view_jsf_pages_ForumLinkNewViewPageDef

oracle.webcenter.collab.forum.view.pageDefs.oracle_webcenter_collab_forum_view_jsf_pages_ForumLinkResourceViewPageDef

ドキュメント

anonymous-role

Taskflow権限

表示

/oracle/webcenter/doclib/view/jsf/taskflows/presenter/contentPresenter.xml#doclib-content-presenter

/oracle/webcenter/doclib/view/jsf/taskflows/docListViewer.xml#doclib-document-list-viewer

/oracle/webcenter/doclib/view/jsf/taskflows/docViewer/docInfo.xml#doclib-document-information

/oracle/webcenter/doclib/view/jsf/taskflows/explore/explorer.xml#doclib-explorer

/oracle/webcenter/doclib/view/jsf/taskflows/treeNav/treeNavigator.xml#doclib-navigator

/oracle/webcenter/doclib/view/jsf/taskflows/docViewer/documentViewer.xml#doclib-document-viewer

/oracle/webcenter/doclib/view/jsf/taskflows/folderViewer/folderView.xml#doclib-folder-viewer

/oracle/webcenter/doclib/view/jsf/taskflows/mainView.xml#doclib-document-library

/oracle/webcenter/doclib/view/jsf/taskflows/miniProperties/miniProperties.xml#doclib-mini-properties

/oracle/webcenter/doclib/view/jsf/taskflows/recentDocuments.xml#doclib-recent-documents

/oracle/webcenter/doclib/view/jsf/taskflows/richTextEditor/editor.xml#doclib-richtext-editor

/oracle/webcenter/doclib/view/jsf/taskflows/upload/uploader.xml#doclib-upload-document

/oracle/webcenter/doclib/view/jsf/taskflows/versionHistory/history.xml#doclib-version-history

/oracle/webcenter/blog/view/jsf/taskflows/blogDigestViewer/blog-main-view.xml#blog-main-view

/oracle/webcenter/doclib/view/jsf/taskflows/.*

/oracle/webcenter/blog/view/jsf/taskflows/.*

authenticated-role

Region権限

表示

oracle.webcenter.doclib.view.jsf.*

oracle.webcenter.blog.view.jsf.*

外部アプリケーション

anonymous-role

Taskflow権限

表示

/oracle/adfinternal/extapp/view/fragments/extapp-credential-provisioning-taskflow.xml#extapp-credential-provisioning-taskflow

/oracle/adfinternal/extapp/view/fragments/extapp-change-password-taskflow.xml#extapp-change-password-taskflow

リンク

anonymous-role

Taskflow権限

表示

/oracle/webcenter/relationship/view/jsf/resources/links-detail.xml#links-detail

/oracle/webcenter/relationship/view/jsf/resources/links-detail-popup.xml#links-detail-popup

/oracle/webcenter/relationship/view/jsf/resources/links-to-service.xml#link-to-service

/oracle/webcenter/relationship/view/jsf/resources/links-picker-popup.xml#links-picker-popup

/oracle/webcenter/relationship/url/view/jsf/taskflows/linkToUrl.xml#link-to-url

管理者

Relationship権限

管理

*s8bba98ff_4cbb_40b8_beee_296c916a23ed/.*

リスト

anonymous-role

Taskflow権限

表示

/oracle/webcenter/list/view/jsf/regions/main-view-task-flow.xml#main-view-task-flow

/oracle/webcenter/list/view/jsf/regions/list-instance-view-task-flow.xml#list-instance-view-task-flow

/oracle/webcenter/list/view/jsf/regions/.*

authenticated-role

Region権限

表示

/oracle/webcenter/list/templates/lists/.*

管理者

List権限

表示

/oracle/webcenter/list/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed/lists/.*

メール

anonymous-role

Taskflow権限

表示

/oracle/webcenter/collab/mail/view/jsf/regions/compose-task-flow.xml#mail-compose-view

/oracle/webcenter/collab/mail/view/jsf/regions/content-view-definition.xml#mail-content-view

/oracle/webcenter/collab/mail/view/jsf/regions/dl-config-definition.xml#dl-config-view

/oracle/webcenter/collab/mail/view/jsf/regions/mini-view-definition.xml#mail-mini-view

/oracle/webcenter/collab/mail/view/jsf/regions/.*

authenticated-role

Region権限

表示

oracle.webcenter.collab.mail.view.pageDefs.oracle_webcenter_collab_mail_view_jsf_pages_ComposeviewPageDef

oracle.webcenter.collab.mail.view.pageDefs.oracle_webcenter_collab_mail_view_jsf_pages_ContentViewPageDef

通知

anonymous-role

Taskflow権限

表示

/oracle/webcenter/notification/view/jsf/regions/SubscriptionPreferences.xml#SubscriptionPreferences

/oracle/webcenter/notification/view/jsf/regions/SubscriptionsViewer.xml#SubscriptionsViewer

ページ

anonymous-role

TaskFlow権限

表示

/oracle/webcenter/page/view/jsf/fragments/page-create-page.xml#page-create-page

/oracle/webcenter/page/view/jsf/fragments/page-doc-prop-panel-definition.xml#page-doc-prop-panel-definition

/oracle/webcenter/page/view/jsf/fragments/page-doc-sec-panel-definition.xml#page-doc-sec-panel-definition

/oracle/webcenter/page/view/jsf/fragments/golink-prop-panel-definition.xml#golink-prop-panel-definition

authenticated-role

Region権限

作成

oracle_webcenter_page_scopedMD_s8bba98ff_4cbb_40b8_beee_296c916a23ed_.*

管理者

Region権限

カスタマイズ、編集、権限付与、パーソナライズ、表示

oracle_webcenter_page_scopedMD_s8bba98ff_4cbb_40b8_beee_296c916a23ed_.*

投票

anonymous-role

Taskflow権限

表示

/oracle/webcenter/collab/survey/view/jsf/taskflows/list-surveys-definition.xml#list-surveys

/oracle/webcenter/collab/survey/view/jsf/taskflows/take-survey-definition.xml#take-survey

/oracle/webcenter/collab/survey/view/jsf/taskflows/quick-poll-definition.xml#quick-poll

/oracle/webcenter/collab/survey/view/jsf/taskflows/view-results-definition.xml#view-results

/oracle/webcenter/collab/survey/view/jsf/taskflows/take-polls-definition.xml#take-polls

/oracle/webcenter/collab/survey/view/jsf/taskflows/empty-definition.xml#empty-definition

/oracle/webcenter/collab/survey/view/jsf/taskflows/.*

最近のアクティビティ

anonymous-role

TaskFlow権限

表示

/oracle/webcenter/recentactivity/controller/taskflows/recent-activities.xml#recent-activities

/oracle/webcenter/recentactivity/controller/taskflows/.*

RSS

anonymous-role

TaskFlow権限

表示

/oracle/webcenter/rssviewer/view/jsf/fragments/RSSViewerTaskFlow.xml#RSSViewerTaskFlow

/oracle/webcenter/rssviewer/view/jsf/fragments/.*

検索

anonymous-role

TaskFlow権限

表示

/oracle/webcenter/search/controller/taskflows/searchResults.xml#search-view

/oracle/webcenter/search/controller/taskflows/localToolbarSearch.xml#search-toolbar

/oracle/webcenter/search/controller/taskflows/preferences.xml#search-preferences

/oracle/webcenter/search/controller/taskflows/allSavedSearches.xml#all-saved-searches

/oracle/webcenter/search/controller/taskflows/simpleSearchResults.xml#search-simple-view

/oracle/webcenter/search/controller/taskflows/customize.xml#search-customize

/oracle/webcenter/search/controller/taskflows/.*

タグ

anonymous-role

TaskFlow権限

表示

/oracle/webcenter/tagging/controller/taskflows/related-links.xml#tagging-related-links

/oracle/webcenter/tagging/controller/taskflows/launch-dialog.xml#tagging-launch-dialog

/oracle/webcenter/tagging/controller/taskflows/tagging-personal-view.xml#tagging-personal-view

/oracle/webcenter/tagging/controller/taskflows/tag-selection.xml#tag-selection

/oracle/webcenter/tagging/controller/taskflows/related-resources.xml#related-resources

/oracle/webcenter/tagging/controller/taskflows/tag-center-task-flow.xml#tag-center

/oracle/webcenter/tagging/controller/taskflows/tag-center-related-tags.xml#tag-center-related-tags

/oracle/webcenter/tagging/controller/taskflows/tag-center-related-users.xml#tag-center-related-users

authenticated-role

Region権限

表示

oracle.webcenter.tagging.view.pageDefs.oracle_webcenter_tagging_view_jsf_fragments_launch_dialogPageDef

oracle.webcenter.tagging.view.pageDefs.oracle_webcenter_tagging_view_jsf_fragments_tag_centerPageDef

oracle.webcenter.tagging.view.pageDefs.oracle_webcenter_tagging_view_jsf_fragments_tag_center_related_resourcesPageDef

oracle.webcenter.tagging.view.pageDefs.oracle_webcenter_tagging_view_jsf_fragments_tag_center_related_tagsPageDef

oracle.webcenter.tagging.view.pageDefs.oracle_webcenter_tagging_view_jsf_fragments_tag_center_related_usersPageDef

oracle.webcenter.tagging.view.pageDefs.oracle_webcenter_tagging_view_jsf_fragments_tag_center_tag_selectionPageDef

ワークリスト

anonymous-role

TaskFlow権限

表示

/oracle/webcenter/worklist/view/jsf/taskFlowDefs/worklist.xml#worklist

/oracle/webcenter/worklist/view/jsf/taskFlowDefs/.*

74.4 ロール・マネージャ・タスク・フローの使用

ロール・マネージャ・タスク・フローを使用すると、管理者は、アプリケーション・ロールおよびそのメンバーシップ、さらにそのロールに関連付けられたサービス権限を管理できます。ロール・マネージャ・タスク・フローは事前に構成されており、Portal Frameworkアプリケーション・テンプレートを使用して作成されたアプリケーションのランタイム管理ページの「セキュリティ」タブから使用できます。ロール・マネージャのランタイムを使用して、ユーザー・ロールおよびアプリケーション・ロールを管理する方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のユーザー・ロールおよびアプリケーション・ロールの管理に関する項を参照してください。

カスタマイズが更新中に上書きされることを防ぐために、管理ページのソースをカスタマイズしないでください。ただし、デフォルトの管理ページが十分でない場合は、自身の管理ページを書くことも選択できます。この場合、アプリケーションのランタイム・セキュリティ管理の一部としてロール・マネージャ・タスク・フローを使用することができます。次の手順に従ってJSFまたはJSPページを追加し、アプリケーションにそれを含めてください。

Portal Frameworkアプリケーションに、ロール・マネージャ・タスク・フローを追加するには:

1. アプリケーション・タイプとしてPortal Frameworkアプリケーションを選択し、新規アプリケーションを作成します。

2. 必要な可能性のあるすべてのプロジェクト・テクノロジ・ライブラリを追加して、アプリケーションを作成します。「標準ポータル機能のアプリケーションの構成」チェック・ボックスは選択解除しないでください。

3. 新しいJSFページまたはJSPページを作成します。

4. 「リソース・パレット」で「WebCenter Portal - サービス・カタログ」を開き、「タスク・フロー」のリストからSecurity - Role Managerタスク・フローを選択します。

図74-6 「リソース・パレット」 - 「WebCenter Portal - サービス・カタログ」

5. 「ロール・マネージャ」タスク・フローをドラッグし、リージョンとして作成したページにドロップします。

図74-7 ロール・マネージャ・タスク・フロー

6. アプリケーションを作成して管理者としてログインし、ロール・マネージャ・タスク・フローを含むページに移動します。

74.5 エンタープライズ・ロール・メンバー・タスク・フローの使用

エンタープライズ・ロール・メンバー・タスク・フローでは、ロール・マネージャ・タスク・フローに追加のタスク・フローが提供され、それをページに追加することでエンタープライズ・ユーザーおよびエンタープライズ・ロールを監視できるようになります。ロールおよびユーザーの両方がメンバーとしてツリー構造で表示されます。ロールを開くと、そのメンバーが表示されます。

タスク・フローを追加するには、ロール・マネージャ・タスク・フローと同じ手順(第74.4項「ロール・マネージャ・タスク・フローの使用」を参照)を実行し、タスク・フローを次のいずれかに置き換えます。すべてのエンタープライズ・ロール・メンバー・タスク・フローが、単一の必須パラメータ(エンタープライズ・ロール名)を取ることに注意してください。

- セキュリティ - エンタープライズ・ロール - メンバー
このタスク・フローでは、指定したロールのメンバーのリストが表示されます。

- セキュリティ - エンタープライズ・ロール - メンバー検索
このタスク・フローでは、指定したロールのパターンを使用してメンバーのネストされた検索が実行され、メンバーのリストが表示されます。

- セキュリティ - エンタープライズ・ロール - メンバー・ビューア
このタスク・フローでは、エンタープライズ・ロール・メンバー・タスク・フローおよびメンバー検索タスク・フローに表示される「メンバー」タブおよび「検索」タブが単一ページに表示されます。

74.6 ページ階層セキュリティ・エディタの使用

この項では、継承または委任されたセキュリティを、Portal Frameworkアプリケーション・ページに提供する、ページ階層セキュリティの使用方法について説明します。次の項が含まれます:

- 第74.6.1項「ページ階層セキュリティの概要」

- 第74.6.2項「ページ階層の構築」

74.6.1 ページ階層セキュリティの概要

この項では、ページ階層モデルと、Portal Frameworkアプリケーション内でのページ階層セキュリティの動作について説明します。

この項には次のサブセクションが含まれます:

- 第74.6.1.1項「ページ階層モデル」

- 第74.6.1.2項「ページ・レベルのセキュリティおよびページ階層セキュリティ」

- 第74.6.1.3項「継承および委任されるセキュリティ」

74.6.1.1 ページ階層モデル

ページ階層には、階層のルートに設定されたデフォルトのセキュリティ・ポリシーがあります。明示的にオーバーライドされないかぎり、このポリシーは下にあるすべてのページに適用されます。階層内のページでは、継承されたポリシーが新しいポリシーでオーバーライドされることがあり、それによって従属ページの委任管理およびポリシー変更が可能になります。あるページのポリシーがオーバーライドされると、そのページの子はデフォルトで新しいポリシーを継承します。特定のノードで確立されるポリシーは、そのページで各権限受領者およびその子(存在する場合)が持つ権限を示したリストになります。

Frameworkアプリケーションを作成すると、ページ階層のルート・ノードを含むデフォルトのナビゲーション・モデルが作成されます。これら2つの構造は、アプリケーションのページにナビゲーション・フローおよびセキュアなアクセスを提供するために、単独および一元的に機能します。図74-8は、デフォルトのナビゲーション・モデル(default-navigation-model.xml)を示しています。このモデルには、デフォルトのページ階層のノードが含まれています(pages.xml)。

図74-8 デフォルトのナビゲーション・モデル

たとえば、追加のナビゲーション·モデルを追加すると、特定のユーザー・グループに異なるナビゲーション・ビューを提供することができます。各ナビゲーションには、よりきめ細かなナビゲーションおよびセキュリティ・モデルを提供するために1つ以上のページ階層ノードを追加することができます。新しいナビゲーション・モデルの作成の詳細は、第10.2項「ナビゲーション・モデルの作成」を参照してください。ページ階層をナビゲーションに追加する方法の詳細は第10.3.5項「その他のリソースをナビゲーション・モデルに追加する方法」を参照してください。

アプリケーション内にページ階層が1つしかない場合でも、その階層内の任意のノードをナビゲーション・モデルのルート・ノードとして使用できます。たとえば、Human Resources、Support、Sales、Administrationなどの上位レベル・ノードを含むページ階層があるとします。これらの各ノードをナビゲーション・モデルに個別に追加することで、ページ階層の特定のセクションにのみにナビゲーションを作成することができます。

図74-9 ページ階層のルート・ノードの権限

図74-9は、ページ階層のルート・ノードおよび関連する権限を示しています。ルート・ノードを起点にページを追加またはドラッグすることでページ階層を構築できます。管理権限はルート・ノード上で管理者に対してのみ表示されることに注意してください。これにより管理者は、セキュリティを委任できるだけでなく、セキュリティがオーバーライドされているかどうかに関係なく階層内のすべてのページにアクセスできます。つまり、ルート・ノード上で管理権限を持つユーザーはスーパー管理者であり、階層全体のすべてのページにアクセスできます。

74.6.1.2 ページ・レベルのセキュリティおよびページ階層セキュリティ

ページ階層では、Portal Frameworkアプリケーションのページ・レベルのセキュリティに代替のセキュリティ・メカニズムが提供されます。アプリケーションにページを追加する場合、そのページをページ階層に含めなくてもセキュリティを提供することは可能ですが、ページ階層を使用すれば、大規模サイトのコンテンツなどをより便利に管理しやすい方法で保護することができます。階層のルート・ノードまたはホーム・ノードに階層ノードを追加し、そこにページをドラッグ・アンド・ドロップするだけで、そのページにすばやく基本的なセキュリティを提供できます。

注意:

ページ・レベルのセキュリティとページ階層セキュリティは共存できますが、その両方を同じページに適用することはできません。ページを階層ノードに追加する場合は、以前のページ・レベルの権限がすべて消去されることにも注意してください。

74.6.1.3 継承および委任されるセキュリティ

ページ階層モデルでは、カスケード型のロール・ベース・セキュリティを提供するノード構造が使用されており、ここでは、各子ノードが親のセキュリティ権限を継承します。ページをノードに追加することで、アプリケーション・ページのセキュリティを迅速に構成できます。

特定のノードでアクションを実行するには、そのノードで必要な権限、またはセキュリティを委任(オーバーライド)している直接の親で必要な権限を所有している必要があります。ただし、ページを表示するには、そのルート・ページまでの階層権限上にある全ページの表示アクセス権が必要です。

ノードの親から継承される基本的なセキュリティに加えて、委任セキュリティを子ノードに適用することで、本来継承されるセキュリティを制限またはオーバーライドすることもできます。ページ階層セキュリティのこのような機能の詳細は、第74.6.2項「ページ階層の構築」を参照してください。

注意:

継承セキュリティは、最初に管理者によってのみ移入可能なルート・ノードを介してカスケードされます。他のユーザーによる権限の作成および委任を可能にするには、まず管理者がそれらの権限を委任する必要があります。どのような場合でも、権限はツリー内で下位にカスケードされます(つまり、ユーザーは親ノードの設定を変更できません)。また、ユーザーが他のユーザーに委任できるのは、自身の権限またはその権限のサブセットのみになります。

74.6.2 ページ階層の構築

この項では、ページ階層セキュリティを使用して親ページのロール・ベース・セキュリティ設定を子ページに自動的にカスケードする方法と、各ページ・ノードにおけるセキュリティの委任方法について説明します。

この項には次のサブセクションが含まれます:

- 第74.6.2.1項「ナビゲーションへのページ階層の追加」

- 第74.6.2.2項「ページ階層へのページの追加」

- 第74.6.2.3項「セキュリティの委任」

74.6.2.1 ナビゲーションへのページ階層の追加

デフォルトのナビゲーション・モデルのデフォルトのページ階層に加えて、ページ階層ノードをデフォルトのページ階層からアプリケーション内のナビゲーションにルート・ノードとして追加できます。ナビゲーションへのページ階層の追加の詳細は、第10.3.5項「その他のリソースをナビゲーション・モデルに追加する方法」を参照してください。

74.6.2.2 ページ階層へのページの追加

この項では、JSFページまたはJSPページをページ階層に追加する方法について説明します。

注意:

継承セキュリティ・モデルの競合の問題を回避するため、1つのページがページ階層内で表示されるのは1回のみです。

JSFページまたはJSPページをページ階層に追加するには:

1. 次のいずれかの方法を使用して、JDeveloperでページ階層エディタを開きます。

- /oracle/webcenter/portalapp/pagehierarchyフォルダを右クリックします
または

- /oracle/webcenter/portalappの下にあるいずれかの.jspxページを右クリックして、ポップアップ・メニューから「ページ階層の編集」を選択します

2. ページを追加するノードを選択して、次のいずれかを実行します。

- 「ページの追加」アイコンをクリックし、ブラウザでページを見つけて追加します
または

- 適切なノードの下にあるナビゲーションからページをドラッグ・アンド・ドロップします

3. 必要に応じて、さらにページを追加するか、「ページの削除」アイコンを使用して不要なページを削除します。

74.6.2.3 セキュリティの委任

この項では、ノードおよびその子ページの権限を委任することで継承セキュリティをオーバーライドする方法について説明します。ページのセキュリティは、ランタイム管理ページを使用して委任することもできます。ランタイム管理ページを使用したセキュリティの委任の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアプリケーション・ロールおよび権限の管理に関する項を参照してください。

委任されたセキュリティで継承セキュリティをオーバーライドするには:

1. JDeveloperでページ階層(pages.xml)を開きます。

2. 継承セキュリティのオーバーライドを開始するノードを選択します。

3. 「表示」チェック・ボックスを選択または選択解除して、ページまたはリソースを表示するかどうかを指定します。すべてのユーザーに常にリソースを表示するには、このチェック・ボックスを選択します。すべてのユーザーで常にリソースを非表示にするには、このチェック・ボックスの選択を解除します。

4. 「セキュリティの委譲」を選択します。
委任するセキュリティの「セキュリティ」オプションが表示されます(図74-10を参照)。

図74-10 「ページ階層」 - 「セキュリティの委譲」

5. このページおよびその子ページのロールの権限を選択または選択解除します。

6. 使用可能な他のユーザー・ロールの権限を指定するには、追加アイコン(+)をクリックして必要なロールを選択します。表内にそのロールの新しい行が作成されます。既存ロールの権限を削除するには、表内の該当する行を選択し、削除アイコン(X)をクリックします。

注意:

「追加」リスト内のロール名は、アプリケーションのポリシー・ストアで定義されているアプリケーション・ロールに対応します。セキュリティの委任は、設計時にアプリケーション・ロールに対してのみ実行できます。ただし、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアプリケーション・ロールおよび権限の管理に関する項で説明しているように、ユーザー・ロールおよびエンタープライズ・ロールはランタイム管理ページを使用して実行時に追加できます。

74.7 ログイン・ページおよびログイン・コンポーネントの作成

ログイン・リンクやログアウト・リンクをパブリックのようこそページ、またはログイン・バッキングBean (LoginBackingBean)を使用して他のページに追加して、アプリケーション使用中にログインおよびログアウトをユーザーが明示的に行えるようにします。Beanは、ログインおよびログアウトをするためにユーザーが使用できるメソッドを提供します。

このBeanを使用するには、次の手順に従って、単一のページを作成し、それをログインおよびログアウトを実行するためのBeanにバインドします。

1. JSFページを作成します。

2. LoginBackingBeanをfaces-config.xmlファイルまたはtaskflow.xmlファイルに追加します。

3. ユーザー名、パスワード、ログイン・リンクおよびログアウト・リンクを指定してページを作成します。

4. そのユーザー名とパスワードを、Beanのユーザー名とパスワードにバインドします。

5. 次の例に示すように、ログイン・リンクおよびログアウト・リンクをそれぞれdoLoginメソッドおよびdoLogoutメソッドにマップします。

<af:subform id="pt_sf1" defaultCommand="pt_logincb"
rendered="#{attrs.showLogin and !securityContext.authenticated}">
<af:panelFormLayout id="pt_pfl1">
<af:panelLabelAndMessage id="pt_plam1" label="User Name"
styleClass="NoLabelWrap"
labelStyle="font-size:small;color:white;">
<af:inputText id="pt_it1" simple="true"
value="#{o_w_s_l_LoginBackingBean.userName}"
columns="15"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="pt_plam2" label="Password"
styleClass="NoLabelWrap"
labelStyle="font-size:small;color:white;">
<af:inputText id="pt_it2" simple="true"
value="#{o_w_s_l_LoginBackingBean.password}"
columns="15" secret="true"/>
</af:panelLabelAndMessage>
</af:panelFormLayout>
<af:spacer width="3" height="3" id="pt_s2"/>
<af:panelGroupLayout id="pt_pgl14" layout="horizontal"
halign="end">
<af:commandLink id="pt_logincb" text="Login"
action="#{o_w_s_l_LoginBackingBean.doLogin}"
inlineStyle="font-size:small;color:white;"/>
<af:spacer id="pt_s3" width="5px"/>
</af:panelGroupLayout>
</af:subform>

ログイン・メソッドおよびログアウト・メソッドは、アクションにマップして、ログインおよびログアウト後にfaces-config.xmlのナビゲーション・ルールで使用可能な値を戻します。faces-config.xml内の次のエントリは、Portal Frameworkアプリケーションにおいてデフォルトで生成されます。

<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>login_success</from-outcome>
<to-view-id>/pages_home</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>logout_success</from-outcome>
<to-view-id>/pages_home</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>

これにより、ログインおよびログアウト後の移動先が定義されます(この例では、いずれの場合もホーム・ページに移動します)。この動作を変更するには、faces-config.xml内でこれらのルールを変更して、たとえば、ユーザーを別のページにリダイレクトするようにします。

faces-config.xmlファイルで使用できる他の構成要素のリファレンスは、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADF Faces構成に関する項を参照してください。

74.8 ログイン・ポートレットの作成

アプリケーションのログイン・ポートレットの作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

74.9 ログイン・ページへのポートレットの追加

アプリケーションにADF Facesベースのログイン・ページを作成する方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。この項では、そのようなログイン・ページにポートレットを追加することで、Frameworkアプリケーションの他のページと同じような外観のログイン・ページを作成します。

続行前に、ポートレット・プロデューサが登録されていることを確認します。詳細は、第63章「ポートレットの消費」を参照してください。

ポートレットをログイン・ページに追加するには、次の手順を実行します:

1. ログイン・ページに追加した最初のcust:panelCustomizableタグ内のh:formタグに、PanelCustomizableをドラッグします。

2. コンポーネント・パレットから、リッチ・テキスト・ポートレット・プロデューサを選択し、リストからリッチ・テキスト・ポートレットを選択して「PanelCustomizable」コンポーネントの上にドラッグします。

3. コンポーネント・パレットから、「ADF Faces Core」を選択し、「ObjectSeparator」をリッチ・テキスト・ポートレットの下の「PanelCustomizable」コンポーネントの上にドラッグします。

4. コンポーネント・パレットから、OmniPortletプロデューサを選択し、リストからOmniPortletを選択して「PanelCustomizable」コンポーネントの上にドラッグします。

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

ログイン・プロセスの一部としてコンテナからログイン・ページが呼び出されるため、適切なポートレットおよびセキュリティのコンテキストを確立するために、リクエストをADFバインディング・フィルタに転送する必要があります。このためには、web.xmlファイル内でADFバインディング・フィルタのマッピングを構成する必要があります。これを行うには、次の手順を実行します:

1. アプリケーション・ナビゲータで、「WEB-INF」ノードを開き、「web.xml」を右クリックし、「プロパティ」を選択してプロパティ・パレットを開きます。

2. 左パネル内で「フィルタ・マッピング」を選択し、「add」をクリックして、adfBindingsフィルタに新しいマッピングを定義します。これにより、「Webアプリケーション・フィルタ・マッピングの作成」ダイアログ・ボックスが表示されます。

3. フィルタ名として「adfBindings」を指定し、「サーブレット名」オプションをクリックし、サーブレット名としてFacesサーブレットを指定します。図74-11に示すように、ディスパッチャ・タイプとして「フォワード」および「インクルード」が選択されていることを確認します。

図74-11 「Webアプリケーション・フィルタ・マッピングの作成」ダイアログ・ボックス

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

『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の手順に従い、ログイン・ページの作成を完了します。

74.10 自己登録ページの作成

自己登録ページは、WebCenter Portal自己登録タスク・フローを使用して作成するか、CreateUserHelperで提供されるユーザーAPIとロールAPIの使用方法を示す指定のサンプルをベースにしてカスタムで構築できます。この種類の自己登録では、パブリック・ユーザーがアプリケーションに独自のログインおよびパスワードを作成するための方法が提供されます。

また、WebCenter Portalパブリック招待タスク・フローを使用して、組織の外部にいるユーザーを自己登録に招待することもできます。この2種類の自己登録ページとその実行時動作の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の自己登録の有効化に関する項を参照してください。

この項には次のサブセクションが含まれます:

- 第74.10.1項「WebCenter Portal自己登録タスク・フローの統合」

- 第74.10.2項「カスタム自己登録ページの構築」

74.10.1 WebCenter Portal自己登録タスク・フローの統合

次に示すように、Frameworkアプリケーション内のWebCenter Portalで提供されている自己登録ページを統合できます。タスク・フローの実行時動作の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の任意のユーザーの自己登録の有効化に関する項を参照してください。

WebCenter Portal自己登録タスク・フローを使用するには:

1. JDeveloperでPortal Frameworkアプリケーションを開くか作成します。

2. JSPXページを作成します。

3. 「リソース・パレット」でタスク・フローを開いて、自己登録タスク・フローをページにドラッグ・アンド・ドロップします。

4. パブリック資格証明を使用してメール接続および外部アプリケーションを作成し、その外部アプリケーションをメール接続に接続します。これをメールのデフォルト接続にします。メール接続の設定方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「メールの管理」の章を参照してください。

5. 自己登録タスク・フローでページを実行すると、実行時の自己登録ページが表示されます。

注意:

uidやmailなどのcn以外のログイン属性を使用している場合は、jps-config.xmlファイルにuser.login.attrおよびusername.attrプロパティが含まれている必要があります。また、これらのプロパティは、対応するログイン属性(たとえばmail)に設定されている必要があります。次の例に示すように、jps-config.xmlファイルを変更します。

<serviceInstance provider="idstore.ldap.provider" name="idstore.ldap.0">
<!-- existing props ... ->
<property name="user.login.attr" value="mail"/>
<property name="username.attr"  value="mail"/>
<extendedProperty>
......
</extendedProperty>
</serviceInstance>

変更後、WebCenter Portalサーバー(WC_Spaces)を再起動します。

74.10.2 カスタム自己登録ページの構築

次に説明する自己登録ページの例では、ユーザーのfirstname、lastname、mailid、login nameおよびpasswordを受け入れる単純なページを作成します。ローカル環境内で使用するための出発点としてサンプル・ファイルを使用するか、またはCreateUserHelperで提供されるユーザーAPIおよびロールAPIを使用して独自の自己登録ページとロジックを構築します。サンプルで提供されるユーザー・プロファイル属性のプロパティ・セットを使用すれば、必要に応じてさらに属性をユーザーに追加できます。

自己登録のサンプル・ページを作成するには:

1. WebCenter拡張機能バンドルのwebcenter/customportalディレクトリにあるsecurity-samples.zip内のセキュリティ・サンプル・ファイルを解凍します。

2. CreateUserBean.javaファイルとCreateUserHelper.javaファイルをFrameworkアプリケーションのアプリケーション・ソース・フォルダにコピーします。

3. TestCreateUserPage.jspxファイルをpublic-htmlフォルダにコピーします。

4. ローカル環境およびローカル要件に合せてTestCreateUserPage.jspxファイルを編集します。

5. TestCreateUserPage.jspxページを実行して、自己登録ページを表示します。

74.10.3 自己登録招待ページの作成

WebCenter Portalパブリック招待タスク・フローを使用すれば、Portal Frameworkアプリケーション内の自己登録ページにパブリック招待を作成できます。タスク・フローの実行時動作の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の招待に限定した自己登録の有効化に関する項を参照してください。

自己登録招待タスク・フローを使用するには:

1. JDeveloperでPortal Frameworkアプリケーションを開くか作成します。

2. JSPXページを作成します。

3. 「リソース・パレット」でタスク・フローを開いて、自己登録招待タスク・フローをページにドラッグ・アンド・ドロップします。

4. jazn-data.xmlにある次のCredentialAccessPermissionをoracle.webcenter.framework.view/-に付与します。
jazn-data.xmlファイルは次のようになります。

<permission>
<class>oracle.security.jps.service.credstore.CredentialAccessPermission</class>
<name>context=SYSTEM,mapName=o.webcenter.security.selfreg,keyName=o.webcenter.security.selfreg.hmackey</name>
<actions>read,write</actions>
</permission>

5. ページで自己登録タスク・フローを実行すると、実行時の自己登録招待ページが表示されます。

74.11 パスワードのリセット・ページの作成

次の例では、ユーザー名と新規パスワードを受け入れる単純なパスワードのリセット・ページを作成します。ローカル環境内で使用するための出発点としてサンプル・ファイルを使用するか、またはResetPasswordHelperで提供されるユーザーAPIおよびロールAPIを使用して、パスワードを変更するための独自のパスワードのリセット・ページとロジックを構築します。

パスワードのリセットのサンプル・ページを作成するには:

1. WebCenter拡張機能バンドルのwebcenter/customportalディレクトリにあるsecurity-samples.zip内のセキュリティ・サンプル・ファイルを解凍します。

2. ResetPasswordBean.javaファイルとResetPasswordHelper.javaファイルをPortal Frameworkアプリケーションのアプリケーション・ソース・フォルダにコピーします。

3. TestResetPasswordPage.jspxファイルをpublic-htmlフォルダにコピーします。

4. ローカル環境およびローカル要件に合せてTestResetPasswordPage.jspxファイルを編集します。

5. TestResetPasswordPage.jspxページを実行して、パスワードのリセット・ページを表示します。

74.12 ポートレット・パーソナライズをテストするための基本認証の構成

ポートレット・パーソナライズは、特定の認証されたユーザーに関連付けられています。このため、編集モードを備えたポートレットを実行すると、ポートレットのドロップダウン・メニューの「パーソナライズ」オプションは、認証されたアプリケーション・ユーザーにのみ表示されます。匿名ユーザーまたはパブリック・ユーザーには、ポートレットをパーソナライズするためのオプションはありません。ポートレットやページを作成する開発者の場合、アプリケーション用の完全なセキュリティ・モデルを作成せずに、ポートレットの編集モードをすぐにテストすることが必要になる場合があります。このようなテストを実行するには、アプリケーションにごく基本的な認証を構成して、テストの完了後にその認証を削除します。

注意:

この手順は、編集モードを備えたすべてのポートレット(Omniportlet、JPSおよびPDK-Java)に有効です。

1. ユーザーskingおよびロールmanagerを作成します。ユーザーおよびロールの作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

2. ADFセキュリティ・ウィザードを使用して、アプリケーションを保護します。実行する手順の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。ウィザードの「ログイン」ページで、「HTTP Basic認証(RFC 2617)」を選択します。これにより、アプリケーションで基本認証を使用することが指定されます。

3. 統合WLSでページを実行し、有効なユーザーとしてログインして、ポートレットの編集モードをテストします。

ポートレットの編集モードのテストが完了したら、次の手順を実行すると、このテスト・セキュリティをすばやく削除できます。

1. アプリケーション・ナビゲータで、テストするポートレットが含まれるページが属するプロジェクトをクリックします。

2. 「ツール」メニューから、「ADFセキュリティ・ウィザード」を選択します。

3. 「ようこそ」ページが表示されたら、「次へ」をクリックします。

4. 「すべてのADFセキュリティ設定の削除」を選択します。

5. ウィザードの「終了」ページが表示されるまで、「次へ」をクリックします。「終了」をクリックします。セキュリティが削除されます。セキュリティが削除されたことを確認する場合は、ブラウザを終了してからアプリケーションを再実行します。ページにアクセスしてもログインが要求されず、ポートレットのドロップダウン・メニューにパーソナライズ・オプションが表示されなくなります。

74.13 外部アプリケーションの使用

Oracle WebCenter Frameworkでは、外部アプリケーションは独自の認証プロセスを実装したアプリケーションとして定義されます。つまり、アプリケーションは、Portal Frameworkアプリケーションのシングル・サインオン・プロセスに関与しません。ID管理ソリューションが同じ場合もありますが、認証プロセスは異なります。

WebCenter Frameworkサービスが独自の認証を処理するアプリケーションとやりとりする際は、そのサービスと外部アプリケーションを関連付けることで資格証明プロビジョニングに対応できます。つまり、外部アプリケーション定義を使用することで、これらの独立した認証アプリケーションのコンテンツにアクセスする方法が提供されます。

エンドユーザー側からのシングル・サインオンを実現するには、外部アプリケーション・サービスがユーザー名、パスワードおよび外部アプリケーション用の他の資格証明を取得し、それを必要とするWebCenterサービスに提供します。次にWebCenterサービスが、その情報を使用してエンド・ユーザーのかわりにログインします。このユーザー名とパスワードの組合せは、アプリケーションがデプロイされたWebLogicドメインに構成されている資格証明ストアにセキュアに格納されます。

ユーザーは要求に応じてログイン資格証明を入力し、これらの資格証明はPortal Frameworkアプリケーション・ユーザーにマップされ、ドメインに構成された資格証明ストアに格納されます。それ以降は、認証時に資格証明ストアによってその情報が外部アプリケーションに提供されます。外部アプリケーションの資格証明が変更されないかぎり、マップされた情報が資格証明ストアから読み込まれるため、ユーザーによる資格証明の入力は1回のみです。

注意:

外部アプリケーションにログインする際、「ログイン情報を保存する」チェック・ボックスの選択を解除すると、高可用性(HA)環境でフェイルオーバーが発生した場合に、そのユーザー・セッションにプロビジョニングされた資格証明は失われます。同じユーザー・セッションでその外部アプリケーション・コンテンツにアクセスしようとすると、再び資格証明を指定するように要求されます。

Portal Frameworkアプリケーションで使用する外部アプリケーションを指定できるのは、Oracle JDeveloperのウィザードを介してデプロイする前、またはアプリケーション・サーバーの管理インタフェース(WebLogic Scripting ToolおよびOracle Enterprise Manager)を介してデプロイした後になります。詳細は、『Oracle Fusion Middleware管理者ガイド』を参照してください。

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

- 第74.13.1項「外部アプリケーションの使用」

- 第74.13.2項「ユーザー資格証明の指定」

- 第74.13.3項「外部アプリケーションの管理」

74.13.1 外部アプリケーションの使用

WebCenter外部アプリケーション・サービスを使用すると、マップされたユーザー・アイデンティティを独自の認証が必要なWebアプリケーションに渡すことができます。外部アプリケーションのサポートやWebCenter外部アプリケーション・サービスで提供される資格証明マッピングを使用することで、セキュアなサービス接続の設定、およびユーザーのシームレスな自動シングル・サインオンが可能になります。

次の項で、これについて説明します。

- 第74.13.1.1項「セキュアなサービス接続」

- 第74.13.1.2項「自動シングル・サインオン」

74.13.1.1 セキュアなサービス接続

外部アプリケーション定義でセキュアなサービス(メール・サーバーやポートレット・プロデューサなど)を使用するには、名前付き外部アプリケーションを必要なサービスの接続構成に関連付けます。たとえば、メール・サーバーへの接続では、ユーザーはメールを参照するために、有効なユーザー名とパスワードを入力する必要があります。図74-12に示すように、外部アプリケーションとIMAPサーバー接続定義を関連付けることにより、ユーザーの資格証明がメール・リクエストの一部として自動的に渡されます。

注意:

次のWebCenter Portalコンポーネントは、資格証明マッピング・サポートを使用可能にする外部アプリケーションで構成する必要があります。

- インスタント・メッセージおよびプレゼンス(IMP)

- メール

- ドキュメント

- RSS

WebCenter Portalサービスで使用するアイデンティティ伝播メカニズムの詳細は、第74.16項「アイデンティティ伝播メカニズム」を参照してください。

図74-12 「新規メール接続の構成」ページ

図74-13に示すように、ポートレット・プロデューサが独自の認証を処理するアプリケーションに依存する場合は、そのプロデューサを外部アプリケーションに関連付けることができます。これにより、プロデューサを登録する際、ポートレット内で公開されるアプリケーションにマップする適切な外部定義の選択が容易になります。

図74-13 外部アプリケーションURL

実行時には、プロデューサは、外部アプリケーションに関連付けられた情報を使用してアプリケーションに対してユーザーを認証し、結果としてそのポートレットを消費します。プロデューサ・コードは、外部アプリケーションとの認証対話を実際に実行する役割を担います。WebCenter Portal Frameworkで提供される外部アプリケーション・サポートでは、ポートレット・プロデューサへの認証に必要な情報が提供されるだけです。外部アプリケーションの使用は、Oracle PDK-JavaとWSRPの両方のプロデューサでサポートされています。

たとえば、プロデューサで、独自の認証メカニズムを備えたポートレット生成アプリケーションから株式ポートフォリオ・ポートレットを提供するとします。この場合、開発者は:

- 外部アプリケーションを定義します。これは、Oracle JDeveloperのウィザードまたはOracle Enterprise Managerを使用して行えます。

- 外部アプリケーションをポートレット・プロデューサに関連付けます。

74.13.1.2 自動シングル・サインオン

自動シングル・サインオンでは、資格証明が資格証明ストアから取得されるため、ユーザーはアプリケーションに直接接続し、保護されたWebアプリケーションに自動的に認証されます。これにより、エンドユーザーにシームレスなシングル・サインオンが提供されます。

注意:

次については自動ログインがサポートされません。

- BASIC認証を使用した外部アプリケーション。

- SSO用に構成された外部アプリケーション。

- 認証用にJ2EEセキュリティ・コンテナ・ログイン・メソッド(j_security_check)を実装しない、カスタマイズされたログイン・フォーム(ADF Facesを使用して構築)を含む外部アプリケーション。

- UTF8エンコードをサポートしない外部サイト

WebアプリケーションへのURLを直接使用するのではなく、アプリケーションへのリンクが、外部アプリケーションの自動ログイン・サーブレット(adfextapplogin)によってプロキシ処理されます。ユーザーが外部アプリケーションに認証されず、以前に資格証明ストアに資格証明を格納したことがない場合は、後述する資格証明プロビジョニング・ページによってパスワードが要求されます。ただし、ユーザーが以前に資格証明を定義したことがある場合、これが資格証明ストアから返され、ユーザーはアプリケーションに自動的にログインします。

プロキシURLによって、当該外部アプリケーションが参照され、外部アプリケーション定義で指定されたURLにリダイレクトされます。

/adfextapplogin?extappid=<extappid>

たとえば、myoracle.comというWebサイトを示す外部アプリケーションを定義したFrameworkアプリケーションがある場合(外部アプリケーションのIDはmyoracle)、プロキシURLは次のようになります。

/adfextapplogin?extappid=myoracle

リンクのtarget属性も適切に設定する必要があります。たとえば、<a href=>を使用する場合は、ターゲットをhrefに指定するだけでなく、そのtarget属性を適切に設定します。サーブレットに指定されたtarget属性によって、「取消」ボタンの機能が次のように決定されます。

/adfextapplogin?extappid=<extappid> [target= _self | _blank]

target=_blankを指定した場合はリンクが新しいウィンドウで開きます。target=_selfを指定した場合はリンクが現在のウィンドウで開きます。targetパラメータが指定されていない場合はリンクが現在のウィンドウで開きます。

このパラメータは、資格証明プロビジョニング・ページの「取消」ボタンの動作方法にも影響を与えます。_blankが指定された場合は、「取消」をクリックすると新規ウィンドウが閉じられ、_selfが指定された(またはtargetパラメータが使用されない)場合は、ユーザーがコール元のページに戻ります。

注意:

UTF8エンコードをサポートしないサイトでは、外部サイトの自動ログインはサポートされません。

74.13.2 ユーザー資格証明の指定

エンドユーザーが外部アプリケーションの資格証明を定義できるようにする方法は、外部アプリケーションの使用方法によって異なります。多くのコンポーネントでは、コンポーネントが公開するタスク・フローに資格証明プロビジョニング画面が組み込まれており、それ以上の構成手順は必要ありません。ただし、これらのコンポーネントを使用してExternal Application - Change Passwordタスク・フロー・コンポーネントをアプリケーションに追加できるため、エンド・ユーザーは、WebCenter Portal Frameworkアプリケーションに登録されている各外部アプリケーションに対して、適切なユーザー名およびパスワードを事前に設定できます。

External Application - Change Passwordタスク・フローでは、共有資格証明を指定しないアプリケーションに定義されたすべての外部アプリケーションが表示されます(共有資格証明の詳細は、第74.13.3項「外部アプリケーションの管理」を参照してください)。このタスク・フローを表示するには、ユーザーが認証される必要があることに注意してください。

ただし、インスタント・メッセージおよびプレゼンス・サービスでは、「リソース・パレット」または「コンポーネント・パレット」からアプリケーションにExternal Application - Change Passwordタスク・フロー・コンポーネントを明示的に追加する必要があります。External Application - Change Passwordタスク・フロー・コンポーネントを使用したインスタント・メッセージおよびプレゼンス・サービスに対するセキュリティの構成手順の詳細は、第34.2.2項「IMP機能の設計時の追加」を参照してください。

実行時、資格証明プロビジョニング画面には、外部アプリケーション登録を介して指定されたデータ・フィールドからなるログイン・データ・フィールドが表示されます。ユーザーは、データ・フィールドに特定の外部アプリケーションに対するログイン情報を入力し、そのログイン情報が外部アプリケーションまたはサービスに渡されます。プロビジョニング画面に資格証明を入力すると、WebLogicドメインに構成された資格証明ストア内でもその資格証明が維持されることになります。

デフォルトでは、ユーザーが入力したログイン情報は資格証明ストアに保存され、以後のセッションのログインを処理します。ユーザーの資格証明に変更がないかぎり、ユーザーが再度ログイン情報を入力する必要はありません。ただし、エンド・ユーザーは、資格証明プロビジョニング・ページの「ログイン情報を保存する」チェック・ボックスの選択を解除することで、現在のセッションの情報を使用するかを選択できます。

74.13.3 外部アプリケーションの管理

この項では、外部アプリケーションの登録に関する情報について説明します。また、登録詳細の編集および削除のプロセスについても説明します。次のサブセクションが含まれます:

- 第74.13.3.1項「外部アプリケーション・タスク・フローの追加」

- 第74.13.3.2項「Oracle JDeveloperでの外部アプリケーションの処理」

- 第74.13.3.3項「Enterprise Managerでの外部アプリケーションの処理」

- 第74.13.3.4項「WLSTを使用した外部アプリケーションの処理」

74.13.3.1 外部アプリケーション・タスク・フローの追加

外部アプリケーション・タスク・フローを使用すると、実行時に外部アプリケーション接続を管理できます。このタスク・フローでは、ユーザーの資格証明がバックエンドで変更された場合に、すべての外部アプリケーションに対する資格証明を更新するインタフェースが提供されます。このタスク・フローを使用すれば、ランタイム管理コンソールの「ツールとサービス」タブから資格証明を更新する必要はなくなります。

Oracle JDeveloperを使用して追加可能な外部アプリケーション・タスク・フローは次のとおりです。

- 外部アプリケーション: このタスク・フローでは、実行時に接続を登録、変更および削除できます。

- 外部アプリケーション - パスワードの変更: このタスク・フローでは、実行時に外部アプリケーションのパスワードを変更できます。

Portal Frameworkアプリケーション・テンプレートを使用して作成されたアプリケーションでは、Portal Frameworkアプリケーションの管理ページ(「ツールとサービス」タブ)からこれらのタスク・フローをすぐに使用できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のPortal Frameworkアプリケーションのサービス、ポートレット・プロデューサおよび外部アプリケーションの構成に関する項を参照してください。

また、他のタスク·フローのように、アプリケーション・ページに外部アプリケーション・タスク·フローを追加することができます。Portal Frameworkアプリケーション・テンプレートを使用せず、したがって管理ページがプロジェクトの一部でない場合、これは特に有用です。特別な権限は、これらのタスク・フローを介して外部アプリケーション接続を管理したり、表示するために必要です。

- AppConnectionManager - このロールを持つユーザーは、実行時に外部アプリケーション接続を登録、変更および削除できます。

- AppConnectionViewer - このロールを持つユーザーは、実行時に外部アプリケーション接続を表示できます。このロールは、ログインするすべてのユーザー(authenticated-roleを持つユーザー)にデフォルトで付与されます。

デフォルトでは、管理者ロールを持つユーザーが外部アプリケーションを管理できます。これらのタスク・フローを介して他のユーザーに接続を管理させる場合は、そのユーザーにAppConnectionManagerロールを付与する必要があります。

外部アプリケーション・タスク・フローを追加するには:

1. タスク・フローを追加するアプリケーションで、JSFページを作成するか、開きます(第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」を参照)。

2. リソース・パレットで「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。

3. 「リソース・パレット」から「外部アプリケーション」をドラッグし、それをaf:form beginタグとendタグの間のページにドロップします。

4. 「外部アプリケーション」タスク・フロー(af:region - # {bingings.extapp1.regionModel})の後、「リソース・パレット」から「外部アプリケーション - パスワードの変更」をドラッグし、それをaf:form beginタグとendタグの間のページにドロップします。

5. 必要に応じて、AppConnectionManagerロールを1人以上のテスト・ユーザーに付与します。

- テスト・ユーザーTEST_EXTAPPを追加します。

- AppConnectionManagerロールを付与します。

ユーザーを追加してこのロールを付与する方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFエンティティ・オブジェクトへの権限の付与に関する項を参照してください。

6. ページを保存し、実行します。管理者として、または前の手順で定義したTEST_EXTAPPユーザーとしてログインします。図74-14に示す画面が表示されます。

図74-14 ブラウザでの「外部アプリケーション」タスク・フロー

注意:

実行時、アプリケーション管理者は、WebCenter Portal管理を使用してAppConnectionManagerロールおよびAppConnectionViewerロールをユーザーに付与できます(Oracle Fusion Middleware Oracle WebCenter Portalの管理のアプリケーション・ロールへのメンバーの追加に関する項を参照)。または、システム管理者は、Fusion Middleware Controlを使用してAppConnectionManagerロールおよびAppConnectionViewerロールを付与できます(Oracle Fusion Middleware Oracle WebCenter Portalの管理のFusion Middleware Controlを使用したアプリケーション・ロールの付与に関する項を参照)。

74.13.3.2 Oracle JDeveloperでの外部アプリケーションの処理

この項では、Oracle JDeveloperでの外部アプリケーションの登録と、登録詳細の編集および削除について説明します。次のサブセクションが含まれます:

- 第74.13.3.2.1項「外部アプリケーションのOracle JDeveloperでの登録」

- 第74.13.3.2.2項「外部アプリケーションの登録詳細のOracle JDeveloperでの編集」

- 第74.13.3.2.3項「外部アプリケーションの登録詳細のOracle JDeveloperでの削除」

74.13.3.2.1 外部アプリケーションのOracle JDeveloperでの登録

外部アプリケーションの登録ウィザードを使用して、外部アプリケーションへの認証に必要なデータ・タイプ(ログイン・フィールド名など)を指定し、その情報を格納します。

外部アプリケーションをOracle JDeveloperで登録するには:

1. アプリケーション・ナビゲータで、WebCenter Portal Frameworkアプリケーションまたはプロジェクトを右クリックし、ポップアップ・メニューから「新規」を選択します。

2. 「新規ギャラリ」で、「General」ノードの下の「External Applications」を選択します。

3. 右ペインで「外部アプリケーション」を選択し、「OK」をクリックします。
これにより、外部アプリケーションの登録ウィザードが表示されます。

4. 「名前」ページで「外部アプリケーションの作成場所」オプションを使用して、他のPortal Frameworkアプリケーションで外部アプリケーションを再利用するかどうかを指定します。「アプリケーション・リソース」を選択して、登録されているPortal Frameworkアプリケーションにのみ外部アプリケーションを利用可能にするか、「リソース・パレット」を選択して、リソース・パレットからOracle JDeveloperで作成する任意の新しいPortal Frameworkアプリケーションに外部アプリケーションを利用可能にします。
「リソース・パレット」を選択すると、リソース・パレットの「IDE接続」の下に外部アプリケーション接続が表示されます。アプリケーションで使用する場合は、リソース・パレットで外部アプリケーションを右クリックして、「アプリケーションに追加」をクリックします。

5. 「名前」フィールドに、アプリケーションを識別する一意の名前を入力します。
この名前は、WebCenter Portal Frameworkアプリケーション内および他の接続間で一意である必要があります。このフィールドは後から変更できないことに注意してください。

6. 「表示名」フィールドに、資格証明プロビジョニング画面でエンド・ユーザーに表示されるアプリケーション名を入力します。
第74.13.3.2.2項「外部アプリケーションの登録詳細のOracle JDeveloperでの編集」で説明しているように、この表示名はいつでも変更できます。このフィールドを空白のままにすると、デフォルトで、「名前」フィールドの値が表示名に設定されます。

7. 「次へ」をクリックします。

8. 「一般」ページの「ログインURL」フィールドに、HTMLログイン・ページの送信先のURLを入力します。
このURLを取得するには、アプリケーションのログイン・フォームのHTMLソースを表示します。

注意:

第74.13.2項「ユーザー資格証明の指定」で説明しているように、「一般」ペインのフィールドは、定義されている外部アプリケーションがクリックスルー・ログインを提供する場合のみ必要です。

9. 「ユーザー名/IDフィールド名」フィールドに、アプリケーションでユーザー名フィールドに使用されるラベル(User Nameなど)を入力します。

10. 「パスワード・フィールド名」フィールドに、アプリケーションでパスワード・フィールドに使用されるラベル(Passwordなど)を入力します。

11. 「認証方式」リストから、アプリケーションのログイン方式を選択します。
次のうちから選択します。

- GET
サーバーにページ・リクエストを送信します。ログインURLの一部としてログイン資格証明を送信します。

- POST
フォーム本体内でログイン資格証明を送信します。

12. 「次へ」をクリックします。

13. 「追加フィールド」ページで、外部アプリケーションのログイン・フォームとともに送信される追加フィールドの名前および値を入力します。
「フィールドの追加」ボタンをクリックして、入力フィールドを作成します。

- フィールド名
外部アプリケーションのHTMLログイン・フォームへのユーザー入力を必要とする追加フィールドに対して一意の名前を入力します。

- フィールド値
対応するフィールド名のデフォルト値を入力します。

- ユーザーに表示
これを選択すると、フィールドが外部アプリケーションのログイン画面に表示されます。フィールドを表示しない(選択しない)場合、すべてのユーザーで外部アプリケーションへのログインに使用されるデフォルト値を指定する必要があります。値がユーザーに固有の場合、フィールドをユーザー・プロビジョニング・ページに表示する必要があります。

注意:

「フィールドの削除」オプションを使用すると、選択した行を削除できます。

14. 「次へ」をクリックします。

15. すべての認証ユーザーが特定の資格証明を使用して外部アプリケーションにアクセスするようにするには、「共有資格証明」ページで「共有資格証明の指定」チェック・ボックスを選択し、「ユーザー名」および「パスワード」を指定します。認証ユーザーは、外部アプリケーションにアクセスする際、資格証明の入力を要求されなくなります。

16. 「次へ」をクリックします。

17. すべての認証されていない(パブリック)ユーザーが外部アプリケーションのアクセスに使用する資格証明を指定するには、「パブリック資格証明」ページで「パブリック資格証明の指定」チェック・ボックスを選択し、「ユーザー名」および「パスワード」を指定します。これは、いずれかのWebCenter Portalコンポーネント(ドキュメント・ライブラリ、インスタント・メッセージ、プレゼンスなど)を介して外部アプリケーションのコンテンツにアクセスする場合および、タスク・フローがパブリック・ページに配置される場合に必要です。

18. 「終了」をクリックして、外部アプリケーションを登録します。

外部アプリケーションの登録後、エンド・ユーザーがユーザー名とパスワードを定義できるようにアプリケーションを構成する必要があります。これを行うには、External Application - Change Passwordタスク・フロー・コンポーネントをアプリケーションにドロップします。これによって、エンドユーザーは、WebCenter Portal Frameworkアプリケーションに登録された各外部アプリケーションに対して適切なユーザー名とパスワードを事前に設定できます。

エンド・ユーザーがユーザー名とパスワードを定義できるようにアプリケーションを構成するには、次の手順を実行します:

1. ViewControllerプロジェクトのJSFページを開きます。

2. リソース・パレットから、「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」の順に開きます。

3. External Application - Change Passwordタスク・フロー・コンポーネントをページにドラッグします。

4. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

5. このタスク・フローが認証ユーザーからのみアクセスできるようにページを保護します

74.13.3.2.2 外部アプリケーションの登録詳細のOracle JDeveloperでの編集

外部アプリケーションに指定されている登録詳細を修正するには、「外部アプリケーションの登録情報の編集」ウィザードを使用します。

外部アプリケーションの登録詳細を編集するには:

1. アプリケーション・ナビゲータで、「コネクション」ノードの下の「アプリケーション・リソース」ペインから外部アプリケーションを右クリックし、ポップアップ・メニューから「プロパティ」を選択します。

2. 外部アプリケーションの編集ウィザードでリンクをクリックしてページを表示し、その値を修正します。
次のうちから選択します。

- 名前

- 一般

- 追加フィールド

- 共有資格証明

- パブリック資格証明

詳細は、第74.13.3.2.1項「外部アプリケーションのOracle JDeveloperでの登録」を参照してください。

3. 「OK」をクリックして、変更を保存してウィザードを終了するか、「取消」をクリックして、保存せずにウィザードを終了します。

74.13.3.2.3 外部アプリケーションの登録詳細のOracle JDeveloperでの削除

外部アプリケーションの登録詳細を削除するには、次の手順を実行します:

1. アプリケーション・ナビゲータで、「コネクション」ノードの下の「アプリケーション・リソース」ペインから外部アプリケーションを右クリックし、ポップアップ・メニューから「削除」を選択します。
あるいは、アプリケーション・ナビゲータで外部アプリケーションを選択し、「編集」メニューから「削除」を選択します。

2. 「外部アプリケーションの削除」ダイアログ・ボックスで、「はい」を選択します。

外部アプリケーションが関連付けられているポートレット・プロデューサなどのコンポーネントへの参照も削除することをお薦めします。これを行わないと、コンポーネントで外部アプリケーションとの通信が試みられるため、実行時にエラーになる場合があります。

74.13.3.3 Enterprise Managerでの外部アプリケーションの処理

Oracle JDeveloperで外部アプリケーションの登録詳細の作成、編集および削除が行えるのと同様に、Enterprise Managerでもこれを行うことができます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「外部アプリケーションの使用」の章を参照してください。

74.13.3.4 WLSTを使用した外部アプリケーションの処理

Oracle JDeveloperおよびEnterprise Managerと同様に、WebLogic Scripting Tool (WLST)のコマンドを使用して外部アプリケーションの登録詳細を作成、編集および削除できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「外部アプリケーションの使用」の章を参照してください。

74.14 キーストアへのカスタム証明書の登録

Secure Sockets Layer (SSL)通信では、認証局によって発行された信頼できる証明書を必要とし、認証局は発行または署名した証明書の認証を保証します。広く受け入れられている認証局は、キーストア(cacertsファイル)にリストされていて、<JDEV_HOME>\jdk\jre\lib\securityディレクトリで利用可能です。ポートレット・プロデューサが、広く受け入れられていない認証局で発行されたセキュリティ証明書を使用してこのプロデューサからポートレットにアクセスしようとする場合、信頼していない認証局から発行されたセキュリティ証明書であることを知らせるために、セキュリティ・アラートが表示されます。これは、キーストアで証明書が利用できないことを意味します。そのようなポートレットにアクセスするたびにプロンプトが表示されないようにするには、キーストアにこの証明書を登録する必要があります。

証明書をキーストアに登録するには、次の手順を実行します:

1. JDEV_HOME\jdk\jre\lib\securityにナビゲートします。

2. cacertsファイルをバックアップします。

3. Internet ExplorerでプロデューサURLにアクセスして、証明書を取得します。

注意:

FireFoxの最近のバージョンでは、証明書をエクスポートする手段が備わっていません。

4. 図74-15に示すように、「セキュリティの警告」ダイアログ・ボックスで、「証明書の表示」をクリックします。

図74-15 「セキュリティの警告」ダイアログ・ボックス

5. 「証明書」ダイアログ・ボックスで、「証明のパス」タブをクリックします。

6. 図74-16に示すように、デフォルトでダミーの子証明書が選択されます。ルート証明書を選択し、「証明書の表示」をクリックします。

図74-16 「証明書」ダイアログ・ボックス

7. 「詳細」タブをクリックし、「ファイルにコピー」をクリックします。

8. 図74-17に示すように、「証明書のエクスポート ウィザード」で、「エクスポートするファイル」が表示されるまで、デフォルト設定を受け入れて「次へ」をクリックします。

図74-17 「証明書のエクスポート ウィザード」の「エクスポートするファイル」画面

9. 「ファイル名」フィールドに<JDEV_HOME>\jdk\jre\lib\security\root.cerを入力し、「次へ」をクリックします。

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

11. コマンド・プロンプトで、デフォルトのディレクトリを<JDEV_HOME>\jdk\jre\lib\securityに設定し、次のコマンドを実行します。

keytool -import -file root.cer -keystore cacerts -storepass changeit

このコマンドを実行することにより、root.cer証明書がキーストアにインポートされます。

12. プロンプトでyを入力して、この証明書を信頼することを確認します。

13. 証明書を使用してcacertsファイルが更新されていることを確認します。

74.15 ポートレットおよびカスタマイズ可能コンポーネントの継承されたセキュリティのオーバーライド

ポートレットおよびカスタマイズ可能コンポーネントに対する各アクションは、デフォルトでは保護されていません。ポートレットまたはカスタマイズ可能コンポーネントをカスタマイズできるかどうかは総じて、ページ権限から継承されます。ポートレットまたはカスタマイズ可能コンポーネント内に詳細なアクティビティの権限を付与する場合は、ページ・レベルのセキュリティ継承を無視し、必要なアクションに対してセキュリティを直接定義できます。

ユーザーがポートレットまたはカスタマイズ可能コンポーネントに対してアクションを実行できるかどうかは、adf-config.xmlファイル内のアプリケーション・ワイドなスイッチの値(enableSecurity)に基づくページ・セキュリティから継承されます。アプリケーションの作成中にWebCenter Portal Frameworkアプリケーション・テンプレートを選択した場合、adf-config.xmlファイルは<APPLICATION_NAME>/.adf/META-INFディレクトリ内に配置されています。enableSecurity要素は、デフォルトではadf-config.xml内で使用できません。ポートレットおよびカスタマイズ可能コンポーネントに対するページ・レベルのセキュリティ継承をオーバーライドまたは拡張するには、例74-1および例74-2に示すように、ポートレット・セキュリティおよびカスタマイズ可能コンポーネント・セキュリティのセクションをadf-config.xmlファイルに追加し、これらのセクションのenableSecurity要素をtrueに設定します。

例74-1 adf-config.xmlのポートレット・セキュリティ・セクション内のenableSecurity要素

<!--
==============================================================================
PORTLETS ACTIONS SECURITY
==============================================================================
-->
<adfp:adf-config-child xmlns:adfp="http://xmlns.oracle.com/adfp/portlet">
<adfp:enableSecurity value="true"/>
<adfp:actionsCategory>
..........................................
</adfp:adf-config-child>

例74-2 adf-config.xmlのカスタマイズ可能コンポーネント・セキュリティ・セクション内のenableSecurity要素

<!--
==============================================================================
CUSTOMIZABLE COMPONENTS ACTIONS SECURITY
==============================================================================
-->
<cust:customizableComponentsSecurity
xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable/config">
<cust:enableSecurity value="true"/>
<cust:actionsCategory>
..........................................
</cust:customizableComponentsSecurity>

ポートレットおよびカスタマイズ可能コンポーネントに対するアクションのセキュリティは、次のレベルで実装できます。

- ページ・レベル: ポートレットおよびカスタマイズ可能コンポーネントがページ・レベルの権限を継承するように、これらのコンポーネントのセキュリティを定義できます。これがデフォルトの動作です。
デフォルトでは、ポートレットおよびカスタマイズ可能なコンポーネントは、パーソナライズやカスタマイズなどの定義されたページ・レベルの権限から許容されるアクションを継承します。つまり、このページにカスタマイズ権限を持つユーザーは、そのページ上のコンポーネントのカスタマイズ・アクションに対する権限を持ちます。enableSecurity要素を使用すると、セキュリティ継承動作をオーバーライドできます。この要素は、次のいずれかの値を取ります。

- true: true(デフォルト)に設定した場合、ユーザーがコンポーネントを変更できるかどうかは、まずページ権限から決定され、次に、その権限のタイプに定義されている現在のアクションのセットに応じて調整されます。ユーザーにカスタマイズ権限がある場合は、カスタマイズ・カテゴリを構成するアクション(移動やカスタマイズなど)がユーザーに利用可能になります。ただし、これらのアクションは、adf-config.xmlファイル内に定義されているアクションによってオーバーライドされます。たとえば、ページ設計者は、エンドユーザーがポートレットはカスタマイズできるが、ページ・レイアウトはカスタマイズできないようにすると考えるとします。enableSecurityをtrueに設定することにより、ページ設計者はユーザーにまず、ページに対するカスタマイズ権限を強制的に持たせます。カスタマイズ可能コンポーネントに対してcustomizeActionsCategoryをfalseに設定すると、ページ・レイアウトはカスタマイズできなくなりますが、ポートレットのカスタマイズは可能です。(customizeActionsCategoryのデフォルトはtrueなので、ポートレットに対してこれを明示的に設定する必要はありません。)

- false: falseに設定した場合、すべてのアクションがユーザーに選択可能になります。adf-config.xmlで構成されたアクションとユーザーのページ権限は無視されます。

- アクション・カテゴリ・レベル: ポートレットまたはカスタマイズ可能コンポーネントの、特定のカテゴリに属するすべてのアクションに対してセキュリティを定義できます。
adf-config.xmlファイル内にactionsCategory要素を追加すると、複数のアクションに対するセキュリティを同時に定義できます。有効化したactionCategory属性に基づいて、ポートレットまたはカスタマイズ可能コンポーネントに適切な権限が設定されます。

- アクション・レベル: ポートレットまたはカスタマイズ可能コンポーネントの各アクションに対してセキュリティを定義できます。
adf-config.xmlファイル内でactions要素を使用すると、各アクションを有効化または無効化できます。有効化したactions属性に基づいて、ポートレットまたはカスタマイズ可能コンポーネントに適切な権限が設定されます。

注意:

- 権限は、親からのみ継承できます。階層内の他の位置にあるコンポーネントからの継承は、サポートされていません

- ポートレットとカスタマイズ可能コンポーネントのセキュリティオーバーライド実装は似ていますが、互いに無関係です。このため、ポートレットをカスタマイズ可能コンポーネント(PanelCustomizableコンポーネントなど)内に配置した場合、ポートレットはカスタマイズ可能コンポーネントからオーバーライド設定を継承しません。この場合、ポートレットに定義されているセキュリティオーバーライド設定が使用されます。

- アクション・カテゴリ・レベルまたはアクション・レベルで行われた設定は、アプリケーション内のすべてのコンポーネント・インスタンスに対して適用可能です。ポートレットまたはカスタマイズ可能コンポーネントの単一のインスタンスに対してこれらを設定することはできません。

第74.15.1項「ポートレット・セキュリティ」では、ポートレットに対するセキュリティをアクション・カテゴリ・レベルおよびアクション・レベルで実装する方法について説明します。カスタマイズ可能なコンポーネントに対するアクションのセキュリティをアプリケーション・レベルで定義する方法の詳細は、第22.5項「Panel CustomizableおよびShow Detailコンポーネント・アクションでのアクション・レベルの制限の適用」を参照してください。

74.15.1 ポートレットのセキュリティ

adf-config.xmlファイルのポートレット・セキュリティ・セクションでenableSecurityをtrueに設定すると、ポートレットに対するアクションをアプリケーション・レベルでページから継承する場合に、ポートレットのセキュリティを定義できます。trueの値は、ユーザーの権限がページ権限から決定され、次に指定されたactionsCategory要素とactions要素に応じて補完されることを示します。アクション・カテゴリおよび各アクションを定義することにより、特定のページ権限内で使用可能な各アクションを公開するかどうかを制御できます。

前述のような様々なレベルでポートレットのアクションにセキュリティを実装するには、次の各項でセキュリティ設定を定義する必要があります。

- アクション・カテゴリ・レベルでのセキュリティの定義

- アクション・レベルでのセキュリティの定義

74.15.1.1 アクション・カテゴリ・レベルでのセキュリティの定義

adf-config.xmlファイルのポートレット・セキュリティ・セクション内にactionsCategory要素を追加すると、アプリケーション内のポートレット上に公開されるアクション・グループを定義できます。有効化したactionsCategory属性に基づいて、ポートレットに適切な権限が設定されます。表74-3に、様々なactionsCategory属性と、デフォルトでサポートされるポートレット・アクションを示します。

表74-3 actionsCategory属性とポートレット・アクションのマッピング

属性値

サポートされるアクション

viewActionsCategory

Render

isHelpModeAvailable

isNormalModeAvailable

isAboutModeAvailable

isPreviewModeAvailable

isDetailModeAvailable

isLinkModeAvailable

isPrintModeAvailable

customizeActionsCategory

showMoveAction

showRemoveAction

isCustomizeModeAvailable

showMinimizeAction

showMaximizeAction

isConfigModeAvailable

personalizeActionsCategory

isPersonalizeModeAvailable

例74-3に、adf-config.xmlファイルのポートレット・セキュリティ・セクションに追加できるactionsCategoryエントリを示します。この例では、カスタマイズを禁止するためにcustomizeActionsCategoryがfalseに設定されています。これらの要素の値にはExpression Language (EL)を使用できます。

例74-3 ポートレット・セキュリティ・セクション内のactionsCategory要素

<!--
==============================================================================
PORTLETS ACTIONS SECURITY
==============================================================================
-->
<adfp:adf-config-child xmlns:adfp="http://xmlns.oracle.com/adfp/portlet">
<adfp:enableSecurity value="true"/>
<adfp:actionsCategory>
<adfp:actionCategory name="viewActionsCategory" value="true"/>
<adfp:actionCategory name="customizeActionsCategory" value="false"/>
<adfp:actionCategory name="personalizeActionsCategory" value="true"/>
</adfp:actionsCategory>

<adfp:actions>
..........................................
</adfp:actions>

</adfp:adf-config-child>

74.15.1.2 アクション・レベルでのセキュリティの定義

adf-config.xmlファイルのポートレット・セキュリティ・セクション内にactions要素を使用すると、各ポートレット・アクションを有効化または無効化できます。有効化したaction属性に基づいて、ポートレットに適切な権限が設定されます。

例74-4に、adf-config.xmlファイルのポートレット・セキュリティ・セクションに追加できるactionsエントリの例を示します。これらの要素の値にはELを使用できます。この場合、isCustomizeModeAvailableをfalseに設定することによって、カスタマイズを禁止しています。

例74-4 ポートレット・セキュリティ・セクション内のactions要素

<!--
==============================================================================
PORTLETS ACTIONS SECURITY
==============================================================================
-->
<adfp:adf-config-child xmlns:adfp="http://xmlns.oracle.com/adfp/portlet">
<adfp:enableSecurity value="true"/>
<adfp:actionsCategory>
..........................................
</adfp:actionsCategory>

<adfp:actions>
<adfp:action name="Render" value="true"/>
<adfp:action name="showMoveAction" value="true"/>
<adfp:action name="isCustomizeModeAvailable" value="false"/>
<adfp:action name="isPersonalizeModeAvailable" value="true"/>
</adfp:actions>

</adfp:adf-config-child>

ELを使用した営業時間外のポートレットのカスタマイズの禁止

たとえば、通常の営業時間外にはポートレットのカスタマイズができないように構成されたアプリケーションでは、継承されたポートレット・セキュリティをオーバーライドする必要があります。このためにはまず、例74-5に示すようなメソッドが含まれるマネージドBean(たとえば、appBusinessRulesという名前のマネージドBean)を作成する必要があります。

例74-5 appBusinessRulesマネージドBean内に定義されたInsideBizHoursメソッド

public boolean isInsideBizHours()
{
Calendar rightNow = Calendar.getInstance();
int      currentHr = rightNow.get(rightNow.HOUR_OF_DAY);

// Do not allow customize operation outside of standard business hours

if ((currentHr > 9) && (currentHr < 17))
return true;
else
return false;
}

その後は、例74-6に示すように、adf-config.xmlファイルのポートレット・セキュリティ・セクション内のactionsCategory要素からこのマネージドBeanを参照できます。

例74-6 adf-config.xmlファイル内で参照されるInsideBizHoursメソッド

<adfp:adf-config-child xmlns:adfp="http://xmlns.oracle.com/adfp/portlet">
<adfp:enableSecurity value="true"/>

<adfp:actionsCategory>
<adfp:actionCategory name="customizeActionsCategory"
value="#{appBusinessRules.InsideBizHours?"true":"false"}"/>
</adfp:actionsCategory>

</adfp:adf-config-child>

この例では、アプリケーションが営業時間内に実行される場合のみ、customizeActionsCategoryがtrueに設定されます。この時間外は、ページに対する権限がユーザーに付与されていても、ポートレットはカスタマイズできません。明示的に定義されていないその他のカテゴリはすべて、ページから継承されます。

ELを使用した、企業ネットワーク外のポートレットのパーソナライズおよびカスタマイズの禁止

この例では、ユーザーがアプリケーションに企業プロキシ・サーバーを介してアクセスしたか、それとも企業ネットワーク内部からアクセスしたかを判別するために、マネージドBeanによってリクエストのIPアドレスが確認されます。この単純な例では、リクエストにプロキシ・サーバーのIPアドレスが含まれていれば、そのリクエストは企業ネットワークの外部から発生したものと想定します。IPアドレスが危険にさらされることがあるため、一般には、完全にセキュリティの基礎をIPアドレスにすることはお薦めしません。このために、例74-7に示すメソッドをマネージドBeanに追加する必要があります。

例74-7 appBusinessRulesマネージドBean内に定義されたInsideCorpNetworkメソッド

public boolean isInsideCorpNetwork()
{
// Do not allow personalize and customize operations
// for requests that go through the corporate proxy

FacesContext       ctx = FacesContext.getCurrentInstance();
ExternalContext    ectx = ctx.getExternalContext();
HttpServletRequest myrequest = (HttpServletRequest) ectx.getRequest();
String             currentIP = myrequest.getRemoteAddr();

if (currentIP.equals(getProxyServerIP()))
return false;
else
return true;
}

その後は、例74-8に示すように、adf-config.xmlファイルのポートレット・セキュリティ・セクション内のactionsCategory要素からこのマネージドBeanを参照できます。

例74-8 adf-config.xmlファイル内で参照されるInsideCorpNetworkメソッド

<adfp:adf-config-child xmlns="http://xmlns.oracle.com/adfp/portlet">
<adfp:enableSecurity value="true"/>

<adfp:actionsCategory>
<adfp:actionCategory name="customizeActionsCategory"
value="#{appBusinessRules.InsideCorpNetwork?"true":"false"}"/>
<adfp:actionCategory name="personalizeActionsCategory"
value="#{appBusinessRules.InsideCorpNetwork?"true":"false"}"/>
</adfp:actionsCategory>
</adfp:adf-config-child>

この例では、アプリケーションのリクエストのIPアドレスが企業プロキシのIPアドレスと一致しない場合のみ、customizeActionsCategoryおよびpersonalizeActionsCategoryがtrueに設定されます。ここでは、内部リクエストが有効なクライアントIPアドレスを持っていることを前提としています。明示的に定義されていないその他のカテゴリはすべて、ページから継承されます。

74.16 アイデンティティ伝播メカニズム

次の表は、エンド・ユーザーのアイデンティティを様々な情報ソースに伝播するためにWebCenterサービスによって使用されるアイデンティティ伝播メカニズムを示しています。この情報ソースからコンテンツがPortal Frameworkアプリケーションに統合されます。

可能なかぎり、アイデンティティ伝播にはWS-Securityを使用してください。従来の制限や事前定義されたストア固有の標準または仕様に起因してWS-Securityを使用できない場合は、外部アプリケーション・サービスにより提供される資格証明マッピング機能をプライマリ・メカニズムとして使用し、個別のセキュリティ・プロバイダを使用してユーザーのリモート・アプリケーションの資格証明を取得します。WS-Securityに関する詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』を参照してください。外部アプリケーションの詳細は、第74.13項「外部アプリケーションの使用」を参照してください。

表74-4 アイデンティティ伝播メカニズム

サービス

接続タイプ

アイデンティティ伝播メカニズム

ディスカッション

Jive

Oracle WS-Security

お知らせ

ディスカッション・フォーラムを参照

ドキュメント

コンテンツ・サーバー

ソケット接続を使用した専用のアイデンティティ伝播メカニズム。SSLの相互認証を使用することも、ソケットのIP認証をクリアする(つまり外部アプリケーションを使用する)こともできます。

ファイル・システム

n/a

Portal 10g/11g

JSR-170(外部アプリケーション)

Day Adapter

JSR-170(外部アプリケーション)

電子メール

電子メール接続

外部アプリケーション

LDAP接続

外部アプリケーション

イベント - 個人

Exchangeサーバー接続

外部アプリケーション

外部アプリケーション

ブラウザからのHTTPリクエスト

外部アプリケーション

IMP

Microsoft Live Communication Server (LCS)

SOAP、Webサービスの呼出し。

外部アプリケーション

ポートレット・プロデューサ

WSRPプロデューサ

(セキュア)

Oracle WS-Security

(WSRP仕様による推奨)

WSRPプロデューサ

(非セキュア)

SOAPメッセージ内のWSRP userContext

(WSRP仕様)

JPDKプロデューサ

(外部アプリケーション)

外部アプリケーション

JPDKペイロードにはユーザー情報が含まれており、ProviderUser内のプロデューサに伝達されます。

この情報には、マップされたユーザー名とパスワードも含まれています。

(専用、レガシー)

JPDKプロデューサ

(非セキュア)

レンダリング・リクエスト内のユーザー名

(専用、レガシー)

検索

Secure Enterprise Search (SES)

Webサービス呼出し

Wiki

ブラウザ接続

SSOメカニズム - OSSO/OAMまたは他のWLSでサポートされるSSOメカニズム

ワークリスト・サービス

BPEL接続

Webサービス呼出し

Oracle WS-Security

74.17 WS-Securityを使用したWSRPプロデューサを介するアイデンティティ伝播の保護

Web Services for Remote Portlets (WSRP)仕様では、コンシューマとポートレット・プロデューサの間でセキュアなアイデンティティ伝播をするためにWeb Services Security (WS-Security)を利用できることが示されています。ただし、WSRPそれ自体が、ポートレット・プロデューサへのエンド・ユーザーのアイデンティティのセキュアなアイデンティティ伝播を提供するわけではありません。WSRP仕様は、セキュアなアイデンティティ伝播に対しては明示的に他のセキュリティ標準に準拠しており、使用する必要のある特定のWS-Securityプロファイルやオプションを扱うことはありません。セキュアなメカニズムがない場合、WSRPでは、ユーザー・カテゴリという概念が定義されています。ユーザー・カテゴリは、JSR168ポートレットで使用されるセキュリティ・ロールに類似したロールにマップできます。WSRPとWS-Securityを組み合せて使用することにより、エンドツーエンドのセキュリティが確実になります。

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

- 第74.17.1項「WS-Securityを使用しないアイデンティティ伝播」

- 第74.17.2項「WS-Securityを使用したアイデンティティ伝播」

- 第74.17.3項「WSRPポートレットのセキュリティの構成」

74.17.1 WS-Securityを使用しないアイデンティティ伝播

WS-SecurityなしでWSRPを使用すると、SOAPメッセージ内のuserContext構造に、ユーザー・プロファイル情報とユーザー・カテゴリ情報が含まれます。この情報はセキュアでないと考えられるため、パーソナライズ機能およびカスタマイズ機能以外には使用しないでください。機密的なリソースの認可には使用しないでください。この情報は、JSR168 APIのisUserInRole(role)およびgetUserPrincipal内にも公開されます。例74-9内のコードは、サンプル・ポートレットのマークアップ・レンダリング・コードでisUserInRole APIを使用して、表示するコンテンツを決定する方法を示しています。

例74-9 isUserInRole(role) API

private void doViewHtml(RenderRequest
request, RenderResponse response)
throws PortletException, IOException
{
// To do: markup the required content.
PrintWriter out = response.getWriter();
out.print("<p>Welcome");
out.println("</p>");
if (request.isUserInRole("moderator"))
{out.println("<p>MODERATOR</p>" );}
else
{out.println("<p>not moderator</p>" );}
if (request.isUserInRole("participant"))
{out.println("<p>PARTICIPANT</p>" );}
else
{out.println("<p>not participant</p>" );}
if (request.isUserInRole("viewer"))
{out.println("<p>VIEWER</p>" );}
else
{out.println("<p>not viewer</p>" );}
}

74.17.2 WS-Securityを使用したアイデンティティ伝播

WS-SecurityをWSRPとともに利用すると、ユーザーのアイデンティティは、WS-Securityヘッダー内でSOAPメッセージ本体の外部に伝播されます。これは、ユーザー名トークン形式を使用するユーザー・アサーションであり、コンシューマを認証してアサーションの整合性を保つためにデジタル署名されます。

このメカニズムを使用すると、JSR 168 APIのisUserInRoleおよびgetUserPrincipalが、SOAPメッセージのuserContext内の情報ではなく、WS-Security認証から生成されたセキュリティ・コンテキストに基づいて確立されます。

また、プロデューサのデフォルト・ユーザー接続パラメータを使用して匿名(PUBLICなど)クライアントがデフォルト・ユーザーにマップされる場合は、WSRPプロデューサをstrict-authenticationで構成し、権限付与をポリシー・ストアに追加する必要があります。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のOracle PDK-Javaプロデューサの登録に関する項を参照してください。

WS-Securityを使用すると、Frameworkアプリケーションおよびそれにより消費されるプロデューサのセットの構成と管理が複雑になります。しかし、状況により使用が許される場合、それは、Frameworkアプリケーションにより公開される情報のセキュリティを保証する、SOAアーキテクチャの重要な要素となります。

Oracle WebCenter Frameworkでは、(セキュリティ・トークンおよびメッセージ本体をデジタル署名して真正性と整合性を保証するための)次のトークン・プロファイルがサポートされています。

- パスワードなしのユーザー名トークン

- パスワード付きユーザー名トークン

- SAMLトークン(プロデューサがサブジェクト・アサーションを確認するために使用する送信者保証方式を使用)

セキュリティ・トークンおよびSOAPメッセージ本体をデジタル署名すると、次の目的を達成できます。

- コンシューマ認証

- アサーションおよびメッセージ整合性

- サポートされているプロデューサ

- セキュリティ・ドメインの意味

コンシューマ認証

ポートレット・プロデューサで機密的な情報(給与明細情報など)を生成する場合、正当なコンシューマからの情報表示リクエストにのみ応答する必要があります。

WS-Securityを使用し、コンシューマによってセキュリティ・トークンおよびメッセージ本体がデジタル署名されるように設定すれば、プロデューサは、正当なコンシューマの公開鍵を使用して署名を検証できます。署名を検証できない場合は、リクエストが不正なコンシューマから発行された可能性があります。デジタル署名の検証を必須にすることで、機密的な情報は正当なコンシューマにのみ送信されます。

アサーションおよびメッセージ整合性

セキュリティ・トークンおよびメッセージ本体をデジタル署名すると、Webサービスのリクエストを発行したコンシューマのアイデンティティを検証するほかにも、トークンとメッセージが改ざんされていないことが保証されます。これにより、介入者攻撃(正当なりクエストが妨害され、セキュリティ・トークン内のユーザー名が別のユーザー名に置換されて、他のユーザーに対して返される給与情報が表示される可能性がある)などの問題が回避されます。トークンをデジタル署名すると、改ざんが不可能になります。トークンを変更すると、プロデューサ・エンドで署名を検証できなくなり、リクエストされた給与情報ではなくSOAPフォルトが返されます。

サポートされているプロデューサ

WS-Security実装は、Oracle WebCenter Suite WSRPコンテナによってサポートされています。その他のWSRPベンダーが、ユーザー名トークンとSOAPメッセージ本体に基づくXMLデジタル署名を使用した、パスワードを使用しないユーザー名トークンのWS-Security構成をサポートしている場合もあります。

セキュリティ・ドメインの意味

この項の説明に従ってセキュアなアイデンティティ伝播を使用する場合は、コンシューマ(Frameworkアプリケーション)に認証されたユーザーのユーザー名が、資格証明の再マッピングや提供なしでプロデューサに伝播されます。ここでは、プロデューサがこのユーザー名を認識していて、関連付けられたセキュリティ・ドメイン内でこのユーザーを見つけられることが暗黙の前提です。したがって、この構成の管理を簡略化するために、コンシューマとプロデューサが同じセキュリティ・プロバイダ(IDストア)を共有していることを確認することを強くお薦めします。

図74-18に、全体的なWSRPポートレット・セキュリティ・アーキテクチャをまとめています。

図74-18 WSRPポートレット・セキュリティ・アーキテクチャ

74.17.3 WSRPポートレットのセキュリティの構成

WS-Securityのプロデューサを構成する前に、まず、第61章「ポートレット・プロデューサのデプロイ」で説明されている手順を実行して、標準準拠のポートレット・プロデューサをOracle WebCenter Suite WSRPコンテナにデプロイする必要があります。

プロデューサをデプロイした後は、次の手順を実行して、WS-Securityのプロデューサを構成します。

- プロデューサ・エンドポイントへのポリシーの添付

- キーストアの作成

- プロデューサの構成

- コンシューマの構成

これらの手順は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WS-Securityの構成」の章で説明されています。

74.18 PDK-Javaポートレットのセキュリティの実装

この項では、PDK-Javaポートレットで使用できるセキュリティ・サービスについて説明します。

この項で参照されているPDKクラスの詳細は、次の「Portlet Development」ページの「Java Doc API」をクリックして、OTNのJavaDocを参照してください

http://www.oracle.com/technology/products/ias/portal/portlet_development_10g1014.html

74.18.1 前提

次の前提は、この項でのタスクを実行するためのものです。

1. 第60.2項「PDK-Javaポートレットの作成」を読み終えて理解していること。

2. ウィザードで作成したポートレットがページに正常に追加されている。

74.18.2 PDK-Javaポートレットのセキュリティ機能の概要

この項では、PDK-Javaポートレット・プロデューサの保護に使用できる主な機能について説明します。

74.18.2.1 アイデンティティ伝播

ユーザーが初めてログインするときは、アイデンティティを確認してアクセス権限を取得するためにパスワードを入力する必要があります。

ユーザーが認証されると、プロデューサ・コードは、次のように、HttpServletRequestオブジェクトにあるPortletRenderRequestから、認証されたユーザーのアイデンティティにアクセスできます。

PortletRenderRequest pr = (PortletRenderRequest)request.getAttribute
(HttpCommonConstants.PORTLET_RENDER_REQUEST);
String userName = pr.getUser().getName();

このユーザー・アイデンティティを機密性の高い操作に使用する場合、基本的なメッセージ認証を使用してアイデンティティ・アサーションの整合性を確認するようにこのプロデューサが構成されているかどうかを確認することが重要です。

74.18.2.2 認可

認可によって、特定のユーザーがポートレットの表示または対話を行えるかどうかが判断されます。ポートレットへのアクセスを制限する方法の詳細は、第74.18.4項「ポートレットのセキュリティ・マネージャ」を参照してください。

74.18.2.3 メッセージ・レベルのセキュリティ

これまでに説明したユーザー認証と認可では、プロデューサが受信したメッセージの信頼性までは確認されません。プロデューサを完全に保護するには、プロデューサとの通信も保護する必要があります。通信が保護されていないと、誰かがアプリケーション・インスタンスを装い、プロデューサをだまして機密情報を返信させる恐れがあります。通信セキュリティには、次の3種類があります。

- サーバー認証では、プロデューサへのアクセスを少数の認証されているマシンに制限します。この方法では、受信したHTTPメッセージのIPアドレスまたはホスト名をトラステッド・ホストのリストと比較します。リストにIPアドレスまたはホスト名がある場合、メッセージはプロデューサに渡されます。リストにないと、そのメッセージはプロデューサに達する前に拒否されます。

- メッセージ認証では、コンシューマ認証とメッセージ整合性が提供されます。ここでは、メッセージをデジタル署名するために、クライアント(Portal Frameworkアプリケーション)およびプロデューサに既知の共有鍵が使用されます。詳細は、第74.18.5項「メッセージ認証」を参照してください。

- メッセージの暗号化は、アプリケーションとプロデューサ間の通信にHTTPSプロトコルを使用することによって行われます。メッセージは高度に暗号化され、その中でデータが保護されます。暗号化によって高水準のセキュリティを確保できますが、メッセージごとに追加処理が必要になるため、パフォーマンスが低下します。

- ユーザー入力のエスケープでは、アプリケーションはXSS攻撃から保護するために、ユーザーが入力した任意の文字列をエスケープし、テキストのみとして処理します。XSS攻撃では、攻撃者はユーザー入力フォームを介して悪意のあるスクリプトで渡そうとします。たとえば、ポートレット・タイトルがカスタマイズ可能な場合、攻撃者はタイトル・パラメータ・エントリを使用して、ポートレットにスクリプトまたはコマンドを渡そうとすることができます。このため、デフォルトの動作では、ユーザー入力がエスケープされ、すべての着信スクリプトが使用不可になっています。詳細は、第74.18.6項「ユーザー入力のエスケープ」を参照してください。

74.18.3 シングル・サインオン

ポートレットは、アプリケーションへのウィンドウの役割を果たすことができます。ポートレットにはサマリー情報が表示され、アプリケーションのすべての機能にアクセスする方法が提供されます。ポートレットにはFrameworkアプリケーションにアプリケーションの一部が表示され、通常はユーザーがいくつかのアプリケーション・タスクを実行できます。

アプリケーションでは、ポートレットを介してアプリケーションにアクセスするユーザーを認証する必要があります。次のアプリケーション認証方法があります。

- 外部アプリケーション。この認証方法では、Oracle Portal (Oracle Portal)ユーザーとアプリケーションのユーザーは異なりますが、アプリケーションのユーザー名とパスワードはOracle Portalユーザーが管理します。

- アプリケーションによる認証がない場合。この場合は、プロデューサとコンシューマ間の通信がまったく保護されません。

74.18.3.1 外部アプリケーション

外部アプリケーションでは、Frameworkアプリケーションとは異なる認証サーバーを使用します。これは、ユーザーがFrameworkアプリケーションにログインしている場合、そのユーザーを、ユーザー名やパスワードを入力せずに、外部アプリケーションにもログインできるようにすることを意味します。

ユーザーの認証を管理しているアプリケーションは、管理者がそのアプリケーションを外部アプリケーションとして登録している場合、WebCenter Frameworkと柔軟に統合できます。以前にWebCenter Frameworkによって認証されたユーザーが初めて外部アプリケーションにアクセスすると、WebCenter Frameworkでは、その外部アプリケーションを使用してユーザーの認証を試みます。認証プロセスでは、そのアプリケーションの登録情報と、ユーザーのユーザー名とパスワードとを結合するHTTPリクエストが送信されます。ユーザーがまだその外部アプリケーションのユーザー名とパスワードを登録していない場合は、認証リクエストを行う前に、必要な情報の入力がユーザーに要求されます。ユーザーが外部アプリケーションのユーザー名とパスワードを入力すると、WebCenter Frameworkでは、新しいユーザー名とパスワードがFrameworkアプリケーションのユーザー名にマップされ、格納されます。格納された情報は、次回ユーザーが外部アプリケーションによる認証が必要なときに使用されます。

外部アプリケーションの利点は次のとおりです。

- ユーザーはシングル・サインオンを利用できます。ただし、ユーザーは異なるユーザー名やパスワードを保持する必要があります。さらに、外部アプリケーションのユーザー名のマッピングも保持する必要があります。

- ユーザー・リポジトリおよびOracle Single Sign-Onに依存せずに、複数のポータルと統合できます。

- アプリケーションのソース・コードへのアクセス権限が不要です。

外部アプリケーションの不利な点は次のとおりです。

- ポータルと同じユーザー・リポジトリを共有しません。このため、エンド・ユーザーによるユーザー情報の管理が必要です。

- ユーザー名とパスワードは、Secure Sockets Layer (SSL)を実装しないかぎり、プレーン・テキストでプロデューサに送信されます。

74.18.3.2 アプリケーションによる認証がない場合

プロデューサはリクエストを送信するFrameworkアプリケーション・インスタンスを完全に信頼します。プロデューサは、ユーザーがログインしているかどうかの確認やポータル・ユーザー名の確認はできますが、アプリケーションによるユーザーの認証は行われていません。

アプリケーションによる認証がない場合の利点は次のとおりです。

- 最も簡単な形式で統合し、最も短時間で実装できます。

アプリケーションによる認証がない場合の不利な点は次のとおりです。

- 最も低いセキュリティ・レベルになります。

- WebCenter Portal Frameworkアプリケーションとの最も弱い統合になります。

74.18.4 ポートレットのセキュリティ・マネージャ

ポートレットのセキュリティ・マネージャをプロデューサ内に実装し、ユーザーの詳細に応じてポートレットへのアクセスを制限できます。ユーザーがポートレット・インスタンスを含むページを表示すると、セキュリティ・マネージャによって、そのユーザーにポートレットを表示する適切な権限があるかどうかが判断されます。プロデューサでアクセス制御メソッドを実装することで、適切な権限のないユーザーはポートレットからコンテンツを取得できない(つまり、ポートレットを表示しない)ように制限します。ユーザーの詳細や設定項目など指定の特性が認可ロジックを通過した場合のみ、そのユーザーはコンテンツを取得できます。プロデューサでポートレットのセキュリティ・メソッドを実装しない場合は、偽名や認証されていない名前であっても、すべてのユーザー名が通過する可能性があります。

AuthLevelSecurityManagerは、認可レベルに関する次の情報にアクセスできます。

- 強い認証
ユーザーはPortal Frameworkアプリケーションにサインインしたことがあり、そのセッションのコンテキストでポートレットをリクエストしています。

- パブリックまたは認証なし
ユーザーは現行セッションのコンテキスト内でログインしたことがなく、以前にログインしたことを示す永続的なCookieもありません。

これらのセキュリティ・サービスをJavaポートレットに組み込むには、provider.xmlを更新して、セキュリティ・レベルをstrong、weakまたはpublicに設定する必要があります。次のXMLをprovider.xmlの</portlet>タグの直前に挿入してください。

<securityManager class="oracle.portal.provider.v2.security.AuthLevelSecurityManager">
<securityLevel>strong</securityLevel>
</securityManager>

provider.xmlを変更した後は、プロデューサをリフレッシュします。

provider.xmlの構文の詳細は、OTNでプロデューサのJavaDocを参照してください。

http://www.oracle.com/technology/products/ias/portal/html/javadoc/xml_tag_reference_v2.html

74.18.4.1 独自のセキュリティ・マネージャの実装

PDKに付属する実装では提供されない特別なセキュリティ対策がポートレットに必要な場合は、独自のカスタムPortletSecurityManagerコントローラ・クラスを指定する必要があります。そのためには、oracle.portal.provider.v2.security.PortletSecurityManagerクラスを拡張し、インタフェースで指定されている2つのメソッドに対して実装を提供します。次に、XMLプロデューサ定義でsecurityManagerコントローラ要素のクラス属性を新しいクラス名に置き換え、子要素を適切に構成します。

74.18.5 メッセージ認証

メッセージ認証ではデジタル署名を使用します。この署名は、Hashed Message Authentication Code (HMAC)アルゴリズムを使用し、ユーザー情報、共有鍵およびUTC(協定世界時)タイムスタンプを基にして生成されます。プロデューサは、共有鍵の独自のコピーを使用してメッセージを認証します。この手法は、クライアント資格証明のかわりに、プロデューサとのSecure Sockets Layer (SSL)通信で使用できます。

キャッシュを目的として、セッションが設定されるたびに表示リクエストの署名が計算されるため、メッセージ認証を使用するプロデューサでは常にプロデューサ・セッションを有効にしておく必要があります。これは同時に、パフォーマンスとセキュリティとの間にトレードオフの関係があることを示しています。セッション・タイムアウトを短くするほどメッセージが不正に再送される可能性も低くなりますが、プロバイダ・セッションの再確立に関連するパフォーマンスのオーバーヘッドが発生します。

セキュリティや管理上の問題が発生する可能性があるため、1つのプロデューサ・インスタンスで複数の共有鍵はサポートできません。たとえば、共有鍵のコピーの1つがなんらかの方法で侵害された場合、プロデューサの管理者は鍵を作成してすべてのアプリケーション・クライアントに配布し、クライアントはそのプロデューサ定義を更新する必要があります。この問題を回避するには、異なるプロデューサ・サービスをデプロイして、サービスごとに一意の共有キーを指定します。各プロデューサ・サービスには独自のデプロイ・プロパティ・ファイルがあるため、各サービスは他のサービスとは無関係に構成されます。同じプロデューサ・アダプタ内に複数のプロデューサ・サービスをデプロイすることによるオーバーヘッドは比較的小さいものです。

署名要素は、メッセージの傍受や再送信に対する保護を提供しますが、メッセージ・コンテンツの傍受や読取りを防ぐための処理は何も行いません。しかも、メッセージはプレーン・テキストで送信されます。メッセージの内容を認可されていない人々に読み取られることが心配な場合は、これをSSLと組み合せて使用し、メッセージを暗号化する必要があります。

メッセージ認証の利点は次のとおりです。

- プロデューサによって受信されたメッセージが正当なFrameworkアプリケーション・インスタンスから送信されたものであることが保証されます。

メッセージ認証の不利な点は次のとおりです。

- プロデューサが複数のポータルを提供する場合は、管理上の問題が発生します。セッションのタイムアウトを短くすることによってセキュリティを非常に高くした場合は、パフォーマンス上の影響があります。

74.18.6 ユーザー入力のエスケープ

テキストにエスケープせずにユーザー入力を受け付けると、攻撃者がユーザー入力フォームを介して悪意のあるスクリプトを渡そうとするXSS攻撃を受ける危険があります。たとえば、ポートレット・タイトルがカスタマイズ可能な場合、攻撃者はタイトル文字列を使用して、ポートレットにスクリプトまたはコマンドを渡そうとすることができます。PDK-Javaでは、そのような攻撃からポートレットを保護できるように、次の機能が提供されています。

- デフォルト・コンテナ・エンコーディング

- エスケープ・メソッド

74.18.6.1 デフォルト・コンテナ・エンコーディング

ポートレット・タイトル内のスクリプトが実行されないように、フレームワーク・デフォルト・コンテナ・レンダラ・クラスはすべてのスクリプト文字をエンコードします。このデフォルトの動作は、JNDI変数escapeStringsで制御されます。trueに設定すると、ポートレット・タイトル内のマークアップ・タグが表示タグ文字としてレンダリングされます。たとえば、<i>title</i>というタイトルのカスタマイズは、titleではなく<i>title</i>としてレンダリングされます。このモードは安全ですが、そのようにしたくない場合は、そのプロデューサのescapeStringsをfalseに設定できます。

escapeStringsはプロデューサ内のすべての論理プロデューサに適用されます。escapeStringsの値は、Fusion Middleware Controlコンソールから、他のJNDI変数と同じように設定できます。詳細は、第60.3.5.2項「JNDI変数値の設定」を参照してください。

74.18.6.2 エスケープ・メソッド

カスタマイズされた値をレンダリングするコードがある場合、XSS攻撃を避けるためにそれらの入力値を適切にエスケープする必要があります。これは、どのモードでページをレンダリングするコードでも同様です。PDK-Javaではこのための2つの新しい静的なメソッドが提供されています。Javaクラスoracle.portal.provider.v2.url.UrlUtilsにある次のようなメソッドです。

- public static escapeString(string_text)は、与えられた文字列内の任意のスクリプト文字をエスケープします。たとえば、より小さい(<)は&ltとなります。このメソッドはescapeStrings JNDI変数による影響を受けず、安全であり、使用を推奨されています。

- public static escapeStringByFlag(string_text)は、与えられた文字列内の任意のスクリプト文字をエスケープします。このメソッドはescapeStrings JNDI変数によって制御されるので、安全性が低く、使用を推奨されていません。

例:

title = UrlUtils.escapeString(data.getPortletTitle());

74.19 WebCenter Portal偽装ELおよびAPIの使用

WebCenter Portal偽装では、一連の式言語式(EL)およびマッチングJava APIが提供され、偽装セッションをカスタマイズするため使用できます。WebCenter Portal偽装の管理の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「偽装の管理」の章を参照してください。(偽装者による)偽装セッションの開始および(被偽装者による)偽装セッションの許可の手順は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「WebCenter Portal偽装の使用」の章を参照してください。

公開されるELは、次のとおりです。

- #{WCSecurityContext.impersonationConfigured}: 現在のドメインで、偽装が有効化されているかどうかを返します。
このELは、偽装セッションの終了が早すぎることが原因でエラーが発生したのかどうかを判別したり、セッションが終了したことを示す追加のインジケータを提供する場合に便利です。

- #{WCSecurityContext.userInImpersonationSession}: 現在のユーザーが偽装セッション内かどうかを返します。
このELを使用して、コンテンツを保護し、偽装セッション中はアクセスできないようにレンダリングできます。たとえば、ページ上の管理タスク・フローのレンダリングされた属性をこのELにマップして、ユーザーが偽装セッションでタスク・フローを表示しない場合、タスク・フローのレンダリングのみを行うことができます。

- #{WCSecurityContext.currentImpersonator}: もし存在すれば、現在の偽装者を返します。
このELを使用すると、ページ・テンプレートを変更して偽装者を表示したり、特定の偽装者のみにアクセスできるようにコンテンツをレンダリングできます。

偽装および他のELの詳細は、付録F「式言語式」を参照してください。

oracle.webcenter.security.common.WCSecurityUtilityでは、次のパブリックAPIが公開されます。

- isImpersonationConfigured(): 現在のドメインで、偽装が有効化されているかどうかを返します。
このAPIは、エラーの原因が偽装セッションの終了が早すぎるためなのかを判定するため、またはセッション終了のインジケータを追加して提供するために役立ちます。

- isUserInImpersonationSession(): 現在のユーザーが偽装セッション内かどうかを返します。
このAPIは、コンテンツを保護するため、また偽装セッションの間にコンテンツをアクセス不能にするために使用することをお薦めします。たとえば、認証の例外をスローするか、ユーザーが偽装セッションでタスク・フローを表示している場合に空のリストを返すかして、ページ上の管理タスク・フローの変更された属性を、このAPIにマップすることが可能です。

- getCurrentImpersonatorId(): もし存在すれば、現在の偽装者を返します。
このAPIを使用して、ページ・テンプレートを変更して偽装者を表示するようにする(例74-10参照)か、一部のコンテンツを、特定の偽装者にかぎりアクセス可能に変更することが可能です。

これらのAPIおよびその他のAPIの詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

例74-10 getCurrentImpersonatorId API

import oracle.webcenter.security.common.WCSecurityUtility;
if (WCSecurityUtility.isUserInImpersonationSession())
{
String impersonator = WCSecurityUtility.getCurrentImpersonatorId();
String currentUser = ADFContext.getCurrent().getSecurityContext().getUserName();
//Code to be executed when the user is in an impersonation session.
..log("User " + impersonator + " is impersonating as user " + currentUser);
}

74.20 セキュリティ問題のトラブルシューティング

この項では、Portal Frameworkアプリケーションのセキュリティ関連の問題の診断に役立つトラブルシューティング情報を提供します。

この項には、次のトラブルシューティング項目が含まれています。

- 第74.20.1項「使用されているコンテンツ・リポジトリのデータ・コントロール・メソッドを含むページの実行時に表示されるエラー・メッセージ」

74.20.1 使用されているコンテンツ・リポジトリのデータ・コントロール・メソッドを含むページの実行時に表示されるエラー・メッセージ

問題

コンテンツ・リポジトリのデータ・コントロール・メソッドを含むページを実行すると、次のエラー・メッセージが表示されます。

"Unable to locate the credential for key extapp in JPS credential store."

原因

資格証明は、データ・コントロール・メソッドを使用するページにアクセスする前に、パスワードの変更タスク・フローを使用して明示的にプロビジョニングする必要があります。

解決方法

データ・コントロールは単なるモデルであり、資格証明プロビジョニングに対処するユーザー・インタフェース・レベルでは何も実行できないため、リダイレクトに対応するエラー・ハンドラをユーザー・インタフェースに記述する必要があります。エラー・ハンドラの記述の詳細は、『Oracle Application Development Framework開発者ガイド』のエラー処理のカスタマイズに関する項を参照してください。

エラー・ハンドラの例を次に示します。

public class ErrorHandler
extends DCErrorHandlerImpl
{
public ErrorHandler(boolean b)
{
super(b);
}

public ErrorHandler()
{
super(true);
}

@Override
public void reportException(DCBindingContainer formBnd, Exception ex)
{
if (ex instanceof AdapterException)
{
AdapterException ae = (AdapterException) ex;
if (ae.getCause() != null &&
ae.getCause() instanceof ExtAppLoginException)
{
ExtAppLoginException eale = (ExtAppLoginException) ae.getCause();
Throwable t = eale.getCause();
if (t != null &&
(t instanceof ExtAppCredentialNotFoundException) ||
(t instanceof ExtAppInvalidUserCredential))
{
String extAppId = eale.getExternalAppId();
showCredentialsProvisioningDialog(extAppId);
return;
}
}
}
super.reportException(formBnd, ex);
}

private void showCredentialsProvisioningDialog(String extAppId)
{
FacesContext context = FacesContext.getCurrentInstance();
// Create the dialog UIViewRoot
ViewHandler viewHandler = context.getApplication().getViewHandler();
UIViewRoot dialog =
viewHandler.createView(context,
"/oracle/adfinternal/extapp/view/pages/CredentialProvisionerDialog.jspx");

HashMap<String, Object> properties = new HashMap<String, Object>();
properties.put("width", new Integer(500));
properties.put("height", new Integer(350));

HashMap<String, Object> parameters = new HashMap<String, Object>();
parameters.put("oracle.extapp.id", extAppId);

RequestContext reqContext = RequestContext.getCurrentInstance();
//launched from the button, need to specify this for the return listener
//to be called.
reqContext.launchDialog(dialog, parameters, null, true, properties);
}
}

75 複数言語に対応したポータルの構築

この章では、ユーザーのブラウザの適切な言語でテキストが表示されるように、アプリケーションを構成する方法を説明します。

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

- 第75.1項「複数言語に対応したポータル構築のガイドライン」

- 第75.2項「ADF Facesコンポーネントの言語サポートの理解」

- 第75.3項「リソース・バンドルを使用した複数言語のサポート」

- 第75.4項「新しい言語用のサポートの追加」

75.1 複数言語に対応したポータル構築のガイドライン

作成したアプリケーションを複数の国のユーザーが表示する場合、様々なロケールを使用するようにそのJSFページまたはアプリケーションを構成することによって、ユーザーのブラウザの言語設定に応じた言語を表示できます。たとえば、作成したページがイタリアで表示されることがわかっている場合は、イタリア語を使用するようにユーザーのブラウザが設定されたときに、そのブラウザ・ページにテキスト文字列をイタリア語で表示するように、ページをローカライズできます。

また、選択するロケールによっては、そのロケールに適用される特殊な書式設定を考慮する必要があります。たとえば、情報の通常の表示方向(左から右または右から左)や数字の表記(通貨情報など)が考えられます。

複数言語に対応したポータルを開発する場合、次のことを考慮する必要があります。

- Oracle WebCenter Portalのツールとサービスで提供される複数言語のサポートを利用します。詳細は、第75.2項「ADF Facesコンポーネントの言語サポートの理解」を参照してください。

- すべてのリソースをリソース・バンドルに含め、代替言語リソース・バンドルを提供し、ユーザーによって選択された言語に対応できるようにアプリケーションをコーディングします。詳細は、第75.3項「リソース・バンドルを使用した複数言語のサポート」を参照してください。

- 使用するデータベース文字セットで、必要なすべての言語がサポートされていることを確認します。
詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』の「文字セットの選択」の章を参照してください。

- 必要なすべてのロケールをサポートする数字、日付および時間書式を使用します。
詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』の「グローバリゼーション・サポート環境の設定」の章を参照してください。

- 言語ソート・パラメータを使用して、ロケールに合ったソート順序を適用します。
たとえば、フランス語とフランス語(カナダ)では、同じ文字でもソート順序が異なります。

詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』の「言語ソートと文字列検索」の章を参照してください。

- 左から右または右から左(アラビア言語をサポートする必要がある場合)に正しくレンダリングされるWebページを記述します。

グローバリゼーションの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』の「ページの国際化とローカライズ」の章を参照するか、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

75.2 ADF Facesコンポーネントの言語サポートの理解

いくつかのADF Facesコンポーネントは、コンポーネントの一部であるテキストを含むことがあります。たとえば、データの初期ロード中に表がデータをフェッチしているとき、または表がスクロールされているときに、af:tableコンポーネントでは、ブラウザで表示されるメッセージ・テキストにリソース文字列af_table.LABEL_FETCHINGが使用されます。Oracle JDeveloperでは、これらのテキスト・リソースの28言語の翻訳を提供します。したがって、指定されたコンポーネントを使用するときは、コンポーネントのテキストを翻訳するために追加の手順を実行する必要はありません。

75.3 リソース・バンドルを使用した複数言語のサポート

テキスト属性を設定してaf:commandButtonコンポーネントのラベルを定義する場合など、どのテキストをコンポーネントに追加する場合でも、実際のテキストを保持するリソース・バンドルを提供し、各ロケールに対応したリソース・バンドルのバージョンを作成し、<locale-config>要素をアプリケーションのfaces-config.xmlファイル内に追加してデフォルトのロケールとサポート対象のロケールを定義する必要があります。また、<resource-bundle>要素をアプリケーションのfaces-config.xmlファイルに追加して、アプリケーションのすべてのページからリソース・バンドルを使用できるようにする必要があります。一度リソース・バンドルを構成および登録すると、式言語(EL)エディタにそのバンドルのキーが表示されるため、アプリケーション・ページ内でバンドルを参照しやすくなります。

ADFコンポーネントに追加するテキスト用のテキスト・リソースをより簡単に作成するために、JDeveloperでは、ビジュアル・エディタ内のどの翻訳可能な文字列に対しても、リソース・バンドルの自動同期がサポートされます。コンポーネントをビジュアル・エディタまたはプロパティ・インスペクタ内で直接編集すると、テキスト・リソースがベース・リソース・バンドル内に自動的に作成されます。

自動リソース・バンドルの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のJDeveloperにおけるリソース・バンドルの自動統合の使用に関する項を参照してください。

リソース・バンドルの手動による定義の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』の手動によるリソース・バンドルとロケールの定義に関する項を参照してください。

75.4 新しい言語用のサポートの追加

Oracle WebCenter Portalには、28の言語と100の異なるロケール用のランタイム翻訳が用意されています。デフォルトでサポートされていない言語をサポートする場合は、新しい言語用の文字列ファイルを用意して、新しい言語用の<language>タグをsupported-languages.xml構成ファイルに追加する必要があります。

新しい言語用のサポートの追加の詳細は、Oracle Technology NetworkのOracle WebCenter Portalホワイト・ペーパーおよびテクニカル・ノートのページのホワイト・ペーパー、WebCenter Spacesの拡張サンプルの使用を参照してください。

第XIII部

付録

第XIII部の内容は次のとおりです。

- 付録A「Oracle WebCenter Portalファイル」

- 付録B「コンポーザ・コンポーネントのプロパティおよびファイル」

- 付録C「リソース・カタログのプロパティおよびファイル」

- 付録D「コンポーザ対応のページで使用するタスク・フローの作成のガイドライン」

- 付録E「Oracle Portalポータルの再利用」

- 付録F「式言語式」

- 付録G「分析データベース・スキーマ」

- 付録H「WebCenter Portalのアクセシビリティ機能」

A Oracle WebCenter Portalファイル

この付録では、WebCenter Portal Frameworkアプリケーションの開発時に、作成および変更されるファイルについて説明します。

内容は次のとおりです。

- 第A.1項「Oracle WebCenter Portalファイルの概要」

- 第A.2項「ファイルの概要」

- 第A.3項「WebCenter Portal Frameworkアプリケーション関連のファイル」

- 第A.4項「JSR 286ポートレット関連のファイル」

- 第A.5項「PDK-Javaポートレット関連のファイル」

- 第A.6項「システム・ファイル」

- 第A.7項「セキュリティ関連のファイル」

- 第A.8項「Oracle JDeveloperファイル」

- 第A.9項「WebCenter Portalのツールとサービス関連のファイル」

データ・モデルやユーザー・インタフェース・プロジェクトで作成するOracle Application Development Framework (Oracle ADF)メタデータ・ファイルの完全な参照は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

A.1 Oracle WebCenter Portalファイルの概要

Oracle WebCenter Portalを使用してアプリケーションおよびコンポーネントを作成する際、ポートレットの構築や消費などのアクションを実行するときに、いくつかのファイルが作成されます。アプリケーションの作業を行うには、これらの各ファイルについて、またアプリケーションとの関連について、多少知っておくと便利です。Oracle WebCenter Portalの影響を受けるファイルは、次の2つのカテゴリに大別できます。

- すべてのOracle ADFアプリケーションに共通のファイル(web.xmlなど)。これらのファイルについては、Portal Frameworkアプリケーションのためにどのような追加や変更が加えられるかを知っておくと便利です。この付録ではこれらの変更について説明しますが、共通ファイルの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

- Portal Frameworkアプリケーションで一意のファイル(portlet.xmlなど)。これらのファイルについては、ファイルの目的とその内容を知っておくと便利です。これらのファイルについては、この付録で詳細に説明します。

A.2 ファイルの概要

作成および変更されるファイルは、Portal Frameworkアプリケーションの一部として作成するオブジェクトと密接に関連しています。したがって、これらのファイルは、次のようにオブジェクトごとに説明するのが最もわかりやすい方法です。

- WebCenter Portal Frameworkアプリケーション関連のファイル

- JSR 286ポートレット関連のファイル

- PDK-Javaポートレット関連のファイル

- システム・ファイル

- セキュリティ関連のファイル

- Oracle JDeveloperファイル

- WebCenter Portalのツールとサービス関連のファイル

A.3 WebCenter Portal Frameworkアプリケーション関連のファイル

この項では、WebCenter PortalのPortal Frameworkアプリケーション・テンプレートを使用して、アプリケーションを作成する際に作成されるファイルについて説明します。内容は次のとおりです。

- 第A.3.1項「catalog-registry.xml」

- 第A.3.2項「default-catalog.xml」

- 第A.3.3項「default-navigation-model.xml」

- 第A.3.4項「index.html」

- 第A.3.5項「navigation-registry.xml」

- 第A.3.6項「pages.xml」

- 第A.3.7項「error.jspx」

- 第A.3.8項「home.jspx」

- 第A.3.9項「login.jspx」

- 第A.3.10項「navigation-renderer.jspx」

- 第A.3.11項「pageTemplate_globe.jspx」

- 第A.3.12項「pageTemplate_swooshy.jspx」

また、アプリケーションで使用されるイメージ・ファイルも作成されます。

A.3.1 catalog-registry.xml

catalog-registry.xmlは、カタログ・レジストリ・ファイルです。ユーザーがリソース・カタログを作成または編集する際に、実行時管理コンソールにより使用されます。レジストリは、作成または変更するカタログに含められるすべてのアイテムのスーパーセットを定義します。1つのアプリケーションに対して複数のカタログを作成できますが、1つのアプリケーションが持つことのできるカタログ・レジストリ・ファイルは1つのみです。

A.3.2 default-catalog.xml

default-catalog.xmlは、デフォルト・リソース・カタログです。ユーザーが実行時にコンポーザを使用してページを編集すると、デフォルトのカタログ・ファイルは、ページに追加できるすべてのアイテムを指定します。

A.3.3 default-navigation-model.xml

default-navigation-model.xmlは、ポータル・サイトのナビゲーション構造に組み込まれるナビゲーション・モデル・ファイルです。詳細は、第10章「ナビゲーション・モデルの開発」を参照してください。

A.3.4 index.html

index.htmlは、リダイレクト文を含んでおり、ページ階層で指定されたhomeページを参照するURLエレメントpages_homeなどのポータル・ナビゲーション・モデルを参照します。詳細は、第5.11項「デフォルトのホーム・ページおよびログイン/ログアウト・ターゲット・ページの変更」を参照してください。

A.3.5 navigation-registry.xml

navigation-registry.xmlは、ユーザーがナビゲーション・モデルを作成または編集する際に、実行時管理コンソールにより使用されます。レジストリは、作成または変更するモデルに含められるすべてのアイテムのスーパーセットを定義します。1つのアプリケーションに対して複数のナビゲーション・モデルを作成できますが、1つのアプリケーションが持つことのできるナビゲーション・レジストリ・ファイルは1つのみです。詳細は、第10章「ナビゲーション・モデルの開発」を参照してください。

A.3.6 pages.xml

pages.xml (ページ階層ファイル)は、ページ間の親子関係を使用してページをツリー構造に編成します。この階層構造により、ページからサブページにセキュリティ設定を簡単に伝播または継承することが可能になります。詳細は、第5.3.2項「ページ、ページ・テンプレートとスタイル、およびポータルのページ階層の理解」を参照してください。

A.3.7 error.jspx

error.jspxは、Oracle WebCenter Portalでエラーが発生したときにユーザーに表示されるデフォルトのエラー・ページです。

A.3.8 home.jspx

home.jspxは、ユーザーにドキュメント、リンク、タグおよびディスカッションなどの機能へのアクセスを提供するデフォルト・ホームページです。

A.3.9 login.jspx

login.jspxは、ユーザーにログイン/ログアウト機能を提供するデフォルト・ログイン・ページです。ログイン・ページのカスタマイズの詳細は、第74.9項「ログイン・ページへのポートレットの追加」を参照してください。

A.3.10 navigation-renderer.jspx

navigation-renderer.jspxは、ポートレット、コンテンツ、タスク・フローなど、ナビゲーションに表示されるページ以外のリソースのレンダリングに使用されます。詳細は、第10.8項「ナビゲーション・レンダラの編集」を参照してください。

A.3.11 pageTemplate_globe.jspx

pageTemplate_globe.jspxは、アプリケーションの作成時に「標準ポータル機能のアプリケーションの構成」オプションを選択したときに作成される2つのシード・ページ・テンプレートの1つです。このテンプレートは、基本的にpageTemplate_swooshy.jxpxと同じ機能を提供しますが、グラフィックは異なります。詳細は、第11章「ページ・テンプレートの開発」を参照してください。

A.3.12 pageTemplate_swooshy.jspx

pageTemplate_swooshy.jspxは、アプリケーションの作成時に「標準ポータル機能のアプリケーションの構成」オプションを選択したときに作成される2つのシード・ページ・テンプレートの1つです。このテンプレートは、基本的にpageTemplate_globe.jxpxと同じ機能を提供しますが、グラフィックは異なります。詳細は、第11章「ページ・テンプレートの開発」を参照してください。

A.4 JSR 286ポートレット関連のファイル

この項では、JSR 286ポートレットを構築する際に作成されるファイルについて説明します。内容は次のとおりです。

- 第A.4.1項「portlet.xml」

- 第A.4.2項「oracle-portlet-tags.jar」

- 第A.4.3項「portlet_mode.jsp」

- 第A.4.4項「portlet_name.java」

- 第A.4.5項「portlet_nameBundle.jar」

- 第A.4.6項「web.xml」

A.4.1 portlet.xml

portlet.xmlは、JSR 286ポートレットの特性を定義します。portlet.xmlの詳細は、次で入手できるJavaポートレット仕様を参照してください。

http://jcp.org/en/jsr/detail?id=168

例A-1は、portlet.xmlファイルのサンプル・フラグメントです。この例には、portlet.xmlの使用可能な要素がすべて含まれているわけではありません。

例A-1 portlet.xmlのサンプル

<portlet>
<description xml:lang="en">JSR 286 map portlet </description>
<portlet-name>portlet1</portlet-name>
<display-name xml:lang="en">Map Portlet</display-name>
<portlet-class>jsrportlet.MapPortlet</portlet-class>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>edit</portlet-mode>
<portlet-mode>help</portlet-mode>
<portlet-mode>about</portlet-mode>
</supports>
<supported-locale>en</supported-locale>
<resource-bundle>jsrportlet.resource.MapPortletBundle</resource-bundle>
<portlet-info>
<title>Map Portlet</title>
<short-title>Map</short-title>
<keywords/>
<portlet-preferences>
<preference>
<name>portletTitle</name>
</preference>
</portlet-preferences>
<security-role-ref>
<role-name>viewer</role-name>
</security-role-ref>
</portlet>

JSR 286ポートレットの場合、portlet.xmlファイルには、ポートレットおよびそれらの設定関連の情報がすべて含まれています。前のサンプルでは、これらの設定がすべて使用されているわけではありません。

- <description>: エンド・ユーザーに詳細情報を提供するポートレットについて説明します。

- <portlet-name>: ポートレット・アプリケーション内でポートレット・プロデューサ・アプリケーションを一意に識別します。

- <display-name>: ユーザーに使用可能なポートレットのリストを表示するときに使用します。

- <portlet-class>: javax.portlet.Portletインタフェースを実装するクラス、またはポートレット・ロジックのエントリ・ポイントとなるGenericPortlet抽象クラスを拡張するクラスの完全修飾クラス名が入ります。ポートレット・コンテナは、ポートレット・ライフ・サイクル・メソッドを起動するときにこのクラスを使用します。Oracle JSF Portlet Bridgeを使用して作成されるJSFポートレットの場合、これはoracle.portlet.bridge.adf.application.ADFBridgePortletになります。

- <expiration-cache>: 有効期限のキャッシュのデフォルトの期間です。

- <init-param>: ポートレットの動作を構成する初期化パラメータを定義します。Oracle JSF Portlet Bridgeは、表示モードなど、ポートレットでサポートされる別のポートレット・モデルのエントリ・ポイントを識別するために初期化パラメータを使用します。

<init-param>
<name>javax.portlet.faces.defaultViewId.view</name>
<value>/myPage.jspx</value>
</init-param>

他のWebCenter Portal対応モードの初期化パラメータは、次のとおりです。

- 編集モード: javax.portlet.faces.defaultViewId.edit

- ヘルプ・モード: javax.portlet.faces.defaultViewId.help

- 情報モード: javax.portlet.faces.defaultViewId.about

- 構成モード: javax.portlet.faces.defaultViewId.config

- デフォルト編集モード: javax.portlet.faces.defaultViewId.edit_defaults

- プレビュー・モード: javax.portlet.faces.defaultViewId.preview

- 印刷モード: javax.portlet.faces.defaultViewId.print

注意:

defaultViewIdの値はアプリケーションのコンテキスト・ルートと関連しており、必ず/で始まる必要があります。例では、defaultViewId.viewの値が/myPage.jspxに指定されています。

defaultViewIdに他のポートレット・モードを追加する場合は、<supports>タグにもモードを追加する必要があります。たとえば、<portlet-mode>HELP</portlet-mode>のようになります。

- <supports>: コンテンツ・タイプごとにサポートされているポートレット・モードについての情報を提供します。WebCenter Portalでサポートされているポートレット・モードには、edit、help、about、config、edit_defaults、previewおよびprintがあります。

- <supported-locale>: ポートレットで実行時にサポートされるロケールをリストします。

- <resource-bundle>: リソース・バンドルの完全修飾クラス名で、タイトルやキーワードなど、言語専用のポートレット情報提供するために使用されます。

- <title>: ポートレットの静的タイトル。通常は、ポートレット・ウィンドウ上のポートレットの装飾内で表示されます。

- <short-title>: 表示能力が限られているデバイス(携帯電話など)で使用されるタイトル。

- <keywords>: ユーザーに検索能力を提供するアプリケーションで使用されます。

- <portlet-preferences>: プリファレンス属性定義です。

- <supported-processing-event>: ポートレットで受信可能なイベントです。

- <supported-publishing-event>: ポートレットを呼び出すイベントです。

- <supported-public-render-parameter>: ポートレットでサポートされるパブリック・レンダラ・パラメータです。

- <container-runtime-option>: 追加の実行時の動作を定義するオプションです。

- <security-role-ref>: web.xmlでセキュリティ・ロールにロール名をマップします。<security-role-ref>をマップする先のweb.xml内にあるロールのリストは、プロデューサのユーザー・カテゴリとしてコンシューマに公開されます。web.xmlでは、<security-role>は次のように表示されます。

<security-role>
<description>Viewer role</description>
<role-name>viewer</role-name>
</security-role>

A.4.2 oracle-portlet-tags.jar

oracle-portlet-tags.jarは、Javaポートレット仕様で定義されているJSPタグ・ライブラリのOracle実装です。

A.4.3 portlet_mode.jsp

ポートレット用に作成するポート・モードの実装スタイルに応じて、対応するJSPファイルが、そのモードを定義するためにportlet_name\htmlディレクトリに作成されます。たとえば、ポートレットに表示モードと編集モードを使用する場合、portlet_name\htmlディレクトリにview.jspとedit.jspが必要になります。JSR 286ポートレットの場合、使用するポートレット・モードに対して次のJSPファイルが作成されます。

- about.jsp

- config.jsp

- edit_defaults.jsp

- edit.jsp

- help.jsp

- preview.jsp

- print.jsp

- view.jsp

ポートレット・モードの詳細は、第57.4.2項「ポートレット・モード」を参照してください。

A.4.4 portlet_name.java

portlet_name.javaは、ポートレット・ロジックのエントリ・ポイントの役割を果すクラスです。このクラスは、javax.portlet.Portletインタフェースを実装するか、GenericPortlet抽象クラスを拡張する必要があります。ポートレット・コンテナは、ポートレット・ライフ・サイクル・メソッドを起動するときにこのクラスを使用します。

A.4.5 portlet_nameBundle.jar

portlet_nameBundle.jarは、ポートレットで使用される文字列の翻訳が含まれるリソース・バンドル・クラスです。

A.4.6 web.xml

web.xmlファイルは、Webアプリケーションに関する詳細情報が含まれたJava EE標準ディスクリプタです。web.xmlの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

A.5 PDK-Javaポートレット関連のファイル

この項では、PDK-Javaポートレットを構築する際に作成されるファイルについて説明します。内容は次のとおりです。

- 第A.5.1項「producer_name.properties」

- 第A.5.2項「_default.properties」

- 第A.5.3項「index.jsp」

- 第A.5.4項「portlet_name_modePage.jsp」

- 第A.5.5項「provider.xml」

- 第A.5.6項「web.xml」

A.5.1 producer_name.properties

producer_name.propertiesは、プロデューサについてのデプロイメント詳細(provider.xmlファイルの場所など)を指定します。たとえば、このファイルは、PDK-Javaサンプルの登録URLが次の形式の場合に使用されます。

http://host:port/jpdk/provider/samples

または

http://host:port/jpdk/provider

ここでは、サービスIDフィールドにsamplesが含まれています。第A.5.2項「_default.properties」も参照してください。

A.5.2 _default.properties

_default.propertiesは、プロデューサについてのデプロイメント詳細(provider.xmlファイルの場所など)を指定します。たとえば、このファイルは、PDK-Javaサンプルの登録URLが次の形式の場合に使用されます。

http://host:port/jpdk/provider

プロデューサ名はここでは指定されないので、デフォルトにする必要があります。第A.5.1項「producer_name.properties」も参照してください。

A.5.3 index.jsp

index.jspは、Oracle JDeveloperからPDK-Javaプロデューサをテストする際の便利な開始点として役立ちます。このファイルには、アプリケーションで使用可能なすべてのプロデューサのリストが含まれています。

A.5.4 portlet_name_modePage.jsp

ポートレット用に作成するポートレット・モードの実装スタイルに応じて、対応するJSPファイルが、そのモードを定義するために\htdocs\portlet_nameディレクトリに作成されます。たとえば、portletOneというポートレットに表示モードと編集モードを使用する場合、\htdocs\portletOneディレクトリにportletOneShowPage.jspとPortletOneEditPage.jspが必要です。PDK-Javaポートレットの場合、使用するポートレット・モードに次のJSPファイルが作成されます。

- portlet_nameAboutPage.jsp

- portlet_nameEditDefaultsPage.jsp

- portlet_nameEditPage.jsp

- portlet_nameHelpPage.jsp

- portlet_nameShowDetailsPage.jsp

- portlet_nameShowPage.jsp

ポートレット・モードの詳細は、第57.4.2項「ポートレット・モード」を参照してください。

A.5.5 provider.xml

provider.xmlは、PDK-Javaプロデューサの定義ファイルです。

例A-2は、provider.xmlファイルのサンプルを示しています。

例A-2 provider.xmlのサンプル

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?providerDefinition version="3.1"?>
<provider class="oracle.portal.provider.v2.DefaultProviderDefinition">
<localePersonalizationLevel>none</localePersonalizationLevel>
<session>true</session>
<defaultLocale>en</defaultLocale>
<preferenceStore
class="oracle.portal.provider.v2.preference.FilePreferenceStore">
<name>prefStore1</name>
<useHashing>true</useHashing>
</preferenceStore>
<portlet class="oracle.portal.provider.v2.DefaultPortletDefinition">
<id>1</id>
<name>SampleRenderer</name>
<title>SampleRenderer example</title>
<shortTitle>SampleRenderer</shortTitle>
<description>Example portlet rendered using the SampleRenderer</description>
<timeout>40</timeout>
<timeoutMessage>SampleRenderer example timed out</timeoutMessage>
<acceptContentType>text/html</acceptContentType>
<showEdit>true</showEdit>
<showEditToPublic>false</showEditToPublic>
<showEditDefault>true</showEditDefault>
<showPreview>true</showPreview>
<showDetails>true</showDetails>
<hasHelp>true</hasHelp>
<hasAbout>true</hasAbout>
<renderer
class="oracle.portal.sample.v2.devguide.samplerenderer.SampleRenderer"/>
<personalizationManager
class="oracle.portal.provider.v2.personalize.PrefStorePersonalizationManager">
<dataClass>oracle.portal.provider.v2.personalize.
NameValuePersonalizationObject
</dataClass>
</personalizationManager>
</portlet>
</provider>

A.5.6 web.xml

web.xmlファイルは、Webアプリケーションに関する詳細情報が含まれたJava EE標準ディスクリプタです。web.xmlの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

A.6 システム・ファイル

この項では、ページの作成または変更、アプリケーションのデプロイまたはJSR 268ポートレットの消費の際に、作成または変更されるファイルについて説明します。内容は次のとおりです。

- 第A.6.1項「adf-config.xml」

- 第A.6.2項「DataBindings.cpx」

- 第A.6.3項「faces-config.xml」

- 第A.6.4項「page_name.jspx」

- 第A.6.5項「PageDef.xml」

- 第A.6.6項「trinidad-config.xml」

- 第A.6.7項「trinidad-skins.xml」

- 第A.6.8項「web.xml」

- 第A.6.9項「weblogic-application.xml」

- 第A.6.10項「mdsサブディレクトリ」

- 第A.6.11項「wsdlサブディレクトリ」

A.6.1 adf-config.xml

adf-config.xmlファイルは、ADFコンポーネントにより使用される拡張可能な構成ファイルです。このファイルは、構成情報を設定するために、ページ、ポートレット、およびすべてのツールとサービス(検索、ワークリスト、ディスカッションなど)を含む様々なWebCenter Portalのツールとサービスにより使用されます。このファイルとconnections.xmlには、大部分のツールとサービスが機能するために必要な構成情報が含まれています。

詳細は、次の項を参照してください。

- 第19.2.1.3項「アドオンのadf-config.xmlへの登録」

- 第21.2.1.1項「アプリケーションのadf-config.xmlファイルの更新」(サンドボックスの作成に関する情報)

- 第22.5.1項「adf-config.xmlへのenableSecurityセクションの追加方法」

- 第63.3.5項「ポートレット・クライアント構成を編集する方法」

- 第B.2.2項「adf-config.xml」(コンポーザ固有の設定に関する情報)

A.6.2 DataBindings.cpx

DataBindings.cpxは、Webアプリケーションに共通するファイルです。DataBindings.cpxの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

A.6.3 faces-config.xml

faces-config.xmlは、JSFアプリケーションに共通するファイルです。このファイルでは、アプリケーションのページ・フローを説明しています。faces-config.xmlの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

A.6.4 page_name.jspx

page_name.jspxは、ページのためのJSPファイルです。ページに対してポートレットやデータ・コントロールなどのコンポーネントを追加または削除すると、このファイルが更新されます。

A.6.5 PageDef.xml

PageDef.xmlは、Oracle ADFアプリケーションに共通するファイルです。このファイルには、ポートレット・バインディングについての情報が保持されています。また、このファイルでは、ポートレット・パラメータをページの変数に関連付けることができます。

PageDef.xmlの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

PageDef.xmlのサンプル

例A-3は、PageDef.xmlファイルのサンプルを示しています。

例A-3 PageDef.xmlのサンプル

<?xml version="1.0" encoding="UTF-8" ?>
<pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel"
version="10.1.3.37.97" id="app_SRFeedbackPageDef"
Package="oracle.srdemo.view.pageDefs">
<parameters/>
<executables>
<methodIterator id="findAllServiceRequestIter"
Binds="findAllServiceRequest.result"
DataControl="SRPublicFacade" RangeSize="4"
BeanClass="oracle.srdemo.model.entities.ServiceRequest"/>
<variableIterator id="variables">
<variable Name="portlet1_Param1" Type="java.lang.Object"
DefaultValue="
${bindings.findAllServiceRequestIter.currentRow.dataProvider['svrId']}"/>
<variable Name="portlet1_Param2" Type="java.lang.Object"/>
<variable Name="portlet1_Param3" Type="java.lang.Object"/>
<variable Name="portlet1_Param4" Type="java.lang.Object"/>
<variable Name="portlet1_Param5" Type="java.lang.Object"/>
</variableIterator>
<methodIterator id="findServiceRequestByIdIter"
Binds="findServiceRequestById.result"
DataControl="SRPublicFacade" RangeSize="10"
BeanClass="oracle.srdemo.model.entities.ServiceRequest"/>
<portlet id="portlet1"
portletInstance="/oracle/adf/portlet/OmniProducer_1150310748178/
applicationPortlets/Portlet100_eebc7f18_010b_1000_8001_82235f640cea"
class="oracle.adf.model.portlet.binding.PortletBinding"
xmlns="http://xmlns.oracle.com/portlet/bindings">
<parameters>
<parameter name="Param1" pageVariable="portlet1_Param1"/>
<parameter name="Param2" pageVariable="portlet1_Param2"/>
<parameter name="Param3" pageVariable="portlet1_Param3"/>
<parameter name="Param4" pageVariable="portlet1_Param4"/>
<parameter name="Param5" pageVariable="portlet1_Param5"/>
</parameters>
</portlet>
</executables>
<bindings>
<methodAction id="findAllServiceRequest"
InstanceName="SRPublicFacade.dataProvider"
DataControl="SRPublicFacade"
MethodName="findAllServiceRequest" RequiresUpdateModel="true"
Action="999" IsViewObjectMethod="false"
ReturnName="SRPublicFacade.methodResults.
SRPublicFacade_dataProvider_findAllServiceRequest_result"/>
<table id="findAllServiceRequest1" IterBinding="findAllServiceRequestIter">
<AttrNames>
<Item Value="assignedDate"/>
<Item Value="problemDescription"/>
<Item Value="requestDate"/>
<Item Value="status"/>
<Item Value="svrId"/>
<Item Value="custComment"/>
<Item Value="custCommentDate"/>
<Item Value="custCommentContactBy"/>
<Item Value="mgrNotes"/>
<Item Value="mgrNotesDate"/>
</AttrNames>
</table>
<methodAction id="findServiceRequestById"
InstanceName="SRPublicFacade.dataProvider"
DataControl="SRPublicFacade"
MethodName="findServiceRequestById" RequiresUpdateModel="true"
Action="999" IsViewObjectMethod="false"
ReturnName="SRPublicFacade.methodResults.
SRPublicFacade_dataProvider_findServiceRequestById_result">
<NamedData NDName="svrIdParam"
NDValue=
"${bindings.findAllServiceRequestIter.currentRow.dataProvider['svrId']}"
NDType="java.lang.Integer"/>
</methodAction>
<attributeValues id="svrId" IterBinding="findServiceRequestByIdIter">
<AttrNames>
<Item Value="svrId"/>
</AttrNames>
</attributeValues>
<attributeValues id="custComment" IterBinding="findServiceRequestByIdIter">
<AttrNames>
<Item Value="custComment"/>
</AttrNames>
</attributeValues>
<attributeValues id="mgrNotes" IterBinding="findServiceRequestByIdIter">
<AttrNames>
<Item Value="mgrNotes"/>
</AttrNames>
</attributeValues>
<list id="ServiceRequestcustCommentContactBy"
IterBinding="findServiceRequestByIdIter" ListOperMode="0"
StaticList="true" NullValueFlag="1">
<AttrNames>
<Item Value="custCommentContactBy"/>
</AttrNames>
<ValueList>
<Item Value=" "/>
<Item Value="Phone"/>
<Item Value="Email"/>
<Item Value="SMS"/>
</ValueList>
</list>
<methodAction id="mergeEntity" InstanceName="SRPublicFacade.dataProvider"
DataControl="SRPublicFacade" MethodName="mergeEntity"
RequiresUpdateModel="true" Action="999"
IsViewObjectMethod="false"
ReturnName="SRPublicFacade.methodResults.
SRPublicFacade_dataProvider_mergeEntity_result">
<NamedData NDName="entity"
NDValue=
"${bindings.findServiceRequestByIdIter.currentRow.dataProvider}"
NDType="java.lang.Object"/>
</methodAction>
</bindings>
</pageDefinition>

A.6.6 trinidad-config.xml

JDeveloperでは、Portal Frameworkアプリケーションを作成する場合、trinidad-config.xmlファイルが/WEB-INFディレクトリに自動的に作成されます。例A-4に、このシード済trinidad-config.xmlファイルを示します。

例A-4 JDeveloperによって作成されるシード済trinidad-config.xmlファイル

<?xml version="1.0" encoding="US-ASCII"?>
<trinidad-config xmlns="http://myfaces.apache.org/trinidad/config">
<skin-family>#{preferenceBean.defaultTrinidadSkin}</skin-family>
</trinidad-config>

trinidad-config.xmlで、使用するスキンや必要に応じて付随する条件を決定する<skin-family>を設定できます。trinidad-config.xmlファイルは単純なXML構造であり、JSF Expression Language (EL)や静的な値を使用して、要素のプロパティを定義できます。

注意:

<skin-family>のデフォルト値は#{preferenceBean.defaultTrinidadSkin}です。デフォルト値を変更すると、アプリケーション・ユーザーは実行時にスキンを設定できません。

さらに、trinidad-config.xmlにはページ・アクセシビリティ・サポートのレベル、ページ・アニメーション、タイムゾーン、拡張デバッグ出力およびOracle Help for the Web (OHW)のURLに関する情報を含めることができます。

詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のtrinidad-config.xmlでの構成に関する項を参照してください。

A.6.7 trinidad-skins.xml

trinidad-skins.xmlは、JARとして提供されるどのスキンにも必要です。このファイルは、通常、各スキンJARとバンドルされていて、スキンIDとスキンの実際のパスの間の検索を実行します。ただし、Portal Frameworkアプリケーションのポータル・リソースとして作成されるスキンでは、個々の実行時APIを使用してスキンの場所が検索されます。したがって、このファイルはそのようなスキンには必要ありません。

詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』の「スタイルおよびスキンを使用した外観のカスタマイズ」の章を参照してください。

A.6.8 web.xml

web.xmlファイルは、Webアプリケーションに関する詳細情報が含まれたJava EE標準ディスクリプタです。web.xmlの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

A.6.9 weblogic-application.xml

weblogic-application.xmlは、Oracle WebLogic Serverのデプロイメント用のデプロイメント・ディスクリプタです(アプリケーションの構成を定義するサーバー構成ファイル)。

A.6.10 mdsサブディレクトリ

WebCenter Portal Frameworkアプリケーションをデプロイすると、プロジェクト・ディレクトリ内にmdsサブディレクトリが作成されます。このサブディレクトリには、ポートレットのカスタマイズやパーソナライズなど、他のサブディレクトリやメタデータ・ファイルが含まれています。

A.6.11 wsdlサブディレクトリ

アプリケーションでJSR 286ポートレットを使用する場合、wsdlサブディレクトリがWEB-INFディレクトリ内に作成されます。このサブディレクトリ内のファイルは、1つのWSRPプロデューサのポートレット用に作成された内部ファイルです。

A.7 セキュリティ関連のファイル

この項では、セキュリティを実装または変更する際に作成または変更されるファイルについて説明します。内容は次のとおりです。

- 第A.7.1項「connections.xml」

- 第A.7.2項「jazn-data.xml」

- 第A.7.3項「cwallet.sso」

- 第A.7.4項「jps-config.xml」

- 第A.7.5項「adf-config.xml」

A.7.1 connections.xml

connections.xmlファイルには、ポートレット・プロデューサ接続情報が含まれています。例A-5に、サンプルのconnections.xmlファイルを示します。

例A-5 connections.xml

<?xml version = '1.0' encoding = 'UTF-8'?>
<References xmlns="http://xmlns.oracle.com/adf/jndi">
<Reference name="SampleWSRPProducer-wsconn"
className="oracle.adf.model.connection.webservice.impl.WebServiceConnectionImpl" xmlns="">
<Factory className="oracle.adf.model.connection.webservice.api.WebServiceConnectionFactory"/>
<RefAddresses>
<XmlRefAddr addrType="WebServiceConnection">
<Contents>
<wsconnection description="http://portlet.example.com:9999/portletapp/portlets/wsrp2?WSDL">
<model name="{urn:oasis:names:tc:wsrp:v2:wsdl}WSRP_v2_Service" xmlns="http://oracle.com/ws/model">
<service name="{urn:oasis:names:tc:wsrp:v2:wsdl}WSRP_v2_Service">
<port name="WSRP_v2_PortletManagement_Service" binding="{urn:oasis:names:tc:wsrp:v2:bind}WSRP_v2_PortletManagement_Binding_SOAP">
<soap addressUrl="http://host:port/portletapp/portlets/WSRP_v2_PortletManagement_Service"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<operation name="setPortletProperties">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:setPortletProperties"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input name="setPortletProperties"/>
<output name="setPortletPropertiesResponse"/>
</operation>
<operation name="getPortletProperties">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:getPortletProperties"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input name="getPortletProperties"/>
<output name="getPortletPropertiesResponse"/>
</operation>
<operation name="importPortlets">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:importPortlet"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<output name="importPortletsResponse"/>
<input name="importPortlets"/>
</operation>
<operation name="destroyPortlets">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:destroyPortlets"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input name="destroyPortlets"/>
<output name="destroyPortletsResponse"/>
</operation>
<operation name="exportPortlets">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:exportPortlet"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<output name="exportPortletsResponse"/>
<input name="exportPortlets"/>
</operation>
<operation name="releaseExport">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:importPortlet"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input name="releaseExport"/>
<output name="releaseExportResponse"/>
</operation>
<operation name="getPortletsLifetime">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:getPortletsLifetime"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<output name="getPortletsLifetimeResponse"/>
<input name="getPortletsLifetime"/>
</operation>
<operation name="copyPortlets">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:copyPortlets"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<output name="copyPortletsResponse"/>
<input name="copyPortlets"/>
</operation>
<operation name="getPortletPropertyDescription">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:getPortletPropertyDescription"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input name="getPortletPropertyDescription"/>
<output name="getPortletPropertyDescriptionResponse"/>
</operation>
<operation name="clonePortlet">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:clonePortlet"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<output name="clonePortletResponse"/>
<input name="clonePortlet"/>
</operation>
<operation name="setPortletsLifetime">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:setPortletsLifetime"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<output name="setPortletsLifetimeResponse"/>
<input name="setPortletsLifetime"/>
</operation>
<operation name="getPortletDescription">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:getPortletDescription"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input name="getPortletDescription"/>
<output name="getPortletDescriptionResponse"/>
</operation>
<operation name="setExportLifetime">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:setExportLifetime"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input name="setExportLifetime"/>
<output name="setExportLifetimeResponse"/>
</operation>
</port>
<port name="WSRP_v2_Markup_Service" binding="{urn:oasis:names:tc:wsrp:v2:bind}WSRP_v2_Markup_Binding_SOAP">
<soap addressUrl="http://host:port/portletapp/portlets/WSRP_v2_Markup_Service"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<operation name="initCookie">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:initCookie"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<output name="initCookieResponse"/>
<input name="initCookie"/>
</operation>
<operation name="getMarkup">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:getMarkup"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<output name="getMarkupResponse"/>
<input name="getMarkup"/>
</operation>
<operation name="releaseSessions">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:releaseSessions"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input name="releaseSessions"/>
<output name="releaseSessionsResponse"/>
</operation>
<operation name="performBlockingInteraction">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:performBlockingInteraction"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input name="performBlockingInteraction"/>
<output name="performBlockingInteractionResponse"/>
</operation>
<operation name="getResource">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:getResource"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<output name="getResourceResponse"/>
<input name="getResource"/>
</operation>
<operation name="handleEvents">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:handleEvents"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input name="handleEvents"/>
<output name="handleEventsResponse"/>
</operation>
</port>
<port name="WSRP_v2_Registration_Service"
binding="{urn:oasis:names:tc:wsrp:v2:bind}WSRP_v2_Registration_Binding_SOAP">
<soap  addressUrl="http://host:port/portletapp/portlets/WSRP_v2_Registration_Service"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<operation name="register">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:register"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input name="register"/>
<output name="registerResponse"/>
</operation>
<operation name="getRegistrationLifetime">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:getRegistrationLifetime"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<output name="getRegistrationLifetimeResponse"/>
<input name="getRegistrationLifetime"/>
</operation>
<operation name="setRegistrationLifetime">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:setRegistrationLifetime"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input name="setRegistrationLifetime"/>
<output name="setRegistrationLifetimeResponse"/>
</operation>
<operation name="deregister">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:deregister"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input name="deregister"/>
<output name="deregisterResponse"/>
</operation>
<operation name="modifyRegistration">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:modifyRegistration"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input name="modifyRegistration"/>
<output name="modifyRegistrationResponse"/>
</operation>
</port>
<port name="WSRP_v2_ServiceDescription_Service" binding="{urn:oasis:names:tc:wsrp:v2:bind}WSRP_v2_ServiceDescription_Binding_SOAP">
<soap addressUrl="http://host:port/portletapp/portlets/WSRP_v2_ServiceDescription_Service"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<operation name="getServiceDescription">
<soap soapAction="urn:oasis:names:tc:wsrp:v2:getServiceDescription"
xmlns="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input name="getServiceDescription"/>
<output name="getServiceDescriptionResponse"/>
</operation>
</port>
</service>
</model>
</wsconnection>
</Contents>
</XmlRefAddr>
</RefAddresses>
</Reference>
<Reference name="SampleWSRPProducer" className="oracle.portlet.client.connection.wsrp.WSRPProducerConnection" xmlns="">
<Factory className="oracle.portlet.client.connection.wsrp.WSRPProducerConnectionFactory"/>
<RefAddresses>
<XmlRefAddr addrType="connectionDesc">
<Contents>
<wsrpproducerconnection wsConnection="SampleWSRPProducer-wsconn" timeout="30"/>
</Contents>
</XmlRefAddr>
</RefAddresses>
</Reference>
</References>

A.7.2 jazn-data.xml

アプリケーション用のセキュリティを実装または変更すると、jazn-data.xmlファイルが作成または変更されます。

jazn-data.xmlファイルは、アプリケーションのレルムおよびポリシー情報のデプロイを容易にするために使用されます。使用する開発環境(Oracle JDeveloper)で、jazn-data.xmlは、アプリケーションのworkspacedir/src/META-INFディレクトリにあります。デプロイメント後、このファイルの内容は、ドメイン・レベルのアイデンティティ・ストアまたはポリシー・ストアでマージされます。このファイルには、設計時に作成されたポリシーが含まれ、JpsApplicationLifecycleListenerにより、デプロイメント・ターゲットのsystem-jazn-data.xmlファイル(または適切に構成されたポリシー・ストア)へのデプロイ時にマージされます。

JpsApplicationLifecycleListenerを使用してセキュリティ情報を移行する際、jazn-data.xmlファイルは、移行用のソース・ファイルとして使用できます。移行ロールの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

jazn-data.xmlのサンプル

例A-6は、jazn-data.xmlファイルのサンプルを示しています。

A-6 jazn-data.xmlのサンプル

<?xml version = '1.0' encoding = 'UTF-8'?>
<jazn-data>
<jazn-realm>
<realm>
<name>jazn.com</name>
</realm>
</jazn-realm>
<policy-store>
<applications>
<application>
<name>mdsapp-secure</name>            <app-roles>
<app-role>
<name>unauthenticated-role</name>
<display-name>anonymous-role</display-name>
<class>oracle.security.jps.service.policystore.ApplicationRole</class>
</app-role>
<app-role>
<name>authenticated-role</name>
<display-name>authenticated-users</display-name>
<class>oracle.security.jps.service.policystore.ApplicationRole</class>
</app-role>
<app-role>
<name>approle</name>
<display-name>approle</display-name>
<description>approle</description>
<guid/>
<class>oracle.security.jps.service.policystore.ApplicationRole</class>
<members>
<member>
<class>oracle.security.jps.internal.core.principals.JpsXmlUserImpl</class>
<name>orcladmin</name>
</member>
</members>
</app-role>
</app-roles>
<jazn-policy>
<grant>
<grantee>
<principals>
<principal>
<class>oracle.security.jps.internal.core.principals.JpsAuthenticatedRoleImpl</class>
<name>authenticated-role</name>
</principal>
</principals>
</grantee>
<permissions>
<permission>
<class>oracle.adf.share.security.authorization.RegionPermission</class>
<name>project1.pageDefs.securePageDef</name>
<actions>view</actions>
</permission>
</permissions>
</grant>
<grant>
<grantee>
<principals>
<principal>
<class>oracle.security.jps.internal.core.principals.JpsAnonymousRoleImpl</class>
<name>anonymous-role</name>
</principal>
</principals>
</grantee>
<permissions>
<permission>
<class>oracle.adf.share.security.authorization.RegionPermission</class>
<name>project1.pageDefs.publicPageDef</name>
<actions>view</actions>
</permission>
</permissions>
</grant>
</jazn-policy>
</application>
</applications>
</policy-store>
<jazn-policy/>
</jazn-data>

A.7.3 cwallet.sso

cwallet.ssoは、外部アプリケーションの資格証明(存在する場合)と、データベース・パスワードなど、接続の保護されたデータを含みます。cwallet.ssoファイルは、workspaceroot/src/META-INFディレクトリに格納されています。

A.7.4 jps-config.xml

jps-config.xmlは、workspaceroot/src/META-INFに格納されています。アプリケーションとともにパッケージ化されているjps-config.xmlファイルは、設計時にのみ使用されます。実行時は、ドメイン・レベルで格納されている構成のjps-config.xmlファイルが機能します。

jps-config.xmlはOPSSサービスを構成します。jps-config.xmlの要素の階層および属性に関する詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』のOPSS構成ファイルの参照に関する項を参照してください。

推奨される移行は、移行コマンドの要求として定義された移行元および移行先のコンテキストで新しいjps-config.xmlファイルを作成することです。IDの移行に関する詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』の手動によるIDの移行に関する項を参照してください。

ポリシー・ストアを移行する方法には、ポリシー・ストア全体、アプリケーション固有のポリシーおよびグローバル・ポリシーを移行する方法があります。詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』の手動によるポリシーの移行に関する項を参照してください。

資格証明ストアは、2つの方法(資格証明ストア全体またはアプリケーションに固有の資格証明)で移行できます。アプリケーション固有の資格証明を移行するときは、srcFolderおよびtargetFolderが同じであることを確認します。srcFolderおよびtargetFolderは、adf-config.xmlファイルのappUIDから決定されます。例A-7を参照してください。詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』の手動による資格証明の移行に関する項を参照してください。

例A-7 adf-config.xmlファイル内のappUID

<adf:adf-properties-child xmlns="http://xmlns.oracle.com/adf/config/properties">
<adf-property name="adfAppUID" value="Application1-1167"/>
</adf:adf-properties-child>

A.7.5 adf-config.xml

セキュリティ構成は、adf-config.xmlに格納されています。このファイルは、workspaceroot/.adf/META-INF/adf-config.xmlに格納されています。例A-8を参照してください。

例A-8 adf-config.xml

<adf-security-child xmlns="http://xmlns.oracle.com/adf/security/config">
<JaasSecurityContext                     initialContextFactoryClass="oracle.adf.share.security.JAASInitialContextFactory"
jaasProviderClass="oracle.adf.share.security.providers.jps.JpsSecurityContext"
authorizationEnforce="true"
authenticationRequire="true"/>
<CredentialStoreContext                  credentialStoreClass="oracle.adf.share.security.providers.jps.CSFCredentialStore"
credentialStoreLocation="../../src/META-INF/jps-config.xml"/>
</adf-security-child>

注意:

サンプルのcredentialStoreLocationエントリは、設計時のみ有効です。

A.8 Oracle JDeveloperファイル

この項では、ページ・テンプレートを作成する際に作成または変更される、pagetemplate-metadata.xmlファイルについて説明します。

pagetemplate-metadata.xmlには、プロジェクトで作成したすべてのページ・テンプレートが記録されます。

A.9 WebCenter Portalのツールとサービス関連のファイル

この項では、いくつかのWebCenter Portalのツールとサービスのconnections.xmlおよびadf-config.xmlファイルのサンプルを示します。

例A-9は、SES Webサービス接続に最低限必要な構成を示しています。

例A-9 SES Web Service接続のサンプル

<Reference name="GenericSesConnection" className="oracle.adf.mbean.share.connection.webcenter.search.SesConnectionReferenceable"
credentialStoreKey="GenericSesConnection" xmlns="">
<Factory className="oracle.adf.mbean.share.connection.webcenter.search.SesConnectionFactory"/>
<RefAddresses>
<XmlRefAddr addrType="SesConfig">
<Contents>
<SesConfig>
<AttributeMap>
<Attribute name="date">
<SesAttribute>LastModifiedDate</SesAttribute>
</Attribute>
<Attribute name="person">
<SesAttribute>Author</SesAttribute>
</Attribute>
</AttributeMap>
<SoapUrl>http://host:port/search/query/OracleSearch</SoapUrl>
</SesConfig>
</Contents>
</XmlRefAddr>
<StringRefAddr addrType="appUsername">
<Contents>wpadmin</Contents>
</StringRefAddr>
<SecureRefAddr addrType="appPassword"/>
</RefAddresses>
</Reference>

例A-10では、ドキュメントのadf-config.xmlのサンプルを示します。

例A-10 ドキュメントのADF構成

<doclibC:adf-doclib-config xmlns="http://xmlns.oracle.com/webcenter/doclib/config"
primaryConnectionName="Oracle_Content_Server">
<doclibC:spaces-repository
spacesRoot="/repositoryPath"
adminUserName="sysadmin"
applicationName="application_name" />
</doclibC:adf-doclib-config>

例A-11では、ワークリストのadf-config.xmlのサンプルを示します。

例A-11 ワークリストのADF構成

<worklistC:adf-worklist-config>
<worklistC:ConnectionName>WebCenter-Worklist</worklistC:ConnectionName>
</worklistC:adf-worklist-config>

B コンポーザ・コンポーネントのプロパティおよびファイル

この付録では、コンポーザ固有のタグ、構成ファイル、およびスタイルのプロパティに関する参照情報について説明します。

内容は次のとおりです。

- 第B.1項「コンポーザ・コンポーネントのプロパティ」

- 第B.2項「コンポーザ固有のファイルと構成」

- 第B.3項「コンポーザのデフォルト・アドオンとプロパティ・パネル」

- 第B.4項「コンポーザ・コンポーネント・スタイル固有のプロパティ」

- 第B.5項「カスタマイズ可能コンポーネント(HTML)のプロパティ」

この章で提供される情報は、第18章「コンポーザを使用したページ実行時編集の有効化」および第19章「コンポーザを使用した実行時編集機能の拡張」で説明されたタスクの実行に利用できます。

B.1 コンポーザ・コンポーネントのプロパティ

この項は、すべてのコンポーザ・タグのクイック・リファレンスです。コンポーザ・コンポーネントをページに追加するとき、デフォルト値が特定の属性に割り当てられます。これらのデフォルト値を変更して、JDeveloperの残りの属性の値を定義することができます。

ページへのコンポーザ・コンポーネントの追加の詳細は、第18.1項「コンポーザ・コンポーネントを使用した編集可能ページの設計」を参照してください。

注意:

JDeveloperのプロパティ・インスペクタは、カスタマイズ属性のカテゴリの下に、拡張メタデータ属性をいくつか表示します。これらのプロパティは、追加のメタデータ情報の指定に使用できます。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の拡張メタデータ・プロパティに関する項を参照してください。

この項には次のサブセクションが含まれます:

- 第B.1.1項「Page Customizableコンポーネント」

- 第B.1.2項「Change Mode LinkおよびChange Mode Button」

- 第B.1.3項「Layout Customizableコンポーネント」

- 第B.1.4項「Panel Customizableコンポーネント」

- 第B.1.5項「Show Detail Frameコンポーネント」

- 第B.1.6項「Custom Action」

- 第B.1.7項「Show Property」

B.1.1 Page Customizableコンポーネント

Page Customizableコンポーネントを使用して、実行時にページ編集を有効化します。Page Customizableコンポーネントは、ページのカスタマイズ可能部分を示し、実行時は「編集」モードでコンポーザのツールバーを表示します。コンポーネントをPage Customizableコンポーネントで囲むと、実行時にアプリケーション・ページでコンポーザが有効化され、ユーザーはコンポーネントのカスタマイズと編集を実行できます。

大型のアプリケーションで、複数のページの実行時ページ編集を有効化する必要がある場合は、ページ・テンプレートの階層の最上部のいずれかの場所にPage Customizableコンポーネントを組み込むことができます。このようにすることで、このテンプレートを使用して作成されるすべてのページが実行時に編集可能になります。

ジオメトリ管理

表示モード: Panel Stretch LayoutコンポーネントやPanel Splitterコンポーネントなど、子をストレッチする親レイアウト・コンポーネントによってPage Customizableコンポーネントをストレッチできます。Page Customizableコンポーネントがストレッチされると、今度はその子コンポーネントをストレッチして、使用可能なスペースを埋めます。ただし、Page Customizableコンポーネントがストレッチされていない場合、そのサイズは子コンポーネントによって決定されます。

編集モード: Page Customizableコンポーネントは、子コンポーネントをストレッチして、使用可能なスペースを埋めます。

属性

表B-1は、Page Customizableコンポーネントの属性を示しています。

表B-1 Page Customizableコンポーネントの属性

属性

タイプ

ELのサポート

説明

共通属性

id

String

いいえ

コンポーネントの識別子。識別子はHTMLで許容されている構文のサブセットに従う必要があります。

- 長さがゼロの文字列にすることはできません。

- 最初の文字はASCII文字(A-Z a-z)またはアンダースコア(_)である必要があります。

- 後続の文字は、ASCII文字または数字(A-Z a-z 0-9)、アンダースコア(_)、ダッシュ(-)である必要があります。

rendered

Boolean

はい

コンポーネントがレンダリングされるかどうかを指定します。falseに設定した場合、このコンポーネントに対する出力はありません(コンポーネントはレンダリングされず、クライアントで表示することができません)。

デフォルト値はtrueです。

外観属性

sourceViewPosition

String

はい

コンポーネントをツリー構造で表示する「構造」ビュー・ペインの位置。有効な値はbottom、end、startおよびtopです。デフォルト値はtopです。

詳細は、第16.5項「ページの編集」を参照してください。

sourceViewSize

String

はい

「構造」ビュー・ペインのピクセル単位の高さと幅。

sourceViewPositionがtopまたはbottomに設定されている場合は、これを使用して高さを指定し、sourceViewPositionが、startまたはendに設定されている場合は幅を指定します。

sourceViewPositionのデフォルトはtopであるため、ペインにはデフォルトの高さ200ピクセルが設定されています。

また、ユーザーは「構造」ビュー・ペインのエッジにあるサイズ変更ハンドラを使用しても、実行時にペインの高さと幅を変更できます。

editModeView

コンポーザでページを開く際の、デフォルト・ビューを指定します。有効なオプションは、designおよびsourceです。デフォルト値はdesignです。

sourceを選択した場合、コンポーザの「構造」ビューでページが開きます。designViews属性の値にdesignまたはallが指定されている場合、designを選択すると、コンポーザでは「デザイン」ビューでページが開きます。それ以外の場合、「コンテンツの追加」ビューでページが表示されます。

rendered

Boolean

はい

コンポーネントがレンダリングされるかどうかを指定します。falseに設定した場合、このコンポーネントに対する出力はありません(コンポーネントはレンダリングされず、クライアントで表示することができません)。

デフォルト値はtrueです。

toolbarLayout

String

はい

コンポーザ・ツールバーに表示される要素。この属性には要素の空白区切りリストを指定できます。

コンポーネントが認識する組込み文字列は、message、stretch、statusindicator、newline、menu、addonpanels、stretch、helpおよびbuttonです。

この属性の使用の詳細は、第19.10項「コンポーザのツールバーのカスタマイズ」を参照してください。

スタイル属性

styleClass

String

はい

このコンポーネントで使用するCSSスタイル・クラス。スタイル・クラスは、JSPXページやスキニングCSSファイルなどで定義できます。

inlineStyle

String

はい

このコンポーネントで使用するCSSスタイル。これは、基本的なスタイルの変更用です。inlineStyleは、コンポーネントのルートDOM要素に適用されるCSSスタイルのセットです。inlineStyleのCSSプロパティが目的のDOM要素に反映されない場合は、スキンを作成して、::labelや::icon-styleなどの特定のDOM要素を対象にしたスキニング・キーを使用する必要があります。

拡張属性

binding

oracle.adf.view.page.editor.component.PageCustomizable

ELのみをサポート

Bean上にコンポーネント・インスタンスを格納するEL参照。この参照は、Backing Beanからコンポーネントへのプログラムによるアクセスを提供するため、またはコンポーネントの作成をBacking Beanに移すために使用できます。

sourceViewNodeActions

String

はい

コンポーザの「構造」ビューでコンポーネント・ナビゲータ内のタスク・フローに対するカスタム・アクションを表示する場合にコールされるJPSXファイルの名前。

sourceViewNodeAction属性は、JSPXファイルの名前、またはJSPXファイル名として評価されるEL値を取ることができます。

この属性の使用の詳細は、第20.4項「コンポーネント・ナビゲータ内のタスク・フローに表示されるカスタム・アクションの有効化」を参照してください。

allowLabel

Boolean

はい

カスタマイズ・マネージャでラベル作成を有効化する必要があるかどうかを指定します。allowLabelがtrueに設定されていると、コンポーザ・ツールバーに「保存してラベル付け」ボタンが表示されます。詳細は、第16.5.17項「アプリケーションのカスタマイズの管理」を参照してください。

この属性は、アプリケーションでサンドボックスのサポートを構成した場合のみ関係します。

catalog

String

はい

アプリケーション・ページでデフォルトとして使用されるリソース・カタログ。カタログ定義ファイル名を指定します。

複数のリソース・カタログの使用の詳細は、第14章「リソース・カタログの開発」を参照してください。

allowEL

Boolean

いいえ

ELがアプリケーション・ページで実行できるかどうかを指定します。デフォルトはtrueです。

この設定は、adf-config.xmlの<pe:allow-el>設定をオーバーライドします。

詳細は、第19.4.2項「式言語の保護方法」を参照してください。

protectEL

Boolean

いいえ

フォーム要素のELが読取り専用かどうかを指定します。デフォルトはfalseです。

この設定は、adf-config.xmlの<pe:protect-el>設定をオーバーライドします。

詳細は、第19.4.2項「式言語の保護方法」を参照してください。

designViews

String

はい

コンポーザでユーザーが利用できるビューを指定します。「コンテンツの追加」ビューおよび「構造」ビューは、後方互換性のためにデフォルトで利用できます。

この属性には要素の空白区切りリストを指定できます。選択可能なオプションは、design、add-content、source、select、previewおよびallです。

値をallに設定すると、「コンテンツの追加」以外のすべてのビューがレンダリングされ、「デザイン」ビューがコンポーザでのデフォルトのビューになります。

designViews属性が設定されている場合、adf-config.xmlのdesignViewsの設定よりも優先されます。ただし、この属性がnullを返すELに設定されている場合は、designViewsのadf-config.xmlの設定が使用されます。

詳細は、第19.11項「「デザイン」ビューまたは「コンテンツの追加」ビューでの直接選択の有効化」を参照してください。

カスタマイズ属性

customizationAllowed

Boolean

このコンポーネントに対するカスタマイズが可能かどうかを指定します。使用可能な値はtrueおよびfalseです。デフォルト値はtrueです。

customizationAllowedBy

String

カスタマイズを行うことが可能なロールを指定します。

サポートされているファセット

Page Customizableコンポーネントは、editorファセットを提供し、このファセットには、Page Editor Panelコンポーネントが事前移入されています。確実にコンポーザを正しく機能させるには、editorファセットにPage Editor Panelコンポーネントが含まれている必要があります。

ページ・ヘッダー上の並行処理メッセージの無効化

複数のユーザーが同時にページを編集すると、別のユーザーも同じページを編集していることを知らせるメッセージがコンポーザのヘッダーに表示されます。そのようなメッセージをヘッダーに表示しない場合には、この機能を無効にすることも可能です。Page CustomizableコンポーネントのshowMessage属性により、並行処理メッセージを無効化できます。この属性をfalseに設定すると、ページの編集モードに移行した場合に並行処理メッセージが表示されなくなります。

B.1.2 Change Mode LinkおよびChange Mode Button

Change Mode ButtonやChange Mode Linkは、実行時におけるページの編集モードへの切替えの有効化に使用します。

Change Mode LinkコンポーネントとChange Mode Buttonコンポーネントは、共通の属性セットを共有します。表B-2は、Change Mode LinkおよびChange Mode Buttonコンポーネントの属性を示しています。

表B-2 Change Mode LinkまたはChange Mode Buttonコンポーネントの属性

属性

タイプ

ELをサポートしているかどうか

説明

共通属性

id

String

はい

コンポーネントの識別子。識別子はHTMLで許容されている構文のサブセットに従う必要があります。

- 長さがゼロの文字列にすることはできません。

- 最初の文字はASCII文字(A-Z a-z)またはアンダースコア(_)である必要があります。

- 後続の文字は、ASCII文字または数字(A-Z a-z 0-9)、アンダースコア(_)、ダッシュ(-)である必要があります。

rendered

Boolean

はい

コンポーネントがレンダリングされるかどうかを指定します。falseに設定した場合、このコンポーネントに対する出力はありません(コンポーネントはレンダリングされず、クライアントで表示することができません)。

デフォルト値はtrueです。

保護されたアプリケーションで、特定の基準に従って選択したユーザーのみに対して「編集」リンクまたはボタンを有効化するには、rendered属性でEL値を指定します。

注意: 保護されたアプリケーションでは、すべてのユーザーの権限を確認して、権限のあるユーザーのみに「編集」リンクまたはボタンを有効化することをお薦めします。認証されていないユーザーが偶然ページの編集モードに入った場合でも、コンポーネント・プロパティの変更が可能です。

動作属性

immediate

Boolean

はい

このコンポーネントによってイベントが生成された場合に、クライアント側またはサーバー側のデータ検証をスキップする必要があるかどうかを指定します。immediateがtrueの場合、アプリケーション起動フェーズまで待つのではなく、リクエスト処理ライフサイクルのリクエスト値適用フェーズの際にJavaServer Faces実装によって提供されるデフォルトのActionListenerをはじめ、コマンドのアクションおよびActionListenerが実行されます。検証はプロセス・バリデータで(リクエスト値適用後、アプリケーションの起動前)実行されるため、immediateをtrueに設定すると検証がスキップされます。

拡張属性

binding

oracle.adf.view.page.editor.component.ChangeModeLink

または

oracle.adf.view.page.editor.component.ChangeModeButton

ELのみをサポート

Beanにコンポーネント・インスタンスを格納するEL参照。この参照は、Backing Beanからコンポーネントへのプログラムによるアクセスを提供するため、またはコンポーネントの作成をBacking Beanに移すために使用できます。

カスタマイズ属性

customizationAllowed

Boolean

このコンポーネントに対するカスタマイズが可能かどうかを指定します。使用可能な値はtrueおよびfalseです。デフォルト値はtrueです。

customizationAllowedBy

String

カスタマイズを行うことが可能なロールを指定します。

その他の属性

customizationId

この属性は非推奨になりました。id属性を使用してください。

Change Mode LinkまたはChange Mode Buttonコンポーネントを使用しない場合は、独自のボタンまたはリンクのコンポーネントを追加し、ChangeModeLinkまたはChangeModeButton APIを使用してページ・モードの切替えを可能にできます。

アプリケーション・ページでの実行時編集の無効化

ページの実行時編集を無効にするには、ユーザーの編集権限を取り消すか、ページからChange Mode LinkコンポーネントまたはChange Mode Buttonコンポーネントを削除して、ユーザーがページ内の編集モードにナビゲートできないようにします。

B.1.3 Layout Customizableコンポーネント

Layout Customizableコンポーネントは、事前定義されたレイアウトを子コンポーネントに適用します。これは、エンド・ユーザーが事前定義されたいくつかの方法で子コンポーネントをレイアウトできるようにするためのコンテナ・コンポーネントです。Layout Customizableコンポーネントは、実行時のページ・レイアウトの変更の有効化のみに使用します。コンポーネントをレイアウトするコンテナ・コンポーネントのみが必要で、実行時のレイアウトの変更の有効化は不要な場合は、Panel Stretch LayoutおよびPanel Group LayoutなどのADF Facesレイアウト・コンポーネントの使用をお薦めします。Layout Customizableはページに対して1つだけ指定することをお薦めします。

Layout Customizableコンポーネントには、デフォルトで直接の子Panel CustomizableコンポーネントとPanel Customizableコンポーネントを備えた2つのファセットが含まれており、ユーザーは実行時にこれらの内部にコンテンツを追加できます。ただし、Layout Customizableコンポーネントとそのファセットの内部では任意のコンポーネントを追加できます。3つのPanel Customizableコンポーネントのコンテンツは、事前定義されたレイアウトを使用してそれぞれの方法で配置できます。詳細は、「事前定義されたレイアウト・タイプ」を参照してください。

表B-3は、Layout Customizableコンポーネントの属性を示しています。

表B-3 Layout Customizableコンポーネントの属性

属性

タイプ

ELをサポートしているかどうか

説明

共通属性

id

String

いいえ

コンポーネントの識別子。識別子はHTMLで許容されている構文のサブセットに従う必要があります。

- 長さがゼロの文字列にすることはできません。

- 最初の文字はASCII文字(A-Z a-z)またはアンダースコア(_)である必要があります。

- 後続の文字は、ASCII文字または数字(A-Z a-z 0-9)、アンダースコア(_)、ダッシュ(-)である必要があります。

rendered

Boolean

はい

コンポーネントがレンダリングされるかどうかを指定します。falseに設定した場合、このコンポーネントに対する出力はありません(コンポーネントはレンダリングされず、クライアントで表示することができません)。

デフォルト値はtrueです。

コンポーネントのレンダリングは、「コンポーネントの表示」および「コンポーネントの非表示」オプションを使用して実行時に定義することもできます。

type

String

はい

ページに使用されるレイアウトを指定します。事前定義済の8つのレイアウトのリストから選択できます。詳細は、表B-5を参照してください。

デフォルト値はthreeColumnです。

Layout Customizableコンポーネントでカスタマイズ制限を定義できます。具体的に言うと、type属性に制限を課すると、レイアウト変更オプションが無効として表示され、ユーザーはこれらを使用してページ・レイアウトを変更できなくなります。詳細は、第22章「コンポーザ・コンポーネントのデフォルトのセキュリティ動作の変更」を参照してください。

外観属性

text

String

はい

「レイアウトの変更」メニューに表示するテキストを指定します。

text属性を指定して、Layout Customizableコンポーネントに説明ラベルを設定し、実行時にコンポーネントがページに明確に表示されるようにします。

例:

text="Change Layout"

accessKey

Char

はい

このボタンに素早くアクセスするために使用する文字。アクセシビリティ上の理由により、この機能はスクリーン・リーダー・モードではサポートされません。

出力の同一ページ上の複数の入力フィールドで同じアクセス・キーが表示される場合、ユーザー・エージェントのレンダリングは、同じキーでアクセスされる要素間で循環します。同じアクセス・キーが指定された2つのリンクの処理に関して、ユーザー・エージェントには一貫性がないため、循環動作はユーザー・エージェントの提供内容によって異なる点に注意してください。

この属性は、「ニーモニック」と呼ばれることもあります。

この属性で指定された文字は、このボタン・インスタンスのText属性に存在している必要があります。存在していない場合、ユーザーにaccessKeyの存在を示すものが何も表示されません。テキストとニーモニックの両方をまとめて指定するには、textAndAccessKeyの使用が最も簡単で便利です。

accessKeyは、ブラウザ固有およびプラットフォーム固有の修飾子キーによってトリガーされることに注意してください。ブラウザ固有の意味が存在することもあります。たとえば、Internet Explorer 7.0では、[Alt]キーを押しながら<accessKey>を押すとフォーカスが設定されます。一部のオペレーティング・システムのFirefox 2.0は、[Alt]キーと[Shift]キーを押しながら<accessKey>を押すとフォーカスが設定されます。その他のオペレーティング・システムのFirefox 2.0は、[Ctrl]キーを押しながら<accessKey>を押すとフォーカスが設定されます。accessKeyの処理については使用するブラウザのドキュメントを参照してください。

showIcon

Boolean

はい

デフォルトの「レイアウトの変更」アイコンを表示するかどうかを指定します。

デフォルト値はtrueです。

showLayoutChanger

Boolean

はい

デフォルトの「レイアウトの変更」アイコンまたはテキストを表示する必要があるかどうかを指定します。

デフォルト値はtrueです。

trueに設定した場合、レイアウト変更の実行時動作は次のようになります。

- 表示モードで表示されます。編集モードで表示されます。
編集モードでは、showLayoutChanger属性の値がfalseの場合も常に表示されます。

- Layout CustomizableコンポーネントにセキュリティまたはMDS制限がある場合は、表示モードまたは編集モードにレイアウト変更は表示されません。

showTypes

String

はい

レイアウト変更に表示する必要がある事前定義レイアウトの名前を指定します。この属性を使用して、ユーザーに表示されるレイアウト・オプションが制御されます。レイアウト・タイプの空白区切りリストを指定できます。デフォルトでは、ユーザーが「レイアウトの変更」アイコンまたはリンクをクリックすると8つのレイアウトのすべてが表示されます。

shortDesc

String

はい

コンポーネントの短い説明。このテキストは、通常、ツールチップ・ヘルプ・テキストを表示するためにユーザー・エージェントによって使用されます。この場合、ツールチップの動作はユーザー・エージェントによって制御されます。たとえば、Firefox 2では長いツールチップは切り捨てられます。フォーム・コンポーネントの場合、shortDescはノート・ウィンドウに表示されます。

スタイル属性

styleClass

String

はい

このコンポーネントで使用するCSSスタイル・クラス。スタイル・クラスは、JSPXページやスキニングCSSファイルなどで定義できます。

inlineStyle

String

はい

このコンポーネントで使用するCSSスタイル。これは、基本的なスタイルの変更用です。inlineStyleは、コンポーネントのルートDOM要素に適用されるCSSスタイルのセットです。inlineStyleのCSSプロパティが目的のDOM要素に反映されない場合は、スキンを作成して、::labelや::icon-styleなどの特定のDOM要素を対象にしたスキニング・キーを使用する必要があります。

拡張属性

binding

oracle.adf.view.page.editor.component.LayoutCustomizable

ELのみをサポート

Beanにコンポーネント・インスタンスを格納するEL参照。この参照は、Backing Beanからコンポーネントへのプログラムによるアクセスを提供するため、またはコンポーネントの作成をBacking Beanに移すために使用できます。

例:

binding="#{yourManagedBean.Binding}"

カスタマイズ属性

customizationAllowed

Boolean

このコンポーネントに対するカスタマイズが可能かどうかを指定します。使用可能な値はtrueおよびfalseです。デフォルト値はtrueです。

customizationAllowedBy

String

カスタマイズを行うことが可能なロールを指定します。

その他の属性

customizationId

この属性は非推奨になりました。id属性を使用してください。

サポートされているファセット

表B-4は、Layout Customizableコンポーネントに用意されたファセットを示しています。

表B-4 Layout Customizableコンポーネントのファセット

名前

説明

contentA

Panel Customizableコンポーネントが事前に移入されます。このPanel Customizableには、表B-5に示されるレイアウトの領域Aでレンダリングされるコンテンツが格納されます。

contentB

Panel Customizableコンポーネントが事前に移入されます。このPanel Customizableには、表B-5に示されるレイアウトの領域Bでレンダリングされるコンテンツが格納されます。

facetSeparator

各ファセット間で1回レンダリングされるコンテンツ。

separator

その他の子のそれぞれの間で1回レンダリングされるコンテンツ。

事前定義されたレイアウト・タイプ

ページにLayout Customizableコンポーネントを追加するとき、3つの子Panel Cutsomizableコンポーネントがデフォルトで追加されます。1つの直接の子と、2つのファセットの2つのPanel Customizableです。ただし、子Panel Customizableコンポーネントと選択した任意のコンテナ・コンポーネントを置き換えることができます。レイアウト・タイプを選択するとき、これらのPanel Customizableのコンポーネントは、選択されたレイアウト・タイプに従って配置されます。

表B-5は、設計時にページまたはページの領域に適用可能な8つのレイアウトを示しています。コンポーネントのレイアウト方法をわかりやすく説明するため、次のように想定します。

- contentAファセットの子Panel CustomizableをAとします。

- contentBファセットの子Panel CustomizableをBとします。

- Layout Customizableの直接の子であるプライマリのPanel CustomizableをCとします。

表B-5 Layout CustomizableのType属性の値

レイアウト・タイプ

コンテンツの配置を示すイメージ

oneColumn

注意: oneColumnレイアウトの場合、AとBは子コンポーネントが含まれる場合のみレンダリングされます。

threeColumn

threeColumnNarrow

twoColumn

twoColumnBottom

twoColumnNarrowLeft

twoColumnNarrowRight

twoColumnTop

B.1.4 Panel Customizableコンポーネント

Panel Customizableコンポーネントは、実行時にカスタマイズ可能なページ・コンテンツのコンテナとして使用します。実行時にリソース・カタログを使用して、Panel Customizableコンポーネント内にコンテンツを追加できます。Panel Customizable内に子Show Detail Frameコンポーネントを追加すると、Show Detail Frameコンポーネントによってページ上のコンポーネントを配置または削除する、実行時のカスタマイズ・オプションが提供されます。

このコンポーネントは、子コンポーネントで実行時カスタマイズを行う場合にのみ使用します。コンポーネントの配置にのみコンテナが必要である場合は、Panel Group LayoutなどのADF Facesコンテナを使用することをお薦めします。

ジオメトリ管理

Panel Customizableコンポーネントは、Panel Stretch LayoutコンポーネントやPanel Splitterコンポーネントなど、子をストレッチする親レイアウト・コンポーネントによってストレッチできます。Panel Customizableコンポーネントのlayout属性をstretchに設定すると、Panel Customizableのサイズまで子コンポーネントをストレッチできます。

表B-6は、Panel Customizableコンポーネントの属性を示しています。

表B-6 Panel Customizableコンポーネントの属性

属性

タイプ

ELをサポートしているかどうか

説明

共通属性

id

String

いいえ

コンポーネントの識別子。識別子はHTMLで許容されている構文のサブセットに従う必要があります。

- 長さがゼロの文字列にすることはできません。

- 最初の文字はASCII文字(A-Z a-z)またはアンダースコア(_)である必要があります。

- 後続の文字は、ASCII文字または数字(A-Z a-z 0-9)、アンダースコア(_)、ダッシュ(-)である必要があります。

rendered

Boolean

はい

コンポーネントがレンダリングされるかどうかを指定します。falseに設定した場合、このコンポーネントに対する出力はありません(コンポーネントはレンダリングされず、クライアントで表示することができません)。

デフォルト値はtrueです。

コンポーネントのレンダリングは、「コンポーネントの表示」および「コンポーネントの非表示」オプションを使用して実行時に定義することもできます。

halign

String

はい

子コンポーネントの水平方向の位置合せを指定します。

子コンポーネントの水平方向の位置合せは、Panel Customizableコンポーネントに水平または垂直のレイアウトが存在する場合のみ設定できます。

使用可能な値はcenter、end、left、rightおよびstartです。デフォルト値はstartです。

valign

String

はい

子コンポーネントの垂直方向の位置合せを指定します。

子コンポーネントの垂直方向の位置合せは、Panel Customizableコンポーネントに水平のレイアウトが存在する場合のみ設定できます。

使用可能な値はbaseline、bottom、middleおよびtopです。デフォルト値はtopです。

shortDesc

String

はい

このコンポーネントの簡単な説明を指定します。このテキストは、ユーザー・エージェント間で共通的にツールチップ・ヘルプ・テキストの表示に使用され、このときにツールチップの動作はユーザー・エージェントによって制御されます。

レイアウト

String

はい

Panel Customizableの子に必須のレイアウト方法を指定します。

使用可能なオプションはhorizontal、vertical、scroll、stretchおよびautoです。デフォルト値はverticalです。

layout属性の値に従って、子コンポーネントは次のようにレイアウトされます。

- verticalを選択した場合、子コンポーネントは縦並びに表示され、レイアウト内で上下に移動できます。

- horizontalを選択した場合、子コンポーネントは横並びに表示され、レイアウト内で左右に移動できます。

- scrollを選択した場合、子コンポーネントは縦並びに表示され、コンテンツのオーバーフロー時はスクロールバーが表示されます。

- stretchを選択した場合、最初の子コンポーネントがストレッチされ、Panel Customizableコンポーネント内の使用可能なスペースが埋められます。後続の子コンポーネントは無視されます。ただし、これらがページから削除されることはありません。
layoutをstretchに設定した場合、選択したコンポーネントの隣にある新規Panel Customizableコンポーネントの追加のための「追加」アイコンは使用可能になりません。

- autoを選択した場合、Panel Customizableがその親によってストレッチされている場合のみ、子コンポーネントがストレッチされます。ストレッチされていない場合は、コンテンツがスクロールします。

スタイル属性

styleClass

String

はい

このコンポーネントで使用するCSSスタイル・クラス。スタイル・クラスは、JSPXページやスキニングCSSファイルなどで定義できます。

inlineStyle

String

はい

このコンポーネントで使用するCSSスタイル。これは、基本的なスタイルの変更用です。inlineStyleは、コンポーネントのルートDOM要素に適用されるCSSスタイルのセットです。inlineStyle属性のCSSプロパティが作用させたいDOM要素に作用しない場合は、スキンを作成して、::labelや::icon-styleなどのように特定のDOM要素を対象にするスキニング・キーを使用する必要があります。

動作属性

allowAction

Boolean

はい

子コンポーネントの追加、Show Detail Frameコンポーネント内およびこれを起点とするドラッグとドロップ、および実行時の子コンポーネントの再配置をこのコンポーネントに許可するかどうかを決定します。また、一連の「ボックスを追加」アイコン(コンポーネントの隣へのBoxコンポーネントの追加をユーザーに許可する)をコンポーネント上でレンダリングする必要があるかどうかも決定します。

使用可能な値は、noneおよびallです。デフォルト値はallです。

注意: この属性は、アプリケーションのadf-config.xmlファイルでコンポーネントのセキュリティを定義する際にも設定できます。詳細は、第22.5項「Panel CustomizableおよびShow Detailコンポーネント・アクションでのアクション・レベルの制限の適用」を参照してください。

showEditAction

Boolean

はい

編集モードの「コンテンツの追加」ビューまたは「デザイン」ビューで、Panel Customizableヘッダー上の「編集」アイコンをレンダリングして、実行時にユーザーがコンポーネントのプロパティを編集できるようにします。使用可能な値はtrueおよびfalseです。デフォルト値はtrueです。

これは、コンポーザ対応ページにおいて(つまり、Panel CustomizableコンポーネントがPage Customizableコンポーネント内にネストされている場合)のみ関係します。

showSplitAction

Boolean

はい

編集モードのページの「コンテンツの追加」ビューまたは「デザイン」ビューのPanel Customizableヘッダー上で一連のボックスを追加アイコンをレンダリングして、ユーザーが選択したコンポーネントの上、下、左または右にBoxコンポーネントを追加できるようにします。使用可能な値はtrueおよびfalseです。デフォルト値はtrueです。

これは、コンポーザ対応ページにおいて(つまり、Panel CustomizableコンポーネントがPage Customizableコンポーネント内にネストされている場合)のみ関係します。ただし、ルートPanel Customizableコンポーネントでは「ボックスを追加」アイコンが表示されません。

この属性のデフォルト値はtrueですが、ストレッチされたコンポーネントでは「ボックスを追加」アイコンが表示されません。

showTabAction

Boolean

はい

編集モードのページの「コンテンツの追加」ビューまたは「デザイン」ビューのPanel Customizableヘッダー上で一連の「タブ・セットまたはタブの追加」アイコンをレンダリングして、ユーザーがページにタブを追加できるようにします。使用可能な値はtrueおよびfalseです。デフォルト値はfalseです。

これは、コンポーザ対応ページにおいて(つまり、Panel CustomizableコンポーネントがPage Customizableコンポーネント内にネストされている場合)のみ関係します。

拡張属性

binding

oracle.adf.view.page.editor.component.PanelCustomizable

ELのみをサポート

Beanにコンポーネント・インスタンスを格納するEL参照。この参照は、Backing Beanからコンポーネントへのプログラムによるアクセスを提供するため、またはコンポーネントの作成をBacking Beanに移すために使用できます。

カスタマイズ属性

customizationAllowed

Boolean

このコンポーネントに対するカスタマイズが可能かどうかを指定します。使用可能な値はtrueおよびfalseです。デフォルト値はtrueです。

customizationAllowedBy

String

カスタマイズを行うことが可能なロールを指定します。

その他の属性

customizationId

この属性は非推奨になりました。id属性を使用してください。

サポートされているファセット

Panel Customizableコンポーネントは、separatorファセットをサポートします。このファセットを使用すると各子コンポーネント間で1回、コンテンツをレンダリングできます。

Panel Customizableコンポーネント上の編集オプションの無効化

実行時にページの編集モードに切り替えた場合、「コンテンツの追加」ビューまたは「デザイン」ビューで、編集可能なPanel CustomizableコンポーネントおよびBoxコンポーネントのすべてに「編集」アイコンがあることがわかります。「コンテンツの追加」ビューまたは「デザイン」ビューで、特定のPanel CustomizableまたはBoxコンポーネントのプロパティ編集を無効にするには、設計時にコンポーネントのshowEditAction属性をfalseに設定する必要があります。これで、コンポーネントの「コンテンツの追加」ビューまたは「デザイン」ビューで「編集」アイコンが表示されなくなります。ただし、「構造」ビューでは、そうしたコンポーネントをユーザーが選択してプロパティを編集することが可能です。

B.1.5 Show Detail Frameコンポーネント

子コンポーネントの移動、最小化、リストア、削除などの実行時のカスタマイズを可能にするには、Panel Customizableコンポーネント内にShow Detail Frameコンポーネントを追加します。Show Detail Frameは、Panel Customizableコンポーネント内に追加された場合のみ移動できます。

ジオメトリ管理

Show Detail Frameコンポーネントは、Panel Customizableコンポーネントなど、子をストレッチする親レイアウト・コンポーネントによってストレッチできます。

Show Detail Frameコンポーネントは、子コンポーネントをストレッチして使用可能な高さと幅を埋めます。Show Detail Frameコンポーネント内に追加する子コンポーネントは1つのみにすることをお薦めします。ただし、複数の子コンポーネントが存在する場合は、最初の子コンポーネントがShow Detail Frameのコンテンツ領域の高さと幅にストレッチされ、後続の子コンポーネントは無視されます。

Show Detail Frameの右下隅にあるサイズ変更ハンドラを使用すると、コンポーネントの垂直方向のサイズを変更できます。変更すると、その親がShow Detail Frameをストレッチすることはできません。

表B-7は、Show Detail Frameコンポーネントの属性を示しています。

表B-7 Show Detail Frameコンポーネントの属性

属性

タイプ

ELをサポートしているかどうか

説明

共通属性

id

String

いいえ

コンポーネントの識別子。識別子はHTMLで許容されている構文のサブセットに従う必要があります。

- 長さがゼロの文字列にすることはできません。

- 最初の文字はASCII文字(A-Z a-z)またはアンダースコア(_)である必要があります。

- 後続の文字は、ASCII文字または数字(A-Z a-z 0-9)、アンダースコア(_)、ダッシュ(-)である必要があります。

rendered

Boolean

はい

コンポーネントがレンダリングされるかどうかを指定します。falseに設定した場合、このコンポーネントに対する出力はありません(コンポーネントはレンダリングされず、クライアントで表示することができません)。

デフォルト値はtrueです。

コンポーネントのレンダリングは、「コンポーネントの表示」および「コンポーネントの非表示」オプションを使用して実行時に定義することもできます。

text

String

はい

Show Detail Frameコンポーネントのタイトル。

このテキストのスタイルは、headerStyle属性を使用して変更できます。

icon

String

はい

Show Detail Frameコンポーネントのヘッダーにアイコンを追加することにした場合は、これで使用するイメージのURIを指定します。

例:

icon="http://source-pc/images/accessability.gif"

注意: ドキュメント・ルートに格納されているイメージには、フルパスは必要ありません。例:

icon="detail.gif"

外観属性

text

String

はい

Show Detail Frameコンポーネントのタイトル。

このテキストのスタイルは、headerStyle属性を使用して変更できます。

shortDesc

String

はい

コンポーネントの短い説明。このテキストは、通常、ツールチップ・ヘルプ・テキストを表示するためにユーザー・エージェントによって使用されます。この場合、ツールチップの動作はユーザー・エージェントによって制御されます。たとえば、Firefox 2では長いツールチップは切り捨てられます。フォーム・コンポーネントの場合、shortDescはノート・ウィンドウに表示されます。

icon

String

はい

Show Detail Frameコンポーネントのヘッダーにアイコンを追加することにした場合は、これで使用するイメージのURIを指定します。

例:

icon="http://source-pc/images/accessability.gif"

注意: ドキュメント・ルートに格納されているイメージには、フルパスは必要ありません。例:

icon="detail.gif"

background

String

はい

スキンCSSとともに機能し、このShow Detail Frameインスタンスに対して別のルック・アンド・フィールを適用する手段を提供します。

使用可能な値はlight、medium、darkおよびcoreDefaultです。デフォルト値はmediumです。

coreDefault値はmediumと同様ですが、さらにコンテナの境界線を丸め、シャドウをレンダリングします。この場合の背景は、ADF Faces panelBoxコンポーネントと同様になります。

displayHeader

Boolean

はい

Show Detail Frameのヘッダーが表示されるかどうかを指定します。

デフォルト値はtrueです。

displayHeaderをfalseに設定する選択をして、コンポーネントの一部のアクションを公開した場合は、マウスをコンポーネント領域に移動するとツールバーが表示されます。ツールバーには、選択可能なオプションのメニューを表示するドロップダウン・アイコンが含まれます。このツールバーは、コンポーネントで使用可能なアクションが存在する場合に編集モードでのみ表示されます。

displayShadow

Boolean

はい

Show Detail Frameコンポーネントでシャドウをキャストするかどうかを指定します。

デフォルト値はfalseです。

expansionMode

String

はい

Show Detail Frameのデフォルトの状態。

使用可能な値は、minimizedおよびnormalです。デフォルトの表示モードはnormalです。

rendered

Boolean

はい

コンポーネントがレンダリングされるかどうかを指定します。falseに設定した場合、このコンポーネントに対する出力はありません(コンポーネントはレンダリングされず、クライアントで表示することができません)。

デフォルト値はtrueです。

コンポーネントのレンダリングは、「コンポーネントの表示」および「コンポーネントの非表示」オプションを使用して実行時に定義することもできます。

アクション属性

displayActions

String

はい

シードされた相互作用を表示する時点を指定します。

使用可能なオプションは、onHoverおよびalwaysです。デフォルトはalwaysです。

inheritGlobalActions

Boolean

はい

この属性は子カスタム・アクション・コンポーネントを追加した場合に有意で、custom actionのグローバルaction値でローカル値をオーバーライドする必要があるかどうかを指定します。

デフォルト値はfalseです。

グローバル・カスタム・アクションの詳細は、第20.3.2.2項「グローバル・レベルでのカスタム・アクションの定義」を参照してください。

showMoveAction

String

はい

コンポーネントに「移動」アクションが利用可能かどうかを指定します。

選択可能な値は次のとおりです。

- menu - 「移動」アクションは「アクション」メニューに表示され、ヘッダーにドラッグ・アンド・ドロップするアクションが有効化されます。

- none - ユーザーは、ヘッダーをクリックし、ドラッグ・アンド・ドロップで、コンポーネントを移動できます。

- disabled - コンポーネントを移動できません。

デフォルト値はmenuです。

注意: 無効オプションは、ビュー・モードでのみ適用されます。

showRemoveAction

String

はい

Show Detail Frameヘッダーで「削除」アイコンをレンダリングします。このアイコンをクリックすると、ページからコンポーネントが削除されます。

使用可能な値はchromeおよびnoneです。デフォルト値はnoneです。

注意: ページ編集モードで他の制限が適用されていない場合は、この設定にかかわりなく「削除」アイコンが表示されます。

showResizer

String

はい

Show Detail Frameの右下隅にサイズ変更ハンドルを表示するかどうかを指定します。サイズ変更時は、Show Detail Frameの高さのみを変更できます。

使用可能な値は、neverおよびalwaysです。デフォルト値はalwaysです。

showMinimizeAction

String

はい

ヘッダーに最小化アクションを表示するかどうかを指定します。

使用可能な値はchromeおよびnoneです。デフォルトはchromeです。

showEditAction

Boolean

はい

編集モードの「コンテンツの追加」ビューまたは「デザイン」ビューで、Show Detail Frameヘッダー上の「編集」アイコンをレンダリングして、実行時にコンポーネントのプロパティを編集できるようにします。デフォルト値はtrueです。

これは、コンポーザ対応ページにおいて(つまり、Show Detail FrameコンポーネントがPage Customizableコンポーネント内にネストされている場合)のみ関係します。

スタイル属性

contentStyle

String

はい

Show Detail Frameコンテンツ領域に適用するCSSスタイル。CSSリリース2.0以上に準拠するスタイルを手動で入力します。

この属性のCSSスタイルは、一般的にShow Detail Frameの高さおよび背景色の定義に使用されます。たとえば、height:200px; background-color:green;のように指定します。

注意: Show Detail Frameコンポーネントが水平のレイアウトでPanel Customizableコンポーネント内にネストされている場合は、Show Detail Frameコンポーネントの幅を指定して、確実にページ表示モードでレンダリングされるようにする必要があります。

styleClass

String

はい

このコンポーネントで使用するCSSスタイル・クラス。スタイル・クラスは、JSPXページやスキニングCSSファイルなどで定義できます。

inlineStyle

String

はい

このコンポーネントで使用するCSSスタイル。これは、基本的なスタイルの変更用です。inlineStyleは、コンポーネントのルートDOM要素に適用されるCSSスタイルのセットです。inlineStyleのCSSプロパティが目的のDOM要素に反映されない場合は、スキンを作成して、::labelや::icon-styleなどの特定のDOM要素を対象にしたスキニング・キーを使用する必要があります。

headerStyle

String

はい

ヘッダーに表示されるShow Detail Frameタイトルに適用するCSSスタイル。CSSリリース2.0以上に準拠するスタイルを手動で入力します。

この属性のCSSスタイルは、一般的にタイトル・テキストのフォント、サイズおよび色の定義に使用されます。

動作属性

partialTriggers

String

はい

部分更新をトリガーするコンポーネントのID。このコンポーネントは、トリガー・コンポーネント上でリスニングします。トリガー・コンポーネントがなんらかの更新を発生させるイベントを受信した場合、このコンポーネントも更新されることをリクエストします。識別子はソース・コンポーネント(このコンポーネント)に対して相対的であり、NamingContainerで構成されている必要があります。コンポーネントがネーミング・コンテナ内にある場合、単一のコロンを使用するとページのルートから検索を開始でき、複数のコロンを使用するとNamingContainerを上方向に移動できます。たとえば、::を前に置くと、コンポーネントのネーミング・コンテナ(または、コンポーネントがネーミング・コンテナである場合にはそのコンポーネント自体)から出てそこから検索を開始します。:::を前に置くと、2つのネーミング・コンテナ(コンポーネントがネーミング・コンテナである場合にはそのコンポーネント自体も含まれる)から出てそこから検索を開始します。

disclosureListener

javax.el.MethodExpression

はい

開示リスナーへのメソッド参照。

ユーザーがShow Detail Frameコンポーネントを開いたとき、または閉じたときに開示イベントが起動されます。

stretchContent

String

はい

Show Detail Frameが子コンポーネントをストレッチするかどうかを指定します。

使用可能なオプションは、true、falseおよびautoです。デフォルト値はtrueです。

stretchContent属性を使用して、ストレッチがサポートされている子コンポーネントをストレッチできます。たとえば、Panel Form Layout、Panel CustomizableおよびShow Detail Itemなどのコンテナ・コンポーネントには、ストレッチ機能が提供されています。

trueを選択した場合、子コンポーネントがShow Detail Frameのコンテンツ領域の高さと幅までストレッチされます。

Show Detail Frameのデフォルトの高さは200pxです。Show Detail Frameの高さはContentStyle属性を使用して定義されます。

autoを選択した場合、Show Detail Frameをストレッチするコンポーネント内でこれがラップされている場合のみ、子コンポーネントがストレッチされます。これ以外の場合、stretchContentはfalseに設定されます。

拡張属性

binding

oracle.adf.view.page.editor.component.ShowDetailFrame

ELのみをサポート

Beanにコンポーネント・インスタンスを格納するEL参照。この参照は、Backing Beanからコンポーネントへのプログラムによるアクセスを提供するため、またはコンポーネントの作成をBacking Beanに移すために使用できます。

attributeChangeListener

javax.el.MethodExpression

はい

属性変更リスナーへのメソッド参照。属性変更イベントは、プログラムによるプロパティへの変更の場合は配信されません。アプリケーションの特定のリクエストなしでレンダラがプロパティを変更したときにのみ配信されます。属性変更イベントの例としては、クライアント側のサイズ変更をサポートする列の幅などがあります。

selectChild

String

はい

実行時選択とカスタマイズが子コンポーネントで有効化されるかどうかを指定します。これは、コンポーザ対応ページにおいて(つまり、Show Detail FrameコンポーネントがPage Customizableコンポーネント内にネストされている場合)のみ関係します。

デフォルト値はyesです。ただし、Show Detail Frameコンポーネントの子としてタスク・フローを追加した場合は、この属性のデフォルトがnoになります。

yesを選択すると、実行時に子コンポーネントを選択してカスタマイズできます。

カスタマイズ属性

customizationAllowed

Boolean

このコンポーネントに対するカスタマイズが可能かどうかを指定します。使用可能な値はtrueおよびfalseです。デフォルト値はtrueです。

customizationAllowedBy

String

カスタマイズを行うことが可能なロールを指定します。

その他の属性

customizationId

この属性は非推奨になりました。id属性を使用してください。

helpTopicID

String

はい

コンポーネントからカスタム・ヘルプ・トピックへのリンクに使用されるヘルプ・トピックIDを指定します。

Show Detail Frameコンポーネント・インスタンスからヘルプ・トピックをリンクするには、アプリケーション・ディレクトリに直接保存されたHTMLファイル、またはJARファイルの構成部分であるヘルプ・トピックにリンクすることができます。

サポートされているファセット

表B-8は、Show Detail Frameコンポーネントで使用可能なファセットを示しています。

表B-8 Show Detail Frameのファセット

名前

説明

titleBarAction

アクションをShow Detail Frameコンポーネントのタイトルと関連付ける必要がある場合に使用します。ファセットによって指定されたコンポーネントは、Show Detail Frameのtext属性のかわりにレンダリングされます。

additionalActions

Show Detail Frameヘッダーで使用可能な「アクション」メニューにいくつかのアクションが追加される場合に使用されます。追加アクションが確実にメニュー上の他のアクションと同様に表示されるようにするため、このファセット内にネストされたCommand Menu Itemコンポーネントとともに、Command Menu ItemコンポーネントまたはGroupコンポーネントを使用します。

Show Detail Frameプロパティとともに表示する子コンポーネント・プロパティ

実行時にページの編集モードに切り替えた場合、「コンテンツの追加」ビューまたは「デザイン」ビューで編集可能なすべてのShow Detail Frameコンポーネントに「編集」アイコンがあることがわかります。このアイコンをクリックすると、「コンポーネント・プロパティ」ダイアログが起動され、ユーザーはShow Detail Frameのプロパティを編集できます。「コンポーネント・プロパティ」ダイアログでShow Detail Frameのプロパティと子コンポーネントのプロパティを表示する必要がある場合は、カスタム属性sdf_selection_ruleを使用できます。

JDeveloperでは、Show Detail Frameコンポーネントを右クリックし、「cust:showDetailFrameの中に挿入」、「JSF Core」そして「属性」を選択します。「属性を挿入」ダイアログでは、名前としてsdf_selection_ruleを、値としてsdf_for_edit_mode_onlyを指定します。「ソース」モードでは、この属性は次の例のように表示されます。

<cust:showDetailFrame text="showDetailFrame 1" id="sdf1">
<f:attribute name="sdf_selection_rule" value="sdf_for_edit_mode_only"/>
</cust:showDetailFrame>

Show Detail Frameコンポーネント上の編集オプションの無効化

実行時にページの編集モードに切り替えた場合、「コンテンツの追加」ビューまたは「デザイン」ビューで編集可能なすべてのShow Detail Frameコンポーネントに「編集」アイコンがあることがわかります。「コンテンツの追加」ビューまたは「デザイン」ビューで特定のShow Detail FrameまたはMovable Boxコンポーネントのプロパティ編集を無効にするには、設計時にコンポーネントのshowEditAction属性をfalseに設定することで実行できます。これで、実行時にページの編集モードに移動したときにコンポーネントに「編集」アイコンが表示されなくなります。ただし、「構造」ビューでは、そうしたコンポーネントをユーザーが選択してプロパティを編集することが可能です。

B.1.6 Custom Action

Custom Actionコンポーネントは、Show Detail Frameコンポーネント内にリージョンが含まれている場合に、タスク・フローでのナビゲーション・フローのトリガーに使用します。タスク・フローのADFcの結果に対応するカスタム・アクションを定義できます。実行時にこれらのカスタム・アクションは、アイコン、メニュー・オプション、またはその両方としてShow Detail Frameヘッダーに表示されます。Custom Actionは、常にShow Detail Frameの子コンポーネントとして定義する必要があり、Show Detail Frameの子コンポーネントとしてタスク・フローも含まれている場合のみ有益です。

Custom Actionコンポーネントは、タスク・フローに存在するADFcの結果と同じ数だけ追加できます。対応するADFcの結果なしでCustom Action属性を追加した場合、またはaction属性値が、タスク・フローによって現在表示されているビューで定義されたADFcの結果と一致しない場合、そのアクションは実行時に表示されません。

注意:

Show Detail Frameコンポーネントのカスタム・アクションは、グローバル・レベルで定義することもできます。詳細は、第20.3.2項「タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法」を参照してください。

表B-9は、Custom Actionコンポーネントの属性を示しています。

表B-9 Custom Actionコンポーネントの属性

属性

タイプ

ELをサポートしているかどうか

説明

共通属性

id

String

いいえ

コンポーネントの識別子。識別子はHTMLで許容されている構文のサブセットに従う必要があります。

- 長さがゼロの文字列にすることはできません。

- 最初の文字はASCII文字(A-Z a-z)またはアンダースコア(_)である必要があります。

- 後続の文字は、ASCII文字または数字(A-Z a-z 0-9)、アンダースコア(_)、ダッシュ(-)である必要があります。

action

String

はい

タスク・フローに定義されているアクション結果を指定します。この属性の値は、タスク・フロー定義ファイルの関連するADFcの結果と一致している必要があります。

rendered

Boolean

はい

コンポーネントがレンダリングされるかどうかを指定します。falseに設定した場合、このコンポーネントに対する出力はありません(コンポーネントはレンダリングされず、クライアントで表示することができません)。

デフォルト値はtrueです。

コンポーネントのレンダリングは、「コンポーネントの表示」および「コンポーネントの非表示」オプションを使用して実行時に定義することもできます。

text

String

はい

メニュー項目リンクのテキストを表します。

メニュー項目リンクとしてレンダリングされるカスタム・アクションに適用可能です。

外観属性

icon

String

はい

ツールバー・リンクとしてレンダリングされるカスタム・アクションで、クロムにレンダリングされるアイコンを指定します。メニュー項目リンクとしてレンダリングされるCustom Actionの場合は、メニュー項目テキストに対して表示されるアイコンになります。この属性は次の各タイプのURIをサポートします。

- absolute - イメージへの絶対パス。例: "http://oracleimg.com/admin/images/ocom/hp/oralogo_small.gif"

- relative - ソース・ページに対して相対的な位置のパス。例 - "bullet.jpg"

- context relative - Webアプリケーションのコンテキスト・ルートを基準にした相対パス。例 - "/images/error.png"

- server relative - アプリケーション名別のWebサーバーを基準にした相対パス。例 - "//adf-richclient-demo-context-root/images/error.png"

アイコンではイメージに代替テキストを使用できないため、アクセス可能な製品を作成するには、アイコンの使用を装飾を目的とする場合にかぎる必要があります。

shortDesc

String

はい

コンポーネントの短い説明を提供します。このテキストは、通常、ツールチップ・ヘルプ・テキストを表示するためにユーザー・エージェントによって使用されます。この場合、ツールチップの動作はユーザー・エージェントによって制御されます。たとえば、Firefox 2では長いツールチップは切り捨てられます。フォーム・コンポーネントの場合、shortDescはノート・ウィンドウに表示されます。

これは、ツールバー・アイコンとしてレンダリングされるカスタム・アクションにのみ適用できます。

location

String

はい

Custom Actionをツールバー・アイコンまたはメニュー項目リンクとしてレンダリングするかどうかを指定します。

使用可能な値は、chrome、menu、またはbothです。デフォルト値はchromeです。

カスタマイズ属性

customizationAllowed

Boolean

このコンポーネントに対するカスタマイズが可能かどうかを指定します。使用可能な値はtrueおよびfalseです。デフォルト値はtrueです。

customizationAllowedBy

String

カスタマイズを行うことが可能なロールを指定します。

その他の属性

actionComponent

String

はい

アクション・イベントでキューに入れる必要があるコマンド・コンポーネントのIDを指定します。actionComponent属性が指定された場合、Show Detail Frameコンポーネントは、このコンポーネントのアクション・イベントをキューに入れます。

詳細は、第20.3.2.3項「別個のブラウザ・ウィンドウにタスク・フロー・ビューを表示するカスタム・アクションの構成」を参照してください。

customizationId

この属性は非推奨になりました。id属性を使用してください。

B.1.7 Show Property

Show Propertyコンポーネントは、実行時のカスタム・プロパティ・パネルでの属性またはパラメータの表示に使用します。実行時にユーザーに表示する属性またはパラメータのそれぞれにShow Propertyコンポーネントを1つ使用します。

Show Propertyコンポーネントの詳細は、第19.3.6項「カスタム・プロパティ・パネルでのプロパティおよびパラメータの表示方法」を参照してください。

表B-10は、Show Propertyコンポーネントの新しい属性を示しています。

表B-10 Show Propertyコンポーネントの属性

属性

タイプ

ELをサポートしているかどうか

説明

共通属性:

id

String

いいえ

コンポーネントの識別子。識別子はHTMLで許容されている構文のサブセットに従う必要があります。

- 長さがゼロの文字列にすることはできません。

- 最初の文字はASCII文字(A-Z a-z)またはアンダースコア(_)である必要があります。

- 後続の文字は、ASCII文字または数字(A-Z a-z 0-9)、アンダースコア(_)、ダッシュ(-)である必要があります。

rendered

Boolean

はい

コンポーネントがレンダリングされるかどうかを指定します。falseに設定した場合、このコンポーネントに対する出力はありません(コンポーネントはレンダリングされず、クライアントで表示することができません)。

デフォルト値はtrueです。

コンポーネントのレンダリングは、「コンポーネントの表示」および「コンポーネントの非表示」オプションを使用して実行時に定義することもできます。

attributeType

String

はい

プロパティ・タイプを指定します。サポートされる値は、text、cbox、date、lovです。

value

String

はい

プロパティの現在値を指定します。valueのELバインディングが、getterありでsetterなしのBeanプロパティを指定し、またこれが編集可能コンポーネントである場合、そのコンポーネントは読取り専用モードでレンダリングされます。

label

String

はい

コンポーネントのラベルを指定します。ラベルをコントロールの上に表示する場合は、panelFormLayoutを使用します。

データ属性:

value

String

はい

プロパティの現在値を指定します。valueのELバインディングが、getterありでsetterなしのBeanプロパティを指定し、またこれが編集可能コンポーネントである場合、そのコンポーネントは読取り専用モードでレンダリングされます。

selectItem

attributeTypeがlovに設定されている場合に表示される値のリストを指定します。この属性は値のリストを動的に返すEL値を取得します。

外観属性:

columns

Int

はい

表示される文字数によって指定されるテキスト・コントロールのサイズを指定します。列数はブラウザのデフォルトのフォント・サイズを基準にして推定されます。

rows

Int

はい

表示される文字数によって指定されるテキスト・コントロールの高さを指定します。デフォルト値は1で、1行の入力フィールドが生成されます。行数はブラウザのデフォルトのフォント・サイズを基準にして推定されます。

label

String

はい

コンポーネントのラベルを指定します。ラベルをコントロールの上に表示する場合は、panelFormLayoutを使用します。

shortDesc

String

はい

コンポーネントの短い説明を提供します。このテキストは、通常、ツールチップ・ヘルプ・テキストを表示するためにユーザー・エージェントによって使用されます。この場合、ツールチップの動作はユーザー・エージェントによって制御されます。たとえば、Firefox 2では長いツールチップは切り捨てられます。フォーム・コンポーネントの場合、shortDescはノート・ウィンドウに表示されます。

これは、ツールバー・アイコンとしてレンダリングされるカスタム・アクションにのみ適用できます。

simple

Boolean

はい

コンポーネントがラベルのサポートを提供するかどうかを制御するブール値です。trueに設定すると、コンポーネントではラベルが表示されません(label、labelAndAccessKey、accessKey、showRequired、helpファセットが無視される場合があります)。また単純なレイアウト・プリミティブが使用されない場合もあります。使用例としては、表やfor-eachなど、ラベルが不要な場所で、繰返し可能な要素でコンポーネントが使用される場合などが考えられます。

unselectedLabel

String

はい

null値を表すオプション、つまり何も選択されていない場合のラベルを指定します。unselectedLabelが設定されておらず、コンポーネントに選択値がない場合は、空白文字列のオプションが選択ボックスの最初のオプションとしてラベルと値としてレンダリングされます(すでに定義された空白オプションがない場合)。オプションが正常に選択され、unselectedLabelが設定されていない場合、空白オプションはレンダリングされません。

動作属性:

required

Boolean

はい

非null、非空白値を入力する必要があるかどうかを指定します。falseにすると、値がnullまたは空白の場合にバリデータは実行されません。

autoSubmit

Boolean

はい

フォーム要素でTRUEに設定すると、該当するアクション(クリック、テキスト変更など)が実行されたときにコンポーネントから自動送信を行う属性を指定します。autoSubmitは部分送信であるため、このコンポーネントをポイントするpartialTriggersが指定された他のコンポーネントも送信および再レンダリングされます。

disabled

Boolean

はい

プロパティを無効として表示するかどうかを指定します。これは、MDS制限がプロパティに適用されている場合など、プロパティを無効として表示する必要があると指定されたモデルを持つイテレータ内にShow Propertyコンポーネントが存在する場合に便利です。

validator

String

はい

バリデータ・メソッドに対するメソッド参照を指定します。

valueChangeListener

javax.faces.el.MethodBinding

ELのみ

値変更リスナーに対するメソッド参照を指定します。

拡張属性:

binding

oracle.adf.view.rich.component.fragment.UIXDeclarativeComponent

ELのみをサポート

Bean内にコンポーネント・インスタンスを格納するEL参照を指定します。この参照は、Backing Beanからコンポーネントへのプログラムによるアクセスを提供するため、またはコンポーネントの作成をBacking Beanに移すために使用できます。

clientComponent

Boolean

はい

クライアント側コンポーネントが生成されるかどうかを指定します。このフラグを設定してもしなくてもコンポーネントは生成されますが、クライアントJavascriptがコンポーネント・オブジェクトを必要とする場合、コンポーネントの存在を保証するにはtrueに設定する必要があります。現在デフォルトで生成されるクライアント・コンポーネント・オブジェクトは、将来は存在しない可能性があります。このフラグを設定することがコンポーネントの存在を保証する唯一の方法であり、クライアントは暗黙的な動作に依存できません。ただし、このフラグの設定にはパフォーマンス・コストが伴うため、絶対に必要でないかぎり、クライアントではクライアント・コンポーネントを有効にすることを避ける必要があります。

componentId

コンポーザのプロパティ・パネルでShow Propertyタグを使用する場合、componentIdは、プロパティをレンダリングする必要があるコンポーネントのIDを指定します。

showELBuilder

Boolean

はい

プロパティのELビルダーを表示するかどうかを指定します。

showResourceEditor

Boolean

はい

プロパティのリソース・文字列エディタを表示するかどうかを指定します。ただし、このオプションはアプリケーションでリソース文字列編集を構成し、プロパティの型がStringの場合のみ有効化されます。詳細は、第20.12項「実行時リソース文字列編集の構成」を参照してください。

taskFlowId

String

はい

タスク・フロー・パラメータの表示にShow Propertyが使用される場合は、taskFlowIdでタスク・フローのIDが指定されます。

taskFlowParam

String

はい

タスク・フロー・パラメータの表示にShow Propertyが使用される場合は、taskFlowParamで入力フィールドを表示する必要があるタスク・フロー・パラメータが指定されます。

customizationId

この属性は非推奨になりました。id属性を使用してください。

カスタマイズ属性

customizationAllowed

Boolean

このコンポーネントに対するカスタマイズが可能かどうかを指定します。使用可能な値はtrueおよびfalseです。デフォルト値はtrueです。

customizationAllowedBy

String

カスタマイズを行うことが可能なロールを指定します。

その他の属性

text

String

はい

チェック・ボックスで使用されるテキストを指定します。typeがbooleanに設定されている場合にのみ、使用されます。

サポートされているファセット

Show Propertyコンポーネントは、customLinkファセットをサポートし、そのファセットはCommamd Menu Itemを含むために使用することができます。このファセットで指定されたCommand Menu Itemは、リソース文字列エディタおよびELビルダーと一緒にプロパティ・フィールドの隣のドロップダウンリストのカスタム・リンクとして表示されます。

B.2 コンポーザ固有のファイルと構成

この項では、コンポーザ機能を拡張するために変更することができる様々なファイルについて説明します。コンポーザ拡張ファイル(pe_ext.xml)のようないくつかのファイルは、コンポーザのみに関連していますが、他のファイルは、コンポーザ固有の構成のエントリを取ることができるADFの構成ファイルです。

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

- 第B.2.1項「pe_ext.xml」

- 第B.2.2項「adf-config.xml」

- 第B.2.3項「adf-settings.xml」

- 第B.2.4項「web.xmlの更新」

B.2.1 pe_ext.xml

pe_ext.xmlファイルを作成し、このファイルに要素を追加することで、新しいコンポーザ・アドオンおよびカスタム・プロパティ・パネルの登録、パネルの選択的なレンダリング、イベント・ハンドラの登録、プロパティ・フィルタの定義を実行できます。デフォルトでは、ページにOracleコンポーネントを追加する際にこのファイルを使用できません。このファイルをPortalプロジェクトのMETA-INFディレクトリに作成することができます(たとえば、APPLICATION_HOME\Portal\src\META-INFディレクトリ)。この項では、コンポーザ拡張ファイル・スキーマの各種要素について、また、スキーマ要素の使用が可能な状況を説明します。

注意:

自身のpe_ext.xmlファイルと共有ライブラリを使用するアプリケーションでは、実行の順序を定義するためにpe-extensionタグ内でsequence要素を使用します。デフォルトの設定を定めるためにsequence="first"を使用し、最後のファイルをロードし、以前ロードしたファイルによって定義された設定をオーバーライドするためにsequence="last"を使用します。

この項には次のサブセクションが含まれます:

- 第B.2.1.1項「addon-config」

- 第B.2.1.2項「property-panels」

- 第B.2.1.4項「lov-config」

- 第B.2.1.5項「event-handlers」

- 第B.2.1.6項「drop-handlers」

- 第B.2.1.7項「filter-config」

- 第B.2.1.8項「elbuilder-config」

- 第B.2.1.9項「selection-config」

- 第B.2.1.10項「pe_ext.xmlファイルのサンプル」

B.2.1.1 addon-config

addon-config要素を使用して、新しいコンポーザ・アドオンおよびカスタム・プロパティ・パネルのエントリを組み込みます。たとえば、アプリケーションに関する情報を表示するパネルを起動するAboutボタンを新たにページに追加するには、まず情報を含むタスク・フローを作成して、その後このタスク・フローをpe_ext.xmlファイルに登録します。addon-config要素内で宣言されるコンポーザ・アドオンは、adf-config.xmlファイルで構成されますが、addon-config要素で宣言されるカスタム・プロパティ・パネルは拡張ファイル自体のproperty-panels要素内で構成されます。

adf-config.xmlでのアドオンの構成の詳細は、B.2.2.2項「addon-panels」を参照してください。property-panels要素を使用したカスタム・プロパティ・パネルの構成の詳細は、第B.2.1.2項「property-panels」を参照してください。

addon-config要素は、pe-extensionタグ内に挿入します。XMLファイルに追加できるaddon-config要素は1つのみです。addon-config要素内にpanels要素を指定してアドオンを定義できます。

panels

panels要素は、コンポーザへの新しいアドオンやプロパティ・パネルの登録に使用します。panels要素はaddon-config要素内に追加します。1つの拡張ファイルで設定できるpanels要素は1 つのみで、カスタム・パネルのすべてをこの要素内で定義する必要があります。

panel

panel要素を使用して、ユーザーに表示する個別のアドオンおよびプロパティ・パネルを定義します。panels要素には、コンポーザに表示するアドオンまたはプロパティ・パネルを定義する個別のpanel要素を必要な数だけ挿入できます。表示するアドオンまたはプロパティ・パネルのすべてに1つずつpanel要素を作成する必要があります。

表B-11は、panel要素の属性を示しています。

表B-11 panel要素の属性

属性

説明

name

adf-config.xmlで新しいアドオンを、またはproperty-panelsセクションでプロパティ・パネルを参照する際に使用される識別子。これは、アプリケーション内で一意である必要があります。

title

コンポーザでタスク・フローの起動に使用されるボタンに表示されるタイトル。このプロパティにELを使用すると、ローカライズされたタイトルを表示できます。

カスタム・プロパティ・パネルの場合は、このパネルの新しいタブに表示されるタイトルです。

icon

ボタンのタイトルの横に表示されるアイコン。これはオプションです。

taskflow-id

アドオンまたはプロパティ・パネルを定義するタスク・フローのID。

help-topic-id

アドオンまたはプロパティ・パネルからカスタム・ヘルプ・トピックにリンクするヘルプ・トピックID。これはオプションです。

panel要素をファイルから削除すると、そのアドオンまたはプロパティ・パネルはページに表示されません。

次の例は、addon-config、panelsおよびpanel要素の使用方法を示しています。

<addon-config>
<panels>
<panel name="oracle.fod.custom.panel" title="About FOD"
icon="adf/webcenter/images/about.gif"
taskflow-id="/WEB-INF/about-fod.xml#about-fod"
/>
</panels>
</addon-config>

アドオンの詳細は、第19.2項「コンポーザのアドオンの作成」を参照してください。

必要に応じて個別のアドオン・パネルにイベントハンドラを登録するには、次の例に示すようにpanel要素内にevent-handlers要素を追加できます。

<event-handlers>
<event-handler event="close">
oracle.fod.custom.TaskFlowEventHandler
</event-handler>
</event-handlers>

XMLコードは、汎用イベント・ハンドラの場合と同じです。詳細は、第B.2.1.5項「event-handlers」を参照してください。

B.2.1.2 property-panels

property-panels要素を使用して、カスタム・プロパティ・パネルを登録します。addon-config要素内にproperty-panels要素を追加します。カスタム・プロパティ・パネルの詳細は、第19.3項「カスタム・プロパティ・パネルの作成」を参照してください。拡張ファイルには、property-panels要素を1つのみ持つことができます。

property-panel

property-panel要素は、コンポーザの特定のコンポーネントに表示されるカスタム・プロパティ・パネルの定義に使用します。property-panels要素には、「コンポーネント・プロパティ」ダイアログにタブとして表示するカスタム・プロパティ・パネルを定義する個別のproperty-panel要素を必要な数だけ挿入できます。カスタム・プロパティ・パネルを登録するコンポーネントまたはタスク・フローを指定するには、それぞれcomponent要素またはtaskflow-id要素をproperty-panel内に追加する必要があります。

表B-12は、property-panel要素の属性を示しています。

表B-12 property-panel要素の属性

属性

説明

name

「コンポーネント・プロパティ」ダイアログに表示するカスタム・プロパティ・パネルの識別子。

rendered

このパネルを「コンポーネント・プロパティ」ダイアログでユーザーに表示するかどうかを示します。ここではEL値を取得できます。

コンポーネント

component要素を使用して、カスタム・プロパティ・パネルを登録するコンポーネントの完全修飾クラス名を指定します。1つのproperty-panel要素で指定できるcomponent要素は1つのみです。

taskflow-id

taskflow-id要素を使用して、カスタム・プロパティ・パネルを登録するタスク・フローの名前を指定します。1つのproperty-panel要素で指定できるtaskflow-id要素は1つのみです。

panel

panel要素は、コンポーネントの「コンポーネント・プロパティ」ダイアログまたは「ページ・プロパティ」ダイアログにタブとして表示されるカスタム・プロパティ・パネルの指定に使用します。1つのproperty-panel要素で、panel要素を必要な数だけ指定できます。表B-13は、panel要素の属性を示しています。

表B-13 panel要素の属性

属性

説明

name

addon-configセクションでのパネルの宣言に使用する名前。

rendered

カスタム・プロパティ・パネルがレンダリングされるかどうかを指定します。

parameter

実装タスク・フローに渡されるパラメータ。

ELのみを取得し、Map<String, String>を返す必要があります。

panel要素がファイルから削除されると、「コンポーネント・プロパティ」ダイアログにプロパティ・パネルが表示されなくなります。

次の例は、Command Buttonコンポーネントにカスタム・プロパティ・パネルを登録する方法を示しています。

<property-panels>
<property-panel name="cmdbtn">
<component>oracle.rich.CommandButton</component>
<panel name="prop.panel.cmdbtn"/>
</property-panel>
</property-panels>

次の例は、タスク・フローにカスタム・プロパティ・パネルを登録する方法を示しています。

<property-panels>
<property-panel name="dashboard">
<taskflow-id>/WEB-INF/dashboard-taskflow#prop-panel</taskflow-id>
<panel name="dashboard.prop-panel" />
</property-panel>
</property-panels>

B.2.1.3 taskflow-id

taskflow-id要素を使用して、カスタム・プロパティ・パネルを登録するタスク・フローのIDを定義します。次の例は、タスク・フローにカスタム・プロパティ・パネルを登録する方法を示しています。

<property-panels>
<property-panel name="dashboard">
<taskflow-id>/WEB-INF/dashboard-taskflow#prop-panel</taskflow-id>
<panel name="dashboard.prop-panel" />
</property-panel>
</property-panels>
</pe-extension>

B.2.1.4 lov-config

lov-config要素は、タスク・フロー・パラメータのカスタム値リストまたはピッカーの登録に使用します。lov-config要素は、pe-extensionタグの直下に追加します。1つの拡張ファイルで指定できるlov-config要素は1つのみです。この要素内では、LOV使用を登録するタスク・フローのそれぞれにtask-flow-definition要素を追加できます。LOVを提供する各パラメータにinput-parameter-definitionを追加します。次の例に示すように、enumeration要素を使用して、パラメータのLOVオプションをリストします。

<lov-config>
<task-flow-definition taskflow-id="/WEB-INF/employee-details.xml#employee-details">
<input-parameter-definition>
<name>Designation</name>
<enumeration>
<item>
<name>Accounts Manager</name>
<value>Accounts Manager</value>
<description>Accounts Manager</description>
</item>
<item>
<name>Accounts Assistant</name>
<value>Accounts Assistant</value>
<description>Accounts Assistant</description>
</item>
<item>
<name>Payroll Executive</name>
<value>Payroll Executive</value>
<description>Payroll Executive</description>
</item>
<item>
<name>Senior Manager</name>
<value>Senior Manager</value>
<description>Senior Manager</description>
</item>
</enumeration>
</input-parameter-definition>
</task-flow-definition></lov-config>

詳細は、第19.5項「タスク・フローのパラメータのカスタムLOVまたはピッカーの構成」を参照してください。

B.2.1.5 event-handlers

event-handlers要素は、コンポーザによって生成されたイベントのハンドラの登録に使用します。event-handlers要素は、pe-extensionタグの直下に追加します。pe-extensionで指定できるevent-handlers要素は1つのみです。

また、特定のコンポーザ・アドオン・パネルでは、addon-configセクションにあるpanel要素内にevent-handlers要素を追加して、イベントハンドラを登録することもできます。詳細は、第B.2.1.1項「addon-config」を参照してください。

event-handler

event-handler要素を使用して、コンポーザにイベント・ハンドラを登録します。event-handlersでは、event-handler要素を必要な数だけ作成して、保存、クローズ、削除、追加および選択イベントのハンドラを登録できます。たとえば、JavaクラスSaveHandlerでprocessSaveメソッドを実装してSaveイベントが呼び出されたときに特定のアクションを実行する場合は、次のようにpe_ext.xmlファイルにevent-handlerエントリを追加することでその実装をコンポーザに登録できます。

<event-handlers>
<event-handler event="save">view.SaveHandler</event-handler>
</event-handlers>

イベント・ハンドラの構成の詳細は、第19.6項「コンポーザUIイベントのイベント・ハンドラの構成」を参照してください。

B.2.1.6 drop-handlers

drop-handlers要素は、リソース・カタログからページへのコンポーネントの追加を処理するドロップ・ハンドラの登録に使用します。drop-handlers要素は、pe-extensionタグの直下に追加します。1つの拡張ファイルで指定できるdrop-handlers要素は1つのみです。

drop-handler

drop-handler要素を使用して、コンポーザにドロップ・ハンドラを登録します。drop-handlersでは、drop-handler要素を必要な数だけ作成して、アプリケーションで作成したドロップ・ハンドラを登録できます。たとえば、XMLコンポーネントのページへの追加を処理するドロップ・ハンドラTestDropHandlerを作成した場合、次のようにpe_ext.xmlファイルにdrop-handlerエントリを追加することで、その実装をコンポーザに登録できます。

<drop-handlers>
<drop-handler>test.TestDropHandler</drop-handler>
</drop-handlers>

詳細は、第19.7項「リソース・カタログのドロップ・ハンドラの構成」を参照してください。

B.2.1.7 filter-config

filter-config要素は、実行時に編集可能なコンポーネントのプロパティ・フィルタの定義に使用します。「コンポーネント・プロパティ」ダイアログは、選択したコンポーネントに対して編集可能なプロパティを表示します。すべてのプロパティを編集に公開するわけではない場合は、特定のプロパティをフィルタ処理してそれらを「コンポーネント・プロパティ」ダイアログに表示されないようにすることができます。グローバル・レベルのフィルタを指定して、すべてのコンポーネントで共通の属性をフィルタ処理することも、タグ・レベルのフィルタを定義して、特定のコンポーネントのみでプロパティをフィルタ処理することもできます。

filter-config要素は、pe-extensionタグの直下に追加します。1つの拡張ファイルで指定できるfilter-config要素は1つのみです。

プロパティ・フィルタの詳細は、第19.8項「プロパティ・フィルタの定義」を参照してください。

global-attribute-filter

global-attribute-filter要素を使用して、すべてのコンポーネント間で特定のプロパティをフィルタ処理します。拡張ファイルで指定できるglobal-attribute-filter要素は1つのみです。この要素には、複数のライブラリからのコンポーネントのプロパティ・フィルタを定義するattribute要素を必要な数だけ含めることができます。

taglib-filter

taglib-filter要素を使用して、特定のライブラリ内のコンポーネントのプロパティ・フィルタを定義します。複数のtaglib-filter要素を組み込むと、複数のライブラリ内のコンポーネントのプロパティをフィルタ処理できます。この要素内ではライブラリに属するすべてのコンポーネントにtag要素を組み込むことができます。

表B-14は、taglib-filter要素で使用できる属性を示しています。

表B-14 tag要素の属性

属性

説明

namespace

フィルタ対象のプロパティが存在するコンポーネントを含むタグ・ライブラリのネームスペース。

tag

tagは、フィルタ対象のプロパティが存在するコンポーネントの指定に使用されます。taglib-filter要素内には、複数のtag要素を組み込むことができます。この要素内では、フィルタ対象にするすべてのプロパティにattribute要素を組み込むことができます。

表B-15は、tag要素で使用できる属性を示しています。

表B-15 tag要素の属性

属性

説明

name

など、フィルタ対象のプロパティが存在するコンポーネントの名前。commandButton、portletなど。

attribute

attribute要素は、すべてのコンポーネントまたは指定したコンポーネントのみでフィルタ処理するプロパティの指定に使用します。グローバル・レベル・フィルタを定義するには、global-attribute-filter内にattribute要素を組み込む必要があります。特定のコンポーネントのプロパティ・フィルタを定義するには、taglib-filter内にattribute要素を組み込む必要があります。

表B-16は、attribute要素で使用できる属性を示しています。

表B-16 attribute要素の属性

属性

説明

name

フィルタ対象のプロパティの名前。

filtered

プロパティをフィルタ処理するかどうかを指定します。値はtrueまたはfalseのいずれかです。特定のビューでプロパティをフィルタするには、view属性を使用します。

label

UIのプロパティのラベル。ローカライズされた文字列を取得、またはビューに応じて異なるラベルを表示するには、ELを使用します。

view

(オプション)このプロパティを表示/非表示するビュー。designまたはsourceの値を取ります。

次の例では、グローバルおよびコンポーネント・レベルのプロパティ・フィルタを定義する方法を示しています。

<filter-config>
<global-attribute-filter>
<attribute name="readOnly" filtered="false" label="Read Only"/>
<attribute name="required" filtered="false" label="Mandatory"/>
<attribute name="shortDesc" filtered="false" label="#{composerBundle.PNL_TB_SHORTDESC}"/>
</global-attribute-filter>

<taglib-filter namespace="http://xmlns.oracle.com/adf/faces/rich">
<tag name="goLink">
<attribute name="accessKey" view="design"/>
<attribute name="targetFrame" filtered="false" view="source"/>
<attribute name="destination" filtered="false" label="#{pageEditorPanelBean.layoutView ?  'Where do you want to surf?' : 'Destination'}"/>
</tag>
<tag name="inputText">
<attribute name="all" view="design"/>
<attribute name="label" label="Field Name" filtered="false" />
<attribute name="readOnly" filtered="false" />
<attribute name="required" filtered="false" />
<attribute name="rendered" filtered="false" />
<attribute name="wrap" filtered="false" />
</tag>
</taglib-filter>
</filter-config>

B.2.1.8 elbuilder-config

elbuilder-config要素は、式ビルダーのカスタム値の構成に使用します。式ビルダーは、コンポーザの「コンポーネント・プロパティ」から起動され、ユーザーによるコンポーネント・プロパティのEL値の指定を可能にします。ユーザーは、事前定義された値セットからの選択、またはテキスト・ボックスへのEL値の入力を実行できます。式ビルダーをカスタマイズすると、より多くのオプションをユーザーに提示できます。詳細は、第19.4項「式ビルダーの拡張」を参照してください。

elbuilder-config要素は、pe-extensionタグの直下に追加します。1つの拡張ファイルで指定できるelbuilder-config要素は1つのみです。

selector

次の例に示すように、selector要素を使用して、カスタム・オプションを定義して組み込みます。

<elbuilder-config>
<!-- define selector -->
<selector id="CustomELParameter">
view.CustomELParameter
</selector>

<!-- include selector -->
<selectors>
<selector id="CustomELParameter"/>
</selectors>
</elbuilder-config>

selectors要素内には、複数のselector要素を組み込むことができます。

B.2.1.9 selection-config

selection-config要素を使用すると、特定のコンポーネントの直接選択を有効または無効にしたり、関連する操作を定義できます。コンポーネントを選択可能にするためには、このタグ内で操作を定義する必要があります。詳細は、第19.11項「「デザイン」ビューまたは「コンテンツの追加」ビューでの直接選択の有効化」を参照してください。

<selection-config>タグ内で、<global-filter>および<selection-taglib-filter>を使用しするネームスペースとタグによって選択をグローバルに構成することができます。

selection

selectionタグは、直接選択ビューを有効にするため使用されます。

operation

利用可能な操作は、各特定コンポーネントの下の<operation>タグ内で定義されています。次の要素は、操作の定義に使用されます。

- name: 実行される操作を定義します。(標準操作またはカスタム操作を使用します。)

- label (オプション): ポップアップ・ウィンドウ内のタブ・ラベルとして操作名をオーバーライドします。

- filtered: ポップアップ・ウィンドウの操作を含むようにfalseに設定します。

<selection-config>
<global-filter>
<selection view="design" enabled="false"/>
</global-filter>

<selection-taglib-filter
namespace="http://xmlns.oracle.com/adf/faces/customizable">
<tag name="showDetailFrame">
<selection view="design" enabled="true"/>
<operation name="oracle.adf.pageeditor.pane.sdfprop"
label="SDF Change Property"
filtered="false"/>
</tag>
</selection-taglib-filter>
</selection-config>

B.2.1.10 pe_ext.xmlファイルのサンプル

例B-1は、様々な要素を使用してコンポーザの機能を拡張するpe_ext.xmlファイルのサンプルを示しています。

例B-1 pe_ext.xmlのサンプル

<pe-extension xmlns="http://xmlns.oracle.com/adf/pageeditor/extension">

<addon-config>
<!-- Composer add-on panels configuration -->
<panels>
<panel name="oracle.fod.custom.panel" title="About FOD"
icon="adf/webcenter/images/about.gif"
taskflow-id="/WEB-INF/about-fod.xml#about-fod"/>
</panels>

<!-- Composer property panels configuration -->
<property-panels>
<property-panel name="cmdbtn">
<component>oracle.rich.CommandButton</component>
<panel name="prop.panel.cmdbtn" />
</property-panel>
</property-panels>
</addon-config>

<Save event handler configuration -->
<event-handlers>
<event-handler event="save">view.SaveHandler</event-handler>
</event-handlers>

<!-- Test drop handler configuration -->
<drop-handlers>
<drop-handler>test.TestDropHandler</drop-handler>
</drop-handlers>

<!-- Property filter configuration. Properties defined here are not displayed in Composer. -->
<filter-config>
<global-attribute-filter>
<attribute name="accessKey" />
<attribute name="attributeChangeListener" />
<attribute name="autoSubmit" />
<attribute name="binding" />
</global-attribute-filter>
<taglib-filter namespace="http://xmlns.oracle.com/adf/faces/rich">
<tag name="commandButton">
<attribute name="text" />
<attribute name="icon" />
</tag>
</filter-config>
</pe-extension>

B.2.2 adf-config.xml

adf-config.xmlファイルでは、通常はデプロイ時に決定され、実行時に変更されることも多いアプリケーションレベルの設定が指定されています。このファイルは、アプリケーションの作成時に作成されて、「アプリケーション・リソース」パネルのDescriptorsの下のADF META-INFフォルダに配置されます。次の例では、Portal Frameworkアプリケーションの作成時に作成される最小限のadf-config.xmlファイルを示しています。

<?xml version="1.0" encoding="windows-1252" ?>
<adf-config xmlns="http://xmlns.oracle.com/adf/config"
xmlns:adf="http://xmlns.oracle.com/adf/config/properties">
<adf:adf-properties-child xmlns="http://xmlns.oracle.com/adf/config/properties">
<adf-property name="adfAppUID" value="Application4-2138"/>
</adf:adf-properties-child>
</adf-config>

Page Customizableコンポーネントをページに追加すると、特定の必須構成がadf-config.xmlファイルに追加されます。

新しいアドオンやカスタム・プロパティ・パネルの登録、選択的なアドオンのレンダリング、カスタマイズ・レイヤーの作成、コンポーザ・サンドボックスの有効/無効、カスタム・リソース・カタログの作成、「構造」ビューの無効化といったタスクを実行するときに、adf-config.xmlファイルを更新する必要があります。次の項では、コンポーザに固有な構成に使用される様々なadf-config.xml要素を説明します。

この項には次のサブセクションが含まれます:

- 第B.2.2.1項「page-editor-config」

- 第B.2.2.2項「addon-panels」

- 第B.2.2.3項「sandbox-namespaces」

- 第B.2.2.5項「session-options-factory」

- 第B.2.2.6項「enable-design-views」

- 第B.2.2.8項「allow-elとprotect-el」

- 第B.2.2.9項「rcv-config」

- 第B.2.2.10項「customizableComponentsSecurity」

- 第B.2.2.11項「mds-config」

- 第B.2.2.12項「resource-string-editor」

- 第B.2.2.13項「enable-source-view」

- 第B.2.2.14項「enable-zoom」

- 第B.2.2.15項「persistent-change-manager」

- 第B.2.2.16項「taglib-config」

- 第B.2.2.17項「security-config」

- 第B.2.2.18項「サンプルadf-config.xmlファイル」

B.2.2.1 page-editor-config

<pe:page-editor-config>要素を使用して、アドオン・パネルの登録、サンドボックスの構成、リソース文字列エディタの構成などのコンポーザ固有の構成を組み込みます。<pe:page-editor-config>要素は、次の例に示すようにadf-configタグ内に追加します。

<adf-config xmlns="http://xmlns.oracle.com/adf/config"
xmlns:adf="http://xmlns.oracle.com/adf/config/properties"
xmlns:mdsC="http://xmlns.oracle.com/adf/mds/config">
. . .
<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
. . .
</pe:page-editor-config>
</adf-config>

B.2.2.2 addon-panels

<pe:addon-panels>要素を使用して、カスタムのアドオンやプロパティ・パネルをコンポーザに登録します。<pe:addon-panels>要素は、<pe:page-editor-config>内に挿入します。ファイル内には<pe:addon-panels>要素を1つだけ指定できますが、<pe:addon-panels>内には、カスタム・パネルを登録するための<pe:addon-panel>要素をいくつでも指定できます。コンポーザのアドオンとプロパティ・パネルの詳細は、第19.2項「コンポーザのアドオンの作成」および第19.3項「カスタム・プロパティ・パネルの作成」を参照してください。

addon-panel

<pe:addon-panel>要素を使用して、アドオンをadf-config.xmlファイル内で登録します。<pe:addon-panel>要素は、<pe:addon-panels>要素内にのみ配置する必要があります。カスタム・パネルを登録するための任意の数の<pe:addon-panel>要素を指定できます。次の例では、これらの要素を使用して新しいアドオンを登録する方法を示しています。

<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
<pe:addon-panels>
<!-- Page Properties add-on -->
<pe:addon-panel name="oracle.adf.pageeditor.addonpanels.page-settings" />

<!-- Page Reset add-on -->
<pe:addon-panel name="oracle.adf.pageeditor.addonpanels.page-reset" />

<pe:addon-panel name="oracle.fod.custom.panel" />

</pe:addon-panels>
. . .
</pe:page-editor-config>

<pe:addon-panel>要素は、rendered属性もサポートしています。この属性では、EL値を指定でき、パネルをコンポーザで表示する必要があるかどうかを指定します。

カスタム・アドオンの登録時には、デフォルト・アドオンのエントリも含める必要があります。デフォルト・アドオンが登録されていない場合は、カスタム・アドオンのみがコンポーザで使用可能になります。

<pe:addon-panel>要素は、次のパラメータをサポートしています。

- rendered: 該当アドオンを表示する必要があるかどうかを指定します。rendered属性には、true、falseまたはEL値を指定できます。この属性を使用して、特定の基準に基づいて条件付きでアドオンを表示します。

- parameters: パラメータをアドオン・タスク・フローに宣言的に渡すために使用します。parameters属性には、次の例に示すようにEL値を指定できます。

<pe:addon-panels>
<pe:addon-panel name="oracle.adf.pageeditor.addonpanels.customization-manager" parameters="#{AppUtilBean.customizationManagerParams}"/>
. . .
</pe:addon-panels>

ここでAppUtilBeanは、パラメータをアドオン・タスク・フローに渡すためのロジックを提供します。

B.2.2.3 sandbox-namespaces

<pe:sandbox-namespaces>要素を使用して、実行時にサンドボックスの作成を有効にする対象となるすべてのメタデータのネームスペースを登録します。サンドボックス作成の有効化の詳細は、第21.2.1項「コンポーザのサンドボックスの作成を有効にする方法」を参照してください。

<pe:sandbox-namespaces>要素は、<pe:page-editor-config>要素内に挿入します。次の例では、sandbox-namespaces要素の使用方法を示しています。

<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
. . .
<pe:sandbox-namespaces>
<pe:namespace path="/pages"/>
<pe:namespace path="/pageDefs"/>
</pe:sandbox-namespaces>
</pe:page-editor-config>

B.2.2.4 persist-changes

コンポーネント・レベルおよび属性レベルのカスタマイズの制限を定義するには、persist-changes属性を使用して、特定の属性に対する変更を永続的にする必要があるかどうかを指定します。persist-changes属性の値には、trueまたはfalseを指定できます。persist-changesをtrueに設定する場合、属性に対して行われた変更は、そのコンポーネントのどのインスタンスでも持続します。persist-changes属性をattribute要素内に含める必要があります。これは、次の例で示すように、tag要素内に含められます。

<taglib-config>
<taglib uri="http://xmlns.oracle.com/adf/pageeditor">
<tag name="imageLink">
<attribute name="destination">
<persist-changes>true</persist-changes>
</attribute>
</tag>
<tag name="customAction">
<attribute name="text">
<persist-changes>true</persist-changes>
</attribute>
<attribute name="icon">
<persist-changes>true</persist-changes>
</attribute>
</tag>
</taglib>
</taglib-config>

詳細は、第5.8.3.1項「コンポーネント・レベルでの変更の永続性の定義方法」を参照してください。

B.2.2.5 session-options-factory

アプリケーションでカスタマイズ・レイヤーを作成する際は、<pe:session-options-factory>要素を使用して、ComposerSessionOptionsFactoryの実装をコンポーザに登録します。このクラスには、指定された基準に基づいてカスタマイズ内容を様々なレイヤーに保存するためのロジックが含まれています。詳細は、第21.3項「カスタマイズ・レイヤーの表示モードおよび編集モードへの追加: 例」を参照してください。

次の例では、AppsSessionOptionsFactoryImplという名前のクラスを登録する方法を示しています。

<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
. . .
<pe:session-options-factory>view.AppsSessionOptionsFactoryImpl</pe:session-options-factory>
</pe:page-editor-config>

B.2.2.6 enable-design-views

コンポーザの直接選択を有効にするには、最初に「選択」ビューを有効にする必要があります。直接選択機能の詳細は、第19.11項「「デザイン」ビューまたは「コンテンツの追加」ビューでの直接選択の有効化」を参照してください。利用可能なビューを定義するためには、<pe:page-editor-config>タグ内の<pe:enable-design-views>タグを追加します。指定できる値は、design、add-content、select、source、previewおよびallです。値allを指定すると、design、select、sourceおよびpreviewのみが表示されます。これは、add-contentがdesignのサブセットであるためです。

B.2.2.7 persist-changes

コンポーネント・レベルおよび属性レベルのカスタマイズの制限を定義するには、persist-changes属性を使用して、特定の属性に対する変更を永続的にする必要があるかどうかを指定します。persist-changes属性の値には、trueまたはfalseを指定できます。persist-changesをtrueに設定する場合、属性に対して行われた変更は、そのコンポーネントのどのインスタンスでも持続します。persist-changes属性をattribute要素内に含める必要があります。これは、次の例で示すように、tag要素内に含められます。

<taglib-config>
<taglib uri="http://xmlns.oracle.com/adf/pageeditor">
<tag name="imageLink">
<attribute name="destination">
<persist-changes>true</persist-changes>
</attribute>
</tag>
<tag name="customAction">
<attribute name="text">
<persist-changes>true</persist-changes>
</attribute>
<attribute name="icon">
<persist-changes>true</persist-changes>
</attribute>
</tag>
</taglib>
</taglib-config>

詳細は、第5.8.3.1項「コンポーネント・レベルでの変更の永続性の定義方法」を参照してください。

B.2.2.8 allow-elとprotect-el

ELを無効にしたり、既存のELを上書きから保護するためにコンポーザを構成することができます。ELがアプリケーション・ページで実行できるかどうかを定義するために<pe:allow-el>を使用します。デフォルトはtrueです。フォーム要素のELを編集できるかどうかを定義するために<pe:protect-el>を使用します。デフォルトはfalseです。詳細は、第19.4.2項「式言語の保護方法」を参照してください。

次の例では、ELを無効にします。

<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
. . .
<pe:allow-el>false</pe:allow-el>
</pe:page-editor-config>

B.2.2.9 rcv-config

<rcv-config>要素を使用して、カスタム・リソース・カタログをコンポーザに登録したり、複数のリソース・カタログを使用する際にResourceCatalogSelectorの実装を登録したりします。

デフォルトのリソース・カタログのかわりにカスタム・リソース・カタログをユーザーに表示するには、まず必要なコンテンツが含まれたカタログ定義ファイルを作成してから、このカタログ定義をコンポーザの拡張ファイルとadf-config.xmlファイル内で登録する必要があります。そうすることで、ユーザーがページ上の「コンテンツの追加」ボタンをクリックすると、カスタム・リソース・カタログが表示されるようになります。詳細は、第14.2項「リソース・カタログの作成」を参照してください。

<rcv-config>要素は、adf-configタグ内に挿入します。次の例では、<rcv-config>要素を使用してusers-catalogという名前のカスタム・カタログを登録する方法を示しています。

<adf-config xmlns="http://xmlns.oracle.com/adf/config"
xmlns:adf="http://xmlns.oracle.com/adf/config/properties"
xmlns:mdsC="http://xmlns.oracle.com/adf/mds/config">
. . .
<rcv-config xmlns="http://xmlns.oracle.com/adf/rcs/viewer/adf-config">
<default-catalog catalog-name="users-catalog"/>
</rcv-config>
</adf-config>

コンポーザを使用して複数のリソース・カタログを構成し、指定された条件に応じてユーザーごとに異なるカタログを表示することもできます。複数のリソース・カタログを構成する際は、<rcv-config>要素と<catalog-selector>要素を使用して、リソース・カタログを選択するためのロジックが含まれたResourceCatalogSelectorの実装を登録します。

次の例では、<rcv-config>要素を使用してCatalogSelectorという名前のResourceCatalogSelectorの実装を登録する方法を示しています。

<adf-config xmlns="http://xmlns.oracle.com/adf/config"
xmlns:adf="http://xmlns.oracle.com/adf/config/properties"
xmlns:mdsC="http://xmlns.oracle.com/adf/mds/config">
. . .
<rcv-config xmlns="http://xmlns.oracle.com/adf/rcs/viewer/adf-config">
<catalog-selector class-name="webcenter.CatalogSelector"/>
<default-catalog catalog-name="default-catalog"/>
</rcv-config>
</adf-config>

B.2.2.10 customizableComponentsSecurity

<customizableComponentsSecurity>要素を使用して、Show Detail Frameアクションの制限を適用します。<customizableComponentsSecurity>要素は、adf-configタグ内に挿入します。

<customizableComponentsSecurity>要素内には、<enableSecurity>、<actionsCategory>、<actions>および<custom-actions>という要素を指定できます。

enableSecurity

<enableSecurity>要素を使用して、Show Detail Frameアクションのセキュリティ継承動作をオーバーライドします。この要素には、trueまたはfalseという値を指定できます。trueに設定した場合は、ユーザーがコンポーネントを変更できるかどうかは、まずページ権限に基づいて決定され、次に、そのタイプの権限に対して指定されている現在のアクション・セットに応じて調整されます。falseに設定した場合は、ユーザーはすべてのアクションを選択可能になります。adf-config.xmlで構成されたアクションとユーザーのページ権限は無視されます。

actionsCategory

<actionsCategory>要素を使用して、一連のShow Detail Frameアクションの制限を同時に適用します。<actionsCategory>要素内には、サポートされているカテゴリの<actionCategory>要素を指定できます。アクション・カテゴリの詳細は、第22.5.2項「アクション・カテゴリ・レベルでのセキュリティの定義」を参照してください。

次の例では、actionsCategoryの使用方法を示しています。

<adf-config xmlns="http://xmlns.oracle.com/adf/config"
xmlns:adf="http://xmlns.oracle.com/adf/config/properties"
xmlns:mdsC="http://xmlns.oracle.com/adf/mds/config">
. . .
<cust:customizableComponentsSecurity
xmlns="http://xmlns.oracle.com/adf/faces/customizable/config">
<cust:enableSecurity value="true"/>

<cust:actionsCategory>
<cust:actionCategory name="personalizeActionsCategory" value="false"/>
<cust:actionCategory name="editActionsCategory" value="true"/>
</cust:actionsCategory>

<cust:actions>
. . .
</cust:actions>

</cust:customizableComponentsSecurity>
</adf-config>

アクション

<actions>要素を使用して、個別のアクションの制限を適用します。各actions要素内には、すべてのサポートされているアクションの<action>要素を指定できます。

次の例では、<actions>の使用方法を示しています。

<adf-config xmlns="http://xmlns.oracle.com/adf/config"
xmlns:adf="http://xmlns.oracle.com/adf/config/properties"
xmlns:mdsC="http://xmlns.oracle.com/adf/mds/config">
. . .
<cust:customizableComponentsSecurity
xmlns="http://xmlns.oracle.com/adf/faces/customizable/config">
<cust:enableSecurity value="true"/>

<cust:actionsCategory>
. . .
</cust:actionsCategory>

<cust:actions>
<cust:action name="showMinimizeAction" value="true"/>
<cust:action name="showMoveAction" value="false"/>
</cust:actions>

</cust:customizableComponentsSecurity>
<adf-config>

アクション・レベルの制限の適用の詳細は、第22.5項「Panel CustomizableおよびShow Detailコンポーネント・アクションでのアクション・レベルの制限の適用」を参照してください。

custom-actions

<custom-actions>要素を使用して、他のShow Detail Frameアクションとともに表示するカスタム・アクションを定義します。customizableComponentsSecurityセクション内には、1つの<custom-actions>要素のみを追加する必要があります。この要素内には、個別のカスタム・アクションを定義するための任意の数の<custom-action>要素を追加できます。

注意:

別の方法として、<customizableComponentsSecurity>セクション内ではなく<adf-config-child>要素内に<custom-actions>要素を追加することもできます。

カスタム・アクションの詳細は、第20.3.2項「タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法」を参照してください。

B.2.2.11 mds-config

コンポーネントに対するタイプ・レベルのアプリケーション・カスタマイズ制限を定義する際は、<mds-config>要素を使用して、特定のコンポーネントに適用される制限を記述している独立したXMLファイルを登録します。タイプ・レベルの制限の詳細は、第22.1.1項「タイプ・レベルのカスタマイズ・ポリシーの定義方法」を参照してください。

<mds-config>要素は、<adf-config>タグ内に挿入します。<mds-config>要素は、次のように追加できます。

<mds-config xmlns="http://xmlns.oracle.com/mds/config">
<type-config>
<standalone-definitions>
<file>Directory_Name/standalone.xml</file>
</standalone-definitions>
</type-config>
</mds-config>

B.2.2.12 resource-string-editor

<pe:resource-string-editor>要素を使用して、アプリケーション内でリソース文字列の編集を可能にします。<pe:resource-string-editor>要素は、次の例に示すように<pe:page-editor-config>セクション内に挿入します。

<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
. . .
<pe:resource-string-editor>
<pe:enabled>true</pe:enabled>
</pe:resource-string-editor>
</pe:page-editor-config>

詳細は、第20.12項「実行時リソース文字列編集の構成」を参照してください。

B.2.2.13 enable-source-view

<pe:enable-source-view>要素を使用して、コンポーザ内で「構造」ビューを有効または無効にします。<pe:enable-source-view>要素は、<pe:page-editor-config>セクション内に挿入します。「構造」ビューは、デフォルトではコンポーザ内で有効になっています。「ソース」ビューを無効にするには、次の例に示すように<pe:enable-source-view>をfalseに設定します。

<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
. . .
<pe:enable-source-view>false</pe:enable-source-view>
</pe:page-editor-config>

詳細は、第20.8項「アプリケーションの「構造」ビューの無効化」を参照してください。

B.2.2.14 enable-zoom

<pe:enable-zoom>要素を使用して、コンポーザ内でタスク・フローをズーム・インする機能を有効または無効にします。<pe:enable-zoom>要素は、<pe:page-editor-config>セクション内の<pe:source-view>タグ内に挿入します。タスク・フローのズームは、デフォルトではコンポーザ内で有効になっています。この機能を無効にするには、次の例に示すように<pe:enable-zoom>をfalseに設定します。

<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
. . .
<pe:source-view>
<pe:enable-zoom>false</pe:enable-zoom>
</pe:source-view>
</pe:page-editor-config>

詳細は、第20.9項「タスク・フローのズーム機能の無効化」参照してください。

B.2.2.15 persistent-change-manager

この要素を使用して、コンポーザで加えた変更を永続化するために使用する変更マネージャを構成します。<persistent-change-manager>要素は、<adf-faces-config>セクション内に挿入します。アプリケーションのカスタマイズ内容をMDSに永続化するには、次のように<persistent-change-manager>をMDSDocumentChangeManagerに設定する必要があります。

<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config">
<persistent-change-manager>
<persistent-change-manager-class>oracle.adf.view.rich.change.MDSDocumentChangeManager</persistent-change-manager-class>
</persistent-change-manager>
. . .
</adf-faces-config>

コンポーザ内の変更の永続性の詳細は、第20.11項「永続性変更マネージャの構成」を参照してください。

<persistent-change-manager要素の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

B.2.2.16 taglib-config

<taglib-config>要素を使用して、デフォルトで永続化される必要のあるコンポーネント・タグを指定します。この要素が有効になるのは、adf-config.xmlファイルで<persistent-change-manager>を使用して変更の永続性を定義している場合のみです。

コンポーザ・コンポーネントをページに追加すると、adf-config.xmlファイルには、永続化される必要のあるタグと属性のリストが含まれた<taglib-config>要素が移入されます。このデフォルトのリストにさらに要素や属性を追加できます。

この要素の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

<taglib-config>要素は、<adf-faces-config>セクション内に挿入します。<taglib-config>要素は、次の例のような内容になります。

<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config">
. . .
<taglib-config>
<taglib uri="http://xmlns.oracle.com/adf/faces/customizable">
<tag name="showDetailFrame">
<persist-operations>all</persist-operations>
<attribute name="expansionMode">
<persist-changes>true</persist-changes>
</attribute>
<attribute name="contentStyle">
<persist-changes>true</persist-changes>
</attribute>
</tag>
<tag name="panelCustomizable">
<persist-operations>all</persist-operations>
</tag>
</taglib>
</taglib-config>
</adf-faces-config>

詳細は、第20.11項「永続性変更マネージャの構成」を参照してください。

B.2.2.17 security-config

この要素を使用して、コンポーザ固有のセキュリティ構成を指定変更します(特に、アプリケーション・レベルのチェックによってデフォルトのセキュリティ・ポリシーを指定変更する場合)。<pe:security-config>要素は、<pe:page-editor-config>セクション内に挿入します。security-config要素内には、<pe:security-policies>、<pe:security-policy>、<pe:policy-class>および<pe:task-flow-security>という要素を指定できます。

security-policies

この要素を使用して、コンポーザ向けのすべてのセキュリティ・ポリシーとポリシー指定変更を含めます。<pe:security-policies>要素は、<pe:page-editor-config>セクションに1つのみ指定できます。

security-policy

この要素を使用して、既存のポリシーを指定変更します。指定変更するポリシーごとに、1つの<pe:security-policy>要素を追加します。

<pe:security-policy>要素はname属性とoverride属性をサポートしており、nameを使用して、カスタム・ポリシーの登録対象となる名前を指定して、overrideを使用して、指定変更するデフォルト・ポリシーの名前を指定します。

policy-class

この要素を使用して、カスタム・セキュリティ・ポリシーの名前を指定します。

task-flow-security

この要素をcheck-permission属性と組み合せて使用して、コンポーザがタスク・フローの権限の有無を確認できるようにします。これにより、適切な権限を持つユーザーのみがそのタスク・フローを実行時に編集またはカスタマイズすることを許可されます。

詳細は、第22.6項「タスク・フローのセキュリティの実装」を参照してください。

B.2.2.18 サンプルadf-config.xmlファイル

例B-2では、コンポーザ固有の構成が含まれたサンプルadf-config.xmlファイルを示しています。

例B-2 コンポーザ固有の構成が含まれたサンプルadf-config.xmlファイル

<?xml version="1.0" encoding="windows-1252" ?>
<adf-config xmlns="http://xmlns.oracle.com/adf/config"
xmlns:adf="http://xmlns.oracle.com/adf/config/properties"
xmlns:mdsC="http://xmlns.oracle.com/adf/mds/config">
<adf:adf-properties-child xmlns="http://xmlns.oracle.com/adf/config/properties">
<adf-property name="adfAppUID" value="configfilesapp-7198"/>
</adf:adf-properties-child>

<mdsC:adf-mds-config version="11.1.1.000">
<mds-config xmlns="http://xmlns.oracle.com/mds/config">
<persistence-config>
<metadata-namespaces>
<namespace path="/oracle/adf/rc/metadata"
metadata-store-usage="WebCenterFileMetadataStore"/>
<namespace path="/persdef/"
metadata-store-usage="WebCenterFileMetadataStore"/>

<!-- Namespace definitions for Composer sandbox -->
<!-- Your jspx customizations alone go here -->
<namespace path="/pages" metadata-store-usage="WebCenterFileMetadataStore">
<namespace-restriction type="CUSTOMIZATIONS"/>
</namespace>
<!-- Your pagedef customizations alone go here -->
<namespace path="/pageDefs" metadata-store-usage="WebCenterFileMetadataStore">
<namespace-restriction type="CUSTOMIZATIONS"/>
</namespace>
</metadata-namespaces>
<metadata-store-usages>
<metadata-store-usage id="WebCenterFileMetadataStore"
default-cust-store="true">
<metadata-store class-name="oracle.mds.dt.persistence.stores.file.SrcControlFileMetadataStore">
<property name="metadata-path" value="../../mds"/>
</metadata-store>
</metadata-store-usage>
</metadata-store-usages>
</persistence-config>
<cust-config>
<match>
<customization-class name="oracle.adf.share.config.SiteCC"/>
</match>
</cust-config>
<cache-config>
<max-size-kb>100000</max-size-kb>
</cache-config>

<!-- Registration of a standalone XML file used for type-level customization policies -->
<type-config>
<standalone-definitions>
<file>Directory_Name/standalone.xml</file>
</standalone-definitions>
</type-config>
</mds-config>
</mdsC:adf-mds-config>

<pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">

<!-- Composer add-on panel configuration -->
<pe:addon-panels>
<pe:addon-panel name="oracle.adf.pageeditor.addonpanels.page-settings" />
<pe:addon-panel name="oracle.adf.pageeditor.addonpanels.page-reset" />
<pe:addon-panel name="oracle.fod.custom.panel" />
</pe:addon-panels>

<!-- Composer sandbox configuration -->
<pe:sandbox-namespaces>
<pe:namespace path="/pages"/>
<pe:namespace path="/pageDefs"/>
</pe:sandbox-namespaces>

<!-- ComposerSessionOptionsFactory class registration for implementing customization layers -->
<pe:session-options-factory>view.AppsSessionOptionsFactoryImpl</pe:session-options-factory>

<!-- Resource string editor configuration -->
<pe:resource-string-editor>
<pe:enabled>true</pe:enabled>
</pe:resource-string-editor>

<!-- Switch to enable or disable Composer Source view -->
<pe:enable-source-view>false</pe:enable-source-view>

</pe:page-editor-config>

<!-- Multiple resource catalog configuration -->
<rcv-config xmlns="http://xmlns.oracle.com/adf/rcs/viewer/adf-config">
<catalog-selector class-name="webcenter.CatalogSelector"/>
<default-catalog catalog-name="users-catalog"/>
</rcv-config>

<!-- Composer and WebCenter Portal Customizable Components actions security configuration -->
<cust:customizableComponentsSecurity xmlns="http://xmlns.oracle.com/adf/faces/customizable/config">
<cust:enableSecurity value="true"/>
<cust:actionsCategory>
<cust:actionCategory name="personalizeActionsCategory" value="false"/>
<cust:actionCategory name="editActionsCategory" value="true"/>
</cust:actionsCategory>
<cust:actions>
<cust:action name="showMinimizeAction" value="true"/>
<cust:action name="showMoveAction" value="false"/>
</cust:actions>
</cust:customizableComponentsSecurity>

<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config">

<!-- Composer persistence change manager configuration -->
<persistent-change-manager>
<persistent-change-manager-class>oracle.adf.view.rich.change.MDSDocumentChangeManager</persistent-change-manager-class>
</persistent-change-manager>

<!-- Composer default persistence configuration -->
<taglib-config>
<taglib uri="http://xmlns.oracle.com/adf/faces/customizable">
<tag name="showDetailFrame">
<persist-operations>all</persist-operations>
<attribute name="expansionMode">
<persist-changes>true</persist-changes>
</attribute>
<attribute name="contentStyle">
<persist-changes>true</persist-changes>
</attribute>
</tag>
<tag name="panelCustomizable">
<persist-operations>all</persist-operations>
</tag>
</taglib>
</taglib-config>
</adf-faces-config>
</adf-config>

B.2.3 adf-settings.xml

adf-settings.xmlファイルは、プロジェクト・レベルとライブラリ・レベルの一般的な設定を格納しているだけでなく、タスク・フローに対するカスタム・アクションを定義するためにも使用できます。この項では、adf-settings.xml内のコンポーザ固有の構成について説明します。

B.2.3.1 custComps-config

custComps-config要素を使用して、アプリケーションで使用されるタスク・フローに対するカスタム・アクションを定義します。実行時に、アプリケーションのadf-config.xmlファイルとadf-settings.xmlファイル内のカスタム・アクション構成が取得されて、適切なアクションがタスク・フロー周囲のShow Detail Frameコンポーネントに表示されます。詳細は、第20.3項「タスク・フローでのカスタム・アクションの有効化」を参照してください。

custComps-config要素は、adf-settingsタグ内に挿入します。custComps-config要素内には、customActions要素を指定できます。

customActions

adf-settings.xmlファイルでcustomActions要素を使用して、タスク・フローに表示するアクションを定義します。ここで定義されたカスタム・アクションは、他のアクションとともに周囲のShow Detail Frameコンポーネントに表示されます。1つのcustomActions要素のみをcustComps-configセクション内に追加する必要があります。customActions要素内には、次の例に示すように、個別のカスタム・アクションを定義するための任意の数のcustomAction要素を追加できます。

<customActions>
<customAction action="next" location="chrome"
rendered="true"
icon="/adf/webcenter/editheader_ena.png"
text="Next"
taskFlowId="/WEB-INF/task-flow-definition.xml#task-flow-definition"
shortDesc="next"/>
<customAction action="prev" location="chrome"
rendered="true"
icon="/adf/webcenter/editheader_ena.png"
text="Previous"
taskFlowId="/WEB-INF/task-flow-definition.xml#task-flow-definition"
shortDesc="prev"/>
</customActions>

B.2.4 web.xmlの更新

web.xmlファイルは、Webアプリケーションに関する詳細情報が含まれたJava EE標準ディスクリプタです。Page Customizableコンポーネントをページに追加すると、Application_Root\Project_Name\public_html\WEB-INFディレクトリ内のweb.xmlファイルが更新されて、他の設定の間で変更永続性が有効になります。

複数のカスタマイズ・レイヤーを使用するアプリケーションを作成する際や、コンポーザのサンドボックスを有効にする際は、web.xmlをさらに更新する必要があります。以降の項では、web.xml内のコンポーザ固有の構成について説明します。

B.2.4.1 CHANGE_PERSISTENCEコンテキスト・パラメータ

アプリケーションのweb.xmlファイル内のCHANGE_PERSISTENCEコンテキスト・パラメータは、アプリケーションのカスタマイズ内容がどのように永続化されるのかを指定します。コンポーザ対応ページ内の変更内容をMDS内で永続化できるようにするには、次の例に示すようにCHANGE_PERSISTENCEコンテキスト・パラメータをComposerChangeManagerに設定する必要があります。

<context-param>
<param-name>org.apache.myfaces.trinidad.CHANGE_PERSISTENCE</param-name>
<param-value>oracle.adf.view.page.editor.change.ComposerChangeManager</param-value>
</context-param>

このコンテキスト・パラメータは、MDSへの永続化を保証するために使用されるChangeManagerクラスを登録します。Page Customizableコンポーネントを新しいPortal Frameworkアプリケーション内のページに追加すると、この構成は自動的に実行されます。ただし、既存のADFアプリケーション内では、このコンテキスト・パラメータは他の値に設定される可能性があります(sessionやoracle.adf.view.rich.change.FilteredPersistenceChangeManagerなど)。したがって、このようなアプリケーションにコンポーザ・コンポーネントを追加する際は、CHANGE_PERSISTENCEパラメータがComposerChangeManagerに設定されていることを確認する必要があります。

詳細は、第20.11項「永続性変更マネージャの構成」を参照してください。

B.2.4.2 WebCenterComposerFilter

web.xmlファイル内でWebCenterComposerFilterを使用して、すべてのHTTPリクエストについてコンポーザのComposerSessionOptionsFactoryをOracle ADFに登録します。そうすることで、そのリクエストはComposerSessionOptionsFactoryの実装に応じて処理されるようになります。このフィルタは、次の例に示すように定義できます。

<filter-mapping>
<filter-name>WebCenterComposerFilter</filter-name>
<url-pattern>/faces/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>

次のタスクを実行する際は、WebCenterComposerFilterを使用する必要があります。

- カスタマイズ・レイヤーの作成。詳細は、第21.3項「カスタマイズ・レイヤーの表示モードおよび編集モードへの追加: 例」を参照してください。

- コンポーザでのサンドボックス作成の有効化。詳細は、第21.2.1項「コンポーザのサンドボックスの作成を有効にする方法」を参照してください。

B.3 コンポーザのデフォルト・アドオンとプロパティ・パネル

この項では、コンポーザでデフォルトで使用できるアドオンとプロパティ・パネルを紹介します。

B.3.1 デフォルトのアドオン

この項では、コンポーザで使用可能なアドオンを列挙して、adf-config.xmlファイル内でこれらのアドオンが登録されている対象の名前を示します。これらの名前は、アプリケーションでアドオンの表示を有効または無効にするために必要になるため、これらの名前を知っておくと役に立ちます。

- ページ・プロパティ
ページ・プロパティを編集するため、およびページ・パラメータを作成するために使用します。

このアドオンは、adf-config.xmlファイル内でoracle.adf.pageeditor.addonpanels.page-settingsという名前に登録されています。

- ページのリセット
ページのカスタマイズ内容をリセットするために使用します。

このアドオンは、adf-config.xmlファイル内でoracle.adf.pageeditor.addonpanels.page-resetという名前に登録されています。

- カスタマイズ・マネージャ
ページやタスク・フローに加えられたカスタマイズ内容を管理するために使用します。

このアドオンは、adf-config.xmlファイル内でoracle.adf.pageeditor.addonpanels.customization-managerという名前に登録されています。

「ページ・プロパティ」アドオンと「ページのリセット」アドオンは、デフォルトで表示されます。アプリケーション内でカスタム・アドオンを作成する場合は、それらのアドオンをadf-config.xmlで登録する一方で、デフォルト・アドオンのエントリも含める必要があります。これらのエントリがないと、デフォルト・アドオンはコンポーザに表示されません。アドオンの詳細は、第19.2項「コンポーザのアドオンの作成」を参照してください。

B.3.2 デフォルトのプロパティ・パネル

この項では、「コンポーネント・プロパティ」ダイアログと「ページ・プロパティ」ダイアログでデフォルトで使用可能なプロパティ・パネルを列挙して、pe_ext.xmlファイル内でこれらのパネルが登録されている対象の名前を示します。これらの名前が役に立つのは、デフォルト・パネルをカスタム・プロパティ・パネルに指定変更する場合や、一部またはすべてのデフォルト・パネルを非表示にする場合です。コンポーザの「コンテンツの追加」ビューまたは「デザイン」ビューで、特定のパネルの表示を有効にすることもできます。詳細は、第19.11項「「デザイン」ビューまたは「コンテンツの追加」ビューでの直接選択の有効化」を参照してください。

プロパティ・パネルの作成の詳細は、第19.3項「カスタム・プロパティ・パネルの作成」を参照してください。

- 表示オプション
コンポーネントの表示関連の動作を設定するために使用します。このパネルは、すべてのプロパティの「コンポーネント・プロパティ」ダイアログに表示されます。

pe_ext.xmlファイル内では、このパネルはoracle.adf.pageeditor.pane.generic-property-inspectorという名前によって参照されます。

- 表示オプション(Show Detail Frame)
Show Detail Frameコンポーネントの表示関連の動作を設定するために使用します。このパネルは、Show Detail Frameコンポーネントのみの「コンポーネント・プロパティ」ダイアログに表示されます。

pe_ext.xmlファイル内では、このパネルはoracle.adf.pageeditor.pane.sdfpropという名前によって参照されます。

- タブ
Panel CustomizableコンポーネントやBoxコンポーネント上のタブの順序や表示プロパティを設定するために使用します。このパネルは、Panel TabbedコンポーネントやPanel Customizableコンポーネントの「コンポーネント・プロパティ」ダイアログに表示されます。このパネルがPanel Customizableコンポーネントについて表示されるのは、このコンポーネント上にタブがある場合のみです。

pe_ext.xmlファイル内では、このパネルはoracle.adf.pageeditor.pane.panel-tabbedという名前によって参照されます。

- スタイル
コンポーネント・インスタンスの外観を設定するために使用します。このパネルは、すべてのプロパティの「コンポーネント・プロパティ」ダイアログに表示されます。

pe_ext.xmlファイル内では、このパネルはoracle.adf.pageeditor.pane.inline-style-editorという名前によって参照されます。

- コンテンツ・スタイル
コンポーネント・インスタンス内のコンテンツの外観を設定するために使用します。このパネルは、すべてのプロパティの「コンポーネント・プロパティ」ダイアログに表示されます。

pe_ext.xmlファイル内では、このパネルはoracle.adf.pageeditor.pane.content-style-editorという名前によって参照されます。

- イベント
コンテキスト・イベントをアクション・ハンドラと関連付けて、そのイベントがプロデューサでトリガーされたときに、プロデューサ・コンポーネントからコンシューマ・コンポーネントに値を渡すことを可能にするために使用します。このパネルは、すべてのコンポーネントの「コンポーネント・プロパティ」ダイアログに表示されます。

pe_ext.xmlファイル内では、このパネルはoracle.adf.pageeditor.pane.eventsという名前によって参照されます。

- リージョン・パラメータ
タスク・フロー・リージョンのパラメータを設定するために使用します。このパネルは、タスク・フロー・リージョンのみの「コンポーネント・プロパティ」ダイアログに表示されます。

pe_ext.xmlファイル内では、このパネルはoracle.adf.pageeditor.pane.region-paramという名前によって参照されます。

- ポートレット・パラメータ
ポートレットのパラメータを設定するために使用します。このパネルは、ポートレットのみの「コンポーネント・プロパティ」ダイアログに表示されます。

pe_ext.xmlファイル内では、このパネルはoracle.adf.pageeditor.pane.portlet-paramという名前によって参照されます。

- レイアウト・カスタマイズ
一連の事前定義済レイアウトから選択することで、ページ・コンポーネントのレイアウトを設定するために使用します。このパネルは、Layout Customizableコンポーネントのみの「コンポーネント・プロパティ」ダイアログに表示されます。

pe_ext.xmlファイル内では、このパネルはoracle.adf.pageeditor.pane.layout-cust-propという名前によって参照されます。

- 子コンポーネント
Panel Customizableコンポーネント内の子コンポーネントを再配置したり表示または非表示にしたりするために使用します。このパネルは、Panel Customizableコンポーネントのみについて表示されます

pe_ext.xmlファイル内では、このパネルはoracle.adf.pageeditor.pane.child-navigatorという名前によって参照されます。

- ページ・パラメータ
ページ上のコンポーネントに関連付けることができるページ・パラメータを設定するために使用します。このパネルは、「ページ・プロパティ」ダイアログに表示されます。

pe_ext.xmlファイル内では、このパネルはoracle.webcenter.page.pane.page-paramという名前によって参照されます。

- ページ・セキュリティ
ページの権限を設定するために使用します。このパネルは、保護されたアプリケーション・ページの「ページ・プロパティ」ダイアログに表示されます。

pe_ext.xmlファイル内では、このパネルはoracle.webcenter.page.pane.page-secという名前によって参照されます。

B.4 コンポーザ・コンポーネント・スタイル固有のプロパティ

この項では、コンポーザ・コンポーネントに関連付けられたスタイル・セレクタについて説明している一連の表を掲載しています。また、backgroundプロパティを使用して、これらのコンポーネントの3つのスキン定義済外観から1つを選択する方法も説明します。

この項には次のサブセクションが含まれます:

- 第B.4.1項「コンポーザ・コンポーネントのスタイル・セレクタ」

- 第B.4.2項「スタイル属性」

B.4.1 コンポーザ・コンポーネントのスタイル・セレクタ

スタイル・セレクタを使用して、要素を指定してその要素のスタイルを定義することで、要素の外観を記述します。

図B-1では、要素の大部分がShow Detail Frameスタイル・セレクタによってスタイル設定されています。この図には、ヘッダー・アイコンの周りの領域を設定する、サブメニュー・コンテナ、サブメニュー・アイテム、マウスを置いたときに表示されるメニュー・アイテムとサブメニュー・アイテム、およびアクション・アイコン・セパレータは示されていません。Show Detail Frameでは、contentスタイル・セレクタ(af|showDetailFrame::content-[light,medium,dark])は、下側、左側および右側のコンポーネント境界線のスタイルを設定することに注意してください。これに対し、グローバル・スタイル・セレクタは、下側と左右の境界線を指定するセレクタと、上側の境界線のスタイル・セレクタを提供します。

図B-1 Show Detail Frameのスタイル・セレクタによってスタイル設定される要素

図B-2では、要素の大部分がPanel Customizableのスタイル・セレクタによってスタイル設定されています。この図には、サブメニュー・コンテナ、サブメニュー・アイテム、およびマウスを置いたときに表示されるメニュー・アイテムとサブメニュー・アイテムは示されていません。Panel Customizableでは、contentスタイル・セレクタ(af|panelCustomizable::content-[light,medium,dark])は、下側、左側および右側のコンポーネント境界線のスタイルを設定することに注意してください。これに対し、グローバル・スタイル・セレクタは、下側と左右の境界線を指定するセレクタと、上側の境界線のスタイル・セレクタを提供します。

図B-2 Panel Customizableのスタイル・セレクタによってスタイル設定される要素

この項には次のサブセクションが含まれます:

- グローバル・スタイル・セレクタ

- コンポーザ・ステータス・インジケータのスタイル・セレクタ

- Page Customizableのスタイル・セレクタ

- Layout Customizableのスタイル・セレクタ

- Panel Customizableのスタイル・セレクタ

- Show Detail Frameのスタイル・セレクタ

B.4.1.1 グローバル・スタイル・セレクタ

グローバル・スタイル・セレクタは、アプリケーション内の複数のコンポーネントのスタイルを定義する場合に使用します。表B-17では、コンポーザ・コンポーネントに関連するグローバル・スタイル・セレクタを列挙して説明しています。

図B-1に、グローバル・スタイル・セレクタによってスタイル設定される要素を示します。

図B-3 グローバル・スタイル・セレクタによってスタイル設定される要素

表B-17 グローバル・スタイル・セレクタ

スタイル・セレクタ

説明

.ComposerDark:alias

darkの色スキームを使用して、コンポーザ内のツールバーやヘッダーなどのデフォルト色を指定します。

.ComposerLight:alias

lightの色スキームを使用して、コンポーザ内のツールバーやヘッダーなどのデフォルト色を指定します。

.ComposerBackground

コンポーザのダイアログの色スキームを指定します(「コンポーネント・プロパティ」ダイアログや「ページ・プロパティ」ダイアログなど)。

.ComposerBorder

コンポーザのダイアログの境界線や幅などを指定します(「コンポーネント・プロパティ」ダイアログや「ページ・プロパティ」ダイアログなど)。

.PEClickableImageAnchor:alias

表のセル内にクリック可能アイコンを表示するための別名。

インライン・モードの表示をサポートしているクリック可能なイメージを表示するために必要なCSSプロパティを指定します。たとえば、Show Detail Frameヘッダー上のすべてのアクション・アイコンの共通プロパティとしてこの別名を指定できます。デフォルトでは、この別名は、IEとFirefoxの両方についてインライン背景イメージを表示する必要のある、16x16イメージを使用するスタイル・セレクタに含まれています。カスタマイズするには、この別名をお使いのセレクタに含めて、そのプロパティを指定変更します。たとえば、異なる高さと幅のイメージのファイル・サイズや右側パディングを変更したり、ブロック・モードで表示するためにheight属性とwidth属性を使用してdisplay: blockを設定したりできます。

.ChildPanelFacetWarning

「コンポーネント・プロパティ」ダイアログで子ナビゲータに表示される警告メッセージのスタイルを指定します。

B.4.1.2 コンポーザ・ステータス・インジケータのスタイル・セレクタ

表B-18のスタイル・セレクタを使用して、コンポーザ・ツールバーにあるステータス・インジケータ・コンポーネントのスキンを設定します。

表B-18 ステータス・インジケータのスタイル・セレクタ

スタイル・セレクタ

説明

af|statusIndicator.ComposerStatus

ステータス・インジケータ・コンポーネントのスタイルを指定します。これを使用して、ステータス・インジケータの固定高さを指定できます。

af|statusIndicator.ComposerStatus::idle-icon

アイドル状態を表すアイコンを指定します。このアイコンは通常、サーバーとの通信が行われていないことを示す非アニメーション・アイコンです。

af|statusIndicator.ComposerStatus::processing-icon

処理状態を表すアイコンを指定します。このアイコンは通常、サーバーとの通信が行われていることを示すアニメーション・アイコンです。

af|statusIndicator.ComposerStatus::connecting-icon

アクティブ・データ・サービスが接続プロセスの最中であるときに表示されるアイコンを指定します。このアイコンは通常、アニメーション・アイコンです。

af|statusIndicator.ComposerStatus::connected-icon

アクティブ・データ・サービスが接続状態であるときに表示されるアイコンを指定します。このアイコンは通常は非アニメーション・アイコンであり、アイドル状態のアイコンと同じである場合があります。

af|statusIndicator.ComposerStatus::reconnecting-icon

アクティブ・データ・サービスの接続が切断されて再接続を試行中に表示されるアイコンを指定します。このアイコンは通常、アニメーション・アイコンです。

af|statusIndicator.ComposerStatus::disconnected-icon

アクティブ・データ・サービスが切断状態であるときに表示されるアイコンを指定します。このアイコンは通常、ユーザーが操作しないかぎりさらなる再接続の試行が行われないことを示すための非アニメーション・アイコンです。

B.4.1.3 Page Customizableのスタイル・セレクタ

表B-19のスタイル・セレクタを使用して、Page Customizableコンポーネントのスキンを設定します。

表B-19 Page Customizableのスタイル・セレクタ

スタイル・セレクタ

説明

af|pageCustomizable

親コンポーネントによってストレッチされていないときのPage Customizableコンポーネントのデフォルト・サイズを指定します。

af|pageCustomizable af|toolbox.ComposerToolbox

編集モードで表示されるダーク・グレーのメイン・ツールバーのスタイルを指定します。このツールバーには、編集中のページと各種のボタンに関するメッセージが含まれています。

af|pageCustomizable af|toolbox.ComposerToolbox af|panelGroupLayout.ComposerConcurrency

複数のユーザーが同じカスタマイズ・レイヤーで同じページを同時に編集しているときに、メイン・コンポーザ・ツールバーの下に表示される同時ツールバーのスタイルを指定します。

af|pageCustomizable af|toolbox.ComposerToolbox af|toolbar
af|pageCustomizable af|toolbox.ComposerToolbox af|toolbar::separator
af|pageCustomizable af|toolbox.ComposerToolbox af|toolbox::body
af|pageCustomizable af|toolbox.ComposerToolbox af|toolbox::body af|toolbox::row
af|pageCustomizable af|toolbox.ComposerToolbox af|toolbox::body af|toolbox::last-row
af|pageCustomizable af|toolbox.ComposerToolbox af|toolbox::body af|toolbox::row af|toolbox::leading-cell

ツールバー内の各種領域のスタイルを指定します。

af|pageCustomizable af|toolbox.ComposerToolbox af|commandToolbarButton::text
af|pageCustomizable af|toolbox.ComposerToolbox af|commandToolbarButton:hover
af|pageCustomizable af|toolbox.ComposerToolbox af|commandToolbarButton:depressed

コンポーザ・ツールバーのボタンのスタイルを指定します(「ページ・プロパティ」や「ページのリセット」など)。

af|pageCustomizable af|toolbox.ComposerToolbox af|menuBar::body
af|pageCustomizable af|toolbox.ComposerToolbox af|menuBar::body:rtl

ツールバー上の「表示」メニューの本体のスタイルを指定します。

af|pageCustomizable af|toolbox.ComposerToolbox af|menuBar af|menu::bar-item-text

「表示」メニューのテキストのスタイルを指定します。

af|pageCustomizable af|toolbox.ComposerToolbox af|menuBar af|menu::bar-item:highlighted

マウスでポイントされたときの「表示」メニューのスタイルを指定します。

af|pageCustomizable af|toolbox.ComposerToolbox af|menuBar af|menu::bar-item:depressed

クリックされたときの「表示」メニューのスタイルを指定します。

af|pageCustomizable af|toolbox.ComposerToolbox af|menuBar af|menu::bar-item-open-icon-style

「表示」メニューに表示されるドロップダウン・アイコンのスタイルを指定します。

af|pageCustomizable af|toolbox.ComposerToolbox af|menuBar af|menu:depressed af|menu::bar-item-open-icon-style

「表示」メニューのドロップダウン・アイコンがクリックされたときの、このアイコンのスタイルを指定します。

af|pageCustomizable af|toolbox.ComposerToolbox af|menuBar af|menu:highlighted af|menu::bar-item-open-icon-style

マウスでポイントされたときのドロップダウン・アイコンのスタイルを指定します。

af|pageCustomizable af|toolbar.SourceView

コンポーザの「構造」ビュー内のツールバーのスタイルを指定します。

af|pageCustomizable af|toolbar.SourceView af|menuBar

「構造」ビュー内のメニューバーのスタイルを指定します。

af|dialog.ComposerDialog::content-start
af|dialog.ComposerDialog::content-start:rtl
af|dialog.ComposerDialog::content
af|dialog.ComposerDialog::content:rtl
af|dialog.ComposerDialog::content-end

コンポーザ・ツールバー・ボタンを使用して起動するダイアログのスタイルを指定します。利用できるエイリアスは:rtlで、コンポーネントが右から左にレンダリングする必要がある場合に使用することができます。

af|pageCustomizable af|breadCrumbs.ComposerBreadcrumbs
af|pageCustomizable af|breadCrumbs.ComposerBreadcrumbsHidden:step

コンポーザのブレッドクラムのスタイルを指定します。

af|pageCustomizable:edit af|panelGroupLayout.ComposerSplitHorz
af|pageCustomizable:edit af|panelGroupLayout.ComposerSplitVert

水平方向または垂直方向に分割されたPanel Customizableコンポーネントのスタイルを指定します。通常はこれらのセレクタを使用して、水平方向の分割の場合は高さを指定し、垂直方向の分割の場合は幅を指定します。

af|pageCustomizable:edit, af|pageCustomizable:stretched

編集モードのPage Customizableコンポーネントのスタイルを指定します。

このセレクタを使用すると、編集モードでPage Customizableコンポーネントが常にストレッチされます。表示モードでは、このコンポーネントはフローされている場合はフローし、ストレッチされている場合はストレッチします。

af|pageCustomizable:printable

印刷可能モードのPage Customizableのスタイルを指定します。Page Customizableの高さと幅を抑制します。

af|pageCustomizable af|panelGroupLayout.ComposerCutComp af|tree::node-stamp-text

カットされたコンポーネントの周囲の点線境界線のスタイルを指定します。

B.4.1.4 Layout Customizableのスタイル・セレクタ

表B-20のスタイル・セレクタを使用して、Layout Customizableコンポーネントのスキンを設定します。

表B-20 Layout Customizableのスタイル・セレクタ

スタイル・セレクタ

説明

af|layoutCustomizable::menu:edit

編集モードの「レイアウトの変更」ボタンのスタイルを指定します。

af|layoutCustomizable::menu:edit af|commandImageLink::text
af|layoutCustomizable::menu:edit af|commandImageLink::text:hover

編集モードの「レイアウトの変更」ボタンのテキストのスタイルを指定します。

af|layoutCustomizable.AFStretchWidth

コンポーネントを水平方向にストレッチできる幅を指定します。

B.4.1.5 Panel Customizableのスタイル・セレクタ

表B-21のスタイル・セレクタを使用して、Panel Customizableコンポーネントのスキンを設定します。

注意:

表B-21の一部のスタイル・セレクタでは、light、mediumおよびdarkという3つの色スキームから選択できます。これらを使用して、CSS内に3つの固有の外観を定義し、Oracle JDeveloperのプロパティ・インスペクタのbackgroundプロパティを介して、使用するいずれかの外観を指定できます。コンポーネント・インスタンスのbackgroundプロパティに指定された値に応じて、スキンは、関連するスタイルを適用します。

表B-21 Panel Customizableのスタイル・セレクタ

スタイル・セレクタ

説明

af|panelCustomizable

コンポーネントのルート要素のスタイルを指定します。

af|panelCustomizable.PEStretched

ストレッチされたときのこのコンポーネントのスタイルを指定します。

af|panelCustomizable:edit

編集モードのコンテナのスタイルを指定します。

af|panelCustomizable:edit:drop-target

このコンポーネントとは別のコンポーネントをページにドラッグして、ドロップ先としてこのコンポーネントをマウスでポイントしたときの、このコンポーネントのスタイルを指定します。

af|panelCustomizable::edit-mode-content-style

「編集」アイコンと「削除」アイコンが配置された領域のスタイルを指定します。

af|panelCustomizable::add-icon-style
af|panelCustomizable::add-icon-style:active
af|panelCustomizable::add-icon-style:hover
af|panelCustomizable::add-icon-style:rtl

このコンポーネント上の「コンテンツの追加」ボタンのスタイルを指定します。

af|panelCustomizable::edit-icon-style
af|panelCustomizable::edit-icon-style:active
af|panelCustomizable::edit-icon-style:hover

このコンポーネント上の「編集」アイコンのスタイルを指定します。

af|panelCustomizable::delete-icon-style
af|panelCustomizable::delete-icon-style:active
af|panelCustomizable::delete-icon-style:hover

このコンポーネント上の「削除」アイコンのスタイルを指定します。

.PanelCustomizableDropProxy

このコンポーネントとは別のコンポーネントをページにドラッグして、ドロップ先としてこのコンポーネントをマウスでポイントしたときの、このコンポーネント内のプレースホルダー領域のスタイルを指定します。

af|panelCustomizable:edit:inline-selected
.p_AFActiveInlineEditableContainer af|panelCustomizable:edit:hover-target

Panel Customizableコンポーネント内のインライン編集可能サブツリー内のコンポーネントのスタイルを指定します。

af|panelCustomizable::add-icon-link
af|panelCustomizable::add-icon-link:active
af|panelCustomizable::add-icon-link:hover

Panel Customizableコンポーネント内の「追加」アイコンのスタイルを指定します。

af|panelCustomizable::addtab-icon-style
af|panelCustomizable::addtab-icon-style:active
af|panelCustomizable::addtab-icon-style:hover

Panel Customizableコンポーネント内の「タブの追加」アイコンのスタイルを指定します。

af|panelCustomizable::split-up-icon-style
af|panelCustomizable::split-up-icon-style:active
af|panelCustomizable::split-up-icon-style:hover
af|panelCustomizable::split-down-icon-style
af|panelCustomizable::split-down-icon-style:active
af|panelCustomizable::split-down-icon-style:hover
af|panelCustomizable::split-left-icon-style
af|panelCustomizable::split-left-icon-style:active
af|panelCustomizable::split-left-icon-style:hover
af|panelCustomizable::split-right-icon-style
af|panelCustomizable::split-right-icon-style:active
af|panelCustomizable::split-right-icon-style:hover

Panel Customizableコンポーネントを水平方向または垂直方向に分割するために使用できる、このコンポーネント上のアイコンのスタイルを指定します。

.PanelCustomizableDropProxy

Panel Customizableコンポーネント内にドラッグ・アンド・ドロップされている最中のコンポーネントのスタイルを指定します。

B.4.1.6 Show Detail Frameのスタイル・セレクタ

表B-22のスタイル・セレクタを使用して、ポートレットおよびShow Detail Frameコンポーネントのスキンを設定します。

Portal Frameworkアプリケーションでは、各ポートレットはポートレット・クロムを使用してレンダリングされます。ポートレット・クロムは、Show Detail Frameコンポーネントと同じクロム・レンダリング・メカニズムを共有します。したがって、Show Detail Frameに適用されるスタイル・セレクタおよびアイコン・セレクタはポートレット・クロムにも適用されます。つまり、Show Detail Frameコンポーネントのスタイルを定義するだけでなく、Show Detail Frameスタイル・セレクタおよびアイコン・セレクタを使用して、ポートレットのスタイルを定義します。

注意:

表B-22の一部のShow Detail Frameスタイル・セレクタでは、light、medium、darkおよびcore:defaultという色スキーム・オプションが用意されています。これらのオプションを使用して、CSS内の4種類の外観を定義できるとともに、これらのうち使用する外観をJDeveloperプロパティ・インスペクタのbackgroundプロパティを通じて指定できます。コンポーネント・インスタンスのbackgroundプロパティに指定された値に応じて、スキンは、関連するスタイルを適用します。

表B-22 Show Detail Frameのスタイル・セレクタ

スタイル・セレクタ

説明

af|showDetailFrame

コンポーネントのルート要素のスタイルを指定します。

af|showDetailFrame::container:light
af|showDetailFrame::container:medium
af|showDetailFrame::container:dark
af|showDetailFrame::container:core:default

このコンポーネント内のコンテンツが含まれた要素のスタイルを指定します。

af|showDetailFrame.p_AFStretched

このコンポーネントがストレッチされているときのルート要素のスタイルを指定します。

af|showDetailFrame::content
af|showDetailFrame::content:light
af|showDetailFrame::content:medium
af|showDetailFrame::content:dark
af|showDetailFrame::content:core:default

このコンポーネントのコンテンツ・リージョン向けに表示するためのスタイルを指定します。

af|showDetailFrame::header
af|showDetailFrame::header:light
af|showDetailFrame::header:medium
af|showDetailFrame::header:dark
af|showDetailFrame::header:core:default

ヘッダー要素のスタイルを指定します。この要素は、ヘッダー・テキスト、アイコンおよびアクションのリージョンを囲みます。

af|showDetailFrame::header-center
af|showDetailFrame::header-center:light
af|showDetailFrame::header-center:medium
af|showDetailFrame::header-center:dark
af|showDetailFrame::header-center:core:default

アイコン、タイトルおよび「アクション」メニューが含まれたコンポーネント・ヘッダー上のリージョンのスタイルを指定します。

af|showDetailFrame::header-start
af|showDetailFrame::header-start:rtl
af|showDetailFrame::header-start:light
af|showDetailFrame::header-start:light:rtl
af|showDetailFrame::header-start:medium
af|showDetailFrame::header-start:medium:rtl
af|showDetailFrame::header-start:dark
af|showDetailFrame::header-start:dark:rtl
af|showDetailFrame::header-start:core:default
af|showDetailFrame::header-start:core:default:rtl

ヘッダーの開始時に小さいキャップ状の領域のスタイルを指定します。利用できるエイリアスは:rtlで、コンポーネントが右から左にレンダリングする必要がある場合に使用することができます。

af|showDetailFrame::header-end
af|showDetailFrame::header-end:rtl
af|showDetailFrame::header-end:light
af|showDetailFrame::header-end:light:rtl
af|showDetailFrame::header-end:medium
af|showDetailFrame::header-end:medium:rtl
af|showDetailFrame::header-end:dark
af|showDetailFrame::header-end:dark:rtl
af|showDetailFrame::header-end:core:default
af|showDetailFrame::header-end:core:default:rtl

ヘッダーの終了時に小さいキャップ状の領域のスタイルを指定します。利用できるエイリアスは:rtlで、コンポーネントが右から左にレンダリングする必要がある場合に使用することができます。

af|showDetailFrame::footer-start
af|showDetailFrame::footer-start:rtl
af|showDetailFrame::footer-start:light
af|showDetailFrame::footer-start:light:rtl
af|showDetailFrame::footer-start:medium
af|showDetailFrame::footer-start:medium:rtl
af|showDetailFrame::footer-start:dark
af|showDetailFrame::footer-start:dark:rtl
af|showDetailFrame::footer-start:core:default
af|showDetailFrame::footer-start:core:default:rtl

フッターの開始時に小さいキャップ状の領域のスタイルを指定します。利用できるエイリアスは:rtlで、コンポーネントが右から左にレンダリングする必要がある場合に使用することができます。

af|showDetailFrame::footer-center
af|showDetailFrame::footer-center:light
af|showDetailFrame::footer-center:medium
af|showDetailFrame::footer-center:dark
af|showDetailFrame::footer-center:core:default

Show Detail Frameコンポーネントのフッター要素の中央リージョンのスタイルを指定します。

af|showDetailFrame::footer-end
af|showDetailFrame::footer-end:rtl
af|showDetailFrame::footer-end:light
af|showDetailFrame::footer-end:light:rtl
af|showDetailFrame::footer-end:medium
af|showDetailFrame::footer-end:medium:rtl
af|showDetailFrame::footer-end:dark
af|showDetailFrame::footer-end:dark:rtl
af|showDetailFrame::footer-end:core:default
af|showDetailFrame::footer-end:core:default:rtl

フッターの終了時に小さいキャップ状の領域のスタイルを指定します。利用できるエイリアスは:rtlで、コンポーネントが右から左にレンダリングする必要がある場合に使用することができます。

af|showDetailFrame::shadowbox
af|showDetailFrame::shadowbox:rtl
af|showDetailFrame::shadowbox_div1
af|showDetailFrame::shadowbox_div1:rtl
af|showDetailFrame::shadowbox_div2
af|showDetailFrame::shadowbox_div2:rtl

Show Detail Frameコンポーネントによって生じた影のスタイルを指定します。

af|showDetailFrame::toolbar
af|showDetailFrame::toolbar:rtl

Show Detail Frameコンポーネント上のフローティング・ツールバーのスタイルを指定します。

af|showDetailFrame::icon-style

当該コンポーネントでicon属性が設定されている場合は、Show Detail Frameヘッダー上のアイコンのスタイルを指定します。

af|showDetailFrame::header-text
af|showDetailFrame::header-text:rtl

コンポーネント・ヘッダー上で利用可能なタイトルのスタイルを指定します。利用できるエイリアスは:rtlで、コンポーネントが右から左にレンダリングする必要がある場合に使用することができます。

af|showDetailFrame::header-actions

コンポーネント・ヘッダー上の「アクション」メニューや「削除」などのアイコンのスタイルを指定します。

af|showDetailFrame::toolbar-container
af|showDetailFrame::toolbar-container:light
af|showDetailFrame::toolbar-container:medium
af|showDetailFrame::toolbar-container:dark
af|showDetailFrame::toolbar-container:core:default

フローティング・ツールバーのコンテナ要素のスタイルを指定します。使用可能な別名は、:light、:mediumおよび:darkです。

af|showDetailFrame::collapse-icon-style
af|showDetailFrame::collapse-icon-style:active
af|showDetailFrame::collapse-icon-style:hover
af|showDetailFrame::collapse-icon-style.PEDisplayNone

コンポーネント・ヘッダー上の「縮小」アイコンのスタイルを指定します。使用可能な別名は:activeと:hoverであり、これらを使用して、クリックされたときやマウスでポイントされたときの「縮小」アイコンのスタイルを指定できます。

PEDisplayNoneを使用して、「縮小」アイコンを非表示にできます。

af|showDetailFrame::disclose-icon-style
af|showDetailFrame::disclose-icon-style:active
af|showDetailFrame::disclose-icon-style:hover
af|showDetailFrame::disclose-icon-style.PEDisplayNone

コンポーネント・ヘッダー上の「公開」アイコンのスタイルを指定します。

PEDisplayNoneを使用して、「公開」アイコンを非表示にできます。

af|showDetailFrame::actionmenu-icon-style
af|showDetailFrame::actionmenu-icon-style:active
af|showDetailFrame::actionmenu-icon-style:hover

アクション・メニュー・アイコンのスタイルを指定します。このスタイルには、指定変更できる背景イメージがあります。

af|showDetailFrame::remove-icon-style
af|showDetailFrame::remove-icon-style:active
af|showDetailFrame::remove-icon-style:hover

「削除」アイコンのスタイルを指定します。

af|showDetailFrame::edit-icon-style
af|showDetailFrame::edit-icon-style:active
af|showDetailFrame::edit-icon-style:hover

「編集」アイコンのスタイルを指定します。

af|showDetailFrame::preview-icon-style
af|showDetailFrame::preview-icon-style:active
af|showDetailFrame::preview-icon-style:hover

「プレビュー」アイコンのスタイルを指定します。

af|showDetailFrame::edit-mode-content-style
af|showDetailFrame::edit-mode-content-style:light

「編集」アイコンと「削除」アイコンが配置された領域のスタイルを指定します。

af|showDetailFrame::edit-mode-edit-icon-style
af|showDetailFrame::edit-mode-edit-icon-style:active
af|showDetailFrame::edit-mode-edit-icon-style:hover

編集モードのコンポーネント・ヘッダー上の「編集」アイコンのスタイルを指定します。

af|showDetailFrame::edit-mode-remove-icon-style
af|showDetailFrame::edit-mode-remove-icon-style:active
af|showDetailFrame::edit-mode-remove-icon-style:hover

編集モードのコンポーネント・ヘッダー上の「削除」アイコンのスタイルを指定します。

af|showDetailFrame::edit-text-link
af|showDetailFrame::edit-text-link:rtl
af|showDetailFrame::edit-text-link:hover

このコンポーネントにRich Text Editorコンポーネントが子コンポーネントとして含まれている場合に、編集モードの「テキストの編集」リンクのスタイルを指定します。

af|showDetailFrame::resize
af|showDetailFrame::resize:rtl

このコンポーネント上のサイズ変更ハンドラのスタイルを指定します。使用可能な別名は:rtlであり、これはコンポーネントが右から左に表示される必要がある場合に使用できます。

af|showDetailFrame::content.PEWrapsRTE > af|richTextEditor af|toolbox > af|toolbox::body,
af|showDetailFrame::content.PEWrapsRTE > af|richTextEditor af|toolbox > af|toolbox::body > af|toolbox::row,
af|showDetailFrame::content.PEWrapsRTE > af|richTextEditor af|toolbox > af|toolbox::body > af|toolbox::last-row,
af|showDetailFrame::content.PEWrapsRTE > af|richTextEditor af|richTextEditor::content-input-container
af|showDetailFrame::content.PEWrapsRTE > af|richTextEditor af|richTextEditor::content-input,
af|showDetailFrame::content.PEWrapsRTE > af|richTextEditor af|richTextEditor::content-input-container
af|showDetailFrame::content:medium.PEWrapsRTE
af|showDetailFrame::content:light.PEWrapsRTE
af|showDetailFrame::content.PEWrapsRTE > af|richTextEditor af|toolbox

ネストされたRich Text Editorコンポーネントの周囲と内部の領域のスタイルを指定します。たとえば、Rich Text Editorコンポーネントの背景色を編集モードで透明にしたり、コンポーネントの周囲に境界線を表示したりできます。

af|showDetailFrame::content.PEStretched

Show Detail Frameコンポーネントのコンテンツがストレッチされるときの、その高さを指定します。

af|showDetailFrame::content.PEStretched:printable

印刷可能モードでShow Detail Frameのコンテンツの高さが制限されることを防止します。

af|showDetailFrame::dynamic-help-icon-container
af|showDetailFrame::dynamic-help-icon-container:rtl

コンポーネント・ヘッダー上のヘルプ・アイコン・コンテナのスタイルを指定します。

af|showDetailFrame::dynamic-help-icon-style
af|showDetailFrame::dynamic-help-icon-style:active
af|showDetailFrame::dynamic-help-icon-style:hover

コンポーネント・ヘッダー上の「ヘルプ」アイコンのスタイルを指定します。

.PEShowDetailFrameAnimIcon

このコンポーネント上でビジー・ステータスを表示するために使用されるアニメーション・アイコンを指定します(このコンポーネントを展開したときなど)。

.PEIconAndTextInHeading:alias
.PEIconAndTextInHeading:alias:rtl

コンポーネント・ヘッダー内のテキスト付きアイコンを表示するためのスタイルを指定します。

B.4.2 スタイル属性

表B-23では、JDeveloperプロパティ・インスペクタを通じてWebCenter Portalのカスタマイズ可能コンポーネントとコンポーザ・コンポーネントで使用できるスタイル属性のクイック・リファレンス情報を提供しています。ポートレットもこれらのスタイル属性を使用することに注意してください。

スタイル・プロパティの詳細は、次の場所にあるCSS仕様に関するページを参照してください:

http://www.w3.org/TR/CSS21/

表B-23 コンポーザおよびWebCenter Portalのカスタマイズ可能コンポーネントのスタイル属性

属性

説明

background-color

コンポーネントの背景色。色のリストから選択するか、「編集」アイコンをクリックしてカラー・パレットから選択します。

background-image

コンポーネントの背景に表示されるイメージ。親コンポーネントから継承するか、イメージを表示しないように選択します。あるいは、「編集」アイコンをクリックしてイメージを選択します。

background-repeat

背景イメージを繰り返すかどうか、およびその方法を指定します。次のうちから選択します。

- <none>: イメージを繰り返しません。

- no-repeat: イメージを繰り返しません。

- repeat: コンテナがいっぱいになるまでイメージを繰り返します。

- repeat-x: イメージを垂直方向ではなく水平方向に繰り返します。

- repeat-y: イメージを水平方向ではなく垂直方向に繰り返します。

- inherit: この設定を親コンポーネントから継承します。

border-color

コンポーネントを囲む境界線の色。色のリストから選択するか、「編集」アイコンをクリックしてカラー・パレットから選択します。

border-style

コンポーネントの周りに描く境界線のスタイル。次のうちから選択します。

- <none>: 境界線にスタイルを適用しません。

- none: 境界線を表示しません(ポートレットの境界線を非表示にするにはContentStyleプロパティでborder-style:noneを使用します。この属性をInlineStyleと組み合せて使用した場合は、ポートレットの境界線は非表示になりません。)

- hidden: 境界線を非表示にします。

- dotted: 境界線を点線として表示します。

- double: 境界線を二重線として表示します。

- groove: 境界線を溝線として表示します。

- ridge: 境界線を稜線として表示します。

- inset: 境界線を沈み線として表示します。

- outset: 境界線を浮き線として表示します。

- dashed: 境界線を破線として表示します。

- solid: 境界線を直線として表示します。

- inherit: 親コンポーネントから境界線スタイルを継承します。

border-width

コンポーネント境界線の濃さ。thick、mediumまたはthinを選択して境界線の太さを指定するか、またはinheritを選択して親コンポーネントから境界線の幅を継承します。あるいは、「編集」アイコンをクリックして、必要な測定単位で濃さを定義します。

color

コンポーネント・テキストの色。リストから選択するか、「編集」アイコンをクリックしてカラー・パレットから選択します。

font-family

コンポーネント・テキストのフォント・ファミリ(Arial、Helvetica、sans-serifなど)。この値は手動で入力してください。

font-size

コンポーネント・テキストのサイズ。次のうちから選択します。

- Choose Length: 必要な測定単位でfont-sizeの絶対値を指定します。

- Choose Percentage: ブラウザ用に指定された標準テキスト・サイズを基準にしたパーセンテージ値としてフォント・サイズを指定します。

- inherit: 親コンポーネントからフォント・サイズを継承します。

- large: 親コンポーネントに関連付けられたフォントよりも次に大きいサイズを選択します。

- larger: 親コンポーネントと関連付けられたフォントよりも大きいフォント・サイズに拡大します(largerはlargeよりも大きいサイズです)。

- medium: フォント・サイズを、親コンポーネントのデフォルトのフォント・サイズに設定します。

- small: フォント・サイズを、親コンポーネントのデフォルトのフォント・サイズよりも小さく設定します。

- smaller: フォント・サイズを、親コンポーネントのデフォルトのフォント・サイズよりも小さく設定します(smallerのほうがsmallよりも小さくなります)。

font-style

コンポーネント・テキストのフォント・スタイル。次のうちから選択します。

- <none>: フォントにスタイルを適用しません。

- normal: フォントはイタリックになりません。

- italic: フォントはイタリックです。

- oblique: フォント・ファミリに標準のイタリック・メンバーがない場合でも、フォントはイタリックのように傾斜します。

- inherit: 親コンポーネントからフォント・スタイルを継承します。

font-weight

コンポーネント・テキストの太さ。次のうちから選択します。

- <none>: コンポーネント・テキストのウェイト(太さ)を指定しません。

- normal: 親コンポーネントのデフォルト・フォント・ウェイトと同じウェイトを適用します。

- bold: コンポーネント・テキストを太字に設定します。

- bolder: コンポーネント・テキストをboldより濃く設定します。

- light: コンポーネント・テキストをnormalより薄く設定します。

- lighter: コンポーネント・テキストをlightより薄く設定します。

- 100–900: テキストの濃さの値を指定します。100は最も薄く、900が最も濃くなります。400が通常のウェイトで、700が太字になります。

- inherit: 親コンポーネントから濃さを継承します。

height

間隔は、連続したテキストの行の間に適用します(leadingとしても知られています)。次のいずれかを選択して、高さを指定します。

- Choose Length: 必要な測定単位で絶対値を指定します。

- Choose Percentage: 親コンポーネントに設定されている値に対するパーセンテージとして値を指定します。

- auto: 行の高さを自動的に設定します。通常、フォント・サイズよりも2ポイント大きくなります。

- inherit: 行の高さを親コンポーネントから継承します。

list-style-image

リスト・アイテムのインジケータとして使用するイメージ。list-style-typeを定義せずに、イメージを指定します。次のうちから選択します。

- inherit: 親コンポーネントからリスト・スタイル・イメージを継承します。

- none: リスト・アイテムのインジケータとしてイメージを使用しません。

または、「編集」アイコンをクリックして、イメージを選択します。

list-style-type

リストのアイテムに使用するインジケータのタイプ。list-style-imageを介してイメージを指定しない場合、これを使用します。

リストに表示された多数のスタイルから選択します。この中には、ブラウザのデフォルト・スタイルを使用することを示す<none>、親コンポーネントからlist-style-typeを継承することを示すinheritなどがあります。

margin

コンポーネント・テキストの周囲のスペースの境界線。次のうちから選択します。

- Choose Length: すべてのマージンに絶対値を指定します。

- Choose Percentage: 親コンポーネントのマージンに対するパーセンテージとして値を設定します。

- inherit: 親コンポーネントからマージン値を継承します。

- auto: ブラウザのデフォルトに従って、値を自動的に設定します。

padding

コンポーネントとそのマージンの間、またはコンポーネントとその境界線の間(境界線がある場合)の領域の大きさ。次のうちから選択します。

- Choose Length: 必要な測定単位で絶対値を指定します。

- Choose Percentage: 親コンポーネントに設定されているパディングに対するパーセンテージとして値を指定します。

- inherit: 親コンポーネントから値を継承します。

text-align

コンポーネント・テキストの水平方向の位置合せ。次のうちから選択します。

- <none>: ブラウザのデフォルトを使用します。

- left

- right

- center

- justify: すべての行が左右の同じポイントで始まって同じポイントで終わるように、テキストの位置を揃えます。

- auto: 値を左または右で自動的に適用します。

- inherit: 親コンポーネントから文字位置を継承します。

text-decoration

コンポーネント・テキストに適用する装飾値。次のうちから選択します。

- <none>: ハイパーリンクにブラウザのデフォルトを使用します。それ以外の場合、テキストを装飾しません。

- none: 装飾なし(ハイパーリンクの下線もなし)。

- underline: すべてのコンポーネント・テキストに下線を引きます。

- overline: すべてのコンポーネント・テキストに上線を引きます。

- line-through: すべてのコンポーネント・テキストの真ん中に線を引きます。

- blink: コンポーネント・テキストを点滅させます。

- inherit: 親コンポーネントからテキスト装飾を継承します。

vertical-align

コンポーネント・テキストの垂直方向の位置合せ。次のうちから選択します。

- Choose Length: 必要な測定単位で絶対値を指定します。

- Choose Percentage: 親コンポーネントに設定されている値に対するパーセンテージとして値を指定します。

- inherit: 親コンポーネントから値を継承します。

- baseline: テキスト行のベースライン上にテキストを配置します。

- middle: テキスト行の中央にテキストを配置します。

- text-bottom: テキスト行の最下部(ベースラインより下)にテキストを配置します。

- text-top: テキスト行の最上部(ベースラインより上)にテキストを配置します。

- sub: テキストをサブスクリプトとして設定します。

- super: テキストをスーパースクリプトとして設定します。

width

テキストの間隔。次のいずれかを選択して、幅を指定します。

- Choose Length: 必要な測定単位で絶対値を指定します。

- Choose Percentage: 親コンポーネントに設定されている値に対するパーセンテージとして値を指定します。

- auto: 行の高さを自動的に設定します。通常、フォント・サイズよりも2ポイント大きくなります。

- inherit: 行の高さを親コンポーネントから継承します。

B.5 カスタマイズ可能コンポーネント(HTML)のプロパティ

カスタマイズ可能コンポーネント(HTML)は、10.1.3.2.0リリースのカスタマイズ可能コンポーネントと機能的に類似しており、10.1.3.2.0リリースの移行済アプリケーション・ページにさらにカスタマイズ可能コンポーネントを追加するために使用できます。これらのカスタマイズ可能コンポーネントは、JDeveloperのカスタマイズ可能コンポーネント(HTML)タグ・ライブラリから使用できます。カスタマイズ可能コンポーネントをページに追加すると、特定の属性にデフォルト値が割り当てられて、残りの属性の値を必要に応じて設定できます。

カスタマイズ可能コンポーネントを使用すると、ユーザーはページ上の任意のコンポーネントを実行時に最小化または最大化したり、表示または非表示にしたり、移動したりできます。

注意:

カスタマイズ可能コンポーネント(HTML)ライブラリは、リリース10.1.3.2.0で作成されたアプリケーションをサポートするためにのみ使用できます。これらのコンポーネントを新しいアプリケーションに追加することはサポートされていません。

可能なかぎり、既存のアプリケーション内のカスタマイズ可能コンポーネント(HTML)を、それらに対応するリッチ版(コンポーザ・タグ・ライブラリ内のもの)に置き換えることをお薦めします。

B.5.1 Panel Customizable (HTML)コンポーネント

Panel Customizable (HTML)コンポーネントは、実行時にカスタマイズできるページ・コンテンツのコンテナとして使用します。Panel Customizable (HTML)内に追加されたコンポーネントは、最大化、最小化または再配置できます。

このコンポーネントは、子コンポーネントで実行時カスタマイズを行う場合にのみ使用します。コンテナによって設計時にコンポーネントを再配置することのみを希望する場合は、Panel Group LayoutのようなADF Facesコンテナを使用することをお薦めします。

表B-24では、Panel Customizable (HTML)コンポーネントの属性を説明しています。

表B-24 Panel Customizable (HTML)コンポーネントの属性

属性

タイプ

ELをサポートしているかどうか

説明

共通属性

id

String

いいえ

コンポーネントの識別子。識別子はHTMLで許容されている構文のサブセットに従う必要があります。

- 長さがゼロの文字列にすることはできません。

- 最初の文字はASCII文字(A-Z a-z)またはアンダースコア(_)である必要があります。

- 後続の文字は、ASCII文字または数字(A-Z a-z 0-9)、アンダースコア(_)、ダッシュ(-)である必要があります。

rendered

Boolean

はい

コンポーネントがレンダリングされるかどうかを指定します。falseに設定した場合、このコンポーネントに対する出力はありません(コンポーネントはレンダリングされず、クライアントで表示することができません)。

デフォルト値はtrueです。

レイアウト

値リスト

horizontal/vertical

はい

Panel Customizable (HTML)の子のレイアウト形態を指定します。

デフォルト値はverticalです。

layout属性の値に応じて、子コンポーネントは次のようなレイアウトで配置されます。

verticalを選択した場合、子コンポーネントは縦並びに表示され、レイアウト内で上下に移動できます。

horizontalを選択した場合、子コンポーネントは横並びに表示され、レイアウト内で左右に移動できます。

スタイル属性

styleClass

String

はい

このコンポーネントで使用するCSSスタイル・クラス。スタイル・クラスは、JSPXページやスキニングCSSファイルなどで定義できます。

inlineStyle

String

はい

このコンポーネントで使用するCSSスタイル。これは、基本的なスタイルの変更用です。inlineStyleは、コンポーネントのルートDOM要素に適用されるCSSスタイルのセットです。inlineStyleのCSSプロパティが目的のDOM要素に反映されない場合は、スキンを作成して、::labelや::icon-styleなどの特定のDOM要素を対象にしたスキニング・キーを使用する必要があります。

拡張属性

binding

String

はい

Beanにコンポーネント・インスタンスを格納するEL参照。この参照は、Backing Beanからコンポーネントへのプログラムによるアクセスを提供するため、またはコンポーネントの作成をBacking Beanに移すために使用できます。

例:

binding="#{yourManagedBean.Binding}"

カスタマイズ属性

customizationAllowed

Boolean

このコンポーネントに対するカスタマイズが可能かどうかを指定します。使用可能な値はtrueおよびfalseです。デフォルト値はtrueです。

customizationAllowedBy

String

カスタマイズを行うことが可能なロールを指定します。

その他の属性

customizationId

この属性は非推奨になりました。id属性を使用してください。

B.5.2 Show Detail Frame (HTML)コンポーネント

Show Detail Frame (HTML)コンポーネントをPanel Customizable (HTML)コンポーネント内に追加すると、ユーザーは子コンポーネントの最大化、最小化、移動、復元、削除などのカスタマイズを実行できるようになります。これらのカスタマイズを実行できるのは、Show Detail Frame (HTML)コンポーネントをPanel Customizable (HTML)コンポーネント内に追加した場合のみです。

表B-25では、Show Detail Frame (HTML)コンポーネントの属性を説明しています。

表B-25 Show Detail Frame (HTML)コンポーネントの属性

属性

タイプ

ELをサポートしているかどうか

説明

共通属性

id

String

いいえ

コンポーネントの識別子。識別子はHTMLで許容されている構文のサブセットに従う必要があります。

- 長さがゼロの文字列にすることはできません。

- 最初の文字はASCII文字(A-Z a-z)またはアンダースコア(_)である必要があります。

- 後続の文字は、ASCII文字または数字(A-Z a-z 0-9)、アンダースコア(_)、ダッシュ(-)である必要があります。

rendered

Boolean

はい

コンポーネントがレンダリングされるかどうかを指定します。falseに設定した場合、このコンポーネントに対する出力はありません(コンポーネントはレンダリングされず、クライアントで表示することができません)。

デフォルト値はtrueです。

text

String

はい

Show Detail Frame (HTML)コンポーネントのタイトル。

icon

String

はい

Show Detail Frameコンポーネントのヘッダーにアイコンを追加する場合は、この属性は使用するイメージのURIを指定します。

例:

icon="http://source-pc/images/accessability.gif"

注意: ドキュメント・ルートに格納されているイメージには、フルパスは必要ありません。例:

icon="detail.gif"

外観属性

text

String

はい

Show Detail Frame (HTML)コンポーネントのタイトル。

shortDesc

String

はい

コンポーネントの短い説明。このテキストは、通常、ツールチップ・ヘルプ・テキストを表示するためにユーザー・エージェントによって使用されます。この場合、ツールチップの動作はユーザー・エージェントによって制御されます。たとえば、Firefox 2では長いツールチップは切り捨てられます。フォーム・コンポーネントの場合、shortDescはノート・ウィンドウに表示されます。

icon

String

はい

Show Detail Frameコンポーネントのヘッダーにアイコンを追加する場合は、この属性は使用するイメージのURIを指定します。

例:

icon="http://source-pc/images/accessability.gif"

注意: ドキュメント・ルートに格納されているイメージには、フルパスは必要ありません。例:

icon="detail.gif"

background

値リスト

light/medium/dark

はい

スキンCSSと連係して、このShow Detail Frame (HTML)インスタンスの異なるルック・アンド・フィールを適用する手段を提供します。

デフォルト値はmediumです。

displayHeader

Boolean

はい

Show Detail Frame (HTML)のヘッダーを表示するかどうかを指定します。

デフォルト値はtrueです。

displayHeaderをfalseに設定して、このコンポーネントの一部のアクションを公開した場合は、マウスをコンポーネント領域に移動するとツールバーが表示されます。ツールバーには、選択可能なオプションのメニューを表示するドロップダウン・アイコンが含まれます。このツールバーは、コンポーネント上に選択可能なアクションがある場合にのみ表示されます。

また、ツールバー表示はisSeededInteractionAvailable属性の影響も受けます。isSeededInteractionAvailableのデフォルト値はfalseなので、ツールバーは表示されません。ツールバーを表示するには、isSeededInteractionAvailableをtrueに設定します。

expansionMode

値リスト

maximized/minimized/normal

はい

Show Detail Frame (HTML)のデフォルト状態。

デフォルトの表示モードはnormalです。

rendered

Boolean

はい

コンポーネントがレンダリングされるかどうかを指定します。falseに設定した場合、このコンポーネントに対する出力はありません(コンポーネントはレンダリングされず、クライアントで表示することができません)。

デフォルト値はtrueです。

アクション属性

showMoveAction

値リスト

menu/none

はい

「アクション」メニューに「移動」アクションを表示するかどうかを指定します。

デフォルト値はmenuです。

showMinimizeAction

値リスト

chrome/none

はい

ヘッダーに最小化アクションを表示するかどうかを指定します。

デフォルトはchromeです。

showMaximizeAction

値リスト

menu/none

はい

ヘッダーに最小化アクションを表示するかどうかを指定します。

デフォルト値はmenuです。

スタイル属性

contentStyle

String

はい

Show Detail Frame (HTML)コンテンツ領域に適用するCSSスタイル。CSSリリース2.0以上に準拠するスタイルを手動で入力します。

styleClass

String

はい

このコンポーネントで使用するCSSスタイル・クラス。スタイル・クラスは、JSPXページやスキニングCSSファイルなどで定義できます。

inlineStyle

String

はい

このコンポーネントで使用するCSSスタイル。これは、基本的なスタイルの変更用です。inlineStyleは、コンポーネントのルートDOM要素に適用されるCSSスタイルのセットです。inlineStyleのCSSプロパティが目的のDOM要素に反映されない場合は、スキンを作成して、::labelや::icon-styleなどの特定のDOM要素を対象にしたスキニング・キーを使用する必要があります。

動作属性

partialTriggers

String

はい

部分更新をトリガーするコンポーネントのID。このコンポーネントは、トリガー・コンポーネント上でリスニングします。トリガー・コンポーネントがなんらかの更新を発生させるイベントを受信した場合、このコンポーネントも更新されることをリクエストします。識別子はソース・コンポーネント(このコンポーネント)に対して相対的であり、NamingContainerで構成されている必要があります。コンポーネントがネーミング・コンテナ内にある場合、単一のコロンを使用するとページのルートから検索を開始でき、複数のコロンを使用するとNamingContainerを上方向に移動できます。たとえば、::を前に置くと、コンポーネントのネーミング・コンテナ(または、コンポーネントがネーミング・コンテナである場合にはそのコンポーネント自体)から出てそこから検索を開始します。:::を前に置くと、2つのネーミング・コンテナ(コンポーネントがネーミング・コンテナである場合にはそのコンポーネント自体も含まれる)から出てそこから検索を開始します。

disclosureListener

javax.el.MethodExpression

はい

開示リスナーへのメソッド参照。

開示状態が変更されると、開示イベントが起動されます。

拡張属性

binding

String

はい

Beanにコンポーネント・インスタンスを格納するEL参照。この参照は、Backing Beanからコンポーネントへのプログラムによるアクセスを提供するため、またはコンポーネントの作成をBacking Beanに移すために使用できます。

例:

binding="#{yourManagedBean.Binding}"

attributeChangeListener

javax.el.MethodExpression

はい

属性変更リスナーへのメソッド参照。属性変更イベントは、プログラムによるプロパティへの変更の場合は配信されません。アプリケーションの特定のリクエストなしでレンダラがプロパティを変更したときにのみ配信されます。属性変更イベントの例としては、クライアント側のサイズ変更をサポートした列の幅などがあります。

カスタマイズ属性

customizationAllowed

Boolean

このコンポーネントに対するカスタマイズが可能かどうかを指定します。使用可能な値はtrueおよびfalseです。デフォルト値はtrueです。

customizationAllowedBy

String

カスタマイズを行うことが可能なロールを指定します。

その他の属性

customizationId

この属性は非推奨になりました。id属性を使用してください。

これらの属性を設定するときに選択可能な「式ビルダー」オプションを使用すると、コンポーネント・インスタンスをマネージドBeanプロパティにバインドできます。

Show Detail Frameのファセット

Show Detail Frame (HTML)のファセットを使用して、Show Detail Frame (HTML)コンポーネントのカスタム・アクションを定義して表示できます。表B-26では、Show Detail Frame (HTML)コンポーネントでサポートされているカスタム・アクションを表示することを可能にするファセットについて説明しています。

表B-26 Show Detail Frame (HTML)のファセット

ファセット

説明

titleBarAction

アクションをShow Detail Frame (HTML)コンポーネントのタイトルと関連付ける場合に使用します。

additionalActions

Show Detail Frame (HTML)のヘッダーで使用可能なアクションのリストにアクションを追加する場合に使用されます。

JDeveloperの「構造」ウィンドウには、Show Detail Frame (HTML)コンポーネントで使用できるすべてのファセットが表示されます。ただし、UIコンポーネントが含まれているファセットのみがアクティブ化された状態で表示されます。

B.5.3 カスタマイズ可能コンポーネント(HTML)のスタイル・セレクタ

この項の表では、WebCenter Portalのカスタマイズ可能コンポーネントのスキンを設定するために使用できるスタイル・セレクタについて説明しています。

この項には次のサブセクションが含まれます:

- Panel Customizable (HTML)のスタイル・セレクタ

- Show Detail Frame (HTML)のスタイル・セレクタ

- プロパティ・キー

- アイコン・セレクタ

B.5.3.1 Panel Customizable (HTML)のスタイル・セレクタ

表B-27のスタイル・セレクタを使用して、Panel Customizable (HTML)コンポーネントのスキンを設定します。Panel Customizableコンポーネントに関連するアイコン・セレクタについては、第B.5.3.4項「アイコン・セレクタ」を参照してください。

表B-27 Panel Customizable (HTML)のスタイル・セレクタ

スタイル・セレクタ

説明

afh|panelCustomizable::no-header-content

コンポーネント・ヘッダーが無効になっているときに4つのコンポーネント境界線すべてに対してレンダリングされるスタイルを指定します。

B.5.3.2 Show Detail Frame (HTML)のスタイル・セレクタ

表B-28のスタイル・セレクタを使用して、Show Detail Frame (HTML)コンポーネントのスキンを設定します。

注意:

Show Detail Frameコンポーネントのスタイルを定義するだけでなく、Show Detail Frameのスタイル・セレクタおよびアイコン・セレクタを使用して、ポートレットのスタイルを定義します。

表B-28 Show Detail Frame (HTML)のスタイル・セレクタ

スタイル・セレクタ

説明

afh|showDetailFrame::header-top-border-light
afh|showDetailFrame::header-top-border-medium
afh|showDetailFrame::header-top-border-dark

コンポーネント・ヘッダーの上下の境界線のスタイルと、ヘッダーの背景色を指定します。

afh|showDetailFrame::container

コンポーネントのコンテナのスタイルを指定します。

afh|showDetailFrame::header-light
afh|showDetailFrame::header-medium
afh|showDetailFrame::header-dark

コンポーネントのヘッダーのテキストのスタイルを指定します。ヘッダーは通常、タイトルと、メニューや他のアクション・タイプへのリンクが含まれる、色付きのバナーです。

af|showDetailFrame::header-top-border-[light,medium,dark]スタイル要素を使用して、ヘッダーの背景色を定義します。アイコン・セレクタを使用して、コンポーネント・ヘッダー内で使用するアイコンと、ヘッダーの左側および右側の形状を指定します。

afh|showDetailFrame::content-light
afh|showDetailFrame::content-medium
afh|showDetailFrame::content-dar

コンポーネントの左右および下側の境界線のスタイルを指定します。

afh|showDetailFrame::main-menu-container

コンポーネントのメイン・メニュー・コンテナのスタイルを指定します。

afh|showDetailFrame::sub-menu-container

コンポーネントのサブメニュー・コンテナのスタイルを指定します。

afh|showDetailFrame::menu-item

コンポーネントのメイン・メニューの各アイテムのスタイルを指定します。

afh|showDetailFrame::menu-item:hover

コンポーネントのメイン・メニュー・アイテムがマウスでポイントされたときに表示するスタイルを指定します。

afh|showDetailFrame::sub-menu-item

コンポーネントのサブメニューの各アイテムのスタイルを指定します。

afh|showDetailFrame::sub-menu-item:hover

コンポーネントのサブメニュー・アイテムがマウスでポイントされたときに表示するスタイルを指定します。

afh|showDetailFrame::actions-image-separator

コンポーネントの「処理」、「最小化」および「リストア」アイコンの周りのパディングのサイズを指定します。

詳細は、第B.5.3.4項「アイコン・セレクタ」を参照してください。

afh|showDetailFrame::menu-item-separator

コンポーネントの「処理」メニューのコマンドまたはコマンド・グループを区切る線のスタイルを指定します。

デフォルトでは、セパレータは1本の太い線として表示されます。これを設定するには、border-topおよびborder-bottom要素を使用してセパレータのスタイルを設定します。カスタム・スキンを作成するユーザーは、これとは違う方法でセパレータのスタイルを設定できます。たとえば、ユーザーは、背景に色が付いた長方形バーとして表示されるセパレータを作成できます。

A.afh|showDetailFrame::title-clickable

コンポーネントのタイトルがリンクになっているときに、そのタイトルに対してレンダリングされるスタイルを指定します。

afh|showDetailFrame::no-header-content
afh|showDetailFrame::no-header-content-light
afh|showDetailFrame::no-header-content-medium
afh|showDetailFrame::no-header-content-dark

コンポーネント・ヘッダーが無効になっているときに4つのコンポーネント境界線すべてに対してレンダリングされるスタイルを指定します。

B.5.3.3 プロパティ・キー

プロパティ・キーを使用して、カスタム・メニュー・アイテムおよびコンポーネント・アクション・アイコンの表示を制御します。プロパティ・キーをカスタム・スキン内に含めても、スキンに基づいて生成されるCSS内にこれらのキーは反映されません。

つまり、スキンからプロセスを経て、CSSが生成されます。生成されたCSSは、アプリケーションによって消費されます。Panel CustomizableコンポーネントとShow Detail Frameコンポーネントのほとんどのスタイル・セレクタは、生成されたCSS内で表現されます。ただし、プロパティ・キーは例外です。プロパティ・キーは、他のコンポーネント・スタイル・セレクタと同様にアプリケーションに影響を与えますが、最終的な生成済CSS内には反映されません。

表B-29では、Panel CustomizableコンポーネントとShow Detail Frameコンポーネントに関連するプロパティ・キーを列挙して説明しています。

表B-29 Panel CustomizableコンポーネントとShow Detail Frameコンポーネントのプロパティ・キー

プロパティ・キー

説明

showDetailFrame {-ora-additional-actions-position-last:true}

コンポーネントの「アクション」メニューの生成済アクションの前または後に追加アクションを配置します。

生成済アクションの前に追加アクションを配置する場合は、falseに設定します。デフォルトでは、生成済アクションの後に追加アクションが配置されます。

デフォルト値はtrueです。

showDetailFrame {-ora-menu-icon-display:false}

Show Detail Frameの「アクション」メニューのコマンドの隣に、関連するアイコンを表示するかどうかを制御します。

「処理」メニューの各アクションの左側にアイコンを表示する場合は、trueに設定します。デフォルトでは、各アクションの左側にアイコンは表示されません。

デフォルト値はfalseです。

このプロパティ・キーがtrueに設定されているときに使用するアイコンの指定の詳細は、第B.5.3.4項「アイコン・セレクタ」を参照してください。

B.5.3.4 アイコン・セレクタ

アイコンが表示されるかどうかは、コンポーネントのora-menu-icon-displayプロパティ・キーがtrueかfalseのどちらに設定されているかで決まります。プロパティ・キーの詳細は、第B.5.3.3項「プロパティ・キー」を参照してください。

各アイコン・セレクタには、light、mediumおよびdarkのスキームがあります。これらを使用して、CSS内に3つの固有の外観を定義し、Oracle JDeveloperのプロパティ・インスペクタのbackgroundプロパティを介して、使用するいずれかの外観を指定できます。コンポーネント・インスタンスのbackgroundプロパティに指定された値に応じて、スキンは、関連するスタイルを適用します。

エラーなしで簡単に移入するには、すべてのアプリケーション・アイコンをPortal Frameworkアプリケーションのルート・フォルダの下に格納してください。

表B-30で説明しているセレクタは、Panel Customizable (HTML)コンポーネントとShow Detail Frame (HTML)コンポーネントで使用されるアイコンに適用されます。

表B-30 WebCenter Portalのカスタマイズ可能コンポーネントのアイコン・セレクタ

セレクタ

説明

showDetailFrame

showDetailFrame::light-ActionsIcon:alias
showDetailFrame::medium-ActionsIcon:alias
showDetailFrame::dark-ActionsIcon:alias

panelCustomizable

panelCustomizable::light-ActionsIcon:alias
panelCustomizable::medium-ActionsIcon:alias
panelCustomizable::dark-ActionsIcon:alias

このアイコンは、「処理」メニューを表します。「処理」メニューには、ユーザーがコンポーネントに対して実行できるアクションがリストされます。

Portal Frameworkアプリケーションでは、「アクション」アイコンは、コンポーネント・ヘッダーの右隅に表示されます。

showDetailFrame

showDetailFrame::light-MinimizeIcon:alias
showDetailFrame::medium-MinimizeIcon:alias
showDetailFrame::dark-MinimizeIcon:alias

panelCustomizable

panelCustomizable::light-MinimizeIcon:alias
panelCustomizable::medium-MinimizeIcon:alias
panelCustomizable::dark-MinimizeIcon:alias

このアイコンは、「最小化」オプションを表します。「最小化」を選択すると、コンポーネントのビューがウィンドウの陰影のように閉じます。

Portal Frameworkアプリケーションでは、「最小化」アイコンは、コンポーネント・ヘッダーの左側に表示されます。

showDetailFrame::light-ExpandIcon:aliasも参照してください。

showDetailFrame

showDetailFrame::light-MaximizeIcon:alias
showDetailFrame::medium-MaximizeIcon:alias
showDetailFrame::dark-MaximizeIcon:alias

これは、Show Detail Frame (HTML)コンポーネントのみに適用可能です。このコンポーネントのリッチ版では、最大化アイコンはサポートされていません。

このアイコンは、Show Detail Frame (HTML)コンポーネントをそのコンテナであるPanel Customizable (HTML)コンポーネントのディメンションに拡大する「最大化」オプションを表します。同じコンテナ内に複数のShow Detail Frame (HTML)コンポーネントが表示されている場合、いずれかのShow Detail Frame (HTML)コンポーネントが最大化されている間は、他のコンポーネントは表示されません。

Portal Frameworkアプリケーションでは、「最大化」アイコンは、コンポーネントの「アクション」メニューの「最大化」コマンドの左側に表示されます。

panelCustomizable

panelCustomizable::light-MaximizeIcon:alias
panelCustomizable::medium-MaximizeIcon:alias
panelCustomizable::dark-MaximizeIcon:alias

これは、Panel Customizable (HTML)コンポーネントのみに適用可能です。このコンポーネントのリッチ版では、どのようなアクションも提供されません。

このアイコンは、コンポーネント表示をコンテナのディメンションに拡大する「最大化」オプションを表します。同じコンテナ内の複数のコンポーネントが表示されている場合は、コンポーネントを最大化すると、他のコンポーネントは別の場所に移動されます。

Portal Frameworkアプリケーションでは、「最大化」アイコンは、コンポーネントの「アクション」メニューの「最大化」コマンドの左側に表示されます。

showDetailFrame

showDetailFrame::light-RestoreIcon:alias
showDetailFrame::medium-RestoreIcon:alias
showDetailFrame::dark-RestoreIcon:alias

panelCustomizable

panelCustomizable::light-RestoreIcon:alias
panelCustomizable::medium-RestoreIcon:alias
panelCustomizable::dark-RestoreIcon:alias

このアイコンは、最大化されたビューをデフォルトの表示モードに戻す「リストア」オプションを表します。

Portal Frameworkアプリケーションでは、「リストア」アイコンは、コンポーネントの「アクション」メニューの「リストア」コマンドの左側に表示されます。

showDetailFrame

showDetailFrame::light-ExpandIcon:alias
showDetailFrame::medium-ExpandIcon:alias
showDetailFrame::dark-ExpandIcon:alias

panelCustomizable

panelCustomizable::light-ExpandIcon:alias
panelCustomizable::medium-ExpandIcon:alias
panelCustomizable::dark-ExpandIcon:alias

「開く」アイコンは、最小化されているコンポーネントを開くアクションを表します。「開く」アイコンは、「最小化」アイコンと切り替わります。つまり、コンポーネントが最小化されている場合は「開く」アイコンが表示され、コンポーネントが開かれている場合は「最小化」アイコンが表示されます。

Portal Frameworkアプリケーションでは、「展開」アイコンは、コンポーネント・ヘッダーの左側に表示されます。

showDetailFrame

showDetailFrame::light-MoveIcon:alias
showDetailFrame::medium-MoveIcon:alias
showDetailFrame::dark-MoveIcon:alias

panelCustomizable

panelCustomizable::light-MoveIcon:alias
panelCustomizable::medium-MoveIcon:alias
panelCustomizable::dark-MoveIcon:alias

このアイコンは、ページ上の他のコンポーネントからの相対的なコンポーネント位置を変更できる、「移動」オプションを表します。

Portal Frameworkアプリケーションでは、「移動」アイコンは、コンポーネントの「アクション」メニューの「移動」コマンドの左側に表示されます。

showDetailFrame

showDetailFrame::light-MoveLeftIcon:alias
showDetailFrame::medium-MoveLeftIcon:alias
showDetailFrame::dark-MoveLeftIcon:alias

panelCustomizable

panelCustomizable::light-MoveLeftIcon:alias
panelCustomizable::medium-MoveLeftIcon:alias
panelCustomizable::dark-MoveLeftIcon:alias

このアイコンは、コンポーネント・サブメニューの「左へ移動」オプションを表します。「左へ移動」を選択すると、コンポーネントがページの左境界線に向かって水平に1ポジション移動します。たとえば、水平に並んだ3つのコンポーネントがあるとします。一番右のコンポーネントに対して「左へ移動」を選択します。すると、このコンポーネントが中央のコンポーネントになります。

Portal Frameworkアプリケーションでは、「左へ移動」アイコンは、コンポーネントの「アクション」メニューの「左へ移動」サブメニュー・アイテムの左側に表示されます。

showDetailFrame

showDetailFrame::light-MoveRightIcon:alias
showDetailFrame::medium-MoveRightIcon:alias
showDetailFrame::dark-MoveRightIcon:alias

panelCustomizable

panelCustomizable::light-MoveRightIcon:alias
panelCustomizable::medium-MoveRightIcon:alias
panelCustomizable::dark-MoveRightIcon:alias

このアイコンは、コンポーネント・サブメニューの「右へ移動」オプションを表します。「右へ移動」を選択すると、コンポーネントがページの右境界線に向かって水平に1ポジション移動します。たとえば、水平に並んだ3つのコンポーネントがあるとします。一番左のコンポーネントに対して「右へ移動」を選択します。すると、このコンポーネントが中央のコンポーネントになります。

Portal Frameworkアプリケーションでは、「右へ移動」アイコンは、コンポーネントの「アクション」メニューの「右へ移動」サブメニュー・アイテムの左側に表示されます。

showDetailFrame

showDetailFrame::light-MoveUpIcon:alias
showDetailFrame::medium-MoveUpIcon:alias
showDetailFrame::dark-MoveUpIcon:alias

panelCustomizable

panelCustomizable::light-MoveUpIcon:alias
panelCustomizable::medium-MoveUpIcon:alias
panelCustomizable::dark-MoveUpIcon:alias

このアイコンは、コンポーネント・サブメニューの「上へ移動」オプションを表します。「上へ移動」を選択すると、ページ上の他のコンポーネントからの相対的なコンポーネント位置が垂直に移動します。たとえば、垂直に並んだ3つのコンポーネントがあるとします。中央のコンポーネントに対して「上へ移動」を選択します。すると、このコンポーネントが一番上のコンポーネントになります。

Portal Frameworkアプリケーションでは、「上へ移動」アイコンは、コンポーネントの「アクション」メニューの「上へ移動」サブメニュー・アイテムの左側に表示されます。

showDetailFrame

showDetailFrame::light-MoveDownIcon:alias
showDetailFrame::medium-MoveDownIcon:alias
showDetailFrame::dark-MoveDownIcon:alias

panelCustomizable

panelCustomizable::light-MoveDownIcon:alias
panelCustomizable::medium-MoveDownIcon:alias
panelCustomizable::dark-MoveDownIcon:alias

このアイコンは、コンポーネント・サブメニューの「下へ移動」オプションを表します。「下へ移動」を選択すると、ページ上の他のコンポーネントからの相対的なコンポーネント位置が垂直に移動します。たとえば、垂直に並んだ3つのコンポーネントがあるとします。中央のコンポーネントに対して「下へ移動」を選択します。すると、このコンポーネントが一番下のコンポーネントになります。

Portal Frameworkアプリケーションでは、「下へ移動」アイコンは、コンポーネントの「アクション」メニューの「下へ移動」サブメニュー・アイテムの左側に表示されます。

showDetailFrame

showDetailFrame::light-HeaderLeftIcon:alias
showDetailFrame::medium-HeaderLeftIcon:alias
showDetailFrame::dark-HeaderLeftIcon:alias

panelCustomizable

panelCustomizable::light-HeaderLeftIcon:alias
panelCustomizable::medium-HeaderLeftIcon:alias
panelCustomizable::dark-HeaderLeftIcon:alias

このアイコンは、コンポーネント・ヘッダーの左上隅にイメージを提供します。

showDetailFrame

showDetailFrame::light-HeaderRightIcon:alias
showDetailFrame::medium-HeaderRightIcon:alias
showDetailFrame::dark-HeaderRightIcon:alias

panelCustomizable

panelCustomizable::light-HeaderRightIcon:alias
panelCustomizable::medium-HeaderRightIcon:alias
panelCustomizable::dark-HeaderRightIcon:alias

このアイコンは、コンポーネント・ヘッダーの右上隅にイメージを提供します。

showDetailFrame

showDetailFrame::light-ToolbarLeftIcon:alias
showDetailFrame::medium-ToolbarLeftIcon:alias
showDetailFrame::dark-ToolbarLeftIcon:alias

panelCustomizable

panelCustomizable::light-ToolbarLeftIcon:alias
panelCustomizable::medium-ToolbarLeftIcon:alias
panelCustomizable::dark-ToolbarLeftIcon:alias

このアイコンは、コンポーネントのフェードイン/フェードアウト・ツールバーの左部分を提供します。

フェードイン/フェードアウト・ツールバーは、adfp:portletタグ属性isSeededInteractionAvailableがtrueに設定され、displayHeaderがfalseに設定されている場合に再生されます。

このツールバーには、本来はヘッダーに表示される「処理」メニューが含まれています。このツールバーを起動するには、ユーザーがコンポーネント・コンテンツ領域にマウスを置きます。

ページ設計が非常に単純であると、displayHeaderがfalseに、isSeededInteractionAvailableがtrueに設定されていても、フェードイン/フェードアウト・ツールバーが表示されないこともあります。

showDetailFrame

showDetailFrame::light-ToolbarRightIcon:alias
showDetailFrame::medium-ToolbarRightIcon:alias
showDetailFrame::dark-ToolbarRightIcon:alias

panelCustomizable

panelCustomizable::light-ToolbarRightIcon:alias
panelCustomizable::medium-ToolbarRightIcon:alias
panelCustomizable::dark-ToolbarRightIcon:alias

このアイコンは、コンポーネントのフェードイン/フェードアウト・ツールバーの右部分を提供します。

フェードイン/フェードアウト・ツールバーの詳細は、showDetailFrame::light-ToolbarLeftIcon:aliasの説明を参照してください。

showDetailFrame

showDetailFrame::light-ToolbarCenterIcon:alias
showDetailFrame::medium-ToolbarCenterIcon:alias
showDetailFrame::dark-ToolbarCenterIcon:alias

panelCustomizable

panelCustomizable::light-ToolbarCenterIcon:alias
panelCustomizable::medium-ToolbarCenterIcon:alias
panelCustomizable::dark-ToolbarCenterIcon:alias

このアイコンは、コンポーネントのフェードイン/フェードアウト・ツールバーの中央部分を提供します。

フェードイン/フェードアウト・ツールバーの詳細は、showDetailFrame::light-ToolbarLeftIcon:aliasの説明を参照してください。

showDetailFrame

showDetailFrame::light-EditIcon:alias
showDetailFrame::medium-EditIcon:alias
showDetailFrame::dark-EditIcon:alias

panelCustomizable

panelCustomizable::light-EditIcon:alias
panelCustomizable::medium-EditIcon:alias
panelCustomizable::dark-EditIcon:alias

このアイコンは、コンポーネント・メニューの「編集」オプションを表します。Portal Frameworkアプリケーションでは、「編集」アイコンは、コンポーネントの「アクション」メニューの「編集」メニュー・アイテムの左側に表示されます。

showDetailFrame

showDetailFrame::light-HelpIcon:alias
showDetailFrame::medium-HelpIcon:alias
showDetailFrame::dark-HelpIcon:alias

panelCustomizable

panelCustomizable::light-HelpIcon:alias
panelCustomizable::medium-HelpIcon:alias
panelCustomizable::dark-HelpIcon:alias

このアイコンは、コンポーネント・メニューの「ヘルプ」オプションを表します。Portal Frameworkアプリケーションでは、「ヘルプ」アイコンは、コンポーネントの「アクション」メニューの「ヘルプ」メニュー・アイテムの左側に表示されます。

C リソース・カタログのプロパティおよびファイル

この付録では、デフォルトのカタログ定義ファイルの構成、場所および属性について説明します。

内容は次のとおりです。

- 第C.1項「カタログ定義の構成および場所」

- 第C.2項「XMLスキーマ」

- 第C.3項「カタログ定義の属性」

- 第C.4項「カタログへの動的リソースの追加に使用可能なファクトリ・クラス」

この情報は、第III部「アプリケーションのカスタマイズとカスタマイズ・オプションの拡張」で説明されているタスクの実行時に役立ちます。

リソース・カタログの詳細は、第14章「リソース・カタログの開発」を参照してください。

C.1 カタログ定義の構成および場所

adf-config.xmlファイルのrcv-configセクションは、デフォルトのカタログの名前を定義します。rcv-config要素は、アプリケーションのデフォルトではadf-config.xmlファイル内で使用できません。デフォルト・カタログの名前を変更する場合や、複数のカタログを実装する場合には、これを追加する必要があります。

<rcv:rcv-config>
<rcv:catalog-selector class-name=""/>
<rcv:default-catalog catalog-name="/oracle/webcenter/portalapp/catalogs/default-catalog.xml"/></rcv:rcv-config>

リソース・カタログ・サービスは、resource-catalog-rootディレクトリでMDSにカタログ定義ファイルを格納します。resource-catalog-rootはMDSネームスペースとして定義され、したがって、正確な場所はMDS構成によって異なります。デフォルトのresource-catalog-rootは、adf-config.xmlのadf-rcs-config要素のdefault-scope属性によって定義されます。この属性は/に設定され、カタログIDが完全な修飾MDSパスとして表されることを意味します。

<rcs:adf-rcs-config>
<rcs:rcs-config>
<rcs:catalog-config default-scope="/"
default-registry="/oracle/webcenter/portalapp/catalogs/catalog-registry.xml"/>
. . .
<rcs:security-manager class-name="oracle.webcenter.portalframework.genericsiteresources.internal.security.CatalogSecurityManager"/>
</rcs:rcs-config>

security-manager要素は、セキュリティ・マネージャの実装を定義します。

C.2 XMLスキーマ

例C-1に、参照用のカタログ定義のXMLスキーマを示します。

例C-1 カタログ定義のXMLスキーマ

<xsd:schema elementFormDefault="qualified"
targetNamespace="http://xmlns.oracle.com/adf/rcs/catalog"
xmlns:rcs="http://xmlns.oracle.com/adf/rcs/catalog"
xmlns:md="http://xmlns.oracle.com/bali/xml/metadata"
xmlns:mds="http://xmlns.oracle.com/mds"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="1.0">

<xsd:annotation>
<xsd:appinfo>
<jaxb:schemaBindings>
<jaxb:package name="oracle.adfinternal.rc.catalog.xml"/>
</jaxb:schemaBindings>
</xsd:appinfo>
</xsd:annotation>

<!-- declare all elements as top-level elements so they appear in the
component palette pages generated by XMLEF -->

<!-- IMPORTANT: catalogDefinition & navigationModel CANNOT share a common type -->
<!--            MDS cannot handle it. -->
<xsd:element name="catalogDefinition" type="rcs:catalogDefinitionType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<!-- enable customization for navigation models -->
<xsd:element name="navigationDefinition" type="rcs:navigationDefinitionType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<!-- disable customization of the schema definition for both catalog & navigation models -->
<xsd:element name="schema" type="rcs:schemaType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="descriptor" type="rcs:descriptorType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="attributes" type="rcs:attributesType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="attribute" type="rcs:attributeType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
<!-- ### this marks "attributeId" attribute as "locally unique" within the <attributes> tag -->
<mds:localUniqueAttribute>attributeId</mds:localUniqueAttribute>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="parameters" type="rcs:parametersType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="parameter" type="rcs:parameterType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
<!-- ### this marks "id" attribute as "locally unique" within the <parameters> tag -->
<mds:localUniqueAttribute>id</mds:localUniqueAttribute>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="contents" type="rcs:contentsType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="folder" type="rcs:folderType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="resource" type="rcs:resourceType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="includeCatalog" type="rcs:includeCatalogType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="includeNavigation" type="rcs:includeNavigationType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="repository" type="rcs:repositoryType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="dynamicFolder" type="rcs:dynamicFolderType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="source" type="rcs:dynamicFolderSourceType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="customFolder" type="rcs:customFolderType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="component" type="rcs:componentType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="url" type="rcs:urlType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="customContent" type="rcs:customContentType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="separator" type="rcs:separatorType">
<xsd:annotation>
<xsd:appinfo>
<md:elementMetadata>
<mds:customizationAllowed>true</mds:customizationAllowed>
</md:elementMetadata>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:complexType name="descriptorType">
<xsd:attribute name="attributeId" type="xsd:string" use="required"/>
<xsd:attribute name="labelKey" type="xsd:string"/>
<xsd:attribute name="shortLabelKey" type="xsd:string"/>
<xsd:attribute name="helpTextKey" type="xsd:string"/>
<xsd:attribute name="hintTextKey" type="xsd:string"/>
<xsd:attribute name="searchable" type="xsd:boolean" default="true"/>
<xsd:attribute name="multivalue" type="xsd:boolean" default="false"/>
<xsd:attribute name="endUserVisible" type="xsd:boolean" default="true"/>
<xsd:attribute name="resourceBundle" type="xsd:string"/>
</xsd:complexType>

<xsd:complexType name="schemaType">
<xsd:sequence>
<xsd:element ref="rcs:descriptor" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="resourceBundle" type="xsd:string"/>
</xsd:complexType>

<xsd:complexType name="attributeType">
<xsd:attribute name="attributeId" type="xsd:string" use="required"/>
<xsd:attribute name="value" type="xsd:string" use="required"/>
<xsd:attribute name="isKey" type="xsd:boolean" default="false"/>
<xsd:attribute name="resourceBundle" type="xsd:string"/>
</xsd:complexType>

<xsd:complexType name="attributesType">
<xsd:sequence>
<xsd:element ref="rcs:attribute" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="resourceBundle" type="xsd:string"/>
</xsd:complexType>

<xsd:complexType name="parameterType">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="id" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>

<xsd:complexType name="parametersType">
<xsd:sequence>
<xsd:element ref="rcs:parameter" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="itemType">
<xsd:all>
<xsd:element ref="rcs:attributes" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="rcs:parameters" minOccurs="0" maxOccurs="1"/>
</xsd:all>
<xsd:attribute name="id" type="xsd:ID" use="required"/>
<xsd:attribute name="name" type="xsd:string"/>
<xsd:attribute name="description" type="xsd:string"/>
<xsd:attribute name="visible" type="xsd:string" default="true"/>
</xsd:complexType>

<xsd:complexType name="includeCatalogType">
<xsd:complexContent>
<xsd:extension base="rcs:itemType">
<xsd:attribute name="scope" type="xsd:string" use="required"/>
<xsd:attribute name="catalogId" type="xsd:string" use="required"/>
<xsd:attribute name="insertFolderContents" type="xsd:boolean" default="false"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="includeNavigationType">
<xsd:complexContent>
<xsd:extension base="rcs:itemType">
<xsd:attribute name="scope" type="xsd:string" use="required"/>
<xsd:attribute name="navigationId" type="xsd:string" use="required"/>
<xsd:attribute name="insertFolderContents" type="xsd:boolean" default="false"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="repositoryType">
<xsd:complexContent>
<xsd:extension base="rcs:itemType">
<xsd:attribute name="repository" type="xsd:string" use="required"/>
<xsd:attribute name="path" type="xsd:string"/>
<xsd:attribute name="includeSubfolders" type="xsd:boolean" default="true"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="dynamicFolderSourceType">
<xsd:attribute name="repository" type="xsd:string"/>
<xsd:attribute name="path" type="xsd:string"/>
<xsd:attribute name="includeSubfolders" type="xsd:boolean" default="true"/>
</xsd:complexType>

<xsd:complexType name="dynamicFolderType">
<xsd:complexContent>
<xsd:extension base="rcs:itemType">
<xsd:sequence>
<xsd:element ref="rcs:source" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="expression" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="customContentType">
<xsd:complexContent>
<xsd:extension base="rcs:itemType">
<xsd:attribute name="contentProviderClass" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="customFolderType">
<xsd:complexContent>
<xsd:extension base="rcs:itemType">
<xsd:attribute name="factoryClass" type="xsd:string" use="required"/>
<xsd:attribute name="path" type="xsd:string"/>
<xsd:attribute name="insertFolderContents" type="xsd:boolean" default="false"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<!-- this is a bit of a kludge. To keep MDS happy we must define a type -->
<!-- for separators even though they don't have any special attributes -->
<xsd:complexType name="separatorType">
<xsd:complexContent>
<xsd:extension base="rcs:itemType"/>
</xsd:complexContent>
</xsd:complexType>

<!-- implementation of filters has been deferred

<xsd:complexType name="filterType">
<xsd:complexContent>
<xsd:extension base="rcs:itemType">
<xsd:attribute name="expression" type="xsd:string"/>
<xsd:attribute name="filterClass" type="xsd:string"/>
<xsd:attribute name="scope" type="xsd:string" default="subtree"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
-->

<xsd:group name="folderContentGroup">
<xsd:choice>
<xsd:element name="folder" type="rcs:folderType"/>
<xsd:element name="repository" type="rcs:repositoryType"/>
<xsd:element name="resource" type="rcs:resourceType" />
<xsd:element name="dynamicFolder" type="rcs:dynamicFolderType" />
<xsd:element name="customFolder" type="rcs:customFolderType"/>
<xsd:element name="customContent" type="rcs:customContentType"/>
<xsd:element name="component" type="rcs:componentType"/>
<xsd:element name="url" type="rcs:urlType"/>
<xsd:element name="includeCatalog" type="rcs:includeCatalogType"/>
<xsd:element name="includeNavigation" type="rcs:includeNavigationType"/>
<xsd:element name="separator" type="rcs:separatorType"/>
</xsd:choice>
</xsd:group>

<xsd:complexType name="contentsType">
<xsd:group ref = "rcs:folderContentGroup" minOccurs="0" maxOccurs="unbounded" />
</xsd:complexType>

<!-- contents is optional to allow resourceType to extend folderType -->
<!-- most resources won't have children so the contents element should be optional -->
<xsd:complexType name="folderType">
<xsd:complexContent>
<xsd:extension base="rcs:itemType">
<xsd:all>
<!--      <xsd:element name="filter" type="rcs:filterType" minOccurs="0" maxOccurs="unbounded"/> -->
<xsd:element ref="rcs:contents" minOccurs="0" maxOccurs="1"/>
</xsd:all>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<!-- resourceType extends folderType to allow resource elements to have children -->
<xsd:complexType name="resourceType">
<xsd:complexContent>
<xsd:extension base="rcs:folderType">
<xsd:attribute name="repository" type="xsd:string" use="required"/>
<xsd:attribute name="path" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<!-- resourceType extends folderType to allow component elements to have children -->
<xsd:complexType name="componentType">
<xsd:complexContent>
<xsd:extension base="rcs:folderType">
<xsd:attribute name="factoryClass" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<!-- resourceType extends folderType to allow URL elements to have children -->
<xsd:complexType name="urlType">
<xsd:complexContent>
<xsd:extension base="rcs:folderType">
<xsd:attribute name="url" type="xsd:string" use="required"/>
<xsd:attribute name="factoryClass" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="catalogDefinitionType">
<xsd:complexContent>
<xsd:extension base="rcs:folderType">
<xsd:all>
<xsd:element ref="rcs:schema" minOccurs="0" maxOccurs="1"/>
</xsd:all>
<xsd:attribute name="contact" type="xsd:string"/>
<xsd:attribute name="definitionFilter" type="xsd:string"/>
<xsd:attribute name="resourceBundle" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="navigationDefinitionType">
<xsd:complexContent>
<xsd:extension base="rcs:folderType">
<xsd:all>
<xsd:element ref="rcs:schema" minOccurs="0" maxOccurs="1"/>
</xsd:all>
<xsd:attribute name="contact" type="xsd:string"/>
<xsd:attribute name="definitionFilter" type="xsd:string"/>
<xsd:attribute name="resourceBundle" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

</xsd:schema>

C.3 カタログ定義の属性

カタログ定義スキーマにより、リソース・カタログの構造およびコンテンツを指定できる豊富な要素のセットが提供されます。

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

- 第C.3.1項「catalogDefinition」

- 第C.3.2項「folder」

- 第C.3.3項「url」

- 第C.3.4項「includeCatalog」

- 第C.3.5項「component」

- 第C.3.6項「customFolder」

- 第C.3.7項「customContent」

- 第C.3.8項「attributes」

- 第C.3.9項「attribute」

- 第C.3.10項「parameters」

- 第C.3.11項「schema」

- 第C.3.12項「resource」

カスタム・カタログ定義ファイルを作成する方法の例は、第14.2項「リソース・カタログの作成」を参照してください。

C.3.1 catalogDefinition

catalogDefinition要素では、変換済の文字列の場所など、カタログの全体的な特性を定義します。

例C-2に、catalogDefinitionの使用方法を示します。

例C-2 catalogDefinitionの例

<catalogDefinition id="DefaultCatalog" visible="#{true}"
resourceBundle="portal.catalog.DefaultCatalogBundle"
definitionFilter="portal.catalog.DefaultCatalogFilter"
xmlns="http://xmlns.oracle.com/adf/rcs/catalog">

表C-1に、catalogDefinition要素のキーワードを示します。要素にタイトル、サブジェクト、説明などのattributesを指定する方法の詳細は、第C.3.8項「attributes」を参照してください。

表C-1 catalogDefinitionのキーワード

キーワード

説明

xmlns

http://xmlns.oracle.com/adf/rcs/catalog

id

このカタログ定義を参照する際に使用される識別子。

visible

リソース・カタログを実行時に選択できるようにする必要があるかどうかを指定します。この属性は、EL値を取得し、このカタログを特定のユーザーやグループに条件付で表示するために使用できます。デフォルトでの値は#{true}で、カタログは常時表示されます。

resourceBundle

<attribute.... isKey="true"/>の場合に、変換された属性値の取得に使用されるリソース・バンドルの名前。resourceBundle属性は、個々のattributes要素など、ドキュメントの下位レベルでも使用できます。詳細は、XSDを参照してください。

definitionFilter

oracle.adf.rc.spi.plugin.catalog.CatalogDefinitionFilterを実装するJavaクラスの完全修飾名。定義フィルタを使用して、実行時にカタログから動的にエントリを除外できます。定義フィルタの一般的な使用方法の1つでは、ロールの異なるユーザーに、同じカタログの異なるビューを用意します。たとえば、WebCenter Portalでは定義フィルタを使用して、管理者が無効化したサービスのエントリを非表示にします。

C.3.2 フォルダ

folder要素では、カタログのコンテンツの編成に使用されるカタログ・フォルダを定義します。フォルダには、その他のフォルダを含め、任意の数のエントリを含めることができます。同じフォルダに異なるタイプのカタログ要素を混在させることができます。

フォルダには、他のエントリと同様にattributesがあります。要素にattributesを指定する方法の詳細は、第C.3.8項「attributes」を参照してください。

例C-3に、folder要素の使用方法を示します。

例C-3 folderの例

<folder visible="#{true}" id="webDevFolder">
<attributes>
<attribute value="WEB_DEV_FOLDER.TITLE" attributeId="Title"
isKey="true"/>
<attribute value="WEB_DEV_FOLDER.DESCRIPTION" attributeId="Description"
isKey="true"/>
<attribute value="WEB_DEV_FOLDER.KEYWORDS" attributeId="Subject"
isKey="true"/>
<attribute value="/adf/webcenter/folderlayout_qualifier.png"
isKey="false" attributeId="IconURI"/>
</attributes>
<contents/>
<folder>

表C-2に、folder要素のキーワードを示します。

表C-2 folderのキーワード

キーワード

説明

id

このフォルダを参照する際に使用される一意の識別子。

visible

リソースをカタログに表示する必要があるかどうか。この属性はEL値を取り、条件付きで特定のユーザーまたはグループにリソースを表示するために使用できます。デフォルト値は#{true}で、これはリソースが常にすべてのカタログで表示されることを意味します。

カタログ定義のソースにコードを追加するよりも、カタログ定義ファイルの「設計」ビューにフォルダを追加する方が簡単な場合があります。詳細は、第14.3.4項「リソース・カタログにフォルダを追加する方法」を参照してください。

C.3.3 url

url要素は、カタログの次のタイプのリンクを定義するために使用します。

- タスク・フロー: WebCenter Portalのツールとサービス・タスク・フロー、またはJDeveloperで作成したカスタム・タスク・フローへのリンク。

- ポートレット: 登録済のポートレット・プロデューサへのリンク。

- コンテンツ: 既存のコンテンツ・リポジトリ接続からファイルまたはディレクトリへのリンク。

- その他: カスタム・コンポーネント(そのコンポーネントのXMLコードを提供することで作成します)へのリンク。

例C-4に、url要素の使用方法を示します。

例C-4 urlリソースの例

<url visible="#{true}"
factoryClass="oracle.webcenter.portalframework.sitestructure.rc.TaskFlowResourceFactory"
id="tagCloud"
url="taskflow://oracle/webcenter/tagging/controller/taskflows/tag-selection.xml#tag-selection">
<attributes>
<attribute value="TAG_CLOUD.TITLE" attributeId="Title" isKey="true"/>
<attribute value="TAG_CLOUD.DESCRIPTION" attributeId="Description"
isKey="true"/>
<attribute value="TAG_CLOUD.KEYWORDS" attributeId="Subject"
isKey="true"/>
<attribute value="oracle.webcenter.tagging"
attributeId="WEBCENTER_SERVICE_ID" isKey="false"/>
<attribute value="/adf/webcenter/label_qualifier.png"
attributeId="IconURI"/>
<attribute value="height:211px" attributeId="attr.contentStyle"
isKey="false"/>
</attributes>
<contents/>
</url>

表C-3に、url要素のキーワードを示します。

表C-3 urlのキーワード

キーワード

説明

id

このリンクを参照する際に使用される一意の識別子。

visible

リソースをカタログに表示する必要があるかどうか。この属性はEL値を取り、条件付きで特定のユーザーまたはグループにリソースを表示するために使用できます。デフォルト値は#{true}で、これはリソースが常にすべてのカタログで表示されることを意味します。

factoryClass

カスタム・コンポーネントを追加する場合には、コンポーネントのファクトリ・クラスを指定します。その他のすべてのリソース・タイプには、設計モードのタイプを選択した時点でFactory Class値が移入されます。

使用可能なリソース・タイプのファクトリ・クラスは、次のとおりです。

- タスク・フロー: oracle.webcenter.portalframework.sitestructure.rc.TaskFlowResourceFactory

- ポートレット: oracle.webcenter.portalframework.sitestructure.rc.PortletResourceFactory

- コンテンツ: oracle.webcenter.content.model.rc.ContentUrlResourceFactory

- データ・コントロール: oracle.webcenter.datacomposer.internal.adapter.datacontrol.DataControlContextFactory

url

ソースにアクセスするためのURL。リンク・タイプごとに、異なるURL形式がサポートされています。詳細は、表14-1を参照してください。

リソース・リンクでは、タイトル、サブジェクト、説明およびパラメータなどの属性を使用できます。詳細は、第C.3.8項「attributes」および第C.3.10項「parameters」を参照してください。

カタログ定義のソースにコードを追加するよりも、カタログ定義ファイルの「設計」ビューにリンクを追加する方が簡単な場合があります。詳細は、第14.3.3項「リソース・カタログにリンクを追加する方法」を参照してください。

C.3.4 includeCatalog

includeCatalog要素は、他のカタログ定義ファイルへの参照を組み込むために使用します。

例C-5に、includeCatalog要素の使用方法を示します。

例C-5 ネストされたリソース・カタログの例

<includeCatalog visible="#{true}" scope="/" id="users-catalog"
catalogId="/oracle/webcenter/portalapp/catalogs/users-catalog.xml">
<attributes>
<attribute value="catalog" isKey="false" attributeId="Title"/>
</attributes>
</includeCatalog>

includeCatalog要素は、catalogDefinition要素と同じキーワードをサポートします。includeCatalog要素のキーワードは表C-1を参照してください。

カタログには、タイトル、件名および説明などのattributesを含めることができます。要素にattributesを指定する方法の詳細は、第C.3.8項「attributes」を参照してください。

カタログ定義のソースにコードを追加するよりも、カタログ定義ファイルの「設計」ビューにカタログを追加する方が簡単な場合があります。詳細は、第14.3.8項「リソース・カタログを別のリソース・カタログに追加する方法」を参照してください。

C.3.5 component

component要素は、単純なADF Facesコンポーネントや通常のHTMLなどのカスタムXMLリソースをカタログに組み込むために使用します。component要素は、contentsセクション内に配置する必要があります。カタログ定義ファイルには複数のcomponent要素を追加できます。

component要素には、parameters要素とネストされたparameter要素が含まれている必要があります。parameter要素のidをxmlに設定します。このparameter要素内にXMLフラグメントを含めます。実行時にコンポーネントのADF Faces IDを生成するには、コンポーネントのIDを# (ハッシュ・シンボル)に設定します。

例C-6は、Boxコンポーネントをリソース・カタログに追加するコードを示しています。

例C-6 カタログ定義ファイルのPanel Customizableコンポーネント

<component id="pc" visible="#{true}"
factoryClass="oracle.adf.rc.component.XmlComponentFactory">
<attributes>
<attribute attributeId="Title" value="BOX" isKey="true"/>
<attribute attributeId="Description" value="BOX.DESCRIPTION"
isKey="true"/>
<attribute attributeId="Subject" value="BOX.KEYWORDS" isKey="true"/>
<attribute attributeId="IconURI"
value="/adf/webcenter/panelcustomizable_qualifier.png"/>
</attributes>
<parameters>  <parameter id="xml">&lt;cust:panelCustomizable id="#" xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable"/&gt;
</parameter></parameters>
</parameters>
</component>

表C-4に、component要素のキーワードを示します。要素にattributesを指定する方法の詳細は、第C.3.8項「attributes」を参照してください。

表C-4 componentのキーワード

キーワード

説明

id

カタログ定義内のコンポーネントの一意の識別子。

visible

リソースをカタログに表示する必要があるかどうか。この属性はEL値を取り、条件付きで特定のユーザーまたはグループにリソースを表示するために使用できます。デフォルト値は#{true}で、これはリソースが常にすべてのカタログで表示されることを意味します。

factoryClass

oracle.adf.rc.component.ComponentFactoryインタフェースを実装し、一連のパラメータに基づいてリソース・カタログ・アイテムを生成するJavaクラスの名前。各ComponentFactoryの実装は、必要とされる一連のパラメータを定義します。たとえば、XmlComponentFactoryはxmlという名前のパラメータを1つ要求し、このパラメータの値は、XMLのブロックで、ページに挿入可能な1つ以上のコンポーネントを表します。

カスタム・コンポーネントでは、タイトル、サブジェクト、説明およびパラメータなどの属性を使用できます。詳細は、第C.3.8項「attributes」および第C.3.10項「parameters」を参照してください。

カタログ定義ファイルの「設計」ビューにカスタム・コンポーネントを追加することが簡単な場合があります。詳細は、第14.3.5項「リソース・カタログにカスタム・コンポーネントを追加する方法」を参照してください。

C.3.6 customFolder

customFolder要素は、リソース・カタログ・アダプタを使用して生成されたコンテンツを定義します。この要素は、実行時に動的にコンテンツを移入するフォルダをレンダリングします。カタログには、フォルダ内リソースがない場合でもそのフォルダが表示されます。

例C-7に、分析サービスからタスク・フローをレンダリングするcustomFolder要素の使用方法を示します。

例C-7 customFolderリソースの例

<customFolder factoryClass="oracle.webcenter.analytics.view.rc.ASServiceContextFactory" id="analyticsServiceFolder" visible="#{true}">
<attributes resourceBundle="oracle.webcenter.spaces.resource.DefaultGroupSpaceCatalogBundle">
<attribute attributeId="Description" isKey="true" resourceBundle="oracle.webcenter.spaces.resource.DefaultGroupSpaceCatalogBundle" value="ANALYTICS_FOLDER.DESCRIPTION"/>
<attribute attributeId="IconURI" isKey="false" value="/adf/webcenter/folderanalytics_qualifier.png"/>
<attribute attributeId="Subject" isKey="true" resourceBundle="oracle.webcenter.spaces.resource.DefaultGroupSpaceCatalogBundle" value="ANALYTICS_FOLDER.KEYWORDS"/>
<attribute attributeId="WEBCENTER_SERVICE_ID" isKey="false" value="oracle.webcenter.analytics"/>
<attribute attributeId="attr.text" isKey="false" value="#{uib_o_w_s_r_DefaultGroupSpaceCatalog['ANALYTICS_FOLDER.TITLE']}"/>
<attribute attributeId="Title" isKey="true" resourceBundle="oracle.webcenter.spaces.resource.DefaultGroupSpaceCatalogBundle" value="ANALYTICS_FOLDER.TITLE"/>
</attributes>
<parameters/>
</customFolder>

表C-5に、customFolder要素のキーワードを示します。

表C-5 customFolderのキーワード

キーワード

説明

id

このフォルダを参照する際に使用される一意の識別子。

visible

リソースをカタログに表示する必要があるかどうか。この属性はEL値を取り、条件付きで特定のユーザーまたはグループにリソースを表示するために使用できます。デフォルト値は#{true}で、これはリソースが常にすべてのカタログで表示されることを意味します。

factoryClass

サービスのファクトリ・クラス。

サポートされているファクトリ・クラスに関する情報は、第C.4項「カタログへの動的リソースの追加に使用可能なファクトリ・クラス」を参照してください。

カスタム・フォルダでは、タイトル、サブジェクト、説明およびパラメータなどの属性を使用できます。詳細は、第C.3.8項「attributes」および第C.3.10項「parameters」を参照してください。

カタログ定義のソースにコードを追加するよりも、カタログ定義ファイルの「設計」ビューにカスタム・フォルダを追加する方が簡単な場合があります。詳細は、第14.3.6項「リソース・カタログにカスタム・フォルダを追加する方法」を参照してください。

C.3.7 customContent

customContent要素は、リソース・カタログ・アダプタを使用して生成されたコンテンツを定義します。この要素は、実行時に動的に生成されるリソースを含んだフォルダをレンダリングします。customFolder要素と違い、customContent要素は、フォルダ内にリソースがある場合にのみカタログ内のフォルダをレンダリングします。

例C-8に、customContent要素の使用方法を示します。

例C-8 customContentリソースの例

<customContent contentProviderClass="com.oracle.ensemble.interop.adf.EnsembleContentProvider"
id="ensembleContentProvider" visible="true">
<attributes resourceBundle="oracle.webcenter.spaces.resource.DefaultGroupSpaceCatalogBundle"/>
</customContent>

表C-6に、customContent要素のキーワードを示します。

表C-6 customContentのキーワード

キーワード

説明

id

このフォルダを参照する際に使用される一意の識別子。

visible

リソースをカタログに表示する必要があるかどうか。この属性はEL値を取り、条件付きで特定のユーザーまたはグループにリソースを表示するために使用できます。デフォルト値は#{true}で、これはリソースが常にすべてのカタログで表示されることを意味します。

contentProviderClass

oracle.adf.rc.spi.plugin.catalog.CustomContentProviderV2インタフェースを実装するクラスの完全修飾名。

カスタム・コンテンツ・プロバイダでは、タイトル、サブジェクト、説明およびパラメータなどの属性を使用できます。詳細は、第C.3.8項「attributes」および第C.3.10項「parameters」を参照してください。

カタログ定義のソースにコードを追加するよりも、カタログ定義ファイルの「設計」ビューにカスタム・コンテンツ・フォルダを追加する方が簡単な場合があります。詳細は、第14.3.7項「リソース・カタログにカスタム・コンテンツ・プロバイダを追加する方法」を参照してください。

C.3.8 attributes

リソース·カタログのエントリは、エントリを記述する属性が関連付けられています。いくつかの属性の値は、リソースから直接得られるか、または、カタログ定義の各XML要素のnameおよびdescription属性から得られます。ただし、これらの値は、エンドユーザーに表示するために適切でない可能性があり、異なる言語では利用できない場合があります。カタログ定義のattributes要素を使用して定義される属性を使用すると、他のソースから利用可能な属性をオーバーライドできます。さらに、これらの属性は、リソース・バンドルのキーの点から定義されているので、表示されている実際の値は現在のユーザーの場所を反映します。

attributes要素には、リソース・カタログ・エントリに適用する必要のある属性を定義する個別のattribute要素を必要なだけ挿入できます。

例C-9に、attributes要素の使用方法を示します。

例C-9 attributesおよびattribute要素の例

<attributes>
<attribute value="ANNOUNCEMENTS_MAIN_VIEW.TITLE" attributeId="Title"
isKey="true"/>
<attribute value="ANNOUNCEMENTS_MAIN_VIEW.DESCRIPTION" attributeId="Description"
isKey="true"/>
<attribute value="ANNOUNCEMENTS_MAIN_VIEW.KEYWORDS" attributeId="Subject"
isKey="true"/>
<attribute value="oracle.webcenter.collab.announcement"
attributeId="WEBCENTER_SERVICE_ID" isKey="false"/>
</attributes>

表C-7に、attributes要素のキーワードを示します。

表C-7 attributesのキーワード

キーワード

説明

resourceBundle

変換された属性値の取得に使用されるリソース・バンドルの名前。

C.3.9 attribute

attribute要素は、schema要素の記述子に対応するリソース・カタログ・エントリの属性を定義します。属性に関する詳細は、第C.3.8項「attributes」を参照してください。コンポーザは次の属性を使用します。

- 役職

- 説明

- Subject

- IconURI

- ToolTip

それぞれのカテゴリ・エントリには、少なくともTitleおよびDescription属性を組み込む必要があります。Subject属性も、リソース・カタログのキーワード検索を容易にするために特にお薦めします。Title属性は、親要素上のname属性をオーバーライドし、リソース・バンドルを介して変換される表示名の宣言に使用されます。同様に、Description属性は、親要素上のdescription属性をオーバーライドし、リソース・バンドルを介して変換される説明の宣言に使用されます。

schema要素に独自の属性を含めることで、それらを宣言できます。詳細は、第C.3.11項「schema」を参照してください。

例C-10に、attribute要素の使用方法を示します。

例C-10 attributesおよびattribute要素の例

<attributes>
<attribute value="ANNOUNCEMENTS_MAIN_VIEW.TITLE" attributeId="Title"
isKey="true"/>
<attribute value="ANNOUNCEMENTS_MAIN_VIEW.DESCRIPTION" attributeId="Description"
isKey="true"/>
<attribute value="ANNOUNCEMENTS_MAIN_VIEW.KEYWORDS" attributeId="Subject"
isKey="true"/>
<attribute value="oracle.webcenter.collab.announcement"
attributeId="WEBCENTER_SERVICE_ID" isKey="false"/>
</attributes>

表C-8に、attribute要素のキーワードを示します。

表C-8 attributeのキーワード

キーワード

説明

attributeId

schema要素に宣言される属性の識別子。

value

属性の値

isKey

値がリテラル値(false)であるかリソース・バンドルに対するキー(true)であるかを示すフラグ。多くの場合、属性はリソース・バンドル・キーの必要があり、値はリソース・バンドルを介して変換されます。リソース・バンドルは、カタログ・レベル、またはattributesなどの様々な下位レベル要素で宣言できます。

resourceBundle

変換された属性値の取得に使用されるリソース・バンドルの名前。

リソース・カタログに含まれるタスク・フローの場合、attribute要素を使用してタスク・フロー・パラメータと包含Show Detail Frameコンポーネントの属性を渡すことができます。これには、次の例のようにタスク・フロー・パラメータのattributeIdの値と、Show Detail Frame属性の先頭に、それぞれparameter.とattr.を付けます。

<attributes>
<attribute value="dark" attributeId="attr.background"
isKey="false"/>
<attribute value="#{myBean.myParam1}" attributeId="parameter.myParam1"
isKey="false"/>
</attributes>

詳細は、第14.7項「タスク・フロー・パラメータおよびタスク・フローを囲んでいるShow Detail Framesの属性の定義」を参照してください。

C.3.10 parameters

リンク、カスタム・コンポーネントおよびカスタム・フォルダなど、リソース・カタログのコンポーネントのいくつかでは、パラメータがサポートされています。パラメータは、カスタム・コンポーネント用にXMLコードを提供したり、リソースをアプリケーション内の他のアーティファクトにバインドするために使用します。parameters要素を使用して、リソースのパラメータを定義できます。parameters要素は、リソースのタグ内に配置する必要があります。各parameters要素では、複数のparameterタグを使用できます。定義するパラメータにはそれぞれIDと値を指定する必要があります。

カスタムXMLコンポーネントにパラメータを定義するとき、パラメータIDにxmlを指定し、値にはカスタム・コンポーネントのコードを指定する必要があります。コード内で、コンポーネントのIDは#にして、実行時に生成させる必要があります。さらに、コンポーネントのネームスペースを指定する必要があります。

例C-11に、カスタムXMLコンポーネントの定義におけるparameters要素の使用方法を示します。

例C-11 parametersおよびparameter要素の例

<parameters>  <parameter id="xml">&lt;cust:panelCustomizable id="#" xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable"/&gt;
</parameter></parameters>

C.3.11 schema

schemaには、1つ以上のdescriptor要素を指定します。descriptor要素は、カタログ内で使用される属性に関する情報(それらの属性が検索可能かどうかなど)とともに、リソース・カタログ・サービスを提供します。属性のTitle、Description、Subject、ToolTipおよびIconURIはリソースに対して最初からサポートされています。リソースで公開する他のカスタム属性を追加できます。

例C-12に、schema要素の使用方法を示します。

例C-12 schemaの例

<schema resourceBundle="oracle.adf.rc.attribute.nls.AttributeBundle"
xmlns="http://xmlns.oracle.com/adf/rcs/catalog">
<descriptor labelKey="TITLE.PROMPT_KEY" endUserVisible="true"
multivalue="false" searchable="true" attributeId="Title"
shortLabelKey="TITLE.SHORT_PROMPT_KEY"
xmlns="http://xmlns.oracle.com/adf/rcs/catalog"/>
<descriptor labelKey="DESCRIPTION.PROMPT_KEY" endUserVisible="true"
multivalue="false" searchable="true" attributeId="Description"
shortLabelKey="DESCRIPTION.SHORT_PROMPT_KEY"
xmlns="http://xmlns.oracle.com/adf/rcs/catalog"/>
<descriptor labelKey="SUBJECT.PROMPT_KEY" endUserVisible="true"
multivalue="false" searchable="true" attributeId="Subject"
shortLabelKey="SUBJECT.SHORT_PROMPT_KEY"
xmlns="http://xmlns.oracle.com/adf/rcs/catalog"/>
<descriptor labelKey="TOOL_TIP.PROMPT_KEY" endUserVisible="true"
multivalue="false" searchable="false" attributeId="ToolTip"
shortLabelKey="TOOL_TIP.SHORT_PROMPT_KEY"
xmlns="http://xmlns.oracle.com/adf/rcs/catalog"/>
<descriptor labelKey="ICON_URI.PROMPT_KEY" endUserVisible="false"
multivalue="false" searchable="false" attributeId="IconURI"
shortLabelKey="ICON_URI.SHORT_PROMPT_KEY"
xmlns="http://xmlns.oracle.com/adf/rcs/catalog"/>
</schema>

表C-9に、descriptor要素のキーワードを示します。

表C-9 descriptorのキーワード

キーワード

説明

attributeId

説明する属性の識別子。

searchable

リソース・カタログ検索に属性を含めるか(true)、含めないか(false)を示します。

multivalue

リソース・カタログ検索に属性を含めるか(true)、含めないか(false)を示します。

endUserVisible

エンド・ユーザーに属性を公開するか(true)、しないか(false)を示します。

resourceBundle

ラベル・キーの変換に使用されるリソース・バンドルの名前。

labelKey

属性のラベルのリソース・バンドル・キー。

shortLabelKey

ショート・ラベルのリソース・バンドル・キー。

C.3.12 resource

resource要素は、タスク・フローなど、個々のリソースをカタログに宣言する際に使用します。この要素は、「コンポーザ」のスタンドアロン・バージョン(WebCenter Portal Frameworkを使用しない「コンポーザ」)を使用する場合に必要になります。

注意:

url要素(第C.3.3項「url」を参照)を使用してカタログにリソースを宣言することもできます。ただし、urlが使用可能になるのは、WebCenter Portal Frameworkをインストール済で、共有ライブラリが関連付けられている場合のみです。

例C-13に、resource要素の使用方法を示します。

例C-13 resourceの例

<resource id="weatherTF"
repository="application.classpath"
path="TaskFlow.jar/ADF_TaskFlow/oracle+composer+internal+test+weather-tfdefn.xml#weather_tf_defn"      visible="#{true}">
<attributes>
<attribute value="/images/bulbgauge_ena.png" attributeId="IconURI"/>
<attribute value="never" attributeId="attr.showResizer"/>
<attribute value="Weather in Bangalore is rainy"
attributeId="parameter.message"/>
<attribute value="WeatherBee" isKey="false" attributeId="Title"/>
<attribute value="Displays the weather of your city" isKey="false"
attributeId="Description"/>
<attribute value="Weather widget" isKey="false" attributeId="ToolTip"/>
</attributes>
<parameters/>
</resource>

表C-10に、resource要素のキーワードを示します。要素にattributesを指定する方法の詳細は、第C.3.8項「attributes」を参照してください。

表C-10 resourceキーワード

キーワード

説明

id

カタログの要素の識別子。識別子は必須で、フォルダ・レベルで一意である必要があります。

repository

クラスパスに含まれるADFライブラリにアクセスするパス。

path

リソースへのパス。ADFライブラリ内のタスク・フローの場合は、パスは次の形式になります。

path_to_jar/ADF_TaskFlow/task_flow_path

task_flow_pathを取得するには、アプリケーション接続でファイル・システム接続を作成し、ADFライブラリ内のタスク・フローに移動します。タスク・フローのツールチップに、タスク・フローの完全修飾IDが表示されます。この値を取得し、/をすべて+に置き換えます。

例: 次のツールチップの場合

oracle/webcemter/collab/announcement/view/taskflows/main-view-definition.xml#announcement-main-view

task_flow_path:

oracle+webcenter+collab+announcement+view+taskflows+main-view-definition.xml#announcement-main-view

C.4 カタログへの動的リソースの追加に使用可能なファクトリ・クラス

リソース・カタログ・アダプタは、動的にカタログにリソース(たとえば、ユーザーに利用可能なすべてのコンテンツ・リポジトリ接続を表示するフォルダ)を追加するのに使用されます。カタログを作成するときにそのようなフォルダのコンテンツを決定することができないので、アダプタは、フォルダが動的に移入されることを確認します。アダプタを使用するには、リソースを追加する際に、リソース定義の一部としてファクトリ・クラスを指定する必要があります。

この項では、サポートされているファクトリ・クラスについて説明します。内容は次のとおりです。

- 第C.4.1項「XMLComponentFactory」

- 第C.4.2項「ContentUrlResourceFactory」

- 第C.4.3項「CustomFolderContextFactory」

- 第C.4.4項「DefaultFolderContextFactory」

- 第C.4.5項「ContentListFactory」

- 第C.4.6項「EnsembleContentProvider」

C.4.1 XMLComponentFactory

<component>構造内のoracle.adf.rc.component.XmlComponentFactoryクラスは、カタログにXMLコンポーネントを含めるために使用します。XmlComponentFactoryクラスはxmlという名前のパラメータを1つ要求し、このパラメータの値は、XMLのブロックで、ページに追加可能な1つ以上のコンポーネントを表します。次の例は、Panel Customizableコンポーネントをリソース・カタログに追加するコードを示しています。

<component id="pc" factoryClass="oracle.adf.rc.component.XmlComponentFactory">
<attributes>
<attribute attributeId="Title" value="Box"/>
<attribute attributeId="Description" value="Container for other objects"/>
<attribute attributeId="IconURI" value="/adf/webcenter/panelcustomizable_qualifier.png"/>
</attributes>
<parameters>
<parameter id="xml">
<cust:panelCustomizable id="#" xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable"/>
</parameter>
</parameters>
</component>

詳細な手順は、第14.3.5項「リソース・カタログにカスタム・コンポーネントを追加する方法」を参照してください。

C.4.2 ContentUrlResourceFactory

ContentUrlResourceFactoryクラスは、UCM接続からポータル・フレームワークのコンテンツを含めるために使用します。コンテンツ・タイプのURLリソースをカタログに追加するときに使用します。次の例では、ContentUrlResourceFactoryの使用方法を示しています。

<url id="contentItem"
factoryClass="oracle.webcenter.content.model.rc.ContentUrlResourceFactory"
url="content://UCM/PersonalSpaces/weblogic/content.xml">
<attributes>
<attribute value="Personal Document" isKey="false" attributeId="Title"/>
</attributes>
<parameters>
<parameter id="templateView">SpaceTemplate</parameter>
</parameters>
</url>

ここで、idはリソースの固有の識別子であり、urlはリソースへアクセスするURLです。ContentUrlResourceFactoryを使用する場合、URLはcontent:で始める必要があります。さらに、templateViewパラメータを追加することで、使用するコンテンツ・プレゼンタ表示テンプレートを指定できます。

詳細は、第14.3.3項「リソース・カタログにリンクを追加する方法」を参照してください。

C.4.3 CustomFolderContextFactory

ContentFolderContextFactoryクラスは、アプリケーションで使用可能なすべてのコンテンツ・リポジトリ接続をリストするために使用します。次の例に示すように、customFolderリソースをカタログに追加し、このファクトリ・クラスを指定できます。

<customFolder id="AllConnections"               factoryClass="oracle.webcenter.content.model.rc.CustomFolderContextFactory" />

カスタム・フォルダの詳細は、第14.3.6項「リソース・カタログにカスタム・フォルダを追加する方法」を参照してください。

C.4.4 DefaultFolderContextFactory

WebCenter Portalのコンテキストでは、DefaultFolderContextFactoryクラスが現在のポータルのフォルダをレンダリングするために使用されます。ユーザーがホーム・ポータル内にある場合、ユーザーの個人フォルダがレンダリングされます。次の例に示すように、customFolderリソースをカタログに追加し、このファクトリ・クラスを指定できます。

<customFolder id="GroupDocuments"
factoryClass="oracle.webcenter.doclib.model.rc.DefaultFolderContextFactory" />

カスタム・フォルダの詳細は、第14.3.6項「リソース・カタログにカスタム・フォルダを追加する方法」を参照してください。

C.4.5 ContentListFactory

ContentListFactoryクラスは、フォルダの動的リストをカタログに追加するために使用します。次の例に示すように、customFolderリソースをカタログに追加し、このファクトリ・クラスを指定できます。

<customFolder id="customFolder-folder" visible="#{true}" path=""
factoryClass="oracle.webcenter.content.model.rc.ContentListFactory">
<attributes>
<attribute attributeId="Title" value="Folders List" isKey="false"/>
</attributes>
<parameters>
<parameter id="datasource">UCM#dCollectionID:60</parameter>
<parameter id="datasourceType">dsTypeFolderContents</parameter>
</parameters>
</customFolder>

ContentListFactoryクラスでは、次のパラメータがサポートされます。

- datasource: コンテンツのデータソース。この値は、datasourceTypeの値に依存します。

- datasourceType: コンテンツのデータソース・タイプ。使用可能な値はdsTypeSingleNode、dsTypeFolderContents、dsTypeQueryExpression、dsTypeMultiNodeおよびdsTypeScenarioResultsです。

- templateView: 使用するコンテンツ・プレゼンタ表示テンプレートを指定します。

コンテンツ・プレゼンタを使用する方法の詳細は、第29章「ポータル・ページへのコンテンツ・タスク・フローおよびドキュメント・コンポーネントの追加」を参照してください。

C.4.6 EnsembleContentProvider

EnsembleContentProviderクラスは、すべての登録済ページレット・プロデューサを表示するために使用します。次の例に示すように、customContentリソースをカタログに追加し、このファクトリ・クラスを指定できます。

<customContent contentProviderClass="com.oracle.ensemble.interop.adf.EnsembleContentProvider"
id="ensembleContentProvider" visible="true">
<attributes resourceBundle="oracle.webcenter.spaces.resource.DefaultGroupSpaceCatalogBundle"/>
</customContent>

カスタム・コンテンツ・プロバイダの詳細は、第14.3.7項「リソース・カタログにカスタム・コンテンツ・プロバイダを追加する方法」を参照してください。

D コンポーザ対応のページで使用するタスク・フローの作成のガイドライン

この付録では、タスク・フロー・パラメータおよびカスタマイズとパーソナライズのオプションを実装することによって、アプリケーションでタスク・フローを作成および有効利用するためのガイドラインについて説明します。

内容は次のとおりです。

- 第D.1項「有効なジオメトリ管理とページ区切りのガイドライン」

- 第D.2項「タスク・フロー・パラメータおよびカスタマイズとパーソナライズのオプションを有効利用するためのガイドライン」

- 第D.3項「ガイドラインに従って作成したタスク・フローを使用するPortal Frameworkアプリケーションの例」

- 第D.4項「結論」

タスク・フローは、Oracle ADFの再利用可能な構成要素です。タスク・フローは、Oracle WebCenter Portalで標準提供されるほか、独自のタスク・フローを作成してPortal Frameworkアプリケーション・ページに追加することもできます。カスタマイズ可能なページ(コンポーザ対応のページ)にタスク・フローを追加した場合、実行時にそれらのタスク・フローをパーソナライズ、カスタマイズおよび編集できます。タスク・フローを設計する際は、Oracle WebCenter Portalの出版物で説明されているルールに従う必要があります。それを怠った場合、タスク・フローをポータル・ページで使用する際に、過剰な余白、過剰なスクロール・バー、または大きいサイズのデータ・セットを表示するときの遅い応答、不安定な応答および予期できない応答などの問題が発生する可能性があります。

これらの問題の発生を防ぎ、ルック・アンド・フィール、レイアウト設計および対話に関する一貫したユーザー・エクスペリエンスを提供するために、このドキュメントで説明する手順に従い、次を実現します。

- 高パフォーマンスなコスト効率の良いタスク・フローの作成

- タスク・フロー・パラメータおよびカスタマイズとパーソナライズのオプションを実装することによってアプリケーションでタスク・フローを有効利用

D.1 有効なジオメトリ管理とページ区切りのガイドライン

有効なジオメトリ管理を実施すると、ページでのタスク・フローのサイズ設定と配置を効率良く実行できます。タスク・フローが適切に設計されていない場合、応答時間が遅いページまたはコンポーネント間に不要なスクロール・バーや空白が大量に表示されるページが生成されます。たとえば、データをストレッチするコンテナ(Show Detail Frameコンポーネントなど)をタスク・フローで使用していて、そのコンテナの内部に非常に少量のデータしか存在しない場合、タスク・フローではデータの下に大量の空白が表示されます。設計が不適切な場合、大量のデータが表に表示されるタスク・フローで、スクロールが遅くなったり、予期しない動作を示したりする可能性もあります。これらの問題を避けるために、大量のデータ・セットを表示する際は必ず、従来のページ区切りモデルを使用するフロー・タスク・フローを設計してください。

Portal Frameworkアプリケーションの新しいタスク・フローを設計する際は、この項のガイドラインに従ってください。また、Portal Frameworkアプリケーションの既存のタスク・フローを編集する際も、必ずこの項のガイドラインに従ってください。

D.1.1 ガイドライン1: フロー・タスク・フローの作成

タスク·フローで不要な空白を回避するためには、タスク·フロー·コンテンツがフローし、タスク·フロー·コンテナによってストレッチされていないことを確認する必要があります。ストレッチ・タスク・フローは、コンテナの高さにストレッチされたもので、フロー・タスク・フローは、ストレッチ・コンテナやタスク・フロー自身の固定された高さではなく、そのコンテンツによって決定されます。データ量の少ないフロー・タスク·フローは、図D-1に示されているように、データ量の多いフロー・タスク・フローよりも短くなります。

図D-1 ストレッチ・タスク・フローとフロー・タスク・フローの違い

フロー・タスク・フローを設計するには、次のことを保証する必要があります。

- タスク・フローの子コンポーネントの高さが固定されていない。

- タスク・フロー・リージョンを囲むShow Detail Frameコンポーネントの高さが(そのcontentStyle属性を使用して)固定されていない。

次の2つの例は、タスク・フロー内でフロー・コンポーネントを使用する方法を示します。

D.1.1.1 例1: Oracle ADF FacesのTableコンポーネントのautoHeightRows属性が特定の値に設定されている場合

タスク・フロー内にOracle ADF FacesのTableコンポーネントを追加し、TableのautoHeightRows属性を特定の値に設定します。この属性を定義することによって、表の高さは、固定またはコンテナに合せてストレッチされる(ストレッチ動作)のではなく、コンテンツに従って調整されます(フロー動作)。autoHeightRows属性を設定することによって、表のデータは次のように表示されます。

- autoHeightRowsに値Hを設定した場合、表は最大H行まで表示されます。

- データ・ソースから返されるレコード数がH未満の場合、表の高さはその数に対応したものになります。

- レコードの数がHを超える場合、表にはH行のみ表示され、表示されていない行を表示するためのスクロールバーが表示されます。

- autoHeightRows属性が使用されない場合、表は、表示するデータ量に関係なく、デフォルトの固定高さで表示されます。

autoHeightRows属性を固定値に設定するかわりに、指定した論理に基づいて属性が設定されるようにEL値を指定することもできます。タスク・フローのカスタマイズとパーソナライズを可能にし、この属性の値を指定するオプションをユーザーに提供することができます。パーソナライズ・オプションを使用して指定された値は、カスタマイズ・オプションを使用して指定された値をオーバーライドします。

例D-1に、recent-pages-task-flow-definitionという名前のタスク・フロー内のサンプルADF Faces tableコンポーネントの属性を示します。autoHeightRows属性は、recentPagesBeanという名前のJava Beanを参照するEL式に設定されています。このBeanには、この属性をエンド・ユーザーによって(パーソナライズまたはカスタマイズとして)指定された値に設定する論理が含まれています。

例D-1 サンプルADF Faces TableのautoHeightRows属性

<af:table value="#{pageFlowScope.recentPagesBean.pages}"
var="row" rowBandingInterval="0" id="t1"
rowSelection="none" columnBandingInterval="0"
width="100%" inlineStyle="border:none;width:100%;"
columnStretching="last" horizontalGridVisible="true"
verticalGridVisible="false"
autoHeightRows="#{pageFlowScope.recentPagesBean.number_of_items_to_show_at_a_time}"
contentDelivery="immediate"
fetchSize="#{pageFlowScope.recentPagesBean.number_of_items_to_query}">
.
.
.
</af:table>

autoHeightRowsの値を指定するパーソナライズおよびカスタマイズのオプションを表示するサンプル・タスク・フローの詳細は、第D.3項「ガイドラインに従って作成したタスク・フローを使用するPortal Frameworkアプリケーションの例」を参照してください。

contentDelivery属性をimmediateに設定するなどの要件も含めたautoHeightRows属性の詳細は、Oracle Fusion Middleware Oracle ADF Facesタグ・リファレンスの<af:tableのタグの説明を参照してください。

D.1.1.2 例2: スクロール・レイアウトを使用するPanel Group Layout内のOracle ADF FacesのIteratorコンポーネント

タスク・フローにPanel Group Layoutコンポーネントを追加し、そのlayout属性をscrollに設定します。次に、Panel Group Layout内にIteratorを追加します。コンテンツは、Iterator内に追加します。Iteratorのコンテンツは、Panel Group Layout内に表示されます。

Panel Group Layoutの高さは、Iteratorのコンテンツの量に応じて決まるので、Panel Group LayoutのinlineStyle属性でmin-heightとmax-heightを使用してコンポーネントの最小高さと最大高さを指定します。

D.1.2 ガイドライン2: タスク・フローに表示されるレコード数の制限

タスク・フローで大量のデータ・セットをスクロールする際に応答が遅くなったり不安定になったりするのを避けるために、データ・ソースから一度にフェッチするレコード数を制限する必要があります。たとえば、タスク・フローでADF faces Tableコンポーネントを使用している場合、表に表示されるレコード数を制限します。TableのfetchSize属性を使用して、1回の問合せでデータ・ソースからフェッチするレコード数を指定します。フェッチ・サイズとしてNを指定した場合、データ・ソースからN件のレコードのみがクライアントに送信されます。

fetchSize属性とautoHeightRows属性の組合せにより、表に表示される行数が制御されます。これらの属性には次の関係があります。

- fetchSizeとautoHeightRowsが等しい場合、表にはすべてのレコードが表示されます。

- fetchSizeがautoHeightRowsより小さい場合、表にはfetchSizeの値までしか表示されません。

- fetchSizeがautoHeightRowsより大きい場合、autoHeightRowsの値と同じ数のレコードのみ表示するか、またはページ区切りコントロールを使用して残りのレコードを表示するかを決定できます。たとえば、タスク・フローの一番下に「詳細」リンクを追加するか、「前へ」リンクまたは「次へ」リンクを使用してページ区切りを使用することができます。詳細は、第D.3項「ガイドラインに従って作成したタスク・フローを使用するPortal Frameworkアプリケーションの例」を参照してください。

図D-2に、autoHeightRowsとfetchSizeの値が等しく5の場合と10の場合の2つのタスク・フローの違いを示します。タスク・フローは表示レコード数まで表示されます。

図D-2 フェッチ・サイズの値が異なるタスク・フローの違い

fetchSize属性を固定値に設定するかわりに、指定した論理に基づいて属性が設定されるようにEL値を指定することもできます。タスク・フローのカスタマイズとパーソナライズを可能にし、この属性の値を指定するオプションをユーザーに提供することができます。パーソナライズ・オプションを使用して指定された値は、カスタマイズ・オプションを使用して指定された値をオーバーライドします。

次の例に、recent-pages-task-flow-definitionという名前のタスク・フロー内のサンプルADF Faces Tableコンポーネントの属性を示します。fetchSize属性は、recentPagesBeanという名前のJava Beanを参照するEL式に設定されています。このBeanには、この属性をエンド・ユーザーによって指定されたカスタマイズ値に設定する論理が含まれています。

<af:table value="#{pageFlowScope.recentPagesBean.pages}"
var="row" rowBandingInterval="0" id="t1"
rowSelection="none" columnBandingInterval="0"
width="100%" inlineStyle="border:none;width:100%;"
columnStretching="last" horizontalGridVisible="true"
verticalGridVisible="false"
autoHeightRows="#{pageFlowScope.recentPagesBean.number_of_items_to_show_at_a_time}"
contentDelivery="immediate"
fetchSize="#{pageFlowScope.recentPagesBean.number_of_items_to_query}">
.
.
.
</af:table>

fetchSizeの値を指定するカスタマイズのオプションを表示するサンプル・タスク・フローの詳細は、第D.3項「ガイドラインに従って作成したタスク・フローを使用するPortal Frameworkアプリケーションの例」を参照してください。

fetchSize属性の詳細は、Oracle Fusion Middleware Oracle ADF Facesタグ・リファレンスの<af:tableのタグの説明を参照してください。

D.1.3 ガイドライン3: タスク・フローの最小高さの指定

第D.1.1項「ガイドライン1: フロー・タスク・フローの作成」で説明する1番目のガイドラインに従うことによって、タスク・フローがコンテンツの高さに制限されることを保証できます。

タスク・フローが、レコードが0件のときに完全に閉じたり、レコードが1-2件しかなくて短くなりすぎたりしないように、コンテンツの最小高さを指定します。

たとえば、タスク・フローの表のautoHeightRowsの値が指定されている場合、表のinlineStyle属性を使用してmin-height値を指定できます。

図D-3に、2行しかなくても適切な高さで表示されるタスク・フローを示します。

図D-3 最小高さが指定されているタスク・フロー

D.1.4 ガイドライン4: 表示制限を超えるデータにアクセスするためのUIの追加

タスク・フローで10件のレコードを表示していて、データ・ソースに100件のレコードが存在する場合、タスク・フロー内のデータの特徴に応じて次のいずれかを実行するようにタスク・フローを設計できます。

- 10件のレコードのみ表示
たとえば、人気のあるディスカッション・トピック・タスク・フローでは、人気のあるトピックの上位10件が表示されれば十分であり、それ以外はたとえ11番目に人気のあるトピックでもユーザーに見せる必要はないと判断する場合は、このオプションを使用できます。

- もっと多くのレコードを表示する機能を持つビューを開く「詳細」リンクをタスク・フローの最下行に表示
たとえば、「WebCenter Portal」ページのピープル・コネクション・タスク・フローには、最下行に「詳細」リンクが表示されます。

- 「前へ」リンクと「次へ」リンクのページ区切りコントロールの表示
たとえば、監視されたディスカッション・トピック・タスク・フローでは、ユーザーは通常監視しているすべてのトピックを参照するので、ページ区切りコントロールを表示できます。ページ区切りは、タスク・フローのデータが本質的に重要度でランク付けされるものでも様々な方法でソートできるものでもなく、データ・セットの任意のレコードにアクセスできることが重要視される場合に、一般的な選択肢です。ページ区切りコントロールは、コンテンツの性質に応じてコンテンツの上部または下部に配置できます。

図D-4は、fetchSizeが5の表を持つ「監視トピック」タスク・フローおよび「人気のトピック」タスク・フローを示しています。両方ともデータ・ソースに5件以上のレコードがあります。「監視トピック」タスク·フローは、下部にページ区切りのある5件のレコードを表示しますが、「人気のトピック」タスク·フローは、他のレコードを表示するUIオプションがない5件のみのレコードを表示します。

図D-4 ページ区切りコントロールが表示されるタスク・フローと表示されないタスク・フロー

ページ区切りの詳細

ページ区切りコントロールを作成する場合、次のようにすることをお薦めします。

- ページ区切りメッセージは1 to N of M [prev][next]という形式で追加します。

- ページ間をナビゲートする際に「前へ」リンクと「次へ」リンクが移動しないように、ページ区切り要素の位置を右揃えにします。

- 「前へ」オプションまたは「次へ」オプションは、必要ない場合は必ずグレー表示されるようにします。

ページ区切りコントロールの使用例は、第D.3項「ガイドラインに従って作成したタスク・フローを使用するPortal Frameworkアプリケーションの例」を参照してください。

次のパラメータを使用して、ページ区切りコントロールをカスタマイズできます。

- 「前へ」リンクと「次へ」リンクの位置

- 「前へ」リンクと「次へ」リンクのラベル(NewerとOlderなど)

- 「前へ」リンクと「次へ」リンクで使用するアイコン

- 「全ページ中の何ページから何ページまで」を表すために使用する単語または記号(1-5 of 100など)

- ランダム・アクセスを許可するオプション(Prev 1 2 3 ... Next Lastなど)

D.2 タスク・フロー・パラメータおよびカスタマイズとパーソナライズのオプションを有効利用するためのガイドライン

タスク・フローを作成する際、パラメータを作成して、タスク・フローをカスタマイズおよびパーソナライズできるオプションをユーザーに提供できます。特権ユーザーがコンポーザですべてのユーザーのタスク・フローをカスタマイズし(カスタマイズ)、タスク・フローのプロパティとパラメータを編集できるようにすることが可能です。すべてのユーザーがページを表示し、ページの表示をカスタマイズ(パーソナライズ)できるようにすることが可能です。この項では、タスク・フロー・パラメータおよびカスタマイズとパーソナライズのオプションを実装するためのガイドラインについて説明します。

表D-1に、ユーザーが使用できる様々なタスク・フロー編集オプションの概要を示します。

表D-1 タスク・フローの外観と動作を定義するために使用するオプション

オプション

説明

使用する状況

表示できるユーザー

パラメータ

タスク・フローのプログラムやそのコンテキストの設定に使用される、概念的なスカラー値の小セットです。各パラメータには、適切な表示名と説明を指定する必要があります(ありうる値と例が含まれる必要があります)。

タスク・フローの複数のインスタンスを追加できるように、市区町村コードまたはPINコードなどのコンテキストに使用します。各インスタンスは、異なる情報を表示するか、またはページからプログラムまたはURLを通じて受け取った値に応じて情報を表示するようにプログラミングされます。

WebCenter Portalでは、ポータル名などのコンテキストに対してパラメータを使用できます。

優先順位: 3

この値はタスク・フローの組込み値よりも優先されます。

編集権限またはカスタマイズ権限を持つユーザーは、ページの編集中に、コンポーザの「コンポーネント・プロパティ」ダイアログでパラメータを表示できます。

WebCenter Portalでは、モデレータは、タスク・フロー・パラメータを表示および編集できます。

タスク・フローがポートレットとして公開されている場合、ページ設計者はポートレットを設定する際にこれらのパラメータを表示できます。

カスタマイズ/プリファレンス

これら2つは同義です。カスタマイズは、通常、ビジネス・ユーザーがタスク・フローに加えた変更とみなされます。これらの変更は、ページのすべてのビューアに利用可能であり、タスク·フローで定義されたオプションの値の指定に使用されます。たとえば、ユーザーはドキュメントの作成者名や改定日を表示するかどうかを決めることができます。

プリファレンスは、タスクのコンテンツの定義と呼ばれます。たとえば、「ドキュメント・ビューア」タスク・フローの問合せ定義やOmniPortletの問合せがあります。

これらを使用するのは、ユーザーがタスク・フローの動作を定義できるようにするためのユーザー・インタフェースをタスク・フローに用意する必要がある場合です。すなわち、値リストまたはイメージやラジオ・ボタンなどの特定のUIコンポーネントを使用するとユーザーが作業しやすい場合や、複数ステップのウィザード・スタイルのインタフェースでタスク・フローを設定する場合です。

パラメータは単なるスカラー値であり、説明以外に何もないので、パラメータを使用する場合はそのような作業しやすくするためのサポートは得られません。

優先順位: 2

同一パラメータ値(ポータル名など)が存在する場合、その値よりもカスタマイズが優先されます。

ユーザーは、カスタマイズとプリファレンスのオプションを表示できます。

通常は、カスタマイズまたはプリファレンスのオプションは、編集モードでタスク・フローの周りに表示されるクロムで使用できます。ただし、ユーザーには、ページ表示モードでもクロムにこれらのオプションが表示されます。

タスク・フローがポートレットとして公開されている場合、ページ設計者はポートレットを設定する際にこれらを「デフォルトの編集」のオプションとして表示できます。

パーソナライズ

カスタマイズとプリファレンスのオプションのサブセット。カスタマイズ・オプションではないパーソナライズ・オプションを使用することはできません。

これらを使用して、ページを表示するすべてのユーザーがタスク・フローの視覚的要素やタスク・フローに表示するデータ量を調節することを許可します。たとえば、表示するアイテム数を設定できます。

優先順位: 1

同一カスタマイズ値(アイテム数など)が存在する場合、その値よりもパーソナライズが優先されます。

表示権限を持つすべてのユーザーがこれらのオプションを表示できます。

パーソナライズ・オプションは、タスク・フローの周りのクロムで使用できます。WebCenter Portalタスク・フローがポートレットとして公開されている場合、エンド・ユーザーはパーソナライズ・オプションを使用して、同じ視覚的要素を調整できます。

暗黙的パーソナライズ

セッション間でエンド・ユーザーに対して保持されるオプション。暗黙的パーソナライズ・オプションは、タスク・フローの周りのクロムには表示されませんが、タスク・フローの本体に対して直接実行できるアクションです。たとえば、ソートや列のサイズ変更は、暗黙的パーソナライズ・オプションです。

これらのオプションは、頻繁に変更するオプションにのみ、慎重に使用してください。列のサイズ変更やソートなどのオプションは、Oracle ADFから無償で使用できます。

ページに対する表示権限を持つすべてのエンド・ユーザーがパーソナライズを実行できます。

アプリケーションのパフォーマンスを高めるには、タスク・フローでパラメータおよびカスタマイズとパーソナライズのオプションを実装する際に、この項のガイドラインに従ってください。

D.2.1 タスク・フロー・パラメータを実装するためのガイドライン

(JDeveloperでの)デザインタイム中は、タスク・フロー定義XMLファイルでパラメータを定義することによって、パラメータを作成できます。実行時は、編集権限またはカスタマイズ権限を持つユーザーが、コンポーザの「コンポーネント・プロパティ」ダイアログでタスク・フロー・パラメータを編集できます。適切なユーザー・エクスペリエンスを提供するには、パラメータを作成する際に次のガイドラインに準拠する必要があります。

- わかりやすい表示名を指定します。

- パラメータごとに説明、例および指定できる値を提供します。

次の例に、タスク・フロー定義ファイルでlayoutStyleという名前のパラメータを定義するコードを示します。

<input-parameter-definition>
<name>layoutStyle</name>
<description> Used to control whether the documents must display as a list, with icons, or with document details.
Allowed values are list, icon, and detail.</description>
<display-name>Layout Style</display-name>
</input-parameter-definition>

D.2.2 カスタマイズを実装するためのガイドライン

編集権限またはカスタマイズ権限を持つユーザーは、タスク・フローの周りのクロムでカスタマイズ・オプションにアクセスできます。

タスク・フローにカスタマイズを実装する際、次のガイドラインに準拠する必要があります。

- カスタマイズ・オプションはタスク・フローのパラメータのサブセットである必要があります。

- タスク・フロー内にビュー・フラグメントを実装し、結果を公開してこのビューを別のダイアログで開きます。たとえば、ダイアログでadvancedEditPopupViewという名前のビューを起動する制御フロー・ルールは次のようになります。

<control-flow-case>
<from-outcome>dialog:advancedEditPopup</from-outcome>
<to-activity-id>advancedEditPopupView</to-activity-id>
</control-flow-case>

新しいタスク・フローでは、このガイドラインに従う必要があります。

- タスク・フロー内にビュー・フラグメントを実装し、結果を公開してこのビューのインラインに移行します。たとえば、同じ画面内でadvancedEditViewという名前のビューを起動する制御フロー・ルールは次のようになります。

<control-flow-case>
<from-outcome>advancedEdit</from-outcome>
<to-activity-id>advancedEditView</to-activity-id>
</control-flow-case>

この方法でもタスク・フローを実装できますが、結果を公開してダイアログでビューを開くことをお薦めします。

- アプリケーションによって設定されているMDSレベルにカスタマイズが保存されることを確認します。タスク・フロー・パラメータはタスク・フロー定義自体に格納されますが、カスタマイズはそれとは異なり、メタデータ記憶域(MDS)に保存されます。タスク・フローのカスタマイズを保存するMDSレイヤーを明示的に指定しない場合、カスタマイズ・メタデータとそれを使用するアプリケーション・メタデータが異なるレイヤーに格納される可能性があります。
カスタマイズがアプリケーション・メタデータと同じレイヤーに保存されることを保証するには、タスク・フローのプリファレンス・ファイルにアプリケーションのMDSセッションのクローンを作成し、カスタマイズを構成する際はそれを参照するようにする必要があります。この実装例は、第D.3項「ガイドラインに従って作成したタスク・フローを使用するPortal Frameworkアプリケーションの例」を参照してください。

D.2.3 パーソナライズを実装するためのガイドライン

ページを表示するすべてのユーザーは、ページ表示モードでタスク・フローの周りのクロムでパーソナライズ・オプションにアクセスできます。

タスク・フローにパーソナライズを実装する際、次のガイドラインに準拠する必要があります。

- パーソナライズ・オプションが、タスク・フローに定義されているカスタマイズ・オプションのサブセットであることを保証します。

- タスク・フローの重要な一面がドキュメント、ユーザー、リクエストなどのオブジェクトを表示することである場合、ユーザーが表示するオブジェクトの最大数を設定するためのパーソナライズ・オプションを追加する必要があります。

- タスク・フロー内にビュー・フラグメントを実装し、結果を公開してこのビューを別のダイアログで開きます。たとえば、ダイアログでsimpleEditPopupViewという名前のビューを起動する制御フロー・ルールは次のようになります。

<control-flow-case>
<from-outcome>dialog:simpleEditPopup</from-outcome>
<to-activity-id>simpleEditPopupView</to-activity-id>
</control-flow-case>

新しいタスク・フローでは、このガイドラインに従う必要があります。

- タスク・フロー内にビュー・フラグメントを実装し、結果を公開してこのビューのインラインに移行します。たとえば、同じ画面内でsimpleEditViewという名前のビューを起動する制御フロー・ルールは次のようになります。

<control-flow-case>
<from-outcome>simpleEdit</from-outcome>
<to-activity-id>simpleEditView</to-activity-id>
</control-flow-case>

この方法でもタスク・フローを実装できますが、このビューをダイアログとして開くように移行することをお薦めします。

- アプリケーションによって設定されているMDSレベルにパーソナライズが保存されることを確認します。タスク・フロー・パラメータはタスク・フロー定義自体に格納されますが、パーソナライズはそれとは異なり、MDSに保存されます。パーソナライズを保存するMDSレイヤーを明示的に指定しない場合、パーソナライズ・メタデータとアプリケーション・メタデータが異なるレイヤーに格納される可能性があります。
パーソナライズがアプリケーション・メタデータと同じレイヤーに保存されることを保証するには、タスク・フローのプリファレンス・ファイルにアプリケーションのMDSセッションのクローンを作成し、パーソナライズを構成する際はそれを参照するようにする必要があります。この実装例は、第D.3項「ガイドラインに従って作成したタスク・フローを使用するPortal Frameworkアプリケーションの例」を参照してください。

D.2.4 暗黙的パーソナライズを実装するためのガイドライン

ユーザーはタスク・フロー自体を使用する際、表の列のサイズ変更、ソートなどを通じて、暗黙的パーソナライズを実行します。この場合、パーソナライズ・オプションはダイアログからは起動されないので、ユーザーが実際はページをパーソナライズしていることに気付かない場合もあります。

暗黙的パーソナライズを実装する際、次のガイドラインに準拠してください。

- タスク・フローを暗黙的パーソナライズ属性でオーバーロードさせないでください。重要で頻繁に使用するいくつかの属性を選択して暗黙的として公開します。使用頻度の少ない属性や複雑な属性は、明示的パーソナライズで処理できます。

- ダイアログが起動されるような暗黙的パーソナライズは実装しないでください。暗黙的パーソナライズは、タスク・フロー自体の本体で実行される必要があります。

D.3 ガイドラインに従って作成したタスク・フローを使用するPortal Frameworkアプリケーションの例

このドキュメントのガイドとして、サンプルのPortal Frameworkアプリケーションが開発されています。RecentPagesという名前のこのサンプル・アプリケーションは、このドキュメントのガイドラインに準拠してほぼ完璧なタスク・フローを作成できることを示す例として使用します。RecentPagesアプリケーションに含まれるカスタマイズ可能なページWelcome.jspxには、必要なすべてのガイドラインに従って作成されたrecent-pages-taskflow-definitionという名前のタスク・フローが含まれています。

この項では、タスク・フローの実装方法の概要のみ説明します。タスク・フローとコンポーザの使用に関する詳細は、次の各ガイドを参照してください。

- タスク・フローの作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

- コンポーザでのタスク・フローの編集、カスタマイズおよびパーソナライズの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築を参照してください。

RecentPagesサンプル・アプリケーションは、OTN (http://webcenter.oracle.com)のOracle WebCenter Portal 11gのデモとサンプルのページからダウンロードできます。Oracle Composerのサンプルの中のSample Application with Optimal Task Flowsという名前のリンクをクリックします。

RecentPagesアプリケーションには、次のプロジェクトが含まれます。

- モデル・プロジェクト

- ポータル・プロジェクトRecentPagesTaskFlowと、そこに含まれるrecent-pages-task-flow-definitionタスク・フロー

- 別のポータル・プロジェクトWebPagesと、そこに含まれ、前述のタスク・フローを使用するJSPXページ

D.3.1 RecentPagesTaskFlowプロジェクト

このプロジェクトには、ガイドラインに従って作成されたタスク・フローが含まれます。このプロジェクトの重要なファイルは、次のとおりです。

- recent-pages-task-flow-definition.xmlファイル

- mainView.jsffフラグメント

- simpleEditPopupView.jspxページ

- advancedEditPopupView.jspxページ

- recentPagesBean Java Bean

- Preference Java Bean

D.3.1.1 recent-pages-task-flow-definition.xmlファイル

これは、mainView、simpleEditPopupViewおよびadvancedEditPopupViewの3つのビューを含むOracle ADFタスク・フロー定義です。このタスク・フローは、mainViewにアプリケーションで最近作成されたページのリストが表示され、simpleEditPopupViewにすべてのユーザー向けにパーソナライズ・オプションが表示され、advancedEditPopupViewに編集権限またはカスタマイズ権限を持つユーザー向けにカスタマイズ・オプションが表示されるように設計されています。

次の表では、recent-pages-task-flow-definition.xmlのコードを分割して、スニペットごとに説明します。

mainViewからsimpleEditPopupViewとadvancedEditPopupViewに渡される結果はそれぞれ、dialog:simpleEditPopupviewとdialog:advancedEditPopupViewと呼ばれます。これは、これらのビューがインラインではなく別のダイアログに表示されることを保証するためです。さらに、このタスク・フローは、mainViewで、「リフレッシュ」で最新の結果を表示したり、「前へ」および「次へ」で該当する結果を表示したりできます。simpleEditPopupViewビューとadvancedEditPopupViewビューでは、「保存」で結果を保存したり、「取消」で結果の表示を取り消したりできます。

表D-2では、recent-pages-task-flow-definition.xmlファイル内のコードの重要なセクションについて説明します。

表D-2 タスク・フロー定義ファイルのコードの様々なセクション

コード

説明

<default-activity>mainView</default-activity>

タスク・フローのデフォルト・ビューとしてmainViewを定義します。

<managed-bean>
<managed-bean-name>recentPagesBean</managed-bean-name>
<managed-bean-class>view.RecentPangesBean</managed-bean-class>
<managed-bean-scope>pageFlow</managed-bean-scope>
</managed-bean>

タスク・フロー定義に関連付けられているrecentPagesBean Java Beanを参照します。このBeanは、viewパッケージの一部として作成されています。

<view id="mainView">
<page>/mainView.jsff</page>
</view>
<view id="simpleEditPopupView">
<page>/simpleEditPopupView.jspx</page>
</view>
<view id="advancedEditPopupView">
<page>/advancedEditPopupView.jspx</page>
</view>

タスク・フローの各ビューをページまたはページ・フラグメントにマップします。たとえば、mainViewはmainView.jsffに関連付けられます。

<control-flow-rule>
<from-activity-id>mainView</from-activity-id>
<control-flow-case>
<from-outcome>refresh</from-outcome>
<to-activity-id>mainView</to-activity-id>
</control-flow-case>
<control-flow-case>
<from-outcome>dialog:simpleEditPoup</from-outcome>
<to-activity-id>simpleEditPopupView</to-activity-id>
</control-flow-case>
<control-flow-case>
<from-outcome>next</from-outcome>
<to-activity-id>mainView</to-activity-id>
</control-flow-case>
<control-flow-case>
<from-outcome>previous</from-outcome>
<to-activity-id>mainView</to-activity-id>
</control-flow-case>
<control-flow-case>
<from-outcome>dialog:advancedEditPopup</from-outcome>
<to-activity-id>advancedEditPopupView</to-activity-id>
</control-flow-case>
</control-flow-rule>

mainViewの制御フロー・ルールです。各制御フローでは、結果および対応するターゲット・ビューを定義します。

<control-flow-rule>
<from-activity-id>simpleEditPopupView</from-activity-id>
<control-flow-case>
<from-outcome>save</from-outcome>
<to-activity-id>mainView</to-activity-id>
</control-flow-case>
<control-flow-case>
<from-outcome>cancel</from-outcome>
<to-activity-id>mainView</to-activity-id>
</control-flow-case>
</control-flow-rule>

simpleEditPopupViewの制御フロー・ルールです。各制御フローでは、結果および対応するターゲット・ビューを定義します。

<control-flow-rule>
<from-activity-id>advancedEditPopupView</from-activity-id>
<control-flow-case>
<from-outcome>save</from-outcome>
<to-activity-id>mainView</to-activity-id>
</control-flow-case>
<control-flow-case>
<from-outcome>cancel</from-outcome>
<to-activity-id>mainView</to-activity-id>
</control-flow-case>
</control-flow-rule>

advancedEditPopupViewの制御フロー・ルールです。各制御フローでは、結果および対応するターゲット・ビューを定義します。

D.3.1.2 mainView.jsffフラグメント

図D-5に、アプリケーションで最近作成されたページのリストを表示します。実行時は、このリストは次のように表示されます。

図D-5 タスク・フローのmainViewフラグメント

このビュー・フラグメントの設計機能は、次のとおりです。

- autoHeightRows属性が表に定義され、表に表示されるアイテムの数を制御します。タスク・フローは表示されるアイテムの高さで制限されます。

- fetchSize属性が定義され、データ・ソースからフェッチして表に表示するアイテムの数を制御します。

- Items 1-4 of 25という形式でメッセージを表示するページ区切りコントロールが、「前へ」アイコンと「次へ」アイコンとともに追加されています。

表D-3では、mainView.jsffフラグメントのコードの重要なセクションについて説明します。

表D-3 mainViewフラグメント・コード

コード

説明

<af:panelGroupLayout id="pgl1" layout="vertical">
<af:outputText value="Shows recent pages in the application" id="ot1"/>

単一の最上位レベル・コンポーネント(Panel Group Layout)。このコンポーネントは、タスク・フローのコンテンツが垂直方向に流れ、常に水平方向にストレッチするように設計されています。これは、ジオメトリ管理を可能にします。

<af:table value="#{pageFlowScope.recentPagesBean.pages}" var="row"
rowBandingInterval="0" id="t1" rowSelection="none"
columnBandingInterval="0" width="100%"
inlineStyle="border:none;width:100%;" columnStretching="last"
horizontalGridVisible="true" verticalGridVisible="false"
autoHeightRows="#{pageFlowScope.recentPagesBean.number_of_items_to_show_at_a_time}"
contentDelivery="immediate"
fetchSize="#{pageFlowScope.recentPagesBean.number_of_items_to_query}">

Panel Group Layoutの子である表コンポーネント。

次の表の属性があります。

autoHeightRows (N): 一度に表に表示するアイテムの数。Java Bean recentPagesBeanが実行時にユーザーによって指定される値をこの属性に移入するように、ここでEL値が指定されます。

表示するアイテムの数がNより大きい場合、タスク・フローにスクロールバーが表示されます。

fetchSize (M): データ・ソースからフェッチするアイテムの最大数。Java Bean recentPagesBeanが実行時にユーザーによって指定される値をこの属性に移入するように、ここでEL値が指定されます。

MがNより大きい場合、タスク・フローにページ区切りコントロールが表示され、ユーザーが残りのアイテムを表示できるようにします。

<af:column sortable="false" headerText="#{null}" align="start" id="c1">
<af:panelGroupLayout id="pgl11" styleClass="nowrap"
inlineStyle="padding-top:2px; font-weight:bold;">
<af:outputText value="#{row.title}" id="ot4"/>
<af:goLink destination="/faces#{row.contentMRef}"
text=">>" targetFrame="_blank" id="gl1"/>
</af:panelGroupLayout>
<af:panelGroupLayout id="pgl10" styleClass="AFFieldTextDisabled nowrap"
inlineStyle="padding-top:2px">
<af:outputText value="Created on " id="ot7"/>
<af:outputText value="#{row.createDate}" id="ot8"/>
<af:outputText value=" by #{row.createdBy}" id="ot9"/>
</af:panelGroupLayout>
</af:column>

表に、アプリケーションのページのリストを各ページの作成日および作成者とともに表示する1つの列があります。

表の列をソートする暗黙的パーソナライズ機能は無効になっています。

<af:panelGroupLayout id="pgl2" halign="end" layout="vertical"
inlineStyle="margin:1px"
rendered="#{pageFlowScope.recentPagesBean.showPageControl}">
<af:panelGroupLayout id="pgl3">
<af:outputText value="#{pageFlowScope.recentPagesBean.footerText}"
id="ot2"/>
<af:commandLink id="cl1"
actionListener="#{pageFlowScope.recentPagesBean.previous}"
disabled="#{not pageFlowScope.recentPagesBean.showPrevious}"
action="previous">
<af:image source="#{pageFlowScope.recentPagesBean.showPrevious ?
'/adf/webcenter/shuttleleft_ena.png' : '/adf/webcenter/shuttleleft_dis.png'}"
id="i1" shortDesc="previous"/>
</af:commandLink>
<af:commandLink id="cl2"
actionListener="#{pageFlowScope.recentPagesBean.next}"
disabled="#{not pageFlowScope.recentPagesBean.showNext}"
action="next">
<af:image source="#{pageFlowScope.recentPagesBean.showNext ?
'/adf/webcenter/shuttleright_ena.png' : '/adf/webcenter/shuttleright_dis.png'}"
id="i2" shortDesc="next"/>
</af:commandLink>
</af:panelGroupLayout>
</af:panelGroupLayout>

表に表示されているレコード以外のレコードを表示するページ区切りコントロール。

recentPagesBeanコードは、実行時に表示される内容を定義します。

D.3.1.3 simpleEditPopupView.jspxページ

図D-6に、タスク・フローで表示するアイテムの数を選択するオプションを表示します。ページを表示するすべてのユーザーが、このオプションを使用してタスク・フローをパーソナライズできます。ユーザーが指定した値は、このページの、そのユーザーが表示しているビューにのみ適用されます。

図D-6 simpleEditPopupViewページ

表D-4では、simpleEditPopupView.jspxページのコードの重要なセクションについて説明します。

表D-4 パーソナライズ・ページのコード

コード

説明

<af:panelStretchLayout id="psl1">
<f:facet name="center">
<af:group id="group1">
<af:panelFormLayout id="pfl1">
<af:inputText label="Number of Items to show at a time"
id="it1"
value="#{pageFlowScope.recentPagesBean.number_of_items_to_show_at_a_time}"
columns="3"/>
</af:panelFormLayout>
<af:panelGroupLayout id="pgl2"
layout="horizontal"
halign="right"
inlineStyle="width:500px;">
<af:commandButton text="Save" id="cb1"
action="#{pageFlowScope.recentPagesBean.saveSettings}"/>
<af:commandButton text="Cancel" id="cb2"
action="cancel"
actionListener="#{pageFlowScope.recentPagesBean.cancel}"/>
</af:panelGroupLayout>
</af:group>
</f:facet>
</af:panelStretchLayout>

単一の最上位レベル・コンポーネントPanel Stretch Layoutとその中央ファセット内のGroupコンポーネント。このグループ内では、Panel Form LayoutおよびPanel Group Layoutです。

Panel Form LayoutにはInput Textコンポーネントが含まれ、このコンポーネントにはrecentPagesBeanから返される値が設定されます。

Panel Group Layoutには、SaveおよびCloseという2つのCommand Buttonコンポーネントが含まれています。これらは、recentPagesBeanで定義されているイベントに関連付けられています。

D.3.1.4 advancedEditPopupView.jspxページ

このページでは、編集権限またはカスタマイズ権限を持つユーザーに対して、カスタマイズ・オプションが表示されます。実行時は、このページが別のダイアログで開かれて、表示するアイテムの数を選択するオプション、問い合せるアイテムの数を選択するオプション、およびページ区切りコントロールの表示または非表示を選択するチェック・ボックスが表示されます。

図D-7 advancedEditPopupView.jspxページ

表D-5では、advancedPopupView.jspxページのコードの重要なセクションについて説明します。

表D-5 カスタマイズ・ページのコード

コード

説明

<af:panelStretchLayout id="psl1">
<f:facet name="center">
<af:group id="group1">
<af:panelFormLayout id="pfl1">
<af:inputText label="Number of Items to show at a time"
id="it1"
value="#{pageFlowScope.recentPagesBean.number_of_items_to_show_at_a_time}"
columns="3"/>
<af:inputText label="Number of Items to Query" id="it2"
value="#{pageFlowScope.recentPagesBean.number_of_items_to_query}"
columns="3"/>
<af:selectBooleanCheckbox label="Show Page Control"
id="sbc1"
value="#{pageFlowScope.recentPagesBean.showPageControl}"/>
</af:panelFormLayout>
<af:panelGroupLayout id="pgl2"
layout="horizontal"
halign="right"
inlineStyle="width:500px;">
<af:commandButton text="Save" id="cb1"
action="#{pageFlowScope.recentPagesBean.saveSettings}"/>
<af:commandButton text="Cancel" id="cb2"
action="cancel"
actionListener="#{pageFlowScope.recentPagesBean.cancel}"/>
</af:panelGroupLayout>
</af:group>
</f:facet>
</af:panelStretchLayout>

単一の最上位レベル・コンポーネントPanel Stretch Layoutとその中央ファセット内のグループ・コンポーネント。このグループ内では、Panel Form LayoutおよびPanel Group Layoutです。

Panel Form Layoutには2つのInput TextコンポーネントとSelect Boolean Checkboxが含まれます。これらのコンポーネントは、recentPagesBeanから返される値が設定されます。

Panel Group Layoutには、SaveおよびCloseという2つのCommand Buttonコンポーネントが含まれています。これらは、recentPagesBeanで定義されているイベントに関連付けられています。

D.3.1.5 recentPagesBean Java Bean

このJava Beanには、次の論理が含まれます。

- ユーザー入力に基づいて表に特定の数のアイテムを表示します。

- simpleEditPopupViewページとadvancedEditPopupViewページからトリガーされるSaveイベントとCancelイベントを処理します。

- ページ区切りが実装されている場合に「前へ」アイコンと「次へ」アイコンをレンダリングします。

- ページの合計数を取得してからページ区切りメッセージを表示します。

- カスタマイズとパーソナライズを保存する必要がある場所が定義されているPreference Beanを参照します。

このBeanのコードは、RecentPagesアプリケーションにあります。

表D-6では、recentPagesBean.javaファイル内のコードの重要なセクションについて説明します。

表D-6 recentPagesBean Java Beanのコード

コード

説明

private String _getPreferenceFileName()
{
String taskflowId =

タスク・フローを特定し、現在実行中のタスク・フローのインスタンスレベルのプリファレンスを取得する論理。

ControllerContextFwk.getInstanceFwk().getCurrentViewPortFwk().getClientId();
if (taskflowId == null)
{
taskflowId =

タスク・フローを特定し、現在実行中のタスク・フローのインスタンスレベルのプリファレンスを取得する論理。

ControllerContextFwk.getInstanceFwk().getCurrentViewPortFwk().getParentViewPort().getClientId();
}
String preferenceFileName =
PREFERENCE_BASE + taskflowId.replace(".", "_") + ".xml";
return preferenceFileName;
}
private static PageServiceBean getPageServiceBean()
{
String beanName = "pageServiceBean";
Object bean = null;
FacesContext ftx = FacesContext.getCurrentInstance();
bean =  ftx.getExternalContext().getRequestMap().get(beanName);
if (bean == null)
{
ELContext elContext = ftx.getELContext();
ExpressionFactory exFactory =
ftx.getApplication().getExpressionFactory();
ValueExpression expr =
exFactory.createValueExpression(elContext, "#{" + beanName + "}",PageServiceBean.class);
bean = expr.getValue(elContext);
}
return (PageServiceBean) bean;
}

タスク・フローを特定し、現在実行中のタスク・フローのインスタンスレベルのプリファレンスを取得する論理。

public String saveSettings()  throws Exception
{
if (number_of_items_to_query != null &&
!number_of_items_to_query.isEmpty())
{
Preference.setNumberOfItemsToQuery(_getPreferenceFileName(),
Integer.parseInt(number_of_items_to_query));
}
if (this.number_of_items_to_show_at_a_time != null &&
!this.number_of_items_to_show_at_a_time.isEmpty())
{
Preference.setNumberOfItemsToShow(_getPreferenceFileName(),
Integer.parseInt(number_of_items_to_show_at_a_time));
}
if (_showPageControl != null)
{
Preference.setShowPageControl(_getPreferenceFileName(),_showPageControl);
}
AdfFacesContext.getCurrentInstance().returnFromDialog(null, null);
return "save";
}

パーソナライズまたはカスタマイズを実行するダイアログの「保存」ボタンの動作を定義する論理。設定は、タスク・フロー・プリファレンス・ファイルに保存されます。

public void setNumber_of_items_to_show_at_a_time(String number_of_items_to_show_at_a_time)
{
this.number_of_items_to_show_at_a_time =
number_of_items_to_show_at_a_time;
}
public String getNumber_of_items_to_show_at_a_time()
{
String query =
Integer.toString(Preference.getNumberOfItemsToShow(_getPreferenceFileName()));
return query;
}

パーソナライズまたはカスタマイズを実行するダイアログのNumber of Items to show at a timeフィールドに値を設定する論理。

public void setNumber_of_items_to_query(String number_of_items_to_query)
{
this.number_of_items_to_query = number_of_items_to_query;
}
public String getNumber_of_items_to_query()
{
String query =
Integer.toString(Preference.getNumberOfItemsToQuery(_getPreferenceFileName()));
return query;
}

カスタマイズを実行するダイアログのNumber of Items to Queryフィールドに値を設定する論理。

public boolean getShowPageControl()
{
boolean showPageControl =
Preference.getShowPageControl(_getPreferenceFileName());
return showPageControl;
}
public void setShowPageControl(boolean showPageControl)
{
_showPageControl = showPageControl;
}

カスタマイズを実行するダイアログのShow Page Controlチェック・ボックスを設定する論理。

public List<PageDef> getPages()
{
PageServiceBean psb = getPageServiceBean();
List<PageDef> pages = psb.getPages();
int start = getStart();
int end = getEnd();
if (start < 0 || start > pages.size())
{
start = 0;
}
if (end < 0 || end > pages.size())
{
end = pages.size();
}
List<PageDef> tempPages = pages.subList(start, end);
return tempPages;
}
public int getEnd()
{
String items_to_query = this.getNumber_of_items_to_query();
int offset = Integer.parseInt(items_to_query);
int end = getStart() + offset;
if (end > this.getTableSize())
{
end = getTableSize();
}
return end;
}

表の現在のビューに表示するページのリストを取得する論理。

public int getTableSize()
{
int tableSize = -1;
try
{
PageServiceBean psb = getPageServiceBean();
List<PageDef> pages = psb.getPages();
tableSize = pages.size();
}
catch (Exception e)
{
System.out.println(e.toString());
}
return tableSize;
}

表のサイズを取得したレコード数に設定する論理。

public void cancel(ActionEvent actionEvent)
{
AdfFacesContext.getCurrentInstance().returnFromDialog(null, null);
}

パーソナライズまたはカスタマイズを実行するダイアログの「取消」ボタンの動作を定義する論理。

public void previous(ActionEvent actionEvent)
{
int page_num = getPageNumber();
page_num--;
if (page_num <= 0)
{
page_num = 1;
}
RequestContext.getCurrentInstance().getPageFlowScope().put("page_num", page_num);
}

タスク・フローのページ区切りコントロールの「前へ」アクションの動作を定義する論理。

public void next(ActionEvent actionEvent)
{
int page_num = getPageNumber();
page_num++;
String items_to_query =
this.getNumber_of_items_to_query();
int offset = Integer.parseInt(items_to_query);
int total_page_num = getTotalPageNumber();
if (page_num > total_page_num)
{
page_num = this.getTableSize()
/ offset;
}
RequestContext.getCurrentInstance().getPageFlowScope().put("page_num",  page_num);
}

タスク・フローのページ区切りコントロールの「次へ」アクションの動作を定義する論理。

public boolean isShowPrevious()
{
int page_num = getPageNumber();
if (page_num <= 1)
{
return false;
}
else
{
return true;
}
}

「前へ」アイコンをレンダリングする論理

public boolean isShowNext()
{
int page_num = getPageNumber();
if (page_num >= getTotalPageNumber())
{
return false;
}
else
{
return true;
}
}

「次へ」アイコンをレンダリングする論理。

public int getTotalPageNumber()
{
String items_to_query =
this.getNumber_of_items_to_query();
int offset = Integer.parseInt(items_to_query);
int total_page_num = this.getTableSize()
/ offset;
if (getTableSize() % offset > 0)
{
total_page_num++;
}
return total_page_num;
}

ページの合計数を返す論理。

public String getFooterText()
{
return "Items " + (this.getStart() + 1) + "-" + this.getEnd() +
" of " + " " + this.getTableSize() + " ";
}

ページ区切りテキストをItems 1-4 of 25という形式で返す論理。

D.3.1.6 プリファレンスBean

このJava Beanは、タスク・フロー・プリファレンス・ファイルの属性を取得および設定するAPIを提供するラッパーです。このタスク・フロー・インスタンスのパーソナライズとカスタマイズを、アプリケーションと同じMDSレイヤーに保存する論理が含まれます。このサンプル・アプリケーションでは、ポータルレベルのカスタマイズはmds/mdssys/cust/site/siteディレクトリに格納されます。したがって、Preference Beanのコードにより、アプリケーションのMDSセッションのクローンが作成され、タスク・フローのパーソナライズとカスタマイズが同じディレクトリに格納されることが保証されます。

このBeanのコードは、RecentPagesサンプル・アプリケーションにあります。

表D-7では、Preference.javaファイル内のコードの重要なセクションについて説明します。

表D-7 プリファレンスJava Beanのコード

コード

説明

private static MDSSession _getClonedMDSSession()

アプリケーションのMDSセッションのクローンを作成する論理。

{
MDSInstance instance = (MDSInstance) ADFContext.getCurrent().getMDSInstanceAsObject();
MDSSession mdsSession = (MDSSession) ADFContext.getCurrent().getMDSSessionAsObject();
mdsSession =
instance.createSession(mdsSession.getSessionOptions(), mdsSession.getUserStateHandler());
return mdsSession;
}

アプリケーションのMDSセッションのクローンを作成する論理。

private static MetadataObject _readPreference(MDSSession mdsSession, String preferenceFileName)
{
MetadataObject mo = null;
try
{
mo =
mdsSession.getMutableMO(MOReference.create(preferenceFileName));
}
catch (MetadataNotFoundException mnfe)
{
_LOG.warning("Creating a new preference file " + preferenceFileName);
}
catch (ReferenceException re)
{
_LOG.warning("Creating a new preference file " + preferenceFileName);
}
catch (Exception e)
{
throw new RuntimeException(e);
}

MDSセッションでプリファレンス・ファイルを読み取るか、または必要に応じてプリファレンス・ファイルを作成する論理。

// preference file is not available create a new one
if (mo == null)
{
try
{
DocumentBuilderFactory builderFactory =
DocumentBuilderFactory.newInstance();
builderFactory.setNamespaceAware(true);
builderFactory.setValidating(false);
DocumentBuilder builder =
builderFactory.newDocumentBuilder();
Document document =
builder.parse(new ByteArrayInputStream(CONTENTS.getBytes()));
mo =
mdsSession.createMetadataObject(preferenceFileName, document);
mdsSession.flushChanges();
mo =
mdsSession.getMutableMO(MOReference.create(preferenceFileName));
}
catch (Exception e)
{
throw new RuntimeException(e);
}
}
return mo;
}

MDSセッションでプリファレンス・ファイルを読み取るか、または必要に応じてプリファレンス・ファイルを作成する論理。

public static void setNumberOfItemsToShow(String preferenceFileName,
int numberOfItemsToShow)
{
MDSSession session = _getClonedMDSSession();
MetadataObject mo = _readPreference(session, preferenceFileName);
mo.getDocument().getDocumentElement().setAttribute("numberOfItemsToShow",
Integer.toString(numberOfItemsToShow));
_flushChanges(session);
}
public static int getNumberOfItemsToShow(String preferenceFileName)
{
MDSSession session = _getClonedMDSSession();
MetadataObject mo = _readPreference(session, preferenceFileName);
String show =
mo.getDocument().getDocumentElement().getAttribute("numberOfItemsToShow");
return Integer.parseInt(show);
}

一度に表に表示するアイテムの数を取得および設定する論理。

public static void setNumberOfItemsToQuery(String preferenceFileName,
int _numberOfItemsToQuery)
{
MDSSession session = _getClonedMDSSession();
MetadataObject mo = _readPreference(session, preferenceFileName);
mo.getDocument().getDocumentElement().setAttribute("numberOfItemsToQuery",
Integer.toString(_numberOfItemsToQuery));
_flushChanges(session);
}
public static int getNumberOfItemsToQuery(String preferenceFileName)
{
MDSSession session = _getClonedMDSSession();
MetadataObject mo = _readPreference(session, preferenceFileName);
String query =
mo.getDocument().getDocumentElement().getAttribute("numberOfItemsToQuery");
return Integer.parseInt(query);
}

データ・ソースに問い合せるアイテムの数を取得および設定する論理。

public static void setShowPageControl(String preferenceFileName,
boolean showPageControl)
{
MDSSession session = _getClonedMDSSession();
MetadataObject mo = _readPreference(session, preferenceFileName);
mo.getDocument().getDocumentElement().setAttribute("showPageControl",
Boolean.toString(showPageControl));
_flushChanges(session);
}
public static boolean getShowPageControl(String preferenceFileName)
{
MDSSession session = _getClonedMDSSession();
MetadataObject mo = _readPreference(session, preferenceFileName);
String pageControl =
mo.getDocument().getDocumentElement().getAttribute("showPageControl");
return Boolean.parseBoolean(pageControl);
}

タスク・フローにページ・コントロールを表示するかどうかを取得および設定する論理。

private static void _flushChanges(MDSSession session)
{
try
{
session.flushChanges();
}
catch (Exception e)
{
throw new RuntimeException(e);
}
}

タスク・フローに対して行われた変更を、MDSセッションに保存する論理。MDSセッションにサンド・ボックスが設定されている場合、変更はサンド・ボックスに保存されます。そうでなければ、それらは永続的にMDSに書き込まれます。

private static final String CONTENTS =
"<preference numberOfItemsToShow='5'
numberOfItemsToQuery='10'
showPageControl='true'
xmlns='http://xmlns.oracle.com/apps/preference'/>";
}

Number of Items to show at a timeフィールド、Number of Items to queryフィールドおよびShow Page Controlチェック・ボックスにデフォルト値を表示する論理。ユーザーがRecentPagesタスク・フローのインスタンスに初めてアクセスする際、この内容で新しいプリファレンス・ファイルが作成されます。

これらのファイルがすべて含まれるRecentPagesプロジェクトはOracle ADFにデプロイされ、タスク・フローはWebPagesプロジェクトのカスタマイズ可能なWelcome.jspxページで使用されます。

D.3.2 WebPagesプロジェクト

このプロジェクトには、recent-pages-task-flow-definitionタスク・フローを使用するWelcome.jspxページが含まれます。

D.3.2.1 Welcome.jspxファイル

Welcome.jspxは、Panel Stretch Layoutコンポーネントを含むカスタマイズ可能なページです。Panel Stretch Layoutの上部ファセットには、Change Mode Linkとページ作成タスク・フローが含まれます。中央ファセットには、Page Customizableと子であるPanel Customizableが含まれ、後者にはShow Detail Frameコンポーネントとrecent-pages-task-flow-definitionタスク・フローが含まれます。

Show Detail FrameのstretchContent属性とshowResizer属性はそれぞれfalseとneverに設定され、このコンポーネントによってその子のタスク・フローがストレッチされないことが保証されます。

また、refresh属性は、タスク・フロー・バインディングでifNeededに設定されます。これにより、実行時にこのページに対して実行されたカスタマイズは、ユーザーがリフレッシュを実行したときに反映されることが保証されます。

Welcome.jspxページに含まれるコードは次のとおりです。

<?xml version='1.0' encoding='US-ASCII'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:pe="http://xmlns.oracle.com/adf/pageeditor"
xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable">
<jsp:directive.page contentType="text/html;charset=US-ASCII"/>
<f:view>
<af:document id="d1">
<af:form id="f1">
<af:panelStretchLayout id="psl1">
<f:facet name="top">
<af:panelGroupLayout layout="horizontal"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
id="pgl2">
<pe:changeModeLink id="cml1"/>
<af:spacer width="10" height="10" id="s2"/>
<af:region value="#{bindings.pagecreatepage1.regionModel}"
id="r1"/>
<af:panelGroupLayout id="pgl1"/>
</af:panelGroupLayout>
</f:facet>
<f:facet name="center">
<pe:pageCustomizable id="pageCustomizable1">
<cust:panelCustomizable id="panelCustomizable1" layout="scroll">
<cust:showDetailFrame text="Recent Pages" id="sdf1"
stretchContent= "never" showResizer="never">
<af:region value="#{bindings.recentpagestaskflowdefinition1.regionModel}"
id="r2"/>
</cust:showDetailFrame>
</cust:panelCustomizable>
<f:facet name="editor">
<pe:pageEditorPanel id="pep1"/>
</f:facet>
</pe:pageCustomizable>
</f:facet>
<f:facet name="start"/>
<f:facet name="end"/>
</af:panelStretchLayout>
</af:form>
</af:document>
</f:view>
</jsp:root>

D.3.2.2 adf-config.xmlファイル

Show Detail Frameコンポーネント内にタスク・フローを追加して、タスク・フローの結果を親であるShow Detail Frameコンポーネントのクロムにアクションとして表示できます。これは、親であるShow Detail Frameでカスタム・アクションを定義することで実現できます。カスタム・アクションを定義するには、インスタンス・レベルでCustom ActionコンポーネントをShow Detail Frameの子コンポーネントとして追加するか、またはグローバル・レベルでCustom Action要素をアプリケーションのadf-config.xmlファイルに定義します。グローバル・カスタム・アクションは、アプリケーションのすべてのShow Detail Frameインスタンスで有効化されますが、表示されるのはShow Detail Frameインスタンスにタスク・フローが子として含まれる場合のみです。

このアプリケーションでは、タスク・フローの結果に対応するカスタム・アクションであるdialog:simpleEditPopupViewとdialog:advancedEditPopupViewは、adf-config.xmlファイルで次のようにグローバルに定義されています。

<customizableComponentsSecurity xmlns="http://xmlns.oracle.com/adf/faces/customizable/config">
<enableSecurity value="true"/>
<customActions>
<customAction action="refresh" text="Refresh"
shortDesc="Refresh"
location="menu" rendered="true"
icon="/adf/pe/images/refresh_ena.png"/>
<customAction action="dialog:simpleEditPoup"
text="Simple Edit"
shortDesc="Simple Edit"
location="menu"
rendered="#{!changeModeBean.inEditMode}"
icon="/adf/pe/images/editproperties_ena.png"/>
<customAction action="dialog:advancedEditPopup"
text="Advanced Edit"
shortDesc="Advanced Edit" location="menu"
rendered="#{changeModeBean.inEditMode}"
icon="/adf/pe/images/editproperties_ena.png"/>
</customActions>
</customizableComponentsSecurity>

D.3.3 実行時の動作

この構成の結果、実行時に次の動作が行われます。

- すべてのユーザーに対して、ページの表示中にタスク・フローの周りのクロムに「簡易編集」アクションが表示されます。

このアクションをクリックすると、別のダイアログにパーソナライズ・オプションが表示されます。

- 編集権限またはカスタマイズ権限を持つユーザーに対して、ページの編集中にタスク・フローの周りのクロムに「高度な編集」アクションが表示されます。

このアクションをクリックすると、別のダイアログにカスタマイズ・オプションが表示されます。

D.4 結論

タスク・フローが含まれるPortal Frameworkアプリケーション・ページでは、タスク・フローの設計がアプリケーションのパフォーマンスに大きな影響を与える可能性があります。また、応答が遅く、一貫性のないUIは、アプリケーション・ユーザーに好ましくないエクスペリエンスをもたらす可能性があります。パフォーマンスを高め、Portal Frameworkアプリケーション・ユーザーに適切なユーザー・エクスペリエンスが提供されることを保証するために、このドキュメントで説明するガイドラインに従って、アプリケーションで使用するタスク・フローを実装してください。

E Oracle Portalコンポーネントの再利用

この付録では、Oracle WebCenter Portal Frameworkで作成したアプリケーションで、既存のOracle Portalアプリケーションのコンポーネントを再利用する方法について説明します。

内容は次のとおりです。

- 第E.1項「Oracle Portalコンポーネントの概要」

- 第E.2項「ポートレットの再利用」

- 第E.3項「アイテムの再利用」

E.1 Oracle Portalコンポーネントの概要

Oracle Portalの最も基本的な2つの構築要素は次のとおりです。

- ポートレットはポータル・ページの基本的な構築要素です。ポートレットは、次の3つのプロデューサ(Oracle Portalではプロバイダと呼ばれます)・タイプを使用してデプロイできます。

- Web(またはOracle PDK-Java)プロデューサは、XML、SOAP、HTTPまたはJ2EEなどのオープン標準を使用して、デプロイメント、定義およびアプリケーションとの通信を実行します。Oracle PDK-Javaは、Webプロデューサを構築するタスクを単純化するフレームワークを提供します。

- WSRPプロデューサは、標準ベースのポートレットのコンテナとして機能します。

- データベース・プロデューサには、1つ以上のデータベース・ポートレットが存在します。データベース・ポートレットの例として、Oracle PDK-PL/SQLによって構築されたポートレット、ポートレット・ビルダー・ポートレット(チャート、フォーム、レポートなど)およびOracle Portalページ・ポートレットがあります。

WebCenter Portal FrameworkでWebポートレットおよびWSRPポートレットを使用できるようにするには、それらのプロデューサをアプリケーションに登録します。詳細は、第E.2.1項「JSR 286とOracle PDK-Javaポートレットの再利用法」を参照してください。

フェデレーテッド・ポータル・アダプタを使用して、Portal Frameworkアプリケーションからデータベース・ポートレットを使用できるようにすることもできます。詳細は、第E.2.8項「データベース・ポートレットを再利用するためのフェデレーテッド・ポータル・アダプタの利用法」を参照してください。

- アイテムは、ページ内のアイテム・リージョンにあるコンテンツの個々の要素(テキスト、ハイパーリンク、イメージなど)です。適切な権限レベルを持つユーザーが、アイテムをページに追加できます。アイテムのコンテンツとメタデータは、メタデータ・リポジトリのOracle Portalスキーマ内に格納されます。アイテムは、アイテム・リージョンに定義されたレイアウト、スタイルおよび属性表示に従って、ページ上にレンダリングされます。
アイテムはコンテンツ・リポジトリに格納されているため、Java Content Repository (JCR)データ・コントロールを使用して取得できます。Oracle Portalコンテンツ・リポジトリ用のデフォルト・アダプタは、WebCenter Portal Frameworkに標準で付属しています。詳細は、第E.3項「アイテムの再利用」を参照してください。

Oracle PortalとWebCenter Portalには技術的な違いがあるので、プラットフォーム間で直接アップグレードすることはできません。ただし、ポータルの主要コンポーネントをWebCenter Portal内で公開することはできます。

E.2 ポートレットの再利用

ポータルで使用しているポートレットを、Portal Frameworkアプリケーションから使用できるようにできます。

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

- 第E.2.1項「JSR 286とOracle PDK-Javaポートレットの再利用法」

- 第E.2.2項「イベントに関する必知事項」

- 第E.2.3項「モバイル・ポートレットに関する必知事項」

- 第E.2.4項「ポートレット・クロムに関する必知事項」

- 第E.2.5項「パーソナライズとカスタマイズに関する必知事項」

- 第E.2.6項「Oracle Portalシステム・リソースに関する必知事項」

- 第E.2.7項「パートナ・アプリケーションと外部アプリケーションに関する必知事項」

- 第E.2.8項「データベース・ポートレットを再利用するためのフェデレーテッド・ポータル・アダプタの利用法」

- 第E.2.9項「フェデレーテッド・ポータル・アダプタのトラブルシューティングに関する必知事項」

- 第E.2.10項「フェデレーテッド・ポータル・アダプタの制限に関する必知事項」

- 第E.2.11項「Oracle Application Serverの以前のバージョンからのOracle PDK-Javaプロデューサの再利用法」

E.2.1 JSR 286とOracle PDK-Javaポートレットの再利用法

JSR 286とOracle PDK-JavaポートレットをPortal Frameworkアプリケーションで再利用するには、そのプロデューサを他のプロデューサと同じ方法で登録するだけですみます。

JSR 286とOracle PDK-Javaポートレットを再利用するには:

1. Oracle JDeveloperでWSRPプロデューサの登録ウィザードまたはOracle PDK-Javaプロデューサ登録ウィザードにアクセスします。

2. ウィザードの各ステップで、URLエンドポイントなど、プロデューサに関する情報を指定します。

3. ポートレットを追加するページを開きます。

4. 登録済プロデューサのポートレットをそのページの適切な位置にドラッグします。

Portal Frameworkアプリケーションでのポートレットの消費の詳細は、第63章「ポートレットの消費」を参照してください。

E.2.2 イベントに関する必知事項

WebCenter Portal Frameworkでは、Oracle PDK-Javaイベントはサポートされていません。イベントを使用するOracle PDK-JavaポートレットをWebCenter Portal Framework環境にデプロイしている場合、イベントは無視されます。

E.2.3 モバイル・ポートレットに関する必知事項

WebCenter Portal Frameworkでは、モバイル・ポートレットはサポートされていません。Oracle PDK-Javaモバイル・ポートレットがあっても、WebCenter Portal Framework環境ではそれらは機能しません。

E.2.4 ポートレット・クロムに関する必知事項

WebCenter Portal Frameworkでは、ポートレットでクロムは提供されません。クロムは、ポートレットを使用するアプリケーションが提供します。この動作はWSRP規則に準拠していますが、Oracle PDK-Javaでポートレット用のクロムが提供されたOracle Portalからの変更点です。したがって、Oracle PDK-Javaポートレットのヘッダーは、WebCenter Portal Framework環境ではフィルタリングによって除去されます。

このフィルタリング・プロセスの一部として、WebCenter Portal FrameworkではPDK-Javaポートレットのタイトル領域を解析して、そのタイトルを保持し、必要なポートレット・モード・リンクを追加します。フィルタリングのアルゴリズムは、次のとおりです。

- ポートレットに複数の表がある場合、タイトル領域は最初の表とみなされます。ポートレットに表が1つしかない場合は、タイトル領域はその表の最初の行とみなされます。

- タイトル領域の最初のテキストはタイトルとみなされます。ポートレットに表がないか、タイトルが認識できない場合、タイトルはadfp:portletコンポーネントから取得されます。

- フラグメント_mode= parameterを含むリンクは、ポートレット・モード・リンクとみなされます。これらのリンクは、WebCenter Portal Frameworkによってポートレット・メニューに移動されます。

ポートレット・クロムのヘッダー・セクションの解釈を回避し、元のOracle PDK-Javaヘッダーを再利用する場合は、adfp:portletタグのdisplayHeader属性をfalseに、ページ定義XMLの関連ポートレット・バインディングでretainPortletHeaderをtrueに設定します。ページ定義ポートレット・バインディングでretainPortletHeader=trueに設定すると、ポートレット・レスポンスでポートレット・ヘッダーが保持されます。adf:portletタグでdisplayHeader=falseに設定すると、アプリケーションのポートレット・クロム用のヘッダーが抑止され、通常はヘッダーに表示されるアイコンやリンクが非表示になります。

E.2.5 パーソナライズとカスタマイズに関する必知事項

ポートレットの作成者やユーザーがOracle Portal内のポートレットに適用したポートレットのカスタマイズとパーソナライズは、Portal Frameworkアプリケーションには引き継がれません。Portal Frameworkアプリケーションでは、Oracle Portalポートレットは新規のインスタンスとして処理されます。したがって、以前のパーソナライズおよびカスタマイズは使用できません。

E.2.6 Oracle Portalシステム・リソースに関する必知事項

Oracle Portalのターゲット・コンシューマを念頭に置いて構築されたポートレットは、ランタイム環境について無効な想定をする傾向があります。たとえば、ポートレットでは、Oracle Portalリソース(イメージやJavaScript関数など)の存在を想定します。WebCenter Portal Frameworkでは、これらのリソースは使用できません。そのため、ポートレットで必要なリソースをプロデューサにバンドルして、ポートレットが確実にWebCenter Portal Framework環境で正しく実行されるようにする必要があります。

Oracle Portalでの使用のために設計されたポートレットについてのもう1つの一般的な問題は、Oracle Portal URL書式とOracle Portalパラメータの存在を想定するポートレットです。Oracle ADFアプリケーションのページURLは、Oracle Portalのものとは異なります。したがって、ポートレット開発者は、ページURLについて推測できないので、適切なポートレットAPIを使用することによって、WebCenter Portal Framework環境で実行できるようにOracle PDK-Javaポートレットを準備する必要があります。

E.2.7 パートナ・アプリケーションと外部アプリケーションに関する必知事項

パートナ・アプリケーションはサポートされていません。外部アプリケーションはサポートされています。自動ログインは、プロデューサを登録するとアプリケーションに自動的に構成される外部アプリケーションの自動ログイン・サーブレットを通して、サポートされています。

E.2.8 データベース・ポートレットを再利用するためのフェデレーテッド・ポータル・アダプタの利用法

フェデレーテッド・ポータル・アダプタは、Oracle PortalインスタンスがWebポートレット・インタフェースを通じてデータベース・ポートレットを共有することを可能にする、Oracle Portalのコンポーネントです。フェデレーテッド・ポータル・アダプタは、Webプロデューサ宛のSOAPメッセージを受信してSOAPを解析した後、それらのメッセージをPL/SQLプロシージャ・コールとしてデータベース・プロデューサにディスパッチします。フェデレーテッド・ポータル・アダプタによって、データベース・プロデューサは事実上、Webプロデューサと同じように動作します。PL/SQLポートレット、ポートレット・ビルダー・ポートレットおよびページ・ポートレットなどのOracle Portalデータベース・ポートレットを、Portal Frameworkアプリケーションで使用できるようにできます。

注意:

Oracle Portalページは、Oracle Portalでポートレットとして公開することによって、フェデレーテッド・ポータル・アダプタを通じてWebCenter Portalで公開することもできます。

ポータルにフェデレーテッド・ポータル・アダプタを実装すると、Oracle PortalポートレットがOracle PDK-Java Webプロデューサ・プロトコルを介して公開され、それらをPDK-Javaプロデューサとして登録できます。プロデューサをPortal Frameworkアプリケーションに登録すると、ポートレットがコンポーネント・パレットに表示され、他のポートレットと同様に、それらをページにドラッグ・アンド・ドロップできます。フェデレーテッド・ポータル・アダプタがなければ、Portal Frameworkアプリケーションからこれらのプロデューサにはアクセスできません。

フェデレーテッド・ポータル・アダプタの詳細は、『Oracle Fusion Middleware Oracle Portal開発者ガイド』の「フェデレーテッド・ポータル・アダプタの使用」の章を参照してください。

フェデレーテッド・ポータル・アダプタ・プロデューサをWebCenter Portalに登録するには:

1. フェデレーテッド・ポータル・アダプタを使用できるように、Oracle Portal環境を設定します。詳細は、『Oracle Fusion Middleware Oracle Portal管理者ガイド』のフェデレーテッド・ポータル・アダプタを使用する環境の設定に関する項を参照してください。

2. フェデレーテッド・ポータル・アダプタを介してOracle Portalのインスタンスを登録するには、ポータルにOracle Internet Directoryの"PORTAL"という名前のユーザーが存在する必要があります。このユーザーを作成するには:

1. ポータル管理者ユーザーとしてOracle Portalインスタンスにログインします。

2. 「ユーザー」ポートレットで「新規ユーザーの作成」をクリックします。
デフォルトでは、「ユーザー」ポートレットは、「Portalビルダー」ページの「管理」タブの「ポータル」サブタブにあります。

3. 「姓」フィールドにPORTALと入力します。

4. 「ユーザーID」フィールドにPORTALと入力します。

5. 「パスワード」フィールドと「パスワードの確認」フィールドに適切なパスワードを入力します。

6. 「電子メール・アドレス」フィールドに、適切な電子メール・アドレスを入力します。

7. 「実行」をクリックし、「完了」をクリックします。

8. 「ポータル・ユーザー・プロファイル」ポートレットで「名前」フィールドにPORTALと入力し、「編集」をクリックします。
デフォルトでは、「ポータル・ユーザー・プロファイル」ポートレットは、「Portalビルダー」ページの「管理」タブの「ポータル」サブタブにあります。

9. 「デフォルト・グループ」フィールドにPORTLET_PUBLISHERSと入力します。

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

3. Portal FrameworkアプリケーションでOracle Portalページを表示する場合、まずそれらのページをそれぞれポートレットとして公開する必要があります。Oracle Portalページを表示するには、ページ・プロパティを編集し、「オプション」タブで「ポートレットとして公開」を選択します。詳細は、『Oracle Fusion Middleware Oracle Portalユーザーズ・ガイド』の別のページへのページの配置に関する項を参照してください。

4. Portal Frameworkアプリケーションのユーザーが、フェデレーテッド・ポータル・アダプタを介して公開されているポートレットやページに対して適切な権限を持っていて、Oracle Portalインスタンスのユーザーにマップされることを確認します。ある個人のPortal Frameworkアプリケーション上のユーザー名は、その人のOracle Portal上のユーザー名にマップされる必要があります。たとえば、JSMITHは、Portal FrameworkアプリケーションとOracle Portalの両方で同じ人を表す必要があります。

5. Oracle JDeveloperで、フェデレーテッド・ポータル・アダプタURLおよびサービスIDを使用して、プロデューサをOracle PDK-Javaプロデューサとして登録します。

http://host:port/adapter/dad/schema

URLを確認するために、ブラウザに入力します。URLが正しい場合、次のメッセージが表示されます。

Congratulations - you got to the adapter test page

ログインしている場合は、プロデューサ、そのサービスID、およびそれぞれが提供するポートレットのリストが表示されます。Oracle Portal管理者としてログインしている場合は、ページ・ポートレットとOracle Portal HMAC登録の詳細も表示されます。

プロデューサを登録する際、ウィザードの「接続詳細の指定」ページでプロデューサ・セッションの確立チェック・ボックスを選択してください。これは、WebCenter Portalユーザー情報がOracle Portalに正しく伝播されるようにするためです。

詳細は、第63.2.2項「WebCenter Portal FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。

6. プロデューサのポートレットをページにドラッグ・アンド・ドロップできます。

7. Oracle PortalインスタンスとWebCenter Portalの間の通信を保護するために、Hash Message Authentication Code (HMAC)を使用して共有鍵を提供します。

1. SQL*Plusに移動して、ポータル・スキーマ所有者としてログインします。

2. 次を実行します。

@wwc/proadssr.sql http://www.oracle.com/adapter/portal

Portal Frameworkアプリケーションの場合、アダプタURLは常に同じであることに注意してください。

http://www.oracle.com/adapter/portal

3. 共有鍵コードを入力します。

4. Oracle JDeveloperの「Oracle PDK-Javaポートレット・プロデューサの作成/編集」ウィザードまたはダイアログで、「追加登録詳細の指定」ステップの「共有鍵」フィールドにこの共有鍵コードを入力します。

注意:

Oracle Portalインスタンスから共有鍵を削除するには:

@wwc/proadsdr.sql

8. ページ・ポートレットや様々なサンプル・データベース・ポートレットなど、Oracle Portalに組み込まれている一部のポートレットでは、ポータル中間層で出荷される一連のイメージがポータル・ページのWebサーバーのパス/imagesに存在することを想定しています。これらのイメージは、デフォルトではPortal Frameworkアプリケーションで使用できません。これらのイメージが正しく表示されるようにするには、次を実行します。

1. 次のzipファイルをダウンロードします。
http://download.oracle.com/otndocs/tech/portal/files/portal-images.zip

2. zipファイルの内容を解凍し、URL /imagesの下にマウントします。

9. これで、ポートレットを含むページを実行できます。

E.2.9 フェデレーテッド・ポータル・アダプタのトラブルシューティングに関する必知事項

次の情報は、WebCenter Portalのフェデレーテッド・ポータル・アダプタに関する問題を解決する際に役立つ可能性があります。

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

- 第E.2.9.1項「登録について」

- 第E.2.9.2項「実行時」

E.2.9.1 登録について

プロデューサを登録する際にエラーが発生しました。

Oracle Portalインスタンスで共有鍵が設定されていないか、Oracle JDeveloperの共有鍵と一致しないか、またはサービスIDが入力されていません。

プロデューサに接続できませんでした

ポータル登録URLが正しくないか、Oracle JDeveloperのサービスIDがOracle Portalインスタンスのプロバイダと一致しないか、Oracle Portalインスタンスに接続できない(ファイアウォール内部にある、使用可能ではないなど)か、またはOracle JDeveloperのユーザーがOracle Portalのユーザーと一致しないかのいずれかです。メッセージの詳細には、原因に関する詳細情報が示されます。

- 404 見つかりません: Oracle Portalインスタンスが接続できないか、タイムアウトになりました。タイムアウトの時間を増やしてください。

- 406 受け入れられません: 指定したサービスIDのプロバイダがこのOracle Portalインスタンスに見つからないか、HMAC認証が失敗したか正しく構成されていません。

- 503 サービスは利用できません: PORTALユーザーはOracle Internet Directoryで見つかりません。Oracle Portal管理者は、PORTALユーザーをOracle Internet Directoryに追加していない可能性があります。

E.2.9.2 実行時

プロデューサに接続できませんでした

ポータル登録URLが正しくないか、Oracle JDeveloperのサービスIDがOracle Portalインスタンスのプロバイダと一致しないか、Oracle Portalに接続できない(ファイアウォール内部にあるか、または使用可能ではない場合など)か、またはOracle JDeveloperのユーザーがOracle Portalのユーザーと一致しないかのいずれかです。メッセージの詳細には、原因に関する詳細情報が示されます。

- 404 見つかりません: Oracle Portalインスタンスが接続できないか、タイムアウトになりました。タイムアウトの時間を増やしてください。

- 406 受け入れられません: 指定したサービスIDのプロバイダがこのOracle Portalインスタンスに見つからないか、HMAC認証が失敗したか正しく構成されていません。

- 503 サービスは利用できません: PORTALユーザーはOracle Internet Directoryで見つかりません。Oracle Portal管理者は、PORTALユーザーをOracle Internet Directoryに追加していない可能性があります。

ポートレットが正しくレンダリングされません。

- イメージが見つからないか、リンクとして表示される場合は、第E.2.8項「データベース・ポートレットを再利用するためのフェデレーテッド・ポータル・アダプタの使用方法」のイメージzipファイルのダウンロードの手順を参照してください。

- ナビゲーションが正常に機能しない場合は、ページを編集してRenderPortletInIframeをtrueに設定することを試行します。一部のポートレットはそれ自体のインライン・フレーム(IFRAME)内のほうが正常に機能します。

- ポートレットから次のメッセージが表示された場合は、RenderPortletInIframeをtrueに設定してポートレットをIFRAME内に配置することを試行します。

The portlet attempted to issue a redirect in response to a render request.

- ポートレットでポップアップや値リストなどが正常に機能しない場合は、XSS攻撃を避けるためにJavaScript例外が発生していることが原因である可能性があります。ポップアップは、Portal Frameworkアプリケーションと同一のサーバーURLを持つ必要があります。

- ポートレットにカスタマイズ用またはパーソナライズ用の空白画面がレンダリングされる場合、ユーザーがポートレットを編集する権限を持っていない可能性があります。ポータル・ログ・ファイルを確認します。

E.2.10 フェデレーテッド・ポータル・アダプタの制限に関する必知事項

WebCenter Portalでフェデレーテッド・ポータル・アダプタを使用する場合、次の制限が適用されます。

- ディープ・リンクは機能しない可能性があります。ポートレットをIFRAME内に配置する(RenderPortletInIframeをtrueに設定する)と、機能する場合もあります。

- ポートレットでレンダリングされるリンクは、絶対URLである必要があります。

- ページ・ポートレットにタブ付きページを表示する場合、IFRAMEに配置する必要があります。

- ページ・ポートレットに表示されたポートレットでは、「リフレッシュ」、「閉じる」および「削除」の各ポートレット・リンクは機能しません。

- 一部のオブジェクトは、フェデレーテッド・ポータル・アダプタによって返されず、したがってWebCenter Portalには表示されません。詳細なリストは、Oracle Fusion Middleware Oracle WebCenter Portalの管理のOracle Portal: 制限事項に関する項を参照してください。

E.2.11 Oracle Application Serverの以前のバージョンからのOracle PDK-Javaプロデューサの再利用法

Oracle Application Serverリリース2 (10.1.2)以前で設計しデプロイしたプロデューサがある場合、次の2つの方法のいずれかでそれを再利用できます。

- Oracle Application Serverリリース2 (10.1.2.0.2)の中間層で実行中のプロデューサから、ポートレットを使用できます。この場合、プロデューサのコードはリリース2 (10.1.2.0.2)上で実行されますが、プロデューサを使用するアプリケーションはリリース11上で実行されます。

- プロデューサ・アプリケーションをEARファイルとしてOracle WebLogic Server上に再デプロイし、他のPortal Frameworkアプリケーション内でそのポートレットを使用できます。この場合、プロデューサのコードと使用側のアプリケーションは、どちらもリリース11上で実行されます。

いずれの場合も、プロデューサのポートレットを正しく動作させるにはいくつかの追加の手順が必要です。Oracle Portal用に構築されたポートレットでは、ページ・アセンブリ・サーブレット上に特定のボイラープレート・イメージが表示されることが予想され、それらのイメージがない場合、ポートレットは壊れます。これらのイメージは、デフォルトでは、Oracle Application Serverリリース2 (10.1.2.0.2)内の中間層サーブレットに含まれていましたが、WebCenter Portal Frameworkの場合、ポートレットがイメージを検出できることを手動で確認する必要があります。

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

- 第E.2.11.1項「Oracle Portalからのポートレットの使用」

- 第E.2.11.2項「Oracle PortalからのPDK-Javaプロデューサの再デプロイ」

E.2.11.1 Oracle Portalからのポートレットの使用

WebCenter Portalでは、Oracle Portalインスタンスのページ上で実行中のポートレットを使用するために、次のいずれかを実行します。

- Oracle Technology NetworkからOracle Portalイメージzipファイルを取得し、ADFPサーブレット内で解凍します。

- リソース・サーブレットを次のように正しく構成します。

1. 例E-1に示すように、初期化パラメータをWebサーブレットに追加します。

例E-1 Webサーブレットの初期化パラメータ

<servlet>
<servlet-name>SOAPServlet</servlet-name>
<display-name>SOAPServlet</display-name>
<description>Extended Portal SOAP Server</description>
<servlet-class>oracle.webdb.provider.v2.adapter.SOAPServlet</servlet-class>
...
<init-param>
<param-name>resourceServletMapping</param-name>
<param-value>/pdkresource</param-value>
</init-param>
</servlet>

2. 例E-2に示すように、リソース・サーブレットのサーブレット定義を追加します。

例E-2 リソース・サーブレットのサーブレット定義

<servlet>
<servlet-name>ResourceServlet</servlet-name>
<display-name>ResourceServlet</display-name>
<description>Image resource servlet</description>
<servlet-class>oracle.webdb.provider.v2.adapter.ResourceServlet</servlet-class>
</servlet>

3. 例E-3に示すように、リソース・サーブレットのサーブレット・マッピングを追加します。

例E-3 リソース・サーブレットのサーブレット・マッピング

<servlet-mapping>
<servlet-name>ResourceServlet</servlet-name>
<url-pattern>/pdkresource/*</url-pattern>
</servlet-mapping>

4. これで、このPDK-Javaプロデューサを他のPDK-Javaプロデューサと同じ方法で登録できます。PDK-Javaプロデューサの詳細は、第63.2.2項「WebCenter Portal FrameworkアプリケーションへのPDK-Javaポートレット・プロデューサの登録」を参照してください。

E.2.11.2 Oracle PortalからのPDK-Javaプロデューサの再デプロイ

Oracle Portal用に構築されたPDK-Javaプロデューサを取得し、Oracle WebLogic Serverに再デプロイすることを選択した場合、リソース・サーブレットを次のように有効にする必要があります。

1. 例E-4に示すように、初期化パラメータをWebサーブレットに追加します。

例E-4 Webサーブレットの初期化パラメータ

<servlet>
<servlet-name>SOAPServlet</servlet-name>
<display-name>SOAPServlet</display-name>
<description>Extended Portal SOAP Server</description>
<servlet-class>oracle.webdb.provider.v2.adapter.SOAPServlet</servlet-class>
...
<init-param>
<param-name>resourceServletMapping</param-name>
<param-value>/pdkresource</param-value>
</init-param>
</servlet>

2. 例E-5に示すように、リソース・サーブレットのサーブレット定義を追加します。

例E-5 リソース・サーブレットのサーブレット定義

<servlet>
<servlet-name>ResourceServlet</servlet-name>
<display-name>ResourceServlet</display-name>
<description>Image resource servlet</description>
<servlet-class>oracle.webdb.provider.v2.adapter.ResourceServlet</servlet-class>
</servlet>

3. 例E-6に示すように、リソース・サーブレットのサーブレット・マッピングを追加します。

例E-6 リソース・サーブレットのサーブレット・マッピング

<servlet-mapping>
<servlet-name>ResourceServlet</servlet-name>
<url-pattern>/pdkresource/*</url-pattern>
</servlet-mapping>

4. これで、このPDK-Javaプロデューサを他のPDK-Javaプロデューサと同じ方法で登録できます。PDK-Javaプロデューサの詳細は、第63.2.2項「WebCenter Portal FrameworkアプリケーションへのPDK-Javaポートレット・プロデューサの登録」を参照してください。

E.3 アイテムの再利用

Oracle Portalのアイテムに相当するものがWebCenter Portal Frameworkにはありません。そのため、アイテムの作成、維持および公開は、WebCenter Portal Frameworkではサポートされていません。WebCenter Portal Frameworkでアイテムの動作をレプリケートするために、JCRデータ・コントロールを使用してOracle Portalのコンテンツを組み込むことができます。Oracle Portalは、WebCenter Portal FrameworkがJDeveloperの「コンテンツ・リポジトリのデータ・コントロールの作成」ダイアログで標準でサポートしているコンテンツ・リポジトリです。Oracle Portalからのコンテンツの統合の詳細は、第25章「コンテンツ・リポジトリ接続の構成」を参照してください。

F 式言語式

この付録では、WebCenter Portalで構築されたポータルとJDeveloperで構築されたPortal Frameworkアプリケーションで使用できる式言語(EL)式について説明します。

内容は次のとおりです。

- 第F.1項「式言語(EL)式の概要」

- 第F.2項「式言語のユースケース」

- 第F.3項「アプリケーションに関連するEL」

- 第F.4項「セキュリティに関連するEL」

- 第F.5項「一般設定に関連するEL」

- 第F.6項「ポータル・リソースに関連するEL」

- 第F.7項「ナビゲーションに関連するEL」

- 第F.8項「ツールとサービスに関連するEL」

- 第F.9項「ドキュメントに関連するEL」

- 第F.10項「ピープル・コネクションに関連するEL」

- 第F.11項「パーソナライズに関連するEL」

- 第F.12項「偽装に関連するEL」

- 第F.13項「コンポーザに関連するEL式」

- 第F.14項「WebCenter Portalのみに関連するEL式」

- 第F.15項「デバイス設定に関連するEL式」

関連項目:

EL APIの詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

F.1 式言語(EL)式の概要

ページ・コンポーネントまたはアセットを構成する場合、現在のアプリケーション・コンテキストを利用する変数として値を表すことができます。たとえば、現在のユーザーの名前、ユーザーに割り当てられたロール、現在のページの状態などを、変数を使用して取得できます。こうした柔軟性はEL式を使用することで実現できます。

この項には次のサブセクションが含まれます:

- 第F.1.1項「式ビルダーの概要」

- 第F.1.2項「WebCenter Portalの式エディタの概要」

F.1.1 式ビルダーの概要

EL式は、属性と実行時に決まるオブジェクト値とのバインドに、Portal Frameworkアプリケーション全体で使用されます。特定のコンポーネントの値は、実行時にそのvalue属性によって決定されます。コンポーネントにはその値として静的テキストを割り当てることができますが、通常、value属性には、表示データを決定するために実行時インフラストラクチャにより評価されるEL式が含まれます。

JDeveloperの式ビルダーを使用してEL式を作成できます。ビルダーにはプロパティ・インスペクタからアクセスできます。プロパティ・インスペクタで変更する属性を特定し、「プロパティ・メニュー」アイコンをクリックして、ポップアップから「式ビルダー」を選択します(図F-1)。

図F-1 式ビルダーへのアクセス

「式ビルダー」ダイアログ(図F-2)では、「式」ボックスにEL式を直接入力できます。「変数」ドロップダウン・リストを使用して、式に含める項目を選択することもできます。演算子ボタンを使用して、式に論理演算子または算術演算子を追加します。

式ビルダーの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』の「ADF Facesのスタート・ガイド」の章を参照してください。

図F-2 「式ビルダー」ダイアログ

F.1.2 WebCenter Portalの式エディタの概要

WebCenter Portalでは、式エディタと呼ばれる単純な式言語(EL)エディタを提供しています。式エディタは、動的な計算をしなければ不明なプロパティ値(たとえば、現在のユーザーや現在のページ・モードなどを指定する場合)を定式化する場合に使用します。

式エディタは、WebCenter Portalの管理および編集画面で使用できます。式エディタを開くには、フィールド、チェック・ボックスまたはドロップダウン・リストの横の「拡張編集オプション」アイコンをクリックして、「式ビルダー」をクリックします(図F-3)。

図F-3 「パラメータ値」フィールドの横の「拡張編集オプション」アイコンと表示されるエディタ

「図F-3 「パラメータ値」フィールドの横の「拡張編集オプション」アイコンと表示されるエディタ」の説明

関連項目:

コンポーネント・プロパティへのアクセスの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のコンポーネントの変更に関する項を参照してください。

式エディタには、式の入力用に2つのオプションが用意されています。

- 値の選択: シード済EL式を選択します。

- 値または式の入力: 式を手動で入力します。

「値の選択」の下のオプションは、式から返される情報のタイプに基づいて分類されます。最初のメニューでカテゴリを選択し、2番目のメニューで返される値のタイプを選択します(図F-4)。

図F-4 式ビルダーの「値の選択」の下のオプション

関連項目:

シード済EL式の詳細は、第F.14.2項「式エディタのシード済の式」を参照してください。

「値または式の入力」オプションの下のテキスト・ボックスを使用して、目的の式を手動で入力できます(図F-5)。

図F-5 式エディタの「値または式の入力」の下のテキスト・ボックス

この付録にある表の式の多くは、結果として返されるオブジェクトを絞り込むための構成要素です。すなわち、必ずしも単独で使用することを意図したものではなく、ELを組み合せて必要な問合せを構築するために使用します。

たとえば、次の式は、3つのアセット関連ELを使用して、特定のポータル・テンプレートを返す問合せを1つ構築します。これは、親ポータルstoresからテンプレートstoresMasterTemplateを取得します。

#{srmContext.resourceScope['stores'].resourceType['siteTemplate'].displayName['storesMasterTemplate'].singleResult}

式エディタでは、次のいずれかを実行できます。

- 「値の選択」を選択して、ドロップダウン・リストから事前定義された値を選択します。

- 「値または式の入力」を入力して、値またはEL式を入力します。次の形式を使用します。

- リテラル数値: #{123}

- リテラル文字列: #{'string'}

- リテラルブール値: #{true}

- 値を戻すために呼び出されるJava Bean: #{generalSettings.preferredTimeStyle}

エディタには「テスト」ボタンがあり、ELの入力を検証できます。「テスト」ボタンは、「値または式の入力」の下のテキスト・ボックスに入力した式に対して使用できます。

検証では、EL構文がチェックされて式が評価されます。式の値は、それが実行されるコンテキストによって異なるため、エディタには実際の使用時に戻される値とは異なる結果値が表示される可能性があります。

ただし、「テスト」をクリックしたときに検証されるのはELのみで、他のタイプの値は検証されないことに注意してください。結果はポップアップに表示されます。

注意:

「コンポーネント・プロパティ」ダイアログの汎用の「表示オプション」タブ内のどこにELを入力しても、そのエントリは自動的に検証されます。EL構文が無効な場合はエラーが表示され、値は適用も保存もされません。汎用の表示オプションは、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の表示オプション・プロパティの表に記載されているオプションです。

ELの検証は、汎用でない表示オプションには実行されません。

F.2 式言語のユースケース

この項では、ユーザーのロールや権限などに基づいて表示を行うためのEL式の使用例を示します。

この例では、式言語を使用して、ユーザーのロールに基づいてナビゲーション・モデル内のアイテムを表示または非表示にしています。式言語はOracle WebCenter Portalによって維持されるほぼすべての要素に対して存在しているので、ELを使用したユーザー・エクスペリエンスのパーソナライズは非常に強力なツールだと言えます。

次のELを使用して、ユーザー・ロールを決定できます。

#{WCSecurityContext.userInScopedRole['Role 1'] or   WCSecurityContext.userInScopedRole['Role 2']}

このELは、現在のユーザーの資格証明(この場合はrole)を、EL内で指定されている内容と比較しています。結果がtrueの場合、つまり指定されたロールのいずれかがユーザーに割り当てられている場合は、ナビゲーション・アイテムがユーザーに表示されます。結果がfalseの場合、ナビゲーション・アイテムはユーザーに表示されません。

EL内で参照するロールは、システム・ロール(Administrator、ModeratorまたはParticipant)でもカスタム・ロールでも構いません。

このELでは、OR句を使用して2つの条件を接続しています。つまり、ユーザーがナビゲーション・アイテムが表示できるようになるには、Role 1またはRole 2のいずれかが必要です。

次の手順は、Moderatorロールが割り当てられたユーザーのみに表示されるナビゲーション・アイテム(別のポータルに対するページ問合せ)を追加する方法を示しています。

注意:

この演習では、自分のポータルにカスタム・ナビゲーション・モデルを適用済であるとします。シード済ナビゲーション・モデルは編集できません。

ポータル内のナビゲーションをパーソナライズするには:

1. ポータル管理で「アセット」ページに移動して、左側ペインの「ナビゲーション」をクリックします。
ブラウザで次のURLを入力して、「アセット」ページに直接移動することもできます。

http://host:port/webcenter/portal/portalName/admin/assets

2. ポータルで使用しているナビゲーション・モデルの「編集」クイック・リンクをクリックします。

ヒント:

現在のポータルが使用しているナビゲーション・モデルを判別するには、ポータルの管理設定に移動して、「ナビゲーション」フィールド内の値を確認します。

3. 「編集 - navigation model」ダイアログで、「追加」メニューを開き、「ページ問合せ」を選択します。

4. 「ターゲット」タブでは、次の操作を実行します。

- 「名前」フィールドに、問合せの名前を入力します(例: moderatorQuery)。

- 検索ページの横で、「ポータル」を選択し、現在のポータル名がフィールドに表示されるのを確認します。

- 「表示可能」チェック・ボックスの横の「拡張編集オプション」アイコンをクリックして、「式ビルダー」を選択します。

5. 「値の選択」を選択して、1つ目のドロップダウン・リストから「ポータル情報」、2つ目のリストから「CurrentPortalロール - 進行役」を選択します。
#{WCSecurityContext.userInScopedRole['Moderator']}という式がテキスト・フィールドに表示されます。

ヒント:

カスタム・ロールで作業する場合は、「CurrentPortalロール - カスタム」を選択します。テキスト領域で、CustomRoleを強調表示して、カスタム・ロールの名前を入力します。

6. 「アセット」ページに戻るまで「OK」をクリックします。

7. 「保存」をクリックします。

これをテストするには、ポータルにメンバーを追加して、このユーザーにModerator以外のロールを割り当てます。ログオフして、そのユーザーとして再度ログインします。「ページ問合せ」ナビゲーション・アイテムは表示されないはずです。

F.3 アプリケーションに関連するEL

表F-1は、アプリケーションに関連するEL式をリストし、それが提供する機能のタイプを説明します。ここに示すELは、WebCenter Portalで構築されたポータルとJDeveloperで構築されたPortal Frameworkアプリケーションの両方に適用されます。

WebCenter Portalのみに関連するEL式の詳細は、第F.14.3項「WebCenter Portal情報に関連するEL式」を参照してください。

表F-1 アプリケーションに関連するEL式

式

機能

#{requestContext.skinFamily}

アプリケーション・レベルで構成されている要素や現在のユーザーのプリファレンス設定などに応じて、現在のWebリクエストで使用されるADF Facesスキン・ファミリの名前を返します。

#{adfFacesContext.skinFamily}と同じ値を返します。

F.4 セキュリティに関連するEL

表F-1は、アプリケーション・セキュリティに関連するEL式をリストし、それらが提供する機能のタイプを説明します。これらの式の一部は、Portal FrameworkアプリケーションとWebCenter Portalで構築されたポータルの両方で使用できます。「コンテキスト」列は、ELがFrameworkアプリケーション専用なのか、WebCenter Portal専用なのか、両方で使用できる(両方)のかを示します。

表F-2 セキュリティに関連するEL式

式

機能

コンテキスト

#{security.authenticated}

ELが呼び出されているコンテキスト内で現在のユーザーが認証済の場合はtrue、それ以外の場合はfalseを返します。

両方

#{securityContext.userName}

現在ログインしているユーザーのユーザー名を返します。現在ユーザーがログインしていない場合、値を返しません。

両方

#{WCSecurityContext.currentUser['userName']}

指定されたユーザーが現在のユーザーである場合はtrue、それ以外の場合はfalseを返します。

両方

#{WCSecurityContext.userInAppRole['role']}

指定されたOPSSアプリケーション・ロールが現在のユーザーに割り当てられている場合はtrueを返します。この式は、スコープを認識しない(ポータルをサポートしていない)Portal Frameworkアプリケーションで便利です。

例:

#{WCSecurityContext.userInAppRole['AppConnectionManager']}

Frameworkアプリケーション

#{WCSecurityContext.userInGroup['group']}

指定されたグループが現在のユーザーに割り当てられている場合はtrueを返します。例:

#{WCSecurityContext.userInGroup['Administrators']}

両方

#{security.pageContextCommunityModerator}

現在のユーザーが現在のポータルのモデレータの場合は、値trueを返します。

WebCenter Portal

#{WCSecurityContext.userInScopedRole['role']}

現在のスコープの指定されたロールが現在のユーザーに割り当てられている場合はtrueを返します。ロールはModerator、Participant、Viewerまたはスコープ内で定義されたカスタム・ロールにできます。

スコープは暗黙的に現在のスコープに解決されます。このELをホーム・ポータルで使用した場合、ホーム・ポータルのGUIDと、アプリケーション・レベルで定義されたロールに解決されます。このELをポータル・スコープで使用した場合、ポータルに対して定義されたロールに解決されます。

WebCenter Portal

F.4.1 例: EL式を使用した、コンポーザの構造ビューへのアクセス制限

この項では、ユーザーのロールに基づいて表示を行うためのEL式の使用例を示します。この例では、ページ・スタイルを作成してそのソース・コードを編集し、AdvancedEditロールを付与されたユーザーのみがホーム・ポータル内でコンポーザの構造ビューにアクセスできるようにするEL式を追加します。

ホーム・ポータルでコンポーザの構造ビューへのアクセスを制限するには:

1. WebCenter Portalに管理権限でログインして、WebCenter Portal管理の「セキュリティ」タブに移動します。

2. AdvancedEditという名前の新しいロールを作成し、それをweblogicというユーザーに割り当てます。
WebCenter Portalでのアプリケーション・レベルのロールと権限の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「ポータル間のセキュリティ管理」の章を参照してください。

ユーザーweblogicはこれで、AdministratorとAdvancedEditの2つのロールを持つことになります。

3. 新しいページ・スタイル、たとえば空白ページを作成します(ページ・スタイルの作成の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のページ・スタイルの作成に関する項を参照してください)。

4. コンポーザの構造ビューへのアクセス権をAdvancedEditロールを持つユーザーのみに付与するには、ページ・スタイルのソース・コードを編集して、<pe: pageCustomizable>タグに次の属性を追加します(図F-6)。

toolbarLayout="message stretch statusindicator newline designViews="design #{WCSecurityContext.userInScopedRole['AdvancedEdit'] ? 'source' : '}" addonpanels stretch help button"

ソース・コードの編集に関する詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のアセットのソース・コードの編集に関する項を参照してください。

図F-6 ページ・スタイルのソース・コードの編集

5. weblogic以外のユーザーとしてログインして、ホーム・ポータルで「空白ページ」ページ・スタイルを使用してページを作成します。コンポーザでページを開くと、デザイン・ビューにページが表示され、「構造」タブは表示されません。このユーザーにはAdvancedEditロールが付与されていないからです。
ホーム・ポータル内でユーザーが使用可能なすべてのページ・スタイルにこの方法を適用すると、構造ビューへのアクセスが完全に制御されます。他のポータルにも同じ方法を適用できます。

F.5 一般設定に関連するEL

表F-2は、一般アプリケーションの設定に関連するEL式をリストし、それらが提供する機能のタイプを説明します。ここに示すELは、WebCenter Portalで構築されたポータルとJDeveloperで構築されたPortal Frameworkアプリケーションの両方に適用されます。

表F-3 一般設定に関連するEL式

式

機能

#{generalSettings.userTimeZone}

現在のユーザーがアプリケーション・プリファレンスで選択しているタイムゾーンを返します。

#{generalSettings.preferredDateStyle}

現在のユーザーがアプリケーション・プリファレンスで選択している日付書式を返します。

#{generalSettings.preferredDatePattern}

現在のユーザーの優先日付書式パターンが設定されている場合はそれを返し、それ以外の場合はnullを返します。

日付とパターンの組合せはPortal Frameworkアプリケーションにのみ適用可能であり、設定されている場合は日付とスタイルの組合せよりも優先されます。

#{generalSettings.preferredTimeStyle}

現在のユーザーがアプリケーション・プリファレンスで選択している時間書式を返します。

#{generalSettings.preferredTimePattern}

現在のユーザーの優先時間書式パターンが設定されている場合はそれを返し、それ以外の場合はnullを返します。

#{generalSettings.preferredDateTimePattern}

現在のユーザーの日付書式と時間書式の優先パターンが設定されている場合はそれを返し、それ以外の場合はnullを返します。

#{generalSettings.preferredAccessibilityMode}

現在のユーザーの優先アクセシビリティ・モード(default、inaccessibleまたはscreenReaderのいずれか)を返します。

#{generalSettings.preferredSkinName}

現在のユーザーの優先スキン名が指定されている場合はその名前、それ以外の場合はデフォルト値。

#{generalSettings.formattedCurrentDate}

現在のユーザーが選択しているロケールの現在の日付を返します。

#{generalSettings.formattedCurrentTime}

現在のユーザーが選択しているロケールの現在の時間を返します。

#{generalSettings.formattedCurrentDateTime}

現在のユーザーが選択しているロケールの現在の日付と時間を返します。

#{requestContext.skinFamily}

アプリケーション・レベルで構成されている要素や現在のユーザーのプリファレンス設定などに応じて、現在のWebリクエストで使用されるADF Facesスキン・ファミリの名前を返します。

F.6 ポータル・リソースに関連するEL

この項の式を使用して、ポータル・リソースの問合せを行います。EL式によるポータル・リソースの問合せは、APIコールによるリソースの問合せと類似しています。すなわち、問合せパラメータは.property['value']という形式で設定する必要があり、propertyはid、resourceScopeなどのプロパティの名前、valueは属性の検索値です。

問合せを実行すると、1件または複数件の結果が返される可能性があります。問合せデザイナは、どちらの結果を望むのかを決める必要があります。問合せデザイナは式で次の値のいずれかを使用して、1件の結果を返すのか、複数件の結果を返すのかを指定します。

- singleResult: 1つのポータル・リソースを返します。一致するリソースが見つからない場合、nullを返します。

- resultList: ポータル・リソースのリストを返します。一致するポータル・リソースが見つからない場合、空のリストを返します。

注意:

式で使用されているsingleResultまたはresultListは、内部的には問合せのエンド・ポイントとして使用され、検出されるとすぐに問合せが実行されます。エンド・ポイント以降に何かが設定されていた場合、予想外の動作が発生する可能性があります。

次の例は、表示名にmyPageが含まれる、最初に見つけたページ・テンプレート・ポータル・リソースを返します。

#{srmContext.resourceType['siteTemplate'].displayName['myPage'].singleResult}

次の例は、ディレクトリresourceDirに存在し、説明にsampleDescが含まれるページ・テンプレート・ポータル・リソースのリストを返します。

#{srmContext.resourceType['siteTemplate'].description['sampleDesc'].contentDirectory['resourceDir'].resultList}

このクラスのプロパティには、このクラスの任意の属性が含まれます。たとえば、Id、DisplayName、iconURI、contentDirectoryなどのプロパティが含まれます。

プロパティ値は、明示的な値として、またはそのタイプの値を返すEL式として、指定できます。たとえば、次の2つの問合せは同じ結果を返します。

#{srmContext.id['resourceId'].singleResult}

#{srmContext.id['spacesContext.currentSpace.uiMetadata.siteTemplateId'].singleResult}

EL式を使用する問合せでは、このクラスの任意のプロパティをproperty['value']という形式で、任意の順序で使用できます。たとえば、次の2つの問合せは同じ結果を返します。

#{srmContext.resourceScope['scopeName'].id['resourceId'].singleResult}

#{srmContext.id['resourceId'].resourceScope['scopeName'].singleResult}

表F-4は、ポータル・リソースに関連するEL式をリストし、それぞれが提供する機能のタイプを説明します。表F-4の多くの式は、返すリソースを絞り込むためのブロックを構築します。すなわち、必ずしも単独で使用することを意図したものではなく、ELを組み合せて必要な問合せを構築するために使用します。

たとえば、次の式は、3つのポータル・リソース関連ELを使用して、特定のポータル・テンプレートを返す問合せを1つ構築します。これは、親ポータルstoresからテンプレートstoresMasterTemplateを取得します。

#{srmContext.resourceScope['stores'].resourceType['siteTemplate'].displayName['storesMasterTemplate'].singleResult}

WebCenter Portalアセットのみに関連するEL式の詳細は、第F.14.4項「アセットに関連するEL式」を参照してください。

表F-4 ポータル・リソースに関連するEL

EL

機能

#{srmContext.id['resourceGUID']}

指定されたIDのポータル・リソースを返します

#{srmContext.displayName['resourceDisplayName']}

指定された表示名を持つ任意のポータル・リソースを返します

#{srmContext.displayNameKey['displayNameKey']}

指定された表示名キーを持つ任意のポータル・リソースを返します

#{srmContext.description['resourceDescription'].singleResult}

指定された値が説明に含まれるポータル・リソースを1つ返します

複数の結果を取得するには、singleResultのかわりにresultListを使用します。

#{srmContext.descriptionKey[descriptionKey].singleResult}

指定された説明キーを持つポータル・リソースを1つ返します

説明キーは、ポータル・リソースの説明を示す、xsrtファイル内のキーです。

複数の結果を取得するには、singleResultのかわりにresultListを使用します。

#{srmContext.createdDate['resourceCreationDate']}

指定された作成日を持つ任意のポータル・リソースを返します

#{srmContext.modifiedBy['resourceLastModifiedBy']}

指定されたユーザー名のユーザーにより最後に変更された任意のポータル・リソースを返します

#{srmContext.modifiedDate['resourceLastModifiedDate']}

指定された日付以前に最後に変更された任意のポータル・リソースを返します

#{srmContext.resourceScope['resourceScope']}

指定されたスコープに該当する任意のポータル・リソースを返します

#{srmContext.category['categoryName']}

指定されたカテゴリに該当する任意のポータル・リソースを返します

例:

#{srmContext.category['siteTemplates']}

#{srmContext.contentDirectory['contentDirectory']}

指定されたディレクトリに格納されている任意のポータル・リソースを返します

#{srmContext.metadataFile['metadataFileLocation']}

指定されたメタデータ・ファイルからポータル・リソース・メタデータを返します

たとえば、次の式はファイル/home/metadata/data.xmlからリソース・メタデータを返します:

#{srmContext.metadataFile['/home/metadat/data.xml']}

#{srmContext.jspx['jspxFileLocation']}

指定された場所にある任意のjspxファイルを返します

たとえば、次の式はpage.jspxファイルを返します。

#{srmContext.jspx['/home/web/page.jspx']}

#{srmContext.pageDef['pageDefinition']}

指定されたページ定義が含まれる任意のjspxファイルを返します

#{srmContext.iconURI['iconURI']}

指定されたアイコンURIのアイコンを返します

#{srmContext.excludeFrom['excludeFromScopes']}

より大きな式で使用され、除外されたスコープで使用可能なポータル・リソースを除く、指定されたすべてのリソースを返します

#{srmContext.usesCustomSecurity['usesCustomSecurity']}

より大きな式で使用され、カスタム・セキュリティを使用する、または使用しない、任意のポータル・リソースを返します

usesCustomSecurityをTRUEまたはFALSEに設定します。例:

#{srmContext.usesCustomSecurity['TRUE']}

#{srmContext.seeded['seeded']}

より大きな式で使用され、指定された値に応じてシードされる、またはシードされない、任意のポータル・リソースを返します

seededをTRUEまたはFALSEに設定します。例:

#{srmContext.seeded['TRUE']}

#{srmContext.visibleType['visibleType']}

より大きな式で使用され、指定された可視性タイプの任意のポータル・リソースを返します

visibleTypeをTRUE、FALSEまたはポータル・リソースが絶対に表示されないことを示すNEVERに設定します。たとえば、次の式は表示されるポータル・リソース、すなわちShowに設定されているポータル・リソースを返します。

#{srmContext.visibleType['TRUE']}

#{srmContext.visible['visible']}

より大きな式で使用され、可視性がTRUEまたはFALSEのどちらかに設定されている1つまたは複数のポータル・リソースを返します。

#{srmContext.createdBy['resourceCreator']}

より大きな式で使用され、指定されたユーザーによって作成された任意のポータル・リソースを返します

#{srmContext.resourceType['resourceType']}

より大きな式で使用され、指定されたタイプの1つまたは複数のポータル・リソースを返します

たとえば、次の式はタイプSITE_TEMPLATEのポータル・リソースを検索します。

#{srmContext.resourceType['SITE_TEMPLATE']}

すべてのリソース・タイプのリストは、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスのGenericSiteResourceTypesクラスを参照してください。

#{srmContext.version['version']}

より大きな式で使用され、指定されたバージョンのアプリケーションで使用可能な1つまたは複数のポータル・リソースを返します

#{srmContext.resourceScope['scopeName']}

より大きな式で使用され、指定されたスコープで使用可能な1つまたは複数のポータル・リソースを返します

たとえば、次の式はスコープ(このインスタンスではポータル)がMyPortalのポータル・リソースを検索します。

#{srmContext.resourceScope['MyPortal']}

デフォルト・スコープ、すなわちアプリケーション・スコープ内を検索するには、defaultScopeを使用します。

#{srmContext.searchType['searchType']}

より大きな式で使用され、組み込まれている他の式で設定された値が含まれる、またはその値に等しい、1つまたは複数のポータル・リソースを返します

searchTypeをCONTAINSまたはEQUALSに設定します。

F.7 ナビゲーションに関連するEL

表F-4は、アプリケーション・ナビゲーションに関連するEL式をリストし、それらが提供する機能のタイプを説明します。ここに示すナビゲーションELは、WebCenter Portalで構築されたポータルとJDeveloperで構築されたPortal Frameworkアプリケーションの両方に適用されます。

表F-5 ナビゲーションに関連するEL式

式

機能

ナビゲーション・コンテキスト式

#{navigationContext.defaultNavigationModel}

デフォルト・ナビゲーション・モデルを返します。プリファレンスBeanから値を取得します。プリファレンスBeanは、adf-config.xmlのstatic valueのプリファレンス設定に基づいて値を取得します。

次の例は、指定されたデフォルト・ツリー・モデルを返します。

#{navigationContext.defaultNavigationModel.defaultTreeModel}

defaultMenuModelとdefaultListModelも使用できます(次のリストを参照)。

#{navigationContext.currentNavigationModel}

現在のビュー(すなわち現在のページ)にナビゲートするために使用したナビゲーション・モデルを返します。

ページには、複数のナビゲーション・モデルが存在する可能性があります。現在のページにナビゲートするために使用したモデルのみが、現在のナビゲーション・モデルになります。

現在のナビゲーション・モデルは、processActionがコールされた場合にのみ設定されます。

次の例は、現在のナビゲーション・モデルのデフォルト・ツリー・モデルを返します。

#{navigationContext.currentNavigationModel.defaultTreeModel}

defaultMenuModelとdefaultListModelも使用できます。

関連項目: #{navigationContext.processAction}.

#{navigationContext.navigationModel['model_path']}

パスで指定されたナビゲーション・モデルを返します。

例:

#{navigationContext.navigationModel['/oracle/webcenter/portalapp/navigations/default-navigation-model']}

パスは角カッコで囲んで入力するだけでよく、パラメータ名を覚える必要はありません。後方互換性のために、カンマ区切りパラメータもサポートされています。使用可能なパラメータ(と例)を次に示します。

- modelPath=/oracle/webcenter/portalapp/navigations/default-navigation-model

- modelScope=/oracle/webcenter/portalapp/navigation

- modelId=default-navigation-model

注意: modelScopeとmodelIdは、次の例のように、一緒に使用します。

#{navigationContext.navigationModel['modelScope=/oracle/webcenter/portalapp/navigations,modelId=default-navigation-model']}

#{navigationContext.processAction}

UIコンポーネントのactionListener属性にバインドするデフォルト・ナビゲーション方法を返します。これは、ナビゲート先のターゲット・リソースが、アクションUIコンポーネントのnode属性またはpath属性で渡されることを想定しています。

node属性は、通常、反復の場合に使用され、path属性は、通常、静的リンクを作成するために使用されます。両方が指定されている場合は、node属性が使用されます。path属性を使用する場合は、ナビゲーション・モード・オブジェクトを渡すためにmodel属性も指定する必要があることに注意してください。model属性が指定されていない場合は、現在のナビゲーション・モデルが使用されます。

node属性の使用例を示します。

<af:forEach var="node" varStatus="vs"
items="#{navigationContext.defaultNavigationModel.rootNode.children}">
<af:subform id="pt_sfm1">
<af:commandLink id="pt_cl1"
text="#{node.title}"
inlineStyle="font-size:small;color:White;"
actionListener="#{navigationContext.processAction}"
action="pprnav">
<f:attribute name="node" value="#{node}"/>
<af:showPopupBehavior popupId="menuPopup"
align="afterStart"
triggerType="mouseOver"/>
</af:commandLink>

path属性の使用例を示します。

<af:commandLink id="pt_cl1" text="Prescriptions"
inlineStyle="font-size:small; color:White;"
actionListener="#{navigationContext.processAction}"
action="pprnav">
<f:attribute name="path" value="/prescriptions"/>
<f:attribute name="model"   value="#{navigationContext.defaultNavigationModel}"/>
</af:commandLink>

ナビゲーション・モデル式

#{navigationContext.defaultNavigationModel.defaultTreeModel}

#{navigationContext.defaultNavigationModel.defaultMenuModel}

#{navigationContext.defaultNavigationModel.defaultListModel}

#{navigationContext.defaultNavigationModel.defaultSiteMap}

デフォルト設定に基づいて、ツリー/メニュー/リスト・モデルを返します

この設定のデフォルト値は次の行を参照してください。たとえば、depthのデフォルト値は0です。

defaultSiteMapは、デフォルト設定に基づいて、ナビゲーションのサイト・マップのXMLを返します。

この式は、次のタイプのモデルを返します。

- ChildPropertyTreeModel - <af:tree>コンポーネントで使用

- ChildPropertyMenuModel - <af:breadcrumbs>コンポーネントまたは<af:menu>コンポーネントで使用

- ListNavigationResource - <af:foreach>で使用

#{navigationContext.defaultNavigationModel.treeModel['parameters']}

#{navigationContext.defaultNavigationModel.menuModel['parameters']}

#{navigationContext.defaultNavigationModel.listModel['parameters']}

#{navigationContext.defaultNavigationModel.siteMap['parameters']}

指定されたカンマ区切りパラメータに基づいて、ツリー/メニュー/リスト・モデルを返します。使用可能なパラメータ(と例としてのデフォルト値)を次に示します。

- startNode=/ - モデルの開始ノードを指定します(ルート・ノードをリクエストする場合を除き、"/"を接頭辞として指定する必要はありません。例: home)。

- includeStartNode=true - 開始ノード(前述のルート・ノードなど)を含める場合はtrue、その子から開始する場合はfalseを指定します。

- depth=0 - フェッチの初期深さを定義します。0は、ツリー全体をフェッチすることを意味し、時間がかかることがあります。その場合は、オンデマンドでフェッチするために1を使用します(ユーザーが「展開」アイコンをクリックする場合)。

- prefetchOnly=false - デフォルトでは(true)、最初にリクエストされた深さレベルまでノードを返し、より深いレベルのノードはオンデマンドで返されます。ノードの初期セットのみを使用する場合は、falseを使用します。その場合、より深いノードがあっても、リクエストされたときに後でより深いノードを返しません。

siteMapの場合、使用可能なパラメータはstartNodeとincludeStartNodeです。

例:

#{navigationContext.defaultNavigationModel.treeModel['startNode=home,includeStartNode=false,depth=2']}

#{navigationContext.defaultNavigationModel.rootNode}

ナビゲーション・モデルのルート・ノード(タイプNavigationResource)を返します。

例:

<af:commandLink id="pt_cl1" text="Prescriptions"
inlineStyle="font-size:small; color:White;"
actionListener="#{navigationContext.processAction}"
action="pprnav">
<f:attribute name="node"
value="#{navigationContext.
defaultNavigationModel.
rootNode.children[2]"/>
</af:commandLink>

#{navigationContext.defaultNavigationModel.node['path']}

指定されたパスに基づいてノード(タイプNavigationResource)を返します(ルート・ノードをリクエストする場合を除き、"/"を接頭辞として指定する必要はありません。例: '/')。

例:

#{navigationContext.defaultNavigationModel.node['home/page1']}

#{navigationContext.defaultNavigationModel.currentSelection}

現在選択されているナビゲーション・ポータル・リソースを返します。

#{navigationContext.defaultNavigationModel.newCurrentSelection['path']}

与えられたパスによって指定されたノードに現在の選択を設定します(ルート・ノードをリクエストする場合を除き、/を接頭辞として指定する必要はありません。例: '/')。成功した場合、タイプNavigationResourceの新しく選択したノードを返します。

ユーザーは、実際にノードにナビゲートせずに、現在の選択を明示的に設定できる必要があります。

これは、ユーザーがページを直接入力し、選択が設定されていない場合に使用できます。これは、現在の選択が存在しない場合に何をデフォルトにするかをユーザーが制御するメカニズムを提供します。

例:

<c:set  value="${navigationContext.defaultNavigationModel.newCurrentSelection['home/page1']}"
var="currSel" scope="session"/>
<c:if test="${currSel!=null}">
<af:forEach items="#{currSel.children}"
var="cnode" varStatus="cnodestatus">
...</c:if>

#{navigationContext.defaultNavigationModel.attributes.Description}

#{navigationContext.defaultNavigationModel.attributes['Description']}

ナビゲーション・モデルの指定された属性の値を返します。

#{navigationContext.defaultNavigationModel.properties['propertyName']}

ナビゲーション・モデルの指定されたプロパティの値を返します。ここで、propertyNameはrootNodeまたはcurrentSelectionのどちらかです。

ナビゲーション・ポータル・リソース式

#{node.attributes.Description}

#{node.attributes['Description']}

ナビゲーション・ポータル・リソースの指定された属性の値を返します。

#{node.parameters.StockSymbol}

#{node.parameters['StockSymbol']}

ナビゲーション・ポータル・リソースの指定されたパラメータの値を返します。

#{node.parametersRaw.StockSymbol}

#{node.parametersRaw['StockSymbol']}

ナビゲーション・ポータル・リソースの指定されたパラメータのRAW値(評価前の値)を返します。

#{node.title}

ナビゲーション・ポータル・リソースのタイトルを返します。

#{node.path}

ナビゲーション・ポータル・リソースへのパスを返します。

#{node.externalURL}

タイプExternal Linkのナビゲーション・ポータル・リソースのURLを返します。

#{node.prettyUrl}

このナビゲーション・ポータル・リソースの識別パスを返します。

#{node.prettyUrlPath}

#{node.prettyUrlPath[N]}

深さを指定して識別パスのコレクションを返し、別のナビゲーション・ビューを動作させる開始パスとして使用できるようにします。

たとえば、currentSelectionがhome/company/products/applicationsである場合、次のELはhome/company/productsを返します。

#{node.prettyUrlPath[3]}

#{node.goLinkPretty Url}

goLinkの宛先に適合するこのナビゲーション・ポータル・リソースの識別パスを返します

<af:goLink id="pt_gl2" text="#{node.title}"
destination="#{node.goLinkPrettyUrl}"
targetFrame="#{node.attributes['Target']}"
inlineStyle="font-size:small;#{node.selected ?
'font-weight:bold;' : ''}"/>

#{node.separator ? ... : ...}

このポータル・リソースがセパレータ・アイテムかどうかを返します。

#{node.navigable ? ... : ...}

このポータル・リソースにナビゲート可能かどうかを返します。

#{node.selected ? ... : ...}

このポータル・リソースが現在選択されているかどうかを返します。

#{node.currentlySelected ? ... : ...}

ポータル・リソースが現在選択されているポータル・リソースであり、モデルが現在選択されているモデルであるかどうかを返します。

#{node.onSelectedPath ? ... : ...}

このノードが選択されたパス上に存在するかどうかを返します。これは、たとえば選択されているタブを強調表示する場合に便利です。

たとえば、現在選択されているノードがhome/company/products/applicationsである場合、次のELはhomeタブを強調表示します。

<c:set  value="${navigationContext.defaultNavigationModel.node['home']}"
var="home" scope="session"/>
<af:commandImageLink id="cil1"
icon="#{(home.onSelectedPath) ?
'/images/caremark/nav/HomeSelected.png' :
'/images/caremark/nav/HomeIcon.png'}"
actionListener="#{navigationContext.processAction}"
action="pprnav">
<f:attribute name="node" value="#{home}"/></af:commandImageLink>

#{node.leaf ? ... : ...}

このリソースがリーフ・ノードかどうかを返します。

#{node.parent}

このノードの親ノード(タイプNavigationResource)を返します。ルート・ノードの場合、nullを返します。

#{node.ancestors}

このノード(タイプNavigationResource)の祖先の、ルート・ノードで始まる階層リストを返します。

たとえば、現在のノードがhome/company/products/applicationsである場合、次のELは次の値を返します。

- #{node.ancestors[1]}はhomeを表すノードを返します。

- #{node.ancestors[3]}はhome/company/productsを表すノードを返します

#{node.depth}

このノードのルート・ノードからの深さを返します。ルート・ノードの深さは0です。

#{node.siblings}

このノード(タイプNavigationResource)の兄弟のリストを返します(このノード自体を含む)。

#{node.nextSibling}

このノード(タイプNavigationResource)のリストの次の兄弟を返します。

たとえば、次のコードでは、1つの行内に2つのセパレータが連続して出力されることはありません。

<c:if test="${(node.separator) && (!node.nextSibling.separator}">
<af:separator id="s166"/>
</c:if>

#{node.previousSibling}

このノードのリスト内の前の兄弟(タイプNavigationResource)を返します。

#{node.index}

このノードの、その兄弟からの0相対インデックスを返します。

#{node.children}

#{node.children[N].title}

#{node.children[N].children[N].title}

子リソースのコレクションを返します。

#{node.childCount}

このノードの子の数を返します。

#{node.childByIndex['index']}

0相対インデックスで指定された子ノード(タイプNavigationResource)を返します。

見つからない場合、nullを返します。

#{node.childByPath['admin']}

このノードからの相対パスで指定された子ノード(タイプNavigationResource)を返します。

パスは1レベルよりも深くすることができ、'/'を接頭辞として指定することは必要ありません。見つからない場合、nullを返します。

#{node.properties['propertyName']}

ナビゲーション・ポータル・リソースの指定されたプロパティの値を返します。propertyNameは、separator、title、prettyUrl、prettyUrlPath、depth、leaf、childCount、navigable、selectedまたはcurrentlySelectedのいずれかです。

F.7.1 例: ナビゲーションに対するEL式の使用

この項では、親ポータルの共有ページから2つのサブポータルのアクティビティを監視する場合のナビゲーション・モデルの使用例を示します。この例では、アクティビティ・ストリーム・タスク・フローを含むページを使用します。タスク・フローのコンテンツは、ページに渡されるパラメータによって決定されます。ナビゲーション・モデルには、このページにリンクする2つのリンクが含まれます。1つ目のリンクはsubportal1をパラメータとして渡すので、アクティビティ・ストリーム・タスク・フローにはsubportal1のアクティビティが表示されます。2つ目のリンクはsubportal2をパラメータとして渡します。つまり、ページのコンテンツは、ナビゲーションでクリックするリンクによって異なります。

ELを使用して親ポータルからサブポータルのアクティビティを監視するナビゲーション・モデルを構築するには:

1. WebCenter Portalで、ポータルと2つのサブポータルを作成します。サブポータルの作成時には、使用する内部名(subportal1やsubportal2など)をメモしておきます。

2. ポータルで、Subportal Activityという名前のページを作成し、アクティビティ・ストリーム・タスク・フローをこのページに追加します。タスク・フローの追加方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のコンポーネントのページへの追加に関する項を参照してください。

3. 新しく作成したページ用に、ページ・パラメータ(subportalName)を作成します。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のページ・パラメータの追加または変更に関する項を参照してください。
次のELをパラメータの値として使用します。

#{empty navigationContext.currentNavigationModel.currentSelection.parameters.subspaceName ? 'subportal1' : navigationContext.currentNavigationModel.currentSelection.parameters.subspaceName}

ここで、'subportal1'は、ページ・パラメータ用にナビゲーションから何も渡されなかった場合に使用される値です。

4. アクティビティ・ストリーム・タスク・フローの設定を編集します。「コンポーネント・プロパティ」ダイアログの「パラメータ」タブで、「スペース」パラメータに対して式ビルダーを開き、「ページ・パラメータ」に対してsubportalNameを選択します。

5. 「表示オプション」タブでは、「テキスト」フィールドで、アクティビティを表示するサブポータルの名前を示す値を指定します。たとえば、次のELを使用します。

#{bindings.subspaceName} Activity

6. 自分のページを表示するポータルを渡すナビゲーションを構築します。

1. ポータル・デフォルト・ナビゲーション・モデルに基づいてナビゲーションを作成します。

2. リンク・ナビゲーション・アイテムを追加することで、ナビゲーションを編集します。

3. 「ターゲット」タブの「名前」フィールドで、リンク・アイテムの名前をSub Portal 1と指定します。

4. 「パス」フィールドで、「Subportal Activity」ページを選択します。

5. 「パラメータ」タブの「subportalName」フィールドで、最初のサブポータルの内部名、subportal1を指定します。

7. 新しく作成されたリンクをコピーして、それを編集し、2つ目のサブポータルsubportal2に対するリンクを作成します。
編集時、「ターゲット」タブで変更する必要があるのは、リンクの「名前」のみです。「パラメータ」タブでは、「subportalName」パラメータの値をsubportal2 (2つ目のサブポータルの内部名)に変更する必要があるだけです。

8. 新しく作成されたナビゲーションが、ポータルの現在のナビゲーションとして設定されていることを確認します。

9. これで、共有のSubportal Activityページに移動できる2つのリンクが作成されます。クリックしたリンクに応じて、ポータルの異なる値が渡されます。

F.8 ツールとサービスに関連するEL

表F-5は、ツールとサービスに関連するEL式をリストし、それらが提供する機能のタイプを説明します。ここに示すELは、WebCenter Portalで構築されたポータルとJDeveloperで構築されたPortal Frameworkアプリケーションの両方に適用されます。

表F-6 ツールとサービスに関連するEL式

式

機能

#{webcenterService['serviceId']}

サービスID serviceIdによって表されるWebCenter Portalツールまたはサービスを表すoracle.webcenter.framework.service.Serviceオブジェクト。たとえば、次のELはドキュメント・サービスを返します。

#{webcenterService['oracle.webcenter.doclib']}

サービスIDについては、表F-7を参照してください。

#{webcenterService['serviceId'].configured}

サービスID serviceIdによって表されるWebCenter Portalツールまたはサービスが、現在のPortal Frameworkアプリケーションで使用するように構成されているかどうかを示すブール値を返します。たとえば、次のELは、アプリケーションでディスカッションを使用できる場合はtrue、それ以外の場合はfalseを返します。

#{webcenterService['oracle.webcenter.collab.forum'].configured}

サービスIDについては、表F-7を参照してください。

#{sessionContext['oracle.webcenter.collab.forum'].groupInfo['portalName'].forumId}

指定されたポータル・ディスカッション・フォーラムのフォーラムIDを返します。portalNameのかわりにポータル名を入力します。

#{sessionContext['oracle.webcenter.collab.forum'].groupInfo['portalName'].categoryId}

指定されたポータル・ディスカッション・フォーラムのカテゴリIDを返します。portalNameのかわりにポータル名を入力します。

表F-7は、WebCenter Portalのツールとサービスに関連付けられているサービスIDをリストしています。

表F-7 サービスとツールのID

サービス/ツール

ID

お知らせ

oracle.webcenter.collab.announcement

ディスカッション

oracle.webcenter.collab.forum

ドキュメントとWiki

oracle.webcenter.doclib

イベント

oracle.webcenter.collab.calendar.community

インスタント・メッセージおよびプレゼンス(IMP)

oracle.webcenter.collab.rtc

リンク

oracle.webcenter.relationship

リスト

oracle.webcenter.list

メール

oracle.webcenter.collab.mail

通知

oracle.webcenter.notification

ページ

oracle.webcenter.page

ピープル・コネクション: アクティビティ・ストリーム

oracle.webcenter.activitystreaming

ピープル・コネクション: コネクション

oracle.webcenter.peopleconnections.connections

ピープル・コネクション: フィードバック

oracle.webcenter.peopleconnections.kudos

ピープル・コネクション: メッセージ・ボード

oracle.webcenter.peopleconnections.wall

ピープル・コネクション: プロファイル

oracle.webcenter.peopleconnections.profile

投票

oracle.webcenter.collab.survey

最近のアクティビティ

oracle.webcenter.recentactivity

アクティビティ・グラフ

oracle.webcenter.activitygraph

RSS

oracle.webcenter.rss

検索

oracle.webcenter.search

タグ

oracle.webcenter.tagging

ブログ

oracle.webcenter.blog

ワークリスト

oracle.webcenter.worklist

F.9 ドキュメントに関連するEL

表F-8は、ドキュメントに関連するEL式をリストし、それらが提供する機能のタイプを説明します。ここに示すELは、WebCenter Portalで構築されたポータルとJDeveloperで構築されたPortal Frameworkアプリケーションの両方に適用されます。

表F-8 ドキュメントに関連するEL式

式

機能

#{documentsService.defaultConnectionName}

デフォルトのコンテンツ・リポジトリ接続名を取得します。接続名が定義されていない場合、nullを返します。

#{documentsService.configured}

ドキュメント機能が構成されているかどうかを確認します。ドキュメント機能が構成されている場合はtrue、それ以外の場合はfalseを返します。

F.10 ピープル・コネクションに関連するEL

表F-9は、ピープル・コネクションのプロファイル機能に関連するEL式をリストし、それらが提供する機能のタイプを説明します。ここに示すELは、WebCenter Portalで構築されたポータルとJDeveloperで構築されたPortal Frameworkアプリケーションの両方に適用されます。

注意:

エントリsecurityContext.userNameは、すべてのプロファイル式に含まれ、現在のユーザーの名前を返します。情報はユーザーのプロファイルに存在する場合にのみ返されることにも注意してください。情報がプロファイルに含まれない場合、null値が返されます。

表F-9 ピープル・コネクション(プロファイル)に関連するEL式

式

機能

#{webCenterProfile[userName].ManagerDisplayName}

#{webCenterProfile[securityContext.userName].ManagerDisplayName}

現在のユーザーが知ることを許可されている場合、指定されたユーザーのマネージャの表示名。

#{webCenterProfile[userName].employeeNumber}

#{webCenterProfile[securityContext.userName].employeeNumber}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの従業員番号。

#{webCenterProfile[userName].businessPOBox}

#{webCenterProfile[securityContext.userName].businessPOBox}

現在のユーザーが知ることを許可されている場合、指定されたユーザーに関連付けられている私書箱番号。

#{webCenterProfile[userName].timeZone}

#{webCenterProfile[securityContext.userName].timeZone}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの勤務先が存在するタイムゾーン。

#{webCenterProfile[userName].description}

#{webCenterProfile[securityContext.userName].description}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの説明(「プロファイル」の「自己紹介」より)。

#{webCenterProfile[userName].department}

#{webCenterProfile[securityContext.userName].department}

現在のユーザーが知ることを許可されている場合、指定されたユーザーが所属する部門。

#{webCenterProfile[userName].businessPager}

#{webCenterProfile[securityContext.userName].businessPager}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの勤務先ページャ番号。

#{webCenterProfile[userName].businessCity}

#{webCenterProfile[securityContext.userName].businessCity}

現在のユーザーが知ることを許可されている場合、指定されたユーザーが勤務する市区町村。

#{webCenterProfile[userName].maidenName}

#{webCenterProfile[securityContext.userName].maidenName}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの旧姓。

#{webCenterProfile[userName].businessFax}

#{webCenterProfile[securityContext.userName].businessFax}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの勤務先FAX番号。

#{webCenterProfile[userName].dateofHire}

#{webCenterProfile[securityContext.userName].dateofHire}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの入社日。

#{webCenterProfile[userName].nameSuffix}

#{webCenterProfile[securityContext.userName].nameSuffix}

現在のユーザーが知ることを許可されている場合、ユーザーの名前に追加される情報(Esq.、Jr.など)。

#{webCenterProfile[userName].middleName}

#{webCenterProfile[securityContext.userName].middleName}

現在のユーザーが知ることを許可されている場合、指定されたユーザーのミドル・ネーム。

#{webCenterProfile[userName].homePhone}

#{webCenterProfile[securityContext.userName].homePhone}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの自宅電話番号。

#{webCenterProfile[userName].employeeType}

#{webCenterProfile[securityContext.userName].employeeType}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの従業員タイプ分類(IC4など)。

#{webCenterProfile[userName].lastName}

#{webCenterProfile[securityContext.userName].lastName}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの姓。

#{webCenterProfile[userName].dateofBirth}

#{webCenterProfile[securityContext.userName].dateofBirth}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの誕生日。

#{webCenterProfile[userName].businessState}

#{webCenterProfile[securityContext.userName].businessState}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの勤務先が存在する都道府県。

#{webCenterProfile[userName].homeAddress}

#{webCenterProfile[securityContext.userName].homeAddress}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの自宅の住所。

#{webCenterProfile[userName].businessStreet}

#{webCenterProfile[securityContext.userName].businessStreet}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの勤務先番地。

#{webCenterProfile[userName].businessPostalCode}

#{webCenterProfile[securityContext.userName].businessPostalCode}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの郵便番号。

#{webCenterProfile[userName].initials}

#{webCenterProfile[securityContext.userName].initials}

現在のユーザーが知ることを許可されている場合、指定されたユーザーのイニシャル。

#{webCenterProfile[userName].firstName}

#{webCenterProfile[securityContext.userName].firstName}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの名。

#{webCenterProfile[userName].organizationalUnit}

#{webCenterProfile[securityContext.userName].organizationalUnit}

現在のユーザーが知ることを許可されている場合、指定されたユーザーが所属する組織単位(D10など)。

#{webCenterProfile[userName].wirelessAcctNumber}

#{webCenterProfile[securityContext.userName].wirelessAcctNumber}

現在のユーザーが知ることを許可されている場合、指定されたユーザーのワイヤレス・アカウント番号。

#{webCenterProfile[userName].businessPhone}

#{webCenterProfile[securityContext.userName].businessPhone}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの勤務先電話番号。

#{webCenterProfile[userName].businessCountry}

#{webCenterProfile[securityContext.userName].businessCountry}

現在のユーザーが知ることを許可されている場合、指定されたユーザーが配属されている国。

#{webCenterProfile[userName].preferredLanguage}

#{webCenterProfile[securityContext.userName].preferredLanguage}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの優先言語。

#{webCenterProfile[userName].displayName}

#{webCenterProfile[securityContext.userName].displayName}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの表示名。

#{webCenterProfile[userName].userName}

#{webCenterProfile[securityContext.userName].userName}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの実際の名前。

#{webCenterProfile[userName].title}

#{webCenterProfile[securityContext.userName].title}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの役職名。

#{webCenterProfile[userName].businessEmail}

#{webCenterProfile[securityContext.userName].businessEmail}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの勤務先電子メール・アドレス。

#{webCenterProfile[userName].organization}

#{webCenterProfile[securityContext.userName].organization}

現在のユーザーが知ることを許可されている場合、指定されたユーザーが所属する組織(Salesなど)。

#{webCenterProfile[userName].businessMobile}

#{webCenterProfile[securityContext.userName].businessMobile}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの携帯電話番号。

#{webCenterProfile[userName].expertise}

#{webCenterProfile[securityContext.userName].expertise}

現在のユーザーが知ることを許可されている場合、指定されたユーザーの専門。

F.11 パーソナライズに関連するEL

表F-10は、パーソナライズに関連するEL式をリストし、それらが提供する機能のタイプを説明します。ここに示すELは、WebCenter Portalで構築されたポータルとJDeveloperで構築されたPortal Frameworkアプリケーションの両方に適用されます。

表F-10 パーソナライズに関連するEL式

式

機能

#{p13nContext.reset}

起動元のコンテキスト・オブジェクトの状態をクリアします。

他の例:

#{p13nContext.conductor['ConductorConnection'].reset}

#{p13nContext.conductor['ConductorConnection'].namespaces['MyNamespace'].reset}

#{p13nContext.properties['PropertiesConnection'].namespaces['MyNamespace'].setDefinitions['MyPropertySetDefinition'].set['MyPropertySet'].reset}

#{p13nContext.properties['PropertiesConnection'].namespaces['MyNamespace'].setDefinitions['MyPropertySetDefinition'].set['MyPropertySet'].update}

フォームにバインドされている場合、設定されているプロパティを新しい値で更新します。

updateメソッドはコンテキストPropertySetContextのみに適用され、フォームベースのアクションの一部としてのみコールできます。

#{p13nContext.properties['PropertiesConnection'].namespaces['MyNamespace'].setDefinitions['MyPropertySetDefinition'].set['MyPropertySet'].results}

コンテキスト・オブジェクトの結果を取得します。PropertySetContextの場合、指定された名前のプロパティ・セットおよびプロパティ・セット定義を取得します(存在する場合)。

ScenarioExecutionContextとParameterizedScenarioExecutionContextの場合、シナリオ結果を取得します。

他の例:

#{p13nContext.conductor['ConductorConnection'].namespaces['MyNamespace'].scenario['MyScenario'].results}

#{p13nContext.conductor['ConductorConnection'].namespaces['MyNamespace'].scenario['MyScenario'].withInput['input1=val1;input2=value2;input3=value3'].results}

#{p13nContext.conductor['PropertiesConnection'].namespaces['MyNamespace'].scenario['MyScenario'].results}

指定された名前のシナリオを実行します。

#{p13nContext.conductor['ConductorConnection'].namespaces['MyNamespace'].scenario['MyScenario'].withInput['input1=val1;input2=value2;input3=value3'].results}

入力パラメータで指定された名前のシナリオを実行します。入力パラメータは、次の形式に従っている必要があります。

<paramOne>=<valueOne>;<paramTwo>=<valueTwo>;<paramThree>=<valueThree>

各パラメータ名および値は、セミコロンで区切ります。

withInputメソッドはコンテキストScenarioExecutionContextのみに適用されます。

#{p13nContext.conductor['ConductorConnection'].namespaces[myManagedBean.namespace].scenario[myManagedBean.scenario].isError}

現在のコンテキスト・オブジェクトでエラーが発生したかどうかを判断します。

isErrorメソッドはPropertySetContextと~ScenarioExecutionContextのみに適用されます。

他の例:

#{p13nContext.properties['PropertiesConnection'].namespaces['MyNamespace'].setDefinitions['MyPropertySetDefinition'].set['MyPropertySet'].isError}

#{p13nContext.conductor['ConductorConnection'].namespaces['myManagedBean.namespace'].scenario['myManagedBean.scenario'].errorMessage}

現在のコンテキスト・オブジェクトでエラーが発生した場合は、エラー・メッセージを返します。

errorMessageメソッドはPropertySetContextと~ScenarioExecutionContextのみに適用されます。

他の例:

#{p13nContext.properties['PropertiesConnection'].namespaces['MyNamespace'].setDefinitions['MyPropertySetDefinition'].set['MyPropertySet'].errorMessage}

F.12 偽装に関連するEL

表F-11は、WebCenter Portal偽装に関連するEL式をリストし、それらが提供する機能のタイプを説明します。ここに示すELは、WebCenter Portalで構築されたポータルとJDeveloperで構築されたPortal Frameworkアプリケーションの両方に適用されます。

これらのELの使用方法の詳細は、第74.19項「WebCenter Portal偽装ELおよびAPIの使用」を参照してください。

表F-11 偽装に関連するEL式

式

機能

#{WCSecurityContext.impersonationConfigured}

現在のドメインで偽装が有効化されているかどうかを返します。

このELは、偽装セッションの終了が早すぎることが原因でエラーが発生したのかどうかを判別したり、セッションが終了したことを示す追加のインジケータを提供する場合に便利です。

#{WCSecurityContext.userInImpersonationSession}

現在のユーザーが偽装セッションにあるのかどうかを返します。

このELを使用して、コンテンツを保護し、偽装セッション中はアクセスできないようにレンダリングできます。たとえば、ページ上の管理タスク・フローのレンダリングされた属性をこのELにマップして、ユーザーが偽装セッションでタスク・フローを表示しない場合、タスク・フローのレンダリングのみを行うことができます。

#{WCSecurityContext.currentImpersonator}

このELを使用すると、ページ・テンプレートを変更して偽装者を表示したり、特定の偽装者のみにアクセスできるようにコンテンツをレンダリングできます。

F.13 コンポーザに関連するEL式

表F-12は、コンポーザに関連するEL式を示しています。これらのEL式は、WebCenter Portalを使用して構築されたポータルとOracle JDeveloperで構築されたPortal Frameworkアプリケーションの両方で使用できます。

表F-12 コンポーザに関連するEL式

式

機能

#{composerContext.inEditMode}

現在のページが表示モードなのか編集モードなのかを決定します。

例:

<af:outputText id="ot1"
value="#{composerContext.inEditMode ne
true ? 'View mode' : 'Edit mode'} />

この例は、ページが表示モードの場合、ADF FacesのoutputTextコンポーネントがView modeを返し、ページが編集モードの場合はEdit modeを返すことを示しています。

#{changeModeBean.inEditMode}

childCreation属性は、ポップアップ・ダイアログの子をコンポーザで表示できるかどうかを決定します。デフォルトでは、この属性はdeferredに設定されており、ポップアップ・ダイアログの子を表示する際に使用できます。値をimmediateに設定すると、ポップアップ・ダイアログの子を表示できます。

例:

<af:popup childCreation="#{changeModeBean.inEditMode
? 'immediate' : 'deferred'}" />

childrenCreation属性をimmediateに設定すると、パフォーマンスに影響を与えます。ページ上でポップアップを使用する必要がない場合には、deferredのデフォルト設定を使用するとCPUのペナルティと不要なメモリーの使用を避けることができます。ポップアップは非モーダルで表示されるため、アプリケーションではエラーなしでそのファクトを処理できる必要があります。

F.13.1 例: コンポーザに対するEL式の使用

この項では、表示モードと編集モードで異なるページを表示するためのEL式の使用例を示します。自分のページのうちの1つ(Page1)について、表示モードでは別のページ(Page2)を表示することを考えてみます。ただし、Page1の編集中は、Page2ではなく、www.example.comというWebサイトを表示させます。次の形式のELを使用できます。

#{ composerContext.inEditMode ? 'http://www.example.com' : 'url_of_Page2' }

このELにより、ページが編集モードのときは指定されたWebサイトが表示され、表示モードのときにはPage2が表示されます。

次の手順は、ページ・モードによって異なるページを表示する方法を示しています。

1. ページ・エディタ(コンポーザ)でPage1という名前のページを開きます。

2. デザイン・ビューで、リソース・カタログの「Web開発」をクリックします。

3. 「Webページ」の横に表示されている「追加」をクリックします。

4. 新しく追加されたWebページの「編集」アイコンをクリックします。

5. 「コンポーネント・プロパティ」ダイアログの「表示オプション」タブで、「ソース」フィールドに、次の形式で値を入力します。

#{ composerContext.inEditMode ? 'website_url' : 'url_of_Page2' }

6. 「OK」をクリックします。
コンポーザでは、指定したWebサイトがPage1に表示されます。ページを保存して閉じます。Page1にはPage2が表示されます。

F.14 WebCenter Portalのみに関連するEL式

この項には次のサブセクションが含まれます:

- 第F.14.2項「式エディタのシード済の式」

- 第F.14.3項「WebCenter Portal情報に関連するEL式」

- 第F.14.4項「アセットに関連するEL式」

- 第F.14.5項「特定のポータルに関連するEL式」

- 第F.14.6項「特定のページに関連するEL式」

- 第F.14.7項「ポータル・イベント・コンテキストに関連するEL」

- 第F.14.8項「実用的なEL式」

F.14.1 ポータル問合せでの自由形式のJPQL WHERE句およびSORT句の非サポート

JPQL WHERE句に基づいてポータルを問い合せるためにEL式を使用していた場合、WebCenter Portalでは、自由形式のJPQL WHERE句がサポートされないことを認識する必要があります。かわりに、構造化されたWHERE句を使用します。自由形式のSORT句もサポートされません。かわりに、構造化された方法でポータル問合せのソート基準を指定します。

たとえば、ポータル問合せに対してWHERE句を形成するために、次の構文を使用していたとします。

#{spaceContext.spacesQuery.unionOf['ALL_QUERIABLE'].whereClause['sp.keywords like \'forquery%\' and not
(sp.discoverable is null or sp.discoverable =  \'N\')'].listSpaces}

これからは、WHERE句を形成するには、次の構文を使用する必要があります。

#{spaceContext.spacesQuery.unionOf['ALL_QUERIABLE'].where[wCond['sp.keywords']['like']['forquery']['and'][wCond['sp.discoverable']
['is']['null']['or'][wCond['sp.discoverable']['=']['N']]['not']]].listSpaces}

ここで:

- wCondはアトミック条件で、wCond[p][op][v]と表すことができます。
ここで:

- pはポータル属性です(WcSpaceHeaderのフィールド。下記の箇条書きリストを参照)。

- opは、JPQL比較演算子の制限されたセット('=', 'like', '!=', '<', '>', '<=', '>=', 'is')のいずれかです。

- vは、演算子opによって解釈が決まる文字列です。
この演算子がisの場合、vには文字列'null'または'not null'を設定でき、JPQLでそれぞれnullまたは非nullであることをチェックされる属性として、条件が認識されます。この演算子がそれ以外である場合、vはリテラルとして解釈され、条件はリテラル値と比較される属性として認識されます。

WHERE句では、次のようなWcSpaceHeaderで定義されるフィールドのいずれかを使用できます。

- closed

- createDate

- createdBy

- description

- discoverable

- displayName

- keywords

- icon

- logo

- lastUpdateDate

- selfSubEnabled

- rssEnabled

- spaceGuid

- spaceId

- spaceOffline

- spacePublic

- spacesType

- spacesUser

- updatedBy

- version

- parentGuid

- securityParentGuid

- ancestorPath

- seeded

- groupSpaceMemCount

- spは、ポータルWcSpaceHeaderのJPAエンティティを表しています。
たとえば、ユーザー名がmontyで始まり、自己サブスクリプションが有効になっているユーザーによって作成されたすべてのポータルに対するフィルタを作成するには、次の条件を使用できます。

sp.createdBy like 'monty%' and not (sp.selfSubEnabled is null or sp.selfSubEnabled = 'N')

- and、or、not (wCondとともに使用)は、条件のタイプです。
ここで:

- andは、2つの条件の論理積を表します。論理積の条件は、cond1['and'][cond2]と表すことができます。ここで、cond1とcond2は、結合する2つの条件を表す式です。

- orは、分離条件を表します。分離条件は、cond1['or'][cond2]と表すことができます。ここで、cond1とcond2は、分離する2つの条件を表す式です。

- notは、否定条件を表します。否定条件は、cond['not']と表すことができます。ここで、condは、結合する条件を表す式です。

たとえば、次のELは、ユーザー名がmontyで始まり、自己サブスクリプションが有効になっているユーザーによって作成されたすべてのポータル(現在のユーザーがアクセス可能なポータル)のリストを返します。

#{spaceContext.spacesQuery.unionOf.ALL_QUERIABLE.where[wCond['sp.createdBy']
['like']['monty%'] ['and'] [wCond['sp.selfSubEnabled']['is']['null'] ['or'] [wCond['sp.selfSubEnabled']['=']['N']] ['not'] ] ].listSpaces}

次に、ポータル問合せに対してSORT条件を指定するために、次の構文を使用していたとします。

#{spaceContext.spacesQuery.unionOf['ALL_QUERIABLE'].sortCriteria
['sp.discoverabledesc, sp.keywords'].listSpaces}

これからは、ポータル問合せに対してSORT条件を指定するには、次の構文を使用する必要があります。

#{spaceContext.spacesQuery.unionOf['ALL_QUERIABLE'].sort['sp.discoverable']
['desc'].sort['sp.keywords']['asc'].listSpaces}

ここで:

- spは、ポータルWcSpaceHeaderのJPAエンティティを表しています(WcSpaceHeaderで定義されるフィールドは、前述の箇条書きリストを参照)。

- descとascは、それぞれ降順と昇順のソート順序を定義します。

たとえば、次の問合せは、ユーザーがアクセス可能なポータルのリストを返し、フィールドdiscoverableおよびlastUpdateDateを基準に結果セットをソートします。

#{spaceContext.spacesQuery.unionOf['ALL_QUERIABLE'].sort['sp.discoverable']
['asc'].sort['sp.lastUpdateDate']['desc'].listSpaces}

Oracleでは、既存の自由形式のJPQL WHERE句とSORT句をすべて新しい構文に変換することを強くお薦めします。

なんらかの理由で既存の構文を維持する必要がある場合は、WebCenter Portal管理者が、webcenter-config.xml.xmlファイル内で次のグローバル・フラグを設定することで、自由形式のJPQLに対するサポートを明示的に有効にする必要があります。

oracle.webcenter.spaces.query.DIRECT_JPQL_CLAUSE_SUPPORTED

注意:

webcenter-config.xml.xmlファイルは、webcenter-config.xmlのカスタマイズ・ドキュメントです。

従来の自由形式のWHERE句とSORT句のサポートを継続するには、このフラグをtrueに設定します。このオプションをtrueに設定すると、WebCenter Portalログ・ファイルには警告が格納されます。

webcenter-config.xml.xmlでこのフラグを設定するには:

1. MDSから最新のwebcenter-config.xml.xmlをエクスポートします。
例:

exportMetadata(application='webcenter', server='WC_Spaces', toLocation='/tmp/mydata',docs='/oracle/webcenter/webcenterapp/metadata/mdssys/cust/site/webcenter/webcenter-config.xml.xml')

2. テキスト・エディタでファイルを開き、必要に応じて設定を変更します。
例:

<mds:insert parent="webcenter(xmlns(webcenter=http://
xmlns.oracle.com/webcenter/webcenterapp))/webcenter:custom-attributes"
position="last">      <attribute name=
"oracle.webcenter.spaces.query.DIRECT_JPQL_CLAUSE_SUPPORTED"
xmlns="http://xmlns.oracle.com/webcenter/webcenterapp">
<description/>
<type>java.lang.String</type>
<value>true</value>
<visible/>
</attribute>
</mds:insert>

3. webcenter-config.xml.xmlを保存して閉じます。

4. 更新後のwebcenter-config.xml.xmlファイルをWebCenter Portalにインポートします。
例:

importMetadata(application='webcenter', server='WC_Spaces', fromLocation='/tmp/mydata', docs='/oracle/webcenter/webcenterapp/metadata/mdssys/cust/site/webcenter/webcenter-config.xml.xml')

F.14.2 式エディタのシード済の式

式エディタで、「値の選択」というオプションを選択すると、ダイアログ内のテキスト・ボックスにシード済のEL式を移入できます。まず式のカテゴリを選択し、次に式から返される情報のタイプを選択します。選択内容に関連するELが、ダイアログ下部のテキスト・ボックスに表示されます(図F-7)。

図F-7 式エディタの「値の選択」の下のオプション

この項は、カテゴリごとの項に分類されます。各項では、そのカテゴリに関連付けられるELをリストし、説明しています。

この項には次のサブセクションが含まれます:

- 第F.14.2.1項「アプリケーション情報のシード済EL」

- 第F.14.2.2項「アセット情報のシード済EL」

- 第F.14.2.3項「ページ情報のシード済EL」

- 第F.14.2.4項「ページ・パラメータのシード済EL」

- 第F.14.2.5項「ポータル情報のシード済EL」

- 第F.14.2.6項「ポータル・ページ情報のシード済パス」

- 第F.14.2.7項「システムのシード済EL」

- 第F.14.2.8項「ユーザー情報のシード済EL」

- 第F.14.2.9項「WebCenterイベントのシード済EL」

F.14.2.1 アプリケーション情報のシード済EL

アプリケーション情報のシード済EL式は、WebCenter Portalに関連する値を返します。たとえば、#{WCAppContext.application.applicationConfig.title}という式は、WebCenter Portal管理の「一般」ページで指定されるアプリケーション名を返します。

関連項目:

アプリケーションに関連するその他のEL式は、第F.14.3項「WebCenter Portal情報に関連するEL式」を参照してください。

表F-13は、「アプリケーション情報」カテゴリで使用できるシード済EL式をリストし、返される値のタイプの例を示しています。

表F-13 「アプリケーション情報」のシード済EL式

オプション

式

戻り値の例

現在のスコープ

#{serviceCtx.scope}

Scope[name=standards, guid=sa78185d3_9d65_49ab_ac1d_4809380d0b30]

現在のページ・テンプレート・スコープ

#{WCAppContext.currentScope}

Scope[name=standards, guid=sa78185d3_9d65_49ab_ac1d_4809380d0b30]

以前に設定されたページ・テンプレート

#{WCAppContext.previouslySetPageTemplate}

Fusion Side Navigation

アプリケーション

#{WCAppContext.application}

oracle.webcenter.webcenterapp.internal.view.shell.WCApplication

アプリケーションURL

#{WCAppContext.applicationURL}

http://host:port/webcenter

現在のWebCenter Portal URI

#{WCAppContext.currentWebCenterURI}

/oracle/webcenter/page/scopedMD/GUID/businessRolePages/Page3.jspx?wc.contextURL=%2Fspaces

アプリケーション構成

#{WCAppContext.application.applicationConfig}

oracle.webcenter.webcenterapp.beans.WebCenterMetadataImpl@123db9d

アプリケーション構成タイトル

#{WCAppContext.application.applicationConfig.title}

WebCenter

アプリケーション構成ロゴ

#{WCAppContext.application.applicationConfig.logo}

/oracle/webcenter/webcenterapp/metadata/images/logo.gif

アプリケーション構成ヘルプ・ページ

#{WCAppContext.application.applicationConfig.helpPage}

/webcenterhelp/spaces?topic=welcome_main

アプリケーション構成著作権メッセージ・カスタム値

#{WCAppContext.application.applicationConfig.copyrightMessage.customValue}

http://www.example.com/html/copyright.html

アプリケーション構成プライバシ・ポリシーURL

#{WCAppContext.application.applicationConfig.privacyPolicyUrl}

http://www.example.com/html/privacy.html

アプリケーション構成スキン

#{WCAppContext.application.applicationConfig.skin}

webcenterfx

たとえば、現在のページのURLをコピーおよび共有できるようにするリンクをポータルのすべてのページに表示する場合を考えてみます。HTMLマークアップ・アイテムをページ・テンプレートに追加して、ページURLを返すELを追加できます。

次の手順は、ELを使用してページURLを取得する方法を示しています。

1. カスタム・ページ・テンプレートを編集モードで開きます。

2. デザイン・ビューで、リソース・カタログの「Web開発」をクリックします。

3. 「HTMLマークアップ」の横の「追加」をクリックします。

4. 新しく追加されたHTMLマークアップの「編集」アイコンをクリックします。

5. 「コンポーネント・プロパティ」ダイアログの「表示オプション」タブで、「値」フィールドに、次のELを入力します。

<a href="javascript:{
var returnvalue = prompt( '#{pageDocBean.title}
URL','#{WCAppContext.applicationURL}/faces#{WCAppContext.currentWebCenterURI}');
}">Share Link</a>

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

7. ページ・テンプレートをポータルに適用します。

F.14.2.2 アセット情報のシード済EL

アセット情報のシード済EL式は、WebCenter Portalリソース(テンプレート、スタイル、リソース・カタログなど)に関連する値を返します。たとえば、#{srmContext.id['ResourceID'].singleResult}という式は、指定されたGUIDのアセットを返します。

関連項目:

アセットに関連するその他のEL式は、第F.14.4項「アセットに関連するEL式」を参照してください。

表F-14は、「アセット情報」カテゴリで使用できるシード済EL式をリストし、返される値のタイプの例を示しています。

表F-14 「アセット情報」のシード済EL式

オプション

式

戻り値の例

アセットID

#{srmContext[wCond['id']['like']['ResourceID']].singleResult}

id:gsr3396194a_3a72_44d6_90b4_57fd6efe4ff7 resourceScope:Scope[name=defaultScope, guid=s8bba98ff_4cbb_40b8_beee_296c916a23ed] resourceType:siteTemplate serviceId:oracle.webcenter.siteresources.sitetemplate category: displayName:Fusion Side Navigation displayNameKey:SITE_TEMPLATE_FUS_SIDE_STRETCH_NAV_DN description:Stretching Page Layout with Side Navigation. Use Fusion FX Skin. descriptionKey:SITE_TEMPLATE_FUS_SIDE_STRETCH_NAV_DESC contentDirectory:/oracle/webcenter/siteresources/shared metadataFile: jspx:/oracle/webcenter/webcenterapp/view/templates/WCSiteTemplateSideNavStretch.jspx pageDef:/oracle/webcenter/webcenterapp/bindings/pageDefs/oracle_webcenter_webcenterapp_view_templates_WCSiteTemplateSideNavStretchPageDef.xml iconURI: excludeFrom: usesCustomSecurity:false visible:TRUE seeded:true createdBy:system createdDate:Fri Jul 02 05:44:19 PDT 2010 modifiedBy:system resourceBundle:oracle.webcenter.sitetemplate.view.resource.SiteTemplateBundle modifiedDate:Fri Jul 02 05:44:19 PDT 2010 logoUrl:/adf/webcenter/srm_dflt_logo_qualifier.png attributes:[]

表示名

#{srmContext[wCond['displayName']['like']['DisplayName']].singleResult}

戻り値の例は、「アセットID」を参照してください。

説明

#{srmContext[wCond['description']['like']['Description']].singleResult}

戻り値の例は、「アセットID」を参照してください。

作成日

#{srmContext[wCond['createdDate']['like']['CreationDate']].singleResult}

戻り値の例は、「アセットID」を参照してください。

変更者

#{srmContext[wCond['modifiedBy']['like']['UserName']].singleResult}

戻り値の例は、「アセットID」を参照してください。

更新日

#{srmContext[wCond['modifiedDate']['like']['ModifiedDate']].singleResult}

戻り値の例は、「アセットID」を参照してください。

アセット・スコープ

#{srmContext[wCond['resourceScope']['like']['ResourceScope']].singleResult}

戻り値の例は、「アセットID」を参照してください。

F.14.2.3 ページ情報のシード済EL

ページ情報のシード済EL式は、WebCenter Portalページに関連する値を返します。たとえば、#{pageDocBean.createdBy}という式は、現在のページの作成者のユーザー名を返します。

表F-15は、「ページ情報」カテゴリで使用できるシード済EL式をリストし、返される値のタイプの例を示しています。

表F-15 「ページ情報」のシード済EL式

オプション

式

戻り値の例

役職

#{pageDocBean.title}

Welcome Page (BRP)

作成者

#{pageDocBean.createdBy}

j.doe

作成日文字列

#{pageDocBean.createDateString}

2010-11-17T13:27:52

最終更新者

#{pageDocBean.lastUpdatedBy}

j.smith

最終更新日文字列

#{pageDocBean.lastUpdateDateString}

2010-11-17T13:27:52

ページ・パス

#{pageDocBean.pagePath}

/oracle/webcenter/page/scopedMD/GUID/businessRolePages/Page3.jspx

名前

#{pageDocBean.name}

Page3.jspx

UI CSSスタイル

#{pageDocBean.UICSSStyle}

WCSchemeCustom

UIスキームの背景イメージ

#{pageDocBean.UISchemeBGImage}

#{facesContext.externalContext.requestContextPath}/adf/oracle/webcenter/page/images/clouds.png

UIスキームの背景色文字列

#{pageDocBean.UISchemeBGColorString}

null

ページ権限

#{pageDocBean.pagePermission}

oracle.webcenter.page.model.security.CustomPagePermission

ページ・セキュリティ・ターゲット

#{pageDocBean.pageSecurityTarget}

oracle_webcenter_page_scopedMD_sa78185d3_9d65_49ab_ac1d_4809380d0b30_COIHomePageDef

F.14.2.4 ページ・パラメータのシード済EL

ページ・パラメータのシード済EL式は、WebCenter Portalページ・パラメータに関連する値を返します。エディタには、現在のページで定義されているすべてのパラメータが表示されます。パラメータが定義されていない場合、「ページ・パラメータ」カテゴリは使用できません。

たとえば、シード済のページ・スタイル「3列」には、5つのシード済パラメータが表示されます(表F-16を参照)。widthパラメータは、各列に割り当てられる、幅全体の割合(パーセント)を表します。showパラメータは、ページのヘッダーとフッターがレンダリングされるかどうかを指定します。シード済ページ・スタイルの「空白」、「ホーム・ページ」、「左を狭く」、「右を狭く」は、すべて同じシード済ページ・パラメータを提供します(表F-16を参照)。さらに、どのページも独自のカスタム・ページ・パラメータを持つことができます。

シード済でもカスタムでも、使用可能なページ・パラメータは、「ページ・パラメータ」カテゴリの式エディタに表示されます。

関連項目:

ページ・パラメータの作成および使用方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のコンポーネントとページ・パラメータの作成に関する項を参照してください。

表F-16は、「3列」、「空白」、「ホーム・ページ」、「左を狭く」、「右を狭く」のスタイルに基づくページに対して、「ページ・パラメータ」カテゴリで使用できるEL式をリストしています。それぞれの戻り値のタイプも例示しています。

表F-16 「ページ・パラメータ」のシード済EL式

オプション

式

戻り値の例

leftWidth

#{bindings.leftWidth}

25%

centerWidth

#{bindings.centerWidth}

50%

rightWidth

#{bindings.rightWidth}

25%

showHeader

#{bindings.showHeader}

false

showFooter

#{bindings.showFooter}

false

F.14.2.5 ポータル情報のシード済EL

ポータル情報のシード済EL式は、(ホーム・ポータル以外の)ポータルに関連する値を返します。たとえば、#{spaceContext.space['portalName'].children}という式は、名前指定された親ポータルの下のサブポータルのリストを返します。

関連項目:

ポータルに関連するその他のEL式は、第F.14.5項「特定のポータルに関連するEL式」を参照してください。

表F-17は、「ポータル情報」カテゴリで使用できるシード済EL式をリストし、返される値のタイプの例を示しています。

注意:

表F-17にリストされているEL式は、ホーム・ポータル以外のポータルのコンテキストのみで使用してください。

表F-17 「ポータル情報」のシード済EL式

オプション

式

戻り値の例

NamedPortal

#{spaceContext.space['portalName']}

oracle.webcenter.spaces.internal.model.SpaceImpl@15fc839

CurrentPortal

#{spaceContext.currentSpace}

oracle.webcenter.spaces.internal.model.SpaceImpl@d5e197

CurrentPortal名

#{spaceContext.currentSpaceName}

standards

NamedPortalメタデータ・パス

#{spaceContext.space['portalName'].metadataPath}

/oracle/webcenter/space/metadata/spaces/portalName/space.xml

CurrentPortalメタデータ・パス

#{spaceContext.currentSpace.metadataPath}

/oracle/webcenter/space/metadata/spaces/standards/space.xml

NamedPortalメタデータ

#{spaceContext.space['portalName'].metadata}

oracle.webcenter.spaces.beans.SpaceMetadataImpl@1d7320a

CurrentPortalメタデータ

#{spaceContext.currentSpace.metadata}

oracle.webcenter.spaces.beans.SpaceMetadataImpl@1096c64

NamedPortalメタデータ表示名

#{spaceContext.space['portalName'].metadata.displayName}

Standards

CurrentPortalメタデータ表示名

#{spaceContext.currentSpace.GSMetadata.displayName}

Sales

NamedPortalメタデータ・アイコン

#{WCPrepareImageURL[spaceContext.space['portalName'].metadata.icon]['']}

/webcenter-spaces-resources/oracle/webcenter/space/metadata/spacetemplate/PortalSite/images/portal_icon.png

CurrentPortalメタデータ・アイコン

#{WCPrepareImageURL[spaceContext.currentSpace.metadata.icon]['']}

/webcenter-spaces-resources/oracle/webcenter/space/metadata/spaces/Test_Space/images/wc_prj_icon.png

NamedPortalメタデータ説明

#{spaceContext.space['portalName'].metadata.description}

Central point for all standards, templates, and stylesheets for company collateral

CurrentPortalメタデータ説明

#{spaceContext.currentSpace.GSMetadata.description}

Sales Force Team Site

NamedPortalメタデータ作成日

#{spaceContext.space['portalName'].metadata.creationDate}

java.util.GregorianCalendar[time=1290103432242,areFieldsSet=true,areAllFieldsSet=false,lenient=false,zone=java.util.SimpleTimeZone[id=,offset=-28800000,dstSavings=3600000,useDaylight=false,startYear=0,
startMode=0,startMonth=0,startDay=0,startDayOfWeek=0,startTime=0,startTimeMode=0,endMode=0,endMonth=0,endDay=0,endDayOfWeek=0,endTime=0,endTimeMode=0],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,
YEAR=2010,MONTH=10,WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,DAY_OF_MONTH=18,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=3,SECOND=52,MILLISECOND=242,ZONE_OFFSET=?,DST_OFFSET=?]

CurrentPortalメタデータ作成日

#{spaceContext.currentSpace.metadata.creationDate}

java.util.GregorianCalendar[time=1290103432242,areFieldsSet=true,areAllFieldsSet=false,lenient=false,zone=java.util.SimpleTimeZone[id=,offset=-28800000,dstSavings=3600000,useDaylight=false,startYear=0,
startMode=0,startMonth=0,startDay=0,startDayOfWeek=0,startTime=0,startTimeMode=0,endMode=0,endMonth=0,endDay=0,endDayOfWeek=0,endTime=0,endTimeMode=0],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2010,MONTH=10,
WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,DAY_OF_MONTH=18,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=3,SECOND=52,MILLISECOND=242,ZONE_OFFSET=?,DST_OFFSET=?]

NamedPortalメタデータ作成者

#{spaceContext.space['portalName'].metadata.createdBy}

j.doe

NamedPortalメタデータ・キーワード

#{spaceContext.space['portalName'].metadata.keywords}

standards templates style sheets collateral

CurrentPortalメタデータ・キーワード

#{spaceContext.currentSpace.metadata.keywords}

sales salesReports salesNews salesTeam

NamedPortalメタデータ・オフライン

#{spaceContext.space['portalName'].metadata.offline}

指定されたポータルがオフラインかどうかによって、falseまたはtrue

CurrentPortalメタデータ・オフライン

#{spaceContext.currentSpace.metadata.offline}

現在のポータルがオフラインかどうかによって、falseまたはtrue

NamedPortalメタデータ・クローズ

#{spaceContext.space['portalName'].metadata.offline}

指定されたポータルが閉じているかどうかによって、falseまたはtrue

CurrentPortalメタデータ・クローズ

#{spaceContext.currentSpace.metadata.closed}

現在のポータルが閉じているかどうかによって、falseまたはtrue

NamedPortalメタデータ自己登録

#{spaceContext.space['portalName'].metadata.selfRegistration}

指定されたポータルで自己登録が有効かどうかによって、falseまたはtrue

CurrentPortalメタデータ自己登録

#{spaceContext.currentSpace.metadata.selfRegistration}

現在のポータルで自己登録が有効かどうかによって、falseまたはtrue

NamedPortalメタデータ検出可能

#{spaceContext.space['portalName'].metadata.discoverable}

指定されたポータルが検出可能かどうかによって、falseまたはtrue

CurrentPortalメタデータ検出可能

#{spaceContext.currentSpace.metadata.discoverable}

現在のポータルが検出可能かどうかによって、falseまたはtrue

NamedPortalメタデータ公開RSS

#{spaceContext.space['portalName'].metadata.publishRSS}

指定されたポータルがRSSリーダーで公開可能どうかによって、falseまたはtrue

CurrentPortalメタデータ公開RSS

#{spaceContext.currentSpace.metadata.publishRSS}

現在のポータルがRSSリーダーで公開可能どうかによって、falseまたはtrue

NamedPortal配信リスト

#{spaceContext.space['portalName'].distributionList}

standardsGroup@myCompany.com

CurrentPortal配信リスト

#{spaceContext.currentSpace.distributionList}

salesTeam@myCompany.com

NamedPortalメタデータ・カスタム属性

#{spaceContext.space['portalName'].metadata.customAttributes['attributeName']}

名前付きカスタム属性に入力される値が返されます

CurrentPortalメタデータ・カスタム属性

#{spaceContext.currentSpace.metadata.customAttributes['attributeName']}

名前付きカスタム属性に入力される値が返されます

CurrentPortalメタデータ・ロゴ

#{WCPrepareImageURL[spaceContext.currentSpace.metadata.logo]['']}

/webcenter-spaces-resources/oracle/webcenter/space/metadata/spacetemplate/PortalSite/images/portal_logo.png

CurrentPortalロール - 進行役

#{WCSecurityContext.userInScopedRole['Moderator']}

現在のスコープ内のいずれかのユーザーにModeratorロールが割り当てられているかどうかによって、falseまたはtrue

CurrentPortalロール - 参加者

#{WCSecurityContext.userInScopedRole['Participant']}

現在のスコープ内のいずれかのユーザーにParticipantロールが割り当てられているかどうかによって、falseまたはtrue

CurrentPortalロール - 閲覧者

#{WCSecurityContext.userInScopedRole['Viewer']}

現在のスコープ内のいずれかのユーザーにViewerロールが割り当てられているかどうかによって、falseまたはtrue

CurrentPortalロール - カスタム

#{WCSecurityContext.userInScopedRole['CustomRole']}

現在のスコープ内のいずれかのユーザーに名前付きカスタム・ロールが割り当てられているかどうかによって、falseまたはtrue

NamedPortal子

#{spaceContext.space['portalName'].children}

[oracle.webcenter.spaces.internal.model.SpaceImpl@5705f4, oracle.webcenter.spaces.internal.model.SpaceImpl@147d658]

注意: 角カッコ([])はセットを示します。

CurrentPortal子

#{spaceContext.currentSpace.children}

[oracle.webcenter.spaces.internal.model.SpaceImpl@5705f4, oracle.webcenter.spaces.internal.model.SpaceImpl@147d658]

注意: 角カッコ([])はセットを示します。

NamedPortal親

#{spaceContext.space['portalName'].parent}

oracle.webcenter.spaces.internal.model.SpaceImpl@15fc839

CurrentPortal親

#{spaceContext.currentSpace.parent}

oracle.webcenter.spaces.internal.model.SpaceImpl@15fc839

NamedPortalセキュリティ親

#{spaceContext.space['portalName'].securityParent}

oracle.webcenter.spaces.internal.model.SpaceImpl@1392793

CurrentPortalセキュリティ親

#{spaceContext.currentSpace.securityParent}

oracle.webcenter.spaces.internal.model.SpaceImpl@1392793

すべての表示可能なルート・レベル・スペース

#{spaceContext.spacesQuery.unionOf['ALL_QUERIABLE,DISCOVERABLE,PUBLIC_ACCESSIBLE,ALLUSER_ACCESSIBLE,USER_JOINED,USER_MODERATED'].shape['ROOT_LEVEL']}

oracle.webcenter.spaces.query.SpacesQueryParameters@ae34c8

指定された親ポータルGUIDのすべての子孫ポータル

#{spaceContext.spacesQuery.parentSpaceGuid['portalGuid'].shape['RECURSIVE_FLATTENED']}

oracle.webcenter.spaces.query.SpacesQueryParameters@4da22f

指定された親ポータル名の直近のサブ・ポータル

#{spaceContext.spacesQuery.parentSpaceName['portalGuid'].shape['ROOT_LEVEL']}

oracle.webcenter.spaces.query.SpacesQueryParameters@1089971

指定されたポータル名に一致するポータルのリスト

#{spaceContext.spacesQuery.containingNames['portal1, portal2,portal3']}

oracle.webcenter.spaces.query.SpacesQueryParameters@68e467

指定されたポータルGUIDに一致するポータルのリスト

#{spaceContext.spacesQuery.containingGuids['portalGuid1, portalGuid2']}

oracle.webcenter.spaces.query.SpacesQueryParameters@1c56009

基準に基づいてソートされたポータルのリスト

#{spaceContext.spacesQuery.unionOf.ALL_QUERIABLE.sort['sp.lastUpdateDate']['desc']}

oracle.webcenter.spaces.query.SpacesQueryParameters@6c3def

検索パターンに基づいたポータルのリスト

#{spaceContext.spacesQuery.unionOf.ALL_QUERIABLE.search['searchKeyword']}

oracle.webcenter.spaces.query.SpacesQueryParameters@19b2cf3

ページ・サイズが制限されたポータルのリスト

#{spaceContext.spacesQuery.unionOf.USER_JOINED.itemsPerPage[n].pageNumber[n]}

oracle.webcenter.spaces.query.SpacesQueryParameters@4f8818

WHERE句に一致するポータルのリスト

#{spaceContext.spacesQuery.unionOf.USER_JOINED.where[wCond['sp.createdBy']['=']['userName']]}

oracle.webcenter.spaces.query.SpacesQueryParameters@1ba816d

F.14.2.6 ポータル・ページ情報のシード済パス

「ポータル・ページ情報」での選択内容は、EL式ではなく、様々なアプリケーション・ページへのディレクトリ・パスです。たとえば、これらを使用して、指定されたページへのナビゲーション情報を設定したりします。

表F-18は、「ポータル・ページ情報」カテゴリで使用できるシード済ディレクトリ・パスをリストし、返される値のタイプの例を示しています。ドロップダウン・リスト内の値の数は、ユーザーが使用するテンプレートや作成するページによって異なります。

表F-18 「ポータル・ページ情報」のシード済パス

オプション

パス

宛先

PortalSiteHome.jspx

/faces/oracle/webcenter/page/scopedMD/se2dff4fb_202a_4f4c_b56d_c7cf59ad1c04/PortalSiteHome.jspx

現在のポータルのホーム・ページへのパス

GroupSpaceDocLibMainView.jspx

/faces/oracle/webcenter/page/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed/businessRolePages/GroupSpaceDocLibMainView.jspx

現在のポータルの「ドキュメント」ページへのパス

ForumMainView.jspx

/faces/oracle/webcenter/page/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed/businessRolePages/ForumMainView.jspx

現在のポータルの「ディスカッション」ページへのパス

AnnouncementsMainView.jspx

/faces/oracle/webcenter/page/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed/businessRolePages/AnnouncementsMainView.jspx

現在のポータルの「お知らせ」ページへのパス

ListsMainView.jspx

/faces/oracle/webcenter/page/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed/businessRolePages/ListsMainView.jspx

現在のポータルの「リスト」ページへのパス

EventsMainView.jspx

/faces/oracle/webcenter/page/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed/businessRolePages/EventsMainView.jspx

現在のポータルの「イベント」ページへのパス

GroupSpaceActivityStreamMainView.jspx

/faces/oracle/webcenter/page/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed/businessRolePages/GroupSpaceActivityStreamMainView.jspx

現在のポータルの「アクティビティ・ストリーム」ページへのパス

F.14.2.7 システムのシード済EL

システムのシード済EL式は、現在のユーザーのユーザー名や現在のユーザーの指定されたロケールなど、システム設定に関連する値を返します。たとえば、#{securityContext.userName}という式は、現在ログインしているユーザーの名前を返します。たとえば、ユーザーj.doeがこの式の使用されているページを表示すると、j.doeのビューでの戻り値はj.doeになります。ユーザーj.smithが同じページを表示すると、j.smithのビューでの戻り値はj.smithになります。

関連項目:

その他の実用的なEL式の詳細は、第F.14.8項「実用的なEL式」を参照してください。

表F-19は、「システム」カテゴリで使用できるシード済EL式をリストし、返される値のタイプの例を示しています。

表F-19 「システム」のシード済EL式

オプション

式

戻り値の例

ユーザー

#{securityContext.userName}

現在のユーザーのユーザー名

ロケール

#{facesContext.externalContext.requestLocale}

現在のユーザーの指定されたロケール

これは、アプリケーション、ポータルレベルの設定、ユーザー・プリファレンスのいずれか優先度の高いものから取得されます。

例:

en_US

F.14.2.8 ユーザー情報のシード済EL

ユーザー情報のシード済EL式は、特定のユーザーのプロファイルに関連する値を返します。たとえば、#{webCenterProfile[securityContext.userName].description}という式は、現在のユーザーのプロファイルの「自己紹介」属性のコンテンツを返します。

関連項目:

その他のユーザー関連の式は、第F.10項「ピープル・コネクションに関連するEL」を参照してください。

表F-20は、「ユーザー情報」カテゴリで使用できるシード済EL式をリストし、返される値のタイプの例を示しています。

表F-20 「ユーザー情報」のシード済EL式

オプション

式

戻り値の例

自己紹介

#{webCenterProfile[securityContext.userName].description}

現在のユーザーのプロファイルの「自己紹介」属性のコンテンツを返します

ユーザー名

#{webCenterProfile[securityContext.userName].userName}

現在のユーザーのプロファイルで指定されたユーザー名

これを現在のユーザーの表示名と比較します

名

#{webCenterProfile[securityContext.userName].firstName}

現在のユーザーの名。

ミドル・ネーム

#{webCenterProfile[securityContext.userName].middleName}

現在のユーザーのミドルネーム。

姓

#{webCenterProfile[securityContext.userName].lastName}

現在のユーザーの姓

使用されるイニシャル

#{webCenterProfile[securityContext.userName].initials}

現在のユーザーのイニシャル。

表示名

#{webCenterProfile[securityContext.userName].displayName}

現在のユーザーの表示名。

これを現在のユーザーのユーザー名と比較します

電子メール

#{webCenterProfile[securityContext.userName].businessEmail}

現在のユーザーの業務用電子メール・アドレス。

部門

#{webCenterProfile[securityContext.userName].department}

現在のユーザーの部門

役職/職種

#{webCenterProfile[securityContext.userName].title}

現在のユーザーの役職または職種

マネージャ

#{webCenterProfile[securityContext.userName].managerDisplayName}

現在のユーザーのマネージャの表示名

タイムゾーン

#{webCenterProfile[securityContext.userName].timeZone}

現在のユーザーに関連付けられたタイムゾーン

従業員タイプ

#{webCenterProfile[securityContext.userName].employeeType}

現在のユーザーの従業員タイプ

従業員番号

#{webCenterProfile[securityContext.userName].employeeNumber}

現在のユーザーの社員番号。

優先言語コード

#{webCenterProfile[securityContext.userName].preferredLanguage}

現在のユーザーの優先言語。

組織

#{webCenterProfile[securityContext.userName].organization}

現在のユーザーが所属する会社組織

組織単位

#{webCenterProfile[securityContext.userName].organizationalUnit}

現在のユーザーが所属する会社組織の単位

専門

#{webCenterProfile[securityContext.userName].expertise}

現在のユーザーの専門(例: Application、system、database administration)

勤務先FAX

#{webCenterProfile[securityContext.userName].businessFax}

現在のユーザーの業務用FAX番号。

勤務先携帯電話番号

#{webCenterProfile[securityContext.userName].businessMobile}

現在のユーザーの勤務先の携帯電話番号

勤務先電話番号

#{webCenterProfile[securityContext.userName].businessPhone}

現在のユーザーの勤務先電話番号

勤務先ページャ番号

#{webCenterProfile[securityContext.userName].businessPager}

現在のユーザーの業務用ページャの番号。

勤務先番地

#{webCenterProfile[securityContext.userName].businessStreet}

現在のユーザーの勤務先の住所

勤務先市区町村

#{webCenterProfile[securityContext.userName].businessCity}

現在のユーザーの勤務先がある市区町村

勤務先都道府県

#{webCenterProfile[securityContext.userName].businessState}

現在のユーザーの勤務先がある都道府県

勤務先私書箱

#{webCenterProfile[securityContext.userName].businessPOBox}

現在のユーザーの勤務先の私書箱番号

勤務先郵便番号

#{webCenterProfile[securityContext.userName].businessPostalCode}

現在のユーザーの勤務先の郵便番号

勤務先国

#{webCenterProfile[securityContext.userName].businessCountry}

現在のユーザーの勤務先がある国

自宅の住所

#{webCenterProfile[securityContext.userName].homeAddress}

現在のユーザーの自宅住所

自宅電話番号

#{webCenterProfile[securityContext.userName].homePhone}

現在のユーザーの自宅の電話番号。

生年月日

#{webCenterProfile[securityContext.userName].dateofBirth}

現在のユーザーの生年月日

旧姓

#{webCenterProfile[securityContext.userName].maidenName}

現在のユーザーの旧姓

入社日

#{webCenterProfile[securityContext.userName].dateofHire}

現在のユーザーの入社日

名前接尾辞

#{webCenterProfile[securityContext.userName].nameSuffix}

現在のユーザーの名前に追加される役職や資格(例: MD、Esqなど)

ワイヤレス・アカウント番号

#{webCenterProfile[securityContext.userName].wirelessAcctNumber}

現在のユーザーのワイヤレス・インターネット・アカウントのアカウント番号

F.14.2.9 WebCenterイベントのシード済EL

WebCenterイベントのシード済EL式は、ドキュメント関連のイベントに関する値を返します(選択されているドキュメント、ドキュメントの作成者、ドキュメントが最後に修正された日付など)。たとえば、#{wcEventContext.events.WebCenterResourceSelected.name}という式は、現在選択されているドキュメントの名前を返します。

表F-21は、「WebCenterイベント」カテゴリで使用できるシード済EL式をリストし、返される値のタイプの例を示しています。

表F-21 「WebCenterイベント」のシード済EL式

オプション

式

戻り値の例

選択したユーザー名

#{wcEventContext.events.WebCenterUserSelected.UserName}

現在選択されているユーザーのユーザー名

選択したドキュメント名

#{wcEventContext.events.WebCenterResourceSelected.name}

現在選択されているドキュメントの名前

選択したドキュメント作成者

#{wcEventContext.events.WebCenterResourceSelected.createdBy}

現在選択されているドキュメントの作成者の名前

選択したドキュメント最終変更者

#{wcEventContext.events.WebCenterResourceSelected.lastModifiedBy}

選択されているドキュメントが最後に変更された日付

F.14.3 WebCenter Portal情報に関連するEL式

表F-22は、WebCenter Portal情報に関連するEL式をリストし、それが提供する機能のタイプを説明します。

表F-22 WebCenter Portal情報に関連するEL式

式

機能

#{WCAppContext}

現在のWebリクエスト内で、すべてのWebCenter Portal関連情報へのアクセス・ポイントを提供するoracle.webcenter.webcenterapp.context.WCApplicationContextオブジェクト

#{WCAppContext.currentWebCenterURI}

現行のWebリクエストを表すURLを戻します。このURLの末尾には、リクエストのブックマーク設定可能なWebCenter Portal URLパラメータが追加されています(パラメータは順不同の場合があります)。

例:

http://www.example.com/webcenter/faces/oracle/webcenter/page/scopedMD/someguid/SomePage.jspx?wc.contextURL=/spaces/somename&wc.pageScope=1234

#{WCAppContext.application.applicationConfig}

WebCenter Portalからのメタデータのペイロードを含むoracle.webcenter.webcenterapp.beans.WebCenterType Bean。

#{WCAppContext.application.applicationConfig.title}

現在のWebCenter Portalアプリケーションの表示名(「WebCenter Portal管理」設定で構成)を返します。

デフォルトでは、WebCenter Portalを返します。

#{WCAppContext.application.applicationConfig.logo}

アプリケーション・ロゴが「WebCenter Portal管理」設定を介してアップロードされた場合、この式はアプリケーション・ロゴ・イメージへのURLを返します。

デフォルトでは、nullを戻します。

#{WCAppContext.application.applicationConfig.helpPage}

WebCenter Portalで使用するヘルプ・アプリケーションへのURL (「WebCenter Portal管理」設定で構成)を返します。

デフォルトでは、/webcenterhelp/spacesを戻します。

#{WCAppContext.application.applicationConfig.copyrightMessage.customValue}

著作権メッセージが「WebCenter Portal管理」設定によって構成されている場合は、アプリケーションの著作権メッセージを返します。

デフォルトでは、nullを戻します。

#{WCAppContext.application.applicationConfig.privacyPolicyUrl}

アプリケーションのプライバシ・ポリシーを含むドキュメントへのURL (「WebCenter Portal管理」設定で構成)を返します。

デフォルトでは、http://www.oracle.com/html/privacy.htmlを返します。

#{WCAppContext.application.applicationConfig.skin}

アプリケーションでページのレンダリングに使用するデフォルトのADF Facesスキン・ファミリの名前(「WebCenter Portal管理」設定で構成)を返します。

この式は、すべてのWebリクエストで使用できるとはかぎらないアプリケーション・レベルの設定のみを表します。たとえば、ユーザーがアプリケーションの「プリファレンス」を介してスキンをオーバーライドするように選択している場合、この式は正常に使用できません。

#{requestContext.skinFamily}

アプリケーション・レベルで構成されている要素や現在のユーザーのプリファレンス設定などに応じて、現在のWebリクエストで使用されるADF Facesスキン・ファミリの名前を返します。

#{adfFacesContext.skinFamily}と同じ値を返します。

このELは、WebCenter Portalを使用して構築されたポータルとOracle JDeveloperで構築されたPortal Frameworkアプリケーションの両方で使用できます。

F.14.4 アセットに関連するEL式

この項の式を使用して、アセットの問合せを行います。EL式によるアセットの問合せは、APIコールによるアセットの問合せと類似しています。すなわち、問合せパラメータは['property']['like']['value'] (propertyはid、resourceScopeなどのプロパティの名前、valueは属性の検索値)という形式で設定する必要があります。

問合せを実行すると、1件または複数件の結果が返される可能性があります。問合せデザイナは、どちらの結果を望むのかを決める必要があります。問合せデザイナは式で次の値のいずれかを使用して、1件の結果を返すのか、複数件の結果を返すのかを指定します。

- singleResult: 1つのアセットを返します。一致するアセットが見つからない場合、nullを返します。

- resultList: アセットのリストを返します。一致するアセットが見つからない場合、空のリストを返します。

注意:

式で使用されているsingleResultまたはresultListは、内部的には問合せのエンド・ポイントとして使用され、検出されるとすぐに問合せが実行されます。エンド・ポイント以降に何かが設定されていた場合、予想外の動作が発生する可能性があります。

次の例は、表示名にmyPageが含まれる、最初に見つけたページ・テンプレート・アセットを返します。

#{srmContext[wCond['resourceType']['like']['siteTemplate']]['and'][wCond['displayName']['like']['myPage']].singleResult}

次の例は、ディレクトリresourceDirに存在し、説明にsampleDescが含まれるページ・テンプレート・アセットのリストを返します。

#{srmContext[wCond['resourceType']['like']['siteTemplate']]['and'][wCond['description']['like']['sampleDesc']]['and'][wCond['contentDirectory']['like']['resourceDir'].resultList}

このクラスのプロパティには、このクラスの任意の属性が含まれます。たとえば、Id、DisplayName、iconURI、contentDirectoryなどのプロパティが含まれます。

プロパティ値は、明示的な値として、またはそのタイプの値を返すEL式として、指定できます。たとえば、次の2つの問合せは同じ結果を返します。

#{srmContext[wCond['id']['like']['resourceId']].singleResult}

#{srmContext[wCond['id']['like']['spacesContext.currentSpace.uiMetadata.siteTemplateId']].singleResult}

EL式を使用する問合せでは、このクラスの任意のプロパティをproperty['value']という形式で、任意の順序で使用できます。たとえば、次の2つの問合せは同じ結果を返します。

#{srmContext[wCond['resourceScope']['like']['scopeName']]['and'][wCond['id]['like']['resourceId']].singleResult}

#{srmContext[wCond['id']['like']['resourceId']]['and'][wCond['resourceScope']['like']['scopeName']].singleResult}

表F-23は、アセットに関連するEL式をリストし、それぞれが提供する機能のタイプを説明します。

表F-23 アセットに関連するEL

EL

機能

#{srmContext[wCond['id']['like']['resourceGUID']]}

指定されたIDのアセットを返します

#{srmContext[wCond['displayName']['like']['resourceDisplayName']]}

指定された表示名を持つ任意のアセットを返します

#{srmContext[wCond['displayNameKey']['like']['displayNameKey']]}

指定された表示名キーを持つ任意のアセットを返します

#{srmContext[wCond['description']['like']['resourceDescription']].singleResult}

指定された値が説明に含まれるアセットを1つ返します

複数の結果を取得するには、singleResultのかわりにresultListを使用します。

#{srmContext[wCond['descriptionKey']['like']['descriptionKey']].singleResult}

指定された説明キーを持つアセットを1つ返します

説明キーは、アセットの説明を示す、xsrtファイル内のキーです。

複数の結果を取得するには、singleResultのかわりにresultListを使用します。

#{srmContext[wCond['createdDate']['like']['resourceCreationDate']]}

指定された作成日を持つ任意のアセットを返します

#{srmContext[wCond['modifiedBy']['like']['resourceLastModifiedBy']]

指定されたユーザー名のユーザーにより最後に変更された任意のアセットを返します

#{srmContext[wCond['modifiedDate']['like']['resourceLastModifiedDate']]}

指定された日付以前に最後に変更された任意のアセットを返します

#{srmContext[wCond['resourceScope']['like']['resourceScope']]}

指定されたスコープに該当する任意のアセットを返します

#{srmContext[wCond['category']['like']['categoryName']]}

指定されたカテゴリに該当する任意のアセットを返します

例:

#{srmContext[wCond['category']['like']['siteTemplates']]}

カテゴリ名として使用できるものには、siteTemplate、pageStyle, dataPresenter、contentPresenter、resourceCatalog、navigation、taskFlow、dataControl、taskFlowStyle、skinなどがあります。

#{srmContext[wCond['contentDirectory']['like']['contentDirectory']]}

指定されたディレクトリに格納されている任意のアセットを返します

#{srmContext[wCond['metadataFile']['like']['metadataFileLocation']]}

指定されたメタデータ・ファイルからアセット・メタデータを返します

たとえば、次の式はファイル/home/metadata/data.xmlからアセット・メタデータを返します。

#{srmContext[wCond['metadataFile']['like']['/home/metadat/data.xml']]}

#{srmContext[wCond['jspx']['like']['jspxFileLocation']]}

指定された場所にある任意のjspxファイルを返します

たとえば、次の式はpage.jspxファイルを返します。

#{srmContext[wCond['jspx']['like']['/home/web/page.jspx']]}

#{srmContext[wCond['pageDef']['like']['pageDefinition']]}

指定されたページ定義が含まれる任意のjspxファイルを返します

#{srmContext[wCond['iconURI']['like']['iconURI']]}

指定されたアイコンURIのアイコンを返します

#{srmContext[wCond['excludeFrom']['like']['excludeFromScopes']]}

より大きな式で使用され、除外されたスコープで使用可能なリソースを除く、指定されたすべてのリソースを返します

#{srmContext[wCond['usesCustomSecurity']['like']['usesCustomSecurity']]}

より大きな式で使用され、カスタム・セキュリティを使用する、または使用しない、任意のアセットを返します

usesCustomSecurityをTRUEまたはFALSEに設定します。例:

#{srmContext[wCond['usesCustomSecurity']['like']['TRUE']]}

#{srmContext[wCond['seeded']['like']['seeded']]}

より大きな式で使用され、指定された値に応じてシードされる、またはシードされない、任意のアセットを返します

seededをTRUEまたはFALSEに設定します。例:

#{srmContext[wCond['seeded']['like']['TRUE']]}

#{srmContext[wCond['visibleType']['like']['visibleType']]}

より大きな式で使用され、指定された可視性タイプの任意のアセットを返します

visibleTypeをTRUE、FALSEまたはアセットが絶対に表示されないことを示すNEVERに設定します。たとえば、次の式は表示されるアセット、すなわちShowに設定されているアセットを返します。

#{srmContext[wCond['visibleType']['like']['TRUE']]}

#{srmContext[wCond['visible']['like']['visible']]}

より大きな式で使用され、可視性がTRUEまたはFALSEのどちらかに設定されている1つまたは複数のアセットを返します。

#{srmContext[wCond['createdBy']['like']['resourceCreator']]}

より大きな式で使用され、指定されたユーザーによって作成された任意のアセットを返します

#{srmContext[wCond['resourceType']['like']['resourceType']]}

より大きな式で使用され、指定されたタイプの1つまたは複数のアセットを返します

たとえば、次の式はタイプSITE_TEMPLATEのアセットを検索します。

#{srmContext[wCond['resourceType']['like']['SITE_TEMPLATE']]}

すべてのアセット・タイプのリストは、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスのGenericSiteResourceTypesクラスを参照してください。

#{srmContext[wCond['version']['like']['version']]}

より大きな式で使用され、指定されたバージョンのアプリケーションで使用可能な1つまたは複数のアセットを返します

#{srmContext[wCond['resourceScope']['like']['scopeName']]}

より大きな式で使用され、指定されたスコープで使用可能な1つまたは複数のアセットを返します

たとえば、次の式はスコープ(このインスタンスではポータル)がMyPortalのアセットを検索します。

#{srmContext[wCond['resourceScope']['like']['MyPortal']]}

デフォルト・スコープ、すなわちアプリケーション・スコープ内を検索するには、defaultScopeを使用します。

#{srmContext[wCond['searchType']['like']['searchType']]}

より大きな式で使用され、組み込まれている他の式で設定された値が含まれる、またはその値に等しい、1つまたは複数のアセットを返します

searchTypeをCONTAINSまたはEQUALSに設定します。

F.14.4.1 例: アセットに対するEL式の使用

この項では、ユーザーのロールに基づいてページ・テンプレートを表示するためのEL式の使用例を示します。

この例では、EL式を使用して、モデレータに特定のページ・テンプレートが表示されるようにして、モデレータがそのページ・テンプレートで使用できる機能やリンクにアクセスできるようにします。

ユーザー・ロールに基づいてページ・テンプレートを表示するには:

1. 目的のポータルの管理設定に移動します。

2. 「アセット」を選択してから、「ページ・テンプレート」を選択します。ページ・テンプレートを選択して「拡張編集オプション」アイコンをクリックし、「式ビルダー」を選択します。

3. 「値または式の入力」で、次の式を入力します。

#{srmContext[wCond['resourceType']['like']['siteTemplate']][wCond['displayName']['like'][WCSecurityContext.userInScopedRole['Moderator'] ? 'Fusion Side Navigation' : 'WebCenter Spaces Top Navigation']].singleResult.id}

ここで:

- srmContext[wCond['resourceType']['like']['siteTemplate']]
スコープ内のすべてのページ・テンプレートのリストを取得します。

- [wCond['displayName']['like'][WCSecurityContext.userInScopedRole['Moderator'] ? 'Fusion Side Navigation' : 'WebCenter Portal Top Navigation']]
現在のユーザーがモデレータかどうかによって、リストを1つまで縮小します。ユーザーがモデレータであれば、「Fusionサイド・ナビゲーション」ページ・テンプレートが適用されます。その他すべてのユーザー・ロールでは、「WebCenter Portalトップ・ナビゲーション」ページ・テンプレートを使用してポータルがレンダリングされます。

- singleResult.id
必要とされるエントリのGUIDを返します。

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

F.14.5 特定のポータルに関連するEL式

表F-24は、ポータルに関連するEL式をリストし、それぞれが提供する機能のタイプを説明します。

注意:

ポータルの内部名は、ポータルの管理設定の「概要」ページにある「PortalのURL」で指定された名前のことです。ポータルの表示名は、「名前」で指定された名前です。表F-24に示したEL式の多くは、ポータルの内部名を呼び出します。

表F-24 特定のポータルに関連するEL式

式

機能

#{spaceContext}

現在のWebリクエスト内で、すべてのポータル関連情報へのアクセス・ポイントを提供するoracle.webcenter.spaces.context.SpacesContextオブジェクト。

この式の値は、Java API SpacesContext.getCurrentInstance()の起動時に戻される値です。

#{spaceContext.currentSpace}

現在のWebリクエストに関連付けられているポータルを表すoracle.webcenter.spaces.Spaceオブジェクト。現在のWebリクエストがホーム・ポータル・コンテキストにある場合は、null値が返されます。

この式の値は、Java API SpacesContext.getCurrentInstance().getCurrentSpace()の起動時に戻される値です。

#{spaceContext.currentSpaceName}

現行のWebリクエストに関連付けられているポータルの名前。現在のWebリクエストがホーム・ポータル・コンテキストにある場合は、null値が返されます。

この式の値は、Java API SpacesContext.getCurrentInstance().getCurrentSpace()の起動時に戻される値です。

#{spaceContext.space['portalName']}

#{spaceContext.currentSpace}

spaceNameという名前のポータルまたは現在のポータル(currentSpace)を表すoracle.webcenter.spaces.Spaceオブジェクト。たとえば、#{spaceContext.space['FinanceProject']}は、FinanceProjectという名前のポータルのポータル・オブジェクトを返します。

この式の値は、現行のADFContextのMDSSessionを渡して現行のSpacesManagerに対して.getSpace(...)を起動するときにJavaで戻される値です。

#{spaceContext.space['portalName'].metadataPath}

#{spaceContext.currentSpace.metadataPath}

指定した名前portalNameを持つポータルまたは現在のポータル(currentSpace)のポータル・メタデータ・ドキュメントのMDSパス。たとえば、#{spaceContext.space['FinanceProject'].metadataPath}は、/oracle/webcenter/space/metadata/spaces/FinanceProject/space.xmlと評価されます。

この式の値は、ポータルのポータル・オブジェクトに対して.getMetadataPath()を起動するときにJavaで返される値です。

#{spaceContext.space['portalName'].metadata}

#{spaceContext.currentSpace.metadata}

portalNameという名前のポータルまたは現在のポータル(currentSpace)に関するメタデータを含んだoracle.webcenter.spaces.beans.SpaceType Bean。

この式の値は、現在のADFContextのMDSSessionで渡されるポータルのポータル・オブジェクトに対して.getMetadata()を起動するときにJavaで返される値です。

#{spaceContext.space['portalName'].metadata.displayName}

#{spaceContext.currentSpace.metadata.displayName}

portalNameという名前のポータルまたは現在のポータル(currentSpace)の表示名。たとえば、Web20Portalという名前のポータルがweb 2.0 Portalという表示名を持つ場合、#{spaceContext.space['Web20Portal'].metadata.displayName}はweb 2.0 Portalと評価されます。

#{spaceContext.space['portalName'].GSMetadata.groupSpaceURI}

#{spaceContext.currentSpace.GSMetadata.groupSpaceURI}

portalNameという名前のポータルまたは現在のポータル(currentSpace)のURL。

#{WCPrepareImageURL[spaceContext.space['portalName'].metadata.icon]['']}

#{WCPrepareImageURL[spaceContext.currentSpace.metadata.icon]['']}

portalNameという名前のポータルまたは現在のポータル(currentSpace)に関連付けられたアイコンへのURL。

#{spaceContext.space['portalName'].metadata.description}

#{spaceContext.currentSpace.metadata.description}

portalNameという名前のポータルまたは現在のポータル(currentSpace)の説明。たとえば、#{spaceContext.space['FinanceProject'].metadata.description}はConglomeration of all teams involved in financial activities(財務アクティビティに関与する全チームの集合)と評価されます。

#{spaceContext.space['portalName'].metadata.creationDate}

#{spaceContext.currentSpace.metadata.creationDate}

指定した名前portalNameを持つポータルまたは現在のポータル(currentSpace)の作成日時を表すjava.util.Calendarオブジェクト。

#{spaceContext.space['portalName'].metadata.createdBy}

#{spaceContext.currentSpace.metadata.createdBy}

portalNameという名前のポータルまたは現在のポータル(currentSpace)の作成者のユーザー名。

#{spaceContext.space['portalName'].metadata.keywords}

#{spaceContext.currentSpace.metadata.keywords}

portalNameという名前のポータルまたは現在のポータル(currentSpace)に関連付けられた検索可能なキーワードのカンマ区切りリスト。たとえば、ポータルFinanceProjectのキーワードがfinance, project, moneyの場合、#{spaceContext.space['FinanceProject'].metadata.keywords}はfinance, project, moneyと評価されます。

#{spaceContext.space['portalName'].metadata.offline}

#{spaceContext.currentSpace.metadata.offline}

portalNameという名前のポータルまたは現在のポータル(currentSpace)がオフラインかどうかを示すブール値。

#{spaceContext.space['portalName'].metadata.closed}

#{spaceContext.currentSpace.metadata.closed}

portalNameという名前のポータルまたは現在のポータル(currentSpace)が閉じているかどうかを示すブール値。

#{spaceContext.space['portalName'].metadata.selfRegistration}

#{spaceContext.currentSpace.metadata.selfRegistration}

portalNameという名前のポータルまたは現在のポータル(currentSpace)への自己登録をユーザーが許可されているかどうかを示すブール値。

#{spaceContext.space['portalName'].metadata.discoverable}

#{spaceContext.currentSpace.metadata.discoverable}

portalNameという名前のポータルまたは現在のポータル(currentSpace)の存在を、ユーザーが検索するか「マイ・ポータル」ページのリストを確認することで検出できるかどうかを示すブール値。

#{spaceContext.space['portalName'].metadata.publishRSS}

#{spaceContext.currentSpace.metadata.publishRSS}

portalNameという名前のポータルまたは現在のポータル(currentSpace)がRSSフィードを公開するかどうかを示すブール値。

#{spaceContext.space['portalName'].distributionList}

#{spaceContext.currentSpace.distributionList}

portalNameという名前のポータルまたは現在のポータル(currentSpace)に関連付けられているメーリング・リストの電子メール・アドレス。

#{spaceContext.space['portalName'].metadata.customAttributes['attributeName']}

#{spaceContext.currentSpace.metadata.customAttributes['attributeName']}

portalNameという名前のポータルまたは現在のポータル(currentSpace)の、attributeNameという名前の特定のカスタム属性の値。たとえば、FinanceProjectポータルのstockPriceというカスタム属性の値が13.9の場合、#{spaceContext.space['FinanceProject'].metadata.customAttributes['stockPrice']}は13.9と評価されます。

#{WCPrepareImageURL[spaceContext.space['portalName'].metadata.logo]['']}

#{WCPrepareImageURL[spaceContext.currentSpace.metadata.logo]['']}

portalNameという名前のポータルまたは現在のポータル(currentSpace)のロゴURLを返します。

#{spaceContext.spacesQuery.property['value']}

#{spaceContext.spacesQuery.property['value'].listSpaces}

property['value']という形式の問合せパラメータを使用してポータルを問い合せる方法。このpropertyはプロパティの名前(unionOf、shapeなど)を意味しており、valueはすべてのポータル、検出可能なポータルなどのリストをフェッチするために使用する基準を意味しています。

式にlistSpacesを追加すると、問合せはタイプがGSMetadataであるポータルのリストを返します。(詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスのInterface GSMetadataに関する項を参照してください。)

たとえば、次のEL式は検出可能なすべてのポータルのリストを返します。

#{spaceContext.spacesQuery.unionOf['DISCOVERABLE'].listSpaces}

listportalsをELに追加しない場合、ELはタイプがSpacesQueryParameterのオブジェクトを評価します。このオブジェクト・タイプはSpacesManager.getSpaces(SpacesQueryParameters)を使用して評価する必要があります。これにより、タイプがGSMetadataのポータルのリストが返されます。

たとえば、次のEL式は、すべての問合せ条件が移入された状態で、タイプがSpacesQueryParametersのインスタンスを返します。

#{spaceContext.spacesQuery.unionOf['DISCOVERABLE']}

#{spaceContext.spacesQuery.unionOf['USER_JOINED'].shape['ROOT_LEVEL'].listSpaces}

現在のユーザーがメンバーになっているすべての最上位ポータルのリストを返します。

このELは、親を持たないポータルのみを返します(つまりサブポータルは返しません)。

#{spaceContext.spacesQuery.unionOf['USER_JOINED'].shape['RECURSIVE_FLATTENED'].listSpaces}

現在のユーザーがメンバーになっているすべてのポータルのリストを返します。

このELは、現在のユーザーがアクセスできる各親ポータルの下にあるすべてのサブポータルも返します。

例の詳細は、第F.14.5.1項「例: 様々なポータルに対するEL式の使用」を参照してください。

#{spaceContext.spacesQuery.unionOf['ALL_QUERIABLE'].sort['sortBy field picked from WcSpaceHeader']}

ソート基準によって指定された順序にソートされたポータルを返します。

たとえば、次の問合せは、ユーザーがアクセス可能なポータルのリストを、discoverableおよびlastUpdateDateフィールドでソートして返します。

次の例では、識別子spが、ポータルWcSpaceHeaderのJPAエンティティを表しています。

#{spaceContext.spacesQuery.unionOf['ALL_QUERIABLE'].sort['sp.discoverable']['asc']['sp.lastUpdateDate']['desc'].listSpaces}

#{spaceContext.spacesQuery.unionOf['ALL_QUERIABLE'].pageNumber[page_num].listSpaces}

問合せ基準と一致する結果から選択するページ番号を指定できます(0ベース)。

たとえば、次の式は、ユーザーがアクセス可能なすべてのポータルのリストを返し、結果セットの3ページ目を返します。

#{spaceContext.spacesQuery.unionOf['ALL_QUERIABLE'].pageNumber[2].listSpaces]}

#{spaceContext.spacesQuery.unionOf['ALL_QUERIABLE'].itemsPerPage[page_num].listSpaces}

結果のポータルをページに分割するときに、各ページに含まれる結果の数を指定できます。

たとえば、次の式は、ユーザーがアクセス可能なすべてのポータルのリストを返し、各ページに10レコードずつリストします。

#{spaceContext.spacesQuery.unionOf['ALL_QUERIABLE'].pageNumber[10].listSpaces]}

#{spaceContext.spacesQuery.unionOf.ALL_QUERIABLE.where[wCond['sp.createdBy']['like']['monty%'] ['and'] [wCond['sp.selfSubEnabled']['is']['null'] ['or'] [wCond['sp.selfSubEnabled']['=']['N']] ['not'] ] ].listSpaces}

指定されたユーザーが作成し、自己サブスクリプションが有効な、ユーザーがアクセス可能なすべてのポータルのリストを返します。(詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスのSpacesQueryParametersおよびSpacesQueryFilterに関する項を参照してください。)

F.14.5.1 例: 様々なポータルに対するEL式の使用

この項では、様々なポータルを問い合せるためのEL式の使用例を示します。

この例では、次のELを使用して、自分がメンバーになっているすべてのポータルのリストを表示します。

"#{spaceContext.spacesQuery.unionOf['USER_JOINED'].shape['RECURSIVE_FLATTENED'].listSpaces}"

さらに次のメソッドを使用して、ポータルのロゴ、名前、説明、メンバー数も表示します。

- iconURI: ポータルのロゴを表示

- displayName: ポータル名を表示

- description: ポータルの説明を表示

- memberCount: ポータルのメンバー数を表示

ポータルを問い合せるには:

1. 新しいタスク・フローを作成し、それを使用可能にマークします。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のタスク・フローの使用に関する項を参照してください。

2. タスク・フローのソース・コードを編集します。「アセット」ページで、タスク・フローを選択します。「アクション」メニューから、「ソースの編集」を選択します。

3. 「ソースの編集」ダイアログの「フラグメント」タブで、既存のコードを次のコードに置き換えます。

<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:pe="http://xmlns.oracle.com/adf/pageeditor" xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable"
xmlns:f="http://java.sun.com/jsf/core" xmlns:af="http://xmlns.oracle.com/adf/faces/rich" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions">
<af:panelGroupLayout id="pgl1">
<cust:panelCustomizable id="pc1">
<table border="0" width="100%">
<af:iterator id="it1" var="row" value="#{spaceContext.spacesQuery.unionOf['USER_JOINED'].shape['RECURSIVE_FLATTENED'].listSpaces}">
<c:set var="iconURI" value="#{fn:split(row.iconURI,'}')[1]}"/>
<c:set var="displayName" value="#{row.displayName}"/>
<c:set var="description" value="#{row.description}"/>
<c:set var="numMembers" value="#{row.memberCount}"/>
<tr class="PortletText1">
<td width="16px" rowspan="3" valign="top">
<af:image id="img1"
source="/webcenter-spaces-resources/oracle/webcenter/siteresources/scopedMD/shared#{iconURI}/ICON16"/>
</td>
<td>
<af:outputText id="otCol1"
value="#{displayName}"
inlineStyle="color:#333333; font-size:12px; font-weight:bold;"/>
</td>
</tr>
<tr>
<td>
<af:outputText id="otCol3"
value="#{description}"
inlineStyle="color:#666666; font-size:12px;"/>
</td>
</tr>
<tr>
<td>
<af:outputText id="otCol4"
value="members (#{numMembers}) -"
inlineStyle="color:#666666; font-size:10px;"/>
<af:spacer id="spacer1" width="5px"/>
<af:goLink id="gl1"
destination="/spaces/#{row.name}"
targetFrame="_blank"
text="view"/>
</td>
</tr>
</af:iterator>
</table>
</cust:panelCustomizable>
</af:panelGroupLayout>
</jsp:root>

4. このタスク・フローをページに追加します。リソース・カタログでは、「UIコンポーネント」→「タスク・フロー」でカスタム・タスク・フローを使用できます。
ページには、自分がメンバーになっているすべてのポータルのリストが表示されます。

F.14.6 特定のページに関連するEL式

表F-25は、ポータル・ページに関連するEL式をリストし、それが提供する機能のタイプを説明します。

表F-25 特定のページに関連するEL式

式

機能

#{pageDocBean.title}

ページの表示名を戻します。次に例を示します。

FinanceProject

#{pageDocBean.createdBy}

ページを作成したユーザーのユーザー名を戻します。次に例を示します。

monty

#{pageDocBean.createDateString}

ページの作成日時を戻します。次に例を示します。

2008-11-19T10:18:36

#{pageDocBean.lastUpdatedBy}

ページを最後に更新したユーザーのユーザー名を戻します。次に例を示します。

monty

#{pageDocBean.lastUpdateDateString}

ページが最後に更新された日時を戻します。次に例を示します。

2008-11-19T10:18:36

#{pageDocBean.pagePath}

アプリケーションのルート・ディレクトリに対する相対パスとして、ページへのファイル・ディレクトリ・パスを戻します。次に例を示します。

/oracle/webcenter/page/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed/user/Umonty/Page4.jspx

#{pageDocBean.name}

ページのファイル名を戻します。次に例を示します。

Page4.jspx

#{pageDocBean.UICSSStyle}

ページで使用されたスタイル・スキームの名前を戻します。次に例を示します。

WCSchemeEggShell

#{pageDocBean.UISchemeBGImage}

ページ・スキームの背景イメージのディレクトリ・パスとファイル名を戻します。

#{pageDocBean.UISchemeBGColorString}

ページ・スキームの背景色の16進値を戻します。次に例を示します。

#ffa500

#{pageDocBean.pagePermission}

ページに対する現行ユーザーの権限を戻します。次に例を示します。

oracle.webcenter.page.model.security.CustomPagePermission

#{pageDocBean.pageSecurityTarget}

現行のページをセキュリティ・システムに対して一意に識別する60文字程度の文字列です。次に例を示します。

oracle_webcenter_page_scopedMD_s8bba98ff_4cbb_40b8_beee_296c916a23ed_user_Umonty_Page4PageDef

#{changeModeBean.inEditMode}

現在のページがコンポーザ・モードの場合は、trueを返します。現在のページがコンポーザ・モードでない場合は、falseを返します。

F.14.7 ポータル・イベント・コンテキストに関連するEL

表F-26は、ペイロードの受け渡しをトリガーできるポータル・イベントのタイプ(イベント機能に関連するイベントではない)に関連するEL式をリストします。

表F-26に示すイベント・ペイロードには、発生後、その全部または一部にアクセスできます。

たとえば、ペイロード全体に対して、次のELを使用します。

#{wcEventContext.events.eventName}

例:

#{wcEventContext.events.WebCenterUserSelected}

表F-26のELのペイロードはすべてマップです。マップ・エントリを参照解除するには、マップ用の標準のELを使用します。

#{wcEventContext.events.WebCenterUserSelected.UserName}

関連項目:

イベント・ワイヤリングの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「ページ、タスク・フロー、ポートレット、ADFコンポーネントのワイヤリング」の章を参照してください。

表F-26 イベント・コンテキストに関連するEL式

式

機能

イベント・コンテキスト

#{wcEventContext.events.WebCenterResourceSelected}

ドキュメント名

#{wcEventContext.events.WebCenterResourceSelected.name}

ドキュメント作成者

#{wcEventContext.events.WebCenterResourceSelected.createdBy}

ドキュメント最終変更者

#{wcEventContext.events.WebCenterResourceSelected.lastModifiedBy}

プロデューサとコンシューマ間のコンテキスト・ワイヤリングで使用します。プロデューサのメタデータの一部分をコンシューマのメタデータの一部分に(たとえば、ドキュメント作成者を作成者のプロファイルに)関連付けるマップを返します。

プロデューサのタスク・フローには次のものが含まれます。

- ドキュメント・マネージャ

- 最近のドキュメント

- ドキュメント・リスト・ビューア

コンシューマのタスク・フローには次のものが含まれます。

- アクティビティ・グラフ - 類似アイテム(ユーザーに関係する可能性があるその他ドキュメントを表示)

- リンク(選択したドキュメントにリンクするアイテムを表示)

- プロファイル(ドキュメントの作成者のプロファイルを表示)

- アクティビティ・ストリーム(このドキュメントに関連するアクティビティを表示)

- タグ(このドキュメントのタグとタグ・センターにアクセスする方法)

イベント・コンテキスト

#{wcEventContext.events.WebCenterUserSelected}

ユーザー名

#{wcEventContext.events.WebCenterUserSelected.userName}

ユーザーGUID

#{wcEventContext.events.WebCenterUserSelected.userGUID}

ポータル名

#{wcEventContext.events.WebCenterUserSelected.portalName}

ポータルGUID

#{wcEventContext.events.WebCenterUserSelected.portalGUID}

プロデューサとコンシューマ間のコンテキスト・ワイヤリングで使用します。プロデューサのメタデータの一部分をコンシューマのメタデータの一部分に(たとえば、ユーザーをユーザーのコネクションに)関連付けるマップを返します。

プロデューサのタスク・フローには次のものが含まれます。

- コネクション

- ポータル・メンバー

コンシューマのタスク・フローには次のものが含まれます。

- コネクション(選択したユーザーのコネクションを表示)

- 「ドキュメント」タスク・フロー(選択したユーザーによって作成されたドキュメントを表示)

- アクティビティ・ストリーム(このユーザーのアクティビティを表示)

- タグ(このユーザーによって作成されたタグ)

- プロファイル(このユーザーのプロファイルを表示)

イベント・コンテキスト

#{wcEventContext.events.WebCenterConnectionSelected}

プロファイルのユーザー名

#{wcEventContext.events.WebCenterConnectionSelected.profileUserName}

プロファイルのユーザーGUID

#{wcEventContext.events.WebCenterConnectionSelected.profileUserGUID}

コネクションがあるユーザー名

#{wcEventContext.events.WebCenterConnectionSelected.userName}

コネクションがあるユーザーGUID

#{wcEventContext.events.WebCenterConnectionSelected.userGUID}

--

#{wcEventContext.events.WebCenterSpaceSelected.SpaceName}

選択されたポータルの名前を返します

#{wcEventContext.events.WebCenterSpaceSelected.SpaceGUID}

選択されたポータルのGUIDを返します

F.14.8 実用的なEL式

表F-27は、実用的なEL式をリストし、それらが提供する機能のタイプを説明します。

表F-27 実用的なEL式

式

機能

#{userPreferences.currentDate}

現在の日付を現在のユーザーのプリファレンスで指定されている形式で戻します。

#{WCTruncator['text']['numberOfChars']}

textとして指定された文字列をnumberOfCharsとして指定された文字数まで切り捨て、後に省略記号を付けたものを戻します。たとえば、#{WCTruncator['abracadabra']['5']}はabrac...と評価されます。

#{facesContext.viewRoot.locale}

#{facesContext.externalContext.requestLocale}

どちらの式も、リクエストのロケール(ブラウザのロケール設定)を返します。

#{adfFacesContext.skinFamily}

現行のアプリケーション・スキン・ファミリを戻します。戻り値は#{requestContext.skinFamily}と同じです。

F.15 デバイス設定に関連するEL式

この項では、デバイス設定に関する情報を取得するELについて説明します。デバイス設定の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「デバイス設定の管理」の章を参照してください。

EL式を使用して、特定のデバイスをターゲットとするアセット(スキンおよびページ・テンプレート)を設定できます。デバイス設定でのELの使用方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「デバイス設定の管理」の章を参照してください。

- 表F-28は、デバイス・グループ・マッピングに関する情報を取得するためのEL式を示しています。

- 表F-29は、デバイスに関する情報を取得するためのELを示しています。

- 表F-30は、デバイス・グループに関連付けられているスキンおよびページ・テンプレート関する情報を取得するためのELを示しています。

- 第F.15.1項「デバイス属性を検出するタスク・フローのサンプル・コード」は、ポータルへのアクセスに使用するデバイスの属性を検出するためのタスク・フローで使用できるサンプル・コードを表しています。

たとえば、ページ・デザイナは、デバイスの属性を使用してページのコンテンツ領域の幅を制御するために、次のELを使用できます。

#{DeviceAgent.device.attributes['display_resolution_width']

表F-28 デバイス・エージェントに関連するEL式

式

関連するJava API

説明

#{DeviceAgent}

DeviceAgent.getInstance()

すべてのデバイス設定ELに対するルート・エントリ・ポイント。

#{DeviceAgent.device}

DeviceAgent.getInstance().getDevice()

現在のリクエストのマップ先のデバイス。

#{DeviceAgent.deviceGroups}

DeviceAgent.getInstance().getDeviceGroups()

現在のデバイスのマップ先のデバイス・グループのリスト。この操作では、enabledとマークされているかどうかに関係なく、すべてのデバイス・グループが返されます。

#{DeviceAgent.currentScopeDeviceGroup}

DeviceAgent.getInstance().getCurrentScopeDeviceGroup()

特定のポータルについて着信リクエストがマップされたデバイス・グループを取得します。このELによって、特定のデバイスについてページ・バリアントが表示されない理由に関する問題を、管理者が診断しやすくなります。

表F-29 デバイスに関連するEL式

式

関連するJava API

説明

#{DeviceAgent.device}

DeviceAgent.getInstance().getDevice()

現在のリクエストのマップ先のデバイス。

#{DeviceAgent.device.name}

DeviceAgent.getInstance().getDevice().getName()

デバイスの名前。システム・フレンドリな識別子で、内部リンクに使用できます。

#{DeviceAgent.device.displayName}

DeviceAgent.getInstance().getDevice().getDisplayName()

デバイスの表示名。

#{DeviceAgent.device.attributes}

DeviceAgent.getInstance().getDevice().getAttributes()

デバイスに関連付けられている属性のマップ。画面サイズ、OSバージョンなど。

たとえば、次のELは、デバイスの作成時に設定された表示解像度の幅を返します。

#{DeviceAgent.device.attributes['display_resolution_width']}

表F-30 デバイス・グループに関連するEL式

式

関連するJava API

説明

#{DeviceAgent.currentScopeDeviceGroup}

DeviceAgent.getInstance().getCurrentScopeDeviceGroup()

現在のリクエストのマップ先のデバイス・グループ。適切なデバイス・グループを識別するための一般的なフローは次のとおりです。

1. 現在のリクエストが属しているデバイスを識別します。

2. 現在のポータルに対して有効になっているすべてのデバイス・グループを取得します。

3. デバイスが属している最初のデバイス・グループ(前述のリスト)を識別します。

#{DeviceAgent.currentScopeDeviceGroup.name}

DeviceAgent.getInstance().getCurrentScopeDeviceGroup().getName()

デバイス・グループの名前。例:

#{DeviceAgent.currentScopeDeviceGroup.name == 'androidTablets'}

#{DeviceAgent.currentScopeDeviceGroup.portalPageTemplate}

DeviceAgent.getInstance().getCurrentScopeDeviceGroup().getPortalPageTemplate()

このデバイス・グループ・オブジェクトに関連付けられているポータル・ページ・テンプレートのGUIDを返します。メソッドからNULLが返された場合、ポータルのデフォルト・ページ・テンプレート設定が有効になっています。

注意: 取得したGUIDの操作に使用するリソースELの詳細は、第F.6項「ポータル・リソースに関連するEL」を参照してください。

#{DeviceAgent.currentScopeDeviceGroup.portalSkin}

DeviceAgent.getInstance().getCurrentScopeDeviceGroup().getPortalSkin()

このデバイス・グループに関連付けられているポータル・スキンのGUIDを返します。メソッドからNULLが返された場合、ポータルのデフォルト・スキン設定が有効になっています。

注意: 取得したGUIDの操作に使用するリソースELの詳細は、第F.6項「ポータル・リソースに関連するEL」を参照してください。

#{DeviceAgent.currentScopeDeviceGroup.default}

DeviceAgent.getInstance().getCurrentScopeDeviceGroup().isDefault()

デバイス・グループが現在のデバイスのデフォルトである場合は、trueを返します。デバイス・グループがデバイスのデフォルトでない場合は、falseを返します。たとえば、デフォルトのデバイス・グループがデスクトップ・ブラウザになっているときに、iPad上でポータルにアクセスした場合、デバイス・グループはiPadになりますが、これはデフォルトのデバイス・グループではありません。この場合、メソッドはfalseを返します。

#{DeviceAgent.currentScopeDeviceGroup.enabled}

DeviceAgent.getInstance().getCurrentScopeDeviceGroup().isEnabled()

このデバイス・グループが現在のポータルに対して有効とマークされているかどうかを識別します。

注意: この呼出しでは、デバイス・グループは常にtrueの状態です。このELは、すべてのデバイス・グループがEL #{DeviceAgent.deviceGroups}によって取得された場合に便利です。

F.15.1 デバイス属性を検出するタスク・フローのサンプル・コード

例F-1は、デバイス属性を検出するタスク・フローの作成に使用できるJSFページ・フラグメントを示しています。ELによって属性が返されます。このタスク・フローは、デバイス上でポータルが正しくレンダリングされないような状況のトラブルシューティングなどに役立ちます。デバイス属性を検出することで、レンダリング問題の修正処理を行えます。表F-8は、このサンプル・コードによって作成されたタスク・フローからの出力を示しています。

例F-1 デバイス属性を検出するタスク・フロー・コード

<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:pe="http://xmlns.oracle.com/adf/pageeditor" xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable" xmlns:f="http://java.sun.com/jsf/core" xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<af:panelGroupLayout layout="scroll" id="pgl1">
<cust:panelCustomizable id="pc1"/>
<f:facet name="separator">
<af:separator id="s1"/>
</f:facet>
<af:panelFormLayout id="pfl1">
<af:group id="g1">
<af:panelLabelAndMessage id="it0" label="Current Device" labelStyle="color:#0000ff;font-weight:bold;"/>
<af:panelLabelAndMessage id="it1plm" label="Internal Name">
<af:outputText id="it1" value="#{DeviceAgent.device.name}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="it2plm" label="Display Name">
<af:outputText id="it2" value="#{DeviceAgent.device.displayName}"/>
</af:panelLabelAndMessage>
</af:group>
<af:group>
<af:panelLabelAndMessage id="it01" label="Current Device Group" labelStyle="color:#0000ff;font-weight:bold;"/>
<af:panelLabelAndMessage id="it3plm" label="Internal Name">
<af:outputText id="it3" value="#{DeviceAgent.currentScopeDeviceGroup.name}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="it4plm" label="Display Name">
<af:outputText id="it4" value="#{DeviceAgent.currentScopeDeviceGroup.displayName}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="it5plm" label="PageTemplate">
<af:outputText id="it5" value="#{srmContext.id[DeviceAgent.currentScopeDeviceGroup.portalPageTemplate].singleResult.displayName}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="it6plm" label="Skin">
<af:outputText id="it6" value="#{srmContext.id[DeviceAgent.currentScopeDeviceGroup.portalSkin].singleResult.displayName}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="it7plm" label="Is Default">
<af:outputText id="it7" value="#{DeviceAgent.currentScopeDeviceGroup.default}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="it8plm" label="Is Enabled">
<af:outputText id="it8" value="#{DeviceAgent.currentScopeDeviceGroup.enabled}"/>
</af:panelLabelAndMessage>
</af:group>
<af:group>
<af:panelLabelAndMessage id="it9plm" label="Current Browser User Agent" labelStyle="color:#0000ff;font-weight:bold;">
<af:outputText id="it9" value="#{DeviceAgent.userAgent}"/>
</af:panelLabelAndMessage>
</af:group>
<af:group>
<af:panelLabelAndMessage id="pt0" label="Page Template Info" labelStyle="color:#0000ff;font-weight:bold;"/>
<af:panelLabelAndMessage id="it010plm" label="Expected PageTemplate:GUID">
<af:outputText id="it010" value="#{DeviceAgent.currentScopeDeviceGroup.portalPageTemplate}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="it0010plm" label="Expected PageTemplate:Name">
<af:outputText id="it0010" value="#{srmContext.id[DeviceAgent.currentScopeDeviceGroup.portalPageTemplate].singleResult.displayName}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="it10plm" label="Current PageTemplate:GUID">
<af:outputText id="it10" value="#{WCAppContext.application.siteTemplatesManager.currentSiteTemplateId}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="it10aplm" label="Current PageTemplate:Name">
<af:outputText id="it10a" value="#{srmContext.id[WCAppContext.application.siteTemplatesManager.currentSiteTemplateId].singleResult.displayName}"/>
</af:panelLabelAndMessage>
</af:group>
<af:group>
<af:panelLabelAndMessage id="sk0" label="Skin Info" labelStyle="color:#0000ff;font-weight:bold;"/>
<af:panelLabelAndMessage id="it0111plm" label="Expected Skin:GUID">
<af:outputText id="it0111" value="#{DeviceAgent.currentScopeDeviceGroup.portalSkin}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="it0112plm" label="Expected Skin:Name">
<af:outputText id="it0112" value="#{srmContext.id[DeviceAgent.currentScopeDeviceGroup.portalSkin].singleResult.displayName}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="it111plm" label="Current Skin:GUID">
<af:outputText id="it111" value=""/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="it112plm" label="Current Skin:Name">
<af:outputText id="it112" value="#{requestScope['oracle.webcenter.webcenterapp.view.shell.WebCenterShellManager.SHELLHANDLER'].adfFacesSkin}"/>
</af:panelLabelAndMessage>
</af:group>
<af:group>
<af:panelLabelAndMessage id="pg0" label="Page Info" labelStyle="color:#0000ff;font-weight:bold;"/>
<af:panelLabelAndMessage id="pg10" label="Page Path">
<af:outputText id="pg1" value="#{pageDocBean.pagePath}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="pg20" label="Page Style">
<af:outputText id="pg2" value=""/>
</af:panelLabelAndMessage>
</af:group>
<af:group>
<af:panelLabelAndMessage id="ap90" label="Optional Attributes" labelStyle="color:#0000ff;font-weight:bold;"/>
<af:panelLabelAndMessage id="ap1opta" label="brand-name">
<af:outputText id="ap1" value="#{DeviceAgent.device.attributes['brand-name']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap2opta" label="device-os">
<af:outputText id="ap2" value="#{DeviceAgent.device.attributes['device-os']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap3opta" label="device-type">
<af:outputText id="ap3" value="#{DeviceAgent.device.attributes['device-type']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap4opta" label="device_default_aspect_ratio">
<af:outputText id="ap4" value="#{DeviceAgent.device.attributes['device_default_aspect_ratio']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap5opta" label="device_os-version">
<af:outputText id="ap5" value="#{DeviceAgent.device.attributes['device_os-version']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap6opta" label="device_preview_css">
<af:outputText id="ap6" value="#{DeviceAgent.device.attributes['device_preview_css']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap7opta" label="device_preview_horizontal_css">
<af:outputText id="ap7" value="#{DeviceAgent.device.attributes['device_preview_horizontal_css']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap8opta" label="device_preview_viewport_css">
<af:outputText id="ap8" value="#{DeviceAgent.device.attributes['device_preview_viewport_css']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap9opta" label="device_preview_viewport_horizontal_css">
<af:outputText id="ap9" value="#{DeviceAgent.device.attributes['device_preview_viewport_horizontal_css']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap10opta" label="device_streaming_flv">
<af:outputText id="ap10" value="#{DeviceAgent.device.attributes['device_streaming_flv']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap11opta" label="device_streaming_preferred_http_protocol">
<af:outputText id="ap11" value="#{DeviceAgent.device.attributes['device_streaming_preferred_http_protocol']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap12opta" label="device_streaming_preferred_protocol">
<af:outputText id="ap12" value="#{DeviceAgent.device.attributes['device_streaming_preferred_protocol']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap13opta" label="device_video_streaming">
<af:outputText id="ap13" value="#{DeviceAgent.device.attributes['device_video_streaming']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap14opta" label="display_orientation_support">
<af:outputText id="ap14" value="#{DeviceAgent.device.attributes['display_orientation_support']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap15opta" label="display_resolution_height">
<af:outputText id="ap15" value="#{DeviceAgent.device.attributes['display_resolution_height']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap16opta" label="display_resolution_width">
<af:outputText id="ap16" value="#{DeviceAgent.device.attributes['display_resolution_width']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap17opta" label="is-wireless_device">
<af:outputText id="ap17" value="#{DeviceAgent.device.attributes['is-wireless_device']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap18opta" label="marketing-name">
<af:outputText id="ap18" value="#{DeviceAgent.device.attributes['marketing-name']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap19opta" label="model-name">
<af:outputText id="ap19" value="#{DeviceAgent.device.attributes['model-name']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap20opta" label="model-version">
<af:outputText id="ap20" value="#{DeviceAgent.device.attributes['model-version']}"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage id="ap21opta" label="icon">
<af:outputText id="ap21" value="#{DeviceAgent.device.attributes['icon']}"/>
</af:panelLabelAndMessage>
</af:group>
</af:panelFormLayout>
</af:panelGroupLayout>
</jsp:root>

図F-8 サンプル・タスク・フローからの出力

G 分析データベース・スキーマ

この付録では、カスタム分析データ問合せを作成する開発者向けに、Oracle WebCenter Portalの分析の基礎となるデータベース設計について説明します。

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

- 第G.1項「分析データベース・スキーマの概要」

- 第G.2項「分析ファクト表の説明」

- 第G.3項「分析ディメンション表の説明」

- 第G.4項「分析システム表の説明」

- 第G.5項「分析ユーザー・プロパティ」

- 第G.6項「分析イベントおよびディメンション・データ型」

カスタム分析データ問合せの作成の詳細は、第47.3項「分析レポートの作成」を参照してください。

G.1 分析データベース・スキーマの概要

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

- 第G.1.1項「分析データベース・モデルの概要」

- 第G.1.2項「分析データベース表の概要」

G.1.1 分析データベース・モデルの概要

WebCenter Portalの分析データベース・スキーマは、パフォーマンスを最適化し、レスポンスを高速化するために、スター・スキーマとしてモデル化されています。

分析データは、ファクト表とディメンション・ファクト表に格納されます。

- 分析ファクト表(複数あり)は、分析コレクタの初回実行時に作成されます。各ファクト表には、特定のイベント・タイプ(たとえば、ページ・ビュー、ポータル・ビュー、ドキュメントのアップロード、ブログ・ビュー、Wikiの編集など)が格納されます。多くの場合、これらのファクト表の列には、ディメンション表に格納された説明データを参照する整数IDが含まれます。
表G-1「分析ファクト表(先頭がASFACT_WC)」は、収集および格納できる分析イベントのタイプおよび、関連する表をリストします。

- 分析ディメンション表も、分析コレクタの初回実行時に作成されます。ディメンション表には、分析イベントに関連付けられている冗長な説明データが格納されます。これらの表内に値が見つからない場合、新しいレコードが追加されます。一般的な分析ディメンション・データには、ページ名、ブラウザ名、ドキュメント名、ポータル名などがあります。
表G-2「分析ディメンション表(先頭がASDIM_WC)」は、収集および格納できる分析ディメンションの異なるタイプおよび関連する表名をリストします。

分析データベース・スキーマには、システム構成パラメータなどの情報を格納するアプリケーション表もいくつか含まれています。アプリケーション表は、インストール中に作成されます。

図G-1は、分析データベース・スキーマの事前定義されたファクト、ディメンションおよびアプリケーション表の間の関係を示しています。

図G-1 分析データベース・モデル

図G-1に示されている表は、次の分析データを格納しています。

- アプリケーション構成

- イベント・メタデータ

- レポート・メタデータ

アプリケーション構成

図G-2は、分析のシステム・パラメータの格納に使用されているエンティティを示しています。

図G-2 アプリケーション構成エンティティ

イベント・メタデータ

図G-3は、イベント・データの格納に使用されるエンティティを示しています。UsersエンティティとTimesエンティティの多くは、ユーザーや時間に重点を置いたイベント・データのビューを提供するディメンションです。

イベント・メタデータには、収集対象のイベント、イベントの格納先となる表およびイベントの発生時に保存されるディメンションが記録されます。

図G-3 イベント・メタデータ・エンティティ

レポート・メタデータ

図G-4は、追加設定なしの分析レポートを表すエンティティを示しています。これらの表のメタデータは、レポート・メトリック、レポート構造、リストされる列といった情報の主なソースとなります。

Oracle WebCenter Portalの分析に使用するデフォルトのレポート構成は、レポート・メタデータとして格納されます。各レポートには、そのレポート内に表示できる様々な列と、適用可能なフィルタが含まれます。他のレポートから構成されるレポートもあります。

図G-4 レポート・メタデータ・エンティティ

G.1.2 分析データベース表の概要

この項では、分析スキーマに含まれるデータベース表を示し、それらについて説明します。

- 表G-1「分析ファクト表(先頭がASFACT_WC)」

- 表G-2「分析ディメンション表(先頭がASDIM_WC)」

- 表G-3「分析システム表(先頭がASSYS)」

注意:

分析イベント表と分析ディメンション表の表名は、分析イベントと分析ディメンションの名前に基づいて自動的に生成されます。分析イベント名と分析ディメンション名、およびそれらに対応する表名のマッピングは、「ASSYS_EVENTS」および「ASSYS_EVENTDIMENSIONS」表で定義されています。

たとえばASFACT_WC_DOCLIB__0のように、表名にダブル・アンダースコアを含むものがいくつかあります。これは、すべての表名は7文字の長さで、いくつかのケースでは、これらの文字のいずれかがアンダースコアであるコンポーネントの値を含んでいるためです(たとえば、DOCLIB_)。

特定のイベントに関連付けられた表名を返す問合せの使用方法の例については、第G.1.2.1項「サンプルSQL問合せ: 特定のイベントに関連付けられた表名の検索」を参照してください。

表G-1 分析ファクト表(先頭がASFACT_WC)

イベント・オブジェクト

表名

イベント表の説明

ページ

ASFACT_WC_PAGECRE_0

ページが作成されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_PAGEDEL_0

ページが削除されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_PAGEEDI_0

ページが編集されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_PAGETAG_0

ページがタグ付けされたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_PAGEVIE_0

ページが表示されたときに分析によって取得されるイベント情報が格納されます。

ディスカッション

ASFACT_WC_DISCUSS_0

ディスカッション・トピックが表示されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DISCUSS_1

お知らせが表示されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DISCUSS_2

ディスカッション・フォーラムが作成されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DISCUSS_3

ディスカッション・フォーラムが削除されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DISCUSS_4

ディスカッション・トピックが作成されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DISCUSS_5

ディスカッション・トピックが編集されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DISCUSS_6

ディスカッション・トピックが削除されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DISCUSS_7

ディスカッション・トピックがタグ付けされたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DISCUSS_8

ユーザーがディスカッション・トピックに関するメッセージに返信したときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DISCUSS_9

ディスカッション・トピックに関するメッセージがお気に入り登録されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DISCUSS_A

お知らせが作成されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DISCUSS_B

お知らせが編集されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DISCUSS_C

お知らせが削除されたときに分析によって取得されるイベント情報が格納されます。

ドキュメント - ブログ - Wiki

ASFACT_WC_DOCLIB__0

ドキュメントが表示されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DOCLIB__1

ドキュメントがダウンロードされたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DOCLIB__2

ドキュメントが作成されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DOCLIB__3

ドキュメントが編集されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DOCLIB__4

ドキュメントがタグ付けされたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DOCLIB__5

ドキュメントがお気に入り登録されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DOCLIB__6

ドキュメントにコメントが追加されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_DOCLIB__7

ドキュメントが削除されたときに分析によって取得されるイベント情報が格納されます。

ポータル・イベント

ASFACT_WC_EVENT_C_0

ポータル・イベントが作成されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_EVENT_D_0

ポータル・イベントが削除されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_EVENT_E_0

ポータル・イベントが編集されたときに分析によって取得されるイベント情報が格納されます。

ポータル

ASFACT_WC_GROUPSP_0

ポータルが表示されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_GROUPSP_1

ポータルが作成されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_GROUPSP_2

ユーザーがポータルに参加したときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_GROUPSP_3

ポータルが削除されたときに分析によって取得されるイベント情報が格納されます。

リスト

ASFACT_WC_LIST_CR_0

リストが作成されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_LIST_DE_0

リストが削除されたときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_LIST_ED_0

リストが編集されたときに分析によって取得されるイベント情報が格納されます。

ログイン

ASFACT_WC_LOGINS_0

ユーザーがサイトにログインしたときに分析によって取得されるイベント情報が格納されます。

ユーザー

ASFACT_WC_PEOPLEC_0

ユーザーが接続を追加したときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_PEOPLEC_1

ユーザーがウォールに投稿したときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_PEOPLEC_2

ユーザーがプロファイルを編集したときに分析によって取得されるイベント情報が格納されます。

ASFACT_WC_PEOPLEC_3

ユーザーがステータス情報を編集したときに分析によって取得されるイベント情報が格納されます。

ポートレット

ASFACT_WC_PORTLET_0

ポートレットが表示されたときに分析によって取得されるイベント情報が格納されます。

検索

ASFACT_WC_SEARCHE_0

検索が実行されたときに分析によって取得されるイベント情報が格納されます。

表G-2 分析ディメンション表(先頭がASDIM_WC)

ディメンション名

表名

ディメンション表の説明

アプリケーション

ASDIM_WC_APPLICA_0

分析データにアクセスするWebCenter Portalアプリケーションの名前が格納されます。

IPクライアント

ASDIM_WC_CLIENT__0

分析イベントで受信したクライアントIPアドレスが格納されます。

ディスカッション・トピック

ASDIM_WC_DISCUSS_0

分析イベントで受信したディスカッション・トピックの詳細が格納されます。

ディスカッション・フォーラム

ASDIM_WC_DISCUSS_1

分析イベントで受信したディスカッション・フォーラムの詳細が格納されます。

ディスカッション・メッセージ

ASDIM_WC_DISCUSS_2

分析イベントで受信したディスカッション・メッセージの詳細が格納されます。

お知らせ

ASDIM_WC_DISCUSS_3

分析イベントで受信したお知らせの詳細が格納されます。

ドキュメント

ASDIM_WC_DOCUMENT_0

分析イベントで受信したドキュメントの詳細が格納されます。

リスト

ASDIM_WC_LISTS_0

分析イベントで受信したリストの詳細が格納されます。

ページ

ASDIM_WC_PAGES_0

分析イベントで受信したWebCenter Portalページの詳細が格納されます。

ポートレット

ASDIM_WC_PORTLET_0

分析イベントで受信したポートレットの情報が格納されます。

ポートレット・インスタンス

ASDIM_WC_PORTLET_1

分析イベントで受信したポートレット・インスタンスの情報が格納されます。

ポートレット・プロデューサ

ASDIM_WC_PRODUCE_0

ポートレットに関連付けられたプロデューサが格納されます。

リファラ

ASDIM_WC_REFERRE_0

分析イベントのソースとして参照されるURLが格納されます。

検索

ASDIM_WC_SEARCHE_0

分析イベントで受信した検索フレーズが格納されます。

ポータル・イベント

ASDIM_WC_EVENTS_0

分析イベントで受信したポータル・イベントの詳細が格納されます。

ポータル

ASDIM_WC_GROUPSP_0

分析イベントで受信したポータルの情報が格納されます。

タグ

ASDIM_WC_TAGS_0

分析イベントで受信したタグが格納されます。

ブラウザ

ASDIM_WC_USER_AG_0

分析へのアクセスに使用されるブラウザに関する情報が格納されます。

時間

ASDIM_TIME

分析レポートのグループ化に使用される時間が格納されます。

ユーザー

ASDIM_USERS

分析イベントで受信したユーザーの詳細が格納されます。

ユーザー・プロパティ

ASDIM_USERPROPERTIES

ユーザー・プロパティが格納されます。

ユーザー・プロパティ値

ASDIM_USERPROPERTYVALUES

ユーザー・プロパティ値が格納されます。

表G-3 分析システム表(先頭がASSYS)

エンティティ名

表名

表の説明

構成

ASSYS_CONFIG

システム構成の詳細が格納されます。

ディメンション・プロパティ

ASSYS_DIMENSIONPROPS

各ディメンションの構成の詳細が格納されます。

イベント・ディメンション

ASSYS_EVENTDIMENSIONS

各イベントに関連付けられたディメンションが格納されます。

イベント・ファクト

ASSYS_EVENTFACTS

各イベントに関連付けられたファクトが格納されます。

イベント

ASSYS_EVENTS

分析によって収集される様々なタイプの分析イベントが格納されます。

分析イベントは、ドキュメントの表示やユーザー・ログインなど、単一のユーザー・アクションを表します。

ネームスペース

ASSYS_NAMESPACES

分析イベントが登録されるネームスペースが格納されます。

レポート構成

ASSYS_REPORTCOMPOSITION

デフォルトのコンポジット分析レポートが格納されます。

レポート・グループ

ASSYS_REPORTGROUP

ポートレットやサービスなど、デフォルトの分析レポート・グループが格納されます。

レポート・アイテム

ASSYS_REPORTITEMS

各分析レポートに含まれるアイテムが格納されます。

レポート・アイテム値

ASSYS_REPORTITEMVALUES

分析レポートの各アイテムに関連付けられた値が格納されます。

レポート

ASSYS_REPORTS

デフォルトの分析レポートが格納されます。

G.1.2.1 サンプルSQL問合せ: 特定のイベントに関連付けられた表名の検索

この項では、特定のイベントに関連付けられた表の名前を返すサンプルSQL問合せを示します。この問合せでは、フィルタを使用して、ドキュメントに関連付けられた表を返します。

SELECT tablename "Table Name",
displayname "Event Display Name"
FROM   assys_events
WHERE tablename like 'ASFACT_WC_DOCLIB%'
ORDER BY 1;

サンプル・レポート出力

Table Name            Event Display Name
-----------------------------------------
ASFACT_WC_DOCLIB__0   {HTTP://WWW.ORACLE.COM/ANALYTICS/WC}DOCLIB_DOCUMENTVIEWS
ASFACT_WC_DOCLIB__1   {HTTP://WWW.ORACLE.COM/ANALYTICS/WC}DOCLIB_DOCUMENTDOWNLOADS
ASFACT_WC_DOCLIB__2   {HTTP://WWW.ORACLE.COM/ANALYTICS/WC}DOCLIB_DOCUMENTCREATE
ASFACT_WC_DOCLIB__3   {HTTP://WWW.ORACLE.COM/ANALYTICS/WC}DOCLIB_DOCUMENTEDIT
ASFACT_WC_DOCLIB__4   {HTTP://WWW.ORACLE.COM/ANALYTICS/WC}DOCLIB_DOCUMENTTAG
ASFACT_WC_DOCLIB__5   {HTTP://WWW.ORACLE.COM/ANALYTICS/WC}DOCLIB_DOCUMENTLIKE
ASFACT_WC_DOCLIB__6   {HTTP://WWW.ORACLE.COM/ANALYTICS/WC}DOCLIB_DOCUMENTCOMMENT
ASFACT_WC_DOCLIB__7   {HTTP://WWW.ORACLE.COM/ANALYTICS/WC}DOCLIB_DOCUMENTDELETES

G.2 分析ファクト表の説明

分析ファクト表は、分析コレクタの初回実行時に作成されます。各ファクト表には、特定のイベント・タイプ(たとえば、ページ・ビュー、ポータル・ビュー、ドキュメントのアップロード、ブログ・ビュー、Wikiの編集など)が格納されます。多くの場合、これらのファクト表の列には、ディメンション表に格納された説明データを参照する整数IDが含まれます。

この項では、表G-1「分析ファクト表(先頭がASFACT_WC)」にリストされている表のそれぞれについて説明します。

G.2.1 ASFACT_WC_PAGECRE_0

ユーザーがページを作成したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

PAGE_

NULL

NUMBER(38)

ページIDディメンション。

ASDIM_WC_PAGES_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションID。

ASDIM_WC_APPLICA_0.ID

G.2.2 ASFACT_WC_PAGEDEL_0

ユーザーがページを削除したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

PAGE_

NULL

NUMBER(38)

ページIDディメンション。

ASDIM_WC_PAGES_0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

G.2.3 ASFACT_WC_PAGEEDI_0

ユーザーがページを編集したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

PAGE_

NULL

NUMBER(38)

ページIDディメンション。

ASDIM_WC_PAGES_0.ID

G.2.4 ASFACT_WC_PAGETAG_0

ユーザーがページにタグ付けしたときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

TAG_

NULL

NUMBER(38)

タグIDディメンション。

ASDIM_WC_USER_AG_0.ID

PAGE_

NULL

NUMBER(38)

ページIDディメンション。

ASDIM_WC_PAGES_0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

G.2.5 ASFACT_WC_PAGEVIE_0

ユーザーがページを表示したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

RESPONSE_TIME_

NULL

NUMBER(16)

レスポンス時間(ミリ秒)。

CLIENT_IP_

NULL

NUMBER(38)

クライアントIP IDディメンション。

ASDIM_WC_CLIENT__0.ID

SESSION_ID_

NULL

NVARCHAR2(254)

セッションID。

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

REFERRER_

NULL

NUMBER(38)

参照IDディメンション。

ASDIM_WC_REFERRE_0.ID

PAGE_

NULL

NUMBER(38)

ページIDディメンション。

ASDIM_WC_PAGES_0.ID

USER_AGENT_

NULL

NUMBER(38)

ユーザー・エージェント。

ASDIM_WC_USER_AG_0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

G.2.6 ASFACT_WC_DISCUSS_0

ユーザーがディスカッション・トピックを表示したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

CLIENT_IP_

NULL

NUMBER(38)

クライアントIP IDディメンション。

ASDIM_WC_CLIENT__0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

USER_AGENT_

NULL

NUMBER(38)

ユーザー・エージェント。

ASDIM_WC_USER_AG_0.ID

FORUM_

NULL

NUMBER(38)

イベントに関連付けられたディスカッション・フォーラム。

ASDIM_WC_DISCUSS_1.ID

SESSION_ID_

NULL

NVARCHAR2(254)

セッションID。

TOPIC_

NULL

NUMBER(38)

イベントに関連付けられたディスカッション・トピック。

ASDIM_WC_DISCUSS_0.ID

REFERRER_

NULL

NUMBER(38)

参照IDディメンション。

ASDIM_WC_REFERRE_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

G.2.7 ASFACT_WC_DISCUSS_1

ユーザーがお知らせを表示したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

CLIENT_IP_

NULL

NUMBER(38)

クライアントIP IDディメンション。

ASDIM_WC_CLIENT__0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

REFERRER_

NULL

NUMBER(38)

参照IDディメンション。

ASDIM_WC_REFERRE_0.ID

USER_AGENT_

NULL

NUMBER(38)

ユーザー・エージェント。

ASDIM_WC_USER_AG_0.ID

SESSION_ID_

NULL

NVARCHAR2(254)

セッションID。

ANNOUNCEMENT_

NULL

NUMBER(38)

イベントに関連付けられたお知らせ。

ASDIM_WC_DISCUSS_3.ID

G.2.8 ASFACT_WC_DISCUSS_2

ユーザーがディスカッション・フォーラムを作成したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

DISCUSSION_FORUM_

NULL

NUMBER(38)

ディスカッション・フォーラムIDディメンション。

ASDIM_WC_DISCUSS_0.ID

G.2.9 ASFACT_WC_DISCUSS_3

ユーザーがディスカッション・フォーラムを削除したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

DISCUSSION_FORUM_

NULL

NUMBER(38)

ディスカッション・フォーラムIDディメンション。

ASDIM_WC_DISCUSS_0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

G.2.10 ASFACT_WC_DISCUSS_4

ユーザーがディスカッション・トピックを作成したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

DISCUSSION_TOPIC_

NULL

NUMBER(38)

ディスカッション・トピックIDディメンション。

ASDIM_WC_DISCUSS_0.ID

DISCUSSION_MESSAGE_

NULL

NUMBER(38)

ディスカッション・メッセージIDディメンション。

ASDIM_WC_DISCUSS_2.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

G.2.11 ASFACT_WC_DISCUSS_5

ユーザーがディスカッション・トピックを編集したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

DISCUSSION_TOPIC_

NULL

NUMBER(38)

ディスカッション・トピックIDディメンション。

ASDIM_WC_DISCUSS_0.ID

G.2.12 ASFACT_WC_DISCUSS_6

ユーザーがディスカッション・トピックを削除したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

DISCUSSION_TOPIC_

NULL

NUMBER(38)

ディスカッション・トピックIDディメンション。

ASDIM_WC_DISCUSS_0.ID

G.2.13 ASFACT_WC_DISCUSS_7

ユーザーがディスカッション・トピックにタグ付けしたときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

TAG_

NULL

NUMBER(38)

タグIDディメンション。

ASDIM_WC_TAGS_0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

DISCUSSION_TOPIC_

NULL

NUMBER(38)

ディスカッション・トピックIDディメンション。

ASDIM_WC_DISCUSS_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

G.2.14 ASFACT_WC_DISCUSS_8

ユーザーがディスカッション・トピックに関するメッセージに返信したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

DISCUSSION_MESSAGE_

NULL

NUMBER(38)

ディスカッション・メッセージIDディメンション。

ASDIM_WC_DISCUSS_2.ID

DISCUSSION_TOPIC_

NULL

NUMBER(38)

ディスカッション・トピックIDディメンション。

ASDIM_WC_DISCUSS_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

G.2.15 ASFACT_WC_DISCUSS_9

ユーザーがディスカッション・トピックに関するメッセージをお気に入り登録したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

DISCUSSION_MESSAGE_

NULL

NUMBER(38)

ディスカッション・メッセージIDディメンション。

ASDIM_WC_DISCUSS_2.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

DISCUSSION_TOPIC_

NULL

NUMBER(38)

ディスカッション・トピックIDディメンション。

ASDIM_WC_DISCUSS_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

G.2.16 ASFACT_WC_DISCUSS_A

ユーザーがお知らせを作成したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

DISCUSSION_ANNOUNCEMENT_

NULL

NUMBER(38)

お知らせIDディメンション。

ASDIM_WC_DISCUSS_3.ID

G.2.17 ASFACT_WC_DISCUSS_B

ユーザーがお知らせを編集したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

DISCUSSION_ANNOUNCEMENT_

NULL

NUMBER(38)

お知らせIDディメンション。

ASDIM_WC_DISCUSS_3.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

G.2.18 ASFACT_WC_DISCUSS_C

ユーザーがお知らせを削除したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

DISCUSSION_FORUM_

NULL

NUMBER(38)

ディスカッション・フォーラムIDディメンション。

ASDIM_WC_DISCUSS_1.ID

G.2.19 ASFACT_WC_DOCLIB__0

ユーザーがドキュメントを表示したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

DATE

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

RESPONSE_TIME_

NULL

NUMBER(16)

レスポンス時間(ミリ秒)。

CLIENT_IP_

NULL

NUMBER(38)

クライアントIP IDディメンション。

ASDIM_WC_CLIENT__0.ID

SESSION_ID_

NULL

NVARCHAR2(254)

セッションID。

GROUPSPACE

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

REFERRER

NULL

NUMBER(38)

参照IDディメンション。

ASDIM_WC_REFERRE_0.ID

DOCUMENT

NULL

NUMBER(38)

ドキュメントIDディメンション。

ASDIM_WC_DOCUMENT_0.ID

USER_AGENT

NULL

NUMBER(38)

ユーザー・エージェント。

ASDIM_WC_USER_AG_0.ID

APPLICATION

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

G.2.20 ASFACT_WC_DOCLIB__1

ユーザーがドキュメントをダウンロードしたときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

DATE

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

DOCUMENT

NULL

NUMBER(38)

ドキュメントIDディメンション。

ASDIM_WC_DOCUMENT_0.ID

REFERRER_

NULL

NUMBER(38)

参照IDディメンション。

ASDIM_WC_REFERRE_0.ID

CLIENT_IP_

NULL

NUMBER(38)

クライアントIP IDディメンション。

ASDIM_WC_CLIENT__0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

USER_AGENT_

NULL

NUMBER(38)

ユーザー・エージェント。

ASDIM_WC_USER_AG_0.ID

SESSION_ID_

NULL

NVARCHAR2(254)

セッションID。

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

G.2.21 ASFACT_WC_DOCLIB__2

ユーザーがドキュメントを作成したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

DATE

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

WEBCENTER_RESOURCE_

NULL

NUMBER(38)

WebCenter PortalリソースID。

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

G.2.22 ASFACT_WC_DOCLIB__3

ユーザーがドキュメントを編集したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

WEBCENTER_RESOURCE_

NULL

NUMBER(38)

WebCenter PortalリソースID。

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

G.2.23 ASFACT_WC_DOCLIB__4

ユーザーがドキュメントにタグ付けしたときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

TAGS

NULL

NUMBER(38)

ドキュメントに追加されるタグ。

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

WEBCENTER_RESOURCE_

NULL

NUMBER(38)

WebCenter PortalリソースID。

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

G.2.24 ASFACT_WC_DOCLIB__5

ユーザーがドキュメントをお気に入り登録したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

WEBCENTER_RESOURCE_

NULL

NUMBER(38)

WebCenter PortalリソースID。

G.2.25 ASFACT_WC_DOCLIB__6

ユーザーがドキュメントにコメントしたときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

WEBCENTER_RESOURCE_

NULL

NUMBER(38)

WebCenter PortalリソースID。

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

G.2.26 ASFACT_WC_DOCLIB__7

ユーザーがドキュメントを削除したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

WEBCENTER_RESOURCE_

NULL

NUMBER(38)

WebCenter PortalリソースID。

G.2.27 ASFACT_WC_EVENT_C_0

ユーザーがポータル内にイベントを作成したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

EVENT_

NULL

NUMBER(38)

イベント識別子。

ASDIM_WC_EVENTS_0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

G.2.28 ASFACT_WC_EVENT_D_0

ユーザーがポータルからイベントを削除したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

EVENT_

NULL

NUMBER(38)

イベント識別子。

ASDIM_WC_EVENTS_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

G.2.29 ASFACT_WC_EVENT_E_0

ユーザーがポータル内のイベントを編集したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

EVENT_

NULL

NUMBER(38)

イベント識別子。

ASDIM_WC_EVENTS_0.ID

G.2.30 ASFACT_WC_GROUPSP_0

ユーザーがポータルを表示したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

CLIENT_IP_

NULL

NUMBER(38)

クライアントIP IDディメンション。

ASDIM_WC_CLIENT__0.ID

SESSION_ID_

NULL

NVARCHAR2(254)

セッションID。

RESPONSE_TIME_

NULL

NUMBER(16)

レスポンス時間(ミリ秒)。

REFERRER_

NULL

NUMBER(38)

参照IDディメンション。

ASDIM_WC_REFERRE_0.ID

USER_AGENT_

NULL

NUMBER(38)

ユーザー・エージェント。

ASDIM_WC_USER_AG_0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

G.2.31 ASFACT_WC_GROUPSP_1

ユーザーがポータルを作成したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

G.2.32 ASFACT_WC_GROUPSP_2

ユーザーがポータルに参加したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

G.2.33 ASFACT_WC_GROUPSP_3

ユーザーがポータルを削除したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

G.2.34 ASFACT_WC_LIST_CR_0

ユーザーがリストを作成したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

LIST_

NULL

NUMBER(38)

リストID。

ASDIM_WC_LISTS_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

G.2.35 ASFACT_WC_LIST_DE_0

ユーザーがリストを削除したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

LIST_

NULL

NUMBER(38)

リストID。

ASDIM_WC_LISTS_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

G.2.36 ASFACT_WC_LIST_ED_0

ユーザーがリストを編集したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

LIST_

NULL

NUMBER(38)

リストID。

ASDIM_WC_LISTS_0.ID

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

G.2.37 ASFACT_WC_LOGINS_0

各イベントの関連データとともに分析によって取得されるログイン・イベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

SESSION_ID_

NULL

NVARCHAR2(254)

セッションID

USER_AGENT_

NULL

NUMBER(38)

ユーザー・エージェント。

ASDIM_WC_USER_AG_0.ID

REFERRER_

NULL

NUMBER(38)

参照IDディメンション。

ASDIM_WC_REFERRE_0.ID

CLIENT_IP_

NULL

NUMBER(38)

クライアントIP IDディメンション。

ASDIM_WC_CLIENT__0.ID

G.2.38 ASFACT_WC_PEOPLEC_0

ユーザーがピープル・コネクションを追加したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

TARGET_USER

NULL

NUMBER(38)

ユーザーID

G.2.39 ASFACT_WC_PEOPLEC_1

ユーザーがウォールに投稿したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

TARGET_USER

NULL

NUMBER(38)

ユーザーID。

G.2.40 ASFACT_WC_PEOPLEC_2

ユーザーがプロファイルを編集したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

G.2.41 ASFACT_WC_PEOPLEC_3

ユーザーがステータス情報を編集したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

G.2.42 ASFACT_WC_PORTLET_0

エンド・ユーザーがポートレットにアクセスしたときに分析によって取得される情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

CACHED_

NULL

NUMBER(5)

ポートレットがキャッシュから表示されたかどうかを示します。

PORTLET_

NULL

NUMBER(38)

ポートレット。

ASDIM_WC_PORTLET_1.ID

REFERRER_

NULL

NUMBER(38)

参照IDディメンション。

ASDIM_WC_REFERRE_0.ID

PRODUCER_

NULL

NUMBER(38)

ポートレット・プロデューサ。

ASDIM_WC_PRODUCE_0.ID

PAGE_

NULL

NUMBER(38)

ページIDディメンション。

ASDIM_WC_PAGES_0.ID

SESSION_ID_

NULL

NVARCHAR2(254)

セッションID。

CLIENT_IP

NULL

NUMBER(38)

クライアントIP IDディメンション。

ASDIM_WC_CLIENT__0.ID

PORTLET_INSTANCE_

NULL

NUMBER(38)

ポートレット・インスタンス。

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

RESPONSE_TIME_

NULL

NUMBER(16)

レスポンス時間(ミリ秒)。

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

USER_AGENT_

NULL

NUMBER(38)

ユーザー・エージェント。

ASDIM_WC_USER_AG_0.ID

G.2.43 ASFACT_WC_SEARCHE_0

ユーザーが検索を実行したときに分析によって取得されるイベント情報を格納するファクト表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

OCURRED

NOT NULL

DATE

イベントが発生した日付。

TIMEID

NOT NULL

NUMBER(38)

ディメンション・イベントが発生した時間。この列は、パーティション化に使用されます。

ASDIM_TIME.ID

USERID

NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASSYS_EVENTFACTS.ID

PAGE_

NULL

NUMBER(38)

ページIDディメンション。

ASDIM_WC_PAGES_0.ID

USER_AGENT_

NULL

NUMBER(38)

ユーザー・エージェント。

ASDIM_WC_USER_AG_0.ID

CLIENT_IP_

NULL

NUMBER(38)

クライアントIP IDディメンション。

ASDIM_WC_CLIENT__0.ID

APPLICATION_

NULL

NUMBER(38)

アプリケーションIDディメンション。

ASDIM_WC_APPLICA_0.ID

SESSION_ID_

NULL

NVARCHAR2(254)

セッションID。

REFERRER_

NULL

NUMBER(38)

参照IDディメンション。

ASDIM_WC_REFERRE_0.ID

SEARCHED_PHRASE

NULL

NUMBER(38)

検索フレーズ。

GROUPSPACE_

NULL

NUMBER(38)

ポータルIDディメンション。

ASDIM_WC_GROUPSP_0.ID

G.3 分析ディメンション表の説明

分析ディメンション表は、分析コレクタの初回実行時に作成されます。ディメンション表には、分析イベントに関連付けられている冗長な説明データが格納されます。これらの表内に値が見つからない場合、新しいレコードが追加されます。一般的な分析ディメンション・データには、ページ名、ブラウザ名、ドキュメント名、ポータル名などがあります。

この項では、表G-2「分析ディメンション表(先頭がASDIM_WC)」にリストされている表のそれぞれについて説明します。

G.3.1 ASDIM_WC_APPLICA_0

webcenter (ポータル)など、分析データにアクセスするWebCenter Portalアプリケーションの名前を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

NAME_

NOT NULL

NVARCHAR2(254)

アプリケーション名。

G.3.2 ASDIM_WC_CLIENT__0

分析イベントを受信したときに分析によって取得されるクライアントIPアドレスの詳細を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

IP

NOT NULL

NVARCHAR2(15)

クライアントIPアドレス

G.3.3 ASDIM_WC_DISCUSS_0

分析イベントを受信したときに分析によって取得されるディスカッション・トピックの詳細を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

ICONURL_

NULL

NVARCHAR2(254)

アイコンURL

NAME_

NULL

NVARCHAR2(254)

ディスカッション・トピック名。

DESCRIPTION_

NULL

NVARCHAR2(254)

ディスカッション・トピックの説明。

RESOURCEID_

NOT NULL

NVARCHAR2(254)

WebCenter PortalリソースID。

G.3.4 ASDIM_WC_DISCUSS_1

分析イベントを受信したときに分析によって取得されるディスカッション・フォーラムの詳細を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

ICONURL_

NULL

NVARCHAR2(254)

アイコンURL

DESCRIPTION_

NULL

NVARCHAR2(254)

ディスカッション・フォーラムの説明。

RESOURCEID_

NOT NULL

NVARCHAR2(254)

WebCenter PortalリソースID。

NAME_

NULL

NVARCHAR2(254)

WebCenter Portalリソース名(ディスカッション・フォーラムの名前)。

G.3.5 ASDIM_WC_DISCUSS_2

分析イベントを受信したときに分析によって取得されるディスカッション・メッセージの詳細を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

NAME_

NULL

NVARCHAR2(254)

WebCenter Portalリソース名(ディスカッション・メッセージの名前)。

RESOURCEID_

NOT NULL

NVARCHAR2(254)

WebCenter PortalリソースID。

DESCRIPTION_

NULL

NVARCHAR2(254)

ディスカッション・メッセージの説明。

ICONURL_

NULL

NVARCHAR2(254)

アイコンURL

G.3.6 ASDIM_WC_DISCUSS_3

分析イベントを受信したときに分析によって取得されるお知らせの詳細を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

DESCRIPTION_

NULL

NVARCHAR2(254)

お知らせの説明。

ICONURL_

NULL

NVARCHAR2(254)

アイコンURL

RESOURCEID_

NOT NULL

NVARCHAR2(254)

WebCenter PortalリソースID。

NAME_

NULL

NVARCHAR2(254)

WebCenter Portalリソース名(お知らせの名前)。

G.3.7 ASDIM_WC_DOCUMENT_0

エンド・ユーザーがドキュメントにアクセスしたときに分析によって取得される情報を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

CONTENTTYPE_

NULL

NVARCHAR2(254)

ドキュメントのコンテンツ・タイプ。

CONTEXT

NULL

NVARCHAR2(512)

ドキュメントの接頭辞(識別を目的としています)

- ドキュメントの接頭辞 - 親ポータルのフォルダのURL

- ブログの接頭辞 - ブログのタイトル名

- Wikiの接頭辞 - Wikiのタイトル名

NAME_

NULL

NVARCHAR2(254)

ドキュメント名。

RESOURCEID_

NOT NULL

NVARCHAR2(254)

WebCenter PortalリソースID。

DESCRIPTION_

NULL

NVARCHAR2(254)

ドキュメントの説明。

ICONURL_

NULL

NVARCHAR2(254)

アイコンURL

PATH_

NULL

NVARCHAR2(512)

ドキュメント・パス。

OBJECTTYPE_

NULL

NVARCHAR2(254)

オブジェクト・タイプ。

G.3.8 ASDIM_WC_EVENTS_0

ユーザーが各自のカレンダ内にイベントを作成したときに分析によって取得されるポータル・イベントに関する情報を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

RESOURCEID_

NOT NULL

NVARCHAR2(254)

WebCenter PortalリソースID。

NAME_

NULL

NVARCHAR2(254)

WebCenter Portalリソース名(ポータル・イベントの名前)。

G.3.9 ASDIM_WC_GROUPSP_0

エンド・ユーザーがポータルにアクセスしたとき(WebCenter Portalのみ)に分析によって取得される情報を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

ICONURL_

NULL

NVARCHAR2(254)

アイコンURL

DESCRIPTION_

NULL

NVARCHAR2(254)

説明。

PERSONAL_

NULL

NUMBER(5)

ポータルがホーム・ポータル(0)であるかグループ・スペース(1)であるかを示します。

RESOURCEID_

NOT NULL

NVARCHAR2(254)

WebCenter PortalリソースID。

NAME_

NULL

NVARCHAR2(254)

ポータルの名前。

G.3.10 ASDIM_WC_LISTS_0

分析イベントを受信したときに分析によって取得されるリストの詳細を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

NAME_

NULL

NVARCHAR2(254)

WebCenter Portalリソース名(リストの名前)。

RESOURCEID_

NOT NULL

NVARCHAR2(254)

WebCenter PortalリソースID。

G.3.11 ASDIM_WC_PAGES_0

エンド・ユーザーがページにアクセスしたときに分析によって取得される情報を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

PERSONAL_

NULL

NUMBER(5)

ページが(ホーム・ポータル内の)個人用ページであるかポータルに属しているかを示します。

RESOURCEID_

NOT NULL

NVARCHAR2(254)

WebCenter PortalリソースID。

ページのフルパス。例: /oracle/webcenter/page/sda254765_f950/Home.jspx

NAME_

NULL

NVARCHAR2(254)

ページの名前。

G.3.12 ASDIM_WC_PORTLET_0

エンド・ユーザーがポートレットにアクセスしたときに分析によって取得される情報を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが変更された日付。

DEFAULT_TITLE_

NULL

NVARCHAR2(254)

デフォルトのポートレット・タイトル。

RESOURCEID_

NOT NULL

NVARCHAR2(512)

WebCenter PortalリソースID。

G.3.13 ASDIM_WC_PORTLET_1

分析イベントを受信したときに分析によって取得されるポートレット・インスタンスの情報を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

TITLE_

NULL

NVARCHAR2(254)

ポートレット・タイトル。

RESOURCEID_

NOT NULL

NVARCHAR2(512)

WebCenter PortalリソースID。

G.3.14 ASDIM_WC_PRODUCE_0

分析イベントを受信したときに分析によって取得されるポートレット・プロデューサの情報を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが変更された日付。

RESOURCEID_

NOT NULL

NVARCHAR2(512)

WebCenter PortalリソースID。

NAME_

NULL

NVARCHAR2(254)

プロデューサ名。

G.3.15 ASDIM_WC_REFERRE_0

分析によって取得される、分析イベントが取得されたときのユーザーのナビゲート先(URL)に関する情報を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

URL

NOT NULL

NVARCHAR2(2000)

参照されるURL

G.3.16 ASDIM_WC_SEARCHE_0

分析イベントを受信したときに分析によって取得される検索フレーズを格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

PHRASE

NOT NULL

NVARCHAR2(254)

検索フレーズ。

G.3.17 ASDIM_WC_TAGS_0

分析イベントを受信したときに分析によって取得されるタグの情報を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

VALUE

NOT NULL

NVARCHAR2(254)

タグ値。

G.3.18 ASDIM_WC_USER_AG_0

分析データへのアクセスに使用されるブラウザに関する情報を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

OS

NULL

NVARCHAR2(100)

オペレーティング・システム。

AGENT

NOT NULL

NVARCHAR2(512)

ユーザー・エージェントID。

BROWSER

NULL

NVARCHAR2(255)

ブラウザの名前。

BROWSER_VERSION

NULL

NVARCHAR2(30)

ブラウザのバージョン。

G.3.19 ASDIM_TIME

グループ分析レポートに使用される時間を格納するディメンション表です。エントリは毎時作成されます。分析レポートは、特定の時間枠内にデータをグループ化するためにこの表を使用しています。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

PERIODSTART

NULL

DATE

現在の期間の開始。

PERIODEND

NULL

DATE

現在の期間の終了。

HOUROFDAY

NULL

NUMBER(5)

この期間に対応する時間。

DAYOFMONTH

NOT NULL

NUMBER(5)

月単位の現在の日。

DAYOFYEAR

NULL

NUMBER(5)

年単位の現在の日。

WEEKOFYEARSUNDAY

NULL

NUMBER(5)

日曜日を基準とした年単位の週数。

WEEKOFYEARMONDAY

NULL

NUMBER(5)

月曜日を基準とした年単位の週数。

WEEKOFYEARSATURDAY

NULL

NUMBER(5)

土曜日を基準とした年単位の週数。

MONTHOFYEAR

NOT NULL

NUMBER(5)

期間に含まれる年単位の月。

YEAR

NOT NULL

NUMBER(5)

現在の年。

G.3.20 ASDIM_USERS

分析イベントを受信したときに分析によって取得されるユーザーの詳細を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

USERID

NOT NULL

NVARCHAR2(255)

ユーザーID。

例: weblogic

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

G.3.21 ASDIM_USERPROPERTIES

役職や部門などのユーザー・プロパティを格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

PROPERTYID

NOT NULL

NUMBER(38)

プロパティID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NULL

DATE

レコードが最後に変更された日付。

NAME

NOT NULL

NVARCHAR2(255)

プロパティ名。

G.3.22 ASDIM_USERPROPERTYVALUES

ユーザー・プロパティの値を格納するディメンション表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

USERID

NOT NULL

NUMBER(38)

ユーザーIDディメンション。

ASDIM_USERS.ID

PROPERTYID

NOT NULL

NUMBER(38)

プロパティID。

ASDIM_USERPROPERTIES.ID

VALUE

NULL

NVARCHAR2(255)

プロパティID値。

TYPE

NULL

NUMBER(38)

プロパティ・タイプ。

G.4 分析システム表の説明

システム表はインストール中に作成され、システム構成パラメータなどのアプリケーション情報が格納されます。この項では、各表について説明します。

G.4.1 ASSYS_CONFIG

システム構成情報を格納するシステム表です。各行には、構成タイプと値から成る値ペアが含まれます。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

NAME

NULL

NVARCHAR2(510)

構成パラメータの名前。例: collector_port

CONFIGTYPEID

NOT NULL

NUMBER(38)

構成タイプID。

INTVAL

NULL

NUMBER(38)

構成に関連付けられた整数値。

STRVAL

NULL

NVARCHAR2(2000)

構成に関連付けられた文字列値。

G.4.2 ASSYS_DIMENSIONPROPS

ディメンション構成情報を格納するシステム表です。各行は、ディメンションのプロパティ値を表します。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

DIMENSIONID

NOT NULL

NUMBER(38)

ディメンションID。

ASSYS_EVENTDIMENSIONS.ID

DISPAYNAME

NOT NULL

NVARCHAR2(510)

ディメンション・プロパティの表示名。

COLUMNNAME

NOT NULL

NVARCHAR2(510)

列名。

COLUMNTYPE

NULL

NUMBER(38)

列タイプ。

COLUMNLENGTH

NULL

NUMBER(38)

列の長さ。

ISKEY

NULL

NUMBER(38)

このプロパティがキー・ディメンション・プロパティであるかどうかを示します。

G.4.3 ASSYS_EVENTDIMENSIONS

各分析イベントに関連付けられたディメンションを格納するシステム表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

DISPAYNAME

NOT NULL

NVARCHAR2(510)

ディメンション・イベントの表示名。

TABLENAME

NOT NULL

NVARCHAR2(510)

ディメンションに関連付けられた表名。

ISUNIQUE

NULL

NUMBER(38)

非推奨です。

IDENTIFYINGUSER

NOT NULL

NUMBER(38)

ユーザーID。

ASDIM_USERS.ID

G.4.4 ASSYS_EVENTFACTS

各分析イベントに関連付けられたファクトを格納するシステム表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

EVENTID

NULL

NUMBER(38)

イベントIDディメンション。

ASDIM_WC_EVENTS_0.ID

DISPAYNAME

NOT NULL

NVARCHAR2(510)

イベント・ファクトの表示名。

COLUMNAME

NOT NULL

NVARCHAR2(510)

イベント・ファクトの列名。

COLUMNTYPEID

NULL

NUMBER(38)

イベント・ファクトのデータ型を示します。データ型には、INTEGER (1)、STRING (2)、DATE (3)、FLOAT (4)およびBOOLEAN (5)があります。イベント・ファクトがディメンションの場合、COLUMNTYPEIDは-1になります。

COLUMNLENGTH

NULL

NUMBER(38)

ユーザーID。

EVENTDIMENSIONID

NULL

NUMBER(38)

ディメンションID。

ASSYS_EVENTDIMENSIONS.ID

G.4.5 ASSYS_EVENTS

取得された1つのユーザー・アクションを表す様々な分析イベントを格納するシステム表です。デフォルトの分析イベントとカスタム(ユーザー定義)分析イベントの両方が格納されます。各行は、取得されたイベントとその関連データ(アクティブ・ステータス、データが格納されている表の名前など)を表します。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

DISPAYNAME

NOT NULL

NVARCHAR2(510)

イベント・ファクトの表示名。

DESCRIPTION

NULL

NVARCHAR2(510)

イベントの説明。

TABLENAME

NOT NULL

NVARCHAR2(510)

表名。

ISCUSTOM

NOT NULL

NUMBER(38)

イベントがカスタム・イベントであるかどうかを示します。 (0/1)

ISACTIVE

NOT NULL

NUMBER(38)

非推奨です。

ISPERSISTENT

NOT NULL

NUMBER(38)

イベントのファクト表を作成するかどうかを示します。 (0/1)

ISACTION

NOT NULL

NUMBER(38)

使用されません。

G.4.6 ASSYS_NAMESPACES

分析イベントが登録される様々なネームスペースを格納するシステム表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

PREFIX

NOT NULL

NVARCHAR2(510)

ネームスペースの接頭辞。

URI

NOT NULL

NVARCHAR2(510)

ネームスペースのUniversal Resource Identifier。

G.4.7 ASSYS_REPORTCOMPOSITION

分析によって提供されたレポートの構成を格納するシステム表です。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

PARENTREPORTID

NOT NULL

NUMBER(38)

親レポートIDへの参照。

ASSYS_REPORTS.ID

CHILDREPORTID

NOT NULL

NUMBER(38)

子レポートIDへの参照。

ASSYS_REPORTS.ID

SEQUENCE

NULL

NUMBER(10)

レポート構成の順序。

NAME

NOT NULL

NVARCHAR2(510)

レポート構成の名前。

DESCRIPTION

NULL

NVARCHAR2(510)

レポート構成の説明。

G.4.8 ASSYS_REPORTGROUP

分析を対象としたレポート・グループを格納するシステム表です。レポート・グループを使用すると、エンド・ユーザーは特定の方法で分析データを表示できます。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

NAME

NOT NULL

NVARCHAR2(510)

レポート・グループ名。

DESCRIPTION

NULL

NVARCHAR2(510)

レポート・グループの説明。

SEQUENCE

NULL

NUMBER(10)

順序。

G.4.9 ASSYS_REPORTITEMS

各レポートに含まれるアイテムの情報を格納するシステム表です。各行は、そのレポートに属する特定のアイテムを表します。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

REPORTID

NOT NULL

NUMBER(38)

レポートID。

ASSYS_REPORTS.ID

ITEMTYPE

NOT NULL

VARCHAR2(30)

アイテム・タイプ。

ITEMDESCRIPTION

NULL

NVARCHAR2(510)

アイテムの説明。

ITEMVALUE

NULL

NUMBER(5)

アイテム値。

EVENTDIMENSIONID

NULL

NUMBER(38)

ディメンションID。

ASSYS_EVENTDIMENSIONS.ID

EVENTDIMENSIONNAME

NULL

NVARCHAR2(510)

ディメンション名。

EVENTFACTID

NULL

NUMBER(38)

イベント・ファクトID。

ASSYS_EVENTFACTS.ID

EVENTFACTNAME

NULL

NVARCHAR2(510)

イベント・ファクト名。

PROPERTYNAME

NULL

NVARCHAR2(510)

実行する問合せ内で選択されるディメンション表内の列の名前(名前やIDなど)。

AGGREGATEFUNCTION

NULL

VARCHAR2(60)

グループ化に使用するSQL関数(AVG、MIN、MAX、COUNTまたはCOUNT DISTINCT)。

DISPLAYFLAG

NOT NULL

NUMBER(5)

レポート内にアイテムを表示するかどうかを示します。 (0/1)

IDENTIFIERFLAG

NOT NULL

NUMBER(5)

このアイテムを識別子として使用するかどうかを示します(SQL: この列を基準にグループ化するかどうか)。 (0/1)

G.4.10 ASSYS_REPORTITEMVALUES

レポート内の各アイテムに関連付けられた値を格納するシステム表です。各行は、そのレポートのアイテム・インスタンスに対応した特定の値(文字、浮動小数または日付)を表します。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

REPORTITEMID

NOT NULL

NUMBER

レポート・アイテムID。

ASSYS_REPORTITEMS.ID

VALUETYPE

NOT NULL

VARCHAR2(30)

値タイプ: CVALUE、NVALUEまたはDVALUE。

CVALUE

NULL

NVARCHAR2(510)

文字列値。*

NVALUE

NULL

NUMBER

数値。*

DVALUE

NULL

DATE

日付値。*

*値を保持するのは、CVALUE、NVALUE、DVALUEのうち1つのみです。

G.4.11 ASSYS_REPORTS

分析によって提供される様々なデフォルトのレポートを格納するシステム表です。各行は、単一のレポートとそのレポートの構成を表します。

列名

NOT NULLかどうか

データ型

説明

外部キー

ID

NOT NULL

NUMBER(38)

内部の表ID。

CREATED

NOT NULL

DATE

レコードが作成された日付。

LASTMODIFIED

NOT NULL

DATE

レコードが最後に変更された日付。

NAME

NOT NULL

NVARCHAR2(510)

レポート・アイテムID。

DESCRIPTION

NULL

NVARCHAR2(255)

レポートの説明。

SEQUENCE

NULL

NUMBER(10)

順序。

GROUPID

NULL

NUMBER (38)

レポートのグループID。

ASSYS_REPORTGROUP.ID

EVENTTYPEID

NULL

NUMBER(38)

関連イベントのID。

ASSYS_EVENTS.ID

EVENTDISPLAYNAME

NULL

NVARCHAR2(510)

非正規化されています。関連イベントの表示名。

GROUPSPACEFILTERENABLED

NOT NULL

VARCHAR2(1)

ユーザーがポータルを基準にレポートをフィルタ処理できるかどうかを示します。true (1)に設定した場合、レポートにはポータルのセレクタUIが表示されます。

DEFAULTCHARTSTYLE

NULL

NVARCHAR2(255)

レポートのデフォルトのチャート・スタイル。

DEFAULTCHARTTYPE

NULL

NUMBER(2)

デフォルトのチャート・タイプ。

DEFAULTDISPLAYCOUNT

NULL

NUMBER(2)

デフォルトの表示カウント。

DEFAULTTIMEFRAME

NULL

NUMBER(2)

デフォルトの時間枠。

DEFAULTGROUPBYTIMEINTERVAL

NULL

NUMBER(2)

デフォルトのグループ化間隔。

DEFAULTGROUPBYUSERPROPERTY

NULL

NUMBER(38)

ユーザーを基準としたグループ化に関するデフォルトのプロパティ。

SHOWMETRICSELECTOR

NOT NULL

NVARCHAR2(1)

このメトリックに対してセレクタUIを表示するかどうかを示します。(Y/N)

SHOWCHARTTYPEOPTIONS

NOT NULL

NVARCHAR2(1)

UIにチャート・タイプ・オプションを表示するかどうかを示します。(Y/N)

SHOWDISPLAYOPTIONS

NOT NULL

NVARCHAR2(1)

表示オプションを選択するためのフィールドをUIに表示するかどうかを示します。(Y/N) (このフィールドは、上位n個、下位n個、すべてのレコードまたは特定のレコードのリストを選択するためのドロップダウン・リストです。)

SHOWDISPLAYTOPOPTION

NOT NULL

NVARCHAR2(1)

ユーザーが「上位n」オプションを選択できるかどうかを示します。(Y/N)
Nの場合、「上位n」オプションはコンボ・ボックスに表示されません。

SHOWDISPLAYBOTTOMOPTION

NOT NULL

NVARCHAR2(1)

ユーザーが「下位n」オプションを選択できるかどうかを示します。(Y/N) Nの場合、「下位n」オプションはコンボ・ボックスに表示されません。

SHOWDISPLAYALLOPTION

NOT NULL

NVARCHAR2(1)

ユーザーが「すべてのレコード」オプションを選択できるかどうかを示します。(Y/N) Nの場合、「すべてのレコード」オプションはコンボ・ボックスに表示されないため、ユーザーが選択できるのは、上位n、下位nまたは特定のレコードのリストのみになります。

SHOWOBJECTPICKER

NOT NULL

NVARCHAR2(1)

ユーザーが特定のレコードのリストを表示するためのオプションを選択できるかどうかを示します。(Y/N) Nの場合、「選択」オプションはコンボ・ボックスに表示されません。Yの場合、「選択」オプションが使用可能になり、表示されたピッカー・ダイアログで、レポートに含めるオブジェクトのリストを選択できます。

SHOWTIMEFRAMEFILTER

NOT NULL

NVARCHAR2(1)

時間枠フィルタを表示するかどうかを示します。(Y/N)

SHOWUSERPROPERTYFILTER

NOT NULL

NVARCHAR2(1)

ユーザー・プロパティ・フィルタを表示するかどうかを示します(Y/N)。

SHOWGROUPBYOPTIONS

NOT NULL

NVARCHAR2(1)

グループ化基準のオプションを表示するかどうかを示します。(Y/N)

COMPOSEDREPORT

NOT NULL

NVARCHAR2(1)

このレポートが構成済のレポートであるかどうかを示します。

PORTLETTYPEID

NULL

NUMBER(38)

ポートレット・タイプID。

G.5 分析ユーザー・プロパティ

分析は、WebCenter Portalアプリケーション内で分析イベントをトリガーしているユーザーの情報を格納するために、いくつかの表を使用します。この項の内容は、次のとおりです。

- 第G.5.1項「ユーザー・プロパティ表 - 概要」

- 第G.5.2項「ユーザー・プロパティ・ディメンション表」

- 第G.5.3項「WebCenter Portalの追加設定なしのユーザー・プロパティ」

ユーザー・プロパティに関するサンプル問合せについては、第47章「分析の統合」の第47.3.3項「ユーザー・メトリックについての問合せのサンプル」を参照してください。

G.5.1 ユーザー・プロパティ表 - 概要

図G-5は、ユーザーに関する情報を格納するために分析によって使用されるデータベース・モデルを示しています。ユーザー・ディメンション表には、単一のプロパティ列(USERID)が含まれます。また、ユーザー・プロパティをキーと値から成るデータとして格納する表が他に2つ(ASDIM_USERPROPERTIESおよびASDIM_USERPROPERTYVALUES)あります。このモデルを使用すると、ユーザー・ディメンションの定義を変更することなく、他のユーザー・プロパティを追加できます。

図G-5 分析のユーザー・プロパティ・ディメンション

ASDIM_USERPROPERTIES表には、分析によって受信されたユーザー・プロパティの名前が格納されます。ユーザー・プロパティ(名前、役職、電子メール、住所などのユーザー属性)は、プロパティが変更されたときではなく、ユーザーがWebCenter Portalにログインしたときに、分析によってイベントとして取得されます。ユーザーがプロパティを変更した場合、そのプロパティの値は、次回そのユーザーがログインしたときの分析時に更新されます。

ASDIM_PROPERTYVALUES表には、ユーザーのプロパティごとに1つの行が格納されます。各行は、特定のユーザーに関連付けられたプロパティの値に対応しています。

G.5.2 ユーザー・プロパティ・ディメンション表

この項では、ユーザー・プロパティ・ディメンション表について説明します。

- 第G.5.2.1項「ASDIM_USERPROPERTIES」

- 第G.5.2.2項「ASDIM_USERPROPERTYVALUES」

G.5.2.1 ASDIM_USERPROPERTIES

分析によって受信されたユーザー・プロパティの名前を格納するディメンション表です。

列名

データ型

説明

ID

NUMBER(38,0)

表の主キー。順序から取得される値。

NAME

VARCHAR(255)

ユーザー・プロパティの名前。

名前は大文字に変換され、空白文字は削除されます。

G.5.2.2 ASDIM_USERPROPERTYVALUES

ユーザーのプロパティごとに1つの行を格納するディメンション表です。各行は、特定のユーザーに関連付けられたプロパティの値に対応しています。

列名

データ型

説明

ID

NUMBER(38,0)

表の主キー。順序から取得される値。

USERID

NUMBER(38,0)

ASDIM_USERS表に対する外部キー。

PROPERTYID

NUMBER(38,0)

ASDIM_USERPROPERTIES表に対する外部キー。

VALUE

VARCHAR(255)

特定のユーザー(USERID列によって識別されます)の特定のプロパティ(PROPERTYID列によって識別されます)の値。たとえば、プロパティがCITYでユーザーがweblogicの場合、この列にはそのユーザーの勤務先である都市の名前(San Franciscoなど)が格納されます。

TYPE

NUMBER(38,0)

ユーザー・プロパティの値タイプ。(プロパティ値は常に文字列として格納されます。)

G.5.3 WebCenter Portalの追加設定なしのユーザー・プロパティ

WebCenter Portalアプリケーションは、表G-4に示されているように、ユーザー・プロパティの特定のセットを分析に送信します。

注意:

WebCenter Portalアプリケーションが送信できるのは、ユーザーによって設定されたプロパティか、ユーザー・ディレクトリ内で提供されるプロパティのみです。プロパティ値が空白の場合、ユーザーのASDIM_USERPROPERTYVALUES表には、そのプロパティに対応する行が作成されません。

表G-4 WebCenter Portalの追加設定なしのユーザー・プロパティ

プロパティ名

プロパティ・ラベル(レポートに表示されます)

値の例

IMUSER

IMユーザー

dfrabott

DISPLAYNAME

表示

Diego Frabotta

PHONE

電話番号

+5411-2222-1234

TITLE

役職

ソフトウェア・エンジニア

DEPARTMENT

部門

分析

MANAGER

マネージャ

uid=dsabaris,cn=users,dc=us,dc=myco,dc=com

COMPANY

会社

MyCo

STREET

番地

Parque Austral, Edificio Insignia M3

ZIPCODE

郵便番号

12345

STATEORPROVINCE

都道府県

ブエノスアイレス

COUNTRY

国

アルゼンチン

EMPLOYEEID

従業員ID

55555

CITY

市区町村

ピラー

G.6 分析イベントおよびディメンション・データ型

表G-5は、分析イベントおよびディメンション・データ型をOracleデータベース、Microsoft SQL ServerデータベースおよびIBM DB2データベースのデータの型にマップする方法を示しています。

表G-5 分析イベントおよびディメンション・データ型

分析イベントおよびディメンションの型

Oracle

Microsoft SQL Server

IBM DB2

INTEGER

NUMBER

BIGINT

INTEGER

STRING

NVARCHAR

NVARCHAR

VARGRAPHIC

DATE

DATE

DATETIME

TIMESTAMP

FLOAT

FLOAT

FLOAT

DECFLOAT

BOOLEAN

NUMBER(5)

TINYINT

SMALLINT

H WebCenter Portalのアクセシビリティ機能

この付録では、WebCenter Portalのアクセシビリティ機能について説明します。

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

- 第H.1項「WebCenter Portalアクセシビリティ機能の概要」

- 第H.2項「アクセス可能なHTMLの生成」

- 第H.3項「実行時のアクセシビリティ機能」

- 第H.4項「ポートレットのアクセシビリティの考慮事項」

H.1 WebCenter Portalアクセシビリティ機能の概要

アクセシビリティとは、視覚や聴覚など、身体的に制限のあるユーザーがアプリケーションを使用できるようにすることです。わかりやすく表現すると、マウスなしで(キーボードのみで)使用できるアプリケーション、視覚障害者に向けたスクリーン・リーダーを使用できるアプリケーション、さらに音声、色彩、またはアニメーションやタイミングに頼らないアプリケーションを作成するということです。

Oracleソフトウェアは、http://www.oracle.com/accessibility/standards.htmlの標準の解釈を使用して、Section 508およびWCAG 1.0 AAの標準を実装しています。

この項では、WebCenter Portalに固有のアクセシビリティ機能について説明します。アクセス可能なADF Facesページの作成方法の全般的な情報は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のアクセス可能なADF Facesコンポーネントおよびページの開発に関する項を参照してください。JDeveloperのアクセシビリティ機能の詳細は、オンライン・ヘルプの目次から「JDeveloperの基本」の「JDeveloperのアクセシビリティ」ノードを選択すると表示される、ヘルプ・トピックを参照してください。

H.2 アクセス可能なHTMLの生成

WebCenter Portalには、アプリケーション・ページに追加することで、実行時にページを編集できるようにする、いくつかのコンポーザ・コンポーネントが用意されています。これらのコンポーネントには、アクセス可能なHTMLを生成するために使用する属性があります。作成するページをアクセス可能にするには、表H-1に示す属性を設定する必要があります。

表H-1 WebCenter Portalのコンポーザ・コンポーネントのアクセシビリティ属性

コンポーネント

アクセシビリティ属性

pe:changeModeButton

アクセシビリティ属性はありません。

pe:changeModeLink

アクセシビリティ属性はありません。

pe:imageLink

shortDesc: 必須。この属性は、HTMLのalt属性に変換されます。

accessKey: オプション。この属性は、コンポーネントに簡単にアクセスするために使用するニーモニック文字を設定します。

pe:pageCustomizable

アクセシビリティ属性はありません。

pe:layoutCustomizable

shortDesc: 必須。この属性は、HTMLのalt属性に変換されます。

accessKey: オプション。この属性は、コンポーネントに簡単にアクセスするために使用するニーモニック文字を設定します。

cust:panelCustomizable

アクセシビリティ属性はありません。

cust:showDetailFrame

shortDesc: 必須。この属性は、HTMLのalt属性に変換されます。

H.3 実行時のアクセシビリティ機能

ユーザーが実行時にページをカスタマイズできるようにする場合、すべてのユーザーがどのカスタマイズにもアクセスできるようにしておく必要があります。ユーザーが実行時に作成できるすべてのコンポーネントでは、アクセシビリティ関連のすべての属性がプロパティ・インスペクタに表示され、ここでユーザーは属性を適宜設定できます。

WebCenter Portal固有のコンポーネントに対するアクセシビリティ関連の属性のリストは、表H-1を参照してください。その他のコンポーネントのアクセシビリティ関連の属性のリストは、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のアクセス可能なADF Facesコンポーネントおよびページの開発に関する項を参照してください。

H.4 ポートレットのアクセシビリティの考慮事項

IFrameは、現在のスクリーン・リーダーでは十分に対応していないため、一部のアクセシビリティ標準では許可されていません。

注意:

Oracle JSF Portlet Bridgeを使用して作成されたポートレットは、JavaScriptの問題により直接Oracle ADFページにレンダリングするには複雑すぎるため、requireIFrameコンテナ実行時オプションはtrueに設定されます。

WebCenter Portalでは、renderPortletInIFrameという名前のadf:portletタグで、オプションの属性を提供しています。この属性にfalseを設定すると、IFrameが使用できないようになります。詳細は、第63.5.4項「インライン・フレームに関する必知事項」を参照してください。

用語集

情報モード

通常、著作権、バージョン、ポートレットの作成者などの情報を表示するポートレット・モード。

アクティビティ・ストリーム

自分および他のユーザーについて追跡されたアクティビティを表示する機能。

アクティビティ・グラフ

既存のコネクションやポータル内のオブジェクトとの共有のやり取りに基づいて、ユーザーがコネクションとして関心を寄せている可能性のある人、ポータルおよびコンテンツを提案します。

エンタープライズ・アプリケーションによって収集されたアクション用の集中リポジトリが用意されている、アクティビティ・グラフ・ツールで使用されるエンジン。アクティビティ・グラフに格納されているデータは、ノードのランクの計算、新しいアクションの予想および推奨を行うために分析されます。

アクティビティ・ランク

(アクティビティ・グラフ・エンジンによって)検索結果のコンテンツの関連性を決定します。

管理者

新しいマシンを設定し、WebCenter Portal、Portal Frameworkアプリケーションおよびデータベースを管理し、その他のツール(Fusion Middleware Control、コマンドライン・ツールなど)を操作する人。

- WebCenter Portalでは、すべてのポータルのグローバル・オプションを管理および設定します。

- Portal Frameworkアプリケーションでは、アプリケーション規模の設定、アセット、ユーザー、ロールを管理します。

管理コンソール

適切な権限のあるユーザーは、Portal Frameworkアプリケーションのデプロイ後もその開発を続けることができます。管理コンソールを使用すると、ユーザーはランタイム・ポータル・リソース(アセットとも呼ばれる)をダウンロードして、さらに開発するためにOracle JDeveloperにインポートしなおすこともできます。これらのアセットをJDeveloperからエクスポートして、デプロイ済アプリケーションにアップロードしなおすこともできます。

Ajax (Asynchronous JavaScript and XML)

既存の標準を使用してサーバーとデータを交換し、ページ全体をリロードせずにWebページを部分的に更新するアプローチ。WebCenter Portal開発者は、UIコンポーネント(ポートレットとページレットを含む)に対してAjaxを使用します。

分析

WebCenter Portalのツールは、ポータルの使用状況やアクティビティをリアルタイムでレポートします。このツールでは、ユーザーはWebCenter Portalのトラフィックや使用状況の追跡および解析ができます。

お知らせ

即時または特定の時刻にメッセージを作成して広く配布するための、迅速で便利な方法を提供します。

アプリケーションのカスタマイズ

管理者によって実行され、すべてのユーザーが変更を認識します。これらは、アプリケーションのコードまたはスキーマに対する変更を伴わない、サイトに影響を与えるアプリケーションに対する静的な変更です。

「ユーザーのカスタマイズ」および「パーソナライズ」も参照。

アプリケーション開発フレームワーク(ADF)

Java EEアプリケーション開発の時間を短縮し、容易にするための一連のテクノロジ。同時に、検証済のソフトウェア・パターンの利点を利用して、開発されたアプリケーションがスケーラブルで、パフォーマンスが高いことなどを確認します。

Application Programming Interface (API)

一般的に、Application Program Interface (API)は、メソッド、オブジェクト・クラス、データ構造および変数の仕様を含むソフトウェア・ライブラリのことを指します。APIは、ソフトウェア・コンポーネントが相互に通信するために使用するインタフェースを指すこともあります。Oracle WebCenter Portalでは、ユーザーがサービスやツール、外部アプリケーション、ポータル・コンポーネント、データ・コントロールなどにアクセスできるように、豊富な種類のJava、REST、式言語のAPIが提供されています。

アプリケーション・ロール

特定のアプリケーションに固有のロール。ポリシー・ストアのアプリケーション固有のストライプに格納されます。

アプリケーション・スキン

アプリケーションの背景色、画面フォント、および一部のスキンではアプリケーションのボタンとアイコンに使用する図形やイメージを指定します。WebCenter Portalでは、管理者がデフォルトのアプリケーション・スキンを選択し、ユーザーは「プリファレンス」ダイアログの「一般」タブでアプリケーション・スキンを変更できます。

アプリケーション・スペシャリスト

ポータル・ビルダーを操作して、ポータルとそのコンテンツを計画、作成、管理することでサイト構造を開発するWebCenter Portalユーザー。アプリケーション・レベルでは、アプリケーション・スペシャリストは、Application Specialistロールに付与される権限を持っています。アプリケーション・スペシャリストが作成したポータルにおいて、そのアプリケーション・スペシャリストは、Moderatorロールで可能なアクションを実行できます。

アプリケーション・テンプレート(JDeveloper)

Oracle WebCenter Portalでは、Portal Frameworkアプリケーションとポートレット・プロデューサ・アプリケーションの2種類のアプリケーションを作成するためのテンプレートを用意しています。テンプレートにより、適切なテクノロジ・スコープを設定し、タグ・ライブラリを追加して、必要になるJavaクラスをクラス・パスに追加することができます。このようにしておくと、関連するコンポーネントがコンポーネント・パレットに取り込まれ、関連するポップアップ・メニューがJDeveloperで使用できるようになります。

「Portal Frameworkアプリケーション・テンプレート」および「WebCenter Portalプロデューサ・アプリケーション・テンプレート」も参照。

認証されたユーザー

WebCenter PortalまたはPortal Frameworkアプリケーションにログインしたユーザー。このユーザーの資格証明は、アイデンティティ・ストアに対して検証されます。デフォルトでは、認証されたユーザーは、パブリックな情報にアクセスできます。ページやポートレットなど、セキュアな情報にアクセスするには、ポリシー・ストアと資格証明ストアを介してこのユーザーを認証する必要があります。

ログインしていない、パブリック・コンテンツにのみアクセスできる「パブリック・ユーザー」と対比。

認証

アイデンティティ管理システムを介したユーザーの識別。ADF認証が必要になるのは、ユーザーに対して、Portal Frameworkアプリケーションにのみアクセスできる資格証明を適用する場合であり(アプリケーション内のすべてのADFリソースにそのままアクセス可能)、認証および認可が必要になるのは、ユーザーに対して、Portal Frameworkアプリケーションおよびアプリケーション内のセキュリティ保護されている任意のADFリソースにアクセスできる資格証明を適用する場合です。

認可

保護されたリソースに対する個人またはグループのアクセス権を定義するポリシー。このリソースは、ページまたはページ内のコンポーネント。

権限を持ったユーザー

保護されたリソースに対するアクセス権を持つ個人。パブリックでないリソースの場合、この個人は認証されたユーザーでもあります。

ブログ・ページ

個々のユーザーの経験および意見の個人的な記録を提供するページ。2種類のブログ(個人が記述する個人的なブログと複数のユーザーが記述するグループ・ブログ)があります。

ボックス・レイアウト・コンポーネント

Oracle WebCenter Portalのコンポーザを介して使用可能なレイアウト・コンポーネント。WebCenter Portalで作成されたコンテンツの、ページへの配置を可能にするコンテナ。コンポーザでは、ボックスは、破線で構成される矩形としてレンダリングされます。Portal Frameworkアプリケーションでは、これは、Panel Customizableコンポーネントと同等のランタイムです。

BPEL

Business Process Execution Language。エンド・ツー・エンドのプロセス・フローに対して一連の個別のWebサービスを作成するためのXMLベースのマークアップ言語。

ビジネス・ロール・ページ

WebCenter Portalシステム管理者によって作成された、特に組織内の特定のロールに対して提供されるページ。ビジネス・ロール・ページは、タイムリーな関係のある情報を、他のビジネス分野からの関係のない情報のノイズを入れずに個々のロールに配信することによって、特定のロールのユーザーに対してターゲット環境を提供します。ビジネス・ロール・ページには、指定されたロールの下で分類されたユーザーのホーム・ポータルに表示されます。

キャッシュ

頻繁にアクセスされる情報(通常はWebページ)を簡単にアクセスできる場所に格納し、コンテンツが頻繁に生成されるのを回避するための操作。

「有効期限ベースのキャッシュ」および「有効化ベースのキャッシュ」も参照。

カレンダ・オーバーレイ

単一のイベント・タスク・フローに複数のカレンダを表示する機能。

Change Mode Buttonコンポーネント

コンポーザ・タグ・ライブラリ内にあるコンポーネント。ユーザーがページ表示モードからページ編集モードに切り替えることができます。

Change Mode Linkコンポーネント

コンポーザ・タグ・ライブラリに用意されているコンポーネント。ユーザーがページ表示モードからページ編集モードに切り替えることができます。

チェックアウト/チェックイン

ユーザーが、情報をチェックアウトによりロックし、他のユーザーが同じ情報を変更できないようにすることができるメカニズム。これにより、ユーザーが互いに変更を上書きできないようになります。ユーザーが、変更を行った後、その情報をチェックインしてリリースすると、再び他のユーザーがその情報を編集できるようになります。

子コンポーネント

親コンポーネント内に含まれるコンポーネント。たとえば、ボックス・レイアウト・コンポーネント内に含まれるタスク・フローは、ボックスの子コンポーネントです。

「ボックス・レイアウト・コンポーネント」および「親コンポーネント」も参照。

クロム

処理のアクセス・ポイントを提供するポートレットまたはタスク・フローを囲む視覚的要素。たとえば、「処理」メニュー上のものや、クロム自体内に埋め込まれたもの(最小化アイコンまたはサイズ変更ハンドルなど)があります。

CMIS

Content Management Interoperability Services (CMIS)標準は、アプリケーションが1つ以上のコンテンツ管理リポジトリまたはシステムと連携するために使用できる、ドメイン・モデルおよびWebサービスおよびRestful AtomPubバインディングを定義します。

コンポーネント

ポータルの個々の部品。たとえば、タスク・フロー、ポートレット、ページまたはレイアウト要素(ボックスまたはイメージなど)。

コンポーネント・カタログ

WebCenter Portalアプリケーション・ページに追加できるすべてのコンテンツへのアクセスを提供する、コンポーザからアクセスするダイアログ。

コンポーネント開発者

コンポーネント(ポートレット、JavaServer Facesコンポーネント、Webサービスなど)を構築する開発者。

コンポーネント・プロパティ

コンポーネントのパラメータ、表示オプション、子コンポーネント、スタイル設定および関連イベントへのアクセスを提供する、コンポーザからアクセスするダイアログ。

コネクション

他のポータル・ユーザーとのソーシャル・ネットワーク(ピープル・コネクション)を確立するための機能。

コンポーザ

ページの移入、改訂および構成を行うためのシームレスに統合された環境。ユーザーはページ・レイアウトやコンテンツを簡単に構築または改訂できます。また、タスク・フロー、ポートレット、コンテンツおよびその他のオブジェクトなどの様々なコンポーネントをページに追加し、これらのコンポーネントをリンクしてより関連性のあるパーソナライズされた情報ビューを実現する手段が提供されます。

コンテナ・ランタイム・オプション

ポートレット・コンテナの動作をカスタマイズすることによりランタイム環境をカスタマイズできる、JSR 286の機能。

コンテンツ統合ツール

開発者が、データ・コントロールを作成するなどにより、コンテンツ・リポジトリからコンテンツを表示できるようにするために、WebCenter Portalのツールとサービスで提供されるツール。

コンテンツ・プレゼンタ

エンド・ユーザーが、コンテンツ・アイテムを検索および選択し、利用可能な表示テンプレートを使用してこれらのアイテムを表示できるようにする機能(ドキュメントの一部)。

コンテンツ・リポジトリ

作成者ベースのバージョニング、全文検索、コンテンツのカテゴリ化および属性などを提供する、専用ストレージおよび管理メカニズム。コンテンツ・リポジトリは、構造化されていない情報の格納用に最適化されており、データ・リポジトリと区別されます。

コンテンツ・リポジトリ・データ・コントロール

コンテンツ・リポジトリを介して供給されるデータ・コントロール。Portal Frameworkアプリケーションでは、Oracle Portal、Oracle WebCenter Content、Javaコンテンツ・リポジトリ(JCR)標準をサポートするサード・パーティのリポジトリ、およびローカル・ファイル・システムなどのコンテンツ・リポジトリ用に、コンテンツ・リポジトリ・データ・コントロールを作成できます。

資格証明プロビジョニング・ページ

外部アプリケーションに対する認証に使用されるJSF (*.jspx)ページ。実行時に、資格証明プロビジョニング・ページには、外部アプリケーション登録で指定されたデータ・フィールドから成るログイン・データ・フィールドが表示されます。ログイン情報はプロデューサに渡され、プロデューサはログイン値を外部アプリケーションに渡します。アプリケーションは、リクエストされたポートレットをプロデューサに提供します。

認証後、ユーザーのログイン資格証明は資格証明ストアに保存され、それ以降のセッションではその情報が提供されます。情報に変更がなければ、ユーザーは資格証明を1回のみ提供します。

資格証明ストア

関連ドメインのためのログイン資格証明用のストレージを提供します。ユーザーが外部アプリケーションに対する認証のために提供するログイン資格証明も保存します。通常、資格証明ストアは、単一論理ストアとしてポリシー・ストアと結合されます。

資格証明ストアに格納された資格証明は、後続のログイン時に認証のために使用されますが、このストアの主要な機能は、これらのアカウントの認可を提供することです。

CSS

カスケード・スタイル・シート。一貫したルック・アンド・フィールを保証する、またはフォント、色および間隔調整などのスタイルをWebドキュメントに追加するための簡単なメカニズム。

カスタム・アクション

ヘッダー上またはタスク・フローを囲むShow Detail Frameコンポーネントの「処理」メニュー上でレンダリングされるアイコンまたはメニュー・アイテム。カスタム・アクションでは、作成時にタスク・フローで定義されたアクションを表すことができます。たとえば、設計時に、開発者はカスタム・パーソナライズ設定を使用してタスク・フローを作成できます。実行時に、ユーザーは、タスク・フローの周りのクロム(またはShow Detail Frame)に表示される「処理」メニュー・アイテムまたはアイコンを介してこれらの設定にアクセスできます。

カスタム属性

WebCenter Portalのカスタム属性では、組込み属性によって提供される情報に加えて、情報を指定できます。カスタム属性を使用すると、渡されるパラメータに基づいて、ポータル内のコンポーネントのコンテンツを決定できます。たとえば、顧客IDを渡すことによって、特定の顧客のデータを表示することができます。カスタム属性は、customerId=400、orderId=11、userName=Smithなど、単純な名前と値のペアです。カスタム属性は、ポータル・テンプレート内に格納されます。

カスタム・ページ

デフォルトで提供されるものではない、ユーザーが作成したページ。

カスタム表示テンプレート

コンテンツ・プレゼンタ表示テンプレートは、コンテンツ・プレゼンタがPortal Frameworkアプリケーション・ページ上でコンテンツ・アイテムをレンダリングする方法を定義するJSFFファイル(JSFページ・フラグメント)です。WebCenter Portalにはデフォルトの表示テンプレートがいくつか装備されており、これらを使用してすぐに作業を開始できるほか、独自のテンプレートを作成できます。

カスタム・ロール

特定のホーム・ポータルまたはポータル要件を満たすために管理者またはポータル・モデレータが作成したユーザー・ロール。

カスタマイズ・モード

ユーザーが、全ユーザーのポートレット・プリファレンスのデフォルト値を設定できるポートレット・モード。

カスタマイズ可能コンポーネント

WebCenter Portalコンポーネントの1つ。エンド・ユーザーが、コンポーネント内のコンテンツ上で移動、最小化、リストア、または削除といったパーソナライズを実行できるように、実行時にページに追加することができます。カスタマイズ可能コンポーネントは、Panel CustomizableコンポーネントおよびShow Detail Frameコンポーネントです。

カスタマイズ

「アプリケーションのカスタマイズ」、「パーソナライズ」、「ユーザーのカスタマイズ」を参照してください。

データ・コントロール

ビジネス・サービスのデータ・モデルの抽象化を提供するメカニズム。ADFデータ・コントロールは、クライアントおよびWebアプリケーション・コントローラがデータ・オブジェクト、コレクション、メソッドおよび操作にアクセスする一貫したメカニズムを提供します。

データ・プレゼンタ

リレーショナル・データベースやWebサービスなどのデータ・ソースからデータを取得して、そのデータをポータル内で表、フォームまたはグラフで表示できます。

デフォルト言語(アプリケーションレベル)

WebCenter Portalにユーザーがログインするときに使用される、システム管理者が指定する表示言語。管理者は、アプリケーションレベルのデフォルト言語を「管理」ページの「一般」タブで設定できます。個々のユーザーは、自身のユーザーレベルのデフォルト言語を「プリファレンス」ダイアログの「一般」タブで設定できます。

デフォルト言語(ユーザー・プリファレンス)

ユーザーがWebCenter Portalにログインするときにレンダリングされる、ユーザー指定の表示言語。ユーザーが別のデフォルト言語を指定するまで、この言語の選択が持続します。この言語は、セッション言語によってオーバーライドすることができますが、セッションCookieが消去されるか期限切れになったときにデフォルト値に戻ります。この値は、「プリファレンス」ダイアログの「一般」で設定されます。

デフォルト・サーバー

「統合WebLogic Server」を参照してください。

委任管理

ユーザー・ロールに応じてポータル・リソースを保護するメカニズムを提供します。ページ階層に委任管理を適用すると、特定のセキュリティ割当てがページとサブページの階層に自動的に伝播されます。

デプロイメント・プロファイル

アプリケーション・デプロイメントで使用されるファイルで、次のタイプの情報を指定します。

- パッケージ化されるソース・ファイル、デプロイメント・ディスクリプタ、その他の補助ファイル

- 作成するアーカイブのタイプおよび名前

- 依存情報

- プラットフォーム固有の指示

- その他の情報

デザイン・ビュー(コンポーザ)

コンポーザ内のビューで、ページとコンテンツがWYSIWYGで表示され、各コンポーネントのコントロールを直接選択できます。リソース・カタログがページの右側にインライン表示され、そこからページに追加するコンポーネントを選択できます。

「構造ビュー(コンポーザ)」および「選択ビュー(コンポーザ)」も参照してください。

デバイス・グループ

同様の表示要件を共有するデバイスの集合のことです。WebCenter Portalにはデフォルトで、いくつかの事前構成済デバイス・グループ(デスクトップ・ブラウザ、iOS電話、Android電話、iOSタブレット、Androidタブレット)が付属しています。

検出可能なポータル

検索などを介して、WebCenter Portalにログインしたユーザーが検出できるポータル。パブリックまたはプライベートなポータルはすべて検出可能です。検出可能なポータルは、「表示」リストから「すべてのポータル」を選択したときに、「ポータル」ページに表示されます。ポータルに参加したいユーザーは、セルフサービス(有効になっている場合)を使用するかポータル・モデレータに連絡して、メンバーシップをリクエストできます。

ディスカッション

ディスカッション・フォーラムの作成およびフォーラムへの参加の手段を提供します。

表示言語

ボタン、フィールド・ラベルおよび画面テキストなどのアプリケーション・ユーザー・インタフェース要素をブラウザでレンダリングする際の言語を制御します。WebCenter Portal表示言語設定の優先順位は、弱いものから強いものの順に、ブラウザ設定、アプリケーション設定、ポータルのデフォルト言語、ユーザー・プリファレンス設定、「言語の変更」タスク・フロー、グローバル言語スイッチャ(パブリックcookie)となっています。

ドキュメント・ページ

ポータルおよびホーム・ポータルに表示されるシステム・ページで、「ドキュメント・エクスプローラ」タスク・フローを介してファイルおよびフォルダを管理するためのコントロールを提供します。

ドキュメント

ページにフォルダおよびファイルを表示するための様々なフォーマットを提供します。フォルダやファイルへのアクセス、追加および管理機能、ファイル・プロパティやフォルダ・プロパティの構成および表示機能、および接続されているコンテンツ・リポジトリのファイルやフォルダの内容の検索機能を提供するアプリケーションに適切なタスク・フローを選択できます。

ドメイン

WebLogic Serverインスタンスの基本的な管理単位です。Oracle WebCenter Portal開発者がJDeveloperを使用して、DefaultDomain内で管理される統合WebLogic Serverにデプロイします。本稼働のためには、Oracle WebCenter Portalの各部を管理対象サーバー・インスタンスにデプロイします。ドメインには管理対象サーバーを必要な数だけ指定できます。管理対象サーバーは、テスト環境、ステージング環境または本番環境、あるいは3つすべての環境でアプリケーションを実行するように構成できます。

動的に生成されたページ

検索やタグのクリックなどのユーザー・アクションの結果として表示されるページ。その名称が示すように、動的に生成されたページは保存されず、必要なときに作成されます。

EAR

エンタープライズ・アーカイブ・ファイル。Java EEアプリケーション・サーバーでアプリケーションのデプロイに使用されるJava EEアーカイブ・ファイルです。Portal Frameworkアプリケーションは、アプリケーションと個々のランタイム・カスタマイズを含む汎用EARファイルと、アプリケーション・サーバーへのデプロイ用のアプリケーションのみを含むターゲットEARファイルの両方を使用してデプロイされます。EARファイルは、開発からテスト、テストから本番へアプリケーションを移行する際に発生する可能性のあるエラーを減らすことで、アプリケーションのデプロイメントを簡略化します。

ECMA-262仕様

ECMAScriptおよびJavaScriptなど、プログラミング言語のスクリプトの標準化。

ECMAScript

ECMA-262仕様に従って、Ecma Internationalによって標準化されたスクリプト・プログラミング言語。しばしば、JavaScriptまたはJScriptと呼ばれ、どちらもECMA-262仕様の拡張です。

デフォルト編集モード

(JSR 286ポートレットのみ。)JSR 286ポートレットのパーソナライズを可能にするポートレット・モード。デフォルト編集モードは、JSR 286ポートレットのプロパティ用の表示モード。Portal Frameworkアプリケーションでは、デフォルト編集モードがポートレットの「アクション」メニューに「カスタマイズ」コマンドとして表示されます。

「編集モード」も参照。

編集モード

ユーザーごと、インスタンスごとにポートレットのパーソナライズを可能にするポートレット・モード。

「デフォルト編集モード」も参照。

編集モード

ユーザーがコンテンツ、スタイルおよびページのレイアウトを変更できる、表示モード。「コンポーザ」も参照。

EL

式言語。Java EE Webコンテナに入っているアプリケーション・データを取得および操作するための演算子を提供することにより、Webアプリケーション・データで処理する簡単な表記法を提供します。Portal Frameworkアプリケーションでは、EL式は#{と}で囲まれ、通常は、#{object.data}の形式になります。ここで、objectは、Java EE Webコンテナのページ、リクエスト、セッションまたはアプリケーションの有効範囲にある任意のJavaオブジェクトまたはOracle ADFコンポーネントを表します。

エンタープライズ・アーカイブ・ファイル

「EAR」を参照してください。

エンタープライズ・マッシュアップ

ユーザーがすべての種類のコンテンツとサービスを1つの場所にまとめることができるアプリケーション。

イベント

会議や予定などのスケジュールのためのカレンダを提供します。WebCenter Portalは、特定のポータルに関連するイベントを記録するカレンダが用意されています。個々のユーザーが自身のホーム・ポータルで個人用のカレンダにアクセスできるように、Microsoft Exchange Serverでイベントを統合することもできます。個人用のカレンダは、Portal Frameworkアプリケーションでも使用可能です。

有効期限ベースのキャッシュ

保持期間を使用して、アイテムがキャッシュ内で有効である期間を指定するキャッシュ方法。この期間が経過すると、更新が必要になります。保持期間を経過してからアイテムに対するリクエストが発生したとき、そのアイテムはキャッシュ内で更新されます。

「有効化ベースのキャッシュ」も参照。

式言語

「EL」を参照してください。

外部アプリケーション

シングル・サインオン・サーバーに認証を委譲しないアプリケーション。かわりに、アプリケーション・ユーザーの名前とパスワードを要求するHTMLログイン・フォームが表示されます。最初のログイン時に、ユーザーは、これらの資格証明をシングル・サインオン・サーバーで取得するように選択することができます。その後、これらのアプリケーションに透過的にログインされます。

ファーム

Fusion Middleware Controlによって管理されるコンポーネントのコレクション。ファームには、管理対象サーバー・ドメイン、およびそのドメインでインストール、構成および実行されるその他のOracle Fusion Middlewareシステムのコンポーネントを含めることができます。

お気に入り

WebCenter Portalおよび外部Webサイトのお気に入りページへのリンクの個人用リスト。

フィードバック

非公式な評価を投稿したり他のポータル・ユーザーからの非公式な評価を取得する機能(ピープル・コネクションの一部)。

Portal Frameworkアプリケーション

Portal Frameworkアプリケーションは、WebCenter PortalのOracle JDeveloper用拡張機能を使用してADFの最上部に構築されます。このアプリケーションにより、Webコンテンツ、ポートレットおよび共同サービスが、エンド・ユーザー向けに結合されます。開発者および管理者は、組織内での役割やスキルのレベルに応じて、Portal Frameworkアプリケーションを作成できます。

ポータルには、ページ階層、ナビゲーション・モデルおよび委任管理も含まれます。

Portal Frameworkアプリケーション管理者

Portal Frameworkアプリケーションの管理および保守を担当する管理者。たとえば、管理者はアプリケーション規模のオプションの設定、アセットの管理、権限の付与と取消しを実行できます。

さらに、Fusion Middlewareの管理、Portal Frameworkアプリケーションのデプロイ、Fusion Middleware Controlを介したFrameworkアプリケーションおよびその他のWebCenter Portalコンポーネントに対する進行中の管理タスクの実行も担当します。

Portal Frameworkアプリケーション開発者

Oracle Application Development Framework、Oracle JDeveloperおよびWebCenter Portalのツールとサービスを使用して、Portal Frameworkアプリケーションを計画、構築および保守する開発者。

Portal Frameworkアプリケーション・テンプレート

サイト・ナビゲーション、ページ階層、委任管理、ページ・テンプレートなどのWebCenter Portal Framework機能を含む、JDeveloperテンプレート。

「アプリケーション・テンプレート(JDeveloper)」および「WebCenter Portalプロデューサ・アプリケーション・テンプレート」も参照。

全画面モード(WebCenter Portal)

画面全体を占めるポータルを開放して、表示ポータルを最大化する表示モード。全画面モードではサイドバーは表示されません。

全画面モード(ポートレット)

(PDK-Javaポートレットのみ。)他のポートレットとページを共有しているときに、ポートレットに表示できるより多くのコンテンツを提供するポートレット・モード。

Fusion Middleware Control

Oracle WebCenter Portalをインストールするときにデプロイされるブラウザベースの管理アプリケーション。Fusion Middleware Controlから、ファーム(Oracle WebCenter Portalなど)を監視および管理できます。

ヘルプ・モード

ポートレットの機能の用法に関する情報を表示するポートレット・モード。

ホーム・ポータル

個人コンテンツの格納、ノートの記録、割当ての表示と対応、オンラインの友人リストの保守、および一意の作業日に関連する多数のその他のタスクの実行のために、各ユーザーにプライベート・ポータルを提供するWebCenter Portal内の作業領域。ユーザーは、追加の個人用ページおよびカスタム・コンテンツを作成することにより、この環境を拡張することもできます。

HTMLマークアップ・レイアウト・コンポーネント

コンポーザを介して使用可能なレイアウト・コンポーネント。ページ上にRaw HTMLとJavaScriptマークアップをインラインでレンダリングする単純なHTMLコンポーネント。

ハイパーリンク・レイアウト・コンポーネント

コンポーザを介して使用可能なレイアウト・コンポーネント。内外のWebページへのリンク。Portal Frameworkアプリケーションの設計者にとって、これは、実行リンク・コンポーネントと同等のランタイムです。

アイデンティティ伝播

Portal Frameworkアプリケーションおよび関連するコンテンツ・リポジトリに対して、このオプションを選択すると、アプリケーションとプロセス全体にわたる現在のユーザーのアイデンティティの伝播が可能になります。伝播されたアイデンティティは受信者の側で検証され、ロール・ベースのアクセス制御の割当てなどの決定を下すために使用されます。

イメージ・レイアウト・コンポーネント

コンポーザを介して使用可能なレイアウト・コンポーネント。ハイパーリンクを組み込むことができる図。Portal Frameworkアプリケーションの設計者にとって、これは、イメージ・リンク・コンポーネントと同等のランタイムです。

IMP

「インスタント・メッセージおよびプレゼンス」を参照してください。

初期化パラメータ

標準JSR 286ポートレットの起動時に初期化されるパラメータ。初期化パラメータは、JNDI (Java Naming and Directory Interface)変数に代わるもの。JNDIのかわりに初期化パラメータを使用して、ポートレットの様々なコンポーネント(たとえば、サーブレットや他のポートレット)すべての動作を互換性のある方法で構成します。WebCenter Portalのツールとサービスでは、初期化パラメータはportlet.xmlファイルに入力されます。

インスタント・メッセージおよびプレゼンス

ユーザーが他の認証ユーザーのプレゼンス・ステータスを確認でき、インスタント・メッセージやメールなどの対話オプションに簡単にアクセスできるようになります。

統合開発環境(IDE)

エディタ、デバッガ、スクリーン・ペインタ、オブジェクト・ブラウザなどを含むビジュアル・アプリケーション開発ツール。Oracle JDeveloper IDEは、タスク・フロー、データ・コントロール、マネージドBean、シナリオなどのカスタム・ポータル・コンポーネントを構築するための完全な機能を備えた環境を提供します。

統合WebLogic Server

Portal Frameworkアプリケーションのデプロイをローカル・コンピュータ上で事前テストするためのプラットフォームとして使用されるWebLogic Serverインスタンス。統合WebLogic Serverには、事前構成のポートレット・プロデューサといくつかの有用な事前構築のポートレットも含まれます。

反復開発

反復開発では、統合WebLogic ServerでPortal Frameworkアプリケーションを実行しながら、このアプリケーションに変更を加え、ブラウザの現在のページをリフレッシュするだけで、その変更の効果を確認できます。反復開発機能は、特定の最適化機能を無効にすることにより動作します。反復開発機能により、開発者はPortal Frameworkアプリケーションを作成する際、より迅速かつ効率的に作業できるようになります。

Javaコンテンツ・リポジトリ

「JCR 1.0」を参照してください。

Javaポートレット仕様

ポータル・サーバーのコンポーネントの開発方法を標準化。この仕様は、一般的なポートレットAPIと、パーソナライズ、プレゼンテーションおよびセキュリティの機能を提供するインフラストラクチャを定義します。このAPIを使用し、仕様に準拠するポートレットは、製品にとらわれず、仕様に準拠するどのポータル製品にもデプロイできます。「JSR 286」も参照。

JavaServer Faces

「JSF」を参照してください。

JavaServer Pages

「JSP」を参照してください。

JCR 1.0

Javaコンテンツ・リポジトリ1.0。JSR 170ともいいます。データベースに対するJDBCと同様に、コンテンツ・リポジトリの標準アクセスおよび対話APIを提案します。

JDeveloper

「Oracle JDeveloper」を参照してください。

JSF

JavaServer Faces。Webアプリケーションを作成するための標準Javaフレームワーク。Java Webユーザー・インタフェースへのコンポーネント中心のアプローチを提供することで、開発を簡略化します。JSFは、プログラミングの柔軟性をもたらす豊富で堅牢なAPIを提供し、Model-View-Controller (MVC)設計パターンをアーキテクチャに統合することにより、保守性のより高いアプリケーションをうまく設計できるようにします。JSFは、Javaコミュニティ・プロセスを介して開発されたJava標準であるので、Oracle JDeveloperのような開発ツールは十分に強化され、使いやすく、ビジュアルで生産的なJSF開発環境を実現します。

JSF JSP

JavaServer Faces JavaServer Page。JSF JSPは、ユーザー・インタフェースにOracle ADF Facesコンポーネントをサポートし、ページ・ナビゲーションにはJSFテクノロジをサポートする点で、プレーンJSPとは異なります。JSF JSPページは、ページ内のコンポーネントのADFモデル・バインディング機能を使用することにより、Oracle Application Development Framework (ADF) (Oracle ADF)の利点を活用します。

JSP

JavaServer Page。Webページに対して簡単なプログラムによるインタフェースを提供するサーブレットの拡張機能。JSPは、専用のタグとWebやアプリケーション・サーバー上で実行される埋込みJavaコードが含まれたHTMLページです。HTMLページに動的機能を与えます。最初にリクエストされたときに実際にサーブレットにコンパイルされ、サーブレット・コンテナ内で稼働します。

「JSPタグ」も参照。

JSPタグ

JSPに埋め込んでJavaコードを囲むためのタグ。JSPタグでは<jsp:構文が使用され、JSP内のアクション要素はXML要素と同様にbeginタグとendタグで囲まれます。

JSR 286

Java Specification Request (JSR) 286。Javaを使用して標準ベースのポートレットを構築するための一連のAPIを定義します。この仕様に準拠して構築されたポートレットは、ポータルにローカルにレンダリングするか、またはWSRPコンテナにデプロイしてリモートでレンダリングできます。詳細は、http://jcp.org/en/jsr/detail?id=286を参照してください。

JSR 170

「JCR 1.0」を参照。

JSR 329

「Oracle JSF Portlet Bridge」を参照してください。

キーストア

認証やデータ整合性に使用される、使用可能な公開鍵および秘密鍵の情報を提供するファイル。また、ピアの証明書の検証に必要なユーザー資格証明およびトラスト・ポイントも、キーストア内にセキュアに格納されます。

ナレッジ・ワーカー

コンテンツの提供と他のユーザーのコンテンツのレビューを主に担当するWebCenter Portalユーザー。アプリケーション・レベルでは、ナレッジ・ワーカーはAuthenticated-Userロールに付与される権限を持っています。ポータル・レベルでは、ナレッジ・ワーカーにはViewerまたはParticipantロールが割り当てられる可能性があります。

レイアウト・ボックス

WebCenter Portalで作成されたコンテンツの、ページへの配置を可能にするコンテナ。

レイアウト・コンポーネント

指定したページの有用性と外観を強化するオブジェクト。レイアウト・コンポーネントには、レイアウト・ボックス、リッチ・テキスト・エディタ、イメージ、ハイパーリンクなどが含まれます。

Layout Customizableコンポーネント

コンポーザ・タグ・ライブラリに提供されるコンポーネントの1つ。ユーザーが、事前定義されたレイアウト(たとえば、2列、3列、2行など)のセットから選択し、それをページに適用することを可能にします。ユーザーは、これらのレイアウトをページの特定の領域またはページ全体に適用することができます。

ライフ・サイクル

ポータルまたはPortal Frameworkアプリケーションの設計時環境での作成とテスト、本番システムへのデプロイ、および定期的なメンテナンス(パフォーマンスの監視やカスタマイズ・データの移行など)のプロセス。ポータルまたはPortal Frameworkアプリケーションのライフ・サイクルには、さらなる拡張の実行、再ステージングおよび本番システムへの再デプロイも含まれます。

リンク

2つのオブジェクト間の双方向の関連付けを作成することにより、これらのオブジェクト間の簡単なアクセスを設定する手段を提供します。

リスト

リストを作成して、ポータル・ページに配置するために公開する方法を提供します。

「リスト」ページ(またはコンソール)

ポータルの現在のリストを表示する事前定義済ページ。

メール

ポータルに使い慣れたメール機能を公開するための方法を提供します。

管理対象サーバー

本番環境では、管理対象サーバーによりアプリケーションおよびこれらのアプリケーションに必要なリソースがホストされます。ドメインは、Oracle WebLogic Serverリソースの論理的に関連付けられたグループであり、任意の個数の管理対象サーバーが属することができます。これらのサーバーは管理サーバーによりホストされます。

マッシュアップ

エンド・ユーザーが、様々なソースから情報を引き出して、個々の要件を正確に満たすカスタマイズされたアプリケーションを作成できるWebアプリケーション。

「エンタープライズ・マッシュアップ」も参照。

MDS

Oracle Metadata Services。Application Development Framework (ADF)のコア・テクノロジ。MDSは、メタデータを拡張可能でカスタマイズ可能な形で定義および使用するための統一アーキテクチャを提供します。

MDSリポジトリ

アプリケーション・サーバーであるとともに、これらの領域にファイルベースのリポジトリ、ディクショナリ表(組込み関数からアクセス)およびメタデータ・レジストリのメタデータが保存されているOracleリレーショナル・データベースでもあります。MDSの主な用途の1つは、Oracleアプリケーションのカスタマイズおよび永続的なパーソナライズの内容を格納することです。

メッセージ・ボード

メッセージを投稿したり他のポータル・ユーザーからのメッセージを取得する機能(ピープル・コネクションの一部)。

メタデータ

タイトル、作成者、セキュリティ・グループなどのコンテンツ・アイテムに関する情報。メタデータは、コンテンツ・アイテムを記述、検索およびグループ化するために使用されます。コンテンツ情報ともいいます。

Model-View-Controller

「MVC」を参照してください。

モデレータ

特定のポータルを管理する責任を持つWebCenter Portalユーザー。ポータル・モデレータは、メンバーの追加と削除、新しいメンバーの招待、自己登録の有効化、ポータル・メタデータの提供と更新、およびポータルで利用できるツールとサービスの管理を実行できます。

移動可能ボックス・レイアウト・コンポーネント

コンポーザを介して使用可能なレイアウト・コンポーネント。WebCenter Portalで作成されたコンテンツの、ページへの配置を可能にするコンテナ。移動可能ボックスは、そのコンテンツとともに、ページ上で移動することができます。Portal Frameworkアプリケーションの設計者にとって、これは、Show Detail Frameコンポーネントと同等のランタイムです。

MVC

Model-View-Controller。多くの場合、同じデータの複数のビューを保持する機能を必要とするアプリケーションによって使用される標準的な設計パターン。MVCパターンを使用するには、データを保持するモデル、データのすべてまたは一部を表示するビュー、モデルまたはビューに影響するイベントを処理するコントローラという3つのカテゴリのいずれかに各オブジェクトを整然と分類することが重要です。この分類により、複数のビューおよびコントローラが同じモデルとインタフェースをとれるようになります。ポートレットなどの以前は存在しなかった新しいタイプのビューおよびコントローラでも、モデルの設計を変更せずにモデルとインタフェースをとることができます。

ナビゲーション

WebCenter Portalには、ポータル・ナビゲーションを作成する3つのナビゲーション・コンポーネントが用意されています。これらのコンポーネントは、ブレッドクラム・ナビゲーション、メニュー・ナビゲーションおよびツリー・ナビゲーションです。

ナビゲーション・モデル

ナビゲーション・モデルは、ナビゲーション・ユーザー・インタフェースにデータを提供し、ポータルのアセット(ページ、ページ階層、タスク・フロー、外部サイト、ポートレットおよびその他のエンティティ)へのナビゲーションを可能にします。

ノート

個人用ノートやアラームを書き込むための便利な機能を提供します。

通知

電話、メール、ワークリストなどの様々なメッセージ・チャネルにわたって通知をトリガーする自動化された手段を提供します。ユーザーがサブスクライブしているポータル・オブジェクトおよびアプリケーション・オブジェクトが変更されると、メッセージをトリガーします。

OmniPortlet

WebCenter Portalのツールとサービスのコンポーネントで、ポートレット、コンテンツ統合、カスタマイズのようなポータル同様の機能をOracle ADF Facesアプリケーションに挿入できます。

Oracle ADF

Oracle Application Development Framework。Java EEアプリケーション開発の時間を短縮し、容易にするための一連のテクノロジ。同時に、検証済のソフトウェア・パターンの利点を利用して、開発されたアプリケーションがスケーラブルで、パフォーマンスが高いことなどを確認します。

Oracle Access Manager (OAM)

Oracle Access Managerは、Oracleのアイデンティティ管理およびセキュリティ用のエンタープライズ・クラス製品スイートの一部であり、WebCenter PortalおよびPortal Frameworkアプリケーションに対する複数のシングル・サインオン・オプションを含む、広範なアイデンティティ管理機能およびセキュリティ機能を提供します。OAMは、Oracle WebCenter Portal 11gのインストールに推奨するシングル・サインオン・ソリューションです。

Oracle ADF Faces

Oracle ADF Facesは、新しいJavaServer Faces JSR (JSR 127)に基づいたユーザー・インタフェース・コンポーネントを豊富に揃えたセットです。Oracle ADF Facesには、データ表、階層型の表、カラー・ピッカーおよび日付ピッカーなどの組込み機能を持つ各種ユーザー・インタフェース・コンポーネントが用意されており、これらはアプリケーション内でカスタマイズや再利用が可能です。

Oracle Enterprise Manager

管理者がOracle Fusion Middlewareのサービスを一元的に管理できるようにするコンポーネント。管理者はEnterprise Managerを使用して、Portal Frameworkアプリケーションを構成、管理および監視します。

Oracle HTTP Server (OHS)

Hypertext Transfer Protocol (HTTP)を使用するWebトランザクションを処理するソフトウェア。OracleではApache Groupが開発したHTTPソフトウェアを使用します。

Oracle Internet Directory

OracleのLDAP V3準拠のLDAPサーバー。ユーザーおよびグループをプロビジョニングするためのリポジトリとして使用されます。デフォルトでは、分散しているユーザーおよびネットワーク・リソースについてのOracle Internet Directory情報と照らし合せて、Oracle Single Sign-On (OSSO)がユーザー資格証明を認証します。Oracle Internet Directoryによって、LDAPバージョン3に、Oracleデータベースの高度なパフォーマンス、スケーラビリティ、堅牢性および可用性が取り込まれます。

Oracle JDeveloper

Oracle JDeveloperは、Java、XMLおよびSQLの最新の業界規格を使用してアプリケーションおよびWebサービスを構築するための統合開発環境です。開発者は、Oracle JDeveloperを使用して、Javaポートレット、Portal Frameworkアプリケーション、ポートレット、スキン、ポータル・テンプレート、タスク・フロー、mBeans、データ・コントロールなどを作成できます。

Oracle JSF Portlet Bridge

Oracle JSF Portlet Bridgeでは、JSR 329に基づきかつ準拠して、アプリケーション開発者がJSFアプリケーションまたはタスク・フローをJSR 286ポートレットとして公開し、別のアプリケーションで消費することができます。

Oracle Metadata Services

「MDS」を参照してください。

Oracle Secure Enterprise Search (SES)

統合されたランキング結果を含む、パブリックでセキュアなデータに対して使いやすい検索を提供します。Portal Frameworkアプリケーションの場合、Oracle SESがデフォルトの推奨検索プラットフォームとして設定されます。

WebCenter Portalの場合、WebCenter Portalの内部ライブ検索アダプタがデフォルトの検索プラットフォームとして設定されます。ただし、大規模な実装で最高のパフォーマンスを得るには、Oracle SESを使用するように構成することが必要です。

Oracleシングル・サインオン(OSSO)

ユーザーが単一のユーザー名とパスワードを使用してOracle Fusion Middleware製品群のすべての機能、および他のWebアプリケーションにログインできるようにするコンポーネント。

Oracle Technology Network

「OTN」を参照してください。

Oracle WebCenter Content

コンテンツ・ライフサイクルのすべてのフェーズ(作成と承認から公開、検索、失効およびアーカイブや配置に至るまで)を管理する、柔軟かつセキュアで集中化されたWebベースのリポジトリを提供します。コントリビュータが、ネイティブ・デスクトップ・アプリケーションからコンテンツを簡単に提供し、リッチ・ライブラリ・サービスを介してビジネス・コンテンツを効率的に管理し、Webブラウザを使用してどこからでもそれらのコンテンツに安全にアクセスできます。コンテンツ・タイプに関係なく、すべてのコンテンツが、管理、再利用およびアクセスのためにWebリポジトリまたはデータベースに保存されます。

Oracle WebCenter Contentサーバー

チェックインとチェックアウト、リビジョン管理およびWeb対応フォーマットでの自動公開を含む、セキュリティ保護されたビジネス・ライブラリを構築するためのコンテンツ・リポジトリ。権限のあるユーザーは、現在の情報をいつでも、どこでも使用できます。

Oracle WebCenter Content Serverは、Oracle WebCenter Contentのコンポーネントです。

Oracle WebCenter ContentのSite Studio

企業規模のWebサイトを設計、構築およびメンテナンスする包括的なアプローチを提供する強力で柔軟なWeb開発アプリケーション・スイート。Site Studioでは、Oracle WebCenter Content: Content ServerをWebサイトのメイン・リポジトリとして使用します。

WebCenterでは、コンテンツ・プレゼンタとSite Studioを統合することにより、Site Studioリージョン・テンプレートまたはカスタム・コンテンツ・プレゼンタ表示テンプレートで、Site Studioコントリビュータ・データ・ファイルの作成、アクセス、編集および表示を実行することができます。

Oracle WebCenter Portalのディスカッション・サーバー

ディスカッションおよびお知らせ用のバックエンド・ディスカッション・サーバー。

Oracle WebCenter Portal Framework

WebCenter Portal Frameworkアプリケーションは、ナビゲーション、ページ、ページ・テンプレート、コンテンツ統合などのポータル機能を含む、標準のADF Webアプリケーションです。

Oracle WebCenter Portalのページレット・プロデューサ

動的ページレットの開発を容易にする有用なツールと機能のコレクションを提供します。

Oracle WebLogic Server管理コンソール

ブラウザベースのWebLogic Server管理環境(デプロイ済アプリケーション、ドメイン、セキュリティ、クラスタなどを含む)。

OTN

Oracle Technology Network. オンラインのOracleテクニカル・コミュニティ。Oracleに基づくアプリケーションを構築するための多様な技術上のリソースを提供します。http://www.oracle.com/technetworkでOTNにアクセスできます。

Page Customizableコンポーネント

実行時にページの編集可能な領域を定義するコンポーザ・タグ・ライブラリに提供されているコンポーネント。この領域内では、ユーザーはコンポーネントのプロパティの編集、ページにコンテンツの追加、コンテンツの配置などができます。

ページ階層

親子関係でページを関連付ける、Portal Frameworkアプリケーション内のモデルで、任意のページが1つ以上のサブページを持つことがでます。この親子モデルは、ポータルの全体の構成の定義に役立つだけでなく、子ページがその親からセキュリティ・ポリシーを継承することを許可します。

ページ・パラメータ

ページのコンポーネントに渡すことができる値を格納するために使用することができるページに関連付けられたパラメータ。それはまた、ページがそのURLを介して値が取れるようにします。ページ・パラメータは、PageDef.xmlの最上部にある<parameter>タグを使用して定義されます。ページ・パラメータはページ変数にバインドできます。

ページ・プロパティ

コンポーザからアクセスするダイアログ。ページの表示オプション、セキュリティ設定およびパラメータへのアクセスを提供します。

ページ・スキーム

ページで使用される背景イメージを決定します。WebCenter Portalには、複数のデフォルト・ページ・スキームとカスタム・ページ・スキームを指定するためのオプションが用意されています。

ページ・スタイル

1列または2列など、初期ページ構造を決定します。一部のデフォルト・ページ・スタイルには、特定の目的に役立つタスク・フロー、コンポーネントおよびページ・プロパティも含まれています。たとえば、テキスト・ページ・スタイルを使用して作成されたページには、テキスト・レイアウト・コンポーネントが含まれています。

ページ・テンプレート

全ページにわたって共通にするビュー・エレメントを指定できます。ページ・テンプレート・ファイルとは、ADFレイアウト・コンポーネントやその他のエレメントを持つJSPXファイルのことをいいます。一般に、ページ・テンプレートは、ヘッダー、フッターおよびコンテンツ領域によりページ・レイアウトを定義します。また、ページ・テンプレートでは、通常、ページのナビゲーションUIの配置とスタイルを指定します。

ページ変数

パブリック・ポートレット・パラメータをページにバインドする変数。ページ変数は、PageDef.xmlの<variableIterator>内で定義されます。1つのページ変数を、複数のパブリック・ポートレット・パラメータにバインドできます。

Panel Customizableコンポーネント

コンポーザ・タグ・ライブラリに提供されているコンポーネントの1つ。実行時にカスタマイズできるOracle ADFコンポーネントおよびポートレットのグループのためのコンテナ・リージョンを提供します。子コンポーネントとしてPanel Customizableコンポーネントに追加された任意のShow Detail Frameコンポーネントおよびポートレットは、Panel Customizableコンポーネントを使用して移動または最大化することができます。

親コンポーネント

タスク・フローを含むBox layoutコンポーネントのような、他のコンポーネントを含むコンポーネント。Boxは、タスク・フローの親コンポーネントです。対照的に、タスク·フローは、Boxの子コンポーネントです。

「子コンポーネント」も参照。

参加者

ポータルのコンテンツを操作できるWebCenter Portalユーザー。参加者は、ドキュメントのアップロードと共有、他のメンバーとのチャットの開始およびチャットへの参加、ディスカッション・トピックの作成、リストの新規作成または既存のリストの表示を行うことができます。

PDK-Java

Java Portlet Developer Kit。WebCenter Portalのツールとサービスを使用してWebコンテンツとアプリケーションを構築および統合するための開発用フレームワーク。ポータルの開発を簡略化する際に役立つツールキット、サンプルおよび技術記事が含まれています。既存のJavaサーブレット、JSP、URLでアクセス可能なコンテンツおよびWebサービスを使用して、それらをポートレットにすることができます。一般的には、外部の開発者とベンダーが、ポートレットとサービスを作成するために使用します。

ピープル・コネクション

企業のコネクションの作成、そのコネクションでのやり取り、アクティビティの追跡を行うためのソーシャル・ネットワーキング・ツールを提供します。

「アクティビティ・ストリーム」、 「コネクション」、「フィードバック」、「メッセージ・ボード」および「プロファイル」も参照。

パーソナライズ

ユーザー・コンテキストに基づくアプリケーションの動作に対する動的な変更。WebCenter Portalのパーソナライズによって容易になります。

「アプリケーションのカスタマイズ」および「ユーザーのカスタマイズ」も参照。

WebCenter Portalのパーソナライズ

自分のアプリケーション内のコンテンツを、選択した条件に基づいて対象となるユーザーに配信できます。WebCenter Portalのパーソナライズはまた、動的アプリケーション・フローを指定するための宣言的手段を提供します。

個人用ページ

ユーザーが自分のホーム・ポータル内に作成するページ。他のユーザーが個人用ページを参照できるのは、ページを作成したユーザーから明確にアクセス権を付与された場合に限られます。

個人プロファイル

電子メール・アドレス、電話番号、勤務先の場所、部門、上司、直属の部下などのユーザーの個人情報を表示するページ。

「プロファイル」も参照。

投票

ユーザーが自分のポータル・ページでオンライン投票を作成、編集および実施できるようになります。投票では、オーディエンスの意見、経験レベルなどの調査、重要情報を覚えているかどうかの確認、およびプレゼンテーションの効果に関するフィードバックの収集を実行できます。

ポータル

Webベース・アプリケーションとの対話および個別のユーザーまたはユーザーのクラスに関連する情報のパーソナライズされた単一のポイントを提供する共通インタフェース(つまり、Webページ)。

ポータル・ビルダー

WebCenter Portalのポータルの作成、編集および管理領域で構成されます。ポータル・ビルダーでは、ポータルを作成し、ページ・エディタ(コンポーザ)でポータルのページを追加および編集し、ポータル所有者として1つのポータルを管理できます。システム管理者は、すべてのポータルを管理できるポータル・ビルダー管理領域にアクセスできます。

「ポータル」ページ

現在ログインしているユーザーが使用できるすべてのポータルのリストを表示する、ポータル・ビルダー内の事前定義済ページ。ユーザーは、「すべてのポータル」を表示するのか、自分がメンバーになっているポータルのみを表示するのか(「参加済」)、自分がモデレータになっているポータルのみを表示するのか(「モデレート」)、全員がアクセスできるポータルを表示するのか(「パブリック」)、検出可能になっているポータルを表示するのか(「検出可能」)を選択できます。

ポータル・アプリケーション・テンプレート

「アプリケーション・テンプレート(JDeveloper)」を参照してください。

Portal Developer Kit

「PDK-Java」を参照してください。

ポートレット

多数の異なるソースからコンテンツを描画できる再利用可能なWebコンポーネント。ポートレットでは、他のWebサイトからの抜粋の表示、主要情報のサマリーの生成、検索の実行および多様なデータ・ソースの情報を収集したコレクションへのアクセスなどを実行できます。共通のページに様々なポートレットを配置できるため、コンテンツが複数のソースから導出されている場合でも、ユーザーは単一のソースとして利用できます。ポートレット・リソースには、そのまますぐに使用できる多数の構築済のポートレットや、WebCenter PortalのJSR 286、PDK-Javaポートレット・ウィザードおよびその他のポートレット構築ツールを使用して構築されたプログラム的なポートレットが含まれます。

ポートレット・イベント

JSR 286の機能の1つ。ポートレットが、ポートレットとユーザーの相互作用に直接関連しないアクションや状態の変更に対応できるようにします。

ポートレット・フィルタ

JSR 286の機能の1つ。ポートレットへのリクエストとポートレットからのレスポンスの両方で情報のオンザフライ変換を許可します。ポートレット・フィルタは、ポートレット・リクエストおよびポートレット・レスポンスの内容を変換できる再利用可能なコード部分です。

ポートレット・モード

ポートレットをコールして情報を表示する方法。次のような方法があります。

- 共有画面モードまたは表示モード

- 編集モードまたはデフォルト編集モード

- カスタマイズ・モード

- ヘルプ・モード

- 情報モード

- 全画面モード(ポートレット)または詳細ページ表示モード

事前定義済ページ

特定の機能を実行するためにWebCenter Portalで作成したページ。事前定義済ページの例として、「ようこそ」ページ、「検索」ページおよび「ドキュメント」ページがあげられます。

デプロイ前ツール

Portal Frameworkアプリケーションのユーティリティで、Oracle JDeveloperでアプリケーションに追加した新しいプロデューサ登録を使用してターゲット・システムを構成することを支援します。アプリケーションをデプロイする前に、このユーティリティを実行する必要があります。また、デプロイメント後に、たとえばカスタマイズをエクスポートおよびインポートする場合に、メタデータをステージングから本番に移行するためにこのユーティリティを使用することもできます。このツールを使用すると、ランタイム・カスタマイズを移行できるようにするためにMDSリポジトリの場所を定義することができます。

プリティURL

実際のWebアドレスの複雑さを隠すページのURLの短縮バージョン。

プライベート・パラメータ

ポートレットにのみ認識されていて、ポートレットが存在するページへの接続がないポートレット・パラメータ。

「パブリック・パラメータ」と対比。

プロデューサ

ポートレット・コンシューマ(Portal Frameworkアプリケーションまたはポータルなど)間の通信リンク。ポートレットをレンダリングする際、コンシューマ・アプリケーションではそのポートレットのプロデューサをコールし、次にプロデューサがそのポートレットを実行して、その結果をポートレット・コンテンツの形で返します。1つのプロデューサには、1つ以上のポートレットが含まれます。1つのポートレットは、1つのプロデューサにのみ含めることができます。

WebCenter Portalのツールとサービスは、2つのタイプのプロデューサをサポートします。

- Oracle PDK-Javaプロデューサ: Java EEアプリケーション・サーバーにデプロイされます。多くの場合、サーバーはリモートで、HTTPでSimple Object Access Protocol (SOAP)を介して通信します。

- Web Services for Remote Portlets (WSRP): ユーザーを対象とした視覚的なWebサービスを、ポータルまたは他の中間Webアプリケーションにプラグ・アンド・プレイできるようにするWebサービスの標準。その標準性により、特定の言語(JSR 286、.NET、Perlなど)をベースとする標準対応のコンテナと任意のWSRPポータル間の相互運用が可能です。WSRP対応のコンテナにデプロイされたポートレットは、その言語に関係なく、この標準をサポートするあらゆるアプリケーションでレンダリングできます。

プロファイル

自分自身に関する情報(連絡先、上司、直属の部下など)を表示および管理したり、他のアプリケーション・ユーザーに関するこの情報を表示する機能(ピープル・コネクションの一部)。

プログラム的なポートレット

APIを使用して非宣言的な方法で構築されるポートレット。ハンド・コードまたは手動コードのポートレットともいいます。

パブリック・レンダラ・パラメータ

JSR 286の機能の1つ。ポートレットがパラメータ値を共有することによりポートレット間の通信を可能にします。

パブリック・ポータル

WebCenter Portalにログインしていないユーザーも含めてすべてのユーザーが利用可能なポータル。

パブリック・ページ

アプリケーションにログインしていないユーザーも含めてすべてのユーザーが利用可能なWebCenter Portal内のページ。

パブリック・パラメータ

ページに認識されていて、ページ変数を介してページにバインドされるポートレット・パラメータ。

「プライベート・パラメータ」と対比。

パブリック・ユーザー

ポータルまたはFrameworkアプリケーションにアクセス可能であるが、ログインしていないユーザー。パブリック・ユーザーは、パブリックとして指定されたすべてのページを表示できますが、そのコンテンツをパーソナライズまたは編集することや、なんらかのアクセス制御があるページを表示することはできません。

「認証されたユーザー」と対比。

最近のアクティビティ

Portal Frameworkアプリケーションの最近のアクティビティを追跡する手段を提供します。

recipe

類似度計算の重み付けされたリスト。それぞれの計算の重み付けによって、その計算が推奨の総合スコアに与える影響が変化します。推奨は、推奨スコアの合計によって順序付けされます。

サイズ変更ハンドル

タスク・フローの高さを増減させるタスク・フロー・クロムのユーザー・インタフェース要素。

アセット

ポータルの構造、ルック・アンド・フィールまたはコンテンツを定義するオブジェクト。アセットには、ページ・テンプレート、ナビゲーション・モデル、リソース・カタログ、スキン、ページ・スタイル、コンテンツ・プレゼンタ表示テンプレート、タスク・フロー・スタイル、ページレット、タスク・フロー、データ・コントロールが含まれます。

リソース・アクション処理フレームワーク

表示、検索およびタグ付けするカスタム・リソースを公開するサービスを可能にします。

リソース・カタログ

統合された検索および参照のユーザー・インタフェースに、本来であれば関連しない1つ以上のリポジトリの結合ビューを提供するカタログ。リソースはソース・リポジトリに作成および公開され、JDeveloperのリソース・パレットを使用している開発者とリソース・カタログ・ビューアを使用しているエンド・ユーザーに公開されます。リソース・カタログには、レイアウト・コンポーネント、Oracle ADFコンポーネント、ポートレット、タスク・フロー、ドキュメントを含めることができます。

リソース索引

WebCenter Portal REST APIにアクセスする際の開始ポイント。GETリクエストをリソース索引URIに送信すると、使用可能なすべてのサービスに対するエントリ・ポイントへのリンクのリストが返されます。

リソース・タイプ

WebCenter Portal REST APIリンクが識別するリソースのタイプを定義します。リソース・タイプを使用して、GETリクエストのレスポンス本文およびPOSTとPUTの受入可能なリクエスト本文を決定します。また、エンティティに対するresourceType属性を使用してそれらのタイプを一意に識別します。

REST API

Oracle WebCenter Portalは、クライアントから動的にサーバー・データを取得および変更するための、一連のWebベースのREST (REpresentational State Transfer) APIを備えています。REST APIは多くのWebCenter Portalのツールとサービスで使用できます。

リバース・プロキシ・サーバー

サーバーを単一のパブリック・サイトとして公開することで、内部サーバーの物理的な場所を非表示にするサーバー・プロセス。パブリック・サイトへのリクエストは、該当する内部サーバーにルーティングされます。

ラウンドトリップ開発

ラウンドトリップ開発とは、メンテナンスや拡張のため、デプロイされた実行時ポータルからJDeveloperにリソースを戻すことができる機能および技法です。JDeveloperでリソースを変更した後、管理コンソールを使用して、デプロイされたポータルにリソースをアップロードしなおすことができます。WebCenter Portalのラウンドトリップ開発機能は、アプリケーション全体を再度デプロイすることなくポータル・リソースを変更する、簡単で便利な方法を提供します。

RSSリーダー

ポータル・ページに外部ソースからのパブリック・ニュース・フィードを組み込む、WebCenter Portalに用意されているRSSリーダー。このRSSリーダーはWebCenter Portalのみで使用可能で、Portal Frameworkアプリケーションでは使用できません。

RSS

他のサービスからのコンテンツを新規フィードとして公開する機能を提供します。RSSツールは、RSS 2.0形式およびAtom 1.0形式をサポートしています。

検索

ポータルにおける情報および人の検出を可能にし、ユーザーが表示する権限を付与されている結果のみを返します。

Secure Enterprise Search

Oracle Secure Enterprise Search (SES)を参照してください。

選択ビュー(コンポーザ)

コンポーザ内のビューで、ページとコンテンツがWYSIWYGで表示され、ここでコンポーネントを選択すると、そのプロパティや親コンポーネントのプロパティにすばやくアクセスできます。選択ビューでは、コンポーネントは削除できません。

「構造ビュー(コンポーザ)」および「デザイン・ビュー(コンポーザ)」も参照してください。

自己登録ページ

ユーザーがWebCenter Portalに登録し、アイデンティティ・ストア・ログイン・アカウントをユーザー自身で作成できる事前定義済ページ。管理者はこのページの特定の側面をカスタマイズできます。

自己サブスクリプション・ページ

ユーザーがポータルのメンバーになるように登録できる事前定義済ページ。モデレータはこのページの特定の側面をカスタマイズできます。

サービスID

Expression Languageでは、特定のサービスを識別する文字列。たとえば、文字列oracle.webcenter.collab.announcementはお知らせサービスに対するサービスIDです。

PDK-Javaプロデューサの一意の識別子。PDK-Javaでは、1つのアダプタ・サーブレットの下に複数のプロデューサをデプロイできます。異なるプロデューサは、それぞれの一意のサービスIDによって識別されます。サービスIDは、サービスID/プロデューサ名がURLエンドポイントに追加されていない場合にのみ必要です。

サーブレット

通常はWebサーバー上で実行されるJavaプログラムで、Webサーバーの機能を拡張します。HTTPサーブレットは、クライアントのHTTPリクエストを受け取り、(データベースの問合せなどによって)動的コンテンツを生成し、HTTPレスポンスを返します。

セッション言語

セッションCookieの存続期間(ログオンからログオフまで)有効なユーザーが指定した表示言語。ユーザーがブラウザのCookieを消去した場合、表示言語はユーザーレベルのデフォルト言語に戻ります。指定した場合は、管理者が設定したアプリケーションレベルのデフォルト言語に戻ります。「ようこそ」ページからアクセス可能な「言語の変更」ポップアップでセッション言語を設定をします。

共有画面モード

ポートレットの本体をレンダリングするポートレット・モード。他のポートレットを含むことができるページにポートレットを表示できます。各ポートレットには、少なくとも共有画面モードが必要です。

「表示モード」も参照。

Show Detail Frameコンポーネント

コンポーザ・タグ・ライブラリにあるコンポーネント。子コンポーネントの周囲に境界線やクロムをレンダリングします。「アクション」メニューがあるヘッダーを提供し、それによって子コンポーネントの表示をカスタマイズするためにユーザー・インタフェース(UI)制御を提供します。ただし、子コンポーネントの表示をカスタマイズするには、Show Detail FrameコンポーネントはPanel Customizableコンポーネント内に組み込まれている必要があります。

詳細ページ表示モード

ポートレットをフル・ブラウザで表示するポートレット・モード。たとえば、ページ表示モードのポートレットでは、最近送信した経費報告書10件のみを表示するように制限されるのに対し、詳細ページ表示モードの同じポートレットでは、すべての送信を表示できます。

「ページ表示モード」と対比。

表示モード

ページ表示モードと詳細ページ表示モードを含むポートレット・モードのタイプ。

ページ表示モード

ブラウザ・ウィンドウ内で追加のポートレットやその他のオブジェクトにポータルを準備できるように、小さいポートレット表示を行うポートレット・モード。たとえば、ページ表示モードのポートレットでは、最近送信した経費報告書10件のみを表示するように制限されるのに対し、詳細ページ表示モードの同じポートレットでは、すべての送信を表示できます。

「詳細ページ表示モード」と対比。

類似度計算

特定の条件下で2つのオブジェクトがどの程度類似しているかを指定する類似度スコア(ゼロから1までの数値)を提供するために、アクティビティ・グラフによって使用されます。それぞれの計算の重み付けによって、その計算が推奨の総合スコアに与える影響が変化します。推奨は、推奨スコアの合計によって順序付けされます。

スキン

ポータル全体に対して1か所に設定される、CSS 3.0構文に基づいたスタイルシート。各コンポーネントへのスタイルシートの指定、または各ページへのスタイルシートの挿入を実行するかわりに、ポータル全体に対して1つのスキンを作成できます。

構造ビュー(コンポーザ)

コンポーザ内のビューで、ページ・コンポーネントのWYSIWYG表示と階層表示を組み合せて使用でき、ページ・コンポーネントを追加、編集、削除、非表示、再配置するために使用できるコントロールが階層リスト・ペインのヘッダーにあります。

「デザイン・ビュー(コンポーザ)」および「選択ビュー(コンポーザ)」も参照してください。

ポータル

目的の分野または共通の目標を中心に編成した任意のサイズの人のグループをサポートする、WebCenter Portal内の作業領域。

ポータル・アイコン

他のユーザーが識別と場所の確認をするのに役立つ、「マイ・ポータル」の「ポータル」ページ上のポータル名の横に表示されるイメージ。

ポータル・ロゴ

ポータルの視覚的なアイデンティティを提供するためにホーム・ポータル・ページ上に表示されるイメージ。全画面モードでは、ページ上部のポータル名の横にもホーム・ポータルのロゴが表示されます。

ポータル・メンバー

ポータルに参加しているユーザー。メンバーをポータルに追加または招待できます。または、自己登録が有効である場合は、自身をポータルにサブスクライブできます。

ポータル所有者

ポータルを最初に作成したユーザー。ポータル所有者は自動的にポータルのモデレータにもなります。

ポータル・テンプレート

新しいポータルを作成する際の開始点。WebCenter Portalにはデフォルトのテンプレートがいくつか組み込まれており、これらを使用してすぐに作業を開始できるほか、既存のポータルを基にしてカスタム・ポータル・テンプレートを作成できます。

「ポータルが使用できません」ページ

ポータル・メンバーが一時的にオフラインになっているポータルを開こうとしたときに表示される事前定義済ページ。モデレータはこのページをカスタマイズできます。

ポータルのスイッチャ

ユーザーが移動先のポータルを選択できるポップアップ・ウィンドウにアクセスできます。「最近のポータル」は、10までの最近アクセスしたポータルに続いて、現在のユーザーが最も最近アクセスしたポータルをリストします。「ポータル」は、現在のユーザーがアクセスできるすべてのポータルをアルファベット順で表示します。リンクのリストにより、ホーム・ポータル、ポータルのブラウザ・ページ、「ポータルの作成」ダイアログ、ポータル・ビルダーに、メニューから直接アクセスできます。

タグ

ユーザーが、ポータルのオブジェクトに独自の条件を適用して、個人的に意味のある条件を使用してこれらのオブジェクトを検索できるようにします。

タスク・フロー

ADFコントローラ・アクティビティ、制御フロー・ルールおよびユーザーがタスクを完了できるように作用するマネージドBeanのセット。タスク・フローを使用すると、モジュール単位でポータルに制御フローを定義できます。開発者は、ポータルを単一のJSFページ・フローとして表すかわりに、再利用可能なタスク・フローのコレクションに分割できます。

テンプレート

「ポータル・テンプレート」、「アプリケーション・テンプレート(JDeveloper)」、「Portal Frameworkアプリケーション・テンプレート」、「WebCenter Portalプロデューサ・アプリケーション・テンプレート」、「ページ・テンプレート」および「カスタム表示テンプレート」を参照してください。

テキスト・レイアウト・コンポーネント

コンポーザを介して使用可能なレイアウト・コンポーネント。静的ページ・テキストを提供するリッチ・テキスト・エディタ。Portal Frameworkアプリケーションの設計者にとって、これは、Rich Text Editorコンポーネントと同等のランタイムです。

アクセス未許可ページ

アクセス権限のないユーザーがページを開こうとしたときに表示される事前定義済ページ。

URLパラメータ

「プライベート・パラメータ」を参照してください。

ユーザーのカスタマイズ

ユーザー独自のワークスペースにのみ影響する変更。

「アプリケーションのカスタマイズ」および「パーソナライズ」も参照。

有効化ベースのキャッシュ

妥当性チェックを使用してキャッシュ・アイテムがまだ有効であるかどうかを確認するキャッシュ方法。

「有効期限ベースのキャッシュ」と対比。

Virtual Content Repository

Virtual Content Repository (VCR)により、複数の異機種間コンテンツ・リポジトリを組み込むことができます。

表示モード

(JSR 286ポートレットのみ。)他のポートレットも含まれるページ上にJSR 286ポートレットを表示できるポートレット・モード。JSR 286ポートレットに必要なモードはこれのみです。

「共有画面モード」も参照。

Web 2.0

高度にインタラクティブなWebアプリケーションの構成を可能にする、wiki、RSS、ブログなどのテクノロジ。

「WebCenter Portalのツールとサービス」も参照してください。

WebCenter Portal

JSF、Oracle ADF、WebCenter Portal Framework、WebCenter Portalのツールとサービス、コンポーザを使用して構築されたデフォルトのアプリケーション。WebCenter Portalは、エンタープライズ・ポータル、複数のサイトおよびコミュニティ、各ユーザーのホーム・ポータル、スレッド化されたディスカッション、ブログ、Wiki、ワークリスト、お知らせ、RSS、最近のアクティビティ、検索などを作成するためのブラウザベースのプラットフォームを提供します。

WebCenter Portalプロデューサ・アプリケーション・テンプレート

ポートレットの開発に必要な推奨されるプロジェクトおよびテクノロジ・スコープを使用してアプリケーションを作成するために、JDeveloperに用意されているアプリケーション・テンプレート。ポートレット・プロデューサ・アプリケーション・テンプレートは、ポートレットの作成用にスコープ設定された1つのプロジェクト(ポートレット)で構成されます。

「Portal Frameworkアプリケーション・テンプレート」および「プロデューサ」も参照。

Webページ・レイアウト・コンポーネント

コンポーザを介して使用可能なレイアウト・コンポーネント。WebCenter Portalで作成された別のWebサイト、wikiまたはブログをページのコンテキスト内に埋め込む手段です。Portal Frameworkアプリケーションの設計者にとって、これは、Inline Frameコンポーネントと同等です。

Web Services for Remote Portlets

「WSRP」を参照してください。

Oracle JDeveloper用のWebCenter Portal拡張機能

Oracle JDeveloperの更新ウィザードから使用可能な拡張機能で、Portal FrameworkアプリケーションをOracle JDeveloper内で構築およびデプロイするために必要なライブラリ、テンプレート、ウィザードおよびダイアログをインストールします。

WebCenter Portal Framework

「Oracle WebCenter Portal Framework」を参照してください。

WebCenter Portalシステム管理者

「管理者」を参照してください。

WebCenter Portalのツールとサービス

ソーシャル・ネットワーキング機能と個人の生産性機能を公開するツールとサービスのコレクション。

- アクティビティ・グラフ

- お知らせ

- 分析

- ディスカッション

- ドキュメント

- イベント

- インスタント・メッセージおよびプレゼンス

- リンク

- リスト

- メール

- ノート

- 通知

- ピープル・コネクション

- WebCenter Portalのパーソナライズ

- 投票

- 最近のアクティビティ

- RSS

- 検索

- タグ

- ワークリスト

ようこそページ

ようこそページには次の2つのタイプがあります。

- パブリックようこそページ: WebCenter Portalにログインする前にユーザーに表示される事前定義済ページ。

- 個人用ようこそページ: ユーザーをそのホーム・ポータルに案内する事前定義済ページ。

WebLogic Server (WLS)

WebLogic Server。スケーラブルな企業向けのJava Platform, Enterprise Edition (Java EE)アプリケーション・サーバー。WebLogic Serverインフラストラクチャは、様々なタイプの分散アプリケーションのデプロイをサポートしており、サービス指向アーキテクチャ(SOA)に基づいてアプリケーションを構築するための理想的な基盤となります。

「統合WebLogic Server」も参照してください。

WLST

WebLogic Scripting Tool。Oracle WebCenter PortalなどのOracle Fusion Middlewareコンポーネントを管理するためのコマンド・ライン・ツール。

ワークリスト

通知、アラート、および現在のユーザーに割り当てられているBPELタスクへのアクセスを提供します。

WSRP

Web Services for Remote Portlets (WSRP)は、ユーザーを対象とした視覚的なWebサービスを、ポータルまたは他の中間Webアプリケーションにプラグ・アンド・プレイできるようにするWebサービスの標準。その標準性により、特定の言語(JSR 286、.NET、Perlなど)をベースとする標準対応のコンテナと任意のWSRPポータル間の相互運用が可能です。WSRP対応のコンテナにデプロイされたポートレットは、その言語に関係なく、この標準をサポートするあらゆるポータル上にレンダリングできます。

オラクル社の法律上の注意点について

コピーライトについて

Copyright © 1994-2014, Oracle and/or its affiliates.All rights reserved.

商標と登録商標について

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

制限付権利

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション（人的傷害を発生させる可能性があるアプリケーションを含む）への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性（redundancy）、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

ドラフトのアルファ版およびベータ版ドキュメントについて

このドキュメントが試作版の場合:

このドキュメントは試作版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。オラクル社およびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。